From 0ea1a87dfecf6147fa487cac0b3a1fc5d55c2cfd Mon Sep 17 00:00:00 2001 From: Michal Maciejewski Date: Tue, 14 Nov 2017 11:08:07 +0100 Subject: [PATCH 001/191] service/shipmentActivityFactories - reduced scope to JobActivityFactory --- .../core/problem/solution/route/VehicleRoute.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/VehicleRoute.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/VehicleRoute.java index 7dd0c17d4..40fe59075 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/VehicleRoute.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/VehicleRoute.java @@ -115,15 +115,15 @@ public static Builder newInstance(Vehicle vehicle) { private End end; - private TourActivities tourActivities = new TourActivities(); + private final TourActivities tourActivities = new TourActivities(); - private TourActivityFactory serviceActivityFactory = new DefaultTourActivityFactory(); - - private TourShipmentActivityFactory shipmentActivityFactory = new DefaultShipmentActivityFactory(); - - private Set openShipments = new HashSet(); + private final Set openShipments = new HashSet(); private JobActivityFactory jobActivityFactory = new JobActivityFactory() { + + private final TourShipmentActivityFactory shipmentActivityFactory = new DefaultShipmentActivityFactory(); + + private final TourActivityFactory serviceActivityFactory = new DefaultTourActivityFactory(); @Override public List createActivities(Job job) { From 36d0b644a065ea3ad85659dec15fee1dfa44788f Mon Sep 17 00:00:00 2001 From: Michal Maciejewski Date: Tue, 14 Nov 2017 11:10:48 +0100 Subject: [PATCH 002/191] updated job indexing: lower indices for unplanned jobs, higher for jobs in initial routes --- .../core/problem/VehicleRoutingProblem.java | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java index 99a1788ea..913c5eea2 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java @@ -116,8 +116,6 @@ else if (job instanceof Service) { }; - private int jobIndexCounter = 1; - private int vehicleIndexCounter = 1; private int activityIndexCounter = 1; @@ -132,10 +130,6 @@ else if (job instanceof Service) { private final DefaultTourActivityFactory serviceActivityFactory = new DefaultTourActivityFactory(); - private void incJobIndexCounter() { - jobIndexCounter++; - } - private void incActivityIndexCounter() { activityIndexCounter++; } @@ -235,8 +229,6 @@ public Builder addJob(AbstractJob job) { throw new IllegalArgumentException("vehicle routing problem already contains a service or shipment with id " + job.getId() + ". make sure you use unique ids for all services and shipments"); if (!(job instanceof Service || job instanceof Shipment)) throw new IllegalArgumentException("job must be either a service or a shipment"); - job.setIndex(jobIndexCounter); - incJobIndexCounter(); tentativeJobs.put(job.getId(), job); addLocationToTentativeLocations(job); return this; @@ -441,6 +433,15 @@ public VehicleRoutingProblem build() { addJobToFinalJobMapAndCreateActivities(job); } } + + int jobIndexCounter = 1; + for (Job job : jobs.values()) { + ((AbstractJob)job).setIndex(jobIndexCounter++); + } + for (String jobId : jobsInInitialRoutes) { + ((AbstractJob)tentativeJobs.get(jobId)).setIndex(jobIndexCounter++); + } + boolean hasBreaks = addBreaksToActivityMap(); if (hasBreaks && fleetSize.equals(FleetSize.INFINITE)) throw new UnsupportedOperationException("breaks are not yet supported when dealing with infinite fleet. either set it to finite or omit breaks."); From 1967430c40d3d0025efb4f2d6dc33df2171158bc Mon Sep 17 00:00:00 2001 From: Michal Maciejewski Date: Tue, 14 Nov 2017 11:37:02 +0100 Subject: [PATCH 003/191] bugfix: all jobs in initial routes are included into VRP.allJobs --- .../jsprit/core/problem/VehicleRoutingProblem.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java index 913c5eea2..ce3f9cade 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java @@ -81,7 +81,7 @@ public static Builder newInstance() { private Map tentativeJobs = new LinkedHashMap(); - private Set jobsInInitialRoutes = new HashSet(); + private Set jobsInInitialRoutes = new HashSet<>(); private Map tentative_coordinates = new HashMap(); @@ -308,7 +308,7 @@ public Builder addInitialVehicleRoute(VehicleRoute route) { incActivityIndexCounter(); if (act instanceof TourActivity.JobActivity) { Job job = ((TourActivity.JobActivity) act).getJob(); - jobsInInitialRoutes.add(job.getId()); + jobsInInitialRoutes.add(job); addLocationToTentativeLocations(job); registerJobAndActivity(abstractAct, job); } @@ -429,7 +429,7 @@ public VehicleRoutingProblem build() { transportCosts = new CrowFlyCosts(getLocations()); } for (Job job : tentativeJobs.values()) { - if (!jobsInInitialRoutes.contains(job.getId())) { + if (!jobsInInitialRoutes.contains(job)) { addJobToFinalJobMapAndCreateActivities(job); } } @@ -438,8 +438,8 @@ public VehicleRoutingProblem build() { for (Job job : jobs.values()) { ((AbstractJob)job).setIndex(jobIndexCounter++); } - for (String jobId : jobsInInitialRoutes) { - ((AbstractJob)tentativeJobs.get(jobId)).setIndex(jobIndexCounter++); + for (Job job : jobsInInitialRoutes) { + ((AbstractJob)job).setIndex(jobIndexCounter++); } boolean hasBreaks = addBreaksToActivityMap(); From 1777e666e7f98674c7dca3c6aa835b48df02c9bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Schr=C3=B6der?= Date: Thu, 16 Nov 2017 12:45:19 +0100 Subject: [PATCH 004/191] Update Other-Projects.md --- docs/Other-Projects.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/Other-Projects.md b/docs/Other-Projects.md index f61ccecbe..20e9a196e 100644 --- a/docs/Other-Projects.md +++ b/docs/Other-Projects.md @@ -15,6 +15,9 @@ VROOM is an optimization engine written in C++14 that aim at providing good solu #### [Hipster4j](http://www.hipster4j.org/) Hipster is an easy to use yet powerful and flexible type-safe library for heuristic search, written in pure Java. It relies on a flexible model with generic operators to define search problems. So you can also model and solve vehicle routing problems. +#### [OscaR](https://bitbucket.org/oscarlib/oscar/wiki/Home) +OscaR, an Open Source Toolbox for Optimising Logistics and Supply Chain Systems. + ### Territory Design #### [OpenDoorLogistics](http://www.opendoorlogistics.com) @@ -23,4 +26,4 @@ standalone open source application for performing geographic analysis of your cu -If you know another promising open source implementation, report it. \ No newline at end of file +If you know another promising open source implementation, report it. From 86b914d174fec0bc47bed1a34ba1aa3cf16977ef Mon Sep 17 00:00:00 2001 From: oblonski Date: Tue, 21 Nov 2017 19:59:26 +0100 Subject: [PATCH 005/191] add human readable reason --- .../jsprit/core/util/UnassignedJobReasonTracker.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/UnassignedJobReasonTracker.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/UnassignedJobReasonTracker.java index a4577a057..0ab34dec0 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/UnassignedJobReasonTracker.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/UnassignedJobReasonTracker.java @@ -29,8 +29,11 @@ */ public class UnassignedJobReasonTracker implements JobUnassignedListener { + private final static String NO_REASON = "cannot determine a particular reason"; + public static String getMostLikelyFailedConstraintName(Frequency failedConstraintNamesFrequency) { - if (failedConstraintNamesFrequency == null) return "no reason found"; + if (failedConstraintNamesFrequency == null || failedConstraintNamesFrequency.getUniqueCount() == 0) + return NO_REASON; Iterator, Long>> entryIterator = failedConstraintNamesFrequency.entrySetIterator(); long maxCount = 0; String mostLikely = null; @@ -54,6 +57,7 @@ public static String getMostLikelyFailedConstraintName(Frequency failedConstrain Set failedConstraintNamesToBeIgnored = new HashSet<>(); public UnassignedJobReasonTracker() { + codesToHumanReadableReason.put(-1, NO_REASON); codesToHumanReadableReason.put(1, "cannot serve required skill"); codesToHumanReadableReason.put(2, "cannot be visited within time window"); codesToHumanReadableReason.put(3, "does not fit into any vehicle due to capacity"); @@ -165,8 +169,9 @@ public int getMostLikelyReasonCode(String jobId) { * @return */ public String getMostLikelyReason(String jobId) { - if (!this.failedConstraintNamesFrequencyMapping.containsKey(jobId)) return "no reason found"; + if (!this.failedConstraintNamesFrequencyMapping.containsKey(jobId)) return codesToHumanReadableReason.get(-1); Frequency reasons = this.failedConstraintNamesFrequencyMapping.get(jobId); + String mostLikelyReason = getMostLikelyFailedConstraintName(reasons); int code = toCode(mostLikelyReason); if (code == -1) return mostLikelyReason; From 369139211d1f5c58c6ea9d4f7f5e3ed5f61c16ea Mon Sep 17 00:00:00 2001 From: oblonski Date: Tue, 28 Nov 2017 15:47:33 +0100 Subject: [PATCH 006/191] refine error messages --- .../jsprit/core/problem/vehicle/VehicleImpl.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleImpl.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleImpl.java index f77f7b9c7..809f2adf2 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleImpl.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleImpl.java @@ -145,7 +145,7 @@ private Builder(String id) { * @throws IllegalArgumentException if type is null */ public Builder setType(VehicleType type) { - if (type == null) throw new IllegalArgumentException("type cannot be null."); + if (type == null) throw new IllegalArgumentException("Vehicle type must not be null."); this.type = type; return this; } @@ -213,7 +213,7 @@ public Builder setEndLocation(Location endLocation) { */ public Builder setEarliestStart(double earliest_startTime) { if (earliest_startTime < 0) - throw new IllegalArgumentException("earliest start of vehicle " + id + " must not be negative"); + throw new IllegalArgumentException("The earliest start time of vehicle " + id + " must not be negative."); this.earliestStart = earliest_startTime; return this; } @@ -226,7 +226,7 @@ public Builder setEarliestStart(double earliest_startTime) { */ public Builder setLatestArrival(double latest_arrTime) { if (latest_arrTime < 0) - throw new IllegalArgumentException("latest arrival time of vehicle " + id + " must not be negative"); + throw new IllegalArgumentException("The latest arrival time of vehicle " + id + " must not be negative."); this.latestArrival = latest_arrTime; return this; } @@ -254,17 +254,17 @@ public Builder addSkill(String skill) { */ public VehicleImpl build() { if (latestArrival < earliestStart) - throw new IllegalArgumentException("latest arrival of vehicle " + id + " must not be smaller than its start time"); + throw new IllegalArgumentException("The latest arrival time of vehicle " + id + " must not be smaller than its start time."); if (startLocation != null && endLocation != null) { if (!startLocation.getId().equals(endLocation.getId()) && !returnToDepot) - throw new IllegalArgumentException("this must not be. you specified both endLocationId and open-routes. this is contradictory.
" + - "if you set endLocation, returnToDepot must be true. if returnToDepot is false, endLocationCoord must not be specified."); + throw new IllegalArgumentException("You specified both the end location and that the vehicle " + id + " does not need to return to its end location. This must not be. " + + "Either specify end location and return to depot or leave end location unspecified."); } if (startLocation != null && endLocation == null) { endLocation = startLocation; } if (startLocation == null && endLocation == null) - throw new IllegalArgumentException("vehicle requires startLocation. but neither locationId nor locationCoord nor startLocationId nor startLocationCoord has been set"); + throw new IllegalArgumentException("Every vehicle requires a start location, but vehicle " + id + " does not have one."); skills = skillBuilder.build(); return new VehicleImpl(this); } From 3b5a64c989a17c00f90862a0f46dd5868857b644 Mon Sep 17 00:00:00 2001 From: oblonski Date: Thu, 30 Nov 2017 09:49:00 +0100 Subject: [PATCH 007/191] refine error messages --- .../core/problem/VehicleRoutingProblem.java | 23 +++++++++------ .../jsprit/core/problem/job/Job.java | 1 + .../jsprit/core/problem/job/Service.java | 16 +++++------ .../jsprit/core/problem/job/Shipment.java | 28 +++++++++++-------- .../core/problem/vehicle/VehicleTypeImpl.java | 14 ++++++---- 5 files changed, 48 insertions(+), 34 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java index ce3f9cade..ea5101dd0 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java @@ -226,9 +226,15 @@ public Builder addJob(Job job) { */ public Builder addJob(AbstractJob job) { if (tentativeJobs.containsKey(job.getId())) - throw new IllegalArgumentException("vehicle routing problem already contains a service or shipment with id " + job.getId() + ". make sure you use unique ids for all services and shipments"); + throw new IllegalArgumentException("The vehicle routing problem already contains a service or shipment with id " + job.getId() + ". Please make sure you use unique ids for all services and shipments."); if (!(job instanceof Service || job instanceof Shipment)) +<<<<<<< Upstream, based on branch 'master' of https://github.com/michalmac/jsprit.git throw new IllegalArgumentException("job must be either a service or a shipment"); +======= + throw new IllegalArgumentException("Job must be either a service or a shipment."); + job.setIndex(jobIndexCounter); + incJobIndexCounter(); +>>>>>>> b610626 refine error messages tentativeJobs.put(job.getId(), job); addLocationToTentativeLocations(job); return this; @@ -277,10 +283,11 @@ private boolean addBreaksToActivityMap() { for (Vehicle v : uniqueVehicles) { if (v.getBreak() != null) { if (!uniqueBreakIds.add(v.getBreak().getId())) - throw new IllegalArgumentException("problem already contains a vehicle break with id " + v.getBreak().getId() + ". choose unique ids for each vehicle break."); + throw new IllegalArgumentException("The vehicle routing roblem already contains a vehicle break with id " + v.getBreak().getId() + ". Please choose unique ids for each vehicle break."); hasBreaks = true; List breakActivities = jobActivityFactory.createActivities(v.getBreak()); - if(breakActivities.isEmpty()) throw new IllegalArgumentException("at least one activity for break needs to be created by activityFactory"); + if (breakActivities.isEmpty()) + throw new IllegalArgumentException("At least one activity for break needs to be created by activityFactory."); for(AbstractActivity act : breakActivities){ act.setIndex(activityIndexCounter); incActivityIndexCounter(); @@ -343,7 +350,7 @@ public Builder addInitialVehicleRoutes(Collection routes) { private void addShipment(Shipment job) { if (jobs.containsKey(job.getId())) { - logger.warn("job " + job + " already in job list. overrides existing job."); + logger.warn("The job " + job + " has already been added to the job list. This overrides the existing job."); } addLocationToTentativeLocations(job); // tentative_coordinates.put(job.getPickupLocation().getId(), job.getPickupLocation().getCoordinate()); @@ -359,7 +366,7 @@ private void addShipment(Shipment job) { * */ public Builder addVehicle(Vehicle vehicle) { if (!(vehicle instanceof AbstractVehicle)) - throw new IllegalArgumentException("vehicle must be an AbstractVehicle"); + throw new IllegalArgumentException("A vehicle must be an AbstractVehicle."); return addVehicle((AbstractVehicle) vehicle); } @@ -371,7 +378,7 @@ public Builder addVehicle(Vehicle vehicle) { */ public Builder addVehicle(AbstractVehicle vehicle) { if(addedVehicleIds.contains(vehicle.getId())){ - throw new IllegalArgumentException("problem already contains a vehicle with id " + vehicle.getId() + ". choose unique ids for each vehicle."); + throw new IllegalArgumentException("The vehicle routing problem already contains a vehicle with id " + vehicle.getId() + ". Please choose unique ids for each vehicle."); } else addedVehicleIds.add(vehicle.getId()); if (!uniqueVehicles.contains(vehicle)) { @@ -444,7 +451,7 @@ public VehicleRoutingProblem build() { boolean hasBreaks = addBreaksToActivityMap(); if (hasBreaks && fleetSize.equals(FleetSize.INFINITE)) - throw new UnsupportedOperationException("breaks are not yet supported when dealing with infinite fleet. either set it to finite or omit breaks."); + throw new UnsupportedOperationException("Breaks are not yet supported when dealing with infinite fleet. Either set it to finite or omit breaks."); return new VehicleRoutingProblem(this); } @@ -511,7 +518,7 @@ private Builder addService(Service service) { // tentative_coordinates.put(service.getLocation().getId(), service.getLocation().getCoordinate()); addLocationToTentativeLocations(service); if (jobs.containsKey(service.getId())) { - logger.warn("service " + service + " already in job list. overrides existing job."); + logger.warn("The service " + service + " has already been added to job list. This overrides existing job."); } jobs.put(service.getId(), service); return this; diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Job.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Job.java index 557282353..76b65084d 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Job.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Job.java @@ -30,6 +30,7 @@ */ public interface Job extends HasId, HasIndex { + /** * Returns the unique identifier (id) of a job. * diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Service.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Service.java index af4e6b850..1f4f436ec 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Service.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Service.java @@ -92,7 +92,7 @@ public static Builder newInstance(String id) { protected Object userData; protected double maxTimeInVehicle = Double.MAX_VALUE; - + Builder(String id){ this.id = id; timeWindows = new TimeWindowsImpl(); @@ -135,7 +135,7 @@ public Builder setLocation(Location location) { */ public Builder setServiceTime(double serviceTime) { if (serviceTime < 0) - throw new IllegalArgumentException("serviceTime must be greater than or equal to zero"); + throw new IllegalArgumentException("The service time of a service must be greater than or equal to zero."); this.serviceTime = serviceTime; return this; } @@ -167,20 +167,20 @@ public Builder setUserData(Object userData) { * @throws IllegalArgumentException if dimensionValue < 0 */ public Builder addSizeDimension(int dimensionIndex, int dimensionValue) { - if (dimensionValue < 0) throw new IllegalArgumentException("capacity value cannot be negative"); + if (dimensionValue < 0) throw new IllegalArgumentException("The capacity value must not be negative."); capacityBuilder.addDimension(dimensionIndex, dimensionValue); return this; } public Builder setTimeWindow(TimeWindow tw){ - if(tw == null) throw new IllegalArgumentException("time-window arg must not be null"); + if (tw == null) throw new IllegalArgumentException("The time window must not be null."); this.timeWindows = new TimeWindowsImpl(); timeWindows.add(tw); return this; } public Builder addTimeWindow(TimeWindow timeWindow) { - if(timeWindow == null) throw new IllegalArgumentException("time-window arg must not be null"); + if (timeWindow == null) throw new IllegalArgumentException("The time window must not be null."); if(!twAdded){ timeWindows = new TimeWindowsImpl(); twAdded = true; @@ -205,7 +205,7 @@ public Builder addAllTimeWindows(Collection timeWindows) { * @throws IllegalArgumentException if neither locationId nor coordinate is set. */ public T build() { - if (location == null) throw new IllegalArgumentException("location is missing"); + if (location == null) throw new IllegalArgumentException("The location of service " + id + " is missing."); this.setType("service"); capacity = capacityBuilder.build(); skills = skillBuilder.build(); @@ -246,13 +246,13 @@ public Builder addAllSizeDimensions(Capacity size){ */ public Builder setPriority(int priority) { if (priority < 1 || priority > 10) - throw new IllegalArgumentException("incorrect priority. only priority values from 1 to 10 are allowed where 1 = high and 10 is low"); + throw new IllegalArgumentException("The priority value is not valid. Only 1 (very high) to 10 (very low) are allowed."); this.priority = priority; return this; } public Builder setMaxTimeInVehicle(double maxTimeInVehicle){ - throw new UnsupportedOperationException("maxTimeInVehicle is not yet supported for Pickups and Services (only for Deliveries and Shipments)"); + throw new UnsupportedOperationException("The maximum time in vehicle is not yet supported for Pickups and Services (only for Deliveries and Shipments)."); // if(maxTimeInVehicle < 0) throw new IllegalArgumentException("maxTimeInVehicle should be positive"); // this.maxTimeInVehicle = maxTimeInVehicle; // return this; diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Shipment.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Shipment.java index a3eeaaf66..60085b3a4 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Shipment.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Shipment.java @@ -148,7 +148,8 @@ public Builder setPickupLocation(Location pickupLocation) { * @throws IllegalArgumentException if servicTime < 0.0 */ public Builder setPickupServiceTime(double serviceTime) { - if (serviceTime < 0.0) throw new IllegalArgumentException("serviceTime must not be < 0.0"); + if (serviceTime < 0.0) + throw new IllegalArgumentException("The service time of a shipment must not be < 0.0."); this.pickupServiceTime = serviceTime; return this; } @@ -164,7 +165,7 @@ public Builder setPickupServiceTime(double serviceTime) { * @throws IllegalArgumentException if timeWindow is null */ public Builder setPickupTimeWindow(TimeWindow timeWindow) { - if (timeWindow == null) throw new IllegalArgumentException("delivery time-window must not be null"); + if (timeWindow == null) throw new IllegalArgumentException("The delivery time window must not be null."); this.pickupTimeWindows = new TimeWindowsImpl(); this.pickupTimeWindows.add(timeWindow); return this; @@ -193,7 +194,8 @@ public Builder setDeliveryLocation(Location deliveryLocation) { * @throws IllegalArgumentException if serviceTime < 0.0 */ public Builder setDeliveryServiceTime(double deliveryServiceTime) { - if (deliveryServiceTime < 0.0) throw new IllegalArgumentException("deliveryServiceTime must not be < 0.0"); + if (deliveryServiceTime < 0.0) + throw new IllegalArgumentException("The service time of a delivery must not be < 0.0."); this.deliveryServiceTime = deliveryServiceTime; return this; } @@ -209,7 +211,7 @@ public Builder setDeliveryServiceTime(double deliveryServiceTime) { * @throws IllegalArgumentException if timeWindow is null */ public Builder setDeliveryTimeWindow(TimeWindow timeWindow) { - if (timeWindow == null) throw new IllegalArgumentException("delivery time-window must not be null"); + if (timeWindow == null) throw new IllegalArgumentException("The delivery time window must not be null."); this.deliveryTimeWindows = new TimeWindowsImpl(); this.deliveryTimeWindows.add(timeWindow); return this; @@ -224,7 +226,8 @@ public Builder setDeliveryTimeWindow(TimeWindow timeWindow) { * @throws IllegalArgumentException if dimVal < 0 */ public Builder addSizeDimension(int dimensionIndex, int dimensionValue) { - if (dimensionValue < 0) throw new IllegalArgumentException("capacity value cannot be negative"); + if (dimensionValue < 0) + throw new IllegalArgumentException("The capacity value must not be negative, but is " + dimensionValue + "."); capacityBuilder.addDimension(dimensionIndex, dimensionValue); return this; } @@ -245,8 +248,8 @@ public Builder addAllSizeDimensions(Capacity size) { * is set */ public Shipment build() { - if (pickupLocation_ == null) throw new IllegalArgumentException("pickup location is missing"); - if (deliveryLocation_ == null) throw new IllegalArgumentException("delivery location is missing"); + if (pickupLocation_ == null) throw new IllegalArgumentException("The pickup location is missing."); + if (deliveryLocation_ == null) throw new IllegalArgumentException("The delivery location is missing."); capacity = capacityBuilder.build(); skills = skillBuilder.build(); return new Shipment(this); @@ -271,7 +274,7 @@ public Builder setName(String name) { } public Builder addDeliveryTimeWindow(TimeWindow timeWindow) { - if(timeWindow == null) throw new IllegalArgumentException("time-window arg must not be null"); + if (timeWindow == null) throw new IllegalArgumentException("The time window must not be null."); if(!deliveryTimeWindowAdded){ deliveryTimeWindows = new TimeWindowsImpl(); deliveryTimeWindowAdded = true; @@ -291,7 +294,7 @@ public Builder addAllDeliveryTimeWindows(Collection timeWindow) { } public Builder addPickupTimeWindow(TimeWindow timeWindow) { - if(timeWindow == null) throw new IllegalArgumentException("time-window arg must not be null"); + if (timeWindow == null) throw new IllegalArgumentException("The time window must not be null."); if(!pickupTimeWindowAdded){ pickupTimeWindows = new TimeWindowsImpl(); pickupTimeWindowAdded = true; @@ -319,7 +322,7 @@ public Builder addAllPickupTimeWindows(Collection timeWindow) { */ public Builder setPriority(int priority) { if (priority < 1 || priority > 10) - throw new IllegalArgumentException("incorrect priority. only 1 (very high) to 10 (very low) are allowed"); + throw new IllegalArgumentException("The priority value is not valid. Only 1 (very high) to 10 (very low) are allowed."); this.priority = priority; return this; } @@ -331,7 +334,8 @@ public Builder setPriority(int priority) { * @return */ public Builder setMaxTimeInVehicle(double maxTimeInVehicle){ - if(maxTimeInVehicle < 0) throw new IllegalArgumentException("maxTimeInVehicle should be positive"); + if (maxTimeInVehicle < 0) + throw new IllegalArgumentException("The maximum time in vehicle must be positive."); this.maxTimeInVehicle = maxTimeInVehicle; return this; } @@ -436,7 +440,7 @@ public Collection getPickupTimeWindows() { return pickupTimeWindows.getTimeWindows(); } - + /** * Returns a string with the shipment's attributes. *

diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleTypeImpl.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleTypeImpl.java index 3e8da61df..112c137cb 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleTypeImpl.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleTypeImpl.java @@ -151,7 +151,8 @@ public Builder setUserData(Object userData) { * if velocity is smaller than zero */ public VehicleTypeImpl.Builder setMaxVelocity(double inMeterPerSeconds) { - if (inMeterPerSeconds < 0.0) throw new IllegalArgumentException("velocity cannot be smaller than zero"); + if (inMeterPerSeconds < 0.0) + throw new IllegalArgumentException("The velocity of a vehicle (type) cannot be smaller than zero."); this.maxVelo = inMeterPerSeconds; return this; } @@ -166,7 +167,7 @@ public VehicleTypeImpl.Builder setMaxVelocity(double inMeterPerSeconds) { * @throws IllegalArgumentException if fixedCost is smaller than zero */ public VehicleTypeImpl.Builder setFixedCost(double fixedCost) { - if (fixedCost < 0.0) throw new IllegalArgumentException("fixed costs cannot be smaller than zero"); + if (fixedCost < 0.0) throw new IllegalArgumentException("Fixed costs must not be smaller than zero."); this.fixedCost = fixedCost; return this; } @@ -181,7 +182,8 @@ public VehicleTypeImpl.Builder setFixedCost(double fixedCost) { * @throws IllegalArgumentException if perDistance is smaller than zero */ public VehicleTypeImpl.Builder setCostPerDistance(double perDistance) { - if (perDistance < 0.0) throw new IllegalArgumentException("cost per distance must not be smaller than zero"); + if (perDistance < 0.0) + throw new IllegalArgumentException("Cost per distance must not be smaller than zero."); this.perDistance = perDistance; return this; } @@ -260,9 +262,9 @@ public VehicleTypeImpl build() { * @throws IllegalArgumentException if capacity dimension is already set */ public Builder addCapacityDimension(int dimIndex, int dimVal) { - if (dimVal < 0) throw new IllegalArgumentException("capacity value cannot be negative"); + if (dimVal < 0) throw new IllegalArgumentException("The capacity value must not be negative."); if (capacityDimensions != null) - throw new IllegalArgumentException("either build your dimension with build your dimensions with " + + throw new IllegalArgumentException("Either build your dimension with build your dimensions with " + "addCapacityDimension(int dimIndex, int dimVal) or set the already built dimensions with .setCapacityDimensions(Capacity capacity)." + "You used both methods."); dimensionAdded = true; @@ -283,7 +285,7 @@ public Builder addCapacityDimension(int dimIndex, int dimVal) { */ public Builder setCapacityDimensions(Capacity capacity) { if (dimensionAdded) - throw new IllegalArgumentException("either build your dimension with build your dimensions with " + + throw new IllegalArgumentException("Either build your dimension with build your dimensions with " + "addCapacityDimension(int dimIndex, int dimVal) or set the already built dimensions with .setCapacityDimensions(Capacity capacity)." + "You used both methods."); this.capacityDimensions = capacity; From 0dd16277d5ab291e396a00c767112aed43042dc1 Mon Sep 17 00:00:00 2001 From: Tom Ingold Date: Fri, 8 Dec 2017 14:47:05 -0600 Subject: [PATCH 008/191] updated getting started to fix formatting removed html escaping for markdown --- docs/Getting-Started.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/Getting-Started.md b/docs/Getting-Started.md index aea9645fc..e666ef520 100644 --- a/docs/Getting-Started.md +++ b/docs/Getting-Started.md @@ -13,11 +13,11 @@ jsprit is a multi-module project and consists of: If you want to use the latest release of jsprit-core, add the following lines to your pom: ``` -<dependency> - <groupId>com.graphhopper</groupId> - <artifactId>jsprit-core</artifactId> - <version>{version}</version> -</dependency> + + com.graphhopper + jsprit-core + {version} + ``` Find the latest versions here: [mvn repository](https://mvnrepository.com/artifact/com.graphhopper/jsprit-core) From ae1d4004a511b30a6e4e20e4db5916fcb2069f48 Mon Sep 17 00:00:00 2001 From: oblonski Date: Mon, 11 Dec 2017 13:29:44 +0100 Subject: [PATCH 009/191] throw exception if vehicle id is null --- .../graphhopper/jsprit/core/problem/vehicle/VehicleImpl.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleImpl.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleImpl.java index 809f2adf2..3686d7030 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleImpl.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleImpl.java @@ -135,6 +135,7 @@ public static class Builder { private Builder(String id) { super(); this.id = id; + if (id == null) throw new IllegalArgumentException("Vehicle id must not be null."); } /** @@ -196,6 +197,8 @@ public Builder setReturnToDepot(boolean returnToDepot) { * @return start location */ public Builder setStartLocation(Location startLocation) { + if (startLocation == null) + throw new IllegalArgumentException("Start location of vehicle " + id + " must not be null."); this.startLocation = startLocation; return this; } @@ -232,6 +235,7 @@ public Builder setLatestArrival(double latest_arrTime) { } public Builder addSkill(String skill) { + if (skill == null) throw new IllegalArgumentException("Skill of vehicle " + id + " must not be null"); skillBuilder.addSkill(skill); return this; } From d0ebc2d60b80bb5b1416c6be206035f0592bc1c1 Mon Sep 17 00:00:00 2001 From: Michal Maciejewski Date: Thu, 14 Dec 2017 16:19:10 +0100 Subject: [PATCH 010/191] fixing compile errors due to incorrect merging --- .../jsprit/core/problem/VehicleRoutingProblem.java | 6 ------ 1 file changed, 6 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java index ea5101dd0..b1d13747e 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java @@ -228,13 +228,7 @@ public Builder addJob(AbstractJob job) { if (tentativeJobs.containsKey(job.getId())) throw new IllegalArgumentException("The vehicle routing problem already contains a service or shipment with id " + job.getId() + ". Please make sure you use unique ids for all services and shipments."); if (!(job instanceof Service || job instanceof Shipment)) -<<<<<<< Upstream, based on branch 'master' of https://github.com/michalmac/jsprit.git - throw new IllegalArgumentException("job must be either a service or a shipment"); -======= throw new IllegalArgumentException("Job must be either a service or a shipment."); - job.setIndex(jobIndexCounter); - incJobIndexCounter(); ->>>>>>> b610626 refine error messages tentativeJobs.put(job.getId(), job); addLocationToTentativeLocations(job); return this; From dde8b01e1c3acbfed464318163c70d338ec70cc1 Mon Sep 17 00:00:00 2001 From: Michal Maciejewski Date: Tue, 6 Feb 2018 14:38:09 +0100 Subject: [PATCH 011/191] fix bug: not all initial jobs returned by getJobsInclusiveInitialJobsInRoutes() --- .../jsprit/core/problem/VehicleRoutingProblem.java | 11 ++++++----- .../graphhopper/jsprit/core/problem/job/Delivery.java | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java index b1d13747e..ad2a7ea0d 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java @@ -81,7 +81,7 @@ public static Builder newInstance() { private Map tentativeJobs = new LinkedHashMap(); - private Set jobsInInitialRoutes = new HashSet<>(); + private Map jobsInInitialRoutes = new HashMap<>(); private Map tentative_coordinates = new HashMap(); @@ -309,7 +309,7 @@ public Builder addInitialVehicleRoute(VehicleRoute route) { incActivityIndexCounter(); if (act instanceof TourActivity.JobActivity) { Job job = ((TourActivity.JobActivity) act).getJob(); - jobsInInitialRoutes.add(job); + jobsInInitialRoutes.put(job.getId(), job); addLocationToTentativeLocations(job); registerJobAndActivity(abstractAct, job); } @@ -430,7 +430,7 @@ public VehicleRoutingProblem build() { transportCosts = new CrowFlyCosts(getLocations()); } for (Job job : tentativeJobs.values()) { - if (!jobsInInitialRoutes.contains(job)) { + if (!jobsInInitialRoutes.containsKey(job.getId())) { addJobToFinalJobMapAndCreateActivities(job); } } @@ -439,7 +439,7 @@ public VehicleRoutingProblem build() { for (Job job : jobs.values()) { ((AbstractJob)job).setIndex(jobIndexCounter++); } - for (Job job : jobsInInitialRoutes) { + for (Job job : jobsInInitialRoutes.values()) { ((AbstractJob)job).setIndex(jobIndexCounter++); } @@ -595,7 +595,8 @@ private VehicleRoutingProblem(Builder builder) { this.activityMap = builder.activityMap; this.nuActivities = builder.activityIndexCounter; this.allLocations = builder.allLocations; - this.allJobs = builder.tentativeJobs; + this.allJobs = new HashMap<>(jobs); + this.allJobs.putAll(builder.jobsInInitialRoutes); logger.info("setup problem: {}", this); } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Delivery.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Delivery.java index f31b25ef2..40b70a755 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Delivery.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Delivery.java @@ -43,7 +43,7 @@ public static Builder newInstance(String id) { public Builder setMaxTimeInVehicle(double maxTimeInVehicle){ - if(maxTimeInVehicle < 0) throw new IllegalArgumentException("maxTimeInVehicle should be positive"); + if(maxTimeInVehicle < 0) throw new IllegalArgumentException("maxTimeInVehicle should not be negative"); this.maxTimeInVehicle = maxTimeInVehicle; return this; } From 93a82d8fc041e7584e03d06bd45e470e64ea3a0f Mon Sep 17 00:00:00 2001 From: Peter Date: Fri, 17 Aug 2018 18:27:02 +0200 Subject: [PATCH 012/191] Hide email due to spamming --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 26e49a8f3..dbca6aee7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -51,8 +51,8 @@ script: notifications: email: - - github@graphhopper.com - + - $EMAIL + cache: directories: - $HOME/.m2 From 13156f7acc38c0feefcfecc8723794cf4189d479 Mon Sep 17 00:00:00 2001 From: oblonski Date: Mon, 10 Sep 2018 12:38:13 +0200 Subject: [PATCH 013/191] test shipment insertion flex --- .../ShipmentInsertionCalculatorFlexTest.java | 329 ++++++++++++++++++ 1 file changed, 329 insertions(+) create mode 100644 jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculatorFlexTest.java diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculatorFlexTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculatorFlexTest.java new file mode 100644 index 000000000..9afc50220 --- /dev/null +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculatorFlexTest.java @@ -0,0 +1,329 @@ +/* + * Licensed to GraphHopper GmbH under one or more contributor + * license agreements. See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + * + * GraphHopper GmbH licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.graphhopper.jsprit.core.algorithm.recreate; + +import com.graphhopper.jsprit.core.algorithm.recreate.listener.InsertionListeners; +import com.graphhopper.jsprit.core.algorithm.state.StateManager; +import com.graphhopper.jsprit.core.problem.AbstractActivity; +import com.graphhopper.jsprit.core.problem.JobActivityFactory; +import com.graphhopper.jsprit.core.problem.Location; +import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; +import com.graphhopper.jsprit.core.problem.constraint.ConstraintManager; +import com.graphhopper.jsprit.core.problem.constraint.HardRouteConstraint; +import com.graphhopper.jsprit.core.problem.constraint.PickupAndDeliverShipmentLoadActivityLevelConstraint; +import com.graphhopper.jsprit.core.problem.constraint.ShipmentPickupsFirstConstraint; +import com.graphhopper.jsprit.core.problem.cost.VehicleRoutingActivityCosts; +import com.graphhopper.jsprit.core.problem.cost.VehicleRoutingTransportCosts; +import com.graphhopper.jsprit.core.problem.driver.Driver; +import com.graphhopper.jsprit.core.problem.driver.DriverImpl; +import com.graphhopper.jsprit.core.problem.job.Pickup; +import com.graphhopper.jsprit.core.problem.job.Service; +import com.graphhopper.jsprit.core.problem.job.Shipment; +import com.graphhopper.jsprit.core.problem.misc.JobInsertionContext; +import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; +import com.graphhopper.jsprit.core.problem.solution.route.activity.DeliverShipment; +import com.graphhopper.jsprit.core.problem.solution.route.activity.PickupService; +import com.graphhopper.jsprit.core.problem.solution.route.activity.PickupShipment; +import com.graphhopper.jsprit.core.problem.solution.route.activity.TourActivity; +import com.graphhopper.jsprit.core.problem.solution.route.state.RouteAndActivityStateGetter; +import com.graphhopper.jsprit.core.problem.vehicle.Vehicle; +import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; +import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; +import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; +import com.graphhopper.jsprit.core.util.CostFactory; +import org.junit.Before; +import org.junit.Test; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + + +public class ShipmentInsertionCalculatorFlexTest { + + VehicleRoutingTransportCosts routingCosts; + + VehicleRoutingProblem vehicleRoutingProblem; + + VehicleRoutingActivityCosts activityCosts = new VehicleRoutingActivityCosts() { + + @Override + public double getActivityCost(TourActivity tourAct, double arrivalTime, Driver driver, Vehicle vehicle) { + return 0; + } + + @Override + public double getActivityDuration(TourActivity tourAct, double arrivalTime, Driver driver, Vehicle vehicle) { + return tourAct.getOperationTime(); + } + + }; + + HardRouteConstraint hardRouteLevelConstraint = new HardRouteConstraint() { + + @Override + public boolean fulfilled(JobInsertionContext insertionContext) { + return true; + } + + }; + + ActivityInsertionCostsCalculator activityInsertionCostsCalculator; + + ShipmentInsertionCalculatorFlex insertionCalculator; + + Vehicle vehicle; + + ConstraintManager constraintManager; + + @Before + public void doBefore() { + routingCosts = CostFactory.createManhattanCosts(); + VehicleType type = VehicleTypeImpl.Builder.newInstance("t").addCapacityDimension(0, 2).setCostPerDistance(1).build(); + vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("0,0")).setType(type).build(); + activityInsertionCostsCalculator = new LocalActivityInsertionCostsCalculator(routingCosts, activityCosts, mock(StateManager.class)); + constraintManager = new ConstraintManager(mock(VehicleRoutingProblem.class), mock(RouteAndActivityStateGetter.class)); + constraintManager.addConstraint(hardRouteLevelConstraint); + vehicleRoutingProblem = mock(VehicleRoutingProblem.class); + } + +// private void createInsertionCalculator(HardRouteConstraint hardRouteLevelConstraint) { +// ConstraintManager constraintManager = new ConstraintManager(mock(VehicleRoutingProblem.class), mock(RouteAndActivityStateGetter.class)); +// constraintManager.addConstraint(hardRouteLevelConstraint); +// insertionCalculator = new ShipmentInsertionCalculator(routingCosts, activityCosts, activityInsertionCostsCalculator, constraintManager, ); +// } + + @Test + public void whenCalculatingInsertionCostsOfShipment_itShouldReturnCorrectCostValue() { + Shipment shipment = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("0,10").build()).setDeliveryLocation(Location.newInstance("10,0")).build(); + VehicleRoute route = VehicleRoute.emptyRoute(); + JobActivityFactory activityFactory = mock(JobActivityFactory.class); + List activities = new ArrayList(); + activities.add(new PickupShipment(shipment)); + activities.add(new DeliverShipment(shipment)); + when(activityFactory.createActivities(shipment)).thenReturn(activities); + insertionCalculator = new ShipmentInsertionCalculatorFlex(routingCosts, activityCosts, activityInsertionCostsCalculator, constraintManager); + insertionCalculator.setJobActivityFactory(activityFactory); + InsertionData iData = insertionCalculator.getInsertionData(route, shipment, vehicle, 0.0, null, Double.MAX_VALUE); + assertEquals(40.0, iData.getInsertionCost(), 0.05); + } + + @Test + public void whenCalculatingInsertionIntoExistingRoute_itShouldReturnCorrectCosts() { + Shipment shipment = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("0,10").build()).setDeliveryLocation(Location.newInstance("10,0")).build(); + Shipment shipment2 = Shipment.Builder.newInstance("s2").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("10,10").build()).setDeliveryLocation(Location.newInstance("0,0")).build(); + VehicleRoute route = VehicleRoute.emptyRoute(); + when(vehicleRoutingProblem.copyAndGetActivities(shipment)).thenReturn(getTourActivities(shipment)); + new Inserter(new InsertionListeners(), vehicleRoutingProblem).insertJob(shipment, new InsertionData(0, 0, 0, vehicle, null), route); + + JobActivityFactory activityFactory = mock(JobActivityFactory.class); + List activities = new ArrayList(); + activities.add(new PickupShipment(shipment2)); + activities.add(new DeliverShipment(shipment2)); + when(activityFactory.createActivities(shipment2)).thenReturn(activities); + insertionCalculator = new ShipmentInsertionCalculatorFlex(routingCosts, activityCosts, activityInsertionCostsCalculator, constraintManager); + insertionCalculator.setJobActivityFactory(activityFactory); + + InsertionData iData = insertionCalculator.getInsertionData(route, shipment2, vehicle, 0.0, null, Double.MAX_VALUE); + assertEquals(0.0, iData.getInsertionCost(), 0.05); + assertEquals(1, iData.getPickupInsertionIndex()); + assertEquals(2, iData.getDeliveryInsertionIndex()); + } + + private List getTourActivities(Shipment shipment) { + List acts = new ArrayList(); + PickupShipment pick = new PickupShipment(shipment); + DeliverShipment del = new DeliverShipment(shipment); + acts.add(pick); + acts.add(del); + return acts; + } + + @Test + public void whenInsertingShipmentInRouteWithNotEnoughCapacity_itShouldReturnNoInsertion() { + Shipment shipment = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("0,10").build()).setDeliveryLocation(Location.newInstance("10,0")).build(); + Shipment shipment2 = Shipment.Builder.newInstance("s2").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("10,10").build()).setDeliveryLocation(Location.newInstance("0,0")).build(); + VehicleRoute route = VehicleRoute.emptyRoute(); + when(vehicleRoutingProblem.copyAndGetActivities(shipment)).thenReturn(getTourActivities(shipment)); + new Inserter(new InsertionListeners(), vehicleRoutingProblem).insertJob(shipment, new InsertionData(0, 0, 0, vehicle, null), route); + + constraintManager = new ConstraintManager(mock(VehicleRoutingProblem.class), mock(RouteAndActivityStateGetter.class)); + constraintManager.addConstraint(new HardRouteConstraint() { + + @Override + public boolean fulfilled(JobInsertionContext insertionContext) { + return false; + } + + }); + + JobActivityFactory activityFactory = mock(JobActivityFactory.class); + List activities = new ArrayList(); + activities.add(new PickupShipment(shipment2)); + activities.add(new DeliverShipment(shipment2)); + when(activityFactory.createActivities(shipment2)).thenReturn(activities); + insertionCalculator = new ShipmentInsertionCalculatorFlex(routingCosts, activityCosts, activityInsertionCostsCalculator, constraintManager); + insertionCalculator.setJobActivityFactory(activityFactory); + + InsertionData iData = insertionCalculator.getInsertionData(route, shipment2, vehicle, 0.0, null, Double.MAX_VALUE); + assertTrue(iData instanceof InsertionData.NoInsertionFound); + + } + + + @Test + public void whenInsertingThirdShipment_itShouldCalcCorrectVal() { + Shipment shipment = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("0,10").build()).setDeliveryLocation(Location.newInstance("10,0")).build(); + Shipment shipment2 = Shipment.Builder.newInstance("s2").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("10,10").build()).setDeliveryLocation(Location.newInstance("0,0")).build(); + Shipment shipment3 = Shipment.Builder.newInstance("s3").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("0,0").build()).setDeliveryLocation(Location.newInstance("9,10")).build(); + + VehicleRoute route = VehicleRoute.emptyRoute(); + when(vehicleRoutingProblem.copyAndGetActivities(shipment)).thenReturn(getTourActivities(shipment)); + when(vehicleRoutingProblem.copyAndGetActivities(shipment2)).thenReturn(getTourActivities(shipment2)); + Inserter inserter = new Inserter(new InsertionListeners(), vehicleRoutingProblem); + inserter.insertJob(shipment, new InsertionData(0, 0, 0, vehicle, null), route); + inserter.insertJob(shipment2, new InsertionData(0, 1, 2, vehicle, null), route); + + JobActivityFactory activityFactory = mock(JobActivityFactory.class); + List activities = new ArrayList(); + activities.add(new PickupShipment(shipment3)); + activities.add(new DeliverShipment(shipment3)); + when(activityFactory.createActivities(shipment3)).thenReturn(activities); + insertionCalculator = new ShipmentInsertionCalculatorFlex(routingCosts, activityCosts, activityInsertionCostsCalculator, constraintManager); + insertionCalculator.setJobActivityFactory(activityFactory); + + InsertionData iData = insertionCalculator.getInsertionData(route, shipment3, vehicle, 0.0, null, Double.MAX_VALUE); + assertEquals(0.0, iData.getInsertionCost(), 0.05); + assertEquals(0, iData.getPickupInsertionIndex()); + assertEquals(1, iData.getDeliveryInsertionIndex()); + } + + @Test + public void whenInsertingThirdShipment_itShouldCalcCorrectVal2() { + Shipment shipment = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("0,10").build()).setDeliveryLocation(Location.newInstance("10,0")).build(); + Shipment shipment2 = Shipment.Builder.newInstance("s2").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("10,10").build()).setDeliveryLocation(Location.newInstance("0,0")).build(); + Shipment shipment3 = Shipment.Builder.newInstance("s3").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("0,0").build()).setDeliveryLocation(Location.newInstance("9,9")).build(); + when(vehicleRoutingProblem.copyAndGetActivities(shipment)).thenReturn(getTourActivities(shipment)); + when(vehicleRoutingProblem.copyAndGetActivities(shipment2)).thenReturn(getTourActivities(shipment2)); + VehicleRoute route = VehicleRoute.emptyRoute(); + Inserter inserter = new Inserter(new InsertionListeners(), vehicleRoutingProblem); + inserter.insertJob(shipment, new InsertionData(0, 0, 0, vehicle, null), route); + inserter.insertJob(shipment2, new InsertionData(0, 1, 2, vehicle, null), route); + + JobActivityFactory activityFactory = mock(JobActivityFactory.class); + List activities = new ArrayList(); + activities.add(new PickupShipment(shipment3)); + activities.add(new DeliverShipment(shipment3)); + when(activityFactory.createActivities(shipment3)).thenReturn(activities); + insertionCalculator = new ShipmentInsertionCalculatorFlex(routingCosts, activityCosts, activityInsertionCostsCalculator, constraintManager); + insertionCalculator.setJobActivityFactory(activityFactory); + + + InsertionData iData = insertionCalculator.getInsertionData(route, shipment3, vehicle, 0.0, null, Double.MAX_VALUE); + assertEquals(2.0, iData.getInsertionCost(), 0.05); + assertEquals(0, iData.getPickupInsertionIndex()); + assertEquals(1, iData.getDeliveryInsertionIndex()); + } + + @Test + public void whenInstertingShipmentWithLoadConstraintWhereCapIsNotSufficient_capConstraintsAreFulfilled() { + Shipment shipment = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("0,10").build()).setDeliveryLocation(Location.newInstance("10,0")).build(); + Shipment shipment2 = Shipment.Builder.newInstance("s2").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("10,10").build()).setDeliveryLocation(Location.newInstance("0,0")).build(); + Shipment shipment3 = Shipment.Builder.newInstance("s3").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("0,0").build()).setDeliveryLocation(Location.newInstance("9,9")).build(); + + VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); + VehicleRoutingProblem vrp = vrpBuilder.addJob(shipment).addJob(shipment2).addJob(shipment3).build(); + + VehicleRoute route = VehicleRoute.emptyRoute(); + route.setVehicleAndDepartureTime(vehicle, 0.0); + + Inserter inserter = new Inserter(new InsertionListeners(), vrp); + inserter.insertJob(shipment, new InsertionData(0, 0, 0, vehicle, null), route); + inserter.insertJob(shipment2, new InsertionData(0, 1, 2, vehicle, null), route); + + StateManager stateManager = new StateManager(vrp); + stateManager.updateLoadStates(); + stateManager.informInsertionStarts(Arrays.asList(route), null); + + ConstraintManager constraintManager = new ConstraintManager(vrp, stateManager); + constraintManager.addConstraint(new PickupAndDeliverShipmentLoadActivityLevelConstraint(stateManager), ConstraintManager.Priority.CRITICAL); + constraintManager.addConstraint(new ShipmentPickupsFirstConstraint(), ConstraintManager.Priority.CRITICAL); + + ShipmentInsertionCalculatorFlex insertionCalculator = new ShipmentInsertionCalculatorFlex(routingCosts, activityCosts, + activityInsertionCostsCalculator, constraintManager); + insertionCalculator.setJobActivityFactory(vrp.getJobActivityFactory()); + + InsertionData iData = insertionCalculator.getInsertionData(route, shipment3, vehicle, 0.0, DriverImpl.noDriver(), Double.MAX_VALUE); + assertTrue(iData instanceof InsertionData.NoInsertionFound); + + } + + @Test + public void whenInsertingServiceWhileNoCapIsAvailable_itMustReturnNoInsertionData() { + Shipment shipment = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("0,10").build()).setDeliveryLocation(Location.newInstance("0,0")).build(); + Shipment shipment2 = Shipment.Builder.newInstance("s2").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("10,10").build()).setDeliveryLocation(Location.newInstance("0,0")).build(); + + VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); + VehicleRoutingProblem vrp = vrpBuilder.addJob(shipment).addJob(shipment2).build(); + + VehicleRoute route = VehicleRoute.emptyRoute(); + route.setVehicleAndDepartureTime(vehicle, 0.0); + + Inserter inserter = new Inserter(new InsertionListeners(), vrp); + + inserter.insertJob(shipment, new InsertionData(0, 0, 0, vehicle, null), route); + inserter.insertJob(shipment2, new InsertionData(0, 1, 2, vehicle, null), route); + + StateManager stateManager = new StateManager(vrp); + stateManager.updateLoadStates(); + stateManager.informInsertionStarts(Arrays.asList(route), null); + + ConstraintManager constraintManager = new ConstraintManager(vrp, stateManager); + constraintManager.addLoadConstraint(); + + stateManager.informInsertionStarts(Arrays.asList(route), null); + + Pickup service = (Pickup) Pickup.Builder.newInstance("pick").addSizeDimension(0, 1).setLocation(Location.newInstance("5,5")).build(); + + JobActivityFactory activityFactory = mock(JobActivityFactory.class); + List activities = new ArrayList(); + activities.add(new PickupService(service)); + when(activityFactory.createActivities(service)).thenReturn(activities); + + JobCalculatorSwitcher switcher = new JobCalculatorSwitcher(); + ServiceInsertionCalculator serviceInsertionCalc = new ServiceInsertionCalculator(routingCosts, activityCosts, activityInsertionCostsCalculator, constraintManager, activityFactory); + ShipmentInsertionCalculatorFlex insertionCalculator = new ShipmentInsertionCalculatorFlex(routingCosts, activityCosts, activityInsertionCostsCalculator, constraintManager); + insertionCalculator.setJobActivityFactory(activityFactory); + switcher.put(Pickup.class, serviceInsertionCalc); + switcher.put(Service.class, serviceInsertionCalc); + switcher.put(Shipment.class, insertionCalculator); + + + InsertionData iData = switcher.getInsertionData(route, service, vehicle, 0, DriverImpl.noDriver(), Double.MAX_VALUE); +// routeActVisitor.visit(route); + + assertEquals(3, iData.getDeliveryInsertionIndex()); + } + + +} From 48611e108564ed2edb3f6a21161d711f39801bd1 Mon Sep 17 00:00:00 2001 From: oblonski Date: Mon, 17 Sep 2018 10:21:32 +0200 Subject: [PATCH 014/191] make no. unassigned jobs configurable - related to #431 --- .../module/RuinAndRecreateModule.java | 68 ++++++++++++--- .../module/RuinAndRecreateModuleTest.java | 85 +++++++++++++++++++ 2 files changed, 142 insertions(+), 11 deletions(-) create mode 100644 jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/module/RuinAndRecreateModuleTest.java diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/module/RuinAndRecreateModule.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/module/RuinAndRecreateModule.java index 9c6e85cc4..71facbc2f 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/module/RuinAndRecreateModule.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/module/RuinAndRecreateModule.java @@ -26,9 +26,7 @@ import com.graphhopper.jsprit.core.problem.job.Job; import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import java.util.Collection; -import java.util.HashSet; -import java.util.Set; +import java.util.*; public class RuinAndRecreateModule implements SearchStrategyModule { @@ -39,6 +37,12 @@ public class RuinAndRecreateModule implements SearchStrategyModule { private String moduleName; + private Random random = new Random(4711); + + private int minUnassignedJobsToBeReinserted = Integer.MAX_VALUE; + + private double proportionOfUnassignedJobsToBeReinserted = 1d; + public RuinAndRecreateModule(String moduleName, InsertionStrategy insertion, RuinStrategy ruin) { super(); this.insertion = insertion; @@ -46,16 +50,58 @@ public RuinAndRecreateModule(String moduleName, InsertionStrategy insertion, Rui this.moduleName = moduleName; } + /** + * To make overall results reproducible, make sure this class is provided with the "global" random number generator. + * + * @param random + */ + public void setRandom(Random random) { + this.random = random; + } + + /** + * Minimum number of unassigned jobs that is reinserted in each iteration. + * + * @param minUnassignedJobsToBeReinserted + */ + public void setMinUnassignedJobsToBeReinserted(int minUnassignedJobsToBeReinserted) { + this.minUnassignedJobsToBeReinserted = minUnassignedJobsToBeReinserted; + } + + /** + * Proportion of unassigned jobs that is reinserted in each iteration. + * + * @param proportionOfUnassignedJobsToBeReinserted + */ + public void setProportionOfUnassignedJobsToBeReinserted(double proportionOfUnassignedJobsToBeReinserted) { + this.proportionOfUnassignedJobsToBeReinserted = proportionOfUnassignedJobsToBeReinserted; + } + @Override - public VehicleRoutingProblemSolution runAndGetSolution(VehicleRoutingProblemSolution vrpSolution) { - Collection ruinedJobs = ruin.ruin(vrpSolution.getRoutes()); - Set ruinedJobSet = new HashSet(); + public VehicleRoutingProblemSolution runAndGetSolution(VehicleRoutingProblemSolution previousVrpSolution) { + Collection ruinedJobs = ruin.ruin(previousVrpSolution.getRoutes()); + Set ruinedJobSet = new HashSet<>(); ruinedJobSet.addAll(ruinedJobs); - ruinedJobSet.addAll(vrpSolution.getUnassignedJobs()); - Collection unassignedJobs = insertion.insertJobs(vrpSolution.getRoutes(), ruinedJobSet); - vrpSolution.getUnassignedJobs().clear(); - vrpSolution.getUnassignedJobs().addAll(unassignedJobs); - return vrpSolution; + List stillUnassignedInThisIteration = new ArrayList<>(); + if (previousVrpSolution.getUnassignedJobs().size() < minUnassignedJobsToBeReinserted) { + ruinedJobSet.addAll(previousVrpSolution.getUnassignedJobs()); + } else { + int noUnassignedToBeInserted = Math.max(minUnassignedJobsToBeReinserted, (int) (previousVrpSolution.getUnassignedJobs().size() * proportionOfUnassignedJobsToBeReinserted)); + List jobList = new ArrayList<>(previousVrpSolution.getUnassignedJobs()); + Collections.shuffle(jobList, random); + for (int i = 0; i < noUnassignedToBeInserted; i++) { + ruinedJobSet.add(jobList.get(i)); + } + for (int i = noUnassignedToBeInserted; i < jobList.size(); i++) { + stillUnassignedInThisIteration.add(jobList.get(i)); + } + } + Collection unassignedJobs = insertion.insertJobs(previousVrpSolution.getRoutes(), ruinedJobSet); + previousVrpSolution.getUnassignedJobs().clear(); + previousVrpSolution.getUnassignedJobs().addAll(unassignedJobs); + previousVrpSolution.getUnassignedJobs().addAll(stillUnassignedInThisIteration); + VehicleRoutingProblemSolution newSolution = previousVrpSolution; + return newSolution; } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/module/RuinAndRecreateModuleTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/module/RuinAndRecreateModuleTest.java new file mode 100644 index 000000000..ceb6d0cc1 --- /dev/null +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/module/RuinAndRecreateModuleTest.java @@ -0,0 +1,85 @@ +/* + * Licensed to GraphHopper GmbH under one or more contributor + * license agreements. See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + * + * GraphHopper GmbH licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.graphhopper.jsprit.core.algorithm.module; + +import com.graphhopper.jsprit.core.algorithm.recreate.InsertionStrategy; +import com.graphhopper.jsprit.core.algorithm.ruin.RuinStrategy; +import com.graphhopper.jsprit.core.problem.job.Job; +import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; +import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; +import org.junit.Assert; +import org.junit.Test; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +import static org.mockito.Mockito.mock; + +public class RuinAndRecreateModuleTest { + + @Test + public void initialNumOfUnassignedShouldWorkCorrectly() { + InsertionStrategy insertionStrategy = mock(InsertionStrategy.class); + RuinStrategy ruinStrategy = mock(RuinStrategy.class); + RuinAndRecreateModule module = new RuinAndRecreateModule("name", insertionStrategy, ruinStrategy); + Collection routes = new ArrayList<>(); + List unassigned = new ArrayList<>(); + for (int i = 0; i < 20; i++) { + unassigned.add(mock(Job.class)); + } + VehicleRoutingProblemSolution previousSolution = new VehicleRoutingProblemSolution(routes, unassigned, 0); + VehicleRoutingProblemSolution newSolution = module.runAndGetSolution(previousSolution); + Assert.assertEquals(0, newSolution.getUnassignedJobs().size()); + } + + @Test + public void proportionOfUnassignedShouldWorkCorrectly() { + InsertionStrategy insertionStrategy = mock(InsertionStrategy.class); + RuinStrategy ruinStrategy = mock(RuinStrategy.class); + RuinAndRecreateModule module = new RuinAndRecreateModule("name", insertionStrategy, ruinStrategy); + module.setMinUnassignedJobsToBeReinserted(5); + module.setProportionOfUnassignedJobsToBeReinserted(0.01); + Collection routes = new ArrayList<>(); + List unassigned = new ArrayList<>(); + for (int i = 0; i < 20; i++) { + unassigned.add(mock(Job.class)); + } + VehicleRoutingProblemSolution previousSolution = new VehicleRoutingProblemSolution(routes, unassigned, 0); + VehicleRoutingProblemSolution newSolution = module.runAndGetSolution(previousSolution); + Assert.assertEquals(15, newSolution.getUnassignedJobs().size()); + } + + @Test + public void proportionOfUnassignedShouldWorkCorrectly2() { + InsertionStrategy insertionStrategy = mock(InsertionStrategy.class); + RuinStrategy ruinStrategy = mock(RuinStrategy.class); + RuinAndRecreateModule module = new RuinAndRecreateModule("name", insertionStrategy, ruinStrategy); + module.setMinUnassignedJobsToBeReinserted(5); + module.setProportionOfUnassignedJobsToBeReinserted(0.5); + Collection routes = new ArrayList<>(); + List unassigned = new ArrayList<>(); + for (int i = 0; i < 20; i++) { + unassigned.add(mock(Job.class)); + } + VehicleRoutingProblemSolution previousSolution = new VehicleRoutingProblemSolution(routes, unassigned, 0); + VehicleRoutingProblemSolution newSolution = module.runAndGetSolution(previousSolution); + Assert.assertEquals(10, newSolution.getUnassignedJobs().size()); + } +} From e145151407494620f26e58afdc6878394f8b69ac Mon Sep 17 00:00:00 2001 From: oblonski Date: Mon, 17 Sep 2018 10:40:18 +0200 Subject: [PATCH 015/191] make no. unassigned jobs configurable - related to #431 --- .../jsprit/core/algorithm/box/Jsprit.java | 36 +++++++++++++------ 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java index 923863140..7225cf1fe 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java @@ -20,6 +20,7 @@ import com.graphhopper.jsprit.core.algorithm.PrettyAlgorithmBuilder; import com.graphhopper.jsprit.core.algorithm.SearchStrategy; +import com.graphhopper.jsprit.core.algorithm.SearchStrategyModule; import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; import com.graphhopper.jsprit.core.algorithm.acceptor.SchrimpfAcceptance; import com.graphhopper.jsprit.core.algorithm.acceptor.SolutionAcceptor; @@ -124,7 +125,10 @@ public enum Parameter { STRING_K_MIN("string_kmin"), STRING_K_MAX("string_kmax"), STRING_L_MIN("string_lmin"), - STRING_L_MAX("string_lmax"); + STRING_L_MAX("string_lmax"), + MIN_UNASSIGNED("min_unassigned"), + PROPORTION_UNASSIGNED("proportion_unassigned"); + String paraName; @@ -233,6 +237,9 @@ private Properties createDefaultProperties() { defaults.put(Parameter.FAST_REGRET.toString(), String.valueOf(false)); defaults.put(Parameter.BREAK_SCHEDULING.toString(), String.valueOf(true)); defaults.put(Parameter.CONSTRUCTION.toString(), Construction.REGRET_INSERTION.toString()); + + defaults.put(Parameter.MIN_UNASSIGNED.toString(), String.valueOf(Integer.MAX_VALUE)); + defaults.put(Parameter.PROPORTION_UNASSIGNED.toString(), String.valueOf(1.0)); return defaults; } @@ -621,34 +628,34 @@ public void informIterationStarts(int i, VehicleRoutingProblem problem, Collecti SolutionCostCalculator objectiveFunction = getObjectiveFunction(vrp, maxCosts); SearchStrategy radial_regret = new SearchStrategy(Strategy.RADIAL_REGRET.toString(), new SelectBest(), acceptor, objectiveFunction); - radial_regret.addModule(new RuinAndRecreateModule(Strategy.RADIAL_REGRET.toString(), regret, radial)); + radial_regret.addModule(configureModule(new RuinAndRecreateModule(Strategy.RADIAL_REGRET.toString(), regret, radial))); SearchStrategy radial_best = new SearchStrategy(Strategy.RADIAL_BEST.toString(), new SelectBest(), acceptor, objectiveFunction); - radial_best.addModule(new RuinAndRecreateModule(Strategy.RADIAL_BEST.toString(), best, radial)); + radial_best.addModule(configureModule(new RuinAndRecreateModule(Strategy.RADIAL_BEST.toString(), best, radial))); SearchStrategy random_best = new SearchStrategy(Strategy.RANDOM_BEST.toString(), new SelectBest(), acceptor, objectiveFunction); - random_best.addModule(new RuinAndRecreateModule(Strategy.RANDOM_BEST.toString(), best, random_for_best)); + random_best.addModule(configureModule(new RuinAndRecreateModule(Strategy.RANDOM_BEST.toString(), best, random_for_best))); SearchStrategy random_regret = new SearchStrategy(Strategy.RANDOM_REGRET.toString(), new SelectBest(), acceptor, objectiveFunction); - random_regret.addModule(new RuinAndRecreateModule(Strategy.RANDOM_REGRET.toString(), regret, random_for_regret)); + random_regret.addModule(configureModule(new RuinAndRecreateModule(Strategy.RANDOM_REGRET.toString(), regret, random_for_regret))); SearchStrategy worst_regret = new SearchStrategy(Strategy.WORST_REGRET.toString(), new SelectBest(), acceptor, objectiveFunction); - worst_regret.addModule(new RuinAndRecreateModule(Strategy.WORST_REGRET.toString(), regret, worst)); + worst_regret.addModule(configureModule(new RuinAndRecreateModule(Strategy.WORST_REGRET.toString(), regret, worst))); SearchStrategy worst_best = new SearchStrategy(Strategy.WORST_BEST.toString(), new SelectBest(), acceptor, objectiveFunction); - worst_best.addModule(new RuinAndRecreateModule(Strategy.WORST_BEST.toString(), best, worst)); + worst_best.addModule(configureModule(new RuinAndRecreateModule(Strategy.WORST_BEST.toString(), best, worst))); final SearchStrategy clusters_regret = new SearchStrategy(Strategy.CLUSTER_REGRET.toString(), new SelectBest(), acceptor, objectiveFunction); - clusters_regret.addModule(new RuinAndRecreateModule(Strategy.CLUSTER_REGRET.toString(), regret, clusters)); + clusters_regret.addModule(configureModule(new RuinAndRecreateModule(Strategy.CLUSTER_REGRET.toString(), regret, clusters))); final SearchStrategy clusters_best = new SearchStrategy(Strategy.CLUSTER_BEST.toString(), new SelectBest(), acceptor, objectiveFunction); - clusters_best.addModule(new RuinAndRecreateModule(Strategy.CLUSTER_BEST.toString(), best, clusters)); + clusters_best.addModule(configureModule(new RuinAndRecreateModule(Strategy.CLUSTER_BEST.toString(), best, clusters))); SearchStrategy stringRegret = new SearchStrategy(Strategy.STRING_REGRET.toString(), new SelectBest(), acceptor, objectiveFunction); - stringRegret.addModule(new RuinAndRecreateModule(Strategy.STRING_REGRET.toString(), regret, stringRuin)); + stringRegret.addModule(configureModule(new RuinAndRecreateModule(Strategy.STRING_REGRET.toString(), regret, stringRuin))); SearchStrategy stringBest = new SearchStrategy(Strategy.STRING_BEST.toString(), new SelectBest(), acceptor, objectiveFunction); - stringBest.addModule(new RuinAndRecreateModule(Strategy.STRING_BEST.toString(), best, stringRuin)); + stringBest.addModule(configureModule(new RuinAndRecreateModule(Strategy.STRING_BEST.toString(), best, stringRuin))); PrettyAlgorithmBuilder prettyBuilder = PrettyAlgorithmBuilder.newInstance(vrp, vehicleFleetManager, stateManager, constraintManager); prettyBuilder.setRandom(random); @@ -697,6 +704,13 @@ public void informIterationStarts(int i, VehicleRoutingProblem problem, Collecti } + private SearchStrategyModule configureModule(RuinAndRecreateModule ruinAndRecreateModule) { + ruinAndRecreateModule.setRandom(random); + ruinAndRecreateModule.setMinUnassignedJobsToBeReinserted(Integer.valueOf(properties.getProperty(Parameter.MIN_UNASSIGNED.toString()))); + ruinAndRecreateModule.setProportionOfUnassignedJobsToBeReinserted(Double.valueOf(properties.getProperty(Parameter.PROPORTION_UNASSIGNED.toString()))); + return ruinAndRecreateModule; + } + private DefaultScorer getRegretScorer(VehicleRoutingProblem vrp) { DefaultScorer scorer = new DefaultScorer(vrp); scorer.setTimeWindowParam(Double.valueOf(properties.getProperty(Parameter.REGRET_TIME_WINDOW_SCORER.toString()))); From 5e3fd411227744c31831aa2b12bb6901c67c329a Mon Sep 17 00:00:00 2001 From: oblonski Date: Mon, 17 Sep 2018 10:43:30 +0200 Subject: [PATCH 016/191] ignore shipment flex test for now --- .../ShipmentInsertionCalculatorFlexTest.java | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculatorFlexTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculatorFlexTest.java index 9afc50220..916577006 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculatorFlexTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculatorFlexTest.java @@ -47,6 +47,7 @@ import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; import com.graphhopper.jsprit.core.util.CostFactory; import org.junit.Before; +import org.junit.Ignore; import org.junit.Test; import java.util.ArrayList; @@ -278,6 +279,43 @@ public void whenInstertingShipmentWithLoadConstraintWhereCapIsNotSufficient_capC } + @Ignore + @Test + public void whenInsertingShipmentWithLoadConstraintWhereCapIsNotSufficient_capConstraintsAreFulfilledV2() { + Shipment shipment = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("0,10").build()).setDeliveryLocation(Location.newInstance("10,0")).build(); + Shipment shipment2 = Shipment.Builder.newInstance("s2").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("10,10").build()).setDeliveryLocation(Location.newInstance("0,0")).build(); + Shipment shipment3 = Shipment.Builder.newInstance("s3").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("0,0").build()).setDeliveryLocation(Location.newInstance("9,9")).build(); + + VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); + VehicleRoutingProblem vrp = vrpBuilder.addJob(shipment).addJob(shipment2).addJob(shipment3).build(); + + VehicleRoute route = VehicleRoute.emptyRoute(); + route.setVehicleAndDepartureTime(vehicle, 0.0); + + Inserter inserter = new Inserter(new InsertionListeners(), vrp); + inserter.insertJob(shipment, new InsertionData(0, 0, 0, vehicle, null), route); + inserter.insertJob(shipment2, new InsertionData(0, 1, 2, vehicle, null), route); + + StateManager stateManager = new StateManager(vrp); + stateManager.updateLoadStates(); + stateManager.informInsertionStarts(Arrays.asList(route), null); + + ConstraintManager constraintManager = new ConstraintManager(vrp, stateManager); + constraintManager.addConstraint(new PickupAndDeliverShipmentLoadActivityLevelConstraint(stateManager), ConstraintManager.Priority.CRITICAL); +// constraintManager.addConstraint(new ShipmentPickupsFirstConstraint(), ConstraintManager.Priority.CRITICAL); + + ShipmentInsertionCalculatorFlex insertionCalculator = new ShipmentInsertionCalculatorFlex(routingCosts, activityCosts, + activityInsertionCostsCalculator, constraintManager); + insertionCalculator.setEvalIndexPickup(0); + insertionCalculator.setEvalIndexDelivery(3); + insertionCalculator.setJobActivityFactory(vrp.getJobActivityFactory()); + + InsertionData iData = insertionCalculator.getInsertionData(route, shipment3, vehicle, 0.0, DriverImpl.noDriver(), Double.MAX_VALUE); + assertTrue(iData instanceof InsertionData.NoInsertionFound); + + } + + @Test public void whenInsertingServiceWhileNoCapIsAvailable_itMustReturnNoInsertionData() { Shipment shipment = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("0,10").build()).setDeliveryLocation(Location.newInstance("0,0")).build(); From 25a3052a54fe2c5b5afb7c85bfc0015bd06b44ab Mon Sep 17 00:00:00 2001 From: oblonski Date: Thu, 27 Sep 2018 09:34:15 +0200 Subject: [PATCH 017/191] remove redundant specifications --- .../core/problem/VehicleRoutingProblem.java | 37 +++++++++---------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java index c54ed687d..fa6afae5b 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java @@ -77,31 +77,29 @@ public static Builder newInstance() { private VehicleRoutingActivityCosts activityCosts = new WaitingTimeCosts(); - private Map jobs = new LinkedHashMap(); + private Map jobs = new LinkedHashMap<>(); - private Map tentativeJobs = new LinkedHashMap(); + private Map tentativeJobs = new LinkedHashMap<>(); - private Map jobsInInitialRoutes = new HashMap<>(); + private Map jobsInInitialRoutes = new LinkedHashMap<>(); - private Map tentative_coordinates = new HashMap(); + private Map tentative_coordinates = new HashMap<>(); private FleetSize fleetSize = FleetSize.INFINITE; private Map vehicleTypes = new HashMap<>(); - private Collection initialRoutes = new ArrayList(); + private Collection initialRoutes = new ArrayList<>(); - private Set uniqueVehicles = new LinkedHashSet(); + private Set uniqueVehicles = new LinkedHashSet<>(); - private Set addedVehicleIds = new LinkedHashSet(); - - private boolean hasBreaks = false; + private Set addedVehicleIds = new LinkedHashSet<>(); private JobActivityFactory jobActivityFactory = new JobActivityFactory() { @Override public List createActivities(Job job) { - List acts = new ArrayList(); + List acts = new ArrayList<>(); if( job instanceof Break){ acts.add(BreakActivity.newInstance((Break) job)); } @@ -122,9 +120,9 @@ else if (job instanceof Service) { private int vehicleTypeIdIndexCounter = 1; - private Map typeKeyIndices = new HashMap(); + private Map typeKeyIndices = new HashMap<>(); - private Map> activityMap = new HashMap>(); + private Map> activityMap = new HashMap<>(); private final DefaultShipmentActivityFactory shipmentActivityFactory = new DefaultShipmentActivityFactory(); @@ -138,7 +136,7 @@ private void incVehicleTypeIdIndexCounter() { vehicleTypeIdIndexCounter++; } - private Set allLocations = new HashSet(); + private Set allLocations = new HashSet<>(); /** * Returns the unmodifiable map of collected locations (mapped by their location-id). @@ -323,7 +321,7 @@ public Builder addInitialVehicleRoute(VehicleRoute route) { private void registerJobAndActivity(AbstractActivity abstractAct, Job job) { if (activityMap.containsKey(job)) activityMap.get(job).add(abstractAct); else { - List actList = new ArrayList(); + List actList = new ArrayList<>(); actList.add(abstractAct); activityMap.put(job, actList); } @@ -439,7 +437,7 @@ public VehicleRoutingProblem build() { addJobToFinalJobMapAndCreateActivities(job); } } - + int jobIndexCounter = 1; for (Job job : jobs.values()) { ((AbstractJob)job).setIndex(jobIndexCounter++); @@ -447,13 +445,14 @@ public VehicleRoutingProblem build() { for (Job job : jobsInInitialRoutes.values()) { ((AbstractJob)job).setIndex(jobIndexCounter++); } - + boolean hasBreaks = addBreaksToActivityMap(); if (hasBreaks && fleetSize.equals(FleetSize.INFINITE)) throw new UnsupportedOperationException("Breaks are not yet supported when dealing with infinite fleet. Either set it to finite or omit breaks."); return new VehicleRoutingProblem(this); } + @Deprecated public Builder addLocation(String locationId, Coordinate coordinate) { tentative_coordinates.put(locationId, coordinate); return this; @@ -531,7 +530,7 @@ private Builder addService(Service service) { * * @author sschroeder */ - public static enum FleetSize { + public enum FleetSize { FINITE, INFINITE } @@ -641,7 +640,7 @@ public Map getJobsInclusiveInitialJobsInRoutes(){ * @return copied collection of initial vehicle routes */ public Collection getInitialVehicleRoutes() { - Collection copiedInitialRoutes = new ArrayList(); + Collection copiedInitialRoutes = new ArrayList<>(); for (VehicleRoute route : initialVehicleRoutes) { copiedInitialRoutes.add(VehicleRoute.copyOf(route)); } @@ -718,7 +717,7 @@ public JobActivityFactory getJobActivityFactory() { * @return a copy of the activities that are associated to the specified job */ public List copyAndGetActivities(Job job) { - List acts = new ArrayList(); + List acts = new ArrayList<>(); if (activityMap.containsKey(job)) { for (AbstractActivity act : activityMap.get(job)) acts.add((AbstractActivity) act.duplicate()); } From 9ec84d0e48192b198fec6d2fd43455c6cc70512c Mon Sep 17 00:00:00 2001 From: oblonski Date: Tue, 4 Dec 2018 10:19:58 +0100 Subject: [PATCH 018/191] add helper to build new vehicle based on another vehicle --- .../core/problem/vehicle/VehicleImpl.java | 28 +++++++++++++++++++ .../core/problem/vehicle/VehicleImplTest.java | 17 +++++++++++ 2 files changed, 45 insertions(+) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleImpl.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleImpl.java index 0731abf21..dde922f14 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleImpl.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleImpl.java @@ -140,6 +140,24 @@ private Builder(String id) { if (id == null) throw new IllegalArgumentException("Vehicle id must not be null."); } + /** + * This can be used to initialize the new vehicle (to be built) with another vehicle. + * + * @param baseVehicle + */ + private Builder(Vehicle baseVehicle) { + this.id = baseVehicle.getId(); + this.earliestStart = baseVehicle.getEarliestDeparture(); + this.latestArrival = baseVehicle.getLatestArrival(); + this.returnToDepot = baseVehicle.isReturnToDepot(); + this.type = baseVehicle.getType(); + this.skills = baseVehicle.getSkills(); + this.startLocation = baseVehicle.getStartLocation(); + this.endLocation = baseVehicle.getEndLocation(); + this.aBreak = baseVehicle.getBreak(); + this.userData = baseVehicle.getUserData(); + } + /** * Sets the {@link VehicleType}.
* @@ -291,6 +309,16 @@ public static Builder newInstance(String vehicleId) { return new Builder(vehicleId); } + /** + * Returns new instance of vehicle builder and initializes every attribute with a attributes of baseVehicle + * + * @param baseVehicle + * @return + */ + public static Builder newInstance(Vehicle baseVehicle) { + return new Builder(baseVehicle); + } + public Builder addSkills(Skills skills) { this.skillBuilder.addAllSkills(skills.values()); return this; diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleImplTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleImplTest.java index cf276e48d..ae09e4483 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleImplTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleImplTest.java @@ -52,6 +52,23 @@ public void whenAddingDriverBreak_itShouldBeAddedCorrectly() { assertEquals(30., v.getBreak().getServiceDuration(), 0.1); } + @Test + public void buildingANewVehicleBasedOnAnotherOneShouldWork() { + VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("type").build(); + Break aBreak = Break.Builder.newInstance("break").setTimeWindow(TimeWindow.newInstance(100, 200)).setServiceTime(30).build(); + Vehicle v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("start")) + .setType(type1).setEndLocation(Location.newInstance("start")) + .setBreak(aBreak).build(); + + Vehicle newVehicle = VehicleImpl.Builder.newInstance(v).setStartLocation(Location.newInstance("newStartLocation")).build(); + assertNotNull(newVehicle.getBreak()); + assertEquals(100., newVehicle.getBreak().getTimeWindow().getStart(), 0.1); + assertEquals(200., newVehicle.getBreak().getTimeWindow().getEnd(), 0.1); + assertEquals(30., newVehicle.getBreak().getServiceDuration(), 0.1); + assertEquals("newStartLocation", newVehicle.getStartLocation().getId()); + assertEquals(type1, newVehicle.getType()); + } + @Test public void whenAddingSkills_theyShouldBeAddedCorrectly() { From 3e89111342fa4b70902917bfeead66f804572483 Mon Sep 17 00:00:00 2001 From: oblonski Date: Tue, 4 Dec 2018 11:11:14 +0100 Subject: [PATCH 019/191] add helper to build new vehicle based on another vehicle --- .../jsprit/core/problem/vehicle/VehicleImpl.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleImpl.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleImpl.java index dde922f14..50d8131ac 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleImpl.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleImpl.java @@ -330,6 +330,16 @@ public Builder setBreak(Break aBreak) { } } + /** + * Returns a simple copy of vehicle. + * + * @param vehicle + * @return + */ + public static Vehicle copyOf(Vehicle vehicle) { + return VehicleImpl.Builder.newInstance(vehicle).build(); + } + /** * Returns empty/noVehicle which is a vehicle having no capacity, no type and no reasonable id. *

From 0dfcd960fe894dae0327f7f5aa65b0aeb64b63fb Mon Sep 17 00:00:00 2001 From: oblonski Date: Tue, 4 Dec 2018 17:25:46 +0100 Subject: [PATCH 020/191] statemanager stores states for routes with no activities also --- .../core/algorithm/state/StateManager.java | 8 +- .../core/analysis/SolutionAnalyser.java | 106 +++++++++--------- .../core/analysis/SolutionAnalyserTest.java | 18 +++ 3 files changed, 75 insertions(+), 57 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/StateManager.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/StateManager.java index 9d9fbb63e..fe10f16d2 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/StateManager.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/StateManager.java @@ -301,7 +301,7 @@ private ClassCastException getClassCastException(ClassCastException e, StateId s */ @Override public T getRouteState(VehicleRoute route, StateId stateId, Class type) { - if (route.isEmpty()) return null; + if (route == null) return null; T state = null; if(isIndexedBased){ try { @@ -351,7 +351,7 @@ public boolean hasRouteState(VehicleRoute route, Vehicle vehicle, StateId stateI * @throws java.lang.IllegalStateException if !route.isEmpty() and act(0).getIndex()==0 since this suggests that act has no index at all */ public T getRouteState(VehicleRoute route, Vehicle vehicle, StateId stateId, Class type) { - if (route.isEmpty()) return null; +// if (route.isEmpty()) return null; T state = null; if(isIndexedBased){ try { @@ -458,7 +458,7 @@ public void putRouteState(VehicleRoute route, Vehicle vehicle, StateId state } void putTypedInternalRouteState(VehicleRoute route, StateId stateId, T state) { - if (route.isEmpty()) return; +// if (route.isEmpty()) return; if(isIndexedBased){ routeStatesArr[route.getVehicle().getIndex()][stateId.getIndex()] = state; } @@ -471,7 +471,7 @@ void putTypedInternalRouteState(VehicleRoute route, StateId stateId, T state } void putTypedInternalRouteState(VehicleRoute route, Vehicle vehicle, StateId stateId, T state) { - if (route.isEmpty()) return; +// if (route.isEmpty()) return; if(isIndexedBased){ vehicleDependentRouteStatesArr[route.getVehicle().getIndex()][vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()] = state; } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/analysis/SolutionAnalyser.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/analysis/SolutionAnalyser.java index e6cedd77b..cdb82f5c5 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/analysis/SolutionAnalyser.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/analysis/SolutionAnalyser.java @@ -355,11 +355,11 @@ public void finish() { private static class DistanceUpdater implements StateUpdater, ActivityVisitor { - private StateId distance_id; + private StateId distanceId; private StateManager stateManager; - private double sum_distance = 0.; + private double sumDistance = 0.; private TransportDistance distanceCalculator; @@ -367,15 +367,15 @@ private static class DistanceUpdater implements StateUpdater, ActivityVisitor { private VehicleRoute route; - private DistanceUpdater(StateId distance_id, StateManager stateManager, TransportDistance distanceCalculator) { - this.distance_id = distance_id; + private DistanceUpdater(StateId distanceId, StateManager stateManager, TransportDistance distanceCalculator) { + this.distanceId = distanceId; this.stateManager = stateManager; this.distanceCalculator = distanceCalculator; } @Override public void begin(VehicleRoute route) { - sum_distance = 0.; + sumDistance = 0.; this.route = route; this.prevAct = route.getStart(); } @@ -383,16 +383,16 @@ public void begin(VehicleRoute route) { @Override public void visit(TourActivity activity) { double distance = distanceCalculator.getDistance(prevAct.getLocation(), activity.getLocation(), prevAct.getEndTime(), route.getVehicle()); - sum_distance += distance; - stateManager.putActivityState(activity, distance_id, sum_distance); + sumDistance += distance; + stateManager.putActivityState(activity, distanceId, sumDistance); prevAct = activity; } @Override public void finish() { double distance = distanceCalculator.getDistance(prevAct.getLocation(), route.getEnd().getLocation(),prevAct.getEndTime(), route.getVehicle()); - sum_distance += distance; - stateManager.putRouteState(route, distance_id, sum_distance); + sumDistance += distance; + stateManager.putRouteState(route, distanceId, sumDistance); } } @@ -446,27 +446,27 @@ public void finish() { private TransportDistance distanceCalculator; - private StateId waiting_time_id; + private StateId waitingTimeId; - private StateId transport_time_id; + private StateId transportTimeId; - private StateId service_time_id; + private StateId serviceTimeId; - private StateId distance_id; + private StateId distanceId; - private StateId too_late_id; + private StateId tooLateId; - private StateId shipment_id; + private StateId shipmentId; - private StateId backhaul_id; + private StateId backhaulId; - private StateId skill_id; + private StateId skillId; - private StateId last_transport_distance_id; + private StateId lastTransportDistanceId; - private StateId last_transport_time_id; + private StateId lastTransportTimeId; - private StateId last_transport_cost_id; + private StateId lastTransportCostId; private ActivityTimeTracker.ActivityPolicy activityPolicy; @@ -533,24 +533,24 @@ private void initialise() { activityPolicy = ActivityTimeTracker.ActivityPolicy.AS_SOON_AS_TIME_WINDOW_OPENS; this.stateManager.addStateUpdater(new UpdateActivityTimes(vrp.getTransportCosts(), activityPolicy, vrp.getActivityCosts())); this.stateManager.addStateUpdater(new UpdateVariableCosts(vrp.getActivityCosts(), vrp.getTransportCosts(), stateManager)); - waiting_time_id = stateManager.createStateId("waiting-time"); - transport_time_id = stateManager.createStateId("transport-time"); - service_time_id = stateManager.createStateId("service-time"); - distance_id = stateManager.createStateId("distance"); - too_late_id = stateManager.createStateId("too-late"); - shipment_id = stateManager.createStateId("shipment"); - backhaul_id = stateManager.createStateId("backhaul"); - skill_id = stateManager.createStateId("skills-violated"); - last_transport_cost_id = stateManager.createStateId("last-transport-cost"); - last_transport_distance_id = stateManager.createStateId("last-transport-distance"); - last_transport_time_id = stateManager.createStateId("last-transport-time"); - - stateManager.addStateUpdater(new SumUpActivityTimes(waiting_time_id, transport_time_id, service_time_id, too_late_id, stateManager, activityPolicy, vrp.getActivityCosts())); - stateManager.addStateUpdater(new DistanceUpdater(distance_id, stateManager, distanceCalculator)); - stateManager.addStateUpdater(new BackhaulAndShipmentUpdater(backhaul_id, shipment_id, stateManager)); - stateManager.addStateUpdater(new SkillUpdater(stateManager, skill_id)); + waitingTimeId = stateManager.createStateId("waiting-time"); + transportTimeId = stateManager.createStateId("transport-time"); + serviceTimeId = stateManager.createStateId("service-time"); + distanceId = stateManager.createStateId("distance"); + tooLateId = stateManager.createStateId("too-late"); + shipmentId = stateManager.createStateId("shipment"); + backhaulId = stateManager.createStateId("backhaul"); + skillId = stateManager.createStateId("skills-violated"); + lastTransportCostId = stateManager.createStateId("last-transport-cost"); + lastTransportDistanceId = stateManager.createStateId("last-transport-distance"); + lastTransportTimeId = stateManager.createStateId("last-transport-time"); + + stateManager.addStateUpdater(new SumUpActivityTimes(waitingTimeId, transportTimeId, serviceTimeId, tooLateId, stateManager, activityPolicy, vrp.getActivityCosts())); + stateManager.addStateUpdater(new DistanceUpdater(distanceId, stateManager, distanceCalculator)); + stateManager.addStateUpdater(new BackhaulAndShipmentUpdater(backhaulId, shipmentId, stateManager)); + stateManager.addStateUpdater(new SkillUpdater(stateManager, skillId)); stateManager.addStateUpdater(new LoadAndActivityCounter(stateManager)); - stateManager.addStateUpdater(new LastTransportUpdater(stateManager, vrp.getTransportCosts(), distanceCalculator, last_transport_distance_id, last_transport_time_id, last_transport_cost_id)); + stateManager.addStateUpdater(new LastTransportUpdater(stateManager, vrp.getTransportCosts(), distanceCalculator, lastTransportDistanceId, lastTransportTimeId, lastTransportCostId)); } @@ -779,7 +779,7 @@ public Capacity getCapacityViolationAfterActivity(TourActivity activity, Vehicle */ public Double getTimeWindowViolation(VehicleRoute route) { if (route == null) throw new IllegalArgumentException("route is missing."); - return stateManager.getRouteState(route, too_late_id, Double.class); + return stateManager.getRouteState(route, tooLateId, Double.class); } /** @@ -800,7 +800,7 @@ public Double getTimeWindowViolationAtActivity(TourActivity activity, VehicleRou */ public Boolean hasSkillConstraintViolation(VehicleRoute route) { if (route == null) throw new IllegalArgumentException("route is missing."); - return stateManager.getRouteState(route, skill_id, Boolean.class); + return stateManager.getRouteState(route, skillId, Boolean.class); } /** @@ -816,7 +816,7 @@ public Boolean hasSkillConstraintViolationAtActivity(TourActivity activity, Vehi if (activity instanceof Start) return false; if (activity instanceof End) return false; verifyThatRouteContainsAct(activity, route); - return stateManager.getActivityState(activity, skill_id, Boolean.class); + return stateManager.getActivityState(activity, skillId, Boolean.class); } /** @@ -831,7 +831,7 @@ public Boolean hasSkillConstraintViolationAtActivity(TourActivity activity, Vehi */ public Boolean hasBackhaulConstraintViolation(VehicleRoute route) { if (route == null) throw new IllegalArgumentException("route is missing."); - return stateManager.getRouteState(route, backhaul_id, Boolean.class); + return stateManager.getRouteState(route, backhaulId, Boolean.class); } /** @@ -846,7 +846,7 @@ public Boolean hasBackhaulConstraintViolationAtActivity(TourActivity activity, V if (activity instanceof Start) return false; if (activity instanceof End) return false; verifyThatRouteContainsAct(activity, route); - return stateManager.getActivityState(activity, backhaul_id, Boolean.class); + return stateManager.getActivityState(activity, backhaulId, Boolean.class); } /** @@ -859,7 +859,7 @@ public Boolean hasBackhaulConstraintViolationAtActivity(TourActivity activity, V */ public Boolean hasShipmentConstraintViolation(VehicleRoute route) { if (route == null) throw new IllegalArgumentException("route is missing."); - return stateManager.getRouteState(route, shipment_id, Boolean.class); + return stateManager.getRouteState(route, shipmentId, Boolean.class); } /** @@ -877,7 +877,7 @@ public Boolean hasShipmentConstraintViolationAtActivity(TourActivity activity, V if (activity instanceof Start) return false; if (activity instanceof End) return false; verifyThatRouteContainsAct(activity, route); - return stateManager.getActivityState(activity, shipment_id, Boolean.class); + return stateManager.getActivityState(activity, shipmentId, Boolean.class); } @@ -897,7 +897,7 @@ public Double getOperationTime(VehicleRoute route) { */ public Double getWaitingTime(VehicleRoute route) { if (route == null) throw new IllegalArgumentException("route is missing."); - return stateManager.getRouteState(route, waiting_time_id, Double.class); + return stateManager.getRouteState(route, waitingTimeId, Double.class); } /** @@ -906,7 +906,7 @@ public Double getWaitingTime(VehicleRoute route) { */ public Double getTransportTime(VehicleRoute route) { if (route == null) throw new IllegalArgumentException("route is missing."); - return stateManager.getRouteState(route, transport_time_id, Double.class); + return stateManager.getRouteState(route, transportTimeId, Double.class); } /** @@ -915,7 +915,7 @@ public Double getTransportTime(VehicleRoute route) { */ public Double getServiceTime(VehicleRoute route) { if (route == null) throw new IllegalArgumentException("route is missing."); - return stateManager.getRouteState(route, service_time_id, Double.class); + return stateManager.getRouteState(route, serviceTimeId, Double.class); } /** @@ -965,7 +965,7 @@ public Double getTransportTimeAtActivity(TourActivity activity, VehicleRoute rou if (activity instanceof Start) return 0.; if (activity instanceof End) return getTransportTime(route); verifyThatRouteContainsAct(activity, route); - return stateManager.getActivityState(activity, transport_time_id, Double.class); + return stateManager.getActivityState(activity, transportTimeId, Double.class); } /** @@ -974,7 +974,7 @@ public Double getTransportTimeAtActivity(TourActivity activity, VehicleRoute rou * @return The transport time from the previous activity to this one. */ public Double getLastTransportTimeAtActivity(TourActivity activity, VehicleRoute route) { - return getLastTransport(activity, route, last_transport_time_id); + return getLastTransport(activity, route, lastTransportTimeId); } /** @@ -983,7 +983,7 @@ public Double getLastTransportTimeAtActivity(TourActivity activity, VehicleRoute * @return The transport distance from the previous activity to this one. */ public Double getLastTransportDistanceAtActivity(TourActivity activity, VehicleRoute route) { - return getLastTransport(activity, route, last_transport_distance_id); + return getLastTransport(activity, route, lastTransportDistanceId); } /** @@ -992,7 +992,7 @@ public Double getLastTransportDistanceAtActivity(TourActivity activity, VehicleR * @return The transport cost from the previous activity to this one. */ public Double getLastTransportCostAtActivity(TourActivity activity, VehicleRoute route) { - return getLastTransport(activity, route, last_transport_cost_id); + return getLastTransport(activity, route, lastTransportCostId); } @@ -1026,7 +1026,7 @@ public Double getWaitingTimeAtActivity(TourActivity activity, VehicleRoute route */ public Double getDistance(VehicleRoute route) { if (route == null) throw new IllegalArgumentException("route is missing."); - return stateManager.getRouteState(route, distance_id, Double.class); + return stateManager.getRouteState(route, distanceId, Double.class); } /** @@ -1039,7 +1039,7 @@ public Double getDistanceAtActivity(TourActivity activity, VehicleRoute route) { if (activity instanceof Start) return 0.; if (activity instanceof End) return getDistance(route); verifyThatRouteContainsAct(activity, route); - return stateManager.getActivityState(activity, distance_id, Double.class); + return stateManager.getActivityState(activity, distanceId, Double.class); } /** diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/analysis/SolutionAnalyserTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/analysis/SolutionAnalyserTest.java index 3ce9bcfae..28284bcff 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/analysis/SolutionAnalyserTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/analysis/SolutionAnalyserTest.java @@ -22,6 +22,7 @@ import com.graphhopper.jsprit.core.problem.Capacity; import com.graphhopper.jsprit.core.problem.Location; import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; +import com.graphhopper.jsprit.core.problem.cost.TransportDistance; import com.graphhopper.jsprit.core.problem.job.Delivery; import com.graphhopper.jsprit.core.problem.job.Pickup; import com.graphhopper.jsprit.core.problem.job.Service; @@ -1615,4 +1616,21 @@ public void skillViolationOnSolution_shouldWorkWhenNotViolated() { assertFalse(violated); } + @Test + public void shouldWorkWithRouteWithoutActivities() { + Vehicle vehicle = VehicleImpl.Builder.newInstance("vehicle").setStartLocation(Location.newInstance(0, 0)) + .setEndLocation(Location.newInstance(10, 0)).build(); + VehicleRoute vehicleRoute = VehicleRoute.Builder.newInstance(vehicle).build(); + + VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle).build(); + VehicleRoutingProblemSolution solution = new VehicleRoutingProblemSolution(Arrays.asList(vehicleRoute), 0); + SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() { + @Override + public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) { + return 100; + } + }); + + } + } From a767489115a664905e9d0cfb162c61178c48df39 Mon Sep 17 00:00:00 2001 From: Jeff Martin Date: Thu, 10 Jan 2019 10:22:39 -0700 Subject: [PATCH 021/191] Preventing ArrayIndexOutOfBoundsException when optimizing neighborhoods. --- .../ruin/JobNeighborhoodsOptimized.java | 4 ++++ .../ruin/JobNeighborhoodsOptimizedTest.java | 17 ++++++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsOptimized.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsOptimized.java index 58e7a4f05..34e9ae333 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsOptimized.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsOptimized.java @@ -95,6 +95,10 @@ public JobNeighborhoodsOptimized(VehicleRoutingProblem vrp, JobDistance jobDista @Override public Iterator getNearestNeighborsIterator(int nNeighbors, Job neighborTo) { + if (neighborTo.getIndex() == 0) { + return Collections.emptyIterator(); + } + int[] neighbors = this.neighbors[neighborTo.getIndex()-1]; return new ArrayIterator(nNeighbors,neighbors,jobs); } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsOptimizedTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsOptimizedTest.java index 82f471e9a..db80d59a2 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsOptimizedTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsOptimizedTest.java @@ -21,8 +21,10 @@ import com.graphhopper.jsprit.core.algorithm.ruin.distance.JobDistance; import com.graphhopper.jsprit.core.problem.Location; import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; +import com.graphhopper.jsprit.core.problem.job.Break; import com.graphhopper.jsprit.core.problem.job.Job; import com.graphhopper.jsprit.core.problem.job.Service; + import junit.framework.Assert; import org.junit.Before; import org.junit.Test; @@ -48,6 +50,7 @@ public class JobNeighborhoodsOptimizedTest { Service s5; Service s6; Service s7; + Break b1; @Before public void doBefore() { @@ -60,6 +63,8 @@ public void doBefore() { s5 = Service.Builder.newInstance("s5").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 6)).build(); s6 = Service.Builder.newInstance("s6").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 7)).build(); s7 = Service.Builder.newInstance("s7").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 8)).build(); + + b1 = Break.Builder.newInstance("b1").build(); vrp = builder.addJob(target).addJob(s2).addJob(s3).addJob(s4).addJob(s5).addJob(s6).addJob(s7).build(); @@ -141,6 +146,16 @@ public void whenRequestingMoreNeighborsThanExisting_itShouldReturnMaxNeighbors() assertEquals(2, services.size()); } - + @Test + public void whenRequestingNeighborsForZeroIndexBreak_itShouldReturnEmptyIterator() { + JobNeighborhoodsOptimized jn = new JobNeighborhoodsOptimized(vrp,jobDistance,2); + jn.initialise(); + Iterator iter = jn.getNearestNeighborsIterator(100, b1); + List services = new ArrayList(); + while (iter.hasNext()) { + services.add((Service) iter.next()); + } + assertEquals(0, services.size()); + } } From 92b1ad453c8a2cc9168190a04adcdc5155c65de8 Mon Sep 17 00:00:00 2001 From: oblonski Date: Tue, 22 Jan 2019 12:57:13 +0100 Subject: [PATCH 022/191] remove identity of BreakActivity --- .../route/activity/BreakActivity.java | 33 +------------------ 1 file changed, 1 insertion(+), 32 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/BreakActivity.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/BreakActivity.java index cb37c9fc8..86ffefb99 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/BreakActivity.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/BreakActivity.java @@ -94,38 +94,7 @@ protected BreakActivity(BreakActivity breakActivity) { this.latest = breakActivity.getTheoreticalLatestOperationStartTime(); this.duration = breakActivity.getOperationTime(); } - - - /* (non-Javadoc) - * @see java.lang.Object#hashCode() - */ - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((aBreak == null) ? 0 : aBreak.hashCode()); - return result; - } - - /* (non-Javadoc) - * @see java.lang.Object#equals(java.lang.Object) - */ - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - BreakActivity other = (BreakActivity) obj; - if (aBreak == null) { - if (other.aBreak != null) - return false; - } else if (!aBreak.equals(other.aBreak)) - return false; - return true; - } + public double getTheoreticalEarliestOperationStartTime() { return earliest; From 99a5d23207e8234aa3fab6dbf220dbdcdc0e7dca Mon Sep 17 00:00:00 2001 From: oblonski Date: Tue, 22 Jan 2019 13:00:18 +0100 Subject: [PATCH 023/191] remove counter from BreakActivity --- .../core/problem/solution/route/activity/BreakActivity.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/BreakActivity.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/BreakActivity.java index 86ffefb99..1106dc04f 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/BreakActivity.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/BreakActivity.java @@ -25,8 +25,6 @@ public class BreakActivity extends AbstractActivity implements TourActivity.JobActivity { - public static int counter = 0; - public double arrTime; public double endTime; @@ -78,13 +76,11 @@ public static BreakActivity newInstance(Break aBreak) { private double latest = Double.MAX_VALUE; protected BreakActivity(Break aBreak) { - counter++; this.aBreak = aBreak; this.duration = aBreak.getServiceDuration(); } protected BreakActivity(BreakActivity breakActivity) { - counter++; this.aBreak = (Break) breakActivity.getJob(); this.arrTime = breakActivity.getArrTime(); this.endTime = breakActivity.getEndTime(); @@ -94,7 +90,7 @@ protected BreakActivity(BreakActivity breakActivity) { this.latest = breakActivity.getTheoreticalLatestOperationStartTime(); this.duration = breakActivity.getOperationTime(); } - + public double getTheoreticalEarliestOperationStartTime() { return earliest; From ff8984c2032470269c300c33924336991a633419 Mon Sep 17 00:00:00 2001 From: oblonski Date: Wed, 10 Apr 2019 21:42:46 +0200 Subject: [PATCH 024/191] 1.8-SNAPSHOT --- jsprit-analysis/pom.xml | 2 +- jsprit-core/pom.xml | 2 +- jsprit-examples/pom.xml | 2 +- jsprit-instances/pom.xml | 2 +- jsprit-io/pom.xml | 2 +- pom.xml | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/jsprit-analysis/pom.xml b/jsprit-analysis/pom.xml index e4dd3e4b7..ec78fec8e 100644 --- a/jsprit-analysis/pom.xml +++ b/jsprit-analysis/pom.xml @@ -20,7 +20,7 @@ com.graphhopper jsprit - 1.7.3-SNAPSHOT + 1.8-SNAPSHOT 4.0.0 jsprit-analysis diff --git a/jsprit-core/pom.xml b/jsprit-core/pom.xml index d925760b1..a1f893e75 100644 --- a/jsprit-core/pom.xml +++ b/jsprit-core/pom.xml @@ -21,7 +21,7 @@ com.graphhopper jsprit - 1.7.3-SNAPSHOT + 1.8-SNAPSHOT 4.0.0 jsprit-core diff --git a/jsprit-examples/pom.xml b/jsprit-examples/pom.xml index 11a1b637f..5473ad74b 100644 --- a/jsprit-examples/pom.xml +++ b/jsprit-examples/pom.xml @@ -20,7 +20,7 @@ com.graphhopper jsprit - 1.7.3-SNAPSHOT + 1.8-SNAPSHOT 4.0.0 diff --git a/jsprit-instances/pom.xml b/jsprit-instances/pom.xml index 5f657739c..72a47d531 100644 --- a/jsprit-instances/pom.xml +++ b/jsprit-instances/pom.xml @@ -20,7 +20,7 @@ com.graphhopper jsprit - 1.7.3-SNAPSHOT + 1.8-SNAPSHOT 4.0.0 diff --git a/jsprit-io/pom.xml b/jsprit-io/pom.xml index 1886f762c..b41e04501 100644 --- a/jsprit-io/pom.xml +++ b/jsprit-io/pom.xml @@ -23,7 +23,7 @@ com.graphhopper jsprit - 1.7.3-SNAPSHOT + 1.8-SNAPSHOT 4.0.0 diff --git a/pom.xml b/pom.xml index 3740641cd..7c522e402 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ com.graphhopper jsprit - 1.7.3-SNAPSHOT + 1.8-SNAPSHOT pom From c11fd8d4359185294aeda6f5f5ddf4a3f130b98c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Schr=C3=B6der?= Date: Wed, 10 Apr 2019 21:44:16 +0200 Subject: [PATCH 025/191] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7a7da75f0..450c8e9d1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ Change-log ========== +**v1.7.3** @ 2019-04-10 **v1.7.2** @ 2017-06-08 - see [Whats new](https://github.com/graphhopper/jsprit/blob/master/WHATS_NEW.md) From d4dfa4a46849de62669f201781042b13b4329335 Mon Sep 17 00:00:00 2001 From: oblonski Date: Wed, 10 Apr 2019 21:47:31 +0200 Subject: [PATCH 026/191] switch to jdk 1.8 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 7c522e402..ffe307d16 100644 --- a/pom.xml +++ b/pom.xml @@ -71,7 +71,7 @@ - 1.7 + 1.8 UTF-8 4.12 1.9.5 From fda4500302e69a964040e1313d7fd5ccc5a52f55 Mon Sep 17 00:00:00 2001 From: oblonski Date: Wed, 10 Apr 2019 21:55:50 +0200 Subject: [PATCH 027/191] simplify and remove redundant stuff --- .../jsprit/core/problem/Capacity.java | 16 +++++-------- .../jsprit/core/problem/HasId.java | 2 +- .../jsprit/core/problem/HasIndex.java | 2 +- .../core/problem/JobActivityFactory.java | 2 +- .../jsprit/core/problem/Location.java | 24 ++++++++----------- .../jsprit/core/problem/Skills.java | 18 +++++++------- .../core/problem/VehicleRoutingProblem.java | 19 ++------------- 7 files changed, 29 insertions(+), 54 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/Capacity.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/Capacity.java index 0017d21ab..094398f0c 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/Capacity.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/Capacity.java @@ -171,9 +171,7 @@ public Builder addDimension(int index, int dimValue) { } private void copy(int[] from, int[] to) { - for (int i = 0; i < dimensions.length; i++) { - to[i] = from[i]; - } + System.arraycopy(from, 0, to, 0, dimensions.length); } /** @@ -195,7 +193,7 @@ public Capacity build() { * * @param capacity capacity to be copied */ - Capacity(Capacity capacity) { + private Capacity(Capacity capacity) { this.dimensions = new int[capacity.getNuOfDimensions()]; for (int i = 0; i < capacity.getNuOfDimensions(); i++) { this.dimensions[i] = capacity.get(i); @@ -261,11 +259,11 @@ public boolean isGreaterOrEqual(Capacity toCompare) { @Override public String toString() { - String string = "[noDimensions=" + getNuOfDimensions() + "]"; + StringBuilder string = new StringBuilder("[noDimensions=" + getNuOfDimensions() + "]"); for (int i = 0; i < getNuOfDimensions(); i++) { - string += "[[dimIndex=" + i + "][dimValue=" + dimensions[i] + "]]"; + string.append("[[dimIndex=").append(i).append("][dimValue=").append(dimensions[i]).append("]]"); } - return string; + return string.toString(); } /** @@ -300,9 +298,7 @@ public boolean equals(Object o) { Capacity capacity = (Capacity) o; - if (!Arrays.equals(dimensions, capacity.dimensions)) return false; - - return true; + return Arrays.equals(dimensions, capacity.dimensions); } @Override diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/HasId.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/HasId.java index 8c4b63518..74e7f842a 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/HasId.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/HasId.java @@ -23,6 +23,6 @@ */ public interface HasId { - public String getId(); + String getId(); } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/HasIndex.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/HasIndex.java index f8830cb83..edbfc922b 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/HasIndex.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/HasIndex.java @@ -23,6 +23,6 @@ */ public interface HasIndex { - public int getIndex(); + int getIndex(); } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/JobActivityFactory.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/JobActivityFactory.java index 8ee69533d..3911f6b73 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/JobActivityFactory.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/JobActivityFactory.java @@ -27,6 +27,6 @@ */ public interface JobActivityFactory { - public List createActivities(Job job); + List createActivities(Job job); } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/Location.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/Location.java index 51c74612c..d15bf4e4f 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/Location.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/Location.java @@ -49,8 +49,8 @@ public static Location newInstance(String id) { /** * Factory method (and shortcut) for creating location object just with location index * - * @param index - * @return + * @param index of location + * @return this builder */ public static Location newInstance(int index) { return Location.Builder.newInstance().setIndex(index).build(); @@ -92,7 +92,7 @@ public Builder setUserData(Object userData) { /** * Sets location index * - * @param index + * @param index location index * @return the builder */ public Builder setIndex(int index) { @@ -104,8 +104,8 @@ public Builder setIndex(int index) { /** * Sets coordinate of location * - * @param coordinate - * @return + * @param coordinate of location + * @return this Builder */ public Builder setCoordinate(Coordinate coordinate) { this.coordinate = coordinate; @@ -115,8 +115,8 @@ public Builder setCoordinate(Coordinate coordinate) { /** * Sets location id * - * @param id - * @return + * @param id id of location + * @return this Builder */ public Builder setId(String id) { this.id = id; @@ -126,8 +126,8 @@ public Builder setId(String id) { /** * Adds name, e.g. street name, to location * - * @param name - * @return + * @param name name of location + * @return this Builder */ public Builder setName(String name) { this.name = name; @@ -198,14 +198,10 @@ public String getName() { public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof Location)) return false; - Location location = (Location) o; - if (index != location.index) return false; if (coordinate != null ? !coordinate.equals(location.coordinate) : location.coordinate != null) return false; - if (id != null ? !id.equals(location.id) : location.id != null) return false; - - return true; + return id != null ? id.equals(location.id) : location.id == null; } @Override diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/Skills.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/Skills.java index ddc7df8e0..f52831fcc 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/Skills.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/Skills.java @@ -39,7 +39,7 @@ public static Builder newInstance() { return new Builder(); } - private Set skills = new HashSet(); + private Set skills = new HashSet<>(); /** * Adds skill. Skill is transformed into lowerCase. @@ -74,7 +74,7 @@ public Skills build() { } - private Set skills = new HashSet(); + private Set skills = new HashSet<>(); private Skills(Builder builder) { skills.addAll(builder.skills); @@ -90,16 +90,16 @@ public Set values() { } public String toString() { - String s = "["; + StringBuilder s = new StringBuilder("["); boolean first = true; for (String skill : values()) { if (first) { - s += skill; + s.append(skill); first = false; - } else s += ", " + skill; + } else s.append(", ").append(skill); } - s += "]"; - return s; + s.append("]"); + return s.toString(); } /** @@ -119,9 +119,7 @@ public boolean equals(Object o) { Skills skills1 = (Skills) o; - if (skills != null ? !skills.equals(skills1.skills) : skills1.skills != null) return false; - - return true; + return skills != null ? skills.equals(skills1.skills) : skills1.skills == null; } @Override diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java index fa6afae5b..328d9a464 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java @@ -157,14 +157,7 @@ public Map getLocationMap() { * @return locations */ public Locations getLocations() { - return new Locations() { - - @Override - public Coordinate getCoord(String id) { - return tentative_coordinates.get(id); - } - - }; + return id -> tentative_coordinates.get(id); } /** @@ -513,7 +506,6 @@ public Collection getAddedJobs() { } private Builder addService(Service service) { -// tentative_coordinates.put(service.getLocation().getId(), service.getLocation().getCoordinate()); addLocationToTentativeLocations(service); if (jobs.containsKey(service.getId())) { logger.warn("The service " + service + " has already been added to job list. This overrides existing job."); @@ -579,14 +571,7 @@ public enum FleetSize { private int nuActivities; - private final JobActivityFactory jobActivityFactory = new JobActivityFactory() { - - @Override - public List createActivities(Job job) { - return copyAndGetActivities(job); - } - - }; + private final JobActivityFactory jobActivityFactory = job -> copyAndGetActivities(job); private VehicleRoutingProblem(Builder builder) { this.jobs = builder.jobs; From 26a9ecfdfa296570343647484b8e85ac20f552b5 Mon Sep 17 00:00:00 2001 From: oblonski Date: Wed, 10 Apr 2019 22:12:59 +0200 Subject: [PATCH 028/191] simplify and remove redundant stuff --- .../jsprit/core/algorithm/box/Jsprit.java | 1 - .../vehicle/FiniteFleetManagerFactory.java | 10 ------- .../vehicle/InfiniteFleetManagerFactory.java | 2 +- .../problem/vehicle/InfiniteVehicles.java | 7 ++--- .../jsprit/core/problem/vehicle/Vehicle.java | 22 +++++++------- .../problem/vehicle/VehicleFleetManager.java | 24 +++++++-------- .../vehicle/VehicleFleetManagerFactory.java | 2 +- .../vehicle/VehicleFleetManagerImpl.java | 26 ++++++---------- .../core/problem/vehicle/VehicleImpl.java | 17 ++++------- .../core/problem/vehicle/VehicleType.java | 16 ++++------ .../core/problem/vehicle/VehicleTypeImpl.java | 30 +++++++------------ .../core/problem/vehicle/VehicleTypeKey.java | 6 ++-- 12 files changed, 61 insertions(+), 102 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java index 7225cf1fe..5aeb42249 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java @@ -406,7 +406,6 @@ private VehicleRoutingAlgorithm create(final VehicleRoutingProblem vrp) { vehicleFleetManager = new InfiniteFleetManagerFactory(vrp.getVehicles()).createFleetManager(); } else { FiniteFleetManagerFactory finiteFleetManagerFactory = new FiniteFleetManagerFactory(vrp.getVehicles()); - finiteFleetManagerFactory.setRandom(random); vehicleFleetManager = finiteFleetManagerFactory.createFleetManager(); } } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/FiniteFleetManagerFactory.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/FiniteFleetManagerFactory.java index c9c2fe73a..50ef18f69 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/FiniteFleetManagerFactory.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/FiniteFleetManagerFactory.java @@ -17,10 +17,7 @@ */ package com.graphhopper.jsprit.core.problem.vehicle; -import com.graphhopper.jsprit.core.util.RandomNumberGeneration; - import java.util.Collection; -import java.util.Random; /** * Factory that creates a finite fleetmanager. @@ -31,8 +28,6 @@ public class FiniteFleetManagerFactory implements VehicleFleetManagerFactory { private Collection vehicles; - private Random random = RandomNumberGeneration.getRandom(); - /** * Constucts the factory. * @@ -43,10 +38,6 @@ public FiniteFleetManagerFactory(Collection vehicles) { this.vehicles = vehicles; } - public void setRandom(Random random) { - this.random = random; - } - /** * Creates the finite fleetmanager. * @@ -58,7 +49,6 @@ public VehicleFleetManager createFleetManager() { if (vehicles == null) throw new IllegalStateException("vehicles is null. this must not be."); if (vehicles.isEmpty()) throw new IllegalStateException("vehicle-collection is empty. this must not be"); VehicleFleetManagerImpl vehicleFleetManager = new VehicleFleetManagerImpl(vehicles); - vehicleFleetManager.setRandom(random); vehicleFleetManager.init(); return vehicleFleetManager; } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/InfiniteFleetManagerFactory.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/InfiniteFleetManagerFactory.java index 46d4e9d6b..93269fbb7 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/InfiniteFleetManagerFactory.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/InfiniteFleetManagerFactory.java @@ -32,7 +32,7 @@ public class InfiniteFleetManagerFactory implements VehicleFleetManagerFactory { /** * Constructs the factory. * - * @param vehicles + * @param vehicles that are used to initialize the fleet manager */ public InfiniteFleetManagerFactory(Collection vehicles) { super(); diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/InfiniteVehicles.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/InfiniteVehicles.java index 5fbdb93c1..bd67b1736 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/InfiniteVehicles.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/InfiniteVehicles.java @@ -34,11 +34,10 @@ class InfiniteVehicles implements VehicleFleetManager { private static Logger logger = LoggerFactory.getLogger(InfiniteVehicles.class); - private Map types = new HashMap(); + private Map types = new HashMap<>(); -// private List sortedTypes = new ArrayList(); - public InfiniteVehicles(Collection vehicles) { + InfiniteVehicles(Collection vehicles) { extractTypes(vehicles); logger.debug("initialise " + this); } @@ -85,7 +84,7 @@ public Collection getAvailableVehicles() { @Override public Collection getAvailableVehicles(Vehicle withoutThisType) { - Collection vehicles = new ArrayList(); + Collection vehicles = new ArrayList<>(); VehicleTypeKey thisKey = new VehicleTypeKey(withoutThisType.getType().getTypeId(), withoutThisType.getStartLocation().getId(), withoutThisType.getEndLocation().getId(), withoutThisType.getEarliestDeparture(), withoutThisType.getLatestArrival(), withoutThisType.getSkills(), withoutThisType.isReturnToDepot()); for (VehicleTypeKey key : types.keySet()) { if (!key.equals(thisKey)) { diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/Vehicle.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/Vehicle.java index 6d430655c..927ace885 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/Vehicle.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/Vehicle.java @@ -35,50 +35,50 @@ public interface Vehicle extends HasId, HasIndex { * * @return earliest departure time */ - public abstract double getEarliestDeparture(); + double getEarliestDeparture(); /** * Returns the latest arrival time at this vehicle's end-location which should be the upper bound of this vehicle's arrival times at end-location. * * @return latest arrival time of this vehicle */ - public abstract double getLatestArrival(); + double getLatestArrival(); /** * Returns the {@link VehicleType} of this vehicle. * * @return {@link VehicleType} of this vehicle */ - public abstract VehicleType getType(); + VehicleType getType(); /** * Returns the id of this vehicle. * * @return id */ - public abstract String getId(); + String getId(); /** * Returns true if vehicle returns to depot, false otherwise. * * @return true if isReturnToDepot */ - public abstract boolean isReturnToDepot(); + boolean isReturnToDepot(); - public abstract Location getStartLocation(); + Location getStartLocation(); - public abstract Location getEndLocation(); + Location getEndLocation(); - public abstract VehicleTypeKey getVehicleTypeIdentifier(); + VehicleTypeKey getVehicleTypeIdentifier(); - public abstract Skills getSkills(); + Skills getSkills(); /** * @return User-specific domain data associated with the vehicle */ - public Object getUserData(); + Object getUserData(); - public abstract Break getBreak(); + Break getBreak(); // Switch to this as soon as we switct to Java 8: // default Object getUserData() { // return null; diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleFleetManager.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleFleetManager.java index b6861c9b2..ccbca7598 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleFleetManager.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleFleetManager.java @@ -27,31 +27,31 @@ public interface VehicleFleetManager { *

*

This indicates that this vehicle is being used. Thus it is not in list of available vehicles. * - * @param vehicle + * @param vehicle to lock */ - public abstract void lock(Vehicle vehicle); + void lock(Vehicle vehicle); /** * Unlocks vehicle. *

*

This indicates that this vehicle is not being used anymore. Thus it is in list of available vehicles. * - * @param vehicle + * @param vehicle to unlock */ - public abstract void unlock(Vehicle vehicle); + void unlock(Vehicle vehicle); /** * Returns true if locked. * - * @param vehicle - * @return + * @param vehicle vehicle to lock + * @return true if locked */ - public abstract boolean isLocked(Vehicle vehicle); + boolean isLocked(Vehicle vehicle); /** * Unlocks all locked vehicles. */ - public abstract void unlockAll(); + void unlockAll(); /** * Returns a collection of available vehicles. @@ -61,11 +61,11 @@ public interface VehicleFleetManager { * This is to avoid returning too many vehicles that are basically equal. *

Look at {@link VehicleTypeKey} to figure out whether two vehicles are equal or not. * - * @return + * @return collection of available vehicles */ - public abstract Collection getAvailableVehicles(); + Collection getAvailableVehicles(); - public Collection getAvailableVehicles(Vehicle withoutThisType); + Collection getAvailableVehicles(Vehicle withoutThisType); - public Vehicle getAvailableVehicle(VehicleTypeKey vehicleTypeIdentifier); + Vehicle getAvailableVehicle(VehicleTypeKey vehicleTypeIdentifier); } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleFleetManagerFactory.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleFleetManagerFactory.java index f5e4525ea..7bfe691f2 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleFleetManagerFactory.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleFleetManagerFactory.java @@ -19,6 +19,6 @@ public interface VehicleFleetManagerFactory { - public VehicleFleetManager createFleetManager(); + VehicleFleetManager createFleetManager(); } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleFleetManagerImpl.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleFleetManagerImpl.java index 5741594aa..34c91b819 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleFleetManagerImpl.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleFleetManagerImpl.java @@ -23,7 +23,6 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; -import java.util.Random; class VehicleFleetManagerImpl implements VehicleFleetManager { @@ -40,7 +39,7 @@ static class TypeContainer { TypeContainer() { super(); - vehicleList = new ArrayList(); + vehicleList = new ArrayList<>(); } void add(Vehicle vehicle) { @@ -56,8 +55,7 @@ void remove(Vehicle vehicle) { Vehicle getVehicle() { if(index >= vehicleList.size()) index = 0; - Vehicle vehicle = vehicleList.get(index); - return vehicle; + return vehicleList.get(index); } void incIndex(){ @@ -80,8 +78,6 @@ boolean isEmpty() { private Vehicle[] vehicleArr; - private Random random; - VehicleFleetManagerImpl(Collection vehicles) { super(); this.vehicles = vehicles; @@ -90,10 +86,6 @@ boolean isEmpty() { vehicleArr = new Vehicle[arrSize]; } - void setRandom(Random random) { - this.random = random; - } - void init(){ initializeVehicleTypes(); logger.debug("initialise {}",this); @@ -142,10 +134,10 @@ private void removeVehicle(Vehicle v) { */ @Override public Collection getAvailableVehicles() { - List vehicles = new ArrayList(); - for(int i=0;i< vehicleTypes.length;i++){ - if(!vehicleTypes[i].isEmpty()){ - vehicles.add(vehicleTypes[i].getVehicle()); + List vehicles = new ArrayList<>(); + for (TypeContainer vehicleType : vehicleTypes) { + if (!vehicleType.isEmpty()) { + vehicles.add(vehicleType.getVehicle()); } } return vehicles; @@ -153,7 +145,7 @@ public Collection getAvailableVehicles() { @Override public Collection getAvailableVehicles(Vehicle withoutThisType) { - List vehicles = new ArrayList(); + List vehicles = new ArrayList<>(); for(int i=0;i< vehicleTypes.length;i++){ if(!vehicleTypes[i].isEmpty() && i != withoutThisType.getVehicleTypeIdentifier().getIndex()){ vehicles.add(vehicleTypes[i].getVehicle()); @@ -218,8 +210,8 @@ public void unlockAll() { unlock(vehicleArr[i]); } } - for(int i=0;i *

by default it is 0. * - * @param fixedCost + * @param fixedCost fixed cost of vehicle type * @return this builder * @throws IllegalArgumentException if fixedCost is smaller than zero */ @@ -208,7 +203,7 @@ public VehicleTypeImpl.Builder setFixedCost(double fixedCost) { *

*

by default it is 1.0 * - * @param perDistance + * @param perDistance cost per distance * @return this builder * @throws IllegalArgumentException if perDistance is smaller than zero */ @@ -224,7 +219,7 @@ public VehicleTypeImpl.Builder setCostPerDistance(double perDistance) { *

*

by default it is 0.0 * - * @param perTime + * @param perTime cost per time * @return this builder * @throws IllegalArgumentException if costPerTime is smaller than zero * @deprecated use .setCostPerTransportTime(..) instead @@ -241,7 +236,7 @@ public VehicleTypeImpl.Builder setCostPerTime(double perTime) { *

*

by default it is 0.0 * - * @param perTime + * @param perTime cost per time * @return this builder * @throws IllegalArgumentException if costPerTime is smaller than zero */ @@ -256,7 +251,7 @@ public VehicleTypeImpl.Builder setCostPerTransportTime(double perTime) { *

*

by default it is 0.0 * - * @param perWaitingTime + * @param perWaitingTime cost per waiting time * @return this builder * @throws IllegalArgumentException if costPerTime is smaller than zero */ @@ -286,8 +281,8 @@ public VehicleTypeImpl build() { /** * Adds a capacity dimension. * - * @param dimIndex - * @param dimVal + * @param dimIndex dimension index + * @param dimVal dimension value * @return the builder * @throws IllegalArgumentException if dimVal < 0 * @throws IllegalArgumentException if capacity dimension is already set @@ -310,7 +305,7 @@ public Builder addCapacityDimension(int dimIndex, int dimVal) { * your dimensions with addCapacityDimension(int dimIndex, int dimVal) or set the already built dimensions with * this method. * - * @param capacity + * @param capacity capacity of vehicle type * @return this builder * @throws IllegalArgumentException if capacityDimension has already been added */ @@ -358,8 +353,6 @@ public int hashCode() { private final String typeId; - private final int capacity; - private final String profile; private final VehicleTypeImpl.VehicleCostParams vehicleCostParams; @@ -373,12 +366,11 @@ public int hashCode() { /** * priv constructor constructing vehicle-type * - * @param builder + * @param builder vehicle type builder */ private VehicleTypeImpl(VehicleTypeImpl.Builder builder) { this.userData = builder.userData; typeId = builder.id; - capacity = builder.capacity; maxVelocity = builder.maxVelo; vehicleCostParams = new VehicleCostParams(builder.fixedCost, builder.perTime, builder.perDistance, builder.perWaitingTime, builder.perServiceTime); capacityDimensions = builder.capacityDimensions; diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleTypeKey.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleTypeKey.java index 4f8bdc44b..807d802b2 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleTypeKey.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleTypeKey.java @@ -84,10 +84,8 @@ public int hashCode() { @Override public String toString() { - StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append(type).append("_").append(startLocationId).append("_").append(endLocationId) - .append("_").append(Double.toString(earliestStart)).append("_").append(Double.toString(latestEnd)); - return stringBuilder.toString(); + return type + "_" + startLocationId + "_" + endLocationId + + "_" + Double.toString(earliestStart) + "_" + Double.toString(latestEnd); } From 31cd22ece096e2ea91f8a2edcd1d4e7c90a62b35 Mon Sep 17 00:00:00 2001 From: oblonski Date: Wed, 10 Apr 2019 22:30:39 +0200 Subject: [PATCH 029/191] simplify and remove redundant stuff --- .../jsprit/core/problem/vehicle/VehicleTypeImplTest.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleTypeImplTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleTypeImplTest.java index bd1454794..168797dde 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleTypeImplTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleTypeImplTest.java @@ -136,11 +136,6 @@ public void whenPerTimeCostsSmallerThanZero_itShouldThrowException() { VehicleTypeImpl type = VehicleTypeImpl.Builder.newInstance("type").setCostPerTime(-10).build(); } - @Test - public void whenSettingPerTimeCosts_itShouldBeSetCorrectly() { - VehicleTypeImpl type = VehicleTypeImpl.Builder.newInstance("type").setCostPerTime(10).build(); - assertEquals(10.0, type.getVehicleCostParams().perTimeUnit, 0.0); - } @Test public void whenHavingTwoTypesWithTheSameId_theyShouldBeEqual() { From ce16a1aacff89754414fc0ef42448290d3fe7214 Mon Sep 17 00:00:00 2001 From: oblonski Date: Wed, 10 Apr 2019 22:31:24 +0200 Subject: [PATCH 030/191] simplify and remove redundant stuff --- .travis.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index dbca6aee7..373829e3f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,7 +3,6 @@ sudo: false matrix: fast_finish: true include: - - jdk: openjdk7 - jdk: oraclejdk8 # Java 9 needs to be manually installed/upgraded # see: https://github.com/travis-ci/travis-ci/issues/2968#issuecomment-149164058 @@ -52,7 +51,7 @@ script: notifications: email: - $EMAIL - + cache: directories: - $HOME/.m2 From 90a8edaa6d94e7090e5b7204c4ad1dbff92704c9 Mon Sep 17 00:00:00 2001 From: Michal Maciejewski Date: Mon, 20 Aug 2018 23:30:23 +0200 Subject: [PATCH 031/191] add storing and indexing of non-job activities --- .../jsprit/core/problem/VehicleRoutingProblem.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java index 328d9a464..b13b10174 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java @@ -414,6 +414,16 @@ public Builder setActivityCosts(VehicleRoutingActivityCosts activityCosts) { return this; } + public final List nonJobActivities = new ArrayList<>(); + + public void addNonJobActivities(Collection nonJobActivities) { + for (AbstractActivity act : nonJobActivities) { + act.setIndex(activityIndexCounter); + incActivityIndexCounter(); + this.nonJobActivities.add(act); + } + } + /** * Builds the {@link VehicleRoutingProblem}. *

From d4106fb6d05b676f26c47eba74a978a145fb5efd Mon Sep 17 00:00:00 2001 From: Michal Maciejewski Date: Mon, 20 Aug 2018 23:31:38 +0200 Subject: [PATCH 032/191] prevent casting of non-job activities to JobActivity --- .../analysis/toolbox/GraphStreamViewer.java | 44 ++++++++++--------- .../jsprit/core/algorithm/ruin/RuinWorst.java | 4 ++ 2 files changed, 27 insertions(+), 21 deletions(-) diff --git a/jsprit-analysis/src/main/java/com/graphhopper/jsprit/analysis/toolbox/GraphStreamViewer.java b/jsprit-analysis/src/main/java/com/graphhopper/jsprit/analysis/toolbox/GraphStreamViewer.java index e04097f3c..22d38ce9d 100644 --- a/jsprit-analysis/src/main/java/com/graphhopper/jsprit/analysis/toolbox/GraphStreamViewer.java +++ b/jsprit-analysis/src/main/java/com/graphhopper/jsprit/analysis/toolbox/GraphStreamViewer.java @@ -572,28 +572,30 @@ private void renderRoute(Graph g, VehicleRoute route, int routeId, long renderDe n.addAttribute("ui.label", "start"); } for (TourActivity act : route.getActivities()) { - Job job = ((JobActivity) act).getJob(); - String currIdentifier = makeId(job.getId(), act.getLocation().getId()); - if (label.equals(Label.ACTIVITY)) { - Node actNode = g.getNode(currIdentifier); - actNode.addAttribute("ui.label", act.getName()); - } else if (label.equals(Label.JOB_NAME)) { - Node actNode = g.getNode(currIdentifier); - actNode.addAttribute("ui.label", job.getName()); - } else if (label.equals(Label.ARRIVAL_TIME)) { - Node actNode = g.getNode(currIdentifier); - actNode.addAttribute("ui.label", Time.parseSecondsToTime(act.getArrTime())); - } else if (label.equals(Label.DEPARTURE_TIME)) { - Node actNode = g.getNode(currIdentifier); - actNode.addAttribute("ui.label", Time.parseSecondsToTime(act.getEndTime())); + if (act instanceof JobActivity) { + Job job = ((JobActivity) act).getJob(); + String currIdentifier = makeId(job.getId(), act.getLocation().getId()); + if (label.equals(Label.ACTIVITY)) { + Node actNode = g.getNode(currIdentifier); + actNode.addAttribute("ui.label", act.getName()); + } else if (label.equals(Label.JOB_NAME)) { + Node actNode = g.getNode(currIdentifier); + actNode.addAttribute("ui.label", job.getName()); + } else if (label.equals(Label.ARRIVAL_TIME)) { + Node actNode = g.getNode(currIdentifier); + actNode.addAttribute("ui.label", Time.parseSecondsToTime(act.getArrTime())); + } else if (label.equals(Label.DEPARTURE_TIME)) { + Node actNode = g.getNode(currIdentifier); + actNode.addAttribute("ui.label", Time.parseSecondsToTime(act.getEndTime())); + } + g.addEdge(makeEdgeId(routeId, vehicle_edgeId), prevIdentifier, currIdentifier, true); + if (act instanceof PickupActivity) g.getNode(currIdentifier).addAttribute("ui.class", "pickupInRoute"); + else if (act instanceof DeliveryActivity) + g.getNode(currIdentifier).addAttribute("ui.class", "deliveryInRoute"); + prevIdentifier = currIdentifier; + vehicle_edgeId++; + sleep(renderDelay_in_ms); } - g.addEdge(makeEdgeId(routeId, vehicle_edgeId), prevIdentifier, currIdentifier, true); - if (act instanceof PickupActivity) g.getNode(currIdentifier).addAttribute("ui.class", "pickupInRoute"); - else if (act instanceof DeliveryActivity) - g.getNode(currIdentifier).addAttribute("ui.class", "deliveryInRoute"); - prevIdentifier = currIdentifier; - vehicle_edgeId++; - sleep(renderDelay_in_ms); } if (route.getVehicle().isReturnToDepot()) { String lastIdentifier = makeId(route.getVehicle().getId(), route.getVehicle().getEndLocation().getId()); diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinWorst.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinWorst.java index 620d1feda..a2cde83c6 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinWorst.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinWorst.java @@ -104,6 +104,10 @@ private Job getWorst(Collection copied) { TourActivity actBefore = route.getStart(); TourActivity actToEval = null; for (TourActivity act : route.getActivities()) { + if (!(act instanceof TourActivity.JobActivity)) { + continue; + } + if (actToEval == null) { actToEval = act; continue; From cf179b2f07685860b456041920cb10cf0bfd2625 Mon Sep 17 00:00:00 2001 From: Michal Maciejewski Date: Wed, 5 Sep 2018 13:49:35 +0200 Subject: [PATCH 033/191] change VRP.Builder.addNonJobActivities() return type void -> Builder --- .../jsprit/core/problem/VehicleRoutingProblem.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java index b13b10174..c688ce9c7 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java @@ -414,14 +414,15 @@ public Builder setActivityCosts(VehicleRoutingActivityCosts activityCosts) { return this; } - public final List nonJobActivities = new ArrayList<>(); + private final List nonJobActivities = new ArrayList<>(); - public void addNonJobActivities(Collection nonJobActivities) { + public Builder addNonJobActivities(Collection nonJobActivities) { for (AbstractActivity act : nonJobActivities) { act.setIndex(activityIndexCounter); incActivityIndexCounter(); this.nonJobActivities.add(act); } + return this; } /** From 3579dca52d08d08253626c3cf55ff699c41e6b49 Mon Sep 17 00:00:00 2001 From: Michal Maciejewski Date: Sat, 10 Nov 2018 12:26:24 +0100 Subject: [PATCH 034/191] remove redundant unmodifiableList() wrapping --- .../jsprit/core/problem/solution/route/VehicleRoute.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/VehicleRoute.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/VehicleRoute.java index 40fe59075..ee14a75f5 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/VehicleRoute.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/VehicleRoute.java @@ -367,7 +367,7 @@ private VehicleRoute(Builder builder) { * @return list of tourActivities */ public List getActivities() { - return Collections.unmodifiableList(tourActivities.getActivities()); + return tourActivities.getActivities(); } /** From 3c1e8bc9d18a644043bb7727c1afa8318ef5ba3b Mon Sep 17 00:00:00 2001 From: Michal Maciejewski Date: Sat, 10 Nov 2018 12:38:39 +0100 Subject: [PATCH 035/191] replace (incorrect) iFacts.getNewRouteDepTime() with prevActDepTime --- .../jsprit/core/problem/constraint/MaxDistanceConstraint.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/constraint/MaxDistanceConstraint.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/constraint/MaxDistanceConstraint.java index bb88358b1..bf2d8800a 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/constraint/MaxDistanceConstraint.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/constraint/MaxDistanceConstraint.java @@ -78,8 +78,8 @@ public ConstraintsStatus fulfilled(JobInsertionContext iFacts, TourActivity prev double maxDistance = getMaxDistance(iFacts.getNewVehicle()); if (currentDistance > maxDistance) return ConstraintsStatus.NOT_FULFILLED_BREAK; - double distancePrevAct2NewAct = distanceCalculator.getDistance(prevAct.getLocation(), newAct.getLocation(), iFacts.getNewDepTime(), iFacts.getNewVehicle()); - double distanceNewAct2nextAct = distanceCalculator.getDistance(newAct.getLocation(), nextAct.getLocation(), iFacts.getNewDepTime(), iFacts.getNewVehicle()); + double distancePrevAct2NewAct = distanceCalculator.getDistance(prevAct.getLocation(), newAct.getLocation(), prevActDepTime, iFacts.getNewVehicle()); + double distanceNewAct2nextAct = distanceCalculator.getDistance(newAct.getLocation(), nextAct.getLocation(), prevActDepTime, iFacts.getNewVehicle()); double distancePrevAct2NextAct = distanceCalculator.getDistance(prevAct.getLocation(), nextAct.getLocation(), prevActDepTime, iFacts.getNewVehicle()); if (prevAct instanceof Start && nextAct instanceof End) distancePrevAct2NextAct = 0; if (nextAct instanceof End && !iFacts.getNewVehicle().isReturnToDepot()) { From a87881ee5909d952c1b2030ee7a94368945a4c88 Mon Sep 17 00:00:00 2001 From: Michal Maciejewski Date: Tue, 13 Nov 2018 13:14:44 +0100 Subject: [PATCH 036/191] skip routes without JobActivities in RuinWorst --- .../com/graphhopper/jsprit/core/algorithm/ruin/RuinWorst.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinWorst.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinWorst.java index a2cde83c6..10c5cc422 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinWorst.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinWorst.java @@ -123,6 +123,9 @@ private Job getWorst(Collection copied) { actBefore = actToEval; actToEval = act; } + if (actToEval == null) { + continue; + } double savings = savings(route, actBefore, actToEval, route.getEnd()); Job job = ((TourActivity.JobActivity) actToEval).getJob(); if (!savingsMap.containsKey(job)) { From 14993b3ca1286b0c9e03ff184149b7b15df049e1 Mon Sep 17 00:00:00 2001 From: Michal Maciejewski Date: Tue, 29 Jan 2019 14:49:43 +0100 Subject: [PATCH 037/191] update javadoc - lowest job priority has changed from 3 to 10 --- .../com/graphhopper/jsprit/core/problem/job/Service.java | 4 ++-- .../com/graphhopper/jsprit/core/problem/job/Shipment.java | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Service.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Service.java index 99608c233..f9be6a4c7 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Service.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Service.java @@ -398,9 +398,9 @@ public String getName() { } /** - * Get priority of service. Only 1 = high priority, 2 = medium and 3 = low are allowed. + * Get priority of service. Only 1 (high) to 10 (low) are allowed. *

- * Default is 2 = medium. + * Default is 2. * * @return priority */ diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Shipment.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Shipment.java index 8d356a020..0af407c2b 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Shipment.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Shipment.java @@ -318,7 +318,7 @@ public Builder addAllPickupTimeWindows(Collection timeWindow) { /** * Set priority to shipment. Only 1 (high) to 10 (low) are allowed. *

- * Default is 2 = medium. + * Default is 2. * * @param priority * @return builder @@ -505,9 +505,9 @@ public String getName() { } /** - * Get priority of shipment. Only 1 = high priority, 2 = medium and 3 = low are allowed. + * Get priority of shipment. Only 1 (high) to 10 (low) are allowed. *

- * Default is 2 = medium. + * Default is 2. * * @return priority */ From 89c1562b605baaae12aa6353de04cee79620a725 Mon Sep 17 00:00:00 2001 From: Michal Maciejewski Date: Wed, 3 Apr 2019 19:36:35 +0200 Subject: [PATCH 038/191] make plot background white (grey conflicted with grey series) --- .../java/com/graphhopper/jsprit/analysis/toolbox/Plotter.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/jsprit-analysis/src/main/java/com/graphhopper/jsprit/analysis/toolbox/Plotter.java b/jsprit-analysis/src/main/java/com/graphhopper/jsprit/analysis/toolbox/Plotter.java index 2124fb02e..c519e759a 100644 --- a/jsprit-analysis/src/main/java/com/graphhopper/jsprit/analysis/toolbox/Plotter.java +++ b/jsprit-analysis/src/main/java/com/graphhopper/jsprit/analysis/toolbox/Plotter.java @@ -302,6 +302,10 @@ private BufferedImage plot(VehicleRoutingProblem vrp, final Collection Date: Tue, 7 May 2019 13:58:41 +0200 Subject: [PATCH 039/191] clean up VehicleRoutingAlgorithm.addInitialSolution() --- .../algorithm/VehicleRoutingAlgorithm.java | 31 ++++++++++++------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/VehicleRoutingAlgorithm.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/VehicleRoutingAlgorithm.java index 1155955bd..f0c7a3839 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/VehicleRoutingAlgorithm.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/VehicleRoutingAlgorithm.java @@ -135,23 +135,28 @@ public VehicleRoutingAlgorithm(VehicleRoutingProblem problem, SearchStrategyMana this.objectiveFunction = objectiveFunction; } - /** - * Adds solution to the collection of initial solutions. - * - * @param solution the solution to be added - */ - public void addInitialSolution(VehicleRoutingProblemSolution solution) { + /** + * Adds solution to the collection of initial solutions. + * + * This method may lead to errors if tour activities in the solution are different to the + * ones in the VRP (including differences in indexing) + * + * @param solution the solution to be added + */ + public void addInitialSolution(VehicleRoutingProblemSolution solution) { // We will make changes so let's make a copy solution = VehicleRoutingProblemSolution.copyOf(solution); - verify(solution); + verifyAndAdaptSolution(solution); initialSolutions.add(solution); } - private void verify(VehicleRoutingProblemSolution solution) { - Set allJobs = new HashSet(problem.getJobs().values()); - allJobs.removeAll(solution.getUnassignedJobs()); + //this method may lead to errors if tour activities in the solution are different to the ones in the VRP + //(including differences in indexing) + private void verifyAndAdaptSolution(VehicleRoutingProblemSolution solution) { + Set jobsNotInSolution = new HashSet(problem.getJobs().values()); + jobsNotInSolution.removeAll(solution.getUnassignedJobs()); for (VehicleRoute route : solution.getRoutes()) { - allJobs.removeAll(route.getTourActivities().getJobs()); + jobsNotInSolution.removeAll(route.getTourActivities().getJobs()); if (route.getVehicle().getIndex() == 0) throw new IllegalStateException("vehicle used in initial solution has no index. probably a vehicle is used that has not been added to the " + " the VehicleRoutingProblem. only use vehicles that have already been added to the problem."); @@ -164,7 +169,9 @@ private void verify(VehicleRoutingProblemSolution solution) { } } - solution.getUnassignedJobs().addAll(allJobs); + //if solution is partial (not all jobs are considered), add these jobs to solution.unassignedJobs + solution.getUnassignedJobs().addAll(jobsNotInSolution); + //update the cost of solution (regardless if partial or not) solution.setCost(getObjectiveFunction().getCosts(solution)); // if (nuJobs != problem.getJobs().values().size()) { From 787a6835fac4ebfb60ac227d9c7cb6d16bf9ed3b Mon Sep 17 00:00:00 2001 From: oblonski Date: Wed, 19 Jun 2019 10:04:14 +0200 Subject: [PATCH 040/191] clean up --- .../RegretInsertionConcurrentFast.java | 28 ++++++------------- 1 file changed, 9 insertions(+), 19 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertionConcurrentFast.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertionConcurrentFast.java index be4f5d118..6dbfd14fb 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertionConcurrentFast.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertionConcurrentFast.java @@ -93,7 +93,7 @@ public void setSwitchAllowed(boolean switchAllowed) { } private Set getInitialVehicleIds(VehicleRoutingProblem vehicleRoutingProblem) { - Set ids = new HashSet(); + Set ids = new HashSet<>(); for(VehicleRoute r : vehicleRoutingProblem.getInitialVehicleRoutes()){ ids.add(r.getVehicle().getId()); } @@ -114,7 +114,7 @@ public void setDependencyTypes(DependencyType[] dependencyTypes){ */ @Override public Collection insertUnassignedJobs(Collection routes, Collection unassignedJobs) { - List badJobs = new ArrayList(unassignedJobs.size()); + List badJobs = new ArrayList<>(unassignedJobs.size()); Iterator jobIterator = unassignedJobs.iterator(); while (jobIterator.hasNext()){ @@ -136,12 +136,12 @@ public Collection insertUnassignedJobs(Collection routes, Col } } - List jobs = new ArrayList(unassignedJobs); + List jobs = new ArrayList<>(unassignedJobs); TreeSet[] priorityQueues = new TreeSet[vrp.getJobs().values().size() + 2]; VehicleRoute lastModified = null; boolean firstRun = true; int updateRound = 0; - Map updates = new HashMap(); + Map updates = new HashMap<>(); while (!jobs.isEmpty()) { List unassignedJobList = new ArrayList<>(jobs); List badJobList = new ArrayList<>(); @@ -170,7 +170,7 @@ public Collection insertUnassignedJobs(Collection routes, Col } private void updateInsertionData(final TreeSet[] priorityQueues, final Collection routes, List unassignedJobList, final int updateRound, final boolean firstRun, final VehicleRoute lastModified, Map updates) { - List> tasks = new ArrayList>(); + List> tasks = new ArrayList<>(); boolean updatedAllRoutes = false; for (final Job unassignedJob : unassignedJobList) { if(priorityQueues[unassignedJob.getIndex()] == null){ @@ -178,7 +178,7 @@ private void updateInsertionData(final TreeSet[] priorit } if(firstRun) { updatedAllRoutes = true; - makeCallables(tasks, updatedAllRoutes, priorityQueues[unassignedJob.getIndex()], updateRound, unassignedJob, routes, lastModified); + makeCallables(tasks, true, priorityQueues[unassignedJob.getIndex()], updateRound, unassignedJob, routes, lastModified); } else{ if(dependencyTypes == null || dependencyTypes[unassignedJob.getIndex()] == null){ @@ -188,7 +188,7 @@ private void updateInsertionData(final TreeSet[] priorit DependencyType dependencyType = dependencyTypes[unassignedJob.getIndex()]; if (dependencyType.equals(DependencyType.INTER_ROUTE) || dependencyType.equals(DependencyType.INTRA_ROUTE)) { updatedAllRoutes = true; - makeCallables(tasks, updatedAllRoutes, priorityQueues[unassignedJob.getIndex()], updateRound, unassignedJob, routes, lastModified); + makeCallables(tasks, true, priorityQueues[unassignedJob.getIndex()], updateRound, unassignedJob, routes, lastModified); } else { makeCallables(tasks, updatedAllRoutes, priorityQueues[unassignedJob.getIndex()], updateRound, unassignedJob, routes, lastModified); } @@ -211,20 +211,10 @@ private void updateInsertionData(final TreeSet[] priorit private void makeCallables(List> tasks, boolean updateAll, final TreeSet priorityQueue, final int updateRound, final Job unassignedJob, final Collection routes, final VehicleRoute lastModified) { if(updateAll) { - tasks.add(new Callable() { - @Override - public Boolean call() throws Exception { - return InsertionDataUpdater.update(switchAllowed, initialVehicleIds, fleetManager, insertionCostsCalculator, priorityQueue, updateRound, unassignedJob, routes); - } - }); + tasks.add(() -> InsertionDataUpdater.update(switchAllowed, initialVehicleIds, fleetManager, insertionCostsCalculator, priorityQueue, updateRound, unassignedJob, routes)); } else { - tasks.add(new Callable() { - @Override - public Boolean call() throws Exception { - return InsertionDataUpdater.update(switchAllowed, initialVehicleIds, fleetManager, insertionCostsCalculator, priorityQueue, updateRound, unassignedJob, Arrays.asList(lastModified)); - } - }); + tasks.add(() -> InsertionDataUpdater.update(switchAllowed, initialVehicleIds, fleetManager, insertionCostsCalculator, priorityQueue, updateRound, unassignedJob, Arrays.asList(lastModified))); } } From 267775d25282c60d2ee3a80b36b0687e4be4d9f6 Mon Sep 17 00:00:00 2001 From: oblonski Date: Wed, 19 Jun 2019 10:24:47 +0200 Subject: [PATCH 041/191] clean up --- .../recreate/InsertionDataUpdater.java | 11 ++++------- .../recreate/RegretInsertionConcurrent.java | 18 +++++++----------- 2 files changed, 11 insertions(+), 18 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/InsertionDataUpdater.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/InsertionDataUpdater.java index 8d019e2c2..c065084d7 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/InsertionDataUpdater.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/InsertionDataUpdater.java @@ -62,12 +62,9 @@ static VehicleRoute findRoute(Collection routes, Job job) { } static Comparator getComparator(){ - return new Comparator() { - @Override - public int compare(VersionedInsertionData o1, VersionedInsertionData o2) { - if(o1.getiData().getInsertionCost() < o2.getiData().getInsertionCost()) return -1; - return 1; - } + return (o1, o2) -> { + if (o1.getiData().getInsertionCost() < o2.getiData().getInsertionCost()) return -1; + return 1; }; } @@ -161,7 +158,7 @@ else if(scoredJob.getScore() > bestScoredJob.getScore()){ return bestScoredJob; } - static double score(Job unassignedJob, InsertionData best, InsertionData secondBest, ScoringFunction scoringFunction) { + private static double score(Job unassignedJob, InsertionData best, InsertionData secondBest, ScoringFunction scoringFunction) { return Scorer.score(unassignedJob,best,secondBest,scoringFunction); } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertionConcurrent.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertionConcurrent.java index b71ac5ab7..e4d033768 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertionConcurrent.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertionConcurrent.java @@ -29,7 +29,10 @@ import java.util.Collection; import java.util.Iterator; import java.util.List; -import java.util.concurrent.*; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorCompletionService; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Future; /** * Insertion based on regret approach. @@ -68,7 +71,7 @@ public RegretInsertionConcurrent(JobInsertionCostsCalculator jobInsertionCalcula this.scoringFunction = new DefaultScorer(vehicleRoutingProblem); this.insertionCostsCalculator = jobInsertionCalculator; this.vrp = vehicleRoutingProblem; - completionService = new ExecutorCompletionService(executorService); + completionService = new ExecutorCompletionService<>(executorService); logger.debug("initialise " + this); } @@ -87,7 +90,7 @@ public String toString() { */ @Override public Collection insertUnassignedJobs(Collection routes, Collection unassignedJobs) { - List badJobs = new ArrayList(unassignedJobs.size()); + List badJobs = new ArrayList<>(unassignedJobs.size()); Iterator jobIterator = unassignedJobs.iterator(); while (jobIterator.hasNext()){ @@ -135,14 +138,7 @@ private ScoredJob nextJob(final Collection routes, List unass ScoredJob bestScoredJob = null; for (final Job unassignedJob : unassignedJobList) { - completionService.submit(new Callable() { - - @Override - public ScoredJob call() throws Exception { - return RegretInsertion.getScoredJob(routes, unassignedJob, insertionCostsCalculator, scoringFunction); - } - - }); + completionService.submit(() -> RegretInsertion.getScoredJob(routes, unassignedJob, insertionCostsCalculator, scoringFunction)); } try { From 8ba60c061bb72c330d09b566b93e2318a89ce655 Mon Sep 17 00:00:00 2001 From: oblonski Date: Mon, 24 Jun 2019 13:16:46 +0200 Subject: [PATCH 042/191] reduce calling getSimpleName - related to #429 --- .../recreate/AbstractInsertionCalculator.java | 15 ++++++++------- .../recreate/ServiceInsertionCalculator.java | 8 ++++++-- .../recreate/ShipmentInsertionCalculator.java | 8 ++++++-- .../recreate/ShipmentInsertionCalculatorFlex.java | 8 ++++++-- 4 files changed, 26 insertions(+), 13 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/AbstractInsertionCalculator.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/AbstractInsertionCalculator.java index 6f3d54a44..fc82d6ad9 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/AbstractInsertionCalculator.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/AbstractInsertionCalculator.java @@ -21,6 +21,7 @@ import com.graphhopper.jsprit.core.problem.constraint.ConstraintManager; import com.graphhopper.jsprit.core.problem.constraint.HardActivityConstraint; import com.graphhopper.jsprit.core.problem.constraint.HardActivityConstraint.ConstraintsStatus; +import com.graphhopper.jsprit.core.problem.constraint.HardConstraint; import com.graphhopper.jsprit.core.problem.constraint.HardRouteConstraint; import com.graphhopper.jsprit.core.problem.misc.JobInsertionContext; import com.graphhopper.jsprit.core.problem.solution.route.activity.TourActivity; @@ -45,17 +46,17 @@ InsertionData checkRouteContraints(JobInsertionContext insertionContext, Constra return null; } - ConstraintsStatus fulfilled(JobInsertionContext iFacts, TourActivity prevAct, TourActivity newAct, TourActivity nextAct, double prevActDepTime, Collection failedActivityConstraints, ConstraintManager constraintManager) { + ConstraintsStatus fulfilled(JobInsertionContext iFacts, TourActivity prevAct, TourActivity newAct, TourActivity nextAct, double prevActDepTime, Collection failedActivityConstraints, ConstraintManager constraintManager) { ConstraintsStatus notFulfilled = null; - List failed = new ArrayList<>(); + List failed = new ArrayList<>(); for (HardActivityConstraint c : constraintManager.getCriticalHardActivityConstraints()) { ConstraintsStatus status = c.fulfilled(iFacts, prevAct, newAct, nextAct, prevActDepTime); if (status.equals(ConstraintsStatus.NOT_FULFILLED_BREAK)) { - failedActivityConstraints.add(c.getClass().getSimpleName()); + failedActivityConstraints.add(c); return status; } else { if (status.equals(ConstraintsStatus.NOT_FULFILLED)) { - failed.add(c.getClass().getSimpleName()); + failed.add(c); notFulfilled = status; } } @@ -68,11 +69,11 @@ ConstraintsStatus fulfilled(JobInsertionContext iFacts, TourActivity prevAct, To for (HardActivityConstraint c : constraintManager.getHighPrioHardActivityConstraints()) { ConstraintsStatus status = c.fulfilled(iFacts, prevAct, newAct, nextAct, prevActDepTime); if (status.equals(ConstraintsStatus.NOT_FULFILLED_BREAK)) { - failedActivityConstraints.add(c.getClass().getSimpleName()); + failedActivityConstraints.add(c); return status; } else { if (status.equals(ConstraintsStatus.NOT_FULFILLED)) { - failed.add(c.getClass().getSimpleName()); + failed.add(c); notFulfilled = status; } } @@ -85,7 +86,7 @@ ConstraintsStatus fulfilled(JobInsertionContext iFacts, TourActivity prevAct, To for (HardActivityConstraint constraint : constraintManager.getLowPrioHardActivityConstraints()) { ConstraintsStatus status = constraint.fulfilled(iFacts, prevAct, newAct, nextAct, prevActDepTime); if (status.equals(ConstraintsStatus.NOT_FULFILLED_BREAK) || status.equals(ConstraintsStatus.NOT_FULFILLED)) { - failedActivityConstraints.add(constraint.getClass().getSimpleName()); + failedActivityConstraints.add(constraint); return status; } } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ServiceInsertionCalculator.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ServiceInsertionCalculator.java index 6007decb6..36b7ba854 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ServiceInsertionCalculator.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ServiceInsertionCalculator.java @@ -20,6 +20,7 @@ import com.graphhopper.jsprit.core.problem.JobActivityFactory; import com.graphhopper.jsprit.core.problem.constraint.ConstraintManager; import com.graphhopper.jsprit.core.problem.constraint.HardActivityConstraint.ConstraintsStatus; +import com.graphhopper.jsprit.core.problem.constraint.HardConstraint; import com.graphhopper.jsprit.core.problem.constraint.SoftActivityConstraint; import com.graphhopper.jsprit.core.problem.constraint.SoftRouteConstraint; import com.graphhopper.jsprit.core.problem.cost.VehicleRoutingActivityCosts; @@ -108,7 +109,7 @@ public InsertionData getInsertionData(final VehicleRoute currentRoute, final Job InsertionData noInsertion = checkRouteContraints(insertionContext, constraintManager); if (noInsertion != null) return noInsertion; - Collection failedActivityConstraints = new ArrayList<>(); + Collection failedActivityConstraints = new ArrayList<>(); /* check soft constraints at route level @@ -167,7 +168,10 @@ public InsertionData getInsertionData(final VehicleRoute currentRoute, final Job } if(insertionIndex == InsertionData.NO_INDEX) { InsertionData emptyInsertionData = new InsertionData.NoInsertionFound(); - emptyInsertionData.getFailedConstraintNames().addAll(failedActivityConstraints); + for (HardConstraint c : failedActivityConstraints) { + emptyInsertionData.addFailedConstrainName(c.getClass().getSimpleName()); + } +// emptyInsertionData.getFailedConstraintNames().addAll(failedActivityConstraints); return emptyInsertionData; } InsertionData insertionData = new InsertionData(bestCost, InsertionData.NO_INDEX, insertionIndex, newVehicle, newDriver); diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculator.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculator.java index 9eb5967c9..6baad0093 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculator.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculator.java @@ -20,6 +20,7 @@ import com.graphhopper.jsprit.core.problem.JobActivityFactory; import com.graphhopper.jsprit.core.problem.constraint.ConstraintManager; import com.graphhopper.jsprit.core.problem.constraint.HardActivityConstraint.ConstraintsStatus; +import com.graphhopper.jsprit.core.problem.constraint.HardConstraint; import com.graphhopper.jsprit.core.problem.constraint.SoftActivityConstraint; import com.graphhopper.jsprit.core.problem.constraint.SoftRouteConstraint; import com.graphhopper.jsprit.core.problem.cost.VehicleRoutingActivityCosts; @@ -128,7 +129,7 @@ public InsertionData getInsertionData(final VehicleRoute currentRoute, final Job //pickupShipmentLoop List activities = currentRoute.getTourActivities().getActivities(); - List failedActivityConstraints = new ArrayList<>(); + List failedActivityConstraints = new ArrayList<>(); while (!tourEnd) { TourActivity nextAct; if (i < activities.size()) { @@ -228,7 +229,10 @@ else if (pickupShipmentConstraintStatus.equals(ConstraintsStatus.FULFILLED)) { } if (pickupInsertionIndex == InsertionData.NO_INDEX) { InsertionData emptyInsertionData = new InsertionData.NoInsertionFound(); - emptyInsertionData.getFailedConstraintNames().addAll(failedActivityConstraints); + for (HardConstraint failed : failedActivityConstraints) { + emptyInsertionData.addFailedConstrainName(failed.getClass().getSimpleName()); + } +// emptyInsertionData.getFailedConstraintNames().addAll(failedActivityConstraints); return emptyInsertionData; } InsertionData insertionData = new InsertionData(bestCost, pickupInsertionIndex, deliveryInsertionIndex, newVehicle, newDriver); diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculatorFlex.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculatorFlex.java index b490b2462..74acff6d8 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculatorFlex.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculatorFlex.java @@ -20,6 +20,7 @@ import com.graphhopper.jsprit.core.problem.JobActivityFactory; import com.graphhopper.jsprit.core.problem.constraint.ConstraintManager; import com.graphhopper.jsprit.core.problem.constraint.HardActivityConstraint.ConstraintsStatus; +import com.graphhopper.jsprit.core.problem.constraint.HardConstraint; import com.graphhopper.jsprit.core.problem.constraint.SoftActivityConstraint; import com.graphhopper.jsprit.core.problem.constraint.SoftRouteConstraint; import com.graphhopper.jsprit.core.problem.cost.VehicleRoutingActivityCosts; @@ -146,7 +147,7 @@ public InsertionData getInsertionData(final VehicleRoute currentRoute, final Job //pickupShipmentLoop List activities = currentRoute.getTourActivities().getActivities(); - List failedActivityConstraints = new ArrayList<>(); + List failedActivityConstraints = new ArrayList<>(); while (!tourEnd) { TourActivity nextAct; if (i < activities.size()) { @@ -252,7 +253,10 @@ public InsertionData getInsertionData(final VehicleRoute currentRoute, final Job if (pickupInsertionIndex == InsertionData.NO_INDEX) { InsertionData emptyInsertionData = new InsertionData.NoInsertionFound(); - emptyInsertionData.getFailedConstraintNames().addAll(failedActivityConstraints); + for (HardConstraint failed : failedActivityConstraints) { + emptyInsertionData.addFailedConstrainName(failed.getClass().getSimpleName()); + } +// emptyInsertionData.getFailedConstraintNames().addAll(failedActivityConstraints); return emptyInsertionData; } InsertionData insertionData = new InsertionData(bestCost, pickupInsertionIndex, deliveryInsertionIndex, newVehicle, newDriver); From e4b5bbf5fa6ee3787de411eb5652db635852a193 Mon Sep 17 00:00:00 2001 From: oblonski Date: Mon, 24 Jun 2019 13:18:36 +0200 Subject: [PATCH 043/191] reduce calling getSimpleName - related to #429 --- .../core/algorithm/recreate/ServiceInsertionCalculator.java | 1 - .../core/algorithm/recreate/ShipmentInsertionCalculator.java | 1 - .../core/algorithm/recreate/ShipmentInsertionCalculatorFlex.java | 1 - 3 files changed, 3 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ServiceInsertionCalculator.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ServiceInsertionCalculator.java index 36b7ba854..1ed5a68b3 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ServiceInsertionCalculator.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ServiceInsertionCalculator.java @@ -171,7 +171,6 @@ public InsertionData getInsertionData(final VehicleRoute currentRoute, final Job for (HardConstraint c : failedActivityConstraints) { emptyInsertionData.addFailedConstrainName(c.getClass().getSimpleName()); } -// emptyInsertionData.getFailedConstraintNames().addAll(failedActivityConstraints); return emptyInsertionData; } InsertionData insertionData = new InsertionData(bestCost, InsertionData.NO_INDEX, insertionIndex, newVehicle, newDriver); diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculator.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculator.java index 6baad0093..d7b3eecd3 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculator.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculator.java @@ -232,7 +232,6 @@ else if (pickupShipmentConstraintStatus.equals(ConstraintsStatus.FULFILLED)) { for (HardConstraint failed : failedActivityConstraints) { emptyInsertionData.addFailedConstrainName(failed.getClass().getSimpleName()); } -// emptyInsertionData.getFailedConstraintNames().addAll(failedActivityConstraints); return emptyInsertionData; } InsertionData insertionData = new InsertionData(bestCost, pickupInsertionIndex, deliveryInsertionIndex, newVehicle, newDriver); diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculatorFlex.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculatorFlex.java index 74acff6d8..8862481a9 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculatorFlex.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculatorFlex.java @@ -256,7 +256,6 @@ public InsertionData getInsertionData(final VehicleRoute currentRoute, final Job for (HardConstraint failed : failedActivityConstraints) { emptyInsertionData.addFailedConstrainName(failed.getClass().getSimpleName()); } -// emptyInsertionData.getFailedConstraintNames().addAll(failedActivityConstraints); return emptyInsertionData; } InsertionData insertionData = new InsertionData(bestCost, pickupInsertionIndex, deliveryInsertionIndex, newVehicle, newDriver); From d6802f5defc3f4d5c9d1ad400e068b332ff1e2bb Mon Sep 17 00:00:00 2001 From: Matthew Hepburn Date: Tue, 2 Jul 2019 19:30:50 +0100 Subject: [PATCH 044/191] Updates job priority documentation --- .../java/com/graphhopper/jsprit/core/problem/job/Job.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Job.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Job.java index 76b65084d..66146d500 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Job.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Job.java @@ -55,9 +55,9 @@ public interface Job extends HasId, HasIndex { public String getName(); /** - * Get priority of job. Only 1 = high priority, 2 = medium and 3 = low are allowed. + * Get priority of job. Only 1 (very high) to 10 (very low) are allowed. *

- * Default is 2 = medium. + * Default is 2. * * @return priority */ From a3e3d45b810daaaac28499f577c84d526d605acf Mon Sep 17 00:00:00 2001 From: oblonski Date: Wed, 10 Jul 2019 14:46:41 +0200 Subject: [PATCH 045/191] change interface insertion ends listener --- .../jsprit/analysis/toolbox/AlgorithmEventsRecorder.java | 2 +- .../jsprit/core/algorithm/RemoveEmptyVehicles.java | 5 +++-- .../core/algorithm/recreate/AbstractInsertionStrategy.java | 2 +- .../algorithm/recreate/listener/InsertionEndsListener.java | 3 ++- .../algorithm/recreate/listener/InsertionListeners.java | 6 +++--- .../jsprit/core/algorithm/state/StateManager.java | 4 ++-- 6 files changed, 12 insertions(+), 10 deletions(-) diff --git a/jsprit-analysis/src/main/java/com/graphhopper/jsprit/analysis/toolbox/AlgorithmEventsRecorder.java b/jsprit-analysis/src/main/java/com/graphhopper/jsprit/analysis/toolbox/AlgorithmEventsRecorder.java index 441026240..6ca5e9a83 100644 --- a/jsprit-analysis/src/main/java/com/graphhopper/jsprit/analysis/toolbox/AlgorithmEventsRecorder.java +++ b/jsprit-analysis/src/main/java/com/graphhopper/jsprit/analysis/toolbox/AlgorithmEventsRecorder.java @@ -376,7 +376,7 @@ private void addNode(String nodeId, Coordinate nodeCoord) { } @Override - public void informInsertionEnds(Collection vehicleRoutes) { + public void informInsertionEnds(Collection vehicleRoutes, Collection badJobs) { if (!record()) return; fileSink.stepBegins(graph.getId(), 0, CLEAR_SOLUTION); removeRoutes(vehicleRoutes); diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/RemoveEmptyVehicles.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/RemoveEmptyVehicles.java index 702affd5f..705a0300d 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/RemoveEmptyVehicles.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/RemoveEmptyVehicles.java @@ -18,6 +18,7 @@ package com.graphhopper.jsprit.core.algorithm; import com.graphhopper.jsprit.core.algorithm.recreate.listener.InsertionEndsListener; +import com.graphhopper.jsprit.core.problem.job.Job; import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; import com.graphhopper.jsprit.core.problem.vehicle.VehicleFleetManager; @@ -41,8 +42,8 @@ public String toString() { } @Override - public void informInsertionEnds(Collection vehicleRoutes) { - List routes = new ArrayList(vehicleRoutes); + public void informInsertionEnds(Collection vehicleRoutes, Collection badJobs) { + List routes = new ArrayList<>(vehicleRoutes); for (VehicleRoute route : routes) { if (route.isEmpty()) { fleetManager.unlock(route.getVehicle()); diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/AbstractInsertionStrategy.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/AbstractInsertionStrategy.java index 5f5973f5a..8bc5a0dfd 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/AbstractInsertionStrategy.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/AbstractInsertionStrategy.java @@ -89,7 +89,7 @@ public void setRandom(Random random) { public Collection insertJobs(Collection vehicleRoutes, Collection unassignedJobs) { insertionsListeners.informInsertionStarts(vehicleRoutes, unassignedJobs); Collection badJobs = insertUnassignedJobs(vehicleRoutes, unassignedJobs); - insertionsListeners.informInsertionEndsListeners(vehicleRoutes); + insertionsListeners.informInsertionEndsListeners(vehicleRoutes, badJobs); return badJobs; } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/listener/InsertionEndsListener.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/listener/InsertionEndsListener.java index c9cde4d64..96f3db200 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/listener/InsertionEndsListener.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/listener/InsertionEndsListener.java @@ -17,6 +17,7 @@ */ package com.graphhopper.jsprit.core.algorithm.recreate.listener; +import com.graphhopper.jsprit.core.problem.job.Job; import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; import java.util.Collection; @@ -24,5 +25,5 @@ public interface InsertionEndsListener extends InsertionListener { - public void informInsertionEnds(Collection vehicleRoutes); + void informInsertionEnds(Collection vehicleRoutes, Collection badJobs); } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/listener/InsertionListeners.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/listener/InsertionListeners.java index f0c5e9a8e..c791fd661 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/listener/InsertionListeners.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/listener/InsertionListeners.java @@ -29,7 +29,7 @@ public class InsertionListeners { - private Collection listeners = new ArrayList(); + private Collection listeners = new ArrayList<>(); public Collection getListeners() { return listeners; @@ -67,10 +67,10 @@ public void informInsertionStarts(Collection vehicleRoutes, Collec } } - public void informInsertionEndsListeners(Collection vehicleRoutes) { + public void informInsertionEndsListeners(Collection vehicleRoutes, Collection badJobs) { for (InsertionListener l : listeners) { if (l instanceof InsertionEndsListener) { - ((InsertionEndsListener) l).informInsertionEnds(vehicleRoutes); + ((InsertionEndsListener) l).informInsertionEnds(vehicleRoutes, badJobs); } } } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/StateManager.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/StateManager.java index fe10f16d2..e2fffd55d 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/StateManager.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/StateManager.java @@ -602,8 +602,8 @@ public void removed(Job job, VehicleRoute fromRoute) { } @Override - public void informInsertionEnds(Collection vehicleRoutes) { - insertionListeners.informInsertionEndsListeners(vehicleRoutes); + public void informInsertionEnds(Collection vehicleRoutes, Collection badJobs) { + insertionListeners.informInsertionEndsListeners(vehicleRoutes, badJobs); } /** From a2d67c857eb96a6faad72576160b2d0496db99d8 Mon Sep 17 00:00:00 2001 From: oblonski Date: Wed, 10 Jul 2019 19:11:19 +0200 Subject: [PATCH 046/191] clean up --- .../algorithm/PrettyAlgorithmBuilder.java | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/PrettyAlgorithmBuilder.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/PrettyAlgorithmBuilder.java index 7d6c4e170..d439f6806 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/PrettyAlgorithmBuilder.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/PrettyAlgorithmBuilder.java @@ -23,19 +23,13 @@ import com.graphhopper.jsprit.core.algorithm.listener.AlgorithmStartsListener; import com.graphhopper.jsprit.core.algorithm.recreate.InsertionStrategy; import com.graphhopper.jsprit.core.algorithm.recreate.VehicleSwitched; -import com.graphhopper.jsprit.core.algorithm.state.*; +import com.graphhopper.jsprit.core.algorithm.state.StateManager; import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; import com.graphhopper.jsprit.core.problem.constraint.ConstraintManager; -import com.graphhopper.jsprit.core.problem.constraint.SwitchNotFeasible; import com.graphhopper.jsprit.core.problem.solution.SolutionCostCalculator; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; -import com.graphhopper.jsprit.core.problem.vehicle.Vehicle; import com.graphhopper.jsprit.core.problem.vehicle.VehicleFleetManager; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeKey; -import com.graphhopper.jsprit.core.util.ActivityTimeTracker; -import java.util.*; +import java.util.Random; /** * Created by schroeder on 10.12.14. @@ -109,12 +103,9 @@ public VehicleRoutingAlgorithm build() { iniInsertionStrategy.addListener(vehicleSwitched); if (!iniInsertionStrategy.getListeners().contains(stateManager)) iniInsertionStrategy.addListener(stateManager); - vra.addListener(new AlgorithmStartsListener() { - @Override - public void informAlgorithmStarts(VehicleRoutingProblem problem, VehicleRoutingAlgorithm algorithm, Collection solutions) { - if (solutions.isEmpty()) { - solutions.add(new InsertionInitialSolutionFactory(iniInsertionStrategy, iniObjFunction).createSolution(vrp)); - } + vra.addListener((AlgorithmStartsListener) (problem, algorithm, solutions) -> { + if (solutions.isEmpty()) { + solutions.add(new InsertionInitialSolutionFactory(iniInsertionStrategy, iniObjFunction).createSolution(vrp)); } }); } From 579964fb72e6f96288f9bf625b3e4b3f7b1a278e Mon Sep 17 00:00:00 2001 From: oblonski Date: Wed, 10 Jul 2019 19:18:08 +0200 Subject: [PATCH 047/191] clean up --- .../algorithm/VehicleRoutingAlgorithm.java | 8 ++++---- .../jsprit/core/algorithm/box/Jsprit.java | 19 ++++++++----------- 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/VehicleRoutingAlgorithm.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/VehicleRoutingAlgorithm.java index f0c7a3839..d8a66285c 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/VehicleRoutingAlgorithm.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/VehicleRoutingAlgorithm.java @@ -115,7 +115,7 @@ public VehicleRoutingAlgorithm(VehicleRoutingProblem problem, SearchStrategyMana super(); this.problem = problem; this.searchStrategyManager = searchStrategyManager; - initialSolutions = new ArrayList(); + initialSolutions = new ArrayList<>(); objectiveFunction = null; } @@ -131,7 +131,7 @@ public VehicleRoutingAlgorithm(VehicleRoutingProblem problem, SearchStrategyMana super(); this.problem = problem; this.searchStrategyManager = searchStrategyManager; - initialSolutions = new ArrayList(); + initialSolutions = new ArrayList<>(); this.objectiveFunction = objectiveFunction; } @@ -153,7 +153,7 @@ public void addInitialSolution(VehicleRoutingProblemSolution solution) { //this method may lead to errors if tour activities in the solution are different to the ones in the VRP //(including differences in indexing) private void verifyAndAdaptSolution(VehicleRoutingProblemSolution solution) { - Set jobsNotInSolution = new HashSet(problem.getJobs().values()); + Set jobsNotInSolution = new HashSet<>(problem.getJobs().values()); jobsNotInSolution.removeAll(solution.getUnassignedJobs()); for (VehicleRoute route : solution.getRoutes()) { jobsNotInSolution.removeAll(route.getTourActivities().getJobs()); @@ -225,7 +225,7 @@ public Collection searchSolutions() { double now = System.currentTimeMillis(); int noIterationsThisAlgoIsRunning = maxIterations; counter.reset(); - Collection solutions = new ArrayList(initialSolutions); + Collection solutions = new ArrayList<>(initialSolutions); algorithmStarts(problem, solutions); bestEver = Solutions.bestOf(solutions); if (logger.isTraceEnabled()) { diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java index 5aeb42249..9fefc1513 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java @@ -353,11 +353,11 @@ public int createNumberToBeRemoved() { } - private StateManager stateManager = null; + private StateManager stateManager; - private ConstraintManager constraintManager = null; + private ConstraintManager constraintManager; - private ExecutorService es = null; + private ExecutorService es; private Integer noThreads; @@ -365,7 +365,7 @@ public int createNumberToBeRemoved() { private boolean addCoreConstraints; - private SolutionCostCalculator objectiveFunction = null; + private SolutionCostCalculator objectiveFunction; private Properties properties; @@ -612,13 +612,10 @@ public double makeNoise() { if (properties.containsKey(Parameter.THRESHOLD_INI_ABS.toString())) { schrimpfAcceptance.setInitialThreshold(Double.valueOf(properties.getProperty(Parameter.THRESHOLD_INI_ABS.toString()))); } else { - schrimpfThreshold = new IterationStartsListener() { - @Override - public void informIterationStarts(int i, VehicleRoutingProblem problem, Collection solutions) { - if (i == 1) { - double initialThreshold = Solutions.bestOf(solutions).getCost() * toDouble(getProperty(Parameter.THRESHOLD_INI.toString())); - schrimpfAcceptance.setInitialThreshold(initialThreshold); - } + schrimpfThreshold = (i, problem, solutions) -> { + if (i == 1) { + double initialThreshold = Solutions.bestOf(solutions).getCost() * toDouble(getProperty(Parameter.THRESHOLD_INI.toString())); + schrimpfAcceptance.setInitialThreshold(initialThreshold); } }; } From 6691cf5ab130e52a969a508c6846b1cb1978b05d Mon Sep 17 00:00:00 2001 From: oblonski Date: Wed, 10 Jul 2019 19:27:06 +0200 Subject: [PATCH 048/191] clean up --- .../core/algorithm/InsertionInitialSolutionFactory.java | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/InsertionInitialSolutionFactory.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/InsertionInitialSolutionFactory.java index 137ad3446..8fec35e43 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/InsertionInitialSolutionFactory.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/InsertionInitialSolutionFactory.java @@ -51,7 +51,7 @@ public InsertionInitialSolutionFactory(InsertionStrategy insertionStrategy, Solu @Override public VehicleRoutingProblemSolution createSolution(final VehicleRoutingProblem vrp) { logger.info("create initial solution"); - List vehicleRoutes = new ArrayList(); + List vehicleRoutes = new ArrayList<>(); vehicleRoutes.addAll(vrp.getInitialVehicleRoutes()); Collection badJobs = insertion.insertJobs(vehicleRoutes, getUnassignedJobs(vrp)); VehicleRoutingProblemSolution solution = new VehicleRoutingProblemSolution(vehicleRoutes, badJobs, Double.MAX_VALUE); @@ -61,11 +61,7 @@ public VehicleRoutingProblemSolution createSolution(final VehicleRoutingProblem } private List getUnassignedJobs(VehicleRoutingProblem vrp) { - ArrayList jobs = new ArrayList(vrp.getJobs().values()); -// for (Vehicle v : vrp.getVehicles()) { -// if (v.getBreak() != null) jobs.add(v.getBreak()); -// } - return jobs; + return new ArrayList<>(vrp.getJobs().values()); } } From 47566d750cd8ad01f9b2e841f4ffa5887b024bff Mon Sep 17 00:00:00 2001 From: oblonski Date: Wed, 10 Jul 2019 20:17:32 +0200 Subject: [PATCH 049/191] clean up --- .../jsprit/core/algorithm/box/Jsprit.java | 69 ++++++++----------- 1 file changed, 30 insertions(+), 39 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java index 9fefc1513..513f27597 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java @@ -43,7 +43,6 @@ import com.graphhopper.jsprit.core.problem.vehicle.FiniteFleetManagerFactory; import com.graphhopper.jsprit.core.problem.vehicle.InfiniteFleetManagerFactory; import com.graphhopper.jsprit.core.problem.vehicle.VehicleFleetManager; -import com.graphhopper.jsprit.core.util.NoiseMaker; import com.graphhopper.jsprit.core.util.RandomNumberGeneration; import com.graphhopper.jsprit.core.util.Solutions; @@ -493,20 +492,12 @@ private VehicleRoutingAlgorithm create(final VehicleRoutingProblem vrp) { toInteger(properties.getProperty(Parameter.WORST_MAX_SHARE.toString())), random) ); - IterationStartsListener noise = new IterationStartsListener() { - @Override - public void informIterationStarts(int i, VehicleRoutingProblem problem, Collection solutions) { - worst.setNoiseMaker(new NoiseMaker() { - - public double makeNoise() { - if (random.nextDouble() < toDouble(getProperty(Parameter.RUIN_WORST_NOISE_PROB.toString()))) { - return toDouble(getProperty(Parameter.RUIN_WORST_NOISE_LEVEL.toString())) - * maxCosts * random.nextDouble(); - } else return 0.; - } - }); - } - }; + IterationStartsListener noise = (i, problem, solutions) -> worst.setNoiseMaker(() -> { + if (random.nextDouble() < toDouble(getProperty(Parameter.RUIN_WORST_NOISE_PROB.toString()))) { + return toDouble(getProperty(Parameter.RUIN_WORST_NOISE_LEVEL.toString())) + * maxCosts * random.nextDouble(); + } else return 0.; + }); final RuinClusters clusters = new RuinClusters(vrp, (int) (vrp.getJobs().values().size() * 0.5), jobNeighborhoods); clusters.setRandom(random); @@ -623,29 +614,29 @@ public double makeNoise() { } SolutionCostCalculator objectiveFunction = getObjectiveFunction(vrp, maxCosts); - SearchStrategy radial_regret = new SearchStrategy(Strategy.RADIAL_REGRET.toString(), new SelectBest(), acceptor, objectiveFunction); - radial_regret.addModule(configureModule(new RuinAndRecreateModule(Strategy.RADIAL_REGRET.toString(), regret, radial))); + SearchStrategy radialRegret = new SearchStrategy(Strategy.RADIAL_REGRET.toString(), new SelectBest(), acceptor, objectiveFunction); + radialRegret.addModule(configureModule(new RuinAndRecreateModule(Strategy.RADIAL_REGRET.toString(), regret, radial))); - SearchStrategy radial_best = new SearchStrategy(Strategy.RADIAL_BEST.toString(), new SelectBest(), acceptor, objectiveFunction); - radial_best.addModule(configureModule(new RuinAndRecreateModule(Strategy.RADIAL_BEST.toString(), best, radial))); + SearchStrategy radialBest = new SearchStrategy(Strategy.RADIAL_BEST.toString(), new SelectBest(), acceptor, objectiveFunction); + radialBest.addModule(configureModule(new RuinAndRecreateModule(Strategy.RADIAL_BEST.toString(), best, radial))); - SearchStrategy random_best = new SearchStrategy(Strategy.RANDOM_BEST.toString(), new SelectBest(), acceptor, objectiveFunction); - random_best.addModule(configureModule(new RuinAndRecreateModule(Strategy.RANDOM_BEST.toString(), best, random_for_best))); + SearchStrategy randomBest = new SearchStrategy(Strategy.RANDOM_BEST.toString(), new SelectBest(), acceptor, objectiveFunction); + randomBest.addModule(configureModule(new RuinAndRecreateModule(Strategy.RANDOM_BEST.toString(), best, random_for_best))); - SearchStrategy random_regret = new SearchStrategy(Strategy.RANDOM_REGRET.toString(), new SelectBest(), acceptor, objectiveFunction); - random_regret.addModule(configureModule(new RuinAndRecreateModule(Strategy.RANDOM_REGRET.toString(), regret, random_for_regret))); + SearchStrategy randomRegret = new SearchStrategy(Strategy.RANDOM_REGRET.toString(), new SelectBest(), acceptor, objectiveFunction); + randomRegret.addModule(configureModule(new RuinAndRecreateModule(Strategy.RANDOM_REGRET.toString(), regret, random_for_regret))); - SearchStrategy worst_regret = new SearchStrategy(Strategy.WORST_REGRET.toString(), new SelectBest(), acceptor, objectiveFunction); - worst_regret.addModule(configureModule(new RuinAndRecreateModule(Strategy.WORST_REGRET.toString(), regret, worst))); + SearchStrategy worstRegret = new SearchStrategy(Strategy.WORST_REGRET.toString(), new SelectBest(), acceptor, objectiveFunction); + worstRegret.addModule(configureModule(new RuinAndRecreateModule(Strategy.WORST_REGRET.toString(), regret, worst))); - SearchStrategy worst_best = new SearchStrategy(Strategy.WORST_BEST.toString(), new SelectBest(), acceptor, objectiveFunction); - worst_best.addModule(configureModule(new RuinAndRecreateModule(Strategy.WORST_BEST.toString(), best, worst))); + SearchStrategy worstBest = new SearchStrategy(Strategy.WORST_BEST.toString(), new SelectBest(), acceptor, objectiveFunction); + worstBest.addModule(configureModule(new RuinAndRecreateModule(Strategy.WORST_BEST.toString(), best, worst))); - final SearchStrategy clusters_regret = new SearchStrategy(Strategy.CLUSTER_REGRET.toString(), new SelectBest(), acceptor, objectiveFunction); - clusters_regret.addModule(configureModule(new RuinAndRecreateModule(Strategy.CLUSTER_REGRET.toString(), regret, clusters))); + final SearchStrategy clustersRegret = new SearchStrategy(Strategy.CLUSTER_REGRET.toString(), new SelectBest(), acceptor, objectiveFunction); + clustersRegret.addModule(configureModule(new RuinAndRecreateModule(Strategy.CLUSTER_REGRET.toString(), regret, clusters))); - final SearchStrategy clusters_best = new SearchStrategy(Strategy.CLUSTER_BEST.toString(), new SelectBest(), acceptor, objectiveFunction); - clusters_best.addModule(configureModule(new RuinAndRecreateModule(Strategy.CLUSTER_BEST.toString(), best, clusters))); + final SearchStrategy clustersBest = new SearchStrategy(Strategy.CLUSTER_BEST.toString(), new SelectBest(), acceptor, objectiveFunction); + clustersBest.addModule(configureModule(new RuinAndRecreateModule(Strategy.CLUSTER_BEST.toString(), best, clusters))); SearchStrategy stringRegret = new SearchStrategy(Strategy.STRING_REGRET.toString(), new SelectBest(), acceptor, objectiveFunction); stringRegret.addModule(configureModule(new RuinAndRecreateModule(Strategy.STRING_REGRET.toString(), regret, stringRuin))); @@ -658,14 +649,14 @@ public double makeNoise() { if (addCoreConstraints) { prettyBuilder.addCoreStateAndConstraintStuff(); } - prettyBuilder.withStrategy(radial_regret, toDouble(getProperty(Strategy.RADIAL_REGRET.toString()))) - .withStrategy(radial_best, toDouble(getProperty(Strategy.RADIAL_BEST.toString()))) - .withStrategy(random_best, toDouble(getProperty(Strategy.RANDOM_BEST.toString()))) - .withStrategy(random_regret, toDouble(getProperty(Strategy.RANDOM_REGRET.toString()))) - .withStrategy(worst_best, toDouble(getProperty(Strategy.WORST_BEST.toString()))) - .withStrategy(worst_regret, toDouble(getProperty(Strategy.WORST_REGRET.toString()))) - .withStrategy(clusters_regret, toDouble(getProperty(Strategy.CLUSTER_REGRET.toString()))) - .withStrategy(clusters_best, toDouble(getProperty(Strategy.CLUSTER_BEST.toString()))) + prettyBuilder.withStrategy(radialRegret, toDouble(getProperty(Strategy.RADIAL_REGRET.toString()))) + .withStrategy(radialBest, toDouble(getProperty(Strategy.RADIAL_BEST.toString()))) + .withStrategy(randomBest, toDouble(getProperty(Strategy.RANDOM_BEST.toString()))) + .withStrategy(randomRegret, toDouble(getProperty(Strategy.RANDOM_REGRET.toString()))) + .withStrategy(worstBest, toDouble(getProperty(Strategy.WORST_BEST.toString()))) + .withStrategy(worstRegret, toDouble(getProperty(Strategy.WORST_REGRET.toString()))) + .withStrategy(clustersRegret, toDouble(getProperty(Strategy.CLUSTER_REGRET.toString()))) + .withStrategy(clustersBest, toDouble(getProperty(Strategy.CLUSTER_BEST.toString()))) .withStrategy(stringBest, toDouble(getProperty(Strategy.STRING_BEST.toString()))) .withStrategy(stringRegret, toDouble(getProperty(Strategy.STRING_REGRET.toString()))); From dd3f29b5cc8c6f525ccd617880b1f8fb0a1bb3d9 Mon Sep 17 00:00:00 2001 From: oblonski Date: Thu, 18 Jul 2019 22:44:46 +0200 Subject: [PATCH 050/191] add option to get activities from job --- .../jsprit/core/problem/job/Activity.java | 92 +++++++++++++++++++ .../jsprit/core/problem/job/Job.java | 16 ++-- .../jsprit/core/problem/job/Service.java | 13 +++ .../jsprit/core/problem/job/Shipment.java | 19 +++- .../solution/route/activity/TourActivity.java | 30 +++--- .../jsprit/examples/SimpleExample.java | 1 - 6 files changed, 147 insertions(+), 24 deletions(-) create mode 100644 jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Activity.java diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Activity.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Activity.java new file mode 100644 index 000000000..afe99a1c0 --- /dev/null +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Activity.java @@ -0,0 +1,92 @@ +/* + * Licensed to GraphHopper GmbH under one or more contributor + * license agreements. See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + * + * GraphHopper GmbH licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.graphhopper.jsprit.core.problem.job; + +import com.graphhopper.jsprit.core.problem.Location; +import com.graphhopper.jsprit.core.problem.solution.route.activity.TimeWindow; + +import java.util.Collection; + +public class Activity { + + public enum Type { + PICKUP, DELIVERY, SERVICE + } + + public static class Builder { + + private final Type activityType; + + private Location location; + + Collection timeWindows; + + private double serviceTime; + + public Builder(Location location, Type activityType) { + this.location = location; + this.activityType = activityType; + } + + public Builder setTimeWindows(Collection timeWindows) { + this.timeWindows = timeWindows; + return this; + } + + public Builder setServiceTime(double serviceTime) { + this.serviceTime = serviceTime; + return this; + } + + public Activity build() { + return new Activity(this); + } + } + + private Location location; + + private Collection timeWindows; + + private double serviceTime; + + private Activity.Type activityType; + + Activity(Builder builder) { + location = builder.location; + timeWindows = builder.timeWindows; + serviceTime = builder.serviceTime; + activityType = builder.activityType; + } + + public Type getActivityType() { + return activityType; + } + + public Location getLocation() { + return location; + } + + public Collection getTimeWindows() { + return timeWindows; + } + + public double getServiceTime() { + return serviceTime; + } +} diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Job.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Job.java index 66146d500..10538b072 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Job.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Job.java @@ -23,6 +23,8 @@ import com.graphhopper.jsprit.core.problem.HasIndex; import com.graphhopper.jsprit.core.problem.Skills; +import java.util.List; + /** * Basic interface for all jobs. * @@ -36,23 +38,23 @@ public interface Job extends HasId, HasIndex { * * @return id */ - public String getId(); + String getId(); /** * Returns size, i.e. capacity-demand, of this job which can consist of an arbitrary number of capacity dimensions. * * @return Capacity */ - public Capacity getSize(); + Capacity getSize(); - public Skills getRequiredSkills(); + Skills getRequiredSkills(); /** * Returns name. * * @return name */ - public String getName(); + String getName(); /** * Get priority of job. Only 1 (very high) to 10 (very low) are allowed. @@ -61,8 +63,10 @@ public interface Job extends HasId, HasIndex { * * @return priority */ - public int getPriority(); + int getPriority(); + + double getMaxTimeInVehicle(); - public double getMaxTimeInVehicle(); + List getActivities(); } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Service.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Service.java index f9be6a4c7..436914b15 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Service.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Service.java @@ -26,7 +26,9 @@ import com.graphhopper.jsprit.core.problem.solution.route.activity.TimeWindowsImpl; import com.graphhopper.jsprit.core.util.Coordinate; +import java.util.ArrayList; import java.util.Collection; +import java.util.List; /** * Service implementation of a job. @@ -93,6 +95,8 @@ public static Builder newInstance(String id) { protected double maxTimeInVehicle = Double.MAX_VALUE; + private Activity activity; + Builder(String id){ this.id = id; timeWindows = new TimeWindowsImpl(); @@ -209,6 +213,7 @@ public T build() { this.setType("service"); capacity = capacityBuilder.build(); skills = skillBuilder.build(); + activity = new Activity.Builder(location, Activity.Type.SERVICE).setServiceTime(serviceTime).setTimeWindows(timeWindows.getTimeWindows()).build(); return (T) new Service(this); } @@ -282,6 +287,8 @@ public Builder setMaxTimeInVehicle(double maxTimeInVehicle){ private final double maxTimeInVehicle; + private List activities = new ArrayList<>(); + Service(Builder builder) { setUserData(builder.userData); id = builder.id; @@ -294,6 +301,7 @@ public Builder setMaxTimeInVehicle(double maxTimeInVehicle){ timeWindows = builder.timeWindows; priority = builder.priority; maxTimeInVehicle = builder.maxTimeInVehicle; + activities.add(builder.activity); } public Collection getTimeWindows(){ @@ -414,4 +422,9 @@ public double getMaxTimeInVehicle() { return this.maxTimeInVehicle; } + @Override + public List getActivities() { + return activities; + } + } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Shipment.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Shipment.java index 0af407c2b..4db6679eb 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Shipment.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Shipment.java @@ -24,7 +24,9 @@ import com.graphhopper.jsprit.core.problem.solution.route.activity.TimeWindow; import com.graphhopper.jsprit.core.problem.solution.route.activity.TimeWindowsImpl; +import java.util.ArrayList; import java.util.Collection; +import java.util.List; /** @@ -46,8 +48,6 @@ public class Shipment extends AbstractJob { - - /** * Builder that builds the shipment. * @@ -89,6 +89,10 @@ public static class Builder { public double maxTimeInVehicle = Double.MAX_VALUE; + private Activity pickup; + + private Activity delivery; + /** * Returns new instance of this builder. * @@ -252,6 +256,8 @@ public Shipment build() { if (deliveryLocation_ == null) throw new IllegalArgumentException("The delivery location is missing."); capacity = capacityBuilder.build(); skills = skillBuilder.build(); + pickup = new Activity.Builder(pickupLocation_, Activity.Type.PICKUP).setServiceTime(pickupServiceTime).setTimeWindows(pickupTimeWindows.getTimeWindows()).build(); + delivery = new Activity.Builder(deliveryLocation_, Activity.Type.DELIVERY).setServiceTime(deliveryServiceTime).setTimeWindows(deliveryTimeWindows.getTimeWindows()).build(); return new Shipment(this); } @@ -368,6 +374,8 @@ public Builder setMaxTimeInVehicle(double maxTimeInVehicle){ private final double maxTimeInVehicle; + private List activities = new ArrayList<>(); + Shipment(Builder builder) { setUserData(builder.userData); this.id = builder.id; @@ -382,6 +390,8 @@ public Builder setMaxTimeInVehicle(double maxTimeInVehicle){ this.pickupTimeWindows = builder.pickupTimeWindows; this.priority = builder.priority; this.maxTimeInVehicle = builder.maxTimeInVehicle; + activities.add(builder.pickup); + activities.add(builder.delivery); } @Override @@ -520,4 +530,9 @@ public int getPriority() { public double getMaxTimeInVehicle() { return maxTimeInVehicle; } + + @Override + public List getActivities() { + return activities; + } } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TourActivity.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TourActivity.java index a6aa070fd..c6ee3d4f6 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TourActivity.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TourActivity.java @@ -31,9 +31,9 @@ */ public interface TourActivity extends HasIndex { - public void setTheoreticalEarliestOperationStartTime(double earliest); + void setTheoreticalEarliestOperationStartTime(double earliest); - public void setTheoreticalLatestOperationStartTime(double latest); + void setTheoreticalLatestOperationStartTime(double latest); /** * Basic interface of job-activies. @@ -42,14 +42,14 @@ public interface TourActivity extends HasIndex { * * @author schroeder */ - public interface JobActivity extends TourActivity { + interface JobActivity extends TourActivity { /** * Returns the job that is involved with this activity. * * @return job */ - public Job getJob(); + Job getJob(); } @@ -58,14 +58,14 @@ public interface JobActivity extends TourActivity { * * @return name */ - public abstract String getName(); + String getName(); /** * Returns location. * * @return location */ - public abstract Location getLocation(); + Location getLocation(); /** * Returns the theoretical earliest operation start time, which is the time that is just allowed @@ -73,7 +73,7 @@ public interface JobActivity extends TourActivity { * * @return earliest start time */ - public abstract double getTheoreticalEarliestOperationStartTime(); + double getTheoreticalEarliestOperationStartTime(); /** * Returns the theoretical latest operation start time, which is the time that is just allowed @@ -81,7 +81,7 @@ public interface JobActivity extends TourActivity { * * @return latest start time */ - public abstract double getTheoreticalLatestOperationStartTime(); + double getTheoreticalLatestOperationStartTime(); /** * Returns the operation-time this activity takes. @@ -91,35 +91,35 @@ public interface JobActivity extends TourActivity { * * @return operation time */ - public abstract double getOperationTime(); + double getOperationTime(); /** * Returns the arrival-time of this activity. * * @return arrival time */ - public abstract double getArrTime(); + double getArrTime(); /** * Returns end-time of this activity. * * @return end time */ - public abstract double getEndTime(); + double getEndTime(); /** * Sets the arrival time of that activity. * * @param arrTime */ - public abstract void setArrTime(double arrTime); + void setArrTime(double arrTime); /** * Sets the end-time of this activity. * * @param endTime */ - public abstract void setEndTime(double endTime); + void setEndTime(double endTime); /** * Returns the capacity-demand of that activity, in terms of what needs to be loaded or unloaded at @@ -127,13 +127,13 @@ public interface JobActivity extends TourActivity { * * @return capacity */ - public abstract Capacity getSize(); + Capacity getSize(); /** * Makes a deep copy of this activity. * * @return copied activity */ - public abstract TourActivity duplicate(); + TourActivity duplicate(); } diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleExample.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleExample.java index 8cf9f200f..d2c79afd9 100644 --- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleExample.java +++ b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleExample.java @@ -22,7 +22,6 @@ import com.graphhopper.jsprit.analysis.toolbox.Plotter; import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; import com.graphhopper.jsprit.core.algorithm.box.Jsprit; -import com.graphhopper.jsprit.core.algorithm.box.SchrimpfFactory; import com.graphhopper.jsprit.core.problem.Location; import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; import com.graphhopper.jsprit.core.problem.job.Service; From fe590fc9f80b39083862fca4d270b6b8f5d0e195 Mon Sep 17 00:00:00 2001 From: oblonski Date: Thu, 18 Jul 2019 22:45:38 +0200 Subject: [PATCH 051/191] simplify according to getActivities --- .../toolbox/AlgorithmEventsViewer.java | 5 +- .../analysis/toolbox/GraphStreamViewer.java | 208 ++++++++---------- .../jsprit/analysis/toolbox/Plotter.java | 149 +++++-------- 3 files changed, 152 insertions(+), 210 deletions(-) diff --git a/jsprit-analysis/src/main/java/com/graphhopper/jsprit/analysis/toolbox/AlgorithmEventsViewer.java b/jsprit-analysis/src/main/java/com/graphhopper/jsprit/analysis/toolbox/AlgorithmEventsViewer.java index 2bc87c97b..c9264b48a 100644 --- a/jsprit-analysis/src/main/java/com/graphhopper/jsprit/analysis/toolbox/AlgorithmEventsViewer.java +++ b/jsprit-analysis/src/main/java/com/graphhopper/jsprit/analysis/toolbox/AlgorithmEventsViewer.java @@ -153,8 +153,6 @@ public void stepBegins(String sourceId, long timeId, double step) { private long delayRuin = 5; - private long delay = 2; - public void setRecreationDelay(long delay_in_ms) { this.delayRecreation = delay_in_ms; } @@ -174,6 +172,7 @@ public void display(String dgsFile) { DelayContainer delayContainer = new DelayContainer(); DelaySink delaySink = new DelaySink(delayContainer); + long delay = 2; delaySink.setDelay(delay); delaySink.setRecreateDelay(delayRecreation); delaySink.setRuinDelay(delayRuin); @@ -197,7 +196,7 @@ public void display(String dgsFile) { } } - public static void main(String[] args) throws IOException { + public static void main(String[] args) { AlgorithmEventsViewer viewer = new AlgorithmEventsViewer(); viewer.setRuinDelay(10); viewer.setRecreationDelay(5); diff --git a/jsprit-analysis/src/main/java/com/graphhopper/jsprit/analysis/toolbox/GraphStreamViewer.java b/jsprit-analysis/src/main/java/com/graphhopper/jsprit/analysis/toolbox/GraphStreamViewer.java index 22d38ce9d..2897d4fbe 100644 --- a/jsprit-analysis/src/main/java/com/graphhopper/jsprit/analysis/toolbox/GraphStreamViewer.java +++ b/jsprit-analysis/src/main/java/com/graphhopper/jsprit/analysis/toolbox/GraphStreamViewer.java @@ -19,9 +19,8 @@ import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; +import com.graphhopper.jsprit.core.problem.job.Activity; import com.graphhopper.jsprit.core.problem.job.Job; -import com.graphhopper.jsprit.core.problem.job.Service; -import com.graphhopper.jsprit.core.problem.job.Shipment; import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; import com.graphhopper.jsprit.core.problem.solution.route.activity.DeliveryActivity; @@ -46,7 +45,7 @@ public class GraphStreamViewer { public static class StyleSheets { - public static String BLUE_FOREST = + static String BLUE_FOREST = "graph { fill-color: #141F2E; }" + "node {" + " size: 7px, 7px;" + @@ -169,7 +168,7 @@ public static class StyleSheets { } - public static Graph createMultiGraph(String name, String style) { + static Graph createMultiGraph(String name, String style) { Graph g = new MultiGraph(name); g.addAttribute("ui.quality"); g.addAttribute("ui.antialias"); @@ -177,66 +176,14 @@ public static Graph createMultiGraph(String name, String style) { return g; } - public static ViewPanel createEmbeddedView(Graph graph, double scaling) { + private static ViewPanel createEmbeddedView(Graph graph, double scaling) { Viewer viewer = new Viewer(graph, Viewer.ThreadingModel.GRAPH_IN_ANOTHER_THREAD); ViewPanel view = viewer.addDefaultView(false); view.setPreferredSize(new Dimension((int) (698 * scaling), (int) (440 * scaling))); return view; } - public static String STYLESHEET = - "node {" + - " size: 10px, 10px;" + - " fill-color: #6CC644;" + - " text-alignment: at-right;" + - " stroke-mode: plain;" + - " stroke-color: #999;" + - " stroke-width: 1.0;" + - " text-font: couriernew;" + - " text-offset: 2,-5;" + - " text-size: 8;" + - "}" + - "node.pickup {" + - " fill-color: #6CC644;" + - "}" + - "node.delivery {" + - " fill-color: #f93;" + - "}" + - "node.pickupInRoute {" + - " fill-color: #6CC644;" + - " stroke-mode: plain;" + - " stroke-color: #333;" + - " stroke-width: 2.0;" + - "}" + - "node.deliveryInRoute {" + - " fill-color: #f93;" + - " stroke-mode: plain;" + - " stroke-color: #333;" + - " stroke-width: 2.0;" + - "}" + - "node.depot {" + - " fill-color: #BD2C00;" + - " size: 10px, 10px;" + - " shape: box;" + - "}" + - "node.removed {" + - " fill-color: #BD2C00;" + - " size: 10px, 10px;" + - " stroke-mode: plain;" + - " stroke-color: #333;" + - " stroke-width: 2.0;" + - "}" + - - "edge {" + - " fill-color: #333;" + - " arrow-size: 6px,3px;" + - "}" + - "edge.shipment {" + - " fill-color: #999;" + - " arrow-size: 6px,3px;" + - "}"; - - public static enum Label { + public enum Label { NO_LABEL, ID, JOB_NAME, ARRIVAL_TIME, DEPARTURE_TIME, ACTIVITY } @@ -244,7 +191,7 @@ private static class Center { final double x; final double y; - public Center(double x, double y) { + Center(double x, double y) { super(); this.x = x; this.y = y; @@ -319,13 +266,9 @@ public GraphStreamViewer setCameraView(double centerX, double centerY, double zo public void display() { System.setProperty("org.graphstream.ui.renderer", "org.graphstream.ui.j2dviewer.J2DGraphRenderer"); - - Graph g = createMultiGraph("g"); - + Graph g = createMultiGraph(); ViewPanel view = createEmbeddedView(g, scaling); - createJFrame(view, scaling); - render(g, view); } @@ -369,8 +312,58 @@ private JFrame createJFrame(ViewPanel view, double scaling) { return jframe; } - private Graph createMultiGraph(String name) { - return GraphStreamViewer.createMultiGraph(name, STYLESHEET); + private Graph createMultiGraph() { + String STYLESHEET = "node {" + + " size: 10px, 10px;" + + " fill-color: #6CC644;" + + " text-alignment: at-right;" + + " stroke-mode: plain;" + + " stroke-color: #999;" + + " stroke-width: 1.0;" + + " text-font: couriernew;" + + " text-offset: 2,-5;" + + " text-size: 8;" + + "}" + + "node.pickup {" + + " fill-color: #6CC644;" + + "}" + + "node.delivery {" + + " fill-color: #f93;" + + "}" + + "node.pickupInRoute {" + + " fill-color: #6CC644;" + + " stroke-mode: plain;" + + " stroke-color: #333;" + + " stroke-width: 2.0;" + + "}" + + "node.deliveryInRoute {" + + " fill-color: #f93;" + + " stroke-mode: plain;" + + " stroke-color: #333;" + + " stroke-width: 2.0;" + + "}" + + "node.depot {" + + " fill-color: #BD2C00;" + + " size: 10px, 10px;" + + " shape: box;" + + "}" + + "node.removed {" + + " fill-color: #BD2C00;" + + " size: 10px, 10px;" + + " stroke-mode: plain;" + + " stroke-color: #333;" + + " stroke-width: 2.0;" + + "}" + + + "edge {" + + " fill-color: #333;" + + " arrow-size: 6px,3px;" + + "}" + + "edge.shipment {" + + " fill-color: #999;" + + " arrow-size: 6px,3px;" + + "}"; + return GraphStreamViewer.createMultiGraph("g", STYLESHEET); } private void render(Graph g, ViewPanel view) { @@ -385,11 +378,7 @@ private void render(Graph g, ViewPanel view) { } for (Job j : vrp.getJobs().values()) { - if (j instanceof Service) { - renderService(g, (Service) j, label); - } else if (j instanceof Shipment) { - renderShipment(g, (Shipment) j, label, renderShipments); - } + renderJob(g, j, label); sleep(renderDelay_in_ms); } @@ -404,6 +393,7 @@ private void render(Graph g, ViewPanel view) { } + private void alignCamera(View view) { view.getCamera().setViewCenter(center.x, center.y, 0); view.getCamera().setViewPercent(zoomFactor); @@ -501,26 +491,22 @@ private Double getSolutionCosts() { return 0.0; } - private void renderShipment(Graph g, Shipment shipment, Label label, boolean renderShipments) { - - Node n1 = g.addNode(makeId(shipment.getId(), shipment.getPickupLocation().getId())); - if (label.equals(Label.ID)) n1.addAttribute("ui.label", shipment.getId()); - n1.addAttribute("x", shipment.getPickupLocation().getCoordinate().getX()); - n1.addAttribute("y", shipment.getPickupLocation().getCoordinate().getY()); - n1.setAttribute("ui.class", "pickup"); - - Node n2 = g.addNode(makeId(shipment.getId(), shipment.getDeliveryLocation().getId())); - if (label.equals(Label.ID)) n2.addAttribute("ui.label", shipment.getId()); - n2.addAttribute("x", shipment.getDeliveryLocation().getCoordinate().getX()); - n2.addAttribute("y", shipment.getDeliveryLocation().getCoordinate().getY()); - n2.setAttribute("ui.class", "delivery"); - - if (renderShipments) { - Edge s = g.addEdge(shipment.getId(), makeId(shipment.getId(), shipment.getPickupLocation().getId()), - makeId(shipment.getId(), shipment.getDeliveryLocation().getId()), true); - s.addAttribute("ui.class", "shipment"); + private void renderJob(Graph g, Job j, Label label) { + String lastNodeId = null; + for (Activity act : j.getActivities()) { + String nodeId = makeId(j.getId(), act.getLocation().getId()); + Node n1 = g.addNode(nodeId); + if (label.equals(Label.ID)) n1.addAttribute("ui.label", j.getId()); + n1.addAttribute("x", act.getLocation().getCoordinate().getX()); + n1.addAttribute("y", act.getLocation().getCoordinate().getY()); + if (act.getActivityType().equals(Activity.Type.PICKUP)) n1.setAttribute("ui.class", "pickup"); + else if (act.getActivityType().equals(Activity.Type.DELIVERY)) n1.setAttribute("ui.class", "delivery"); + if (renderShipments && lastNodeId != null) { + Edge s = g.addEdge(j.getId(), lastNodeId, nodeId, true); + s.addAttribute("ui.class", "shipment"); + } + lastNodeId = nodeId; } - } private void sleep(long renderDelay_in_ms2) { @@ -532,15 +518,6 @@ private void sleep(long renderDelay_in_ms2) { } } - private void renderService(Graph g, Service service, Label label) { - Node n = g.addNode(makeId(service.getId(), service.getLocation().getId())); - if (label.equals(Label.ID)) n.addAttribute("ui.label", service.getId()); - n.addAttribute("x", service.getLocation().getCoordinate().getX()); - n.addAttribute("y", service.getLocation().getCoordinate().getY()); - if (service.getType().equals("pickup")) n.setAttribute("ui.class", "pickup"); - if (service.getType().equals("delivery")) n.setAttribute("ui.class", "delivery"); - } - private String makeId(String id, String locationId) { return id + "_" + locationId; } @@ -575,18 +552,24 @@ private void renderRoute(Graph g, VehicleRoute route, int routeId, long renderDe if (act instanceof JobActivity) { Job job = ((JobActivity) act).getJob(); String currIdentifier = makeId(job.getId(), act.getLocation().getId()); - if (label.equals(Label.ACTIVITY)) { - Node actNode = g.getNode(currIdentifier); - actNode.addAttribute("ui.label", act.getName()); - } else if (label.equals(Label.JOB_NAME)) { - Node actNode = g.getNode(currIdentifier); - actNode.addAttribute("ui.label", job.getName()); - } else if (label.equals(Label.ARRIVAL_TIME)) { - Node actNode = g.getNode(currIdentifier); - actNode.addAttribute("ui.label", Time.parseSecondsToTime(act.getArrTime())); - } else if (label.equals(Label.DEPARTURE_TIME)) { - Node actNode = g.getNode(currIdentifier); - actNode.addAttribute("ui.label", Time.parseSecondsToTime(act.getEndTime())); + Node actNode = g.getNode(currIdentifier); + switch (label) { + case ACTIVITY: { + actNode.addAttribute("ui.label", act.getName()); + break; + } + case JOB_NAME: { + actNode.addAttribute("ui.label", job.getName()); + break; + } + case ARRIVAL_TIME: { + actNode.addAttribute("ui.label", Time.parseSecondsToTime(act.getArrTime())); + break; + } + case DEPARTURE_TIME: { + actNode.addAttribute("ui.label", Time.parseSecondsToTime(act.getEndTime())); + break; + } } g.addEdge(makeEdgeId(routeId, vehicle_edgeId), prevIdentifier, currIdentifier, true); if (act instanceof PickupActivity) g.getNode(currIdentifier).addAttribute("ui.class", "pickupInRoute"); @@ -607,7 +590,4 @@ private String makeEdgeId(int routeId, int vehicle_edgeId) { return Integer.valueOf(routeId).toString() + "." + Integer.valueOf(vehicle_edgeId).toString(); } - // public void saveAsPNG(String filename){ - // - // } } diff --git a/jsprit-analysis/src/main/java/com/graphhopper/jsprit/analysis/toolbox/Plotter.java b/jsprit-analysis/src/main/java/com/graphhopper/jsprit/analysis/toolbox/Plotter.java index c519e759a..6c36424cc 100644 --- a/jsprit-analysis/src/main/java/com/graphhopper/jsprit/analysis/toolbox/Plotter.java +++ b/jsprit-analysis/src/main/java/com/graphhopper/jsprit/analysis/toolbox/Plotter.java @@ -19,7 +19,7 @@ import com.graphhopper.jsprit.core.problem.Location; import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.job.*; +import com.graphhopper.jsprit.core.problem.job.Job; import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; import com.graphhopper.jsprit.core.problem.solution.route.activity.TourActivity; @@ -27,14 +27,12 @@ import com.graphhopper.jsprit.core.util.Coordinate; import org.jfree.chart.*; import org.jfree.chart.axis.NumberAxis; -import org.jfree.chart.labels.XYItemLabelGenerator; import org.jfree.chart.plot.XYPlot; import org.jfree.chart.renderer.xy.XYItemRenderer; import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer; import org.jfree.chart.title.LegendTitle; import org.jfree.data.Range; import org.jfree.data.xy.XYDataItem; -import org.jfree.data.xy.XYDataset; import org.jfree.data.xy.XYSeries; import org.jfree.data.xy.XYSeriesCollection; import org.jfree.ui.RectangleEdge; @@ -79,7 +77,7 @@ private static class MyActivityRenderer extends XYLineAndShapeRenderer { private Set firstActivities; - public MyActivityRenderer(XYSeriesCollection seriesCollection, Map activities, Set firstActivities) { + MyActivityRenderer(XYSeriesCollection seriesCollection, Map activities, Set firstActivities) { super(false, true); this.seriesCollection = seriesCollection; this.activities = activities; @@ -126,7 +124,7 @@ private static class BoundingBox { double maxX; double maxY; - public BoundingBox(double minX, double minY, double maxX, double maxY) { + BoundingBox(double minX, double minY, double maxX, double maxY) { super(); this.minX = minX; this.minY = minY; @@ -148,7 +146,7 @@ private enum Activity { * * @author schroeder */ - public static enum Label { + public enum Label { ID, SIZE, @SuppressWarnings("UnusedDeclaration")NO_LABEL } @@ -164,13 +162,13 @@ public static enum Label { private BoundingBox boundingBox = null; - private Map activitiesByDataItem = new HashMap(); + private Map activitiesByDataItem = new HashMap<>(); - private Map labelsByDataItem = new HashMap(); + private Map labelsByDataItem = new HashMap<>(); private XYSeries activities; - private Set firstActivities = new HashSet(); + private Set firstActivities = new HashSet<>(); private boolean containsPickupAct = false; @@ -247,7 +245,7 @@ public Plotter invertCoordinates(boolean invert) { * @param minY lower left y * @param maxX upper right x * @param maxY upper right y - * @return + * @return Plotter */ @SuppressWarnings("UnusedDeclaration") public Plotter setBoundingBox(double minX, double minY, double maxX, double maxY) { @@ -321,27 +319,15 @@ private LegendTitle createLegend(final Collection routes, final XY @Override public LegendItemCollection getLegendItems() { LegendItemCollection lic = new LegendItemCollection(); - LegendItem vehLoc = new LegendItem("vehLoc", Color.RED); - vehLoc.setShape(ELLIPSE); - vehLoc.setShapeVisible(true); - lic.add(vehLoc); + addLegendItem(lic, "vehLoc", Color.RED); if (containsServiceAct) { - LegendItem item = new LegendItem("service", Color.BLUE); - item.setShape(ELLIPSE); - item.setShapeVisible(true); - lic.add(item); + addLegendItem(lic, "service", Color.BLUE); } if (containsPickupAct) { - LegendItem item = new LegendItem("pickup", Color.GREEN); - item.setShape(ELLIPSE); - item.setShapeVisible(true); - lic.add(item); + addLegendItem(lic, "pickup", Color.GREEN); } if (containsDeliveryAct) { - LegendItem item = new LegendItem("delivery", Color.BLUE); - item.setShape(ELLIPSE); - item.setShapeVisible(true); - lic.add(item); + addLegendItem(lic, "delivery", Color.BLUE); } if (routes != null) { LegendItem item = new LegendItem("firstActivity", Color.BLACK); @@ -363,6 +349,13 @@ public LegendItemCollection getLegendItems() { } return lic; } + + private void addLegendItem(LegendItemCollection lic, String jobType, Color color) { + LegendItem item = new LegendItem(jobType, color); + item.setShape(ELLIPSE); + item.setShapeVisible(true); + lic.add(item); + } }; LegendTitle legend = new LegendTitle(lis); @@ -384,14 +377,9 @@ private XYItemRenderer getShipmentRenderer(XYSeriesCollection shipments) { private MyActivityRenderer getProblemRenderer(final XYSeriesCollection problem) { MyActivityRenderer problemRenderer = new MyActivityRenderer(problem, activitiesByDataItem, firstActivities); - problemRenderer.setBaseItemLabelGenerator(new XYItemLabelGenerator() { - - @Override - public String generateLabel(XYDataset arg0, int arg1, int arg2) { - XYDataItem item = problem.getSeries(arg1).getDataItem(arg2); - return labelsByDataItem.get(item); - } - + problemRenderer.setBaseItemLabelGenerator((arg0, arg1, arg2) -> { + XYDataItem item = problem.getSeries(arg1).getDataItem(arg2); + return labelsByDataItem.get(item); }); problemRenderer.setBaseItemLabelsVisible(true); problemRenderer.setBaseItemLabelPaint(Color.BLACK); @@ -467,7 +455,7 @@ private void save(JFreeChart chart, String pngFile) { } } - private XYSeriesCollection makeSolutionSeries(VehicleRoutingProblem vrp, Collection routes) throws NoLocationFoundException { + private XYSeriesCollection makeSolutionSeries(VehicleRoutingProblem vrp, Collection routes) { Map coords = makeMap(vrp.getAllLocations()); XYSeriesCollection coll = new XYSeriesCollection(); int counter = 1; @@ -493,22 +481,20 @@ private XYSeriesCollection makeSolutionSeries(VehicleRoutingProblem vrp, Collect } private Map makeMap(Collection allLocations) { - Map coords = new HashMap(); + Map coords = new HashMap<>(); for (Location l : allLocations) coords.put(l.getId(), l.getCoordinate()); return coords; } - private XYSeriesCollection makeShipmentSeries(Collection jobs) throws NoLocationFoundException { + private XYSeriesCollection makeShipmentSeries(Collection jobs) { XYSeriesCollection coll = new XYSeriesCollection(); if (!plotShipments) return coll; int sCounter = 1; String ship = "shipment"; boolean first = true; for (Job job : jobs) { - if (!(job instanceof Shipment)) { - continue; - } - Shipment shipment = (Shipment) job; + if (job.getActivities().size() == 1) continue; +// Shipment shipment = (Shipment) job; XYSeries shipmentSeries; if (first) { first = false; @@ -517,57 +503,34 @@ private XYSeriesCollection makeShipmentSeries(Collection jobs) throws NoLoc shipmentSeries = new XYSeries(sCounter, false, true); sCounter++; } - Coordinate pickupCoordinate = getCoordinate(shipment.getPickupLocation().getCoordinate()); - Coordinate delCoordinate = getCoordinate(shipment.getDeliveryLocation().getCoordinate()); - shipmentSeries.add(pickupCoordinate.getX() * scalingFactor, pickupCoordinate.getY() * scalingFactor); - shipmentSeries.add(delCoordinate.getX() * scalingFactor, delCoordinate.getY() * scalingFactor); + for (com.graphhopper.jsprit.core.problem.job.Activity act : job.getActivities()) { + Coordinate actCoordinate = getCoordinate(act.getLocation().getCoordinate()); + shipmentSeries.add(actCoordinate.getX() * scalingFactor, actCoordinate.getY() * scalingFactor); + } coll.addSeries(shipmentSeries); } return coll; } private void addJob(XYSeries activities, Job job) { - if (job instanceof Shipment) { - Shipment s = (Shipment) job; - Coordinate pickupCoordinate = getCoordinate(s.getPickupLocation().getCoordinate()); - XYDataItem dataItem = new XYDataItem(pickupCoordinate.getX() * scalingFactor, pickupCoordinate.getY() * scalingFactor); - activities.add(dataItem); - addLabel(s, dataItem); - markItem(dataItem, Activity.PICKUP); - containsPickupAct = true; - - Coordinate deliveryCoordinate = getCoordinate(s.getDeliveryLocation().getCoordinate()); - XYDataItem dataItem2 = new XYDataItem(deliveryCoordinate.getX() * scalingFactor, deliveryCoordinate.getY() * scalingFactor); - activities.add(dataItem2); - addLabel(s, dataItem2); - markItem(dataItem2, Activity.DELIVERY); - containsDeliveryAct = true; - } else if (job instanceof Pickup) { - Pickup service = (Pickup) job; - Coordinate coord = getCoordinate(service.getLocation().getCoordinate()); - XYDataItem dataItem = new XYDataItem(coord.getX() * scalingFactor, coord.getY() * scalingFactor); + for (com.graphhopper.jsprit.core.problem.job.Activity act : job.getActivities()) { + XYDataItem dataItem = new XYDataItem(getCoordinate(act.getLocation().getCoordinate()).getX() * scalingFactor, getCoordinate(act.getLocation().getCoordinate()).getY() * scalingFactor); activities.add(dataItem); - addLabel(service, dataItem); - markItem(dataItem, Activity.PICKUP); - containsPickupAct = true; - } else if (job instanceof Delivery) { - Delivery service = (Delivery) job; - Coordinate coord = getCoordinate(service.getLocation().getCoordinate()); - XYDataItem dataItem = new XYDataItem(coord.getX() * scalingFactor, coord.getY() * scalingFactor); - activities.add(dataItem); - addLabel(service, dataItem); - markItem(dataItem, Activity.DELIVERY); - containsDeliveryAct = true; - } else if (job instanceof Service) { - Service service = (Service) job; - Coordinate coord = getCoordinate(service.getLocation().getCoordinate()); - XYDataItem dataItem = new XYDataItem(coord.getX() * scalingFactor, coord.getY() * scalingFactor); - activities.add(dataItem); - addLabel(service, dataItem); - markItem(dataItem, Activity.SERVICE); - containsServiceAct = true; - } else { - throw new IllegalStateException("job instanceof " + job.getClass().toString() + ". this is not supported."); + addLabel(job, dataItem); + switch (act.getActivityType()) { + case PICKUP: + markItem(dataItem, Activity.PICKUP); + containsPickupAct = true; + break; + case DELIVERY: + markItem(dataItem, Activity.DELIVERY); + containsDeliveryAct = true; + break; + case SERVICE: + markItem(dataItem, Activity.SERVICE); + containsServiceAct = true; + break; + } } } @@ -585,11 +548,11 @@ private String getSizeString(Job job) { boolean firstDim = true; for (int i = 0; i < job.getSize().getNuOfDimensions(); i++) { if (firstDim) { - builder.append(String.valueOf(job.getSize().get(i))); + builder.append(job.getSize().get(i)); firstDim = false; } else { builder.append(","); - builder.append(String.valueOf(job.getSize().get(i))); + builder.append(job.getSize().get(i)); } } builder.append(")"); @@ -606,16 +569,16 @@ private Coordinate getCoordinate(Coordinate coordinate) { private void retrieveActivities(VehicleRoutingProblem vrp) throws NoLocationFoundException { activities = new XYSeries("activities", false, true); for (Vehicle v : vrp.getVehicles()) { - Coordinate start_coordinate = getCoordinate(v.getStartLocation().getCoordinate()); - if (start_coordinate == null) throw new NoLocationFoundException(); - XYDataItem item = new XYDataItem(start_coordinate.getX() * scalingFactor, start_coordinate.getY() * scalingFactor); + Coordinate startCoordinate = getCoordinate(v.getStartLocation().getCoordinate()); + if (startCoordinate == null) throw new NoLocationFoundException(); + XYDataItem item = new XYDataItem(startCoordinate.getX() * scalingFactor, startCoordinate.getY() * scalingFactor); markItem(item, Activity.START); activities.add(item); if (!v.getStartLocation().getId().equals(v.getEndLocation().getId())) { - Coordinate end_coordinate = getCoordinate(v.getEndLocation().getCoordinate()); - if (end_coordinate == null) throw new NoLocationFoundException(); - XYDataItem end_item = new XYDataItem(end_coordinate.getX() * scalingFactor, end_coordinate.getY() * scalingFactor); + Coordinate endCoordinate = getCoordinate(v.getEndLocation().getCoordinate()); + if (endCoordinate == null) throw new NoLocationFoundException(); + XYDataItem end_item = new XYDataItem(endCoordinate.getX() * scalingFactor, endCoordinate.getY() * scalingFactor); markItem(end_item, Activity.END); activities.add(end_item); } From ad851b1951ffb42e830fc2797d785ec77a24f634 Mon Sep 17 00:00:00 2001 From: oblonski Date: Thu, 18 Jul 2019 22:48:22 +0200 Subject: [PATCH 052/191] make list unmodifiable --- .../java/com/graphhopper/jsprit/core/problem/job/Service.java | 2 ++ .../java/com/graphhopper/jsprit/core/problem/job/Shipment.java | 2 ++ 2 files changed, 4 insertions(+) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Service.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Service.java index 436914b15..c16a74dbd 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Service.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Service.java @@ -28,6 +28,7 @@ import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.List; /** @@ -302,6 +303,7 @@ public Builder setMaxTimeInVehicle(double maxTimeInVehicle){ priority = builder.priority; maxTimeInVehicle = builder.maxTimeInVehicle; activities.add(builder.activity); + activities = Collections.unmodifiableList(activities); } public Collection getTimeWindows(){ diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Shipment.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Shipment.java index 4db6679eb..be95482bd 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Shipment.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Shipment.java @@ -26,6 +26,7 @@ import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.List; @@ -392,6 +393,7 @@ public Builder setMaxTimeInVehicle(double maxTimeInVehicle){ this.maxTimeInVehicle = builder.maxTimeInVehicle; activities.add(builder.pickup); activities.add(builder.delivery); + activities = Collections.unmodifiableList(activities); } @Override From ac84b62651b6c88e537fbfa8eeba95e9bf54872f Mon Sep 17 00:00:00 2001 From: oblonski Date: Fri, 19 Jul 2019 09:05:12 +0200 Subject: [PATCH 053/191] remove instanceof job stuff --- .../algorithm/recreate/DefaultScorer.java | 52 +++++++------------ .../core/problem/VehicleRoutingProblem.java | 40 ++------------ .../jsprit/core/problem/job/Delivery.java | 1 + .../jsprit/core/problem/job/Pickup.java | 1 + .../jsprit/core/problem/job/Service.java | 2 +- .../problem/VehicleRoutingProblemTest.java | 8 +-- 6 files changed, 30 insertions(+), 74 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/DefaultScorer.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/DefaultScorer.java index 280de34d2..d2e58c2fd 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/DefaultScorer.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/DefaultScorer.java @@ -20,9 +20,9 @@ import com.graphhopper.jsprit.core.problem.Location; import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; +import com.graphhopper.jsprit.core.problem.job.Activity; import com.graphhopper.jsprit.core.problem.job.Job; -import com.graphhopper.jsprit.core.problem.job.Service; -import com.graphhopper.jsprit.core.problem.job.Shipment; +import com.graphhopper.jsprit.core.problem.solution.route.activity.TimeWindow; /** * Created by schroeder on 15/10/15. @@ -51,42 +51,30 @@ public void setDepotDistanceParam(double depotDistance_param) { @Override public double score(InsertionData best, Job job) { - double score; - if (job instanceof Service) { - score = scoreService(best, job); - } else if (job instanceof Shipment) { - score = scoreShipment(best, job); - } else throw new IllegalStateException("not supported"); - return score; + return scoreJob(best, job); } - private double scoreShipment(InsertionData best, Job job) { - Shipment shipment = (Shipment) job; - double maxDepotDistance_1 = Math.max( - getDistance(best.getSelectedVehicle().getStartLocation(), shipment.getPickupLocation()), - getDistance(best.getSelectedVehicle().getStartLocation(), shipment.getDeliveryLocation()) - ); - double maxDepotDistance_2 = Math.max( - getDistance(best.getSelectedVehicle().getEndLocation(), shipment.getPickupLocation()), - getDistance(best.getSelectedVehicle().getEndLocation(), shipment.getDeliveryLocation()) - ); - double maxDepotDistance = Math.max(maxDepotDistance_1, maxDepotDistance_2); - double minTimeToOperate = Math.min(shipment.getPickupTimeWindow().getEnd() - shipment.getPickupTimeWindow().getStart(), - shipment.getDeliveryTimeWindow().getEnd() - shipment.getDeliveryTimeWindow().getStart()); + private double scoreJob(InsertionData best, Job job) { + Location startLocation = best.getSelectedVehicle().getStartLocation(); + Location endLocation = best.getSelectedVehicle().getEndLocation(); + double maxDepotDistance = 0; + double minTimeToOperate = Double.MAX_VALUE; + for (Activity act : job.getActivities()) { + maxDepotDistance = Math.max(maxDepotDistance, getDistance(startLocation, act.getLocation())); + maxDepotDistance = Math.max(maxDepotDistance, getDistance(endLocation, act.getLocation())); + TimeWindow tw = getLargestTimeWindow(act); + minTimeToOperate = Math.min(minTimeToOperate, tw.getEnd() - tw.getStart()); + } return Math.max(timeWindowParam * minTimeToOperate, minTimeWindowScore) + depotDistanceParam * maxDepotDistance; } - private double scoreService(InsertionData best, Job job) { - Location location = ((Service) job).getLocation(); - double maxDepotDistance = 0; - if (location != null) { - maxDepotDistance = Math.max( - getDistance(best.getSelectedVehicle().getStartLocation(), location), - getDistance(best.getSelectedVehicle().getEndLocation(), location) - ); + private TimeWindow getLargestTimeWindow(Activity act) { + TimeWindow timeWindow = null; + for (TimeWindow tw : act.getTimeWindows()) { + if (timeWindow == null) timeWindow = tw; + else if (tw.larger(timeWindow)) timeWindow = tw; } - return Math.max(timeWindowParam * (((Service) job).getTimeWindow().getEnd() - ((Service) job).getTimeWindow().getStart()), minTimeWindowScore) + - depotDistanceParam * maxDepotDistance; + return TimeWindow.newInstance(0, Double.MAX_VALUE); } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java index c688ce9c7..4c630fabc 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java @@ -20,10 +20,7 @@ import com.graphhopper.jsprit.core.problem.cost.VehicleRoutingActivityCosts; import com.graphhopper.jsprit.core.problem.cost.VehicleRoutingTransportCosts; import com.graphhopper.jsprit.core.problem.cost.WaitingTimeCosts; -import com.graphhopper.jsprit.core.problem.job.Break; -import com.graphhopper.jsprit.core.problem.job.Job; -import com.graphhopper.jsprit.core.problem.job.Service; -import com.graphhopper.jsprit.core.problem.job.Shipment; +import com.graphhopper.jsprit.core.problem.job.*; import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; import com.graphhopper.jsprit.core.problem.solution.route.activity.BreakActivity; import com.graphhopper.jsprit.core.problem.solution.route.activity.DefaultShipmentActivityFactory; @@ -226,18 +223,8 @@ public Builder addJob(AbstractJob job) { } private void addLocationToTentativeLocations(Job job) { - if (job instanceof Service) { - Location location = ((Service) job).getLocation(); -// tentative_coordinates.put(location.getId(), location.getCoordinate()); - addLocationToTentativeLocations(location); - } else if (job instanceof Shipment) { - Shipment shipment = (Shipment) job; - Location pickupLocation = shipment.getPickupLocation(); - addLocationToTentativeLocations(pickupLocation); -// tentative_coordinates.put(pickupLocation.getId(), pickupLocation.getCoordinate()); - Location deliveryLocation = shipment.getDeliveryLocation(); - addLocationToTentativeLocations(deliveryLocation); -// tentative_coordinates.put(deliveryLocation.getId(), deliveryLocation.getCoordinate()); + for (Activity act : job.getActivities()) { + addLocationToTentativeLocations(act.getLocation()); } } @@ -247,13 +234,7 @@ private void addLocationToTentativeLocations(Location location) { } private void addJobToFinalJobMapAndCreateActivities(Job job) { - if (job instanceof Service) { - Service service = (Service) job; - addService(service); - } else if (job instanceof Shipment) { - Shipment shipment = (Shipment) job; - addShipment(shipment); - } + addJobToFinalMap(job); List jobActs = jobActivityFactory.createActivities(job); for (AbstractActivity act : jobActs) { act.setIndex(activityIndexCounter); @@ -333,13 +314,11 @@ public Builder addInitialVehicleRoutes(Collection routes) { return this; } - private void addShipment(Shipment job) { + private void addJobToFinalMap(Job job) { if (jobs.containsKey(job.getId())) { logger.warn("The job " + job + " has already been added to the job list. This overrides the existing job."); } addLocationToTentativeLocations(job); -// tentative_coordinates.put(job.getPickupLocation().getId(), job.getPickupLocation().getCoordinate()); -// tentative_coordinates.put(job.getDeliveryLocation().getId(), job.getDeliveryLocation().getCoordinate()); jobs.put(job.getId(), job); } @@ -516,15 +495,6 @@ public Collection getAddedJobs() { return Collections.unmodifiableCollection(tentativeJobs.values()); } - private Builder addService(Service service) { - addLocationToTentativeLocations(service); - if (jobs.containsKey(service.getId())) { - logger.warn("The service " + service + " has already been added to job list. This overrides existing job."); - } - jobs.put(service.getId(), service); - return this; - } - } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Delivery.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Delivery.java index 40b70a755..98e708bf9 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Delivery.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Delivery.java @@ -59,6 +59,7 @@ public Delivery build() { this.setType("delivery"); super.capacity = super.capacityBuilder.build(); super.skills = super.skillBuilder.build(); + super.activity = new Activity.Builder(location, Activity.Type.DELIVERY).setTimeWindows(timeWindows.getTimeWindows()).setServiceTime(serviceTime).build(); return new Delivery(this); } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Pickup.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Pickup.java index 2a893d5f0..bba2b437d 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Pickup.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Pickup.java @@ -61,6 +61,7 @@ public Pickup build() { this.setType("pickup"); super.capacity = super.capacityBuilder.build(); super.skills = super.skillBuilder.build(); + super.activity = new Activity.Builder(location, Activity.Type.PICKUP).setTimeWindows(timeWindows.getTimeWindows()).setServiceTime(serviceTime).build(); return new Pickup(this); } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Service.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Service.java index c16a74dbd..7d0067f5d 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Service.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Service.java @@ -96,7 +96,7 @@ public static Builder newInstance(String id) { protected double maxTimeInVehicle = Double.MAX_VALUE; - private Activity activity; + protected Activity activity; Builder(String id){ this.id = id; diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblemTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblemTest.java index 046f19343..4a993cd03 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblemTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblemTest.java @@ -130,12 +130,8 @@ public void whenShipmentsAreAdded_vrpShouldContainThem() { @Test public void whenServicesAreAdded_vrpShouldContainThem() { - Service s1 = mock(Service.class); - when(s1.getId()).thenReturn("s1"); - when(s1.getLocation()).thenReturn(Location.Builder.newInstance().setIndex(1).build()); - Service s2 = mock(Service.class); - when(s2.getId()).thenReturn("s2"); - when(s2.getLocation()).thenReturn(Location.Builder.newInstance().setIndex(1).build()); + Service s1 = Service.Builder.newInstance("s1").setLocation(Location.Builder.newInstance().setIndex(1).build()).build(); + Service s2 = Service.Builder.newInstance("s2").setLocation(Location.Builder.newInstance().setIndex(1).build()).build(); VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); vrpBuilder.addJob(s1).addJob(s2); From 298210bb9c11a4da5016c1a2437ba18a97dd3933 Mon Sep 17 00:00:00 2001 From: oblonski Date: Fri, 19 Jul 2019 10:30:19 +0200 Subject: [PATCH 054/191] add activities --- .../java/com/graphhopper/jsprit/core/problem/job/Activity.java | 2 +- .../java/com/graphhopper/jsprit/core/problem/job/Break.java | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Activity.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Activity.java index afe99a1c0..ba0df86c1 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Activity.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Activity.java @@ -26,7 +26,7 @@ public class Activity { public enum Type { - PICKUP, DELIVERY, SERVICE + PICKUP, DELIVERY, SERVICE, BREAK; } public static class Builder { diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Break.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Break.java index 367ea7dcf..d81e7d4f2 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Break.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Break.java @@ -61,12 +61,13 @@ public Break build() { this.setType("break"); super.capacity = Capacity.Builder.newInstance().build(); super.skills = Skills.Builder.newInstance().build(); + super.activity = new Activity.Builder(null, Activity.Type.BREAK).setServiceTime(serviceTime).setTimeWindows(timeWindows.getTimeWindows()).build(); return new Break(this); } } - private boolean variableLocation = true; + private boolean variableLocation; Break(Builder builder) { super(builder); From d8bb1ca95a88463d16fae99276292c7c1e9cca05 Mon Sep 17 00:00:00 2001 From: oblonski Date: Fri, 19 Jul 2019 10:30:42 +0200 Subject: [PATCH 055/191] clean up --- .../jsprit/core/algorithm/recreate/DefaultScorer.java | 8 ++++---- .../algorithm/recreate/ServiceInsertionCalculator.java | 4 ---- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/DefaultScorer.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/DefaultScorer.java index d2e58c2fd..15ee59fce 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/DefaultScorer.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/DefaultScorer.java @@ -41,12 +41,12 @@ public DefaultScorer(VehicleRoutingProblem vrp) { this.vrp = vrp; } - public void setTimeWindowParam(double tw_param) { - this.timeWindowParam = tw_param; + public void setTimeWindowParam(double twParam) { + this.timeWindowParam = twParam; } - public void setDepotDistanceParam(double depotDistance_param) { - this.depotDistanceParam = depotDistance_param; + public void setDepotDistanceParam(double depotDistanceParam) { + this.depotDistanceParam = depotDistanceParam; } @Override diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ServiceInsertionCalculator.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ServiceInsertionCalculator.java index 1ed5a68b3..7cdfc2483 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ServiceInsertionCalculator.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ServiceInsertionCalculator.java @@ -52,10 +52,6 @@ final class ServiceInsertionCalculator extends AbstractInsertionCalculator { private static final Logger logger = LoggerFactory.getLogger(ServiceInsertionCalculator.class); -// private HardRouteConstraint hardRouteLevelConstraint; - -// private HardActivityConstraint hardActivityLevelConstraint; - private final SoftRouteConstraint softRouteConstraint; private final SoftActivityConstraint softActivityConstraint; From af69361cd444f59fae2ec96eb1183cf17cdc7fb2 Mon Sep 17 00:00:00 2001 From: oblonski Date: Fri, 19 Jul 2019 10:30:59 +0200 Subject: [PATCH 056/191] add helper to compare time windows --- .../core/problem/solution/route/activity/TimeWindow.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TimeWindow.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TimeWindow.java index 7ded1e0b3..3fac5c439 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TimeWindow.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TimeWindow.java @@ -75,6 +75,10 @@ public double getEnd() { return end; } + public boolean larger(TimeWindow timeWindow) { + return (this.getEnd() - this.getStart()) > (timeWindow.getEnd() - timeWindow.getStart()); + } + @Override public String toString() { return "[start=" + start + "][end=" + end + "]"; From 7351a05730955232679423458a34898439aa5e5e Mon Sep 17 00:00:00 2001 From: oblonski Date: Fri, 19 Jul 2019 10:41:20 +0200 Subject: [PATCH 057/191] clean up --- .../solution/route/activity/TourActivities.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TourActivities.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TourActivities.java index 949e70fda..9730de765 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TourActivities.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TourActivities.java @@ -46,8 +46,7 @@ public ReverseActivityIterator(List acts) { @Override public boolean hasNext() { - if (currentIndex >= 0) return true; - return false; + return currentIndex >= 0; } @Override @@ -67,9 +66,9 @@ public void remove() { } } - private final ArrayList tourActivities = new ArrayList(); + private final ArrayList tourActivities = new ArrayList<>(); - private final Set jobs = new HashSet(); + private final Set jobs = new HashSet<>(); private ReverseActivityIterator backward; @@ -123,7 +122,7 @@ public String toString() { * @return true if job has been removed, otherwise false. */ public boolean removeJob(Job job) { - boolean jobRemoved = false; + boolean jobRemoved; if (!jobs.contains(job)) { return false; } else { @@ -161,7 +160,7 @@ public boolean removeActivity(TourActivity activity) { } boolean jobIsAlsoAssociateToOtherActs = false; boolean actRemoved = false; - List acts = new ArrayList(tourActivities); + List acts = new ArrayList<>(tourActivities); for (TourActivity act : acts) { if (act == activity) { tourActivities.remove(act); From d03906950ff6875a99fa34ce772444c6dc2e558b Mon Sep 17 00:00:00 2001 From: oblonski Date: Fri, 19 Jul 2019 11:40:17 +0200 Subject: [PATCH 058/191] add tests for job activities --- .../graphhopper/jsprit/core/problem/job/ServiceTest.java | 7 +++++++ .../jsprit/core/problem/job/ShipmentTest.java | 9 +++++++++ 2 files changed, 16 insertions(+) diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/job/ServiceTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/job/ServiceTest.java index 9ab100159..2840c93ec 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/job/ServiceTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/job/ServiceTest.java @@ -307,4 +307,11 @@ public void whenSettingUserData_itIsAssociatedWithTheJob() { assertEquals(42, two.getUserData()); assertNull(three.getUserData()); } + + @Test + public void testServiceActivity() { + Service one = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")).build(); + assertEquals(1, one.getActivities().size()); + assertEquals(Activity.Type.SERVICE, one.getActivities().get(0).getActivityType()); + } } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/job/ShipmentTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/job/ShipmentTest.java index 7e271092e..214381611 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/job/ShipmentTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/job/ShipmentTest.java @@ -464,4 +464,13 @@ public void whenNotAddingMaxTimeInVehicle_itShouldBeDefault(){ Assert.assertEquals(Double.MAX_VALUE, s.getMaxTimeInVehicle(),0.001); } + @Test + public void testShipmentActivities() { + Job job = Shipment.Builder.newInstance("s").setPickupLocation(Location.newInstance("loc")).setDeliveryLocation(Location.newInstance("loc")) + .build(); + assertEquals(2, job.getActivities().size()); + assertEquals(Activity.Type.PICKUP, job.getActivities().get(0).getActivityType()); + assertEquals(Activity.Type.DELIVERY, job.getActivities().get(1).getActivityType()); + } + } From efc6109fa363997104e19a2cde253b97ff08eb6a Mon Sep 17 00:00:00 2001 From: Michal Maciejewski Date: Thu, 9 May 2019 10:42:09 +0200 Subject: [PATCH 059/191] speed up TourActivities.removeActivity() --- .../solution/route/activity/TourActivities.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TourActivities.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TourActivities.java index 9730de765..fad9d186a 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TourActivities.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TourActivities.java @@ -164,10 +164,20 @@ public boolean removeActivity(TourActivity activity) { for (TourActivity act : acts) { if (act == activity) { tourActivities.remove(act); + if (job == null || jobIsAlsoAssociateToOtherActs) { + // this is not a job activity OR other activities also refer to job --> do not remove job + // thus no need to iterate any further + return true; + } actRemoved = true; } else { - if (act instanceof JobActivity && job != null) { + if (job != null && act instanceof JobActivity) { if (((JobActivity) act).getJob().equals(job)) { + if (actRemoved) { + // other activities also refer to job --> do not remove job + // thus no need to iterate any further + return true; + } jobIsAlsoAssociateToOtherActs = true; } } From 4ac181165c8e22047db5ee47f83be1542e55c23b Mon Sep 17 00:00:00 2001 From: Michal Maciejewski Date: Thu, 9 May 2019 10:44:43 +0200 Subject: [PATCH 060/191] remove BreakScheduling.modifiedRoutes and its updating - it is never used --- .../jsprit/core/algorithm/recreate/BreakScheduling.java | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/BreakScheduling.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/BreakScheduling.java index 66fbb182c..a64b81546 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/BreakScheduling.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/BreakScheduling.java @@ -45,8 +45,6 @@ public class BreakScheduling implements InsertionStartsListener,JobInsertedListe private final EventListeners eventListeners; - private Set modifiedRoutes = new HashSet(); - public BreakScheduling(VehicleRoutingProblem vrp, StateManager stateManager, ConstraintManager constraintManager) { this.stateManager = stateManager; this.breakInsertionCalculator = new BreakInsertionCalculator(vrp.getTransportCosts(), vrp.getActivityCosts(), new LocalActivityInsertionCostsCalculator(vrp.getTransportCosts(), vrp.getActivityCosts(), stateManager), constraintManager, vrp.getJobActivityFactory()); @@ -78,7 +76,6 @@ public void informJobInserted(Job job2insert, VehicleRoute inRoute, double addit @Override public void ruinStarts(Collection routes) { - } @Override @@ -88,7 +85,7 @@ public void ruinEnds(Collection routes, Collection unassigned boolean removed = route.getTourActivities().removeJob(aBreak); if(removed) logger.trace("ruin: {}", aBreak.getId()); } - List breaks = new ArrayList(); + List breaks = new ArrayList<>(); for (Job j : unassignedJobs) { if (j instanceof Break) { breaks.add((Break) j); @@ -99,7 +96,6 @@ public void ruinEnds(Collection routes, Collection unassigned @Override public void removed(Job job, VehicleRoute fromRoute) { - if(fromRoute.getVehicle().getBreak() != null) modifiedRoutes.add(fromRoute); } @Override @@ -119,6 +115,5 @@ public void informInsertionStarts(Collection vehicleRoutes, Collec } } } - } } From dd122b54e65488929289494cd58ec9c5ddaf2b2f Mon Sep 17 00:00:00 2001 From: Michal Maciejewski Date: Thu, 9 May 2019 11:17:14 +0200 Subject: [PATCH 061/191] simplify TourActivities.removeActivity() by handling non-job activities separately --- .../route/activity/TourActivities.java | 31 +++++++++---------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TourActivities.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TourActivities.java index fad9d186a..9bf54d89d 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TourActivities.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TourActivities.java @@ -154,36 +154,35 @@ public boolean removeJob(Job job) { * @return true if activity has been removed, false otherwise */ public boolean removeActivity(TourActivity activity) { - Job job = null; - if (activity instanceof JobActivity) { - job = ((JobActivity) activity).getJob(); + if (!(activity instanceof JobActivity)) { + //assumes that an activity can be added only once to tourActivities + return tourActivities.remove(activity); } + + Job job = ((JobActivity) activity).getJob(); boolean jobIsAlsoAssociateToOtherActs = false; boolean actRemoved = false; - List acts = new ArrayList<>(tourActivities); - for (TourActivity act : acts) { + for (TourActivity act : new ArrayList<>(tourActivities)) { if (act == activity) { tourActivities.remove(act); - if (job == null || jobIsAlsoAssociateToOtherActs) { - // this is not a job activity OR other activities also refer to job --> do not remove job + if (jobIsAlsoAssociateToOtherActs) { + // other activities also refer to job --> do not remove job // thus no need to iterate any further return true; } actRemoved = true; } else { - if (job != null && act instanceof JobActivity) { - if (((JobActivity) act).getJob().equals(job)) { - if (actRemoved) { - // other activities also refer to job --> do not remove job - // thus no need to iterate any further - return true; - } - jobIsAlsoAssociateToOtherActs = true; + if (act instanceof JobActivity && ((JobActivity) act).getJob().equals(job)) { + if (actRemoved) { + // other activities also refer to job --> do not remove job + // thus no need to iterate any further + return true; } + jobIsAlsoAssociateToOtherActs = true; } } } - if (!jobIsAlsoAssociateToOtherActs && actRemoved) { + if (actRemoved) { jobs.remove(job); } return actRemoved; From 3c9c8aa397ec8af26713b4b8645695fc37410de6 Mon Sep 17 00:00:00 2001 From: Michal Maciejewski Date: Mon, 13 May 2019 12:48:43 +0200 Subject: [PATCH 062/191] enable removal of non-job activities via TourActivities.iterator() --- .../route/activity/TourActivities.java | 26 +++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TourActivities.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TourActivities.java index 9bf54d89d..22b9db330 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TourActivities.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TourActivities.java @@ -81,7 +81,6 @@ private TourActivities(TourActivities tour2copy) { } public TourActivities() { - } public List getActivities() { @@ -89,7 +88,30 @@ public List getActivities() { } public Iterator iterator() { - return tourActivities.iterator(); + final Iterator iterator = tourActivities.iterator(); + return new Iterator() { + private TourActivity lastReturned = null; + + @Override + public boolean hasNext() { + return iterator.hasNext(); + } + + @Override + public TourActivity next() { + return lastReturned = iterator.next(); + } + + @Override + public void remove() { + if (lastReturned instanceof JobActivity) { + throw new IllegalStateException("Cannot remove JobActivities via iterator. " + + "Use TourActivities.removeActivity(), or alternatively, consider TourActivities.removeJob()"); + } else { + iterator.remove(); + } + } + }; } public boolean isEmpty() { From 1fc64502096f61247667bd3421949f827bf4eb3f Mon Sep 17 00:00:00 2001 From: Michal Maciejewski Date: Tue, 20 Aug 2019 12:59:50 +0200 Subject: [PATCH 063/191] add test for removing nonJobActivity from TourActivities --- .../route/activity/TestTourActivities.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TestTourActivities.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TestTourActivities.java index 51fac31b2..6604bf2e7 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TestTourActivities.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TestTourActivities.java @@ -22,6 +22,7 @@ import com.graphhopper.jsprit.core.problem.job.Shipment; import org.junit.Before; import org.junit.Test; +import org.mockito.Mockito; import static org.junit.Assert.*; @@ -118,6 +119,19 @@ public void whenRemovingShipment_theirCorrespondingActivitiesShouldBeRemoved() { assertEquals(0, tour.getActivities().size()); } + @Test + public void removingNonJobActivityShouldWork() { + TourActivity nonJobAct = Mockito.mock(TourActivity.class); + + tour.addActivity(nonJobAct); + assertTrue(tour.getActivities().contains(nonJobAct)); + + tour.removeActivity(nonJobAct); + + assertTrue(tour.isEmpty()); + assertFalse(tour.getActivities().contains(nonJobAct)); + } + @Test public void removingActivityShouldWork() { tour.addActivity(act); From 8076d463d77a9cc40b74842bc29a08f2c86260f8 Mon Sep 17 00:00:00 2001 From: Michal Maciejewski Date: Thu, 22 Aug 2019 15:45:06 +0200 Subject: [PATCH 064/191] use trusty dist for oraclejdk8 build on travis --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 373829e3f..3d221ae1e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,6 +4,7 @@ matrix: fast_finish: true include: - jdk: oraclejdk8 + dist: trusty # Java 9 needs to be manually installed/upgraded # see: https://github.com/travis-ci/travis-ci/issues/2968#issuecomment-149164058 - jdk: oraclejdk9 From 8c410bef19ff3c7c9d1d5def739b0cb9b0501581 Mon Sep 17 00:00:00 2001 From: oblonski Date: Thu, 23 Jan 2020 10:43:33 +0100 Subject: [PATCH 065/191] add helper methods --- .../termination/TimeTermination.java | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/termination/TimeTermination.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/termination/TimeTermination.java index 39bfd0085..99c83930f 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/termination/TimeTermination.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/termination/TimeTermination.java @@ -41,9 +41,9 @@ */ public class TimeTermination implements PrematureAlgorithmTermination, AlgorithmStartsListener { - public static interface TimeGetter { + public interface TimeGetter { - public long getCurrentTime(); + long getCurrentTime(); } @@ -51,14 +51,7 @@ public static interface TimeGetter { private final long timeThreshold; - private TimeGetter timeGetter = new TimeGetter() { - - @Override - public long getCurrentTime() { - return System.currentTimeMillis(); - } - - }; + private TimeGetter timeGetter = System::currentTimeMillis; private long startTime; @@ -91,7 +84,7 @@ void start(long startTime) { this.startTime = startTime; } - private long now() { + public long now() { return timeGetter.getCurrentTime(); } @@ -100,4 +93,12 @@ public void informAlgorithmStarts(VehicleRoutingProblem problem, VehicleRoutingA start(timeGetter.getCurrentTime()); } + public long getRemainingTime() { + return timeThreshold - (now() - startTime); + } + + public long getStartTime() { + return startTime; + } + } From d595fe6831316deca712028529d00ca98c89f2a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Schr=C3=B6der?= Date: Wed, 29 Jan 2020 09:14:15 +0100 Subject: [PATCH 066/191] Update README.md --- README.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/README.md b/README.md index 1bf8726cf..c79f9c22f 100644 --- a/README.md +++ b/README.md @@ -37,9 +37,6 @@ Any contribution is welcome. Feel free to improve jsprit and make pull requests. See who has contributed [here](https://github.com/jsprit/jsprit/blob/master/CONTRIBUTORS.md). -## Acknowledgement -Developing this would be much more difficult without the help of [these companies](https://github.com/graphhopper/jsprit/blob/master/docs/Acknowledgement.md). - ## Contact #### Mailing List: From b6a02b56541313b6b325c4fe88e496cb55f2175c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Schr=C3=B6der?= Date: Wed, 29 Jan 2020 09:19:20 +0100 Subject: [PATCH 067/191] Update README.md --- README.md | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index c79f9c22f..8ae712cf4 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,8 @@ It is lightweight, flexible and easy-to-use, and based on a single all-purpose [ Setting up the problem, defining additional constraints, modifying the algorithms and visualising the discovered solutions is as easy and handy as reading classical VRP instances to benchmark your algorithm. It is fit for change and extension due to a modular design and a comprehensive set of unit and integration-tests. [More features ...](https://github.com/graphhopper/jsprit/blob/master/docs/Features.textile) +The jsprit-project is maintained by [GraphHopper](https://graphhopper.com/). + ## Getting Started with Documentation Please visit [docs](https://github.com/graphhopper/jsprit/blob/master/docs/Home.md) to learn more.The best way to get to know jsprit is by looking at [code examples](https://github.com/graphhopper/jsprit/tree/master/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples). @@ -52,12 +54,3 @@ For bugs, feature requests or similar use the [issue tracker](https://github.com If you cannot get help in the mailing list or you just do not want to discuss your topic publicly, [contact us via mail](https://graphhopper.com/#contact) -## About -The jsprit-project has been created by [Stefan Schröder](https://github.com/oblonski) and is maintained by [GraphHopper](https://graphhopper.com/). It is motivated by two issues. - -First, you can find vehicle routing problems **everywhere** in the world of distributing and moving things and people. This probably explains why there is an almost endless list of papers and algorithms to tackle these problems. However, there are only [very few open source implementations](https://github.com/graphhopper/jsprit/blob/master/docs/Other-Projects.md) and even fewer projects that can deal with real world problems that usually have many side-constraints. - -Second, it is motivated by my PhD-project at [KIT](http://www.kit.edu/english/index.php) where I apply vehicle routing algorithms to solve behavioural models of freight agents to assess (freight) transport policy measures. - -It is mainly inspired by my research group at [KIT-ECON](http://netze.econ.kit.edu/21.php), and by a great open-source project called [MATSim](http://www.matsim.org) and its developers. - From 3556bcdb2aae77d96968bfb452fdaf28a9b94300 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Schr=C3=B6der?= Date: Wed, 29 Jan 2020 09:20:14 +0100 Subject: [PATCH 068/191] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8ae712cf4..eb695c4f0 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ See who has contributed [here](https://github.com/jsprit/jsprit/blob/master/CONT ## Contact #### Mailing List: -In the [Graphhopper Forum ](https://discuss.graphhopper.com/) ([Also you can see the old mailing list](https://groups.google.com/group/jsprit-mailing-list)) you can discuss jsprit related issues and you will probably get answers to your questions. +In the [Graphhopper Forum ](https://discuss.graphhopper.com/) you can discuss jsprit related issues and you will probably get answers to your questions. #### Stackoverflow: You can also use [stackoverflow](http://stackoverflow.com/questions/tagged/jsprit) to discuss your issues. Tag it with jsprit then it is easier to keep track of your topic. From 65ccf2cc94e075dafa2d97b92e37bca2af5c95ab Mon Sep 17 00:00:00 2001 From: oblonski Date: Tue, 10 Mar 2020 09:00:04 +0100 Subject: [PATCH 069/191] replace lambda with method ref --- .../graphhopper/jsprit/core/problem/VehicleRoutingProblem.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java index 4c630fabc..dcca71aec 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java @@ -552,7 +552,7 @@ public enum FleetSize { private int nuActivities; - private final JobActivityFactory jobActivityFactory = job -> copyAndGetActivities(job); + private final JobActivityFactory jobActivityFactory = this::copyAndGetActivities; private VehicleRoutingProblem(Builder builder) { this.jobs = builder.jobs; From 2a8cc88f3a4cfc6537f240c92359c8247229fe61 Mon Sep 17 00:00:00 2001 From: oblonski Date: Tue, 10 Mar 2020 09:02:45 +0100 Subject: [PATCH 070/191] make constructor private --- .../main/java/com/graphhopper/jsprit/core/problem/Capacity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/Capacity.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/Capacity.java index 094398f0c..f19a0ad59 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/Capacity.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/Capacity.java @@ -200,7 +200,7 @@ private Capacity(Capacity capacity) { } } - Capacity(Builder builder) { + private Capacity(Builder builder) { dimensions = builder.dimensions; } From 98cd36d6d57e8bcbbb7c925922d457804c955bad Mon Sep 17 00:00:00 2001 From: oblonski Date: Fri, 13 Mar 2020 12:32:18 +0100 Subject: [PATCH 071/191] add act without static location --- .../activity/ActWithoutStaticLocation.java | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/ActWithoutStaticLocation.java diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/ActWithoutStaticLocation.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/ActWithoutStaticLocation.java new file mode 100644 index 000000000..6eebdc796 --- /dev/null +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/ActWithoutStaticLocation.java @@ -0,0 +1,59 @@ +/* + * Licensed to GraphHopper GmbH under one or more contributor + * license agreements. See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + * + * GraphHopper GmbH licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.graphhopper.jsprit.core.problem.solution.route.activity; + +import com.graphhopper.jsprit.core.problem.Location; +import com.graphhopper.jsprit.core.problem.job.Service; + +public class ActWithoutStaticLocation extends ServiceActivity { + + private Location previousLocation; + + private Location nextLocation; + + protected ActWithoutStaticLocation(Service service) { + super(service); + } + + protected ActWithoutStaticLocation(ActWithoutStaticLocation serviceActivity) { + super(serviceActivity); + this.previousLocation = serviceActivity.getPreviousLocation(); + this.nextLocation = serviceActivity.getNextLocation(); + } + + public Location getLocation() { + return previousLocation; + } + + public Location getPreviousLocation() { + return previousLocation; + } + + public Location getNextLocation() { + return nextLocation; + } + + public void setPreviousLocation(Location previousLocation) { + this.previousLocation = previousLocation; + } + + public void setNextLocation(Location nextLocation) { + this.nextLocation = nextLocation; + } +} From 019f369c19ebcd823399a6e80979a521a2b1672e Mon Sep 17 00:00:00 2001 From: oblonski Date: Fri, 13 Mar 2020 12:39:28 +0100 Subject: [PATCH 072/191] accept services without location --- .../graphhopper/jsprit/core/problem/VehicleRoutingProblem.java | 1 + 1 file changed, 1 insertion(+) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java index dcca71aec..571875146 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java @@ -229,6 +229,7 @@ private void addLocationToTentativeLocations(Job job) { } private void addLocationToTentativeLocations(Location location) { + if (location == null) return; tentative_coordinates.put(location.getId(), location.getCoordinate()); allLocations.add(location); } From 0612a1fd70802a391bfb2e44ec54bc2f2b43d9bb Mon Sep 17 00:00:00 2001 From: oblonski Date: Tue, 24 Mar 2020 15:04:43 +0100 Subject: [PATCH 073/191] act without location --- .../solution/route/activity/DefaultTourActivityFactory.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/DefaultTourActivityFactory.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/DefaultTourActivityFactory.java index 0f1047dcc..19ac2fb2b 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/DefaultTourActivityFactory.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/DefaultTourActivityFactory.java @@ -32,7 +32,9 @@ public AbstractActivity createActivity(Service service) { } else if (service instanceof Delivery) { act = new DeliverService((Delivery) service); } else { - act = new PickupService(service); + if (service.getLocation() == null) { + act = new ActWithoutStaticLocation(service); + } else act = new PickupService(service); } return act; } From 5171c2a9d9083c570fb4d7696cf0ab38319cd607 Mon Sep 17 00:00:00 2001 From: oblonski Date: Tue, 24 Mar 2020 15:13:50 +0100 Subject: [PATCH 074/191] add example --- .../SimpleExampleWithoutLocation.java | 125 ++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleExampleWithoutLocation.java diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleExampleWithoutLocation.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleExampleWithoutLocation.java new file mode 100644 index 000000000..008fb150e --- /dev/null +++ b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleExampleWithoutLocation.java @@ -0,0 +1,125 @@ +/* + * Licensed to GraphHopper GmbH under one or more contributor + * license agreements. See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + * + * GraphHopper GmbH licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.graphhopper.jsprit.examples; + +import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; +import com.graphhopper.jsprit.core.algorithm.box.Jsprit; +import com.graphhopper.jsprit.core.algorithm.state.StateManager; +import com.graphhopper.jsprit.core.algorithm.state.UpdateActivityTimes; +import com.graphhopper.jsprit.core.algorithm.state.UpdateEndLocationIfRouteIsOpen; +import com.graphhopper.jsprit.core.problem.Location; +import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; +import com.graphhopper.jsprit.core.problem.constraint.ConstraintManager; +import com.graphhopper.jsprit.core.problem.job.Service; +import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; +import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; +import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl.Builder; +import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; +import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; +import com.graphhopper.jsprit.core.reporting.SolutionPrinter; +import com.graphhopper.jsprit.core.util.Solutions; + +import java.util.Collection; + + +public class SimpleExampleWithoutLocation { + + + public static void main(String[] args) { + + VehicleTypeImpl.Builder vehicleTypeBuilder = VehicleTypeImpl.Builder.newInstance("vehicleType").addCapacityDimension(0, 2); + VehicleType vehicleType = vehicleTypeBuilder.build(); + + /* + * get a vehicle-builder and build a vehicle located at (10,10) with type "vehicleType" + */ + Builder vehicleBuilder = Builder.newInstance("vehicle"); + vehicleBuilder.setStartLocation(Location.newInstance(10, 10)); + vehicleBuilder.setType(vehicleType); + VehicleImpl vehicle = vehicleBuilder.build(); + + /* + * build services at the required locations, each with a capacity-demand of 1. + */ + Service service1 = Service.Builder.newInstance("1").setServiceTime(3600).build(); + Service service2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(Location.newInstance(5, 13)).build(); + + Service service3 = Service.Builder.newInstance("3").addSizeDimension(0, 1).setLocation(Location.newInstance(15, 7)).build(); + Service service4 = Service.Builder.newInstance("4").addSizeDimension(0, 1).setLocation(Location.newInstance(15, 13)).build(); + + + VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); + vrpBuilder.addVehicle(vehicle); + vrpBuilder.addJob(service1).addJob(service2).addJob(service3).addJob(service4); + + VehicleRoutingProblem problem = vrpBuilder.build(); + + /* + * get the algorithm out-of-the-box. + */ + StateManager stateManager = new StateManager(problem); + stateManager.addStateUpdater(new UpdateEndLocationIfRouteIsOpen()); +// stateManager.addStateUpdater(new UpdateActivityNextLocations(stateManager)); +// stateManager.addStateUpdater(new UpdateActivityPrevLocations(stateManager)); +// stateManager.addStateUpdater(new UpdateActivityLocations()); + stateManager.addStateUpdater(new UpdateActivityTimes(problem.getTransportCosts(), problem.getActivityCosts())); + + ConstraintManager constraintManager = new ConstraintManager(problem, stateManager); + + Jsprit.Builder builder = Jsprit.Builder.newInstance(problem); + builder.setStateAndConstraintManager(stateManager, constraintManager); + builder.addCoreStateAndConstraintStuff(false); + builder.setProperty(Jsprit.Strategy.RADIAL_BEST, "0.0") + .setProperty(Jsprit.Strategy.RADIAL_REGRET, "0.0") + .setProperty(Jsprit.Strategy.CLUSTER_BEST, "0.0") + .setProperty(Jsprit.Strategy.CLUSTER_REGRET, "0.0") + .setProperty(Jsprit.Strategy.STRING_BEST, "0.0") + .setProperty(Jsprit.Strategy.STRING_REGRET, "0.0") + .setProperty(Jsprit.Strategy.RANDOM_REGRET, "0.0") + .setProperty(Jsprit.Strategy.WORST_REGRET, "0.0") + + .setProperty(Jsprit.Parameter.CONSTRUCTION, Jsprit.Construction.BEST_INSERTION.toString()); + + VehicleRoutingAlgorithm algorithm = builder.buildAlgorithm(); + + /* + * and search a solution + */ + Collection solutions = algorithm.searchSolutions(); + + /* + * get the best + */ + VehicleRoutingProblemSolution bestSolution = Solutions.bestOf(solutions); + +// new VrpXMLWriter(problem, solutions).write("output/problem-with-solution.xml"); + + SolutionPrinter.print(problem, bestSolution, SolutionPrinter.Print.VERBOSE); + +// /* +// * plot +// */ +// new Plotter(problem,bestSolution).plot("output/plot.png","simple example"); +// +// /* +// render problem and solution with GraphStream +// */ +// new GraphStreamViewer(problem, bestSolution).labelWith(Label.ID).setRenderDelay(200).display(); + } + +} From f3381ecb60d53a888c5f50f6e4a5e946a45dc44d Mon Sep 17 00:00:00 2001 From: oblonski Date: Tue, 24 Mar 2020 15:23:16 +0100 Subject: [PATCH 075/191] create neighborhood only for jobs with location --- .../jsprit/core/algorithm/ruin/JobNeighborhoodsOptimized.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsOptimized.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsOptimized.java index 34e9ae333..631233ca6 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsOptimized.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsOptimized.java @@ -98,7 +98,7 @@ public Iterator getNearestNeighborsIterator(int nNeighbors, Job neighborTo) if (neighborTo.getIndex() == 0) { return Collections.emptyIterator(); } - + int[] neighbors = this.neighbors[neighborTo.getIndex()-1]; return new ArrayIterator(nNeighbors,neighbors,jobs); } @@ -120,9 +120,11 @@ private void calculateDistancesFromJob2Job() { StopWatch stopWatch = new StopWatch(); stopWatch.start(); for (Job job_i : vrp.getJobsInclusiveInitialJobsInRoutes().values()) { + if (job_i.getActivities().get(0).getLocation() == null) continue; jobs[job_i.getIndex()] = job_i; List jobList = new ArrayList(vrp.getJobsInclusiveInitialJobsInRoutes().values().size()); for (Job job_j : vrp.getJobsInclusiveInitialJobsInRoutes().values()) { + if (job_j.getActivities().get(0).getLocation() == null) continue; if (job_i == job_j) continue; double distance = jobDistance.getDistance(job_i, job_j); if (distance > maxDistance) maxDistance = distance; From f0625d729d1c190a649b47f137e2e6888e89a861 Mon Sep 17 00:00:00 2001 From: oblonski Date: Tue, 24 Mar 2020 15:23:37 +0100 Subject: [PATCH 076/191] relax location constraint --- .../java/com/graphhopper/jsprit/core/problem/job/Service.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Service.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Service.java index 7d0067f5d..0b24881c1 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Service.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Service.java @@ -210,7 +210,7 @@ public Builder addAllTimeWindows(Collection timeWindows) { * @throws IllegalArgumentException if neither locationId nor coordinate is set. */ public T build() { - if (location == null) throw new IllegalArgumentException("The location of service " + id + " is missing."); +// if (location == null) throw new IllegalArgumentException("The location of service " + id + " is missing."); this.setType("service"); capacity = capacityBuilder.build(); skills = skillBuilder.build(); From 3b02e27c1a04effbae66e48dc38e0b9916c0b6d4 Mon Sep 17 00:00:00 2001 From: oblonski Date: Tue, 24 Mar 2020 15:31:51 +0100 Subject: [PATCH 077/191] determine location --- ...LocalActivityInsertionCostsCalculator.java | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/LocalActivityInsertionCostsCalculator.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/LocalActivityInsertionCostsCalculator.java index 3e0725fea..69899eae8 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/LocalActivityInsertionCostsCalculator.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/LocalActivityInsertionCostsCalculator.java @@ -19,9 +19,11 @@ package com.graphhopper.jsprit.core.algorithm.recreate; import com.graphhopper.jsprit.core.algorithm.state.InternalStates; +import com.graphhopper.jsprit.core.problem.Location; import com.graphhopper.jsprit.core.problem.cost.VehicleRoutingActivityCosts; import com.graphhopper.jsprit.core.problem.cost.VehicleRoutingTransportCosts; import com.graphhopper.jsprit.core.problem.misc.JobInsertionContext; +import com.graphhopper.jsprit.core.problem.solution.route.activity.ActWithoutStaticLocation; import com.graphhopper.jsprit.core.problem.solution.route.activity.DeliverShipment; import com.graphhopper.jsprit.core.problem.solution.route.activity.End; import com.graphhopper.jsprit.core.problem.solution.route.activity.TourActivity; @@ -58,9 +60,15 @@ public LocalActivityInsertionCostsCalculator(VehicleRoutingTransportCosts routin @Override public double getCosts(JobInsertionContext iFacts, TourActivity prevAct, TourActivity nextAct, TourActivity newAct, double depTimeAtPrevAct) { - - double tp_costs_prevAct_newAct = routingCosts.getTransportCost(prevAct.getLocation(), newAct.getLocation(), depTimeAtPrevAct, iFacts.getNewDriver(), iFacts.getNewVehicle()); - double tp_time_prevAct_newAct = routingCosts.getTransportTime(prevAct.getLocation(), newAct.getLocation(), depTimeAtPrevAct, iFacts.getNewDriver(), iFacts.getNewVehicle()); + Location prevLocation = prevAct.getLocation(); + if (prevAct instanceof ActWithoutStaticLocation) ((ActWithoutStaticLocation) prevAct).getPreviousLocation(); + Location newLocation = newAct.getLocation(); + if (newAct instanceof ActWithoutStaticLocation) newLocation = prevLocation; + Location nextLocation = nextAct.getLocation(); + if (nextAct instanceof ActWithoutStaticLocation) ((ActWithoutStaticLocation) nextAct).getNextLocation(); + + double tp_costs_prevAct_newAct = routingCosts.getTransportCost(prevLocation, newLocation, depTimeAtPrevAct, iFacts.getNewDriver(), iFacts.getNewVehicle()); + double tp_time_prevAct_newAct = routingCosts.getTransportTime(prevLocation, newLocation, depTimeAtPrevAct, iFacts.getNewDriver(), iFacts.getNewVehicle()); double newAct_arrTime = depTimeAtPrevAct + tp_time_prevAct_newAct; double newAct_endTime = Math.max(newAct_arrTime, newAct.getTheoreticalEarliestOperationStartTime()) + activityCosts.getActivityDuration(newAct, newAct_arrTime, iFacts.getNewDriver(), iFacts.getNewVehicle()); @@ -68,8 +76,9 @@ public double getCosts(JobInsertionContext iFacts, TourActivity prevAct, TourAct if (isEnd(nextAct) && !toDepot(iFacts.getNewVehicle())) return tp_costs_prevAct_newAct + solutionCompletenessRatio * activityCostsWeight * act_costs_newAct; - double tp_costs_newAct_nextAct = routingCosts.getTransportCost(newAct.getLocation(), nextAct.getLocation(), newAct_endTime, iFacts.getNewDriver(), iFacts.getNewVehicle()); - double tp_time_newAct_nextAct = routingCosts.getTransportTime(newAct.getLocation(), nextAct.getLocation(), newAct_endTime, iFacts.getNewDriver(), iFacts.getNewVehicle()); + + double tp_costs_newAct_nextAct = routingCosts.getTransportCost(newLocation, nextLocation, newAct_endTime, iFacts.getNewDriver(), iFacts.getNewVehicle()); + double tp_time_newAct_nextAct = routingCosts.getTransportTime(newLocation, nextLocation, newAct_endTime, iFacts.getNewDriver(), iFacts.getNewVehicle()); double nextAct_arrTime = newAct_endTime + tp_time_newAct_nextAct; double endTime_nextAct_new = Math.max(nextAct_arrTime, nextAct.getTheoreticalEarliestOperationStartTime()) + activityCosts.getActivityDuration(nextAct, nextAct_arrTime, iFacts.getNewDriver(), iFacts.getNewVehicle()); double act_costs_nextAct = activityCosts.getActivityCost(nextAct, nextAct_arrTime, iFacts.getNewDriver(), iFacts.getNewVehicle()); @@ -80,11 +89,11 @@ public double getCosts(JobInsertionContext iFacts, TourActivity prevAct, TourAct if (iFacts.getRoute().isEmpty()) { double tp_costs_prevAct_nextAct = 0.; if (newAct instanceof DeliverShipment) - tp_costs_prevAct_nextAct = routingCosts.getTransportCost(prevAct.getLocation(), nextAct.getLocation(), depTimeAtPrevAct, iFacts.getNewDriver(), iFacts.getNewVehicle()); + tp_costs_prevAct_nextAct = routingCosts.getTransportCost(prevLocation, nextLocation, depTimeAtPrevAct, iFacts.getNewDriver(), iFacts.getNewVehicle()); oldCosts += tp_costs_prevAct_nextAct; } else { - double tp_costs_prevAct_nextAct = routingCosts.getTransportCost(prevAct.getLocation(), nextAct.getLocation(), prevAct.getEndTime(), iFacts.getRoute().getDriver(), iFacts.getRoute().getVehicle()); - double arrTime_nextAct = depTimeAtPrevAct + routingCosts.getTransportTime(prevAct.getLocation(), nextAct.getLocation(), prevAct.getEndTime(), iFacts.getRoute().getDriver(), iFacts.getRoute().getVehicle()); + double tp_costs_prevAct_nextAct = routingCosts.getTransportCost(prevLocation, nextLocation, prevAct.getEndTime(), iFacts.getRoute().getDriver(), iFacts.getRoute().getVehicle()); + double arrTime_nextAct = depTimeAtPrevAct + routingCosts.getTransportTime(prevLocation, nextLocation, prevAct.getEndTime(), iFacts.getRoute().getDriver(), iFacts.getRoute().getVehicle()); double endTime_nextAct_old = Math.max(arrTime_nextAct, nextAct.getTheoreticalEarliestOperationStartTime()) + activityCosts.getActivityDuration(nextAct, arrTime_nextAct, iFacts.getRoute().getDriver(),iFacts.getRoute().getVehicle()); double actCost_nextAct = activityCosts.getActivityCost(nextAct, arrTime_nextAct, iFacts.getRoute().getDriver(), iFacts.getRoute().getVehicle()); From a05bdf717366374d2f8560bf78dd4ad69391f29a Mon Sep 17 00:00:00 2001 From: oblonski Date: Tue, 24 Mar 2020 15:50:44 +0100 Subject: [PATCH 078/191] update prev and next locations for act without static location --- .../state/UpdateActivityNextLocations.java | 64 ++++++++++++++++++ .../state/UpdateActivityPrevLocations.java | 66 +++++++++++++++++++ 2 files changed, 130 insertions(+) create mode 100644 jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/UpdateActivityNextLocations.java create mode 100644 jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/UpdateActivityPrevLocations.java diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/UpdateActivityNextLocations.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/UpdateActivityNextLocations.java new file mode 100644 index 000000000..cf1eecbfb --- /dev/null +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/UpdateActivityNextLocations.java @@ -0,0 +1,64 @@ +/* + * Licensed to GraphHopper GmbH under one or more contributor + * license agreements. See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + * + * GraphHopper GmbH licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.graphhopper.jsprit.core.algorithm.state; + +import com.graphhopper.jsprit.core.problem.Location; +import com.graphhopper.jsprit.core.problem.solution.route.RouteVisitor; +import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; +import com.graphhopper.jsprit.core.problem.solution.route.activity.ActWithoutStaticLocation; +import com.graphhopper.jsprit.core.problem.solution.route.activity.TourActivity; + +import java.util.Iterator; + + +/** + * Updates arrival and end times of activities. + *

+ *

Note that this modifies arrTime and endTime of each activity in a route. + * + * @author stefan + */ +public class UpdateActivityNextLocations implements RouteVisitor, StateUpdater { + + private Location lastLocation; + + @Override + public void visit(VehicleRoute route) { + begin(route); + Iterator revIterator = route.getTourActivities().reverseActivityIterator(); + while (revIterator.hasNext()) { + visit(revIterator.next()); + } + finish(); + } + + public void begin(VehicleRoute route) { + this.lastLocation = route.getEnd().getLocation(); + } + + public void visit(TourActivity activity) { + if (activity instanceof ActWithoutStaticLocation) { + ((ActWithoutStaticLocation) activity).setNextLocation(lastLocation); + } else lastLocation = activity.getLocation(); + } + + public void finish() { + + } + +} diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/UpdateActivityPrevLocations.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/UpdateActivityPrevLocations.java new file mode 100644 index 000000000..69acae9d1 --- /dev/null +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/UpdateActivityPrevLocations.java @@ -0,0 +1,66 @@ +/* + * Licensed to GraphHopper GmbH under one or more contributor + * license agreements. See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + * + * GraphHopper GmbH licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.graphhopper.jsprit.core.algorithm.state; + +import com.graphhopper.jsprit.core.problem.Location; +import com.graphhopper.jsprit.core.problem.solution.route.RouteVisitor; +import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; +import com.graphhopper.jsprit.core.problem.solution.route.activity.ActWithoutStaticLocation; +import com.graphhopper.jsprit.core.problem.solution.route.activity.TourActivity; + +import java.util.Iterator; + + +/** + * Updates arrival and end times of activities. + *

+ *

Note that this modifies arrTime and endTime of each activity in a route. + * + * @author stefan + */ +public class UpdateActivityPrevLocations implements RouteVisitor, StateUpdater { + + private Location lastLocation; + + @Override + public void visit(VehicleRoute route) { + begin(route); + Iterator iterator = route.getTourActivities().iterator(); + while (iterator.hasNext()) { + visit(iterator.next()); + } + finish(); + } + + public void begin(VehicleRoute route) { + this.lastLocation = route.getStart().getLocation(); + } + + + public void visit(TourActivity activity) { + if (activity instanceof ActWithoutStaticLocation) { + ((ActWithoutStaticLocation) activity).setPreviousLocation(lastLocation); + } else lastLocation = activity.getLocation(); + } + + + public void finish() { + + } + +} From eefef77b446907409a5c970711f4d92960f6725a Mon Sep 17 00:00:00 2001 From: oblonski Date: Tue, 24 Mar 2020 15:51:03 +0100 Subject: [PATCH 079/191] refine toString --- .../problem/solution/route/activity/ServiceActivity.java | 2 +- .../jsprit/examples/SimpleExampleWithoutLocation.java | 8 +++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/ServiceActivity.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/ServiceActivity.java index 76bc09cb0..f22f894b2 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/ServiceActivity.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/ServiceActivity.java @@ -153,7 +153,7 @@ public Service getJob() { @Override public String toString() { - return "[type=" + getName() + "][locationId=" + getLocation().getId() + return "[type=" + getName() + "][location=" + getLocation() + "][size=" + getSize().toString() + "][twStart=" + Activities.round(getTheoreticalEarliestOperationStartTime()) + "][twEnd=" + Activities.round(getTheoreticalLatestOperationStartTime()) + "]"; diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleExampleWithoutLocation.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleExampleWithoutLocation.java index 008fb150e..582512342 100644 --- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleExampleWithoutLocation.java +++ b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleExampleWithoutLocation.java @@ -19,9 +19,7 @@ import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; import com.graphhopper.jsprit.core.algorithm.box.Jsprit; -import com.graphhopper.jsprit.core.algorithm.state.StateManager; -import com.graphhopper.jsprit.core.algorithm.state.UpdateActivityTimes; -import com.graphhopper.jsprit.core.algorithm.state.UpdateEndLocationIfRouteIsOpen; +import com.graphhopper.jsprit.core.algorithm.state.*; import com.graphhopper.jsprit.core.problem.Location; import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; import com.graphhopper.jsprit.core.problem.constraint.ConstraintManager; @@ -74,8 +72,8 @@ public static void main(String[] args) { */ StateManager stateManager = new StateManager(problem); stateManager.addStateUpdater(new UpdateEndLocationIfRouteIsOpen()); -// stateManager.addStateUpdater(new UpdateActivityNextLocations(stateManager)); -// stateManager.addStateUpdater(new UpdateActivityPrevLocations(stateManager)); + stateManager.addStateUpdater(new UpdateActivityNextLocations()); + stateManager.addStateUpdater(new UpdateActivityPrevLocations()); // stateManager.addStateUpdater(new UpdateActivityLocations()); stateManager.addStateUpdater(new UpdateActivityTimes(problem.getTransportCosts(), problem.getActivityCosts())); From cc3da50d18909912ee6e110ed9679d83a603c832 Mon Sep 17 00:00:00 2001 From: oblonski Date: Tue, 24 Mar 2020 16:13:58 +0100 Subject: [PATCH 080/191] duplicate act without static location --- .../solution/route/activity/ActWithoutStaticLocation.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/ActWithoutStaticLocation.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/ActWithoutStaticLocation.java index 6eebdc796..58e2e85c7 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/ActWithoutStaticLocation.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/ActWithoutStaticLocation.java @@ -56,4 +56,9 @@ public void setPreviousLocation(Location previousLocation) { public void setNextLocation(Location nextLocation) { this.nextLocation = nextLocation; } + + @Override + public TourActivity duplicate() { + return new ActWithoutStaticLocation(this); + } } From 31961c7265be24f83b382f5a3e86b96cf45fe21b Mon Sep 17 00:00:00 2001 From: oblonski Date: Tue, 24 Mar 2020 16:32:56 +0100 Subject: [PATCH 081/191] adapt index for neighborhood --- .../core/algorithm/ruin/JobNeighborhoodsOptimized.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsOptimized.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsOptimized.java index 631233ca6..df37141f7 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsOptimized.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsOptimized.java @@ -132,8 +132,9 @@ private void calculateDistancesFromJob2Job() { jobList.add(referencedJob); } Collections.sort(jobList,getComparator()); - int[] jobIndices = new int[capacity]; - for(int index=0;index Date: Tue, 24 Mar 2020 16:33:19 +0100 Subject: [PATCH 082/191] add updater --- .../SimpleWithoutLocationExample2.java | 129 ++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleWithoutLocationExample2.java diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleWithoutLocationExample2.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleWithoutLocationExample2.java new file mode 100644 index 000000000..c37338833 --- /dev/null +++ b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleWithoutLocationExample2.java @@ -0,0 +1,129 @@ +/* + * Licensed to GraphHopper GmbH under one or more contributor + * license agreements. See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + * + * GraphHopper GmbH licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.graphhopper.jsprit.examples; + +import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; +import com.graphhopper.jsprit.core.algorithm.box.Jsprit; +import com.graphhopper.jsprit.core.algorithm.state.StateManager; +import com.graphhopper.jsprit.core.algorithm.state.UpdateActivityNextLocations; +import com.graphhopper.jsprit.core.algorithm.state.UpdateActivityPrevLocations; +import com.graphhopper.jsprit.core.algorithm.state.UpdateActivityTimes; +import com.graphhopper.jsprit.core.problem.Location; +import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; +import com.graphhopper.jsprit.core.problem.constraint.ConstraintManager; +import com.graphhopper.jsprit.core.problem.job.Service; +import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; +import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; +import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl.Builder; +import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; +import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; +import com.graphhopper.jsprit.core.reporting.SolutionPrinter; +import com.graphhopper.jsprit.core.util.Solutions; + +import java.util.Collection; + + +public class SimpleWithoutLocationExample2 { + + + public static void main(String[] args) { + + VehicleTypeImpl.Builder vehicleTypeBuilder = VehicleTypeImpl.Builder.newInstance("vehicleType").setCostPerWaitingTime(1.0).addCapacityDimension(0, 3); + VehicleType vehicleType = vehicleTypeBuilder.build(); + + /* + * get a vehicle-builder and build a vehicle located at (10,10) with type "vehicleType" + */ + Builder vehicleBuilder = Builder.newInstance("vehicle"); + vehicleBuilder.setStartLocation(Location.newInstance(0, 0)); + vehicleBuilder.setType(vehicleType); + VehicleImpl vehicle = vehicleBuilder.build(); + + /* + * build services at the required locations, each with a capacity-demand of 1. + */ + Service telco1 = Service.Builder.newInstance("telco-1").addTimeWindow(1000, 3000).setServiceTime(1800).build(); + Service telco2 = Service.Builder.newInstance("telco-2").addTimeWindow(2000, 4000).setServiceTime(1800).build(); + Service breakAct = Service.Builder.newInstance("break").addTimeWindow(1000, 5000).setServiceTime(3600).build(); + Service service2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 1000)).build(); + Service service3 = Service.Builder.newInstance("3").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 2000)).build(); + Service service4 = Service.Builder.newInstance("4").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 3000)).build(); + + + VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); + vrpBuilder.setFleetSize(VehicleRoutingProblem.FleetSize.FINITE); + vrpBuilder.addVehicle(vehicle); + vrpBuilder.addJob(telco1).addJob(telco2).addJob(breakAct).addJob(service2).addJob(service3).addJob(service4); + + VehicleRoutingProblem problem = vrpBuilder.build(); + + /* + * get the algorithm out-of-the-box. + */ + StateManager stateManager = new StateManager(problem); +// stateManager.addStateUpdater(new UpdateEndLocationIfRouteIsOpen()); + stateManager.addStateUpdater(new UpdateActivityNextLocations()); + stateManager.addStateUpdater(new UpdateActivityPrevLocations()); +// stateManager.addStateUpdater(new UpdateActivityLocations()); + stateManager.addStateUpdater(new UpdateActivityTimes(problem.getTransportCosts(), problem.getActivityCosts())); +// + ConstraintManager constraintManager = new ConstraintManager(problem, stateManager); + + Jsprit.Builder builder = Jsprit.Builder.newInstance(problem); + builder.setStateAndConstraintManager(stateManager, constraintManager); +// builder.addCoreStateAndConstraintStuff(false); + builder +// .setProperty(Jsprit.Strategy.RADIAL_BEST, "0.0") +// .setProperty(Jsprit.Strategy.RADIAL_REGRET, "0.0") +// .setProperty(Jsprit.Strategy.CLUSTER_BEST, "0.0") +// .setProperty(Jsprit.Strategy.CLUSTER_REGRET, "0.0") + .setProperty(Jsprit.Strategy.STRING_BEST, "0.5") +// .setProperty(Jsprit.Strategy.STRING_REGRET, "0.0") +// .setProperty(Jsprit.Strategy.RANDOM_REGRET, "0.0") +// .setProperty(Jsprit.Strategy.WORST_REGRET, "0.0") + + .setProperty(Jsprit.Parameter.CONSTRUCTION, Jsprit.Construction.BEST_INSERTION.toString()); + + VehicleRoutingAlgorithm algorithm = builder.buildAlgorithm(); + + /* + * and search a solution + */ + Collection solutions = algorithm.searchSolutions(); + + /* + * get the best + */ + VehicleRoutingProblemSolution bestSolution = Solutions.bestOf(solutions); + +// new VrpXMLWriter(problem, solutions).write("output/problem-with-solution.xml"); + + SolutionPrinter.print(problem, bestSolution, SolutionPrinter.Print.VERBOSE); + +// /* +// * plot +// */ +// new Plotter(problem,bestSolution).plot("output/plot.png","simple example"); +// +// /* +// render problem and solution with GraphStream +// */ +// new GraphStreamViewer(problem, bestSolution).labelWith(Label.ID).setRenderDelay(200).display(); + } + +} From 279d934affdaf758624aa8151381a9966d17862c Mon Sep 17 00:00:00 2001 From: oblonski Date: Tue, 24 Mar 2020 17:45:40 +0100 Subject: [PATCH 083/191] add updater to update locations --- .../com/graphhopper/jsprit/analysis/toolbox/Plotter.java | 1 + .../graphhopper/jsprit/core/algorithm/AlgorithmUtil.java | 8 +++----- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/jsprit-analysis/src/main/java/com/graphhopper/jsprit/analysis/toolbox/Plotter.java b/jsprit-analysis/src/main/java/com/graphhopper/jsprit/analysis/toolbox/Plotter.java index 6c36424cc..00b69c800 100644 --- a/jsprit-analysis/src/main/java/com/graphhopper/jsprit/analysis/toolbox/Plotter.java +++ b/jsprit-analysis/src/main/java/com/graphhopper/jsprit/analysis/toolbox/Plotter.java @@ -514,6 +514,7 @@ private XYSeriesCollection makeShipmentSeries(Collection jobs) { private void addJob(XYSeries activities, Job job) { for (com.graphhopper.jsprit.core.problem.job.Activity act : job.getActivities()) { + if (act.getLocation() == null) continue; XYDataItem dataItem = new XYDataItem(getCoordinate(act.getLocation().getCoordinate()).getX() * scalingFactor, getCoordinate(act.getLocation().getCoordinate()).getY() * scalingFactor); activities.add(dataItem); addLabel(job, dataItem); diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/AlgorithmUtil.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/AlgorithmUtil.java index 0cdd76ce7..b51e2f1fd 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/AlgorithmUtil.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/AlgorithmUtil.java @@ -22,12 +22,7 @@ import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; import com.graphhopper.jsprit.core.problem.constraint.ConstraintManager; import com.graphhopper.jsprit.core.problem.constraint.SwitchNotFeasible; -import com.graphhopper.jsprit.core.problem.job.Job; -import com.graphhopper.jsprit.core.problem.solution.SolutionCostCalculator; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; -import com.graphhopper.jsprit.core.problem.solution.route.activity.BreakActivity; -import com.graphhopper.jsprit.core.problem.solution.route.activity.TourActivity; import com.graphhopper.jsprit.core.problem.vehicle.Vehicle; import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeKey; import com.graphhopper.jsprit.core.util.ActivityTimeTracker; @@ -73,6 +68,9 @@ public Collection get(VehicleRoute vehicleRoute) { stateManager.addStateUpdater(twUpdater); stateManager.updateSkillStates(); + stateManager.addStateUpdater(new UpdateActivityNextLocations()); + stateManager.addStateUpdater(new UpdateActivityPrevLocations()); + stateManager.addStateUpdater(new UpdateActivityTimes(vrp.getTransportCosts(), ActivityTimeTracker.ActivityPolicy.AS_SOON_AS_TIME_WINDOW_OPENS, vrp.getActivityCosts())); stateManager.addStateUpdater(new UpdateVariableCosts(vrp.getActivityCosts(), vrp.getTransportCosts(), stateManager)); stateManager.addStateUpdater(new UpdateFutureWaitingTimes(stateManager, vrp.getTransportCosts())); From 9a086f8e535407965911e4a49c66c5426e1a694d Mon Sep 17 00:00:00 2001 From: oblonski Date: Tue, 24 Mar 2020 17:46:36 +0100 Subject: [PATCH 084/191] handle acts without location --- .../algorithm/recreate/DefaultScorer.java | 1 + .../core/algorithm/ruin/RuinRadial.java | 15 ++++++++++-- ...VehicleDependentTimeWindowConstraints.java | 23 ++++++++++++------- 3 files changed, 29 insertions(+), 10 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/DefaultScorer.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/DefaultScorer.java index 15ee59fce..a269245d2 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/DefaultScorer.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/DefaultScorer.java @@ -79,6 +79,7 @@ private TimeWindow getLargestTimeWindow(Activity act) { private double getDistance(Location loc1, Location loc2) { + if (loc1 == null || loc2 == null) return 0d; return vrp.getTransportCosts().getTransportCost(loc1, loc2, 0., null, null); } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinRadial.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinRadial.java index e4ea4fc20..382a842ab 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinRadial.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinRadial.java @@ -123,16 +123,27 @@ public Collection ruinRoutes(Collection vehicleRoutes) { if (nOfJobs2BeRemoved == 0) { return Collections.emptyList(); } - Job randomJob = RandomUtils.nextJob(vrp.getJobs().values(), random); + List jobs = getJobsWithLocation(vrp.getJobs().values()); + Job randomJob = RandomUtils.nextJob(jobs, random); return ruinRoutes(vehicleRoutes, randomJob, nOfJobs2BeRemoved); } + private List getJobsWithLocation(Collection jobs) { + List jobsWithLocation = new ArrayList<>(); + for (Job j : jobs) { + if (j.getActivities().get(0).getLocation() != null) { + jobsWithLocation.add(j); + } + } + return jobsWithLocation; + } + /** * Removes targetJob and its neighborhood and returns the removed jobs. * */ private Collection ruinRoutes(Collection vehicleRoutes, Job targetJob, int nOfJobs2BeRemoved) { - List unassignedJobs = new ArrayList(); + List unassignedJobs = new ArrayList<>(); int nNeighbors = nOfJobs2BeRemoved - 1; removeJob(targetJob, vehicleRoutes); unassignedJobs.add(targetJob); diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/constraint/VehicleDependentTimeWindowConstraints.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/constraint/VehicleDependentTimeWindowConstraints.java index 36fc4ce66..f215c0873 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/constraint/VehicleDependentTimeWindowConstraints.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/constraint/VehicleDependentTimeWindowConstraints.java @@ -23,6 +23,7 @@ import com.graphhopper.jsprit.core.problem.cost.VehicleRoutingActivityCosts; import com.graphhopper.jsprit.core.problem.cost.VehicleRoutingTransportCosts; import com.graphhopper.jsprit.core.problem.misc.JobInsertionContext; +import com.graphhopper.jsprit.core.problem.solution.route.activity.ActWithoutStaticLocation; import com.graphhopper.jsprit.core.problem.solution.route.activity.End; import com.graphhopper.jsprit.core.problem.solution.route.activity.TourActivity; import com.graphhopper.jsprit.core.problem.solution.route.state.RouteAndActivityStateGetter; @@ -50,19 +51,24 @@ public VehicleDependentTimeWindowConstraints(RouteAndActivityStateGetter states, public ConstraintsStatus fulfilled(JobInsertionContext iFacts, TourActivity prevAct, TourActivity newAct, TourActivity nextAct, double prevActDepTime) { double latestVehicleArrival = iFacts.getNewVehicle().getLatestArrival(); Double latestArrTimeAtNextAct; - Location nextActLocation; + Location prevLocation = prevAct.getLocation(); + if (prevAct instanceof ActWithoutStaticLocation) ((ActWithoutStaticLocation) prevAct).getPreviousLocation(); + Location newLocation = newAct.getLocation(); + if (newAct instanceof ActWithoutStaticLocation) newLocation = prevLocation; + Location nextLocation = nextAct.getLocation(); + if (nextAct instanceof ActWithoutStaticLocation) ((ActWithoutStaticLocation) nextAct).getNextLocation(); if (nextAct instanceof End) { latestArrTimeAtNextAct = latestVehicleArrival; - nextActLocation = iFacts.getNewVehicle().getEndLocation(); + nextLocation = iFacts.getNewVehicle().getEndLocation(); if (!iFacts.getNewVehicle().isReturnToDepot()) { - nextActLocation = newAct.getLocation(); + nextLocation = newLocation; } } else { latestArrTimeAtNextAct = states.getActivityState(nextAct, iFacts.getNewVehicle(), InternalStates.LATEST_OPERATION_START_TIME, Double.class); if (latestArrTimeAtNextAct == null) {//otherwise set it to theoretical_latest_operation_startTime latestArrTimeAtNextAct = nextAct.getTheoreticalLatestOperationStartTime(); } - nextActLocation = nextAct.getLocation(); +// nextLocation = nextAct.getLocation(); } /* @@ -95,7 +101,8 @@ public ConstraintsStatus fulfilled(JobInsertionContext iFacts, TourActivity prev * |- earliest arrival of vehicle * |--- nextAct ---| */ - double arrTimeAtNextOnDirectRouteWithNewVehicle = prevActDepTime + routingCosts.getTransportTime(prevAct.getLocation(), nextActLocation, prevActDepTime, iFacts.getNewDriver(), iFacts.getNewVehicle()); + + double arrTimeAtNextOnDirectRouteWithNewVehicle = prevActDepTime + routingCosts.getTransportTime(prevLocation, nextLocation, prevActDepTime, iFacts.getNewDriver(), iFacts.getNewVehicle()); if (arrTimeAtNextOnDirectRouteWithNewVehicle > latestArrTimeAtNextAct) { return ConstraintsStatus.NOT_FULFILLED_BREAK; } @@ -108,12 +115,12 @@ public ConstraintsStatus fulfilled(JobInsertionContext iFacts, TourActivity prev return ConstraintsStatus.NOT_FULFILLED; } // log.info("check insertion of " + newAct + " between " + prevAct + " and " + nextAct + ". prevActDepTime=" + prevActDepTime); - double arrTimeAtNewAct = prevActDepTime + routingCosts.getTransportTime(prevAct.getLocation(), newAct.getLocation(), prevActDepTime, iFacts.getNewDriver(), iFacts.getNewVehicle()); + double arrTimeAtNewAct = prevActDepTime + routingCosts.getTransportTime(prevLocation, newLocation, prevActDepTime, iFacts.getNewDriver(), iFacts.getNewVehicle()); double endTimeAtNewAct = Math.max(arrTimeAtNewAct, newAct.getTheoreticalEarliestOperationStartTime()) + activityCosts.getActivityDuration(newAct, arrTimeAtNewAct,iFacts.getNewDriver(),iFacts.getNewVehicle()); double latestArrTimeAtNewAct = Math.min(newAct.getTheoreticalLatestOperationStartTime(), latestArrTimeAtNextAct - - routingCosts.getBackwardTransportTime(newAct.getLocation(), nextActLocation, latestArrTimeAtNextAct, iFacts.getNewDriver(), iFacts.getNewVehicle()) + routingCosts.getBackwardTransportTime(newLocation, nextLocation, latestArrTimeAtNextAct, iFacts.getNewDriver(), iFacts.getNewVehicle()) - activityCosts.getActivityDuration(newAct, arrTimeAtNewAct, iFacts.getNewDriver(), iFacts.getNewVehicle()) ); @@ -133,7 +140,7 @@ public ConstraintsStatus fulfilled(JobInsertionContext iFacts, TourActivity prev } // log.info(newAct + " arrTime=" + arrTimeAtNewAct); - double arrTimeAtNextAct = endTimeAtNewAct + routingCosts.getTransportTime(newAct.getLocation(), nextActLocation, endTimeAtNewAct, iFacts.getNewDriver(), iFacts.getNewVehicle()); + double arrTimeAtNextAct = endTimeAtNewAct + routingCosts.getTransportTime(newLocation, nextLocation, endTimeAtNewAct, iFacts.getNewDriver(), iFacts.getNewVehicle()); /* * |--- newAct ---| From cfb6918c9cd125c5f72639528376a793d576eaf8 Mon Sep 17 00:00:00 2001 From: oblonski Date: Tue, 24 Mar 2020 17:47:03 +0100 Subject: [PATCH 085/191] rm service location test --- .../jsprit/core/problem/job/ServiceTest.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/job/ServiceTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/job/ServiceTest.java index 2840c93ec..2a1e4960b 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/job/ServiceTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/job/ServiceTest.java @@ -127,11 +127,11 @@ public void whenSettingLocationCoord_itShouldBeSetCorrectly() { assertEquals(2.0,s.getLocation().getCoordinate().getY(),0.01); } - @Test(expected = IllegalArgumentException.class) - public void whenSettingNeitherLocationIdNorCoord_throwsException() { - @SuppressWarnings("unused") - Service s = Service.Builder.newInstance("s").build(); - } +// @Test(expected = IllegalArgumentException.class) +// public void whenSettingNeitherLocationIdNorCoord_throwsException() { +// @SuppressWarnings("unused") +// Service s = Service.Builder.newInstance("s").build(); +// } @Test(expected = IllegalArgumentException.class) public void whenServiceTimeSmallerZero_throwIllegalStateException() { From 32761d8983bfeb9595d3ce6bd59db6945506171a Mon Sep 17 00:00:00 2001 From: oblonski Date: Tue, 24 Mar 2020 17:47:18 +0100 Subject: [PATCH 086/191] adjust example --- .../examples/SimpleWithoutLocationExample2.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleWithoutLocationExample2.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleWithoutLocationExample2.java index c37338833..7a241a23a 100644 --- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleWithoutLocationExample2.java +++ b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleWithoutLocationExample2.java @@ -17,6 +17,7 @@ */ package com.graphhopper.jsprit.examples; +import com.graphhopper.jsprit.analysis.toolbox.Plotter; import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; import com.graphhopper.jsprit.core.algorithm.box.Jsprit; import com.graphhopper.jsprit.core.algorithm.state.StateManager; @@ -57,9 +58,9 @@ public static void main(String[] args) { /* * build services at the required locations, each with a capacity-demand of 1. */ - Service telco1 = Service.Builder.newInstance("telco-1").addTimeWindow(1000, 3000).setServiceTime(1800).build(); - Service telco2 = Service.Builder.newInstance("telco-2").addTimeWindow(2000, 4000).setServiceTime(1800).build(); - Service breakAct = Service.Builder.newInstance("break").addTimeWindow(1000, 5000).setServiceTime(3600).build(); + Service telco1 = Service.Builder.newInstance("telco-1").addTimeWindow(1000, 2500).setServiceTime(1800).build(); + Service telco2 = Service.Builder.newInstance("telco-2").addTimeWindow(6000, 8000).setServiceTime(1800).build(); +// Service breakAct = Service.Builder.newInstance("break").addTimeWindow(1000, 5000).setServiceTime(3600).build(); Service service2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 1000)).build(); Service service3 = Service.Builder.newInstance("3").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 2000)).build(); Service service4 = Service.Builder.newInstance("4").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 3000)).build(); @@ -68,7 +69,9 @@ public static void main(String[] args) { VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); vrpBuilder.setFleetSize(VehicleRoutingProblem.FleetSize.FINITE); vrpBuilder.addVehicle(vehicle); - vrpBuilder.addJob(telco1).addJob(telco2).addJob(breakAct).addJob(service2).addJob(service3).addJob(service4); + vrpBuilder.addJob(telco1).addJob(telco2) +// .addJob(breakAct) + .addJob(service2).addJob(service3).addJob(service4); VehicleRoutingProblem problem = vrpBuilder.build(); @@ -92,7 +95,7 @@ public static void main(String[] args) { // .setProperty(Jsprit.Strategy.RADIAL_REGRET, "0.0") // .setProperty(Jsprit.Strategy.CLUSTER_BEST, "0.0") // .setProperty(Jsprit.Strategy.CLUSTER_REGRET, "0.0") - .setProperty(Jsprit.Strategy.STRING_BEST, "0.5") +// .setProperty(Jsprit.Strategy.STRING_BEST, "0.5") // .setProperty(Jsprit.Strategy.STRING_REGRET, "0.0") // .setProperty(Jsprit.Strategy.RANDOM_REGRET, "0.0") // .setProperty(Jsprit.Strategy.WORST_REGRET, "0.0") @@ -118,7 +121,7 @@ public static void main(String[] args) { // /* // * plot // */ -// new Plotter(problem,bestSolution).plot("output/plot.png","simple example"); + new Plotter(problem, bestSolution).plot("output/plot.png", "simple example"); // // /* // render problem and solution with GraphStream From 05fb1d2775002d1b0b884659fdb8bf02cdec82ba Mon Sep 17 00:00:00 2001 From: oblonski Date: Thu, 26 Mar 2020 14:09:57 +0100 Subject: [PATCH 087/191] add state updater --- .../graphhopper/jsprit/core/algorithm/AlgorithmUtil.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/AlgorithmUtil.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/AlgorithmUtil.java index b51e2f1fd..b75050760 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/AlgorithmUtil.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/AlgorithmUtil.java @@ -38,6 +38,9 @@ public class AlgorithmUtil { public static void addCoreConstraints(ConstraintManager constraintManager, StateManager stateManager, final VehicleRoutingProblem vrp){ + stateManager.addStateUpdater(new UpdateActivityNextLocations()); + stateManager.addStateUpdater(new UpdateActivityPrevLocations()); + constraintManager.addTimeWindowConstraint(); constraintManager.addLoadConstraint(); constraintManager.addSkillsConstraint(); @@ -68,9 +71,6 @@ public Collection get(VehicleRoute vehicleRoute) { stateManager.addStateUpdater(twUpdater); stateManager.updateSkillStates(); - stateManager.addStateUpdater(new UpdateActivityNextLocations()); - stateManager.addStateUpdater(new UpdateActivityPrevLocations()); - stateManager.addStateUpdater(new UpdateActivityTimes(vrp.getTransportCosts(), ActivityTimeTracker.ActivityPolicy.AS_SOON_AS_TIME_WINDOW_OPENS, vrp.getActivityCosts())); stateManager.addStateUpdater(new UpdateVariableCosts(vrp.getActivityCosts(), vrp.getTransportCosts(), stateManager)); stateManager.addStateUpdater(new UpdateFutureWaitingTimes(stateManager, vrp.getTransportCosts())); From f167b20c23813bc9af4d0eb65326757237c13d73 Mon Sep 17 00:00:00 2001 From: oblonski Date: Sat, 28 Mar 2020 17:31:18 +0100 Subject: [PATCH 088/191] clean up --- .../graphhopper/jsprit/core/algorithm/AlgorithmUtil.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/AlgorithmUtil.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/AlgorithmUtil.java index b75050760..3858a174a 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/AlgorithmUtil.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/AlgorithmUtil.java @@ -50,7 +50,7 @@ public static void addCoreConstraints(ConstraintManager constraintManager, State UpdateVehicleDependentPracticalTimeWindows twUpdater = new UpdateVehicleDependentPracticalTimeWindows(stateManager, vrp.getTransportCosts(), vrp.getActivityCosts()); twUpdater.setVehiclesToUpdate(new UpdateVehicleDependentPracticalTimeWindows.VehiclesToUpdate() { - Map uniqueTypes = new HashMap(); + Map uniqueTypes = new HashMap<>(); @Override public Collection get(VehicleRoute vehicleRoute) { @@ -61,9 +61,7 @@ public Collection get(VehicleRoute vehicleRoute) { } } } - Collection vehicles = new ArrayList(); - vehicles.addAll(uniqueTypes.values()); - return vehicles; + return new ArrayList<>(uniqueTypes.values()); } }); From 59add4a14a13c6ae700af41ad8ebc37b4cf2c6b9 Mon Sep 17 00:00:00 2001 From: oblonski Date: Sat, 28 Mar 2020 17:35:48 +0100 Subject: [PATCH 089/191] clean up --- .../core/algorithm/ruin/RuinClusters.java | 27 +++++-------------- 1 file changed, 7 insertions(+), 20 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinClusters.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinClusters.java index 4e00ac677..6158245ef 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinClusters.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinClusters.java @@ -80,12 +80,7 @@ public TourActivity.JobActivity getActivity() { public RuinClusters(VehicleRoutingProblem vrp, final int initialNumberJobsToRemove, JobNeighborhoods jobNeighborhoods) { super(vrp); this.vrp = vrp; - setRuinShareFactory(new RuinShareFactory() { - @Override - public int createNumberToBeRemoved() { - return initialNumberJobsToRemove; - } - }); + setRuinShareFactory(() -> initialNumberJobsToRemove); this.jobNeighborhoods = jobNeighborhoods; logger.debug("initialise {}", this); } @@ -101,7 +96,7 @@ public void setNoClusters(int noClusters) { */ @Override public Collection ruinRoutes(Collection vehicleRoutes) { - List unassignedJobs = new ArrayList(); + List unassignedJobs = new ArrayList<>(); int nOfJobs2BeRemoved = getRuinShareFactory().createNumberToBeRemoved(); ruin(vehicleRoutes, nOfJobs2BeRemoved, unassignedJobs); return unassignedJobs; @@ -112,10 +107,10 @@ private void ruin(Collection vehicleRoutes, int nOfJobs2BeRemoved, Map mappedRoutes = map(vehicleRoutes); int toRemove = nOfJobs2BeRemoved; - Collection lastRemoved = new ArrayList(); - Set ruined = new HashSet(); - Set removed = new HashSet(); - Set cycleCandidates = new HashSet(); + Collection lastRemoved = new ArrayList<>(); + Set ruined = new HashSet<>(); + Set removed = new HashSet<>(); + Set cycleCandidates = new HashSet<>(); while (toRemove > 0) { Job target; VehicleRoute targetRoute = null; @@ -157,16 +152,8 @@ private void ruin(Collection vehicleRoutes, int nOfJobs2BeRemoved, } } - private List wrap(List activities) { - List wl = new ArrayList(); - for (TourActivity act : activities) { - wl.add(new JobActivityWrapper((TourActivity.JobActivity) act)); - } - return wl; - } - private Map map(Collection vehicleRoutes) { - Map map = new HashMap(vrp.getJobs().size()); + Map map = new HashMap<>(vrp.getJobs().size()); for (VehicleRoute r : vehicleRoutes) { for (Job j : r.getTourActivities().getJobs()) { map.put(j, r); From 0cade3b8275f276691480c5b7a0761030c384800 Mon Sep 17 00:00:00 2001 From: oblonski Date: Sat, 28 Mar 2020 17:38:08 +0100 Subject: [PATCH 090/191] clean up --- .../jsprit/core/algorithm/ruin/RuinWorst.java | 23 ++++--------------- 1 file changed, 5 insertions(+), 18 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinWorst.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinWorst.java index 10c5cc422..04a6bd255 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinWorst.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinWorst.java @@ -39,17 +39,11 @@ public final class RuinWorst extends AbstractRuinStrategy { - private Logger logger = LoggerFactory.getLogger(RuinWorst.class); + private static Logger logger = LoggerFactory.getLogger(RuinWorst.class); private VehicleRoutingProblem vrp; - private NoiseMaker noiseMaker = new NoiseMaker() { - - @Override - public double makeNoise() { - return 0; - } - }; + private NoiseMaker noiseMaker = () -> 0; public void setNoiseMaker(NoiseMaker noiseMaker) { this.noiseMaker = noiseMaker; @@ -58,12 +52,7 @@ public void setNoiseMaker(NoiseMaker noiseMaker) { public RuinWorst(VehicleRoutingProblem vrp, final int initialNumberJobsToRemove) { super(vrp); this.vrp = vrp; - setRuinShareFactory(new RuinShareFactory() { - @Override - public int createNumberToBeRemoved() { - return initialNumberJobsToRemove; - } - }); + setRuinShareFactory(() -> initialNumberJobsToRemove); logger.debug("initialise {}", this); } @@ -74,20 +63,18 @@ public int createNumberToBeRemoved() { */ @Override public Collection ruinRoutes(Collection vehicleRoutes) { - List unassignedJobs = new ArrayList(); + List unassignedJobs = new ArrayList<>(); int nOfJobs2BeRemoved = getRuinShareFactory().createNumberToBeRemoved(); ruin(vehicleRoutes, nOfJobs2BeRemoved, unassignedJobs); return unassignedJobs; } private void ruin(Collection vehicleRoutes, int nOfJobs2BeRemoved, List unassignedJobs) { - LinkedList availableJobs = new LinkedList(vrp.getJobs().values()); int toRemove = nOfJobs2BeRemoved; while (toRemove > 0) { Job worst = getWorst(vehicleRoutes); if (worst == null) break; if (removeJob(worst, vehicleRoutes)) { - availableJobs.remove(worst); unassignedJobs.add(worst); } toRemove--; @@ -100,7 +87,7 @@ private Job getWorst(Collection copied) { for (VehicleRoute route : copied) { if (route.isEmpty()) continue; - Map savingsMap = new HashMap(); + Map savingsMap = new HashMap<>(); TourActivity actBefore = route.getStart(); TourActivity actToEval = null; for (TourActivity act : route.getActivities()) { From a3a4e6f21e41d2213098e7832919f541fe0a117a Mon Sep 17 00:00:00 2001 From: oblonski Date: Sat, 28 Mar 2020 17:39:23 +0100 Subject: [PATCH 091/191] clean up --- .../jsprit/core/algorithm/ruin/RuinRandom.java | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinRandom.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinRandom.java index 74a083745..385e4c6a6 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinRandom.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinRandom.java @@ -38,7 +38,7 @@ public final class RuinRandom extends AbstractRuinStrategy { - private Logger logger = LoggerFactory.getLogger(RuinRandom.class); + private static Logger logger = LoggerFactory.getLogger(RuinRandom.class); private VehicleRoutingProblem vrp; @@ -54,12 +54,7 @@ public RuinRandom(VehicleRoutingProblem vrp, double fraction) { super(vrp); this.vrp = vrp; this.fractionOfAllNodes2beRuined = fraction; - setRuinShareFactory(new RuinShareFactory() { - @Override - public int createNumberToBeRemoved() { - return selectNuOfJobs2BeRemoved(); - } - }); + setRuinShareFactory(this::selectNuOfJobs2BeRemoved); logger.debug("initialise {}", this); } @@ -70,14 +65,14 @@ public int createNumberToBeRemoved() { */ @Override public Collection ruinRoutes(Collection vehicleRoutes) { - List unassignedJobs = new ArrayList(); + List unassignedJobs = new ArrayList<>(); int nOfJobs2BeRemoved = getRuinShareFactory().createNumberToBeRemoved(); ruin(vehicleRoutes, nOfJobs2BeRemoved, unassignedJobs); return unassignedJobs; } private void ruin(Collection vehicleRoutes, int nOfJobs2BeRemoved, List unassignedJobs) { - ArrayList availableJobs = new ArrayList(vrp.getJobs().values()); + ArrayList availableJobs = new ArrayList<>(vrp.getJobs().values()); Collections.shuffle(availableJobs, random); int removed = 0; for (Job job : availableJobs) { From 1ebf2360096f911329f3ebc39fbd395b0fa9e162 Mon Sep 17 00:00:00 2001 From: oblonski Date: Sat, 28 Mar 2020 17:40:35 +0100 Subject: [PATCH 092/191] clean up --- .../jsprit/core/algorithm/module/RuinAndRecreateModule.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/module/RuinAndRecreateModule.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/module/RuinAndRecreateModule.java index 71facbc2f..eed1d8568 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/module/RuinAndRecreateModule.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/module/RuinAndRecreateModule.java @@ -80,8 +80,7 @@ public void setProportionOfUnassignedJobsToBeReinserted(double proportionOfUnass @Override public VehicleRoutingProblemSolution runAndGetSolution(VehicleRoutingProblemSolution previousVrpSolution) { Collection ruinedJobs = ruin.ruin(previousVrpSolution.getRoutes()); - Set ruinedJobSet = new HashSet<>(); - ruinedJobSet.addAll(ruinedJobs); + Set ruinedJobSet = new HashSet<>(ruinedJobs); List stillUnassignedInThisIteration = new ArrayList<>(); if (previousVrpSolution.getUnassignedJobs().size() < minUnassignedJobsToBeReinserted) { ruinedJobSet.addAll(previousVrpSolution.getUnassignedJobs()); @@ -100,8 +99,7 @@ public VehicleRoutingProblemSolution runAndGetSolution(VehicleRoutingProblemSolu previousVrpSolution.getUnassignedJobs().clear(); previousVrpSolution.getUnassignedJobs().addAll(unassignedJobs); previousVrpSolution.getUnassignedJobs().addAll(stillUnassignedInThisIteration); - VehicleRoutingProblemSolution newSolution = previousVrpSolution; - return newSolution; + return previousVrpSolution; } From 92fdb51f942b350b5dd4f3aa3fdb00749f947ed0 Mon Sep 17 00:00:00 2001 From: oblonski Date: Sat, 28 Mar 2020 18:02:03 +0100 Subject: [PATCH 093/191] fix #452 --- .../jsprit/core/algorithm/RemoveEmptyVehicles.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/RemoveEmptyVehicles.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/RemoveEmptyVehicles.java index 705a0300d..eea38a3ff 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/RemoveEmptyVehicles.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/RemoveEmptyVehicles.java @@ -22,9 +22,8 @@ import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; import com.graphhopper.jsprit.core.problem.vehicle.VehicleFleetManager; -import java.util.ArrayList; import java.util.Collection; -import java.util.List; +import java.util.Iterator; public class RemoveEmptyVehicles implements InsertionEndsListener { @@ -43,11 +42,11 @@ public String toString() { @Override public void informInsertionEnds(Collection vehicleRoutes, Collection badJobs) { - List routes = new ArrayList<>(vehicleRoutes); - for (VehicleRoute route : routes) { + for (Iterator iterator = vehicleRoutes.iterator(); iterator.hasNext(); ) { + VehicleRoute route = iterator.next(); if (route.isEmpty()) { fleetManager.unlock(route.getVehicle()); - vehicleRoutes.remove(route); + iterator.remove(); } } } From 668eecf93b03e50ef5f5840e931e8a1defc58ee3 Mon Sep 17 00:00:00 2001 From: oblonski Date: Wed, 1 Apr 2020 14:48:53 +0200 Subject: [PATCH 094/191] 1.9-SNAPSHOT --- jsprit-analysis/pom.xml | 2 +- jsprit-core/pom.xml | 2 +- jsprit-examples/pom.xml | 2 +- jsprit-instances/pom.xml | 2 +- jsprit-io/pom.xml | 2 +- pom.xml | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/jsprit-analysis/pom.xml b/jsprit-analysis/pom.xml index ec78fec8e..267fce233 100644 --- a/jsprit-analysis/pom.xml +++ b/jsprit-analysis/pom.xml @@ -20,7 +20,7 @@ com.graphhopper jsprit - 1.8-SNAPSHOT + 1.9-SNAPSHOT 4.0.0 jsprit-analysis diff --git a/jsprit-core/pom.xml b/jsprit-core/pom.xml index a1f893e75..fd262d0da 100644 --- a/jsprit-core/pom.xml +++ b/jsprit-core/pom.xml @@ -21,7 +21,7 @@ com.graphhopper jsprit - 1.8-SNAPSHOT + 1.9-SNAPSHOT 4.0.0 jsprit-core diff --git a/jsprit-examples/pom.xml b/jsprit-examples/pom.xml index 5473ad74b..c53c20e7a 100644 --- a/jsprit-examples/pom.xml +++ b/jsprit-examples/pom.xml @@ -20,7 +20,7 @@ com.graphhopper jsprit - 1.8-SNAPSHOT + 1.9-SNAPSHOT 4.0.0 diff --git a/jsprit-instances/pom.xml b/jsprit-instances/pom.xml index 72a47d531..47b6ef076 100644 --- a/jsprit-instances/pom.xml +++ b/jsprit-instances/pom.xml @@ -20,7 +20,7 @@ com.graphhopper jsprit - 1.8-SNAPSHOT + 1.9-SNAPSHOT 4.0.0 diff --git a/jsprit-io/pom.xml b/jsprit-io/pom.xml index b41e04501..215e8c135 100644 --- a/jsprit-io/pom.xml +++ b/jsprit-io/pom.xml @@ -23,7 +23,7 @@ com.graphhopper jsprit - 1.8-SNAPSHOT + 1.9-SNAPSHOT 4.0.0 diff --git a/pom.xml b/pom.xml index ffe307d16..1eb006060 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ com.graphhopper jsprit - 1.8-SNAPSHOT + 1.9-SNAPSHOT pom From 2b413f819ae85a65f2a54bd7d41a13799e5ae0e9 Mon Sep 17 00:00:00 2001 From: oblonski Date: Wed, 15 Apr 2020 17:55:53 +0200 Subject: [PATCH 095/191] add helper to identify jobs with locations --- .../core/problem/VehicleRoutingProblem.java | 17 +++++++++++++++++ .../core/problem/VehicleRoutingProblemTest.java | 17 +++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java index 571875146..8317ba18c 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java @@ -53,6 +53,7 @@ */ public class VehicleRoutingProblem { + /** * Builder to build the routing-problem. * @@ -76,6 +77,8 @@ public static Builder newInstance() { private Map jobs = new LinkedHashMap<>(); + private List jobsWithLocation = new ArrayList<>(); + private Map tentativeJobs = new LinkedHashMap<>(); private Map jobsInInitialRoutes = new LinkedHashMap<>(); @@ -321,6 +324,13 @@ private void addJobToFinalMap(Job job) { } addLocationToTentativeLocations(job); jobs.put(job.getId(), job); + boolean hasLocation = true; + for (Activity activity : job.getActivities()) { + if (activity.getLocation() == null) { + hasLocation = false; + } + } + if (hasLocation) jobsWithLocation.add(job); } /** @@ -528,6 +538,8 @@ public enum FleetSize { */ private final Map jobs; + private List jobsWithLocation; + private final Map allJobs; /** * Collection that contains available vehicles. @@ -557,6 +569,7 @@ public enum FleetSize { private VehicleRoutingProblem(Builder builder) { this.jobs = builder.jobs; + this.jobsWithLocation = builder.jobsWithLocation; this.fleetSize = builder.fleetSize; this.vehicles = builder.uniqueVehicles; this.vehicleTypes = builder.vehicleTypes.values(); @@ -598,6 +611,10 @@ public Map getJobs() { return Collections.unmodifiableMap(jobs); } + public Collection getJobsWithLocation() { + return Collections.unmodifiableList(jobsWithLocation); + } + public Map getJobsInclusiveInitialJobsInRoutes(){ return Collections.unmodifiableMap(allJobs); } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblemTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblemTest.java index 4a993cd03..0f437d32b 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblemTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblemTest.java @@ -128,6 +128,23 @@ public void whenShipmentsAreAdded_vrpShouldContainThem() { assertEquals(2,vrp.getAllLocations().size()); } + @Test + public void whenServicesWithNoLocationAreAdded_vrpShouldKnowThat() { + Service s1 = Service.Builder.newInstance("s1").setLocation(Location.Builder.newInstance().setIndex(1).build()).build(); + Service s2 = Service.Builder.newInstance("s2").build(); + + VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); + vrpBuilder.addJob(s1).addJob(s2); + + VehicleRoutingProblem vrp = vrpBuilder.build(); + + assertEquals(2, vrp.getJobs().size()); + assertEquals(s1, vrp.getJobs().get("s1")); + assertEquals(s2, vrp.getJobs().get("s2")); + assertEquals(1, vrp.getAllLocations().size()); + assertEquals(1, vrp.getJobsWithLocation().size()); + } + @Test public void whenServicesAreAdded_vrpShouldContainThem() { Service s1 = Service.Builder.newInstance("s1").setLocation(Location.Builder.newInstance().setIndex(1).build()).build(); From b32264bd80fd545085d90e39e49728a85d2898d1 Mon Sep 17 00:00:00 2001 From: oblonski Date: Wed, 15 Apr 2020 17:56:19 +0200 Subject: [PATCH 096/191] only add state updater if necessary --- .../graphhopper/jsprit/core/algorithm/AlgorithmUtil.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/AlgorithmUtil.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/AlgorithmUtil.java index 3858a174a..a98b50fd2 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/AlgorithmUtil.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/AlgorithmUtil.java @@ -38,9 +38,10 @@ public class AlgorithmUtil { public static void addCoreConstraints(ConstraintManager constraintManager, StateManager stateManager, final VehicleRoutingProblem vrp){ - stateManager.addStateUpdater(new UpdateActivityNextLocations()); - stateManager.addStateUpdater(new UpdateActivityPrevLocations()); - + if (vrp.getJobs().size() != vrp.getJobsWithLocation().size()) { + stateManager.addStateUpdater(new UpdateActivityNextLocations()); + stateManager.addStateUpdater(new UpdateActivityPrevLocations()); + } constraintManager.addTimeWindowConstraint(); constraintManager.addLoadConstraint(); constraintManager.addSkillsConstraint(); From 762e00099bfbf0e4fcfd73bd103a9c69048e7735 Mon Sep 17 00:00:00 2001 From: oblonski Date: Wed, 15 Apr 2020 20:21:42 +0200 Subject: [PATCH 097/191] replace method by helper --- .../core/algorithm/ruin/RuinRadial.java | 40 ++----------------- 1 file changed, 4 insertions(+), 36 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinRadial.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinRadial.java index 382a842ab..c0aa4c7dc 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinRadial.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinRadial.java @@ -56,14 +56,7 @@ public RuinRadial(VehicleRoutingProblem vrp, double fraction2beRemoved, JobDista super(vrp); this.vrp = vrp; noJobsToMemorize = (int) Math.ceil(vrp.getJobs().values().size() * fraction2beRemoved); - ruinShareFactory = new RuinShareFactory() { - - @Override - public int createNumberToBeRemoved() { - return noJobsToMemorize; - } - - }; + ruinShareFactory = () -> noJobsToMemorize; JobNeighborhoodsImplWithCapRestriction jobNeighborhoodsImpl = new JobNeighborhoodsImplWithCapRestriction(vrp, jobDistance, noJobsToMemorize); jobNeighborhoodsImpl.initialise(); jobNeighborhoods = jobNeighborhoodsImpl; @@ -73,16 +66,8 @@ public int createNumberToBeRemoved() { public RuinRadial(VehicleRoutingProblem vrp, int noJobs2beRemoved, JobDistance jobDistance) { super(vrp); this.vrp = vrp; -// this.fractionOfAllNodes2beRuined = fraction2beRemoved; noJobsToMemorize = noJobs2beRemoved; - ruinShareFactory = new RuinShareFactory() { - - @Override - public int createNumberToBeRemoved() { - return noJobsToMemorize; - } - - }; + ruinShareFactory = () -> noJobsToMemorize; JobNeighborhoodsImplWithCapRestriction jobNeighborhoodsImpl = new JobNeighborhoodsImplWithCapRestriction(vrp, jobDistance, noJobsToMemorize); jobNeighborhoodsImpl.initialise(); jobNeighborhoods = jobNeighborhoodsImpl; @@ -93,14 +78,7 @@ public RuinRadial(VehicleRoutingProblem vrp, int noJobs2beRemoved, JobNeighborho super(vrp); this.vrp = vrp; noJobsToMemorize = noJobs2beRemoved; - ruinShareFactory = new RuinShareFactory() { - - @Override - public int createNumberToBeRemoved() { - return noJobsToMemorize; - } - - }; + ruinShareFactory = () -> noJobsToMemorize; jobNeighborhoods = neighborhoods; logger.debug("initialise {}", this); } @@ -123,21 +101,11 @@ public Collection ruinRoutes(Collection vehicleRoutes) { if (nOfJobs2BeRemoved == 0) { return Collections.emptyList(); } - List jobs = getJobsWithLocation(vrp.getJobs().values()); + Collection jobs = vrp.getJobsWithLocation(); Job randomJob = RandomUtils.nextJob(jobs, random); return ruinRoutes(vehicleRoutes, randomJob, nOfJobs2BeRemoved); } - private List getJobsWithLocation(Collection jobs) { - List jobsWithLocation = new ArrayList<>(); - for (Job j : jobs) { - if (j.getActivities().get(0).getLocation() != null) { - jobsWithLocation.add(j); - } - } - return jobsWithLocation; - } - /** * Removes targetJob and its neighborhood and returns the removed jobs. * From 849b325ad2522310bba54af2cda6afd583a20bcd Mon Sep 17 00:00:00 2001 From: oblonski Date: Tue, 21 Apr 2020 17:05:15 +0200 Subject: [PATCH 098/191] speed up shipment insertion --- .../core/algorithm/recreate/ShipmentInsertionCalculator.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculator.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculator.java index d7b3eecd3..d3cbe2ef6 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculator.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculator.java @@ -170,6 +170,10 @@ else if (pickupShipmentConstraintStatus.equals(ConstraintsStatus.FULFILLED)) { double prevActEndTime_deliveryLoop = shipmentPickupEndTime; + if (bestCost <= pickupAIC + additionalPickupICosts + additionalICostsAtRouteLevel) { + continue; + } + /* -------------------------------- */ From c16e77503c630baa027a35a1b8e995f7ea491270 Mon Sep 17 00:00:00 2001 From: oblonski Date: Thu, 14 May 2020 09:19:18 +0200 Subject: [PATCH 099/191] implement new acceptance method - related to #493 --- .../RecordToRecordTravelAcceptance.java | 126 ++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/acceptor/RecordToRecordTravelAcceptance.java diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/acceptor/RecordToRecordTravelAcceptance.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/acceptor/RecordToRecordTravelAcceptance.java new file mode 100644 index 000000000..28d272fe5 --- /dev/null +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/acceptor/RecordToRecordTravelAcceptance.java @@ -0,0 +1,126 @@ +/* + * Licensed to GraphHopper GmbH under one or more contributor + * license agreements. See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + * + * GraphHopper GmbH licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.graphhopper.jsprit.core.algorithm.acceptor; + +import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; +import com.graphhopper.jsprit.core.algorithm.listener.AlgorithmStartsListener; +import com.graphhopper.jsprit.core.algorithm.listener.IterationStartsListener; +import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; +import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Collection; + + +/** + * @author schroeder + */ +public class RecordToRecordTravelAcceptance implements SolutionAcceptor, IterationStartsListener, AlgorithmStartsListener { + + private static Logger logger = LoggerFactory.getLogger(RecordToRecordTravelAcceptance.class.getName()); + + private final int solutionMemory = 1; + + private int maxIterations = 1000; + + private int currentIteration = 0; + + private double initialThreshold = 0.0167; + + private double endThreshold = 0; + + private double bestEver = Double.MAX_VALUE; + + public RecordToRecordTravelAcceptance() { + logger.debug("initialise {}", this); + } + + @Override + public boolean acceptSolution(Collection solutions, VehicleRoutingProblemSolution newSolution) { + boolean solutionAccepted = false; + if (solutions.size() == 0) { + solutions.add(newSolution); + solutionAccepted = true; + } else { + double threshold = getThreshold(); + VehicleRoutingProblemSolution currentSolution = solutions.iterator().next(); + if ((newSolution.getCost() - bestEver) / newSolution.getCost() < threshold) { + solutions.remove(currentSolution); + solutions.add(newSolution); + solutionAccepted = true; + } + } + if (newSolution.getCost() < bestEver) bestEver = newSolution.getCost(); + return solutionAccepted; + } + + private double getThreshold() { + return initialThreshold - (initialThreshold - endThreshold) * currentIteration / maxIterations; + } + + @Override + public String toString() { + return "[name=record-to-record-travel]"; + } + + + @SuppressWarnings("UnusedDeclaration") + public double getInitialThreshold() { + return initialThreshold; + } + + public double getEndThreshold() { + return endThreshold; + } + + /** + * Sets initial threshold. + *

Note that if initial threshold has been set, automatic generation of initial threshold is disabled. + * + * @param initialThreshold the initialThreshold to set + */ + public void setInitialThreshold(double initialThreshold) { + this.initialThreshold = initialThreshold; + } + + public void setEndThreshold(double endThreshold) { + this.endThreshold = endThreshold; + } + + public void setMaxIterations(int maxIteration) { + this.maxIterations = maxIteration; + } + + + @Override + public void informAlgorithmStarts(VehicleRoutingProblem problem, VehicleRoutingAlgorithm algorithm, Collection solutions) { + reset(); + this.maxIterations = algorithm.getMaxIterations(); + } + + private void reset() { + currentIteration = 0; + } + + @Override + public void informIterationStarts(int i, VehicleRoutingProblem problem, Collection solutions) { + currentIteration = i; + } + +} From 4319b27dbaa178691303e339d98f72de1a14c518 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Jun 2020 19:18:42 +0000 Subject: [PATCH 100/191] Bump xercesImpl from 2.11.0 to 2.12.0 in /jsprit-io Bumps xercesImpl from 2.11.0 to 2.12.0. Signed-off-by: dependabot[bot] --- jsprit-io/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jsprit-io/pom.xml b/jsprit-io/pom.xml index 215e8c135..64e6653e2 100644 --- a/jsprit-io/pom.xml +++ b/jsprit-io/pom.xml @@ -46,7 +46,7 @@ xerces xercesImpl - 2.11.0 + 2.12.0 From 82ac99fbd7b00fd15b90b6fa0d44431ef4676e6f Mon Sep 17 00:00:00 2001 From: oblonski Date: Thu, 25 Jun 2020 08:49:56 +0200 Subject: [PATCH 101/191] reproduce #500 --- .../core/algorithm/ruin/RuinRadialTest.java | 78 +++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinRadialTest.java diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinRadialTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinRadialTest.java new file mode 100644 index 000000000..9b2d7b2f3 --- /dev/null +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinRadialTest.java @@ -0,0 +1,78 @@ +/* + * Licensed to GraphHopper GmbH under one or more contributor + * license agreements. See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + * + * GraphHopper GmbH licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.graphhopper.jsprit.core.algorithm.ruin; + +import com.graphhopper.jsprit.core.problem.Location; +import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; +import com.graphhopper.jsprit.core.problem.job.Job; +import com.graphhopper.jsprit.core.problem.job.Service; +import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; +import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; +import com.graphhopper.jsprit.core.util.Coordinate; +import org.junit.Test; + +import java.util.Arrays; +import java.util.Iterator; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +/** + * Created by schroeder on 30/01/15. + */ +public class RuinRadialTest { + + @Test + public void whenNoJobHasLocation_itShouldStillWork() { + Service s1 = Service.Builder.newInstance("s1").build(); + Service s2 = Service.Builder.newInstance("s2").build(); + Service s3 = Service.Builder.newInstance("s3").build(); + VehicleImpl v = VehicleImpl.Builder.newInstance("v") + .setStartLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(0, 0)).build()).build(); + VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(s1).addJob(s2).addJob(s3).addVehicle(v).build(); + + RuinRadial ruinRadial = new RuinRadial(vrp, 1, new JobNeighborhoods() { + @Override + public Iterator getNearestNeighborsIterator(int nNeighbors, Job neighborTo) { + return null; + } + + @Override + public void initialise() { + + } + + @Override + public double getMaxDistance() { + return 0; + } + }); + + VehicleRoute route = VehicleRoute.Builder.newInstance(v).addService(s1).addService(s2).addService(s3).setJobActivityFactory(vrp.getJobActivityFactory()).build(); + try { + ruinRadial.ruinRoutes(Arrays.asList(route)); + } catch (Exception e) { + assertFalse("error when ruining routes with radial ruin", true); + } + assertTrue(true); + + } + + +} From 63550ff80b74f16ce7aa5fa3e954763157f61ee3 Mon Sep 17 00:00:00 2001 From: oblonski Date: Thu, 25 Jun 2020 08:52:13 +0200 Subject: [PATCH 102/191] fix #500 --- .../graphhopper/jsprit/core/algorithm/ruin/RuinRadial.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinRadial.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinRadial.java index c0aa4c7dc..49d0f8450 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinRadial.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinRadial.java @@ -98,10 +98,10 @@ public Collection ruinRoutes(Collection vehicleRoutes) { return Collections.emptyList(); } int nOfJobs2BeRemoved = Math.min(ruinShareFactory.createNumberToBeRemoved(), noJobsToMemorize); - if (nOfJobs2BeRemoved == 0) { + Collection jobs = vrp.getJobsWithLocation(); + if (nOfJobs2BeRemoved == 0 || jobs.isEmpty()) { return Collections.emptyList(); } - Collection jobs = vrp.getJobsWithLocation(); Job randomJob = RandomUtils.nextJob(jobs, random); return ruinRoutes(vehicleRoutes, randomJob, nOfJobs2BeRemoved); } From d010bd5e0ca8250533eb76e00ec3bc3e12a3fe04 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 Jul 2020 18:04:03 +0000 Subject: [PATCH 103/191] Bump log4j-core from 2.0.1 to 2.13.2 in /jsprit-examples Bumps log4j-core from 2.0.1 to 2.13.2. Signed-off-by: dependabot[bot] --- jsprit-examples/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jsprit-examples/pom.xml b/jsprit-examples/pom.xml index c53c20e7a..89a696ac4 100644 --- a/jsprit-examples/pom.xml +++ b/jsprit-examples/pom.xml @@ -61,7 +61,7 @@ org.apache.logging.log4j log4j-core - 2.0.1 + 2.13.2 From 0b15bfd1121ff45d504338f5f22f1ca15d40eb31 Mon Sep 17 00:00:00 2001 From: Alistair Woodcock Date: Wed, 16 Sep 2020 13:23:42 +1000 Subject: [PATCH 104/191] Fix for reproducability of results Encountered reproducability issues when running more complex problems against Jsprit. This issue manifests when the ruinedJobSet is created in RuinAndRecreateModule. Ordering in the HashSet is not guaranteed. When re-running the same problem occasionally the order in the HashSet of some Jobs were slightly different. When jobs are shuffled inside an InsertionStrategy (e.g. BestInsertion and BestInsertionConcurrent) the different ordering is exhaserbated. The `Collections.sort(unassignedJobList, new AccordingToPriorities());` ensures that the order of equal items is guaranteed, resulting in different insertions for different runs of the same problem. This issue only showed itself when running with threads. The reason for this is unkown. Notably, when disabling clustersRegret and stringRegret the issue no longer occurred. The reason for this is unclear but is likely related to the order of items in the unassignedJobs list returned from the regret classes. From tests, simply swapping to a LinkedHashSet did not remove this ordering problem so the unassignedJobs were inserted to a list and sorted. Since an ArrayList is faster on iteration the ArrayList was kept, however re-inserting the sortedUnassignedJobs may be preferrable. --- .../algorithm/module/RuinAndRecreateModule.java | 11 +++++++++-- .../algorithm/module/RuinAndRecreateModuleTest.java | 13 ++++++++++--- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/module/RuinAndRecreateModule.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/module/RuinAndRecreateModule.java index eed1d8568..65d72d3fb 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/module/RuinAndRecreateModule.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/module/RuinAndRecreateModule.java @@ -25,6 +25,7 @@ import com.graphhopper.jsprit.core.algorithm.ruin.listener.RuinListener; import com.graphhopper.jsprit.core.problem.job.Job; import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; +import com.graphhopper.jsprit.core.util.RandomNumberGeneration; import java.util.*; @@ -37,7 +38,7 @@ public class RuinAndRecreateModule implements SearchStrategyModule { private String moduleName; - private Random random = new Random(4711); + private Random random = RandomNumberGeneration.newInstance(); private int minUnassignedJobsToBeReinserted = Integer.MAX_VALUE; @@ -95,7 +96,13 @@ public VehicleRoutingProblemSolution runAndGetSolution(VehicleRoutingProblemSolu stillUnassignedInThisIteration.add(jobList.get(i)); } } - Collection unassignedJobs = insertion.insertJobs(previousVrpSolution.getRoutes(), ruinedJobSet); + // Taking the ruinedJobSet and ordering it because the order coming out of the HashSet + // is not guaranteed. This can cause slight deviations in the selections of an insertion + // and result in different solutions. + // Additionally, ArrayList is faster for iteration than iterating over a HashSet + List orderedRuinedJobs = new ArrayList<>(ruinedJobSet); + orderedRuinedJobs.sort(Comparator.comparing(Job::getId)); + Collection unassignedJobs = insertion.insertJobs(previousVrpSolution.getRoutes(), orderedRuinedJobs); previousVrpSolution.getUnassignedJobs().clear(); previousVrpSolution.getUnassignedJobs().addAll(unassignedJobs); previousVrpSolution.getUnassignedJobs().addAll(stillUnassignedInThisIteration); diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/module/RuinAndRecreateModuleTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/module/RuinAndRecreateModuleTest.java index ceb6d0cc1..795c2193e 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/module/RuinAndRecreateModuleTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/module/RuinAndRecreateModuleTest.java @@ -31,6 +31,7 @@ import java.util.List; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; public class RuinAndRecreateModuleTest { @@ -42,7 +43,9 @@ public void initialNumOfUnassignedShouldWorkCorrectly() { Collection routes = new ArrayList<>(); List unassigned = new ArrayList<>(); for (int i = 0; i < 20; i++) { - unassigned.add(mock(Job.class)); + Job mockedJob = mock(Job.class); + when(mockedJob.getId()).thenReturn(String.valueOf(i)); + unassigned.add(mockedJob); } VehicleRoutingProblemSolution previousSolution = new VehicleRoutingProblemSolution(routes, unassigned, 0); VehicleRoutingProblemSolution newSolution = module.runAndGetSolution(previousSolution); @@ -59,7 +62,9 @@ public void proportionOfUnassignedShouldWorkCorrectly() { Collection routes = new ArrayList<>(); List unassigned = new ArrayList<>(); for (int i = 0; i < 20; i++) { - unassigned.add(mock(Job.class)); + Job mockedJob = mock(Job.class); + when(mockedJob.getId()).thenReturn(String.valueOf(i)); + unassigned.add(mockedJob); } VehicleRoutingProblemSolution previousSolution = new VehicleRoutingProblemSolution(routes, unassigned, 0); VehicleRoutingProblemSolution newSolution = module.runAndGetSolution(previousSolution); @@ -76,7 +81,9 @@ public void proportionOfUnassignedShouldWorkCorrectly2() { Collection routes = new ArrayList<>(); List unassigned = new ArrayList<>(); for (int i = 0; i < 20; i++) { - unassigned.add(mock(Job.class)); + Job mockedJob = mock(Job.class); + when(mockedJob.getId()).thenReturn(String.valueOf(i)); + unassigned.add(mockedJob); } VehicleRoutingProblemSolution previousSolution = new VehicleRoutingProblemSolution(routes, unassigned, 0); VehicleRoutingProblemSolution newSolution = module.runAndGetSolution(previousSolution); From 513d3407ddb08c8d9ecd91646491e55d313e9e6b Mon Sep 17 00:00:00 2001 From: oblonski Date: Mon, 28 Sep 2020 21:34:01 +0200 Subject: [PATCH 105/191] refine flex calc --- .../algorithm/recreate/ShipmentInsertionCalculatorFlex.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculatorFlex.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculatorFlex.java index 8862481a9..240163d51 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculatorFlex.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculatorFlex.java @@ -157,7 +157,8 @@ public InsertionData getInsertionData(final VehicleRoute currentRoute, final Job tourEnd = true; } if (i > evalIndexPickup) break; - if (i == evalIndexPickup || evalIndexPickup == Integer.MAX_VALUE) { +// if (i == evalIndexPickup || evalIndexPickup == Integer.MAX_VALUE) { + else { boolean pickupInsertionNotFulfilledBreak = true; for (TimeWindow pickupTimeWindow : shipment.getPickupTimeWindows()) { pickupShipment.setTheoreticalEarliestOperationStartTime(pickupTimeWindow.getStart()); From d686c58f356db9cf41d75857c2ef12d144f6440a Mon Sep 17 00:00:00 2001 From: oblonski Date: Tue, 29 Sep 2020 07:11:34 +0200 Subject: [PATCH 106/191] accelerate and refine flex calc --- .../recreate/ShipmentInsertionCalculatorFlex.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculatorFlex.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculatorFlex.java index 240163d51..ee151dbff 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculatorFlex.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculatorFlex.java @@ -157,8 +157,7 @@ public InsertionData getInsertionData(final VehicleRoute currentRoute, final Job tourEnd = true; } if (i > evalIndexPickup) break; -// if (i == evalIndexPickup || evalIndexPickup == Integer.MAX_VALUE) { - else { + if (i == evalIndexPickup || evalIndexPickup == Integer.MAX_VALUE) { boolean pickupInsertionNotFulfilledBreak = true; for (TimeWindow pickupTimeWindow : shipment.getPickupTimeWindows()) { pickupShipment.setTheoreticalEarliestOperationStartTime(pickupTimeWindow.getStart()); @@ -189,6 +188,10 @@ public InsertionData getInsertionData(final VehicleRoute currentRoute, final Job TourActivity prevActForDeliveryLoop = pickupShipment; double prevActEndTimeForDeliveryLoop = shipmentPickupEndTime; + if (bestCost <= pickupAIC + additionalPickupICosts + additionalICostsAtRouteLevel) { + continue; + } + /* -------------------------------- */ @@ -204,7 +207,8 @@ public InsertionData getInsertionData(final VehicleRoute currentRoute, final Job tourEndInDeliveryLoop = true; } if (j > evalIndexDelivery) break; - if (j == evalIndexDelivery || evalIndexDelivery == Integer.MAX_VALUE) { +// if (j == evalIndexDelivery || evalIndexDelivery == Integer.MAX_VALUE) { + else { boolean deliveryInsertionNotFulfilledBreak = true; for (TimeWindow deliveryTimeWindow : shipment.getDeliveryTimeWindows()) { deliverShipment.setTheoreticalEarliestOperationStartTime(deliveryTimeWindow.getStart()); From aa88ddfc30edc7dec4caa014eaea93d921a17e14 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 13 Oct 2020 02:54:14 +0000 Subject: [PATCH 107/191] Bump junit from 4.12 to 4.13.1 Bumps [junit](https://github.com/junit-team/junit4) from 4.12 to 4.13.1. - [Release notes](https://github.com/junit-team/junit4/releases) - [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.12.md) - [Commits](https://github.com/junit-team/junit4/compare/r4.12...r4.13.1) Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 1eb006060..85370f3d9 100644 --- a/pom.xml +++ b/pom.xml @@ -73,7 +73,7 @@ 1.8 UTF-8 - 4.12 + 4.13.1 1.9.5 1.3 1.7.21 From 6e2a86481fc2c5ebfd791b23ebd4c75aa6a89cf3 Mon Sep 17 00:00:00 2001 From: Suraj Shirvankar Date: Tue, 27 Oct 2020 21:46:35 +0100 Subject: [PATCH 108/191] Return maxDistance instead of 0 --- .../jsprit/core/algorithm/ruin/JobNeighborhoodsImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsImpl.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsImpl.java index bcb20e948..350163652 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsImpl.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsImpl.java @@ -80,7 +80,7 @@ public void initialise() { @Override public double getMaxDistance() { - return 0; + return maxDistance; } private void calculateDistancesFromJob2Job() { From a0b3012cd5c8f7c07d41ec4d7cec9273d307f2ee Mon Sep 17 00:00:00 2001 From: Suraj Shirvankar Date: Wed, 28 Oct 2020 14:56:18 +0100 Subject: [PATCH 109/191] Add tests to validate change --- .../core/algorithm/ruin/JobNeighborhoodsImplTest.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsImplTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsImplTest.java index a17cd004d..2d18868aa 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsImplTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsImplTest.java @@ -125,4 +125,11 @@ public void whenRequestingMoreNeighborsThanExisting_itShouldReturnMaxNeighbors() assertEquals(6, services.size()); } + @Test + public void whenRequestingNeighborhoodOfTargetJob_itShouldReturntheMaxDistance() { + JobNeighborhoodsImpl jn = new JobNeighborhoodsImpl(vrp, jobDistance); + jn.initialise(); + assertEquals(6, jn.getMaxDistance(), 0.01); + } + } From dff0db8b9acbf5c25ceefa0ec39daf47f1c6a727 Mon Sep 17 00:00:00 2001 From: oblonski Date: Sat, 21 Nov 2020 20:57:55 +0100 Subject: [PATCH 110/191] remove comments --- .../algorithm/VehicleRoutingAlgorithm.java | 29 +++---------------- 1 file changed, 4 insertions(+), 25 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/VehicleRoutingAlgorithm.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/VehicleRoutingAlgorithm.java index d8a66285c..7b490682c 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/VehicleRoutingAlgorithm.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/VehicleRoutingAlgorithm.java @@ -46,11 +46,9 @@ */ public class VehicleRoutingAlgorithm { - - private static class TerminationManager implements PrematureAlgorithmTermination { - private Collection terminationCriteria = new ArrayList(); + private Collection terminationCriteria = new ArrayList<>(); void addTermination(PrematureAlgorithmTermination termination) { terminationCriteria.add(termination); @@ -144,14 +142,11 @@ public VehicleRoutingAlgorithm(VehicleRoutingProblem problem, SearchStrategyMana * @param solution the solution to be added */ public void addInitialSolution(VehicleRoutingProblemSolution solution) { - // We will make changes so let's make a copy solution = VehicleRoutingProblemSolution.copyOf(solution); verifyAndAdaptSolution(solution); initialSolutions.add(solution); } - //this method may lead to errors if tour activities in the solution are different to the ones in the VRP - //(including differences in indexing) private void verifyAndAdaptSolution(VehicleRoutingProblemSolution solution) { Set jobsNotInSolution = new HashSet<>(problem.getJobs().values()); jobsNotInSolution.removeAll(solution.getUnassignedJobs()); @@ -168,16 +163,8 @@ private void verifyAndAdaptSolution(VehicleRoutingProblemSolution solution) { " then the activities that are created to build the route are identical to the ones used in VehicleRoutingProblem"); } } - - //if solution is partial (not all jobs are considered), add these jobs to solution.unassignedJobs solution.getUnassignedJobs().addAll(jobsNotInSolution); - //update the cost of solution (regardless if partial or not) solution.setCost(getObjectiveFunction().getCosts(solution)); - - // if (nuJobs != problem.getJobs().values().size()) { - // logger.warn("number of jobs in initial solution ({}) is not equal nuJobs in vehicle routing problem ({})" + - // "\n this might yield unintended effects, e.g. initial solution cannot be improved anymore.", nuJobs, problem.getJobs().values().size()); - // } } /** @@ -228,9 +215,7 @@ public Collection searchSolutions() { Collection solutions = new ArrayList<>(initialSolutions); algorithmStarts(problem, solutions); bestEver = Solutions.bestOf(solutions); - if (logger.isTraceEnabled()) { - log(solutions); - } + if (logger.isTraceEnabled()) log(solutions); logger.info("iterations start"); for (int i = 0; i < maxIterations; i++) { iterationStarts(i + 1, problem, solutions); @@ -238,9 +223,7 @@ public Collection searchSolutions() { counter.incCounter(); SearchStrategy strategy = searchStrategyManager.getRandomStrategy(); DiscoveredSolution discoveredSolution = strategy.run(problem, solutions); - if (logger.isTraceEnabled()) { - log(discoveredSolution); - } + if (logger.isTraceEnabled()) log(discoveredSolution); memorizeIfBestEver(discoveredSolution); selectedStrategy(discoveredSolution, problem, solutions); if (terminationManager.isPrematureBreak(discoveredSolution)) { @@ -258,9 +241,7 @@ public Collection searchSolutions() { } private void addBestEver(Collection solutions) { - if (bestEver != null) { - solutions.add(bestEver); - } + if (bestEver != null) solutions.add(bestEver); } private void log(Collection solutions) { @@ -296,7 +277,6 @@ private void log(DiscoveredSolution discoveredSolution) { log(discoveredSolution.getSolution()); } - private void memorizeIfBestEver(DiscoveredSolution discoveredSolution) { if (discoveredSolution == null) return; if (bestEver == null) { @@ -306,7 +286,6 @@ private void memorizeIfBestEver(DiscoveredSolution discoveredSolution) { } } - private void selectedStrategy(DiscoveredSolution discoveredSolution, VehicleRoutingProblem problem, Collection solutions) { algoListeners.selectedStrategy(discoveredSolution, problem, solutions); } From c973712dbebeae3a300542b10748927c0eaaa642 Mon Sep 17 00:00:00 2001 From: oblonski Date: Sat, 21 Nov 2020 21:02:43 +0100 Subject: [PATCH 111/191] clean up --- .../core/algorithm/SearchStrategyManager.java | 14 ++++------ .../core/algorithm/SearchStrategyModule.java | 6 ++--- .../VehicleRoutingAlgorithmFactory.java | 27 ------------------- 3 files changed, 8 insertions(+), 39 deletions(-) delete mode 100644 jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/VehicleRoutingAlgorithmFactory.java diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/SearchStrategyManager.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/SearchStrategyManager.java index 5df03a5c4..9de37e9b5 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/SearchStrategyManager.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/SearchStrategyManager.java @@ -20,23 +20,19 @@ import com.graphhopper.jsprit.core.algorithm.listener.SearchStrategyListener; import com.graphhopper.jsprit.core.algorithm.listener.SearchStrategyModuleListener; import com.graphhopper.jsprit.core.util.RandomNumberGeneration; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import java.util.*; public class SearchStrategyManager { - private final static Logger logger = LoggerFactory.getLogger(SearchStrategyManager.class); + private List searchStrategyListeners = new ArrayList<>(); - private List searchStrategyListeners = new ArrayList(); + private List strategies = new ArrayList<>(); - private List strategies = new ArrayList(); + private List weights = new ArrayList<>(); - private List weights = new ArrayList(); - - private Map id2index = new HashMap(); + private Map id2index = new HashMap<>(); private Random random = RandomNumberGeneration.getRandom(); @@ -71,7 +67,7 @@ public void addStrategy(SearchStrategy strategy, double weight) { if (strategy == null) { throw new IllegalStateException("strategy is null. make sure adding a valid strategy."); } - if (id2index.keySet().contains(strategy.getId())) { + if (id2index.containsKey(strategy.getId())) { throw new IllegalStateException("strategyId " + strategy.getId() + " already in use. replace strateId in your config file or code with a unique strategy id"); } if (weight < 0.0) { diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/SearchStrategyModule.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/SearchStrategyModule.java index cf7beb2e3..5fa6e878e 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/SearchStrategyModule.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/SearchStrategyModule.java @@ -23,10 +23,10 @@ public interface SearchStrategyModule { - public VehicleRoutingProblemSolution runAndGetSolution(VehicleRoutingProblemSolution vrpSolution); + VehicleRoutingProblemSolution runAndGetSolution(VehicleRoutingProblemSolution vrpSolution); - public String getName(); + String getName(); - public void addModuleListener(SearchStrategyModuleListener moduleListener); + void addModuleListener(SearchStrategyModuleListener moduleListener); } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/VehicleRoutingAlgorithmFactory.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/VehicleRoutingAlgorithmFactory.java deleted file mode 100644 index b617e213d..000000000 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/VehicleRoutingAlgorithmFactory.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.core.algorithm; - -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; - - -public interface VehicleRoutingAlgorithmFactory { - - public VehicleRoutingAlgorithm createAlgorithm(VehicleRoutingProblem vrp); - -} From fdf726078bee3cc9d2f0a3348457f332f9bb2b08 Mon Sep 17 00:00:00 2001 From: oblonski Date: Sat, 21 Nov 2020 21:06:27 +0100 Subject: [PATCH 112/191] clean up --- .../core/algorithm/InsertionInitialSolutionFactory.java | 5 ++--- .../jsprit/core/algorithm/RemoveEmptyVehicles.java | 2 +- .../jsprit/core/algorithm/ResetAndIniFleetManager.java | 2 +- .../graphhopper/jsprit/core/algorithm/SearchStrategy.java | 4 ++-- 4 files changed, 6 insertions(+), 7 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/InsertionInitialSolutionFactory.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/InsertionInitialSolutionFactory.java index 8fec35e43..dac82af7f 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/InsertionInitialSolutionFactory.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/InsertionInitialSolutionFactory.java @@ -40,7 +40,7 @@ public final class InsertionInitialSolutionFactory implements InitialSolutionFac private final InsertionStrategy insertion; - private SolutionCostCalculator solutionCostsCalculator; + private final SolutionCostCalculator solutionCostsCalculator; public InsertionInitialSolutionFactory(InsertionStrategy insertionStrategy, SolutionCostCalculator solutionCostCalculator) { super(); @@ -51,8 +51,7 @@ public InsertionInitialSolutionFactory(InsertionStrategy insertionStrategy, Solu @Override public VehicleRoutingProblemSolution createSolution(final VehicleRoutingProblem vrp) { logger.info("create initial solution"); - List vehicleRoutes = new ArrayList<>(); - vehicleRoutes.addAll(vrp.getInitialVehicleRoutes()); + List vehicleRoutes = new ArrayList<>(vrp.getInitialVehicleRoutes()); Collection badJobs = insertion.insertJobs(vehicleRoutes, getUnassignedJobs(vrp)); VehicleRoutingProblemSolution solution = new VehicleRoutingProblemSolution(vehicleRoutes, badJobs, Double.MAX_VALUE); double costs = solutionCostsCalculator.getCosts(solution); diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/RemoveEmptyVehicles.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/RemoveEmptyVehicles.java index eea38a3ff..020ece4c7 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/RemoveEmptyVehicles.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/RemoveEmptyVehicles.java @@ -28,7 +28,7 @@ public class RemoveEmptyVehicles implements InsertionEndsListener { - private VehicleFleetManager fleetManager; + private final VehicleFleetManager fleetManager; public RemoveEmptyVehicles(VehicleFleetManager fleetManager) { super(); diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ResetAndIniFleetManager.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ResetAndIniFleetManager.java index febba5c7d..f8528ba02 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ResetAndIniFleetManager.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ResetAndIniFleetManager.java @@ -38,7 +38,7 @@ public ResetAndIniFleetManager(VehicleFleetManager vehicleFleetManager) { @Override public void informInsertionStarts(Collection vehicleRoutes, Collection unassignedJobs) { vehicleFleetManager.unlockAll(); - Collection routes = new ArrayList(vehicleRoutes); + Collection routes = new ArrayList<>(vehicleRoutes); for (VehicleRoute route : routes) { vehicleFleetManager.lock(route.getVehicle()); } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/SearchStrategy.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/SearchStrategy.java index a68808e41..82cf8b8ee 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/SearchStrategy.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/SearchStrategy.java @@ -66,9 +66,9 @@ public String toString() { } } - private static Logger logger = LoggerFactory.getLogger(SearchStrategy.class); + private static final Logger logger = LoggerFactory.getLogger(SearchStrategy.class); - private final Collection searchStrategyModules = new ArrayList(); + private final Collection searchStrategyModules = new ArrayList<>(); private final SolutionSelector solutionSelector; From f03c8decf4412ddbd2fb082d524b32ee4555c84c Mon Sep 17 00:00:00 2001 From: oblonski Date: Sat, 21 Nov 2020 21:09:29 +0100 Subject: [PATCH 113/191] clean up --- .../jsprit/core/algorithm/selector/SolutionSelector.java | 2 +- .../algorithm/termination/PrematureAlgorithmTermination.java | 2 +- .../termination/VariationCoefficientTermination.java | 4 +--- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/selector/SolutionSelector.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/selector/SolutionSelector.java index 6156644fb..02b7d2e94 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/selector/SolutionSelector.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/selector/SolutionSelector.java @@ -24,6 +24,6 @@ public interface SolutionSelector { - public VehicleRoutingProblemSolution selectSolution(Collection solutions); + VehicleRoutingProblemSolution selectSolution(Collection solutions); } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/termination/PrematureAlgorithmTermination.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/termination/PrematureAlgorithmTermination.java index 1e484e1d7..a3d27ca31 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/termination/PrematureAlgorithmTermination.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/termination/PrematureAlgorithmTermination.java @@ -30,6 +30,6 @@ public interface PrematureAlgorithmTermination { * @param discoveredSolution the discovered solution * @return true if algorithm should terminate, false otherwise */ - public boolean isPrematureBreak(DiscoveredSolution discoveredSolution); + boolean isPrematureBreak(DiscoveredSolution discoveredSolution); } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/termination/VariationCoefficientTermination.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/termination/VariationCoefficientTermination.java index 5f177c3d6..2f0dfd8e0 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/termination/VariationCoefficientTermination.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/termination/VariationCoefficientTermination.java @@ -96,9 +96,7 @@ public boolean isPrematureBreak(SearchStrategy.DiscoveredSolution discoveredSolu double mean = StatUtils.mean(solutionValues); double stdDev = new StandardDeviation(true).evaluate(solutionValues, mean); double variationCoefficient = stdDev / mean; - if (variationCoefficient < variationCoefficientThreshold) { - return true; - } + return variationCoefficient < variationCoefficientThreshold; } return false; } From 060daac23234f1035301cff9fe702baa41e58a1b Mon Sep 17 00:00:00 2001 From: oblonski Date: Sat, 21 Nov 2020 21:27:08 +0100 Subject: [PATCH 114/191] clean up --- .../core/algorithm/state/StateManager.java | 22 ++++++------------- .../core/algorithm/state/UpdateLoads.java | 5 ----- ...nAtActivitiesByLookingBackwardInRoute.java | 5 ----- ...onAtActivitiesByLookingForwardInRoute.java | 5 ----- .../state/UpdateMaxTimeInVehicle.java | 18 +++++---------- ...eVehicleDependentPracticalTimeWindows.java | 13 +++-------- 6 files changed, 15 insertions(+), 53 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/StateManager.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/StateManager.java index e2fffd55d..a21c441a8 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/StateManager.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/StateManager.java @@ -50,13 +50,13 @@ public class StateManager implements RouteAndActivityStateGetter, IterationStart private ReverseRouteActivityVisitor revRouteActivityVisitor = new ReverseRouteActivityVisitor(); - private Collection routeVisitors = new ArrayList(); + private Collection routeVisitors = new ArrayList<>(); private RuinListeners ruinListeners = new RuinListeners(); private InsertionListeners insertionListeners = new InsertionListeners(); - private Collection updaters = new ArrayList(); + private Collection updaters = new ArrayList<>(); private boolean updateLoad = false; @@ -66,7 +66,7 @@ public class StateManager implements RouteAndActivityStateGetter, IterationStart private int stateIndexCounter; - private Map createdStateIds = new HashMap(); + private Map createdStateIds = new HashMap<>(); private int nuActivities; @@ -137,16 +137,9 @@ public StateManager(VehicleRoutingProblem vehicleRoutingProblem) { nuVehicleTypeKeys = Math.max(3, getNuVehicleTypes(vrp) + 2); activityStates = new Object[nuActivities][initialStateArrayLength]; vehicleDependentActivityStates = new Object[nuActivities][nuVehicleTypeKeys][initialStateArrayLength]; -// if(vehicleRoutingProblem.getFleetSize().equals(VehicleRoutingProblem.FleetSize.FINITE)){ -// isIndexedBased = true; -// routeStatesArr = new Object[vrp.getVehicles().size() + 2][initialStateArrayLength]; -// vehicleDependentRouteStatesArr = new Object[vrp.getVehicles().size() + 2][nuVehicleTypeKeys][initialStateArrayLength]; -// } -// else { - isIndexedBased = false; - routeStateMap = new HashMap(); - vehicleDependentRouteStateMap = new HashMap(); -// } + isIndexedBased = false; + routeStateMap = new HashMap<>(); + vehicleDependentRouteStateMap = new HashMap<>(); problemStates = new Object[initialStateArrayLength]; } @@ -169,7 +162,6 @@ private int getNuVehicleTypes(VehicleRoutingProblem vrp) { */ public void putProblemState(StateId stateId, Class type, T state) { problemStates[stateId.getIndex()] = state; -// problemStates.putState(stateId, type, state); } /** @@ -577,7 +569,7 @@ public void informInsertionStarts(Collection vehicleRoutes, Collec } public void reCalculateStates(VehicleRoute route){ - informInsertionStarts(Arrays.asList(route),Collections.emptyList()); + informInsertionStarts(Arrays.asList(route), Collections.emptyList()); } @Override diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/UpdateLoads.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/UpdateLoads.java index 3fd7bd039..ad4b07ac7 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/UpdateLoads.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/UpdateLoads.java @@ -52,8 +52,6 @@ class UpdateLoads implements ActivityVisitor, StateUpdater, InsertionStartsListe private Capacity defaultValue; - private VehicleRoute route; - public UpdateLoads(StateManager stateManager) { super(); this.stateManager = stateManager; @@ -64,15 +62,12 @@ public UpdateLoads(StateManager stateManager) { public void begin(VehicleRoute route) { currentLoad = stateManager.getRouteState(route, InternalStates.LOAD_AT_BEGINNING, Capacity.class); if (currentLoad == null) currentLoad = defaultValue; - this.route = route; } @Override public void visit(TourActivity act) { currentLoad = Capacity.addup(currentLoad, act.getSize()); stateManager.putInternalTypedActivityState(act, InternalStates.LOAD, currentLoad); -// assert currentLoad.isLessOrEqual(route.getVehicle().getType().getCapacityDimensions()) : "currentLoad at activity must not be > vehicleCapacity"; -// assert currentLoad.isGreaterOrEqual(Capacity.Builder.newInstance().build()) : "currentLoad at act must not be < 0 in one of the applied dimensions"; } @Override diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/UpdateMaxCapacityUtilisationAtActivitiesByLookingBackwardInRoute.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/UpdateMaxCapacityUtilisationAtActivitiesByLookingBackwardInRoute.java index ef8def7bf..0cbc82e3b 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/UpdateMaxCapacityUtilisationAtActivitiesByLookingBackwardInRoute.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/UpdateMaxCapacityUtilisationAtActivitiesByLookingBackwardInRoute.java @@ -32,8 +32,6 @@ class UpdateMaxCapacityUtilisationAtActivitiesByLookingBackwardInRoute implement private StateManager stateManager; - private VehicleRoute route; - private Capacity maxLoad; private Capacity defaultValue; @@ -45,7 +43,6 @@ public UpdateMaxCapacityUtilisationAtActivitiesByLookingBackwardInRoute(StateMan @Override public void begin(VehicleRoute route) { - this.route = route; maxLoad = stateManager.getRouteState(route, InternalStates.LOAD_AT_BEGINNING, Capacity.class); if (maxLoad == null) maxLoad = defaultValue; } @@ -54,8 +51,6 @@ public void begin(VehicleRoute route) { public void visit(TourActivity act) { maxLoad = Capacity.max(maxLoad, stateManager.getActivityState(act, InternalStates.LOAD, Capacity.class)); stateManager.putInternalTypedActivityState(act, InternalStates.PAST_MAXLOAD, maxLoad); -// assert maxLoad.isGreaterOrEqual(Capacity.Builder.newInstance().build()) : "maxLoad can never be smaller than 0"; -// assert maxLoad.isLessOrEqual(route.getVehicle().getType().getCapacityDimensions()) : "maxLoad can never be bigger than vehicleCap"; } @Override diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/UpdateMaxCapacityUtilisationAtActivitiesByLookingForwardInRoute.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/UpdateMaxCapacityUtilisationAtActivitiesByLookingForwardInRoute.java index 3cb5f5e09..615c78bbd 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/UpdateMaxCapacityUtilisationAtActivitiesByLookingForwardInRoute.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/UpdateMaxCapacityUtilisationAtActivitiesByLookingForwardInRoute.java @@ -43,8 +43,6 @@ class UpdateMaxCapacityUtilisationAtActivitiesByLookingForwardInRoute implements private StateManager stateManager; - private VehicleRoute route; - private Capacity maxLoad; private Capacity defaultValue; @@ -57,7 +55,6 @@ public UpdateMaxCapacityUtilisationAtActivitiesByLookingForwardInRoute(StateMana @Override public void begin(VehicleRoute route) { - this.route = route; maxLoad = stateManager.getRouteState(route, InternalStates.LOAD_AT_END, Capacity.class); if (maxLoad == null) maxLoad = defaultValue; } @@ -66,8 +63,6 @@ public void begin(VehicleRoute route) { public void visit(TourActivity act) { maxLoad = Capacity.max(maxLoad, stateManager.getActivityState(act, InternalStates.LOAD, Capacity.class)); stateManager.putInternalTypedActivityState(act, InternalStates.FUTURE_MAXLOAD, maxLoad); -// assert maxLoad.isLessOrEqual(route.getVehicle().getType().getCapacityDimensions()) : "maxLoad can in every capacity dimension never be bigger than vehicleCap"; -// assert maxLoad.isGreaterOrEqual(Capacity.Builder.newInstance().build()) : "maxLoad can never be smaller than 0"; } @Override diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/UpdateMaxTimeInVehicle.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/UpdateMaxTimeInVehicle.java index dc8fbcadc..94abbd0cb 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/UpdateMaxTimeInVehicle.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/UpdateMaxTimeInVehicle.java @@ -57,15 +57,7 @@ public class UpdateMaxTimeInVehicle implements StateUpdater, ActivityVisitor{ private final VehicleRoutingActivityCosts activityCosts; - private UpdateVehicleDependentPracticalTimeWindows.VehiclesToUpdate vehiclesToUpdate = new UpdateVehicleDependentPracticalTimeWindows.VehiclesToUpdate() { - - @Override - public Collection get(VehicleRoute route) { - return Arrays.asList(route.getVehicle()); - } - - }; - + private UpdateVehicleDependentPracticalTimeWindows.VehiclesToUpdate vehiclesToUpdate = route -> Arrays.asList(route.getVehicle()); public UpdateMaxTimeInVehicle(StateManager stateManager, StateId slackTimeId, TransportTime transportTime, VehicleRoutingActivityCosts activityCosts, StateId openJobsId) { this.stateManager = stateManager; @@ -90,11 +82,11 @@ public void begin(VehicleRoute route) { actStartTimesPerVehicle.clear(); vehicles = vehiclesToUpdate.get(route); this.route = route; - for(Vehicle v : vehicles){ + for(Vehicle v : vehicles) { int vehicleIndex = v.getVehicleTypeIdentifier().getIndex(); - openPickupEndTimesPerVehicle.put(vehicleIndex, new HashMap()); - slackTimesPerVehicle.put(vehicleIndex, new HashMap()); - actStartTimesPerVehicle.put(vehicleIndex, new HashMap()); + openPickupEndTimesPerVehicle.put(vehicleIndex, new HashMap<>()); + slackTimesPerVehicle.put(vehicleIndex, new HashMap<>()); + actStartTimesPerVehicle.put(vehicleIndex, new HashMap<>()); prevActEndTimes[vehicleIndex] = v.getEarliestDeparture(); prevActLocations[vehicleIndex] = v.getStartLocation(); } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/UpdateVehicleDependentPracticalTimeWindows.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/UpdateVehicleDependentPracticalTimeWindows.java index 0fb6e0f8d..91d5f762b 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/UpdateVehicleDependentPracticalTimeWindows.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/UpdateVehicleDependentPracticalTimeWindows.java @@ -42,20 +42,13 @@ public void visit(VehicleRoute route) { finish(); } - public static interface VehiclesToUpdate { + public interface VehiclesToUpdate { - public Collection get(VehicleRoute route); + Collection get(VehicleRoute route); } - private VehiclesToUpdate vehiclesToUpdate = new VehiclesToUpdate() { - - @Override - public Collection get(VehicleRoute route) { - return Arrays.asList(route.getVehicle()); - } - - }; + private VehiclesToUpdate vehiclesToUpdate = route -> Arrays.asList(route.getVehicle()); private final StateManager stateManager; From 9444e364ebae58c05e38bc6b08e5281202084424 Mon Sep 17 00:00:00 2001 From: oblonski Date: Sat, 21 Nov 2020 22:00:23 +0100 Subject: [PATCH 115/191] clean up --- .../AvgServiceAndShipmentDistance.java | 43 +++++---------- .../AvgServiceAndShipmentDistanceTest.java | 53 +++++++++++++++++++ 2 files changed, 65 insertions(+), 31 deletions(-) create mode 100644 jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/distance/AvgServiceAndShipmentDistanceTest.java diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/distance/AvgServiceAndShipmentDistance.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/distance/AvgServiceAndShipmentDistance.java index 9a1e84e99..c4e4fa14a 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/distance/AvgServiceAndShipmentDistance.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/distance/AvgServiceAndShipmentDistance.java @@ -19,11 +19,12 @@ import com.graphhopper.jsprit.core.problem.Location; import com.graphhopper.jsprit.core.problem.cost.VehicleRoutingTransportCosts; +import com.graphhopper.jsprit.core.problem.job.Activity; import com.graphhopper.jsprit.core.problem.job.Job; -import com.graphhopper.jsprit.core.problem.job.Service; -import com.graphhopper.jsprit.core.problem.job.Shipment; import com.graphhopper.jsprit.core.util.EuclideanDistanceCalculator; +import java.util.List; + /** * Calculator that calculates average distance between two jobs based on the input-transport costs. @@ -39,7 +40,6 @@ public class AvgServiceAndShipmentDistance implements JobDistance { public AvgServiceAndShipmentDistance(VehicleRoutingTransportCosts costs) { super(); this.costs = costs; - } /** @@ -50,36 +50,17 @@ public AvgServiceAndShipmentDistance(VehicleRoutingTransportCosts costs) { @Override public double getDistance(Job i, Job j) { if (i.equals(j)) return 0.0; - - if (i instanceof Service && j instanceof Service) { - return calcDist((Service) i, (Service) j); - } else if (i instanceof Service && j instanceof Shipment) { - return calcDist((Service) i, (Shipment) j); - } else if (i instanceof Shipment && j instanceof Service) { - return calcDist((Service) j, (Shipment) i); - } else if (i instanceof Shipment && j instanceof Shipment) { - return calcDist((Shipment) i, (Shipment) j); - } else { - throw new IllegalStateException("this supports only shipments or services"); - } + return calcDist(i.getActivities(), j.getActivities()); } - private double calcDist(Service i, Service j) { - return calcDist(i.getLocation(), j.getLocation()); - } - - private double calcDist(Service i, Shipment j) { - double c_ij1 = calcDist(i.getLocation(), j.getPickupLocation()); - double c_ij2 = calcDist(i.getLocation(), j.getDeliveryLocation()); - return (c_ij1 + c_ij2) / 2.0; - } - - private double calcDist(Shipment i, Shipment j) { - double c_i1j1 = calcDist(i.getPickupLocation(), j.getPickupLocation()); - double c_i1j2 = calcDist(i.getPickupLocation(), j.getDeliveryLocation()); - double c_i2j1 = calcDist(i.getDeliveryLocation(), j.getPickupLocation()); - double c_i2j2 = calcDist(i.getDeliveryLocation(), j.getDeliveryLocation()); - return (c_i1j1 + c_i1j2 + c_i2j1 + c_i2j2) / 4.0; + private double calcDist(List iActivities, List jActivities) { + double sum = 0; + for (Activity iActivity : iActivities) { + for (Activity jActivity : jActivities) { + sum += calcDist(iActivity.getLocation(), jActivity.getLocation()); + } + } + return sum / (iActivities.size() * jActivities.size()); } private double calcDist(Location location_i, Location location_j) { diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/distance/AvgServiceAndShipmentDistanceTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/distance/AvgServiceAndShipmentDistanceTest.java new file mode 100644 index 000000000..61c933f85 --- /dev/null +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/distance/AvgServiceAndShipmentDistanceTest.java @@ -0,0 +1,53 @@ +/* + * Licensed to GraphHopper GmbH under one or more contributor + * license agreements. See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + * + * GraphHopper GmbH licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.graphhopper.jsprit.core.algorithm.ruin.distance; + +import com.graphhopper.jsprit.core.problem.Location; +import com.graphhopper.jsprit.core.problem.job.Service; +import com.graphhopper.jsprit.core.problem.job.Shipment; +import com.graphhopper.jsprit.core.util.EuclideanCosts; +import org.junit.Assert; +import org.junit.Test; + +public class AvgServiceAndShipmentDistanceTest { + + @Test + public void avgDistanceBetweenTwoServicesTest() { + Service s1 = Service.Builder.newInstance("s1").setLocation(Location.newInstance(10, 0)).build(); + Service s2 = Service.Builder.newInstance("s2").setLocation(Location.newInstance(20, 0)).build(); + AvgServiceAndShipmentDistance distance = new AvgServiceAndShipmentDistance(new EuclideanCosts()); + Assert.assertEquals(10d, distance.getDistance(s1, s2), 0.01); + } + + @Test + public void avgDistanceBetweenServiceAndShipmentTest() { + Service s1 = Service.Builder.newInstance("s1").setLocation(Location.newInstance(10, 0)).build(); + Shipment shipment = Shipment.Builder.newInstance("shipment").setPickupLocation(Location.newInstance(20, 0)).setDeliveryLocation(Location.newInstance(30, 0)).build(); + AvgServiceAndShipmentDistance distance = new AvgServiceAndShipmentDistance(new EuclideanCosts()); + Assert.assertEquals(15d, distance.getDistance(s1, shipment), 0.01); + } + + @Test + public void avgDistanceBetweenShipmentAndShipmentTest() { + Shipment shipment1 = Shipment.Builder.newInstance("shipment1").setPickupLocation(Location.newInstance(20, 0)).setDeliveryLocation(Location.newInstance(30, 0)).build(); + Shipment shipment2 = Shipment.Builder.newInstance("shipment2").setPickupLocation(Location.newInstance(40, 0)).setDeliveryLocation(Location.newInstance(50, 0)).build(); + AvgServiceAndShipmentDistance distance = new AvgServiceAndShipmentDistance(new EuclideanCosts()); + Assert.assertEquals(20d, distance.getDistance(shipment1, shipment2), 0.01); + } +} From b8761436a5f2cac475fbb786c9c7b1d9a40a4966 Mon Sep 17 00:00:00 2001 From: oblonski Date: Sat, 21 Nov 2020 22:01:12 +0100 Subject: [PATCH 116/191] clean up --- ...estJobDistanceAvgCosts.java => JobDistanceAvgCostsTest.java} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/distance/{TestJobDistanceAvgCosts.java => JobDistanceAvgCostsTest.java} (99%) diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/distance/TestJobDistanceAvgCosts.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/distance/JobDistanceAvgCostsTest.java similarity index 99% rename from jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/distance/TestJobDistanceAvgCosts.java rename to jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/distance/JobDistanceAvgCostsTest.java index e83cc8bdd..3bede0692 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/distance/TestJobDistanceAvgCosts.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/distance/JobDistanceAvgCostsTest.java @@ -25,7 +25,7 @@ import org.junit.Test; -public class TestJobDistanceAvgCosts { +public class JobDistanceAvgCostsTest { public static void main(String[] args) { VehicleRoutingTransportCosts costs = new VehicleRoutingTransportCosts() { From 4527818601ad344e11dadff16115677ba338c406 Mon Sep 17 00:00:00 2001 From: oblonski Date: Sun, 22 Nov 2020 11:03:17 +0100 Subject: [PATCH 117/191] clean up --- .../algorithm/ruin/AbstractRuinStrategy.java | 2 +- .../core/algorithm/ruin/DBSCANClusterer.java | 34 ++++++------------- .../core/algorithm/ruin/JobNeighborhoods.java | 6 ++-- .../ruin/JobNeighborhoodsFactory.java | 1 - .../algorithm/ruin/JobNeighborhoodsImpl.java | 28 +++++++-------- ...obNeighborhoodsImplWithCapRestriction.java | 30 ++++++++-------- .../ruin/JobNeighborhoodsOptimized.java | 33 ++++++------------ .../ruin/NearestNeighborhoodIterator.java | 13 ++----- .../ruin/RadialRuinStrategyFactory.java | 4 +-- .../ruin/RandomRuinStrategyFactory.java | 2 +- .../core/algorithm/ruin/ReferencedJob.java | 4 +-- .../core/algorithm/ruin/RuinClusters.java | 7 ++-- .../algorithm/ruin/listener/RuinListener.java | 6 ++-- .../ruin/listener/RuinListeners.java | 2 +- 14 files changed, 69 insertions(+), 103 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/AbstractRuinStrategy.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/AbstractRuinStrategy.java index 37552b35f..4049baaea 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/AbstractRuinStrategy.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/AbstractRuinStrategy.java @@ -97,7 +97,7 @@ protected boolean removeJob(Job job, Collection vehicleRoutes) { } private boolean jobIsInitial(Job job) { - return !vrp.getJobs().containsKey(job.getId()); //for initial jobs (being not contained in problem + return !vrp.getJobs().containsKey(job.getId()); //for initial jobs being not contained in problem } protected boolean removeJob(Job job, VehicleRoute route) { diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/DBSCANClusterer.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/DBSCANClusterer.java index d73bf10a8..412e68ac8 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/DBSCANClusterer.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/DBSCANClusterer.java @@ -42,9 +42,9 @@ private static class LocationWrapper implements Clusterable { private final Job job; - private List locations; + private final List locations; - private int id; + private final int id; public LocationWrapper(Job job, List locations) { this.locations = locations; @@ -53,18 +53,6 @@ public LocationWrapper(Job job, List locations) { this.id = objCounter; } -// private List getLocations(Job job){ -// List locs = new ArrayList(); -// if(job instanceof Service) { -// locs.add(((Service) job).getLocation()); -// } -// else if(job instanceof Shipment){ -// locs.add(((Shipment) job).getPickupLocation()); -// locs.add(((Shipment) job).getDeliveryLocation()); -// } -// return locs; -// } - public List getLocations() { return locations; } @@ -81,12 +69,12 @@ public Job getJob() { private static class MyDistance implements DistanceMeasure { - private Map locations; + private final Map locations; - private VehicleRoutingTransportCosts costs; + private final VehicleRoutingTransportCosts costs; public MyDistance(List locations, VehicleRoutingTransportCosts costs) { - this.locations = new HashMap(); + this.locations = new HashMap<>(); for (LocationWrapper lw : locations) { this.locations.put((int) lw.getPoint()[0], lw); } @@ -148,13 +136,13 @@ public List> getClusters(VehicleRoute route) { } private List getLocationWrappers(VehicleRoute route) { - List locations = new ArrayList(route.getTourActivities().getJobs().size()); - Map> jobs2locations = new HashMap>(); + List locations = new ArrayList<>(route.getTourActivities().getJobs().size()); + Map> jobs2locations = new HashMap<>(); for (TourActivity act : route.getActivities()) { if (act instanceof TourActivity.JobActivity) { Job job = ((TourActivity.JobActivity) act).getJob(); if (!jobs2locations.containsKey(job)) { - jobs2locations.put(job, new ArrayList()); + jobs2locations.put(job, new ArrayList<>()); } jobs2locations.get(job).add(act.getLocation()); } @@ -169,12 +157,12 @@ private List> getClusters(VehicleRoute route, List clusterer = new org.apache.commons.math3.ml.clustering.DBSCANClusterer(sampledDistance, minNoOfJobsInCluster, new MyDistance(locations, costs)); + org.apache.commons.math3.ml.clustering.DBSCANClusterer clusterer = new org.apache.commons.math3.ml.clustering.DBSCANClusterer<>(sampledDistance, minNoOfJobsInCluster, new MyDistance(locations, costs)); return clusterer.cluster(locations); } private List> makeList(List> clusterResults) { - List> l = new ArrayList>(); + List> l = new ArrayList<>(); for (Cluster c : clusterResults) { List l_ = getJobList(c); l.add(l_); @@ -183,7 +171,7 @@ private List> makeList(List> clusterResults) } private List getJobList(Cluster c) { - List l_ = new ArrayList(); + List l_ = new ArrayList<>(); if (c == null) return l_; for (LocationWrapper lw : c.getPoints()) { l_.add(lw.getJob()); diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoods.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoods.java index 7fe65f065..b2985667e 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoods.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoods.java @@ -27,10 +27,10 @@ */ public interface JobNeighborhoods { - public Iterator getNearestNeighborsIterator(int nNeighbors, Job neighborTo); + Iterator getNearestNeighborsIterator(int nNeighbors, Job neighborTo); - public void initialise(); + void initialise(); - public double getMaxDistance(); + double getMaxDistance(); } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsFactory.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsFactory.java index 7616f9f49..e8f429b70 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsFactory.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsFactory.java @@ -31,7 +31,6 @@ public JobNeighborhoods createNeighborhoods(VehicleRoutingProblem vrp, JobDistan } public JobNeighborhoods createNeighborhoods(VehicleRoutingProblem vrp, JobDistance jobDistance, int capacity) { -// return new JobNeighborhoodsImplWithCapRestriction(vrp, jobDistance, capacity); return new JobNeighborhoodsOptimized(vrp, jobDistance, capacity); } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsImpl.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsImpl.java index bcb20e948..10e4bb412 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsImpl.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsImpl.java @@ -25,20 +25,23 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.*; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.TreeSet; /** * Created by schroeder on 07/01/15. */ class JobNeighborhoodsImpl implements JobNeighborhoods { - private static Logger logger = LoggerFactory.getLogger(JobNeighborhoodsImpl.class); + private static final Logger logger = LoggerFactory.getLogger(JobNeighborhoodsImpl.class); - private VehicleRoutingProblem vrp; + private final VehicleRoutingProblem vrp; - private Map> distanceNodeTree = new HashMap>(); + private final Map> distanceNodeTree = new HashMap<>(); - private JobDistance jobDistance; + private final JobDistance jobDistance; private double maxDistance = 0.; @@ -89,15 +92,12 @@ private void calculateDistancesFromJob2Job() { stopWatch.start(); int nuOfDistancesStored = 0; for (Job i : vrp.getJobs().values()) { - TreeSet treeSet = new TreeSet( - new Comparator() { - @Override - public int compare(ReferencedJob o1, ReferencedJob o2) { - if (o1.getDistance() <= o2.getDistance()) { - return -1; - } else { - return 1; - } + TreeSet treeSet = new TreeSet<>( + (o1, o2) -> { + if (o1.getDistance() <= o2.getDistance()) { + return -1; + } else { + return 1; } }); distanceNodeTree.put(i.getId(), treeSet); diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsImplWithCapRestriction.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsImplWithCapRestriction.java index b32372156..6c36998ba 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsImplWithCapRestriction.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsImplWithCapRestriction.java @@ -25,22 +25,25 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.*; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.TreeSet; /** * Created by schroeder on 07/01/15. */ class JobNeighborhoodsImplWithCapRestriction implements JobNeighborhoods { - private static Logger logger = LoggerFactory.getLogger(JobNeighborhoodsImpl.class); + private static final Logger logger = LoggerFactory.getLogger(JobNeighborhoodsImpl.class); - private VehicleRoutingProblem vrp; + private final VehicleRoutingProblem vrp; - private Map> distanceNodeTree = new HashMap>(); + private final Map> distanceNodeTree = new HashMap<>(); - private JobDistance jobDistance; + private final JobDistance jobDistance; - private int capacity; + private final int capacity; private double maxDistance = 0.; @@ -104,15 +107,12 @@ private void calculateDistancesFromJob2Job() { int nuOfDistancesStored = 0; for (Job i : vrp.getJobs().values()) { // Collections.sort(list, ); - TreeSet treeSet = new TreeSet( - new Comparator() { - @Override - public int compare(ReferencedJob o1, ReferencedJob o2) { - if (o1.getDistance() <= o2.getDistance()) { - return -1; - } else { - return 1; - } + TreeSet treeSet = new TreeSet<>( + (o1, o2) -> { + if (o1.getDistance() <= o2.getDistance()) { + return -1; + } else { + return 1; } }); distanceNodeTree.put(i.getId(), treeSet); diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsOptimized.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsOptimized.java index df37141f7..8749d23bb 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsOptimized.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsOptimized.java @@ -50,10 +50,7 @@ public ArrayIterator(int noItems, int[] itemArray, Job[] jobs) { @Override public boolean hasNext() { - if(index < noItems && index < itemArray.length) { - return true; - } - return false; + return index < noItems && index < itemArray.length; } @Override @@ -69,17 +66,17 @@ public void remove() { } } - private static Logger logger = LoggerFactory.getLogger(JobNeighborhoodsOptimized.class); + private static final Logger logger = LoggerFactory.getLogger(JobNeighborhoodsOptimized.class); - private VehicleRoutingProblem vrp; + private final VehicleRoutingProblem vrp; - private int[][] neighbors; + private final int[][] neighbors; - private Job[] jobs; + private final Job[] jobs; - private JobDistance jobDistance; + private final JobDistance jobDistance; - private int capacity; + private final int capacity; private double maxDistance = 0.; @@ -122,7 +119,7 @@ private void calculateDistancesFromJob2Job() { for (Job job_i : vrp.getJobsInclusiveInitialJobsInRoutes().values()) { if (job_i.getActivities().get(0).getLocation() == null) continue; jobs[job_i.getIndex()] = job_i; - List jobList = new ArrayList(vrp.getJobsInclusiveInitialJobsInRoutes().values().size()); + List jobList = new ArrayList<>(vrp.getJobsInclusiveInitialJobsInRoutes().values().size()); for (Job job_j : vrp.getJobsInclusiveInitialJobsInRoutes().values()) { if (job_j.getActivities().get(0).getLocation() == null) continue; if (job_i == job_j) continue; @@ -131,7 +128,7 @@ private void calculateDistancesFromJob2Job() { ReferencedJob referencedJob = new ReferencedJob(job_j, distance); jobList.add(referencedJob); } - Collections.sort(jobList,getComparator()); + jobList.sort(getComparator()); int neiborhoodSize = Math.min(capacity, jobList.size()); int[] jobIndices = new int[neiborhoodSize]; for (int index = 0; index < neiborhoodSize; index++) { @@ -144,17 +141,7 @@ private void calculateDistancesFromJob2Job() { } private Comparator getComparator(){ - return new Comparator() { - @Override - public int compare(ReferencedJob o1, ReferencedJob o2) { - if (o1.getDistance() < o2.getDistance()) { - return -1; - } else if (o1.getDistance() > o2.getDistance()){ - return 1; - } - else return 0; - } - }; + return Comparator.comparingDouble(ReferencedJob::getDistance); } @Override diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/NearestNeighborhoodIterator.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/NearestNeighborhoodIterator.java index 3bb966a6b..6b80192d3 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/NearestNeighborhoodIterator.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/NearestNeighborhoodIterator.java @@ -19,8 +19,6 @@ package com.graphhopper.jsprit.core.algorithm.ruin; import com.graphhopper.jsprit.core.problem.job.Job; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import java.util.Iterator; @@ -29,11 +27,9 @@ */ class NearestNeighborhoodIterator implements Iterator { - private static Logger log = LoggerFactory.getLogger(NearestNeighborhoodIterator.class); + private final Iterator jobIter; - private Iterator jobIter; - - private int nJobs; + private final int nJobs; private int jobCount = 0; @@ -46,10 +42,7 @@ public NearestNeighborhoodIterator(Iterator jobIter, int nJobs) { @Override public boolean hasNext() { if (jobCount < nJobs) { - boolean hasNext = jobIter.hasNext(); -// if (!hasNext) -// log.warn("more jobs are requested then iterator can iterate over. probably the number of neighbors memorized in JobNeighborhoods is too small"); - return hasNext; + return jobIter.hasNext(); } return false; } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RadialRuinStrategyFactory.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RadialRuinStrategyFactory.java index 021383535..a55e7b4b6 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RadialRuinStrategyFactory.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RadialRuinStrategyFactory.java @@ -22,9 +22,9 @@ public class RadialRuinStrategyFactory implements RuinStrategyFactory { - private double fraction; + private final double fraction; - private JobDistance jobDistance; + private final JobDistance jobDistance; public RadialRuinStrategyFactory(double fraction, JobDistance jobDistance) { super(); diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RandomRuinStrategyFactory.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RandomRuinStrategyFactory.java index 530766a20..52d931a6e 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RandomRuinStrategyFactory.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RandomRuinStrategyFactory.java @@ -21,7 +21,7 @@ public class RandomRuinStrategyFactory implements RuinStrategyFactory { - private double fraction; + private final double fraction; public RandomRuinStrategyFactory(double fraction) { super(); diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/ReferencedJob.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/ReferencedJob.java index 8be6e0efc..269ba3d3f 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/ReferencedJob.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/ReferencedJob.java @@ -24,8 +24,8 @@ * Created by schroeder on 07/01/15. */ class ReferencedJob { - private Job job; - private double distance; + private final Job job; + private final double distance; public ReferencedJob(Job job, double distance) { super(); diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinClusters.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinClusters.java index 6158245ef..761b0b0cd 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinClusters.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinClusters.java @@ -64,12 +64,11 @@ public TourActivity.JobActivity getActivity() { } } - private Logger logger = LoggerFactory.getLogger(RuinClusters.class); + private final Logger logger = LoggerFactory.getLogger(RuinClusters.class); - private VehicleRoutingProblem vrp; + private final VehicleRoutingProblem vrp; - - private JobNeighborhoods jobNeighborhoods; + private final JobNeighborhoods jobNeighborhoods; private int noClusters = 2; diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/listener/RuinListener.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/listener/RuinListener.java index 674c979ad..5a1102907 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/listener/RuinListener.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/listener/RuinListener.java @@ -36,7 +36,7 @@ public interface RuinListener extends SearchStrategyModuleListener { * * @param routes */ - public void ruinStarts(Collection routes); + void ruinStarts(Collection routes); /** * informs about ruin-end. @@ -44,7 +44,7 @@ public interface RuinListener extends SearchStrategyModuleListener { * @param routes * @param unassignedJobs */ - public void ruinEnds(Collection routes, Collection unassignedJobs); + void ruinEnds(Collection routes, Collection unassignedJobs); /** * informs if a {@link Job} has been removed from a {@link VehicleRoute}. @@ -52,6 +52,6 @@ public interface RuinListener extends SearchStrategyModuleListener { * @param job * @param fromRoute */ - public void removed(Job job, VehicleRoute fromRoute); + void removed(Job job, VehicleRoute fromRoute); } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/listener/RuinListeners.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/listener/RuinListeners.java index 7eebb7c04..a346d2e89 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/listener/RuinListeners.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/listener/RuinListeners.java @@ -28,7 +28,7 @@ public class RuinListeners { - private Collection ruinListeners = new ArrayList(); + private Collection ruinListeners = new ArrayList<>(); public void ruinStarts(Collection routes) { for (RuinListener l : ruinListeners) l.ruinStarts(routes); From 7805a89907d23d0800c694c9c5fb182833b59ab2 Mon Sep 17 00:00:00 2001 From: Marcel Radischat Date: Tue, 24 Nov 2020 12:16:39 +0100 Subject: [PATCH 118/191] Add failing example to expose bug When initial routes are set and the option to use the AlgorithmUtils class is set, an error will be thrown as some crucial state updaters are not set. --- ...ithoutLocationAndInitialRoutesExample.java | 112 ++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleWithoutLocationAndInitialRoutesExample.java diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleWithoutLocationAndInitialRoutesExample.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleWithoutLocationAndInitialRoutesExample.java new file mode 100644 index 000000000..3a29da119 --- /dev/null +++ b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleWithoutLocationAndInitialRoutesExample.java @@ -0,0 +1,112 @@ +/* + * Licensed to GraphHopper GmbH under one or more contributor + * license agreements. See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + * + * GraphHopper GmbH licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.graphhopper.jsprit.examples; + +import com.graphhopper.jsprit.analysis.toolbox.Plotter; +import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; +import com.graphhopper.jsprit.core.algorithm.box.Jsprit; +import com.graphhopper.jsprit.core.algorithm.state.StateManager; +import com.graphhopper.jsprit.core.problem.Location; +import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; +import com.graphhopper.jsprit.core.problem.constraint.ConstraintManager; +import com.graphhopper.jsprit.core.problem.job.Service; +import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; +import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; +import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; +import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl.Builder; +import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; +import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; +import com.graphhopper.jsprit.core.reporting.SolutionPrinter; +import com.graphhopper.jsprit.core.util.Solutions; + +import java.util.Collection; + + +public class SimpleWithoutLocationAndInitialRoutesExample { + + + public static void main(String[] args) { + + VehicleTypeImpl.Builder vehicleTypeBuilder = VehicleTypeImpl.Builder.newInstance("vehicleType").setCostPerWaitingTime(1.0).addCapacityDimension(0, 3); + VehicleType vehicleType = vehicleTypeBuilder.build(); + + /* + * get a vehicle-builder and build a vehicle located at (10,10) with type "vehicleType" + */ + Builder vehicleBuilder = Builder.newInstance("vehicle"); + vehicleBuilder.setStartLocation(Location.newInstance(0, 0)); + vehicleBuilder.setType(vehicleType); + VehicleImpl vehicle = vehicleBuilder.build(); + + /* + * build services at the required locations, each with a capacity-demand of 1. + */ + Service telco1 = Service.Builder.newInstance("telco-1").addTimeWindow(1000, 2500).setServiceTime(1800).build(); + Service telco2 = Service.Builder.newInstance("telco-2").addTimeWindow(6000, 8000).setServiceTime(1800).build(); + Service service2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 1000)).build(); + Service service3 = Service.Builder.newInstance("3").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 2000)).build(); + Service service4 = Service.Builder.newInstance("4").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 3000)).build(); + + + VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); + vrpBuilder.setFleetSize(VehicleRoutingProblem.FleetSize.FINITE); + VehicleRoute initialRouteWithBreaks = VehicleRoute.Builder.newInstance(vehicle).addService(telco1).addService(telco2).build(); + vrpBuilder.addInitialVehicleRoute(initialRouteWithBreaks); + vrpBuilder.addJob(service2).addJob(service3).addJob(service4); + + VehicleRoutingProblem problem = vrpBuilder.build(); + + /* + * get the algorithm out-of-the-box. + */ + StateManager stateManager = new StateManager(problem);// + ConstraintManager constraintManager = new ConstraintManager(problem, stateManager); + + Jsprit.Builder builder = Jsprit.Builder.newInstance(problem); + builder.addCoreStateAndConstraintStuff(true); + builder.setStateAndConstraintManager(stateManager, constraintManager); + builder.setProperty(Jsprit.Parameter.CONSTRUCTION, Jsprit.Construction.BEST_INSERTION.toString()); + + VehicleRoutingAlgorithm algorithm = builder.buildAlgorithm(); + + /* + * and search a solution + */ + Collection solutions = algorithm.searchSolutions(); + + /* + * get the best + */ + VehicleRoutingProblemSolution bestSolution = Solutions.bestOf(solutions); + +// new VrpXMLWriter(problem, solutions).write("output/problem-with-solution.xml"); + + SolutionPrinter.print(problem, bestSolution, SolutionPrinter.Print.VERBOSE); + +// /* +// * plot +// */ + new Plotter(problem, bestSolution).plot("output/plot.png", "simple example"); +// +// /* +// render problem and solution with GraphStream +// */ +// new GraphStreamViewer(problem, bestSolution).labelWith(Label.ID).setRenderDelay(200).display(); + } + +} From 09afd211e6bcd7675379e256162f227a208653e5 Mon Sep 17 00:00:00 2001 From: Marcel Radischat Date: Tue, 24 Nov 2020 12:22:05 +0100 Subject: [PATCH 119/191] Check all jobs when evaluating if state updates should be added --- .../jsprit/core/algorithm/AlgorithmUtil.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/AlgorithmUtil.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/AlgorithmUtil.java index a98b50fd2..f354bbbc4 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/AlgorithmUtil.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/AlgorithmUtil.java @@ -22,15 +22,13 @@ import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; import com.graphhopper.jsprit.core.problem.constraint.ConstraintManager; import com.graphhopper.jsprit.core.problem.constraint.SwitchNotFeasible; +import com.graphhopper.jsprit.core.problem.job.Job; import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; import com.graphhopper.jsprit.core.problem.vehicle.Vehicle; import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeKey; import com.graphhopper.jsprit.core.util.ActivityTimeTracker; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.Map; +import java.util.*; /** * Created by schroeder on 02/08/16. @@ -38,7 +36,10 @@ public class AlgorithmUtil { public static void addCoreConstraints(ConstraintManager constraintManager, StateManager stateManager, final VehicleRoutingProblem vrp){ - if (vrp.getJobs().size() != vrp.getJobsWithLocation().size()) { + Collection allJobs = vrp.getJobsInclusiveInitialJobsInRoutes().values(); + boolean anyJobsWithoutLocation = allJobs.stream().flatMap(job -> job.getActivities().stream()).anyMatch(activity -> activity.getLocation() == null); + + if (anyJobsWithoutLocation) { stateManager.addStateUpdater(new UpdateActivityNextLocations()); stateManager.addStateUpdater(new UpdateActivityPrevLocations()); } From b2a78bc0de573960c5db5af98703b15de5496f8c Mon Sep 17 00:00:00 2001 From: oblonski Date: Thu, 21 Jan 2021 10:48:10 +0100 Subject: [PATCH 120/191] clean up --- .../core/algorithm/recreate/BestInsertion.java | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/BestInsertion.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/BestInsertion.java index 576e41f48..0524ffead 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/BestInsertion.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/BestInsertion.java @@ -37,18 +37,11 @@ */ public final class BestInsertion extends AbstractInsertionStrategy { - private static Logger logger = LoggerFactory.getLogger(BestInsertion.class); + final private static Logger logger = LoggerFactory.getLogger(BestInsertion.class); private JobInsertionCostsCalculator bestInsertionCostCalculator; - private NoiseMaker noiseMaker = new NoiseMaker() { - - @Override - public double makeNoise() { - return 0; - } - - }; + private NoiseMaker noiseMaker = () -> 0; public BestInsertion(JobInsertionCostsCalculator jobInsertionCalculator, VehicleRoutingProblem vehicleRoutingProblem) { super(vehicleRoutingProblem); @@ -63,10 +56,10 @@ public String toString() { @Override public Collection insertUnassignedJobs(Collection vehicleRoutes, Collection unassignedJobs) { - List badJobs = new ArrayList(unassignedJobs.size()); - List unassignedJobList = new ArrayList(unassignedJobs); + List badJobs = new ArrayList<>(unassignedJobs.size()); + List unassignedJobList = new ArrayList<>(unassignedJobs); Collections.shuffle(unassignedJobList, random); - Collections.sort(unassignedJobList, new AccordingToPriorities()); + unassignedJobList.sort(new AccordingToPriorities()); for (Job unassignedJob : unassignedJobList) { Insertion bestInsertion = null; InsertionData empty = new InsertionData.NoInsertionFound(); From c1c566ca9630fb8c9e7513df0a04cd9b0e75afa3 Mon Sep 17 00:00:00 2001 From: oblonski Date: Sun, 14 Mar 2021 12:00:05 +0100 Subject: [PATCH 121/191] add insertionData to jobInserted Listener --- .../recreate/AbstractInsertionStrategy.java | 2 +- .../algorithm/recreate/BreakScheduling.java | 18 ++++++++++-------- ...figureLocalActivityInsertionCalculator.java | 2 +- .../recreate/DellAmicoFixCostCalculator.java | 2 +- .../core/algorithm/recreate/Inserter.java | 2 +- .../recreate/SolutionCompletenessRatio.java | 2 +- .../recreate/listener/InsertionListeners.java | 4 ++-- .../recreate/listener/JobInsertedListener.java | 3 ++- .../core/algorithm/state/StateManager.java | 6 +++--- .../core/algorithm/state/UpdateLoads.java | 3 ++- .../algorithm/MeetTimeWindowConstraint_IT.java | 5 +++-- .../jsprit/core/algorithm/box/JspritTest.java | 4 ++-- 12 files changed, 29 insertions(+), 24 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/AbstractInsertionStrategy.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/AbstractInsertionStrategy.java index 8bc5a0dfd..d6fd3e1bc 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/AbstractInsertionStrategy.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/AbstractInsertionStrategy.java @@ -124,7 +124,7 @@ protected void insertJob(Job unassignedJob, InsertionData iData, VehicleRoute in for (Event e : iData.getEvents()) { eventListeners.inform(e); } - insertionsListeners.informJobInserted(unassignedJob, inRoute, iData.getInsertionCost(), iData.getAdditionalTime()); + insertionsListeners.informJobInserted(unassignedJob, inRoute, iData); } } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/BreakScheduling.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/BreakScheduling.java index a64b81546..accd3594c 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/BreakScheduling.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/BreakScheduling.java @@ -30,7 +30,9 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.*; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; /** * Created by schroeder on 07/04/16. @@ -52,23 +54,23 @@ public BreakScheduling(VehicleRoutingProblem vrp, StateManager stateManager, Con } @Override - public void informJobInserted(Job job2insert, VehicleRoute inRoute, double additionalCosts, double additionalTime) { + public void informJobInserted(Job job2insert, VehicleRoute inRoute, InsertionData insertionData) { Break aBreak = inRoute.getVehicle().getBreak(); - if(aBreak != null){ + if (aBreak != null) { boolean removed = inRoute.getTourActivities().removeJob(aBreak); - if(removed){ + if (removed) { logger.trace("ruin: {}", aBreak.getId()); - stateManager.removed(aBreak,inRoute); + stateManager.removed(aBreak, inRoute); stateManager.reCalculateStates(inRoute); } - if(inRoute.getEnd().getArrTime() > aBreak.getTimeWindow().getEnd()){ + if (inRoute.getEnd().getArrTime() > aBreak.getTimeWindow().getEnd()) { InsertionData iData = breakInsertionCalculator.getInsertionData(inRoute, aBreak, inRoute.getVehicle(), inRoute.getDepartureTime(), inRoute.getDriver(), Double.MAX_VALUE); if(!(iData instanceof InsertionData.NoInsertionFound)){ logger.trace("insert: [jobId={}]{}", aBreak.getId(), iData); for(Event e : iData.getEvents()){ eventListeners.inform(e); } - stateManager.informJobInserted(aBreak,inRoute,0,0); + stateManager.informJobInserted(aBreak, inRoute, iData); } } } @@ -110,7 +112,7 @@ public void informInsertionStarts(Collection vehicleRoutes, Collec for(Event e : iData.getEvents()){ eventListeners.inform(e); } - stateManager.informJobInserted(aBreak,route,0,0); + stateManager.informJobInserted(aBreak, route, iData); } } } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ConfigureLocalActivityInsertionCalculator.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ConfigureLocalActivityInsertionCalculator.java index a140ea35e..914bf2090 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ConfigureLocalActivityInsertionCalculator.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ConfigureLocalActivityInsertionCalculator.java @@ -50,7 +50,7 @@ public void informInsertionStarts(Collection vehicleRoutes, Collec } @Override - public void informJobInserted(Job job2insert, VehicleRoute inRoute, double additionalCosts, double additionalTime) { + public void informJobInserted(Job job2insert, VehicleRoute inRoute, InsertionData insertionData) { nuOfJobsToRecreate--; double completenessRatio = (1 - ((double) nuOfJobsToRecreate / (double) vrp.getJobs().values().size())); localActivityInsertionCostsCalculator.setSolutionCompletenessRatio(Math.max(0.5, completenessRatio)); diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/DellAmicoFixCostCalculator.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/DellAmicoFixCostCalculator.java index a08fe6d76..6011bc43a 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/DellAmicoFixCostCalculator.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/DellAmicoFixCostCalculator.java @@ -54,7 +54,7 @@ public void informInsertionStarts(Collection routes, Collection routes, Collection getListeners() { return listeners; } - public void informJobInserted(Job insertedJob, VehicleRoute inRoute, double additionalCosts, double additionalTime) { + public void informJobInserted(Job insertedJob, VehicleRoute inRoute, InsertionData insertionData) { for (InsertionListener l : listeners) { if (l instanceof JobInsertedListener) { - ((JobInsertedListener) l).informJobInserted(insertedJob, inRoute, additionalCosts, additionalTime); + ((JobInsertedListener) l).informJobInserted(insertedJob, inRoute, insertionData); } } } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/listener/JobInsertedListener.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/listener/JobInsertedListener.java index 35bc0aa91..3d69c4d73 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/listener/JobInsertedListener.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/listener/JobInsertedListener.java @@ -17,11 +17,12 @@ */ package com.graphhopper.jsprit.core.algorithm.recreate.listener; +import com.graphhopper.jsprit.core.algorithm.recreate.InsertionData; import com.graphhopper.jsprit.core.problem.job.Job; import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; public interface JobInsertedListener extends InsertionListener { - public void informJobInserted(Job job2insert, VehicleRoute inRoute, double additionalCosts, double additionalTime); + void informJobInserted(Job job2insert, VehicleRoute inRoute, InsertionData insertionData); } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/StateManager.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/StateManager.java index a21c441a8..9a9fc901f 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/StateManager.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/StateManager.java @@ -18,6 +18,7 @@ package com.graphhopper.jsprit.core.algorithm.state; import com.graphhopper.jsprit.core.algorithm.listener.IterationStartsListener; +import com.graphhopper.jsprit.core.algorithm.recreate.InsertionData; import com.graphhopper.jsprit.core.algorithm.recreate.listener.*; import com.graphhopper.jsprit.core.algorithm.ruin.listener.RuinListener; import com.graphhopper.jsprit.core.algorithm.ruin.listener.RuinListeners; @@ -546,9 +547,8 @@ void addListener(InsertionListener insertionListener) { } @Override - public void informJobInserted(Job job2insert, VehicleRoute inRoute, double additionalCosts, double additionalTime) { -// log.debug("insert " + job2insert + " in " + inRoute); - insertionListeners.informJobInserted(job2insert, inRoute, additionalCosts, additionalTime); + public void informJobInserted(Job job2insert, VehicleRoute inRoute, InsertionData insertionData) { + insertionListeners.informJobInserted(job2insert, inRoute, insertionData); for (RouteVisitor v : routeVisitors) { v.visit(inRoute); } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/UpdateLoads.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/UpdateLoads.java index ad4b07ac7..502191b23 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/UpdateLoads.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/UpdateLoads.java @@ -17,6 +17,7 @@ */ package com.graphhopper.jsprit.core.algorithm.state; +import com.graphhopper.jsprit.core.algorithm.recreate.InsertionData; import com.graphhopper.jsprit.core.algorithm.recreate.listener.InsertionStartsListener; import com.graphhopper.jsprit.core.algorithm.recreate.listener.JobInsertedListener; import com.graphhopper.jsprit.core.problem.Capacity; @@ -97,7 +98,7 @@ public void informInsertionStarts(Collection vehicleRoutes, Collec } @Override - public void informJobInserted(Job job2insert, VehicleRoute inRoute, double additionalCosts, double additionalTime) { + public void informJobInserted(Job job2insert, VehicleRoute inRoute, InsertionData insertionData) { if (job2insert instanceof Delivery) { Capacity loadAtDepot = stateManager.getRouteState(inRoute, InternalStates.LOAD_AT_BEGINNING, Capacity.class); if (loadAtDepot == null) loadAtDepot = defaultValue; diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/MeetTimeWindowConstraint_IT.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/MeetTimeWindowConstraint_IT.java index 84bf83512..87961d7c0 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/MeetTimeWindowConstraint_IT.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/MeetTimeWindowConstraint_IT.java @@ -18,6 +18,7 @@ package com.graphhopper.jsprit.core.algorithm; import com.graphhopper.jsprit.core.algorithm.box.Jsprit; +import com.graphhopper.jsprit.core.algorithm.recreate.InsertionData; import com.graphhopper.jsprit.core.algorithm.recreate.listener.JobInsertedListener; import com.graphhopper.jsprit.core.algorithm.recreate.listener.VehicleSwitchedListener; import com.graphhopper.jsprit.core.problem.Location; @@ -84,7 +85,7 @@ public void whenEmployingVehicleWithDifferentWorkingShifts_certainJobsCanNeverBe vra.addListener(new JobInsertedListener() { @Override - public void informJobInserted(Job job2insert, VehicleRoute inRoute, double additionalCosts, double additionalTime) { + public void informJobInserted(Job job2insert, VehicleRoute inRoute, InsertionData insertionData) { if (job2insert.getId().equals("1")) { if (inRoute.getVehicle().getId().equals("19")) { testFailed.add(true); @@ -180,7 +181,7 @@ public void whenEmployingVehicleWithDifferentWorkingShifts_and_vehicleSwitchIsNo vra.addListener(new JobInsertedListener() { @Override - public void informJobInserted(Job job2insert, VehicleRoute inRoute, double additionalCosts, double additionalTime) { + public void informJobInserted(Job job2insert, VehicleRoute inRoute, InsertionData insertionData) { if (job2insert.getId().equals("1")) { if (inRoute.getVehicle().getId().equals("19")) { testFailed.add(true); diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/box/JspritTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/box/JspritTest.java index 0454e94cb..7167b0fe0 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/box/JspritTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/box/JspritTest.java @@ -391,7 +391,7 @@ public void insertionShouldBeReproducible() { final List firstRecord = new ArrayList(); vra.addListener(new JobInsertedListener() { @Override - public void informJobInserted(Job job2insert, VehicleRoute inRoute, double additionalCosts, double additionalTime) { + public void informJobInserted(Job job2insert, VehicleRoute inRoute, InsertionData insertionData) { firstRecord.add(job2insert.getId()); } }); @@ -402,7 +402,7 @@ public void informJobInserted(Job job2insert, VehicleRoute inRoute, double addit final List secondRecord = new ArrayList(); second.addListener(new JobInsertedListener() { @Override - public void informJobInserted(Job job2insert, VehicleRoute inRoute, double additionalCosts, double additionalTime) { + public void informJobInserted(Job job2insert, VehicleRoute inRoute, InsertionData insertionData) { secondRecord.add(job2insert.getId()); } }); From 3f3723c95de15c6e090b55c61569ea2883927c04 Mon Sep 17 00:00:00 2001 From: oblonski Date: Fri, 1 Oct 2021 10:10:14 +0200 Subject: [PATCH 122/191] add github workflow --- .github/workflows/build.yml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 000000000..eb9055962 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,20 @@ +name: Java CI + +on: + push: + branches: + - master + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Set up JDK 11 + uses: actions/setup-java@v2 + with: + java-version: 1.8 + cache: maven + - name: Build with Maven + run: mvn --batch-mode --update-snapshots verify From d02d9070f71e246ae2c26ba8d47fea1299cbacad Mon Sep 17 00:00:00 2001 From: oblonski Date: Fri, 1 Oct 2021 10:14:37 +0200 Subject: [PATCH 123/191] add java distribution --- .github/workflows/build.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index eb9055962..038b74742 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -11,10 +11,11 @@ jobs: steps: - uses: actions/checkout@v2 - - name: Set up JDK 11 + - name: Set up Java uses: actions/setup-java@v2 with: - java-version: 1.8 + java-version: '8' + distribution: 'zulu' cache: maven - name: Build with Maven run: mvn --batch-mode --update-snapshots verify From ca7456eff3fde5bff4d87d1c92f0ae3fb43ffd93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Schr=C3=B6der?= Date: Fri, 1 Oct 2021 10:35:05 +0200 Subject: [PATCH 124/191] remove travis build status --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index eb695c4f0..c739803d9 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,5 @@ jsprit ====== -[![Build Status](https://travis-ci.org/graphhopper/jsprit.svg?branch=master)](https://travis-ci.org/graphhopper/jsprit) jsprit is a java based, open source toolkit for solving rich [Traveling Salesman Problems(TSP)](http://en.wikipedia.org/wiki/Travelling_salesman_problem") and [Vehicle Routing Problems(VRP)](http://neo.lcc.uma.es/vrp/vehicle-routing-problem/). It is lightweight, flexible and easy-to-use, and based on a single all-purpose [meta-heuristic](../docs/Meta-Heuristic.md) currently solving From f4a577ba4bbdea911b939b41a14819e696346d66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Schr=C3=B6der?= Date: Fri, 1 Oct 2021 10:36:56 +0200 Subject: [PATCH 125/191] link directly to contributors --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c739803d9..2248e9da4 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ This software is released under [Apache License v2](https://www.apache.org/licen Any contribution is welcome. Feel free to improve jsprit and make pull requests. If you want to contribute to jsprit (which would be great), fork the project and build your fork, make changes, run your and jsprit's test cases and make a pull request (see [help.github.contribute](https://help.github.com/articles/fork-a-repo) or [stackoverflow.contribute](http://stackoverflow.com/questions/4384776/how-do-i-contribute-to-others-code-in-github) for details). -See who has contributed [here](https://github.com/jsprit/jsprit/blob/master/CONTRIBUTORS.md). +See who has contributed [here](https://github.com/graphhopper/jsprit/graphs/contributors). ## Contact From 2f35b02f7d93e79ffb38339453e714ab166d9469 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Schr=C3=B6der?= Date: Fri, 1 Oct 2021 10:37:47 +0200 Subject: [PATCH 126/191] contributions appear automatically in github - contributors --- CONTRIBUTORS.md | 21 --------------------- 1 file changed, 21 deletions(-) delete mode 100644 CONTRIBUTORS.md diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md deleted file mode 100644 index c5cfe7b69..000000000 --- a/CONTRIBUTORS.md +++ /dev/null @@ -1,21 +0,0 @@ -The following people have contributed code, bug fixes and ideas. - - * [Abraham Gausachs](https://github.com/agausachs) - * [Balage1551](https://github.com/balage1551) - * [Giulio Collura](https://github.com/gcollura) - * [Gwénaël Rault](https://github.com/braktar) - * [Heinrich Filter](https://github.com/HeinrichFilter) - * [jie31best](https://github.com/jie31best) - * Josh Pilkington - * [Julia Loikova](https://github.com/Jullil) - * [muzuro](https://github.com/muzuro) - * [Peter Karich](https://github.com/karussell) - * [Philip Welch](http://www.opendoorlogistics.com/) - * [Pierre-David Bélanger](https://github.com/pierredavidbelanger) - * [Stefan Schröder](https://github.com/oblonski) - * [Subhamay Das](http://www.linkedin.com/profile/view?id=10203174) - -And there are many more improving jsprit by their questions and -use cases on the mailing lists and per email. - -Thank you so much! From 05e0dbec8f31cea1deeeef0cc38a6aceabdd7791 Mon Sep 17 00:00:00 2001 From: oblonski Date: Fri, 1 Oct 2021 10:53:40 +0200 Subject: [PATCH 127/191] remove travis files --- .travis.settings.xml | 27 ------------------ .travis.yml | 66 -------------------------------------------- 2 files changed, 93 deletions(-) delete mode 100644 .travis.settings.xml delete mode 100644 .travis.yml diff --git a/.travis.settings.xml b/.travis.settings.xml deleted file mode 100644 index fd37913ec..000000000 --- a/.travis.settings.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - packagecloud-graphhopper - ${env.PACKAGECLOUD_TOKEN} - - - diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 3d221ae1e..000000000 --- a/.travis.yml +++ /dev/null @@ -1,66 +0,0 @@ -language: java -sudo: false -matrix: - fast_finish: true - include: - - jdk: oraclejdk8 - dist: trusty - # Java 9 needs to be manually installed/upgraded - # see: https://github.com/travis-ci/travis-ci/issues/2968#issuecomment-149164058 - - jdk: oraclejdk9 - env: JVM=latest - sudo: required - dist: trusty - group: edge - allow_failures: - - jdk: oraclejdk9 - -env: - global: - - BASEURL=https://www-eu.apache.org/dist/maven/maven-3/VERSION/binaries/apache-maven-VERSION-bin.zip - - FILE=apache-maven-VERSION-bin.zip - - DIR=apache-maven-VERSION - - VERSION=3.3.9 -# - secure: "j6a61/qnfFcSjx5XxmxO2hqBOwtVx5HWrD1+4Atl7WG/pRKz9+jSga1Y7oDAFb2SIl8S65kDmPQB/vC8aHxUDj/Wizjxnxn1FhPqoe9yO6Ztft+984FKFyvj7s6tsBJKcehGec+chTOwZQpH4oI4rU6IlepDHnGLHiOd0Iviryg=" -# - secure: "GiFr+v2lTQk/sTQB7CYjju1/mupS8LSJupmizLqY454utiZkabDMBOZQnF9ukpy7WhveB9hKQyEKf9iP2w7HSYEjgvogT26vZ5f2MeLnR4SWvqEtf/WBvvh+W+k/rb2f6YgitkB4Jlxn2izemBEDuKplGJphzGW41lf8XZ2IxVI=" - -before_install: - # update maven - - if [ "$TRAVIS_OS_NAME" == "linux" ]; then - wget --no-check-certificate $(echo -n $BASEURL | sed -e 's#VERSION#'$VERSION'#g'); - unzip -qq $(echo -n $FILE | sed -e 's#VERSION#'$VERSION'#'); - export M2_HOME=$PWD/$(echo -n $DIR | sed -e 's#VERSION#'$VERSION'#'); - export PATH=$M2_HOME/bin:$PATH; - fi - # update java 9 - - if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$JVM" == "latest" ]; then - sudo apt-get update -qq; - sudo /bin/echo -e oracle-java9-installer shared/accepted-oracle-license-v1-1 select true | sudo debconf-set-selections; - sudo apt-get -o Dpkg::Options::="--force-confnew" install -y oracle-java9-installer oracle-java9-set-default oracle-java9-unlimited-jce-policy; - sudo update-java-alternatives -s java-9-oracle; - fi -# - if [ "$TRAVIS_JDK_VERSION" == oraclejdk9 ]; then -# sudo rm /etc/mavenrc; -# fi - -install: true - -script: - - mvn clean test verify -B - - mvn clean package - -notifications: - email: - - $EMAIL - -cache: - directories: - - $HOME/.m2 - -deploy: - provider: script - script: "mvn deploy --settings .travis.settings.xml -DskipTests=true -B -P selected-build" - skip_cleanup: true - on: - branch: master - From 02710e529bdc430577487ae7371b2a3a09beb6dc Mon Sep 17 00:00:00 2001 From: oblonski Date: Fri, 1 Oct 2021 10:54:42 +0200 Subject: [PATCH 128/191] update cr --- NOTICE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NOTICE.md b/NOTICE.md index d97d6f2a0..b32702bf0 100644 --- a/NOTICE.md +++ b/NOTICE.md @@ -1,6 +1,6 @@ jsprit is licensed under the Apache license, Version 2.0 -Copyright 2012 - 2016 GraphHopper GmbH +Copyright 2012 - 2021 GraphHopper GmbH The jsprit-core module includes the following software: From de7ea60de59a565a0a2be1d25c39584b8045649d Mon Sep 17 00:00:00 2001 From: oblonski Date: Fri, 1 Oct 2021 10:58:41 +0200 Subject: [PATCH 129/191] rm packagecloud references --- pom.xml | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/pom.xml b/pom.xml index 85370f3d9..edbe98db0 100644 --- a/pom.xml +++ b/pom.xml @@ -82,15 +82,7 @@ - - - - io.packagecloud.maven.wagon - maven-packagecloud-wagon - 0.0.4 - - - + src/main/java src/test/java target @@ -190,14 +182,7 @@ - - packagecloud-graphhopper - packagecloud+https://packagecloud.io/graphhopper/jsprit - - - packagecloud-graphhopper - packagecloud+https://packagecloud.io/graphhopper/jsprit - + From acae6cbe516645abffc4c5b9465221c7d510b3f1 Mon Sep 17 00:00:00 2001 From: oblonski Date: Fri, 1 Oct 2021 11:02:56 +0200 Subject: [PATCH 130/191] rename workflow --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 038b74742..08ec80aaf 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,4 +1,4 @@ -name: Java CI +name: GitHub CI on: push: From c54d5155e806d8064b46ba71b3696232c80bcbbc Mon Sep 17 00:00:00 2001 From: oblonski Date: Wed, 15 Dec 2021 11:25:37 +0100 Subject: [PATCH 131/191] rm logger dependency and upgrade slf4j --- jsprit-examples/pom.xml | 11 ------- jsprit-examples/src/main/resources/log4j2.xml | 31 ------------------- pom.xml | 4 +-- 3 files changed, 2 insertions(+), 44 deletions(-) delete mode 100644 jsprit-examples/src/main/resources/log4j2.xml diff --git a/jsprit-examples/pom.xml b/jsprit-examples/pom.xml index 89a696ac4..8416a9add 100644 --- a/jsprit-examples/pom.xml +++ b/jsprit-examples/pom.xml @@ -52,17 +52,6 @@ ${project.version} - - org.apache.logging.log4j - log4j-slf4j-impl - 2.0.1 - - - - org.apache.logging.log4j - log4j-core - 2.13.2 - diff --git a/jsprit-examples/src/main/resources/log4j2.xml b/jsprit-examples/src/main/resources/log4j2.xml deleted file mode 100644 index ee2596f27..000000000 --- a/jsprit-examples/src/main/resources/log4j2.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/pom.xml b/pom.xml index edbe98db0..994b3e52f 100644 --- a/pom.xml +++ b/pom.xml @@ -76,13 +76,13 @@ 4.13.1 1.9.5 1.3 - 1.7.21 + 1.7.32 false 3.3.0 - + src/main/java src/test/java target From d7546c91871b77e894352791d48c2a01c31e8466 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 27 Jan 2022 16:16:44 +0000 Subject: [PATCH 132/191] Bump xercesImpl from 2.12.0 to 2.12.2 in /jsprit-io Bumps xercesImpl from 2.12.0 to 2.12.2. --- updated-dependencies: - dependency-name: xerces:xercesImpl dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- jsprit-io/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jsprit-io/pom.xml b/jsprit-io/pom.xml index 64e6653e2..306f50351 100644 --- a/jsprit-io/pom.xml +++ b/jsprit-io/pom.xml @@ -46,7 +46,7 @@ xerces xercesImpl - 2.12.0 + 2.12.2 From ecc7663886feefe62736f8201dd883dc14cf5c05 Mon Sep 17 00:00:00 2001 From: oblonski Date: Wed, 23 Mar 2022 14:01:10 +0100 Subject: [PATCH 133/191] fix #541 --- .../graphhopper/jsprit/core/algorithm/ruin/RuinRadial.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinRadial.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinRadial.java index 49d0f8450..eec3369f5 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinRadial.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinRadial.java @@ -113,8 +113,9 @@ public Collection ruinRoutes(Collection vehicleRoutes) { private Collection ruinRoutes(Collection vehicleRoutes, Job targetJob, int nOfJobs2BeRemoved) { List unassignedJobs = new ArrayList<>(); int nNeighbors = nOfJobs2BeRemoved - 1; - removeJob(targetJob, vehicleRoutes); - unassignedJobs.add(targetJob); + if (removeJob(targetJob, vehicleRoutes)) { + unassignedJobs.add(targetJob); + } Iterator neighborhoodIterator = jobNeighborhoods.getNearestNeighborsIterator(nNeighbors, targetJob); while (neighborhoodIterator.hasNext()) { Job job = neighborhoodIterator.next(); From 5e30be6d56f588accbeb701122cd0519c77aa824 Mon Sep 17 00:00:00 2001 From: oblonski Date: Wed, 23 Mar 2022 14:51:27 +0100 Subject: [PATCH 134/191] remove example, instances and io modules --- jsprit-examples/.gitignore | 15 - jsprit-examples/LICENSE.md | 203 - jsprit-examples/input/C101_solomon.txt | 110 - jsprit-examples/input/R101.txt | 110 - jsprit-examples/input/algorithmConfig.xml | 89 - .../algorithmConfigWithSchrimpfAcceptance.xml | 73 - .../algorithmConfig_considerFixedCosts.xml | 75 - ...hmConfig_considerFixedCosts_routeLevel.xml | 76 - jsprit-examples/input/algorithmConfig_fix.xml | 68 - .../input/algorithmConfig_fix_schrimpf.xml | 71 - .../algorithmConfig_greedyWithRegret.xml | 68 - .../input/algorithmConfig_noVehicleSwitch.xml | 87 - .../input/algorithmConfig_open.xml | 72 - .../input/algorithmConfig_solomon.xml | 68 - .../input/bicycle_messenger_demand.txt | 31 - .../input/bicycle_messenger_supply.txt | 6 - jsprit-examples/input/cn_14mix.txt | 67 - jsprit-examples/input/cordeau01.xml | 1049 ----- jsprit-examples/input/cordeau_p01.xml | 861 ----- jsprit-examples/input/cordeau_p08.xml | 3375 ----------------- .../input/deliveries_solomon_c101.xml | 1254 ------ .../input/deliveries_solomon_open_c101.xml | 1255 ------ ...omon_specifiedVehicleEndLocations_c101.xml | 1259 ------ jsprit-examples/input/fastAlgo.xml | 74 - jsprit-examples/input/p01 | 59 - jsprit-examples/input/p01_mod | 56 - jsprit-examples/input/p08 | 254 -- jsprit-examples/input/p08.res | 26 - jsprit-examples/input/p11 | 260 -- .../input/pd_christophides_vrpnc1_vcap50.xml | 654 ---- .../pickups_and_deliveries_solomon_c101.xml | 1254 ------ ...and_deliveries_solomon_c101_withoutTWs.xml | 1254 ------ ...utTWs_and_specifiedVehicleEndLocations.xml | 1258 ------ .../pickups_and_deliveries_solomon_r101.xml | 1254 ------ ...ckups_and_deliveries_solomon_r101_open.xml | 1255 ------ ...and_deliveries_solomon_r101_withoutTWs.xml | 1254 ------ ...eliveries_solomon_r101_withoutTWs_open.xml | 1255 ------ .../input/pickups_solomon_c101.xml | 1254 ------ .../input/refuseCollectionExample_Distances | 46 - .../input/refuseCollectionExample_Quantities | 10 - jsprit-examples/input/vrp_cordeau_01.xml | 626 --- jsprit-examples/input/vrp_cordeau_08.xml | 3014 --------------- jsprit-examples/input/vrpnc1-jsprit.xml | 654 ---- jsprit-examples/input/vrpnc1.txt | 52 - jsprit-examples/pom.xml | 57 - .../AdditionalDistanceConstraintExample.java | 178 - .../jsprit/examples/BicycleMessenger.java | 403 -- .../jsprit/examples/BreakExample.java | 109 - .../examples/BuildAlgorithmFromScratch.java | 215 -- .../jsprit/examples/CircleExample.java | 101 - ...nfigureAlgorithmInCodeInsteadOfPerXml.java | 135 - .../jsprit/examples/CostMatrixExample.java | 111 - ...ithMultipleDepotsAndOpenRoutesExample.java | 172 - .../jsprit/examples/HVRPExample.java | 132 - .../JobAndActivityDependenciesExample.java | 279 -- .../jsprit/examples/MultipleDepotExample.java | 115 - .../examples/MultipleDepotExample2.java | 123 - ...MultipleDepotWithInitialRoutesExample.java | 109 - ...ipleProductsWithLoadConstraintExample.java | 207 - .../examples/MultipleTimeWindowExample.java | 127 - .../examples/MultipleTimeWindowExample2.java | 147 - .../examples/PickupAndDeliveryExample.java | 112 - .../examples/PickupAndDeliveryExample2.java | 104 - .../PickupAndDeliveryOpenExample.java | 100 - .../examples/RefuseCollectionExample.java | 142 - ...RefuseCollectionWithFastMatrixExample.java | 144 - ...rvicePickupsWithMultipleDepotsExample.java | 145 - ...eDepotBoundedPickupAndDeliveryExample.java | 109 - ...SimpleEnRoutePickupAndDeliveryExample.java | 133 - ...utePickupAndDeliveryOpenRoutesExample.java | 132 - ...veryWithDepotBoundedDeliveriesExample.java | 141 - .../jsprit/examples/SimpleExample.java | 117 - .../examples/SimpleExampleOpenRoutes.java | 107 - .../examples/SimpleExampleWithPriorities.java | 113 - .../examples/SimpleExampleWithSkills.java | 123 - .../SimpleExampleWithoutLocation.java | 123 - .../SimpleVRPWithBackhaulsExample.java | 115 - ...ithoutLocationAndInitialRoutesExample.java | 112 - .../SimpleWithoutLocationExample2.java | 132 - .../jsprit/examples/SolomonExample.java | 99 - ...ampleWithSpecifiedVehicleEndLocations.java | 110 - ...pecifiedVehicleEndLocationsWithoutTWs.java | 110 - .../jsprit/examples/SolomonOpenExample.java | 112 - .../jsprit/examples/SolomonR101Example.java | 97 - .../examples/SolomonWithSkillsExample.java | 98 - .../examples/TransportOfDisabledPeople.java | 219 -- .../examples/VRPWithBackhaulsExample.java | 107 - .../examples/VRPWithBackhaulsExample2.java | 188 - .../com/graphhopper/jsprit/util/Examples.java | 34 - jsprit-instances/.gitignore | 15 - jsprit-instances/LICENSE.md | 203 - jsprit-instances/instances/belhaiza/cm101.txt | 103 - jsprit-instances/instances/belhaiza/cm102.txt | 103 - jsprit-instances/instances/belhaiza/cm103.txt | 103 - jsprit-instances/instances/belhaiza/cm104.txt | 103 - jsprit-instances/instances/belhaiza/cm105.txt | 103 - jsprit-instances/instances/belhaiza/cm106.txt | 103 - jsprit-instances/instances/belhaiza/cm107.txt | 103 - jsprit-instances/instances/belhaiza/cm108.txt | 103 - jsprit-instances/instances/belhaiza/cm201.txt | 103 - jsprit-instances/instances/belhaiza/cm202.txt | 103 - jsprit-instances/instances/belhaiza/cm203.txt | 103 - jsprit-instances/instances/belhaiza/cm204.txt | 103 - jsprit-instances/instances/belhaiza/cm205.txt | 103 - jsprit-instances/instances/belhaiza/cm206.txt | 103 - jsprit-instances/instances/belhaiza/cm207.txt | 103 - jsprit-instances/instances/belhaiza/cm208.txt | 103 - .../instances/belhaiza/pcm101.txt | 103 - .../instances/belhaiza/pcm102.txt | 103 - .../instances/belhaiza/pcm103.txt | 103 - .../instances/belhaiza/pcm104.txt | 103 - .../instances/belhaiza/pcm201.txt | 103 - .../instances/belhaiza/pcm202.txt | 103 - .../instances/belhaiza/pcm203.txt | 103 - .../instances/belhaiza/pcm204.txt | 103 - .../instances/belhaiza/prcm101.txt | 103 - .../instances/belhaiza/prcm102.txt | 103 - .../instances/belhaiza/prcm103.txt | 103 - .../instances/belhaiza/prcm104.txt | 103 - .../instances/belhaiza/prcm201.txt | 103 - .../instances/belhaiza/prcm202.txt | 103 - .../instances/belhaiza/prcm203.txt | 103 - .../instances/belhaiza/prcm204.txt | 103 - .../instances/belhaiza/prm101.txt | 103 - .../instances/belhaiza/prm102.txt | 103 - .../instances/belhaiza/prm103.txt | 103 - .../instances/belhaiza/prm104.txt | 103 - .../instances/belhaiza/prm201.txt | 103 - .../instances/belhaiza/prm202.txt | 103 - .../instances/belhaiza/prm203.txt | 103 - .../instances/belhaiza/prm204.txt | 103 - .../instances/belhaiza/rcm101.txt | 103 - .../instances/belhaiza/rcm102.txt | 103 - .../instances/belhaiza/rcm103.txt | 103 - .../instances/belhaiza/rcm104.txt | 103 - .../instances/belhaiza/rcm105.txt | 103 - .../instances/belhaiza/rcm106.txt | 103 - .../instances/belhaiza/rcm107.txt | 103 - .../instances/belhaiza/rcm108.txt | 103 - .../instances/belhaiza/rcm201.txt | 103 - .../instances/belhaiza/rcm202.txt | 103 - .../instances/belhaiza/rcm203.txt | 103 - .../instances/belhaiza/rcm204.txt | 103 - .../instances/belhaiza/rcm205.txt | 103 - .../instances/belhaiza/rcm206.txt | 103 - .../instances/belhaiza/rcm207.txt | 103 - .../instances/belhaiza/rcm208.txt | 103 - jsprit-instances/instances/belhaiza/rm101.txt | 103 - jsprit-instances/instances/belhaiza/rm102.txt | 103 - jsprit-instances/instances/belhaiza/rm103.txt | 103 - jsprit-instances/instances/belhaiza/rm104.txt | 103 - jsprit-instances/instances/belhaiza/rm105.txt | 103 - jsprit-instances/instances/belhaiza/rm106.txt | 103 - jsprit-instances/instances/belhaiza/rm107.txt | 103 - jsprit-instances/instances/belhaiza/rm108.txt | 103 - jsprit-instances/instances/belhaiza/rm201.txt | 103 - jsprit-instances/instances/belhaiza/rm202.txt | 103 - jsprit-instances/instances/belhaiza/rm203.txt | 103 - jsprit-instances/instances/belhaiza/rm204.txt | 103 - jsprit-instances/instances/belhaiza/rm205.txt | 103 - jsprit-instances/instances/belhaiza/rm206.txt | 103 - jsprit-instances/instances/belhaiza/rm207.txt | 103 - jsprit-instances/instances/belhaiza/rm208.txt | 103 - .../instances/christofides/vrpinfo.txt | 47 - .../instances/christofides/vrpnc1.txt | 52 - .../instances/christofides/vrpnc10.txt | 201 - .../instances/christofides/vrpnc11.txt | 122 - .../instances/christofides/vrpnc12.txt | 102 - .../instances/christofides/vrpnc13.txt | 122 - .../instances/christofides/vrpnc14.txt | 102 - .../instances/christofides/vrpnc2.txt | 77 - .../instances/christofides/vrpnc3.txt | 102 - .../instances/christofides/vrpnc4.txt | 152 - .../instances/christofides/vrpnc5.txt | 201 - .../instances/christofides/vrpnc6.txt | 52 - .../instances/christofides/vrpnc7.txt | 77 - .../instances/christofides/vrpnc8.txt | 102 - .../instances/christofides/vrpnc9.txt | 152 - jsprit-instances/instances/cordeau/p01 | 59 - jsprit-instances/instances/cordeau/p01.res | 12 - jsprit-instances/instances/cordeau/p02 | 59 - jsprit-instances/instances/cordeau/p02.res | 6 - jsprit-instances/instances/cordeau/p03 | 86 - jsprit-instances/instances/cordeau/p03.res | 12 - jsprit-instances/instances/cordeau/p04 | 105 - jsprit-instances/instances/cordeau/p04.res | 16 - jsprit-instances/instances/cordeau/p05 | 105 - jsprit-instances/instances/cordeau/p05.res | 9 - jsprit-instances/instances/cordeau/p06 | 107 - jsprit-instances/instances/cordeau/p06.res | 17 - jsprit-instances/instances/cordeau/p07 | 109 - jsprit-instances/instances/cordeau/p07.res | 17 - jsprit-instances/instances/cordeau/p08 | 254 -- jsprit-instances/instances/cordeau/p08.res | 26 - jsprit-instances/instances/cordeau/p09 | 256 -- jsprit-instances/instances/cordeau/p09.res | 27 - jsprit-instances/instances/cordeau/p10 | 258 -- jsprit-instances/instances/cordeau/p10.res | 27 - jsprit-instances/instances/cordeau/p11 | 260 -- jsprit-instances/instances/cordeau/p11.res | 27 - jsprit-instances/instances/cordeau/p12 | 85 - jsprit-instances/instances/cordeau/p12.res | 9 - jsprit-instances/instances/cordeau/p13 | 85 - jsprit-instances/instances/cordeau/p13.res | 9 - jsprit-instances/instances/cordeau/p14 | 85 - jsprit-instances/instances/cordeau/p14.res | 9 - jsprit-instances/instances/cordeau/p15 | 169 - jsprit-instances/instances/cordeau/p15.res | 17 - jsprit-instances/instances/cordeau/p16 | 169 - jsprit-instances/instances/cordeau/p16.res | 17 - jsprit-instances/instances/cordeau/p17 | 169 - jsprit-instances/instances/cordeau/p17.res | 17 - jsprit-instances/instances/cordeau/p18 | 253 -- jsprit-instances/instances/cordeau/p18.res | 25 - jsprit-instances/instances/cordeau/p19 | 253 -- jsprit-instances/instances/cordeau/p19.res | 25 - jsprit-instances/instances/cordeau/p20 | 253 -- jsprit-instances/instances/cordeau/p20.res | 25 - jsprit-instances/instances/cordeau/p21 | 379 -- jsprit-instances/instances/cordeau/p21.res | 35 - jsprit-instances/instances/cordeau/p22 | 379 -- jsprit-instances/instances/cordeau/p22.res | 37 - jsprit-instances/instances/cordeau/p23 | 379 -- jsprit-instances/instances/cordeau/p23.res | 37 - jsprit-instances/instances/cordeau/pr01 | 57 - jsprit-instances/instances/cordeau/pr01.res | 5 - jsprit-instances/instances/cordeau/pr02 | 105 - jsprit-instances/instances/cordeau/pr02.res | 9 - jsprit-instances/instances/cordeau/pr03 | 153 - jsprit-instances/instances/cordeau/pr03.res | 13 - jsprit-instances/instances/cordeau/pr04 | 201 - jsprit-instances/instances/cordeau/pr04.res | 17 - jsprit-instances/instances/cordeau/pr05 | 249 -- jsprit-instances/instances/cordeau/pr05.res | 21 - jsprit-instances/instances/cordeau/pr06 | 297 -- jsprit-instances/instances/cordeau/pr06.res | 25 - jsprit-instances/instances/cordeau/pr07 | 85 - jsprit-instances/instances/cordeau/pr07.res | 7 - jsprit-instances/instances/cordeau/pr08 | 157 - jsprit-instances/instances/cordeau/pr08.res | 13 - jsprit-instances/instances/cordeau/pr09 | 229 -- jsprit-instances/instances/cordeau/pr09.res | 19 - jsprit-instances/instances/cordeau/pr10 | 301 -- jsprit-instances/instances/cordeau/pr10.res | 25 - .../instances/lilim/1000/LC1101.txt | 1056 ------ .../instances/lilim/1000/LC11010.txt | 1048 ----- .../instances/lilim/1000/LC1102.txt | 1048 ----- .../instances/lilim/1000/LC1103.txt | 1050 ----- .../instances/lilim/1000/LC1104.txt | 1040 ----- .../instances/lilim/1000/LC1105.txt | 1060 ------ .../instances/lilim/1000/LC1106.txt | 1056 ------ .../instances/lilim/1000/LC1107.txt | 1054 ----- .../instances/lilim/1000/LC1108.txt | 1054 ----- .../instances/lilim/1000/LC1109.txt | 1048 ----- .../instances/lilim/1000/LC2101.txt | 1016 ----- .../instances/lilim/1000/LC21010.txt | 1010 ----- .../instances/lilim/1000/LC2102.txt | 1018 ----- .../instances/lilim/1000/LC2103.txt | 1018 ----- .../instances/lilim/1000/LC2104.txt | 1020 ----- .../instances/lilim/1000/LC2105.txt | 1016 ----- .../instances/lilim/1000/LC2106.txt | 1020 ----- .../instances/lilim/1000/LC2107.txt | 1020 ----- .../instances/lilim/1000/LC2108.txt | 1016 ----- .../instances/lilim/1000/LC2109.txt | 1024 ----- .../instances/lilim/1000/LR1101.txt | 1056 ------ .../instances/lilim/1000/LR11010.txt | 1040 ----- .../instances/lilim/1000/LR1102.txt | 1042 ----- .../instances/lilim/1000/LR1103.txt | 1048 ----- .../instances/lilim/1000/LR1104.txt | 1040 ----- .../instances/lilim/1000/LR1105.txt | 1050 ----- .../instances/lilim/1000/LR1106.txt | 1050 ----- .../instances/lilim/1000/LR1107.txt | 1048 ----- .../instances/lilim/1000/LR1108.txt | 1048 ----- .../instances/lilim/1000/LR1109.txt | 1048 ----- .../instances/lilim/1000/LR2101.txt | 1008 ----- .../instances/lilim/1000/LR21010.txt | 1006 ----- .../instances/lilim/1000/LR2102.txt | 1010 ----- .../instances/lilim/1000/LR2103.txt | 1012 ----- .../instances/lilim/1000/LR2104.txt | 1010 ----- .../instances/lilim/1000/LR2105.txt | 1010 ----- .../instances/lilim/1000/LR2106.txt | 1014 ----- .../instances/lilim/1000/LR2107.txt | 1012 ----- .../instances/lilim/1000/LR2108.txt | 1010 ----- .../instances/lilim/1000/LR2109.txt | 1010 ----- .../instances/lilim/1000/LRC1101.txt | 1056 ------ .../instances/lilim/1000/LRC11010.txt | 1046 ----- .../instances/lilim/1000/LRC1102.txt | 1048 ----- .../instances/lilim/1000/LRC1103.txt | 1050 ----- .../instances/lilim/1000/LRC1104.txt | 1044 ----- .../instances/lilim/1000/LRC1105.txt | 1054 ----- .../instances/lilim/1000/LRC1106.txt | 1048 ----- .../instances/lilim/1000/LRC1107.txt | 1048 ----- .../instances/lilim/1000/LRC1108.txt | 1046 ----- .../instances/lilim/1000/LRC1109.txt | 1050 ----- .../instances/lilim/1000/LRC2101.txt | 1016 ----- .../instances/lilim/1000/LRC21010.txt | 1010 ----- .../instances/lilim/1000/LRC2102.txt | 1012 ----- .../instances/lilim/1000/LRC2103.txt | 1016 ----- .../instances/lilim/1000/LRC2104.txt | 1014 ----- .../instances/lilim/1000/LRC2105.txt | 1010 ----- .../instances/lilim/1000/LRC2106.txt | 1010 ----- .../instances/lilim/1000/LRC2107.txt | 1012 ----- jsprit-instances/instances/lilim/lc101.txt | 108 - jsprit-instances/instances/lilim/lc102.txt | 108 - jsprit-instances/instances/lilim/lc103.txt | 106 - jsprit-instances/instances/lilim/lc104.txt | 108 - jsprit-instances/instances/lilim/lc105.txt | 108 - jsprit-instances/instances/lilim/lc106.txt | 108 - jsprit-instances/instances/lilim/lc107.txt | 108 - jsprit-instances/instances/lilim/lc108.txt | 108 - jsprit-instances/instances/lilim/lc109.txt | 108 - .../instances/lilim/lc1_2_1_d1.out | 11 - jsprit-instances/instances/lilim/lc201.txt | 104 - jsprit-instances/instances/lilim/lc202.txt | 104 - jsprit-instances/instances/lilim/lc203.txt | 104 - jsprit-instances/instances/lilim/lc204.txt | 104 - jsprit-instances/instances/lilim/lc205.txt | 104 - jsprit-instances/instances/lilim/lc206.txt | 104 - jsprit-instances/instances/lilim/lc207.txt | 104 - jsprit-instances/instances/lilim/lc208.txt | 104 - jsprit-instances/instances/lilim/lr101.txt | 108 - jsprit-instances/instances/lilim/lr102.txt | 112 - jsprit-instances/instances/lilim/lr103.txt | 106 - jsprit-instances/instances/lilim/lr104.txt | 106 - jsprit-instances/instances/lilim/lr105.txt | 108 - jsprit-instances/instances/lilim/lr106.txt | 106 - jsprit-instances/instances/lilim/lr107.txt | 106 - jsprit-instances/instances/lilim/lr108.txt | 102 - jsprit-instances/instances/lilim/lr109.txt | 108 - jsprit-instances/instances/lilim/lr110.txt | 106 - jsprit-instances/instances/lilim/lr111.txt | 110 - jsprit-instances/instances/lilim/lr112.txt | 108 - jsprit-instances/instances/lilim/lr201.txt | 104 - jsprit-instances/instances/lilim/lr202.txt | 102 - jsprit-instances/instances/lilim/lr203.txt | 104 - jsprit-instances/instances/lilim/lr204.txt | 102 - jsprit-instances/instances/lilim/lr205.txt | 104 - jsprit-instances/instances/lilim/lr206.txt | 102 - jsprit-instances/instances/lilim/lr207.txt | 104 - jsprit-instances/instances/lilim/lr208.txt | 102 - jsprit-instances/instances/lilim/lr209.txt | 104 - jsprit-instances/instances/lilim/lr210.txt | 104 - jsprit-instances/instances/lilim/lr211.txt | 102 - jsprit-instances/instances/lilim/lrc101.txt | 108 - jsprit-instances/instances/lilim/lrc102.txt | 108 - jsprit-instances/instances/lilim/lrc103.txt | 108 - jsprit-instances/instances/lilim/lrc104.txt | 110 - jsprit-instances/instances/lilim/lrc105.txt | 110 - jsprit-instances/instances/lilim/lrc106.txt | 108 - jsprit-instances/instances/lilim/lrc107.txt | 108 - jsprit-instances/instances/lilim/lrc108.txt | 106 - jsprit-instances/instances/lilim/lrc201.txt | 104 - jsprit-instances/instances/lilim/lrc202.txt | 104 - jsprit-instances/instances/lilim/lrc203.txt | 104 - jsprit-instances/instances/lilim/lrc204.txt | 104 - jsprit-instances/instances/lilim/lrc205.txt | 104 - jsprit-instances/instances/lilim/lrc206.txt | 104 - jsprit-instances/instances/lilim/lrc207.txt | 104 - jsprit-instances/instances/lilim/lrc208.txt | 104 - jsprit-instances/instances/liushen/C1.txt | 4 - jsprit-instances/instances/liushen/R1.txt | 6 - jsprit-instances/instances/solomon/C101.txt | 110 - jsprit-instances/instances/solomon/C102.txt | 110 - jsprit-instances/instances/solomon/C103.txt | 110 - jsprit-instances/instances/solomon/C104.txt | 110 - jsprit-instances/instances/solomon/C105.txt | 110 - jsprit-instances/instances/solomon/C106.txt | 110 - jsprit-instances/instances/solomon/C107.txt | 110 - jsprit-instances/instances/solomon/C108.txt | 110 - jsprit-instances/instances/solomon/C109.txt | 110 - jsprit-instances/instances/solomon/C201.txt | 110 - jsprit-instances/instances/solomon/C202.txt | 110 - jsprit-instances/instances/solomon/C203.txt | 110 - jsprit-instances/instances/solomon/C204.txt | 110 - jsprit-instances/instances/solomon/C205.txt | 110 - jsprit-instances/instances/solomon/C206.txt | 110 - jsprit-instances/instances/solomon/C207.txt | 110 - jsprit-instances/instances/solomon/C208.txt | 110 - jsprit-instances/instances/solomon/R101.txt | 110 - jsprit-instances/instances/solomon/R102.txt | 110 - jsprit-instances/instances/solomon/R103.txt | 110 - jsprit-instances/instances/solomon/R104.txt | 110 - jsprit-instances/instances/solomon/R105.txt | 110 - jsprit-instances/instances/solomon/R106.txt | 110 - jsprit-instances/instances/solomon/R107.txt | 110 - jsprit-instances/instances/solomon/R108.txt | 110 - jsprit-instances/instances/solomon/R109.txt | 110 - jsprit-instances/instances/solomon/R110.txt | 110 - jsprit-instances/instances/solomon/R111.txt | 110 - jsprit-instances/instances/solomon/R112.txt | 110 - jsprit-instances/instances/solomon/R201.txt | 110 - jsprit-instances/instances/solomon/R202.txt | 110 - jsprit-instances/instances/solomon/R203.txt | 110 - jsprit-instances/instances/solomon/R204.txt | 110 - jsprit-instances/instances/solomon/R205.txt | 110 - jsprit-instances/instances/solomon/R206.txt | 110 - jsprit-instances/instances/solomon/R207.txt | 110 - jsprit-instances/instances/solomon/R208.txt | 110 - jsprit-instances/instances/solomon/R209.txt | 110 - jsprit-instances/instances/solomon/R210.txt | 110 - jsprit-instances/instances/solomon/R211.txt | 110 - jsprit-instances/instances/solomon/RC101.txt | 110 - jsprit-instances/instances/solomon/RC102.txt | 110 - jsprit-instances/instances/solomon/RC103.txt | 110 - jsprit-instances/instances/solomon/RC104.txt | 110 - jsprit-instances/instances/solomon/RC105.txt | 110 - jsprit-instances/instances/solomon/RC106.txt | 110 - jsprit-instances/instances/solomon/RC107.txt | 110 - jsprit-instances/instances/solomon/RC108.txt | 110 - jsprit-instances/instances/solomon/RC201.txt | 110 - jsprit-instances/instances/solomon/RC202.txt | 110 - jsprit-instances/instances/solomon/RC203.txt | 110 - jsprit-instances/instances/solomon/RC204.txt | 110 - jsprit-instances/instances/solomon/RC205.txt | 110 - jsprit-instances/instances/solomon/RC206.txt | 110 - jsprit-instances/instances/solomon/RC207.txt | 110 - jsprit-instances/instances/solomon/RC208.txt | 110 - jsprit-instances/instances/taillard/R_19.txt | 4 - jsprit-instances/instances/taillard/R_20.txt | 4 - jsprit-instances/instances/vrph/README | 1 - jsprit-instances/instances/vrph/cn_13mix.txt | 73 - jsprit-instances/instances/vrph/cn_14mix.txt | 67 - jsprit-instances/instances/vrph/cn_15mix.txt | 73 - jsprit-instances/instances/vrph/cn_16mix.txt | 70 - jsprit-instances/instances/vrph/cn_17mix.txt | 95 - jsprit-instances/instances/vrph/cn_18mix.txt | 124 - jsprit-instances/instances/vrph/cn_19mix.txt | 126 - jsprit-instances/instances/vrph/cn_20mix.txt | 128 - jsprit-instances/pom.xml | 40 - .../instance/reader/BelhaizaReader.java | 178 - .../instance/reader/ChristofidesReader.java | 138 - .../jsprit/instance/reader/CordeauReader.java | 161 - .../jsprit/instance/reader/Figliozzi.java | 226 -- .../jsprit/instance/reader/LiLimReader.java | 206 - .../reader/LopezIbanezBlumReader.java | 128 - .../jsprit/instance/reader/LuiShenReader.java | 180 - .../jsprit/instance/reader/SolomonReader.java | 163 - .../reader/TSPLIB95CostMatrixReader.java | 90 - .../instance/reader/TSPLIB95Reader.java | 329 -- .../jsprit/instance/reader/Taillard.java | 531 --- .../instance/reader/VrphGoldenReader.java | 167 - .../jsprit/instance/util/Instances.java | 250 -- .../instance/reader/BelhaizaReaderTest.java | 194 - .../reader/ChristophidesReaderTest.java | 104 - .../instance/reader/CordeauReaderTest.java | 158 - .../jsprit/instance/reader/FigliozziTest.java | 478 --- .../instance/reader/GoldenReaderTest.java | 326 -- .../instance/reader/LuiShenReaderTest.java | 61 - .../instance/reader/SolomonReaderTest.java | 109 - .../src/test/resources/C101_solomon.txt | 112 - .../src/test/resources/C1_LuiShenVehicles.txt | 4 - jsprit-instances/src/test/resources/cm101.txt | 103 - .../src/test/resources/cn_13mix.txt | 73 - jsprit-instances/src/test/resources/p01 | 59 - jsprit-instances/src/test/resources/p08 | 254 -- .../src/test/resources/vrpnc1.txt | 52 - .../src/test/resources/vrpnc13.txt | 122 - jsprit-io/.gitignore | 18 - jsprit-io/LICENSE.md | 203 - jsprit-io/pom.xml | 54 - .../jsprit/io/algorithm/AlgorithmConfig.java | 34 - .../algorithm/AlgorithmConfigXmlReader.java | 92 - .../jsprit/io/algorithm/InsertionFactory.java | 116 - .../algorithm/VehicleRoutingAlgorithms.java | 944 ----- .../graphhopper/jsprit/io/problem/Schema.java | 66 - .../jsprit/io/problem/VrpXMLReader.java | 723 ---- .../jsprit/io/problem/VrpXMLWriter.java | 454 --- .../src/main/resources/algorithm_schema.xsd | 285 -- jsprit-io/src/main/resources/config.xml | 85 - .../src/main/resources/greedySchrimpf.xml | 67 - jsprit-io/src/main/resources/randomWalk.xml | 65 - jsprit-io/src/main/resources/schrimpf.xml | 70 - .../src/main/resources/vrp_xml_schema.xsd | 407 -- .../io/algorithm/TestAlgorithmReader.java | 286 -- ...etManagerIdentifiesDistinctVehicle_IT.java | 55 - .../jsprit/io/problem/InitialRoutesTest.java | 120 - .../jsprit/io/problem/VrpXMLReaderTest.java | 640 ---- .../jsprit/io/problem/VrpXMLWriterTest.java | 632 --- .../graphhopper/jsprit/io/util/TestUtils.java | 40 - .../jsprit/io/algorithm/algorithmConfig.xml | 66 - .../algorithmConfigForReaderTest.xml | 75 - .../algorithmConfigForReaderTest2.xml | 71 - .../algorithmConfig_withoutIterations.xml | 66 - .../jsprit/io/algorithm/finiteVrp.xml | 106 - .../jsprit/io/algorithm/testConfig.xml | 88 - .../jsprit/io/problem/biggerProblem.xml | 662 ---- .../io/problem/finiteVrpForReaderTest.xml | 238 -- ...iteVrpWithInitialSolutionForReaderTest.xml | 241 -- .../finiteVrpWithShipmentsAndSolution.xml | 183 - .../jsprit/io/problem/lui-shen-solution.xml | 1937 ---------- .../simpleProblem_inclShipments_iniRoutes.xml | 150 - .../io/problem/simpleProblem_iniRoutes.xml | 106 - .../io/problem/simpleProblem_iniRoutes_2.xml | 105 - .../io/problem/simpleProblem_iniRoutes_3.xml | 98 - pom.xml | 15 - 495 files changed, 135701 deletions(-) delete mode 100644 jsprit-examples/.gitignore delete mode 100644 jsprit-examples/LICENSE.md delete mode 100644 jsprit-examples/input/C101_solomon.txt delete mode 100644 jsprit-examples/input/R101.txt delete mode 100755 jsprit-examples/input/algorithmConfig.xml delete mode 100755 jsprit-examples/input/algorithmConfigWithSchrimpfAcceptance.xml delete mode 100755 jsprit-examples/input/algorithmConfig_considerFixedCosts.xml delete mode 100755 jsprit-examples/input/algorithmConfig_considerFixedCosts_routeLevel.xml delete mode 100755 jsprit-examples/input/algorithmConfig_fix.xml delete mode 100755 jsprit-examples/input/algorithmConfig_fix_schrimpf.xml delete mode 100755 jsprit-examples/input/algorithmConfig_greedyWithRegret.xml delete mode 100755 jsprit-examples/input/algorithmConfig_noVehicleSwitch.xml delete mode 100755 jsprit-examples/input/algorithmConfig_open.xml delete mode 100755 jsprit-examples/input/algorithmConfig_solomon.xml delete mode 100644 jsprit-examples/input/bicycle_messenger_demand.txt delete mode 100644 jsprit-examples/input/bicycle_messenger_supply.txt delete mode 100644 jsprit-examples/input/cn_14mix.txt delete mode 100644 jsprit-examples/input/cordeau01.xml delete mode 100644 jsprit-examples/input/cordeau_p01.xml delete mode 100644 jsprit-examples/input/cordeau_p08.xml delete mode 100644 jsprit-examples/input/deliveries_solomon_c101.xml delete mode 100644 jsprit-examples/input/deliveries_solomon_open_c101.xml delete mode 100644 jsprit-examples/input/deliveries_solomon_specifiedVehicleEndLocations_c101.xml delete mode 100755 jsprit-examples/input/fastAlgo.xml delete mode 100644 jsprit-examples/input/p01 delete mode 100644 jsprit-examples/input/p01_mod delete mode 100644 jsprit-examples/input/p08 delete mode 100644 jsprit-examples/input/p08.res delete mode 100644 jsprit-examples/input/p11 delete mode 100644 jsprit-examples/input/pd_christophides_vrpnc1_vcap50.xml delete mode 100644 jsprit-examples/input/pickups_and_deliveries_solomon_c101.xml delete mode 100644 jsprit-examples/input/pickups_and_deliveries_solomon_c101_withoutTWs.xml delete mode 100644 jsprit-examples/input/pickups_and_deliveries_solomon_c101_withoutTWs_and_specifiedVehicleEndLocations.xml delete mode 100644 jsprit-examples/input/pickups_and_deliveries_solomon_r101.xml delete mode 100644 jsprit-examples/input/pickups_and_deliveries_solomon_r101_open.xml delete mode 100644 jsprit-examples/input/pickups_and_deliveries_solomon_r101_withoutTWs.xml delete mode 100644 jsprit-examples/input/pickups_and_deliveries_solomon_r101_withoutTWs_open.xml delete mode 100644 jsprit-examples/input/pickups_solomon_c101.xml delete mode 100644 jsprit-examples/input/refuseCollectionExample_Distances delete mode 100644 jsprit-examples/input/refuseCollectionExample_Quantities delete mode 100644 jsprit-examples/input/vrp_cordeau_01.xml delete mode 100644 jsprit-examples/input/vrp_cordeau_08.xml delete mode 100644 jsprit-examples/input/vrpnc1-jsprit.xml delete mode 100644 jsprit-examples/input/vrpnc1.txt delete mode 100644 jsprit-examples/pom.xml delete mode 100644 jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/AdditionalDistanceConstraintExample.java delete mode 100644 jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/BicycleMessenger.java delete mode 100644 jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/BreakExample.java delete mode 100644 jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/BuildAlgorithmFromScratch.java delete mode 100644 jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/CircleExample.java delete mode 100644 jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/ConfigureAlgorithmInCodeInsteadOfPerXml.java delete mode 100644 jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/CostMatrixExample.java delete mode 100644 jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/EnRoutePickupAndDeliveryWithMultipleDepotsAndOpenRoutesExample.java delete mode 100644 jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/HVRPExample.java delete mode 100644 jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/JobAndActivityDependenciesExample.java delete mode 100644 jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/MultipleDepotExample.java delete mode 100644 jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/MultipleDepotExample2.java delete mode 100644 jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/MultipleDepotWithInitialRoutesExample.java delete mode 100644 jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/MultipleProductsWithLoadConstraintExample.java delete mode 100644 jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/MultipleTimeWindowExample.java delete mode 100644 jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/MultipleTimeWindowExample2.java delete mode 100644 jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/PickupAndDeliveryExample.java delete mode 100644 jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/PickupAndDeliveryExample2.java delete mode 100644 jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/PickupAndDeliveryOpenExample.java delete mode 100644 jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/RefuseCollectionExample.java delete mode 100644 jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/RefuseCollectionWithFastMatrixExample.java delete mode 100644 jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/ServicePickupsWithMultipleDepotsExample.java delete mode 100644 jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleDepotBoundedPickupAndDeliveryExample.java delete mode 100644 jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleEnRoutePickupAndDeliveryExample.java delete mode 100644 jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleEnRoutePickupAndDeliveryOpenRoutesExample.java delete mode 100644 jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleEnRoutePickupAndDeliveryWithDepotBoundedDeliveriesExample.java delete mode 100644 jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleExample.java delete mode 100644 jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleExampleOpenRoutes.java delete mode 100644 jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleExampleWithPriorities.java delete mode 100644 jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleExampleWithSkills.java delete mode 100644 jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleExampleWithoutLocation.java delete mode 100644 jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleVRPWithBackhaulsExample.java delete mode 100644 jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleWithoutLocationAndInitialRoutesExample.java delete mode 100644 jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleWithoutLocationExample2.java delete mode 100644 jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SolomonExample.java delete mode 100644 jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SolomonExampleWithSpecifiedVehicleEndLocations.java delete mode 100644 jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SolomonExampleWithSpecifiedVehicleEndLocationsWithoutTWs.java delete mode 100644 jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SolomonOpenExample.java delete mode 100644 jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SolomonR101Example.java delete mode 100644 jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SolomonWithSkillsExample.java delete mode 100644 jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/TransportOfDisabledPeople.java delete mode 100644 jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/VRPWithBackhaulsExample.java delete mode 100644 jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/VRPWithBackhaulsExample2.java delete mode 100644 jsprit-examples/src/main/java/com/graphhopper/jsprit/util/Examples.java delete mode 100644 jsprit-instances/.gitignore delete mode 100644 jsprit-instances/LICENSE.md delete mode 100644 jsprit-instances/instances/belhaiza/cm101.txt delete mode 100644 jsprit-instances/instances/belhaiza/cm102.txt delete mode 100644 jsprit-instances/instances/belhaiza/cm103.txt delete mode 100644 jsprit-instances/instances/belhaiza/cm104.txt delete mode 100644 jsprit-instances/instances/belhaiza/cm105.txt delete mode 100644 jsprit-instances/instances/belhaiza/cm106.txt delete mode 100644 jsprit-instances/instances/belhaiza/cm107.txt delete mode 100644 jsprit-instances/instances/belhaiza/cm108.txt delete mode 100644 jsprit-instances/instances/belhaiza/cm201.txt delete mode 100644 jsprit-instances/instances/belhaiza/cm202.txt delete mode 100644 jsprit-instances/instances/belhaiza/cm203.txt delete mode 100644 jsprit-instances/instances/belhaiza/cm204.txt delete mode 100644 jsprit-instances/instances/belhaiza/cm205.txt delete mode 100644 jsprit-instances/instances/belhaiza/cm206.txt delete mode 100644 jsprit-instances/instances/belhaiza/cm207.txt delete mode 100644 jsprit-instances/instances/belhaiza/cm208.txt delete mode 100644 jsprit-instances/instances/belhaiza/pcm101.txt delete mode 100644 jsprit-instances/instances/belhaiza/pcm102.txt delete mode 100644 jsprit-instances/instances/belhaiza/pcm103.txt delete mode 100644 jsprit-instances/instances/belhaiza/pcm104.txt delete mode 100644 jsprit-instances/instances/belhaiza/pcm201.txt delete mode 100644 jsprit-instances/instances/belhaiza/pcm202.txt delete mode 100644 jsprit-instances/instances/belhaiza/pcm203.txt delete mode 100644 jsprit-instances/instances/belhaiza/pcm204.txt delete mode 100644 jsprit-instances/instances/belhaiza/prcm101.txt delete mode 100644 jsprit-instances/instances/belhaiza/prcm102.txt delete mode 100644 jsprit-instances/instances/belhaiza/prcm103.txt delete mode 100644 jsprit-instances/instances/belhaiza/prcm104.txt delete mode 100644 jsprit-instances/instances/belhaiza/prcm201.txt delete mode 100644 jsprit-instances/instances/belhaiza/prcm202.txt delete mode 100644 jsprit-instances/instances/belhaiza/prcm203.txt delete mode 100644 jsprit-instances/instances/belhaiza/prcm204.txt delete mode 100644 jsprit-instances/instances/belhaiza/prm101.txt delete mode 100644 jsprit-instances/instances/belhaiza/prm102.txt delete mode 100644 jsprit-instances/instances/belhaiza/prm103.txt delete mode 100644 jsprit-instances/instances/belhaiza/prm104.txt delete mode 100644 jsprit-instances/instances/belhaiza/prm201.txt delete mode 100644 jsprit-instances/instances/belhaiza/prm202.txt delete mode 100644 jsprit-instances/instances/belhaiza/prm203.txt delete mode 100644 jsprit-instances/instances/belhaiza/prm204.txt delete mode 100644 jsprit-instances/instances/belhaiza/rcm101.txt delete mode 100644 jsprit-instances/instances/belhaiza/rcm102.txt delete mode 100644 jsprit-instances/instances/belhaiza/rcm103.txt delete mode 100644 jsprit-instances/instances/belhaiza/rcm104.txt delete mode 100644 jsprit-instances/instances/belhaiza/rcm105.txt delete mode 100644 jsprit-instances/instances/belhaiza/rcm106.txt delete mode 100644 jsprit-instances/instances/belhaiza/rcm107.txt delete mode 100644 jsprit-instances/instances/belhaiza/rcm108.txt delete mode 100644 jsprit-instances/instances/belhaiza/rcm201.txt delete mode 100644 jsprit-instances/instances/belhaiza/rcm202.txt delete mode 100644 jsprit-instances/instances/belhaiza/rcm203.txt delete mode 100644 jsprit-instances/instances/belhaiza/rcm204.txt delete mode 100644 jsprit-instances/instances/belhaiza/rcm205.txt delete mode 100644 jsprit-instances/instances/belhaiza/rcm206.txt delete mode 100644 jsprit-instances/instances/belhaiza/rcm207.txt delete mode 100644 jsprit-instances/instances/belhaiza/rcm208.txt delete mode 100644 jsprit-instances/instances/belhaiza/rm101.txt delete mode 100644 jsprit-instances/instances/belhaiza/rm102.txt delete mode 100644 jsprit-instances/instances/belhaiza/rm103.txt delete mode 100644 jsprit-instances/instances/belhaiza/rm104.txt delete mode 100644 jsprit-instances/instances/belhaiza/rm105.txt delete mode 100644 jsprit-instances/instances/belhaiza/rm106.txt delete mode 100644 jsprit-instances/instances/belhaiza/rm107.txt delete mode 100644 jsprit-instances/instances/belhaiza/rm108.txt delete mode 100644 jsprit-instances/instances/belhaiza/rm201.txt delete mode 100644 jsprit-instances/instances/belhaiza/rm202.txt delete mode 100644 jsprit-instances/instances/belhaiza/rm203.txt delete mode 100644 jsprit-instances/instances/belhaiza/rm204.txt delete mode 100644 jsprit-instances/instances/belhaiza/rm205.txt delete mode 100644 jsprit-instances/instances/belhaiza/rm206.txt delete mode 100644 jsprit-instances/instances/belhaiza/rm207.txt delete mode 100644 jsprit-instances/instances/belhaiza/rm208.txt delete mode 100644 jsprit-instances/instances/christofides/vrpinfo.txt delete mode 100644 jsprit-instances/instances/christofides/vrpnc1.txt delete mode 100644 jsprit-instances/instances/christofides/vrpnc10.txt delete mode 100644 jsprit-instances/instances/christofides/vrpnc11.txt delete mode 100644 jsprit-instances/instances/christofides/vrpnc12.txt delete mode 100644 jsprit-instances/instances/christofides/vrpnc13.txt delete mode 100644 jsprit-instances/instances/christofides/vrpnc14.txt delete mode 100644 jsprit-instances/instances/christofides/vrpnc2.txt delete mode 100644 jsprit-instances/instances/christofides/vrpnc3.txt delete mode 100644 jsprit-instances/instances/christofides/vrpnc4.txt delete mode 100644 jsprit-instances/instances/christofides/vrpnc5.txt delete mode 100644 jsprit-instances/instances/christofides/vrpnc6.txt delete mode 100644 jsprit-instances/instances/christofides/vrpnc7.txt delete mode 100644 jsprit-instances/instances/christofides/vrpnc8.txt delete mode 100644 jsprit-instances/instances/christofides/vrpnc9.txt delete mode 100644 jsprit-instances/instances/cordeau/p01 delete mode 100644 jsprit-instances/instances/cordeau/p01.res delete mode 100644 jsprit-instances/instances/cordeau/p02 delete mode 100644 jsprit-instances/instances/cordeau/p02.res delete mode 100644 jsprit-instances/instances/cordeau/p03 delete mode 100644 jsprit-instances/instances/cordeau/p03.res delete mode 100644 jsprit-instances/instances/cordeau/p04 delete mode 100644 jsprit-instances/instances/cordeau/p04.res delete mode 100644 jsprit-instances/instances/cordeau/p05 delete mode 100644 jsprit-instances/instances/cordeau/p05.res delete mode 100644 jsprit-instances/instances/cordeau/p06 delete mode 100644 jsprit-instances/instances/cordeau/p06.res delete mode 100644 jsprit-instances/instances/cordeau/p07 delete mode 100644 jsprit-instances/instances/cordeau/p07.res delete mode 100644 jsprit-instances/instances/cordeau/p08 delete mode 100644 jsprit-instances/instances/cordeau/p08.res delete mode 100644 jsprit-instances/instances/cordeau/p09 delete mode 100644 jsprit-instances/instances/cordeau/p09.res delete mode 100644 jsprit-instances/instances/cordeau/p10 delete mode 100644 jsprit-instances/instances/cordeau/p10.res delete mode 100644 jsprit-instances/instances/cordeau/p11 delete mode 100644 jsprit-instances/instances/cordeau/p11.res delete mode 100644 jsprit-instances/instances/cordeau/p12 delete mode 100644 jsprit-instances/instances/cordeau/p12.res delete mode 100644 jsprit-instances/instances/cordeau/p13 delete mode 100644 jsprit-instances/instances/cordeau/p13.res delete mode 100644 jsprit-instances/instances/cordeau/p14 delete mode 100644 jsprit-instances/instances/cordeau/p14.res delete mode 100644 jsprit-instances/instances/cordeau/p15 delete mode 100644 jsprit-instances/instances/cordeau/p15.res delete mode 100644 jsprit-instances/instances/cordeau/p16 delete mode 100644 jsprit-instances/instances/cordeau/p16.res delete mode 100644 jsprit-instances/instances/cordeau/p17 delete mode 100644 jsprit-instances/instances/cordeau/p17.res delete mode 100644 jsprit-instances/instances/cordeau/p18 delete mode 100644 jsprit-instances/instances/cordeau/p18.res delete mode 100644 jsprit-instances/instances/cordeau/p19 delete mode 100644 jsprit-instances/instances/cordeau/p19.res delete mode 100644 jsprit-instances/instances/cordeau/p20 delete mode 100644 jsprit-instances/instances/cordeau/p20.res delete mode 100644 jsprit-instances/instances/cordeau/p21 delete mode 100644 jsprit-instances/instances/cordeau/p21.res delete mode 100644 jsprit-instances/instances/cordeau/p22 delete mode 100644 jsprit-instances/instances/cordeau/p22.res delete mode 100644 jsprit-instances/instances/cordeau/p23 delete mode 100644 jsprit-instances/instances/cordeau/p23.res delete mode 100644 jsprit-instances/instances/cordeau/pr01 delete mode 100644 jsprit-instances/instances/cordeau/pr01.res delete mode 100644 jsprit-instances/instances/cordeau/pr02 delete mode 100644 jsprit-instances/instances/cordeau/pr02.res delete mode 100644 jsprit-instances/instances/cordeau/pr03 delete mode 100644 jsprit-instances/instances/cordeau/pr03.res delete mode 100644 jsprit-instances/instances/cordeau/pr04 delete mode 100644 jsprit-instances/instances/cordeau/pr04.res delete mode 100644 jsprit-instances/instances/cordeau/pr05 delete mode 100644 jsprit-instances/instances/cordeau/pr05.res delete mode 100644 jsprit-instances/instances/cordeau/pr06 delete mode 100644 jsprit-instances/instances/cordeau/pr06.res delete mode 100644 jsprit-instances/instances/cordeau/pr07 delete mode 100644 jsprit-instances/instances/cordeau/pr07.res delete mode 100644 jsprit-instances/instances/cordeau/pr08 delete mode 100644 jsprit-instances/instances/cordeau/pr08.res delete mode 100644 jsprit-instances/instances/cordeau/pr09 delete mode 100644 jsprit-instances/instances/cordeau/pr09.res delete mode 100644 jsprit-instances/instances/cordeau/pr10 delete mode 100644 jsprit-instances/instances/cordeau/pr10.res delete mode 100644 jsprit-instances/instances/lilim/1000/LC1101.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LC11010.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LC1102.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LC1103.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LC1104.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LC1105.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LC1106.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LC1107.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LC1108.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LC1109.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LC2101.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LC21010.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LC2102.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LC2103.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LC2104.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LC2105.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LC2106.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LC2107.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LC2108.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LC2109.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LR1101.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LR11010.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LR1102.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LR1103.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LR1104.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LR1105.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LR1106.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LR1107.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LR1108.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LR1109.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LR2101.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LR21010.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LR2102.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LR2103.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LR2104.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LR2105.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LR2106.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LR2107.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LR2108.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LR2109.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LRC1101.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LRC11010.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LRC1102.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LRC1103.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LRC1104.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LRC1105.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LRC1106.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LRC1107.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LRC1108.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LRC1109.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LRC2101.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LRC21010.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LRC2102.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LRC2103.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LRC2104.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LRC2105.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LRC2106.txt delete mode 100644 jsprit-instances/instances/lilim/1000/LRC2107.txt delete mode 100644 jsprit-instances/instances/lilim/lc101.txt delete mode 100644 jsprit-instances/instances/lilim/lc102.txt delete mode 100644 jsprit-instances/instances/lilim/lc103.txt delete mode 100644 jsprit-instances/instances/lilim/lc104.txt delete mode 100644 jsprit-instances/instances/lilim/lc105.txt delete mode 100644 jsprit-instances/instances/lilim/lc106.txt delete mode 100644 jsprit-instances/instances/lilim/lc107.txt delete mode 100644 jsprit-instances/instances/lilim/lc108.txt delete mode 100644 jsprit-instances/instances/lilim/lc109.txt delete mode 100644 jsprit-instances/instances/lilim/lc1_2_1_d1.out delete mode 100644 jsprit-instances/instances/lilim/lc201.txt delete mode 100644 jsprit-instances/instances/lilim/lc202.txt delete mode 100644 jsprit-instances/instances/lilim/lc203.txt delete mode 100644 jsprit-instances/instances/lilim/lc204.txt delete mode 100644 jsprit-instances/instances/lilim/lc205.txt delete mode 100644 jsprit-instances/instances/lilim/lc206.txt delete mode 100644 jsprit-instances/instances/lilim/lc207.txt delete mode 100644 jsprit-instances/instances/lilim/lc208.txt delete mode 100644 jsprit-instances/instances/lilim/lr101.txt delete mode 100644 jsprit-instances/instances/lilim/lr102.txt delete mode 100644 jsprit-instances/instances/lilim/lr103.txt delete mode 100644 jsprit-instances/instances/lilim/lr104.txt delete mode 100644 jsprit-instances/instances/lilim/lr105.txt delete mode 100644 jsprit-instances/instances/lilim/lr106.txt delete mode 100644 jsprit-instances/instances/lilim/lr107.txt delete mode 100644 jsprit-instances/instances/lilim/lr108.txt delete mode 100644 jsprit-instances/instances/lilim/lr109.txt delete mode 100644 jsprit-instances/instances/lilim/lr110.txt delete mode 100644 jsprit-instances/instances/lilim/lr111.txt delete mode 100644 jsprit-instances/instances/lilim/lr112.txt delete mode 100644 jsprit-instances/instances/lilim/lr201.txt delete mode 100644 jsprit-instances/instances/lilim/lr202.txt delete mode 100644 jsprit-instances/instances/lilim/lr203.txt delete mode 100644 jsprit-instances/instances/lilim/lr204.txt delete mode 100644 jsprit-instances/instances/lilim/lr205.txt delete mode 100644 jsprit-instances/instances/lilim/lr206.txt delete mode 100644 jsprit-instances/instances/lilim/lr207.txt delete mode 100644 jsprit-instances/instances/lilim/lr208.txt delete mode 100644 jsprit-instances/instances/lilim/lr209.txt delete mode 100644 jsprit-instances/instances/lilim/lr210.txt delete mode 100644 jsprit-instances/instances/lilim/lr211.txt delete mode 100644 jsprit-instances/instances/lilim/lrc101.txt delete mode 100644 jsprit-instances/instances/lilim/lrc102.txt delete mode 100644 jsprit-instances/instances/lilim/lrc103.txt delete mode 100644 jsprit-instances/instances/lilim/lrc104.txt delete mode 100644 jsprit-instances/instances/lilim/lrc105.txt delete mode 100644 jsprit-instances/instances/lilim/lrc106.txt delete mode 100644 jsprit-instances/instances/lilim/lrc107.txt delete mode 100644 jsprit-instances/instances/lilim/lrc108.txt delete mode 100644 jsprit-instances/instances/lilim/lrc201.txt delete mode 100644 jsprit-instances/instances/lilim/lrc202.txt delete mode 100644 jsprit-instances/instances/lilim/lrc203.txt delete mode 100644 jsprit-instances/instances/lilim/lrc204.txt delete mode 100644 jsprit-instances/instances/lilim/lrc205.txt delete mode 100644 jsprit-instances/instances/lilim/lrc206.txt delete mode 100644 jsprit-instances/instances/lilim/lrc207.txt delete mode 100644 jsprit-instances/instances/lilim/lrc208.txt delete mode 100644 jsprit-instances/instances/liushen/C1.txt delete mode 100644 jsprit-instances/instances/liushen/R1.txt delete mode 100644 jsprit-instances/instances/solomon/C101.txt delete mode 100644 jsprit-instances/instances/solomon/C102.txt delete mode 100644 jsprit-instances/instances/solomon/C103.txt delete mode 100644 jsprit-instances/instances/solomon/C104.txt delete mode 100644 jsprit-instances/instances/solomon/C105.txt delete mode 100644 jsprit-instances/instances/solomon/C106.txt delete mode 100644 jsprit-instances/instances/solomon/C107.txt delete mode 100644 jsprit-instances/instances/solomon/C108.txt delete mode 100644 jsprit-instances/instances/solomon/C109.txt delete mode 100644 jsprit-instances/instances/solomon/C201.txt delete mode 100644 jsprit-instances/instances/solomon/C202.txt delete mode 100644 jsprit-instances/instances/solomon/C203.txt delete mode 100644 jsprit-instances/instances/solomon/C204.txt delete mode 100644 jsprit-instances/instances/solomon/C205.txt delete mode 100644 jsprit-instances/instances/solomon/C206.txt delete mode 100644 jsprit-instances/instances/solomon/C207.txt delete mode 100644 jsprit-instances/instances/solomon/C208.txt delete mode 100644 jsprit-instances/instances/solomon/R101.txt delete mode 100644 jsprit-instances/instances/solomon/R102.txt delete mode 100644 jsprit-instances/instances/solomon/R103.txt delete mode 100644 jsprit-instances/instances/solomon/R104.txt delete mode 100644 jsprit-instances/instances/solomon/R105.txt delete mode 100644 jsprit-instances/instances/solomon/R106.txt delete mode 100644 jsprit-instances/instances/solomon/R107.txt delete mode 100644 jsprit-instances/instances/solomon/R108.txt delete mode 100644 jsprit-instances/instances/solomon/R109.txt delete mode 100644 jsprit-instances/instances/solomon/R110.txt delete mode 100644 jsprit-instances/instances/solomon/R111.txt delete mode 100644 jsprit-instances/instances/solomon/R112.txt delete mode 100644 jsprit-instances/instances/solomon/R201.txt delete mode 100644 jsprit-instances/instances/solomon/R202.txt delete mode 100644 jsprit-instances/instances/solomon/R203.txt delete mode 100644 jsprit-instances/instances/solomon/R204.txt delete mode 100644 jsprit-instances/instances/solomon/R205.txt delete mode 100644 jsprit-instances/instances/solomon/R206.txt delete mode 100644 jsprit-instances/instances/solomon/R207.txt delete mode 100644 jsprit-instances/instances/solomon/R208.txt delete mode 100644 jsprit-instances/instances/solomon/R209.txt delete mode 100644 jsprit-instances/instances/solomon/R210.txt delete mode 100644 jsprit-instances/instances/solomon/R211.txt delete mode 100644 jsprit-instances/instances/solomon/RC101.txt delete mode 100644 jsprit-instances/instances/solomon/RC102.txt delete mode 100644 jsprit-instances/instances/solomon/RC103.txt delete mode 100644 jsprit-instances/instances/solomon/RC104.txt delete mode 100644 jsprit-instances/instances/solomon/RC105.txt delete mode 100644 jsprit-instances/instances/solomon/RC106.txt delete mode 100644 jsprit-instances/instances/solomon/RC107.txt delete mode 100644 jsprit-instances/instances/solomon/RC108.txt delete mode 100644 jsprit-instances/instances/solomon/RC201.txt delete mode 100644 jsprit-instances/instances/solomon/RC202.txt delete mode 100644 jsprit-instances/instances/solomon/RC203.txt delete mode 100644 jsprit-instances/instances/solomon/RC204.txt delete mode 100644 jsprit-instances/instances/solomon/RC205.txt delete mode 100644 jsprit-instances/instances/solomon/RC206.txt delete mode 100644 jsprit-instances/instances/solomon/RC207.txt delete mode 100644 jsprit-instances/instances/solomon/RC208.txt delete mode 100644 jsprit-instances/instances/taillard/R_19.txt delete mode 100644 jsprit-instances/instances/taillard/R_20.txt delete mode 100644 jsprit-instances/instances/vrph/README delete mode 100644 jsprit-instances/instances/vrph/cn_13mix.txt delete mode 100644 jsprit-instances/instances/vrph/cn_14mix.txt delete mode 100644 jsprit-instances/instances/vrph/cn_15mix.txt delete mode 100644 jsprit-instances/instances/vrph/cn_16mix.txt delete mode 100644 jsprit-instances/instances/vrph/cn_17mix.txt delete mode 100644 jsprit-instances/instances/vrph/cn_18mix.txt delete mode 100644 jsprit-instances/instances/vrph/cn_19mix.txt delete mode 100644 jsprit-instances/instances/vrph/cn_20mix.txt delete mode 100644 jsprit-instances/pom.xml delete mode 100644 jsprit-instances/src/main/java/com/graphhopper/jsprit/instance/reader/BelhaizaReader.java delete mode 100644 jsprit-instances/src/main/java/com/graphhopper/jsprit/instance/reader/ChristofidesReader.java delete mode 100644 jsprit-instances/src/main/java/com/graphhopper/jsprit/instance/reader/CordeauReader.java delete mode 100644 jsprit-instances/src/main/java/com/graphhopper/jsprit/instance/reader/Figliozzi.java delete mode 100644 jsprit-instances/src/main/java/com/graphhopper/jsprit/instance/reader/LiLimReader.java delete mode 100644 jsprit-instances/src/main/java/com/graphhopper/jsprit/instance/reader/LopezIbanezBlumReader.java delete mode 100644 jsprit-instances/src/main/java/com/graphhopper/jsprit/instance/reader/LuiShenReader.java delete mode 100644 jsprit-instances/src/main/java/com/graphhopper/jsprit/instance/reader/SolomonReader.java delete mode 100644 jsprit-instances/src/main/java/com/graphhopper/jsprit/instance/reader/TSPLIB95CostMatrixReader.java delete mode 100644 jsprit-instances/src/main/java/com/graphhopper/jsprit/instance/reader/TSPLIB95Reader.java delete mode 100644 jsprit-instances/src/main/java/com/graphhopper/jsprit/instance/reader/Taillard.java delete mode 100644 jsprit-instances/src/main/java/com/graphhopper/jsprit/instance/reader/VrphGoldenReader.java delete mode 100644 jsprit-instances/src/main/java/com/graphhopper/jsprit/instance/util/Instances.java delete mode 100644 jsprit-instances/src/test/java/com/graphhopper/jsprit/instance/reader/BelhaizaReaderTest.java delete mode 100644 jsprit-instances/src/test/java/com/graphhopper/jsprit/instance/reader/ChristophidesReaderTest.java delete mode 100644 jsprit-instances/src/test/java/com/graphhopper/jsprit/instance/reader/CordeauReaderTest.java delete mode 100644 jsprit-instances/src/test/java/com/graphhopper/jsprit/instance/reader/FigliozziTest.java delete mode 100644 jsprit-instances/src/test/java/com/graphhopper/jsprit/instance/reader/GoldenReaderTest.java delete mode 100644 jsprit-instances/src/test/java/com/graphhopper/jsprit/instance/reader/LuiShenReaderTest.java delete mode 100644 jsprit-instances/src/test/java/com/graphhopper/jsprit/instance/reader/SolomonReaderTest.java delete mode 100644 jsprit-instances/src/test/resources/C101_solomon.txt delete mode 100644 jsprit-instances/src/test/resources/C1_LuiShenVehicles.txt delete mode 100644 jsprit-instances/src/test/resources/cm101.txt delete mode 100644 jsprit-instances/src/test/resources/cn_13mix.txt delete mode 100644 jsprit-instances/src/test/resources/p01 delete mode 100644 jsprit-instances/src/test/resources/p08 delete mode 100644 jsprit-instances/src/test/resources/vrpnc1.txt delete mode 100644 jsprit-instances/src/test/resources/vrpnc13.txt delete mode 100644 jsprit-io/.gitignore delete mode 100644 jsprit-io/LICENSE.md delete mode 100644 jsprit-io/pom.xml delete mode 100644 jsprit-io/src/main/java/com/graphhopper/jsprit/io/algorithm/AlgorithmConfig.java delete mode 100644 jsprit-io/src/main/java/com/graphhopper/jsprit/io/algorithm/AlgorithmConfigXmlReader.java delete mode 100644 jsprit-io/src/main/java/com/graphhopper/jsprit/io/algorithm/InsertionFactory.java delete mode 100644 jsprit-io/src/main/java/com/graphhopper/jsprit/io/algorithm/VehicleRoutingAlgorithms.java delete mode 100644 jsprit-io/src/main/java/com/graphhopper/jsprit/io/problem/Schema.java delete mode 100644 jsprit-io/src/main/java/com/graphhopper/jsprit/io/problem/VrpXMLReader.java delete mode 100644 jsprit-io/src/main/java/com/graphhopper/jsprit/io/problem/VrpXMLWriter.java delete mode 100644 jsprit-io/src/main/resources/algorithm_schema.xsd delete mode 100755 jsprit-io/src/main/resources/config.xml delete mode 100755 jsprit-io/src/main/resources/greedySchrimpf.xml delete mode 100755 jsprit-io/src/main/resources/randomWalk.xml delete mode 100755 jsprit-io/src/main/resources/schrimpf.xml delete mode 100644 jsprit-io/src/main/resources/vrp_xml_schema.xsd delete mode 100644 jsprit-io/src/test/java/com/graphhopper/jsprit/io/algorithm/TestAlgorithmReader.java delete mode 100644 jsprit-io/src/test/java/com/graphhopper/jsprit/io/problem/FiniteVehicleFleetManagerIdentifiesDistinctVehicle_IT.java delete mode 100644 jsprit-io/src/test/java/com/graphhopper/jsprit/io/problem/InitialRoutesTest.java delete mode 100644 jsprit-io/src/test/java/com/graphhopper/jsprit/io/problem/VrpXMLReaderTest.java delete mode 100644 jsprit-io/src/test/java/com/graphhopper/jsprit/io/problem/VrpXMLWriterTest.java delete mode 100644 jsprit-io/src/test/java/com/graphhopper/jsprit/io/util/TestUtils.java delete mode 100755 jsprit-io/src/test/resources/com/graphhopper/jsprit/io/algorithm/algorithmConfig.xml delete mode 100755 jsprit-io/src/test/resources/com/graphhopper/jsprit/io/algorithm/algorithmConfigForReaderTest.xml delete mode 100755 jsprit-io/src/test/resources/com/graphhopper/jsprit/io/algorithm/algorithmConfigForReaderTest2.xml delete mode 100755 jsprit-io/src/test/resources/com/graphhopper/jsprit/io/algorithm/algorithmConfig_withoutIterations.xml delete mode 100644 jsprit-io/src/test/resources/com/graphhopper/jsprit/io/algorithm/finiteVrp.xml delete mode 100755 jsprit-io/src/test/resources/com/graphhopper/jsprit/io/algorithm/testConfig.xml delete mode 100644 jsprit-io/src/test/resources/com/graphhopper/jsprit/io/problem/biggerProblem.xml delete mode 100644 jsprit-io/src/test/resources/com/graphhopper/jsprit/io/problem/finiteVrpForReaderTest.xml delete mode 100644 jsprit-io/src/test/resources/com/graphhopper/jsprit/io/problem/finiteVrpWithInitialSolutionForReaderTest.xml delete mode 100644 jsprit-io/src/test/resources/com/graphhopper/jsprit/io/problem/finiteVrpWithShipmentsAndSolution.xml delete mode 100644 jsprit-io/src/test/resources/com/graphhopper/jsprit/io/problem/lui-shen-solution.xml delete mode 100644 jsprit-io/src/test/resources/com/graphhopper/jsprit/io/problem/simpleProblem_inclShipments_iniRoutes.xml delete mode 100644 jsprit-io/src/test/resources/com/graphhopper/jsprit/io/problem/simpleProblem_iniRoutes.xml delete mode 100644 jsprit-io/src/test/resources/com/graphhopper/jsprit/io/problem/simpleProblem_iniRoutes_2.xml delete mode 100644 jsprit-io/src/test/resources/com/graphhopper/jsprit/io/problem/simpleProblem_iniRoutes_3.xml diff --git a/jsprit-examples/.gitignore b/jsprit-examples/.gitignore deleted file mode 100644 index d1980dba2..000000000 --- a/jsprit-examples/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/output -/bin -/target -.DS_Store - -# IntelliJ -*.ipr -*.iws -*.iml -.idea - -# Eclipse -.project -.classpath -.settings diff --git a/jsprit-examples/LICENSE.md b/jsprit-examples/LICENSE.md deleted file mode 100644 index f75caec51..000000000 --- a/jsprit-examples/LICENSE.md +++ /dev/null @@ -1,203 +0,0 @@ - - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and -limitations under the License. diff --git a/jsprit-examples/input/C101_solomon.txt b/jsprit-examples/input/C101_solomon.txt deleted file mode 100644 index 28cdccc65..000000000 --- a/jsprit-examples/input/C101_solomon.txt +++ /dev/null @@ -1,110 +0,0 @@ -C101 - -VEHICLE -NUMBER CAPACITY - 25 200 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 40 50 0 0 1236 0 - 1 45 68 10 912 967 90 - 2 45 70 30 825 870 90 - 3 42 66 10 65 146 90 - 4 42 68 10 727 782 90 - 5 42 65 10 15 67 90 - 6 40 69 20 621 702 90 - 7 40 66 20 170 225 90 - 8 38 68 20 255 324 90 - 9 38 70 10 534 605 90 - 10 35 66 10 357 410 90 - 11 35 69 10 448 505 90 - 12 25 85 20 652 721 90 - 13 22 75 30 30 92 90 - 14 22 85 10 567 620 90 - 15 20 80 40 384 429 90 - 16 20 85 40 475 528 90 - 17 18 75 20 99 148 90 - 18 15 75 20 179 254 90 - 19 15 80 10 278 345 90 - 20 30 50 10 10 73 90 - 21 30 52 20 914 965 90 - 22 28 52 20 812 883 90 - 23 28 55 10 732 777 90 - 24 25 50 10 65 144 90 - 25 25 52 40 169 224 90 - 26 25 55 10 622 701 90 - 27 23 52 10 261 316 90 - 28 23 55 20 546 593 90 - 29 20 50 10 358 405 90 - 30 20 55 10 449 504 90 - 31 10 35 20 200 237 90 - 32 10 40 30 31 100 90 - 33 8 40 40 87 158 90 - 34 8 45 20 751 816 90 - 35 5 35 10 283 344 90 - 36 5 45 10 665 716 90 - 37 2 40 20 383 434 90 - 38 0 40 30 479 522 90 - 39 0 45 20 567 624 90 - 40 35 30 10 264 321 90 - 41 35 32 10 166 235 90 - 42 33 32 20 68 149 90 - 43 33 35 10 16 80 90 - 44 32 30 10 359 412 90 - 45 30 30 10 541 600 90 - 46 30 32 30 448 509 90 - 47 30 35 10 1054 1127 90 - 48 28 30 10 632 693 90 - 49 28 35 10 1001 1066 90 - 50 26 32 10 815 880 90 - 51 25 30 10 725 786 90 - 52 25 35 10 912 969 90 - 53 44 5 20 286 347 90 - 54 42 10 40 186 257 90 - 55 42 15 10 95 158 90 - 56 40 5 30 385 436 90 - 57 40 15 40 35 87 90 - 58 38 5 30 471 534 90 - 59 38 15 10 651 740 90 - 60 35 5 20 562 629 90 - 61 50 30 10 531 610 90 - 62 50 35 20 262 317 90 - 63 50 40 50 171 218 90 - 64 48 30 10 632 693 90 - 65 48 40 10 76 129 90 - 66 47 35 10 826 875 90 - 67 47 40 10 12 77 90 - 68 45 30 10 734 777 90 - 69 45 35 10 916 969 90 - 70 95 30 30 387 456 90 - 71 95 35 20 293 360 90 - 72 53 30 10 450 505 90 - 73 92 30 10 478 551 90 - 74 53 35 50 353 412 90 - 75 45 65 20 997 1068 90 - 76 90 35 10 203 260 90 - 77 88 30 10 574 643 90 - 78 88 35 20 109 170 90 - 79 87 30 10 668 731 90 - 80 85 25 10 769 820 90 - 81 85 35 30 47 124 90 - 82 75 55 20 369 420 90 - 83 72 55 10 265 338 90 - 84 70 58 20 458 523 90 - 85 68 60 30 555 612 90 - 86 66 55 10 173 238 90 - 87 65 55 20 85 144 90 - 88 65 60 30 645 708 90 - 89 63 58 10 737 802 90 - 90 60 55 10 20 84 90 - 91 60 60 10 836 889 90 - 92 67 85 20 368 441 90 - 93 65 85 40 475 518 90 - 94 65 82 10 285 336 90 - 95 62 80 30 196 239 90 - 96 60 80 10 95 156 90 - 97 60 85 30 561 622 90 - 98 58 75 20 30 84 90 - 99 55 80 10 743 820 90 - 100 55 85 20 647 726 90 diff --git a/jsprit-examples/input/R101.txt b/jsprit-examples/input/R101.txt deleted file mode 100644 index 8a9b6e595..000000000 --- a/jsprit-examples/input/R101.txt +++ /dev/null @@ -1,110 +0,0 @@ -R101 - -VEHICLE -NUMBER CAPACITY - 25 200 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 35 35 0 0 230 0 - 1 41 49 10 161 171 10 - 2 35 17 7 50 60 10 - 3 55 45 13 116 126 10 - 4 55 20 19 149 159 10 - 5 15 30 26 34 44 10 - 6 25 30 3 99 109 10 - 7 20 50 5 81 91 10 - 8 10 43 9 95 105 10 - 9 55 60 16 97 107 10 - 10 30 60 16 124 134 10 - 11 20 65 12 67 77 10 - 12 50 35 19 63 73 10 - 13 30 25 23 159 169 10 - 14 15 10 20 32 42 10 - 15 30 5 8 61 71 10 - 16 10 20 19 75 85 10 - 17 5 30 2 157 167 10 - 18 20 40 12 87 97 10 - 19 15 60 17 76 86 10 - 20 45 65 9 126 136 10 - 21 45 20 11 62 72 10 - 22 45 10 18 97 107 10 - 23 55 5 29 68 78 10 - 24 65 35 3 153 163 10 - 25 65 20 6 172 182 10 - 26 45 30 17 132 142 10 - 27 35 40 16 37 47 10 - 28 41 37 16 39 49 10 - 29 64 42 9 63 73 10 - 30 40 60 21 71 81 10 - 31 31 52 27 50 60 10 - 32 35 69 23 141 151 10 - 33 53 52 11 37 47 10 - 34 65 55 14 117 127 10 - 35 63 65 8 143 153 10 - 36 2 60 5 41 51 10 - 37 20 20 8 134 144 10 - 38 5 5 16 83 93 10 - 39 60 12 31 44 54 10 - 40 40 25 9 85 95 10 - 41 42 7 5 97 107 10 - 42 24 12 5 31 41 10 - 43 23 3 7 132 142 10 - 44 11 14 18 69 79 10 - 45 6 38 16 32 42 10 - 46 2 48 1 117 127 10 - 47 8 56 27 51 61 10 - 48 13 52 36 165 175 10 - 49 6 68 30 108 118 10 - 50 47 47 13 124 134 10 - 51 49 58 10 88 98 10 - 52 27 43 9 52 62 10 - 53 37 31 14 95 105 10 - 54 57 29 18 140 150 10 - 55 63 23 2 136 146 10 - 56 53 12 6 130 140 10 - 57 32 12 7 101 111 10 - 58 36 26 18 200 210 10 - 59 21 24 28 18 28 10 - 60 17 34 3 162 172 10 - 61 12 24 13 76 86 10 - 62 24 58 19 58 68 10 - 63 27 69 10 34 44 10 - 64 15 77 9 73 83 10 - 65 62 77 20 51 61 10 - 66 49 73 25 127 137 10 - 67 67 5 25 83 93 10 - 68 56 39 36 142 152 10 - 69 37 47 6 50 60 10 - 70 37 56 5 182 192 10 - 71 57 68 15 77 87 10 - 72 47 16 25 35 45 10 - 73 44 17 9 78 88 10 - 74 46 13 8 149 159 10 - 75 49 11 18 69 79 10 - 76 49 42 13 73 83 10 - 77 53 43 14 179 189 10 - 78 61 52 3 96 106 10 - 79 57 48 23 92 102 10 - 80 56 37 6 182 192 10 - 81 55 54 26 94 104 10 - 82 15 47 16 55 65 10 - 83 14 37 11 44 54 10 - 84 11 31 7 101 111 10 - 85 16 22 41 91 101 10 - 86 4 18 35 94 104 10 - 87 28 18 26 93 103 10 - 88 26 52 9 74 84 10 - 89 26 35 15 176 186 10 - 90 31 67 3 95 105 10 - 91 15 19 1 160 170 10 - 92 22 22 2 18 28 10 - 93 18 24 22 188 198 10 - 94 26 27 27 100 110 10 - 95 25 24 20 39 49 10 - 96 22 27 11 135 145 10 - 97 25 21 12 133 143 10 - 98 19 21 10 58 68 10 - 99 20 26 9 83 93 10 - 100 18 18 17 185 195 10 diff --git a/jsprit-examples/input/algorithmConfig.xml b/jsprit-examples/input/algorithmConfig.xml deleted file mode 100755 index d84c9d930..000000000 --- a/jsprit-examples/input/algorithmConfig.xml +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - 2000 - - - - - - - - - 1 - - - - - 0.2 - 20 - - - - - 0.5 - - - - - - 0.4 - - - - - - - - - - 0.3 - - - - - - 0.4 - - - - - - - - - 0.05 - - - - - - 0.2 - - - - - - - diff --git a/jsprit-examples/input/algorithmConfigWithSchrimpfAcceptance.xml b/jsprit-examples/input/algorithmConfigWithSchrimpfAcceptance.xml deleted file mode 100755 index ba1aad00c..000000000 --- a/jsprit-examples/input/algorithmConfigWithSchrimpfAcceptance.xml +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - 2000 - - - - - - - 1 - - - - - 0.1 - 20 - - - - - - 0.5 - - - - - - 0.5 - - - - - - - - - - 0.3 - - - - - - 0.5 - - - - - - - diff --git a/jsprit-examples/input/algorithmConfig_considerFixedCosts.xml b/jsprit-examples/input/algorithmConfig_considerFixedCosts.xml deleted file mode 100755 index 2dd7713f4..000000000 --- a/jsprit-examples/input/algorithmConfig_considerFixedCosts.xml +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - - 2000 - - - - true - - - - - 1 - - - - - 0.05 - 20 - - - - - - 0.5 - - - - - - 0.5 - - - - - - - - - - 0.3 - - - - - - 0.5 - - - - - - - diff --git a/jsprit-examples/input/algorithmConfig_considerFixedCosts_routeLevel.xml b/jsprit-examples/input/algorithmConfig_considerFixedCosts_routeLevel.xml deleted file mode 100755 index 8dafeadff..000000000 --- a/jsprit-examples/input/algorithmConfig_considerFixedCosts_routeLevel.xml +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - 2000 - - - - route - true - - - - - 1 - - - - - 0.05 - 20 - - - - - - 0.5 - - - - - - 0.5 - - - - - - - - - - 0.3 - - - - - - 0.5 - - - - - - - diff --git a/jsprit-examples/input/algorithmConfig_fix.xml b/jsprit-examples/input/algorithmConfig_fix.xml deleted file mode 100755 index f0d300f2a..000000000 --- a/jsprit-examples/input/algorithmConfig_fix.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - 2000 - - - - true - - - - - 1 - - - - - - - - - 0.5 - - - - - 0.5 - - - - - - - - - 0.3 - - - - - 0.5 - - - - - - diff --git a/jsprit-examples/input/algorithmConfig_fix_schrimpf.xml b/jsprit-examples/input/algorithmConfig_fix_schrimpf.xml deleted file mode 100755 index b6698c4a3..000000000 --- a/jsprit-examples/input/algorithmConfig_fix_schrimpf.xml +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - - 2000 - - - - true - - - - - 1 - - - - - - 0.05 - 20 - - - - - 0.5 - - - - - 0.5 - - - - - - - - - 0.3 - - - - - 0.5 - - - - - - diff --git a/jsprit-examples/input/algorithmConfig_greedyWithRegret.xml b/jsprit-examples/input/algorithmConfig_greedyWithRegret.xml deleted file mode 100755 index 082abc6bc..000000000 --- a/jsprit-examples/input/algorithmConfig_greedyWithRegret.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - 2000 - - - - - - - - - 1 - - - - - - - - - 0.5 - - - - - 0.5 - - - - - - - - - 0.3 - - - - - 0.5 - - - - - - diff --git a/jsprit-examples/input/algorithmConfig_noVehicleSwitch.xml b/jsprit-examples/input/algorithmConfig_noVehicleSwitch.xml deleted file mode 100755 index e9a144fda..000000000 --- a/jsprit-examples/input/algorithmConfig_noVehicleSwitch.xml +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - 2000 - - - - false - - - - - 1 - - - - - - - - - 0.3 - - - - - - 0.2 - - - - - - - - - - 0.15 - - - - - - 0.2 - - - - - - - - - 0.05 - - - - - - 0.6 - - - - - - - diff --git a/jsprit-examples/input/algorithmConfig_open.xml b/jsprit-examples/input/algorithmConfig_open.xml deleted file mode 100755 index dea72ad60..000000000 --- a/jsprit-examples/input/algorithmConfig_open.xml +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - - 20000 - - - - true - - - - - 1 - - - - - 0.2 - 20 - - - - - 0.5 - - - - - - 0.5 - - - - - - - - - 0.3 - - - - - - 0.5 - - - - - - diff --git a/jsprit-examples/input/algorithmConfig_solomon.xml b/jsprit-examples/input/algorithmConfig_solomon.xml deleted file mode 100755 index 6728a38a0..000000000 --- a/jsprit-examples/input/algorithmConfig_solomon.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - 2000 - - - - - - - - - 1 - - - - - - - - - 0.5 - - - - - 0.5 - - - - - - - - - 0.3 - - - - - 0.5 - - - - - - diff --git a/jsprit-examples/input/bicycle_messenger_demand.txt b/jsprit-examples/input/bicycle_messenger_demand.txt deleted file mode 100644 index 42890e1b0..000000000 --- a/jsprit-examples/input/bicycle_messenger_demand.txt +++ /dev/null @@ -1,31 +0,0 @@ -item id pickup_x pickup_y deliver_x deliver_y -envelope 1 13745 55419 13883 55756 -envelope 2 8406 53246 13937 55854 -envelope 3 15738 57396 35996 79499 -envelope 4 12045 60418 19349 57118 -envelope 5 13750 56416 35733 78403 -envelope 6 13190 57068 11860 59749 -envelope 7 15021 55768 14098 57379 -envelope 8 11513 58543 11501 59683 -envelope 9 12013 64155 14120 59301 -envelope 10 15006 57578 35511 78426 -envelope 11 11450 58819 11916 58338 -envelope 12 13728 56304 35524 79013 -envelope 13 15104 60923 17937 57066 -envelope 14 11373 58388 13983 53804 -envelope 15 18575 55186 18718 54381 -envelope 16 11639 50071 17363 58375 -envelope 17 11273 53410 10860 60441 -envelope 18 13766 59041 13963 57769 -envelope 19 16138 55801 16183 56024 -envelope 20 13728 56146 14301 61694 -envelope 21 12848 57059 13586 59734 -envelope 22 13645 56488 13955 55859 -envelope 23 12896 56838 13937 55908 -envelope 24 13341 58150 35709 78924 -envelope 25 13483 57303 13614 57820 -envelope 26 12741 63478 15230 59838 -envelope 27 14676 51691 16501 48361 -envelope 28 13748 54933 14120 56110 -envelope 29 17875 59565 20453 61903 -envelope 30 9772 56424 6404 55601 \ No newline at end of file diff --git a/jsprit-examples/input/bicycle_messenger_supply.txt b/jsprit-examples/input/bicycle_messenger_supply.txt deleted file mode 100644 index f25f8b661..000000000 --- a/jsprit-examples/input/bicycle_messenger_supply.txt +++ /dev/null @@ -1,6 +0,0 @@ -type id x y -messenger A 13750 57578 -messenger B 15104 53410 -messenger C 13728 55801 -messenger D 12741 63478 -messenger E 14676 18575 \ No newline at end of file diff --git a/jsprit-examples/input/cn_14mix.txt b/jsprit-examples/input/cn_14mix.txt deleted file mode 100644 index a0689d173..000000000 --- a/jsprit-examples/input/cn_14mix.txt +++ /dev/null @@ -1,67 +0,0 @@ -50 - 0 40 40 0 - 1 22 22 18 - 2 36 26 26 - 3 21 45 11 - 4 45 35 30 - 5 55 20 21 - 6 33 34 19 - 7 50 50 15 - 8 55 45 16 - 9 26 59 29 - 10 40 66 26 - 11 55 65 37 - 12 35 51 16 - 13 62 35 12 - 14 62 57 31 - 15 62 24 8 - 16 21 36 19 - 17 33 44 20 - 18 9 56 13 - 19 62 48 15 - 20 66 14 22 - 21 44 13 28 - 22 26 13 12 - 23 11 28 6 - 24 7 43 27 - 25 17 64 14 - 26 41 46 18 - 27 55 34 17 - 28 35 16 29 - 29 52 26 13 - 30 43 26 22 - 31 31 76 25 - 32 22 53 28 - 33 26 29 27 - 34 50 40 19 - 35 55 50 10 - 36 54 10 12 - 37 60 15 14 - 38 47 66 24 - 39 30 60 16 - 40 30 50 33 - 41 12 17 15 - 42 15 14 11 - 43 16 19 18 - 44 21 48 17 - 45 50 30 21 - 46 51 42 27 - 47 50 15 19 - 48 48 21 20 - 49 12 38 5 - 50 15 56 22 -//Vehicles characteristics: volume, fixed cost, variable cost, number available -v 1 120 1000 1.0 4 -v 2 160 1500 1.1 2 -v 3 300 3500 1.4 1 - -160 -8 300 0 10000 625.679906 + 7*1000 + 1500 = - 7 26 7 35 19 8 46 34 10530637 - 4 10 38 11 14 10794953 - 8 33 1 43 42 41 23 49 16 10916479 - 6 48 47 36 21 28 22 10931709 - 7 27 13 15 20 37 5 29 10832981 - 6 44 32 50 18 24 3 10862722 - 5 6 2 30 45 4 10469680 - 7 12 39 31 25 9 40 17 15917639 diff --git a/jsprit-examples/input/cordeau01.xml b/jsprit-examples/input/cordeau01.xml deleted file mode 100644 index 9caa8f80d..000000000 --- a/jsprit-examples/input/cordeau01.xml +++ /dev/null @@ -1,1049 +0,0 @@ - - - - - - FINITE - HOMOGENEOUS - - - - 2_2_vehicle - 2_type - - [x=30.0][y=40.0] - - - - [x=30.0][y=40.0] - - - - 0.0 - 1.7976931348623157E308 - - true - - - 4_2_vehicle - 4_type - - [x=60.0][y=50.0] - - - - [x=60.0][y=50.0] - - - - 0.0 - 1.7976931348623157E308 - - true - - - 3_1_vehicle - 3_type - - [x=50.0][y=30.0] - - - - [x=50.0][y=30.0] - - - - 0.0 - 1.7976931348623157E308 - - true - - - 4_4_vehicle - 4_type - - [x=60.0][y=50.0] - - - - [x=60.0][y=50.0] - - - - 0.0 - 1.7976931348623157E308 - - true - - - 4_3_vehicle - 4_type - - [x=60.0][y=50.0] - - - - [x=60.0][y=50.0] - - - - 0.0 - 1.7976931348623157E308 - - true - - - 4_1_vehicle - 4_type - - [x=60.0][y=50.0] - - - - [x=60.0][y=50.0] - - - - 0.0 - 1.7976931348623157E308 - - true - - - 1_4_vehicle - 1_type - - [x=20.0][y=20.0] - - - - [x=20.0][y=20.0] - - - - 0.0 - 1.7976931348623157E308 - - true - - - 2_4_vehicle - 2_type - - [x=30.0][y=40.0] - - - - [x=30.0][y=40.0] - - - - 0.0 - 1.7976931348623157E308 - - true - - - 2_3_vehicle - 2_type - - [x=30.0][y=40.0] - - - - [x=30.0][y=40.0] - - - - 0.0 - 1.7976931348623157E308 - - true - - - 1_3_vehicle - 1_type - - [x=20.0][y=20.0] - - - - [x=20.0][y=20.0] - - - - 0.0 - 1.7976931348623157E308 - - true - - - 3_4_vehicle - 3_type - - [x=50.0][y=30.0] - - - - [x=50.0][y=30.0] - - - - 0.0 - 1.7976931348623157E308 - - true - - - 3_2_vehicle - 3_type - - [x=50.0][y=30.0] - - - - [x=50.0][y=30.0] - - - - 0.0 - 1.7976931348623157E308 - - true - - - 2_1_vehicle - 2_type - - [x=30.0][y=40.0] - - - - [x=30.0][y=40.0] - - - - 0.0 - 1.7976931348623157E308 - - true - - - 3_3_vehicle - 3_type - - [x=50.0][y=30.0] - - - - [x=50.0][y=30.0] - - - - 0.0 - 1.7976931348623157E308 - - true - - - 1_2_vehicle - 1_type - - [x=20.0][y=20.0] - - - - [x=20.0][y=20.0] - - - - 0.0 - 1.7976931348623157E308 - - true - - - 1_1_vehicle - 1_type - - [x=20.0][y=20.0] - - - - [x=20.0][y=20.0] - - - - 0.0 - 1.7976931348623157E308 - - true - - - - - 1_type - - 80 - - - 0.0 - 1.0 - - - - - 2_type - - 80 - - - 0.0 - 1.0 - - - - - 3_type - - 80 - - - 0.0 - 1.0 - - - - - 4_type - - 80 - - - 0.0 - 1.0 - - - - - - - 35 - - - 17 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 36 - - - 6 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 33 - - - 23 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 34 - - - 26 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 39 - - - 14 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 37 - - - 9 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 38 - - - 15 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 43 - - - 11 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 42 - - - 13 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 41 - - - 27 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 40 - - - 7 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 22 - - - 8 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 23 - - - 16 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 24 - - - 10 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 25 - - - 28 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 26 - - - 7 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 27 - - - 15 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 28 - - - 14 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 29 - - - 6 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 3 - - - 16 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 2 - - - 30 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 1 - - - 7 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 7 - - - 19 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 30 - - - 19 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 6 - - - 15 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 5 - - - 21 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 32 - - - 12 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 4 - - - 9 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 31 - - - 11 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 9 - - - 11 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 8 - - - 23 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 19 - - - 9 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 17 - - - 3 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 18 - - - 41 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 15 - - - 10 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 16 - - - 15 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 13 - - - 23 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 14 - - - 21 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 11 - - - 19 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 12 - - - 29 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 21 - - - 8 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 20 - - - 28 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 49 - - - 18 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 48 - - - 17 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 45 - - - 10 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 44 - - - 16 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 47 - - - 25 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 46 - - - 5 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 10 - - - 5 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 50 - - - 10 - - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - diff --git a/jsprit-examples/input/cordeau_p01.xml b/jsprit-examples/input/cordeau_p01.xml deleted file mode 100644 index 11b57320f..000000000 --- a/jsprit-examples/input/cordeau_p01.xml +++ /dev/null @@ -1,861 +0,0 @@ - - - - - - INFINITE - HOMOGENEOUS - - - - 1_1_cordeauVehicle - 1_cordeauType - - [x=20.0][y=20.0] - - - - 0.0 - 999999.0 - - - - 1_2_cordeauVehicle - 1_cordeauType - - [x=20.0][y=20.0] - - - - 0.0 - 999999.0 - - - - 1_3_cordeauVehicle - 1_cordeauType - - [x=20.0][y=20.0] - - - - 0.0 - 999999.0 - - - - 1_4_cordeauVehicle - 1_cordeauType - - [x=20.0][y=20.0] - - - - 0.0 - 999999.0 - - - - 2_1_cordeauVehicle - 2_cordeauType - - [x=30.0][y=40.0] - - - - 0.0 - 999999.0 - - - - 2_2_cordeauVehicle - 2_cordeauType - - [x=30.0][y=40.0] - - - - 0.0 - 999999.0 - - - - 2_3_cordeauVehicle - 2_cordeauType - - [x=30.0][y=40.0] - - - - 0.0 - 999999.0 - - - - 2_4_cordeauVehicle - 2_cordeauType - - [x=30.0][y=40.0] - - - - 0.0 - 999999.0 - - - - 3_1_cordeauVehicle - 3_cordeauType - - [x=50.0][y=30.0] - - - - 0.0 - 999999.0 - - - - 3_2_cordeauVehicle - 3_cordeauType - - [x=50.0][y=30.0] - - - - 0.0 - 999999.0 - - - - 3_3_cordeauVehicle - 3_cordeauType - - [x=50.0][y=30.0] - - - - 0.0 - 999999.0 - - - - 3_4_cordeauVehicle - 3_cordeauType - - [x=50.0][y=30.0] - - - - 0.0 - 999999.0 - - - - 4_1_cordeauVehicle - 4_cordeauType - - [x=60.0][y=50.0] - - - - 0.0 - 999999.0 - - - - 4_2_cordeauVehicle - 4_cordeauType - - [x=60.0][y=50.0] - - - - 0.0 - 999999.0 - - - - 4_3_cordeauVehicle - 4_cordeauType - - [x=60.0][y=50.0] - - - - 0.0 - 999999.0 - - - - 4_4_cordeauVehicle - 4_cordeauType - - [x=60.0][y=50.0] - - - - 0.0 - 999999.0 - - - - - - 1_cordeauType - 80 - - 0.0 - 1.0 - - - - - 2_cordeauType - 80 - - 0.0 - 1.0 - - - - - 3_cordeauType - 80 - - 0.0 - 1.0 - - - - - 4_cordeauType - 80 - - 0.0 - 1.0 - - - - - - - [x=62.0][y=63.0] - - 17 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=63.0][y=69.0] - - 6 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=46.0][y=10.0] - - 23 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=61.0][y=33.0] - - 26 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=59.0][y=15.0] - - 14 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=32.0][y=22.0] - - 9 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=45.0][y=35.0] - - 15 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=5.0][y=64.0] - - 11 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=21.0][y=10.0] - - 13 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=10.0][y=17.0] - - 27 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=5.0][y=6.0] - - 7 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=42.0][y=57.0] - - 8 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=16.0][y=57.0] - - 16 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=8.0][y=52.0] - - 10 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=7.0][y=38.0] - - 28 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=27.0][y=68.0] - - 7 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=30.0][y=48.0] - - 15 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=43.0][y=67.0] - - 14 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=58.0][y=48.0] - - 6 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=52.0][y=64.0] - - 16 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=49.0][y=49.0] - - 30 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=37.0][y=52.0] - - 7 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=58.0][y=27.0] - - 19 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=17.0][y=63.0] - - 19 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=21.0][y=47.0] - - 15 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=40.0][y=30.0] - - 21 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=38.0][y=46.0] - - 12 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=20.0][y=26.0] - - 9 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=37.0][y=69.0] - - 11 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=52.0][y=33.0] - - 11 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=31.0][y=62.0] - - 23 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=13.0][y=13.0] - - 9 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=27.0][y=23.0] - - 3 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=17.0][y=33.0] - - 41 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=36.0][y=16.0] - - 10 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=52.0][y=41.0] - - 15 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=5.0][y=25.0] - - 23 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=12.0][y=42.0] - - 21 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=42.0][y=41.0] - - 19 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=31.0][y=32.0] - - 29 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=62.0][y=42.0] - - 8 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=57.0][y=58.0] - - 28 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=48.0][y=28.0] - - 18 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=25.0][y=55.0] - - 17 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=39.0][y=10.0] - - 10 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=30.0][y=15.0] - - 16 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=25.0][y=32.0] - - 25 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=32.0][y=39.0] - - 5 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=51.0][y=21.0] - - 5 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=56.0][y=37.0] - - 10 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - diff --git a/jsprit-examples/input/cordeau_p08.xml b/jsprit-examples/input/cordeau_p08.xml deleted file mode 100644 index 87b77fcfa..000000000 --- a/jsprit-examples/input/cordeau_p08.xml +++ /dev/null @@ -1,3375 +0,0 @@ - - - - - - INFINITE - HOMOGENEOUS - - - - 1_1_cordeauVehicle - 1_cordeauType - - [x=-33.0][y=33.0] - - - - 0.0 - 310.0 - - - - 1_2_cordeauVehicle - 1_cordeauType - - [x=-33.0][y=33.0] - - - - 0.0 - 310.0 - - - - 1_3_cordeauVehicle - 1_cordeauType - - [x=-33.0][y=33.0] - - - - 0.0 - 310.0 - - - - 1_4_cordeauVehicle - 1_cordeauType - - [x=-33.0][y=33.0] - - - - 0.0 - 310.0 - - - - 1_5_cordeauVehicle - 1_cordeauType - - [x=-33.0][y=33.0] - - - - 0.0 - 310.0 - - - - 1_6_cordeauVehicle - 1_cordeauType - - [x=-33.0][y=33.0] - - - - 0.0 - 310.0 - - - - 1_7_cordeauVehicle - 1_cordeauType - - [x=-33.0][y=33.0] - - - - 0.0 - 310.0 - - - - 1_8_cordeauVehicle - 1_cordeauType - - [x=-33.0][y=33.0] - - - - 0.0 - 310.0 - - - - 1_9_cordeauVehicle - 1_cordeauType - - [x=-33.0][y=33.0] - - - - 0.0 - 310.0 - - - - 1_10_cordeauVehicle - 1_cordeauType - - [x=-33.0][y=33.0] - - - - 0.0 - 310.0 - - - - 1_11_cordeauVehicle - 1_cordeauType - - [x=-33.0][y=33.0] - - - - 0.0 - 310.0 - - - - 1_12_cordeauVehicle - 1_cordeauType - - [x=-33.0][y=33.0] - - - - 0.0 - 310.0 - - - - 1_13_cordeauVehicle - 1_cordeauType - - [x=-33.0][y=33.0] - - - - 0.0 - 310.0 - - - - 1_14_cordeauVehicle - 1_cordeauType - - [x=-33.0][y=33.0] - - - - 0.0 - 310.0 - - - - 2_1_cordeauVehicle - 2_cordeauType - - [x=33.0][y=-33.0] - - - - 0.0 - 310.0 - - - - 2_2_cordeauVehicle - 2_cordeauType - - [x=33.0][y=-33.0] - - - - 0.0 - 310.0 - - - - 2_3_cordeauVehicle - 2_cordeauType - - [x=33.0][y=-33.0] - - - - 0.0 - 310.0 - - - - 2_4_cordeauVehicle - 2_cordeauType - - [x=33.0][y=-33.0] - - - - 0.0 - 310.0 - - - - 2_5_cordeauVehicle - 2_cordeauType - - [x=33.0][y=-33.0] - - - - 0.0 - 310.0 - - - - 2_6_cordeauVehicle - 2_cordeauType - - [x=33.0][y=-33.0] - - - - 0.0 - 310.0 - - - - 2_7_cordeauVehicle - 2_cordeauType - - [x=33.0][y=-33.0] - - - - 0.0 - 310.0 - - - - 2_8_cordeauVehicle - 2_cordeauType - - [x=33.0][y=-33.0] - - - - 0.0 - 310.0 - - - - 2_9_cordeauVehicle - 2_cordeauType - - [x=33.0][y=-33.0] - - - - 0.0 - 310.0 - - - - 2_10_cordeauVehicle - 2_cordeauType - - [x=33.0][y=-33.0] - - - - 0.0 - 310.0 - - - - 2_11_cordeauVehicle - 2_cordeauType - - [x=33.0][y=-33.0] - - - - 0.0 - 310.0 - - - - 2_12_cordeauVehicle - 2_cordeauType - - [x=33.0][y=-33.0] - - - - 0.0 - 310.0 - - - - 2_13_cordeauVehicle - 2_cordeauType - - [x=33.0][y=-33.0] - - - - 0.0 - 310.0 - - - - 2_14_cordeauVehicle - 2_cordeauType - - [x=33.0][y=-33.0] - - - - 0.0 - 310.0 - - - - - - 1_cordeauType - 500 - - 0.0 - 1.0 - - - - - 2_cordeauType - 500 - - 0.0 - 1.0 - - - - - - - [x=37.0][y=-90.0] - - 9 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-83.0][y=49.0] - - 74 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-54.0][y=-50.0] - - 47 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=99.0][y=81.0] - - 46 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=8.0][y=-84.0] - - 57 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=93.0][y=49.0] - - 79 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=12.0][y=48.0] - - 42 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-17.0][y=49.0] - - 79 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=32.0][y=-68.0] - - 97 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=35.0][y=-1.0] - - 83 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-44.0][y=-95.0] - - 65 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=7.0][y=59.0] - - 96 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-25.0][y=-89.0] - - 97 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=39.0][y=-49.0] - - 24 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-67.0][y=72.0] - - 69 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-80.0][y=55.0] - - 83 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=81.0][y=-86.0] - - 22 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-7.0][y=52.0] - - 43 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-3.0][y=97.0] - - 56 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=92.0][y=28.0] - - 22 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=57.0][y=95.0] - - 80 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-73.0][y=-96.0] - - 92 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-29.0][y=72.0] - - 1 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-47.0][y=12.0] - - 2 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-88.0][y=-61.0] - - 63 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=50.0][y=-37.0] - - 11 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=59.0][y=71.0] - - 98 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=54.0][y=-21.0] - - 40 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=64.0][y=-17.0] - - 8 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=40.0][y=27.0] - - 49 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=55.0][y=89.0] - - 69 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=17.0][y=-25.0] - - 93 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-88.0][y=36.0] - - 57 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-61.0][y=66.0] - - 29 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-42.0][y=-6.0] - - 23 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-46.0][y=-3.0] - - 50 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-61.0][y=26.0] - - 5 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=38.0][y=8.0] - - 3 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=26.0][y=-37.0] - - 19 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=17.0][y=-72.0] - - 53 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=19.0][y=93.0] - - 40 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-39.0][y=-67.0] - - 24 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=79.0][y=38.0] - - 8 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-67.0][y=88.0] - - 19 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=0.0][y=14.0] - - 93 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=63.0][y=-41.0] - - 39 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-59.0][y=50.0] - - 72 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=38.0][y=39.0] - - 94 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-28.0][y=39.0] - - 97 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-99.0][y=-97.0] - - 6 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-2.0][y=-47.0] - - 18 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-62.0][y=-2.0] - - 24 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=5.0][y=-41.0] - - 1 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=31.0][y=12.0] - - 43 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=52.0][y=66.0] - - 13 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-69.0][y=-19.0] - - 5 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=10.0][y=-49.0] - - 52 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-90.0][y=-68.0] - - 53 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-17.0][y=-66.0] - - 28 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-64.0][y=70.0] - - 53 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-12.0][y=10.0] - - 36 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-80.0][y=-31.0] - - 18 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=93.0][y=-50.0] - - 77 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=92.0][y=27.0] - - 14 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-4.0][y=-7.0] - - 49 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=54.0][y=-48.0] - - 58 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-47.0][y=-26.0] - - 88 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-20.0][y=-5.0] - - 28 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-22.0][y=73.0] - - 72 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=60.0][y=-39.0] - - 59 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=42.0][y=96.0] - - 51 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=29.0][y=41.0] - - 41 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=91.0][y=15.0] - - 84 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-65.0][y=0.0] - - 47 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-16.0][y=36.0] - - 36 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=24.0][y=41.0] - - 66 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-70.0][y=39.0] - - 84 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=25.0][y=58.0] - - 10 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=17.0][y=21.0] - - 37 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=54.0][y=-82.0] - - 58 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-53.0][y=88.0] - - 57 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=83.0][y=-24.0] - - 1 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-18.0][y=64.0] - - 25 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-77.0][y=-16.0] - - 50 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-61.0][y=56.0] - - 96 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-35.0][y=-54.0] - - 48 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=43.0][y=33.0] - - 58 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=85.0][y=36.0] - - 75 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=75.0][y=-18.0] - - 56 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=31.0][y=85.0] - - 67 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-18.0][y=-39.0] - - 15 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-69.0][y=19.0] - - 21 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-87.0][y=51.0] - - 98 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-96.0][y=-36.0] - - 77 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=49.0][y=8.0] - - 57 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-5.0][y=54.0] - - 39 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-26.0][y=43.0] - - 99 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-11.0][y=60.0] - - 83 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=40.0][y=61.0] - - 54 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=82.0][y=35.0] - - 86 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-92.0][y=12.0] - - 2 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=0.0][y=-78.0] - - 18 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-93.0][y=-86.0] - - 14 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=69.0][y=-46.0] - - 99 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-84.0][y=74.0] - - 55 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=49.0][y=-47.0] - - 85 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-12.0][y=85.0] - - 63 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=42.0][y=33.0] - - 60 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=16.0][y=-81.0] - - 33 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-78.0][y=53.0] - - 62 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=53.0][y=-80.0] - - 70 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-46.0][y=-26.0] - - 79 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-25.0][y=-54.0] - - 98 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=7.0][y=-4.0] - - 5 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-61.0][y=-26.0] - - 48 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=95.0][y=-9.0] - - 93 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=51.0][y=70.0] - - 31 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-53.0][y=62.0] - - 78 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=79.0][y=-62.0] - - 8 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-28.0][y=-71.0] - - 64 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-24.0][y=4.0] - - 71 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=11.0][y=96.0] - - 85 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=91.0][y=36.0] - - 50 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=62.0][y=-8.0] - - 42 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-3.0][y=17.0] - - 18 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=53.0][y=-90.0] - - 38 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-20.0][y=51.0] - - 99 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-81.0][y=37.0] - - 29 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=6.0][y=94.0] - - 3 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-19.0][y=-62.0] - - 52 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=83.0][y=-91.0] - - 98 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-7.0][y=-92.0] - - 4 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=7.0][y=31.0] - - 12 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=52.0][y=12.0] - - 50 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=60.0][y=58.0] - - 56 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-43.0][y=47.0] - - 86 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=14.0][y=89.0] - - 56 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=6.0][y=-6.0] - - 2 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-18.0][y=34.0] - - 39 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=70.0][y=99.0] - - 31 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-63.0][y=-75.0] - - 9 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=68.0][y=-29.0] - - 54 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-83.0][y=84.0] - - 81 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-1.0][y=49.0] - - 4 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-4.0][y=17.0] - - 23 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-82.0][y=-3.0] - - 11 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-94.0][y=-30.0] - - 87 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-46.0][y=-82.0] - - 15 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-86.0][y=-79.0] - - 4 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=58.0][y=-19.0] - - 29 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-43.0][y=-30.0] - - 58 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-44.0][y=7.0] - - 73 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-3.0][y=-20.0] - - 5 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=36.0][y=41.0] - - 12 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-30.0][y=-94.0] - - 3 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=88.0][y=65.0] - - 50 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=2.0][y=29.0] - - 25 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=64.0][y=37.0] - - 72 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=41.0][y=42.0] - - 90 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-70.0][y=-19.0] - - 10 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-76.0][y=55.0] - - 62 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-38.0][y=-56.0] - - 51 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-28.0][y=73.0] - - 100 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-80.0][y=-95.0] - - 29 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=7.0][y=73.0] - - 37 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=33.0][y=57.0] - - 71 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=28.0][y=93.0] - - 5 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-70.0][y=6.0] - - 85 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-37.0][y=46.0] - - 60 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-97.0][y=35.0] - - 95 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-12.0][y=42.0] - - 37 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=51.0][y=-45.0] - - 80 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=92.0][y=40.0] - - 57 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-21.0][y=77.0] - - 81 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-84.0][y=-29.0] - - 44 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-94.0][y=-20.0] - - 17 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-82.0][y=-14.0] - - 79 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=76.0][y=-22.0] - - 38 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=69.0][y=-19.0] - - 79 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=49.0][y=-71.0] - - 11 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-30.0][y=-68.0] - - 82 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=1.0][y=34.0] - - 50 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=77.0][y=-43.0] - - 73 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=77.0][y=79.0] - - 39 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=42.0][y=-15.0] - - 12 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-58.0][y=64.0] - - 6 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=25.0][y=91.0] - - 8 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=82.0][y=-97.0] - - 87 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=59.0][y=-49.0] - - 32 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=69.0][y=59.0] - - 14 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=29.0][y=33.0] - - 17 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-97.0][y=9.0] - - 19 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-58.0][y=9.0] - - 44 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-5.0][y=-39.0] - - 55 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-61.0][y=-76.0] - - 100 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=8.0][y=-22.0] - - 45 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=74.0][y=-70.0] - - 4 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=86.0][y=35.0] - - 68 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-40.0][y=-84.0] - - 77 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=93.0][y=-29.0] - - 42 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-96.0][y=85.0] - - 39 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=64.0][y=20.0] - - 25 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=1.0][y=-17.0] - - 93 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=15.0][y=98.0] - - 74 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=20.0][y=42.0] - - 84 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-46.0][y=-79.0] - - 21 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-42.0][y=63.0] - - 33 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-30.0][y=-63.0] - - 99 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=92.0][y=-17.0] - - 84 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=66.0][y=39.0] - - 71 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-36.0][y=4.0] - - 26 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=9.0][y=-79.0] - - 72 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=78.0][y=-87.0] - - 36 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=66.0][y=-48.0] - - 4 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=85.0][y=11.0] - - 98 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=71.0][y=-61.0] - - 45 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-83.0][y=-30.0] - - 33 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=82.0][y=-74.0] - - 56 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-70.0][y=85.0] - - 24 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=98.0][y=-17.0] - - 53 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-16.0][y=62.0] - - 15 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-55.0][y=39.0] - - 19 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=5.0][y=97.0] - - 19 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=0.0][y=95.0] - - 35 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=70.0][y=-14.0] - - 90 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-63.0][y=-14.0] - - 94 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-16.0][y=16.0] - - 75 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-39.0][y=61.0] - - 13 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=51.0][y=-77.0] - - 89 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-45.0][y=7.0] - - 76 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=38.0][y=-24.0] - - 3 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=70.0][y=-80.0] - - 92 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-38.0][y=-81.0] - - 78 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=26.0][y=22.0] - - 98 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=3.0][y=66.0] - - 36 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-14.0][y=44.0] - - 50 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-77.0][y=80.0] - - 43 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=96.0][y=-83.0] - - 64 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=17.0][y=-35.0] - - 65 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-66.0][y=63.0] - - 42 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=44.0][y=-84.0] - - 96 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-57.0][y=-84.0] - - 55 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-72.0][y=-87.0] - - 14 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-56.0][y=-62.0] - - 18 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=23.0][y=52.0] - - 2 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=63.0][y=-14.0] - - 22 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-19.0][y=59.0] - - 17 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-19.0][y=87.0] - - 3 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=-13.0][y=38.0] - - 28 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - diff --git a/jsprit-examples/input/deliveries_solomon_c101.xml b/jsprit-examples/input/deliveries_solomon_c101.xml deleted file mode 100644 index fdfa85759..000000000 --- a/jsprit-examples/input/deliveries_solomon_c101.xml +++ /dev/null @@ -1,1254 +0,0 @@ - - - - - - INFINITE - HOMOGENEOUS - - - - solomonVehicle - solomonType - - 0 - - - - 0.0 - 1236.0 - - - - - - solomonType - 200 - - 0.0 - 1.0 - - - - - - - [x=5.0][y=35.0] - - 10 - 90.0 - - - 283.0 - 344.0 - - - - - [x=5.0][y=45.0] - - 10 - 90.0 - - - 665.0 - 716.0 - - - - - [x=8.0][y=40.0] - - 40 - 90.0 - - - 87.0 - 158.0 - - - - - [x=8.0][y=45.0] - - 20 - 90.0 - - - 751.0 - 816.0 - - - - - [x=0.0][y=45.0] - - 20 - 90.0 - - - 567.0 - 624.0 - - - - - [x=2.0][y=40.0] - - 20 - 90.0 - - - 383.0 - 434.0 - - - - - [x=0.0][y=40.0] - - 30 - 90.0 - - - 479.0 - 522.0 - - - - - [x=33.0][y=35.0] - - 10 - 90.0 - - - 16.0 - 80.0 - - - - - [x=33.0][y=32.0] - - 20 - 90.0 - - - 68.0 - 149.0 - - - - - [x=35.0][y=32.0] - - 10 - 90.0 - - - 166.0 - 235.0 - - - - - [x=35.0][y=30.0] - - 10 - 90.0 - - - 264.0 - 321.0 - - - - - [x=28.0][y=52.0] - - 20 - 90.0 - - - 812.0 - 883.0 - - - - - [x=28.0][y=55.0] - - 10 - 90.0 - - - 732.0 - 777.0 - - - - - [x=25.0][y=50.0] - - 10 - 90.0 - - - 65.0 - 144.0 - - - - - [x=25.0][y=52.0] - - 40 - 90.0 - - - 169.0 - 224.0 - - - - - [x=25.0][y=55.0] - - 10 - 90.0 - - - 622.0 - 701.0 - - - - - [x=23.0][y=52.0] - - 10 - 90.0 - - - 261.0 - 316.0 - - - - - [x=23.0][y=55.0] - - 20 - 90.0 - - - 546.0 - 593.0 - - - - - [x=20.0][y=50.0] - - 10 - 90.0 - - - 358.0 - 405.0 - - - - - [x=42.0][y=66.0] - - 10 - 90.0 - - - 65.0 - 146.0 - - - - - [x=45.0][y=70.0] - - 30 - 90.0 - - - 825.0 - 870.0 - - - - - [x=45.0][y=68.0] - - 10 - 90.0 - - - 912.0 - 967.0 - - - - - [x=20.0][y=55.0] - - 10 - 90.0 - - - 449.0 - 504.0 - - - - - [x=40.0][y=66.0] - - 20 - 90.0 - - - 170.0 - 225.0 - - - - - [x=40.0][y=69.0] - - 20 - 90.0 - - - 621.0 - 702.0 - - - - - [x=42.0][y=65.0] - - 10 - 90.0 - - - 15.0 - 67.0 - - - - - [x=10.0][y=40.0] - - 30 - 90.0 - - - 31.0 - 100.0 - - - - - [x=42.0][y=68.0] - - 10 - 90.0 - - - 727.0 - 782.0 - - - - - [x=10.0][y=35.0] - - 20 - 90.0 - - - 200.0 - 237.0 - - - - - [x=38.0][y=70.0] - - 10 - 90.0 - - - 534.0 - 605.0 - - - - - [x=38.0][y=68.0] - - 20 - 90.0 - - - 255.0 - 324.0 - - - - - [x=15.0][y=80.0] - - 10 - 90.0 - - - 278.0 - 345.0 - - - - - [x=18.0][y=75.0] - - 20 - 90.0 - - - 99.0 - 148.0 - - - - - [x=15.0][y=75.0] - - 20 - 90.0 - - - 179.0 - 254.0 - - - - - [x=20.0][y=80.0] - - 40 - 90.0 - - - 384.0 - 429.0 - - - - - [x=20.0][y=85.0] - - 40 - 90.0 - - - 475.0 - 528.0 - - - - - [x=22.0][y=75.0] - - 30 - 90.0 - - - 30.0 - 92.0 - - - - - [x=22.0][y=85.0] - - 10 - 90.0 - - - 567.0 - 620.0 - - - - - [x=35.0][y=69.0] - - 10 - 90.0 - - - 448.0 - 505.0 - - - - - [x=25.0][y=85.0] - - 20 - 90.0 - - - 652.0 - 721.0 - - - - - [x=30.0][y=52.0] - - 20 - 90.0 - - - 914.0 - 965.0 - - - - - [x=30.0][y=50.0] - - 10 - 90.0 - - - 10.0 - 73.0 - - - - - [x=55.0][y=80.0] - - 10 - 90.0 - - - 743.0 - 820.0 - - - - - [x=55.0][y=85.0] - - 20 - 90.0 - - - 647.0 - 726.0 - - - - - [x=58.0][y=75.0] - - 20 - 90.0 - - - 30.0 - 84.0 - - - - - [x=60.0][y=85.0] - - 30 - 90.0 - - - 561.0 - 622.0 - - - - - [x=60.0][y=80.0] - - 10 - 90.0 - - - 95.0 - 156.0 - - - - - [x=62.0][y=80.0] - - 30 - 90.0 - - - 196.0 - 239.0 - - - - - [x=65.0][y=82.0] - - 10 - 90.0 - - - 285.0 - 336.0 - - - - - [x=65.0][y=85.0] - - 40 - 90.0 - - - 475.0 - 518.0 - - - - - [x=67.0][y=85.0] - - 20 - 90.0 - - - 368.0 - 441.0 - - - - - [x=60.0][y=60.0] - - 10 - 90.0 - - - 836.0 - 889.0 - - - - - [x=60.0][y=55.0] - - 10 - 90.0 - - - 20.0 - 84.0 - - - - - [x=35.0][y=66.0] - - 10 - 90.0 - - - 357.0 - 410.0 - - - - - [x=65.0][y=60.0] - - 30 - 90.0 - - - 645.0 - 708.0 - - - - - [x=63.0][y=58.0] - - 10 - 90.0 - - - 737.0 - 802.0 - - - - - [x=87.0][y=30.0] - - 10 - 90.0 - - - 668.0 - 731.0 - - - - - [x=88.0][y=35.0] - - 20 - 90.0 - - - 109.0 - 170.0 - - - - - [x=88.0][y=30.0] - - 10 - 90.0 - - - 574.0 - 643.0 - - - - - [x=75.0][y=55.0] - - 20 - 90.0 - - - 369.0 - 420.0 - - - - - [x=72.0][y=55.0] - - 10 - 90.0 - - - 265.0 - 338.0 - - - - - [x=85.0][y=25.0] - - 10 - 90.0 - - - 769.0 - 820.0 - - - - - [x=85.0][y=35.0] - - 30 - 90.0 - - - 47.0 - 124.0 - - - - - [x=66.0][y=55.0] - - 10 - 90.0 - - - 173.0 - 238.0 - - - - - [x=65.0][y=55.0] - - 20 - 90.0 - - - 85.0 - 144.0 - - - - - [x=70.0][y=58.0] - - 20 - 90.0 - - - 458.0 - 523.0 - - - - - [x=68.0][y=60.0] - - 30 - 90.0 - - - 555.0 - 612.0 - - - - - [x=47.0][y=40.0] - - 10 - 90.0 - - - 12.0 - 77.0 - - - - - [x=47.0][y=35.0] - - 10 - 90.0 - - - 826.0 - 875.0 - - - - - [x=45.0][y=35.0] - - 10 - 90.0 - - - 916.0 - 969.0 - - - - - [x=45.0][y=30.0] - - 10 - 90.0 - - - 734.0 - 777.0 - - - - - [x=95.0][y=30.0] - - 30 - 90.0 - - - 387.0 - 456.0 - - - - - [x=95.0][y=35.0] - - 20 - 90.0 - - - 293.0 - 360.0 - - - - - [x=53.0][y=30.0] - - 10 - 90.0 - - - 450.0 - 505.0 - - - - - [x=92.0][y=30.0] - - 10 - 90.0 - - - 478.0 - 551.0 - - - - - [x=53.0][y=35.0] - - 50 - 90.0 - - - 353.0 - 412.0 - - - - - [x=45.0][y=65.0] - - 20 - 90.0 - - - 997.0 - 1068.0 - - - - - [x=90.0][y=35.0] - - 10 - 90.0 - - - 203.0 - 260.0 - - - - - [x=38.0][y=15.0] - - 10 - 90.0 - - - 651.0 - 740.0 - - - - - [x=38.0][y=5.0] - - 30 - 90.0 - - - 471.0 - 534.0 - - - - - [x=40.0][y=15.0] - - 40 - 90.0 - - - 35.0 - 87.0 - - - - - [x=40.0][y=5.0] - - 30 - 90.0 - - - 385.0 - 436.0 - - - - - [x=42.0][y=15.0] - - 10 - 90.0 - - - 95.0 - 158.0 - - - - - [x=48.0][y=30.0] - - 10 - 90.0 - - - 632.0 - 693.0 - - - - - [x=48.0][y=40.0] - - 10 - 90.0 - - - 76.0 - 129.0 - - - - - [x=50.0][y=35.0] - - 20 - 90.0 - - - 262.0 - 317.0 - - - - - [x=50.0][y=40.0] - - 50 - 90.0 - - - 171.0 - 218.0 - - - - - [x=35.0][y=5.0] - - 20 - 90.0 - - - 562.0 - 629.0 - - - - - [x=50.0][y=30.0] - - 10 - 90.0 - - - 531.0 - 610.0 - - - - - [x=28.0][y=35.0] - - 10 - 90.0 - - - 1001.0 - 1066.0 - - - - - [x=28.0][y=30.0] - - 10 - 90.0 - - - 632.0 - 693.0 - - - - - [x=30.0][y=30.0] - - 10 - 90.0 - - - 541.0 - 600.0 - - - - - [x=32.0][y=30.0] - - 10 - 90.0 - - - 359.0 - 412.0 - - - - - [x=30.0][y=35.0] - - 10 - 90.0 - - - 1054.0 - 1127.0 - - - - - [x=30.0][y=32.0] - - 30 - 90.0 - - - 448.0 - 509.0 - - - - - [x=25.0][y=30.0] - - 10 - 90.0 - - - 725.0 - 786.0 - - - - - [x=25.0][y=35.0] - - 10 - 90.0 - - - 912.0 - 969.0 - - - - - [x=44.0][y=5.0] - - 20 - 90.0 - - - 286.0 - 347.0 - - - - - [x=42.0][y=10.0] - - 40 - 90.0 - - - 186.0 - 257.0 - - - - - [x=26.0][y=32.0] - - 10 - 90.0 - - - 815.0 - 880.0 - - - - - diff --git a/jsprit-examples/input/deliveries_solomon_open_c101.xml b/jsprit-examples/input/deliveries_solomon_open_c101.xml deleted file mode 100644 index 5f853cb22..000000000 --- a/jsprit-examples/input/deliveries_solomon_open_c101.xml +++ /dev/null @@ -1,1255 +0,0 @@ - - - - - - INFINITE - HOMOGENEOUS - - - - solomonVehicle - solomonType - - 0 - - - - 0.0 - 1236.0 - - false - - - - - solomonType - 200 - - 0.0 - 1.0 - - - - - - - [x=5.0][y=35.0] - - 10 - 90.0 - - - 283.0 - 344.0 - - - - - [x=5.0][y=45.0] - - 10 - 90.0 - - - 665.0 - 716.0 - - - - - [x=8.0][y=40.0] - - 40 - 90.0 - - - 87.0 - 158.0 - - - - - [x=8.0][y=45.0] - - 20 - 90.0 - - - 751.0 - 816.0 - - - - - [x=0.0][y=45.0] - - 20 - 90.0 - - - 567.0 - 624.0 - - - - - [x=2.0][y=40.0] - - 20 - 90.0 - - - 383.0 - 434.0 - - - - - [x=0.0][y=40.0] - - 30 - 90.0 - - - 479.0 - 522.0 - - - - - [x=33.0][y=35.0] - - 10 - 90.0 - - - 16.0 - 80.0 - - - - - [x=33.0][y=32.0] - - 20 - 90.0 - - - 68.0 - 149.0 - - - - - [x=35.0][y=32.0] - - 10 - 90.0 - - - 166.0 - 235.0 - - - - - [x=35.0][y=30.0] - - 10 - 90.0 - - - 264.0 - 321.0 - - - - - [x=28.0][y=52.0] - - 20 - 90.0 - - - 812.0 - 883.0 - - - - - [x=28.0][y=55.0] - - 10 - 90.0 - - - 732.0 - 777.0 - - - - - [x=25.0][y=50.0] - - 10 - 90.0 - - - 65.0 - 144.0 - - - - - [x=25.0][y=52.0] - - 40 - 90.0 - - - 169.0 - 224.0 - - - - - [x=25.0][y=55.0] - - 10 - 90.0 - - - 622.0 - 701.0 - - - - - [x=23.0][y=52.0] - - 10 - 90.0 - - - 261.0 - 316.0 - - - - - [x=23.0][y=55.0] - - 20 - 90.0 - - - 546.0 - 593.0 - - - - - [x=20.0][y=50.0] - - 10 - 90.0 - - - 358.0 - 405.0 - - - - - [x=42.0][y=66.0] - - 10 - 90.0 - - - 65.0 - 146.0 - - - - - [x=45.0][y=70.0] - - 30 - 90.0 - - - 825.0 - 870.0 - - - - - [x=45.0][y=68.0] - - 10 - 90.0 - - - 912.0 - 967.0 - - - - - [x=20.0][y=55.0] - - 10 - 90.0 - - - 449.0 - 504.0 - - - - - [x=40.0][y=66.0] - - 20 - 90.0 - - - 170.0 - 225.0 - - - - - [x=40.0][y=69.0] - - 20 - 90.0 - - - 621.0 - 702.0 - - - - - [x=42.0][y=65.0] - - 10 - 90.0 - - - 15.0 - 67.0 - - - - - [x=10.0][y=40.0] - - 30 - 90.0 - - - 31.0 - 100.0 - - - - - [x=42.0][y=68.0] - - 10 - 90.0 - - - 727.0 - 782.0 - - - - - [x=10.0][y=35.0] - - 20 - 90.0 - - - 200.0 - 237.0 - - - - - [x=38.0][y=70.0] - - 10 - 90.0 - - - 534.0 - 605.0 - - - - - [x=38.0][y=68.0] - - 20 - 90.0 - - - 255.0 - 324.0 - - - - - [x=15.0][y=80.0] - - 10 - 90.0 - - - 278.0 - 345.0 - - - - - [x=18.0][y=75.0] - - 20 - 90.0 - - - 99.0 - 148.0 - - - - - [x=15.0][y=75.0] - - 20 - 90.0 - - - 179.0 - 254.0 - - - - - [x=20.0][y=80.0] - - 40 - 90.0 - - - 384.0 - 429.0 - - - - - [x=20.0][y=85.0] - - 40 - 90.0 - - - 475.0 - 528.0 - - - - - [x=22.0][y=75.0] - - 30 - 90.0 - - - 30.0 - 92.0 - - - - - [x=22.0][y=85.0] - - 10 - 90.0 - - - 567.0 - 620.0 - - - - - [x=35.0][y=69.0] - - 10 - 90.0 - - - 448.0 - 505.0 - - - - - [x=25.0][y=85.0] - - 20 - 90.0 - - - 652.0 - 721.0 - - - - - [x=30.0][y=52.0] - - 20 - 90.0 - - - 914.0 - 965.0 - - - - - [x=30.0][y=50.0] - - 10 - 90.0 - - - 10.0 - 73.0 - - - - - [x=55.0][y=80.0] - - 10 - 90.0 - - - 743.0 - 820.0 - - - - - [x=55.0][y=85.0] - - 20 - 90.0 - - - 647.0 - 726.0 - - - - - [x=58.0][y=75.0] - - 20 - 90.0 - - - 30.0 - 84.0 - - - - - [x=60.0][y=85.0] - - 30 - 90.0 - - - 561.0 - 622.0 - - - - - [x=60.0][y=80.0] - - 10 - 90.0 - - - 95.0 - 156.0 - - - - - [x=62.0][y=80.0] - - 30 - 90.0 - - - 196.0 - 239.0 - - - - - [x=65.0][y=82.0] - - 10 - 90.0 - - - 285.0 - 336.0 - - - - - [x=65.0][y=85.0] - - 40 - 90.0 - - - 475.0 - 518.0 - - - - - [x=67.0][y=85.0] - - 20 - 90.0 - - - 368.0 - 441.0 - - - - - [x=60.0][y=60.0] - - 10 - 90.0 - - - 836.0 - 889.0 - - - - - [x=60.0][y=55.0] - - 10 - 90.0 - - - 20.0 - 84.0 - - - - - [x=35.0][y=66.0] - - 10 - 90.0 - - - 357.0 - 410.0 - - - - - [x=65.0][y=60.0] - - 30 - 90.0 - - - 645.0 - 708.0 - - - - - [x=63.0][y=58.0] - - 10 - 90.0 - - - 737.0 - 802.0 - - - - - [x=87.0][y=30.0] - - 10 - 90.0 - - - 668.0 - 731.0 - - - - - [x=88.0][y=35.0] - - 20 - 90.0 - - - 109.0 - 170.0 - - - - - [x=88.0][y=30.0] - - 10 - 90.0 - - - 574.0 - 643.0 - - - - - [x=75.0][y=55.0] - - 20 - 90.0 - - - 369.0 - 420.0 - - - - - [x=72.0][y=55.0] - - 10 - 90.0 - - - 265.0 - 338.0 - - - - - [x=85.0][y=25.0] - - 10 - 90.0 - - - 769.0 - 820.0 - - - - - [x=85.0][y=35.0] - - 30 - 90.0 - - - 47.0 - 124.0 - - - - - [x=66.0][y=55.0] - - 10 - 90.0 - - - 173.0 - 238.0 - - - - - [x=65.0][y=55.0] - - 20 - 90.0 - - - 85.0 - 144.0 - - - - - [x=70.0][y=58.0] - - 20 - 90.0 - - - 458.0 - 523.0 - - - - - [x=68.0][y=60.0] - - 30 - 90.0 - - - 555.0 - 612.0 - - - - - [x=47.0][y=40.0] - - 10 - 90.0 - - - 12.0 - 77.0 - - - - - [x=47.0][y=35.0] - - 10 - 90.0 - - - 826.0 - 875.0 - - - - - [x=45.0][y=35.0] - - 10 - 90.0 - - - 916.0 - 969.0 - - - - - [x=45.0][y=30.0] - - 10 - 90.0 - - - 734.0 - 777.0 - - - - - [x=95.0][y=30.0] - - 30 - 90.0 - - - 387.0 - 456.0 - - - - - [x=95.0][y=35.0] - - 20 - 90.0 - - - 293.0 - 360.0 - - - - - [x=53.0][y=30.0] - - 10 - 90.0 - - - 450.0 - 505.0 - - - - - [x=92.0][y=30.0] - - 10 - 90.0 - - - 478.0 - 551.0 - - - - - [x=53.0][y=35.0] - - 50 - 90.0 - - - 353.0 - 412.0 - - - - - [x=45.0][y=65.0] - - 20 - 90.0 - - - 997.0 - 1068.0 - - - - - [x=90.0][y=35.0] - - 10 - 90.0 - - - 203.0 - 260.0 - - - - - [x=38.0][y=15.0] - - 10 - 90.0 - - - 651.0 - 740.0 - - - - - [x=38.0][y=5.0] - - 30 - 90.0 - - - 471.0 - 534.0 - - - - - [x=40.0][y=15.0] - - 40 - 90.0 - - - 35.0 - 87.0 - - - - - [x=40.0][y=5.0] - - 30 - 90.0 - - - 385.0 - 436.0 - - - - - [x=42.0][y=15.0] - - 10 - 90.0 - - - 95.0 - 158.0 - - - - - [x=48.0][y=30.0] - - 10 - 90.0 - - - 632.0 - 693.0 - - - - - [x=48.0][y=40.0] - - 10 - 90.0 - - - 76.0 - 129.0 - - - - - [x=50.0][y=35.0] - - 20 - 90.0 - - - 262.0 - 317.0 - - - - - [x=50.0][y=40.0] - - 50 - 90.0 - - - 171.0 - 218.0 - - - - - [x=35.0][y=5.0] - - 20 - 90.0 - - - 562.0 - 629.0 - - - - - [x=50.0][y=30.0] - - 10 - 90.0 - - - 531.0 - 610.0 - - - - - [x=28.0][y=35.0] - - 10 - 90.0 - - - 1001.0 - 1066.0 - - - - - [x=28.0][y=30.0] - - 10 - 90.0 - - - 632.0 - 693.0 - - - - - [x=30.0][y=30.0] - - 10 - 90.0 - - - 541.0 - 600.0 - - - - - [x=32.0][y=30.0] - - 10 - 90.0 - - - 359.0 - 412.0 - - - - - [x=30.0][y=35.0] - - 10 - 90.0 - - - 1054.0 - 1127.0 - - - - - [x=30.0][y=32.0] - - 30 - 90.0 - - - 448.0 - 509.0 - - - - - [x=25.0][y=30.0] - - 10 - 90.0 - - - 725.0 - 786.0 - - - - - [x=25.0][y=35.0] - - 10 - 90.0 - - - 912.0 - 969.0 - - - - - [x=44.0][y=5.0] - - 20 - 90.0 - - - 286.0 - 347.0 - - - - - [x=42.0][y=10.0] - - 40 - 90.0 - - - 186.0 - 257.0 - - - - - [x=26.0][y=32.0] - - 10 - 90.0 - - - 815.0 - 880.0 - - - - - diff --git a/jsprit-examples/input/deliveries_solomon_specifiedVehicleEndLocations_c101.xml b/jsprit-examples/input/deliveries_solomon_specifiedVehicleEndLocations_c101.xml deleted file mode 100644 index 42f5e179c..000000000 --- a/jsprit-examples/input/deliveries_solomon_specifiedVehicleEndLocations_c101.xml +++ /dev/null @@ -1,1259 +0,0 @@ - - - - - - INFINITE - HOMOGENEOUS - - - - solomonVehicle - solomonType - - 0 - - - - 101 - - - - 0.0 - 1236.0 - - true - - - - - solomonType - 200 - - 1000.0 - 1.0 - - - - - - - [x=5.0][y=35.0] - - 10 - 90.0 - - - 283.0 - 344.0 - - - - - [x=5.0][y=45.0] - - 10 - 90.0 - - - 665.0 - 716.0 - - - - - [x=8.0][y=40.0] - - 40 - 90.0 - - - 87.0 - 158.0 - - - - - [x=8.0][y=45.0] - - 20 - 90.0 - - - 751.0 - 816.0 - - - - - [x=0.0][y=45.0] - - 20 - 90.0 - - - 567.0 - 624.0 - - - - - [x=2.0][y=40.0] - - 20 - 90.0 - - - 383.0 - 434.0 - - - - - [x=0.0][y=40.0] - - 30 - 90.0 - - - 479.0 - 522.0 - - - - - [x=33.0][y=35.0] - - 10 - 90.0 - - - 16.0 - 80.0 - - - - - [x=33.0][y=32.0] - - 20 - 90.0 - - - 68.0 - 149.0 - - - - - [x=35.0][y=32.0] - - 10 - 90.0 - - - 166.0 - 235.0 - - - - - [x=35.0][y=30.0] - - 10 - 90.0 - - - 264.0 - 321.0 - - - - - [x=28.0][y=52.0] - - 20 - 90.0 - - - 812.0 - 883.0 - - - - - [x=28.0][y=55.0] - - 10 - 90.0 - - - 732.0 - 777.0 - - - - - [x=25.0][y=50.0] - - 10 - 90.0 - - - 65.0 - 144.0 - - - - - [x=25.0][y=52.0] - - 40 - 90.0 - - - 169.0 - 224.0 - - - - - [x=25.0][y=55.0] - - 10 - 90.0 - - - 622.0 - 701.0 - - - - - [x=23.0][y=52.0] - - 10 - 90.0 - - - 261.0 - 316.0 - - - - - [x=23.0][y=55.0] - - 20 - 90.0 - - - 546.0 - 593.0 - - - - - [x=20.0][y=50.0] - - 10 - 90.0 - - - 358.0 - 405.0 - - - - - [x=42.0][y=66.0] - - 10 - 90.0 - - - 65.0 - 146.0 - - - - - [x=45.0][y=70.0] - - 30 - 90.0 - - - 825.0 - 870.0 - - - - - [x=45.0][y=68.0] - - 10 - 90.0 - - - 912.0 - 967.0 - - - - - [x=20.0][y=55.0] - - 10 - 90.0 - - - 449.0 - 504.0 - - - - - [x=40.0][y=66.0] - - 20 - 90.0 - - - 170.0 - 225.0 - - - - - [x=40.0][y=69.0] - - 20 - 90.0 - - - 621.0 - 702.0 - - - - - [x=42.0][y=65.0] - - 10 - 90.0 - - - 15.0 - 67.0 - - - - - [x=10.0][y=40.0] - - 30 - 90.0 - - - 31.0 - 100.0 - - - - - [x=42.0][y=68.0] - - 10 - 90.0 - - - 727.0 - 782.0 - - - - - [x=10.0][y=35.0] - - 20 - 90.0 - - - 200.0 - 237.0 - - - - - [x=38.0][y=70.0] - - 10 - 90.0 - - - 534.0 - 605.0 - - - - - [x=38.0][y=68.0] - - 20 - 90.0 - - - 255.0 - 324.0 - - - - - [x=15.0][y=80.0] - - 10 - 90.0 - - - 278.0 - 345.0 - - - - - [x=18.0][y=75.0] - - 20 - 90.0 - - - 99.0 - 148.0 - - - - - [x=15.0][y=75.0] - - 20 - 90.0 - - - 179.0 - 254.0 - - - - - [x=20.0][y=80.0] - - 40 - 90.0 - - - 384.0 - 429.0 - - - - - [x=20.0][y=85.0] - - 40 - 90.0 - - - 475.0 - 528.0 - - - - - [x=22.0][y=75.0] - - 30 - 90.0 - - - 30.0 - 92.0 - - - - - [x=22.0][y=85.0] - - 10 - 90.0 - - - 567.0 - 620.0 - - - - - [x=35.0][y=69.0] - - 10 - 90.0 - - - 448.0 - 505.0 - - - - - [x=25.0][y=85.0] - - 20 - 90.0 - - - 652.0 - 721.0 - - - - - [x=30.0][y=52.0] - - 20 - 90.0 - - - 914.0 - 965.0 - - - - - [x=30.0][y=50.0] - - 10 - 90.0 - - - 10.0 - 73.0 - - - - - [x=55.0][y=80.0] - - 10 - 90.0 - - - 743.0 - 820.0 - - - - - [x=55.0][y=85.0] - - 20 - 90.0 - - - 647.0 - 726.0 - - - - - [x=58.0][y=75.0] - - 20 - 90.0 - - - 30.0 - 84.0 - - - - - [x=60.0][y=85.0] - - 30 - 90.0 - - - 561.0 - 622.0 - - - - - [x=60.0][y=80.0] - - 10 - 90.0 - - - 95.0 - 156.0 - - - - - [x=62.0][y=80.0] - - 30 - 90.0 - - - 196.0 - 239.0 - - - - - [x=65.0][y=82.0] - - 10 - 90.0 - - - 285.0 - 336.0 - - - - - [x=65.0][y=85.0] - - 40 - 90.0 - - - 475.0 - 518.0 - - - - - [x=67.0][y=85.0] - - 20 - 90.0 - - - 368.0 - 441.0 - - - - - [x=60.0][y=60.0] - - 10 - 90.0 - - - 836.0 - 889.0 - - - - - [x=60.0][y=55.0] - - 10 - 90.0 - - - 20.0 - 84.0 - - - - - [x=35.0][y=66.0] - - 10 - 90.0 - - - 357.0 - 410.0 - - - - - [x=65.0][y=60.0] - - 30 - 90.0 - - - 645.0 - 708.0 - - - - - [x=63.0][y=58.0] - - 10 - 90.0 - - - 737.0 - 802.0 - - - - - [x=87.0][y=30.0] - - 10 - 90.0 - - - 668.0 - 731.0 - - - - - [x=88.0][y=35.0] - - 20 - 90.0 - - - 109.0 - 170.0 - - - - - [x=88.0][y=30.0] - - 10 - 90.0 - - - 574.0 - 643.0 - - - - - [x=75.0][y=55.0] - - 20 - 90.0 - - - 369.0 - 420.0 - - - - - [x=72.0][y=55.0] - - 10 - 90.0 - - - 265.0 - 338.0 - - - - - [x=85.0][y=25.0] - - 10 - 90.0 - - - 769.0 - 820.0 - - - - - [x=85.0][y=35.0] - - 30 - 90.0 - - - 47.0 - 124.0 - - - - - [x=66.0][y=55.0] - - 10 - 90.0 - - - 173.0 - 238.0 - - - - - [x=65.0][y=55.0] - - 20 - 90.0 - - - 85.0 - 144.0 - - - - - [x=70.0][y=58.0] - - 20 - 90.0 - - - 458.0 - 523.0 - - - - - [x=68.0][y=60.0] - - 30 - 90.0 - - - 555.0 - 612.0 - - - - - [x=47.0][y=40.0] - - 10 - 90.0 - - - 12.0 - 77.0 - - - - - [x=47.0][y=35.0] - - 10 - 90.0 - - - 826.0 - 875.0 - - - - - [x=45.0][y=35.0] - - 10 - 90.0 - - - 916.0 - 969.0 - - - - - [x=45.0][y=30.0] - - 10 - 90.0 - - - 734.0 - 777.0 - - - - - [x=95.0][y=30.0] - - 30 - 90.0 - - - 387.0 - 456.0 - - - - - [x=95.0][y=35.0] - - 20 - 90.0 - - - 293.0 - 360.0 - - - - - [x=53.0][y=30.0] - - 10 - 90.0 - - - 450.0 - 505.0 - - - - - [x=92.0][y=30.0] - - 10 - 90.0 - - - 478.0 - 551.0 - - - - - [x=53.0][y=35.0] - - 50 - 90.0 - - - 353.0 - 412.0 - - - - - [x=45.0][y=65.0] - - 20 - 90.0 - - - 997.0 - 1068.0 - - - - - [x=90.0][y=35.0] - - 10 - 90.0 - - - 203.0 - 260.0 - - - - - [x=38.0][y=15.0] - - 10 - 90.0 - - - 651.0 - 740.0 - - - - - [x=38.0][y=5.0] - - 30 - 90.0 - - - 471.0 - 534.0 - - - - - [x=40.0][y=15.0] - - 40 - 90.0 - - - 35.0 - 87.0 - - - - - [x=40.0][y=5.0] - - 30 - 90.0 - - - 385.0 - 436.0 - - - - - [x=42.0][y=15.0] - - 10 - 90.0 - - - 95.0 - 158.0 - - - - - [x=48.0][y=30.0] - - 10 - 90.0 - - - 632.0 - 693.0 - - - - - [x=48.0][y=40.0] - - 10 - 90.0 - - - 76.0 - 129.0 - - - - - [x=50.0][y=35.0] - - 20 - 90.0 - - - 262.0 - 317.0 - - - - - [x=50.0][y=40.0] - - 50 - 90.0 - - - 171.0 - 218.0 - - - - - [x=35.0][y=5.0] - - 20 - 90.0 - - - 562.0 - 629.0 - - - - - [x=50.0][y=30.0] - - 10 - 90.0 - - - 531.0 - 610.0 - - - - - [x=28.0][y=35.0] - - 10 - 90.0 - - - 1001.0 - 1066.0 - - - - - [x=28.0][y=30.0] - - 10 - 90.0 - - - 632.0 - 693.0 - - - - - [x=30.0][y=30.0] - - 10 - 90.0 - - - 541.0 - 600.0 - - - - - [x=32.0][y=30.0] - - 10 - 90.0 - - - 359.0 - 412.0 - - - - - [x=30.0][y=35.0] - - 10 - 90.0 - - - 1054.0 - 1127.0 - - - - - [x=30.0][y=32.0] - - 30 - 90.0 - - - 448.0 - 509.0 - - - - - [x=25.0][y=30.0] - - 10 - 90.0 - - - 725.0 - 786.0 - - - - - [x=25.0][y=35.0] - - 10 - 90.0 - - - 912.0 - 969.0 - - - - - [x=44.0][y=5.0] - - 20 - 90.0 - - - 286.0 - 347.0 - - - - - [x=42.0][y=10.0] - - 40 - 90.0 - - - 186.0 - 257.0 - - - - - [x=26.0][y=32.0] - - 10 - 90.0 - - - 815.0 - 880.0 - - - - - diff --git a/jsprit-examples/input/fastAlgo.xml b/jsprit-examples/input/fastAlgo.xml deleted file mode 100755 index 725b01188..000000000 --- a/jsprit-examples/input/fastAlgo.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - 2000 - - 0.01 - 50 - - - - - - - - 1 - - - - - - - - 0.3 - - - - - - 0.5 - - - - - - - - - - 0.15 - - - - - - 0.5 - - - - - - - - diff --git a/jsprit-examples/input/p01 b/jsprit-examples/input/p01 deleted file mode 100644 index 591575719..000000000 --- a/jsprit-examples/input/p01 +++ /dev/null @@ -1,59 +0,0 @@ -2 4 50 4 -0 80 -0 80 -0 80 -0 80 - 1 37 52 0 7 1 4 1 2 4 8 - 2 49 49 0 30 1 4 1 2 4 8 - 3 52 64 0 16 1 4 1 2 4 8 - 4 20 26 0 9 1 4 1 2 4 8 - 5 40 30 0 21 1 4 1 2 4 8 - 6 21 47 0 15 1 4 1 2 4 8 - 7 17 63 0 19 1 4 1 2 4 8 - 8 31 62 0 23 1 4 1 2 4 8 - 9 52 33 0 11 1 4 1 2 4 8 -10 51 21 0 5 1 4 1 2 4 8 -11 42 41 0 19 1 4 1 2 4 8 -12 31 32 0 29 1 4 1 2 4 8 -13 5 25 0 23 1 4 1 2 4 8 -14 12 42 0 21 1 4 1 2 4 8 -15 36 16 0 10 1 4 1 2 4 8 -16 52 41 0 15 1 4 1 2 4 8 -17 27 23 0 3 1 4 1 2 4 8 -18 17 33 0 41 1 4 1 2 4 8 -19 13 13 0 9 1 4 1 2 4 8 -20 57 58 0 28 1 4 1 2 4 8 -21 62 42 0 8 1 4 1 2 4 8 -22 42 57 0 8 1 4 1 2 4 8 -23 16 57 0 16 1 4 1 2 4 8 -24 8 52 0 10 1 4 1 2 4 8 -25 7 38 0 28 1 4 1 2 4 8 -26 27 68 0 7 1 4 1 2 4 8 -27 30 48 0 15 1 4 1 2 4 8 -28 43 67 0 14 1 4 1 2 4 8 -29 58 48 0 6 1 4 1 2 4 8 -30 58 27 0 19 1 4 1 2 4 8 -31 37 69 0 11 1 4 1 2 4 8 -32 38 46 0 12 1 4 1 2 4 8 -33 46 10 0 23 1 4 1 2 4 8 -34 61 33 0 26 1 4 1 2 4 8 -35 62 63 0 17 1 4 1 2 4 8 -36 63 69 0 6 1 4 1 2 4 8 -37 32 22 0 9 1 4 1 2 4 8 -38 45 35 0 15 1 4 1 2 4 8 -39 59 15 0 14 1 4 1 2 4 8 -40 5 6 0 7 1 4 1 2 4 8 -41 10 17 0 27 1 4 1 2 4 8 -42 21 10 0 13 1 4 1 2 4 8 -43 5 64 0 11 1 4 1 2 4 8 -44 30 15 0 16 1 4 1 2 4 8 -45 39 10 0 10 1 4 1 2 4 8 -46 32 39 0 5 1 4 1 2 4 8 -47 25 32 0 25 1 4 1 2 4 8 -48 25 55 0 17 1 4 1 2 4 8 -49 48 28 0 18 1 4 1 2 4 8 -50 56 37 0 10 1 4 1 2 4 8 -51 20 20 0 0 0 0 -52 30 40 0 0 0 0 -53 50 30 0 0 0 0 -54 60 50 0 0 0 0 diff --git a/jsprit-examples/input/p01_mod b/jsprit-examples/input/p01_mod deleted file mode 100644 index f7126b874..000000000 --- a/jsprit-examples/input/p01_mod +++ /dev/null @@ -1,56 +0,0 @@ -2 4 50 4 -0 2000 - 1 37 52 0 7 1 4 1 2 4 8 - 2 49 49 0 30 1 4 1 2 4 8 - 3 52 64 0 16 1 4 1 2 4 8 - 4 20 26 0 9 1 4 1 2 4 8 - 5 40 30 0 21 1 4 1 2 4 8 - 6 21 47 0 15 1 4 1 2 4 8 - 7 17 63 0 19 1 4 1 2 4 8 - 8 31 62 0 23 1 4 1 2 4 8 - 9 52 33 0 11 1 4 1 2 4 8 -10 51 21 0 5 1 4 1 2 4 8 -11 42 41 0 19 1 4 1 2 4 8 -12 31 32 0 29 1 4 1 2 4 8 -13 5 25 0 23 1 4 1 2 4 8 -14 12 42 0 21 1 4 1 2 4 8 -15 36 16 0 10 1 4 1 2 4 8 -16 52 41 0 15 1 4 1 2 4 8 -17 27 23 0 3 1 4 1 2 4 8 -18 17 33 0 41 1 4 1 2 4 8 -19 13 13 0 9 1 4 1 2 4 8 -20 57 58 0 28 1 4 1 2 4 8 -21 62 42 0 8 1 4 1 2 4 8 -22 42 57 0 8 1 4 1 2 4 8 -23 16 57 0 16 1 4 1 2 4 8 -24 8 52 0 10 1 4 1 2 4 8 -25 7 38 0 28 1 4 1 2 4 8 -26 27 68 0 7 1 4 1 2 4 8 -27 30 48 0 15 1 4 1 2 4 8 -28 43 67 0 14 1 4 1 2 4 8 -29 58 48 0 6 1 4 1 2 4 8 -30 58 27 0 19 1 4 1 2 4 8 -31 37 69 0 11 1 4 1 2 4 8 -32 38 46 0 12 1 4 1 2 4 8 -33 46 10 0 23 1 4 1 2 4 8 -34 61 33 0 26 1 4 1 2 4 8 -35 62 63 0 17 1 4 1 2 4 8 -36 63 69 0 6 1 4 1 2 4 8 -37 32 22 0 9 1 4 1 2 4 8 -38 45 35 0 15 1 4 1 2 4 8 -39 59 15 0 14 1 4 1 2 4 8 -40 5 6 0 7 1 4 1 2 4 8 -41 10 17 0 27 1 4 1 2 4 8 -42 21 10 0 13 1 4 1 2 4 8 -43 5 64 0 11 1 4 1 2 4 8 -44 30 15 0 16 1 4 1 2 4 8 -45 39 10 0 10 1 4 1 2 4 8 -46 32 39 0 5 1 4 1 2 4 8 -47 25 32 0 25 1 4 1 2 4 8 -48 25 55 0 17 1 4 1 2 4 8 -49 48 28 0 18 1 4 1 2 4 8 -50 56 37 0 10 1 4 1 2 4 8 -51 20 20 0 0 0 0 -52 30 40 0 0 0 0 -53 50 30 0 0 0 0 -54 60 50 0 0 0 0 diff --git a/jsprit-examples/input/p08 b/jsprit-examples/input/p08 deleted file mode 100644 index a2ab1f28c..000000000 --- a/jsprit-examples/input/p08 +++ /dev/null @@ -1,254 +0,0 @@ -2 14 249 2 -310 500 -310 500 - 1 -99 -97 0 6 1 2 1 2 - 2 -59 50 0 72 1 2 1 2 - 3 0 14 0 93 1 2 1 2 - 4 -17 -66 0 28 1 2 1 2 - 5 -69 -19 0 5 1 2 1 2 - 6 31 12 0 43 1 2 1 2 - 7 5 -41 0 1 1 2 1 2 - 8 -12 10 0 36 1 2 1 2 - 9 -64 70 0 53 1 2 1 2 - 10 -12 85 0 63 1 2 1 2 - 11 -18 64 0 25 1 2 1 2 - 12 -77 -16 0 50 1 2 1 2 - 13 -53 88 0 57 1 2 1 2 - 14 83 -24 0 1 1 2 1 2 - 15 24 41 0 66 1 2 1 2 - 16 17 21 0 37 1 2 1 2 - 17 42 96 0 51 1 2 1 2 - 18 -65 0 0 47 1 2 1 2 - 19 -47 -26 0 88 1 2 1 2 - 20 85 36 0 75 1 2 1 2 - 21 -35 -54 0 48 1 2 1 2 - 22 54 -21 0 40 1 2 1 2 - 23 64 -17 0 8 1 2 1 2 - 24 55 89 0 69 1 2 1 2 - 25 17 -25 0 93 1 2 1 2 - 26 -61 66 0 29 1 2 1 2 - 27 -61 26 0 5 1 2 1 2 - 28 17 -72 0 53 1 2 1 2 - 29 79 38 0 8 1 2 1 2 - 30 -62 -2 0 24 1 2 1 2 - 31 -90 -68 0 53 1 2 1 2 - 32 52 66 0 13 1 2 1 2 - 33 -54 -50 0 47 1 2 1 2 - 34 8 -84 0 57 1 2 1 2 - 35 37 -90 0 9 1 2 1 2 - 36 -83 49 0 74 1 2 1 2 - 37 35 -1 0 83 1 2 1 2 - 38 7 59 0 96 1 2 1 2 - 39 12 48 0 42 1 2 1 2 - 40 57 95 0 80 1 2 1 2 - 41 92 28 0 22 1 2 1 2 - 42 -3 97 0 56 1 2 1 2 - 43 -7 52 0 43 1 2 1 2 - 44 42 -15 0 12 1 2 1 2 - 45 77 -43 0 73 1 2 1 2 - 46 59 -49 0 32 1 2 1 2 - 47 25 91 0 8 1 2 1 2 - 48 69 -19 0 79 1 2 1 2 - 49 -82 -14 0 79 1 2 1 2 - 50 74 -70 0 4 1 2 1 2 - 51 69 59 0 14 1 2 1 2 - 52 29 33 0 17 1 2 1 2 - 53 -97 9 0 19 1 2 1 2 - 54 -58 9 0 44 1 2 1 2 - 55 28 93 0 5 1 2 1 2 - 56 7 73 0 37 1 2 1 2 - 57 -28 73 0 100 1 2 1 2 - 58 -76 55 0 62 1 2 1 2 - 59 41 42 0 90 1 2 1 2 - 60 92 40 0 57 1 2 1 2 - 61 -84 -29 0 44 1 2 1 2 - 62 -12 42 0 37 1 2 1 2 - 63 51 -45 0 80 1 2 1 2 - 64 -37 46 0 60 1 2 1 2 - 65 -97 35 0 95 1 2 1 2 - 66 14 89 0 56 1 2 1 2 - 67 60 58 0 56 1 2 1 2 - 68 -63 -75 0 9 1 2 1 2 - 69 -18 34 0 39 1 2 1 2 - 70 -46 -82 0 15 1 2 1 2 - 71 -86 -79 0 4 1 2 1 2 - 72 -43 -30 0 58 1 2 1 2 - 73 -44 7 0 73 1 2 1 2 - 74 -3 -20 0 5 1 2 1 2 - 75 36 41 0 12 1 2 1 2 - 76 -30 -94 0 3 1 2 1 2 - 77 79 -62 0 8 1 2 1 2 - 78 51 70 0 31 1 2 1 2 - 79 -61 -26 0 48 1 2 1 2 - 80 6 94 0 3 1 2 1 2 - 81 -19 -62 0 52 1 2 1 2 - 82 -20 51 0 99 1 2 1 2 - 83 -81 37 0 29 1 2 1 2 - 84 7 31 0 12 1 2 1 2 - 85 52 12 0 50 1 2 1 2 - 86 83 -91 0 98 1 2 1 2 - 87 -7 -92 0 4 1 2 1 2 - 88 82 -74 0 56 1 2 1 2 - 89 -70 85 0 24 1 2 1 2 - 90 -83 -30 0 33 1 2 1 2 - 91 71 -61 0 45 1 2 1 2 - 92 85 11 0 98 1 2 1 2 - 93 66 -48 0 4 1 2 1 2 - 94 78 -87 0 36 1 2 1 2 - 95 9 -79 0 72 1 2 1 2 - 96 -36 4 0 26 1 2 1 2 - 97 66 39 0 71 1 2 1 2 - 98 92 -17 0 84 1 2 1 2 - 99 -46 -79 0 21 1 2 1 2 -100 -30 -63 0 99 1 2 1 2 -101 -42 63 0 33 1 2 1 2 -102 20 42 0 84 1 2 1 2 -103 15 98 0 74 1 2 1 2 -104 1 -17 0 93 1 2 1 2 -105 64 20 0 25 1 2 1 2 -106 -96 85 0 39 1 2 1 2 -107 93 -29 0 42 1 2 1 2 -108 -40 -84 0 77 1 2 1 2 -109 86 35 0 68 1 2 1 2 -110 91 36 0 50 1 2 1 2 -111 62 -8 0 42 1 2 1 2 -112 -24 4 0 71 1 2 1 2 -113 11 96 0 85 1 2 1 2 -114 -53 62 0 78 1 2 1 2 -115 -28 -71 0 64 1 2 1 2 -116 7 -4 0 5 1 2 1 2 -117 95 -9 0 93 1 2 1 2 -118 -3 17 0 18 1 2 1 2 -119 53 -90 0 38 1 2 1 2 -120 58 -19 0 29 1 2 1 2 -121 -83 84 0 81 1 2 1 2 -122 -1 49 0 4 1 2 1 2 -123 -4 17 0 23 1 2 1 2 -124 -82 -3 0 11 1 2 1 2 -125 -43 47 0 86 1 2 1 2 -126 6 -6 0 2 1 2 1 2 -127 70 99 0 31 1 2 1 2 -128 68 -29 0 54 1 2 1 2 -129 -94 -30 0 87 1 2 1 2 -130 -94 -20 0 17 1 2 1 2 -131 -21 77 0 81 1 2 1 2 -132 64 37 0 72 1 2 1 2 -133 -70 -19 0 10 1 2 1 2 -134 88 65 0 50 1 2 1 2 -135 2 29 0 25 1 2 1 2 -136 33 57 0 71 1 2 1 2 -137 -70 6 0 85 1 2 1 2 -138 -38 -56 0 51 1 2 1 2 -139 -80 -95 0 29 1 2 1 2 -140 -5 -39 0 55 1 2 1 2 -141 8 -22 0 45 1 2 1 2 -142 -61 -76 0 100 1 2 1 2 -143 76 -22 0 38 1 2 1 2 -144 49 -71 0 11 1 2 1 2 -145 -30 -68 0 82 1 2 1 2 -146 1 34 0 50 1 2 1 2 -147 77 79 0 39 1 2 1 2 -148 -58 64 0 6 1 2 1 2 -149 82 -97 0 87 1 2 1 2 -150 -80 55 0 83 1 2 1 2 -151 81 -86 0 22 1 2 1 2 -152 39 -49 0 24 1 2 1 2 -153 -67 72 0 69 1 2 1 2 -154 -25 -89 0 97 1 2 1 2 -155 -44 -95 0 65 1 2 1 2 -156 32 -68 0 97 1 2 1 2 -157 -17 49 0 79 1 2 1 2 -158 93 49 0 79 1 2 1 2 -159 99 81 0 46 1 2 1 2 -160 10 -49 0 52 1 2 1 2 -161 63 -41 0 39 1 2 1 2 -162 38 39 0 94 1 2 1 2 -163 -28 39 0 97 1 2 1 2 -164 -2 -47 0 18 1 2 1 2 -165 38 8 0 3 1 2 1 2 -166 -42 -6 0 23 1 2 1 2 -167 -67 88 0 19 1 2 1 2 -168 19 93 0 40 1 2 1 2 -169 40 27 0 49 1 2 1 2 -170 -61 56 0 96 1 2 1 2 -171 43 33 0 58 1 2 1 2 -172 -18 -39 0 15 1 2 1 2 -173 -69 19 0 21 1 2 1 2 -174 75 -18 0 56 1 2 1 2 -175 31 85 0 67 1 2 1 2 -176 25 58 0 10 1 2 1 2 -177 -16 36 0 36 1 2 1 2 -178 91 15 0 84 1 2 1 2 -179 60 -39 0 59 1 2 1 2 -180 49 -47 0 85 1 2 1 2 -181 42 33 0 60 1 2 1 2 -182 16 -81 0 33 1 2 1 2 -183 -78 53 0 62 1 2 1 2 -184 53 -80 0 70 1 2 1 2 -185 -46 -26 0 79 1 2 1 2 -186 -25 -54 0 98 1 2 1 2 -187 69 -46 0 99 1 2 1 2 -188 0 -78 0 18 1 2 1 2 -189 -84 74 0 55 1 2 1 2 -190 -16 16 0 75 1 2 1 2 -191 -63 -14 0 94 1 2 1 2 -192 51 -77 0 89 1 2 1 2 -193 -39 61 0 13 1 2 1 2 -194 5 97 0 19 1 2 1 2 -195 -55 39 0 19 1 2 1 2 -196 70 -14 0 90 1 2 1 2 -197 0 95 0 35 1 2 1 2 -198 -45 7 0 76 1 2 1 2 -199 38 -24 0 3 1 2 1 2 -200 50 -37 0 11 1 2 1 2 -201 59 71 0 98 1 2 1 2 -202 -73 -96 0 92 1 2 1 2 -203 -29 72 0 1 1 2 1 2 -204 -47 12 0 2 1 2 1 2 -205 -88 -61 0 63 1 2 1 2 -206 -88 36 0 57 1 2 1 2 -207 -46 -3 0 50 1 2 1 2 -208 26 -37 0 19 1 2 1 2 -209 -39 -67 0 24 1 2 1 2 -210 92 27 0 14 1 2 1 2 -211 -80 -31 0 18 1 2 1 2 -212 93 -50 0 77 1 2 1 2 -213 -20 -5 0 28 1 2 1 2 -214 -22 73 0 72 1 2 1 2 -215 -4 -7 0 49 1 2 1 2 -216 54 -48 0 58 1 2 1 2 -217 -70 39 0 84 1 2 1 2 -218 54 -82 0 58 1 2 1 2 -219 29 41 0 41 1 2 1 2 -220 -87 51 0 98 1 2 1 2 -221 -96 -36 0 77 1 2 1 2 -222 49 8 0 57 1 2 1 2 -223 -5 54 0 39 1 2 1 2 -224 -26 43 0 99 1 2 1 2 -225 -11 60 0 83 1 2 1 2 -226 40 61 0 54 1 2 1 2 -227 82 35 0 86 1 2 1 2 -228 -92 12 0 2 1 2 1 2 -229 -93 -86 0 14 1 2 1 2 -230 -66 63 0 42 1 2 1 2 -231 -72 -87 0 14 1 2 1 2 -232 -57 -84 0 55 1 2 1 2 -233 23 52 0 2 1 2 1 2 -234 -56 -62 0 18 1 2 1 2 -235 -19 59 0 17 1 2 1 2 -236 63 -14 0 22 1 2 1 2 -237 -13 38 0 28 1 2 1 2 -238 -19 87 0 3 1 2 1 2 -239 44 -84 0 96 1 2 1 2 -240 98 -17 0 53 1 2 1 2 -241 -16 62 0 15 1 2 1 2 -242 3 66 0 36 1 2 1 2 -243 26 22 0 98 1 2 1 2 -244 -38 -81 0 78 1 2 1 2 -245 70 -80 0 92 1 2 1 2 -246 17 -35 0 65 1 2 1 2 -247 96 -83 0 64 1 2 1 2 -248 -77 80 0 43 1 2 1 2 -249 -14 44 0 50 1 2 1 2 -250 -33 33 0 0 0 0 -251 33 -33 0 0 0 0 diff --git a/jsprit-examples/input/p08.res b/jsprit-examples/input/p08.res deleted file mode 100644 index 03301944e..000000000 --- a/jsprit-examples/input/p08.res +++ /dev/null @@ -1,26 +0,0 @@ -4437.68 -1 1 273.48 494 0 237 122 233 176 136 78 24 127 40 17 175 55 47 56 0 -1 2 133.14 473 0 73 198 207 19 185 72 166 96 0 -1 3 138.48 496 0 69 146 135 84 15 102 39 38 223 43 0 -1 4 115.54 496 0 125 101 203 57 131 214 11 241 225 0 -1 5 188.96 487 0 235 238 10 42 197 194 80 113 103 168 66 242 0 -1 6 191.58 488 0 148 26 9 153 189 106 121 248 89 167 13 193 0 -1 7 59.02 497 0 177 62 249 157 82 224 163 0 -1 8 122.55 495 0 114 230 58 150 183 170 2 0 -1 9 162.05 475 0 27 173 137 124 49 12 133 5 191 30 18 54 0 -1 10 281.96 482 0 195 228 53 130 129 221 31 205 61 90 211 79 204 0 -1 11 147.83 497 0 217 83 206 65 220 36 64 0 -1 12 148.28 493 0 190 8 123 118 3 116 126 104 215 213 112 0 -2 1 209.02 498 0 199 222 85 132 97 51 67 169 6 37 0 -2 2 175.08 498 0 165 181 171 59 162 219 52 243 16 0 -2 3 97.66 482 0 180 63 46 93 187 45 161 179 200 0 -2 4 165.62 486 0 7 140 186 21 138 100 145 81 0 -2 5 309.78 491 0 164 209 142 68 231 71 229 1 139 202 232 70 115 4 208 0 -2 6 266.60 493 0 188 87 154 76 155 108 244 99 234 33 172 74 141 0 -2 7 138.41 425 0 28 182 34 95 160 246 25 0 -2 8 185.69 459 0 50 88 247 149 86 151 94 245 0 -2 9 109.58 412 0 22 120 236 111 196 174 48 128 0 -2 10 187.86 499 0 143 14 98 117 240 107 212 77 91 216 0 -2 11 139.09 492 0 152 144 192 184 218 119 239 35 156 0 -2 12 193.07 500 0 23 92 178 210 41 109 20 227 29 105 44 0 -2 13 297.34 498 0 110 60 158 134 159 147 201 32 226 75 0 diff --git a/jsprit-examples/input/p11 b/jsprit-examples/input/p11 deleted file mode 100644 index 01f6c931a..000000000 --- a/jsprit-examples/input/p11 +++ /dev/null @@ -1,260 +0,0 @@ -2 6 249 5 -310 500 -310 500 -310 500 -310 500 -310 500 - 1 -99 -97 0 6 1 5 1 2 4 8 16 - 2 -59 50 0 72 1 5 1 2 4 8 16 - 3 0 14 0 93 1 5 1 2 4 8 16 - 4 -17 -66 0 28 1 5 1 2 4 8 16 - 5 -69 -19 0 5 1 5 1 2 4 8 16 - 6 31 12 0 43 1 5 1 2 4 8 16 - 7 5 -41 0 1 1 5 1 2 4 8 16 - 8 -12 10 0 36 1 5 1 2 4 8 16 - 9 -64 70 0 53 1 5 1 2 4 8 16 - 10 -12 85 0 63 1 5 1 2 4 8 16 - 11 -18 64 0 25 1 5 1 2 4 8 16 - 12 -77 -16 0 50 1 5 1 2 4 8 16 - 13 -53 88 0 57 1 5 1 2 4 8 16 - 14 83 -24 0 1 1 5 1 2 4 8 16 - 15 24 41 0 66 1 5 1 2 4 8 16 - 16 17 21 0 37 1 5 1 2 4 8 16 - 17 42 96 0 51 1 5 1 2 4 8 16 - 18 -65 0 0 47 1 5 1 2 4 8 16 - 19 -47 -26 0 88 1 5 1 2 4 8 16 - 20 85 36 0 75 1 5 1 2 4 8 16 - 21 -35 -54 0 48 1 5 1 2 4 8 16 - 22 54 -21 0 40 1 5 1 2 4 8 16 - 23 64 -17 0 8 1 5 1 2 4 8 16 - 24 55 89 0 69 1 5 1 2 4 8 16 - 25 17 -25 0 93 1 5 1 2 4 8 16 - 26 -61 66 0 29 1 5 1 2 4 8 16 - 27 -61 26 0 5 1 5 1 2 4 8 16 - 28 17 -72 0 53 1 5 1 2 4 8 16 - 29 79 38 0 8 1 5 1 2 4 8 16 - 30 -62 -2 0 24 1 5 1 2 4 8 16 - 31 -90 -68 0 53 1 5 1 2 4 8 16 - 32 52 66 0 13 1 5 1 2 4 8 16 - 33 -54 -50 0 47 1 5 1 2 4 8 16 - 34 8 -84 0 57 1 5 1 2 4 8 16 - 35 37 -90 0 9 1 5 1 2 4 8 16 - 36 -83 49 0 74 1 5 1 2 4 8 16 - 37 35 -1 0 83 1 5 1 2 4 8 16 - 38 7 59 0 96 1 5 1 2 4 8 16 - 39 12 48 0 42 1 5 1 2 4 8 16 - 40 57 95 0 80 1 5 1 2 4 8 16 - 41 92 28 0 22 1 5 1 2 4 8 16 - 42 -3 97 0 56 1 5 1 2 4 8 16 - 43 -7 52 0 43 1 5 1 2 4 8 16 - 44 42 -15 0 12 1 5 1 2 4 8 16 - 45 77 -43 0 73 1 5 1 2 4 8 16 - 46 59 -49 0 32 1 5 1 2 4 8 16 - 47 25 91 0 8 1 5 1 2 4 8 16 - 48 69 -19 0 79 1 5 1 2 4 8 16 - 49 -82 -14 0 79 1 5 1 2 4 8 16 - 50 74 -70 0 4 1 5 1 2 4 8 16 - 51 69 59 0 14 1 5 1 2 4 8 16 - 52 29 33 0 17 1 5 1 2 4 8 16 - 53 -97 9 0 19 1 5 1 2 4 8 16 - 54 -58 9 0 44 1 5 1 2 4 8 16 - 55 28 93 0 5 1 5 1 2 4 8 16 - 56 7 73 0 37 1 5 1 2 4 8 16 - 57 -28 73 0 100 1 5 1 2 4 8 16 - 58 -76 55 0 62 1 5 1 2 4 8 16 - 59 41 42 0 90 1 5 1 2 4 8 16 - 60 92 40 0 57 1 5 1 2 4 8 16 - 61 -84 -29 0 44 1 5 1 2 4 8 16 - 62 -12 42 0 37 1 5 1 2 4 8 16 - 63 51 -45 0 80 1 5 1 2 4 8 16 - 64 -37 46 0 60 1 5 1 2 4 8 16 - 65 -97 35 0 95 1 5 1 2 4 8 16 - 66 14 89 0 56 1 5 1 2 4 8 16 - 67 60 58 0 56 1 5 1 2 4 8 16 - 68 -63 -75 0 9 1 5 1 2 4 8 16 - 69 -18 34 0 39 1 5 1 2 4 8 16 - 70 -46 -82 0 15 1 5 1 2 4 8 16 - 71 -86 -79 0 4 1 5 1 2 4 8 16 - 72 -43 -30 0 58 1 5 1 2 4 8 16 - 73 -44 7 0 73 1 5 1 2 4 8 16 - 74 -3 -20 0 5 1 5 1 2 4 8 16 - 75 36 41 0 12 1 5 1 2 4 8 16 - 76 -30 -94 0 3 1 5 1 2 4 8 16 - 77 79 -62 0 8 1 5 1 2 4 8 16 - 78 51 70 0 31 1 5 1 2 4 8 16 - 79 -61 -26 0 48 1 5 1 2 4 8 16 - 80 6 94 0 3 1 5 1 2 4 8 16 - 81 -19 -62 0 52 1 5 1 2 4 8 16 - 82 -20 51 0 99 1 5 1 2 4 8 16 - 83 -81 37 0 29 1 5 1 2 4 8 16 - 84 7 31 0 12 1 5 1 2 4 8 16 - 85 52 12 0 50 1 5 1 2 4 8 16 - 86 83 -91 0 98 1 5 1 2 4 8 16 - 87 -7 -92 0 4 1 5 1 2 4 8 16 - 88 82 -74 0 56 1 5 1 2 4 8 16 - 89 -70 85 0 24 1 5 1 2 4 8 16 - 90 -83 -30 0 33 1 5 1 2 4 8 16 - 91 71 -61 0 45 1 5 1 2 4 8 16 - 92 85 11 0 98 1 5 1 2 4 8 16 - 93 66 -48 0 4 1 5 1 2 4 8 16 - 94 78 -87 0 36 1 5 1 2 4 8 16 - 95 9 -79 0 72 1 5 1 2 4 8 16 - 96 -36 4 0 26 1 5 1 2 4 8 16 - 97 66 39 0 71 1 5 1 2 4 8 16 - 98 92 -17 0 84 1 5 1 2 4 8 16 - 99 -46 -79 0 21 1 5 1 2 4 8 16 -100 -30 -63 0 99 1 5 1 2 4 8 16 -101 -42 63 0 33 1 5 1 2 4 8 16 -102 20 42 0 84 1 5 1 2 4 8 16 -103 15 98 0 74 1 5 1 2 4 8 16 -104 1 -17 0 93 1 5 1 2 4 8 16 -105 64 20 0 25 1 5 1 2 4 8 16 -106 -96 85 0 39 1 5 1 2 4 8 16 -107 93 -29 0 42 1 5 1 2 4 8 16 -108 -40 -84 0 77 1 5 1 2 4 8 16 -109 86 35 0 68 1 5 1 2 4 8 16 -110 91 36 0 50 1 5 1 2 4 8 16 -111 62 -8 0 42 1 5 1 2 4 8 16 -112 -24 4 0 71 1 5 1 2 4 8 16 -113 11 96 0 85 1 5 1 2 4 8 16 -114 -53 62 0 78 1 5 1 2 4 8 16 -115 -28 -71 0 64 1 5 1 2 4 8 16 -116 7 -4 0 5 1 5 1 2 4 8 16 -117 95 -9 0 93 1 5 1 2 4 8 16 -118 -3 17 0 18 1 5 1 2 4 8 16 -119 53 -90 0 38 1 5 1 2 4 8 16 -120 58 -19 0 29 1 5 1 2 4 8 16 -121 -83 84 0 81 1 5 1 2 4 8 16 -122 -1 49 0 4 1 5 1 2 4 8 16 -123 -4 17 0 23 1 5 1 2 4 8 16 -124 -82 -3 0 11 1 5 1 2 4 8 16 -125 -43 47 0 86 1 5 1 2 4 8 16 -126 6 -6 0 2 1 5 1 2 4 8 16 -127 70 99 0 31 1 5 1 2 4 8 16 -128 68 -29 0 54 1 5 1 2 4 8 16 -129 -94 -30 0 87 1 5 1 2 4 8 16 -130 -94 -20 0 17 1 5 1 2 4 8 16 -131 -21 77 0 81 1 5 1 2 4 8 16 -132 64 37 0 72 1 5 1 2 4 8 16 -133 -70 -19 0 10 1 5 1 2 4 8 16 -134 88 65 0 50 1 5 1 2 4 8 16 -135 2 29 0 25 1 5 1 2 4 8 16 -136 33 57 0 71 1 5 1 2 4 8 16 -137 -70 6 0 85 1 5 1 2 4 8 16 -138 -38 -56 0 51 1 5 1 2 4 8 16 -139 -80 -95 0 29 1 5 1 2 4 8 16 -140 -5 -39 0 55 1 5 1 2 4 8 16 -141 8 -22 0 45 1 5 1 2 4 8 16 -142 -61 -76 0 100 1 5 1 2 4 8 16 -143 76 -22 0 38 1 5 1 2 4 8 16 -144 49 -71 0 11 1 5 1 2 4 8 16 -145 -30 -68 0 82 1 5 1 2 4 8 16 -146 1 34 0 50 1 5 1 2 4 8 16 -147 77 79 0 39 1 5 1 2 4 8 16 -148 -58 64 0 6 1 5 1 2 4 8 16 -149 82 -97 0 87 1 5 1 2 4 8 16 -150 -80 55 0 83 1 5 1 2 4 8 16 -151 81 -86 0 22 1 5 1 2 4 8 16 -152 39 -49 0 24 1 5 1 2 4 8 16 -153 -67 72 0 69 1 5 1 2 4 8 16 -154 -25 -89 0 97 1 5 1 2 4 8 16 -155 -44 -95 0 65 1 5 1 2 4 8 16 -156 32 -68 0 97 1 5 1 2 4 8 16 -157 -17 49 0 79 1 5 1 2 4 8 16 -158 93 49 0 79 1 5 1 2 4 8 16 -159 99 81 0 46 1 5 1 2 4 8 16 -160 10 -49 0 52 1 5 1 2 4 8 16 -161 63 -41 0 39 1 5 1 2 4 8 16 -162 38 39 0 94 1 5 1 2 4 8 16 -163 -28 39 0 97 1 5 1 2 4 8 16 -164 -2 -47 0 18 1 5 1 2 4 8 16 -165 38 8 0 3 1 5 1 2 4 8 16 -166 -42 -6 0 23 1 5 1 2 4 8 16 -167 -67 88 0 19 1 5 1 2 4 8 16 -168 19 93 0 40 1 5 1 2 4 8 16 -169 40 27 0 49 1 5 1 2 4 8 16 -170 -61 56 0 96 1 5 1 2 4 8 16 -171 43 33 0 58 1 5 1 2 4 8 16 -172 -18 -39 0 15 1 5 1 2 4 8 16 -173 -69 19 0 21 1 5 1 2 4 8 16 -174 75 -18 0 56 1 5 1 2 4 8 16 -175 31 85 0 67 1 5 1 2 4 8 16 -176 25 58 0 10 1 5 1 2 4 8 16 -177 -16 36 0 36 1 5 1 2 4 8 16 -178 91 15 0 84 1 5 1 2 4 8 16 -179 60 -39 0 59 1 5 1 2 4 8 16 -180 49 -47 0 85 1 5 1 2 4 8 16 -181 42 33 0 60 1 5 1 2 4 8 16 -182 16 -81 0 33 1 5 1 2 4 8 16 -183 -78 53 0 62 1 5 1 2 4 8 16 -184 53 -80 0 70 1 5 1 2 4 8 16 -185 -46 -26 0 79 1 5 1 2 4 8 16 -186 -25 -54 0 98 1 5 1 2 4 8 16 -187 69 -46 0 99 1 5 1 2 4 8 16 -188 0 -78 0 18 1 5 1 2 4 8 16 -189 -84 74 0 55 1 5 1 2 4 8 16 -190 -16 16 0 75 1 5 1 2 4 8 16 -191 -63 -14 0 94 1 5 1 2 4 8 16 -192 51 -77 0 89 1 5 1 2 4 8 16 -193 -39 61 0 13 1 5 1 2 4 8 16 -194 5 97 0 19 1 5 1 2 4 8 16 -195 -55 39 0 19 1 5 1 2 4 8 16 -196 70 -14 0 90 1 5 1 2 4 8 16 -197 0 95 0 35 1 5 1 2 4 8 16 -198 -45 7 0 76 1 5 1 2 4 8 16 -199 38 -24 0 3 1 5 1 2 4 8 16 -200 50 -37 0 11 1 5 1 2 4 8 16 -201 59 71 0 98 1 5 1 2 4 8 16 -202 -73 -96 0 92 1 5 1 2 4 8 16 -203 -29 72 0 1 1 5 1 2 4 8 16 -204 -47 12 0 2 1 5 1 2 4 8 16 -205 -88 -61 0 63 1 5 1 2 4 8 16 -206 -88 36 0 57 1 5 1 2 4 8 16 -207 -46 -3 0 50 1 5 1 2 4 8 16 -208 26 -37 0 19 1 5 1 2 4 8 16 -209 -39 -67 0 24 1 5 1 2 4 8 16 -210 92 27 0 14 1 5 1 2 4 8 16 -211 -80 -31 0 18 1 5 1 2 4 8 16 -212 93 -50 0 77 1 5 1 2 4 8 16 -213 -20 -5 0 28 1 5 1 2 4 8 16 -214 -22 73 0 72 1 5 1 2 4 8 16 -215 -4 -7 0 49 1 5 1 2 4 8 16 -216 54 -48 0 58 1 5 1 2 4 8 16 -217 -70 39 0 84 1 5 1 2 4 8 16 -218 54 -82 0 58 1 5 1 2 4 8 16 -219 29 41 0 41 1 5 1 2 4 8 16 -220 -87 51 0 98 1 5 1 2 4 8 16 -221 -96 -36 0 77 1 5 1 2 4 8 16 -222 49 8 0 57 1 5 1 2 4 8 16 -223 -5 54 0 39 1 5 1 2 4 8 16 -224 -26 43 0 99 1 5 1 2 4 8 16 -225 -11 60 0 83 1 5 1 2 4 8 16 -226 40 61 0 54 1 5 1 2 4 8 16 -227 82 35 0 86 1 5 1 2 4 8 16 -228 -92 12 0 2 1 5 1 2 4 8 16 -229 -93 -86 0 14 1 5 1 2 4 8 16 -230 -66 63 0 42 1 5 1 2 4 8 16 -231 -72 -87 0 14 1 5 1 2 4 8 16 -232 -57 -84 0 55 1 5 1 2 4 8 16 -233 23 52 0 2 1 5 1 2 4 8 16 -234 -56 -62 0 18 1 5 1 2 4 8 16 -235 -19 59 0 17 1 5 1 2 4 8 16 -236 63 -14 0 22 1 5 1 2 4 8 16 -237 -13 38 0 28 1 5 1 2 4 8 16 -238 -19 87 0 3 1 5 1 2 4 8 16 -239 44 -84 0 96 1 5 1 2 4 8 16 -240 98 -17 0 53 1 5 1 2 4 8 16 -241 -16 62 0 15 1 5 1 2 4 8 16 -242 3 66 0 36 1 5 1 2 4 8 16 -243 26 22 0 98 1 5 1 2 4 8 16 -244 -38 -81 0 78 1 5 1 2 4 8 16 -245 70 -80 0 92 1 5 1 2 4 8 16 -246 17 -35 0 65 1 5 1 2 4 8 16 -247 96 -83 0 64 1 5 1 2 4 8 16 -248 -77 80 0 43 1 5 1 2 4 8 16 -249 -14 44 0 50 1 5 1 2 4 8 16 -250 70 0 0 0 0 0 -251 40 80 0 0 0 0 -252 40 -80 0 0 0 0 -253 -60 20 0 0 0 0 -254 -60 -20 0 0 0 0 diff --git a/jsprit-examples/input/pd_christophides_vrpnc1_vcap50.xml b/jsprit-examples/input/pd_christophides_vrpnc1_vcap50.xml deleted file mode 100644 index d2cb59822..000000000 --- a/jsprit-examples/input/pd_christophides_vrpnc1_vcap50.xml +++ /dev/null @@ -1,654 +0,0 @@ - - - - - - INFINITE - HOMOGENEOUS - - - - christophidesVehicle - christophidesType - - [x=30.0][y=40.0] - - - - 0.0 - 999999.0 - - - - - - christophidesType - 50 - - 0.0 - 1.0 - - - - - - - [x=62.0][y=63.0] - - 17 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=63.0][y=69.0] - - 6 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=46.0][y=10.0] - - 23 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=61.0][y=33.0] - - 26 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=59.0][y=15.0] - - 14 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=32.0][y=22.0] - - 9 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=45.0][y=35.0] - - 15 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=5.0][y=64.0] - - 11 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=21.0][y=10.0] - - 13 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=10.0][y=17.0] - - 27 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=5.0][y=6.0] - - 7 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=42.0][y=57.0] - - 8 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=16.0][y=57.0] - - 16 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=8.0][y=52.0] - - 10 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=7.0][y=38.0] - - 28 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=27.0][y=68.0] - - 7 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=30.0][y=48.0] - - 15 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=43.0][y=67.0] - - 14 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=58.0][y=48.0] - - 6 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=52.0][y=64.0] - - 16 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=49.0][y=49.0] - - 30 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=37.0][y=52.0] - - 7 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=17.0][y=63.0] - - 19 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=58.0][y=27.0] - - 19 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=21.0][y=47.0] - - 15 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=40.0][y=30.0] - - 21 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=38.0][y=46.0] - - 12 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=20.0][y=26.0] - - 9 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=37.0][y=69.0] - - 11 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=52.0][y=33.0] - - 11 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=31.0][y=62.0] - - 23 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=13.0][y=13.0] - - 9 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=27.0][y=23.0] - - 3 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=17.0][y=33.0] - - 41 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=36.0][y=16.0] - - 10 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=52.0][y=41.0] - - 15 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=5.0][y=25.0] - - 23 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=12.0][y=42.0] - - 21 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=42.0][y=41.0] - - 19 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=31.0][y=32.0] - - 29 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=62.0][y=42.0] - - 8 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=57.0][y=58.0] - - 28 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=48.0][y=28.0] - - 18 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=25.0][y=55.0] - - 17 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=39.0][y=10.0] - - 10 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=30.0][y=15.0] - - 16 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=25.0][y=32.0] - - 25 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=32.0][y=39.0] - - 5 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=51.0][y=21.0] - - 5 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=56.0][y=37.0] - - 10 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - diff --git a/jsprit-examples/input/pickups_and_deliveries_solomon_c101.xml b/jsprit-examples/input/pickups_and_deliveries_solomon_c101.xml deleted file mode 100644 index 7760613ad..000000000 --- a/jsprit-examples/input/pickups_and_deliveries_solomon_c101.xml +++ /dev/null @@ -1,1254 +0,0 @@ - - - - - - INFINITE - HOMOGENEOUS - - - - solomonVehicle - solomonType - - 0 - - - - 0.0 - 1236.0 - - - - - - solomonType - 200 - - 0.0 - 1.0 - - - - - - - [x=5.0][y=35.0] - - 10 - 90.0 - - - 283.0 - 344.0 - - - - - [x=5.0][y=45.0] - - 10 - 90.0 - - - 665.0 - 716.0 - - - - - [x=8.0][y=40.0] - - 40 - 90.0 - - - 87.0 - 158.0 - - - - - [x=8.0][y=45.0] - - 20 - 90.0 - - - 751.0 - 816.0 - - - - - [x=0.0][y=45.0] - - 20 - 90.0 - - - 567.0 - 624.0 - - - - - [x=2.0][y=40.0] - - 20 - 90.0 - - - 383.0 - 434.0 - - - - - [x=0.0][y=40.0] - - 30 - 90.0 - - - 479.0 - 522.0 - - - - - [x=33.0][y=35.0] - - 10 - 90.0 - - - 16.0 - 80.0 - - - - - [x=33.0][y=32.0] - - 20 - 90.0 - - - 68.0 - 149.0 - - - - - [x=35.0][y=32.0] - - 10 - 90.0 - - - 166.0 - 235.0 - - - - - [x=35.0][y=30.0] - - 10 - 90.0 - - - 264.0 - 321.0 - - - - - [x=28.0][y=52.0] - - 20 - 90.0 - - - 812.0 - 883.0 - - - - - [x=28.0][y=55.0] - - 10 - 90.0 - - - 732.0 - 777.0 - - - - - [x=25.0][y=50.0] - - 10 - 90.0 - - - 65.0 - 144.0 - - - - - [x=25.0][y=52.0] - - 40 - 90.0 - - - 169.0 - 224.0 - - - - - [x=25.0][y=55.0] - - 10 - 90.0 - - - 622.0 - 701.0 - - - - - [x=23.0][y=52.0] - - 10 - 90.0 - - - 261.0 - 316.0 - - - - - [x=23.0][y=55.0] - - 20 - 90.0 - - - 546.0 - 593.0 - - - - - [x=20.0][y=50.0] - - 10 - 90.0 - - - 358.0 - 405.0 - - - - - [x=42.0][y=66.0] - - 10 - 90.0 - - - 65.0 - 146.0 - - - - - [x=45.0][y=70.0] - - 30 - 90.0 - - - 825.0 - 870.0 - - - - - [x=45.0][y=68.0] - - 10 - 90.0 - - - 912.0 - 967.0 - - - - - [x=20.0][y=55.0] - - 10 - 90.0 - - - 449.0 - 504.0 - - - - - [x=40.0][y=66.0] - - 20 - 90.0 - - - 170.0 - 225.0 - - - - - [x=40.0][y=69.0] - - 20 - 90.0 - - - 621.0 - 702.0 - - - - - [x=42.0][y=65.0] - - 10 - 90.0 - - - 15.0 - 67.0 - - - - - [x=10.0][y=40.0] - - 30 - 90.0 - - - 31.0 - 100.0 - - - - - [x=42.0][y=68.0] - - 10 - 90.0 - - - 727.0 - 782.0 - - - - - [x=10.0][y=35.0] - - 20 - 90.0 - - - 200.0 - 237.0 - - - - - [x=38.0][y=70.0] - - 10 - 90.0 - - - 534.0 - 605.0 - - - - - [x=38.0][y=68.0] - - 20 - 90.0 - - - 255.0 - 324.0 - - - - - [x=15.0][y=80.0] - - 10 - 90.0 - - - 278.0 - 345.0 - - - - - [x=18.0][y=75.0] - - 20 - 90.0 - - - 99.0 - 148.0 - - - - - [x=15.0][y=75.0] - - 20 - 90.0 - - - 179.0 - 254.0 - - - - - [x=20.0][y=80.0] - - 40 - 90.0 - - - 384.0 - 429.0 - - - - - [x=20.0][y=85.0] - - 40 - 90.0 - - - 475.0 - 528.0 - - - - - [x=22.0][y=75.0] - - 30 - 90.0 - - - 30.0 - 92.0 - - - - - [x=22.0][y=85.0] - - 10 - 90.0 - - - 567.0 - 620.0 - - - - - [x=35.0][y=69.0] - - 10 - 90.0 - - - 448.0 - 505.0 - - - - - [x=25.0][y=85.0] - - 20 - 90.0 - - - 652.0 - 721.0 - - - - - [x=30.0][y=52.0] - - 20 - 90.0 - - - 914.0 - 965.0 - - - - - [x=30.0][y=50.0] - - 10 - 90.0 - - - 10.0 - 73.0 - - - - - [x=55.0][y=80.0] - - 10 - 90.0 - - - 743.0 - 820.0 - - - - - [x=55.0][y=85.0] - - 20 - 90.0 - - - 647.0 - 726.0 - - - - - [x=58.0][y=75.0] - - 20 - 90.0 - - - 30.0 - 84.0 - - - - - [x=60.0][y=85.0] - - 30 - 90.0 - - - 561.0 - 622.0 - - - - - [x=60.0][y=80.0] - - 10 - 90.0 - - - 95.0 - 156.0 - - - - - [x=62.0][y=80.0] - - 30 - 90.0 - - - 196.0 - 239.0 - - - - - [x=65.0][y=82.0] - - 10 - 90.0 - - - 285.0 - 336.0 - - - - - [x=65.0][y=85.0] - - 40 - 90.0 - - - 475.0 - 518.0 - - - - - [x=67.0][y=85.0] - - 20 - 90.0 - - - 368.0 - 441.0 - - - - - [x=60.0][y=60.0] - - 10 - 90.0 - - - 836.0 - 889.0 - - - - - [x=60.0][y=55.0] - - 10 - 90.0 - - - 20.0 - 84.0 - - - - - [x=35.0][y=66.0] - - 10 - 90.0 - - - 357.0 - 410.0 - - - - - [x=65.0][y=60.0] - - 30 - 90.0 - - - 645.0 - 708.0 - - - - - [x=63.0][y=58.0] - - 10 - 90.0 - - - 737.0 - 802.0 - - - - - [x=87.0][y=30.0] - - 10 - 90.0 - - - 668.0 - 731.0 - - - - - [x=88.0][y=35.0] - - 20 - 90.0 - - - 109.0 - 170.0 - - - - - [x=88.0][y=30.0] - - 10 - 90.0 - - - 574.0 - 643.0 - - - - - [x=75.0][y=55.0] - - 20 - 90.0 - - - 369.0 - 420.0 - - - - - [x=72.0][y=55.0] - - 10 - 90.0 - - - 265.0 - 338.0 - - - - - [x=85.0][y=25.0] - - 10 - 90.0 - - - 769.0 - 820.0 - - - - - [x=85.0][y=35.0] - - 30 - 90.0 - - - 47.0 - 124.0 - - - - - [x=66.0][y=55.0] - - 10 - 90.0 - - - 173.0 - 238.0 - - - - - [x=65.0][y=55.0] - - 20 - 90.0 - - - 85.0 - 144.0 - - - - - [x=70.0][y=58.0] - - 20 - 90.0 - - - 458.0 - 523.0 - - - - - [x=68.0][y=60.0] - - 30 - 90.0 - - - 555.0 - 612.0 - - - - - [x=47.0][y=40.0] - - 10 - 90.0 - - - 12.0 - 77.0 - - - - - [x=47.0][y=35.0] - - 10 - 90.0 - - - 826.0 - 875.0 - - - - - [x=45.0][y=35.0] - - 10 - 90.0 - - - 916.0 - 969.0 - - - - - [x=45.0][y=30.0] - - 10 - 90.0 - - - 734.0 - 777.0 - - - - - [x=95.0][y=30.0] - - 30 - 90.0 - - - 387.0 - 456.0 - - - - - [x=95.0][y=35.0] - - 20 - 90.0 - - - 293.0 - 360.0 - - - - - [x=53.0][y=30.0] - - 10 - 90.0 - - - 450.0 - 505.0 - - - - - [x=92.0][y=30.0] - - 10 - 90.0 - - - 478.0 - 551.0 - - - - - [x=53.0][y=35.0] - - 50 - 90.0 - - - 353.0 - 412.0 - - - - - [x=45.0][y=65.0] - - 20 - 90.0 - - - 997.0 - 1068.0 - - - - - [x=90.0][y=35.0] - - 10 - 90.0 - - - 203.0 - 260.0 - - - - - [x=38.0][y=15.0] - - 10 - 90.0 - - - 651.0 - 740.0 - - - - - [x=38.0][y=5.0] - - 30 - 90.0 - - - 471.0 - 534.0 - - - - - [x=40.0][y=15.0] - - 40 - 90.0 - - - 35.0 - 87.0 - - - - - [x=40.0][y=5.0] - - 30 - 90.0 - - - 385.0 - 436.0 - - - - - [x=42.0][y=15.0] - - 10 - 90.0 - - - 95.0 - 158.0 - - - - - [x=48.0][y=30.0] - - 10 - 90.0 - - - 632.0 - 693.0 - - - - - [x=48.0][y=40.0] - - 10 - 90.0 - - - 76.0 - 129.0 - - - - - [x=50.0][y=35.0] - - 20 - 90.0 - - - 262.0 - 317.0 - - - - - [x=50.0][y=40.0] - - 50 - 90.0 - - - 171.0 - 218.0 - - - - - [x=35.0][y=5.0] - - 20 - 90.0 - - - 562.0 - 629.0 - - - - - [x=50.0][y=30.0] - - 10 - 90.0 - - - 531.0 - 610.0 - - - - - [x=28.0][y=35.0] - - 10 - 90.0 - - - 1001.0 - 1066.0 - - - - - [x=28.0][y=30.0] - - 10 - 90.0 - - - 632.0 - 693.0 - - - - - [x=30.0][y=30.0] - - 10 - 90.0 - - - 541.0 - 600.0 - - - - - [x=32.0][y=30.0] - - 10 - 90.0 - - - 359.0 - 412.0 - - - - - [x=30.0][y=35.0] - - 10 - 90.0 - - - 1054.0 - 1127.0 - - - - - [x=30.0][y=32.0] - - 30 - 90.0 - - - 448.0 - 509.0 - - - - - [x=25.0][y=30.0] - - 10 - 90.0 - - - 725.0 - 786.0 - - - - - [x=25.0][y=35.0] - - 10 - 90.0 - - - 912.0 - 969.0 - - - - - [x=44.0][y=5.0] - - 20 - 90.0 - - - 286.0 - 347.0 - - - - - [x=42.0][y=10.0] - - 40 - 90.0 - - - 186.0 - 257.0 - - - - - [x=26.0][y=32.0] - - 10 - 90.0 - - - 815.0 - 880.0 - - - - - diff --git a/jsprit-examples/input/pickups_and_deliveries_solomon_c101_withoutTWs.xml b/jsprit-examples/input/pickups_and_deliveries_solomon_c101_withoutTWs.xml deleted file mode 100644 index b68edb761..000000000 --- a/jsprit-examples/input/pickups_and_deliveries_solomon_c101_withoutTWs.xml +++ /dev/null @@ -1,1254 +0,0 @@ - - - - - - INFINITE - HOMOGENEOUS - - - - solomonVehicle - solomonType - - 0 - - - - 0.0 - 1236.0 - - - - - - solomonType - 200 - - 0.0 - 1.0 - - - - - - - [x=5.0][y=35.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=5.0][y=45.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=8.0][y=40.0] - - 40 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=8.0][y=45.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=0.0][y=45.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=2.0][y=40.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=0.0][y=40.0] - - 30 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=33.0][y=35.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=33.0][y=32.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=35.0][y=32.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=35.0][y=30.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=28.0][y=52.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=28.0][y=55.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=25.0][y=50.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=25.0][y=52.0] - - 40 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=25.0][y=55.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=23.0][y=52.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=23.0][y=55.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=20.0][y=50.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=42.0][y=66.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=45.0][y=70.0] - - 30 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=45.0][y=68.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=20.0][y=55.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=40.0][y=66.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=40.0][y=69.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=42.0][y=65.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=10.0][y=40.0] - - 30 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=42.0][y=68.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=10.0][y=35.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=38.0][y=70.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=38.0][y=68.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=15.0][y=80.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=18.0][y=75.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=15.0][y=75.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=20.0][y=80.0] - - 40 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=20.0][y=85.0] - - 40 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=22.0][y=75.0] - - 30 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=22.0][y=85.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=35.0][y=69.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=25.0][y=85.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=30.0][y=52.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=30.0][y=50.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=55.0][y=80.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=55.0][y=85.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=58.0][y=75.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=60.0][y=85.0] - - 30 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=60.0][y=80.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=62.0][y=80.0] - - 30 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=65.0][y=82.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=65.0][y=85.0] - - 40 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=67.0][y=85.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=60.0][y=60.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=60.0][y=55.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=35.0][y=66.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=65.0][y=60.0] - - 30 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=63.0][y=58.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=87.0][y=30.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=88.0][y=35.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=88.0][y=30.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=75.0][y=55.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=72.0][y=55.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=85.0][y=25.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=85.0][y=35.0] - - 30 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=66.0][y=55.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=65.0][y=55.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=70.0][y=58.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=68.0][y=60.0] - - 30 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=47.0][y=40.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=47.0][y=35.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=45.0][y=35.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=45.0][y=30.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=95.0][y=30.0] - - 30 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=95.0][y=35.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=53.0][y=30.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=92.0][y=30.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=53.0][y=35.0] - - 50 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=45.0][y=65.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=90.0][y=35.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=38.0][y=15.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=38.0][y=5.0] - - 30 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=40.0][y=15.0] - - 40 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=40.0][y=5.0] - - 30 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=42.0][y=15.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=48.0][y=30.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=48.0][y=40.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=50.0][y=35.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=50.0][y=40.0] - - 50 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=35.0][y=5.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=50.0][y=30.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=28.0][y=35.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=28.0][y=30.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=30.0][y=30.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=32.0][y=30.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=30.0][y=35.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=30.0][y=32.0] - - 30 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=25.0][y=30.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=25.0][y=35.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=44.0][y=5.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=42.0][y=10.0] - - 40 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=26.0][y=32.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - diff --git a/jsprit-examples/input/pickups_and_deliveries_solomon_c101_withoutTWs_and_specifiedVehicleEndLocations.xml b/jsprit-examples/input/pickups_and_deliveries_solomon_c101_withoutTWs_and_specifiedVehicleEndLocations.xml deleted file mode 100644 index 56bdfb28e..000000000 --- a/jsprit-examples/input/pickups_and_deliveries_solomon_c101_withoutTWs_and_specifiedVehicleEndLocations.xml +++ /dev/null @@ -1,1258 +0,0 @@ - - - - - - INFINITE - HOMOGENEOUS - - - - solomonVehicle - solomonType - - 0 - - - - 101 - - - - 0.0 - 1236.0 - - - - - - solomonType - 200 - - 500.0 - 1.0 - - - - - - - [x=5.0][y=35.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=5.0][y=45.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=8.0][y=40.0] - - 40 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=8.0][y=45.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=0.0][y=45.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=2.0][y=40.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=0.0][y=40.0] - - 30 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=33.0][y=35.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=33.0][y=32.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=35.0][y=32.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=35.0][y=30.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=28.0][y=52.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=28.0][y=55.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=25.0][y=50.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=25.0][y=52.0] - - 40 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=25.0][y=55.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=23.0][y=52.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=23.0][y=55.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=20.0][y=50.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=42.0][y=66.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=45.0][y=70.0] - - 30 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=45.0][y=68.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=20.0][y=55.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=40.0][y=66.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=40.0][y=69.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=42.0][y=65.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=10.0][y=40.0] - - 30 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=42.0][y=68.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=10.0][y=35.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=38.0][y=70.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=38.0][y=68.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=15.0][y=80.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=18.0][y=75.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=15.0][y=75.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=20.0][y=80.0] - - 40 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=20.0][y=85.0] - - 40 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=22.0][y=75.0] - - 30 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=22.0][y=85.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=35.0][y=69.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=25.0][y=85.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=30.0][y=52.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=30.0][y=50.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=55.0][y=80.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=55.0][y=85.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=58.0][y=75.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=60.0][y=85.0] - - 30 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=60.0][y=80.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=62.0][y=80.0] - - 30 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=65.0][y=82.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=65.0][y=85.0] - - 40 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=67.0][y=85.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=60.0][y=60.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=60.0][y=55.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=35.0][y=66.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=65.0][y=60.0] - - 30 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=63.0][y=58.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=87.0][y=30.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=88.0][y=35.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=88.0][y=30.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=75.0][y=55.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=72.0][y=55.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=85.0][y=25.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=85.0][y=35.0] - - 30 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=66.0][y=55.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=65.0][y=55.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=70.0][y=58.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=68.0][y=60.0] - - 30 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=47.0][y=40.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=47.0][y=35.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=45.0][y=35.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=45.0][y=30.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=95.0][y=30.0] - - 30 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=95.0][y=35.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=53.0][y=30.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=92.0][y=30.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=53.0][y=35.0] - - 50 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=45.0][y=65.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=90.0][y=35.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=38.0][y=15.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=38.0][y=5.0] - - 30 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=40.0][y=15.0] - - 40 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=40.0][y=5.0] - - 30 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=42.0][y=15.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=48.0][y=30.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=48.0][y=40.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=50.0][y=35.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=50.0][y=40.0] - - 50 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=35.0][y=5.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=50.0][y=30.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=28.0][y=35.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=28.0][y=30.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=30.0][y=30.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=32.0][y=30.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=30.0][y=35.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=30.0][y=32.0] - - 30 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=25.0][y=30.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=25.0][y=35.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=44.0][y=5.0] - - 20 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=42.0][y=10.0] - - 40 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=26.0][y=32.0] - - 10 - 90.0 - - - 0.0 - 1.7976931348623157E308 - - - - - diff --git a/jsprit-examples/input/pickups_and_deliveries_solomon_r101.xml b/jsprit-examples/input/pickups_and_deliveries_solomon_r101.xml deleted file mode 100644 index 19987b7e9..000000000 --- a/jsprit-examples/input/pickups_and_deliveries_solomon_r101.xml +++ /dev/null @@ -1,1254 +0,0 @@ - - - - - - INFINITE - HOMOGENEOUS - - - - solomonVehicle - solomonType - - 0 - - - - 0.0 - 230.0 - - - - - - solomonType - 200 - - 0.0 - 1.0 - - - - - - - [x=63.0][y=65.0] - - 8 - 10.0 - - - 143.0 - 153.0 - - - - - [x=2.0][y=60.0] - - 5 - 10.0 - - - 41.0 - 51.0 - - - - - [x=53.0][y=52.0] - - 11 - 10.0 - - - 37.0 - 47.0 - - - - - [x=65.0][y=55.0] - - 14 - 10.0 - - - 117.0 - 127.0 - - - - - [x=60.0][y=12.0] - - 31 - 10.0 - - - 44.0 - 54.0 - - - - - [x=20.0][y=20.0] - - 8 - 10.0 - - - 134.0 - 144.0 - - - - - [x=5.0][y=5.0] - - 16 - 10.0 - - - 83.0 - 93.0 - - - - - [x=23.0][y=3.0] - - 7 - 10.0 - - - 132.0 - 142.0 - - - - - [x=24.0][y=12.0] - - 5 - 10.0 - - - 31.0 - 41.0 - - - - - [x=42.0][y=7.0] - - 5 - 10.0 - - - 97.0 - 107.0 - - - - - [x=40.0][y=25.0] - - 9 - 10.0 - - - 85.0 - 95.0 - - - - - [x=45.0][y=10.0] - - 18 - 10.0 - - - 97.0 - 107.0 - - - - - [x=55.0][y=5.0] - - 29 - 10.0 - - - 68.0 - 78.0 - - - - - [x=65.0][y=35.0] - - 3 - 10.0 - - - 153.0 - 163.0 - - - - - [x=65.0][y=20.0] - - 6 - 10.0 - - - 172.0 - 182.0 - - - - - [x=45.0][y=30.0] - - 17 - 10.0 - - - 132.0 - 142.0 - - - - - [x=35.0][y=40.0] - - 16 - 10.0 - - - 37.0 - 47.0 - - - - - [x=41.0][y=37.0] - - 16 - 10.0 - - - 39.0 - 49.0 - - - - - [x=64.0][y=42.0] - - 9 - 10.0 - - - 63.0 - 73.0 - - - - - [x=55.0][y=45.0] - - 13 - 10.0 - - - 116.0 - 126.0 - - - - - [x=35.0][y=17.0] - - 7 - 10.0 - - - 50.0 - 60.0 - - - - - [x=41.0][y=49.0] - - 10 - 10.0 - - - 161.0 - 171.0 - - - - - [x=40.0][y=60.0] - - 21 - 10.0 - - - 71.0 - 81.0 - - - - - [x=20.0][y=50.0] - - 5 - 10.0 - - - 81.0 - 91.0 - - - - - [x=25.0][y=30.0] - - 3 - 10.0 - - - 99.0 - 109.0 - - - - - [x=15.0][y=30.0] - - 26 - 10.0 - - - 34.0 - 44.0 - - - - - [x=35.0][y=69.0] - - 23 - 10.0 - - - 141.0 - 151.0 - - - - - [x=55.0][y=20.0] - - 19 - 10.0 - - - 149.0 - 159.0 - - - - - [x=31.0][y=52.0] - - 27 - 10.0 - - - 50.0 - 60.0 - - - - - [x=55.0][y=60.0] - - 16 - 10.0 - - - 97.0 - 107.0 - - - - - [x=10.0][y=43.0] - - 9 - 10.0 - - - 95.0 - 105.0 - - - - - [x=15.0][y=60.0] - - 17 - 10.0 - - - 76.0 - 86.0 - - - - - [x=5.0][y=30.0] - - 2 - 10.0 - - - 157.0 - 167.0 - - - - - [x=20.0][y=40.0] - - 12 - 10.0 - - - 87.0 - 97.0 - - - - - [x=30.0][y=5.0] - - 8 - 10.0 - - - 61.0 - 71.0 - - - - - [x=10.0][y=20.0] - - 19 - 10.0 - - - 75.0 - 85.0 - - - - - [x=30.0][y=25.0] - - 23 - 10.0 - - - 159.0 - 169.0 - - - - - [x=15.0][y=10.0] - - 20 - 10.0 - - - 32.0 - 42.0 - - - - - [x=20.0][y=65.0] - - 12 - 10.0 - - - 67.0 - 77.0 - - - - - [x=50.0][y=35.0] - - 19 - 10.0 - - - 63.0 - 73.0 - - - - - [x=45.0][y=20.0] - - 11 - 10.0 - - - 62.0 - 72.0 - - - - - [x=45.0][y=65.0] - - 9 - 10.0 - - - 126.0 - 136.0 - - - - - [x=20.0][y=26.0] - - 9 - 10.0 - - - 83.0 - 93.0 - - - - - [x=18.0][y=18.0] - - 17 - 10.0 - - - 185.0 - 195.0 - - - - - [x=19.0][y=21.0] - - 10 - 10.0 - - - 58.0 - 68.0 - - - - - [x=25.0][y=21.0] - - 12 - 10.0 - - - 133.0 - 143.0 - - - - - [x=22.0][y=27.0] - - 11 - 10.0 - - - 135.0 - 145.0 - - - - - [x=25.0][y=24.0] - - 20 - 10.0 - - - 39.0 - 49.0 - - - - - [x=26.0][y=27.0] - - 27 - 10.0 - - - 100.0 - 110.0 - - - - - [x=18.0][y=24.0] - - 22 - 10.0 - - - 188.0 - 198.0 - - - - - [x=22.0][y=22.0] - - 2 - 10.0 - - - 18.0 - 28.0 - - - - - [x=15.0][y=19.0] - - 1 - 10.0 - - - 160.0 - 170.0 - - - - - [x=31.0][y=67.0] - - 3 - 10.0 - - - 95.0 - 105.0 - - - - - [x=30.0][y=60.0] - - 16 - 10.0 - - - 124.0 - 134.0 - - - - - [x=26.0][y=52.0] - - 9 - 10.0 - - - 74.0 - 84.0 - - - - - [x=26.0][y=35.0] - - 15 - 10.0 - - - 176.0 - 186.0 - - - - - [x=57.0][y=48.0] - - 23 - 10.0 - - - 92.0 - 102.0 - - - - - [x=61.0][y=52.0] - - 3 - 10.0 - - - 96.0 - 106.0 - - - - - [x=53.0][y=43.0] - - 14 - 10.0 - - - 179.0 - 189.0 - - - - - [x=15.0][y=47.0] - - 16 - 10.0 - - - 55.0 - 65.0 - - - - - [x=14.0][y=37.0] - - 11 - 10.0 - - - 44.0 - 54.0 - - - - - [x=56.0][y=37.0] - - 6 - 10.0 - - - 182.0 - 192.0 - - - - - [x=55.0][y=54.0] - - 26 - 10.0 - - - 94.0 - 104.0 - - - - - [x=4.0][y=18.0] - - 35 - 10.0 - - - 94.0 - 104.0 - - - - - [x=28.0][y=18.0] - - 26 - 10.0 - - - 93.0 - 103.0 - - - - - [x=11.0][y=31.0] - - 7 - 10.0 - - - 101.0 - 111.0 - - - - - [x=16.0][y=22.0] - - 41 - 10.0 - - - 91.0 - 101.0 - - - - - [x=67.0][y=5.0] - - 25 - 10.0 - - - 83.0 - 93.0 - - - - - [x=49.0][y=73.0] - - 25 - 10.0 - - - 127.0 - 137.0 - - - - - [x=37.0][y=47.0] - - 6 - 10.0 - - - 50.0 - 60.0 - - - - - [x=56.0][y=39.0] - - 36 - 10.0 - - - 142.0 - 152.0 - - - - - [x=37.0][y=56.0] - - 5 - 10.0 - - - 182.0 - 192.0 - - - - - [x=57.0][y=68.0] - - 15 - 10.0 - - - 77.0 - 87.0 - - - - - [x=47.0][y=16.0] - - 25 - 10.0 - - - 35.0 - 45.0 - - - - - [x=44.0][y=17.0] - - 9 - 10.0 - - - 78.0 - 88.0 - - - - - [x=46.0][y=13.0] - - 8 - 10.0 - - - 149.0 - 159.0 - - - - - [x=49.0][y=11.0] - - 18 - 10.0 - - - 69.0 - 79.0 - - - - - [x=49.0][y=42.0] - - 13 - 10.0 - - - 73.0 - 83.0 - - - - - [x=21.0][y=24.0] - - 28 - 10.0 - - - 18.0 - 28.0 - - - - - [x=36.0][y=26.0] - - 18 - 10.0 - - - 200.0 - 210.0 - - - - - [x=32.0][y=12.0] - - 7 - 10.0 - - - 101.0 - 111.0 - - - - - [x=53.0][y=12.0] - - 6 - 10.0 - - - 130.0 - 140.0 - - - - - [x=63.0][y=23.0] - - 2 - 10.0 - - - 136.0 - 146.0 - - - - - [x=15.0][y=77.0] - - 9 - 10.0 - - - 73.0 - 83.0 - - - - - [x=62.0][y=77.0] - - 20 - 10.0 - - - 51.0 - 61.0 - - - - - [x=24.0][y=58.0] - - 19 - 10.0 - - - 58.0 - 68.0 - - - - - [x=27.0][y=69.0] - - 10 - 10.0 - - - 34.0 - 44.0 - - - - - [x=17.0][y=34.0] - - 3 - 10.0 - - - 162.0 - 172.0 - - - - - [x=12.0][y=24.0] - - 13 - 10.0 - - - 76.0 - 86.0 - - - - - [x=6.0][y=68.0] - - 30 - 10.0 - - - 108.0 - 118.0 - - - - - [x=13.0][y=52.0] - - 36 - 10.0 - - - 165.0 - 175.0 - - - - - [x=6.0][y=38.0] - - 16 - 10.0 - - - 32.0 - 42.0 - - - - - [x=11.0][y=14.0] - - 18 - 10.0 - - - 69.0 - 79.0 - - - - - [x=8.0][y=56.0] - - 27 - 10.0 - - - 51.0 - 61.0 - - - - - [x=2.0][y=48.0] - - 1 - 10.0 - - - 117.0 - 127.0 - - - - - [x=49.0][y=58.0] - - 10 - 10.0 - - - 88.0 - 98.0 - - - - - [x=27.0][y=43.0] - - 9 - 10.0 - - - 52.0 - 62.0 - - - - - [x=37.0][y=31.0] - - 14 - 10.0 - - - 95.0 - 105.0 - - - - - [x=57.0][y=29.0] - - 18 - 10.0 - - - 140.0 - 150.0 - - - - - [x=47.0][y=47.0] - - 13 - 10.0 - - - 124.0 - 134.0 - - - - - diff --git a/jsprit-examples/input/pickups_and_deliveries_solomon_r101_open.xml b/jsprit-examples/input/pickups_and_deliveries_solomon_r101_open.xml deleted file mode 100644 index c09803114..000000000 --- a/jsprit-examples/input/pickups_and_deliveries_solomon_r101_open.xml +++ /dev/null @@ -1,1255 +0,0 @@ - - - - - - INFINITE - HOMOGENEOUS - - - - solomonVehicle - solomonType - - 0 - - - - 0.0 - 230.0 - - false - - - - - solomonType - 200 - - 100.0 - 1.0 - - - - - - - [x=63.0][y=65.0] - - 8 - 10.0 - - - 143.0 - 153.0 - - - - - [x=2.0][y=60.0] - - 5 - 10.0 - - - 41.0 - 51.0 - - - - - [x=53.0][y=52.0] - - 11 - 10.0 - - - 37.0 - 47.0 - - - - - [x=65.0][y=55.0] - - 14 - 10.0 - - - 117.0 - 127.0 - - - - - [x=60.0][y=12.0] - - 31 - 10.0 - - - 44.0 - 54.0 - - - - - [x=20.0][y=20.0] - - 8 - 10.0 - - - 134.0 - 144.0 - - - - - [x=5.0][y=5.0] - - 16 - 10.0 - - - 83.0 - 93.0 - - - - - [x=23.0][y=3.0] - - 7 - 10.0 - - - 132.0 - 142.0 - - - - - [x=24.0][y=12.0] - - 5 - 10.0 - - - 31.0 - 41.0 - - - - - [x=42.0][y=7.0] - - 5 - 10.0 - - - 97.0 - 107.0 - - - - - [x=40.0][y=25.0] - - 9 - 10.0 - - - 85.0 - 95.0 - - - - - [x=45.0][y=10.0] - - 18 - 10.0 - - - 97.0 - 107.0 - - - - - [x=55.0][y=5.0] - - 29 - 10.0 - - - 68.0 - 78.0 - - - - - [x=65.0][y=35.0] - - 3 - 10.0 - - - 153.0 - 163.0 - - - - - [x=65.0][y=20.0] - - 6 - 10.0 - - - 172.0 - 182.0 - - - - - [x=45.0][y=30.0] - - 17 - 10.0 - - - 132.0 - 142.0 - - - - - [x=35.0][y=40.0] - - 16 - 10.0 - - - 37.0 - 47.0 - - - - - [x=41.0][y=37.0] - - 16 - 10.0 - - - 39.0 - 49.0 - - - - - [x=64.0][y=42.0] - - 9 - 10.0 - - - 63.0 - 73.0 - - - - - [x=55.0][y=45.0] - - 13 - 10.0 - - - 116.0 - 126.0 - - - - - [x=35.0][y=17.0] - - 7 - 10.0 - - - 50.0 - 60.0 - - - - - [x=41.0][y=49.0] - - 10 - 10.0 - - - 161.0 - 171.0 - - - - - [x=40.0][y=60.0] - - 21 - 10.0 - - - 71.0 - 81.0 - - - - - [x=20.0][y=50.0] - - 5 - 10.0 - - - 81.0 - 91.0 - - - - - [x=25.0][y=30.0] - - 3 - 10.0 - - - 99.0 - 109.0 - - - - - [x=15.0][y=30.0] - - 26 - 10.0 - - - 34.0 - 44.0 - - - - - [x=35.0][y=69.0] - - 23 - 10.0 - - - 141.0 - 151.0 - - - - - [x=55.0][y=20.0] - - 19 - 10.0 - - - 149.0 - 159.0 - - - - - [x=31.0][y=52.0] - - 27 - 10.0 - - - 50.0 - 60.0 - - - - - [x=55.0][y=60.0] - - 16 - 10.0 - - - 97.0 - 107.0 - - - - - [x=10.0][y=43.0] - - 9 - 10.0 - - - 95.0 - 105.0 - - - - - [x=15.0][y=60.0] - - 17 - 10.0 - - - 76.0 - 86.0 - - - - - [x=5.0][y=30.0] - - 2 - 10.0 - - - 157.0 - 167.0 - - - - - [x=20.0][y=40.0] - - 12 - 10.0 - - - 87.0 - 97.0 - - - - - [x=30.0][y=5.0] - - 8 - 10.0 - - - 61.0 - 71.0 - - - - - [x=10.0][y=20.0] - - 19 - 10.0 - - - 75.0 - 85.0 - - - - - [x=30.0][y=25.0] - - 23 - 10.0 - - - 159.0 - 169.0 - - - - - [x=15.0][y=10.0] - - 20 - 10.0 - - - 32.0 - 42.0 - - - - - [x=20.0][y=65.0] - - 12 - 10.0 - - - 67.0 - 77.0 - - - - - [x=50.0][y=35.0] - - 19 - 10.0 - - - 63.0 - 73.0 - - - - - [x=45.0][y=20.0] - - 11 - 10.0 - - - 62.0 - 72.0 - - - - - [x=45.0][y=65.0] - - 9 - 10.0 - - - 126.0 - 136.0 - - - - - [x=20.0][y=26.0] - - 9 - 10.0 - - - 83.0 - 93.0 - - - - - [x=18.0][y=18.0] - - 17 - 10.0 - - - 185.0 - 195.0 - - - - - [x=19.0][y=21.0] - - 10 - 10.0 - - - 58.0 - 68.0 - - - - - [x=25.0][y=21.0] - - 12 - 10.0 - - - 133.0 - 143.0 - - - - - [x=22.0][y=27.0] - - 11 - 10.0 - - - 135.0 - 145.0 - - - - - [x=25.0][y=24.0] - - 20 - 10.0 - - - 39.0 - 49.0 - - - - - [x=26.0][y=27.0] - - 27 - 10.0 - - - 100.0 - 110.0 - - - - - [x=18.0][y=24.0] - - 22 - 10.0 - - - 188.0 - 198.0 - - - - - [x=22.0][y=22.0] - - 2 - 10.0 - - - 18.0 - 28.0 - - - - - [x=15.0][y=19.0] - - 1 - 10.0 - - - 160.0 - 170.0 - - - - - [x=31.0][y=67.0] - - 3 - 10.0 - - - 95.0 - 105.0 - - - - - [x=30.0][y=60.0] - - 16 - 10.0 - - - 124.0 - 134.0 - - - - - [x=26.0][y=52.0] - - 9 - 10.0 - - - 74.0 - 84.0 - - - - - [x=26.0][y=35.0] - - 15 - 10.0 - - - 176.0 - 186.0 - - - - - [x=57.0][y=48.0] - - 23 - 10.0 - - - 92.0 - 102.0 - - - - - [x=61.0][y=52.0] - - 3 - 10.0 - - - 96.0 - 106.0 - - - - - [x=53.0][y=43.0] - - 14 - 10.0 - - - 179.0 - 189.0 - - - - - [x=15.0][y=47.0] - - 16 - 10.0 - - - 55.0 - 65.0 - - - - - [x=14.0][y=37.0] - - 11 - 10.0 - - - 44.0 - 54.0 - - - - - [x=56.0][y=37.0] - - 6 - 10.0 - - - 182.0 - 192.0 - - - - - [x=55.0][y=54.0] - - 26 - 10.0 - - - 94.0 - 104.0 - - - - - [x=4.0][y=18.0] - - 35 - 10.0 - - - 94.0 - 104.0 - - - - - [x=28.0][y=18.0] - - 26 - 10.0 - - - 93.0 - 103.0 - - - - - [x=11.0][y=31.0] - - 7 - 10.0 - - - 101.0 - 111.0 - - - - - [x=16.0][y=22.0] - - 41 - 10.0 - - - 91.0 - 101.0 - - - - - [x=67.0][y=5.0] - - 25 - 10.0 - - - 83.0 - 93.0 - - - - - [x=49.0][y=73.0] - - 25 - 10.0 - - - 127.0 - 137.0 - - - - - [x=37.0][y=47.0] - - 6 - 10.0 - - - 50.0 - 60.0 - - - - - [x=56.0][y=39.0] - - 36 - 10.0 - - - 142.0 - 152.0 - - - - - [x=37.0][y=56.0] - - 5 - 10.0 - - - 182.0 - 192.0 - - - - - [x=57.0][y=68.0] - - 15 - 10.0 - - - 77.0 - 87.0 - - - - - [x=47.0][y=16.0] - - 25 - 10.0 - - - 35.0 - 45.0 - - - - - [x=44.0][y=17.0] - - 9 - 10.0 - - - 78.0 - 88.0 - - - - - [x=46.0][y=13.0] - - 8 - 10.0 - - - 149.0 - 159.0 - - - - - [x=49.0][y=11.0] - - 18 - 10.0 - - - 69.0 - 79.0 - - - - - [x=49.0][y=42.0] - - 13 - 10.0 - - - 73.0 - 83.0 - - - - - [x=21.0][y=24.0] - - 28 - 10.0 - - - 18.0 - 28.0 - - - - - [x=36.0][y=26.0] - - 18 - 10.0 - - - 200.0 - 210.0 - - - - - [x=32.0][y=12.0] - - 7 - 10.0 - - - 101.0 - 111.0 - - - - - [x=53.0][y=12.0] - - 6 - 10.0 - - - 130.0 - 140.0 - - - - - [x=63.0][y=23.0] - - 2 - 10.0 - - - 136.0 - 146.0 - - - - - [x=15.0][y=77.0] - - 9 - 10.0 - - - 73.0 - 83.0 - - - - - [x=62.0][y=77.0] - - 20 - 10.0 - - - 51.0 - 61.0 - - - - - [x=24.0][y=58.0] - - 19 - 10.0 - - - 58.0 - 68.0 - - - - - [x=27.0][y=69.0] - - 10 - 10.0 - - - 34.0 - 44.0 - - - - - [x=17.0][y=34.0] - - 3 - 10.0 - - - 162.0 - 172.0 - - - - - [x=12.0][y=24.0] - - 13 - 10.0 - - - 76.0 - 86.0 - - - - - [x=6.0][y=68.0] - - 30 - 10.0 - - - 108.0 - 118.0 - - - - - [x=13.0][y=52.0] - - 36 - 10.0 - - - 165.0 - 175.0 - - - - - [x=6.0][y=38.0] - - 16 - 10.0 - - - 32.0 - 42.0 - - - - - [x=11.0][y=14.0] - - 18 - 10.0 - - - 69.0 - 79.0 - - - - - [x=8.0][y=56.0] - - 27 - 10.0 - - - 51.0 - 61.0 - - - - - [x=2.0][y=48.0] - - 1 - 10.0 - - - 117.0 - 127.0 - - - - - [x=49.0][y=58.0] - - 10 - 10.0 - - - 88.0 - 98.0 - - - - - [x=27.0][y=43.0] - - 9 - 10.0 - - - 52.0 - 62.0 - - - - - [x=37.0][y=31.0] - - 14 - 10.0 - - - 95.0 - 105.0 - - - - - [x=57.0][y=29.0] - - 18 - 10.0 - - - 140.0 - 150.0 - - - - - [x=47.0][y=47.0] - - 13 - 10.0 - - - 124.0 - 134.0 - - - - - diff --git a/jsprit-examples/input/pickups_and_deliveries_solomon_r101_withoutTWs.xml b/jsprit-examples/input/pickups_and_deliveries_solomon_r101_withoutTWs.xml deleted file mode 100644 index 47cb1b1e4..000000000 --- a/jsprit-examples/input/pickups_and_deliveries_solomon_r101_withoutTWs.xml +++ /dev/null @@ -1,1254 +0,0 @@ - - - - - - INFINITE - HOMOGENEOUS - - - - solomonVehicle - solomonType - - 0 - - - - 0.0 - 230.0 - - - - - - solomonType - 200 - - 0.0 - 1.0 - - - - - - - [x=63.0][y=65.0] - - 8 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=2.0][y=60.0] - - 5 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=53.0][y=52.0] - - 11 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=65.0][y=55.0] - - 14 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=60.0][y=12.0] - - 31 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=20.0][y=20.0] - - 8 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=5.0][y=5.0] - - 16 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=23.0][y=3.0] - - 7 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=24.0][y=12.0] - - 5 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=42.0][y=7.0] - - 5 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=40.0][y=25.0] - - 9 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=45.0][y=10.0] - - 18 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=55.0][y=5.0] - - 29 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=65.0][y=35.0] - - 3 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=65.0][y=20.0] - - 6 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=45.0][y=30.0] - - 17 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=35.0][y=40.0] - - 16 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=41.0][y=37.0] - - 16 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=64.0][y=42.0] - - 9 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=55.0][y=45.0] - - 13 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=35.0][y=17.0] - - 7 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=41.0][y=49.0] - - 10 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=40.0][y=60.0] - - 21 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=20.0][y=50.0] - - 5 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=25.0][y=30.0] - - 3 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=15.0][y=30.0] - - 26 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=35.0][y=69.0] - - 23 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=55.0][y=20.0] - - 19 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=31.0][y=52.0] - - 27 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=55.0][y=60.0] - - 16 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=10.0][y=43.0] - - 9 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=15.0][y=60.0] - - 17 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=5.0][y=30.0] - - 2 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=20.0][y=40.0] - - 12 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=30.0][y=5.0] - - 8 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=10.0][y=20.0] - - 19 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=30.0][y=25.0] - - 23 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=15.0][y=10.0] - - 20 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=20.0][y=65.0] - - 12 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=50.0][y=35.0] - - 19 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=45.0][y=20.0] - - 11 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=45.0][y=65.0] - - 9 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=20.0][y=26.0] - - 9 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=18.0][y=18.0] - - 17 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=19.0][y=21.0] - - 10 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=25.0][y=21.0] - - 12 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=22.0][y=27.0] - - 11 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=25.0][y=24.0] - - 20 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=26.0][y=27.0] - - 27 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=18.0][y=24.0] - - 22 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=22.0][y=22.0] - - 2 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=15.0][y=19.0] - - 1 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=31.0][y=67.0] - - 3 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=30.0][y=60.0] - - 16 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=26.0][y=52.0] - - 9 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=26.0][y=35.0] - - 15 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=57.0][y=48.0] - - 23 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=61.0][y=52.0] - - 3 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=53.0][y=43.0] - - 14 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=15.0][y=47.0] - - 16 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=14.0][y=37.0] - - 11 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=56.0][y=37.0] - - 6 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=55.0][y=54.0] - - 26 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=4.0][y=18.0] - - 35 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=28.0][y=18.0] - - 26 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=11.0][y=31.0] - - 7 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=16.0][y=22.0] - - 41 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=67.0][y=5.0] - - 25 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=49.0][y=73.0] - - 25 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=37.0][y=47.0] - - 6 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=56.0][y=39.0] - - 36 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=37.0][y=56.0] - - 5 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=57.0][y=68.0] - - 15 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=47.0][y=16.0] - - 25 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=44.0][y=17.0] - - 9 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=46.0][y=13.0] - - 8 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=49.0][y=11.0] - - 18 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=49.0][y=42.0] - - 13 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=21.0][y=24.0] - - 28 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=36.0][y=26.0] - - 18 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=32.0][y=12.0] - - 7 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=53.0][y=12.0] - - 6 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=63.0][y=23.0] - - 2 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=15.0][y=77.0] - - 9 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=62.0][y=77.0] - - 20 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=24.0][y=58.0] - - 19 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=27.0][y=69.0] - - 10 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=17.0][y=34.0] - - 3 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=12.0][y=24.0] - - 13 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=6.0][y=68.0] - - 30 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=13.0][y=52.0] - - 36 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=6.0][y=38.0] - - 16 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=11.0][y=14.0] - - 18 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=8.0][y=56.0] - - 27 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=2.0][y=48.0] - - 1 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=49.0][y=58.0] - - 10 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=27.0][y=43.0] - - 9 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=37.0][y=31.0] - - 14 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=57.0][y=29.0] - - 18 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=47.0][y=47.0] - - 13 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - diff --git a/jsprit-examples/input/pickups_and_deliveries_solomon_r101_withoutTWs_open.xml b/jsprit-examples/input/pickups_and_deliveries_solomon_r101_withoutTWs_open.xml deleted file mode 100644 index a5eb6d2cb..000000000 --- a/jsprit-examples/input/pickups_and_deliveries_solomon_r101_withoutTWs_open.xml +++ /dev/null @@ -1,1255 +0,0 @@ - - - - - - INFINITE - HOMOGENEOUS - - - - solomonVehicle - solomonType - - 0 - - - - 0.0 - 230.0 - - false - - - - - solomonType - 200 - - 0.0 - 1.0 - - - - - - - [x=63.0][y=65.0] - - 8 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=2.0][y=60.0] - - 5 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=53.0][y=52.0] - - 11 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=65.0][y=55.0] - - 14 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=60.0][y=12.0] - - 31 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=20.0][y=20.0] - - 8 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=5.0][y=5.0] - - 16 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=23.0][y=3.0] - - 7 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=24.0][y=12.0] - - 5 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=42.0][y=7.0] - - 5 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=40.0][y=25.0] - - 9 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=45.0][y=10.0] - - 18 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=55.0][y=5.0] - - 29 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=65.0][y=35.0] - - 3 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=65.0][y=20.0] - - 6 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=45.0][y=30.0] - - 17 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=35.0][y=40.0] - - 16 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=41.0][y=37.0] - - 16 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=64.0][y=42.0] - - 9 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=55.0][y=45.0] - - 13 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=35.0][y=17.0] - - 7 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=41.0][y=49.0] - - 10 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=40.0][y=60.0] - - 21 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=20.0][y=50.0] - - 5 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=25.0][y=30.0] - - 3 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=15.0][y=30.0] - - 26 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=35.0][y=69.0] - - 23 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=55.0][y=20.0] - - 19 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=31.0][y=52.0] - - 27 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=55.0][y=60.0] - - 16 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=10.0][y=43.0] - - 9 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=15.0][y=60.0] - - 17 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=5.0][y=30.0] - - 2 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=20.0][y=40.0] - - 12 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=30.0][y=5.0] - - 8 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=10.0][y=20.0] - - 19 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=30.0][y=25.0] - - 23 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=15.0][y=10.0] - - 20 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=20.0][y=65.0] - - 12 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=50.0][y=35.0] - - 19 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=45.0][y=20.0] - - 11 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=45.0][y=65.0] - - 9 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=20.0][y=26.0] - - 9 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=18.0][y=18.0] - - 17 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=19.0][y=21.0] - - 10 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=25.0][y=21.0] - - 12 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=22.0][y=27.0] - - 11 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=25.0][y=24.0] - - 20 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=26.0][y=27.0] - - 27 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=18.0][y=24.0] - - 22 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=22.0][y=22.0] - - 2 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=15.0][y=19.0] - - 1 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=31.0][y=67.0] - - 3 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=30.0][y=60.0] - - 16 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=26.0][y=52.0] - - 9 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=26.0][y=35.0] - - 15 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=57.0][y=48.0] - - 23 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=61.0][y=52.0] - - 3 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=53.0][y=43.0] - - 14 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=15.0][y=47.0] - - 16 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=14.0][y=37.0] - - 11 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=56.0][y=37.0] - - 6 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=55.0][y=54.0] - - 26 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=4.0][y=18.0] - - 35 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=28.0][y=18.0] - - 26 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=11.0][y=31.0] - - 7 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=16.0][y=22.0] - - 41 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=67.0][y=5.0] - - 25 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=49.0][y=73.0] - - 25 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=37.0][y=47.0] - - 6 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=56.0][y=39.0] - - 36 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=37.0][y=56.0] - - 5 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=57.0][y=68.0] - - 15 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=47.0][y=16.0] - - 25 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=44.0][y=17.0] - - 9 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=46.0][y=13.0] - - 8 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=49.0][y=11.0] - - 18 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=49.0][y=42.0] - - 13 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=21.0][y=24.0] - - 28 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=36.0][y=26.0] - - 18 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=32.0][y=12.0] - - 7 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=53.0][y=12.0] - - 6 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=63.0][y=23.0] - - 2 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=15.0][y=77.0] - - 9 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=62.0][y=77.0] - - 20 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=24.0][y=58.0] - - 19 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=27.0][y=69.0] - - 10 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=17.0][y=34.0] - - 3 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=12.0][y=24.0] - - 13 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=6.0][y=68.0] - - 30 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=13.0][y=52.0] - - 36 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=6.0][y=38.0] - - 16 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=11.0][y=14.0] - - 18 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=8.0][y=56.0] - - 27 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=2.0][y=48.0] - - 1 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=49.0][y=58.0] - - 10 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=27.0][y=43.0] - - 9 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=37.0][y=31.0] - - 14 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=57.0][y=29.0] - - 18 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=47.0][y=47.0] - - 13 - 10.0 - - - 0.0 - 1.7976931348623157E308 - - - - - diff --git a/jsprit-examples/input/pickups_solomon_c101.xml b/jsprit-examples/input/pickups_solomon_c101.xml deleted file mode 100644 index 4f47fcae1..000000000 --- a/jsprit-examples/input/pickups_solomon_c101.xml +++ /dev/null @@ -1,1254 +0,0 @@ - - - - - - INFINITE - HOMOGENEOUS - - - - solomonVehicle - solomonType - - 0 - - - - 0.0 - 1236.0 - - - - - - solomonType - 200 - - 0.0 - 1.0 - - - - - - - [x=5.0][y=35.0] - - 10 - 90.0 - - - 283.0 - 344.0 - - - - - [x=5.0][y=45.0] - - 10 - 90.0 - - - 665.0 - 716.0 - - - - - [x=8.0][y=40.0] - - 40 - 90.0 - - - 87.0 - 158.0 - - - - - [x=8.0][y=45.0] - - 20 - 90.0 - - - 751.0 - 816.0 - - - - - [x=0.0][y=45.0] - - 20 - 90.0 - - - 567.0 - 624.0 - - - - - [x=2.0][y=40.0] - - 20 - 90.0 - - - 383.0 - 434.0 - - - - - [x=0.0][y=40.0] - - 30 - 90.0 - - - 479.0 - 522.0 - - - - - [x=33.0][y=35.0] - - 10 - 90.0 - - - 16.0 - 80.0 - - - - - [x=33.0][y=32.0] - - 20 - 90.0 - - - 68.0 - 149.0 - - - - - [x=35.0][y=32.0] - - 10 - 90.0 - - - 166.0 - 235.0 - - - - - [x=35.0][y=30.0] - - 10 - 90.0 - - - 264.0 - 321.0 - - - - - [x=28.0][y=52.0] - - 20 - 90.0 - - - 812.0 - 883.0 - - - - - [x=28.0][y=55.0] - - 10 - 90.0 - - - 732.0 - 777.0 - - - - - [x=25.0][y=50.0] - - 10 - 90.0 - - - 65.0 - 144.0 - - - - - [x=25.0][y=52.0] - - 40 - 90.0 - - - 169.0 - 224.0 - - - - - [x=25.0][y=55.0] - - 10 - 90.0 - - - 622.0 - 701.0 - - - - - [x=23.0][y=52.0] - - 10 - 90.0 - - - 261.0 - 316.0 - - - - - [x=23.0][y=55.0] - - 20 - 90.0 - - - 546.0 - 593.0 - - - - - [x=20.0][y=50.0] - - 10 - 90.0 - - - 358.0 - 405.0 - - - - - [x=42.0][y=66.0] - - 10 - 90.0 - - - 65.0 - 146.0 - - - - - [x=45.0][y=70.0] - - 30 - 90.0 - - - 825.0 - 870.0 - - - - - [x=45.0][y=68.0] - - 10 - 90.0 - - - 912.0 - 967.0 - - - - - [x=20.0][y=55.0] - - 10 - 90.0 - - - 449.0 - 504.0 - - - - - [x=40.0][y=66.0] - - 20 - 90.0 - - - 170.0 - 225.0 - - - - - [x=40.0][y=69.0] - - 20 - 90.0 - - - 621.0 - 702.0 - - - - - [x=42.0][y=65.0] - - 10 - 90.0 - - - 15.0 - 67.0 - - - - - [x=10.0][y=40.0] - - 30 - 90.0 - - - 31.0 - 100.0 - - - - - [x=42.0][y=68.0] - - 10 - 90.0 - - - 727.0 - 782.0 - - - - - [x=10.0][y=35.0] - - 20 - 90.0 - - - 200.0 - 237.0 - - - - - [x=38.0][y=70.0] - - 10 - 90.0 - - - 534.0 - 605.0 - - - - - [x=38.0][y=68.0] - - 20 - 90.0 - - - 255.0 - 324.0 - - - - - [x=15.0][y=80.0] - - 10 - 90.0 - - - 278.0 - 345.0 - - - - - [x=18.0][y=75.0] - - 20 - 90.0 - - - 99.0 - 148.0 - - - - - [x=15.0][y=75.0] - - 20 - 90.0 - - - 179.0 - 254.0 - - - - - [x=20.0][y=80.0] - - 40 - 90.0 - - - 384.0 - 429.0 - - - - - [x=20.0][y=85.0] - - 40 - 90.0 - - - 475.0 - 528.0 - - - - - [x=22.0][y=75.0] - - 30 - 90.0 - - - 30.0 - 92.0 - - - - - [x=22.0][y=85.0] - - 10 - 90.0 - - - 567.0 - 620.0 - - - - - [x=35.0][y=69.0] - - 10 - 90.0 - - - 448.0 - 505.0 - - - - - [x=25.0][y=85.0] - - 20 - 90.0 - - - 652.0 - 721.0 - - - - - [x=30.0][y=52.0] - - 20 - 90.0 - - - 914.0 - 965.0 - - - - - [x=30.0][y=50.0] - - 10 - 90.0 - - - 10.0 - 73.0 - - - - - [x=55.0][y=80.0] - - 10 - 90.0 - - - 743.0 - 820.0 - - - - - [x=55.0][y=85.0] - - 20 - 90.0 - - - 647.0 - 726.0 - - - - - [x=58.0][y=75.0] - - 20 - 90.0 - - - 30.0 - 84.0 - - - - - [x=60.0][y=85.0] - - 30 - 90.0 - - - 561.0 - 622.0 - - - - - [x=60.0][y=80.0] - - 10 - 90.0 - - - 95.0 - 156.0 - - - - - [x=62.0][y=80.0] - - 30 - 90.0 - - - 196.0 - 239.0 - - - - - [x=65.0][y=82.0] - - 10 - 90.0 - - - 285.0 - 336.0 - - - - - [x=65.0][y=85.0] - - 40 - 90.0 - - - 475.0 - 518.0 - - - - - [x=67.0][y=85.0] - - 20 - 90.0 - - - 368.0 - 441.0 - - - - - [x=60.0][y=60.0] - - 10 - 90.0 - - - 836.0 - 889.0 - - - - - [x=60.0][y=55.0] - - 10 - 90.0 - - - 20.0 - 84.0 - - - - - [x=35.0][y=66.0] - - 10 - 90.0 - - - 357.0 - 410.0 - - - - - [x=65.0][y=60.0] - - 30 - 90.0 - - - 645.0 - 708.0 - - - - - [x=63.0][y=58.0] - - 10 - 90.0 - - - 737.0 - 802.0 - - - - - [x=87.0][y=30.0] - - 10 - 90.0 - - - 668.0 - 731.0 - - - - - [x=88.0][y=35.0] - - 20 - 90.0 - - - 109.0 - 170.0 - - - - - [x=88.0][y=30.0] - - 10 - 90.0 - - - 574.0 - 643.0 - - - - - [x=75.0][y=55.0] - - 20 - 90.0 - - - 369.0 - 420.0 - - - - - [x=72.0][y=55.0] - - 10 - 90.0 - - - 265.0 - 338.0 - - - - - [x=85.0][y=25.0] - - 10 - 90.0 - - - 769.0 - 820.0 - - - - - [x=85.0][y=35.0] - - 30 - 90.0 - - - 47.0 - 124.0 - - - - - [x=66.0][y=55.0] - - 10 - 90.0 - - - 173.0 - 238.0 - - - - - [x=65.0][y=55.0] - - 20 - 90.0 - - - 85.0 - 144.0 - - - - - [x=70.0][y=58.0] - - 20 - 90.0 - - - 458.0 - 523.0 - - - - - [x=68.0][y=60.0] - - 30 - 90.0 - - - 555.0 - 612.0 - - - - - [x=47.0][y=40.0] - - 10 - 90.0 - - - 12.0 - 77.0 - - - - - [x=47.0][y=35.0] - - 10 - 90.0 - - - 826.0 - 875.0 - - - - - [x=45.0][y=35.0] - - 10 - 90.0 - - - 916.0 - 969.0 - - - - - [x=45.0][y=30.0] - - 10 - 90.0 - - - 734.0 - 777.0 - - - - - [x=95.0][y=30.0] - - 30 - 90.0 - - - 387.0 - 456.0 - - - - - [x=95.0][y=35.0] - - 20 - 90.0 - - - 293.0 - 360.0 - - - - - [x=53.0][y=30.0] - - 10 - 90.0 - - - 450.0 - 505.0 - - - - - [x=92.0][y=30.0] - - 10 - 90.0 - - - 478.0 - 551.0 - - - - - [x=53.0][y=35.0] - - 50 - 90.0 - - - 353.0 - 412.0 - - - - - [x=45.0][y=65.0] - - 20 - 90.0 - - - 997.0 - 1068.0 - - - - - [x=90.0][y=35.0] - - 10 - 90.0 - - - 203.0 - 260.0 - - - - - [x=38.0][y=15.0] - - 10 - 90.0 - - - 651.0 - 740.0 - - - - - [x=38.0][y=5.0] - - 30 - 90.0 - - - 471.0 - 534.0 - - - - - [x=40.0][y=15.0] - - 40 - 90.0 - - - 35.0 - 87.0 - - - - - [x=40.0][y=5.0] - - 30 - 90.0 - - - 385.0 - 436.0 - - - - - [x=42.0][y=15.0] - - 10 - 90.0 - - - 95.0 - 158.0 - - - - - [x=48.0][y=30.0] - - 10 - 90.0 - - - 632.0 - 693.0 - - - - - [x=48.0][y=40.0] - - 10 - 90.0 - - - 76.0 - 129.0 - - - - - [x=50.0][y=35.0] - - 20 - 90.0 - - - 262.0 - 317.0 - - - - - [x=50.0][y=40.0] - - 50 - 90.0 - - - 171.0 - 218.0 - - - - - [x=35.0][y=5.0] - - 20 - 90.0 - - - 562.0 - 629.0 - - - - - [x=50.0][y=30.0] - - 10 - 90.0 - - - 531.0 - 610.0 - - - - - [x=28.0][y=35.0] - - 10 - 90.0 - - - 1001.0 - 1066.0 - - - - - [x=28.0][y=30.0] - - 10 - 90.0 - - - 632.0 - 693.0 - - - - - [x=30.0][y=30.0] - - 10 - 90.0 - - - 541.0 - 600.0 - - - - - [x=32.0][y=30.0] - - 10 - 90.0 - - - 359.0 - 412.0 - - - - - [x=30.0][y=35.0] - - 10 - 90.0 - - - 1054.0 - 1127.0 - - - - - [x=30.0][y=32.0] - - 30 - 90.0 - - - 448.0 - 509.0 - - - - - [x=25.0][y=30.0] - - 10 - 90.0 - - - 725.0 - 786.0 - - - - - [x=25.0][y=35.0] - - 10 - 90.0 - - - 912.0 - 969.0 - - - - - [x=44.0][y=5.0] - - 20 - 90.0 - - - 286.0 - 347.0 - - - - - [x=42.0][y=10.0] - - 40 - 90.0 - - - 186.0 - 257.0 - - - - - [x=26.0][y=32.0] - - 10 - 90.0 - - - 815.0 - 880.0 - - - - - diff --git a/jsprit-examples/input/refuseCollectionExample_Distances b/jsprit-examples/input/refuseCollectionExample_Distances deleted file mode 100644 index ad1475068..000000000 --- a/jsprit-examples/input/refuseCollectionExample_Distances +++ /dev/null @@ -1,46 +0,0 @@ -from,to,distance -1,2,25 -1,3,43 -1,4,57 -1,5,43 -1,6,61 -1,7,29 -1,8,41 -1,9,48 -1,10,71 -2,3,29 -2,4,34 -2,5,43 -2,6,68 -2,7,49 -2,8,66 -2,9,48 -2,10,91 -3,4,52 -3,5,72 -3,6,96 -3,7,72 -3,8,81 -3,9,89 -3,10,114 -4,5,45 -4,6,71 -4,7,71 -4,8,95 -4,9,99 -4,10,108 -5,6,27 -5,7,36 -5,8,65 -5,9,65 -5,10,65 -6,7,40 -6,8,66 -6,9,62 -6,10,46 -7,8,31 -7,9,31 -7,10,43 -8,9,11 -8,10,46 -9,10,36 \ No newline at end of file diff --git a/jsprit-examples/input/refuseCollectionExample_Quantities b/jsprit-examples/input/refuseCollectionExample_Quantities deleted file mode 100644 index 4645bac0a..000000000 --- a/jsprit-examples/input/refuseCollectionExample_Quantities +++ /dev/null @@ -1,10 +0,0 @@ -node,quantity -2,4 -3,6 -4,5 -5,4 -6,7 -7,3 -8,5 -9,4 -10,4 \ No newline at end of file diff --git a/jsprit-examples/input/vrp_cordeau_01.xml b/jsprit-examples/input/vrp_cordeau_01.xml deleted file mode 100644 index 789eb7fd2..000000000 --- a/jsprit-examples/input/vrp_cordeau_01.xml +++ /dev/null @@ -1,626 +0,0 @@ - - - - - - - - 35 - - 17 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 36 - - 6 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 33 - - 23 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 34 - - 26 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 39 - - 14 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 37 - - 9 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 38 - - 15 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 43 - - 11 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 42 - - 13 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 41 - - 27 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 40 - - 7 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 22 - - 8 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 23 - - 16 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 24 - - 10 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 25 - - 28 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 26 - - 7 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 27 - - 15 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 28 - - 14 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 29 - - 6 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 3 - - 16 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 2 - - 30 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 1 - - 7 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 7 - - 19 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 30 - - 19 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 6 - - 15 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 5 - - 21 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 32 - - 12 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 4 - - 9 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 31 - - 11 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 9 - - 11 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 8 - - 23 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 19 - - 9 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 17 - - 3 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 18 - - 41 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 15 - - 10 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 16 - - 15 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 13 - - 23 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 14 - - 21 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 11 - - 19 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 12 - - 29 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 21 - - 8 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 20 - - 28 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 49 - - 18 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 48 - - 17 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 45 - - 10 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 44 - - 16 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 47 - - 25 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 46 - - 5 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 10 - - 5 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 50 - - 10 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - diff --git a/jsprit-examples/input/vrp_cordeau_08.xml b/jsprit-examples/input/vrp_cordeau_08.xml deleted file mode 100644 index 2382b9f8a..000000000 --- a/jsprit-examples/input/vrp_cordeau_08.xml +++ /dev/null @@ -1,3014 +0,0 @@ - - - - - - - - 35 - - 9 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 36 - - 74 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 33 - - 47 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 159 - - 46 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 34 - - 57 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 158 - - 79 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 39 - - 42 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 157 - - 79 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 156 - - 97 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 37 - - 83 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 155 - - 65 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 38 - - 96 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 154 - - 97 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 152 - - 24 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 153 - - 69 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 150 - - 83 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 151 - - 22 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 43 - - 43 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 42 - - 56 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 41 - - 22 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 40 - - 80 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 202 - - 92 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 203 - - 1 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 204 - - 2 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 205 - - 63 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 200 - - 11 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 201 - - 98 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 22 - - 40 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 23 - - 8 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 169 - - 49 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 24 - - 69 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 25 - - 93 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 206 - - 57 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 26 - - 29 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 166 - - 23 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 207 - - 50 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 27 - - 5 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 165 - - 3 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 208 - - 19 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 28 - - 53 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 168 - - 40 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 209 - - 24 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 29 - - 8 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 167 - - 19 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 3 - - 93 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 161 - - 39 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 2 - - 72 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 162 - - 94 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 1 - - 6 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 163 - - 97 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 164 - - 18 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 7 - - 1 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 30 - - 24 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 6 - - 43 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 5 - - 5 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 32 - - 13 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 4 - - 28 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 31 - - 53 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 160 - - 52 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 9 - - 53 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 8 - - 36 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 211 - - 18 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 212 - - 77 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 210 - - 14 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 215 - - 49 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 216 - - 58 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 213 - - 28 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 19 - - 88 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 214 - - 72 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 219 - - 41 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 17 - - 51 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 179 - - 59 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 18 - - 47 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 178 - - 84 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 217 - - 84 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 15 - - 66 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 177 - - 36 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 218 - - 58 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 16 - - 37 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 176 - - 10 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 13 - - 57 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 14 - - 1 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 11 - - 25 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 12 - - 50 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 21 - - 48 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 170 - - 96 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 20 - - 75 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 171 - - 58 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 174 - - 56 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 175 - - 67 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 172 - - 15 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 173 - - 21 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 220 - - 98 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 221 - - 77 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 222 - - 57 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 223 - - 39 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 224 - - 99 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 225 - - 83 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 226 - - 54 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 227 - - 86 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 228 - - 2 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 188 - - 18 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 229 - - 14 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 187 - - 99 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 189 - - 55 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 180 - - 85 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 10 - - 63 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 181 - - 60 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 182 - - 33 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 183 - - 62 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 184 - - 70 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 185 - - 79 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 186 - - 98 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 116 - - 5 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 79 - - 48 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 117 - - 93 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 78 - - 31 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 114 - - 78 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 77 - - 8 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 115 - - 64 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 112 - - 71 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 113 - - 85 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 110 - - 50 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 111 - - 42 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 118 - - 18 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 119 - - 38 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 82 - - 99 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 83 - - 29 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 80 - - 3 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 81 - - 52 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 86 - - 98 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 87 - - 4 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 84 - - 12 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 85 - - 50 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 67 - - 56 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 125 - - 86 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 66 - - 56 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 126 - - 2 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 69 - - 39 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 127 - - 31 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 68 - - 9 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 128 - - 54 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 121 - - 81 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 122 - - 4 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 123 - - 23 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 124 - - 11 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 129 - - 87 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 70 - - 15 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 71 - - 4 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 120 - - 29 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 72 - - 58 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 73 - - 73 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 74 - - 5 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 75 - - 12 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 76 - - 3 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 134 - - 50 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 135 - - 25 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 132 - - 72 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 59 - - 90 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 133 - - 10 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 58 - - 62 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 138 - - 51 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 57 - - 100 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 139 - - 29 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 56 - - 37 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 136 - - 71 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 55 - - 5 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 137 - - 85 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 64 - - 60 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 65 - - 95 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 62 - - 37 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 63 - - 80 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 60 - - 57 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 131 - - 81 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 61 - - 44 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 130 - - 17 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 49 - - 79 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 143 - - 38 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 48 - - 79 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 144 - - 11 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 145 - - 82 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 146 - - 50 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 45 - - 73 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 147 - - 39 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 44 - - 12 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 148 - - 6 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 47 - - 8 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 149 - - 87 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 46 - - 32 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 51 - - 14 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 52 - - 17 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 53 - - 19 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 54 - - 44 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 140 - - 55 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 142 - - 100 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 50 - - 4 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 141 - - 45 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 109 - - 68 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 108 - - 77 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 107 - - 42 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 106 - - 39 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 105 - - 25 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 104 - - 93 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 103 - - 74 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 99 - - 21 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 102 - - 84 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 101 - - 33 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 100 - - 99 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 98 - - 84 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 97 - - 71 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 96 - - 26 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 95 - - 72 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 94 - - 36 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 93 - - 4 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 92 - - 98 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 91 - - 45 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 90 - - 33 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 88 - - 56 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 89 - - 24 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 240 - - 53 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 241 - - 15 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 195 - - 19 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 194 - - 19 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 197 - - 35 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 196 - - 90 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 191 - - 94 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 190 - - 75 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 193 - - 13 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 192 - - 89 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 198 - - 76 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 199 - - 3 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 245 - - 92 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 244 - - 78 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 243 - - 98 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 242 - - 36 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 249 - - 50 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 248 - - 43 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 247 - - 64 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 246 - - 65 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 230 - - 42 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 239 - - 96 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 232 - - 55 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 231 - - 14 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 234 - - 18 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 233 - - 2 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 236 - - 22 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 235 - - 17 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 238 - - 3 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - 237 - - 28 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - diff --git a/jsprit-examples/input/vrpnc1-jsprit.xml b/jsprit-examples/input/vrpnc1-jsprit.xml deleted file mode 100644 index 7070a4349..000000000 --- a/jsprit-examples/input/vrpnc1-jsprit.xml +++ /dev/null @@ -1,654 +0,0 @@ - - - - - - INFINITE - HOMOGENEOUS - - - - christophidesVehicle - christophidesType - - [x=30.0][y=40.0] - - - - 0.0 - 999999.0 - - - - - - christophidesType - 160 - - 0.0 - 1.0 - - - - - - - [x=62.0][y=63.0] - - 17 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=63.0][y=69.0] - - 6 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=46.0][y=10.0] - - 23 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=61.0][y=33.0] - - 26 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=59.0][y=15.0] - - 14 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=32.0][y=22.0] - - 9 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=45.0][y=35.0] - - 15 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=5.0][y=64.0] - - 11 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=21.0][y=10.0] - - 13 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=10.0][y=17.0] - - 27 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=5.0][y=6.0] - - 7 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=42.0][y=57.0] - - 8 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=16.0][y=57.0] - - 16 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=8.0][y=52.0] - - 10 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=7.0][y=38.0] - - 28 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=27.0][y=68.0] - - 7 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=30.0][y=48.0] - - 15 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=43.0][y=67.0] - - 14 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=58.0][y=48.0] - - 6 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=52.0][y=64.0] - - 16 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=49.0][y=49.0] - - 30 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=37.0][y=52.0] - - 7 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=17.0][y=63.0] - - 19 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=58.0][y=27.0] - - 19 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=21.0][y=47.0] - - 15 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=40.0][y=30.0] - - 21 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=38.0][y=46.0] - - 12 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=20.0][y=26.0] - - 9 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=37.0][y=69.0] - - 11 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=52.0][y=33.0] - - 11 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=31.0][y=62.0] - - 23 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=13.0][y=13.0] - - 9 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=27.0][y=23.0] - - 3 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=17.0][y=33.0] - - 41 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=36.0][y=16.0] - - 10 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=52.0][y=41.0] - - 15 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=5.0][y=25.0] - - 23 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=12.0][y=42.0] - - 21 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=42.0][y=41.0] - - 19 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=31.0][y=32.0] - - 29 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=62.0][y=42.0] - - 8 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=57.0][y=58.0] - - 28 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=48.0][y=28.0] - - 18 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=25.0][y=55.0] - - 17 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=39.0][y=10.0] - - 10 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=30.0][y=15.0] - - 16 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=25.0][y=32.0] - - 25 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=32.0][y=39.0] - - 5 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=51.0][y=21.0] - - 5 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - [x=56.0][y=37.0] - - 10 - 0.0 - - - 0.0 - 1.7976931348623157E308 - - - - - diff --git a/jsprit-examples/input/vrpnc1.txt b/jsprit-examples/input/vrpnc1.txt deleted file mode 100644 index 7296a49f7..000000000 --- a/jsprit-examples/input/vrpnc1.txt +++ /dev/null @@ -1,52 +0,0 @@ - 50 160 999999 0 - 30 40 - 37 52 7 - 49 49 30 - 52 64 16 - 20 26 9 - 40 30 21 - 21 47 15 - 17 63 19 - 31 62 23 - 52 33 11 - 51 21 5 - 42 41 19 - 31 32 29 - 5 25 23 - 12 42 21 - 36 16 10 - 52 41 15 - 27 23 3 - 17 33 41 - 13 13 9 - 57 58 28 - 62 42 8 - 42 57 8 - 16 57 16 - 8 52 10 - 7 38 28 - 27 68 7 - 30 48 15 - 43 67 14 - 58 48 6 - 58 27 19 - 37 69 11 - 38 46 12 - 46 10 23 - 61 33 26 - 62 63 17 - 63 69 6 - 32 22 9 - 45 35 15 - 59 15 14 - 5 6 7 - 10 17 27 - 21 10 13 - 5 64 11 - 30 15 16 - 39 10 10 - 32 39 5 - 25 32 25 - 25 55 17 - 48 28 18 - 56 37 10 diff --git a/jsprit-examples/pom.xml b/jsprit-examples/pom.xml deleted file mode 100644 index 8416a9add..000000000 --- a/jsprit-examples/pom.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - com.graphhopper - jsprit - 1.9-SNAPSHOT - - 4.0.0 - - jsprit-examples - - - - - ${project.groupId} - jsprit-instances - ${project.version} - - - - ${project.groupId} - jsprit-core - ${project.version} - - - - ${project.groupId} - jsprit-analysis - ${project.version} - - - - ${project.groupId} - jsprit-io - ${project.version} - - - - - diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/AdditionalDistanceConstraintExample.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/AdditionalDistanceConstraintExample.java deleted file mode 100644 index 1dcbfcda2..000000000 --- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/AdditionalDistanceConstraintExample.java +++ /dev/null @@ -1,178 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.graphhopper.jsprit.examples; - - -import com.graphhopper.jsprit.analysis.toolbox.Plotter; -import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; -import com.graphhopper.jsprit.core.algorithm.box.Jsprit; -import com.graphhopper.jsprit.core.algorithm.state.StateId; -import com.graphhopper.jsprit.core.algorithm.state.StateManager; -import com.graphhopper.jsprit.core.algorithm.state.StateUpdater; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.constraint.ConstraintManager; -import com.graphhopper.jsprit.core.problem.constraint.HardActivityConstraint; -import com.graphhopper.jsprit.core.problem.misc.JobInsertionContext; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; -import com.graphhopper.jsprit.core.problem.solution.route.activity.ActivityVisitor; -import com.graphhopper.jsprit.core.problem.solution.route.activity.TourActivity; -import com.graphhopper.jsprit.core.reporting.SolutionPrinter; -import com.graphhopper.jsprit.core.util.Coordinate; -import com.graphhopper.jsprit.core.util.EuclideanDistanceCalculator; -import com.graphhopper.jsprit.core.util.Solutions; -import com.graphhopper.jsprit.core.util.VehicleRoutingTransportCostsMatrix; -import com.graphhopper.jsprit.io.problem.VrpXMLReader; - -import java.util.Collection; - -//import jsprit.core.problem.solution.route.state.StateFactory; //v1.3.1 - -public class AdditionalDistanceConstraintExample { - - static class DistanceUpdater implements StateUpdater, ActivityVisitor { - - private final StateManager stateManager; - - private final VehicleRoutingTransportCostsMatrix costMatrix; - - // private final StateFactory.StateId distanceStateId; //v1.3.1 - private final StateId distanceStateId; //head of development - upcoming release - - private VehicleRoute vehicleRoute; - - private double distance = 0.; - - private TourActivity prevAct; - - // public DistanceUpdater(StateFactory.StateId distanceStateId, StateManager stateManager, VehicleRoutingTransportCostsMatrix costMatrix) { //v1.3.1 - public DistanceUpdater(StateId distanceStateId, StateManager stateManager, VehicleRoutingTransportCostsMatrix transportCosts) { //head of development - upcoming release (v1.4) - this.costMatrix = transportCosts; - this.stateManager = stateManager; - this.distanceStateId = distanceStateId; - } - - @Override - public void begin(VehicleRoute vehicleRoute) { - distance = 0.; - prevAct = vehicleRoute.getStart(); - this.vehicleRoute = vehicleRoute; - } - - @Override - public void visit(TourActivity tourActivity) { - distance += getDistance(prevAct, tourActivity); - prevAct = tourActivity; - } - - @Override - public void finish() { - distance += getDistance(prevAct, vehicleRoute.getEnd()); -// stateManager.putTypedRouteState(vehicleRoute,distanceStateId,Double.class,distance); //v1.3.1 - stateManager.putRouteState(vehicleRoute, distanceStateId, distance); //head of development - upcoming release (v1.4) - } - - double getDistance(TourActivity from, TourActivity to) { - return costMatrix.getDistance(from.getLocation().getId(), to.getLocation().getId()); - } - } - - static class DistanceConstraint implements HardActivityConstraint { - - private final StateManager stateManager; - - private final VehicleRoutingTransportCostsMatrix costsMatrix; - - private final double maxDistance; - - // private final StateFactory.StateId distanceStateId; //v1.3.1 - private final StateId distanceStateId; //head of development - upcoming release (v1.4) - - // DistanceConstraint(double maxDistance, StateFactory.StateId distanceStateId, StateManager stateManager, VehicleRoutingTransportCostsMatrix costsMatrix) { //v1.3.1 - DistanceConstraint(double maxDistance, StateId distanceStateId, StateManager stateManager, VehicleRoutingTransportCostsMatrix transportCosts) { //head of development - upcoming release (v1.4) - this.costsMatrix = transportCosts; - this.maxDistance = maxDistance; - this.stateManager = stateManager; - this.distanceStateId = distanceStateId; - } - - @Override - public ConstraintsStatus fulfilled(JobInsertionContext context, TourActivity prevAct, TourActivity newAct, TourActivity nextAct, double v) { - double additionalDistance = getDistance(prevAct, newAct) + getDistance(newAct, nextAct) - getDistance(prevAct, nextAct); - Double routeDistance = stateManager.getRouteState(context.getRoute(), distanceStateId, Double.class); - if (routeDistance == null) routeDistance = 0.; - double newRouteDistance = routeDistance + additionalDistance; - if (newRouteDistance > maxDistance) { - return ConstraintsStatus.NOT_FULFILLED; - } else return ConstraintsStatus.FULFILLED; - } - - double getDistance(TourActivity from, TourActivity to) { - return costsMatrix.getDistance(from.getLocation().getId(), to.getLocation().getId()); - } - - } - - public static void main(String[] args) { - - //route length 618 - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(vrpBuilder).read("input/pickups_and_deliveries_solomon_r101_withoutTWs.xml"); - //builds a matrix based on euclidean distances; t_ij = euclidean(i,j) / 2; d_ij = euclidean(i,j); - VehicleRoutingTransportCostsMatrix costMatrix = createMatrix(vrpBuilder); - vrpBuilder.setRoutingCost(costMatrix); - VehicleRoutingProblem vrp = vrpBuilder.build(); - - - StateManager stateManager = new StateManager(vrp); //head of development - upcoming release (v1.4) - - StateId distanceStateId = stateManager.createStateId("distance"); //head of development - upcoming release (v1.4) - stateManager.addStateUpdater(new DistanceUpdater(distanceStateId, stateManager, costMatrix)); - - ConstraintManager constraintManager = new ConstraintManager(vrp, stateManager); - constraintManager.addConstraint(new DistanceConstraint(120., distanceStateId, stateManager, costMatrix), ConstraintManager.Priority.CRITICAL); - - VehicleRoutingAlgorithm vra = Jsprit.Builder.newInstance(vrp).setStateAndConstraintManager(stateManager,constraintManager) - .buildAlgorithm(); -// vra.setMaxIterations(250); //v1.3.1 - vra.setMaxIterations(250); //head of development - upcoming release (v1.4) - - Collection solutions = vra.searchSolutions(); - - SolutionPrinter.print(vrp, Solutions.bestOf(solutions), SolutionPrinter.Print.VERBOSE); - - new Plotter(vrp, Solutions.bestOf(solutions)).plot("output/plot", "plot"); - } - - private static VehicleRoutingTransportCostsMatrix createMatrix(VehicleRoutingProblem.Builder vrpBuilder) { - VehicleRoutingTransportCostsMatrix.Builder matrixBuilder = VehicleRoutingTransportCostsMatrix.Builder.newInstance(true); - for (String from : vrpBuilder.getLocationMap().keySet()) { - for (String to : vrpBuilder.getLocationMap().keySet()) { - Coordinate fromCoord = vrpBuilder.getLocationMap().get(from); - Coordinate toCoord = vrpBuilder.getLocationMap().get(to); - double distance = EuclideanDistanceCalculator.calculateDistance(fromCoord, toCoord); - matrixBuilder.addTransportDistance(from, to, distance); - matrixBuilder.addTransportTime(from, to, (distance / 2.)); - } - } - return matrixBuilder.build(); - } - - -} diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/BicycleMessenger.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/BicycleMessenger.java deleted file mode 100644 index 2f61d78aa..000000000 --- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/BicycleMessenger.java +++ /dev/null @@ -1,403 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.examples; - -import com.graphhopper.jsprit.analysis.toolbox.AlgorithmSearchProgressChartListener; -import com.graphhopper.jsprit.analysis.toolbox.GraphStreamViewer; -import com.graphhopper.jsprit.analysis.toolbox.GraphStreamViewer.Label; -import com.graphhopper.jsprit.analysis.toolbox.Plotter; -import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; -import com.graphhopper.jsprit.core.algorithm.box.Jsprit; -import com.graphhopper.jsprit.core.algorithm.state.StateId; -import com.graphhopper.jsprit.core.algorithm.state.StateManager; -import com.graphhopper.jsprit.core.algorithm.state.StateUpdater; -import com.graphhopper.jsprit.core.problem.Location; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem.Builder; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem.FleetSize; -import com.graphhopper.jsprit.core.problem.constraint.ConstraintManager; -import com.graphhopper.jsprit.core.problem.constraint.HardActivityConstraint; -import com.graphhopper.jsprit.core.problem.constraint.HardRouteConstraint; -import com.graphhopper.jsprit.core.problem.cost.VehicleRoutingTransportCosts; -import com.graphhopper.jsprit.core.problem.driver.DriverImpl; -import com.graphhopper.jsprit.core.problem.job.Job; -import com.graphhopper.jsprit.core.problem.job.Shipment; -import com.graphhopper.jsprit.core.problem.misc.JobInsertionContext; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; -import com.graphhopper.jsprit.core.problem.solution.route.activity.ReverseActivityVisitor; -import com.graphhopper.jsprit.core.problem.solution.route.activity.TourActivity; -import com.graphhopper.jsprit.core.problem.solution.route.activity.TourActivity.JobActivity; -import com.graphhopper.jsprit.core.problem.solution.route.state.RouteAndActivityStateGetter; -import com.graphhopper.jsprit.core.problem.vehicle.Vehicle; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; -import com.graphhopper.jsprit.core.reporting.SolutionPrinter; -import com.graphhopper.jsprit.core.util.Coordinate; -import com.graphhopper.jsprit.core.util.CrowFlyCosts; -import com.graphhopper.jsprit.core.util.Solutions; -import com.graphhopper.jsprit.util.Examples; - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileReader; -import java.io.IOException; -import java.util.Collection; -import java.util.HashMap; -import java.util.Map; - - -/** - * This class provides the/a solution to the following problem: - *

- * Statement of the problem (see Stackoverflow: http://stackoverflow.com/questions/19080537/bicycle-messenger-tsppd-with-optaplanner/20412598#20412598): - *

- * Optimize the routes for a bicycle messenger service! - * Assume 5 messengers that have to pick up 30 envelopes distributed through the city. These 5 messengers are distributed through the city as well. Thus - * there is no single depot and they do not need to go back to their original starting location. - *

- * Additional hard constraints: - * 1) Every messenger can carry up to fifteen envelopes - * 2) The way an evelopes travels should be less than three times the direct route (so delivery does not take too long) - *

- * Thus this problem is basically a Capacitated VRP with Pickups and Deliveries, Multiple Depots, Open Routes and Time Windows/Restrictions. - * - * @author stefan schroeder - */ -public class BicycleMessenger { - - /** - * Hard constraint: delivery of envelope must not take longer than 3*bestDirect (i.e. fastest messenger on direct delivery) - * - * @author stefan - */ - static class ThreeTimesLessThanBestDirectRouteConstraint implements HardActivityConstraint { - - private final VehicleRoutingTransportCosts routingCosts; - - private final RouteAndActivityStateGetter stateManager; - - //jobId map direct-distance by nearestMessenger - private final Map bestMessengers; - - private final StateId latest_act_arrival_time_stateId; - - public ThreeTimesLessThanBestDirectRouteConstraint(StateId latest_act_arrival_time, Map nearestMessengers, VehicleRoutingTransportCosts routingCosts, RouteAndActivityStateGetter stateManager) { - this.bestMessengers = nearestMessengers; - this.routingCosts = routingCosts; - this.stateManager = stateManager; - this.latest_act_arrival_time_stateId = latest_act_arrival_time; - } - - @Override - public ConstraintsStatus fulfilled(JobInsertionContext iFacts, TourActivity prevAct, TourActivity newAct, TourActivity nextAct, double prevActDepTime) { - //make sure vehicle can manage direct path - double arrTime_at_nextAct_onDirectRoute = prevActDepTime + routingCosts.getTransportTime(prevAct.getLocation(), nextAct.getLocation(), prevActDepTime, iFacts.getNewDriver(), iFacts.getNewVehicle()); - Double latest_arrTime_at_nextAct = stateManager.getActivityState(nextAct, latest_act_arrival_time_stateId, Double.class); - if (latest_arrTime_at_nextAct == null) - latest_arrTime_at_nextAct = nextAct.getTheoreticalLatestOperationStartTime(); - if (arrTime_at_nextAct_onDirectRoute > latest_arrTime_at_nextAct) { - //constraint can never be fulfilled anymore, thus .NOT_FULFILLED_BREAK - return ConstraintsStatus.NOT_FULFILLED_BREAK; - } - - double arrTime_at_newAct = prevActDepTime + routingCosts.getTransportTime(prevAct.getLocation(), newAct.getLocation(), prevActDepTime, iFacts.getNewDriver(), iFacts.getNewVehicle()); - //local impact - //no matter whether it is a pickupShipment or deliverShipment activities. both arrivalTimes must be < 3*best. - double directTimeOfNearestMessenger = bestMessengers.get(((JobActivity) newAct).getJob().getId()); - if (arrTime_at_newAct > 3 * directTimeOfNearestMessenger) { - //not fulfilled AND it can never be fulfilled anymore by going forward in route, thus NOT_FULFILLED_BREAK - return ConstraintsStatus.NOT_FULFILLED_BREAK; - } - - //impact on whole route, since insertion of newAct shifts all subsequent activities forward in time - double departureTime_at_newAct = arrTime_at_newAct + newAct.getOperationTime(); - double latest_arrTime_at_newAct = latest_arrTime_at_nextAct - routingCosts.getTransportTime(newAct.getLocation(), nextAct.getLocation(), departureTime_at_newAct, iFacts.getNewDriver(), iFacts.getNewVehicle()); - if (arrTime_at_newAct > latest_arrTime_at_newAct) { - return ConstraintsStatus.NOT_FULFILLED; - } - - double arrTime_at_nextAct = departureTime_at_newAct + routingCosts.getTransportTime(newAct.getLocation(), nextAct.getLocation(), departureTime_at_newAct, iFacts.getNewDriver(), iFacts.getNewVehicle()); - //here you need an activity state - if (arrTime_at_nextAct > latest_arrTime_at_nextAct) { - return ConstraintsStatus.NOT_FULFILLED; - } - return ConstraintsStatus.FULFILLED; - } - - } - - /** - * When inserting the activities of an envelope which are pickup and deliver envelope, this constraint makes insertion procedure to ignore messengers that are too far away to meet the 3*directTime-Constraint. - *

- *

one does not need this constraint. but it is faster. the earlier the solution-space can be constraint the better/faster. - * - * @author schroeder - */ - static class IgnoreMessengerThatCanNeverMeetTimeRequirements implements HardRouteConstraint { - - private final Map bestMessengers; - - private final VehicleRoutingTransportCosts routingCosts; - - public IgnoreMessengerThatCanNeverMeetTimeRequirements(Map bestMessengers, VehicleRoutingTransportCosts routingCosts) { - super(); - this.bestMessengers = bestMessengers; - this.routingCosts = routingCosts; - } - - @Override - public boolean fulfilled(JobInsertionContext insertionContext) { - double timeOfDirectRoute = getTimeOfDirectRoute(insertionContext.getJob(), insertionContext.getNewVehicle(), routingCosts); - double timeOfNearestMessenger = bestMessengers.get(insertionContext.getJob().getId()); - return !(timeOfDirectRoute > 3 * timeOfNearestMessenger); - } - - } - - /** - * updates the state "latest-activity-start-time" (required above) once route/activity states changed, i.e. when removing or inserting an envelope-activity - *

- *

thus once either the insertion-procedure starts or an envelope has been inserted, this visitor runs through the route in reverse order (i.e. starting with the end of the route) and - * calculates the latest-activity-start-time (or latest-activity-arrival-time) which is the time to just meet the constraints of subsequent activities. - * - * @author schroeder - */ - static class UpdateLatestActivityStartTimes implements StateUpdater, ReverseActivityVisitor { - - private final StateManager stateManager; - - private final VehicleRoutingTransportCosts routingCosts; - - private final Map bestMessengers; - - private VehicleRoute route; - - private TourActivity prevAct; - - private double latest_arrTime_at_prevAct; - - private final StateId latest_act_arrival_time_stateId; - - public UpdateLatestActivityStartTimes(StateId latest_act_arrival_time, StateManager stateManager, VehicleRoutingTransportCosts routingCosts, Map bestMessengers) { - super(); - this.stateManager = stateManager; - this.routingCosts = routingCosts; - this.bestMessengers = bestMessengers; - this.latest_act_arrival_time_stateId = latest_act_arrival_time; - } - - @Override - public void begin(VehicleRoute route) { - this.route = route; - latest_arrTime_at_prevAct = route.getEnd().getTheoreticalLatestOperationStartTime(); - prevAct = route.getEnd(); - } - - @Override - public void visit(TourActivity currAct) { - double timeOfNearestMessenger = bestMessengers.get(((JobActivity) currAct).getJob().getId()); - double potential_latest_arrTime_at_currAct = - latest_arrTime_at_prevAct - routingCosts.getBackwardTransportTime(currAct.getLocation(), prevAct.getLocation(), latest_arrTime_at_prevAct, route.getDriver(), route.getVehicle()) - currAct.getOperationTime(); - double latest_arrTime_at_currAct = Math.min(3 * timeOfNearestMessenger, potential_latest_arrTime_at_currAct); - stateManager.putActivityState(currAct, latest_act_arrival_time_stateId, latest_arrTime_at_currAct); - assert currAct.getArrTime() <= latest_arrTime_at_currAct : "this must not be since it breaks condition; actArrTime: " + currAct.getArrTime() + " latestArrTime: " + latest_arrTime_at_currAct + " vehicle: " + route.getVehicle().getId(); - latest_arrTime_at_prevAct = latest_arrTime_at_currAct; - prevAct = currAct; - } - - @Override - public void finish() { - } - - } - - /** - * @throws IOException - */ - public static void main(String[] args) throws IOException { - Examples.createOutputFolder(); - - /* - build the problem - */ - VehicleRoutingProblem.Builder problemBuilder = VehicleRoutingProblem.Builder.newInstance(); - problemBuilder.setFleetSize(FleetSize.FINITE); - readEnvelopes(problemBuilder); - readMessengers(problemBuilder); - //add constraints to problem - VehicleRoutingTransportCosts routingCosts = new CrowFlyCosts(problemBuilder.getLocations()); //which is the default VehicleRoutingTransportCosts in builder above - problemBuilder.setRoutingCost(routingCosts); - //finally build the problem -// problemBuilder.addPenaltyVehicles(20.0,50000); - VehicleRoutingProblem bicycleMessengerProblem = problemBuilder.build(); - - /* - define states and constraints - */ - //map mapping nearest messengers, i.e. for each envelope the direct-delivery-time with the fastest messenger is stored here - Map nearestMessengers = getNearestMessengers(routingCosts, problemBuilder.getAddedJobs(), problemBuilder.getAddedVehicles()); - - //define stateManager to update the required activity-state: "latest-activity-start-time" - StateManager stateManager = new StateManager(bicycleMessengerProblem); - //create state - StateId latest_act_arrival_time_stateId = stateManager.createStateId("latest-act-arrival-time"); - //and make sure you update the activity-state "latest-activity-start-time" the way it is defined above - stateManager.addStateUpdater(new UpdateLatestActivityStartTimes(latest_act_arrival_time_stateId, stateManager, routingCosts, nearestMessengers)); - stateManager.updateLoadStates(); - - ConstraintManager constraintManager = new ConstraintManager(bicycleMessengerProblem, stateManager); - constraintManager.addLoadConstraint(); - constraintManager.addConstraint(new ThreeTimesLessThanBestDirectRouteConstraint(latest_act_arrival_time_stateId, nearestMessengers, routingCosts, stateManager), ConstraintManager.Priority.CRITICAL); - constraintManager.addConstraint(new IgnoreMessengerThatCanNeverMeetTimeRequirements(nearestMessengers, routingCosts)); - - VehicleRoutingAlgorithm algorithm = Jsprit.Builder.newInstance(bicycleMessengerProblem) - .setStateAndConstraintManager(stateManager,constraintManager).buildAlgorithm(); - - algorithm.setMaxIterations(2000); - -// VehicleRoutingAlgorithm algorithm = Jsprit.Builder.newInstance(bicycleMessengerProblem) -// .setStateAndConstraintManager(stateManager, constraintManager) -// .setProperty(Jsprit.Parameter.THREADS.toString(), "6") -//// .setProperty(Jsprit.Strategy.RADIAL_BEST.toString(), "0.25") -//// .setProperty(Jsprit.Strategy.WORST_BEST.toString(), "0.25") -//// .setProperty(Jsprit.Strategy.CLUSTER_BEST.toString(), "0.25") -//// .setProperty(Jsprit.Strategy.RANDOM_BEST.toString(), "0.") -//// .setProperty(Jsprit.Strategy.RANDOM_REGRET.toString(), "1.") -// .setProperty(Jsprit.Parameter.INSERTION_NOISE_LEVEL.toString(),"0.01") -// .setProperty(Jsprit.Parameter.INSERTION_NOISE_PROB.toString(), "0.2") -//// .setProperty(Jsprit.Parameter.THRESHOLD_ALPHA.toString(),"0.1") -// .buildAlgorithm(); -// algorithm.setMaxIterations(5000); - -// VariationCoefficientTermination prematureAlgorithmTermination = new VariationCoefficientTermination(200, 0.001); -// algorithm.setPrematureAlgorithmTermination(prematureAlgorithmTermination); -// algorithm.addListener(prematureAlgorithmTermination); - algorithm.addListener(new AlgorithmSearchProgressChartListener("output/progress.png")); - - //search - Collection solutions = algorithm.searchSolutions(); - - //this is just to ensure that solution meet the above constraints - validateSolution(Solutions.bestOf(solutions), bicycleMessengerProblem, nearestMessengers); - - SolutionPrinter.print(bicycleMessengerProblem, Solutions.bestOf(solutions), SolutionPrinter.Print.VERBOSE); - - //you may want to plot the problem - Plotter plotter = new Plotter(bicycleMessengerProblem); -// plotter.setBoundingBox(10000, 47500, 20000, 67500); - plotter.plotShipments(true); - plotter.plot("output/bicycleMessengerProblem.png", "bicycleMessenger"); - - //and the problem as well as the solution - Plotter plotter1 = new Plotter(bicycleMessengerProblem, Solutions.bestOf(solutions)); - plotter1.setLabel(Plotter.Label.ID); - plotter1.plotShipments(false); -// plotter1.setBoundingBox(5000, 45500, 25000, 66500); - plotter1.plot("output/bicycleMessengerSolution.png", "bicycleMessenger"); - - //and write out your solution in xml -// new VrpXMLWriter(bicycleMessengerProblem, solutions).write("output/bicycleMessenger.xml"); - - - new GraphStreamViewer(bicycleMessengerProblem).labelWith(Label.ID).setRenderShipments(true).setRenderDelay(150).display(); -// - new GraphStreamViewer(bicycleMessengerProblem, Solutions.bestOf(solutions)).setGraphStreamFrameScalingFactor(1.5).setCameraView(12500, 55000, 0.25).labelWith(Label.ACTIVITY).setRenderShipments(true).setRenderDelay(150).display(); - - } - - //if you wanne run this enable assertion by putting an '-ea' in your vmargument list - Run As --> Run Configurations --> (x)=Arguments --> VM arguments: -ea - private static void validateSolution(VehicleRoutingProblemSolution bestOf, VehicleRoutingProblem bicycleMessengerProblem, Map nearestMessengers) { - for (VehicleRoute route : bestOf.getRoutes()) { - for (TourActivity act : route.getActivities()) { - if (act.getArrTime() > 3 * nearestMessengers.get(((JobActivity) act).getJob().getId())) { - SolutionPrinter.print(bicycleMessengerProblem, bestOf, SolutionPrinter.Print.VERBOSE); - throw new IllegalStateException("three times less than ... constraint broken. this must not be. act.getArrTime(): " + act.getArrTime() + " allowed: " + 3 * nearestMessengers.get(((JobActivity) act).getJob().getId())); - } - } - } - } - - static Map getNearestMessengers(VehicleRoutingTransportCosts routingCosts, Collection envelopes, Collection messengers) { - Map nearestMessengers = new HashMap(); - for (Job envelope : envelopes) { - double minDirect = Double.MAX_VALUE; - for (Vehicle m : messengers) { - double direct = getTimeOfDirectRoute(envelope, m, routingCosts); - if (direct < minDirect) { - minDirect = direct; - } - } - nearestMessengers.put(envelope.getId(), minDirect); - } - return nearestMessengers; - } - - static double getTimeOfDirectRoute(Job job, Vehicle v, VehicleRoutingTransportCosts routingCosts) { - Shipment envelope = (Shipment) job; - return routingCosts.getTransportTime(v.getStartLocation(), envelope.getPickupLocation(), 0.0, DriverImpl.noDriver(), v) + - routingCosts.getTransportTime(envelope.getPickupLocation(), envelope.getDeliveryLocation(), 0.0, DriverImpl.noDriver(), v); - } - - private static void readEnvelopes(Builder problemBuilder) throws IOException { - BufferedReader reader = new BufferedReader(new FileReader(new File("input/bicycle_messenger_demand.txt"))); - String line; - boolean firstLine = true; - while ((line = reader.readLine()) != null) { - if (firstLine) { - firstLine = false; - continue; - } - String[] tokens = line.split("\\s+"); - //define your envelope which is basically a shipment from A to B - Shipment envelope = Shipment.Builder.newInstance(tokens[1]).addSizeDimension(0, 1) - .setPickupLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(Double.parseDouble(tokens[2]), Double.parseDouble(tokens[3]))).build()) - .setDeliveryLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(Double.parseDouble(tokens[4]), Double.parseDouble(tokens[5]))).build()).build(); - problemBuilder.addJob(envelope); - } - reader.close(); - } - - private static void readMessengers(Builder problemBuilder) throws IOException { - BufferedReader reader = new BufferedReader(new FileReader(new File("input/bicycle_messenger_supply.txt"))); - String line; - boolean firstLine = true; - VehicleType messengerType = VehicleTypeImpl.Builder.newInstance("messengerType").addCapacityDimension(0, 15).setCostPerDistance(1).build(); - /* - * the algo requires some time and space to search for a valid solution. if you ommit a penalty-type, it probably throws an Exception once it cannot insert an envelope anymore - * thus, give it space by defining a penalty/shadow vehicle with higher variable and fixed costs to up the pressure to find solutions without penalty type - * - * it is important to give it the same typeId as the type you want to shadow - */ - while ((line = reader.readLine()) != null) { - if (firstLine) { - firstLine = false; - continue; - } - String[] tokens = line.split("\\s+"); - //build your vehicle - VehicleImpl vehicle = VehicleImpl.Builder.newInstance(tokens[1]) - .setStartLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(Double.parseDouble(tokens[2]), Double.parseDouble(tokens[3]))).build()) - .setReturnToDepot(false).setType(messengerType).build(); - problemBuilder.addVehicle(vehicle); - } - reader.close(); - } - -} diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/BreakExample.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/BreakExample.java deleted file mode 100644 index f635c9372..000000000 --- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/BreakExample.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.examples; - -import com.graphhopper.jsprit.analysis.toolbox.Plotter; -import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; -import com.graphhopper.jsprit.core.algorithm.box.Jsprit; -import com.graphhopper.jsprit.core.problem.Location; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.job.Break; -import com.graphhopper.jsprit.core.problem.job.Service; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.problem.solution.route.activity.TimeWindow; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl.Builder; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; -import com.graphhopper.jsprit.core.reporting.SolutionPrinter; -import com.graphhopper.jsprit.core.util.Solutions; - -import java.util.Collection; - - -public class BreakExample { - - - public static void main(String[] args) { - - - /* - * get a vehicle type-builder and build a type with the typeId "vehicleType" and one capacity dimension, i.e. weight, and capacity dimension value of 2 - */ - final int WEIGHT_INDEX = 0; - VehicleTypeImpl.Builder vehicleTypeBuilder = VehicleTypeImpl.Builder.newInstance("vehicleType") - .addCapacityDimension(WEIGHT_INDEX, 2).setCostPerWaitingTime(1.0); - VehicleType vehicleType = vehicleTypeBuilder.build(); - - /* - * get a vehicle-builder and build a vehicle located at (10,10) with type "vehicleType" - */ - Builder vehicleBuilder = Builder.newInstance("v1"); - vehicleBuilder.setStartLocation(Location.newInstance(10, 10)); - Break myFirstBreak = Break.Builder.newInstance("myFirstBreak") - .setTimeWindow(TimeWindow.newInstance(10, 15)).setServiceTime(100).build(); - vehicleBuilder.setBreak(myFirstBreak); - vehicleBuilder.setType(vehicleType); - VehicleImpl vehicle = vehicleBuilder.build(); - - - VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(Location.newInstance(0, 10)).setType(vehicleType) - .setBreak((Break) Break.Builder.newInstance("mySecondBreak").setTimeWindow(TimeWindow.newInstance(5, 10)).setServiceTime(10).build()).build(); - /* - * build services at the required locations, each with a capacity-demand of 1. - */ - Service service1 = Service.Builder.newInstance("1").addSizeDimension(WEIGHT_INDEX, 1).setLocation(Location.newInstance(5, 7)).build(); - Service service2 = Service.Builder.newInstance("2").addSizeDimension(WEIGHT_INDEX, 1).setLocation(Location.newInstance(5, 13)).build(); - - Service service3 = Service.Builder.newInstance("3").addSizeDimension(WEIGHT_INDEX, 1).setLocation(Location.newInstance(15, 7)).build(); - Service service4 = Service.Builder.newInstance("4").addSizeDimension(WEIGHT_INDEX, 1).setLocation(Location.newInstance(15, 13)).build(); - - - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - vrpBuilder.addVehicle(vehicle); - vrpBuilder.addJob(service1).addJob(service2).addJob(service3).addJob(service4).addVehicle(v2); - vrpBuilder.setFleetSize(VehicleRoutingProblem.FleetSize.FINITE); - VehicleRoutingProblem problem = vrpBuilder.build(); - - /* - * get the algorithm out-of-the-box. - */ - VehicleRoutingAlgorithm algorithm = Jsprit.Builder.newInstance(problem) - .setProperty(Jsprit.Strategy.CLUSTER_REGRET, "0.") - .setProperty(Jsprit.Strategy.CLUSTER_BEST, "0.").buildAlgorithm(); - /* - * and search a solution - */ - Collection solutions = algorithm.searchSolutions(); - - /* - * get the best - */ - VehicleRoutingProblemSolution bestSolution = Solutions.bestOf(solutions); - - SolutionPrinter.print(problem, bestSolution, SolutionPrinter.Print.VERBOSE); - - /* - * plot - */ - new Plotter(problem, bestSolution).plot("output/plot", "breaks"); - - - } - -} diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/BuildAlgorithmFromScratch.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/BuildAlgorithmFromScratch.java deleted file mode 100644 index 4660597a6..000000000 --- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/BuildAlgorithmFromScratch.java +++ /dev/null @@ -1,215 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.graphhopper.jsprit.examples; - - -import com.graphhopper.jsprit.analysis.toolbox.AlgorithmEventsRecorder; -import com.graphhopper.jsprit.core.algorithm.PrettyAlgorithmBuilder; -import com.graphhopper.jsprit.core.algorithm.SearchStrategy; -import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; -import com.graphhopper.jsprit.core.algorithm.acceptor.GreedyAcceptance; -import com.graphhopper.jsprit.core.algorithm.listener.IterationStartsListener; -import com.graphhopper.jsprit.core.algorithm.module.RuinAndRecreateModule; -import com.graphhopper.jsprit.core.algorithm.recreate.*; -import com.graphhopper.jsprit.core.algorithm.ruin.RadialRuinStrategyFactory; -import com.graphhopper.jsprit.core.algorithm.ruin.RandomRuinStrategyFactory; -import com.graphhopper.jsprit.core.algorithm.ruin.RuinStrategy; -import com.graphhopper.jsprit.core.algorithm.ruin.distance.AvgServiceAndShipmentDistance; -import com.graphhopper.jsprit.core.algorithm.selector.SelectBest; -import com.graphhopper.jsprit.core.algorithm.state.StateManager; -import com.graphhopper.jsprit.core.analysis.SolutionAnalyser; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.constraint.ConstraintManager; -import com.graphhopper.jsprit.core.problem.job.Job; -import com.graphhopper.jsprit.core.problem.solution.SolutionCostCalculator; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; -import com.graphhopper.jsprit.core.problem.vehicle.FiniteFleetManagerFactory; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleFleetManager; -import com.graphhopper.jsprit.core.reporting.SolutionPrinter; -import com.graphhopper.jsprit.core.util.Solutions; -import com.graphhopper.jsprit.instance.reader.CordeauReader; -import com.graphhopper.jsprit.util.Examples; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.List; - -public class BuildAlgorithmFromScratch { - - - public static class MyBestStrategy extends AbstractInsertionStrategy { - - private JobInsertionCostsCalculatorLight insertionCalculator; - - - public MyBestStrategy(VehicleRoutingProblem vrp, VehicleFleetManager fleetManager, StateManager stateManager, ConstraintManager constraintManager) { - super(vrp); - insertionCalculator = JobInsertionCostsCalculatorLightFactory.createStandardCalculator(vrp, fleetManager, stateManager, constraintManager); - } - - @Override - public Collection insertUnassignedJobs(Collection vehicleRoutes, Collection unassignedJobs) { - List badJobs = new ArrayList(); - List unassigned = new ArrayList(unassignedJobs); - Collections.shuffle(unassigned, random); - - for (Job j : unassigned) { - - InsertionData bestInsertionData = InsertionData.createEmptyInsertionData(); - VehicleRoute bestRoute = null; - //look for inserting unassigned job into existing route - for (VehicleRoute r : vehicleRoutes) { - InsertionData insertionData = insertionCalculator.getInsertionData(j, r, bestInsertionData.getInsertionCost()); - if (insertionData instanceof InsertionData.NoInsertionFound) continue; - if (insertionData.getInsertionCost() < bestInsertionData.getInsertionCost()) { - bestInsertionData = insertionData; - bestRoute = r; - } - } - //try whole new route - VehicleRoute empty = VehicleRoute.emptyRoute(); - InsertionData insertionData = insertionCalculator.getInsertionData(j, empty, bestInsertionData.getInsertionCost()); - if (!(insertionData instanceof InsertionData.NoInsertionFound)) { - if (insertionData.getInsertionCost() < bestInsertionData.getInsertionCost()) { - vehicleRoutes.add(empty); - insertJob(j, insertionData, empty); - } - } else { - if (bestRoute != null) insertJob(j, bestInsertionData, bestRoute); - else badJobs.add(j); - } - } - return badJobs; - } - - - } - - - public static void main(String[] args) { - Examples.createOutputFolder(); - - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - new CordeauReader(vrpBuilder).read("input/p08"); - final VehicleRoutingProblem vrp = vrpBuilder.build(); - - VehicleRoutingAlgorithm vra = createAlgorithm(vrp); - vra.setMaxIterations(2000); - AlgorithmEventsRecorder eventsRecorder = new AlgorithmEventsRecorder(vrp, "output/events.dgs.gz"); - eventsRecorder.setRecordingRange(90, 100); - vra.addListener(eventsRecorder); - - VehicleRoutingProblemSolution solution = Solutions.bestOf(vra.searchSolutions()); - SolutionPrinter.print(vrp, solution, SolutionPrinter.Print.VERBOSE); - -// AlgorithmEventsViewer viewer = new AlgorithmEventsViewer(); -// viewer.setRuinDelay(3); -// viewer.setRecreationDelay(1); -// viewer.display("output/events.dgs.gz"); - - } - - - public static VehicleRoutingAlgorithm createAlgorithm(final VehicleRoutingProblem vrp) { - - VehicleFleetManager fleetManager = new FiniteFleetManagerFactory(vrp.getVehicles()).createFleetManager(); - StateManager stateManager = new StateManager(vrp); - ConstraintManager constraintManager = new ConstraintManager(vrp, stateManager); - - /* - * insertion strategies - */ - //my custom best insertion - MyBestStrategy best = new MyBestStrategy(vrp, fleetManager, stateManager, constraintManager); - - //regret insertion - InsertionBuilder iBuilder = new InsertionBuilder(vrp, fleetManager, stateManager, constraintManager); - iBuilder.setInsertionStrategy(InsertionBuilder.Strategy.REGRET); - iBuilder.setFastRegret(true); - RegretInsertionFast regret = (RegretInsertionFast) iBuilder.build(); - DefaultScorer scoringFunction = new DefaultScorer(vrp); - scoringFunction.setDepotDistanceParam(0.0); - scoringFunction.setTimeWindowParam(0.0); - regret.setScoringFunction(scoringFunction); - - /* - * ruin strategies - */ - RuinStrategy randomRuin = new RandomRuinStrategyFactory(0.5).createStrategy(vrp); - RuinStrategy radialRuin = new RadialRuinStrategyFactory(0.3, new AvgServiceAndShipmentDistance(vrp.getTransportCosts())).createStrategy(vrp); - - /* - * objective function - */ - SolutionCostCalculator objectiveFunction = getObjectiveFunction(vrp); - - SearchStrategy firstStrategy = new SearchStrategy("firstStrategy", new SelectBest(), new GreedyAcceptance(1), objectiveFunction); - firstStrategy.addModule(new RuinAndRecreateModule("randRuinRegretIns", regret, randomRuin)); - - SearchStrategy secondStrategy = new SearchStrategy("secondStrategy", new SelectBest(), new GreedyAcceptance(1), objectiveFunction); - secondStrategy.addModule(new RuinAndRecreateModule("radRuinRegretIns", regret, radialRuin)); - - SearchStrategy thirdStrategy = new SearchStrategy("thirdStrategy", new SelectBest(), new GreedyAcceptance(1), objectiveFunction); - secondStrategy.addModule(new RuinAndRecreateModule("radRuinBestIns", regret, radialRuin)); - - PrettyAlgorithmBuilder prettyAlgorithmBuilder = PrettyAlgorithmBuilder.newInstance(vrp, fleetManager, stateManager, constraintManager); - final VehicleRoutingAlgorithm vra = prettyAlgorithmBuilder - .withStrategy(firstStrategy, 0.5).withStrategy(secondStrategy, 0.5).withStrategy(thirdStrategy, 0.2) - .addCoreStateAndConstraintStuff() - .constructInitialSolutionWith(regret, objectiveFunction) - .build(); - - //if you want to switch on/off strategies or adapt their weight within the search, you can do the following - //e.g. from iteration 50 on, switch off first strategy - //switch on again at iteration 90 with slightly higher weight - IterationStartsListener strategyAdaptor = new IterationStartsListener() { - @Override - public void informIterationStarts(int i, VehicleRoutingProblem problem, Collection solutions) { - if (i == 50) { - vra.getSearchStrategyManager().informStrategyWeightChanged("firstStrategy", 0.0); - System.out.println("switched off firstStrategy"); - } - if (i == 90) { - vra.getSearchStrategyManager().informStrategyWeightChanged("firstStrategy", 0.7); - System.out.println("switched on firstStrategy again with higher weight"); - } - } - }; - vra.addListener(strategyAdaptor); - return vra; - - } - - private static SolutionCostCalculator getObjectiveFunction(final VehicleRoutingProblem vrp) { - return new SolutionCostCalculator() { - - - @Override - public double getCosts(VehicleRoutingProblemSolution solution) { - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); - return analyser.getVariableTransportCosts() + solution.getUnassignedJobs().size() * 500.; - } - - }; - } - - -} diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/CircleExample.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/CircleExample.java deleted file mode 100644 index 455ad9d21..000000000 --- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/CircleExample.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.graphhopper.jsprit.examples; - -import com.graphhopper.jsprit.analysis.toolbox.AlgorithmEventsRecorder; -import com.graphhopper.jsprit.analysis.toolbox.AlgorithmEventsViewer; -import com.graphhopper.jsprit.analysis.toolbox.GraphStreamViewer; -import com.graphhopper.jsprit.analysis.toolbox.Plotter; -import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; -import com.graphhopper.jsprit.core.algorithm.box.GreedySchrimpfFactory; -import com.graphhopper.jsprit.core.problem.Location; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.job.Service; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; -import com.graphhopper.jsprit.core.util.Coordinate; -import com.graphhopper.jsprit.core.util.Solutions; - -import java.io.File; -import java.util.ArrayList; -import java.util.Collection; - -/** - * Created by schroeder on 27.11.14. - */ -public class CircleExample { - - public static Collection createCoordinates(double center_x, double center_y, double radius, double step) { - Collection coords = new ArrayList(); - for (double theta = 0; theta < 2 * Math.PI; theta += step) { - double x = center_x + radius * Math.cos(theta); - double y = center_y - radius * Math.sin(theta); - coords.add(Coordinate.newInstance(x, y)); - } - return coords; - } - - public static void main(String[] args) { - File dir = new File("output"); - // if the directory does not exist, create it - if (!dir.exists()) { - System.out.println("creating directory ./output"); - boolean result = dir.mkdir(); - if (result) System.out.println("./output created"); - } - - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - VehicleImpl v = VehicleImpl.Builder.newInstance("v") - .setStartLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(0, 0)).build()).build(); - vrpBuilder.addVehicle(v); - - double step = 2 * Math.PI / 50.; - Collection circle = createCoordinates(0, 0, 20, step); - int id = 1; - for (Coordinate c : circle) { - Service s = Service.Builder.newInstance(Integer.toString(id)).setLocation(Location.Builder.newInstance().setCoordinate(c).build()).build(); - vrpBuilder.addJob(s); - id++; - } - VehicleRoutingProblem vrp = vrpBuilder.build(); - - //only works with latest snapshot: 1.4.3 - AlgorithmEventsRecorder eventsRecorder = new AlgorithmEventsRecorder(vrp, "output/events.dgs.gz"); - eventsRecorder.setRecordingRange(0, 50); - - VehicleRoutingAlgorithm vra = new GreedySchrimpfFactory().createAlgorithm(vrp); - vra.setMaxIterations(50); - - //only works with latest snapshot: 1.4.3 - vra.addListener(eventsRecorder); - - VehicleRoutingProblemSolution solution = Solutions.bestOf(vra.searchSolutions()); - - new Plotter(vrp, solution).plot("output/circle.png", "circleProblem"); - new GraphStreamViewer(vrp, solution).display(); - - //only works with latest snapshot: 1.4.3 - AlgorithmEventsViewer viewer = new AlgorithmEventsViewer(); - viewer.setRuinDelay(16); - viewer.setRecreationDelay(8); - viewer.display("output/events.dgs.gz"); - - } - -} diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/ConfigureAlgorithmInCodeInsteadOfPerXml.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/ConfigureAlgorithmInCodeInsteadOfPerXml.java deleted file mode 100644 index e844c3c05..000000000 --- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/ConfigureAlgorithmInCodeInsteadOfPerXml.java +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.examples; - -import com.graphhopper.jsprit.analysis.toolbox.Plotter; -import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; -import com.graphhopper.jsprit.core.problem.Location; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.job.Service; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl.Builder; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; -import com.graphhopper.jsprit.core.reporting.SolutionPrinter; -import com.graphhopper.jsprit.core.util.Solutions; -import com.graphhopper.jsprit.io.algorithm.AlgorithmConfig; -import com.graphhopper.jsprit.io.algorithm.VehicleRoutingAlgorithms; -import com.graphhopper.jsprit.io.problem.VrpXMLWriter; -import com.graphhopper.jsprit.util.Examples; -import org.apache.commons.configuration.XMLConfiguration; - -import java.util.Collection; - - -public class ConfigureAlgorithmInCodeInsteadOfPerXml { - - public static void main(String[] args) { - /* - * some preparation - create output folder - */ - Examples.createOutputFolder(); - - /* - * get a vehicle type-builder and build a type with the typeId "vehicleType" and a capacity of 2 - */ - VehicleTypeImpl.Builder vehicleTypeBuilder = VehicleTypeImpl.Builder.newInstance("vehicleType").addCapacityDimension(0, 2); - VehicleType vehicleType = vehicleTypeBuilder.build(); - - /* - * get a vehicle-builder and build a vehicle located at (10,10) with type "vehicleType" - */ - Builder vehicleBuilder = VehicleImpl.Builder.newInstance("vehicle"); - vehicleBuilder.setStartLocation(Location.newInstance(10, 10)); - vehicleBuilder.setType(vehicleType); - VehicleImpl vehicle = vehicleBuilder.build(); - - /* - * build services at the required locations, each with a capacity-demand of 1. - */ - Service service1 = Service.Builder.newInstance("1").addSizeDimension(0, 1).setLocation(Location.newInstance(5, 7)).build(); - Service service2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(Location.newInstance(5, 13)).build(); - - Service service3 = Service.Builder.newInstance("3").addSizeDimension(0, 1).setLocation(Location.newInstance(15, 7)).build(); - Service service4 = Service.Builder.newInstance("4").addSizeDimension(0, 1).setLocation(Location.newInstance(15, 13)).build(); - - - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - vrpBuilder.addVehicle(vehicle); - vrpBuilder.addJob(service1).addJob(service2).addJob(service3).addJob(service4); - - VehicleRoutingProblem problem = vrpBuilder.build(); - - /* - * get the algorithm out-of-the-box. - */ - AlgorithmConfig algorithmConfig = getAlgorithmConfig(); - VehicleRoutingAlgorithm algorithm = VehicleRoutingAlgorithms.createAlgorithm(problem, algorithmConfig); - - /* - * and search a solution - */ - Collection solutions = algorithm.searchSolutions(); - - /* - * get the best - */ - VehicleRoutingProblemSolution bestSolution = Solutions.bestOf(solutions); - - new VrpXMLWriter(problem, solutions).write("output/problem-with-solution.xml"); - - SolutionPrinter.print(bestSolution); - - /* - * plot - */ - new Plotter(problem, bestSolution).plot("output/solution.png", "solution"); - } - - private static AlgorithmConfig getAlgorithmConfig() { - AlgorithmConfig config = new AlgorithmConfig(); - XMLConfiguration xmlConfig = config.getXMLConfiguration(); - xmlConfig.setProperty("iterations", "2000"); - xmlConfig.setProperty("construction.insertion[@name]", "bestInsertion"); - - xmlConfig.setProperty("strategy.memory", 1); - String searchStrategy = "strategy.searchStrategies.searchStrategy"; - - xmlConfig.setProperty(searchStrategy + "(0)[@name]", "random_best"); - xmlConfig.setProperty(searchStrategy + "(0).selector[@name]", "selectBest"); - xmlConfig.setProperty(searchStrategy + "(0).acceptor[@name]", "acceptNewRemoveWorst"); - xmlConfig.setProperty(searchStrategy + "(0).modules.module(0)[@name]", "ruin_and_recreate"); - xmlConfig.setProperty(searchStrategy + "(0).modules.module(0).ruin[@name]", "randomRuin"); - xmlConfig.setProperty(searchStrategy + "(0).modules.module(0).ruin.share", "0.3"); - xmlConfig.setProperty(searchStrategy + "(0).modules.module(0).insertion[@name]", "bestInsertion"); - xmlConfig.setProperty(searchStrategy + "(0).probability", "0.5"); - - xmlConfig.setProperty(searchStrategy + "(1)[@name]", "radial_best"); - xmlConfig.setProperty(searchStrategy + "(1).selector[@name]", "selectBest"); - xmlConfig.setProperty(searchStrategy + "(1).acceptor[@name]", "acceptNewRemoveWorst"); - xmlConfig.setProperty(searchStrategy + "(1).modules.module(0)[@name]", "ruin_and_recreate"); - xmlConfig.setProperty(searchStrategy + "(1).modules.module(0).ruin[@name]", "radialRuin"); - xmlConfig.setProperty(searchStrategy + "(1).modules.module(0).ruin.share", "0.15"); - xmlConfig.setProperty(searchStrategy + "(1).modules.module(0).insertion[@name]", "bestInsertion"); - xmlConfig.setProperty(searchStrategy + "(1).probability", "0.5"); - - return config; - } - -} diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/CostMatrixExample.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/CostMatrixExample.java deleted file mode 100644 index 157c685da..000000000 --- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/CostMatrixExample.java +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.examples; - -import com.graphhopper.jsprit.analysis.toolbox.Plotter; -import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; -import com.graphhopper.jsprit.core.algorithm.box.Jsprit; -import com.graphhopper.jsprit.core.problem.Location; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem.FleetSize; -import com.graphhopper.jsprit.core.problem.cost.VehicleRoutingTransportCosts; -import com.graphhopper.jsprit.core.problem.job.Service; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; -import com.graphhopper.jsprit.core.reporting.SolutionPrinter; -import com.graphhopper.jsprit.core.util.Solutions; -import com.graphhopper.jsprit.core.util.VehicleRoutingTransportCostsMatrix; -import com.graphhopper.jsprit.util.Examples; - -import java.util.Collection; - - -/** - * Illustrates how you can use jsprit with an already compiled distance and time matrix. - * - * @author schroeder - */ -public class CostMatrixExample { - - public static void main(String[] args) { - /* - * some preparation - create output folder - */ - Examples.createOutputFolder(); - - VehicleType type = VehicleTypeImpl.Builder.newInstance("type").addCapacityDimension(0, 2).setCostPerDistance(1).setCostPerTime(2).build(); - VehicleImpl vehicle = VehicleImpl.Builder.newInstance("vehicle") - .setStartLocation(Location.newInstance("0")).setType(type).build(); - - Service s1 = Service.Builder.newInstance("1").addSizeDimension(0, 1).setLocation(Location.newInstance("1")).build(); - Service s2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(Location.newInstance("2")).build(); - Service s3 = Service.Builder.newInstance("3").addSizeDimension(0, 1).setLocation(Location.newInstance("3")).build(); - - - /* - * Assume the following symmetric distance-matrix - * from,to,distance - * 0,1,10.0 - * 0,2,20.0 - * 0,3,5.0 - * 1,2,4.0 - * 1,3,1.0 - * 2,3,2.0 - * - * and this time-matrix - * 0,1,5.0 - * 0,2,10.0 - * 0,3,2.5 - * 1,2,2.0 - * 1,3,0.5 - * 2,3,1.0 - */ - //define a matrix-builder building a symmetric matrix - VehicleRoutingTransportCostsMatrix.Builder costMatrixBuilder = VehicleRoutingTransportCostsMatrix.Builder.newInstance(true); - costMatrixBuilder.addTransportDistance("0", "1", 10.0); - costMatrixBuilder.addTransportDistance("0", "2", 20.0); - costMatrixBuilder.addTransportDistance("0", "3", 5.0); - costMatrixBuilder.addTransportDistance("1", "2", 4.0); - costMatrixBuilder.addTransportDistance("1", "3", 1.0); - costMatrixBuilder.addTransportDistance("2", "3", 2.0); - - costMatrixBuilder.addTransportTime("0", "1", 10.0); - costMatrixBuilder.addTransportTime("0", "2", 20.0); - costMatrixBuilder.addTransportTime("0", "3", 5.0); - costMatrixBuilder.addTransportTime("1", "2", 4.0); - costMatrixBuilder.addTransportTime("1", "3", 1.0); - costMatrixBuilder.addTransportTime("2", "3", 2.0); - - VehicleRoutingTransportCosts costMatrix = costMatrixBuilder.build(); - - VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().setFleetSize(FleetSize.INFINITE).setRoutingCost(costMatrix) - .addVehicle(vehicle).addJob(s1).addJob(s2).addJob(s3).build(); - - VehicleRoutingAlgorithm vra = Jsprit.createAlgorithm(vrp); - - Collection solutions = vra.searchSolutions(); - - SolutionPrinter.print(Solutions.bestOf(solutions)); - - new Plotter(vrp, Solutions.bestOf(solutions)).plot("output/yo.png", "po"); - - } - -} diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/EnRoutePickupAndDeliveryWithMultipleDepotsAndOpenRoutesExample.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/EnRoutePickupAndDeliveryWithMultipleDepotsAndOpenRoutesExample.java deleted file mode 100644 index 902fb13b7..000000000 --- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/EnRoutePickupAndDeliveryWithMultipleDepotsAndOpenRoutesExample.java +++ /dev/null @@ -1,172 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.examples; - -import com.graphhopper.jsprit.analysis.toolbox.GraphStreamViewer; -import com.graphhopper.jsprit.analysis.toolbox.GraphStreamViewer.Label; -import com.graphhopper.jsprit.analysis.toolbox.Plotter; -import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; -import com.graphhopper.jsprit.core.algorithm.box.Jsprit; -import com.graphhopper.jsprit.core.problem.Location; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem.FleetSize; -import com.graphhopper.jsprit.core.problem.job.Shipment; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl.Builder; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; -import com.graphhopper.jsprit.core.reporting.SolutionPrinter; -import com.graphhopper.jsprit.core.util.Coordinate; -import com.graphhopper.jsprit.core.util.Solutions; -import com.graphhopper.jsprit.io.problem.VrpXMLWriter; -import com.graphhopper.jsprit.util.Examples; - -import java.util.Arrays; -import java.util.Collection; - - -public class EnRoutePickupAndDeliveryWithMultipleDepotsAndOpenRoutesExample { - - public static void main(String[] args) { - /* - * some preparation - create output folder - */ - Examples.createOutputFolder(); - - /* - * get a vehicle type-builder and build a type with the typeId "vehicleType" and a capacity of 2 - */ - VehicleTypeImpl.Builder vehicleTypeBuilder = VehicleTypeImpl.Builder.newInstance("vehicleType").addCapacityDimension(0, 2); - vehicleTypeBuilder.setCostPerDistance(1.0); - VehicleType vehicleType = vehicleTypeBuilder.build(); - - /* - * define two vehicles and their start-locations - * - * the first two do need to return to depot - */ - Builder vehicleBuilder1 = VehicleImpl.Builder.newInstance("vehicles@[10,10]"); - vehicleBuilder1.setStartLocation(loc(Coordinate.newInstance(10, 10))).setReturnToDepot(false); - vehicleBuilder1.setType(vehicleType); - VehicleImpl vehicle1 = vehicleBuilder1.build(); - - Builder vehicleBuilder2 = VehicleImpl.Builder.newInstance("vehicles@[30,30]"); - vehicleBuilder2.setStartLocation(loc(Coordinate.newInstance(30, 30))).setReturnToDepot(false); - vehicleBuilder2.setType(vehicleType); - VehicleImpl vehicle2 = vehicleBuilder2.build(); - - Builder vehicleBuilder3 = VehicleImpl.Builder.newInstance("vehicles@[10,30]"); - vehicleBuilder3.setStartLocation(loc(Coordinate.newInstance(10, 30))); - vehicleBuilder3.setType(vehicleType); - VehicleImpl vehicle3 = vehicleBuilder3.build(); - - Builder vehicleBuilder4 = VehicleImpl.Builder.newInstance("vehicles@[30,10]"); - vehicleBuilder4.setStartLocation(loc(Coordinate.newInstance(30, 10))); - vehicleBuilder4.setType(vehicleType); - VehicleImpl vehicle4 = vehicleBuilder4.build(); - - /* - * build shipments at the required locations, each with a capacity-demand of 1. - - */ - - Shipment shipment1 = Shipment.Builder.newInstance("1").addSizeDimension(0, 1).setPickupLocation(loc(Coordinate.newInstance(5, 7))).setDeliveryLocation(loc(Coordinate.newInstance(6, 9))).build(); - Shipment shipment2 = Shipment.Builder.newInstance("2").addSizeDimension(0, 1).setPickupLocation(loc(Coordinate.newInstance(5, 13))).setDeliveryLocation(loc(Coordinate.newInstance(6, 11))).build(); - - Shipment shipment3 = Shipment.Builder.newInstance("3").addSizeDimension(0, 1).setPickupLocation(loc(Coordinate.newInstance(15, 7))).setDeliveryLocation(loc(Coordinate.newInstance(14, 9))).build(); - Shipment shipment4 = Shipment.Builder.newInstance("4").addSizeDimension(0, 1).setPickupLocation(loc(Coordinate.newInstance(15, 13))).setDeliveryLocation(loc(Coordinate.newInstance(14, 11))).build(); - - Shipment shipment5 = Shipment.Builder.newInstance("5").addSizeDimension(0, 1).setPickupLocation(loc(Coordinate.newInstance(25, 27))).setDeliveryLocation(loc(Coordinate.newInstance(26, 29))).build(); - Shipment shipment6 = Shipment.Builder.newInstance("6").addSizeDimension(0, 1).setPickupLocation(loc(Coordinate.newInstance(25, 33))).setDeliveryLocation(loc(Coordinate.newInstance(26, 31))).build(); - - Shipment shipment7 = Shipment.Builder.newInstance("7").addSizeDimension(0, 1).setPickupLocation(loc(Coordinate.newInstance(35, 27))).setDeliveryLocation(loc(Coordinate.newInstance(34, 29))).build(); - Shipment shipment8 = Shipment.Builder.newInstance("8").addSizeDimension(0, 1).setPickupLocation(loc(Coordinate.newInstance(35, 33))).setDeliveryLocation(loc(Coordinate.newInstance(34, 31))).build(); - - Shipment shipment9 = Shipment.Builder.newInstance("9").addSizeDimension(0, 1).setPickupLocation(loc(Coordinate.newInstance(5, 27))).setDeliveryLocation(loc(Coordinate.newInstance(6, 29))).build(); - Shipment shipment10 = Shipment.Builder.newInstance("10").addSizeDimension(0, 1).setPickupLocation(loc(Coordinate.newInstance(5, 33))).setDeliveryLocation(loc(Coordinate.newInstance(6, 31))).build(); - - Shipment shipment11 = Shipment.Builder.newInstance("11").addSizeDimension(0, 1).setPickupLocation(loc(Coordinate.newInstance(15, 27))).setDeliveryLocation(loc(Coordinate.newInstance(14, 29))).build(); - Shipment shipment12 = Shipment.Builder.newInstance("12").addSizeDimension(0, 1).setPickupLocation(loc(Coordinate.newInstance(15, 33))).setDeliveryLocation(loc(Coordinate.newInstance(14, 31))).build(); - - Shipment shipment13 = Shipment.Builder.newInstance("13").addSizeDimension(0, 1).setPickupLocation(loc(Coordinate.newInstance(25, 7))).setDeliveryLocation(loc(Coordinate.newInstance(26, 9))).build(); - Shipment shipment14 = Shipment.Builder.newInstance("14").addSizeDimension(0, 1).setPickupLocation(loc(Coordinate.newInstance(25, 13))).setDeliveryLocation(loc(Coordinate.newInstance(26, 11))).build(); - - Shipment shipment15 = Shipment.Builder.newInstance("15").addSizeDimension(0, 1).setPickupLocation(loc(Coordinate.newInstance(35, 7))).setDeliveryLocation(loc(Coordinate.newInstance(34, 9))).build(); - Shipment shipment16 = Shipment.Builder.newInstance("16").addSizeDimension(0, 1).setPickupLocation(loc(Coordinate.newInstance(35, 13))).setDeliveryLocation(loc(Coordinate.newInstance(34, 11))).build(); - - - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - vrpBuilder.addVehicle(vehicle1).addVehicle(vehicle2).addVehicle(vehicle3).addVehicle(vehicle4); - vrpBuilder.addJob(shipment1).addJob(shipment2).addJob(shipment3).addJob(shipment4); - vrpBuilder.addJob(shipment5).addJob(shipment6).addJob(shipment7).addJob(shipment8); - vrpBuilder.addJob(shipment9).addJob(shipment10).addJob(shipment11).addJob(shipment12); - vrpBuilder.addJob(shipment13).addJob(shipment14).addJob(shipment15).addJob(shipment16); - - vrpBuilder.setFleetSize(FleetSize.FINITE); - VehicleRoutingProblem problem = vrpBuilder.build(); - - /* - * get the algorithm out-of-the-box. - */ - VehicleRoutingAlgorithm algorithm = Jsprit.createAlgorithm(problem); -// algorithm.setMaxIterations(30000); - /* - * and search a solution - */ - Collection solutions = algorithm.searchSolutions(); - - /* - * get the best - */ - VehicleRoutingProblemSolution bestSolution = Solutions.bestOf(solutions); - - /* - * write out problem and solution to xml-file - */ - new VrpXMLWriter(problem, solutions).write("output/shipment-problem-with-solution.xml"); - - /* - * print nRoutes and totalCosts of bestSolution - */ - SolutionPrinter.print(bestSolution); - - /* - * plot problem without solution - */ - Plotter problemPlotter = new Plotter(problem); - problemPlotter.plotShipments(true); - problemPlotter.plot("output/enRoutePickupAndDeliveryWithMultipleLocationsExample_problem.png", "en-route pickup and delivery"); - - /* - * plot problem with solution - */ - Plotter solutionPlotter = new Plotter(problem, Arrays.asList(Solutions.bestOf(solutions).getRoutes().iterator().next())); - solutionPlotter.plotShipments(true); - solutionPlotter.plot("output/enRoutePickupAndDeliveryWithMultipleLocationsExample_solution.png", "en-route pickup and delivery"); - - new GraphStreamViewer(problem, Solutions.bestOf(solutions)).labelWith(Label.ACTIVITY).setRenderDelay(100).setRenderShipments(true).display(); - - } - - private static Location loc(Coordinate coordinate) { - return Location.Builder.newInstance().setCoordinate(coordinate).build(); - } - -} - diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/HVRPExample.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/HVRPExample.java deleted file mode 100644 index 8284e532d..000000000 --- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/HVRPExample.java +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.examples; - -import com.graphhopper.jsprit.analysis.toolbox.GraphStreamViewer; -import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; -import com.graphhopper.jsprit.core.algorithm.box.Jsprit; -import com.graphhopper.jsprit.core.problem.Location; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem.FleetSize; -import com.graphhopper.jsprit.core.problem.job.Service; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; -import com.graphhopper.jsprit.core.reporting.SolutionPrinter; -import com.graphhopper.jsprit.core.util.Solutions; - -import java.util.Collection; - -/** - * customers (id,x,y,demand) - * 1 22 22 18 - * 2 36 26 26 - * 3 21 45 11 - * 4 45 35 30 - * 5 55 20 21 - * 6 33 34 19 - * 7 50 50 15 - * 8 55 45 16 - * 9 26 59 29 - * 10 40 66 26 - * 11 55 65 37 - * 12 35 51 16 - * 13 62 35 12 - * 14 62 57 31 - * 15 62 24 8 - * 16 21 36 19 - * 17 33 44 20 - * 18 9 56 13 - * 19 62 48 15 - * 20 66 14 22 - *

- * vehicles (id,cap,fixed costs, perDistance, #vehicles) at location (40,40) - * 1 120 1000 1.0 2 - * 2 160 1500 1.1 1 - * 3 300 3500 1.4 1 - * - * @author schroeder - */ -public class HVRPExample { - - - public static void main(String[] args) { - - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - - //add customers - vrpBuilder.addJob(Service.Builder.newInstance("1").addSizeDimension(0, 18).setLocation(Location.newInstance(22, 22)).build()); - vrpBuilder.addJob(Service.Builder.newInstance("2").addSizeDimension(0, 26).setLocation(Location.newInstance(36, 26)).build()); - vrpBuilder.addJob(Service.Builder.newInstance("3").addSizeDimension(0, 11).setLocation(Location.newInstance(21, 45)).build()); - vrpBuilder.addJob(Service.Builder.newInstance("4").addSizeDimension(0, 30).setLocation(Location.newInstance(45, 35)).build()); - vrpBuilder.addJob(Service.Builder.newInstance("5").addSizeDimension(0, 21).setLocation(Location.newInstance(55, 20)).build()); - vrpBuilder.addJob(Service.Builder.newInstance("6").addSizeDimension(0, 19).setLocation(Location.newInstance(33, 34)).build()); - vrpBuilder.addJob(Service.Builder.newInstance("7").addSizeDimension(0, 15).setLocation(Location.newInstance(50, 50)).build()); - vrpBuilder.addJob(Service.Builder.newInstance("8").addSizeDimension(0, 16).setLocation(Location.newInstance(55, 45)).build()); - vrpBuilder.addJob(Service.Builder.newInstance("9").addSizeDimension(0, 29).setLocation(Location.newInstance(26, 59)).build()); - vrpBuilder.addJob(Service.Builder.newInstance("10").addSizeDimension(0, 26).setLocation(Location.newInstance(40, 66)).build()); - vrpBuilder.addJob(Service.Builder.newInstance("11").addSizeDimension(0, 37).setLocation(Location.newInstance(55, 56)).build()); - vrpBuilder.addJob(Service.Builder.newInstance("12").addSizeDimension(0, 16).setLocation(Location.newInstance(35, 51)).build()); - vrpBuilder.addJob(Service.Builder.newInstance("13").addSizeDimension(0, 12).setLocation(Location.newInstance(62, 35)).build()); - vrpBuilder.addJob(Service.Builder.newInstance("14").addSizeDimension(0, 31).setLocation(Location.newInstance(62, 57)).build()); - vrpBuilder.addJob(Service.Builder.newInstance("15").addSizeDimension(0, 8).setLocation(Location.newInstance(62, 24)).build()); - vrpBuilder.addJob(Service.Builder.newInstance("16").addSizeDimension(0, 19).setLocation(Location.newInstance(21, 36)).build()); - vrpBuilder.addJob(Service.Builder.newInstance("17").addSizeDimension(0, 20).setLocation(Location.newInstance(33, 44)).build()); - vrpBuilder.addJob(Service.Builder.newInstance("18").addSizeDimension(0, 13).setLocation(Location.newInstance(9, 56)).build()); - vrpBuilder.addJob(Service.Builder.newInstance("19").addSizeDimension(0, 15).setLocation(Location.newInstance(62, 48)).build()); - vrpBuilder.addJob(Service.Builder.newInstance("20").addSizeDimension(0, 22).setLocation(Location.newInstance(66, 14)).build()); - - - //add vehicle - finite fleet - //2xtype1 - VehicleType type1 = VehicleTypeImpl.Builder.newInstance("type_1").addCapacityDimension(0, 120).setCostPerDistance(1.0).build(); - VehicleImpl vehicle1_1 = VehicleImpl.Builder.newInstance("1_1").setStartLocation(Location.newInstance(40, 40)).setType(type1).build(); - vrpBuilder.addVehicle(vehicle1_1); - VehicleImpl vehicle1_2 = VehicleImpl.Builder.newInstance("1_2").setStartLocation(Location.newInstance(40, 40)).setType(type1).build(); - vrpBuilder.addVehicle(vehicle1_2); - //1xtype2 - VehicleType type2 = VehicleTypeImpl.Builder.newInstance("type_2").addCapacityDimension(0, 160).setCostPerDistance(1.1).build(); - VehicleImpl vehicle2_1 = VehicleImpl.Builder.newInstance("2_1").setStartLocation(Location.newInstance(40, 40)).setType(type2).build(); - vrpBuilder.addVehicle(vehicle2_1); - //1xtype3 - VehicleType type3 = VehicleTypeImpl.Builder.newInstance("type_3").addCapacityDimension(0, 300).setCostPerDistance(1.3).build(); - VehicleImpl vehicle3_1 = VehicleImpl.Builder.newInstance("3_1").setStartLocation(Location.newInstance(40, 40)).setType(type3).build(); - vrpBuilder.addVehicle(vehicle3_1); - - //add penaltyVehicles to allow invalid solutions temporarily -// vrpBuilder.addPenaltyVehicles(5, 1000); - - //set fleetsize finite - vrpBuilder.setFleetSize(FleetSize.FINITE); - - //build problem - VehicleRoutingProblem vrp = vrpBuilder.build(); - - VehicleRoutingAlgorithm vra = Jsprit.createAlgorithm(vrp); - Collection solutions = vra.searchSolutions(); - - VehicleRoutingProblemSolution best = Solutions.bestOf(solutions); - - SolutionPrinter.print(vrp, best, SolutionPrinter.Print.VERBOSE); - - new GraphStreamViewer(vrp, best).setRenderDelay(100).display(); - - } - -} diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/JobAndActivityDependenciesExample.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/JobAndActivityDependenciesExample.java deleted file mode 100644 index 8fe754613..000000000 --- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/JobAndActivityDependenciesExample.java +++ /dev/null @@ -1,279 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.graphhopper.jsprit.examples; - - -import com.graphhopper.jsprit.analysis.toolbox.GraphStreamViewer; -import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; -import com.graphhopper.jsprit.core.algorithm.box.Jsprit; -import com.graphhopper.jsprit.core.algorithm.state.StateId; -import com.graphhopper.jsprit.core.algorithm.state.StateManager; -import com.graphhopper.jsprit.core.algorithm.state.StateUpdater; -import com.graphhopper.jsprit.core.problem.Location; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.constraint.ConstraintManager; -import com.graphhopper.jsprit.core.problem.constraint.HardActivityConstraint; -import com.graphhopper.jsprit.core.problem.constraint.HardRouteConstraint; -import com.graphhopper.jsprit.core.problem.job.Service; -import com.graphhopper.jsprit.core.problem.misc.JobInsertionContext; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; -import com.graphhopper.jsprit.core.problem.solution.route.activity.ActivityVisitor; -import com.graphhopper.jsprit.core.problem.solution.route.activity.TourActivity; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; -import com.graphhopper.jsprit.core.reporting.SolutionPrinter; -import com.graphhopper.jsprit.core.util.Solutions; - -import java.util.Collection; - -/** - * Illustrates dependencies between jobs. - *

- * The hard requirement here is that three jobs with name "get key", "use key" and "deliver key" need to - * be not only in loose sequence in one particular route but also one after another (without any other activities - * between them). - */ -public class JobAndActivityDependenciesExample { - - static class KeyStatusUpdater implements StateUpdater, ActivityVisitor { - - StateManager stateManager; - - StateId keyPickedStateId; - - StateId keyUsedStateId; - - private StateId keyDeliveredStateId; - - private VehicleRoute route; - - - KeyStatusUpdater(StateManager stateManager, StateId keyPickedStateId, StateId keyUsedStateId, StateId keyDeliveredStateId) { - this.stateManager = stateManager; - this.keyPickedStateId = keyPickedStateId; - this.keyUsedStateId = keyUsedStateId; - this.keyDeliveredStateId = keyDeliveredStateId; - } - - @Override - public void begin(VehicleRoute route) { - this.route = route; - } - - @Override - public void visit(TourActivity activity) { - if (((TourActivity.JobActivity) activity).getJob().getName().equals("use key")) { - stateManager.putProblemState(keyUsedStateId, VehicleRoute.class, route); - } else if (((TourActivity.JobActivity) activity).getJob().getName().equals("get key")) { - stateManager.putProblemState(keyPickedStateId, VehicleRoute.class, route); - } else if (((TourActivity.JobActivity) activity).getJob().getName().equals("deliver key")) { - stateManager.putProblemState(keyDeliveredStateId, VehicleRoute.class, route); - } - } - - @Override - public void finish() { - } - } - - static class GetUseAndDeliverHardRouteContraint implements HardRouteConstraint { - - StateManager stateManager; - - StateId keyPickedStateId; - - StateId keyUsedStateId; - - StateId keyDeliveredStateId; - - public GetUseAndDeliverHardRouteContraint(StateManager stateManager, StateId keyPickedStateId, StateId keyUsedStateId, StateId keyDeliveredStateId) { - this.stateManager = stateManager; - this.keyPickedStateId = keyPickedStateId; - this.keyUsedStateId = keyUsedStateId; - this.keyDeliveredStateId = keyDeliveredStateId; - } - - @Override - public boolean fulfilled(JobInsertionContext iFacts) { - if (iFacts.getJob().getName().equals("get key") || iFacts.getJob().getName().equals("use key") - || iFacts.getJob().getName().equals("deliver key")) { - VehicleRoute routeOfPickupKey = stateManager.getProblemState(keyPickedStateId, VehicleRoute.class); - VehicleRoute routeOfUseKey = stateManager.getProblemState(keyUsedStateId, VehicleRoute.class); - VehicleRoute routeOfDeliverKey = stateManager.getProblemState(keyDeliveredStateId, VehicleRoute.class); - - if (routeOfPickupKey != null) { - if (routeOfPickupKey != iFacts.getRoute()) return false; - } - if (routeOfUseKey != null) { - if (routeOfUseKey != iFacts.getRoute()) return false; - } - if (routeOfDeliverKey != null) { - if (routeOfDeliverKey != iFacts.getRoute()) return false; - } - } - return true; - - } - } - - static class GetUseAndDeliverKeySimpleHardActivityConstraint implements HardActivityConstraint { - - StateManager stateManager; - - StateId keyPickedStateId; - - StateId keyUsedStateId; - - StateId keyDeliveredStateId; - - GetUseAndDeliverKeySimpleHardActivityConstraint(StateManager stateManager, StateId keyPickedStateId, StateId keyUsedStateId, StateId keyDeliveredStateId) { - this.stateManager = stateManager; - this.keyPickedStateId = keyPickedStateId; - this.keyUsedStateId = keyUsedStateId; - this.keyDeliveredStateId = keyDeliveredStateId; - } - - @Override - public ConstraintsStatus fulfilled(JobInsertionContext iFacts, TourActivity prevAct, TourActivity newAct, TourActivity nextAct, double prevActDepTime) { - - VehicleRoute routeOfPickupKey = stateManager.getProblemState(keyPickedStateId, VehicleRoute.class); - VehicleRoute routeOfUseKey = stateManager.getProblemState(keyUsedStateId, VehicleRoute.class); - VehicleRoute routeOfDeliverKey = stateManager.getProblemState(keyDeliveredStateId, VehicleRoute.class); - - if (!isPickupKey(newAct) && !isUseKey(newAct) && !isDeliverKey(newAct)) { - if (isPickupKey(prevAct) && isUseKey(nextAct)) return ConstraintsStatus.NOT_FULFILLED; - if (isPickupKey(prevAct) && isDeliverKey(nextAct)) return ConstraintsStatus.NOT_FULFILLED; - if (isUseKey(prevAct) && isDeliverKey(nextAct)) return ConstraintsStatus.NOT_FULFILLED; - } - if (isPickupKey(newAct)) { - if (routeOfUseKey != null) { - if (!isUseKey(nextAct)) return ConstraintsStatus.NOT_FULFILLED; - } - if (routeOfDeliverKey != null) { - if (!isDeliverKey(nextAct)) return ConstraintsStatus.NOT_FULFILLED; - } - return ConstraintsStatus.FULFILLED; - } - if (isUseKey(newAct)) { - if (routeOfPickupKey != null) { - if (!isPickupKey(prevAct)) return ConstraintsStatus.NOT_FULFILLED; - } - if (routeOfDeliverKey != null) { - if (!isDeliverKey(nextAct)) return ConstraintsStatus.NOT_FULFILLED; - } - return ConstraintsStatus.FULFILLED; - } - if (isDeliverKey(newAct)) { - if (routeOfUseKey != null) { - if (!isUseKey(prevAct)) return ConstraintsStatus.NOT_FULFILLED; - } - } - return ConstraintsStatus.FULFILLED; - } - - private boolean isPickupKey(TourActivity act) { - if (!(act instanceof TourActivity.JobActivity)) return false; - return ((TourActivity.JobActivity) act).getJob().getName().equals("get key"); - } - - private boolean isUseKey(TourActivity act) { - if (!(act instanceof TourActivity.JobActivity)) return false; - return ((TourActivity.JobActivity) act).getJob().getName().equals("use key"); - } - - private boolean isDeliverKey(TourActivity act) { - if (!(act instanceof TourActivity.JobActivity)) return false; - return ((TourActivity.JobActivity) act).getJob().getName().equals("deliver key"); - } - - - } - - public static void main(String[] args) { - - VehicleImpl driver1 = VehicleImpl.Builder.newInstance("driver1") - .addSkill("driver1") - .setStartLocation(Location.newInstance(0, 0)).setReturnToDepot(false).build(); - - VehicleImpl driver3 = VehicleImpl.Builder.newInstance("driver3") - .addSkill("driver3") - .setStartLocation(Location.newInstance(-3, 5)).setReturnToDepot(true).build(); - - Service s1 = Service.Builder.newInstance("s1") - .addRequiredSkill("driver1") - .setName("install new device") - .setLocation(Location.newInstance(2, 2)).build(); - Service s2 = Service.Builder.newInstance("s2") - .addRequiredSkill("driver3") - .setName("deliver key") - .setLocation(Location.newInstance(2, 4)).build(); - - Service s3 = Service.Builder.newInstance("s3") - .addRequiredSkill("driver1") - .setName("repair heater") - .setLocation(Location.newInstance(-2, 2)).build(); - - Service s4 = Service.Builder.newInstance("s4") - .addRequiredSkill("driver3") - .setName("get key") - .setLocation(Location.newInstance(-2.3, 4)).build(); - - Service s5 = Service.Builder.newInstance("s5") - .addRequiredSkill("driver1") - .setName("cleaning") - .setLocation(Location.newInstance(1, 5)).build(); - - Service s6 = Service.Builder.newInstance("s6") - .addRequiredSkill("driver3") - .setName("use key") - .setLocation(Location.newInstance(-2, 3)).build(); - - Service s7 = Service.Builder.newInstance("s7") - .addRequiredSkill("driver3") - .setName("maintenance") - .setLocation(Location.newInstance(-1.7, 3.5)).build(); - - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance().setFleetSize(VehicleRoutingProblem.FleetSize.FINITE) - .addJob(s1).addJob(s2).addJob(s3).addJob(s4).addJob(s5).addJob(s6).addJob(s7) - .addVehicle(driver1).addVehicle(driver3); - - VehicleRoutingProblem vrp = vrpBuilder.build(); - - StateManager stateManager = new StateManager(vrp); - StateId keyPicked = stateManager.createStateId("key-picked"); - StateId keyUsed = stateManager.createStateId("key-used"); - StateId keyDelivered = stateManager.createStateId("key-delivered"); - stateManager.addStateUpdater(new KeyStatusUpdater(stateManager, keyPicked, keyUsed, keyDelivered)); - - ConstraintManager constraintManager = new ConstraintManager(vrp, stateManager); - constraintManager.addConstraint(new GetUseAndDeliverKeySimpleHardActivityConstraint(stateManager, keyPicked, keyUsed, keyDelivered), ConstraintManager.Priority.CRITICAL); - constraintManager.addConstraint(new GetUseAndDeliverHardRouteContraint(stateManager, keyPicked, keyUsed, keyDelivered)); - - VehicleRoutingAlgorithm vra = Jsprit.Builder.newInstance(vrp).setStateAndConstraintManager(stateManager,constraintManager).buildAlgorithm(); - vra.setMaxIterations(100); - - Collection solutions = vra.searchSolutions(); - - SolutionPrinter.print(vrp, Solutions.bestOf(solutions), SolutionPrinter.Print.VERBOSE); - - new GraphStreamViewer(vrp, Solutions.bestOf(solutions)).labelWith(GraphStreamViewer.Label.JOB_NAME).display(); - - } - -} diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/MultipleDepotExample.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/MultipleDepotExample.java deleted file mode 100644 index a1b4829e7..000000000 --- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/MultipleDepotExample.java +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.examples; - -import com.graphhopper.jsprit.analysis.toolbox.AlgorithmSearchProgressChartListener; -import com.graphhopper.jsprit.analysis.toolbox.GraphStreamViewer; -import com.graphhopper.jsprit.analysis.toolbox.Plotter; -import com.graphhopper.jsprit.analysis.toolbox.StopWatch; -import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; -import com.graphhopper.jsprit.core.algorithm.box.Jsprit; -import com.graphhopper.jsprit.core.algorithm.listener.VehicleRoutingAlgorithmListeners.Priority; -import com.graphhopper.jsprit.core.problem.Location; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem.FleetSize; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; -import com.graphhopper.jsprit.core.reporting.SolutionPrinter; -import com.graphhopper.jsprit.core.util.Coordinate; -import com.graphhopper.jsprit.core.util.Solutions; -import com.graphhopper.jsprit.io.problem.VrpXMLReader; -import com.graphhopper.jsprit.util.Examples; - -import java.util.Arrays; -import java.util.Collection; - - -public class MultipleDepotExample { - - public static void main(String[] args) { - /* - * some preparation - create output folder - */ - Examples.createOutputFolder(); - - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - /* - * Read cordeau-instance p01, BUT only its services without any vehicles - */ - new VrpXMLReader(vrpBuilder).read("input/vrp_cordeau_01.xml"); - - /* - * add vehicles with its depots - * 4 depots: - * (20,20) - * (30,40) - * (50,30) - * (60,50) - * - * each with 4 vehicles each with a capacity of 80 - */ - int nuOfVehicles = 4; - int capacity = 80; - Coordinate firstDepotCoord = Coordinate.newInstance(20, 20); - Coordinate second = Coordinate.newInstance(30, 40); - Coordinate third = Coordinate.newInstance(50, 30); - Coordinate fourth = Coordinate.newInstance(60, 50); - - int depotCounter = 1; - for (Coordinate depotCoord : Arrays.asList(firstDepotCoord, second, third, fourth)) { - for (int i = 0; i < nuOfVehicles; i++) { - VehicleTypeImpl vehicleType = VehicleTypeImpl.Builder.newInstance(depotCounter + "_type").addCapacityDimension(0, capacity).setCostPerDistance(1.0).build(); - VehicleImpl vehicle = VehicleImpl.Builder.newInstance(depotCounter + "_" + (i + 1) + "_vehicle").setStartLocation(Location.newInstance(depotCoord.getX(), depotCoord.getY())).setType(vehicleType).build(); - vrpBuilder.addVehicle(vehicle); - } - depotCounter++; - } - - /* - * define problem with finite fleet - */ - vrpBuilder.setFleetSize(FleetSize.FINITE); - - /* - * build the problem - */ - VehicleRoutingProblem vrp = vrpBuilder.build(); - - /* - * plot to see how the problem looks like - */ -// SolutionPlotter.plotVrpAsPNG(vrp, "output/problem01.png", "p01"); - - /* - * solve the problem - */ - VehicleRoutingAlgorithm vra = Jsprit.Builder.newInstance(vrp).setProperty(Jsprit.Parameter.THREADS, "5").buildAlgorithm(); - vra.getAlgorithmListeners().addListener(new StopWatch(), Priority.HIGH); - vra.getAlgorithmListeners().addListener(new AlgorithmSearchProgressChartListener("output/progress.png")); - Collection solutions = vra.searchSolutions(); - - SolutionPrinter.print(Solutions.bestOf(solutions)); - - new Plotter(vrp, Solutions.bestOf(solutions)).setLabel(Plotter.Label.ID).plot("output/p01_solution.png", "p01"); - - new GraphStreamViewer(vrp, Solutions.bestOf(solutions)).setRenderDelay(100).display(); - - } - -} diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/MultipleDepotExample2.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/MultipleDepotExample2.java deleted file mode 100644 index 1145f31fc..000000000 --- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/MultipleDepotExample2.java +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.examples; - -import com.graphhopper.jsprit.analysis.toolbox.AlgorithmSearchProgressChartListener; -import com.graphhopper.jsprit.analysis.toolbox.GraphStreamViewer; -import com.graphhopper.jsprit.analysis.toolbox.Plotter; -import com.graphhopper.jsprit.analysis.toolbox.StopWatch; -import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; -import com.graphhopper.jsprit.core.algorithm.box.Jsprit; -import com.graphhopper.jsprit.core.algorithm.listener.VehicleRoutingAlgorithmListeners.Priority; -import com.graphhopper.jsprit.core.problem.Location; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem.FleetSize; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; -import com.graphhopper.jsprit.core.reporting.SolutionPrinter; -import com.graphhopper.jsprit.core.util.Coordinate; -import com.graphhopper.jsprit.core.util.Solutions; -import com.graphhopper.jsprit.instance.reader.CordeauReader; -import com.graphhopper.jsprit.util.Examples; - -import java.util.Arrays; -import java.util.Collection; - - -public class MultipleDepotExample2 { - - - public static void main(String[] args) { - /* - * some preparation - create output folder - */ - Examples.createOutputFolder(); - - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - /* - * Read cordeau-instance p01, BUT only its services without any vehicles - */ - new CordeauReader(vrpBuilder).read("input/p08"); - - /* - * add vehicles with its depots - * 2 depots: - * (-33,33) - * (33,-33) - * - * each with 14 vehicles each with a capacity of 500 and a maximum duration of 310 - */ - int nuOfVehicles = 13; - int capacity = 500; - double maxDuration = 310; - Coordinate firstDepotCoord = Coordinate.newInstance(-33, 33); - Coordinate second = Coordinate.newInstance(33, -33); - - int depotCounter = 1; - for (Coordinate depotCoord : Arrays.asList(firstDepotCoord, second)) { - for (int i = 0; i < nuOfVehicles; i++) { - VehicleType vehicleType = VehicleTypeImpl.Builder.newInstance(depotCounter + "_type") - .addCapacityDimension(0, capacity).setCostPerDistance(1.0).build(); - String vehicleId = depotCounter + "_" + (i + 1) + "_vehicle"; - VehicleImpl.Builder vehicleBuilder = VehicleImpl.Builder.newInstance(vehicleId); - vehicleBuilder.setStartLocation(Location.newInstance(depotCoord.getX(), depotCoord.getY())); - vehicleBuilder.setType(vehicleType); - vehicleBuilder.setLatestArrival(maxDuration); - VehicleImpl vehicle = vehicleBuilder.build(); - vrpBuilder.addVehicle(vehicle); - } - depotCounter++; - } - - - /* - * define problem with finite fleet - */ - vrpBuilder.setFleetSize(FleetSize.FINITE); - - /* - * build the problem - */ - VehicleRoutingProblem vrp = vrpBuilder.build(); - - /* - * plot to see how the problem looks like - */ -// SolutionPlotter.plotVrpAsPNG(vrp, "output/problem08.png", "p08"); - - /* - * solve the problem - */ - VehicleRoutingAlgorithm vra = Jsprit.Builder.newInstance(vrp) - .setProperty(Jsprit.Parameter.FAST_REGRET, "true") - .setProperty(Jsprit.Parameter.THREADS, "5").buildAlgorithm(); - vra.setMaxIterations(2000); - vra.getAlgorithmListeners().addListener(new StopWatch(), Priority.HIGH); - vra.getAlgorithmListeners().addListener(new AlgorithmSearchProgressChartListener("output/progress.png")); - Collection solutions = vra.searchSolutions(); - - SolutionPrinter.print(vrp, Solutions.bestOf(solutions), SolutionPrinter.Print.VERBOSE); - - new Plotter(vrp, Solutions.bestOf(solutions)).plot("output/p08_solution.png", "p08"); - - new GraphStreamViewer(vrp, Solutions.bestOf(solutions)).setRenderDelay(50).display(); - } - -} diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/MultipleDepotWithInitialRoutesExample.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/MultipleDepotWithInitialRoutesExample.java deleted file mode 100644 index 61b5e6394..000000000 --- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/MultipleDepotWithInitialRoutesExample.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.examples; - -import com.graphhopper.jsprit.analysis.toolbox.Plotter; -import com.graphhopper.jsprit.analysis.toolbox.Plotter.Label; -import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; -import com.graphhopper.jsprit.core.algorithm.box.Jsprit; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem.Builder; -import com.graphhopper.jsprit.core.problem.job.Job; -import com.graphhopper.jsprit.core.problem.job.Service; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; -import com.graphhopper.jsprit.core.problem.vehicle.Vehicle; -import com.graphhopper.jsprit.core.reporting.SolutionPrinter; -import com.graphhopper.jsprit.core.util.Solutions; -import com.graphhopper.jsprit.io.problem.VrpXMLReader; -import com.graphhopper.jsprit.util.Examples; - -import java.util.Collection; - - -public class MultipleDepotWithInitialRoutesExample { - - - public static void main(String[] args) { - /* - * some preparation - create output folder - */ - Examples.createOutputFolder(); - - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - /* - * Read cordeau-instance p01 - */ - new VrpXMLReader(vrpBuilder).read("input/cordeau01.xml"); - - /* - * Add initial route with 1_4_vehicle and services 44, 26 - */ - VehicleRoute initialRoute = VehicleRoute.Builder.newInstance(getVehicle("1_4_vehicle", vrpBuilder)).addService(getService("44", vrpBuilder)) - .addService(getService("26", vrpBuilder)).build(); - vrpBuilder.addInitialVehicleRoute(initialRoute); - - /* - * build the problem - */ - VehicleRoutingProblem vrp = vrpBuilder.build(); - /* - * since job (service) 26 and 44 are already planned in initial route and thus static AND sequence is fixed they - * should not be in jobMap anymore (only variable jobs are in jobMap) - */ - assert !vrp.getJobs().containsKey("26") : "strange. service 26 should not be part of the problem"; - assert !vrp.getJobs().containsKey("44") : "strange. service 44 should not be part of the problem"; - - /* - * plot to see how the problem looks like - */ - new Plotter(vrp).setLabel(Label.ID).plot("output/cordeau01_problem_withInitialRoute.png", "c"); - - /* - * solve the problem - */ -// VehicleRoutingAlgorithm vra = Jsprit.Builder.newInstance(vrp) -// .setProperty(Jsprit.Parameter.ITERATIONS,"10000").buildAlgorithm(); - - VehicleRoutingAlgorithm vra = Jsprit.createAlgorithm(vrp); - Collection solutions = vra.searchSolutions(); - - SolutionPrinter.print(Solutions.bestOf(solutions)); - - new Plotter(vrp, Solutions.bestOf(solutions)).setLabel(Label.ID).plot("output/cordeau01_solution_withInitialRoute.png", "p01"); - - - } - - private static Service getService(String serviceId, Builder vrpBuilder) { - for (Job j : vrpBuilder.getAddedJobs()) { - if (j.getId().equals(serviceId)) { - return (Service) j; - } - } - return null; - } - - private static Vehicle getVehicle(String vehicleId, Builder vrpBuilder) { - for (Vehicle v : vrpBuilder.getAddedVehicles()) { - if (v.getId().equals(vehicleId)) return v; - } - return null; - } - -} diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/MultipleProductsWithLoadConstraintExample.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/MultipleProductsWithLoadConstraintExample.java deleted file mode 100644 index 2fc579beb..000000000 --- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/MultipleProductsWithLoadConstraintExample.java +++ /dev/null @@ -1,207 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.graphhopper.jsprit.examples; - -import com.graphhopper.jsprit.analysis.toolbox.GraphStreamViewer; -import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; -import com.graphhopper.jsprit.core.algorithm.box.Jsprit; -import com.graphhopper.jsprit.core.algorithm.state.InternalStates; -import com.graphhopper.jsprit.core.algorithm.state.StateManager; -import com.graphhopper.jsprit.core.problem.Capacity; -import com.graphhopper.jsprit.core.problem.Location; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.constraint.ConstraintManager; -import com.graphhopper.jsprit.core.problem.constraint.HardActivityConstraint; -import com.graphhopper.jsprit.core.problem.job.Shipment; -import com.graphhopper.jsprit.core.problem.misc.JobInsertionContext; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.problem.solution.route.activity.TourActivity; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; -import com.graphhopper.jsprit.core.reporting.SolutionPrinter; -import com.graphhopper.jsprit.core.util.Coordinate; -import com.graphhopper.jsprit.core.util.Solutions; - -import java.util.Collection; - -//import jsprit.core.problem.constraint.HardActivityStateLevelConstraint; //v1.3.1 - -//import jsprit.core.problem.solution.route.state.StateFactory; //v1.3.1 - - -/** - * Illustrates a VRP with multiple products. - *

- * It has the hard requirements that no two different products can be transported in the same vehicle at the same time. - * This might be important if products require different temperatures. For example, if a vehicle transports - * apples then no bananas can be loaded (and the other way around). Once all apples have been unloaded, bananas can - * be loaded. - *

- * See also the discussion here: https://groups.google.com/forum/#!topic/jsprit-mailing-list/2JQqY4loC0U - */ -public class MultipleProductsWithLoadConstraintExample { - - static final int BANANAS_DIMENSION_INDEX = 0; - - static final int APPLES_DIMENSION_INDEX = 1; - - // static class BananasFirst implements HardActivityStateLevelConstraint { //v1.3.1 - static class BananasFirst implements HardActivityConstraint { - - @Override - public ConstraintsStatus fulfilled(JobInsertionContext jobInsertionContext, TourActivity prevActivity, TourActivity newActivity, TourActivity nextActivity, double departureTimeAtPrevActivity) { - if (isBananaPickup(newActivity) && isApplePickup(prevActivity)) - return ConstraintsStatus.NOT_FULFILLED_BREAK; - if (isBananaPickup(nextActivity) && isApplePickup(newActivity)) return ConstraintsStatus.NOT_FULFILLED; - return ConstraintsStatus.FULFILLED; - } - - private boolean isApplePickup(TourActivity act) { - return act.getSize().get(APPLES_DIMENSION_INDEX) > 0; - } - - private boolean isBananaPickup(TourActivity act) { - return act.getSize().get(BANANAS_DIMENSION_INDEX) > 0; - } - } - - //static class NoBananasANDApplesConstraint implements HardActivityStateLevelConstraint { //v1.3.1 - static class NoBananasANDApplesConstraint implements HardActivityConstraint { - - private StateManager stateManager; - - NoBananasANDApplesConstraint(StateManager stateManager) { - this.stateManager = stateManager; - } - - @Override - public ConstraintsStatus fulfilled(JobInsertionContext jobInsertionContext, TourActivity prevAct, TourActivity newAct, TourActivity nextAct, double departureTimeAtPrevAct) { - Capacity loadAtPrevAct = getLoadAtPreviousAct(prevAct); - - if (isPickup(newAct)) { - if ((isApplePickup(newAct) && hasBananasInVehicle(loadAtPrevAct)) || - (isBananaPickup(newAct) && hasApplesInVehicle(loadAtPrevAct))) { - return ConstraintsStatus.NOT_FULFILLED; - } - if ((isApplePickup(newAct) && isBananaPickup(nextAct)) || - (isBananaPickup(newAct) && isApplePickup(nextAct))) { - return ConstraintsStatus.NOT_FULFILLED; - } - return ConstraintsStatus.FULFILLED; - } - - if (isDelivery(newAct)) { - if ((isAppleDelivery(newAct) && hasBananasInVehicle(loadAtPrevAct)) || - (isBananaDelivery(newAct) && hasApplesInVehicle(loadAtPrevAct))) { - return ConstraintsStatus.NOT_FULFILLED_BREAK; // if so constraint is broken forever -> break here - } - return ConstraintsStatus.FULFILLED; - } - throw new IllegalStateException("can only constraint shipments"); - } - - private boolean hasApplesInVehicle(Capacity loadAtPrevAct) { - return loadAtPrevAct.get(APPLES_DIMENSION_INDEX) > 0; - } - - private boolean hasBananasInVehicle(Capacity loadAtPrevAct) { - return loadAtPrevAct.get(BANANAS_DIMENSION_INDEX) > 0; - } - - private boolean isBananaPickup(TourActivity act) { - return act.getSize().get(BANANAS_DIMENSION_INDEX) > 0; - } - - private boolean isBananaDelivery(TourActivity act) { - return act.getSize().get(BANANAS_DIMENSION_INDEX) < 0; - } - - private boolean isApplePickup(TourActivity act) { - return act.getSize().get(APPLES_DIMENSION_INDEX) > 0; - } - - private boolean isAppleDelivery(TourActivity act) { - return act.getSize().get(APPLES_DIMENSION_INDEX) < 0; - } - - private boolean isPickup(TourActivity newAct) { - return newAct.getName().equals("pickupShipment"); - } - - private boolean isDelivery(TourActivity newAct) { - return newAct.getName().equals("deliverShipment"); - } - - private Capacity getLoadAtPreviousAct(TourActivity prevAct) { -// Capacity prevLoad = stateManager.getActivityState(prevAct, StateFactory.LOAD, Capacity.class); //v1.3.1 - Capacity prevLoad = stateManager.getActivityState(prevAct, InternalStates.LOAD, Capacity.class); //1.3.2-SNAPSHOT & upcoming release v1.4 - if (prevLoad != null) return prevLoad; - else return Capacity.Builder.newInstance().build(); - } - } - - - public static void main(String[] args) { - - - VehicleType type = VehicleTypeImpl.Builder.newInstance("type").addCapacityDimension(BANANAS_DIMENSION_INDEX, 10) - .addCapacityDimension(APPLES_DIMENSION_INDEX, 20).build(); - VehicleImpl vehicle = VehicleImpl.Builder.newInstance("vehicle").setStartLocation(loc(Coordinate.newInstance(0, 0))) - .setType(type).build(); - - Shipment bananas = Shipment.Builder.newInstance("bananas_1").addSizeDimension(BANANAS_DIMENSION_INDEX, 1) - .setPickupLocation(loc(Coordinate.newInstance(1, 8))).setDeliveryLocation(loc(Coordinate.newInstance(10, 8))).build(); - - Shipment bananas_2 = Shipment.Builder.newInstance("bananas_2").addSizeDimension(BANANAS_DIMENSION_INDEX, 1) - .setPickupLocation(loc(Coordinate.newInstance(2, 8))).setDeliveryLocation(loc(Coordinate.newInstance(11, 8))).build(); - - Shipment bananas_3 = Shipment.Builder.newInstance("bananas_3").addSizeDimension(BANANAS_DIMENSION_INDEX, 1) - .setPickupLocation(loc(Coordinate.newInstance(3, 8))).setDeliveryLocation(loc(Coordinate.newInstance(12, 8))).build(); - - Shipment apples = Shipment.Builder.newInstance("apples_1").addSizeDimension(APPLES_DIMENSION_INDEX, 1) - .setPickupLocation(loc(Coordinate.newInstance(1, 6))).setDeliveryLocation(loc(Coordinate.newInstance(10, 12))).build(); - - Shipment apples_2 = Shipment.Builder.newInstance("apples_2").addSizeDimension(APPLES_DIMENSION_INDEX, 1) - .setPickupLocation(loc(Coordinate.newInstance(1, 5))).setDeliveryLocation(loc(Coordinate.newInstance(10, 11))).build(); - - VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().setFleetSize(VehicleRoutingProblem.FleetSize.INFINITE) - .addVehicle(vehicle) - .addJob(bananas).addJob(apples).addJob(bananas_2).addJob(bananas_3).addJob(apples_2).build(); - - StateManager stateManager = new StateManager(vrp); - ConstraintManager constraintManager = new ConstraintManager(vrp, stateManager); - constraintManager.addConstraint(new NoBananasANDApplesConstraint(stateManager), ConstraintManager.Priority.CRITICAL); -// constraintManager.addConstraint(new BananasFirst(),ConstraintManager.Priority.CRITICAL); - - VehicleRoutingAlgorithm vra = Jsprit.Builder.newInstance(vrp).setStateAndConstraintManager(stateManager, constraintManager) - .buildAlgorithm(); - - Collection solutions = vra.searchSolutions(); - - SolutionPrinter.print(vrp, Solutions.bestOf(solutions), SolutionPrinter.Print.VERBOSE); - - new GraphStreamViewer(vrp, Solutions.bestOf(solutions)).labelWith(GraphStreamViewer.Label.ID).setRenderShipments(true).display(); - - } - - private static Location loc(Coordinate coordinate) { - return Location.Builder.newInstance().setCoordinate(coordinate).build(); - } -} diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/MultipleTimeWindowExample.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/MultipleTimeWindowExample.java deleted file mode 100644 index 0cd3e154c..000000000 --- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/MultipleTimeWindowExample.java +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.examples; - -import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; -import com.graphhopper.jsprit.core.algorithm.box.Jsprit; -import com.graphhopper.jsprit.core.problem.Location; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.job.Service; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl.Builder; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; -import com.graphhopper.jsprit.core.reporting.SolutionPrinter; -import com.graphhopper.jsprit.core.util.ManhattanCosts; -import com.graphhopper.jsprit.core.util.Solutions; - -import java.util.Collection; - - -public class MultipleTimeWindowExample { - - - public static void main(String[] args) { - - /* - * get a vehicle type-builder and build a type with the typeId "vehicleType" and one capacity dimension, i.e. weight, and capacity dimension value of 2 - */ - final int WEIGHT_INDEX = 0; - VehicleTypeImpl.Builder vehicleTypeBuilder = VehicleTypeImpl.Builder.newInstance("vehicleType") - .addCapacityDimension(WEIGHT_INDEX, 10).setCostPerWaitingTime(1.); - VehicleType vehicleType = vehicleTypeBuilder.build(); - - /* - * get a vehicle-builder and build a vehicle located at (10,10) with type "vehicleType" - */ - Builder vehicleBuilder = Builder.newInstance("vehicle"); - vehicleBuilder.setStartLocation(Location.newInstance(0, 0)); - vehicleBuilder.setType(vehicleType); - VehicleImpl vehicle = vehicleBuilder.build(); - - /* - * build services at the required locations, each with a capacity-demand of 1. - */ - Service service1 = Service.Builder.newInstance("1") - .addTimeWindow(50,100) - .addTimeWindow(20,35) - .addSizeDimension(WEIGHT_INDEX, 1).setLocation(Location.newInstance(10, 0)).build(); - - Service service2 = Service.Builder.newInstance("2") - .addSizeDimension(WEIGHT_INDEX, 1) -// .setServiceTime(10) - .setLocation(Location.newInstance(20, 0)).setServiceTime(10).build(); - - Service service3 = Service.Builder.newInstance("3") - .addTimeWindow(5, 10) - .addTimeWindow(35, 50) - .addSizeDimension(WEIGHT_INDEX, 1).setLocation(Location.newInstance(30, 0)).build(); - - Service service4 = Service.Builder.newInstance("4") -// .addTimeWindow(5,10) - .addTimeWindow(20, 40) - .addTimeWindow(45, 80) - .addSizeDimension(WEIGHT_INDEX, 1).setLocation(Location.newInstance(40, 0)).build(); - - Service service5 = Service.Builder.newInstance("5") - .addTimeWindow(5,10) - .addTimeWindow(20, 40) - .addTimeWindow(60,100) - .addSizeDimension(WEIGHT_INDEX, 1).setLocation(Location.newInstance(20, 0)).build(); - - - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - vrpBuilder.addVehicle(vehicle); - vrpBuilder.addJob(service1).addJob(service2) - .addJob(service3) - .addJob(service4) - .addJob(service5) - ; - vrpBuilder.setFleetSize(VehicleRoutingProblem.FleetSize.FINITE); - vrpBuilder.setRoutingCost(new ManhattanCosts()); - VehicleRoutingProblem problem = vrpBuilder.build(); - - /* - * get the algorithm out-of-the-box. - */ - VehicleRoutingAlgorithm algorithm = Jsprit.createAlgorithm(problem); - - /* - * and search a solution - */ - Collection solutions = algorithm.searchSolutions(); - - /* - * get the best - */ - VehicleRoutingProblemSolution bestSolution = Solutions.bestOf(solutions); - -// new VrpXMLWriter(problem, solutions).write("output/problem-with-solution.xml"); - - SolutionPrinter.print(problem, bestSolution, SolutionPrinter.Print.VERBOSE); - - /* - * plot - */ -// new Plotter(problem,bestSolution).setLabel(Plotter.Label.ID).plot("output/plot", "mtw"); - -// new GraphStreamViewer(problem, bestSolution).labelWith(Label.ID).setRenderDelay(200).display(); - } - -} diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/MultipleTimeWindowExample2.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/MultipleTimeWindowExample2.java deleted file mode 100644 index 7ea4d8d95..000000000 --- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/MultipleTimeWindowExample2.java +++ /dev/null @@ -1,147 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.examples; - -import com.graphhopper.jsprit.analysis.toolbox.Plotter; -import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; -import com.graphhopper.jsprit.core.algorithm.box.Jsprit; -import com.graphhopper.jsprit.core.analysis.SolutionAnalyser; -import com.graphhopper.jsprit.core.problem.Location; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.job.Service; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl.Builder; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; -import com.graphhopper.jsprit.core.reporting.SolutionPrinter; -import com.graphhopper.jsprit.core.util.RandomNumberGeneration; -import com.graphhopper.jsprit.core.util.Solutions; - -import java.util.Collection; -import java.util.Random; - - -public class MultipleTimeWindowExample2 { - - - public static void main(String[] args) { - - /* - * get a vehicle type-builder and build a type with the typeId "vehicleType" and one capacity dimension, i.e. weight, and capacity dimension value of 2 - */ - VehicleTypeImpl.Builder vehicleTypeBuilder = VehicleTypeImpl.Builder.newInstance("vehicleType") - .addCapacityDimension(0, 60) - .setCostPerWaitingTime(0.8) - ; - VehicleType vehicleType = vehicleTypeBuilder.build(); - - /* - * get a vehicle-builder and build a vehicle located at (10,10) with type "vehicleType" - */ - Builder vehicleBuilder = Builder.newInstance("vehicle"); - vehicleBuilder.setStartLocation(Location.newInstance(0, 0)); - vehicleBuilder.setType(vehicleType); - vehicleBuilder.setLatestArrival(800); - VehicleImpl vehicle = vehicleBuilder.build(); - -// Builder vehicleBuilder2 = Builder.newInstance("vehicle2"); -// vehicleBuilder2.setStartLocation(Location.newInstance(0, 0)); -// vehicleBuilder2.setType(vehicleType); -// vehicleBuilder2.setEarliestStart(250).setLatestArrival(450); -// VehicleImpl vehicle2 = vehicleBuilder2.build(); -// -// -// Builder vehicleBuilder3 = Builder.newInstance("vehicle3"); -// vehicleBuilder3.setStartLocation(Location.newInstance(0, 0)); -// vehicleBuilder3.setType(vehicleType); -// vehicleBuilder3.setEarliestStart(380).setLatestArrival(600); -// VehicleImpl vehicle3 = vehicleBuilder3.build(); - - /* - * build services at the required locations, each with a capacity-demand of 1. - */ - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - vrpBuilder.addVehicle(vehicle); -// .addVehicle(vehicle2).addVehicle(vehicle3); - vrpBuilder.setFleetSize(VehicleRoutingProblem.FleetSize.FINITE); - - - Random random = RandomNumberGeneration.newInstance(); - for(int i=0;i<40;i++){ - Service service = Service.Builder.newInstance("" + (i + 1)) - .addTimeWindow(random.nextInt(50), 200) - .addTimeWindow(220 + random.nextInt(50), 350) - .addTimeWindow(400 + random.nextInt(50), 550) -// .addSizeDimension(0, 1) - .setServiceTime(1) - .setLocation(Location.newInstance(random.nextInt(50), random.nextInt(50))).build(); - vrpBuilder.addJob(service); - } - - for(int i=0;i<12;i++){ - Service service = Service.Builder.newInstance(""+(i+51)) -// .addTimeWindow(0, 80) -//// .addTimeWindow(120, 200) -// .addTimeWindow(250,500) -// .addSizeDimension(0, 1) - .setServiceTime(2) - .setLocation(Location.newInstance(50 + random.nextInt(20), 20 + random.nextInt(25))).build(); - vrpBuilder.addJob(service); - } - - Service service = Service.Builder.newInstance("100") - .addTimeWindow(50, 80) - .setServiceTime(10) - .setLocation(Location.newInstance(40, 1)).build(); - vrpBuilder.addJob(service); - - final VehicleRoutingProblem problem = vrpBuilder.build(); - - VehicleRoutingAlgorithm algorithm = Jsprit.Builder.newInstance(problem).buildAlgorithm(); - - /* - * and search a solution - */ - Collection solutions = algorithm.searchSolutions(); - - /* - * get the best - */ - VehicleRoutingProblemSolution bestSolution = Solutions.bestOf(solutions); - -// new VrpXMLWriter(problem, solutions).write("output/problem-with-solution.xml"); - - SolutionPrinter.print(problem, bestSolution, SolutionPrinter.Print.VERBOSE); - - /* - * plot - */ - new Plotter(problem,bestSolution).setLabel(Plotter.Label.ID).plot("output/plot", "mtw"); - - SolutionAnalyser a = new SolutionAnalyser(problem, bestSolution, problem.getTransportCosts()); - - System.out.println("distance: " + a.getDistance()); - System.out.println("ttime: " + a.getTransportTime()); - System.out.println("completion: " + a.getOperationTime()); - System.out.println("waiting: " + a.getWaitingTime()); - -// new GraphStreamViewer(problem, bestSolution).labelWith(Label.ID).setRenderDelay(200).display(); - } - -} diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/PickupAndDeliveryExample.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/PickupAndDeliveryExample.java deleted file mode 100644 index 9b4dfedb5..000000000 --- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/PickupAndDeliveryExample.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.examples; - -import com.graphhopper.jsprit.analysis.toolbox.AlgorithmSearchProgressChartListener; -import com.graphhopper.jsprit.analysis.toolbox.Plotter; -import com.graphhopper.jsprit.analysis.toolbox.Plotter.Label; -import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; -import com.graphhopper.jsprit.core.algorithm.box.Jsprit; -import com.graphhopper.jsprit.core.algorithm.selector.SelectBest; -import com.graphhopper.jsprit.core.analysis.SolutionAnalyser; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.reporting.SolutionPrinter; -import com.graphhopper.jsprit.io.problem.VrpXMLReader; -import com.graphhopper.jsprit.util.Examples; - -import java.util.Collection; - - -public class PickupAndDeliveryExample { - - public static void main(String[] args) { - - /* - * some preparation - create output folder - */ - Examples.createOutputFolder(); - - /* - * Build the problem. - * - * But define a problem-builder first. - */ - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - - /* - * A solomonReader reads solomon-instance files, and stores the required information in the builder. - */ - new VrpXMLReader(vrpBuilder).read("input/pickups_and_deliveries_solomon_r101_withoutTWs.xml"); - - /* - * Finally, the problem can be built. By default, transportCosts are crowFlyDistances (as usually used for vrp-instances). - */ - - final VehicleRoutingProblem vrp = vrpBuilder.build(); - - new Plotter(vrp).plot("output/pd_solomon_r101.png", "pd_r101"); - - - /* - * Define the required vehicle-routing algorithms to solve the above problem. - * - * The algorithm can be defined and configured in an xml-file. - */ -// VehicleRoutingAlgorithm vra = new SchrimpfFactory().createAlgorithm(vrp); - VehicleRoutingAlgorithm vra = Jsprit.createAlgorithm(vrp); - vra.getAlgorithmListeners().addListener(new AlgorithmSearchProgressChartListener("output/sol_progress.png")); - /* - * Solve the problem. - * - * - */ - Collection solutions = vra.searchSolutions(); - - /* - * Retrieve best solution. - */ - VehicleRoutingProblemSolution solution = new SelectBest().selectSolution(solutions); - - /* - * print solution - */ - SolutionPrinter.print(solution); - - /* - * Plot solution. - */ -// SolutionPlotter.plotSolutionAsPNG(vrp, solution, "output/pd_solomon_r101_solution.png","pd_r101"); - Plotter plotter = new Plotter(vrp, solution); - plotter.setLabel(Label.SIZE); - plotter.plot("output/pd_solomon_r101_solution.png", "pd_r101"); - - //some stats - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); - - System.out.println("tp_distance: " + analyser.getDistance()); - System.out.println("tp_time: " + analyser.getTransportTime()); - System.out.println("waiting: " + analyser.getWaitingTime()); - System.out.println("service: " + analyser.getServiceTime()); - System.out.println("#picks: " + analyser.getNumberOfPickups()); - System.out.println("#deliveries: " + analyser.getNumberOfDeliveries()); - - - } - -} diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/PickupAndDeliveryExample2.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/PickupAndDeliveryExample2.java deleted file mode 100644 index 0921bcdce..000000000 --- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/PickupAndDeliveryExample2.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.examples; - -import com.graphhopper.jsprit.analysis.toolbox.AlgorithmSearchProgressChartListener; -import com.graphhopper.jsprit.analysis.toolbox.GraphStreamViewer; -import com.graphhopper.jsprit.analysis.toolbox.Plotter; -import com.graphhopper.jsprit.analysis.toolbox.Plotter.Label; -import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; -import com.graphhopper.jsprit.core.algorithm.box.Jsprit; -import com.graphhopper.jsprit.core.algorithm.selector.SelectBest; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.reporting.SolutionPrinter; -import com.graphhopper.jsprit.io.problem.VrpXMLReader; -import com.graphhopper.jsprit.util.Examples; - -import java.util.Collection; - - -public class PickupAndDeliveryExample2 { - - public static void main(String[] args) { - - /* - * some preparation - create output folder - */ - Examples.createOutputFolder(); - - /* - * Build the problem. - * - * But define a problem-builder first. - */ - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - - /* - * A solomonReader reads solomon-instance files, and stores the required information in the builder. - */ - new VrpXMLReader(vrpBuilder).read("input/pd_christophides_vrpnc1_vcap50.xml"); - - /* - * Finally, the problem can be built. By default, transportCosts are crowFlyDistances (as usually used for vrp-instances). - */ - - VehicleRoutingProblem vrp = vrpBuilder.build(); - - new Plotter(vrp).plot("output/pd_christophides_vrpnc1.png", "pd_vrpnc1"); - - - /* - * Define the required vehicle-routing algorithms to solve the above problem. - * - * The algorithm can be defined and configured in an xml-file. - */ - - VehicleRoutingAlgorithm vra = Jsprit.createAlgorithm(vrp); - vra.getAlgorithmListeners().addListener(new AlgorithmSearchProgressChartListener("output/sol_progress.png")); - /* - * Solve the problem. - * - * - */ - Collection solutions = vra.searchSolutions(); - - /* - * Retrieve best solution. - */ - VehicleRoutingProblemSolution solution = new SelectBest().selectSolution(solutions); - - /* - * print solution - */ - SolutionPrinter.print(solution); - - /* - * Plot solution. - */ -// SolutionPlotter.plotSolutionAsPNG(vrp, solution, "output/pd_solomon_r101_solution.png","pd_r101"); - Plotter plotter = new Plotter(vrp, solution); - plotter.setLabel(Label.SIZE); - plotter.plot("output/pd_christophides_vrpnc1_solution.png", "pd_vrpnc1"); - - - new GraphStreamViewer(vrp, solution).setRenderDelay(200).display(); - - } - -} diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/PickupAndDeliveryOpenExample.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/PickupAndDeliveryOpenExample.java deleted file mode 100644 index 1c622a6b1..000000000 --- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/PickupAndDeliveryOpenExample.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.examples; - -import com.graphhopper.jsprit.analysis.toolbox.AlgorithmSearchProgressChartListener; -import com.graphhopper.jsprit.analysis.toolbox.Plotter; -import com.graphhopper.jsprit.analysis.toolbox.Plotter.Label; -import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; -import com.graphhopper.jsprit.core.algorithm.box.Jsprit; -import com.graphhopper.jsprit.core.algorithm.selector.SelectBest; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.reporting.SolutionPrinter; -import com.graphhopper.jsprit.io.problem.VrpXMLReader; -import com.graphhopper.jsprit.util.Examples; - -import java.util.Collection; - - -public class PickupAndDeliveryOpenExample { - - public static void main(String[] args) { - - /* - * some preparation - create output folder - */ - Examples.createOutputFolder(); - - /* - * Build the problem. - * - * But define a problem-builder first. - */ - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - - /* - * A solomonReader reads solomon-instance files, and stores the required information in the builder. - */ - new VrpXMLReader(vrpBuilder).read("input/pickups_and_deliveries_solomon_r101_withoutTWs_open.xml"); - - /* - * Finally, the problem can be built. By default, transportCosts are crowFlyDistances (as usually used for vrp-instances). - */ - - VehicleRoutingProblem vrp = vrpBuilder.build(); - -// SolutionPlotter.plotVrpAsPNG(vrp, "output/pd_solomon_r101_o.png", "pd_r101"); - - /* - * Define the required vehicle-routing algorithms to solve the above problem. - * - * The algorithm can be defined and configured in an xml-file. - */ - - VehicleRoutingAlgorithm vra = Jsprit.createAlgorithm(vrp); - vra.getAlgorithmListeners().addListener(new AlgorithmSearchProgressChartListener("output/sol_progress.png")); - /* - * Solve the problem. - * - * - */ - Collection solutions = vra.searchSolutions(); - - /* - * Retrieve best solution. - */ - VehicleRoutingProblemSolution solution = new SelectBest().selectSolution(solutions); - - /* - * print solution - */ - SolutionPrinter.print(solution); - - /* - * Plot solution. - */ -// SolutionPlotter.plotSolutionAsPNG(vrp, solution, "output/pd_solomon_r101_solution.png","pd_r101"); - Plotter plotter = new Plotter(vrp, solution); - plotter.setLabel(Label.SIZE); - plotter.plot("output/pd_solomon_r101_solution_open.png", "pd_r101"); - - - } - -} diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/RefuseCollectionExample.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/RefuseCollectionExample.java deleted file mode 100644 index 8b5d60ee5..000000000 --- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/RefuseCollectionExample.java +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.examples; - -import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; -import com.graphhopper.jsprit.core.algorithm.box.GreedySchrimpfFactory; -import com.graphhopper.jsprit.core.algorithm.termination.IterationWithoutImprovementTermination; -import com.graphhopper.jsprit.core.problem.Location; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem.FleetSize; -import com.graphhopper.jsprit.core.problem.job.Service; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; -import com.graphhopper.jsprit.core.reporting.SolutionPrinter; -import com.graphhopper.jsprit.core.util.Solutions; -import com.graphhopper.jsprit.core.util.VehicleRoutingTransportCostsMatrix; -import com.graphhopper.jsprit.core.util.VehicleRoutingTransportCostsMatrix.Builder; -import com.graphhopper.jsprit.io.problem.VrpXMLWriter; -import com.graphhopper.jsprit.util.Examples; - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileReader; -import java.io.IOException; -import java.util.Collection; - - -/** - * This example is base on - * http://web.mit.edu/urban_or_book/www/book/chapter6/6.4.12.html - * - * @author stefan schroeder - */ -public class RefuseCollectionExample { - - public static void main(String[] args) throws IOException { - /* - * some preparation - create output folder - */ - Examples.createOutputFolder(); - - /* - * create vehicle-type and vehicle - */ - VehicleTypeImpl.Builder typeBuilder = VehicleTypeImpl.Builder.newInstance("vehicle-type").addCapacityDimension(0, 23); - typeBuilder.setCostPerDistance(1.0); - VehicleTypeImpl bigType = typeBuilder.build(); - - VehicleImpl.Builder vehicleBuilder = VehicleImpl.Builder.newInstance("vehicle"); - vehicleBuilder.setStartLocation(Location.newInstance("1")); - vehicleBuilder.setType(bigType); - VehicleImpl bigVehicle = vehicleBuilder.build(); - - /* - * start building the problem - */ - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - vrpBuilder.setFleetSize(FleetSize.INFINITE); - vrpBuilder.addVehicle(bigVehicle); - - /* - * read demand quantities - */ - readDemandQuantities(vrpBuilder); - - /* - * create cost-matrix - */ - VehicleRoutingTransportCostsMatrix.Builder matrixBuilder = VehicleRoutingTransportCostsMatrix.Builder.newInstance(true); - readDistances(matrixBuilder); - - vrpBuilder.setRoutingCost(matrixBuilder.build()); - - VehicleRoutingProblem vrp = vrpBuilder.build(); - - VehicleRoutingAlgorithm vra = new GreedySchrimpfFactory().createAlgorithm(vrp); - vra.setPrematureAlgorithmTermination(new IterationWithoutImprovementTermination(100)); - Collection solutions = vra.searchSolutions(); - - SolutionPrinter.print(Solutions.bestOf(solutions)); - - new VrpXMLWriter(vrp, solutions).write("output/refuseCollectionExampleSolution.xml"); - - } - - - private static void readDemandQuantities(VehicleRoutingProblem.Builder vrpBuilder) throws IOException { - BufferedReader reader = new BufferedReader(new FileReader(new File("input/RefuseCollectionExample_Quantities"))); - String line; - boolean firstLine = true; - while ((line = reader.readLine()) != null) { - if (firstLine) { - firstLine = false; - continue; - } - String[] lineTokens = line.split(","); - /* - * build service - */ - Service service = Service.Builder.newInstance(lineTokens[0]).addSizeDimension(0, Integer.parseInt(lineTokens[1])).setLocation(Location.newInstance(lineTokens[0])).build(); - /* - * and add it to problem - */ - vrpBuilder.addJob(service); - } - reader.close(); - } - - - private static void readDistances(Builder matrixBuilder) throws IOException { - BufferedReader reader = new BufferedReader(new FileReader(new File("input/RefuseCollectionExample_Distances"))); - String line; - boolean firstLine = true; - while ((line = reader.readLine()) != null) { - if (firstLine) { - firstLine = false; - continue; - } - String[] lineTokens = line.split(","); - matrixBuilder.addTransportDistance(lineTokens[0], lineTokens[1], Integer.parseInt(lineTokens[2])); - } - reader.close(); - - } - -} diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/RefuseCollectionWithFastMatrixExample.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/RefuseCollectionWithFastMatrixExample.java deleted file mode 100644 index 5db863726..000000000 --- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/RefuseCollectionWithFastMatrixExample.java +++ /dev/null @@ -1,144 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.examples; - -import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; -import com.graphhopper.jsprit.core.algorithm.box.GreedySchrimpfFactory; -import com.graphhopper.jsprit.core.algorithm.termination.IterationWithoutImprovementTermination; -import com.graphhopper.jsprit.core.problem.Location; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem.FleetSize; -import com.graphhopper.jsprit.core.problem.job.Service; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; -import com.graphhopper.jsprit.core.reporting.SolutionPrinter; -import com.graphhopper.jsprit.core.util.FastVehicleRoutingTransportCostsMatrix; -import com.graphhopper.jsprit.core.util.Solutions; -import com.graphhopper.jsprit.io.problem.VrpXMLWriter; -import com.graphhopper.jsprit.util.Examples; - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileReader; -import java.io.IOException; -import java.util.Collection; - - -/** - * This example is base on - * http://web.mit.edu/urban_or_book/www/book/chapter6/6.4.12.html - * - * @author stefan schroeder - */ -public class RefuseCollectionWithFastMatrixExample { - - public static void main(String[] args) throws IOException { - /* - * some preparation - create output folder - */ - Examples.createOutputFolder(); - - /* - * create vehicle-type and vehicle - */ - VehicleTypeImpl.Builder typeBuilder = VehicleTypeImpl.Builder.newInstance("vehicle-type").addCapacityDimension(0, 23); - typeBuilder.setCostPerDistance(1.0); - VehicleTypeImpl bigType = typeBuilder.build(); - - VehicleImpl.Builder vehicleBuilder = VehicleImpl.Builder.newInstance("vehicle"); - vehicleBuilder.setStartLocation(Location.Builder.newInstance().setIndex(1).build()); - vehicleBuilder.setType(bigType); - VehicleImpl bigVehicle = vehicleBuilder.build(); - - /* - * start building the problem - */ - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - vrpBuilder.setFleetSize(FleetSize.INFINITE); - vrpBuilder.addVehicle(bigVehicle); - - /* - * read demand quantities - */ - readDemandQuantities(vrpBuilder); - - /* - * create cost-matrix - */ - FastVehicleRoutingTransportCostsMatrix.Builder matrixBuilder = FastVehicleRoutingTransportCostsMatrix.Builder.newInstance(11, true); - readDistances(matrixBuilder); - - vrpBuilder.setRoutingCost(matrixBuilder.build()); - - VehicleRoutingProblem vrp = vrpBuilder.build(); - - VehicleRoutingAlgorithm vra = new GreedySchrimpfFactory().createAlgorithm(vrp); - vra.setPrematureAlgorithmTermination(new IterationWithoutImprovementTermination(100)); - Collection solutions = vra.searchSolutions(); - - SolutionPrinter.print(Solutions.bestOf(solutions)); - - new VrpXMLWriter(vrp, solutions).write("output/refuseCollectionExampleSolution.xml"); - - } - - - private static void readDemandQuantities(VehicleRoutingProblem.Builder vrpBuilder) throws IOException { - BufferedReader reader = new BufferedReader(new FileReader(new File("input/RefuseCollectionExample_Quantities"))); - String line; - boolean firstLine = true; - while ((line = reader.readLine()) != null) { - if (firstLine) { - firstLine = false; - continue; - } - String[] lineTokens = line.split(","); - /* - * build service - */ - Service service = Service.Builder.newInstance(lineTokens[0]) - .addSizeDimension(0, Integer.parseInt(lineTokens[1])) - .setLocation(Location.Builder.newInstance().setIndex(Integer.parseInt(lineTokens[0])).build()) - .build(); - /* - * and add it to problem - */ - vrpBuilder.addJob(service); - } - reader.close(); - } - - - private static void readDistances(FastVehicleRoutingTransportCostsMatrix.Builder matrixBuilder) throws IOException { - BufferedReader reader = new BufferedReader(new FileReader(new File("input/RefuseCollectionExample_Distances"))); - String line; - boolean firstLine = true; - while ((line = reader.readLine()) != null) { - if (firstLine) { - firstLine = false; - continue; - } - String[] lineTokens = line.split(","); - matrixBuilder.addTransportDistance(Integer.parseInt(lineTokens[0]), Integer.parseInt(lineTokens[1]), Integer.parseInt(lineTokens[2])); - } - reader.close(); - - } - -} diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/ServicePickupsWithMultipleDepotsExample.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/ServicePickupsWithMultipleDepotsExample.java deleted file mode 100644 index 67dbde120..000000000 --- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/ServicePickupsWithMultipleDepotsExample.java +++ /dev/null @@ -1,145 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.examples; - -import com.graphhopper.jsprit.analysis.toolbox.GraphStreamViewer; -import com.graphhopper.jsprit.analysis.toolbox.GraphStreamViewer.Label; -import com.graphhopper.jsprit.analysis.toolbox.Plotter; -import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; -import com.graphhopper.jsprit.core.algorithm.box.Jsprit; -import com.graphhopper.jsprit.core.problem.Location; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.job.Service; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl.Builder; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; -import com.graphhopper.jsprit.core.reporting.SolutionPrinter; -import com.graphhopper.jsprit.core.util.Solutions; -import com.graphhopper.jsprit.io.problem.VrpXMLWriter; -import com.graphhopper.jsprit.util.Examples; - -import java.util.Arrays; -import java.util.Collection; - - -public class ServicePickupsWithMultipleDepotsExample { - - public static void main(String[] args) { - /* - * some preparation - create output folder - */ - Examples.createOutputFolder(); - - /* - * get a vehicle type-builder and build a type with the typeId "vehicleType" and a capacity of 2 - */ - VehicleTypeImpl.Builder vehicleTypeBuilder = VehicleTypeImpl.Builder.newInstance("vehicleType").addCapacityDimension(0, 8); - vehicleTypeBuilder.setCostPerDistance(1.0); - VehicleType vehicleType = vehicleTypeBuilder.build(); - - /* - * define two depots, i.e. two vehicle locations ([10,10],[50,50]) and equip them with an infinite number of vehicles of type 'vehicleType' - */ - Builder vehicleBuilder1 = VehicleImpl.Builder.newInstance("vehicles@[10,10]"); - vehicleBuilder1.setStartLocation(Location.newInstance(10, 10)); - vehicleBuilder1.setType(vehicleType); - VehicleImpl vehicle1 = vehicleBuilder1.build(); - - Builder vehicleBuilder2 = VehicleImpl.Builder.newInstance("vehicles@[50,50]"); - vehicleBuilder2.setStartLocation(Location.newInstance(50, 50)); - vehicleBuilder2.setType(vehicleType); - VehicleImpl vehicle2 = vehicleBuilder2.build(); - - - /* - * build shipments at the required locations, each with a capacity-demand of 1. - * 4 shipments - * 1: (5,7)->(6,9) - * 2: (5,13)->(6,11) - * 3: (15,7)->(14,9) - * 4: (15,13)->(14,11) - */ - - Service shipment1 = Service.Builder.newInstance("1").addSizeDimension(0, 1).setLocation(Location.newInstance(5, 7)).build(); - Service shipment2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(Location.newInstance(5, 13)).build(); - - Service shipment3 = Service.Builder.newInstance("3").addSizeDimension(0, 1).setLocation(Location.newInstance(15, 7)).build(); - Service shipment4 = Service.Builder.newInstance("4").addSizeDimension(0, 1).setLocation(Location.newInstance(15, 13)).build(); - - Service shipment5 = Service.Builder.newInstance("5").addSizeDimension(0, 1).setLocation(Location.newInstance(55, 57)).build(); - Service shipment6 = Service.Builder.newInstance("6").addSizeDimension(0, 1).setLocation(Location.newInstance(55, 63)).build(); - - Service shipment7 = Service.Builder.newInstance("7").addSizeDimension(0, 1).setLocation(Location.newInstance(65, 57)).build(); - Service shipment8 = Service.Builder.newInstance("8").addSizeDimension(0, 1).setLocation(Location.newInstance(65, 63)).build(); - - - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - vrpBuilder.addVehicle(vehicle1).addVehicle(vehicle2); - vrpBuilder.addJob(shipment1).addJob(shipment2).addJob(shipment3).addJob(shipment4); - vrpBuilder.addJob(shipment5).addJob(shipment6).addJob(shipment7).addJob(shipment8); - -// vrpBuilder.setFleetSize(FleetSize.FINITE); - VehicleRoutingProblem problem = vrpBuilder.build(); - - /* - * get the algorithm out-of-the-box. - */ - VehicleRoutingAlgorithm algorithm = Jsprit.createAlgorithm(problem); - algorithm.setMaxIterations(10); - - /* - * and search a solution - */ - Collection solutions = algorithm.searchSolutions(); - - /* - * get the best - */ - VehicleRoutingProblemSolution bestSolution = Solutions.bestOf(solutions); - - /* - * write out problem and solution to xml-file - */ - new VrpXMLWriter(problem, solutions).write("output/shipment-problem-with-solution.xml"); - - /* - * print nRoutes and totalCosts of bestSolution - */ - SolutionPrinter.print(bestSolution); - - /* - * plot problem without solution - */ - Plotter problemPlotter = new Plotter(problem); - problemPlotter.plotShipments(true); - problemPlotter.plot("output/enRoutePickupAndDeliveryWithMultipleLocationsExample_problem.png", "en-route pickup and delivery"); - - /* - * plot problem with solution - */ - Plotter solutionPlotter = new Plotter(problem, Arrays.asList(Solutions.bestOf(solutions).getRoutes().iterator().next())); - solutionPlotter.plotShipments(true); - solutionPlotter.plot("output/enRoutePickupAndDeliveryWithMultipleLocationsExample_solution.png", "en-route pickup and delivery"); - - new GraphStreamViewer(problem, Solutions.bestOf(solutions)).labelWith(Label.ACTIVITY).setRenderDelay(100).setRenderShipments(true).display(); - - } - -} diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleDepotBoundedPickupAndDeliveryExample.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleDepotBoundedPickupAndDeliveryExample.java deleted file mode 100644 index 35f805ef8..000000000 --- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleDepotBoundedPickupAndDeliveryExample.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.examples; - -import com.graphhopper.jsprit.analysis.toolbox.Plotter; -import com.graphhopper.jsprit.analysis.toolbox.Plotter.Label; -import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; -import com.graphhopper.jsprit.core.algorithm.box.SchrimpfFactory; -import com.graphhopper.jsprit.core.problem.Location; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.job.Delivery; -import com.graphhopper.jsprit.core.problem.job.Pickup; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl.Builder; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; -import com.graphhopper.jsprit.core.reporting.SolutionPrinter; -import com.graphhopper.jsprit.core.util.Solutions; -import com.graphhopper.jsprit.io.problem.VrpXMLWriter; -import com.graphhopper.jsprit.util.Examples; - -import java.util.Collection; - - -public class SimpleDepotBoundedPickupAndDeliveryExample { - - public static void main(String[] args) { - /* - * some preparation - create output folder - */ - Examples.createOutputFolder(); - - /* - * get a vehicle type-builder and build a type with the typeId "vehicleType" and a capacity of 2 - */ - VehicleTypeImpl.Builder vehicleTypeBuilder = VehicleTypeImpl.Builder.newInstance("vehicleType").addCapacityDimension(0, 2); - VehicleType vehicleType = vehicleTypeBuilder.build(); - - /* - * get a vehicle-builder and build a vehicle located at (10,10) with type "vehicleType" - */ - Builder vehicleBuilder = VehicleImpl.Builder.newInstance("vehicle"); - vehicleBuilder.setStartLocation(Location.newInstance(10, 10)); - vehicleBuilder.setType(vehicleType); - VehicleImpl vehicle = vehicleBuilder.build(); - - /* - * build pickups and deliveries at the required locations, each with a capacity-demand of 1. - */ - - Pickup pickup1 = Pickup.Builder.newInstance("1").addSizeDimension(0, 1).setLocation(Location.newInstance(5, 7)).build(); - Delivery delivery1 = Delivery.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(Location.newInstance(5, 13)).build(); - - Pickup pickup2 = Pickup.Builder.newInstance("3").addSizeDimension(0, 1).setLocation(Location.newInstance(15, 7)).build(); - Delivery delivery2 = Delivery.Builder.newInstance("4").addSizeDimension(0, 1).setLocation(Location.newInstance(15, 13)).build(); - - - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - vrpBuilder.addVehicle(vehicle); - vrpBuilder.addJob(pickup1).addJob(pickup2).addJob(delivery1).addJob(delivery2); - - - VehicleRoutingProblem problem = vrpBuilder.build(); - - /* - * get the algorithm out-of-the-box. - */ - VehicleRoutingAlgorithm algorithm = new SchrimpfFactory().createAlgorithm(problem); - - /* - * and search a solution - */ - Collection solutions = algorithm.searchSolutions(); - - /* - * get the best - */ - VehicleRoutingProblemSolution bestSolution = Solutions.bestOf(solutions); - - new VrpXMLWriter(problem, solutions).write("output/problem-with-solution.xml"); - - SolutionPrinter.print(bestSolution); - - /* - * plot - */ - Plotter plotter = new Plotter(problem, bestSolution); - plotter.setLabel(Label.SIZE); - plotter.plot("output/solution.png", "solution"); - - } - -} diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleEnRoutePickupAndDeliveryExample.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleEnRoutePickupAndDeliveryExample.java deleted file mode 100644 index c23098abc..000000000 --- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleEnRoutePickupAndDeliveryExample.java +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.examples; - -import com.graphhopper.jsprit.analysis.toolbox.GraphStreamViewer; -import com.graphhopper.jsprit.analysis.toolbox.Plotter; -import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; -import com.graphhopper.jsprit.core.algorithm.box.SchrimpfFactory; -import com.graphhopper.jsprit.core.problem.Location; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.job.Shipment; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl.Builder; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; -import com.graphhopper.jsprit.core.reporting.SolutionPrinter; -import com.graphhopper.jsprit.core.util.Coordinate; -import com.graphhopper.jsprit.core.util.Solutions; -import com.graphhopper.jsprit.io.problem.VrpXMLWriter; -import com.graphhopper.jsprit.util.Examples; - -import java.util.Arrays; -import java.util.Collection; - - -public class SimpleEnRoutePickupAndDeliveryExample { - - public static void main(String[] args) { - /* - * some preparation - create output folder - */ - Examples.createOutputFolder(); - - /* - * get a vehicle type-builder and build a type with the typeId "vehicleType" and a capacity of 2 - */ - VehicleTypeImpl.Builder vehicleTypeBuilder = VehicleTypeImpl.Builder.newInstance("vehicleType").addCapacityDimension(0, 2); - VehicleType vehicleType = vehicleTypeBuilder.build(); - - /* - * get a vehicle-builder and build a vehicle located at (10,10) with type "vehicleType" - */ - Builder vehicleBuilder = VehicleImpl.Builder.newInstance("vehicle"); - vehicleBuilder.setStartLocation(loc(Coordinate.newInstance(10, 10))); - vehicleBuilder.setType(vehicleType); - VehicleImpl vehicle = vehicleBuilder.build(); - - /* - * build shipments at the required locations, each with a capacity-demand of 1. - * 4 shipments - * 1: (5,7)->(6,9) - * 2: (5,13)->(6,11) - * 3: (15,7)->(14,9) - * 4: (15,13)->(14,11) - */ - - Shipment shipment1 = Shipment.Builder.newInstance("1").addSizeDimension(0, 1).setPickupLocation(loc(Coordinate.newInstance(5, 7))).setDeliveryLocation(loc(Coordinate.newInstance(6, 9))).build(); - Shipment shipment2 = Shipment.Builder.newInstance("2").addSizeDimension(0, 1).setPickupLocation(loc(Coordinate.newInstance(5, 13))).setDeliveryLocation(loc(Coordinate.newInstance(6, 11))).build(); - - Shipment shipment3 = Shipment.Builder.newInstance("3").addSizeDimension(0, 1).setPickupLocation(loc(Coordinate.newInstance(15, 7))).setDeliveryLocation(loc(Coordinate.newInstance(14, 9))).build(); - Shipment shipment4 = Shipment.Builder.newInstance("4").addSizeDimension(0, 1).setPickupLocation(loc(Coordinate.newInstance(15, 13))).setDeliveryLocation(loc(Coordinate.newInstance(14, 11))).build(); - - - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - vrpBuilder.addVehicle(vehicle); - vrpBuilder.addJob(shipment1).addJob(shipment2).addJob(shipment3).addJob(shipment4); - - VehicleRoutingProblem problem = vrpBuilder.build(); - - /* - * get the algorithm out-of-the-box. - */ - VehicleRoutingAlgorithm algorithm = new SchrimpfFactory().createAlgorithm(problem); - - /* - * and search a solution - */ - Collection solutions = algorithm.searchSolutions(); - - /* - * get the best - */ - VehicleRoutingProblemSolution bestSolution = Solutions.bestOf(solutions); - - /* - * write out problem and solution to xml-file - */ - new VrpXMLWriter(problem, solutions).write("output/shipment-problem-with-solution.xml"); - - /* - * print nRoutes and totalCosts of bestSolution - */ - SolutionPrinter.print(bestSolution); - - /* - * plot problem without solution - */ - Plotter problemPlotter = new Plotter(problem); - problemPlotter.plotShipments(true); - problemPlotter.plot("output/simpleEnRoutePickupAndDeliveryExample_problem.png", "en-route pickup and delivery"); - - /* - * plot problem with solution - */ - Plotter solutionPlotter = new Plotter(problem, Arrays.asList(Solutions.bestOf(solutions).getRoutes().iterator().next())); - solutionPlotter.plotShipments(true); - solutionPlotter.plot("output/simpleEnRoutePickupAndDeliveryExample_solution.png", "en-route pickup and delivery"); - - new GraphStreamViewer(problem).setRenderShipments(true).display(); - - } - - private static Location loc(Coordinate coordinate) { - return Location.Builder.newInstance().setCoordinate(coordinate).build(); - } - -} diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleEnRoutePickupAndDeliveryOpenRoutesExample.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleEnRoutePickupAndDeliveryOpenRoutesExample.java deleted file mode 100644 index b48b7177a..000000000 --- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleEnRoutePickupAndDeliveryOpenRoutesExample.java +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.examples; - -import com.graphhopper.jsprit.analysis.toolbox.GraphStreamViewer; -import com.graphhopper.jsprit.analysis.toolbox.Plotter; -import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; -import com.graphhopper.jsprit.core.algorithm.box.SchrimpfFactory; -import com.graphhopper.jsprit.core.problem.Location; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.job.Shipment; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl.Builder; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; -import com.graphhopper.jsprit.core.reporting.SolutionPrinter; -import com.graphhopper.jsprit.core.util.Coordinate; -import com.graphhopper.jsprit.core.util.Solutions; -import com.graphhopper.jsprit.io.problem.VrpXMLWriter; -import com.graphhopper.jsprit.util.Examples; - -import java.util.Collection; - - -public class SimpleEnRoutePickupAndDeliveryOpenRoutesExample { - - public static void main(String[] args) { - /* - * some preparation - create output folder - */ - Examples.createOutputFolder(); - - /* - * get a vehicle type-builder and build a type with the typeId "vehicleType" and a capacity of 2 - */ - VehicleTypeImpl.Builder vehicleTypeBuilder = VehicleTypeImpl.Builder.newInstance("vehicleType").addCapacityDimension(0, 2); - VehicleType vehicleType = vehicleTypeBuilder.build(); - - /* - * get a vehicle-builder and build a vehicle located at (10,10) with type "vehicleType" - */ - Builder vehicleBuilder = VehicleImpl.Builder.newInstance("vehicle"); - vehicleBuilder.setStartLocation(loc(Coordinate.newInstance(10, 10))); - vehicleBuilder.setType(vehicleType); - vehicleBuilder.setReturnToDepot(false); - VehicleImpl vehicle = vehicleBuilder.build(); - - /* - * build shipments at the required locations, each with a capacity-demand of 1. - * 4 shipments - * 1: (5,7)->(6,9) - * 2: (5,13)->(6,11) - * 3: (15,7)->(14,9) - * 4: (15,13)->(14,11) - */ - - Shipment shipment1 = Shipment.Builder.newInstance("1").addSizeDimension(0, 1).setPickupLocation(loc(Coordinate.newInstance(5, 7))).setDeliveryLocation(loc(Coordinate.newInstance(6, 9))).build(); - Shipment shipment2 = Shipment.Builder.newInstance("2").addSizeDimension(0, 1).setPickupLocation(loc(Coordinate.newInstance(5, 13))).setDeliveryLocation(loc(Coordinate.newInstance(6, 11))).build(); - - Shipment shipment3 = Shipment.Builder.newInstance("3").addSizeDimension(0, 1).setPickupLocation(loc(Coordinate.newInstance(15, 7))).setDeliveryLocation(loc(Coordinate.newInstance(14, 9))).build(); - Shipment shipment4 = Shipment.Builder.newInstance("4").addSizeDimension(0, 1).setPickupLocation(loc(Coordinate.newInstance(15, 13))).setDeliveryLocation(loc(Coordinate.newInstance(14, 11))).build(); - - - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - vrpBuilder.addVehicle(vehicle); - vrpBuilder.addJob(shipment1).addJob(shipment2).addJob(shipment3).addJob(shipment4); - - VehicleRoutingProblem problem = vrpBuilder.build(); - - /* - * get the algorithm out-of-the-box. - */ - VehicleRoutingAlgorithm algorithm = new SchrimpfFactory().createAlgorithm(problem); - - /* - * and search a solution - */ - Collection solutions = algorithm.searchSolutions(); - - /* - * get the best - */ - VehicleRoutingProblemSolution bestSolution = Solutions.bestOf(solutions); - - /* - * write out problem and solution to xml-file - */ - new VrpXMLWriter(problem, solutions).write("output/shipment-problem-with-solution.xml"); - - /* - * print nRoutes and totalCosts of bestSolution - */ - SolutionPrinter.print(problem, bestSolution, SolutionPrinter.Print.VERBOSE); - - /* - * plot problem without solution - */ - Plotter problemPlotter = new Plotter(problem); - problemPlotter.plotShipments(true); - problemPlotter.plot("output/simpleEnRoutePickupAndDeliveryExample_problem.png", "en-route pickup and delivery"); - - /* - * plot problem with solution - */ - Plotter solutionPlotter = new Plotter(problem, Solutions.bestOf(solutions).getRoutes()); - solutionPlotter.plotShipments(true); - solutionPlotter.plot("output/simpleEnRoutePickupAndDeliveryExample_solution.png", "en-route pickup and delivery"); - - new GraphStreamViewer(problem, bestSolution).setRenderShipments(true).setRenderDelay(100).display(); - } - - private static Location loc(Coordinate coordinate) { - return Location.Builder.newInstance().setCoordinate(coordinate).build(); - } - -} diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleEnRoutePickupAndDeliveryWithDepotBoundedDeliveriesExample.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleEnRoutePickupAndDeliveryWithDepotBoundedDeliveriesExample.java deleted file mode 100644 index dafa1f709..000000000 --- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleEnRoutePickupAndDeliveryWithDepotBoundedDeliveriesExample.java +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.examples; - -import com.graphhopper.jsprit.analysis.toolbox.Plotter; -import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; -import com.graphhopper.jsprit.core.algorithm.box.Jsprit; -import com.graphhopper.jsprit.core.algorithm.state.StateManager; -import com.graphhopper.jsprit.core.problem.Location; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.constraint.ConstraintManager; -import com.graphhopper.jsprit.core.problem.constraint.ServiceDeliveriesFirstConstraint; -import com.graphhopper.jsprit.core.problem.job.Delivery; -import com.graphhopper.jsprit.core.problem.job.Shipment; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl.Builder; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; -import com.graphhopper.jsprit.core.reporting.SolutionPrinter; -import com.graphhopper.jsprit.core.util.Coordinate; -import com.graphhopper.jsprit.core.util.Solutions; -import com.graphhopper.jsprit.io.problem.VrpXMLWriter; -import com.graphhopper.jsprit.util.Examples; - -import java.util.Collection; - - -public class SimpleEnRoutePickupAndDeliveryWithDepotBoundedDeliveriesExample { - - public static void main(String[] args) { - /* - * some preparation - create output folder - */ - Examples.createOutputFolder(); - - /* - * get a vehicle type-builder and build a type with the typeId "vehicleType" and a capacity of 2 - */ - VehicleTypeImpl.Builder vehicleTypeBuilder = VehicleTypeImpl.Builder.newInstance("vehicleType").addCapacityDimension(0, 2); - VehicleType vehicleType = vehicleTypeBuilder.build(); - - /* - * get a vehicle-builder and build a vehicle located at (10,10) with type "vehicleType" - */ - Builder vehicleBuilder = VehicleImpl.Builder.newInstance("vehicle"); - vehicleBuilder.setStartLocation(loc(Coordinate.newInstance(10, 10))); - vehicleBuilder.setType(vehicleType); - VehicleImpl vehicle = vehicleBuilder.build(); - - /* - * build shipments at the required locations, each with a capacity-demand of 1. - * 4 shipments - * 1: (5,7)->(6,9) - * 2: (5,13)->(6,11) - * 3: (15,7)->(14,9) - * 4: (15,13)->(14,11) - */ - - Shipment shipment1 = Shipment.Builder.newInstance("1").addSizeDimension(0, 1).setPickupLocation(loc(Coordinate.newInstance(5, 7))).setDeliveryLocation(loc(Coordinate.newInstance(6, 9))).build(); - Shipment shipment2 = Shipment.Builder.newInstance("2").addSizeDimension(0, 1).setPickupLocation(loc(Coordinate.newInstance(5, 13))).setDeliveryLocation(loc(Coordinate.newInstance(6, 11))).build(); - - Shipment shipment3 = Shipment.Builder.newInstance("3").addSizeDimension(0, 1).setPickupLocation(loc(Coordinate.newInstance(15, 7))).setDeliveryLocation(loc(Coordinate.newInstance(14, 9))).build(); - Shipment shipment4 = Shipment.Builder.newInstance("4").addSizeDimension(0, 1).setPickupLocation(loc(Coordinate.newInstance(15, 13))).setDeliveryLocation(loc(Coordinate.newInstance(14, 11))).build(); -// - /* - * build deliveries, (implicitly picked up in the depot) - * 1: (4,8) - * 2: (4,12) - * 3: (16,8) - * 4: (16,12) - */ - Delivery delivery1 = Delivery.Builder.newInstance("5").addSizeDimension(0, 1).setLocation(loc(Coordinate.newInstance(4, 8))).build(); - Delivery delivery2 = Delivery.Builder.newInstance("6").addSizeDimension(0, 1).setLocation(loc(Coordinate.newInstance(4, 12))).build(); - Delivery delivery3 = Delivery.Builder.newInstance("7").addSizeDimension(0, 1).setLocation(loc(Coordinate.newInstance(16, 8))).build(); - Delivery delivery4 = Delivery.Builder.newInstance("8").addSizeDimension(0, 1).setLocation(loc(Coordinate.newInstance(16, 12))).build(); - - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - vrpBuilder.addVehicle(vehicle); - vrpBuilder.addJob(shipment1).addJob(shipment2).addJob(shipment3).addJob(shipment4) - .addJob(delivery1).addJob(delivery2).addJob(delivery3).addJob(delivery4).build(); - - VehicleRoutingProblem problem = vrpBuilder.build(); - - /* - * build the algorithm - */ - - StateManager stateManager = new StateManager(problem); - ConstraintManager constraintManager = new ConstraintManager(problem, stateManager); - constraintManager.addConstraint(new ServiceDeliveriesFirstConstraint(), ConstraintManager.Priority.CRITICAL); - - VehicleRoutingAlgorithm algorithm = Jsprit.Builder.newInstance(problem).setStateAndConstraintManager(stateManager,constraintManager).buildAlgorithm(); - - /* - * and search a solution - */ - Collection solutions = algorithm.searchSolutions(); - - /* - * get the best - */ - VehicleRoutingProblemSolution bestSolution = Solutions.bestOf(solutions); - - new VrpXMLWriter(problem, solutions).write("output/mixed-shipments-services-problem-with-solution.xml"); - - SolutionPrinter.print(bestSolution); - - /* - * plot - */ - Plotter problemPlotter = new Plotter(problem); - problemPlotter.plotShipments(true); - problemPlotter.plot("output/simpleMixedEnRoutePickupAndDeliveryExample_problem.png", "en-route pd and depot bounded deliveries"); - - Plotter solutionPlotter = new Plotter(problem, Solutions.bestOf(solutions)); - solutionPlotter.plotShipments(true); - solutionPlotter.plot("output/simpleMixedEnRoutePickupAndDeliveryExample_solution.png", "en-route pd and depot bounded deliveries"); - - } - - private static Location loc(Coordinate coordinate) { - return Location.Builder.newInstance().setCoordinate(coordinate).build(); - } - -} diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleExample.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleExample.java deleted file mode 100644 index d2c79afd9..000000000 --- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleExample.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.examples; - -import com.graphhopper.jsprit.analysis.toolbox.GraphStreamViewer; -import com.graphhopper.jsprit.analysis.toolbox.GraphStreamViewer.Label; -import com.graphhopper.jsprit.analysis.toolbox.Plotter; -import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; -import com.graphhopper.jsprit.core.algorithm.box.Jsprit; -import com.graphhopper.jsprit.core.problem.Location; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.job.Service; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl.Builder; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; -import com.graphhopper.jsprit.core.reporting.SolutionPrinter; -import com.graphhopper.jsprit.core.util.Solutions; -import com.graphhopper.jsprit.io.problem.VrpXMLWriter; - -import java.io.File; -import java.util.Collection; - - -public class SimpleExample { - - - public static void main(String[] args) { - /* - * some preparation - create output folder - */ - File dir = new File("output"); - // if the directory does not exist, create it - if (!dir.exists()) { - System.out.println("creating directory ./output"); - boolean result = dir.mkdir(); - if (result) System.out.println("./output created"); - } - - /* - * get a vehicle type-builder and build a type with the typeId "vehicleType" and one capacity dimension, i.e. weight, and capacity dimension value of 2 - */ - final int WEIGHT_INDEX = 0; - VehicleTypeImpl.Builder vehicleTypeBuilder = VehicleTypeImpl.Builder.newInstance("vehicleType").addCapacityDimension(WEIGHT_INDEX, 2); - VehicleType vehicleType = vehicleTypeBuilder.build(); - - /* - * get a vehicle-builder and build a vehicle located at (10,10) with type "vehicleType" - */ - Builder vehicleBuilder = VehicleImpl.Builder.newInstance("vehicle"); - vehicleBuilder.setStartLocation(Location.newInstance(10, 10)); - vehicleBuilder.setType(vehicleType); - VehicleImpl vehicle = vehicleBuilder.build(); - - /* - * build services at the required locations, each with a capacity-demand of 1. - */ - Service service1 = Service.Builder.newInstance("1").addSizeDimension(WEIGHT_INDEX, 1).setLocation(Location.newInstance(5, 7)).build(); - Service service2 = Service.Builder.newInstance("2").addSizeDimension(WEIGHT_INDEX, 1).setLocation(Location.newInstance(5, 13)).build(); - - Service service3 = Service.Builder.newInstance("3").addSizeDimension(WEIGHT_INDEX, 1).setLocation(Location.newInstance(15, 7)).build(); - Service service4 = Service.Builder.newInstance("4").addSizeDimension(WEIGHT_INDEX, 1).setLocation(Location.newInstance(15, 13)).build(); - - - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - vrpBuilder.addVehicle(vehicle); - vrpBuilder.addJob(service1).addJob(service2).addJob(service3).addJob(service4); - - VehicleRoutingProblem problem = vrpBuilder.build(); - - /* - * get the algorithm out-of-the-box. - */ - VehicleRoutingAlgorithm algorithm = Jsprit.createAlgorithm(problem); - - /* - * and search a solution - */ - Collection solutions = algorithm.searchSolutions(); - - /* - * get the best - */ - VehicleRoutingProblemSolution bestSolution = Solutions.bestOf(solutions); - - new VrpXMLWriter(problem, solutions).write("output/problem-with-solution.xml"); - - SolutionPrinter.print(problem, bestSolution, SolutionPrinter.Print.VERBOSE); - - /* - * plot - */ - new Plotter(problem,bestSolution).plot("output/plot.png","simple example"); - - /* - render problem and solution with GraphStream - */ - new GraphStreamViewer(problem, bestSolution).labelWith(Label.ID).setRenderDelay(200).display(); - } - -} diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleExampleOpenRoutes.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleExampleOpenRoutes.java deleted file mode 100644 index 83705e434..000000000 --- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleExampleOpenRoutes.java +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.examples; - -import com.graphhopper.jsprit.analysis.toolbox.Plotter; -import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; -import com.graphhopper.jsprit.core.algorithm.box.Jsprit; -import com.graphhopper.jsprit.core.problem.Location; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.job.Service; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl.Builder; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; -import com.graphhopper.jsprit.core.reporting.SolutionPrinter; -import com.graphhopper.jsprit.core.util.Solutions; -import com.graphhopper.jsprit.io.problem.VrpXMLWriter; -import com.graphhopper.jsprit.util.Examples; - -import java.util.Collection; - - -public class SimpleExampleOpenRoutes { - - public static void main(String[] args) { - /* - * some preparation - create output folder - */ - Examples.createOutputFolder(); - - /* - * get a vehicle type-builder and build a type with the typeId "vehicleType" and a capacity of 2 - */ - VehicleTypeImpl.Builder vehicleTypeBuilder = VehicleTypeImpl.Builder.newInstance("vehicleType").addCapacityDimension(0, 2); - vehicleTypeBuilder.setFixedCost(100); - VehicleType vehicleType = vehicleTypeBuilder.build(); - - /* - * get a vehicle-builder and build a vehicle located at (10,10) with type "vehicleType" - */ - Builder vehicleBuilder = VehicleImpl.Builder.newInstance("vehicle"); - vehicleBuilder.setStartLocation(Location.newInstance(10, 10)); - vehicleBuilder.setType(vehicleType); - vehicleBuilder.setReturnToDepot(false); - - VehicleImpl vehicle = vehicleBuilder.build(); - - /* - * build services at the required locations, each with a capacity-demand of 1. - */ - Service service1 = Service.Builder.newInstance("1").addSizeDimension(0, 1).setLocation(Location.newInstance(5, 7)).build(); - Service service2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(Location.newInstance(5, 13)).build(); - - Service service3 = Service.Builder.newInstance("3").addSizeDimension(0, 1).setLocation(Location.newInstance(15, 7)).build(); - Service service4 = Service.Builder.newInstance("4").addSizeDimension(0, 1).setLocation(Location.newInstance(15, 13)).build(); - - - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - vrpBuilder.addVehicle(vehicle); - vrpBuilder.addJob(service1).addJob(service2).addJob(service3).addJob(service4); - - VehicleRoutingProblem problem = vrpBuilder.build(); - - /* - * get the algorithm out-of-the-box. - */ - VehicleRoutingAlgorithm algorithm = Jsprit.createAlgorithm(problem); - - /* - * and search a solution - */ - Collection solutions = algorithm.searchSolutions(); - - /* - * get the best - */ - VehicleRoutingProblemSolution bestSolution = Solutions.bestOf(solutions); - - new VrpXMLWriter(problem, solutions).write("output/problem-with-solution.xml"); - - SolutionPrinter.print(bestSolution); - - /* - * plot - */ - - new Plotter(problem, bestSolution).plot("output/solution.png", "solution"); - - } - -} diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleExampleWithPriorities.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleExampleWithPriorities.java deleted file mode 100644 index 6fc24f19d..000000000 --- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleExampleWithPriorities.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.examples; - -import com.graphhopper.jsprit.analysis.toolbox.GraphStreamViewer; -import com.graphhopper.jsprit.analysis.toolbox.GraphStreamViewer.Label; -import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; -import com.graphhopper.jsprit.core.algorithm.box.Jsprit; -import com.graphhopper.jsprit.core.problem.Location; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.job.Service; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl.Builder; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; -import com.graphhopper.jsprit.core.reporting.SolutionPrinter; -import com.graphhopper.jsprit.core.util.Solutions; -import com.graphhopper.jsprit.io.problem.VrpXMLWriter; - -import java.io.File; -import java.util.Collection; - - -public class SimpleExampleWithPriorities { - - - public static void main(String[] args) { - /* - * some preparation - create output folder - */ - File dir = new File("output"); - // if the directory does not exist, create it - if (!dir.exists()) { - System.out.println("creating directory ./output"); - boolean result = dir.mkdir(); - if (result) System.out.println("./output created"); - } - - /* - * get a vehicle type-builder and build a type with the typeId "vehicleType" and one capacity dimension, i.e. weight, and capacity dimension value of 2 - */ - final int WEIGHT_INDEX = 0; - VehicleTypeImpl.Builder vehicleTypeBuilder = VehicleTypeImpl.Builder.newInstance("vehicleType").addCapacityDimension(WEIGHT_INDEX, 2); - VehicleType vehicleType = vehicleTypeBuilder.build(); - - /* - * get a vehicle-builder and build a vehicle located at (10,10) with type "vehicleType" - */ - Builder vehicleBuilder = Builder.newInstance("vehicle"); - vehicleBuilder.setStartLocation(Location.newInstance(10, 10)); - vehicleBuilder.setType(vehicleType); - VehicleImpl vehicle = vehicleBuilder.build(); - - /* - * build services at the required locations, each with a capacity-demand of 1. - */ - Service service1 = Service.Builder.newInstance("1").setPriority(1).addSizeDimension(WEIGHT_INDEX, 1).setLocation(Location.newInstance(5, 7)).build(); - Service service2 = Service.Builder.newInstance("2").addSizeDimension(WEIGHT_INDEX, 1).setLocation(Location.newInstance(5, 13)).build(); - - Service service3 = Service.Builder.newInstance("3").addSizeDimension(WEIGHT_INDEX, 1).setLocation(Location.newInstance(15, 7)).build(); - Service service4 = Service.Builder.newInstance("4").setPriority(1).addSizeDimension(WEIGHT_INDEX, 1).setLocation(Location.newInstance(15, 13)).build(); - - - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - vrpBuilder.addVehicle(vehicle); - vrpBuilder.addJob(service1).addJob(service2).addJob(service3).addJob(service4).setFleetSize(VehicleRoutingProblem.FleetSize.FINITE); - - VehicleRoutingProblem problem = vrpBuilder.build(); - - /* - * get the algorithm out-of-the-box. - */ - VehicleRoutingAlgorithm algorithm = Jsprit.createAlgorithm(problem); - - /* - * and search a solution - */ - Collection solutions = algorithm.searchSolutions(); - - /* - * get the best - */ - VehicleRoutingProblemSolution bestSolution = Solutions.bestOf(solutions); - - new VrpXMLWriter(problem, solutions).write("output/problem-with-solution.xml"); - - SolutionPrinter.print(problem, bestSolution, SolutionPrinter.Print.VERBOSE); - - /* - * plot - */ -// SolutionPlotter.plotSolutionAsPNG(problem, bestSolution, "output/solution.png", "solution"); - - new GraphStreamViewer(problem, bestSolution).labelWith(Label.ID).setRenderDelay(200).display(); - } - -} diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleExampleWithSkills.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleExampleWithSkills.java deleted file mode 100644 index 01834da95..000000000 --- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleExampleWithSkills.java +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.examples; - -import com.graphhopper.jsprit.analysis.toolbox.GraphStreamViewer; -import com.graphhopper.jsprit.analysis.toolbox.GraphStreamViewer.Label; -import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; -import com.graphhopper.jsprit.core.algorithm.box.Jsprit; -import com.graphhopper.jsprit.core.algorithm.state.StateManager; -import com.graphhopper.jsprit.core.problem.Location; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.constraint.ConstraintManager; -import com.graphhopper.jsprit.core.problem.job.Service; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl.Builder; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; -import com.graphhopper.jsprit.core.reporting.SolutionPrinter; -import com.graphhopper.jsprit.core.util.Solutions; -import com.graphhopper.jsprit.io.problem.VrpXMLWriter; - -import java.io.File; -import java.util.Collection; - - -public class SimpleExampleWithSkills { - - - public static void main(String[] args) { - /* - * some preparation - create output folder - */ - File dir = new File("output"); - // if the directory does not exist, create it - if (!dir.exists()) { - System.out.println("creating directory ./output"); - boolean result = dir.mkdir(); - if (result) System.out.println("./output created"); - } - - /* - * get a vehicle type-builder and build a type with the typeId "vehicleType" and one capacity dimension, i.e. weight, and capacity dimension value of 2 - */ - final int WEIGHT_INDEX = 0; - VehicleTypeImpl.Builder vehicleTypeBuilder = VehicleTypeImpl.Builder.newInstance("vehicleType").addCapacityDimension(WEIGHT_INDEX, 2); - VehicleType vehicleType = vehicleTypeBuilder.build(); - - /* - * get a vehicle-builder and build a vehicle located at (10,10) with type "vehicleType" - */ - Builder vehicleBuilder = Builder.newInstance("vehicle"); - vehicleBuilder.setStartLocation(Location.newInstance(10, 10)); - vehicleBuilder.setType(vehicleType); - VehicleImpl vehicle = vehicleBuilder.build(); - - Builder vehicle2Builder = Builder.newInstance("vehicle2"); - vehicle2Builder.setStartLocation(Location.newInstance(1, 1)); - vehicle2Builder.setType(vehicleType); - vehicle2Builder.addSkill("drill"); - VehicleImpl vehicle2 = vehicle2Builder.build(); - - /* - * build services at the required locations, each with a capacity-demand of 1. - */ - Service service1 = Service.Builder.newInstance("1").addSizeDimension(WEIGHT_INDEX, 1).setLocation(Location.newInstance(5, 7)).build(); - Service service2 = Service.Builder.newInstance("2").addSizeDimension(WEIGHT_INDEX, 1).setLocation(Location.newInstance(5, 13)).build(); - - Service service3 = Service.Builder.newInstance("3").addSizeDimension(WEIGHT_INDEX, 1).setLocation(Location.newInstance(15, 7)).build(); - - Service service4 = Service.Builder.newInstance("4").addSizeDimension(WEIGHT_INDEX, 1).addRequiredSkill("drill").setLocation(Location.newInstance(15, 13)).build(); - - - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - vrpBuilder.addVehicle(vehicle).addVehicle(vehicle2); - vrpBuilder.addJob(service1).addJob(service2).addJob(service3).addJob(service4); - - VehicleRoutingProblem problem = vrpBuilder.build(); - - /* - * get the algorithm out-of-the-box. - */ - - VehicleRoutingAlgorithm algorithm = Jsprit.createAlgorithm(problem); - - /* - * and search a solution - */ - Collection solutions = algorithm.searchSolutions(); - - /* - * get the best - */ - VehicleRoutingProblemSolution bestSolution = Solutions.bestOf(solutions); - - new VrpXMLWriter(problem, solutions).write("output/problem-with-solution.xml"); - - SolutionPrinter.print(problem, bestSolution, SolutionPrinter.Print.VERBOSE); - - /* - * plot - */ -// SolutionPlotter.plotSolutionAsPNG(problem, bestSolution, "output/solution.png", "solution"); - - new GraphStreamViewer(problem, bestSolution).labelWith(Label.ID).setRenderDelay(200).display(); - } - -} diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleExampleWithoutLocation.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleExampleWithoutLocation.java deleted file mode 100644 index 582512342..000000000 --- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleExampleWithoutLocation.java +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.examples; - -import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; -import com.graphhopper.jsprit.core.algorithm.box.Jsprit; -import com.graphhopper.jsprit.core.algorithm.state.*; -import com.graphhopper.jsprit.core.problem.Location; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.constraint.ConstraintManager; -import com.graphhopper.jsprit.core.problem.job.Service; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl.Builder; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; -import com.graphhopper.jsprit.core.reporting.SolutionPrinter; -import com.graphhopper.jsprit.core.util.Solutions; - -import java.util.Collection; - - -public class SimpleExampleWithoutLocation { - - - public static void main(String[] args) { - - VehicleTypeImpl.Builder vehicleTypeBuilder = VehicleTypeImpl.Builder.newInstance("vehicleType").addCapacityDimension(0, 2); - VehicleType vehicleType = vehicleTypeBuilder.build(); - - /* - * get a vehicle-builder and build a vehicle located at (10,10) with type "vehicleType" - */ - Builder vehicleBuilder = Builder.newInstance("vehicle"); - vehicleBuilder.setStartLocation(Location.newInstance(10, 10)); - vehicleBuilder.setType(vehicleType); - VehicleImpl vehicle = vehicleBuilder.build(); - - /* - * build services at the required locations, each with a capacity-demand of 1. - */ - Service service1 = Service.Builder.newInstance("1").setServiceTime(3600).build(); - Service service2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(Location.newInstance(5, 13)).build(); - - Service service3 = Service.Builder.newInstance("3").addSizeDimension(0, 1).setLocation(Location.newInstance(15, 7)).build(); - Service service4 = Service.Builder.newInstance("4").addSizeDimension(0, 1).setLocation(Location.newInstance(15, 13)).build(); - - - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - vrpBuilder.addVehicle(vehicle); - vrpBuilder.addJob(service1).addJob(service2).addJob(service3).addJob(service4); - - VehicleRoutingProblem problem = vrpBuilder.build(); - - /* - * get the algorithm out-of-the-box. - */ - StateManager stateManager = new StateManager(problem); - stateManager.addStateUpdater(new UpdateEndLocationIfRouteIsOpen()); - stateManager.addStateUpdater(new UpdateActivityNextLocations()); - stateManager.addStateUpdater(new UpdateActivityPrevLocations()); -// stateManager.addStateUpdater(new UpdateActivityLocations()); - stateManager.addStateUpdater(new UpdateActivityTimes(problem.getTransportCosts(), problem.getActivityCosts())); - - ConstraintManager constraintManager = new ConstraintManager(problem, stateManager); - - Jsprit.Builder builder = Jsprit.Builder.newInstance(problem); - builder.setStateAndConstraintManager(stateManager, constraintManager); - builder.addCoreStateAndConstraintStuff(false); - builder.setProperty(Jsprit.Strategy.RADIAL_BEST, "0.0") - .setProperty(Jsprit.Strategy.RADIAL_REGRET, "0.0") - .setProperty(Jsprit.Strategy.CLUSTER_BEST, "0.0") - .setProperty(Jsprit.Strategy.CLUSTER_REGRET, "0.0") - .setProperty(Jsprit.Strategy.STRING_BEST, "0.0") - .setProperty(Jsprit.Strategy.STRING_REGRET, "0.0") - .setProperty(Jsprit.Strategy.RANDOM_REGRET, "0.0") - .setProperty(Jsprit.Strategy.WORST_REGRET, "0.0") - - .setProperty(Jsprit.Parameter.CONSTRUCTION, Jsprit.Construction.BEST_INSERTION.toString()); - - VehicleRoutingAlgorithm algorithm = builder.buildAlgorithm(); - - /* - * and search a solution - */ - Collection solutions = algorithm.searchSolutions(); - - /* - * get the best - */ - VehicleRoutingProblemSolution bestSolution = Solutions.bestOf(solutions); - -// new VrpXMLWriter(problem, solutions).write("output/problem-with-solution.xml"); - - SolutionPrinter.print(problem, bestSolution, SolutionPrinter.Print.VERBOSE); - -// /* -// * plot -// */ -// new Plotter(problem,bestSolution).plot("output/plot.png","simple example"); -// -// /* -// render problem and solution with GraphStream -// */ -// new GraphStreamViewer(problem, bestSolution).labelWith(Label.ID).setRenderDelay(200).display(); - } - -} diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleVRPWithBackhaulsExample.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleVRPWithBackhaulsExample.java deleted file mode 100644 index 2c0c3e76f..000000000 --- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleVRPWithBackhaulsExample.java +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.examples; - -import com.graphhopper.jsprit.analysis.toolbox.Plotter; -import com.graphhopper.jsprit.analysis.toolbox.Plotter.Label; -import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; -import com.graphhopper.jsprit.core.algorithm.box.Jsprit; -import com.graphhopper.jsprit.core.algorithm.state.StateManager; -import com.graphhopper.jsprit.core.problem.Location; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.constraint.ConstraintManager; -import com.graphhopper.jsprit.core.problem.constraint.ServiceDeliveriesFirstConstraint; -import com.graphhopper.jsprit.core.problem.job.Delivery; -import com.graphhopper.jsprit.core.problem.job.Pickup; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl.Builder; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; -import com.graphhopper.jsprit.core.reporting.SolutionPrinter; -import com.graphhopper.jsprit.core.util.Solutions; - -import com.graphhopper.jsprit.io.problem.VrpXMLWriter; -import com.graphhopper.jsprit.util.Examples; - -import java.util.Collection; - - -public class SimpleVRPWithBackhaulsExample { - - public static void main(String[] args) { - /* - * some preparation - create output folder - */ - Examples.createOutputFolder(); - - /* - * get a vehicle type-builder and build a type with the typeId "vehicleType" and a capacity of 2 - */ - VehicleTypeImpl.Builder vehicleTypeBuilder = VehicleTypeImpl.Builder.newInstance("vehicleType").addCapacityDimension(0, 2); - VehicleType vehicleType = vehicleTypeBuilder.build(); - - /* - * get a vehicle-builder and build a vehicle located at (10,10) with type "vehicleType" - */ - Builder vehicleBuilder = VehicleImpl.Builder.newInstance("vehicle"); - vehicleBuilder.setStartLocation(Location.newInstance(10, 10)); - vehicleBuilder.setType(vehicleType); - VehicleImpl vehicle = vehicleBuilder.build(); - - /* - * build pickups and deliveries at the required locations, each with a capacity-demand of 1. - */ - Pickup pickup1 = Pickup.Builder.newInstance("1").addSizeDimension(0, 1).setLocation(Location.newInstance(5, 7)).build(); - Delivery delivery1 = Delivery.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(Location.newInstance(5, 13)).build(); - - Pickup pickup2 = Pickup.Builder.newInstance("3").addSizeDimension(0, 1).setLocation(Location.newInstance(15, 7)).build(); - Delivery delivery2 = Delivery.Builder.newInstance("4").addSizeDimension(0, 1).setLocation(Location.newInstance(15, 13)).build(); - - - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - vrpBuilder.addVehicle(vehicle); - - vrpBuilder.addJob(pickup1).addJob(pickup2).addJob(delivery1).addJob(delivery2); - - VehicleRoutingProblem problem = vrpBuilder.build(); - - - StateManager stateManager = new StateManager(problem); - ConstraintManager constraintManager = new ConstraintManager(problem, stateManager); - constraintManager.addConstraint(new ServiceDeliveriesFirstConstraint(), ConstraintManager.Priority.CRITICAL); - - VehicleRoutingAlgorithm algorithm = Jsprit.Builder.newInstance(problem).setStateAndConstraintManager(stateManager,constraintManager) - .buildAlgorithm(); - - /* - * and search a solution - */ - Collection solutions = algorithm.searchSolutions(); - - /* - * get the best - */ - VehicleRoutingProblemSolution bestSolution = Solutions.bestOf(solutions); - - new VrpXMLWriter(problem, solutions).write("output/problem-with-solution.xml"); - - SolutionPrinter.print(bestSolution); - - /* - * plot - */ - Plotter plotter = new Plotter(problem, bestSolution); - plotter.setLabel(Label.SIZE); - plotter.plot("output/solution.png", "solution"); - - } - -} diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleWithoutLocationAndInitialRoutesExample.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleWithoutLocationAndInitialRoutesExample.java deleted file mode 100644 index 3a29da119..000000000 --- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleWithoutLocationAndInitialRoutesExample.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.examples; - -import com.graphhopper.jsprit.analysis.toolbox.Plotter; -import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; -import com.graphhopper.jsprit.core.algorithm.box.Jsprit; -import com.graphhopper.jsprit.core.algorithm.state.StateManager; -import com.graphhopper.jsprit.core.problem.Location; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.constraint.ConstraintManager; -import com.graphhopper.jsprit.core.problem.job.Service; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl.Builder; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; -import com.graphhopper.jsprit.core.reporting.SolutionPrinter; -import com.graphhopper.jsprit.core.util.Solutions; - -import java.util.Collection; - - -public class SimpleWithoutLocationAndInitialRoutesExample { - - - public static void main(String[] args) { - - VehicleTypeImpl.Builder vehicleTypeBuilder = VehicleTypeImpl.Builder.newInstance("vehicleType").setCostPerWaitingTime(1.0).addCapacityDimension(0, 3); - VehicleType vehicleType = vehicleTypeBuilder.build(); - - /* - * get a vehicle-builder and build a vehicle located at (10,10) with type "vehicleType" - */ - Builder vehicleBuilder = Builder.newInstance("vehicle"); - vehicleBuilder.setStartLocation(Location.newInstance(0, 0)); - vehicleBuilder.setType(vehicleType); - VehicleImpl vehicle = vehicleBuilder.build(); - - /* - * build services at the required locations, each with a capacity-demand of 1. - */ - Service telco1 = Service.Builder.newInstance("telco-1").addTimeWindow(1000, 2500).setServiceTime(1800).build(); - Service telco2 = Service.Builder.newInstance("telco-2").addTimeWindow(6000, 8000).setServiceTime(1800).build(); - Service service2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 1000)).build(); - Service service3 = Service.Builder.newInstance("3").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 2000)).build(); - Service service4 = Service.Builder.newInstance("4").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 3000)).build(); - - - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - vrpBuilder.setFleetSize(VehicleRoutingProblem.FleetSize.FINITE); - VehicleRoute initialRouteWithBreaks = VehicleRoute.Builder.newInstance(vehicle).addService(telco1).addService(telco2).build(); - vrpBuilder.addInitialVehicleRoute(initialRouteWithBreaks); - vrpBuilder.addJob(service2).addJob(service3).addJob(service4); - - VehicleRoutingProblem problem = vrpBuilder.build(); - - /* - * get the algorithm out-of-the-box. - */ - StateManager stateManager = new StateManager(problem);// - ConstraintManager constraintManager = new ConstraintManager(problem, stateManager); - - Jsprit.Builder builder = Jsprit.Builder.newInstance(problem); - builder.addCoreStateAndConstraintStuff(true); - builder.setStateAndConstraintManager(stateManager, constraintManager); - builder.setProperty(Jsprit.Parameter.CONSTRUCTION, Jsprit.Construction.BEST_INSERTION.toString()); - - VehicleRoutingAlgorithm algorithm = builder.buildAlgorithm(); - - /* - * and search a solution - */ - Collection solutions = algorithm.searchSolutions(); - - /* - * get the best - */ - VehicleRoutingProblemSolution bestSolution = Solutions.bestOf(solutions); - -// new VrpXMLWriter(problem, solutions).write("output/problem-with-solution.xml"); - - SolutionPrinter.print(problem, bestSolution, SolutionPrinter.Print.VERBOSE); - -// /* -// * plot -// */ - new Plotter(problem, bestSolution).plot("output/plot.png", "simple example"); -// -// /* -// render problem and solution with GraphStream -// */ -// new GraphStreamViewer(problem, bestSolution).labelWith(Label.ID).setRenderDelay(200).display(); - } - -} diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleWithoutLocationExample2.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleWithoutLocationExample2.java deleted file mode 100644 index 7a241a23a..000000000 --- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SimpleWithoutLocationExample2.java +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.examples; - -import com.graphhopper.jsprit.analysis.toolbox.Plotter; -import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; -import com.graphhopper.jsprit.core.algorithm.box.Jsprit; -import com.graphhopper.jsprit.core.algorithm.state.StateManager; -import com.graphhopper.jsprit.core.algorithm.state.UpdateActivityNextLocations; -import com.graphhopper.jsprit.core.algorithm.state.UpdateActivityPrevLocations; -import com.graphhopper.jsprit.core.algorithm.state.UpdateActivityTimes; -import com.graphhopper.jsprit.core.problem.Location; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.constraint.ConstraintManager; -import com.graphhopper.jsprit.core.problem.job.Service; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl.Builder; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; -import com.graphhopper.jsprit.core.reporting.SolutionPrinter; -import com.graphhopper.jsprit.core.util.Solutions; - -import java.util.Collection; - - -public class SimpleWithoutLocationExample2 { - - - public static void main(String[] args) { - - VehicleTypeImpl.Builder vehicleTypeBuilder = VehicleTypeImpl.Builder.newInstance("vehicleType").setCostPerWaitingTime(1.0).addCapacityDimension(0, 3); - VehicleType vehicleType = vehicleTypeBuilder.build(); - - /* - * get a vehicle-builder and build a vehicle located at (10,10) with type "vehicleType" - */ - Builder vehicleBuilder = Builder.newInstance("vehicle"); - vehicleBuilder.setStartLocation(Location.newInstance(0, 0)); - vehicleBuilder.setType(vehicleType); - VehicleImpl vehicle = vehicleBuilder.build(); - - /* - * build services at the required locations, each with a capacity-demand of 1. - */ - Service telco1 = Service.Builder.newInstance("telco-1").addTimeWindow(1000, 2500).setServiceTime(1800).build(); - Service telco2 = Service.Builder.newInstance("telco-2").addTimeWindow(6000, 8000).setServiceTime(1800).build(); -// Service breakAct = Service.Builder.newInstance("break").addTimeWindow(1000, 5000).setServiceTime(3600).build(); - Service service2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 1000)).build(); - Service service3 = Service.Builder.newInstance("3").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 2000)).build(); - Service service4 = Service.Builder.newInstance("4").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 3000)).build(); - - - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - vrpBuilder.setFleetSize(VehicleRoutingProblem.FleetSize.FINITE); - vrpBuilder.addVehicle(vehicle); - vrpBuilder.addJob(telco1).addJob(telco2) -// .addJob(breakAct) - .addJob(service2).addJob(service3).addJob(service4); - - VehicleRoutingProblem problem = vrpBuilder.build(); - - /* - * get the algorithm out-of-the-box. - */ - StateManager stateManager = new StateManager(problem); -// stateManager.addStateUpdater(new UpdateEndLocationIfRouteIsOpen()); - stateManager.addStateUpdater(new UpdateActivityNextLocations()); - stateManager.addStateUpdater(new UpdateActivityPrevLocations()); -// stateManager.addStateUpdater(new UpdateActivityLocations()); - stateManager.addStateUpdater(new UpdateActivityTimes(problem.getTransportCosts(), problem.getActivityCosts())); -// - ConstraintManager constraintManager = new ConstraintManager(problem, stateManager); - - Jsprit.Builder builder = Jsprit.Builder.newInstance(problem); - builder.setStateAndConstraintManager(stateManager, constraintManager); -// builder.addCoreStateAndConstraintStuff(false); - builder -// .setProperty(Jsprit.Strategy.RADIAL_BEST, "0.0") -// .setProperty(Jsprit.Strategy.RADIAL_REGRET, "0.0") -// .setProperty(Jsprit.Strategy.CLUSTER_BEST, "0.0") -// .setProperty(Jsprit.Strategy.CLUSTER_REGRET, "0.0") -// .setProperty(Jsprit.Strategy.STRING_BEST, "0.5") -// .setProperty(Jsprit.Strategy.STRING_REGRET, "0.0") -// .setProperty(Jsprit.Strategy.RANDOM_REGRET, "0.0") -// .setProperty(Jsprit.Strategy.WORST_REGRET, "0.0") - - .setProperty(Jsprit.Parameter.CONSTRUCTION, Jsprit.Construction.BEST_INSERTION.toString()); - - VehicleRoutingAlgorithm algorithm = builder.buildAlgorithm(); - - /* - * and search a solution - */ - Collection solutions = algorithm.searchSolutions(); - - /* - * get the best - */ - VehicleRoutingProblemSolution bestSolution = Solutions.bestOf(solutions); - -// new VrpXMLWriter(problem, solutions).write("output/problem-with-solution.xml"); - - SolutionPrinter.print(problem, bestSolution, SolutionPrinter.Print.VERBOSE); - -// /* -// * plot -// */ - new Plotter(problem, bestSolution).plot("output/plot.png", "simple example"); -// -// /* -// render problem and solution with GraphStream -// */ -// new GraphStreamViewer(problem, bestSolution).labelWith(Label.ID).setRenderDelay(200).display(); - } - -} diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SolomonExample.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SolomonExample.java deleted file mode 100644 index 9493eb0d0..000000000 --- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SolomonExample.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.examples; - -import com.graphhopper.jsprit.analysis.toolbox.GraphStreamViewer; -import com.graphhopper.jsprit.analysis.toolbox.GraphStreamViewer.Label; -import com.graphhopper.jsprit.analysis.toolbox.Plotter; -import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; -import com.graphhopper.jsprit.core.algorithm.box.SchrimpfFactory; -import com.graphhopper.jsprit.core.algorithm.selector.SelectBest; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.reporting.SolutionPrinter; -import com.graphhopper.jsprit.instance.reader.SolomonReader; -import com.graphhopper.jsprit.util.Examples; - -import java.util.Collection; - - -public class SolomonExample { - - public static void main(String[] args) { - /* - * some preparation - create output folder - */ - Examples.createOutputFolder(); - - /* - * Build the problem. - * - * But define a problem-builder first. - */ - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - - /* - * A solomonReader reads solomon-instance files, and stores the required information in the builder. - */ - new SolomonReader(vrpBuilder).read("input/C101_solomon.txt"); - - - /* - * Finally, the problem can be built. By default, transportCosts are crowFlyDistances (as usually used for vrp-instances). - */ - VehicleRoutingProblem vrp = vrpBuilder.build(); - - new Plotter(vrp).plot("output/solomon_C101.png", "C101"); - - /* - * Define the required vehicle-routing algorithms to solve the above problem. - * - * The algorithm can be defined and configured in an xml-file. - */ - VehicleRoutingAlgorithm vra = new SchrimpfFactory().createAlgorithm(vrp); - - /* - * Solve the problem. - * - * - */ - Collection solutions = vra.searchSolutions(); - - /* - * Retrieve best solution. - */ - VehicleRoutingProblemSolution solution = new SelectBest().selectSolution(solutions); - - - /* - * print solution - */ - SolutionPrinter.print(vrp, solution, SolutionPrinter.Print.VERBOSE); - - /* - * Plot solution. - */ - Plotter plotter = new Plotter(vrp, solution); -// plotter.setBoundingBox(30, 0, 50, 20); - plotter.plot("output/solomon_C101_solution.png", "C101"); - - new GraphStreamViewer(vrp, solution).setCameraView(30, 30, 0.25).labelWith(Label.ID).setRenderDelay(100).display(); - - } - -} diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SolomonExampleWithSpecifiedVehicleEndLocations.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SolomonExampleWithSpecifiedVehicleEndLocations.java deleted file mode 100644 index 8548783eb..000000000 --- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SolomonExampleWithSpecifiedVehicleEndLocations.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.examples; - -import com.graphhopper.jsprit.analysis.toolbox.AlgorithmSearchProgressChartListener; -import com.graphhopper.jsprit.analysis.toolbox.GraphStreamViewer; -import com.graphhopper.jsprit.analysis.toolbox.GraphStreamViewer.Label; -import com.graphhopper.jsprit.analysis.toolbox.Plotter; -import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; -import com.graphhopper.jsprit.core.algorithm.box.Jsprit; -import com.graphhopper.jsprit.core.algorithm.selector.SelectBest; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.reporting.SolutionPrinter; -import com.graphhopper.jsprit.io.problem.VrpXMLReader; - -import java.io.File; -import java.util.Collection; - - -public class SolomonExampleWithSpecifiedVehicleEndLocations { - - public static void main(String[] args) { - /* - * some preparation - create output folder - */ - File dir = new File("output"); - // if the directory does not exist, create it - if (!dir.exists()) { - System.out.println("creating directory ./output"); - boolean result = dir.mkdir(); - if (result) System.out.println("./output created"); - } - - /* - * Build the problem. - * - * But define a problem-builder first. - */ - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - - /* - * A solomonReader reads solomon-instance files, and stores the required information in the builder. - */ - new VrpXMLReader(vrpBuilder).read("input/deliveries_solomon_specifiedVehicleEndLocations_c101.xml"); - - /* - * Finally, the problem can be built. By default, transportCosts are crowFlyDistances (as usually used for vrp-instances). - */ - VehicleRoutingProblem vrp = vrpBuilder.build(); - - Plotter pblmPlotter = new Plotter(vrp); - pblmPlotter.plot("output/solomon_C101_specifiedVehicleEndLocations.png", "C101"); - - /* - * Define the required vehicle-routing algorithms to solve the above problem. - * - * The algorithm can be defined and configured in an xml-file. - */ -// VehicleRoutingAlgorithm vra = new SchrimpfFactory().createAlgorithm(vrp); - VehicleRoutingAlgorithm vra = Jsprit.createAlgorithm(vrp); - vra.setMaxIterations(20000); -// vra.setPrematureBreak(100); - vra.getAlgorithmListeners().addListener(new AlgorithmSearchProgressChartListener("output/sol_progress.png")); - /* - * Solve the problem. - * - * - */ - Collection solutions = vra.searchSolutions(); - - /* - * Retrieve best solution. - */ - VehicleRoutingProblemSolution solution = new SelectBest().selectSolution(solutions); - - /* - * print solution - */ - SolutionPrinter.print(solution); - - /* - * Plot solution. - */ -// SolutionPlotter.plotSolutionAsPNG(vrp, solution, "output/solomon_C101_specifiedVehicleEndLocations_solution.png","C101"); - Plotter solPlotter = new Plotter(vrp, solution); - solPlotter.plot("output/solomon_C101_specifiedVehicleEndLocations_solution.png", "C101"); - - - new GraphStreamViewer(vrp, solution).setRenderDelay(50).labelWith(Label.ID).display(); - - - } - -} diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SolomonExampleWithSpecifiedVehicleEndLocationsWithoutTWs.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SolomonExampleWithSpecifiedVehicleEndLocationsWithoutTWs.java deleted file mode 100644 index cedf88186..000000000 --- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SolomonExampleWithSpecifiedVehicleEndLocationsWithoutTWs.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.examples; - -import com.graphhopper.jsprit.analysis.toolbox.GraphStreamViewer; -import com.graphhopper.jsprit.analysis.toolbox.GraphStreamViewer.Label; -import com.graphhopper.jsprit.analysis.toolbox.Plotter; -import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; -import com.graphhopper.jsprit.core.algorithm.box.Jsprit; -import com.graphhopper.jsprit.core.algorithm.selector.SelectBest; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.reporting.SolutionPrinter; -import com.graphhopper.jsprit.io.problem.VrpXMLReader; - -import java.io.File; -import java.util.Collection; - - -public class SolomonExampleWithSpecifiedVehicleEndLocationsWithoutTWs { - - public static void main(String[] args) { - /* - * some preparation - create output folder - */ - File dir = new File("output"); - // if the directory does not exist, create it - if (!dir.exists()) { - System.out.println("creating directory ./output"); - boolean result = dir.mkdir(); - if (result) System.out.println("./output created"); - } - - /* - * Build the problem. - * - * But define a problem-builder first. - */ - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - - /* - * A solomonReader reads solomon-instance files, and stores the required information in the builder. - */ - new VrpXMLReader(vrpBuilder).read("input/pickups_and_deliveries_solomon_c101_withoutTWs_and_specifiedVehicleEndLocations.xml"); - - /* - * Finally, the problem can be built. By default, transportCosts are crowFlyDistances (as usually used for vrp-instances). - */ -// vrpBuilder.addProblemConstraint(Constraint.DELIVERIES_FIRST); - VehicleRoutingProblem vrp = vrpBuilder.build(); - - Plotter pblmPlotter = new Plotter(vrp); - pblmPlotter.plot("output/solomon_C101_specifiedVehicleEndLocations_withoutTWs.png", "C101"); - - /* - * Define the required vehicle-routing algorithms to solve the above problem. - * - * The algorithm can be defined and configured in an xml-file. - */ -// VehicleRoutingAlgorithm vra = new SchrimpfFactory().createAlgorithm(vrp); - VehicleRoutingAlgorithm vra = Jsprit.createAlgorithm(vrp); - vra.setMaxIterations(20000); -// vra.setPrematureBreak(100); -// vra.getAlgorithmListeners().addListener(new AlgorithmSearchProgressChartListener("output/sol_progress.png")); - /* - * Solve the problem. - * - * - */ - Collection solutions = vra.searchSolutions(); - - /* - * Retrieve best solution. - */ - VehicleRoutingProblemSolution solution = new SelectBest().selectSolution(solutions); - - /* - * print solution - */ - SolutionPrinter.print(solution); - - /* - * Plot solution. - */ -// SolutionPlotter.plotSolutionAsPNG(vrp, solution, "output/solomon_C101_specifiedVehicleEndLocations_solution.png","C101"); - Plotter solPlotter = new Plotter(vrp, solution); - solPlotter.plot("output/solomon_C101_specifiedVehicleEndLocations_withoutTWs_solution.png", "C101"); - - - new GraphStreamViewer(vrp, solution).setRenderDelay(50).labelWith(Label.ID).display(); - - - } - -} diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SolomonOpenExample.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SolomonOpenExample.java deleted file mode 100644 index 64fb61628..000000000 --- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SolomonOpenExample.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.examples; - -import com.graphhopper.jsprit.analysis.toolbox.AlgorithmEventsRecorder; -import com.graphhopper.jsprit.analysis.toolbox.AlgorithmEventsViewer; -import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; -import com.graphhopper.jsprit.core.algorithm.box.Jsprit; -import com.graphhopper.jsprit.core.algorithm.selector.SelectBest; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.reporting.SolutionPrinter; -import com.graphhopper.jsprit.io.problem.VrpXMLReader; -import com.graphhopper.jsprit.util.Examples; - -import java.util.Collection; - - -public class SolomonOpenExample { - - public static void main(String[] args) { - /* - * some preparation - create output folder - */ - Examples.createOutputFolder(); - - /* - * Build the problem. - * - * But define a problem-builder first. - */ - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - - /* - * A solomonReader reads solomon-instance files, and stores the required information in the builder. - */ - new VrpXMLReader(vrpBuilder).read("input/deliveries_solomon_open_c101.xml"); - - /* - * Finally, the problem can be built. By default, transportCosts are crowFlyDistances (as usually used for vrp-instances). - */ - VehicleRoutingProblem vrp = vrpBuilder.build(); - -// new Plotter(vrp).plot("output/solomon_C101_open.png", "C101"); - - - AlgorithmEventsRecorder eventsRecorder = new AlgorithmEventsRecorder(vrp, "output/events.dgs.gz"); - eventsRecorder.setRecordingRange(0, 50); - - /* - * Define the required vehicle-routing algorithms to solve the above problem. - * - * The algorithm can be defined and configured in an xml-file. - */ -// VehicleRoutingAlgorithm vra = new SchrimpfFactory().createAlgorithm(vrp); -// VehicleRoutingAlgorithm vra = VehicleRoutingAlgorithms.readAndCreateAlgorithm(vrp, "input/algorithmConfig_fix.xml"); - VehicleRoutingAlgorithm vra = Jsprit.Builder.newInstance(vrp).setProperty(Jsprit.Parameter.THREADS, "4") - .setProperty(Jsprit.Parameter.FAST_REGRET, "true") - .setProperty(Jsprit.Parameter.CONSTRUCTION, Jsprit.Construction.BEST_INSERTION.toString()).buildAlgorithm(); -// vra.setPrematureBreak(100); -// vra.getAlgorithmListeners().addListener(new AlgorithmSearchProgressChartListener("output/sol_progress.png")); - vra.addListener(eventsRecorder); - vra.setMaxIterations(200); - /* - * Solve the problem. - * - * - */ - Collection solutions = vra.searchSolutions(); - - /* - * Retrieve best solution. - */ - VehicleRoutingProblemSolution solution = new SelectBest().selectSolution(solutions); - - /* - * print solution - */ - SolutionPrinter.print(solution); - - /* - * Plot solution. - */ -// SolutionPlotter.plotSolutionAsPNG(vrp, solution, "output/solomon_C101_open_solution.png","C101"); - - -// new GraphStreamViewer(vrp, solution).setRenderDelay(100).labelWith(Label.ID).display(); - - - AlgorithmEventsViewer viewer = new AlgorithmEventsViewer(); - viewer.setRuinDelay(8); - viewer.setRecreationDelay(2); - viewer.display("output/events.dgs.gz"); - - } - -} diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SolomonR101Example.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SolomonR101Example.java deleted file mode 100644 index 22740a740..000000000 --- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SolomonR101Example.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.examples; - -import com.graphhopper.jsprit.analysis.toolbox.AlgorithmSearchProgressChartListener; -import com.graphhopper.jsprit.analysis.toolbox.GraphStreamViewer; -import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; -import com.graphhopper.jsprit.core.algorithm.box.Jsprit; -import com.graphhopper.jsprit.core.algorithm.selector.SelectBest; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.reporting.SolutionPrinter; -import com.graphhopper.jsprit.io.problem.VrpXMLReader; -import com.graphhopper.jsprit.util.Examples; - -import java.util.Collection; - - -public class SolomonR101Example { - - public static void main(String[] args) { - /* - * some preparation - create output folder - */ - Examples.createOutputFolder(); - - /* - * Build the problem. - * - * But define a problem-builder first. - */ - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - - /* - * A solomonReader reads solomon-instance files, and stores the required information in the builder. - */ -// new SolomonReader(vrpBuilder).read("/Users/schroeder/IdeaProjects/jsprit/jsprit-instances/instances/solomon/R211.txt"); - new VrpXMLReader(vrpBuilder).read("output/R211.xml"); - /* - * Finally, the problem can be built. By default, transportCosts are crowFlyDistances (as usually used for vrp-instances). - */ - VehicleRoutingProblem vrp = vrpBuilder.build(); - -// new VrpXMLWriter(vrp).write("output/R211.xml"); -// new Plotter(vrp).plot("output/solomon_R101.png", "R101"); - - /* - * Define the required vehicle-routing algorithms to solve the above problem. - * - * The algorithm can be defined and configured in an xml-file. - */ -// VehicleRoutingAlgorithm vra = new SchrimpfFactory().createAlgorithm(vrp); - VehicleRoutingAlgorithm vra = Jsprit.createAlgorithm(vrp); - vra.setMaxIterations(20000); -// vra.setPrematureBreak(100); - vra.getAlgorithmListeners().addListener(new AlgorithmSearchProgressChartListener("output/sol_progress.png")); - /* - * Solve the problem. - * - * - */ - Collection solutions = vra.searchSolutions(); - - /* - * Retrieve best solution. - */ - VehicleRoutingProblemSolution solution = new SelectBest().selectSolution(solutions); - - /* - * print solution - */ - SolutionPrinter.print(vrp, solution, SolutionPrinter.Print.VERBOSE); - - new GraphStreamViewer(vrp, solution).display(); - /* - * Plot solution. - */ -// new Plotter(vrp,solution).plot( "output/solomon_R101_solution.png","R101"); - - } - -} diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SolomonWithSkillsExample.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SolomonWithSkillsExample.java deleted file mode 100644 index 0fb167803..000000000 --- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/SolomonWithSkillsExample.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.graphhopper.jsprit.examples; - - -import com.graphhopper.jsprit.analysis.toolbox.Plotter; -import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; -import com.graphhopper.jsprit.core.algorithm.box.Jsprit; -import com.graphhopper.jsprit.core.problem.Location; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.job.Job; -import com.graphhopper.jsprit.core.problem.job.Service; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.problem.vehicle.Vehicle; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; -import com.graphhopper.jsprit.core.reporting.SolutionPrinter; -import com.graphhopper.jsprit.core.util.Solutions; -import com.graphhopper.jsprit.instance.reader.SolomonReader; -import com.graphhopper.jsprit.io.problem.VrpXMLWriter; - -import java.util.Collection; - -public class SolomonWithSkillsExample { - - public static void main(String[] args) { - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - new SolomonReader(vrpBuilder).read("input/C101_solomon.txt"); - VehicleRoutingProblem vrp = vrpBuilder.build(); - - //y >= 50 skill1 otherwise skill2 - //two vehicles: v1 - skill1 #5; v2 - skill2 #6 - Vehicle solomonVehicle = vrp.getVehicles().iterator().next(); - VehicleType newType = solomonVehicle.getType(); - VehicleRoutingProblem.Builder skillProblemBuilder = VehicleRoutingProblem.Builder.newInstance(); - for (int i = 0; i < 5; i++) { - VehicleImpl skill1Vehicle = VehicleImpl.Builder.newInstance("skill1_vehicle_" + i).addSkill("skill1") - .setStartLocation(Location.Builder.newInstance().setId(solomonVehicle.getStartLocation().getId()).setCoordinate(solomonVehicle.getStartLocation().getCoordinate()).build()) - .setEarliestStart(solomonVehicle.getEarliestDeparture()) - .setType(newType).build(); - VehicleImpl skill2Vehicle = VehicleImpl.Builder.newInstance("skill2_vehicle_" + i).addSkill("skill2") - .setStartLocation(Location.Builder.newInstance().setId(solomonVehicle.getStartLocation().getId()) - .setCoordinate(solomonVehicle.getStartLocation().getCoordinate()).build()) - .setEarliestStart(solomonVehicle.getEarliestDeparture()) - .setType(newType).build(); - skillProblemBuilder.addVehicle(skill1Vehicle).addVehicle(skill2Vehicle); - } - for (Job job : vrp.getJobs().values()) { - Service service = (Service) job; - Service.Builder skillServiceBuilder; - if (service.getLocation().getCoordinate().getY() < 50.) { - skillServiceBuilder = Service.Builder.newInstance(service.getId() + "_skill2").setServiceTime(service.getServiceDuration()) - .setLocation(Location.Builder.newInstance().setId(service.getLocation().getId()) - .setCoordinate(service.getLocation().getCoordinate()).build()).setTimeWindow(service.getTimeWindow()) - .addSizeDimension(0, service.getSize().get(0)); - skillServiceBuilder.addRequiredSkill("skill2"); - } else { - skillServiceBuilder = Service.Builder.newInstance(service.getId() + "_skill1").setServiceTime(service.getServiceDuration()) - .setLocation( - Location.Builder.newInstance().setId(service.getLocation().getId()) - .setCoordinate(service.getLocation().getCoordinate()).build() - ).setTimeWindow(service.getTimeWindow()) - .addSizeDimension(0, service.getSize().get(0)); - skillServiceBuilder.addRequiredSkill("skill1"); - } - skillProblemBuilder.addJob(skillServiceBuilder.build()); - } - skillProblemBuilder.setFleetSize(VehicleRoutingProblem.FleetSize.FINITE); - VehicleRoutingProblem skillProblem = skillProblemBuilder.build(); - - VehicleRoutingAlgorithm vra = Jsprit.Builder.newInstance(skillProblem).buildAlgorithm(); - - Collection solutions = vra.searchSolutions(); - VehicleRoutingProblemSolution solution = Solutions.bestOf(solutions); - - SolutionPrinter.print(skillProblem, solution, SolutionPrinter.Print.VERBOSE); - - new Plotter(skillProblem, solution).plot("output/skill_solution", "solomon_with_skills"); - - new VrpXMLWriter(skillProblem, solutions).write("output/solomon_with_skills"); - } -} diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/TransportOfDisabledPeople.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/TransportOfDisabledPeople.java deleted file mode 100644 index b02f9beb9..000000000 --- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/TransportOfDisabledPeople.java +++ /dev/null @@ -1,219 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.examples; - -import com.graphhopper.jsprit.analysis.toolbox.GraphStreamViewer; -import com.graphhopper.jsprit.analysis.toolbox.GraphStreamViewer.Label; -import com.graphhopper.jsprit.analysis.toolbox.Plotter; -import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; -import com.graphhopper.jsprit.core.algorithm.box.Jsprit; -import com.graphhopper.jsprit.core.algorithm.state.StateManager; -import com.graphhopper.jsprit.core.algorithm.termination.IterationWithoutImprovementTermination; -import com.graphhopper.jsprit.core.problem.Location; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem.FleetSize; -import com.graphhopper.jsprit.core.problem.constraint.ConstraintManager; -import com.graphhopper.jsprit.core.problem.constraint.HardRouteConstraint; -import com.graphhopper.jsprit.core.problem.job.Shipment; -import com.graphhopper.jsprit.core.problem.misc.JobInsertionContext; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl.Builder; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; -import com.graphhopper.jsprit.core.reporting.SolutionPrinter; -import com.graphhopper.jsprit.core.util.Coordinate; -import com.graphhopper.jsprit.core.util.Solutions; -import com.graphhopper.jsprit.util.Examples; - -import java.util.Collection; - -public class TransportOfDisabledPeople { - - static int WHEELCHAIRSPACE_INDEX = 0; - - static int PASSENGERSEATS_INDEX = 1; - - public static void main(String[] args) { - /* - * some preparation - create output folder - */ - Examples.createOutputFolder(); - - /* - * get a vehicle type-builder and build a type with the typeId "vehicleType" and a capacity of 2 - */ - VehicleTypeImpl.Builder wheelChairTypeBuilder = VehicleTypeImpl.Builder.newInstance("wheelChairBusType") - .addCapacityDimension(WHEELCHAIRSPACE_INDEX, 2) //can transport two people with wheelchair - .addCapacityDimension(PASSENGERSEATS_INDEX, 4); //and 4 without - VehicleType vehicleType_wheelchair = wheelChairTypeBuilder.build(); - - VehicleTypeImpl.Builder soleyPassengerTypeBuilder = VehicleTypeImpl.Builder.newInstance("passengerBusType") - .addCapacityDimension(PASSENGERSEATS_INDEX, 6); //and 4 without - VehicleType vehicleType_solelypassenger = soleyPassengerTypeBuilder.build(); - - /* - * define two vehicles and their locations. - * - * this example employs two vehicles. one that has to return to its start-location (vehicle1) and one that has a different - * end-location. - * - * play with these location to see which impact they have on customer-sequences. - */ - Builder vehicleBuilder1 = VehicleImpl.Builder.newInstance("wheelchair_bus"); - vehicleBuilder1.setStartLocation(loc(Coordinate.newInstance(10, 10))); - vehicleBuilder1.setType(vehicleType_wheelchair); - VehicleImpl vehicle1 = vehicleBuilder1.build(); - - Builder vehicleBuilder1_2 = VehicleImpl.Builder.newInstance("wheelchair_bus_2"); - vehicleBuilder1_2.setStartLocation(loc(Coordinate.newInstance(10, 10))); - vehicleBuilder1_2.setType(vehicleType_wheelchair); - VehicleImpl vehicle1_2 = vehicleBuilder1_2.build(); - - Builder vehicleBuilder2 = VehicleImpl.Builder.newInstance("passenger_bus"); - vehicleBuilder2.setStartLocation(loc(Coordinate.newInstance(30, 30))).setEndLocation(loc(Coordinate.newInstance(30, 19))); - vehicleBuilder2.setType(vehicleType_solelypassenger); - VehicleImpl vehicle2 = vehicleBuilder2.build(); - - Builder vehicleBuilder2_2 = VehicleImpl.Builder.newInstance("passenger_bus_2"); - vehicleBuilder2_2.setStartLocation(loc(Coordinate.newInstance(30, 30))).setEndLocation(loc(Coordinate.newInstance(30, 19))); - vehicleBuilder2_2.setType(vehicleType_solelypassenger); - VehicleImpl vehicle2_2 = vehicleBuilder2_2.build(); - - - /* - * build shipments at the required locations, each with a capacity-demand of 1. - * - */ - Shipment shipment1 = Shipment.Builder.newInstance("wheelchair_1").addSizeDimension(WHEELCHAIRSPACE_INDEX, 1).setPickupLocation(loc(Coordinate.newInstance(5, 7))).setDeliveryLocation(loc(Coordinate.newInstance(6, 9))).build(); - Shipment shipment2 = Shipment.Builder.newInstance("2").addSizeDimension(PASSENGERSEATS_INDEX, 1).setPickupLocation(loc(Coordinate.newInstance(5, 13))).setDeliveryLocation(loc(Coordinate.newInstance(6, 11))).build(); - - Shipment shipment3 = Shipment.Builder.newInstance("wheelchair_2").addSizeDimension(WHEELCHAIRSPACE_INDEX, 1).setPickupLocation(loc(Coordinate.newInstance(15, 7))).setDeliveryLocation(loc(Coordinate.newInstance(14, 9))).build(); - Shipment shipment4 = Shipment.Builder.newInstance("4").addSizeDimension(PASSENGERSEATS_INDEX, 1).setPickupLocation(loc(Coordinate.newInstance(15, 13))).setDeliveryLocation(loc(Coordinate.newInstance(14, 11))).build(); - - Shipment shipment5 = Shipment.Builder.newInstance("wheelchair_3").addSizeDimension(WHEELCHAIRSPACE_INDEX, 1).setPickupLocation(loc(Coordinate.newInstance(25, 27))).setDeliveryLocation(loc(Coordinate.newInstance(26, 29))).build(); - Shipment shipment6 = Shipment.Builder.newInstance("6").addSizeDimension(PASSENGERSEATS_INDEX, 1).setPickupLocation(loc(Coordinate.newInstance(25, 33))).setDeliveryLocation(loc(Coordinate.newInstance(26, 31))).build(); - - Shipment shipment7 = Shipment.Builder.newInstance("7").addSizeDimension(PASSENGERSEATS_INDEX, 1).setPickupLocation(loc(Coordinate.newInstance(35, 27))).setDeliveryLocation(loc(Coordinate.newInstance(34, 29))).build(); - Shipment shipment8 = Shipment.Builder.newInstance("wheelchair_4").addSizeDimension(WHEELCHAIRSPACE_INDEX, 1).setPickupLocation(loc(Coordinate.newInstance(35, 33))).setDeliveryLocation(loc(Coordinate.newInstance(34, 31))).build(); - - Shipment shipment9 = Shipment.Builder.newInstance("9").addSizeDimension(PASSENGERSEATS_INDEX, 1).setPickupLocation(loc(Coordinate.newInstance(5, 27))).setDeliveryLocation(loc(Coordinate.newInstance(6, 29))).build(); - Shipment shipment10 = Shipment.Builder.newInstance("wheelchair_5").addSizeDimension(WHEELCHAIRSPACE_INDEX, 1).setPickupLocation(loc(Coordinate.newInstance(5, 33))).setDeliveryLocation(loc(Coordinate.newInstance(6, 31))).build(); - - Shipment shipment11 = Shipment.Builder.newInstance("11").addSizeDimension(PASSENGERSEATS_INDEX, 1).setPickupLocation(loc(Coordinate.newInstance(15, 27))).setDeliveryLocation(loc(Coordinate.newInstance(14, 29))).build(); - Shipment shipment12 = Shipment.Builder.newInstance("wheelchair_6").addSizeDimension(WHEELCHAIRSPACE_INDEX, 1).setPickupLocation(loc(Coordinate.newInstance(15, 33))).setDeliveryLocation(loc(Coordinate.newInstance(14, 31))).build(); - - Shipment shipment13 = Shipment.Builder.newInstance("13").addSizeDimension(PASSENGERSEATS_INDEX, 1).setPickupLocation(loc(Coordinate.newInstance(25, 7))).setDeliveryLocation(loc(Coordinate.newInstance(26, 9))).build(); - Shipment shipment14 = Shipment.Builder.newInstance("wheelchair_7").addSizeDimension(WHEELCHAIRSPACE_INDEX, 1).setPickupLocation(loc(Coordinate.newInstance(25, 13))).setDeliveryLocation(loc(Coordinate.newInstance(26, 11))).build(); - - Shipment shipment15 = Shipment.Builder.newInstance("15").addSizeDimension(PASSENGERSEATS_INDEX, 1).setPickupLocation(loc(Coordinate.newInstance(35, 7))).setDeliveryLocation(loc(Coordinate.newInstance(34, 9))).build(); - Shipment shipment16 = Shipment.Builder.newInstance("wheelchair_8").addSizeDimension(WHEELCHAIRSPACE_INDEX, 1).setPickupLocation(loc(Coordinate.newInstance(35, 13))).setDeliveryLocation(loc(Coordinate.newInstance(34, 11))).build(); - - Shipment shipment17 = Shipment.Builder.newInstance("17").addSizeDimension(PASSENGERSEATS_INDEX, 1).setPickupLocation(loc(Coordinate.newInstance(5, 14))).setDeliveryLocation(loc(Coordinate.newInstance(6, 16))).build(); - Shipment shipment18 = Shipment.Builder.newInstance("wheelchair_9").addSizeDimension(WHEELCHAIRSPACE_INDEX, 1).setPickupLocation(loc(Coordinate.newInstance(5, 20))).setDeliveryLocation(loc(Coordinate.newInstance(6, 18))).build(); - - Shipment shipment19 = Shipment.Builder.newInstance("19").addSizeDimension(PASSENGERSEATS_INDEX, 1).setPickupLocation(loc(Coordinate.newInstance(15, 14))).setDeliveryLocation(loc(Coordinate.newInstance(14, 16))).build(); - Shipment shipment20 = Shipment.Builder.newInstance("wheelchair_10").addSizeDimension(WHEELCHAIRSPACE_INDEX, 1).setPickupLocation(loc(Coordinate.newInstance(15, 20))).setDeliveryLocation(loc(Coordinate.newInstance(14, 18))).build(); - - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - vrpBuilder.addVehicle(vehicle1).addVehicle(vehicle2).addVehicle(vehicle1_2).addVehicle(vehicle2_2); - vrpBuilder.addJob(shipment1).addJob(shipment2).addJob(shipment3).addJob(shipment4); - vrpBuilder.addJob(shipment5).addJob(shipment6).addJob(shipment7).addJob(shipment8); - vrpBuilder.addJob(shipment9).addJob(shipment10).addJob(shipment11).addJob(shipment12); - vrpBuilder.addJob(shipment13).addJob(shipment14).addJob(shipment15).addJob(shipment16); - vrpBuilder.addJob(shipment17).addJob(shipment18).addJob(shipment19).addJob(shipment20); - - //you only have two vehicles - vrpBuilder.setFleetSize(FleetSize.FINITE); - - /* - * - * wheelchair-bus can only pickup passenger where x<15 - */ - HardRouteConstraint wheelchair_bus_passenger_pickup_constraint = new HardRouteConstraint() { - - @Override - public boolean fulfilled(JobInsertionContext insertionContext) { - Shipment shipment2insert = ((Shipment) insertionContext.getJob()); - if (insertionContext.getNewVehicle().getId().equals("wheelchair_bus")) { - if (shipment2insert.getSize().get(PASSENGERSEATS_INDEX) > 0) { - if (shipment2insert.getPickupLocation().getCoordinate().getX() > 15. || shipment2insert.getDeliveryLocation().getCoordinate().getX() > 15.) { - return false; - } - } - } - return true; - } - }; - - //build the problem - VehicleRoutingProblem problem = vrpBuilder.build(); - - StateManager stateManager = new StateManager(problem); - - ConstraintManager constraintManager = new ConstraintManager(problem, stateManager); - constraintManager.addConstraint(wheelchair_bus_passenger_pickup_constraint); - - - VehicleRoutingAlgorithm algorithm = Jsprit.Builder.newInstance(problem).setStateAndConstraintManager(stateManager,constraintManager).buildAlgorithm(); - algorithm.setPrematureAlgorithmTermination(new IterationWithoutImprovementTermination(100)); - - /* - * and search a solution - */ - Collection solutions = algorithm.searchSolutions(); - - /* - * get the best - */ - VehicleRoutingProblemSolution bestSolution = Solutions.bestOf(solutions); - - /* - * write out problem and solution to xml-file - */ -// new VrpXMLWriter(problem, solutions).write("output/shipment-problem-with-solution.xml"); - - /* - * print nRoutes and totalCosts of bestSolution - */ - SolutionPrinter.print(problem, bestSolution, SolutionPrinter.Print.VERBOSE); - - /* - * plot problem without solution - */ - Plotter problemPlotter = new Plotter(problem); - problemPlotter.plotShipments(true); - problemPlotter.setLabel(Plotter.Label.SIZE); - problemPlotter.plot("output/transportOfDisabledPeopleExample_problem.png", "disabled people tp"); - - Plotter solutionPlotter = new Plotter(problem, Solutions.bestOf(solutions)); - solutionPlotter.plotShipments(true); - solutionPlotter.setLabel(Plotter.Label.SIZE); - solutionPlotter.plot("output/transportOfDisabledPeopleExample_solution.png", "disabled people tp"); - - new GraphStreamViewer(problem).labelWith(Label.ID).setRenderDelay(100).setRenderShipments(true).display(); - - new GraphStreamViewer(problem, Solutions.bestOf(solutions)).labelWith(Label.ACTIVITY).setRenderDelay(100).setRenderShipments(true).display(); - - } - - private static Location loc(Coordinate coordinate) { - return Location.Builder.newInstance().setCoordinate(coordinate).build(); - } - -} diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/VRPWithBackhaulsExample.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/VRPWithBackhaulsExample.java deleted file mode 100644 index a55452887..000000000 --- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/VRPWithBackhaulsExample.java +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.examples; - -import com.graphhopper.jsprit.analysis.toolbox.AlgorithmSearchProgressChartListener; -import com.graphhopper.jsprit.analysis.toolbox.GraphStreamViewer; -import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; -import com.graphhopper.jsprit.core.algorithm.box.Jsprit; -import com.graphhopper.jsprit.core.algorithm.selector.SelectBest; -import com.graphhopper.jsprit.core.algorithm.state.StateManager; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.constraint.ConstraintManager; -import com.graphhopper.jsprit.core.problem.constraint.ServiceDeliveriesFirstConstraint; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.reporting.SolutionPrinter; -import com.graphhopper.jsprit.io.problem.VrpXMLReader; -import com.graphhopper.jsprit.util.Examples; - -import java.util.Collection; - - -public class VRPWithBackhaulsExample { - - public static void main(String[] args) { - - /* - * some preparation - create output folder - */ - Examples.createOutputFolder(); - - /* - * Build the problem. - * - * But define a problem-builder first. - */ - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - - /* - * A solomonReader reads solomon-instance files, and stores the required information in the builder. - */ - new VrpXMLReader(vrpBuilder).read("input/pickups_and_deliveries_solomon_r101.xml"); - - /* - * Finally, the problem can be built. By default, transportCosts are crowFlyDistances (as usually used for vrp-instances). - */ -// - VehicleRoutingProblem vrp = vrpBuilder.build(); - -// SolutionPlotter.plotVrpAsPNG(vrp, "output/vrpwbh_solomon_r101.png", "pd_r101"); - - /* - * Define the required vehicle-routing algorithms to solve the above problem. - * - * The algorithm can be defined and configured in an xml-file. - */ - - StateManager stateManager = new StateManager(vrp); - ConstraintManager constraintManager = new ConstraintManager(vrp, stateManager); - constraintManager.addConstraint(new ServiceDeliveriesFirstConstraint(), ConstraintManager.Priority.CRITICAL); - - VehicleRoutingAlgorithm vra = Jsprit.Builder.newInstance(vrp).setStateAndConstraintManager(stateManager,constraintManager).buildAlgorithm(); - vra.getAlgorithmListeners().addListener(new AlgorithmSearchProgressChartListener("output/sol_progress.png")); - /* - * Solve the problem. - * - * - */ - Collection solutions = vra.searchSolutions(); - - /* - * Retrieve best solution. - */ - VehicleRoutingProblemSolution solution = new SelectBest().selectSolution(solutions); - - /* - * print solution - */ - SolutionPrinter.print(vrp, solution, SolutionPrinter.Print.VERBOSE); - - /* - * Plot solution. - */ -// Plotter plotter = new Plotter(vrp, solution); -// plotter.setLabel(Label.SIZE); -// plotter.setShowFirstActivity(true); -// plotter.plot("output/vrpwbh_solomon_r101_solution.png","vrpwbh_r101"); - - new GraphStreamViewer(vrp, solution).setRenderDelay(100).display(); - - } - -} diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/VRPWithBackhaulsExample2.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/VRPWithBackhaulsExample2.java deleted file mode 100644 index 47494f1bb..000000000 --- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/VRPWithBackhaulsExample2.java +++ /dev/null @@ -1,188 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.examples; - -import com.graphhopper.jsprit.analysis.toolbox.AlgorithmSearchProgressChartListener; -import com.graphhopper.jsprit.analysis.toolbox.Plotter; -import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; -import com.graphhopper.jsprit.core.algorithm.box.Jsprit; -import com.graphhopper.jsprit.core.algorithm.selector.SelectBest; -import com.graphhopper.jsprit.core.algorithm.state.StateManager; -import com.graphhopper.jsprit.core.analysis.SolutionAnalyser; -import com.graphhopper.jsprit.core.problem.Capacity; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.constraint.ConstraintManager; -import com.graphhopper.jsprit.core.problem.constraint.ServiceDeliveriesFirstConstraint; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; -import com.graphhopper.jsprit.core.problem.solution.route.activity.TourActivity; -import com.graphhopper.jsprit.core.reporting.SolutionPrinter; -import com.graphhopper.jsprit.io.problem.VrpXMLReader; -import com.graphhopper.jsprit.util.Examples; - -import java.util.Collection; - - -public class VRPWithBackhaulsExample2 { - - public static void main(String[] args) { - - /* - * some preparation - create output folder - */ - Examples.createOutputFolder(); - - /* - * Build the problem. - * - * But define a problem-builder first. - */ - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - - /* - * A solomonReader reads solomon-instance files, and stores the required information in the builder. - */ - new VrpXMLReader(vrpBuilder).read("input/pd_christophides_vrpnc1_vcap50.xml"); - - - /* - * Finally, the problem can be built. By default, transportCosts are crowFlyDistances (as usually used for vrp-instances). - */ - final VehicleRoutingProblem vrp = vrpBuilder.build(); - -// new Plotter(vrp).plot("output/vrpwbh_christophides_vrpnc1.png", "pd_vrpnc1"); - - - /* - * Define the required vehicle-routing algorithms to solve the above problem. - * - * The algorithm can be defined and configured in an xml-file. - */ -// VehicleRoutingAlgorithm vra = VehicleRoutingAlgorithms.readAndCreateAlgorithm(vrp, "input/algorithmConfig_solomon.xml"); - -// VehicleRoutingAlgorithmBuilder vraBuilder = new VehicleRoutingAlgorithmBuilder(vrp,"input/algorithmConfig_solomon.xml"); -// vraBuilder.addDefaultCostCalculators(); -// vraBuilder.addCoreConstraints(); - - StateManager stateManager = new StateManager(vrp); - ConstraintManager constraintManager = new ConstraintManager(vrp, stateManager); - constraintManager.addConstraint(new ServiceDeliveriesFirstConstraint(), ConstraintManager.Priority.CRITICAL); - -// vraBuilder.setStateAndConstraintManager(stateManager,constraintManager); - -// VehicleRoutingAlgorithm vra = vraBuilder.build(); - - - VehicleRoutingAlgorithm vra = Jsprit.Builder.newInstance(vrp) - .setStateAndConstraintManager(stateManager, constraintManager) - .setProperty(Jsprit.Parameter.FIXED_COST_PARAM.toString(), "0.") - .buildAlgorithm(); - vra.setMaxIterations(2000); - vra.addListener(new AlgorithmSearchProgressChartListener("output/search")); - - - - /* - * Solve the problem. - * - * - */ - Collection solutions = vra.searchSolutions(); - - /* - * Retrieve best solution. - */ - VehicleRoutingProblemSolution solution = new SelectBest().selectSolution(solutions); - - /* - * print solution - */ - SolutionPrinter.print(solution); - - /* - * Plot solution. - */ -// SolutionPlotter.plotSolutionAsPNG(vrp, solution, "output/pd_solomon_r101_solution.png","pd_r101"); - Plotter plotter = new Plotter(vrp, solution); -// plotter.setLabel(Plotter.Label.SIZE); - plotter.plot("output/vrpwbh_christophides_vrpnc1_solution.png", "vrpwbh_vrpnc1"); - - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); - - for (VehicleRoute route : solution.getRoutes()) { - System.out.println("------"); - System.out.println("vehicleId: " + route.getVehicle().getId()); - System.out.println("vehicleCapacity: " + route.getVehicle().getType().getCapacityDimensions() + " maxLoad: " + analyser.getMaxLoad(route)); - System.out.println("totalDistance: " + analyser.getDistance(route)); - System.out.println("waitingTime: " + analyser.getWaitingTime(route)); - System.out.println("load@beginning: " + analyser.getLoadAtBeginning(route)); - System.out.println("load@end: " + analyser.getLoadAtEnd(route)); - System.out.println("operationTime: " + analyser.getOperationTime(route)); - System.out.println("serviceTime: " + analyser.getServiceTime(route)); - System.out.println("transportTime: " + analyser.getTransportTime(route)); - System.out.println("transportCosts: " + analyser.getVariableTransportCosts(route)); - System.out.println("fixedCosts: " + analyser.getFixedCosts(route)); - System.out.println("capViolationOnRoute: " + analyser.getCapacityViolation(route)); - System.out.println("capViolation@beginning: " + analyser.getCapacityViolationAtBeginning(route)); - System.out.println("capViolation@end: " + analyser.getCapacityViolationAtEnd(route)); - System.out.println("timeWindowViolationOnRoute: " + analyser.getTimeWindowViolation(route)); - System.out.println("skillConstraintViolatedOnRoute: " + analyser.hasSkillConstraintViolation(route)); - - System.out.println("dist@" + route.getStart().getLocation().getId() + ": " + analyser.getDistanceAtActivity(route.getStart(), route)); - System.out.println("timeWindowViolation@" + route.getStart().getLocation().getId() + ": " + analyser.getTimeWindowViolationAtActivity(route.getStart(), route)); - for (TourActivity act : route.getActivities()) { - System.out.println("--"); - System.out.println("actType: " + act.getName() + " demand: " + act.getSize()); - System.out.println("dist@" + act.getLocation().getId() + ": " + analyser.getDistanceAtActivity(act, route)); - System.out.println("load(before)@" + act.getLocation().getId() + ": " + analyser.getLoadJustBeforeActivity(act, route)); - System.out.println("load(after)@" + act.getLocation().getId() + ": " + analyser.getLoadRightAfterActivity(act, route)); - System.out.println("transportCosts@" + act.getLocation().getId() + ": " + analyser.getVariableTransportCostsAtActivity(act, route)); - System.out.println("capViolation(after)@" + act.getLocation().getId() + ": " + analyser.getCapacityViolationAfterActivity(act, route)); - System.out.println("timeWindowViolation@" + act.getLocation().getId() + ": " + analyser.getTimeWindowViolationAtActivity(act, route)); - System.out.println("skillConstraintViolated@" + act.getLocation().getId() + ": " + analyser.hasSkillConstraintViolationAtActivity(act, route)); - } - System.out.println("--"); - System.out.println("dist@" + route.getEnd().getLocation().getId() + ": " + analyser.getDistanceAtActivity(route.getEnd(), route)); - System.out.println("timeWindowViolation@" + route.getEnd().getLocation().getId() + ": " + analyser.getTimeWindowViolationAtActivity(route.getEnd(), route)); - } - - System.out.println("-----"); - System.out.println("aggreate solution stats"); - System.out.println("total freight moved: " + Capacity.addup(analyser.getLoadAtBeginning(), analyser.getLoadPickedUp())); - System.out.println("total no. picks at beginning: " + analyser.getNumberOfPickupsAtBeginning()); - System.out.println("total no. picks on routes: " + analyser.getNumberOfPickups()); - System.out.println("total picked load at beginnnig: " + analyser.getLoadAtBeginning()); - System.out.println("total picked load on routes: " + analyser.getLoadPickedUp()); - System.out.println("total no. deliveries at end: " + analyser.getNumberOfDeliveriesAtEnd()); - System.out.println("total no. deliveries on routes: " + analyser.getNumberOfDeliveries()); - System.out.println("total delivered load at end: " + analyser.getLoadAtEnd()); - System.out.println("total delivered load on routes: " + analyser.getLoadDelivered()); - System.out.println("total tp_distance: " + analyser.getDistance()); - System.out.println("total tp_time: " + analyser.getTransportTime()); - System.out.println("total waiting_time: " + analyser.getWaitingTime()); - System.out.println("total service_time: " + analyser.getServiceTime()); - System.out.println("total operation_time: " + analyser.getOperationTime()); - System.out.println("total twViolation: " + analyser.getTimeWindowViolation()); - System.out.println("total capViolation: " + analyser.getCapacityViolation()); - System.out.println("total fixedCosts: " + analyser.getFixedCosts()); - System.out.println("total variableCosts: " + analyser.getVariableTransportCosts()); - System.out.println("total costs: " + analyser.getTotalCosts()); - - } - -} diff --git a/jsprit-examples/src/main/java/com/graphhopper/jsprit/util/Examples.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/util/Examples.java deleted file mode 100644 index c93d57315..000000000 --- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/util/Examples.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.util; - -import java.io.File; - -public class Examples { - - public static void createOutputFolder() { - File dir = new File("output"); - // if the directory does not exist, create it - if (!dir.exists()) { - System.out.println("creating directory ./output"); - boolean result = dir.mkdir(); - if (result) System.out.println("./output created"); - } - } - -} diff --git a/jsprit-instances/.gitignore b/jsprit-instances/.gitignore deleted file mode 100644 index 9c7ec4890..000000000 --- a/jsprit-instances/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -/bin -/target -/output -.DS_Store - -# IntelliJ -*.ipr -*.iws -*.iml -.idea - -# Eclipse -.project -.classpath -.settings \ No newline at end of file diff --git a/jsprit-instances/LICENSE.md b/jsprit-instances/LICENSE.md deleted file mode 100644 index f75caec51..000000000 --- a/jsprit-instances/LICENSE.md +++ /dev/null @@ -1,203 +0,0 @@ - - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and -limitations under the License. diff --git a/jsprit-instances/instances/belhaiza/cm101.txt b/jsprit-instances/instances/belhaiza/cm101.txt deleted file mode 100644 index 33d8ce5fc..000000000 --- a/jsprit-instances/instances/belhaiza/cm101.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 10 100 1 -0 200 -0 40 50 0 0 0 0 0 1236 -1 45 68 90 10 1 1 5 20 31 118 148 235 258 343 355 441 457 -2 45 70 90 30 1 1 10 61 94 163 187 238 252 313 350 410 439 498 527 616 631 698 744 803 844 920 939 -3 42 66 90 10 1 1 8 76 88 187 221 288 303 371 403 469 514 587 618 683 694 760 791 -4 42 68 90 10 1 1 7 64 110 168 201 253 281 333 357 415 463 540 580 644 668 -5 42 65 90 10 1 1 7 7 36 129 144 202 222 289 328 391 403 477 514 574 592 -6 40 69 90 20 1 1 7 122 153 247 288 362 392 446 483 536 561 629 665 744 784 -7 40 66 90 20 1 1 7 37 68 152 162 248 286 373 422 476 490 554 587 665 697 -8 38 68 90 20 1 1 8 34 73 127 152 209 250 312 322 389 407 494 514 600 629 686 717 -9 38 70 90 10 1 1 5 106 133 193 221 305 331 414 430 498 515 -10 35 66 90 10 1 1 7 82 116 172 198 256 290 344 388 466 510 568 601 691 706 -11 35 69 90 10 1 1 7 55 72 157 187 237 276 337 348 445 488 569 605 683 707 -12 25 85 90 20 1 1 7 87 105 202 212 307 335 391 424 503 519 608 642 722 752 -13 22 75 90 30 1 1 8 55 78 132 167 248 271 325 355 443 464 546 568 631 653 706 746 -14 22 85 90 10 1 1 5 100 147 234 276 343 391 444 470 533 574 -15 20 80 90 40 1 1 5 110 155 241 275 344 379 451 479 551 569 -16 20 85 90 40 1 1 6 4 16 73 88 170 206 267 278 349 392 451 465 -17 18 75 90 20 1 1 10 122 162 257 289 366 407 496 508 586 609 697 741 814 842 900 918 972 1006 1094 1127 -18 15 75 90 20 1 1 5 102 122 188 232 296 314 390 424 496 530 -19 15 80 90 10 1 1 7 42 59 156 181 256 267 365 414 472 520 615 653 710 732 -20 30 50 90 10 1 1 8 44 68 142 161 217 228 327 349 420 454 508 549 622 637 706 741 -21 30 52 90 20 1 1 8 76 107 175 195 245 272 333 353 408 420 490 505 568 607 692 722 -22 28 52 90 20 1 1 9 99 125 211 251 320 363 434 478 551 584 641 656 752 784 872 907 971 988 -23 28 55 90 10 1 1 5 84 115 202 220 300 324 402 443 538 552 -24 25 50 90 10 1 1 10 46 71 169 213 281 326 423 456 515 526 622 640 712 740 800 816 879 912 975 993 -25 25 52 90 40 1 1 5 56 97 161 185 266 311 396 406 475 512 -26 25 55 90 10 1 1 5 45 60 113 148 221 244 333 367 419 435 -27 23 52 90 10 1 1 5 113 146 215 228 322 349 430 472 530 565 -28 23 55 90 20 1 1 8 44 74 132 144 230 277 363 378 437 462 520 538 631 663 729 743 -29 20 50 90 10 1 1 6 88 102 159 196 265 284 362 401 482 493 551 582 -30 20 55 90 10 1 1 7 121 151 204 227 282 326 406 419 484 505 596 637 719 745 -31 10 35 90 20 1 1 6 24 66 122 138 226 250 327 344 431 453 513 560 -32 10 40 90 30 1 1 8 6 28 100 123 191 203 274 310 360 409 503 527 599 630 711 754 -33 8 40 90 40 1 1 5 19 34 117 163 219 231 325 337 433 447 -34 8 45 90 20 1 1 10 23 70 158 176 243 254 305 331 418 464 543 574 653 675 751 797 851 874 943 992 -35 5 35 90 10 1 1 10 47 67 146 193 264 277 336 384 473 496 591 639 721 765 837 867 940 981 1036 1057 -36 5 45 90 10 1 1 5 104 126 224 242 298 331 383 400 452 462 -37 2 40 90 20 1 1 8 111 128 181 201 275 291 357 402 472 489 572 608 705 723 806 848 -38 0 40 90 30 1 1 6 107 130 193 236 318 350 434 466 562 575 627 658 -39 0 45 90 20 1 1 10 97 136 209 233 294 340 393 406 479 524 616 642 702 719 809 837 907 952 1034 1077 -40 35 30 90 10 1 1 6 10 27 106 122 204 246 336 380 467 515 599 615 -41 35 32 90 10 1 1 5 70 109 172 205 263 298 362 377 473 488 -42 33 32 90 20 1 1 6 83 116 168 185 246 289 350 393 454 478 549 570 -43 33 35 90 10 1 1 10 11 29 80 104 164 200 264 289 366 399 466 500 556 584 637 686 749 795 891 912 -44 32 30 90 10 1 1 10 101 124 195 234 319 331 396 430 484 509 565 594 683 726 790 812 879 889 973 985 -45 30 30 90 10 1 1 7 91 102 176 190 266 312 376 413 477 498 586 634 701 745 -46 30 32 90 30 1 1 10 114 135 225 241 323 339 416 443 541 586 684 713 780 819 874 900 975 991 1042 1079 -47 30 35 90 10 1 1 5 1 34 92 135 227 275 341 380 455 504 -48 28 30 90 10 1 1 7 110 132 191 211 276 312 363 386 457 498 596 612 675 718 -49 28 35 90 10 1 1 10 37 64 138 161 221 255 320 361 454 467 555 592 645 691 767 783 864 881 944 964 -50 26 32 90 10 1 1 9 61 76 152 174 242 288 360 372 430 441 520 554 628 650 705 733 808 824 -51 25 30 90 10 1 1 9 17 51 114 143 213 228 292 322 401 449 523 545 602 638 688 727 795 821 -52 25 35 90 10 1 1 8 60 106 167 190 286 304 384 410 495 543 636 673 772 798 897 927 -53 44 5 90 20 1 1 8 119 166 226 248 310 348 413 423 502 517 593 630 686 715 787 823 -54 42 10 90 40 1 1 5 102 114 173 217 316 348 423 448 503 543 -55 42 15 90 10 1 1 7 31 49 148 179 264 304 363 374 450 498 554 603 681 698 -56 40 5 90 30 1 1 6 110 144 226 270 326 355 429 470 546 565 643 675 -57 40 15 90 40 1 1 5 83 112 164 201 276 312 400 415 505 551 -58 38 5 90 30 1 1 6 61 98 173 184 271 296 368 398 461 489 561 572 -59 38 15 90 10 1 1 9 45 71 149 194 290 321 407 454 553 584 661 678 733 748 812 838 929 966 -60 35 5 90 20 1 1 9 79 118 192 212 296 328 397 410 489 531 604 650 732 753 844 891 950 985 -61 50 30 90 10 1 1 10 68 92 168 197 248 272 358 401 494 530 604 622 713 735 805 817 873 903 968 1008 -62 50 35 90 20 1 1 7 29 77 169 201 272 313 378 424 515 553 640 685 736 753 -63 50 40 90 50 1 1 7 0 14 103 126 223 265 359 391 442 458 532 575 656 699 -64 48 30 90 10 1 1 8 8 33 85 124 192 232 295 314 388 398 461 495 578 608 697 712 -65 48 40 90 10 1 1 5 70 98 172 209 306 336 404 442 537 564 -66 47 35 90 10 1 1 7 44 64 155 189 284 330 391 418 491 507 588 620 703 720 -67 47 40 90 10 1 1 9 65 103 202 226 279 300 367 403 496 518 582 631 707 737 818 849 914 955 -68 45 30 90 10 1 1 8 110 147 234 270 340 389 451 466 555 594 657 697 783 827 911 936 -69 45 35 90 10 1 1 7 60 107 180 192 275 324 399 416 480 521 610 620 719 735 -70 95 30 90 30 1 1 9 22 49 125 164 243 284 356 400 499 540 636 654 720 750 809 833 888 932 -71 95 35 90 20 1 1 8 73 91 163 212 266 302 394 410 490 520 590 610 688 732 810 859 -72 53 30 90 10 1 1 7 28 68 141 160 230 269 340 366 462 496 548 574 624 642 -73 92 30 90 10 1 1 9 117 156 234 280 360 396 479 500 588 633 707 727 813 831 919 948 1016 1047 -74 53 35 90 50 1 1 5 45 56 109 145 228 256 323 357 414 438 -75 45 65 90 20 1 1 5 105 148 211 242 298 341 422 435 509 545 -76 90 35 90 10 1 1 6 74 105 159 205 295 331 401 422 503 538 631 672 -77 88 30 90 10 1 1 8 92 138 214 252 343 385 443 491 542 575 665 698 750 768 857 885 -78 88 35 90 20 1 1 8 63 86 148 185 251 268 364 377 456 481 546 559 626 665 755 797 -79 87 30 90 10 1 1 10 111 154 210 257 321 357 436 456 524 535 634 678 763 812 888 921 996 1014 1089 1120 -80 85 25 90 10 1 1 7 98 139 229 259 319 359 450 498 574 598 669 718 805 847 -81 85 35 90 30 1 1 7 27 40 100 138 201 218 289 302 356 387 470 508 599 639 -82 75 55 90 20 1 1 6 57 104 164 197 294 324 416 438 488 512 599 626 -83 72 55 90 10 1 1 5 105 115 196 235 324 361 450 488 558 588 -84 70 58 90 20 1 1 8 74 108 163 198 285 320 389 401 466 487 582 604 655 682 735 777 -85 68 60 90 30 1 1 8 36 54 147 158 216 238 311 348 440 473 551 599 655 689 766 787 -86 66 55 90 10 1 1 7 103 115 214 246 328 340 410 427 503 547 610 645 701 748 -87 65 55 90 20 1 1 10 22 49 100 145 215 232 303 349 413 446 497 507 576 596 649 691 748 784 878 921 -88 65 60 90 30 1 1 7 113 134 228 276 355 369 420 459 547 591 658 693 777 802 -89 63 58 90 10 1 1 8 98 133 221 232 282 298 394 418 498 524 611 660 746 794 861 908 -90 60 55 90 10 1 1 5 72 109 183 224 301 350 440 476 527 550 -91 60 60 90 10 1 1 9 26 46 102 140 191 235 311 325 424 448 515 542 633 649 748 763 843 870 -92 67 85 90 20 1 1 10 48 95 165 205 288 323 410 440 502 535 606 639 696 708 768 779 837 850 933 958 -93 65 85 90 40 1 1 8 25 73 152 183 258 297 391 439 521 563 659 683 759 792 851 884 -94 65 82 90 10 1 1 7 57 91 151 200 293 319 399 409 471 489 542 569 645 680 -95 62 80 90 30 1 1 7 81 105 170 214 300 330 400 431 518 552 646 692 769 790 -96 60 80 90 10 1 1 8 85 134 226 250 333 369 451 465 561 610 702 718 777 802 852 867 -97 60 85 90 30 1 1 8 49 85 153 183 235 248 311 336 428 473 555 565 660 678 741 776 -98 58 75 90 20 1 1 9 120 162 248 281 355 386 439 451 549 572 639 666 755 793 871 891 968 998 -99 55 80 90 10 1 1 10 74 90 188 215 309 336 403 414 475 495 552 599 650 681 738 781 834 872 928 958 -100 55 85 90 20 1 1 8 49 66 139 162 260 299 371 392 485 498 578 609 659 669 753 793 diff --git a/jsprit-instances/instances/belhaiza/cm102.txt b/jsprit-instances/instances/belhaiza/cm102.txt deleted file mode 100644 index 6767727af..000000000 --- a/jsprit-instances/instances/belhaiza/cm102.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 10 100 1 -0 200 -0 40 50 0 0 0 0 0 1236 -1 45 68 90 10 1 1 5 29 41 128 168 255 285 370 383 469 489 -2 45 70 90 30 1 1 7 88 133 202 233 284 300 361 411 471 509 568 606 695 712 -3 42 66 90 10 1 1 7 139 169 230 251 327 368 449 462 561 607 674 692 760 804 -4 42 68 90 10 1 1 7 93 122 174 212 288 316 385 414 490 554 612 656 708 745 -5 42 65 90 10 1 1 6 170 182 270 290 358 401 474 501 554 593 686 703 -6 40 69 90 20 1 1 5 127 147 200 230 313 339 399 438 509 531 -7 40 66 90 20 1 1 6 139 208 283 345 429 468 536 551 634 647 734 765 -8 38 68 90 20 1 1 6 96 129 179 207 292 342 441 495 550 604 682 697 -9 38 70 90 10 1 1 5 101 144 231 271 340 366 454 469 519 537 -10 35 66 90 10 1 1 5 63 85 172 197 283 322 379 421 493 505 -11 35 69 90 10 1 1 7 38 75 159 193 276 295 363 384 464 498 568 618 698 716 -12 25 85 90 20 1 1 5 16 77 155 217 275 320 410 427 486 519 -13 22 75 90 30 1 1 6 125 165 215 269 330 342 439 499 580 629 707 738 -14 22 85 90 10 1 1 6 125 148 245 256 351 388 444 488 567 586 675 721 -15 20 80 90 40 1 1 6 102 148 220 249 303 350 431 460 514 555 643 669 -16 20 85 90 40 1 1 5 56 104 191 217 271 284 374 439 526 585 -17 18 75 90 20 1 1 7 72 102 191 204 256 282 376 439 525 572 641 689 761 798 -18 15 75 90 20 1 1 5 55 92 143 157 214 232 314 363 424 436 -19 15 80 90 10 1 1 7 19 54 146 166 265 321 416 459 536 593 682 695 773 802 -20 30 50 90 10 1 1 7 79 134 194 231 311 331 410 424 478 533 624 649 715 776 -21 30 52 90 20 1 1 5 109 135 216 258 331 367 434 455 552 584 -22 28 52 90 20 1 1 5 174 214 311 379 464 484 550 614 694 713 -23 28 55 90 10 1 1 6 41 72 123 162 228 245 325 394 483 518 574 589 -24 25 50 90 10 1 1 6 67 114 190 235 297 344 416 448 510 520 573 596 -25 25 52 90 40 1 1 5 73 90 153 207 292 332 402 456 544 602 -26 25 55 90 10 1 1 7 67 127 198 259 332 377 434 452 548 592 680 728 792 813 -27 23 52 90 10 1 1 5 121 163 250 272 352 383 461 518 613 629 -28 23 55 90 20 1 1 7 66 99 197 258 326 389 486 531 590 602 698 720 792 829 -29 20 50 90 10 1 1 5 101 123 183 209 260 286 358 414 478 509 -30 20 55 90 10 1 1 7 1 49 133 185 237 270 338 356 409 456 529 559 648 695 -31 10 35 90 20 1 1 5 1 14 110 154 223 238 332 368 449 507 -32 10 40 90 30 1 1 6 89 109 177 217 275 288 374 440 526 544 603 635 -33 8 40 90 40 1 1 5 99 118 173 235 297 327 412 429 486 536 -34 8 45 90 20 1 1 5 128 161 212 255 331 378 450 470 569 609 -35 5 35 90 10 1 1 5 149 162 215 231 295 341 430 458 528 587 -36 5 45 90 10 1 1 6 141 167 225 247 315 332 391 447 513 555 652 707 -37 2 40 90 20 1 1 5 54 98 165 178 231 267 349 381 480 515 -38 0 40 90 30 1 1 5 157 188 260 302 383 443 499 512 608 627 -39 0 45 90 20 1 1 7 21 35 129 143 239 255 352 420 480 501 553 609 680 710 -40 35 30 90 10 1 1 5 132 196 275 317 396 424 500 564 618 648 -41 35 32 90 10 1 1 7 173 206 275 301 380 446 517 532 591 658 747 776 871 938 -42 33 32 90 20 1 1 7 90 138 227 264 327 365 419 436 528 556 654 676 732 777 -43 33 35 90 10 1 1 5 3 15 94 106 201 221 274 299 373 392 -44 32 30 90 10 1 1 7 32 61 144 178 238 287 377 444 505 555 648 678 741 800 -45 30 30 90 10 1 1 6 98 146 200 250 326 391 489 501 590 643 716 747 -46 30 32 90 30 1 1 7 16 39 133 147 217 254 313 373 446 468 562 620 711 745 -47 30 35 90 10 1 1 6 32 52 110 125 216 261 353 402 500 558 616 670 -48 28 30 90 10 1 1 7 128 139 218 262 344 369 425 445 502 529 592 657 740 785 -49 28 35 90 10 1 1 5 147 159 250 273 341 365 429 452 550 585 -50 26 32 90 10 1 1 5 63 78 161 172 240 263 342 369 450 492 -51 25 30 90 10 1 1 6 21 59 112 181 244 309 405 432 498 560 646 705 -52 25 35 90 10 1 1 6 124 137 202 248 302 334 390 429 518 578 642 671 -53 44 5 90 20 1 1 5 11 41 113 163 250 262 336 352 428 493 -54 42 10 90 40 1 1 7 50 77 174 201 294 350 443 473 569 596 686 705 787 806 -55 42 15 90 10 1 1 6 154 196 270 338 425 493 563 593 650 667 751 791 -56 40 5 90 30 1 1 5 103 120 211 221 319 339 425 485 584 613 -57 40 15 90 40 1 1 6 54 86 149 213 295 316 383 412 501 512 570 606 -58 38 5 90 30 1 1 7 47 106 178 241 307 335 415 454 543 565 618 647 731 793 -59 38 15 90 10 1 1 7 14 78 154 173 254 275 338 363 419 472 538 577 672 713 -60 35 5 90 20 1 1 6 77 91 149 160 239 286 360 389 444 481 556 575 -61 50 30 90 10 1 1 7 25 71 134 172 242 260 324 364 443 510 584 612 669 719 -62 50 35 90 20 1 1 7 72 82 162 194 268 332 393 423 519 542 622 656 741 808 -63 50 40 90 50 1 1 7 71 132 207 276 355 424 522 588 648 676 738 791 856 867 -64 48 30 90 10 1 1 5 122 167 241 283 365 382 436 473 564 578 -65 48 40 90 10 1 1 7 100 121 190 259 346 386 460 476 538 561 660 702 787 842 -66 47 35 90 10 1 1 5 167 188 287 328 387 405 468 512 607 653 -67 47 40 90 10 1 1 7 84 133 222 240 301 340 417 459 517 561 645 684 736 787 -68 45 30 90 10 1 1 7 25 65 161 217 278 337 412 463 538 550 637 670 742 782 -69 45 35 90 10 1 1 6 4 30 120 156 224 259 337 399 495 537 623 689 -70 95 30 90 30 1 1 6 34 103 160 203 273 289 373 399 483 542 624 678 -71 95 35 90 20 1 1 5 99 138 192 243 333 366 461 505 568 605 -72 53 30 90 10 1 1 6 144 210 269 316 384 453 527 570 638 679 770 781 -73 92 30 90 10 1 1 7 154 203 277 299 390 418 488 501 557 598 663 718 816 852 -74 53 35 90 50 1 1 5 148 191 262 319 384 448 539 591 678 741 -75 45 65 90 20 1 1 5 72 83 133 149 238 268 365 423 517 561 -76 90 35 90 10 1 1 5 145 156 248 287 367 414 467 500 552 605 -77 88 30 90 10 1 1 7 40 72 122 148 228 267 343 369 425 475 526 583 661 698 -78 88 35 90 20 1 1 7 88 127 212 278 349 380 451 516 584 609 700 746 841 905 -79 87 30 90 10 1 1 6 30 53 130 168 227 274 359 408 484 536 635 666 -80 85 25 90 10 1 1 5 116 130 195 225 324 386 461 488 565 606 -81 85 35 90 30 1 1 6 55 111 194 241 323 386 485 539 596 630 717 742 -82 75 55 90 20 1 1 7 48 103 189 251 335 368 464 494 547 586 685 722 781 831 -83 72 55 90 10 1 1 6 52 108 197 207 306 325 397 456 543 564 653 695 -84 70 58 90 20 1 1 6 79 140 239 296 392 415 481 522 581 612 667 728 -85 68 60 90 30 1 1 6 105 127 199 267 321 370 462 482 562 602 672 698 -86 66 55 90 10 1 1 7 172 216 284 327 388 443 516 540 610 664 735 770 866 912 -87 65 55 90 20 1 1 6 35 48 134 145 242 296 374 438 518 568 651 678 -88 65 60 90 30 1 1 7 44 100 160 199 273 326 402 457 515 547 615 627 680 729 -89 63 58 90 10 1 1 6 107 156 224 254 307 325 417 476 539 581 637 697 -90 60 55 90 10 1 1 5 115 163 221 259 339 381 435 500 590 639 -91 60 60 90 10 1 1 5 111 145 233 281 363 425 512 576 652 705 -92 67 85 90 20 1 1 7 168 227 306 326 405 416 476 534 606 618 700 757 832 862 -93 65 85 90 40 1 1 7 30 55 108 137 205 271 325 370 456 484 574 605 701 759 -94 65 82 90 10 1 1 7 163 227 310 327 390 417 469 514 607 638 737 806 885 937 -95 62 80 90 30 1 1 6 88 110 185 227 316 350 426 483 571 629 727 749 -96 60 80 90 10 1 1 7 94 125 196 265 352 410 463 498 583 606 665 687 741 767 -97 60 85 90 30 1 1 6 16 57 140 192 283 338 434 456 535 572 648 670 -98 58 75 90 20 1 1 7 148 176 226 257 344 380 430 447 533 594 677 725 810 867 -99 55 80 90 10 1 1 7 70 110 190 232 313 359 440 456 509 564 628 661 726 754 -100 55 85 90 20 1 1 7 6 42 95 153 213 254 306 333 398 460 544 564 643 681 diff --git a/jsprit-instances/instances/belhaiza/cm103.txt b/jsprit-instances/instances/belhaiza/cm103.txt deleted file mode 100644 index b4662b358..000000000 --- a/jsprit-instances/instances/belhaiza/cm103.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 12 100 1 -0 200 -0 40 50 0 0 0 0 0 1236 -1 45 68 90 10 1 1 3 29 42 129 184 271 311 -2 45 70 90 30 1 1 3 30 103 202 277 352 415 -3 42 66 90 10 1 1 4 20 65 148 160 233 264 338 367 -4 42 68 90 10 1 1 3 138 159 226 317 376 457 -5 42 65 90 10 1 1 4 95 152 233 248 347 411 478 500 -6 40 69 90 20 1 1 5 155 198 274 312 364 416 492 530 599 638 -7 40 66 90 20 1 1 7 102 159 232 256 324 338 436 450 538 563 631 690 763 799 -8 38 68 90 20 1 1 5 22 37 100 188 274 299 352 392 475 509 -9 38 70 90 10 1 1 5 37 65 141 190 279 378 453 542 626 679 -10 35 66 90 10 1 1 3 10 54 122 192 271 348 -11 35 69 90 10 1 1 4 53 112 196 206 292 366 453 551 -12 25 85 90 20 1 1 3 101 119 196 231 306 367 -13 22 75 90 30 1 1 6 69 104 192 210 260 283 343 375 437 479 553 630 -14 22 85 90 10 1 1 6 25 83 155 168 241 328 398 427 485 556 615 685 -15 20 80 90 40 1 1 4 107 153 223 293 373 395 488 513 -16 20 85 90 40 1 1 3 100 188 246 308 398 419 -17 18 75 90 20 1 1 4 79 106 191 247 297 373 434 447 -18 15 75 90 20 1 1 7 116 210 277 344 415 475 560 589 686 697 792 842 898 960 -19 15 80 90 10 1 1 3 106 168 244 325 404 469 -20 30 50 90 10 1 1 4 110 160 226 243 318 385 448 466 -21 30 52 90 20 1 1 6 113 150 213 251 304 382 478 496 587 670 768 844 -22 28 52 90 20 1 1 4 11 57 120 201 295 309 390 480 -23 28 55 90 10 1 1 6 70 138 210 260 332 361 414 452 508 521 604 627 -24 25 50 90 10 1 1 6 39 52 123 208 267 286 374 460 538 637 726 818 -25 25 52 90 40 1 1 5 140 155 233 272 360 448 521 571 629 658 -26 25 55 90 10 1 1 6 105 122 176 254 345 377 443 529 593 621 697 762 -27 23 52 90 10 1 1 6 83 133 200 226 323 367 442 455 553 652 710 806 -28 23 55 90 20 1 1 6 57 148 228 251 319 361 435 466 522 534 633 672 -29 20 50 90 10 1 1 6 138 186 242 259 340 392 471 515 595 653 721 753 -30 20 55 90 10 1 1 5 44 54 107 137 193 213 300 347 422 456 -31 10 35 90 20 1 1 6 71 147 235 317 409 484 576 620 699 747 804 856 -32 10 40 90 30 1 1 3 164 225 313 380 444 470 -33 8 40 90 40 1 1 3 121 179 266 294 374 415 -34 8 45 90 20 1 1 6 17 78 174 265 333 377 475 561 629 718 815 878 -35 5 35 90 10 1 1 3 36 63 136 229 287 337 -36 5 45 90 10 1 1 4 49 110 173 202 290 302 369 420 -37 2 40 90 20 1 1 4 111 200 285 295 364 436 492 505 -38 0 40 90 30 1 1 4 11 77 150 190 279 344 396 420 -39 0 45 90 20 1 1 3 163 225 294 311 405 454 -40 35 30 90 10 1 1 7 111 178 253 278 346 401 459 473 559 653 739 762 821 865 -41 35 32 90 10 1 1 4 99 123 178 267 329 369 454 474 -42 33 32 90 20 1 1 6 40 63 149 194 245 305 381 446 518 544 643 698 -43 33 35 90 10 1 1 4 149 164 217 237 301 365 454 492 -44 32 30 90 10 1 1 7 115 162 252 287 345 373 441 462 521 600 666 725 822 899 -45 30 30 90 10 1 1 4 54 116 183 197 250 299 381 424 -46 30 32 90 30 1 1 5 2 101 195 237 309 368 449 534 590 604 -47 30 35 90 10 1 1 3 118 210 266 282 376 392 -48 28 30 90 10 1 1 3 172 266 325 419 507 535 -49 28 35 90 10 1 1 3 74 114 209 222 299 376 -50 26 32 90 10 1 1 5 104 142 218 309 363 404 473 572 635 733 -51 25 30 90 10 1 1 4 104 199 270 288 347 442 531 570 -52 25 35 90 10 1 1 7 151 243 318 386 475 525 588 640 694 714 806 844 942 970 -53 44 5 90 20 1 1 5 31 52 102 116 195 209 304 330 383 416 -54 42 10 90 40 1 1 3 155 209 268 307 390 437 -55 42 15 90 10 1 1 6 168 197 280 363 429 459 550 638 716 750 827 895 -56 40 5 90 30 1 1 6 161 179 231 289 375 472 540 621 716 767 821 851 -57 40 15 90 40 1 1 3 80 169 261 307 367 394 -58 38 5 90 30 1 1 5 155 238 329 375 434 502 556 582 661 685 -59 38 15 90 10 1 1 7 149 217 315 397 455 531 582 654 732 807 870 932 990 1058 -60 35 5 90 20 1 1 3 25 61 124 217 300 363 -61 50 30 90 10 1 1 3 147 161 252 281 349 380 -62 50 35 90 20 1 1 4 75 110 170 267 335 353 436 448 -63 50 40 90 50 1 1 4 50 94 171 234 301 367 423 475 -64 48 30 90 10 1 1 7 162 177 241 275 368 460 551 591 662 737 822 836 901 966 -65 48 40 90 10 1 1 4 86 104 196 218 284 365 416 452 -66 47 35 90 10 1 1 4 119 134 186 236 291 367 462 515 -67 47 40 90 10 1 1 5 52 124 188 223 311 406 473 560 624 711 -68 45 30 90 10 1 1 7 143 166 248 272 349 397 495 584 682 735 802 878 933 980 -69 45 35 90 10 1 1 3 120 175 231 244 294 356 -70 95 30 90 30 1 1 7 170 196 282 367 466 505 573 628 723 760 819 852 917 985 -71 95 35 90 20 1 1 4 137 149 207 256 347 443 537 571 -72 53 30 90 10 1 1 5 58 95 175 228 317 346 399 437 521 610 -73 92 30 90 10 1 1 6 14 106 182 205 286 312 375 408 464 539 605 659 -74 53 35 90 50 1 1 5 64 155 227 243 301 313 392 457 531 570 -75 45 65 90 20 1 1 5 27 47 138 194 251 315 378 430 500 523 -76 90 35 90 10 1 1 5 167 203 268 330 413 466 552 576 646 656 -77 88 30 90 10 1 1 4 161 225 292 346 406 436 506 599 -78 88 35 90 20 1 1 6 126 222 315 385 484 530 629 684 781 843 908 1005 -79 87 30 90 10 1 1 4 44 118 183 194 273 295 371 443 -80 85 25 90 10 1 1 5 114 135 189 240 331 347 406 493 592 653 -81 85 35 90 30 1 1 4 133 188 262 282 344 373 472 531 -82 75 55 90 20 1 1 6 5 78 175 201 300 356 415 437 500 562 657 722 -83 72 55 90 10 1 1 7 84 153 242 264 325 378 455 513 571 632 716 769 821 893 -84 70 58 90 20 1 1 6 25 80 176 255 316 399 474 546 621 635 722 767 -85 68 60 90 30 1 1 5 80 130 181 215 305 354 422 469 547 635 -86 66 55 90 10 1 1 5 165 257 334 408 467 566 623 683 753 772 -87 65 55 90 20 1 1 4 144 215 301 373 436 504 582 635 -88 65 60 90 30 1 1 6 69 87 166 249 322 414 496 531 622 716 775 841 -89 63 58 90 10 1 1 7 97 139 215 268 319 362 448 533 626 694 768 797 888 926 -90 60 55 90 10 1 1 3 91 138 225 246 318 355 -91 60 60 90 10 1 1 7 97 128 217 303 398 446 531 569 663 748 806 883 953 965 -92 67 85 90 20 1 1 3 61 71 161 241 319 415 -93 65 85 90 40 1 1 7 4 27 101 185 266 352 421 486 572 588 676 690 751 794 -94 65 82 90 10 1 1 4 87 97 160 224 307 363 452 473 -95 62 80 90 30 1 1 3 100 151 225 297 394 449 -96 60 80 90 10 1 1 6 77 119 190 282 350 383 474 539 634 725 786 836 -97 60 85 90 30 1 1 3 98 151 210 275 360 429 -98 58 75 90 20 1 1 6 63 121 184 282 365 381 446 487 586 674 749 785 -99 55 80 90 10 1 1 5 109 167 232 311 394 459 541 631 730 807 -100 55 85 90 20 1 1 5 44 67 156 233 296 373 459 547 631 676 diff --git a/jsprit-instances/instances/belhaiza/cm104.txt b/jsprit-instances/instances/belhaiza/cm104.txt deleted file mode 100644 index 4e5e82fc2..000000000 --- a/jsprit-instances/instances/belhaiza/cm104.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 14 100 1 -0 200 -0 40 50 0 0 0 0 0 1236 -1 45 68 90 10 1 1 3 40 53 140 195 282 322 -2 45 70 90 30 1 1 3 42 115 214 289 364 427 -3 42 66 90 10 1 1 4 28 73 156 168 241 272 346 375 -4 42 68 90 10 1 1 3 194 215 282 373 432 513 -5 42 65 90 10 1 1 3 133 190 271 286 385 449 -6 40 69 90 20 1 1 3 141 182 276 319 395 433 -7 40 66 90 20 1 1 4 77 90 156 214 309 354 432 489 -8 38 68 90 20 1 1 3 11 62 114 157 215 312 -9 38 70 90 10 1 1 5 89 148 221 257 310 363 456 477 535 569 -10 35 66 90 10 1 1 5 17 57 140 174 234 288 359 388 487 544 -11 35 69 90 10 1 1 5 127 216 300 353 421 438 521 536 623 665 -12 25 85 90 20 1 1 4 135 180 230 267 352 423 522 598 -13 22 75 90 30 1 1 5 23 42 106 167 245 304 391 446 515 550 -14 22 85 90 10 1 1 3 36 115 177 188 255 283 -15 20 80 90 40 1 1 3 122 199 276 352 403 426 -16 20 85 90 40 1 1 4 114 201 271 300 358 429 488 558 -17 18 75 90 20 1 1 4 150 196 266 336 416 438 531 556 -18 15 75 90 20 1 1 3 140 228 286 348 438 459 -19 15 80 90 10 1 1 4 112 139 224 280 330 406 467 480 -20 30 50 90 10 1 1 5 162 256 323 390 461 521 606 635 732 743 -21 30 52 90 20 1 1 4 143 235 293 315 395 457 533 614 -22 28 52 90 20 1 1 4 80 142 223 273 339 356 431 498 -23 28 55 90 10 1 1 3 191 225 307 344 407 445 -24 25 50 90 10 1 1 5 22 37 127 220 307 390 457 554 607 653 -25 25 52 90 40 1 1 5 12 46 140 230 316 382 451 519 591 641 -26 25 55 90 10 1 1 3 77 127 178 194 251 273 -27 23 52 90 10 1 1 4 10 79 171 201 256 303 395 421 -28 23 55 90 20 1 1 5 139 238 327 419 472 532 598 679 772 833 -29 20 50 90 10 1 1 5 114 164 222 251 305 369 457 520 582 600 -30 20 55 90 10 1 1 5 82 168 232 260 336 401 473 539 598 650 -31 10 35 90 20 1 1 4 234 278 353 366 464 563 621 717 -32 10 40 90 30 1 1 5 80 171 251 274 342 384 458 489 545 557 -33 8 40 90 40 1 1 3 151 249 338 386 442 459 -34 8 45 90 20 1 1 4 94 160 236 299 361 426 498 541 -35 5 35 90 10 1 1 3 56 88 143 159 229 250 -36 5 45 90 10 1 1 5 126 160 246 319 409 455 541 619 688 774 -37 2 40 90 20 1 1 5 146 194 251 303 381 405 487 581 640 720 -38 0 40 90 30 1 1 3 133 150 210 281 348 426 -39 0 45 90 20 1 1 4 142 223 318 337 406 499 591 635 -40 35 30 90 10 1 1 5 92 181 278 341 400 413 509 537 609 660 -41 35 32 90 10 1 1 3 142 170 230 265 316 351 -42 33 32 90 20 1 1 5 87 138 232 267 317 384 468 541 593 638 -43 33 35 90 10 1 1 3 155 197 263 279 360 412 -44 32 30 90 10 1 1 5 12 36 114 124 178 271 342 387 477 567 -45 30 30 90 10 1 1 4 42 108 183 238 290 332 429 454 -46 30 32 90 30 1 1 5 179 202 261 305 363 392 485 546 612 631 -47 30 35 90 10 1 1 3 176 196 253 324 393 423 -48 28 30 90 10 1 1 5 9 69 145 210 282 308 407 462 515 554 -49 28 35 90 10 1 1 5 18 38 102 166 255 293 363 447 510 579 -50 26 32 90 10 1 1 5 39 67 135 156 215 294 360 419 516 593 -51 25 30 90 10 1 1 3 76 138 205 219 272 321 -52 25 35 90 10 1 1 4 105 174 224 323 417 459 531 590 -53 44 5 90 20 1 1 5 12 78 135 156 239 331 387 403 497 513 -54 42 10 90 40 1 1 3 241 335 394 488 576 604 -55 42 15 90 10 1 1 3 104 144 239 252 329 406 -56 40 5 90 30 1 1 4 147 185 261 352 406 447 516 615 -57 40 15 90 40 1 1 5 94 128 207 302 373 391 450 545 634 673 -58 38 5 90 30 1 1 5 212 304 379 447 536 586 649 701 755 775 -59 38 15 90 10 1 1 3 49 135 214 311 369 390 -60 35 5 90 20 1 1 3 11 22 81 144 207 298 -61 50 30 90 10 1 1 3 122 145 211 300 370 396 -62 50 35 90 20 1 1 4 53 122 212 308 369 440 533 573 -63 50 40 90 50 1 1 5 138 172 249 317 371 442 518 610 708 722 -64 48 30 90 10 1 1 5 90 171 266 317 371 401 495 511 581 632 -65 48 40 90 10 1 1 5 51 78 168 219 289 378 460 544 603 629 -66 47 35 90 10 1 1 3 144 168 250 334 424 510 -67 47 40 90 10 1 1 5 40 116 167 239 317 392 455 517 575 643 -68 45 30 90 10 1 1 3 35 71 134 227 310 373 -69 45 35 90 10 1 1 3 207 221 312 341 409 440 -70 95 30 90 30 1 1 3 105 140 200 297 365 383 -71 95 35 90 20 1 1 3 54 124 188 232 309 372 -72 53 30 90 10 1 1 4 115 157 256 276 372 387 451 485 -73 92 30 90 10 1 1 5 82 170 256 340 392 440 520 593 662 699 -74 53 35 90 50 1 1 3 33 87 176 261 325 364 -75 45 65 90 20 1 1 3 16 57 129 200 287 301 -76 90 35 90 10 1 1 3 226 279 363 421 485 521 -77 88 30 90 10 1 1 3 191 286 353 440 504 591 -78 88 35 90 20 1 1 5 201 224 306 330 407 455 553 642 740 793 -79 87 30 90 10 1 1 5 101 142 199 219 303 358 414 427 477 539 -80 85 25 90 10 1 1 5 239 265 351 436 535 574 642 697 792 829 -81 85 35 90 30 1 1 3 161 187 254 292 381 393 -82 75 55 90 20 1 1 4 237 262 325 409 481 571 637 674 -83 72 55 90 10 1 1 4 52 117 182 263 356 372 460 532 -84 70 58 90 20 1 1 5 38 55 114 171 234 301 387 420 494 515 -85 68 60 90 30 1 1 3 222 278 331 373 424 473 -86 66 55 90 10 1 1 3 147 212 286 325 380 431 -87 65 55 90 20 1 1 3 202 258 315 379 442 494 -88 65 60 90 30 1 1 3 124 170 267 303 368 430 -89 63 58 90 10 1 1 4 38 108 158 233 301 348 443 507 -90 60 55 90 10 1 1 4 56 96 192 221 301 348 433 529 -91 60 60 90 10 1 1 5 100 187 262 361 440 538 636 731 791 829 -92 67 85 90 20 1 1 5 4 36 93 130 214 277 351 409 491 512 -93 65 85 90 40 1 1 4 18 36 128 212 290 316 385 484 -94 65 82 90 10 1 1 4 28 106 167 221 298 331 418 516 -95 62 80 90 30 1 1 5 45 57 133 228 284 383 461 488 568 602 -96 60 80 90 10 1 1 5 162 248 304 357 431 512 588 618 696 755 -97 60 85 90 30 1 1 3 167 220 272 344 419 489 -98 58 75 90 20 1 1 3 227 306 367 450 525 597 -99 55 80 90 10 1 1 3 98 153 228 306 378 428 -100 55 85 90 20 1 1 3 108 120 191 273 366 409 diff --git a/jsprit-instances/instances/belhaiza/cm105.txt b/jsprit-instances/instances/belhaiza/cm105.txt deleted file mode 100644 index 7ada4e64c..000000000 --- a/jsprit-instances/instances/belhaiza/cm105.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 11 100 1 -0 200 -0 40 50 0 0 0 0 0 1236 -1 45 68 90 10 1 1 2 40 95 182 308 -2 45 70 90 30 1 1 3 12 175 233 389 488 647 -3 42 66 90 10 1 1 4 86 211 266 375 458 512 585 670 -4 42 68 90 10 1 1 2 48 170 259 328 -5 42 65 90 10 1 1 5 195 297 358 437 513 641 722 780 879 1019 -6 40 69 90 20 1 1 2 141 244 338 443 -7 40 66 90 20 1 1 3 116 245 310 366 432 562 -8 38 68 90 20 1 1 3 130 317 375 511 563 682 -9 38 70 90 10 1 1 3 239 296 384 459 527 659 -10 35 66 90 10 1 1 3 120 239 295 354 417 598 -11 35 69 90 10 1 1 2 84 242 305 365 -12 25 85 90 20 1 1 4 50 174 245 327 426 555 649 817 -13 22 75 90 30 1 1 4 169 292 360 422 505 564 651 755 -14 22 85 90 10 1 1 4 135 244 294 389 474 626 725 885 -15 20 80 90 40 1 1 4 23 88 152 288 366 498 585 711 -16 20 85 90 40 1 1 3 23 132 189 355 417 468 -17 18 75 90 20 1 1 2 62 165 239 401 -18 15 75 90 20 1 1 4 35 166 238 293 366 545 615 697 -19 15 80 90 10 1 1 4 166 240 308 387 467 577 647 797 -20 30 50 90 10 1 1 2 43 185 239 418 -21 30 52 90 20 1 1 5 144 279 335 410 479 651 723 801 886 1013 -22 28 52 90 20 1 1 4 8 60 152 237 319 510 577 722 -23 28 55 90 10 1 1 4 54 167 217 373 445 638 716 903 -24 25 50 90 10 1 1 2 143 217 306 447 -25 25 52 90 40 1 1 4 144 286 358 457 511 655 736 835 -26 25 55 90 10 1 1 4 68 132 197 363 429 575 662 752 -27 23 52 90 10 1 1 2 230 293 384 556 -28 23 55 90 20 1 1 4 85 280 333 444 507 676 770 827 -29 20 50 90 10 1 1 5 180 323 392 539 611 729 801 882 935 1032 -30 20 55 90 10 1 1 2 35 105 187 336 -31 10 35 90 20 1 1 2 208 292 347 460 -32 10 40 90 30 1 1 2 190 367 445 644 -33 8 40 90 40 1 1 5 137 305 394 453 531 629 717 897 970 1088 -34 8 45 90 20 1 1 2 150 225 304 366 -35 5 35 90 10 1 1 5 62 126 218 392 452 552 633 725 806 936 -36 5 45 90 10 1 1 3 45 165 234 336 388 580 -37 2 40 90 20 1 1 4 239 438 496 689 784 940 997 1095 -38 0 40 90 30 1 1 4 90 194 268 353 409 463 562 660 -39 0 45 90 20 1 1 4 194 308 364 427 508 628 707 814 -40 35 30 90 10 1 1 4 62 204 276 381 443 494 547 631 -41 35 32 90 10 1 1 2 102 171 234 395 -42 33 32 90 20 1 1 4 181 336 426 536 622 786 855 1032 -43 33 35 90 10 1 1 5 146 259 316 437 515 588 670 860 919 1085 -44 32 30 90 10 1 1 3 133 195 255 408 475 638 -45 30 30 90 10 1 1 4 142 311 406 471 540 729 821 927 -46 30 32 90 30 1 1 5 92 274 371 510 569 625 721 802 874 993 -47 30 35 90 10 1 1 2 142 222 282 373 -48 28 30 90 10 1 1 3 192 246 313 431 525 617 -49 28 35 90 10 1 1 4 173 223 292 446 502 558 639 743 -50 26 32 90 10 1 1 2 117 217 306 449 -51 25 30 90 10 1 1 2 2 59 155 291 -52 25 35 90 10 1 1 2 107 216 306 490 -53 44 5 90 20 1 1 4 42 186 261 386 438 542 639 714 -54 42 10 90 40 1 1 4 179 251 310 417 475 557 650 785 -55 42 15 90 10 1 1 2 63 163 248 315 -56 40 5 90 30 1 1 4 56 127 213 321 372 506 582 725 -57 40 15 90 40 1 1 2 125 241 307 504 -58 38 5 90 30 1 1 2 27 204 284 345 -59 38 15 90 10 1 1 3 196 292 362 536 599 747 -60 35 5 90 20 1 1 5 39 119 187 256 315 480 546 678 775 937 -61 50 30 90 10 1 1 2 76 212 279 336 -62 50 35 90 20 1 1 3 92 151 222 370 420 618 -63 50 40 90 50 1 1 3 134 318 409 527 579 723 -64 48 30 90 10 1 1 2 227 300 353 503 -65 48 40 90 10 1 1 2 220 280 376 441 -66 47 35 90 10 1 1 5 47 238 326 406 473 530 581 694 781 966 -67 47 40 90 10 1 1 4 77 216 311 450 517 647 746 810 -68 45 30 90 10 1 1 3 67 264 361 468 522 660 -69 45 35 90 10 1 1 3 49 241 330 428 523 715 -70 95 30 90 30 1 1 5 126 273 362 480 543 663 717 784 876 973 -71 95 35 90 20 1 1 2 147 343 401 470 -72 53 30 90 10 1 1 2 11 63 122 260 -73 92 30 90 10 1 1 5 16 105 179 252 318 500 570 647 730 879 -74 53 35 90 50 1 1 2 202 395 456 607 -75 45 65 90 20 1 1 3 204 384 462 552 629 776 -76 90 35 90 10 1 1 4 227 291 343 473 559 754 822 990 -77 88 30 90 10 1 1 3 57 243 296 359 432 614 -78 88 35 90 20 1 1 3 47 223 296 377 471 643 -79 87 30 90 10 1 1 3 161 335 394 471 529 591 -80 85 25 90 10 1 1 4 160 333 423 600 687 881 965 1039 -81 85 35 90 30 1 1 2 142 301 364 501 -82 75 55 90 20 1 1 4 34 110 167 260 323 511 594 733 -83 72 55 90 10 1 1 2 207 264 355 438 -84 70 58 90 20 1 1 2 56 162 233 326 -85 68 60 90 30 1 1 5 23 105 156 260 320 470 534 640 717 856 -86 66 55 90 10 1 1 4 115 218 317 385 481 540 604 695 -87 65 55 90 20 1 1 5 82 263 349 522 574 687 767 923 992 1087 -88 65 60 90 30 1 1 2 33 156 245 421 -89 63 58 90 10 1 1 3 5 99 152 254 326 478 -90 60 55 90 10 1 1 2 27 188 283 405 -91 60 60 90 10 1 1 4 73 227 291 383 471 663 730 909 -92 67 85 90 20 1 1 5 230 324 414 486 568 642 719 833 931 1112 -93 65 85 90 40 1 1 3 183 378 448 550 607 674 -94 65 82 90 10 1 1 4 8 161 240 309 400 451 549 625 -95 62 80 90 30 1 1 5 80 238 313 510 575 680 743 928 1010 1087 -96 60 80 90 10 1 1 3 5 106 177 344 442 517 -97 60 85 90 30 1 1 5 221 311 376 492 566 666 726 867 932 1101 -98 58 75 90 20 1 1 2 171 352 447 612 -99 55 80 90 10 1 1 2 130 203 284 361 -100 55 85 90 20 1 1 3 179 268 342 410 486 584 diff --git a/jsprit-instances/instances/belhaiza/cm106.txt b/jsprit-instances/instances/belhaiza/cm106.txt deleted file mode 100644 index cb19e9a96..000000000 --- a/jsprit-instances/instances/belhaiza/cm106.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 10 100 1 -0 200 -0 40 50 0 0 0 0 0 1236 -1 45 68 90 10 1 1 2 51 106 280 406 -2 45 70 90 30 1 1 3 16 179 296 452 651 810 -3 42 66 90 10 1 1 3 108 233 344 453 620 674 -4 42 68 90 10 1 1 2 67 188 307 429 -5 42 65 90 10 1 1 2 281 449 628 730 -6 40 69 90 20 1 1 2 161 245 350 480 -7 40 66 90 20 1 1 3 307 447 582 652 789 925 -8 38 68 90 20 1 1 4 164 262 366 486 639 735 874 972 -9 38 70 90 10 1 1 4 179 307 453 527 664 721 917 974 -10 35 66 90 10 1 1 2 170 335 464 568 -11 35 69 90 10 1 1 3 18 140 327 396 512 603 -12 25 85 90 20 1 1 4 21 122 289 379 499 623 766 848 -13 22 75 90 30 1 1 3 244 443 594 776 944 1067 -14 22 85 90 10 1 1 2 18 124 260 410 -15 20 80 90 40 1 1 4 122 259 389 521 689 740 913 1070 -16 20 85 90 40 1 1 4 30 191 348 412 567 659 810 946 -17 18 75 90 20 1 1 4 121 212 389 453 554 626 746 833 -18 15 75 90 20 1 1 3 231 319 492 616 730 861 -19 15 80 90 10 1 1 2 267 383 504 623 -20 30 50 90 10 1 1 3 51 204 323 473 613 719 -21 30 52 90 20 1 1 3 124 274 435 505 691 767 -22 28 52 90 20 1 1 2 176 356 472 609 -23 28 55 90 10 1 1 2 120 292 437 515 -24 25 50 90 10 1 1 3 226 383 486 538 722 807 -25 25 52 90 40 1 1 4 197 345 501 604 726 839 940 1096 -26 25 55 90 10 1 1 4 283 400 513 649 807 881 1060 1201 -27 23 52 90 10 1 1 3 180 322 467 566 674 818 -28 23 55 90 20 1 1 2 160 305 432 496 -29 20 50 90 10 1 1 4 199 294 420 518 624 787 980 1043 -30 20 55 90 10 1 1 4 229 402 536 731 837 948 1075 1244 -31 10 35 90 20 1 1 2 277 461 634 777 -32 10 40 90 30 1 1 3 140 249 370 487 618 735 -33 8 40 90 40 1 1 2 43 98 264 335 -34 8 45 90 20 1 1 3 70 126 268 444 562 628 -35 5 35 90 10 1 1 3 308 473 664 798 953 1121 -36 5 45 90 10 1 1 2 269 404 549 713 -37 2 40 90 20 1 1 3 51 132 240 381 557 696 -38 0 40 90 30 1 1 2 257 344 477 655 -39 0 45 90 20 1 1 2 191 283 445 575 -40 35 30 90 10 1 1 3 57 177 315 417 521 713 -41 35 32 90 10 1 1 3 299 498 615 808 998 1154 -42 33 32 90 20 1 1 2 188 261 397 501 -43 33 35 90 10 1 1 2 9 133 265 334 -44 32 30 90 10 1 1 4 132 273 381 549 695 764 902 1046 -45 30 30 90 10 1 1 3 191 321 457 544 645 761 -46 30 32 90 30 1 1 2 22 106 219 286 -47 30 35 90 10 1 1 3 85 246 416 542 682 842 -48 28 30 90 10 1 1 4 224 388 526 703 845 1023 1170 1308 -49 28 35 90 10 1 1 2 176 249 413 603 -50 26 32 90 10 1 1 4 91 169 323 385 505 658 793 956 -51 25 30 90 10 1 1 3 177 346 536 601 739 928 -52 25 35 90 10 1 1 3 297 474 611 793 988 1127 -53 44 5 90 20 1 1 2 64 143 289 478 -54 42 10 90 40 1 1 3 62 136 263 399 526 607 -55 42 15 90 10 1 1 2 141 307 435 537 -56 40 5 90 30 1 1 4 1 146 315 470 574 682 818 888 -57 40 15 90 40 1 1 3 103 163 325 446 561 728 -58 38 5 90 30 1 1 2 178 229 337 525 -59 38 15 90 10 1 1 3 276 391 554 724 841 985 -60 35 5 90 20 1 1 3 112 238 355 413 586 777 -61 50 30 90 10 1 1 2 117 276 397 474 -62 50 35 90 20 1 1 2 271 406 539 604 -63 50 40 90 50 1 1 2 221 288 402 554 -64 48 30 90 10 1 1 2 225 333 436 570 -65 48 40 90 10 1 1 3 55 185 335 451 583 780 -66 47 35 90 10 1 1 2 34 211 371 432 -67 47 40 90 10 1 1 2 246 342 483 657 -68 45 30 90 10 1 1 3 249 340 456 536 672 741 -69 45 35 90 10 1 1 4 169 248 423 521 642 833 963 1099 -70 95 30 90 30 1 1 2 136 237 374 433 -71 95 35 90 20 1 1 3 306 420 556 608 762 946 -72 53 30 90 10 1 1 3 195 370 483 540 732 805 -73 92 30 90 10 1 1 4 38 98 287 347 540 605 799 995 -74 53 35 90 50 1 1 2 240 320 454 511 -75 45 65 90 20 1 1 3 279 334 488 650 781 920 -76 90 35 90 10 1 1 3 166 352 461 563 701 899 -77 88 30 90 10 1 1 4 118 208 367 558 700 764 883 1075 -78 88 35 90 20 1 1 2 293 462 647 834 -79 87 30 90 10 1 1 3 140 267 413 582 693 784 -80 85 25 90 10 1 1 2 262 359 556 636 -81 85 35 90 30 1 1 3 55 124 225 282 441 498 -82 75 55 90 20 1 1 2 81 266 381 440 -83 72 55 90 10 1 1 3 102 284 425 502 668 817 -84 70 58 90 20 1 1 2 252 445 567 718 -85 68 60 90 30 1 1 3 255 435 591 681 836 983 -86 66 55 90 10 1 1 4 284 348 452 582 754 949 1085 1253 -87 65 55 90 20 1 1 3 72 258 365 428 574 756 -88 65 60 90 30 1 1 3 59 235 381 462 650 822 -89 63 58 90 10 1 1 3 201 375 493 570 686 748 -90 60 55 90 10 1 1 3 200 373 554 731 905 1099 -91 60 60 90 10 1 1 2 9 163 320 479 -92 67 85 90 20 1 1 3 199 288 401 477 591 684 -93 65 85 90 40 1 1 4 185 275 394 545 728 785 967 1050 -94 65 82 90 10 1 1 2 70 176 318 411 -95 62 80 90 30 1 1 4 29 111 213 317 438 588 716 822 -96 60 80 90 10 1 1 3 193 325 471 574 772 840 -97 60 85 90 30 1 1 2 84 272 464 556 -98 58 75 90 20 1 1 4 254 354 496 655 825 882 1012 1154 -99 55 80 90 10 1 1 3 152 215 399 469 601 769 -100 55 85 90 20 1 1 2 108 161 329 388 diff --git a/jsprit-instances/instances/belhaiza/cm107.txt b/jsprit-instances/instances/belhaiza/cm107.txt deleted file mode 100644 index 1115ce5bd..000000000 --- a/jsprit-instances/instances/belhaiza/cm107.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 11 100 1 -0 200 -0 40 50 0 0 0 0 0 1236 -1 45 68 90 10 1 1 1 68 175 -2 45 70 90 30 1 1 2 141 390 495 745 -3 42 66 90 10 1 1 3 299 433 592 890 1025 1225 -4 42 68 90 10 1 1 2 12 134 257 492 -5 42 65 90 10 1 1 2 198 341 453 592 -6 40 69 90 20 1 1 3 143 424 543 801 953 1099 -7 40 66 90 20 1 1 2 257 368 567 788 -8 38 68 90 20 1 1 1 236 406 -9 38 70 90 10 1 1 2 132 408 555 761 -10 35 66 90 10 1 1 1 221 383 -11 35 69 90 10 1 1 1 376 555 -12 25 85 90 20 1 1 2 67 282 386 579 -13 22 75 90 30 1 1 2 399 508 685 819 -14 22 85 90 10 1 1 2 119 291 439 631 -15 20 80 90 40 1 1 1 361 486 -16 20 85 90 40 1 1 1 299 432 -17 18 75 90 20 1 1 2 111 225 374 609 -18 15 75 90 20 1 1 1 178 321 -19 15 80 90 10 1 1 2 325 624 775 1051 -20 30 50 90 10 1 1 2 35 271 377 552 -21 30 52 90 20 1 1 3 310 482 621 838 968 1177 -22 28 52 90 20 1 1 1 295 531 -23 28 55 90 10 1 1 3 307 604 713 833 961 1176 -24 25 50 90 10 1 1 2 210 425 552 801 -25 25 52 90 40 1 1 2 319 437 538 667 -26 25 55 90 10 1 1 1 147 288 -27 23 52 90 10 1 1 1 205 454 -28 23 55 90 20 1 1 3 59 267 411 518 664 937 -29 20 50 90 10 1 1 1 283 464 -30 20 55 90 10 1 1 1 81 315 -31 10 35 90 20 1 1 2 251 431 571 804 -32 10 40 90 30 1 1 1 72 295 -33 8 40 90 40 1 1 3 358 477 635 848 960 1093 -34 8 45 90 20 1 1 3 79 256 407 597 770 1012 -35 5 35 90 10 1 1 1 96 202 -36 5 45 90 10 1 1 3 271 559 694 921 1063 1275 -37 2 40 90 20 1 1 1 8 250 -38 0 40 90 30 1 1 3 378 568 681 896 1054 1186 -39 0 45 90 20 1 1 2 214 473 631 854 -40 35 30 90 10 1 1 1 259 449 -41 35 32 90 10 1 1 1 262 427 -42 33 32 90 20 1 1 2 113 231 361 616 -43 33 35 90 10 1 1 2 110 274 380 631 -44 32 30 90 10 1 1 1 335 621 -45 30 30 90 10 1 1 3 399 647 788 957 1136 1249 -46 30 32 90 30 1 1 1 369 479 -47 30 35 90 10 1 1 3 301 525 664 893 1038 1228 -48 28 30 90 10 1 1 1 129 319 -49 28 35 90 10 1 1 1 57 164 -50 26 32 90 10 1 1 1 270 502 -51 25 30 90 10 1 1 1 347 492 -52 25 35 90 10 1 1 2 75 196 373 642 -53 44 5 90 20 1 1 3 378 591 746 1004 1183 1296 -54 42 10 90 40 1 1 1 359 572 -55 42 15 90 10 1 1 3 190 380 496 638 746 967 -56 40 5 90 30 1 1 2 40 292 475 625 -57 40 15 90 40 1 1 3 85 252 414 570 732 939 -58 38 5 90 30 1 1 2 76 270 408 577 -59 38 15 90 10 1 1 3 210 318 514 812 929 1220 -60 35 5 90 20 1 1 3 133 414 575 706 842 1014 -61 50 30 90 10 1 1 1 12 211 -62 50 35 90 20 1 1 1 406 570 -63 50 40 90 50 1 1 2 324 510 623 740 -64 48 30 90 10 1 1 2 157 383 536 754 -65 48 40 90 10 1 1 2 152 302 403 591 -66 47 35 90 10 1 1 1 30 175 -67 47 40 90 10 1 1 1 171 297 -68 45 30 90 10 1 1 3 210 365 538 778 958 1139 -69 45 35 90 10 1 1 3 348 593 778 954 1113 1297 -70 95 30 90 30 1 1 2 65 194 387 601 -71 95 35 90 20 1 1 2 76 331 439 597 -72 53 30 90 10 1 1 2 84 321 456 707 -73 92 30 90 10 1 1 2 237 495 685 805 -74 53 35 90 50 1 1 3 156 333 529 799 936 1212 -75 45 65 90 20 1 1 2 17 307 427 566 -76 90 35 90 10 1 1 3 184 377 497 629 756 971 -77 88 30 90 10 1 1 1 12 167 -78 88 35 90 20 1 1 3 145 336 524 680 780 1006 -79 87 30 90 10 1 1 3 160 398 511 619 781 954 -80 85 25 90 10 1 1 1 196 363 -81 85 35 90 30 1 1 2 64 320 420 530 -82 75 55 90 20 1 1 2 34 319 462 641 -83 72 55 90 10 1 1 3 262 523 640 866 1017 1218 -84 70 58 90 20 1 1 2 70 180 353 641 -85 68 60 90 30 1 1 1 156 401 -86 66 55 90 10 1 1 1 68 211 -87 65 55 90 20 1 1 2 43 318 443 609 -88 65 60 90 30 1 1 1 281 524 -89 63 58 90 10 1 1 1 160 305 -90 60 55 90 10 1 1 3 15 227 380 604 748 883 -91 60 60 90 10 1 1 2 134 430 615 727 -92 67 85 90 20 1 1 1 248 363 -93 65 85 90 40 1 1 1 328 490 -94 65 82 90 10 1 1 3 271 453 633 788 904 1044 -95 62 80 90 30 1 1 1 316 488 -96 60 80 90 10 1 1 1 133 342 -97 60 85 90 30 1 1 3 88 376 506 721 855 965 -98 58 75 90 20 1 1 2 154 267 409 640 -99 55 80 90 10 1 1 3 149 251 405 683 866 1057 -100 55 85 90 20 1 1 2 53 163 355 486 diff --git a/jsprit-instances/instances/belhaiza/cm108.txt b/jsprit-instances/instances/belhaiza/cm108.txt deleted file mode 100644 index 14137eaad..000000000 --- a/jsprit-instances/instances/belhaiza/cm108.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 10 100 1 -0 200 -0 40 50 0 0 0 0 0 1236 -1 45 68 90 10 1 1 1 68 182 -2 45 70 90 30 1 1 2 141 540 660 1061 -3 42 66 90 10 1 1 2 299 467 805 1301 -4 42 68 90 10 1 1 2 12 157 352 723 -5 42 65 90 10 1 1 2 198 384 535 713 -6 40 69 90 20 1 1 2 143 606 784 1201 -7 40 66 90 20 1 1 2 257 379 876 1218 -8 38 68 90 20 1 1 1 236 477 -9 38 70 90 10 1 1 2 132 585 874 1186 -10 35 66 90 10 1 1 1 221 446 -11 35 69 90 10 1 1 1 376 635 -12 25 85 90 20 1 1 2 67 398 517 803 -13 22 75 90 30 1 1 2 399 518 926 1094 -14 22 85 90 10 1 1 2 119 363 657 942 -15 20 80 90 40 1 1 1 361 512 -16 20 85 90 40 1 1 1 299 466 -17 18 75 90 20 1 1 2 111 239 537 908 -18 15 75 90 20 1 1 1 178 364 -19 15 80 90 10 1 1 2 325 824 1129 1582 -20 30 50 90 10 1 1 2 35 408 532 783 -21 30 52 90 20 1 1 2 310 554 812 1146 -22 28 52 90 20 1 1 1 295 667 -23 28 55 90 10 1 1 2 307 801 939 1079 -24 25 50 90 10 1 1 2 210 540 751 1149 -25 25 52 90 40 1 1 2 319 456 561 720 -26 25 55 90 10 1 1 1 147 329 -27 23 52 90 10 1 1 1 205 604 -28 23 55 90 20 1 1 3 59 375 652 767 1052 1498 -29 20 50 90 10 1 1 1 283 546 -30 20 55 90 10 1 1 1 81 450 -31 10 35 90 20 1 1 2 251 512 773 1140 -32 10 40 90 30 1 1 1 72 419 -33 8 40 90 40 1 1 2 358 496 829 1156 -34 8 45 90 20 1 1 2 79 334 639 920 -35 5 35 90 10 1 1 1 96 209 -36 5 45 90 10 1 1 2 271 747 989 1344 -37 2 40 90 20 1 1 1 8 392 -38 0 40 90 30 1 1 2 378 658 811 1142 -39 0 45 90 20 1 1 2 214 633 966 1312 -40 35 30 90 10 1 1 1 259 540 -41 35 32 90 10 1 1 1 262 493 -42 33 32 90 20 1 1 2 113 250 471 881 -43 33 35 90 10 1 1 2 110 338 462 864 -44 32 30 90 10 1 1 1 335 808 -45 30 30 90 10 1 1 2 399 796 1060 1298 -46 30 32 90 30 1 1 1 369 489 -47 30 35 90 10 1 1 2 301 649 908 1267 -48 28 30 90 10 1 1 1 129 409 -49 28 35 90 10 1 1 1 57 172 -50 26 32 90 10 1 1 1 270 635 -51 25 30 90 10 1 1 1 347 537 -52 25 35 90 10 1 1 2 75 218 626 1065 -53 44 5 90 20 1 1 2 378 704 1026 1442 -54 42 10 90 40 1 1 1 359 686 -55 42 15 90 10 1 1 3 190 471 638 822 955 1298 -56 40 5 90 30 1 1 2 40 444 877 1077 -57 40 15 90 40 1 1 3 85 319 667 879 1228 1542 -58 38 5 90 30 1 1 2 76 365 617 856 -59 38 15 90 10 1 1 2 210 326 813 1310 -60 35 5 90 20 1 1 2 133 596 940 1102 -61 50 30 90 10 1 1 1 12 311 -62 50 35 90 20 1 1 1 406 635 -63 50 40 90 50 1 1 2 324 596 748 883 -64 48 30 90 10 1 1 2 157 510 824 1161 -65 48 40 90 10 1 1 2 152 353 457 734 -66 47 35 90 10 1 1 1 30 220 -67 47 40 90 10 1 1 1 171 324 -68 45 30 90 10 1 1 2 210 420 814 1195 -69 45 35 90 10 1 1 2 348 738 1180 1432 -70 95 30 90 30 1 1 2 65 223 697 1025 -71 95 35 90 20 1 1 2 76 487 620 837 -72 53 30 90 10 1 1 2 84 459 699 1102 -73 92 30 90 10 1 1 2 237 654 1114 1254 -74 53 35 90 50 1 1 2 156 410 894 1334 -75 45 65 90 20 1 1 2 17 497 680 859 -76 90 35 90 10 1 1 3 184 470 651 815 1026 1356 -77 88 30 90 10 1 1 1 12 223 -78 88 35 90 20 1 1 3 145 427 881 1094 1196 1549 -79 87 30 90 10 1 1 3 160 537 691 808 1159 1405 -80 85 25 90 10 1 1 1 196 430 -81 85 35 90 30 1 1 2 64 476 579 699 -82 75 55 90 20 1 1 2 34 504 777 1035 -83 72 55 90 10 1 1 2 262 684 853 1205 -84 70 58 90 20 1 1 2 70 191 584 1060 -85 68 60 90 30 1 1 1 156 547 -86 66 55 90 10 1 1 1 68 254 -87 65 55 90 20 1 1 2 43 494 697 930 -88 65 60 90 30 1 1 1 281 667 -89 63 58 90 10 1 1 1 160 351 -90 60 55 90 10 1 1 2 15 339 653 1001 -91 60 60 90 10 1 1 2 134 627 1067 1192 -92 67 85 90 20 1 1 1 248 378 -93 65 85 90 40 1 1 1 328 552 -94 65 82 90 10 1 1 2 271 536 958 1169 -95 62 80 90 30 1 1 1 316 560 -96 60 80 90 10 1 1 1 133 452 -97 60 85 90 30 1 1 2 88 565 788 1119 -98 58 75 90 20 1 1 2 154 280 551 914 -99 55 80 90 10 1 1 2 149 254 571 1028 -100 55 85 90 20 1 1 2 53 173 641 804 diff --git a/jsprit-instances/instances/belhaiza/cm201.txt b/jsprit-instances/instances/belhaiza/cm201.txt deleted file mode 100644 index aab323749..000000000 --- a/jsprit-instances/instances/belhaiza/cm201.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 6 100 1 -0 700 -0 40 50 0 0 0 0 0 3390 -1 52 75 90 10 1 1 5 56 157 244 369 456 573 658 760 846 954 -2 45 70 90 30 1 1 10 170 299 368 485 536 641 702 835 895 1018 1077 1201 1290 1396 1463 1608 1667 1806 1882 1993 -3 62 69 90 10 1 1 8 211 313 412 542 609 715 783 911 977 1121 1194 1320 1385 1487 1553 1679 -4 60 66 90 10 1 1 7 178 323 381 509 561 684 736 854 912 1060 1137 1275 1339 1457 -5 42 65 90 10 1 1 7 20 144 237 343 401 514 581 717 780 883 957 1090 1150 1260 -6 16 42 90 20 1 1 7 338 464 558 697 771 896 950 1084 1137 1255 1323 1456 1535 1672 -7 58 70 90 20 1 1 7 103 230 314 414 500 635 722 871 925 1030 1094 1222 1300 1427 -8 34 60 90 20 1 1 8 94 231 285 404 461 599 661 761 828 938 1025 1137 1223 1347 1404 1531 -9 28 70 90 10 1 1 5 293 415 475 598 682 802 885 993 1061 1170 -10 35 66 90 10 1 1 7 226 356 412 532 590 720 774 917 995 1138 1196 1325 1415 1521 -11 35 69 90 10 1 1 7 153 262 347 472 522 658 719 820 917 1059 1140 1272 1350 1467 -12 25 85 90 20 1 1 7 241 352 449 549 644 766 822 950 1029 1137 1226 1356 1436 1562 -13 22 75 90 30 1 1 8 153 269 323 454 535 651 705 830 918 1031 1113 1228 1291 1407 1460 1597 -14 22 85 90 10 1 1 5 276 422 509 650 717 865 918 1038 1101 1240 -15 20 80 90 40 1 1 5 304 448 534 665 734 866 938 1060 1132 1242 -16 20 85 90 40 1 1 6 13 116 173 279 361 494 555 657 728 870 929 1034 -17 18 75 90 20 1 1 10 338 476 571 699 776 915 1004 1107 1185 1301 1389 1532 1605 1727 1785 1895 1949 2079 2167 2296 -18 15 75 90 20 1 1 5 282 394 460 602 666 776 852 983 1055 1186 -19 15 80 90 10 1 1 7 118 227 324 443 518 620 718 867 925 1072 1167 1302 1359 1475 -20 30 50 90 10 1 1 8 123 241 315 426 482 583 682 798 869 999 1053 1192 1265 1371 1440 1571 -21 30 56 90 20 1 1 8 209 335 403 515 565 687 748 860 915 1018 1088 1194 1257 1394 1479 1604 -22 28 52 90 20 1 1 9 273 393 479 617 686 828 899 1041 1114 1243 1300 1407 1503 1631 1719 1851 1915 2024 -23 14 66 90 10 1 1 5 233 360 447 557 637 754 832 971 1066 1171 -24 25 50 90 10 1 1 10 128 247 345 487 555 699 796 925 984 1086 1182 1292 1364 1487 1547 1655 1718 1846 1909 2019 -25 22 66 90 40 1 1 5 154 292 356 473 554 698 783 883 952 1086 -26 8 62 90 10 1 1 5 124 230 283 414 487 603 692 823 875 982 -27 23 52 90 10 1 1 5 313 441 510 614 708 829 910 1050 1108 1239 -28 4 55 90 20 1 1 8 123 248 306 408 494 641 727 834 893 1012 1070 1180 1273 1401 1467 1572 -29 20 50 90 10 1 1 6 242 347 404 538 607 718 796 932 1013 1114 1172 1298 -30 20 55 90 10 1 1 7 333 458 511 627 682 824 904 1007 1072 1186 1277 1416 1498 1618 -31 10 35 90 20 1 1 6 68 208 264 372 460 578 655 764 851 967 1027 1174 -32 10 40 90 30 1 1 8 17 132 204 321 389 492 563 695 745 894 988 1106 1178 1305 1386 1527 -33 8 40 90 40 1 1 5 54 160 243 389 445 548 642 745 841 946 -34 8 45 90 20 1 1 10 65 212 300 410 477 579 630 751 838 983 1062 1189 1268 1383 1459 1604 1658 1775 1844 1993 -35 5 35 90 10 1 1 10 129 242 321 468 539 643 702 849 938 1054 1149 1296 1378 1520 1592 1717 1790 1929 1984 2097 -36 5 45 90 10 1 1 5 288 403 501 611 667 796 848 956 1008 1108 -37 2 40 90 20 1 1 8 306 415 468 581 655 762 828 972 1042 1151 1234 1367 1464 1574 1657 1797 -38 0 40 90 30 1 1 6 294 410 473 614 696 824 908 1035 1131 1235 1287 1413 -39 0 45 90 20 1 1 10 268 404 477 595 656 801 854 958 1031 1175 1267 1387 1447 1556 1646 1769 1839 1983 2065 2206 -40 36 18 90 10 1 1 6 28 137 216 324 406 547 637 779 866 1014 1098 1206 -41 35 32 90 10 1 1 5 195 331 394 523 581 713 777 883 979 1086 -42 33 32 90 20 1 1 6 230 359 411 520 581 722 783 924 985 1103 1174 1288 -43 33 35 90 10 1 1 10 32 142 193 311 371 504 568 686 763 892 959 1090 1146 1269 1322 1471 1534 1680 1776 1890 -44 32 20 90 10 1 1 10 279 395 466 602 687 789 854 984 1038 1157 1213 1337 1426 1568 1632 1748 1815 1916 2000 2103 -45 30 30 90 10 1 1 7 251 353 427 532 608 753 817 951 1015 1129 1217 1364 1431 1574 -46 34 25 90 30 1 1 10 316 430 520 627 709 817 894 1015 1113 1256 1354 1478 1545 1682 1737 1857 1932 2039 2090 2224 -47 30 35 90 10 1 1 5 3 132 190 331 423 571 637 773 848 997 -48 36 40 90 10 1 1 7 305 420 479 592 657 789 840 957 1028 1167 1265 1373 1436 1577 -49 48 20 90 10 1 1 10 104 226 300 416 476 606 671 810 903 1006 1094 1228 1281 1426 1502 1609 1690 1799 1862 1975 -50 26 32 90 10 1 1 9 169 275 351 467 535 680 752 855 913 1014 1093 1224 1298 1414 1469 1591 1666 1773 -51 25 30 90 10 1 1 9 48 178 241 364 434 541 605 730 809 956 1030 1145 1202 1335 1385 1521 1589 1709 -52 25 35 90 10 1 1 8 166 311 372 489 585 695 775 895 980 1128 1221 1354 1453 1573 1672 1797 -53 44 5 90 20 1 1 8 329 476 536 651 713 849 914 1014 1093 1200 1276 1410 1466 1590 1662 1794 -54 42 10 90 40 1 1 5 281 384 443 585 684 812 887 1006 1061 1198 -55 42 15 90 10 1 1 7 87 198 297 424 509 646 705 806 882 1029 1085 1234 1312 1421 -56 40 5 90 30 1 1 6 305 435 517 659 715 839 913 1052 1128 1239 1317 1444 -57 38 15 90 40 1 1 5 230 354 406 540 615 748 836 943 1033 1179 -58 38 5 90 30 1 1 6 170 304 379 481 568 687 759 884 947 1069 1141 1242 -59 38 10 90 10 1 1 9 125 246 324 467 563 690 776 923 1022 1149 1226 1335 1390 1497 1561 1681 1772 1906 -60 35 5 90 20 1 1 9 219 355 429 542 626 754 823 927 1006 1146 1219 1364 1446 1559 1650 1796 1855 1986 -61 50 30 90 10 1 1 10 188 306 382 506 557 675 761 902 995 1127 1201 1311 1402 1517 1587 1690 1746 1872 1937 2074 -62 50 35 90 20 1 1 7 80 228 320 447 518 657 722 867 958 1093 1180 1324 1375 1483 -63 50 40 90 50 1 1 7 0 105 194 311 408 548 642 770 821 928 1002 1143 1224 1366 -64 48 30 90 10 1 1 8 24 143 195 331 399 537 600 711 785 885 948 1078 1161 1287 1376 1482 -65 44 25 90 10 1 1 5 194 317 391 525 622 747 815 950 1045 1166 -66 47 35 90 10 1 1 7 122 235 326 456 551 696 757 879 952 1060 1141 1268 1351 1460 -67 47 40 90 10 1 1 9 181 316 415 533 586 699 766 899 992 1107 1171 1320 1396 1521 1602 1729 1794 1932 -68 42 30 90 10 1 1 8 305 438 525 657 727 876 938 1045 1134 1271 1334 1471 1557 1700 1784 1903 -69 45 35 90 10 1 1 7 168 314 387 490 573 722 797 906 970 1108 1197 1297 1396 1503 -70 95 30 90 30 1 1 9 62 184 260 397 476 615 687 829 928 1067 1163 1273 1339 1465 1524 1641 1696 1839 -71 95 35 90 20 1 1 8 202 312 384 532 586 719 811 919 999 1124 1194 1307 1385 1527 1605 1754 -72 53 30 90 10 1 1 7 78 215 288 400 470 607 678 798 894 1024 1076 1196 1246 1356 -73 92 30 90 10 1 1 9 323 460 538 683 763 896 979 1093 1181 1325 1399 1511 1597 1707 1795 1919 1987 2113 -74 53 35 90 50 1 1 5 125 227 280 412 495 618 685 815 872 990 -75 45 65 90 20 1 1 5 291 432 495 622 678 820 901 1005 1079 1211 -76 90 35 90 10 1 1 6 204 331 385 531 621 753 823 937 1018 1149 1242 1380 -77 72 45 90 10 1 1 8 253 398 474 610 701 841 899 1046 1097 1226 1316 1445 1497 1607 1696 1818 -78 78 40 90 20 1 1 8 174 290 352 486 552 660 756 859 938 1056 1121 1225 1292 1428 1518 1658 -79 87 30 90 10 1 1 10 306 448 504 650 714 847 926 1039 1107 1209 1308 1451 1536 1685 1761 1890 1965 2075 2150 2277 -80 85 25 90 10 1 1 7 270 409 499 625 685 823 914 1062 1138 1255 1326 1475 1562 1702 -81 85 35 90 30 1 1 7 75 178 238 373 436 545 616 720 774 900 983 1118 1209 1346 -82 75 55 90 20 1 1 6 157 303 363 492 589 715 807 922 972 1089 1176 1297 -83 72 55 90 10 1 1 5 291 391 472 608 697 830 919 1054 1124 1249 -84 70 58 90 20 1 1 8 204 334 389 520 607 738 807 910 975 1089 1184 1299 1350 1472 1525 1665 -85 86 46 90 30 1 1 8 99 209 302 404 462 577 650 784 876 1005 1083 1230 1286 1416 1493 1606 -86 66 55 90 10 1 1 7 284 386 485 612 694 797 867 975 1051 1193 1256 1387 1443 1589 -87 64 46 90 20 1 1 10 60 182 233 377 447 556 627 772 836 965 1016 1116 1185 1298 1351 1491 1548 1681 1775 1916 -88 65 60 90 30 1 1 7 312 426 520 667 746 851 902 1038 1126 1269 1336 1468 1552 1671 -89 56 64 90 10 1 1 8 270 401 489 590 640 747 843 961 1041 1162 1249 1398 1484 1632 1699 1845 -90 60 55 90 10 1 1 5 199 333 407 546 623 772 862 994 1045 1161 -91 60 60 90 10 1 1 9 73 186 242 377 428 571 647 753 852 969 1036 1158 1249 1357 1456 1563 1643 1764 -92 67 85 90 20 1 1 10 134 280 350 488 571 702 789 914 976 1104 1175 1304 1361 1464 1524 1625 1683 1787 1870 1989 -93 42 58 90 40 1 1 8 70 217 296 423 498 634 728 875 957 1098 1194 1312 1388 1517 1576 1704 -94 65 82 90 10 1 1 7 158 288 348 497 590 710 790 891 953 1063 1116 1237 1313 1445 -95 62 80 90 30 1 1 7 224 342 407 549 635 760 830 956 1043 1173 1267 1413 1490 1604 -96 62 40 90 10 1 1 8 235 383 475 592 675 807 889 994 1090 1239 1331 1439 1498 1617 1667 1773 -97 60 85 90 30 1 1 8 136 269 337 462 514 618 681 800 892 1036 1118 1218 1313 1424 1487 1619 -98 58 75 90 20 1 1 9 333 473 559 688 762 888 941 1043 1141 1257 1324 1445 1534 1669 1747 1859 1936 2061 -99 55 80 90 10 1 1 10 205 313 411 532 626 748 815 916 977 1089 1146 1292 1343 1469 1526 1667 1720 1855 1911 2036 -100 55 85 90 20 1 1 8 136 245 318 434 532 669 741 854 947 1051 1131 1258 1308 1409 1493 1631 diff --git a/jsprit-instances/instances/belhaiza/cm202.txt b/jsprit-instances/instances/belhaiza/cm202.txt deleted file mode 100644 index 7a697d9a0..000000000 --- a/jsprit-instances/instances/belhaiza/cm202.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 6 100 1 -0 700 -0 40 50 0 0 0 0 0 3390 -1 52 75 90 10 1 1 5 79 182 269 419 506 640 725 830 916 1033 -2 45 70 90 30 1 1 7 243 402 471 606 657 768 829 996 1056 1203 1262 1410 1499 1611 -3 62 69 90 10 1 1 7 383 517 578 697 773 925 1006 1111 1210 1370 1437 1550 1618 1775 -4 60 66 90 10 1 1 7 256 388 440 587 663 794 863 995 1071 1262 1320 1477 1529 1675 -5 42 65 90 10 1 1 6 469 573 661 778 846 1001 1074 1203 1256 1404 1497 1609 -6 16 42 90 20 1 1 5 351 467 520 654 737 863 923 1072 1143 1264 -7 58 70 90 20 1 1 6 382 581 656 844 928 1076 1144 1252 1335 1441 1528 1664 -8 34 60 90 20 1 1 6 265 404 454 584 669 837 936 1109 1164 1338 1416 1525 -9 28 70 90 10 1 1 5 278 433 520 671 740 867 955 1064 1114 1228 -10 35 66 90 10 1 1 5 173 293 380 505 591 740 797 951 1023 1126 -11 35 69 90 10 1 1 7 105 251 335 475 558 674 742 861 941 1081 1151 1317 1397 1510 -12 25 85 90 20 1 1 5 46 232 310 497 555 713 803 915 974 1112 -13 22 75 90 30 1 1 6 345 496 546 719 780 883 980 1164 1245 1410 1488 1623 -14 22 85 90 10 1 1 6 344 466 563 664 759 904 960 1117 1196 1312 1401 1561 -15 20 80 90 40 1 1 6 282 443 515 647 701 864 945 1077 1131 1282 1370 1497 -16 20 85 90 40 1 1 5 155 319 406 532 586 692 782 975 1062 1244 -17 18 75 90 20 1 1 7 198 332 421 527 579 706 800 989 1075 1237 1306 1470 1542 1687 -18 15 75 90 20 1 1 5 151 296 347 453 510 623 705 871 932 1036 -19 15 80 90 10 1 1 7 52 194 286 404 503 680 775 931 1008 1187 1276 1382 1460 1592 -20 30 50 90 10 1 1 7 219 395 455 601 681 797 876 984 1038 1214 1305 1430 1496 1681 -21 30 56 90 20 1 1 5 300 428 509 662 735 879 946 1064 1161 1299 -22 28 52 90 20 1 1 5 481 632 729 925 1010 1127 1193 1383 1463 1578 -23 14 66 90 10 1 1 6 115 251 302 451 517 630 710 908 997 1140 1196 1304 -24 25 50 90 10 1 1 6 185 348 424 583 645 806 878 1014 1076 1177 1230 1352 -25 22 66 90 40 1 1 5 201 314 377 551 636 787 857 1030 1118 1298 -26 8 62 90 10 1 1 7 184 368 439 624 697 856 913 1027 1123 1280 1368 1532 1596 1714 -27 23 52 90 10 1 1 5 333 487 574 694 774 909 987 1166 1261 1371 -28 4 55 90 20 1 1 7 183 321 419 604 672 860 957 1116 1175 1279 1375 1495 1567 1713 -29 20 50 90 10 1 1 5 279 399 459 586 637 764 836 1013 1077 1212 -30 20 55 90 10 1 1 7 2 165 249 419 471 609 677 790 843 1005 1078 1211 1300 1462 -31 10 35 90 20 1 1 5 4 109 205 362 431 539 633 776 857 1037 -32 10 40 90 30 1 1 6 245 362 430 581 639 744 830 1024 1110 1224 1283 1421 -33 8 40 90 40 1 1 5 274 390 445 632 694 827 912 1023 1080 1248 -34 8 45 90 20 1 1 5 352 490 541 697 773 935 1007 1124 1223 1373 -35 5 35 90 10 1 1 5 412 518 571 682 746 906 995 1126 1196 1378 -36 5 45 90 10 1 1 6 390 517 575 695 763 875 934 1110 1176 1330 1427 1602 -37 2 40 90 20 1 1 5 149 306 373 478 531 675 757 894 993 1135 -38 0 40 90 30 1 1 5 432 568 640 794 875 1058 1114 1219 1315 1430 -39 0 45 90 20 1 1 7 59 166 260 366 462 572 669 866 926 1045 1097 1274 1345 1479 -40 36 18 90 10 1 1 5 363 553 632 786 865 996 1072 1262 1316 1450 -41 35 32 90 10 1 1 7 475 613 682 809 888 1082 1153 1262 1321 1516 1605 1737 1832 2027 -42 33 32 90 20 1 1 7 248 412 501 646 709 855 909 1020 1112 1243 1341 1461 1517 1676 -43 33 35 90 10 1 1 5 9 113 192 296 391 509 562 688 762 877 -44 32 20 90 10 1 1 7 89 222 305 446 506 672 762 957 1018 1185 1278 1411 1474 1656 -45 30 30 90 10 1 1 6 270 434 488 656 732 924 1022 1126 1215 1387 1460 1596 -46 34 25 90 30 1 1 7 44 167 261 368 438 584 643 827 900 1020 1114 1295 1386 1526 -47 30 35 90 10 1 1 6 88 206 264 372 463 621 713 878 976 1157 1215 1389 -48 36 40 90 10 1 1 7 353 455 534 691 773 899 955 1072 1129 1258 1321 1513 1596 1755 -49 48 20 90 10 1 1 5 406 510 601 723 791 914 978 1100 1198 1340 -50 26 32 90 10 1 1 5 174 283 366 468 536 657 736 864 945 1099 -51 25 30 90 10 1 1 6 58 204 257 455 518 710 806 934 1000 1187 1273 1455 -52 25 35 90 10 1 1 6 342 447 512 673 727 865 921 1070 1159 1343 1407 1539 -53 44 5 90 20 1 1 5 31 165 237 405 492 596 670 781 857 1048 -54 42 10 90 40 1 1 7 138 267 364 492 585 762 855 989 1085 1214 1304 1419 1501 1617 -55 42 15 90 10 1 1 6 425 579 653 850 937 1134 1204 1338 1395 1506 1590 1741 -56 40 5 90 30 1 1 5 283 396 487 588 686 803 889 1073 1172 1304 -57 38 15 90 40 1 1 6 150 287 350 540 622 740 807 938 1027 1129 1187 1330 -58 38 5 90 30 1 1 7 130 313 385 574 640 770 850 998 1087 1208 1261 1392 1476 1663 -59 38 10 90 10 1 1 7 38 229 305 420 501 619 682 808 864 1036 1102 1251 1346 1498 -60 35 5 90 20 1 1 6 214 321 379 481 560 722 796 928 983 1128 1203 1318 -61 50 30 90 10 1 1 7 69 229 292 439 509 623 687 837 916 1111 1185 1316 1373 1539 -62 50 35 90 20 1 1 7 200 300 380 517 591 782 843 977 1073 1194 1274 1415 1500 1696 -63 50 40 90 50 1 1 7 196 382 457 656 735 933 1031 1225 1285 1416 1478 1650 1715 1816 -64 48 30 90 10 1 1 5 337 496 570 723 805 918 972 1117 1208 1315 -65 44 25 90 10 1 1 7 275 393 462 661 748 898 972 1083 1145 1267 1366 1520 1605 1780 -66 47 35 90 10 1 1 5 460 578 677 829 888 1001 1064 1221 1316 1477 -67 47 40 90 10 1 1 7 232 397 486 599 660 808 885 1038 1096 1252 1336 1484 1536 1705 -68 42 30 90 10 1 1 7 69 219 315 492 553 734 809 978 1053 1157 1244 1383 1455 1606 -69 45 35 90 10 1 1 6 13 140 230 374 442 584 662 849 945 1099 1185 1379 -70 95 30 90 30 1 1 6 96 295 352 507 577 687 771 899 983 1165 1247 1420 -71 95 35 90 20 1 1 5 273 421 475 644 734 873 968 1126 1189 1335 -72 53 30 90 10 1 1 6 397 590 649 811 879 1078 1152 1307 1375 1528 1619 1721 -73 92 30 90 10 1 1 7 425 590 664 785 876 1007 1077 1183 1239 1391 1456 1631 1729 1873 -74 53 35 90 50 1 1 5 409 564 635 813 878 1069 1160 1330 1417 1606 -75 45 65 90 20 1 1 5 199 301 351 461 550 684 781 962 1056 1212 -76 90 35 90 10 1 1 5 401 503 595 743 823 985 1038 1177 1229 1401 -77 72 45 90 10 1 1 7 111 248 298 425 505 654 730 857 913 1080 1131 1309 1387 1533 -78 78 40 90 20 1 1 7 243 392 477 671 742 878 949 1140 1208 1334 1425 1586 1681 1871 -79 87 30 90 10 1 1 6 84 206 283 430 489 651 736 902 978 1148 1247 1383 -80 85 25 90 10 1 1 5 320 427 492 626 725 912 987 1116 1193 1345 -81 85 35 90 30 1 1 6 153 330 413 574 656 845 944 1118 1175 1315 1402 1527 -82 75 55 90 20 1 1 7 132 307 393 580 664 803 899 1033 1086 1235 1334 1480 1539 1706 -83 72 55 90 10 1 1 6 143 320 409 509 608 723 795 977 1064 1182 1271 1424 -84 70 58 90 20 1 1 6 217 402 501 680 776 897 963 1115 1174 1309 1364 1550 -85 86 46 90 30 1 1 6 289 409 481 678 732 898 990 1107 1187 1337 1407 1534 -86 66 55 90 10 1 1 7 475 631 699 855 916 1091 1164 1288 1358 1532 1603 1744 1840 2001 -87 64 46 90 20 1 1 6 98 203 289 390 487 661 739 930 1010 1176 1259 1388 -88 65 60 90 30 1 1 7 121 298 358 507 581 754 830 1006 1064 1201 1269 1373 1426 1591 -89 56 64 90 10 1 1 6 294 460 528 662 715 829 921 1103 1166 1320 1376 1560 -90 60 55 90 10 1 1 5 316 479 537 685 765 919 973 1165 1255 1420 -91 60 60 90 10 1 1 5 307 448 536 699 781 968 1055 1245 1321 1493 -92 67 85 90 20 1 1 7 464 646 725 841 920 1022 1082 1262 1334 1438 1520 1698 1773 1906 -93 42 58 90 40 1 1 7 85 210 263 395 463 656 710 869 955 1085 1175 1310 1406 1587 -94 65 82 90 10 1 1 7 449 639 722 834 897 1026 1078 1237 1330 1466 1565 1763 1842 2013 -95 62 80 90 30 1 1 6 242 363 438 592 681 821 897 1076 1164 1345 1443 1564 -96 62 40 90 10 1 1 7 259 394 465 663 750 931 984 1126 1211 1333 1392 1512 1566 1693 -97 60 85 90 30 1 1 6 45 197 280 450 541 716 812 933 1012 1158 1234 1355 -98 58 75 90 20 1 1 7 409 539 589 724 811 954 1004 1116 1202 1387 1470 1633 1718 1896 -99 55 80 90 10 1 1 7 193 343 423 576 657 817 898 1008 1061 1236 1300 1439 1504 1635 -100 55 85 90 20 1 1 7 16 160 213 393 453 604 656 785 850 1037 1121 1238 1317 1464 diff --git a/jsprit-instances/instances/belhaiza/cm203.txt b/jsprit-instances/instances/belhaiza/cm203.txt deleted file mode 100644 index ad9622b74..000000000 --- a/jsprit-instances/instances/belhaiza/cm203.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 6 100 1 -0 700 -0 40 50 0 0 0 0 0 3390 -1 52 75 90 10 1 1 3 79 186 273 474 561 729 -2 45 70 90 30 1 1 3 83 324 423 668 743 962 -3 62 69 90 10 1 1 4 55 234 317 423 496 643 717 860 -4 60 66 90 10 1 1 3 381 506 573 854 913 1171 -5 42 65 90 10 1 1 4 261 465 546 657 756 977 1044 1171 -6 16 42 90 20 1 1 5 428 602 678 842 894 1088 1164 1326 1395 1559 -7 58 70 90 20 1 1 7 280 485 558 690 758 867 965 1074 1162 1296 1364 1574 1647 1805 -8 34 60 90 20 1 1 5 62 174 237 512 598 731 784 952 1035 1188 -9 28 70 90 10 1 1 5 104 245 321 507 596 895 970 1246 1330 1527 -10 35 66 90 10 1 1 3 29 204 272 506 585 835 -11 35 69 90 10 1 1 4 147 356 440 541 627 870 957 1254 -12 25 85 90 20 1 1 3 278 397 474 630 705 920 -13 22 75 90 30 1 1 6 190 345 433 551 601 730 790 939 1001 1172 1246 1495 -14 22 85 90 10 1 1 6 69 277 349 456 529 802 872 1015 1073 1310 1369 1603 -15 20 80 90 40 1 1 4 295 475 545 778 858 985 1078 1213 -16 20 85 90 40 1 1 3 275 549 607 823 913 1038 -17 18 75 90 20 1 1 4 219 357 442 644 694 940 1001 1107 -18 15 75 90 20 1 1 7 319 607 674 901 972 1184 1269 1413 1510 1613 1708 1898 1954 2169 -19 15 80 90 10 1 1 3 294 510 586 845 924 1147 -20 30 50 90 10 1 1 4 305 495 561 677 752 979 1042 1160 -21 30 56 90 20 1 1 6 312 472 535 699 752 1003 1099 1217 1308 1570 1668 1916 -22 28 52 90 20 1 1 4 31 213 276 535 629 739 820 1099 -23 14 66 90 10 1 1 6 193 422 494 684 756 898 951 1113 1169 1276 1359 1487 -24 25 50 90 10 1 1 6 109 217 288 556 615 736 824 1093 1171 1470 1559 1842 -25 22 66 90 40 1 1 5 385 498 576 741 829 1103 1176 1366 1424 1566 -26 8 62 90 10 1 1 6 288 404 458 710 801 951 1017 1288 1352 1493 1569 1793 -27 23 52 90 10 1 1 6 229 417 484 621 718 894 969 1077 1175 1473 1531 1822 -28 4 55 90 20 1 1 6 156 437 517 648 716 888 962 1109 1165 1271 1370 1534 -29 20 50 90 10 1 1 6 380 566 622 739 820 1013 1092 1268 1348 1555 1623 1773 -30 20 55 90 10 1 1 5 123 225 278 423 479 602 689 872 947 1102 -31 10 35 90 20 1 1 6 196 443 531 792 884 1129 1221 1397 1476 1660 1717 1912 -32 10 40 90 30 1 1 3 453 667 755 983 1047 1184 -33 8 40 90 40 1 1 3 333 541 628 769 849 1019 -34 8 45 90 20 1 1 6 48 263 359 639 707 884 982 1252 1320 1596 1693 1911 -35 5 35 90 10 1 1 3 100 239 312 597 655 844 -36 5 45 90 10 1 1 4 135 350 413 555 643 749 816 1007 -37 2 40 90 20 1 1 4 306 583 668 769 838 1076 1132 1240 -38 0 40 90 30 1 1 4 32 257 330 497 586 810 862 993 -39 0 45 90 20 1 1 3 448 663 732 848 942 1128 -40 36 18 90 10 1 1 7 305 532 607 741 809 1011 1069 1179 1265 1553 1639 1768 1827 2003 -41 35 32 90 10 1 1 4 274 407 462 737 799 965 1050 1173 -42 33 32 90 20 1 1 6 110 238 324 501 552 764 840 1064 1136 1271 1370 1571 -43 33 35 90 10 1 1 4 412 524 577 699 763 983 1072 1234 -44 32 20 90 10 1 1 7 318 500 590 745 803 943 1011 1136 1195 1448 1514 1723 1820 2070 -45 30 30 90 10 1 1 4 149 364 431 541 594 782 864 1039 -46 34 25 90 30 1 1 5 7 305 399 571 643 851 932 1199 1255 1365 -47 30 35 90 10 1 1 3 325 609 665 779 873 986 -48 36 40 90 10 1 1 3 473 759 818 1106 1194 1334 -49 48 20 90 10 1 1 3 203 371 466 573 650 900 -50 26 32 90 10 1 1 5 288 451 527 808 862 1031 1100 1398 1461 1757 -51 25 30 90 10 1 1 4 286 575 646 764 823 1113 1202 1367 -52 25 35 90 10 1 1 7 415 698 773 1002 1091 1281 1344 1537 1591 1714 1806 1969 2067 2207 -53 44 5 90 20 1 1 5 86 212 262 371 450 559 654 790 843 995 -54 42 10 90 40 1 1 3 426 624 683 849 932 1114 -55 42 15 90 10 1 1 6 463 606 689 952 1018 1162 1253 1527 1605 1759 1836 2065 -56 40 5 90 30 1 1 6 445 563 615 822 908 1201 1269 1527 1622 1814 1868 2014 -57 38 15 90 40 1 1 3 222 498 590 772 832 970 -58 38 5 90 30 1 1 5 426 689 780 960 1019 1249 1303 1439 1518 1650 -59 38 10 90 10 1 1 7 412 642 740 1002 1060 1308 1359 1598 1676 1922 1985 2201 2259 2488 -60 35 5 90 20 1 1 3 68 226 289 573 656 875 -61 50 30 90 10 1 1 3 406 515 606 750 818 965 -62 50 35 90 20 1 1 4 207 364 424 717 785 904 987 1092 -63 50 40 90 50 1 1 4 137 312 389 607 674 898 954 1147 -64 48 30 90 10 1 1 7 446 558 622 776 869 1153 1244 1411 1482 1727 1812 1922 1987 2209 -65 44 25 90 10 1 1 4 238 356 448 574 640 898 949 1108 -66 47 35 90 10 1 1 4 329 442 494 684 739 987 1082 1278 -67 47 40 90 10 1 1 5 144 383 447 604 692 982 1049 1321 1385 1657 -68 42 30 90 10 1 1 7 395 525 607 740 817 1002 1100 1375 1473 1669 1736 1984 2039 2221 -69 45 35 90 10 1 1 3 332 534 590 697 747 964 -70 95 30 90 30 1 1 7 469 604 690 958 1057 1222 1290 1490 1585 1747 1806 1958 2023 2253 -71 95 35 90 20 1 1 4 377 481 539 726 817 1109 1203 1357 -72 53 30 90 10 1 1 5 161 322 402 598 687 829 882 1045 1129 1404 -73 92 30 90 10 1 1 6 38 321 397 528 609 746 809 961 1017 1262 1328 1527 -74 53 35 90 50 1 1 5 176 456 528 642 700 805 884 1108 1182 1346 -75 45 65 90 20 1 1 5 76 198 289 492 549 770 833 1028 1098 1226 -76 90 35 90 10 1 1 5 461 620 685 901 984 1181 1267 1398 1468 1568 -77 72 45 90 10 1 1 4 443 663 730 928 988 1133 1203 1488 -78 78 40 90 20 1 1 6 346 638 731 966 1065 1246 1345 1545 1642 1858 1923 2217 -79 87 30 90 10 1 1 4 122 366 431 534 613 741 817 1056 -80 85 25 90 10 1 1 5 315 441 495 686 777 891 950 1221 1320 1534 -81 85 35 90 30 1 1 4 367 568 642 764 826 970 1069 1278 -82 75 55 90 20 1 1 6 13 253 350 486 585 789 848 975 1038 1253 1348 1571 -83 72 55 90 10 1 1 7 232 463 552 679 740 937 1014 1221 1279 1492 1576 1773 1825 2064 -84 70 58 90 20 1 1 6 69 269 365 619 680 943 1018 1257 1332 1441 1528 1707 -85 86 46 90 30 1 1 5 220 409 460 614 704 892 960 1144 1222 1497 -86 66 55 90 10 1 1 5 455 739 816 1060 1119 1417 1474 1685 1755 1876 -87 64 46 90 20 1 1 4 397 634 720 959 1022 1251 1329 1526 -88 65 60 90 30 1 1 6 192 311 390 652 725 1007 1089 1244 1335 1622 1681 1906 -89 56 64 90 10 1 1 7 269 442 518 715 766 939 1025 1291 1384 1614 1688 1831 1922 2084 -90 60 55 90 10 1 1 3 252 435 522 648 720 881 -91 60 60 90 10 1 1 7 268 415 504 773 868 1053 1138 1300 1394 1660 1718 1969 2039 2144 -92 67 85 90 20 1 1 3 168 268 358 614 692 983 -93 42 58 90 40 1 1 7 12 142 216 481 562 831 900 1123 1209 1323 1411 1520 1581 1755 -94 65 82 90 10 1 1 4 239 340 403 624 707 911 1000 1125 -95 62 80 90 30 1 1 3 277 469 543 782 879 1079 -96 62 40 90 10 1 1 6 212 384 455 738 806 959 1050 1272 1367 1648 1709 1898 -97 60 85 90 30 1 1 3 270 465 524 748 833 1065 -98 58 75 90 20 1 1 6 174 381 444 740 823 937 1002 1171 1270 1544 1619 1778 -99 55 80 90 10 1 1 5 302 510 575 830 913 1136 1218 1497 1596 1845 -100 55 85 90 20 1 1 5 123 252 341 590 653 903 989 1263 1347 1526 diff --git a/jsprit-instances/instances/belhaiza/cm204.txt b/jsprit-instances/instances/belhaiza/cm204.txt deleted file mode 100644 index 7031dde06..000000000 --- a/jsprit-instances/instances/belhaiza/cm204.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 6 100 1 -0 700 -0 40 50 0 0 0 0 0 3390 -1 52 75 90 10 1 1 3 112 226 313 616 703 940 -2 45 70 90 30 1 1 3 116 499 598 988 1063 1401 -3 62 69 90 10 1 1 4 77 336 419 531 604 799 873 1059 -4 60 66 90 10 1 1 3 535 686 753 1216 1275 1692 -5 42 65 90 10 1 1 3 365 673 754 876 975 1317 -6 16 42 90 20 1 1 3 389 630 724 972 1048 1276 -7 58 70 90 20 1 1 4 212 329 395 710 805 1064 1142 1452 -8 34 60 90 20 1 1 3 32 318 370 619 677 1164 -9 28 70 90 10 1 1 5 245 566 639 855 908 1202 1295 1446 1504 1713 -10 35 66 90 10 1 1 5 47 284 367 574 634 932 1003 1189 1288 1599 -11 35 69 90 10 1 1 5 349 802 886 1180 1248 1382 1465 1589 1676 1920 -12 25 85 90 20 1 1 4 372 630 680 901 986 1358 1457 1850 -13 22 75 90 30 1 1 5 65 205 269 599 677 998 1085 1389 1458 1669 -14 22 85 90 10 1 1 3 100 510 572 677 744 926 -15 20 80 90 40 1 1 3 337 736 813 1207 1258 1415 -16 20 85 90 40 1 1 4 315 761 831 1018 1076 1451 1510 1879 -17 18 75 90 20 1 1 4 413 674 744 1111 1191 1345 1438 1608 -18 15 75 90 20 1 1 3 386 834 892 1225 1315 1466 -19 15 80 90 10 1 1 4 307 484 569 874 924 1317 1378 1491 -20 30 50 90 10 1 1 5 447 923 990 1345 1416 1740 1825 2013 2110 2217 -21 30 56 90 20 1 1 4 393 860 918 1071 1151 1483 1559 1978 -22 28 52 90 20 1 1 4 221 554 635 916 982 1114 1189 1543 -23 14 66 90 10 1 1 3 526 736 818 1039 1102 1330 -24 25 50 90 10 1 1 5 61 185 275 748 835 1263 1330 1818 1871 2135 -25 22 66 90 40 1 1 5 34 244 338 796 882 1230 1299 1658 1730 2011 -26 8 62 90 10 1 1 3 212 492 543 670 727 882 -27 23 52 90 10 1 1 4 29 392 484 674 729 997 1089 1262 -28 4 55 90 20 1 1 5 383 882 971 1438 1491 1813 1879 2297 2390 2717 -29 20 50 90 10 1 1 5 313 594 652 836 890 1233 1321 1659 1721 1860 -30 20 55 90 10 1 1 5 227 669 733 915 991 1339 1411 1760 1819 2108 -31 10 35 90 20 1 1 4 643 895 970 1086 1184 1681 1739 2222 -32 10 40 90 30 1 1 5 219 682 762 924 992 1237 1311 1506 1562 1674 -33 8 40 90 40 1 1 3 414 908 997 1269 1325 1460 -34 8 45 90 20 1 1 4 259 612 688 1025 1087 1434 1506 1753 -35 5 35 90 10 1 1 3 153 355 410 539 609 762 -36 5 45 90 10 1 1 5 345 555 641 1022 1112 1374 1460 1866 1935 2373 -37 2 40 90 20 1 1 5 400 668 725 1015 1093 1256 1338 1812 1871 2282 -38 0 40 90 30 1 1 3 366 499 559 934 1001 1404 -39 0 45 90 20 1 1 4 390 807 902 1042 1111 1583 1675 1926 -40 36 18 90 10 1 1 5 254 707 804 1141 1200 1316 1412 1595 1667 1953 -41 35 32 90 10 1 1 3 391 572 632 843 894 1105 -42 33 32 90 20 1 1 5 239 521 615 828 878 1231 1315 1696 1748 2003 -43 33 35 90 10 1 1 3 426 672 738 864 945 1235 -44 32 20 90 10 1 1 5 35 197 275 378 432 902 973 1231 1321 1779 -45 30 30 90 10 1 1 4 117 469 544 846 898 1144 1241 1409 -46 34 25 90 30 1 1 5 493 652 711 963 1021 1207 1300 1626 1692 1833 -47 30 35 90 10 1 1 3 485 632 689 1062 1131 1322 -48 36 40 90 10 1 1 5 25 349 425 773 845 1016 1115 1418 1471 1701 -49 48 20 90 10 1 1 5 51 195 259 600 689 913 983 1414 1477 1840 -50 26 32 90 10 1 1 5 109 289 357 507 566 973 1039 1358 1455 1856 -51 25 30 90 10 1 1 3 209 540 607 727 780 1057 -52 25 35 90 10 1 1 4 290 653 703 1199 1293 1538 1610 1927 -53 44 5 90 20 1 1 5 35 387 444 596 679 1147 1203 1332 1426 1553 -54 42 10 90 40 1 1 3 663 1136 1195 1671 1759 1940 -55 42 15 90 10 1 1 3 285 521 616 731 808 1208 -56 40 5 90 30 1 1 4 403 629 705 1168 1222 1461 1530 2026 -57 38 15 90 40 1 1 5 259 468 547 1025 1096 1233 1292 1772 1861 2091 -58 38 5 90 30 1 1 5 582 1048 1123 1482 1571 1852 1915 2202 2256 2403 -59 38 10 90 10 1 1 3 137 577 656 1146 1204 1356 -60 35 5 90 20 1 1 3 32 139 198 534 597 1058 -61 50 30 90 10 1 1 3 335 497 563 1015 1085 1258 -62 50 35 90 20 1 1 4 147 513 603 1086 1147 1518 1611 1845 -63 50 40 90 50 1 1 5 379 587 664 1022 1076 1448 1524 1992 2090 2209 -64 48 30 90 10 1 1 5 247 663 758 1043 1097 1290 1384 1512 1582 1866 -65 44 25 90 10 1 1 5 141 317 407 691 761 1213 1295 1725 1784 1956 -66 47 35 90 10 1 1 3 397 562 644 1073 1163 1603 -67 47 40 90 10 1 1 5 111 507 558 937 1015 1407 1470 1802 1860 2218 -68 42 30 90 10 1 1 3 96 312 375 844 927 1266 -69 45 35 90 10 1 1 3 568 687 778 966 1034 1228 -70 95 30 90 30 1 1 3 290 505 565 1052 1120 1258 -71 95 35 90 20 1 1 3 149 518 582 833 910 1247 -72 53 30 90 10 1 1 4 317 559 658 806 902 1026 1090 1299 -73 92 30 90 10 1 1 5 227 676 762 1191 1243 1512 1592 1975 2044 2265 -74 53 35 90 50 1 1 3 91 388 477 913 977 1206 -75 45 65 90 20 1 1 3 44 283 355 727 814 932 -76 90 35 90 10 1 1 3 621 913 997 1310 1374 1593 -77 72 45 90 10 1 1 3 526 1006 1073 1518 1582 2027 -78 78 40 90 20 1 1 5 554 714 796 962 1039 1310 1408 1859 1957 2250 -79 87 30 90 10 1 1 5 279 518 575 722 806 1110 1166 1280 1330 1664 -80 85 25 90 10 1 1 5 657 828 914 1351 1450 1680 1748 2049 2144 2368 -81 85 35 90 30 1 1 3 442 615 682 909 998 1107 -82 75 55 90 20 1 1 4 652 819 882 1315 1387 1845 1911 2134 -83 72 55 90 10 1 1 4 144 488 553 972 1065 1195 1283 1661 -84 70 58 90 20 1 1 5 105 236 295 606 669 1023 1109 1313 1387 1537 -85 86 46 90 30 1 1 3 611 919 972 1218 1269 1546 -86 66 55 90 10 1 1 3 405 753 827 1056 1111 1393 -87 64 46 90 20 1 1 3 556 863 920 1262 1325 1615 -88 65 60 90 30 1 1 3 342 605 702 920 985 1318 -89 56 64 90 10 1 1 4 106 472 522 912 980 1245 1340 1681 -90 60 55 90 10 1 1 4 154 391 487 674 754 1020 1105 1590 -91 60 60 90 10 1 1 5 275 721 796 1293 1372 1866 1964 2442 2502 2728 -92 67 85 90 20 1 1 5 13 214 271 495 579 918 992 1307 1389 1541 -93 42 58 90 40 1 1 4 49 185 277 709 787 961 1030 1528 -94 65 82 90 10 1 1 4 77 480 541 840 917 1119 1206 1699 -95 62 80 90 30 1 1 5 124 235 311 791 847 1344 1422 1598 1678 1884 -96 62 40 90 10 1 1 5 447 888 944 1236 1310 1728 1804 1995 2073 2394 -97 60 85 90 30 1 1 3 461 755 807 1185 1260 1629 -98 58 75 90 20 1 1 3 624 1032 1093 1520 1595 1973 -99 55 80 90 10 1 1 3 270 572 647 1049 1121 1399 -100 55 85 90 20 1 1 3 298 408 479 901 994 1242 diff --git a/jsprit-instances/instances/belhaiza/cm205.txt b/jsprit-instances/instances/belhaiza/cm205.txt deleted file mode 100644 index 801049ff3..000000000 --- a/jsprit-instances/instances/belhaiza/cm205.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 6 100 1 -0 700 -0 40 50 0 0 0 0 0 3390 -1 52 75 90 10 1 1 2 112 323 497 849 -2 45 70 90 30 1 1 3 35 461 578 990 1189 1607 -3 62 69 90 10 1 1 4 238 589 700 1019 1186 1395 1542 1813 -4 60 66 90 10 1 1 2 133 477 655 893 -5 42 65 90 10 1 1 5 537 841 964 1222 1375 1731 1893 2109 2308 2689 -6 16 42 90 20 1 1 2 389 695 883 1194 -7 58 70 90 20 1 1 3 320 679 810 1023 1155 1516 -8 34 60 90 20 1 1 3 356 830 946 1319 1423 1762 -9 28 70 90 10 1 1 3 657 871 1048 1299 1435 1800 -10 35 66 90 10 1 1 3 329 667 779 997 1124 1587 -11 35 69 90 10 1 1 2 233 650 776 997 -12 25 85 90 20 1 1 4 139 487 630 894 1093 1451 1639 2076 -13 22 75 90 30 1 1 4 464 810 947 1172 1339 1557 1732 2040 -14 22 85 90 10 1 1 4 372 691 791 1082 1253 1657 1855 2275 -15 20 80 90 40 1 1 4 65 295 423 795 952 1317 1491 1844 -16 20 85 90 40 1 1 3 63 381 495 927 1051 1254 -17 18 75 90 20 1 1 2 172 479 628 1052 -18 15 75 90 20 1 1 4 98 460 604 815 961 1420 1560 1825 -19 15 80 90 10 1 1 4 456 705 842 1101 1261 1582 1722 2122 -20 30 50 90 10 1 1 2 119 504 613 1071 -21 30 56 90 20 1 1 5 396 766 878 1128 1266 1711 1856 2113 2284 2638 -22 28 52 90 20 1 1 4 22 226 410 680 845 1327 1462 1853 -23 14 66 90 10 1 1 4 149 475 576 989 1134 1620 1777 2252 -24 25 50 90 10 1 1 2 393 641 820 1202 -25 22 66 90 40 1 1 4 396 780 925 1223 1331 1720 1883 2181 -26 8 62 90 10 1 1 4 187 415 545 977 1109 1502 1677 1957 -27 23 52 90 10 1 1 2 632 859 1041 1485 -28 4 55 90 20 1 1 4 234 725 831 1154 1281 1719 1908 2123 -29 20 50 90 10 1 1 5 496 882 1021 1415 1560 1896 2041 2304 2410 2704 -30 20 55 90 10 1 1 2 98 339 504 903 -31 10 35 90 20 1 1 2 571 839 949 1275 -32 10 40 90 30 1 1 2 523 977 1133 1632 -33 8 40 90 40 1 1 5 376 813 992 1211 1367 1664 1840 2301 2447 2783 -34 8 45 90 20 1 1 2 412 662 821 1045 -35 5 35 90 10 1 1 5 170 399 584 1033 1153 1453 1615 1899 2061 2421 -36 5 45 90 10 1 1 3 125 466 604 908 1012 1496 -37 2 40 90 20 1 1 4 657 1155 1272 1759 1949 2362 2477 2774 -38 0 40 90 30 1 1 4 247 555 704 975 1088 1297 1495 1792 -39 0 45 90 20 1 1 4 533 862 975 1201 1364 1704 1863 2177 -40 36 18 90 10 1 1 4 171 556 700 1010 1135 1338 1445 1713 -41 35 32 90 10 1 1 2 282 521 648 1070 -42 33 32 90 20 1 1 4 498 909 1089 1410 1582 2011 2149 2603 -43 33 35 90 10 1 1 5 400 726 840 1182 1339 1586 1750 2231 2349 2782 -44 32 20 90 10 1 1 3 366 591 711 1117 1252 1679 -45 30 30 90 10 1 1 4 390 828 1018 1248 1386 1865 2050 2363 -46 34 25 90 30 1 1 5 254 719 914 1292 1411 1623 1815 2077 2221 2560 -47 30 35 90 10 1 1 2 391 652 773 1056 -48 36 40 90 10 1 1 3 527 736 871 1208 1396 1681 -49 48 20 90 10 1 1 4 477 678 816 1224 1337 1550 1712 2021 -50 26 32 90 10 1 1 2 323 623 801 1187 -51 25 30 90 10 1 1 2 6 221 413 786 -52 25 35 90 10 1 1 2 294 612 792 1260 -53 44 5 90 20 1 1 4 117 506 657 1008 1113 1422 1616 1867 -54 42 10 90 40 1 1 4 493 737 855 1169 1285 1549 1736 2106 -55 42 15 90 10 1 1 2 175 475 646 881 -56 40 5 90 30 1 1 4 154 397 569 885 988 1356 1509 1895 -57 38 15 90 40 1 1 2 344 676 808 1303 -58 38 5 90 30 1 1 2 75 530 690 912 -59 38 10 90 10 1 1 3 540 833 974 1422 1549 1946 -60 35 5 90 20 1 1 5 109 369 505 743 862 1292 1424 1788 1982 2407 -61 50 30 90 10 1 1 2 209 582 716 931 -62 50 35 90 20 1 1 3 254 473 615 1012 1113 1610 -63 50 40 90 50 1 1 3 369 837 1020 1357 1462 1851 -64 48 30 90 10 1 1 2 624 871 978 1379 -65 44 25 90 10 1 1 2 604 824 1017 1248 -66 47 35 90 10 1 1 5 131 613 790 1051 1185 1399 1502 1828 2003 2474 -67 47 40 90 10 1 1 4 213 591 781 1159 1293 1654 1853 2081 -68 42 30 90 10 1 1 3 184 678 872 1186 1295 1672 -69 45 35 90 10 1 1 3 134 619 798 1095 1286 1771 -70 95 30 90 30 1 1 5 348 742 921 1257 1384 1724 1832 2067 2252 2546 -71 95 35 90 20 1 1 2 404 896 1013 1252 -72 53 30 90 10 1 1 2 32 237 355 732 -73 92 30 90 10 1 1 5 44 323 472 718 851 1315 1456 1711 1877 2275 -74 53 35 90 50 1 1 2 554 1041 1163 1566 -75 45 65 90 20 1 1 3 560 1021 1177 1458 1613 2007 -76 90 35 90 10 1 1 4 624 852 956 1317 1489 1979 2115 2552 -77 72 45 90 10 1 1 3 158 631 738 965 1111 1575 -78 78 40 90 20 1 1 3 130 582 728 990 1178 1622 -79 87 30 90 10 1 1 3 443 891 1009 1263 1379 1604 -80 85 25 90 10 1 1 4 440 887 1068 1523 1697 2186 2355 2604 -81 85 35 90 30 1 1 2 391 810 936 1310 -82 75 55 90 20 1 1 4 93 346 460 747 874 1350 1517 1896 -83 72 55 90 10 1 1 2 568 782 964 1230 -84 70 58 90 20 1 1 2 155 467 609 895 -85 86 46 90 30 1 1 5 65 330 432 740 861 1262 1390 1703 1857 2235 -86 66 55 90 10 1 1 4 317 623 821 1057 1249 1467 1595 1877 -87 64 46 90 20 1 1 5 227 689 861 1308 1413 1740 1901 2313 2451 2742 -88 65 60 90 30 1 1 2 91 438 617 1069 -89 56 64 90 10 1 1 3 14 302 408 712 857 1261 -90 60 55 90 10 1 1 2 75 497 688 1032 -91 60 60 90 10 1 1 4 202 611 739 1024 1201 1686 1820 2279 -92 67 85 90 20 1 1 5 632 920 1101 1346 1510 1759 1913 2241 2438 2901 -93 42 58 90 40 1 1 3 503 994 1135 1439 1554 1789 -94 65 82 90 10 1 1 4 24 430 588 827 1010 1213 1409 1662 -95 62 80 90 30 1 1 5 221 638 788 1283 1414 1725 1851 2321 2486 2741 -96 62 40 90 10 1 1 3 16 318 461 895 1091 1341 -97 60 85 90 30 1 1 5 607 888 1018 1351 1499 1799 1920 2303 2434 2873 -98 58 75 90 20 1 1 2 471 934 1125 1555 -99 55 80 90 10 1 1 2 358 604 767 1022 -100 55 85 90 20 1 1 3 491 769 918 1155 1307 1603 diff --git a/jsprit-instances/instances/belhaiza/cm206.txt b/jsprit-instances/instances/belhaiza/cm206.txt deleted file mode 100644 index 70264a704..000000000 --- a/jsprit-instances/instances/belhaiza/cm206.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 6 100 1 -0 700 -0 40 50 0 0 0 0 0 3390 -1 52 75 90 10 1 1 2 139 357 531 985 -2 45 70 90 30 1 1 3 43 619 736 1290 1489 2052 -3 62 69 90 10 1 1 3 298 749 860 1258 1425 1640 -4 60 66 90 10 1 1 2 184 622 741 1182 -5 42 65 90 10 1 1 2 770 1364 1543 1917 -6 16 42 90 20 1 1 2 442 758 863 1332 -7 58 70 90 20 1 1 3 842 1345 1480 1748 1885 2372 -8 34 60 90 20 1 1 4 449 809 913 1349 1502 1858 1997 2359 -9 28 70 90 10 1 1 4 490 953 1099 1380 1517 1741 1937 2161 -10 35 66 90 10 1 1 2 468 1053 1182 1563 -11 35 69 90 10 1 1 3 51 493 680 944 1060 1396 -12 25 85 90 20 1 1 4 59 430 597 931 1051 1498 1641 1948 -13 22 75 90 30 1 1 3 669 1368 1519 2160 2328 2771 -14 22 85 90 10 1 1 2 51 440 576 1112 -15 20 80 90 40 1 1 4 336 829 959 1433 1601 1805 1978 2536 -16 20 85 90 40 1 1 4 84 657 814 1062 1217 1559 1710 2197 -17 18 75 90 20 1 1 4 334 673 850 1096 1197 1471 1591 1915 -18 15 75 90 20 1 1 3 633 960 1133 1581 1695 2165 -19 15 80 90 10 1 1 2 733 1155 1276 1708 -20 30 50 90 10 1 1 3 140 683 802 1338 1478 1867 -21 30 56 90 20 1 1 3 341 875 1036 1304 1490 1778 -22 28 52 90 20 1 1 2 482 1117 1233 1725 -23 14 66 90 10 1 1 2 329 938 1083 1379 -24 25 50 90 10 1 1 3 622 1179 1282 1490 1674 1991 -25 22 66 90 40 1 1 4 540 1069 1225 1602 1724 2135 2236 2791 -26 8 62 90 10 1 1 4 777 1202 1315 1804 1962 2242 2421 2924 -27 23 52 90 10 1 1 3 494 1002 1147 1510 1618 2133 -28 4 55 90 20 1 1 2 438 956 1083 1330 -29 20 50 90 10 1 1 4 547 898 1024 1384 1490 2068 2261 2506 -30 20 55 90 10 1 1 4 629 1239 1373 2058 2164 2569 2696 3294 -31 10 35 90 20 1 1 2 760 1408 1581 2092 -32 10 40 90 30 1 1 3 384 783 904 1329 1460 1885 -33 8 40 90 40 1 1 2 117 336 502 774 -34 8 45 90 20 1 1 3 192 413 555 1176 1294 1548 -35 5 35 90 10 1 1 4 845 1430 1621 2103 2258 2854 3033 3266 -36 5 45 90 10 1 1 2 739 1223 1368 1950 -37 2 40 90 20 1 1 3 141 446 554 1058 1234 1732 -38 0 40 90 30 1 1 2 705 1030 1163 1790 -39 0 45 90 20 1 1 2 525 865 1027 1495 -40 36 18 90 10 1 1 3 156 592 730 1104 1208 1882 -41 35 32 90 10 1 1 3 820 1516 1633 2312 2502 3057 -42 33 32 90 20 1 1 2 516 793 929 1310 -43 33 35 90 10 1 1 2 25 474 606 872 -44 32 20 90 10 1 1 4 364 869 977 1570 1716 1981 2119 2635 -45 30 30 90 10 1 1 3 524 991 1127 1453 1554 1975 -46 34 25 90 30 1 1 2 61 374 487 746 -47 30 35 90 10 1 1 3 233 804 974 1429 1569 2136 -48 36 40 90 10 1 1 4 616 1198 1336 1959 2101 2728 2875 3370 -49 48 20 90 10 1 1 2 484 763 927 1595 -50 26 32 90 10 1 1 4 249 542 696 938 1058 1602 1737 2316 -51 25 30 90 10 1 1 3 487 1084 1274 1524 1662 2327 -52 25 35 90 10 1 1 3 814 1439 1576 2217 2412 2909 -53 44 5 90 20 1 1 2 176 475 621 1284 -54 42 10 90 40 1 1 3 172 452 579 1067 1194 1500 -55 42 15 90 10 1 1 2 386 975 1103 1479 -56 40 5 90 30 1 1 4 5 521 690 1241 1345 1739 1875 2143 -57 38 15 90 40 1 1 3 284 517 679 1117 1232 1822 -58 38 5 90 30 1 1 2 490 694 802 1465 -59 38 10 90 10 1 1 3 758 1175 1338 1941 2058 2574 -60 35 5 90 20 1 1 3 309 764 881 1107 1280 1950 -61 50 30 90 10 1 1 2 322 886 1007 1297 -62 50 35 90 20 1 1 2 743 1226 1359 1611 -63 50 40 90 50 1 1 2 606 864 978 1519 -64 48 30 90 10 1 1 2 617 1011 1114 1594 -65 44 25 90 10 1 1 3 152 620 770 1190 1322 2014 -66 47 35 90 10 1 1 2 94 719 879 1116 -67 47 40 90 10 1 1 2 674 1029 1170 1784 -68 42 30 90 10 1 1 3 683 1022 1138 1438 1574 1837 -69 45 35 90 10 1 1 4 464 762 937 1299 1420 2091 2221 2710 -70 95 30 90 30 1 1 2 375 748 885 1118 -71 95 35 90 20 1 1 3 838 1252 1388 1595 1749 2395 -72 53 30 90 10 1 1 3 534 1153 1266 1492 1684 1963 -73 92 30 90 10 1 1 4 104 340 529 763 956 1208 1402 2090 -74 53 35 90 50 1 1 2 659 960 1094 1317 -75 45 65 90 20 1 1 3 767 985 1139 1714 1845 2341 -76 90 35 90 10 1 1 3 456 1110 1219 1593 1731 2426 -77 72 45 90 10 1 1 4 323 659 818 1491 1633 1880 1999 2674 -78 78 40 90 20 1 1 2 805 1403 1588 2246 -79 87 30 90 10 1 1 3 385 842 988 1586 1697 2035 -80 85 25 90 10 1 1 2 720 1078 1275 1576 -81 85 35 90 30 1 1 3 150 415 516 739 898 1121 -82 75 55 90 20 1 1 2 223 875 990 1222 -83 72 55 90 10 1 1 3 280 920 1061 1353 1519 2050 -84 70 58 90 20 1 1 2 693 1371 1493 2032 -85 86 46 90 30 1 1 3 700 1335 1491 1826 1981 2504 -86 66 55 90 10 1 1 4 779 1026 1130 1599 1771 2454 2590 3185 -87 64 46 90 20 1 1 3 197 852 959 1204 1350 1991 -88 65 60 90 30 1 1 3 162 783 929 1233 1421 2029 -89 56 64 90 10 1 1 3 553 1166 1284 1575 1691 1933 -90 60 55 90 10 1 1 3 550 1162 1343 1968 2142 2825 -91 60 60 90 10 1 1 2 25 573 730 1295 -92 67 85 90 20 1 1 3 547 878 991 1280 1394 1739 -93 42 58 90 40 1 1 4 508 843 962 1501 1684 1908 2090 2400 -94 65 82 90 10 1 1 2 194 580 722 1066 -95 62 80 90 30 1 1 4 82 391 493 873 994 1530 1658 2046 -96 62 40 90 10 1 1 3 529 1002 1148 1525 1723 1983 -97 60 85 90 30 1 1 2 232 893 1085 1428 -98 58 75 90 20 1 1 4 697 1064 1206 1770 1940 2165 2295 2801 -99 55 80 90 10 1 1 3 417 662 846 1113 1245 1840 -100 55 85 90 20 1 1 2 296 506 674 906 diff --git a/jsprit-instances/instances/belhaiza/cm207.txt b/jsprit-instances/instances/belhaiza/cm207.txt deleted file mode 100644 index 0c73636f3..000000000 --- a/jsprit-instances/instances/belhaiza/cm207.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 6 100 1 -0 700 -0 40 50 0 0 0 0 0 3390 -1 52 75 90 10 1 1 1 186 415 -2 45 70 90 30 1 1 2 388 1186 1296 2098 -3 62 69 90 10 1 1 3 821 1158 1377 2370 2540 3143 -4 60 66 90 10 1 1 2 35 326 473 1215 -5 42 65 90 10 1 1 2 545 918 1043 1400 -6 16 42 90 20 1 1 3 393 1320 1459 2293 2497 2883 -7 58 70 90 20 1 1 2 704 948 1246 1931 -8 34 60 90 20 1 1 1 649 1132 -9 28 70 90 10 1 1 2 362 1269 1463 2087 -10 35 66 90 10 1 1 1 608 1058 -11 35 69 90 10 1 1 1 1033 1552 -12 25 85 90 20 1 1 2 184 847 956 1528 -13 22 75 90 30 1 1 2 1095 1334 1588 1925 -14 22 85 90 10 1 1 2 328 817 1014 1584 -15 20 80 90 40 1 1 1 990 1293 -16 20 85 90 40 1 1 1 820 1154 -17 18 75 90 20 1 1 2 304 560 759 1502 -18 15 75 90 20 1 1 1 489 861 -19 15 80 90 10 1 1 2 893 1892 2094 3000 -20 30 50 90 10 1 1 2 97 844 956 1459 -21 30 56 90 20 1 1 3 851 1340 1519 2187 2347 2986 -22 28 52 90 20 1 1 1 809 1553 -23 14 66 90 10 1 1 3 843 1832 1951 2231 2387 3048 -24 25 50 90 10 1 1 2 576 1236 1391 2187 -25 22 66 90 40 1 1 2 876 1150 1252 1570 -26 8 62 90 10 1 1 1 405 770 -27 23 52 90 10 1 1 1 562 1360 -28 4 55 90 20 1 1 3 163 795 983 1213 1405 2297 -29 20 50 90 10 1 1 1 777 1304 -30 20 55 90 10 1 1 1 222 960 -31 10 35 90 20 1 1 2 689 1212 1392 2127 -32 10 40 90 30 1 1 1 199 893 -33 8 40 90 40 1 1 3 983 1259 1475 2130 2255 2589 -34 8 45 90 20 1 1 3 217 727 929 1492 1738 2509 -35 5 35 90 10 1 1 1 265 491 -36 5 45 90 10 1 1 3 745 1697 1868 2578 2762 3411 -37 2 40 90 20 1 1 1 22 791 -38 0 40 90 30 1 1 3 1037 1597 1723 2386 2602 2930 -39 0 45 90 20 1 1 2 589 1428 1644 2336 -40 36 18 90 10 1 1 1 712 1274 -41 35 32 90 10 1 1 1 719 1181 -42 33 32 90 20 1 1 2 311 586 746 1567 -43 33 35 90 10 1 1 2 303 760 872 1677 -44 32 20 90 10 1 1 1 920 1866 -45 30 30 90 10 1 1 3 1097 1891 2073 2549 2808 3060 -46 34 25 90 30 1 1 1 1013 1253 -47 30 35 90 10 1 1 3 827 1524 1703 2421 2611 3173 -48 36 40 90 10 1 1 1 354 914 -49 48 20 90 10 1 1 1 157 388 -50 26 32 90 10 1 1 1 743 1474 -51 25 30 90 10 1 1 1 953 1334 -52 25 35 90 10 1 1 2 206 493 747 1625 -53 44 5 90 20 1 1 3 1039 1691 1902 2735 2994 3247 -54 42 10 90 40 1 1 1 986 1641 -55 42 15 90 10 1 1 3 521 1084 1217 1586 1702 2388 -56 40 5 90 30 1 1 2 111 919 1185 1586 -57 38 15 90 40 1 1 3 233 701 925 1349 1573 2201 -58 38 5 90 30 1 1 2 209 787 963 1441 -59 38 10 90 10 1 1 3 576 808 1101 2096 2230 3197 -60 35 5 90 20 1 1 3 366 1293 1515 1839 2011 2501 -61 50 30 90 10 1 1 1 34 632 -62 50 35 90 20 1 1 1 1114 1572 -63 50 40 90 50 1 1 2 889 1433 1559 1829 -64 48 30 90 10 1 1 2 432 1138 1345 2019 -65 44 25 90 10 1 1 2 416 818 920 1475 -66 47 35 90 10 1 1 1 82 463 -67 47 40 90 10 1 1 1 471 777 -68 42 30 90 10 1 1 3 576 996 1243 2006 2267 2791 -69 45 35 90 10 1 1 3 957 1738 2009 2514 2732 3269 -70 95 30 90 30 1 1 2 178 494 781 1438 -71 95 35 90 20 1 1 2 211 1033 1149 1584 -72 53 30 90 10 1 1 2 231 981 1151 1957 -73 92 30 90 10 1 1 2 650 1485 1765 2045 -74 53 35 90 50 1 1 3 429 937 1229 2110 2285 3191 -75 45 65 90 20 1 1 2 47 1007 1148 1506 -76 90 35 90 10 1 1 3 504 1077 1217 1545 1700 2361 -77 72 45 90 10 1 1 1 34 456 -78 78 40 90 20 1 1 3 398 963 1240 1666 1767 2474 -79 87 30 90 10 1 1 3 440 1195 1322 1557 1782 2274 -80 85 25 90 10 1 1 1 538 1006 -81 85 35 90 30 1 1 2 176 1001 1102 1343 -82 75 55 90 20 1 1 2 95 1035 1221 1738 -83 72 55 90 10 1 1 3 718 1562 1696 2401 2603 3208 -84 70 58 90 20 1 1 2 194 437 683 1635 -85 86 46 90 30 1 1 1 430 1212 -86 66 55 90 10 1 1 1 187 560 -87 64 46 90 20 1 1 2 118 1020 1171 1638 -88 65 60 90 30 1 1 1 772 1544 -89 56 64 90 10 1 1 1 440 822 -90 60 55 90 10 1 1 3 43 691 898 1594 1782 2125 -91 60 60 90 10 1 1 2 368 1355 1625 1876 -92 67 85 90 20 1 1 1 682 942 -93 42 58 90 40 1 1 1 900 1349 -94 65 82 90 10 1 1 3 744 1275 1536 1959 2091 2452 -95 62 80 90 30 1 1 1 867 1356 -96 62 40 90 10 1 1 1 367 1005 -97 60 85 90 30 1 1 3 243 1197 1358 2021 2190 2431 -98 58 75 90 20 1 1 2 424 676 861 1588 -99 55 80 90 10 1 1 3 410 621 829 1743 2010 2577 -100 55 85 90 20 1 1 2 147 388 672 999 diff --git a/jsprit-instances/instances/belhaiza/cm208.txt b/jsprit-instances/instances/belhaiza/cm208.txt deleted file mode 100644 index d04125c72..000000000 --- a/jsprit-instances/instances/belhaiza/cm208.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 6 100 1 -0 700 -0 40 50 0 0 0 0 0 3390 -1 52 75 90 10 1 1 1 186 704 -2 45 70 90 30 1 1 2 388 1261 1381 2257 -3 62 69 90 10 1 1 3 821 1406 1744 2740 2980 3731 -4 60 66 90 10 1 1 2 35 592 787 1626 -5 42 65 90 10 1 1 2 545 1153 1304 1902 -6 16 42 90 20 1 1 3 393 1347 1525 2421 2729 3345 -7 58 70 90 20 1 1 2 704 1231 1728 2531 -8 34 60 90 20 1 1 1 649 1326 -9 28 70 90 10 1 1 2 362 1304 1593 2358 -10 35 66 90 10 1 1 1 608 1264 -11 35 69 90 10 1 1 1 1033 1732 -12 25 85 90 20 1 1 2 184 973 1092 1825 -13 22 75 90 30 1 1 2 1095 1619 2027 2613 -14 22 85 90 10 1 1 2 328 1009 1303 2034 -15 20 80 90 40 1 1 1 990 1554 -16 20 85 90 40 1 1 1 820 1403 -17 18 75 90 20 1 1 2 304 839 1137 1976 -18 15 75 90 20 1 1 1 489 1096 -19 15 80 90 10 1 1 2 893 1892 2197 3138 -20 30 50 90 10 1 1 2 97 939 1063 1752 -21 30 56 90 20 1 1 3 851 1532 1790 2583 2804 3578 -22 28 52 90 20 1 1 1 809 1649 -23 14 66 90 10 1 1 3 843 1836 1974 2524 2737 3525 -24 25 50 90 10 1 1 2 576 1363 1574 2446 -25 22 66 90 40 1 1 2 876 1422 1527 2101 -26 8 62 90 10 1 1 1 405 1008 -27 23 52 90 10 1 1 1 562 1436 -28 4 55 90 20 1 1 3 163 933 1210 1728 2013 2946 -29 20 50 90 10 1 1 1 777 1481 -30 20 55 90 10 1 1 1 222 1058 -31 10 35 90 20 1 1 2 689 1390 1651 2485 -32 10 40 90 30 1 1 1 199 1007 -33 8 40 90 40 1 1 3 983 1531 1864 2648 2799 3383 -34 8 45 90 20 1 1 3 217 911 1216 1942 2335 3192 -35 5 35 90 10 1 1 1 265 781 -36 5 45 90 10 1 1 3 745 1715 1957 2775 3044 3825 -37 2 40 90 20 1 1 1 22 877 -38 0 40 90 30 1 1 3 1037 1762 1915 2704 3036 3616 -39 0 45 90 20 1 1 2 589 1488 1821 2629 -40 36 18 90 10 1 1 1 712 1438 -41 35 32 90 10 1 1 1 719 1383 -42 33 32 90 20 1 1 2 311 858 1079 1967 -43 33 35 90 10 1 1 2 303 963 1087 1965 -44 32 20 90 10 1 1 1 920 1886 -45 30 30 90 10 1 1 3 1097 1968 2232 2904 3322 3854 -46 34 25 90 30 1 1 1 1013 1538 -47 30 35 90 10 1 1 3 827 1638 1897 2720 3000 3726 -48 36 40 90 10 1 1 1 354 1079 -49 48 20 90 10 1 1 1 157 676 -50 26 32 90 10 1 1 1 743 1575 -51 25 30 90 10 1 1 1 953 1566 -52 25 35 90 10 1 1 2 206 760 1168 2092 -53 44 5 90 20 1 1 2 1039 1821 2143 3039 -54 42 10 90 40 1 1 1 986 1770 -55 42 15 90 10 1 1 3 521 1248 1415 2020 2153 2957 -56 40 5 90 30 1 1 2 111 991 1424 2049 -57 38 15 90 40 1 1 3 233 900 1248 1888 2237 3005 -58 38 5 90 30 1 1 2 209 945 1197 1871 -59 38 10 90 10 1 1 3 576 1096 1583 2579 2747 3726 -60 35 5 90 20 1 1 3 366 1320 1664 2241 2486 3167 -61 50 30 90 10 1 1 1 34 783 -62 50 35 90 20 1 1 1 1114 1775 -63 50 40 90 50 1 1 2 889 1604 1756 2300 -64 48 30 90 10 1 1 2 432 1248 1562 2358 -65 44 25 90 10 1 1 2 416 1042 1146 1867 -66 47 35 90 10 1 1 1 82 695 -67 47 40 90 10 1 1 1 471 1037 -68 42 30 90 10 1 1 3 576 1214 1608 2459 2881 3583 -69 45 35 90 10 1 1 3 957 1820 2262 2952 3288 3999 -70 95 30 90 30 1 1 2 178 750 1224 2010 -71 95 35 90 20 1 1 2 211 1100 1233 1880 -72 53 30 90 10 1 1 2 231 1075 1315 2194 -73 92 30 90 10 1 1 2 650 1547 2007 2557 -74 53 35 90 50 1 1 3 429 1121 1605 2530 2780 3721 -75 45 65 90 20 1 1 2 47 1022 1205 1804 -76 90 35 90 10 1 1 3 504 1237 1418 1998 2209 2997 -77 72 45 90 10 1 1 1 34 673 -78 78 40 90 20 1 1 3 398 1126 1580 2221 2323 3139 -79 87 30 90 10 1 1 3 440 1287 1441 1962 2313 2995 -80 85 25 90 10 1 1 1 538 1205 -81 85 35 90 30 1 1 2 176 1066 1169 1695 -82 75 55 90 20 1 1 2 95 1058 1331 2029 -83 72 55 90 10 1 1 3 718 1621 1790 2606 2910 3663 -84 70 58 90 20 1 1 2 194 720 1113 2083 -85 86 46 90 30 1 1 1 430 1294 -86 66 55 90 10 1 1 1 187 795 -87 64 46 90 20 1 1 2 118 1057 1260 1927 -88 65 60 90 30 1 1 1 772 1629 -89 56 64 90 10 1 1 1 440 1053 -90 60 55 90 10 1 1 3 43 823 1137 1947 2223 2812 -91 60 60 90 10 1 1 2 368 1360 1800 2331 -92 67 85 90 20 1 1 1 682 1219 -93 42 58 90 40 1 1 1 900 1555 -94 65 82 90 10 1 1 3 744 1451 1873 2512 2676 3276 -95 62 80 90 30 1 1 1 867 1547 -96 62 40 90 10 1 1 1 367 1141 -97 60 85 90 30 1 1 3 243 1214 1437 2226 2464 2989 -98 58 75 90 20 1 1 2 424 957 1228 2057 -99 55 80 90 10 1 1 3 410 917 1234 2180 2615 3344 -100 55 85 90 20 1 1 2 147 673 1141 1720 diff --git a/jsprit-instances/instances/belhaiza/pcm101.txt b/jsprit-instances/instances/belhaiza/pcm101.txt deleted file mode 100644 index 722a4f0c5..000000000 --- a/jsprit-instances/instances/belhaiza/pcm101.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 10 100 1 -0 200 -0 40 50 0 0 0 0 0 1236 -1 45 68 90 10 1 1 3 3 58 145 271 797 897 -2 45 70 90 30 1 1 6 14 71 157 232 311 509 576 701 728 782 756 865 -3 42 66 90 10 1 1 5 9 94 55 157 168 250 306 385 480 648 -4 42 68 90 10 1 1 5 4 83 159 287 368 426 525 665 732 802 -5 42 65 90 10 1 1 5 0 64 17 122 198 296 348 468 544 640 -6 40 69 90 20 1 1 4 10 197 255 391 443 562 516 622 -7 40 66 90 20 1 1 3 3 198 146 250 275 440 -8 38 68 90 20 1 1 4 9 128 184 243 253 327 306 487 -9 38 70 90 10 1 1 5 1 102 185 275 335 459 413 541 530 612 -10 35 66 90 10 1 1 6 0 97 17 185 259 386 440 592 645 751 819 969 -11 35 69 90 10 1 1 4 10 119 169 264 349 501 600 760 -12 25 85 90 20 1 1 5 1 66 83 173 130 266 344 476 563 689 -13 22 75 90 30 1 1 4 15 79 129 201 261 348 734 836 -14 22 85 90 10 1 1 4 9 171 163 279 248 408 459 530 -15 20 80 90 40 1 1 5 4 123 207 318 401 475 543 622 702 812 -16 20 85 90 40 1 1 5 2 112 170 312 245 381 366 545 623 803 -17 18 75 90 20 1 1 3 16 85 144 252 632 750 -18 15 75 90 20 1 1 4 14 171 222 274 366 451 533 724 -19 15 80 90 10 1 1 5 11 114 175 288 338 494 410 596 566 759 -20 30 50 90 10 1 1 4 3 73 153 290 366 535 614 756 -21 30 52 90 20 1 1 4 12 129 195 257 332 477 908 972 -22 28 52 90 20 1 1 4 6 172 238 384 471 561 819 877 -23 28 55 90 10 1 1 3 16 205 292 465 658 852 -24 25 50 90 10 1 1 3 1 112 175 344 438 495 -25 25 52 90 40 1 1 6 14 157 170 224 226 373 445 563 635 716 769 866 -26 25 55 90 10 1 1 3 13 84 136 284 620 704 -27 23 52 90 10 1 1 6 2 115 207 284 260 318 383 548 643 777 854 1022 -28 23 55 90 20 1 1 6 11 109 197 377 450 568 501 639 626 707 761 902 -29 20 50 90 10 1 1 6 5 69 161 335 324 440 395 495 576 668 749 879 -30 20 55 90 10 1 1 4 6 83 180 287 362 418 378 576 -31 10 35 90 20 1 1 5 3 196 291 447 504 602 670 811 872 976 -32 10 40 90 30 1 1 4 2 56 155 253 324 465 701 869 -33 8 40 90 40 1 1 3 9 78 147 291 624 762 -34 8 45 90 20 1 1 4 5 147 219 324 386 437 490 574 -35 5 35 90 10 1 1 3 8 77 140 301 440 566 -36 5 45 90 10 1 1 4 8 168 256 426 518 677 769 876 -37 2 40 90 20 1 1 3 9 147 204 275 371 506 -38 0 40 90 30 1 1 4 3 169 223 317 401 532 619 699 -39 0 45 90 20 1 1 3 15 157 212 348 444 629 -40 35 30 90 10 1 1 3 17 123 217 411 490 596 -41 35 32 90 10 1 1 5 3 59 155 236 308 427 487 561 624 760 -42 33 32 90 20 1 1 3 0 91 58 160 163 329 -43 33 35 90 10 1 1 3 12 194 279 329 398 552 -44 32 30 90 10 1 1 3 7 77 130 274 336 436 -45 30 30 90 10 1 1 4 15 158 210 283 361 412 384 572 -46 30 32 90 30 1 1 3 8 117 207 391 498 642 -47 30 35 90 10 1 1 5 10 85 153 279 337 395 481 672 1090 1162 -48 28 30 90 10 1 1 5 3 110 168 250 343 478 544 609 619 707 -49 28 35 90 10 1 1 3 13 170 231 302 980 1088 -50 26 32 90 10 1 1 5 0 134 210 353 425 501 600 726 799 897 -51 25 30 90 10 1 1 3 2 179 259 320 710 802 -52 25 35 90 10 1 1 4 16 185 267 379 469 560 901 981 -53 44 5 90 20 1 1 3 7 76 135 300 348 480 -54 42 10 90 40 1 1 4 18 180 258 340 392 488 459 559 -55 42 15 90 10 1 1 4 7 66 137 285 335 533 552 656 -56 40 5 90 30 1 1 5 9 140 221 396 452 509 605 678 731 881 -57 40 15 90 40 1 1 3 17 77 173 238 598 794 -58 38 5 90 30 1 1 5 4 83 135 301 372 473 568 623 700 862 -59 38 15 90 10 1 1 4 11 108 184 370 424 526 595 793 -60 35 5 90 20 1 1 6 7 97 39 231 176 367 438 502 561 753 842 940 -61 50 30 90 10 1 1 5 12 190 262 389 462 631 686 777 842 905 -62 50 35 90 20 1 1 5 19 99 155 294 346 422 474 526 585 723 -63 50 40 90 50 1 1 6 1 90 164 237 303 485 555 632 715 864 882 964 -64 48 30 90 10 1 1 5 13 185 251 334 425 605 683 773 850 997 -65 48 40 90 10 1 1 4 18 82 134 264 350 545 613 781 -66 47 35 90 10 1 1 3 4 190 243 306 379 561 -67 47 40 90 10 1 1 4 3 179 252 333 427 599 800 910 -68 45 30 90 10 1 1 6 3 151 106 300 205 282 361 435 517 690 780 957 -69 45 35 90 10 1 1 4 13 87 173 227 306 442 524 613 -70 95 30 90 30 1 1 3 5 75 171 242 377 467 -71 95 35 90 20 1 1 5 3 154 245 302 285 369 393 476 544 629 -72 53 30 90 10 1 1 4 19 133 187 269 320 424 406 556 -73 92 30 90 10 1 1 3 5 111 188 327 444 586 -74 53 35 90 50 1 1 3 2 122 175 372 435 623 -75 45 65 90 20 1 1 4 17 205 296 396 467 626 912 968 -76 90 35 90 10 1 1 4 6 148 202 309 365 488 577 753 -77 88 30 90 10 1 1 4 0 94 147 249 321 473 581 637 -78 88 35 90 20 1 1 5 9 75 44 236 151 338 402 556 620 712 -79 87 30 90 10 1 1 6 6 185 249 428 485 674 634 766 732 904 975 1121 -80 85 25 90 10 1 1 6 9 204 291 486 556 658 715 782 768 822 866 992 -81 85 35 90 30 1 1 2 0 138 196 370 -82 75 55 90 20 1 1 6 14 190 289 388 322 468 456 581 676 772 831 920 -83 72 55 90 10 1 1 3 0 101 172 339 437 512 -84 70 58 90 20 1 1 6 17 107 172 288 362 462 461 521 522 663 728 897 -85 68 60 90 30 1 1 6 15 169 222 409 485 558 505 663 639 716 779 868 -86 66 55 90 10 1 1 3 6 130 154 258 225 353 -87 65 55 90 20 1 1 2 0 116 197 271 -88 65 60 90 30 1 1 4 9 107 162 280 355 428 508 681 -89 63 58 90 10 1 1 3 5 126 196 267 708 832 -90 60 55 90 10 1 1 3 11 203 277 374 431 581 -91 60 60 90 10 1 1 5 8 58 138 244 318 505 566 667 822 904 -92 67 85 90 20 1 1 6 12 124 209 403 342 478 496 647 746 856 955 1080 -93 65 85 90 40 1 1 5 6 201 287 367 417 504 561 657 741 880 -94 65 82 90 10 1 1 5 2 124 196 343 396 459 465 543 551 725 -95 62 80 90 30 1 1 5 7 206 293 419 493 560 532 662 622 705 -96 60 80 90 10 1 1 5 14 177 236 290 366 558 614 813 891 969 -97 60 85 90 30 1 1 4 18 160 139 307 242 419 475 597 -98 58 75 90 20 1 1 4 10 94 172 305 379 453 709 861 -99 55 80 90 10 1 1 4 13 71 128 253 349 514 575 747 -100 55 85 90 20 1 1 5 0 125 83 173 194 320 395 558 630 746 diff --git a/jsprit-instances/instances/belhaiza/pcm102.txt b/jsprit-instances/instances/belhaiza/pcm102.txt deleted file mode 100644 index dd8d2d6c8..000000000 --- a/jsprit-instances/instances/belhaiza/pcm102.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 10 100 1 -0 200 -0 40 50 0 0 0 0 0 1236 -1 45 68 90 10 1 1 3 3 58 232 358 797 897 -2 45 70 90 30 1 1 6 14 71 243 318 477 675 728 782 810 935 1046 1155 -3 42 66 90 10 1 1 5 9 94 55 157 242 324 436 515 705 873 -4 42 68 90 10 1 1 6 4 83 236 364 526 584 593 729 783 923 1058 1128 -5 42 65 90 10 1 1 3 6 188 335 464 595 651 -6 40 69 90 20 1 1 4 7 105 257 444 560 696 800 919 -7 40 66 90 20 1 1 4 19 76 152 244 253 328 464 596 -8 38 68 90 20 1 1 4 1 123 211 369 310 379 495 586 -9 38 70 90 10 1 1 4 5 65 214 365 420 534 486 566 -10 35 66 90 10 1 1 4 15 214 365 547 715 838 975 1037 -11 35 69 90 10 1 1 2 7 157 315 478 -12 25 85 90 20 1 1 3 6 138 306 357 530 687 -13 22 75 90 30 1 1 5 2 163 320 384 539 631 782 918 1045 1206 -14 22 85 90 10 1 1 3 15 79 180 252 372 459 -15 20 80 90 40 1 1 4 14 102 275 399 381 435 513 644 -16 20 85 90 40 1 1 4 9 188 238 388 328 410 526 679 -17 18 75 90 20 1 1 3 8 114 280 421 636 746 -18 15 75 90 20 1 1 3 3 145 254 433 508 688 -19 15 80 90 10 1 1 5 3 140 321 390 425 581 509 617 768 886 -20 30 50 90 10 1 1 4 0 52 236 321 486 677 812 957 -21 30 52 90 20 1 1 4 4 117 218 374 519 712 869 1056 -22 28 52 90 20 1 1 3 11 85 264 405 784 912 -23 28 55 90 10 1 1 5 6 143 306 423 555 617 723 787 768 913 -24 25 50 90 10 1 1 3 6 172 304 450 625 715 -25 25 52 90 40 1 1 3 18 81 117 277 263 435 -26 25 55 90 10 1 1 6 8 109 288 347 452 543 589 735 732 916 1089 1232 -27 23 52 90 10 1 1 3 9 127 272 353 459 556 -28 23 55 90 20 1 1 3 2 72 237 386 542 598 -29 20 50 90 10 1 1 3 8 184 294 470 302 368 -30 20 55 90 10 1 1 4 11 210 389 576 682 815 947 1116 -31 10 35 90 20 1 1 6 9 127 243 324 432 573 511 685 749 888 1013 1077 -32 10 40 90 30 1 1 6 4 104 266 358 520 650 732 838 797 913 1047 1124 -33 8 40 90 40 1 1 5 10 66 262 461 578 771 961 1117 1232 1330 -34 8 45 90 20 1 1 4 7 111 260 345 458 512 710 808 -35 5 35 90 10 1 1 4 15 129 242 305 468 588 747 854 -36 5 45 90 10 1 1 4 5 147 291 396 521 572 679 763 -37 2 40 90 20 1 1 3 8 77 204 365 344 470 -38 0 40 90 30 1 1 5 8 168 259 371 344 514 698 857 1042 1149 -39 0 45 90 20 1 1 5 2 123 173 267 280 353 517 707 825 991 -40 35 30 90 10 1 1 3 13 144 242 344 319 399 -41 35 32 90 10 1 1 5 11 180 104 298 370 435 573 762 947 1053 -42 33 32 90 20 1 1 5 11 117 221 413 533 612 758 947 1063 1180 -43 33 35 90 10 1 1 2 5 141 268 349 -44 32 30 90 10 1 1 2 9 175 303 405 -45 30 30 90 10 1 1 6 0 145 314 469 428 528 573 681 817 887 993 1137 -46 30 32 90 30 1 1 4 15 158 263 336 476 664 493 544 -47 30 35 90 10 1 1 3 8 117 297 481 1054 1198 -48 28 30 90 10 1 1 5 10 85 221 347 464 522 627 699 695 886 -49 28 35 90 10 1 1 5 3 110 226 308 495 630 763 828 990 1078 -50 26 32 90 10 1 1 3 13 170 292 363 794 902 -51 25 30 90 10 1 1 5 0 134 287 430 574 650 707 805 848 974 -52 25 35 90 10 1 1 3 2 179 339 400 895 987 -53 44 5 90 20 1 1 3 16 185 350 462 642 733 -54 42 10 90 40 1 1 3 2 76 252 356 470 548 -55 42 15 90 10 1 1 4 15 113 234 425 555 691 825 882 -56 40 5 90 30 1 1 3 7 66 208 356 457 655 -57 40 15 90 40 1 1 3 10 194 377 495 600 744 -58 38 5 90 30 1 1 2 18 91 198 348 -59 38 15 90 10 1 1 2 17 77 270 335 -60 35 5 90 20 1 1 5 3 194 371 451 585 642 745 858 1033 1218 -61 50 30 90 10 1 1 4 6 145 335 474 608 738 937 1001 -62 50 35 90 20 1 1 3 5 202 396 503 612 750 -63 50 40 90 50 1 1 4 3 195 374 472 663 855 834 1012 -64 48 30 90 10 1 1 4 9 136 282 451 562 653 784 847 -65 48 40 90 10 1 1 6 19 99 212 351 455 531 635 687 672 856 805 943 -66 47 35 90 10 1 1 4 3 62 51 163 250 374 492 591 -67 47 40 90 10 1 1 5 4 153 334 527 649 800 769 941 987 1087 -68 45 30 90 10 1 1 4 12 146 138 268 314 447 639 703 -69 45 35 90 10 1 1 2 14 209 345 513 -70 95 30 90 30 1 1 4 4 190 297 360 367 477 506 688 -71 95 35 90 20 1 1 5 4 82 263 382 522 704 869 1043 1161 1238 -72 53 30 90 10 1 1 3 11 85 250 423 393 569 -73 92 30 90 10 1 1 6 14 208 377 451 477 553 624 678 836 972 1136 1225 -74 53 35 90 50 1 1 3 2 95 222 410 507 645 -75 45 65 90 20 1 1 5 0 78 200 375 498 672 794 900 894 986 -76 90 35 90 10 1 1 4 4 199 191 273 335 399 566 620 -77 88 30 90 10 1 1 3 11 103 265 397 543 646 -78 88 35 90 20 1 1 2 1 198 325 513 -79 87 30 90 10 1 1 3 17 205 387 487 629 788 -80 85 25 90 10 1 1 3 12 168 306 401 764 826 -81 85 35 90 30 1 1 3 16 86 218 386 488 582 -82 75 55 90 20 1 1 4 13 72 176 293 334 456 404 565 -83 72 55 90 10 1 1 5 13 143 271 365 560 653 839 1005 1191 1293 -84 70 58 90 20 1 1 4 3 192 308 480 425 557 622 768 -85 68 60 90 30 1 1 6 9 204 378 573 557 611 714 816 931 998 1166 1292 -86 66 55 90 10 1 1 3 0 138 109 303 255 429 -87 65 55 90 20 1 1 5 6 164 314 511 642 747 873 1058 1223 1300 -88 65 60 90 30 1 1 3 0 101 244 411 607 682 -89 63 58 90 10 1 1 5 17 107 237 353 501 601 722 863 994 1163 -90 60 55 90 10 1 1 2 13 194 385 550 -91 60 60 90 10 1 1 3 10 83 246 323 819 907 -92 67 85 90 20 1 1 3 2 160 292 416 606 734 -93 65 85 90 40 1 1 4 8 68 184 238 269 367 397 540 -94 65 82 90 10 1 1 3 2 120 271 344 504 677 -95 62 80 90 30 1 1 3 5 126 266 337 535 659 -96 60 80 90 10 1 1 3 11 203 351 448 563 713 -97 60 85 90 30 1 1 4 8 58 218 324 473 660 782 883 -98 58 75 90 20 1 1 3 8 197 393 535 707 863 -99 55 80 90 10 1 1 4 8 187 337 536 694 891 1088 1279 -100 55 85 90 20 1 1 4 14 94 59 197 195 282 396 492 diff --git a/jsprit-instances/instances/belhaiza/pcm103.txt b/jsprit-instances/instances/belhaiza/pcm103.txt deleted file mode 100644 index 8f85eef05..000000000 --- a/jsprit-instances/instances/belhaiza/pcm103.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 10 100 1 -0 200 -0 40 50 0 0 0 0 0 1236 -1 45 68 90 10 1 1 2 3 110 747 947 -2 45 70 90 30 1 1 3 15 183 353 463 635 769 -3 42 66 90 10 1 1 4 10 229 368 538 641 763 886 1121 -4 42 68 90 10 1 1 3 9 152 264 403 533 789 -5 42 65 90 10 1 1 4 15 184 307 446 599 803 965 1076 -6 40 69 90 20 1 1 3 2 300 457 627 815 989 -7 40 66 90 20 1 1 2 9 215 346 454 -8 38 68 90 20 1 1 4 7 171 194 386 323 606 722 937 -9 38 70 90 10 1 1 2 0 174 331 623 -10 35 66 90 10 1 1 1 11 265 -11 35 69 90 10 1 1 2 9 167 273 470 -12 25 85 90 20 1 1 1 5 280 -13 22 75 90 30 1 1 2 6 251 728 842 -14 22 85 90 10 1 1 2 9 244 365 506 -15 20 80 90 40 1 1 3 19 224 307 509 412 670 -16 20 85 90 40 1 1 3 1 237 196 430 343 518 -17 18 75 90 20 1 1 3 11 261 415 594 611 771 -18 15 75 90 20 1 1 2 14 250 475 721 -19 15 80 90 10 1 1 4 2 251 408 527 682 838 989 1204 -20 30 50 90 10 1 1 3 7 162 339 457 558 687 -21 30 52 90 20 1 1 2 7 148 865 1015 -22 28 52 90 20 1 1 4 14 213 327 535 679 786 712 984 -23 28 55 90 10 1 1 3 8 151 267 504 638 872 -24 25 50 90 10 1 1 1 8 183 -25 25 52 90 40 1 1 3 8 241 402 529 715 850 -26 25 55 90 10 1 1 2 11 285 554 770 -27 23 52 90 10 1 1 2 16 141 201 377 -28 23 55 90 20 1 1 2 10 200 449 691 -29 20 50 90 10 1 1 3 0 103 287 433 598 886 -30 20 55 90 10 1 1 3 11 182 304 488 589 831 -31 10 35 90 20 1 1 5 18 208 321 536 496 700 694 826 1005 1226 -32 10 40 90 30 1 1 3 6 222 385 575 707 823 -33 8 40 90 40 1 1 4 1 204 381 536 611 775 700 860 -34 8 45 90 20 1 1 2 1 252 445 563 -35 5 35 90 10 1 1 4 14 278 412 706 812 994 1121 1380 -36 5 45 90 10 1 1 1 17 296 -37 2 40 90 20 1 1 3 12 258 403 582 703 893 -38 0 40 90 30 1 1 2 1 163 276 383 -39 0 45 90 20 1 1 1 13 245 -40 35 30 90 10 1 1 2 16 161 201 385 -41 35 32 90 10 1 1 2 16 152 74 328 -42 33 32 90 20 1 1 4 18 231 386 644 823 936 1092 1257 -43 33 35 90 10 1 1 4 9 262 383 575 735 868 1027 1143 -44 32 30 90 10 1 1 4 5 124 309 575 695 862 1024 1180 -45 30 30 90 10 1 1 3 8 232 350 544 682 851 -46 30 32 90 30 1 1 4 10 118 314 612 729 1020 1210 1452 -47 30 35 90 10 1 1 3 12 143 279 451 1053 1199 -48 28 30 90 10 1 1 3 2 108 306 470 552 774 -49 28 35 90 10 1 1 3 1 258 404 530 921 1147 -50 26 32 90 10 1 1 3 10 228 353 576 762 934 -51 25 30 90 10 1 1 3 5 107 214 359 695 817 -52 25 35 90 10 1 1 2 14 197 864 1018 -53 44 5 90 20 1 1 4 14 254 280 548 434 615 787 1040 -54 42 10 90 40 1 1 2 8 279 426 644 -55 42 15 90 10 1 1 2 11 142 461 747 -56 40 5 90 30 1 1 4 3 258 250 390 366 524 692 900 -57 40 15 90 40 1 1 5 12 182 339 597 609 783 787 907 1045 1331 -58 38 5 90 30 1 1 4 17 309 468 643 747 1037 1157 1296 -59 38 15 90 10 1 1 4 8 201 321 453 580 795 922 1064 -60 35 5 90 20 1 1 1 9 264 -61 50 30 90 10 1 1 2 17 173 273 499 -62 50 35 90 20 1 1 3 7 245 358 466 628 801 -63 50 40 90 50 1 1 2 9 176 811 1035 -64 48 30 90 10 1 1 4 1 132 289 390 498 783 926 1105 -65 48 40 90 10 1 1 5 12 273 390 616 697 831 767 968 1073 1246 -66 47 35 90 10 1 1 4 2 248 386 631 752 888 1044 1177 -67 47 40 90 10 1 1 5 6 126 237 388 556 799 767 943 921 1049 -68 45 30 90 10 1 1 3 0 212 365 589 733 868 -69 45 35 90 10 1 1 3 6 302 487 599 706 828 -70 95 30 90 30 1 1 3 6 164 346 605 770 952 -71 95 35 90 20 1 1 3 4 265 241 413 377 509 -72 53 30 90 10 1 1 4 10 149 324 488 609 897 1027 1242 -73 92 30 90 10 1 1 2 8 177 459 571 -74 53 35 90 50 1 1 2 8 239 340 638 -75 45 65 90 20 1 1 3 10 288 471 662 827 1053 -76 90 35 90 10 1 1 2 3 129 90 374 -77 88 30 90 10 1 1 4 2 116 305 418 462 756 611 732 -78 88 35 90 20 1 1 4 4 142 246 501 643 811 1001 1108 -79 87 30 90 10 1 1 4 11 220 379 542 695 976 1085 1254 -80 85 25 90 10 1 1 4 19 196 334 488 647 936 1078 1196 -81 85 35 90 30 1 1 4 6 145 340 599 784 1067 1218 1447 -82 75 55 90 20 1 1 2 9 268 379 534 -83 72 55 90 10 1 1 2 17 180 232 372 -84 70 58 90 20 1 1 5 2 221 325 460 351 631 564 667 785 1003 -85 68 60 90 30 1 1 3 3 116 304 502 501 667 -86 66 55 90 10 1 1 2 13 195 90 322 -87 65 55 90 20 1 1 1 16 307 -88 65 60 90 30 1 1 4 6 150 332 606 563 791 762 916 -89 63 58 90 10 1 1 4 1 237 390 674 648 892 870 979 -90 60 55 90 10 1 1 4 9 182 305 587 694 812 958 1234 -91 60 60 90 10 1 1 3 3 271 417 558 732 994 -92 67 85 90 20 1 1 4 16 196 314 544 652 788 946 1078 -93 65 85 90 40 1 1 5 17 247 195 441 443 705 821 1069 1171 1410 -94 65 82 90 10 1 1 3 5 221 338 567 696 823 -95 62 80 90 30 1 1 2 5 289 488 706 -96 60 80 90 10 1 1 3 0 138 260 527 650 915 -97 60 85 90 30 1 1 3 5 150 152 294 346 531 -98 58 75 90 20 1 1 2 0 172 668 902 -99 55 80 90 10 1 1 1 5 180 -100 55 85 90 20 1 1 3 12 221 367 538 736 860 diff --git a/jsprit-instances/instances/belhaiza/pcm104.txt b/jsprit-instances/instances/belhaiza/pcm104.txt deleted file mode 100644 index 10e5af4b8..000000000 --- a/jsprit-instances/instances/belhaiza/pcm104.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 10 100 1 -0 200 -0 40 50 0 0 0 0 0 1236 -1 45 68 90 10 1 1 2 3 117 696 998 -2 45 70 90 30 1 1 4 15 252 507 1003 635 755 1145 1313 -3 42 66 90 10 1 1 3 7 308 453 712 1083 1195 -4 42 68 90 10 1 1 2 4 294 515 807 -5 42 65 90 10 1 1 1 15 166 -6 40 69 90 20 1 1 3 15 254 447 625 940 1248 -7 40 66 90 20 1 1 2 2 499 828 1069 -8 38 68 90 20 1 1 2 9 321 546 663 -9 38 70 90 10 1 1 4 7 236 334 620 546 1012 1177 1508 -10 35 66 90 10 1 1 1 0 249 -11 35 69 90 10 1 1 4 15 183 309 459 427 748 1033 1249 -12 25 85 90 20 1 1 3 3 212 449 839 1046 1174 -13 22 75 90 30 1 1 2 8 194 630 940 -14 22 85 90 10 1 1 3 17 433 727 1032 1166 1539 -15 20 80 90 40 1 1 4 15 259 357 459 517 851 1072 1391 -16 20 85 90 40 1 1 2 14 400 798 1292 -17 18 75 90 20 1 1 3 11 224 528 858 1069 1467 -18 15 75 90 20 1 1 3 15 152 257 416 499 697 -19 15 80 90 10 1 1 2 5 248 304 702 -20 30 50 90 10 1 1 2 10 404 519 676 -21 30 52 90 20 1 1 3 9 455 718 905 753 1127 -22 28 52 90 20 1 1 2 3 372 723 973 -23 28 55 90 10 1 1 2 13 356 510 771 -24 25 50 90 10 1 1 3 17 187 635 773 1106 1433 -25 25 52 90 40 1 1 2 16 167 70 324 -26 25 55 90 10 1 1 2 10 291 470 854 -27 23 52 90 10 1 1 4 0 106 112 466 544 737 1100 1576 -28 23 55 90 20 1 1 3 8 332 517 623 716 904 -29 20 50 90 10 1 1 4 18 298 228 536 451 782 1114 1278 -30 20 55 90 10 1 1 4 6 339 300 654 691 972 1203 1335 -31 10 35 90 20 1 1 3 5 142 363 773 1001 1359 -32 10 40 90 30 1 1 3 1 403 573 997 876 1012 -33 8 40 90 40 1 1 2 19 416 680 918 -34 8 45 90 20 1 1 2 12 471 830 1222 -35 5 35 90 10 1 1 3 1 226 381 496 425 581 -36 5 45 90 10 1 1 3 0 363 800 990 1133 1401 -37 2 40 90 20 1 1 1 15 454 -38 0 40 90 30 1 1 2 18 344 666 1082 -39 0 45 90 20 1 1 3 9 415 599 883 1226 1393 -40 35 30 90 10 1 1 4 5 144 136 450 586 1019 1201 1435 -41 35 32 90 10 1 1 3 9 286 525 699 1178 1430 -42 33 32 90 20 1 1 1 19 323 -43 33 35 90 10 1 1 2 3 486 949 1333 -44 32 30 90 10 1 1 2 9 204 356 468 -45 30 30 90 10 1 1 2 12 506 920 1192 -46 30 32 90 30 1 1 2 9 161 394 746 -47 30 35 90 10 1 1 3 10 347 548 895 1003 1249 -48 28 30 90 10 1 1 3 5 109 238 428 590 736 -49 28 35 90 10 1 1 2 14 280 929 1139 -50 26 32 90 10 1 1 2 14 395 817 1079 -51 25 30 90 10 1 1 3 17 269 605 873 1031 1321 -52 25 35 90 10 1 1 4 15 371 588 762 740 1142 1078 1211 -53 44 5 90 20 1 1 3 15 360 184 644 500 830 -54 42 10 90 40 1 1 3 7 261 451 567 745 1185 -55 42 15 90 10 1 1 2 18 201 461 747 -56 40 5 90 30 1 1 3 4 168 228 412 379 709 -57 40 15 90 40 1 1 3 15 127 368 650 590 802 -58 38 5 90 30 1 1 3 0 353 730 1111 1228 1483 -59 38 15 90 10 1 1 3 6 132 480 770 932 1344 -60 35 5 90 20 1 1 2 0 370 11 114 -61 50 30 90 10 1 1 2 8 266 159 617 -62 50 35 90 20 1 1 3 12 366 668 837 1083 1387 -63 50 40 90 50 1 1 3 2 395 647 1038 1224 1396 -64 48 30 90 10 1 1 3 6 147 294 497 870 1256 -65 48 40 90 10 1 1 2 11 402 750 865 -66 47 35 90 10 1 1 3 8 179 672 975 1100 1330 -67 47 40 90 10 1 1 4 1 145 361 702 674 1036 1120 1344 -68 45 30 90 10 1 1 2 4 426 576 740 -69 45 35 90 10 1 1 2 3 410 639 958 -70 95 30 90 30 1 1 2 4 481 704 1035 -71 95 35 90 20 1 1 2 8 371 476 972 -72 53 30 90 10 1 1 3 10 467 305 657 902 1185 -73 92 30 90 10 1 1 2 3 155 281 749 -74 53 35 90 50 1 1 4 2 131 331 821 587 714 1187 1329 -75 45 65 90 20 1 1 4 4 181 300 711 740 1140 979 1215 -76 90 35 90 10 1 1 2 6 343 806 1144 -77 88 30 90 10 1 1 2 7 503 363 855 -78 88 35 90 20 1 1 2 18 271 408 744 -79 87 30 90 10 1 1 3 3 483 460 940 901 1131 -80 85 25 90 10 1 1 2 12 455 736 1041 -81 85 35 90 30 1 1 1 17 243 -82 75 55 90 20 1 1 1 11 501 -83 72 55 90 10 1 1 2 0 171 249 355 -84 70 58 90 20 1 1 2 3 339 261 721 -85 68 60 90 30 1 1 2 3 129 581 878 -86 66 55 90 10 1 1 3 8 181 113 299 547 912 -87 65 55 90 20 1 1 2 13 440 674 863 -88 65 60 90 30 1 1 4 13 336 434 920 804 941 1060 1375 -89 63 58 90 10 1 1 3 7 423 706 834 887 1172 -90 60 55 90 10 1 1 3 8 292 468 905 1189 1372 -91 60 60 90 10 1 1 3 13 443 616 788 796 930 -92 67 85 90 20 1 1 2 16 350 230 590 -93 65 85 90 40 1 1 3 19 443 609 1005 1116 1495 -94 65 82 90 10 1 1 3 12 217 372 543 699 915 -95 62 80 90 30 1 1 3 11 219 396 767 1202 1321 -96 60 80 90 10 1 1 2 4 253 582 796 -97 60 85 90 30 1 1 2 4 491 735 873 -98 58 75 90 20 1 1 2 4 373 660 910 -99 55 80 90 10 1 1 2 10 347 589 938 -100 55 85 90 20 1 1 2 19 167 635 759 diff --git a/jsprit-instances/instances/belhaiza/pcm201.txt b/jsprit-instances/instances/belhaiza/pcm201.txt deleted file mode 100644 index 775eb25dd..000000000 --- a/jsprit-instances/instances/belhaiza/pcm201.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 3 100 1 -0 700 -0 40 50 0 0 0 0 0 3390 -1 52 75 90 10 1 1 2 3 1040 2146 3654 -2 45 70 90 30 1 1 4 15 1358 1828 2879 2003 3995 3351 4522 -3 62 69 90 10 1 1 2 7 1510 1921 3318 -4 60 66 90 10 1 1 2 4 1682 1213 2689 -5 42 65 90 10 1 1 2 3 1485 2623 3751 -6 16 42 90 20 1 1 2 6 1915 2334 4126 -7 58 70 90 20 1 1 2 12 1067 1566 3172 -8 34 60 90 20 1 1 1 11 1365 -9 28 70 90 10 1 1 2 6 1890 2337 3867 -10 35 66 90 10 1 1 1 10 1322 -11 35 69 90 10 1 1 1 18 1417 -12 25 85 90 20 1 1 2 3 1582 1986 3452 -13 22 75 90 30 1 1 2 19 1067 1544 2716 -14 22 85 90 10 1 1 2 5 1367 1815 3278 -15 20 80 90 40 1 1 1 17 1146 -16 20 85 90 40 1 1 1 14 1181 -17 18 75 90 20 1 1 3 5 1075 551 1755 1524 3203 -18 15 75 90 20 1 1 1 10 1443 -19 15 80 90 10 1 1 2 17 1807 2255 3769 -20 30 50 90 10 1 1 3 13 1073 1548 2910 2271 3857 -21 30 56 90 20 1 1 2 6 1555 2023 3032 -22 28 52 90 20 1 1 2 19 1753 2163 3909 -23 14 66 90 10 1 1 1 11 1563 -24 25 50 90 10 1 1 2 5 1750 2159 3553 -25 22 66 90 40 1 1 4 0 1148 379 2127 1568 2817 3242 4600 -26 8 62 90 10 1 1 2 10 1745 2148 3292 -27 23 52 90 10 1 1 2 9 1875 2315 3532 -28 4 55 90 20 1 1 4 13 1179 712 2380 1616 2813 3273 4676 -29 20 50 90 10 1 1 2 12 1148 1634 2810 -30 20 55 90 10 1 1 2 11 1881 1899 3483 -31 10 35 90 20 1 1 2 16 1145 1519 2907 -32 10 40 90 30 1 1 2 10 1463 1543 3257 -33 8 40 90 40 1 1 3 0 1016 1500 2734 3199 5139 -34 8 45 90 20 1 1 3 11 1366 792 2502 1788 3211 -35 5 35 90 10 1 1 2 9 1964 1160 3076 -36 5 45 90 10 1 1 2 3 1136 1596 3176 -37 2 40 90 20 1 1 2 12 1533 1965 3549 -38 0 40 90 30 1 1 2 12 1340 1172 2688 -39 0 45 90 20 1 1 2 15 1291 1184 2486 -40 36 18 90 10 1 1 2 5 1326 1732 3488 -41 35 32 90 10 1 1 1 16 1948 -42 33 32 90 20 1 1 2 19 1762 2203 3548 -43 33 35 90 10 1 1 1 17 1068 -44 32 20 90 10 1 1 2 14 1636 2075 3722 -45 30 30 90 10 1 1 1 6 1456 -46 34 25 90 30 1 1 1 2 1041 -47 30 35 90 10 1 1 1 13 1677 -48 36 40 90 10 1 1 2 0 720 16 1242 -49 48 20 90 10 1 1 2 16 1199 1014 2784 -50 26 32 90 10 1 1 2 18 1583 2038 3830 -51 25 30 90 10 1 1 1 17 1586 -52 25 35 90 10 1 1 2 9 1463 1879 3090 -53 44 5 90 20 1 1 2 1 1761 2244 3495 -54 42 10 90 40 1 1 3 4 1339 984 2428 1801 3082 -55 42 15 90 10 1 1 2 6 1191 1685 3066 -56 40 5 90 30 1 1 1 19 1529 -57 38 15 90 40 1 1 2 3 1961 2451 4161 -58 38 5 90 30 1 1 3 7 1370 909 1939 1819 3057 -59 38 10 90 10 1 1 1 19 1342 -60 35 5 90 20 1 1 2 15 1445 1858 2946 -61 50 30 90 10 1 1 2 7 1639 2092 3685 -62 50 35 90 20 1 1 2 7 1260 1661 3104 -63 50 40 90 50 1 1 2 1 1227 2282 3400 -64 48 30 90 10 1 1 2 14 1430 1735 3011 -65 44 25 90 10 1 1 3 14 1717 1113 2877 2197 3602 -66 47 35 90 10 1 1 3 7 1854 1706 2850 2296 4151 -67 47 40 90 10 1 1 2 18 1590 2114 3754 -68 42 30 90 10 1 1 3 5 1191 1645 2729 3149 4837 -69 45 35 90 10 1 1 2 12 1364 1821 3615 -70 95 30 90 30 1 1 2 7 1392 1888 3739 -71 95 35 90 20 1 1 2 0 1950 2370 3568 -72 53 30 90 10 1 1 2 8 1474 1894 3054 -73 92 30 90 10 1 1 1 0 1278 -74 53 35 90 50 1 1 2 7 1463 1951 3234 -75 45 65 90 20 1 1 2 7 1701 2114 3157 -76 90 35 90 10 1 1 1 9 1344 -77 72 45 90 10 1 1 2 3 1784 2184 3236 -78 78 40 90 20 1 1 2 1 1927 2370 3766 -79 87 30 90 10 1 1 2 12 1818 2235 3867 -80 85 25 90 10 1 1 2 3 1056 1529 3469 -81 85 35 90 30 1 1 1 7 1735 -82 75 55 90 20 1 1 1 3 1219 -83 72 55 90 10 1 1 2 2 1880 2305 3639 -84 70 58 90 20 1 1 1 13 1728 -85 86 46 90 30 1 1 1 7 1234 -86 66 55 90 10 1 1 3 0 1560 816 2324 2013 3633 -87 64 46 90 20 1 1 2 1 1326 1737 3588 -88 65 60 90 30 1 1 2 15 1326 561 2389 -89 56 64 90 10 1 1 3 5 1663 1277 2437 2083 3889 -90 60 55 90 10 1 1 2 15 1376 1068 2264 -91 60 60 90 10 1 1 2 15 1339 1760 3702 -92 67 85 90 20 1 1 2 1 1310 1754 3100 -93 42 58 90 40 1 1 2 13 1388 2570 3998 -94 65 82 90 10 1 1 2 7 1021 1475 3368 -95 62 80 90 30 1 1 2 2 1054 1546 2705 -96 62 40 90 10 1 1 3 2 1074 1563 2631 3124 4229 -97 60 85 90 30 1 1 2 3 1945 2422 3625 -98 58 75 90 20 1 1 2 18 1055 1509 3260 -99 55 80 90 10 1 1 2 11 1326 1779 3687 -100 55 85 90 20 1 1 2 19 1114 1612 2997 diff --git a/jsprit-instances/instances/belhaiza/pcm202.txt b/jsprit-instances/instances/belhaiza/pcm202.txt deleted file mode 100644 index b54bb3ed9..000000000 --- a/jsprit-instances/instances/belhaiza/pcm202.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 3 100 1 -0 700 -0 40 50 0 0 0 0 0 3390 -1 52 75 90 10 1 1 2 3 1021 2273 3527 -2 45 70 90 30 1 1 4 15 1186 1656 2681 2251 3747 3153 4238 -3 62 69 90 10 1 1 3 7 1258 1669 2867 3334 4349 -4 60 66 90 10 1 1 2 4 1242 1331 2571 -5 42 65 90 10 1 1 2 15 1079 2460 3914 -6 16 42 90 20 1 1 2 3 1399 1851 2967 -7 58 70 90 20 1 1 3 12 1039 1538 2841 3276 4344 -8 34 60 90 20 1 1 3 17 1202 1655 2815 3219 4455 -9 28 70 90 10 1 1 2 6 1275 1766 2965 -10 35 66 90 10 1 1 3 3 1292 1696 2929 3333 4519 -11 35 69 90 10 1 1 3 15 1101 1537 2813 3259 4404 -12 25 85 90 20 1 1 1 5 1443 -13 22 75 90 30 1 1 1 6 1369 -14 22 85 90 10 1 1 1 13 1147 -15 20 80 90 40 1 1 2 4 1106 1558 2774 -16 20 85 90 40 1 1 2 17 1412 1860 3117 -17 18 75 90 20 1 1 3 15 1196 1635 2928 3358 4632 -18 15 75 90 20 1 1 1 14 1354 -19 15 80 90 10 1 1 2 14 1507 1916 2966 -20 30 50 90 10 1 1 2 10 1297 1724 3096 -21 30 56 90 20 1 1 3 0 1074 1494 2618 3043 4222 -22 28 52 90 20 1 1 4 2 1272 1716 2734 2417 3525 3180 4613 -23 14 66 90 10 1 1 3 3 1346 757 1945 1765 3101 -24 25 50 90 10 1 1 2 13 1317 1730 2931 -25 22 66 90 40 1 1 4 17 1105 711 1795 1592 2640 3098 4382 -26 8 62 90 10 1 1 2 7 1416 900 1996 -27 23 52 90 10 1 1 2 14 1271 1672 3039 -28 4 55 90 20 1 1 2 16 1133 811 2281 -29 20 50 90 10 1 1 2 7 1325 1767 3048 -30 20 55 90 10 1 1 2 9 1486 1962 3420 -31 10 35 90 20 1 1 3 3 1069 1529 2819 3271 4670 -32 10 40 90 30 1 1 2 6 1298 1761 2987 -33 8 40 90 40 1 1 3 1 1259 1736 2874 3338 4489 -34 8 45 90 20 1 1 2 15 1149 1558 2588 -35 5 35 90 10 1 1 2 16 1423 1920 3291 -36 5 45 90 10 1 1 2 17 1042 1504 2953 -37 2 40 90 20 1 1 2 7 1330 1775 3001 -38 0 40 90 30 1 1 2 0 1033 1447 2516 -39 0 45 90 20 1 1 3 0 1328 1812 2925 3335 4545 -40 36 18 90 10 1 1 1 15 1439 -41 35 32 90 10 1 1 2 18 1300 1755 3151 -42 33 32 90 20 1 1 2 9 1391 1812 3042 -43 33 35 90 10 1 1 3 5 1054 1539 2955 3375 4542 -44 32 20 90 10 1 1 2 8 1320 1738 2974 -45 30 30 90 10 1 1 2 10 1030 1526 3022 -46 34 25 90 30 1 1 2 12 1089 1525 2706 -47 30 35 90 10 1 1 1 0 1249 -48 36 40 90 10 1 1 2 0 662 19 1180 -49 48 20 90 10 1 1 2 1 1394 1840 2905 -50 26 32 90 10 1 1 3 11 1202 1663 2930 3366 4492 -51 25 30 90 10 1 1 2 5 1010 1417 2530 -52 25 35 90 10 1 1 1 8 1074 -53 44 5 90 20 1 1 3 10 1148 919 2301 1621 2972 -54 42 10 90 40 1 1 3 7 1430 1170 2242 1872 3299 -55 42 15 90 10 1 1 2 18 1304 1141 2461 -56 40 5 90 30 1 1 4 5 1098 863 2169 1552 2594 3014 4358 -57 38 15 90 40 1 1 2 2 1289 1782 3232 -58 38 5 90 30 1 1 3 11 1198 813 2035 1602 3077 -59 38 10 90 10 1 1 2 11 1112 667 1805 -60 35 5 90 20 1 1 2 0 1139 637 2025 -61 50 30 90 10 1 1 2 5 1181 1644 3087 -62 50 35 90 20 1 1 2 13 1364 2149 3343 -63 50 40 90 50 1 1 2 7 1075 2184 3498 -64 48 30 90 10 1 1 2 9 1176 1718 3028 -65 44 25 90 10 1 1 3 1 1079 1536 2540 2948 4411 -66 47 35 90 10 1 1 2 12 1415 1832 3148 -67 47 40 90 10 1 1 2 14 1484 2397 3471 -68 42 30 90 10 1 1 3 3 1193 1609 2717 3204 4487 -69 45 35 90 10 1 1 2 5 1172 1657 2715 -70 95 30 90 30 1 1 3 2 1343 1781 2894 3350 4714 -71 95 35 90 20 1 1 1 10 1320 -72 53 30 90 10 1 1 2 10 1230 1812 3304 -73 92 30 90 10 1 1 2 17 1048 1455 2510 -74 53 35 90 50 1 1 2 6 1152 1634 3032 -75 45 65 90 20 1 1 3 4 1407 1819 2899 2504 3684 -76 90 35 90 10 1 1 3 10 1108 1583 2745 3166 4637 -77 72 45 90 10 1 1 1 8 1181 -78 78 40 90 20 1 1 1 13 1200 -79 87 30 90 10 1 1 2 0 1495 1984 3165 -80 85 25 90 10 1 1 3 16 1245 1650 2965 3380 4445 -81 85 35 90 30 1 1 3 1 1337 1743 2804 3214 4659 -82 75 55 90 20 1 1 4 4 1101 506 1880 1505 2894 3336 4506 -83 72 55 90 10 1 1 2 6 1302 1792 3089 -84 70 58 90 20 1 1 1 7 1502 -85 86 46 90 30 1 1 2 7 1143 1602 3075 -86 66 55 90 10 1 1 3 19 1417 908 2232 1902 3360 -87 64 46 90 20 1 1 3 15 1242 1669 2903 3311 4370 -88 65 60 90 30 1 1 3 4 1429 943 2007 1888 3375 -89 56 64 90 10 1 1 2 0 1023 1346 2368 -90 60 55 90 10 1 1 3 18 1109 1515 2647 3096 4173 -91 60 60 90 10 1 1 3 3 1168 1634 2841 3262 4594 -92 67 85 90 20 1 1 2 6 1117 1599 3034 -93 42 58 90 40 1 1 3 13 1292 1784 2831 3235 4504 -94 65 82 90 10 1 1 2 15 1379 1825 3007 -95 62 80 90 30 1 1 2 8 1238 1657 3078 -96 62 40 90 10 1 1 2 13 1426 1844 2935 -97 60 85 90 30 1 1 2 11 1092 1908 3320 -98 58 75 90 20 1 1 2 16 1441 1915 3398 -99 55 80 90 10 1 1 2 11 1376 2159 3449 -100 55 85 90 20 1 1 2 3 1326 1755 2823 diff --git a/jsprit-instances/instances/belhaiza/pcm203.txt b/jsprit-instances/instances/belhaiza/pcm203.txt deleted file mode 100644 index a7e7b5f41..000000000 --- a/jsprit-instances/instances/belhaiza/pcm203.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 3 100 1 -0 700 -0 40 50 0 0 0 0 0 3390 -1 52 75 90 10 1 1 3 3 721 1095 2049 2465 3335 -2 45 70 90 30 1 1 3 14 739 1111 1896 2255 3451 -3 62 69 90 10 1 1 3 0 757 1080 2119 2440 3378 -4 60 66 90 10 1 1 3 2 800 1190 2284 2663 3537 -5 42 65 90 10 1 1 3 10 826 1131 2100 2682 3692 -6 16 42 90 20 1 1 4 2 1199 1556 2433 2067 2927 2821 3706 -7 58 70 90 20 1 1 3 0 936 1289 2145 2484 3346 -8 34 60 90 20 1 1 3 11 974 1320 2101 2438 3162 -9 28 70 90 10 1 1 2 11 1096 1425 2306 -10 35 66 90 10 1 1 3 1 943 1330 2094 2410 3246 -11 35 69 90 10 1 1 3 1 872 1239 2073 2393 3340 -12 25 85 90 20 1 1 3 15 1214 1565 2706 3074 4017 -13 22 75 90 30 1 1 2 1 890 1226 2262 -14 22 85 90 10 1 1 3 7 1000 1330 2304 2672 3376 -15 20 80 90 40 1 1 3 2 1075 1432 2180 2535 3377 -16 20 85 90 40 1 1 5 7 846 429 1307 1223 1969 2270 3044 3364 4188 -17 18 75 90 20 1 1 3 9 1083 767 1539 1437 2504 -18 15 75 90 20 1 1 3 17 939 608 1512 1260 2192 -19 15 80 90 10 1 1 4 13 796 581 1349 1133 1931 2291 3192 -20 30 50 90 10 1 1 3 17 805 1192 1940 2298 3282 -21 30 56 90 20 1 1 3 0 474 16 780 1099 1993 -22 28 52 90 20 1 1 3 14 1071 1374 2082 2466 3283 -23 14 66 90 10 1 1 4 12 1041 763 1939 1397 2274 2596 3507 -24 25 50 90 10 1 1 3 11 1169 1485 2251 2611 3601 -25 22 66 90 40 1 1 4 12 972 744 1762 1304 2296 2659 3585 -26 8 62 90 10 1 1 3 5 752 1082 2170 2502 3524 -27 23 52 90 10 1 1 3 1 1079 1472 2217 2232 3338 -28 4 55 90 20 1 1 3 19 1090 1431 2303 2682 3414 -29 20 50 90 10 1 1 4 12 1161 1525 2591 2134 3058 2936 3835 -30 20 55 90 10 1 1 3 0 733 1047 1816 2175 3207 -31 10 35 90 20 1 1 4 4 725 1067 2188 1651 2775 2506 3260 -32 10 40 90 30 1 1 3 11 1210 1589 2748 3054 4031 -33 8 40 90 40 1 1 3 15 1151 1497 2424 2740 3545 -34 8 45 90 20 1 1 3 11 752 1061 2141 2524 3349 -35 5 35 90 10 1 1 4 4 871 1233 2073 1722 2514 2435 3403 -36 5 45 90 10 1 1 3 18 908 1259 1979 2375 3571 -37 2 40 90 20 1 1 3 14 799 1131 2285 2646 3423 -38 0 40 90 30 1 1 2 0 949 1281 2047 -39 0 45 90 20 1 1 3 8 1013 1321 2414 2760 3525 -40 36 18 90 10 1 1 4 12 979 634 1460 1315 2141 2442 3363 -41 35 32 90 10 1 1 3 2 738 225 1295 1079 1845 -42 33 32 90 20 1 1 2 14 969 1309 2376 -43 33 35 90 10 1 1 3 14 1096 1434 2557 2899 4026 -44 32 20 90 10 1 1 3 11 790 409 1497 1154 2322 -45 30 30 90 10 1 1 2 1 848 1216 2186 -46 34 25 90 30 1 1 2 7 1086 1465 2471 -47 30 35 90 10 1 1 3 18 768 1106 2271 2656 3545 -48 36 40 90 10 1 1 3 7 1148 1543 2540 2859 3579 -49 48 20 90 10 1 1 3 3 926 1283 2084 2405 3244 -50 26 32 90 10 1 1 2 15 730 1065 1993 -51 25 30 90 10 1 1 2 12 1155 1525 2227 -52 25 35 90 10 1 1 3 0 894 1230 1998 2304 3318 -53 44 5 90 20 1 1 3 3 1093 1393 2119 2511 3500 -54 42 10 90 40 1 1 2 8 906 1286 2433 -55 42 15 90 10 1 1 3 3 1019 1370 2323 2628 3510 -56 40 5 90 30 1 1 3 14 1184 1071 1961 1556 2330 -57 38 15 90 40 1 1 3 3 811 765 1517 1198 2181 -58 38 5 90 30 1 1 3 2 831 1199 2256 2578 3350 -59 38 10 90 10 1 1 4 11 1075 776 1696 1437 2156 2473 3441 -60 35 5 90 20 1 1 4 6 1198 830 1832 1583 2314 2621 3376 -61 50 30 90 10 1 1 3 15 870 1211 2325 1951 2979 -62 50 35 90 20 1 1 3 4 1107 1419 2199 2306 3186 -63 50 40 90 50 1 1 3 10 808 1183 2045 2366 3537 -64 48 30 90 10 1 1 3 8 881 1218 1951 1859 2887 -65 44 25 90 10 1 1 3 0 1195 1584 2465 2810 3782 -66 47 35 90 10 1 1 4 1 1016 1331 2096 1911 2645 2463 3623 -67 47 40 90 10 1 1 3 18 770 1164 2352 2672 3469 -68 42 30 90 10 1 1 3 0 910 1285 2437 2796 3770 -69 45 35 90 10 1 1 2 18 1015 1349 2318 -70 95 30 90 30 1 1 2 7 1202 1529 2720 -71 95 35 90 20 1 1 3 11 1184 1526 2273 2592 3767 -72 53 30 90 10 1 1 2 19 1117 1502 2660 -73 92 30 90 10 1 1 3 9 966 1312 2410 2721 3559 -74 53 35 90 50 1 1 3 17 875 1272 2073 2154 3152 -75 45 65 90 20 1 1 3 0 789 1093 1802 2597 3591 -76 90 35 90 10 1 1 2 5 1157 1472 2204 -77 72 45 90 10 1 1 3 6 1146 1487 2279 2645 3676 -78 78 40 90 20 1 1 2 16 1194 1516 2555 -79 87 30 90 10 1 1 3 16 1151 1507 2342 2697 3720 -80 85 25 90 10 1 1 3 18 765 1069 2038 2410 3593 -81 85 35 90 30 1 1 3 4 1159 1466 2211 2557 3698 -82 75 55 90 20 1 1 4 3 1124 743 1643 1470 2274 2662 3770 -83 72 55 90 10 1 1 4 3 1029 724 1848 1337 2128 2486 3267 -84 70 58 90 20 1 1 4 14 1197 964 1794 1566 2348 2721 3435 -85 86 46 90 30 1 1 4 2 791 590 1588 1105 1950 2277 3438 -86 66 55 90 10 1 1 3 0 796 1118 2237 2560 3673 -87 64 46 90 20 1 1 2 19 933 1242 2051 -88 65 60 90 30 1 1 3 13 727 1064 1873 2232 3074 -89 56 64 90 10 1 1 3 7 1019 1331 2264 2570 3762 -90 60 55 90 10 1 1 3 5 842 1229 2389 2771 3638 -91 60 60 90 10 1 1 2 12 1065 1403 2254 -92 67 85 90 20 1 1 3 2 948 1327 2447 2086 2948 -93 42 58 90 40 1 1 3 6 716 1084 1816 2821 3747 -94 65 82 90 10 1 1 3 2 1073 1464 2405 1941 2907 -95 62 80 90 30 1 1 4 5 854 1249 2092 1907 2753 2478 3566 -96 62 40 90 10 1 1 3 16 791 1155 1938 2292 3206 -97 60 85 90 30 1 1 4 14 1199 1540 2414 2137 3091 2729 3488 -98 58 75 90 20 1 1 4 2 720 1021 2014 1703 2765 2331 3446 -99 55 80 90 10 1 1 3 10 1202 1533 2418 2229 3379 -100 55 85 90 20 1 1 3 13 805 1139 1998 2354 3064 diff --git a/jsprit-instances/instances/belhaiza/pcm204.txt b/jsprit-instances/instances/belhaiza/pcm204.txt deleted file mode 100644 index a08cae2ef..000000000 --- a/jsprit-instances/instances/belhaiza/pcm204.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 3 100 1 -0 700 -0 40 50 0 0 0 0 0 3390 -1 52 75 90 10 1 1 3 3 621 895 1749 2515 3285 -2 45 70 90 30 1 1 5 14 639 911 1596 1855 2951 2692 3306 3186 4037 -3 62 69 90 10 1 1 4 9 728 976 1684 1896 2594 2884 3878 -4 60 66 90 10 1 1 3 3 999 1251 1967 2172 3041 -5 42 65 90 10 1 1 4 19 922 1157 1825 2062 2949 3181 4223 -6 16 42 90 20 1 1 4 0 836 1089 1845 2084 2846 3098 4155 -7 58 70 90 20 1 1 4 9 690 927 1551 1847 2471 2748 3434 -8 34 60 90 20 1 1 4 5 786 1034 1865 2077 2707 2934 3972 -9 28 70 90 10 1 1 2 6 969 1195 1830 -10 35 66 90 10 1 1 4 4 851 1094 1801 2100 2964 3252 4247 -11 35 69 90 10 1 1 4 13 856 1093 1736 2003 2633 2908 3689 -12 25 85 90 20 1 1 4 10 808 1008 1759 2030 2970 3268 4235 -13 22 75 90 30 1 1 4 1 651 879 1767 2024 2900 3174 4029 -14 22 85 90 10 1 1 3 1 798 1012 1999 2223 2829 -15 20 80 90 40 1 1 2 5 784 1033 2007 -16 20 85 90 40 1 1 4 2 872 1116 1734 1980 3013 3253 3961 -17 18 75 90 20 1 1 4 13 696 933 1631 1891 2692 2932 3866 -18 15 75 90 20 1 1 3 3 911 543 1577 1120 2151 -19 15 80 90 10 1 1 5 3 895 487 1443 1176 1840 2059 2853 3104 3930 -20 30 50 90 10 1 1 5 0 608 892 1609 1874 2944 2624 3504 3179 4097 -21 30 56 90 20 1 1 4 0 455 14 724 1019 1628 1919 2744 -22 28 52 90 20 1 1 3 11 691 970 1873 2541 3401 -23 14 66 90 10 1 1 4 6 898 1161 1987 2219 2859 3110 4028 -24 25 50 90 10 1 1 3 15 753 1017 1768 2498 3258 -25 22 66 90 40 1 1 4 1 979 768 1738 1272 1917 2199 3206 -26 8 62 90 10 1 1 4 8 780 1059 1691 1896 2633 2922 3970 -27 23 52 90 10 1 1 4 9 808 1029 1854 2085 2910 3113 3746 -28 4 55 90 20 1 1 2 13 685 889 1817 -29 20 50 90 10 1 1 3 8 1029 1247 1901 2084 3108 -30 20 55 90 10 1 1 3 11 1110 1389 2448 2654 3531 -31 10 35 90 20 1 1 4 9 836 1052 1757 1965 2869 3145 4043 -32 10 40 90 30 1 1 4 6 1033 1261 1964 2217 3127 3371 4283 -33 8 40 90 40 1 1 3 18 808 1059 1679 1975 3071 -34 8 45 90 20 1 1 4 14 699 931 1985 2246 2923 3159 3940 -35 5 35 90 10 1 1 3 6 672 933 2026 1711 2525 -36 5 45 90 10 1 1 4 2 646 909 1743 2002 2793 3054 3921 -37 2 40 90 20 1 1 3 5 610 817 1530 1743 2402 -38 0 40 90 30 1 1 3 5 976 1246 2101 2341 3308 -39 0 45 90 20 1 1 3 14 996 1234 2257 2499 3526 -40 36 18 90 10 1 1 3 12 1080 1298 2287 2495 3242 -41 35 32 90 10 1 1 2 7 986 1265 2171 -42 33 32 90 20 1 1 5 18 668 275 1061 906 1971 2256 3045 3333 4413 -43 33 35 90 10 1 1 3 0 1075 1295 1994 2240 3303 -44 32 20 90 10 1 1 3 5 893 646 1260 1120 1826 -45 30 30 90 10 1 1 4 7 835 1123 1864 2064 2980 3249 4200 -46 34 25 90 30 1 1 3 12 794 438 1276 1027 1660 -47 30 35 90 10 1 1 4 3 993 1193 1819 2111 3000 3239 3881 -48 36 40 90 10 1 1 4 0 437 16 1063 1326 2244 2494 3180 -49 48 20 90 10 1 1 3 3 629 902 1972 2244 2918 -50 26 32 90 10 1 1 3 4 694 950 1632 1842 2881 -51 25 30 90 10 1 1 3 2 731 999 1956 2178 2850 -52 25 35 90 10 1 1 3 11 975 1237 1856 2073 2941 -53 44 5 90 20 1 1 3 19 873 1079 1841 2052 3077 -54 42 10 90 40 1 1 2 5 907 1186 1941 -55 42 15 90 10 1 1 4 13 820 1100 1839 2055 2755 2991 3654 -56 40 5 90 30 1 1 3 15 777 998 2069 2299 3188 -57 38 15 90 40 1 1 3 7 640 882 1811 2012 3107 -58 38 5 90 30 1 1 3 10 1056 1339 2168 2373 3288 -59 38 10 90 10 1 1 2 18 697 904 1840 -60 35 5 90 20 1 1 2 17 651 944 1596 -61 50 30 90 10 1 1 4 3 1074 1351 2052 2286 2909 3112 3922 -62 50 35 90 20 1 1 3 6 902 1192 2089 2323 3192 -63 50 40 90 50 1 1 3 5 1096 1390 2181 2390 3285 -64 48 30 90 10 1 1 4 3 1078 1357 2120 1859 2887 2411 3486 -65 44 25 90 10 1 1 4 9 866 1112 2110 2321 3059 3290 3934 -66 47 35 90 10 1 1 4 19 720 933 1831 2035 2724 2928 3537 -67 47 40 90 10 1 1 5 1 733 982 1659 1892 2932 2580 3288 3173 3865 -68 42 30 90 10 1 1 4 13 1022 1255 1966 1620 2560 2248 3283 -69 45 35 90 10 1 1 3 10 1070 1366 1990 1704 2668 -70 95 30 90 30 1 1 5 9 791 449 1145 1014 2069 2276 2921 3167 4208 -71 95 35 90 20 1 1 3 16 846 386 1398 1086 2126 -72 53 30 90 10 1 1 4 3 694 910 1552 1834 2727 3012 3937 -73 92 30 90 10 1 1 4 14 1097 1366 2048 2321 2935 3193 4081 -74 53 35 90 50 1 1 3 5 673 965 1636 2286 3020 -75 45 65 90 20 1 1 4 3 942 1225 1849 2131 2841 3078 3795 -76 90 35 90 10 1 1 2 8 752 973 2057 -77 72 45 90 10 1 1 2 0 780 1001 1937 -78 78 40 90 20 1 1 3 11 753 1015 1888 2134 2911 -79 87 30 90 10 1 1 2 1 1093 1320 2381 -80 85 25 90 10 1 1 3 17 1077 1359 2126 2368 3332 -81 85 35 90 30 1 1 2 12 965 1203 1954 -82 75 55 90 20 1 1 2 2 848 1127 2147 -83 72 55 90 10 1 1 3 0 748 954 1728 1973 2913 -84 70 58 90 20 1 1 2 2 973 1264 2105 -85 86 46 90 30 1 1 4 5 954 574 1604 1182 1924 2201 3276 -86 66 55 90 10 1 1 3 3 1069 1285 2293 2535 3457 -87 64 46 90 20 1 1 3 19 1058 1355 2196 2430 3401 -88 65 60 90 30 1 1 2 13 868 1081 1699 -89 56 64 90 10 1 1 5 16 621 917 1606 1432 2282 1878 2899 3197 3960 -90 60 55 90 10 1 1 3 18 773 991 1722 1953 2878 -91 60 60 90 10 1 1 4 15 626 842 1659 1394 2128 1942 3023 -92 67 85 90 20 1 1 4 6 828 1076 1843 2064 2970 3201 4200 -93 42 58 90 40 1 1 4 18 1001 1216 1855 2073 2937 3163 4080 -94 65 82 90 10 1 1 3 2 964 1196 2045 2335 3195 -95 62 80 90 30 1 1 3 8 643 859 1473 1732 2642 -96 62 40 90 10 1 1 3 9 855 1070 1726 2008 2867 -97 60 85 90 30 1 1 4 9 680 894 1627 1877 2681 2976 3724 -98 58 75 90 20 1 1 4 9 766 981 1914 2114 3077 3314 4121 -99 55 80 90 10 1 1 4 9 1066 1288 2059 2351 3060 3321 4129 -100 55 85 90 20 1 1 3 13 971 1211 2243 2493 3590 diff --git a/jsprit-instances/instances/belhaiza/prcm101.txt b/jsprit-instances/instances/belhaiza/prcm101.txt deleted file mode 100644 index 0743e3bc8..000000000 --- a/jsprit-instances/instances/belhaiza/prcm101.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 9 100 1 -0 200 -0 40 50 0 0 0 0 0 240 -1 25 85 10 20 1 1 1 3 204 -2 22 75 10 30 1 1 1 6 235 -3 22 85 10 10 1 1 1 14 220 -4 20 80 10 40 1 1 1 7 221 -5 20 85 10 20 1 1 1 9 218 -6 18 75 10 20 1 1 1 15 220 -7 15 75 10 20 1 1 1 15 228 -8 15 80 10 10 1 1 1 1 222 -9 10 35 10 20 1 1 1 7 212 -10 10 40 10 30 1 1 1 10 222 -11 8 40 10 40 1 1 1 6 227 -12 8 45 10 20 1 1 1 10 246 -13 5 35 10 10 1 1 1 9 215 -14 5 45 10 10 1 1 1 3 241 -15 2 40 10 20 1 1 1 7 229 -16 0 40 10 20 1 1 1 2 204 -17 0 45 10 20 1 1 1 3 213 -18 44 5 10 20 1 1 1 13 223 -19 42 10 10 40 1 1 1 4 212 -20 42 15 10 10 1 1 1 19 240 -21 40 5 10 10 1 1 1 10 245 -22 40 15 10 40 1 1 1 1 216 -23 38 5 10 30 1 1 1 15 229 -24 38 15 10 10 1 1 1 0 212 -25 35 5 10 20 1 1 1 14 253 -26 95 30 10 30 1 1 1 11 222 -27 95 35 10 20 1 1 1 7 218 -28 92 30 10 10 1 1 1 4 204 -29 90 35 10 10 1 1 1 5 219 -30 88 30 10 10 1 1 1 14 233 -31 88 35 10 20 1 1 1 17 234 -32 87 30 10 10 1 1 1 8 216 -33 85 25 10 10 1 1 1 13 219 -34 85 35 10 30 1 1 1 13 237 -35 67 85 10 20 1 1 1 12 217 -36 65 85 10 40 1 1 1 1 235 -37 65 82 10 10 1 1 1 11 233 -38 62 80 10 30 1 1 1 3 218 -39 60 80 10 10 1 1 1 0 229 -40 60 85 10 30 1 1 1 13 250 -41 58 75 10 20 1 1 1 4 220 -42 55 80 10 10 1 1 1 18 236 -43 55 85 10 20 1 1 1 12 235 -44 55 82 10 10 1 1 1 12 232 -45 20 82 10 10 1 1 1 1 226 -46 18 80 10 10 1 1 1 10 235 -47 2 45 10 10 1 1 1 15 226 -48 42 5 10 10 1 1 1 6 231 -49 42 12 10 10 1 1 1 1 231 -50 72 35 10 30 1 1 1 16 253 -51 55 20 10 19 1 1 1 19 248 -52 25 30 10 3 1 1 1 5 236 -53 20 50 10 5 1 1 1 17 252 -54 55 60 10 16 1 1 1 12 241 -55 30 60 10 16 1 1 1 9 217 -56 50 35 10 19 1 1 2 0 202 107 311 -57 30 25 10 23 1 1 1 13 239 -58 15 10 10 20 1 1 1 16 225 -59 10 20 10 19 1 1 1 3 207 -60 15 60 10 17 1 1 1 19 249 -61 45 65 10 9 1 1 1 1 223 -62 65 35 10 3 1 1 1 15 249 -63 65 20 10 6 1 1 1 12 218 -64 45 30 10 17 1 1 1 15 238 -65 35 40 10 16 1 1 1 16 226 -66 41 37 10 16 1 1 1 4 217 -67 64 42 10 9 1 1 1 8 232 -68 40 60 10 21 1 1 1 18 233 -69 31 52 10 27 1 1 2 0 128 19 239 -70 35 69 10 23 1 1 1 14 220 -71 65 55 10 14 1 1 1 7 231 -72 63 65 10 8 1 1 1 9 218 -73 2 60 10 5 1 1 1 6 211 -74 20 20 10 8 1 1 1 8 232 -75 5 5 10 16 1 1 1 12 230 -76 60 12 10 31 1 1 1 10 233 -77 23 3 10 7 1 1 1 7 217 -78 8 56 10 27 1 1 1 1 210 -79 6 68 10 30 1 1 1 8 213 -80 47 47 10 13 1 1 1 10 221 -81 49 58 10 10 1 1 2 0 126 15 247 -82 27 43 10 9 1 1 1 17 232 -83 37 31 10 14 1 1 1 3 208 -84 57 29 10 18 1 1 1 12 249 -85 63 23 10 2 1 1 1 10 213 -86 21 24 10 28 1 1 1 15 223 -87 12 24 10 13 1 1 1 2 225 -88 24 58 10 19 1 1 1 17 232 -89 67 5 10 25 1 1 1 7 242 -90 37 47 10 6 1 1 1 4 211 -91 49 42 10 13 1 1 1 8 226 -92 53 43 10 14 1 1 1 4 215 -93 61 52 10 3 1 1 1 7 225 -94 57 48 10 23 1 1 1 14 214 -95 56 37 10 6 1 1 1 7 212 -96 55 54 10 26 1 1 1 6 208 -97 4 18 10 35 1 1 1 1 207 -98 26 52 10 9 1 1 1 7 210 -99 26 35 10 15 1 1 1 12 237 -100 31 67 10 3 1 1 1 1 215 diff --git a/jsprit-instances/instances/belhaiza/prcm102.txt b/jsprit-instances/instances/belhaiza/prcm102.txt deleted file mode 100644 index d487bf5e0..000000000 --- a/jsprit-instances/instances/belhaiza/prcm102.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 9 100 1 -0 200 -0 40 50 0 0 0 0 0 240 -1 25 85 10 20 1 1 1 3 164 -2 22 75 10 30 1 1 1 6 195 -3 22 85 10 10 1 1 1 14 180 -4 20 80 10 40 1 1 1 7 181 -5 20 85 10 20 1 1 1 9 178 -6 18 75 10 20 1 1 1 15 180 -7 15 75 10 20 1 1 1 15 188 -8 15 80 10 10 1 1 1 1 182 -9 10 35 10 20 1 1 1 7 172 -10 10 40 10 30 1 1 1 10 182 -11 8 40 10 40 1 1 1 6 187 -12 8 45 10 20 1 1 1 10 206 -13 5 35 10 10 1 1 1 9 175 -14 5 45 10 10 1 1 1 3 201 -15 2 40 10 20 1 1 1 7 189 -16 0 40 10 20 1 1 1 2 164 -17 0 45 10 20 1 1 1 3 173 -18 44 5 10 20 1 1 1 13 183 -19 42 10 10 40 1 1 1 4 172 -20 42 15 10 10 1 1 1 19 200 -21 40 5 10 10 1 1 1 10 205 -22 40 15 10 40 1 1 1 1 176 -23 38 5 10 30 1 1 1 15 189 -24 38 15 10 10 1 1 1 0 172 -25 35 5 10 20 1 1 1 14 213 -26 95 30 10 30 1 1 1 11 182 -27 95 35 10 20 1 1 1 7 178 -28 92 30 10 10 1 1 1 4 164 -29 90 35 10 10 1 1 1 5 179 -30 88 30 10 10 1 1 1 14 193 -31 88 35 10 20 1 1 1 17 194 -32 87 30 10 10 1 1 1 8 176 -33 85 25 10 10 1 1 1 13 179 -34 85 35 10 30 1 1 1 13 197 -35 67 85 10 20 1 1 1 12 177 -36 65 85 10 40 1 1 1 1 195 -37 65 82 10 10 1 1 1 11 193 -38 62 80 10 30 1 1 1 3 178 -39 60 80 10 10 1 1 1 0 189 -40 60 85 10 30 1 1 1 13 210 -41 58 75 10 20 1 1 1 4 180 -42 55 80 10 10 1 1 1 18 196 -43 55 85 10 20 1 1 1 12 195 -44 55 82 10 10 1 1 1 12 192 -45 20 82 10 10 1 1 1 1 186 -46 18 80 10 10 1 1 1 10 195 -47 2 45 10 10 1 1 1 15 186 -48 42 5 10 10 1 1 1 6 191 -49 42 12 10 10 1 1 1 1 191 -50 72 35 10 30 1 1 1 16 213 -51 55 20 10 19 1 1 1 19 208 -52 25 30 10 3 1 1 1 5 196 -53 20 50 10 5 1 1 1 17 212 -54 55 60 10 16 1 1 1 12 201 -55 30 60 10 16 1 1 1 9 177 -56 50 35 10 19 1 1 2 0 162 127 291 -57 30 25 10 23 1 1 1 13 199 -58 15 10 10 20 1 1 1 16 185 -59 10 20 10 19 1 1 1 3 167 -60 15 60 10 17 1 1 1 19 209 -61 45 65 10 9 1 1 2 1 183 184 200 -62 65 35 10 3 1 1 2 9 199 120 210 -63 65 20 10 6 1 1 1 11 174 -64 45 30 10 17 1 1 1 17 210 -65 35 40 10 16 1 1 2 5 173 125 309 -66 41 37 10 16 1 1 1 8 192 -67 64 42 10 9 1 1 1 18 193 -68 40 60 10 21 1 1 1 19 199 -69 31 52 10 27 1 1 1 3 201 -70 35 69 10 23 1 1 1 12 178 -71 65 55 10 14 1 1 1 4 178 -72 63 65 10 8 1 1 1 2 163 -73 2 60 10 5 1 1 1 12 211 -74 20 20 10 8 1 1 1 1 192 -75 5 5 10 16 1 1 1 12 190 -76 60 12 10 31 1 1 1 10 193 -77 23 3 10 7 1 1 1 7 177 -78 8 56 10 27 1 1 1 1 170 -79 6 68 10 30 1 1 1 8 173 -80 47 47 10 13 1 1 2 10 181 190 235 -81 49 58 10 10 1 1 2 0 109 14 204 -82 27 43 10 9 1 1 1 9 192 -83 37 31 10 14 1 1 1 11 177 -84 57 29 10 18 1 1 1 15 200 -85 63 23 10 2 1 1 1 13 194 -86 21 24 10 28 1 1 1 7 197 -87 12 24 10 13 1 1 1 11 202 -88 24 58 10 19 1 1 1 7 182 -89 67 5 10 25 1 1 1 11 186 -90 37 47 10 6 1 1 2 18 186 110 288 -91 49 42 10 13 1 1 2 4 170 94 276 -92 53 43 10 14 1 1 1 5 173 -93 61 52 10 3 1 1 1 9 200 -94 57 48 10 23 1 1 1 17 188 -95 56 37 10 6 1 1 1 14 174 -96 55 54 10 26 1 1 1 7 172 -97 4 18 10 35 1 1 1 6 168 -98 26 52 10 9 1 1 1 1 167 -99 26 35 10 15 1 1 2 7 170 180 210 -100 31 67 10 3 1 1 1 3 188 diff --git a/jsprit-instances/instances/belhaiza/prcm103.txt b/jsprit-instances/instances/belhaiza/prcm103.txt deleted file mode 100644 index fb90c06a1..000000000 --- a/jsprit-instances/instances/belhaiza/prcm103.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 9 100 1 -0 200 -0 40 50 0 0 0 0 0 240 -1 25 85 10 20 1 1 1 3 164 -2 22 75 10 30 1 1 1 6 195 -3 22 85 10 10 1 1 1 14 180 -4 20 80 10 40 1 1 1 7 181 -5 20 85 10 20 1 1 1 9 178 -6 18 75 10 20 1 1 1 15 180 -7 15 75 10 20 1 1 1 15 188 -8 15 80 10 10 1 1 1 1 182 -9 10 35 10 20 1 1 1 7 172 -10 10 40 10 30 1 1 1 10 182 -11 8 40 10 40 1 1 1 6 187 -12 8 45 10 20 1 1 1 10 206 -13 5 35 10 10 1 1 1 9 175 -14 5 45 10 10 1 1 1 3 201 -15 2 40 10 20 1 1 1 7 189 -16 0 40 10 20 1 1 1 2 164 -17 0 45 10 20 1 1 1 3 173 -18 44 5 10 20 1 1 1 13 183 -19 42 10 10 40 1 1 1 4 172 -20 42 15 10 10 1 1 1 19 200 -21 40 5 10 10 1 1 1 10 205 -22 40 15 10 40 1 1 1 1 176 -23 38 5 10 30 1 1 1 15 189 -24 38 15 10 10 1 1 1 0 172 -25 35 5 10 20 1 1 1 14 213 -26 95 30 10 30 1 1 1 11 182 -27 95 35 10 20 1 1 1 7 178 -28 92 30 10 10 1 1 1 4 164 -29 90 35 10 10 1 1 1 5 179 -30 88 30 10 10 1 1 1 14 193 -31 88 35 10 20 1 1 1 17 194 -32 87 30 10 10 1 1 1 8 176 -33 85 25 10 10 1 1 1 13 179 -34 85 35 10 30 1 1 1 13 197 -35 67 85 10 20 1 1 1 12 177 -36 65 85 10 40 1 1 1 1 195 -37 65 82 10 10 1 1 1 11 193 -38 62 80 10 30 1 1 1 3 178 -39 60 80 10 10 1 1 1 0 189 -40 60 85 10 30 1 1 1 13 210 -41 58 75 10 20 1 1 1 4 180 -42 55 80 10 10 1 1 1 18 196 -43 55 85 10 20 1 1 1 12 195 -44 55 82 10 10 1 1 1 12 192 -45 20 82 10 10 1 1 1 1 186 -46 18 80 10 10 1 1 1 10 195 -47 2 45 10 10 1 1 1 15 186 -48 42 5 10 10 1 1 1 6 191 -49 42 12 10 10 1 1 1 1 191 -50 72 35 10 30 1 1 1 16 213 -51 55 20 10 19 1 1 1 19 208 -52 25 30 10 3 1 1 1 5 196 -53 20 50 10 5 1 1 1 17 212 -54 55 60 10 16 1 1 1 12 201 -55 30 60 10 16 1 1 1 9 177 -56 50 35 10 19 1 1 2 0 162 127 291 -57 30 25 10 23 1 1 1 13 199 -58 15 10 10 20 1 1 1 16 185 -59 10 20 10 19 1 1 1 3 167 -60 15 60 10 17 1 1 1 19 209 -61 45 65 10 9 1 1 2 1 183 180 240 -62 65 35 10 3 1 1 2 9 199 180 230 -63 65 20 10 6 1 1 1 11 174 -64 45 30 10 17 1 1 1 17 210 -65 35 40 10 16 1 1 2 5 173 125 309 -66 41 37 10 16 1 1 1 8 192 -67 64 42 10 9 1 1 1 18 193 -68 40 60 10 21 1 1 1 19 199 -69 31 52 10 27 1 1 1 3 201 -70 35 69 10 23 1 1 1 12 178 -71 65 55 10 14 1 1 1 4 178 -72 63 65 10 8 1 1 1 2 163 -73 2 60 10 5 1 1 1 12 211 -74 20 20 10 8 1 1 1 1 192 -75 5 5 10 16 1 1 1 12 190 -76 60 12 10 31 1 1 1 10 193 -77 23 3 10 7 1 1 1 7 177 -78 8 56 10 27 1 1 1 1 170 -79 6 68 10 30 1 1 1 8 173 -80 47 47 10 13 1 1 2 10 181 195 230 -81 49 58 10 10 1 1 2 0 109 14 204 -82 27 43 10 9 1 1 1 9 192 -83 37 31 10 14 1 1 1 11 177 -84 57 29 10 18 1 1 1 15 200 -85 63 23 10 2 1 1 1 13 194 -86 21 24 10 28 1 1 1 7 197 -87 12 24 10 13 1 1 1 11 202 -88 24 58 10 19 1 1 1 7 182 -89 67 5 10 25 1 1 1 11 186 -90 37 47 10 6 1 1 2 18 186 110 288 -91 49 42 10 13 1 1 2 4 170 94 276 -92 53 43 10 14 1 1 1 5 173 -93 61 52 10 3 1 1 1 9 200 -94 57 48 10 23 1 1 1 17 188 -95 56 37 10 6 1 1 1 14 174 -96 55 54 10 26 1 1 1 7 172 -97 4 18 10 35 1 1 1 6 168 -98 26 52 10 9 1 1 1 1 167 -99 26 35 10 15 1 1 2 7 170 180 200 -100 31 67 10 3 1 1 1 3 188 diff --git a/jsprit-instances/instances/belhaiza/prcm104.txt b/jsprit-instances/instances/belhaiza/prcm104.txt deleted file mode 100644 index 3a6bf74ea..000000000 --- a/jsprit-instances/instances/belhaiza/prcm104.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 9 100 1 -0 200 -0 40 50 0 0 0 0 0 240 -1 25 85 10 20 1 1 1 3 144 -2 22 75 10 30 1 1 2 6 175 225 395 -3 22 85 10 10 1 1 2 14 160 215 394 -4 20 80 10 40 1 1 2 7 161 211 355 -5 20 85 10 20 1 1 2 9 158 212 360 -6 18 75 10 20 1 1 1 15 160 -7 15 75 10 20 1 1 2 15 168 220 367 -8 15 80 10 10 1 1 2 1 162 218 382 -9 10 35 10 20 1 1 2 7 152 205 367 -10 10 40 10 30 1 1 2 10 162 212 370 -11 8 40 10 40 1 1 1 6 167 -12 8 45 10 20 1 1 1 10 186 -13 5 35 10 10 1 1 2 9 155 208 349 -14 5 45 10 10 1 1 1 3 181 -15 2 40 10 20 1 1 2 7 169 223 374 -16 0 40 10 20 1 1 1 2 144 -17 0 45 10 20 1 1 2 3 153 206 375 -18 44 5 10 20 1 1 1 13 163 -19 42 10 10 40 1 1 1 4 152 -20 42 15 10 10 1 1 1 19 180 -21 40 5 10 10 1 1 1 10 185 -22 40 15 10 40 1 1 1 1 156 -23 38 5 10 30 1 1 2 15 169 222 385 -24 38 15 10 10 1 1 2 0 152 209 376 -25 35 5 10 20 1 1 1 14 193 -26 95 30 10 30 1 1 2 11 162 217 380 -27 95 35 10 20 1 1 2 7 158 215 358 -28 92 30 10 10 1 1 1 4 144 -29 90 35 10 10 1 1 1 5 159 -30 88 30 10 10 1 1 2 14 173 224 385 -31 88 35 10 20 1 1 1 17 174 -32 87 30 10 10 1 1 1 8 156 -33 85 25 10 10 1 1 3 13 159 88 244 212 359 -34 85 35 10 30 1 1 2 8 174 230 375 -35 67 85 10 20 1 1 1 1 175 -36 65 85 10 40 1 1 2 11 173 224 370 -37 65 82 10 10 1 1 2 3 158 213 371 -38 62 80 10 30 1 1 2 0 169 221 362 -39 60 80 10 10 1 1 1 13 190 -40 60 85 10 30 1 1 2 4 160 210 378 -41 58 75 10 20 1 1 2 18 176 227 390 -42 55 80 10 10 1 1 1 12 175 -43 55 85 10 20 1 1 2 12 172 225 388 -44 55 82 10 10 1 1 1 1 166 -45 20 82 10 10 1 1 1 10 175 -46 18 80 10 10 1 1 1 15 166 -47 2 45 10 10 1 1 1 6 171 -48 42 5 10 10 1 1 1 1 171 -49 42 12 10 10 1 1 1 16 193 -50 72 35 10 30 1 1 1 19 188 -51 55 20 10 19 1 1 1 5 176 -52 25 30 10 3 1 1 1 17 192 -53 20 50 10 5 1 1 2 12 181 235 390 -54 55 60 10 16 1 1 1 9 157 -55 30 60 10 16 1 1 1 0 142 -56 50 35 10 19 1 1 2 13 158 126 292 -57 30 25 10 23 1 1 1 16 165 -58 15 10 10 20 1 1 1 3 147 -59 10 20 10 19 1 1 1 19 189 -60 15 60 10 17 1 1 2 1 163 216 387 -61 45 65 10 9 1 1 1 15 189 -62 65 35 10 3 1 1 2 12 158 128 270 -63 65 20 10 6 1 1 2 1 171 229 379 -64 45 30 10 17 1 1 3 4 157 116 276 213 364 -65 35 40 10 16 1 1 3 9 166 140 294 219 366 -66 41 37 10 16 1 1 2 10 151 210 389 -67 64 42 10 9 1 1 2 14 160 213 389 -68 40 60 10 21 1 1 2 7 171 118 272 -69 31 52 10 27 1 1 1 0 159 -70 35 69 10 23 1 1 1 19 171 -71 65 55 10 14 1 1 2 15 172 223 366 -72 63 65 10 8 1 1 1 7 172 -73 2 60 10 5 1 1 2 12 173 226 376 -74 20 20 10 8 1 1 2 5 145 76 224 -75 5 5 10 16 1 1 1 2 146 -76 60 12 10 31 1 1 1 5 174 -77 23 3 10 7 1 1 2 14 182 240 396 -78 8 56 10 27 1 1 1 16 185 -79 6 68 10 30 1 1 1 9 172 -80 47 47 10 13 1 1 2 11 157 112 288 -81 49 58 10 10 1 1 2 3 174 224 375 -82 27 43 10 9 1 1 3 4 171 96 260 224 394 -83 37 31 10 14 1 1 2 2 165 224 400 -84 57 29 10 18 1 1 2 17 172 101 279 -85 63 23 10 2 1 1 3 11 166 99 245 216 394 -86 21 24 10 28 1 1 1 9 186 -87 12 24 10 13 1 1 1 4 150 -88 24 58 10 19 1 1 2 4 155 205 356 -89 67 5 10 25 1 1 2 7 165 223 374 -90 37 47 10 6 1 1 3 14 154 129 269 207 374 -91 49 42 10 13 1 1 2 12 166 114 256 -92 53 43 10 14 1 1 1 12 171 -93 61 52 10 3 1 1 2 1 147 202 342 -94 57 48 10 23 1 1 2 7 150 208 365 -95 56 37 10 6 1 1 2 12 177 232 378 -96 55 54 10 26 1 1 2 1 155 214 360 -97 4 18 10 35 1 1 2 14 159 210 365 -98 26 52 10 9 1 1 1 11 157 -99 26 35 10 15 1 1 3 6 150 113 281 201 351 -100 31 67 10 3 1 1 3 4 149 92 254 206 361 diff --git a/jsprit-instances/instances/belhaiza/prcm201.txt b/jsprit-instances/instances/belhaiza/prcm201.txt deleted file mode 100644 index 225d75061..000000000 --- a/jsprit-instances/instances/belhaiza/prcm201.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 2 100 1 -0 1000 -0 40 50 0 0 0 0 0 960 -1 25 85 10 20 1 1 2 3 306 181 531 -2 22 75 10 30 1 1 4 15 349 201 551 434 739 825 1142 -3 22 85 10 10 1 1 3 2 341 182 504 424 727 -4 20 80 10 40 1 1 3 9 330 386 705 800 1178 -5 20 85 10 20 1 1 2 3 382 458 781 -6 18 75 10 20 1 1 4 12 317 212 568 416 776 843 1156 -7 15 75 10 20 1 1 2 6 394 467 820 -8 15 80 10 10 1 1 1 10 341 -9 10 35 10 20 1 1 2 18 357 435 787 -10 10 40 10 30 1 1 1 0 346 -11 8 40 10 40 1 1 2 19 323 411 728 -12 8 45 10 20 1 1 3 5 341 415 761 817 1123 -13 5 35 10 10 1 1 3 3 330 397 769 832 1139 -14 5 45 10 10 1 1 3 19 371 465 844 918 1269 -15 2 40 10 20 1 1 3 7 315 398 704 791 1127 -16 0 40 10 20 1 1 3 0 330 415 783 882 1255 -17 0 45 10 20 1 1 3 1 311 375 732 810 1165 -18 44 5 10 20 1 1 2 1 340 397 774 -19 42 10 10 40 1 1 2 4 328 376 710 -20 42 15 10 10 1 1 2 9 383 460 833 -21 40 5 10 10 1 1 2 8 311 389 775 -22 40 15 10 40 1 1 3 8 329 387 755 814 1181 -23 38 5 10 30 1 1 2 12 352 422 788 -24 38 15 10 10 1 1 2 3 364 301 687 -25 35 5 10 20 1 1 2 11 398 428 786 -26 95 30 10 30 1 1 1 16 328 -27 95 35 10 20 1 1 2 9 328 413 764 -28 92 30 10 10 1 1 3 0 301 393 716 798 1192 -29 90 35 10 10 1 1 3 4 346 396 767 839 1234 -30 88 30 10 10 1 1 3 2 359 438 754 843 1203 -31 88 35 10 20 1 1 3 1 364 445 777 831 1182 -32 87 30 10 10 1 1 2 6 383 449 813 -33 85 25 10 10 1 1 2 1 376 472 781 -34 85 35 10 30 1 1 3 14 396 463 860 913 1254 -35 67 85 10 20 1 1 3 14 376 445 809 881 1226 -36 65 85 10 40 1 1 2 2 315 420 786 -37 65 82 10 10 1 1 3 4 308 379 763 822 1132 -38 62 80 10 30 1 1 3 18 374 451 830 919 1225 -39 60 80 10 10 1 1 3 4 350 430 746 825 1133 -40 60 85 10 30 1 1 3 5 314 406 789 849 1182 -41 58 75 10 20 1 1 3 8 370 429 776 845 1179 -42 55 80 10 10 1 1 3 10 314 412 811 869 1264 -43 55 85 10 20 1 1 3 7 343 417 740 796 1099 -44 55 82 10 10 1 1 3 15 358 414 722 803 1149 -45 20 82 10 10 1 1 3 5 366 438 774 836 1137 -46 18 80 10 10 1 1 2 2 309 379 692 -47 2 45 10 10 1 1 3 10 337 423 793 883 1223 -48 42 5 10 10 1 1 3 17 355 434 776 833 1180 -49 42 12 10 10 1 1 3 5 323 400 708 768 1136 -50 72 35 10 30 1 1 3 11 390 485 795 864 1257 -51 55 20 10 19 1 1 3 7 395 492 851 910 1214 -52 25 30 10 3 1 1 2 11 331 613 939 -53 20 50 10 5 1 1 2 0 327 399 776 -54 55 60 10 16 1 1 3 17 345 395 758 573 943 -55 30 60 10 16 1 1 3 0 338 406 719 772 1134 -56 50 35 10 19 1 1 4 3 381 229 571 431 736 832 1189 -57 30 25 10 23 1 1 3 12 392 450 813 888 1238 -58 15 10 10 20 1 1 3 14 328 387 725 783 1104 -59 10 20 10 19 1 1 2 5 338 556 866 -60 15 60 10 17 1 1 4 2 370 240 592 439 761 839 1211 -61 45 65 10 9 1 1 2 10 354 321 719 -62 65 35 10 3 1 1 2 17 323 376 687 -63 65 20 10 6 1 1 3 6 335 426 805 887 1228 -64 45 30 10 17 1 1 2 2 318 406 742 -65 35 40 10 16 1 1 2 6 360 640 1014 -66 41 37 10 16 1 1 3 11 332 384 714 786 1120 -67 64 42 10 9 1 1 3 7 308 385 774 865 1210 -68 40 60 10 21 1 1 3 1 368 421 733 788 1177 -69 31 52 10 27 1 1 2 0 377 448 782 -70 35 69 10 23 1 1 2 15 405 306 660 -71 65 55 10 14 1 1 3 11 342 418 808 862 1196 -72 63 65 10 8 1 1 3 19 357 426 753 832 1226 -73 2 60 10 5 1 1 2 19 398 490 881 -74 20 20 10 8 1 1 3 9 360 433 812 867 1194 -75 5 5 10 16 1 1 3 19 339 395 754 806 1123 -76 60 12 10 31 1 1 3 1 327 401 716 782 1170 -77 23 3 10 7 1 1 2 16 411 472 839 -78 8 56 10 27 1 1 2 16 403 481 808 -79 6 68 10 30 1 1 3 13 368 464 773 825 1178 -80 47 47 10 13 1 1 4 0 177 9 345 406 797 850 1159 -81 49 58 10 10 1 1 4 4 323 413 759 621 929 829 1217 -82 27 43 10 9 1 1 2 16 374 627 991 -83 37 31 10 14 1 1 4 19 400 270 634 458 832 883 1252 -84 57 29 10 18 1 1 2 5 318 208 522 -85 63 23 10 2 1 1 3 11 338 397 764 855 1159 -86 21 24 10 28 1 1 2 8 336 396 792 -87 12 24 10 13 1 1 2 0 336 542 908 -88 24 58 10 19 1 1 2 5 342 419 778 -89 67 5 10 25 1 1 3 9 344 443 755 851 1157 -90 37 47 10 6 1 1 3 6 393 479 861 913 1255 -91 49 42 10 13 1 1 1 2 351 -92 53 43 10 14 1 1 3 6 385 436 765 818 1152 -93 61 52 10 3 1 1 2 18 366 550 902 -94 57 48 10 23 1 1 3 5 334 431 759 852 1229 -95 56 37 10 6 1 1 2 3 396 454 835 -96 55 54 10 26 1 1 3 10 352 450 837 935 1283 -97 4 18 10 35 1 1 3 3 314 398 749 805 1108 -98 26 52 10 9 1 1 3 16 317 415 732 818 1202 -99 26 35 10 15 1 1 2 10 408 473 810 -100 31 67 10 3 1 1 3 3 329 394 759 810 1144 diff --git a/jsprit-instances/instances/belhaiza/prcm202.txt b/jsprit-instances/instances/belhaiza/prcm202.txt deleted file mode 100644 index 842ad2a55..000000000 --- a/jsprit-instances/instances/belhaiza/prcm202.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 2 100 1 -0 1000 -0 40 50 0 0 0 0 0 960 -1 25 85 10 20 1 1 1 3 406 -2 22 75 10 30 1 1 2 6 480 537 1012 -3 22 85 10 10 1 1 2 11 510 612 1062 -4 20 80 10 40 1 1 2 4 451 530 978 -5 20 85 10 20 1 1 1 18 496 -6 18 75 10 20 1 1 2 3 482 610 1033 -7 15 75 10 20 1 1 2 12 417 616 1076 -8 15 80 10 10 1 1 2 17 454 583 1015 -9 10 35 10 20 1 1 2 6 459 646 1085 -10 10 40 10 30 1 1 2 3 460 517 963 -11 8 40 10 40 1 1 2 15 432 536 991 -12 8 45 10 20 1 1 2 14 430 490 924 -13 5 35 10 10 1 1 2 9 476 558 978 -14 5 45 10 10 1 1 2 19 471 653 1132 -15 2 40 10 20 1 1 2 7 415 565 971 -16 0 40 10 20 1 1 2 0 430 587 1055 -17 0 45 10 20 1 1 2 1 411 503 960 -18 44 5 10 20 1 1 2 1 440 512 989 -19 42 10 10 40 1 1 2 4 428 326 760 -20 42 15 10 10 1 1 3 9 483 311 725 614 1087 -21 40 5 10 10 1 1 2 17 461 359 805 -22 40 15 10 40 1 1 3 13 453 297 715 603 1019 -23 38 5 10 30 1 1 2 12 452 562 1028 -24 38 15 10 10 1 1 2 3 464 251 737 -25 35 5 10 20 1 1 2 11 498 378 836 -26 95 30 10 30 1 1 1 16 428 -27 95 35 10 20 1 1 2 9 428 585 1036 -28 92 30 10 10 1 1 2 0 401 577 1000 -29 90 35 10 10 1 1 2 4 446 498 969 -30 88 30 10 10 1 1 2 2 459 596 1012 -31 88 35 10 20 1 1 2 1 464 609 1041 -32 87 30 10 10 1 1 2 6 483 581 1045 -33 85 25 10 10 1 1 2 1 476 665 1074 -34 85 35 10 30 1 1 2 14 496 597 1094 -35 67 85 10 20 1 1 2 14 476 585 1049 -36 65 85 10 40 1 1 2 2 415 370 836 -37 65 82 10 10 1 1 2 4 408 521 1005 -38 62 80 10 30 1 1 2 18 474 607 1086 -39 60 80 10 10 1 1 2 4 450 591 1007 -40 60 85 10 30 1 1 3 5 414 362 814 592 1075 -41 58 75 10 20 1 1 2 9 453 555 973 -42 55 80 10 10 1 1 3 19 515 337 759 671 1088 -43 55 85 10 20 1 1 3 2 405 334 812 602 1034 -44 55 82 10 10 1 1 2 9 422 329 791 -45 20 82 10 10 1 1 2 10 469 556 1017 -46 18 80 10 10 1 1 2 0 444 528 953 -47 2 45 10 10 1 1 1 2 413 -48 42 5 10 10 1 1 3 5 479 330 810 634 1085 -49 42 12 10 10 1 1 3 16 488 324 738 666 1104 -50 72 35 10 30 1 1 2 12 505 583 1060 -51 55 20 10 19 1 1 2 4 472 574 1049 -52 25 30 10 3 1 1 2 18 428 535 1028 -53 20 50 10 5 1 1 2 7 495 687 1146 -54 55 60 10 16 1 1 2 11 431 545 971 -55 30 60 10 16 1 1 3 0 427 234 668 545 1022 -56 50 35 10 19 1 1 2 12 500 655 1055 -57 30 25 10 23 1 1 3 0 438 240 702 542 955 -58 15 10 10 20 1 1 2 1 416 552 952 -59 10 20 10 19 1 1 2 12 492 567 1030 -60 15 60 10 17 1 1 2 14 428 505 943 -61 45 65 10 9 1 1 2 5 438 315 725 -62 65 35 10 3 1 1 2 2 470 578 1000 -63 65 20 10 6 1 1 2 8 425 622 1072 -64 45 30 10 17 1 1 3 1 412 177 657 505 965 -65 35 40 10 16 1 1 2 2 418 583 1019 -66 41 37 10 16 1 1 1 6 460 -67 64 42 10 9 1 1 2 4 498 594 1051 -68 40 60 10 21 1 1 3 8 473 285 721 525 1024 -69 31 52 10 27 1 1 2 9 463 607 1090 -70 35 69 10 23 1 1 2 17 423 278 688 -71 65 55 10 14 1 1 2 18 515 595 1014 -72 63 65 10 8 1 1 2 11 465 604 1035 -73 2 60 10 5 1 1 2 19 457 564 991 -74 20 20 10 8 1 1 2 19 498 676 1167 -75 5 5 10 16 1 1 2 9 460 580 1059 -76 60 12 10 31 1 1 2 19 439 508 967 -77 23 3 10 7 1 1 2 1 427 551 966 -78 8 56 10 27 1 1 2 16 511 594 1061 -79 6 68 10 30 1 1 2 16 503 637 1064 -80 47 47 10 13 1 1 3 0 246 13 468 656 1065 -81 49 58 10 10 1 1 2 18 464 527 950 -82 27 43 10 9 1 1 2 9 497 589 1029 -83 37 31 10 14 1 1 3 4 423 248 656 595 1041 -84 57 29 10 18 1 1 1 16 474 -85 63 23 10 2 1 1 2 16 501 662 1158 -86 21 24 10 28 1 1 2 5 463 539 1003 -87 12 24 10 13 1 1 2 5 497 496 954 -88 24 58 10 19 1 1 3 0 419 221 649 502 985 -89 67 5 10 25 1 1 2 4 500 604 1013 -90 37 47 10 6 1 1 2 5 442 574 1033 -91 49 42 10 13 1 1 2 9 444 641 1053 -92 53 43 10 14 1 1 2 6 493 652 1134 -93 61 52 10 3 1 1 2 2 451 484 968 -94 57 48 10 23 1 1 2 5 437 539 941 -95 56 37 10 6 1 1 2 9 420 550 1041 -96 55 54 10 26 1 1 2 17 494 673 1107 -97 4 18 10 35 1 1 2 17 471 593 1090 -98 26 52 10 9 1 1 2 2 443 569 984 -99 26 35 10 15 1 1 2 2 405 456 914 -100 31 67 10 3 1 1 3 19 451 236 700 556 1006 diff --git a/jsprit-instances/instances/belhaiza/prcm203.txt b/jsprit-instances/instances/belhaiza/prcm203.txt deleted file mode 100644 index 488f45b74..000000000 --- a/jsprit-instances/instances/belhaiza/prcm203.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 2 100 1 -0 1000 -0 40 50 0 0 0 0 0 960 -1 25 85 10 20 1 1 1 3 406 -2 22 75 10 30 1 1 2 6 480 585 1060 -3 22 85 10 10 1 1 2 11 510 645 1095 -4 20 80 10 40 1 1 2 4 451 570 1018 -5 20 85 10 20 1 1 1 18 496 -6 18 75 10 20 1 1 2 3 482 634 1057 -7 15 75 10 20 1 1 2 12 417 616 1076 -8 15 80 10 10 1 1 2 17 454 607 1039 -9 10 35 10 20 1 1 2 6 459 650 1089 -10 10 40 10 30 1 1 2 3 460 564 1010 -11 8 40 10 40 1 1 2 15 432 568 1023 -12 8 45 10 20 1 1 2 14 430 537 971 -13 5 35 10 10 1 1 2 9 476 597 1017 -14 5 45 10 10 1 1 2 19 471 659 1138 -15 2 40 10 20 1 1 2 7 415 582 988 -16 0 40 10 20 1 1 2 0 430 601 1069 -17 0 45 10 20 1 1 2 1 411 539 996 -18 44 5 10 20 1 1 2 1 440 554 1031 -19 42 10 10 40 1 1 2 4 428 326 760 -20 42 15 10 10 1 1 3 9 483 311 725 637 1110 -21 40 5 10 10 1 1 2 17 461 359 805 -22 40 15 10 40 1 1 3 13 453 297 715 620 1036 -23 38 5 10 30 1 1 2 12 452 592 1058 -24 38 15 10 10 1 1 2 3 464 251 737 -25 35 5 10 20 1 1 2 11 498 378 836 -26 95 30 10 30 1 1 1 16 428 -27 95 35 10 20 1 1 2 9 428 599 1050 -28 92 30 10 10 1 1 2 0 401 585 1008 -29 90 35 10 10 1 1 2 4 446 547 1018 -30 88 30 10 10 1 1 2 2 459 617 1033 -31 88 35 10 20 1 1 2 1 464 627 1059 -32 87 30 10 10 1 1 2 6 483 615 1079 -33 85 25 10 10 1 1 2 1 476 669 1078 -34 85 35 10 30 1 1 2 14 496 630 1127 -35 67 85 10 20 1 1 2 14 476 615 1079 -36 65 85 10 40 1 1 2 2 415 370 836 -37 65 82 10 10 1 1 2 4 408 550 1034 -38 62 80 10 30 1 1 2 18 474 629 1108 -39 60 80 10 10 1 1 2 4 450 610 1026 -40 60 85 10 30 1 1 3 5 414 362 814 599 1082 -41 58 75 10 20 1 1 2 9 453 587 1005 -42 55 80 10 10 1 1 3 19 515 337 759 686 1103 -43 55 85 10 20 1 1 3 2 405 334 812 603 1035 -44 55 82 10 10 1 1 2 9 422 329 791 -45 20 82 10 10 1 1 2 10 469 594 1055 -46 18 80 10 10 1 1 2 0 444 566 991 -47 2 45 10 10 1 1 1 2 413 -48 42 5 10 10 1 1 3 5 479 330 810 649 1100 -49 42 12 10 10 1 1 3 16 488 324 738 673 1111 -50 72 35 10 30 1 1 2 12 505 623 1100 -51 55 20 10 19 1 1 2 4 472 607 1082 -52 25 30 10 3 1 1 2 18 428 566 1059 -53 20 50 10 5 1 1 2 7 495 690 1149 -54 55 60 10 16 1 1 2 11 431 545 971 -55 30 60 10 16 1 1 3 0 427 234 668 572 1049 -56 50 35 10 19 1 1 2 12 500 670 1070 -57 30 25 10 23 1 1 3 0 438 240 702 574 987 -58 15 10 10 20 1 1 2 1 416 573 973 -59 10 20 10 19 1 1 2 12 492 609 1072 -60 15 60 10 17 1 1 2 14 428 546 984 -61 45 65 10 9 1 1 2 5 438 315 725 -62 65 35 10 3 1 1 2 2 470 608 1030 -63 65 20 10 6 1 1 2 8 425 623 1073 -64 45 30 10 17 1 1 3 1 412 177 657 541 1001 -65 35 40 10 16 1 1 2 2 418 594 1030 -66 41 37 10 16 1 1 1 6 460 -67 64 42 10 9 1 1 2 4 498 628 1085 -68 40 60 10 21 1 1 3 8 473 285 721 574 1073 -69 31 52 10 27 1 1 2 9 463 626 1109 -70 35 69 10 23 1 1 2 17 423 278 688 -71 65 55 10 14 1 1 2 18 515 635 1054 -72 63 65 10 8 1 1 2 11 465 624 1055 -73 2 60 10 5 1 1 2 19 457 595 1022 -74 20 20 10 8 1 1 2 19 498 683 1174 -75 5 5 10 16 1 1 2 9 460 606 1085 -76 60 12 10 31 1 1 2 19 439 552 1011 -77 23 3 10 7 1 1 2 1 427 576 991 -78 8 56 10 27 1 1 2 16 511 633 1100 -79 6 68 10 30 1 1 2 16 503 659 1086 -80 47 47 10 13 1 1 3 0 246 13 468 660 1069 -81 49 58 10 10 1 1 2 18 464 573 996 -82 27 43 10 9 1 1 2 9 497 589 1029 -83 37 31 10 14 1 1 3 4 423 248 656 604 1050 -84 57 29 10 18 1 1 1 16 474 -85 63 23 10 2 1 1 2 16 501 675 1171 -86 21 24 10 28 1 1 2 5 463 580 1044 -87 12 24 10 13 1 1 2 5 497 496 954 -88 24 58 10 19 1 1 3 0 419 221 649 541 1024 -89 67 5 10 25 1 1 2 4 500 636 1045 -90 37 47 10 6 1 1 2 5 442 596 1055 -91 49 42 10 13 1 1 2 9 444 642 1054 -92 53 43 10 14 1 1 2 6 493 665 1147 -93 61 52 10 3 1 1 2 2 451 484 968 -94 57 48 10 23 1 1 2 5 437 571 973 -95 56 37 10 6 1 1 2 9 420 573 1064 -96 55 54 10 26 1 1 2 17 494 680 1114 -97 4 18 10 35 1 1 2 17 471 619 1116 -98 26 52 10 9 1 1 2 2 443 594 1009 -99 26 35 10 15 1 1 2 2 405 506 964 -100 31 67 10 3 1 1 3 19 451 236 700 588 1038 diff --git a/jsprit-instances/instances/belhaiza/prcm204.txt b/jsprit-instances/instances/belhaiza/prcm204.txt deleted file mode 100644 index 0f20f46c3..000000000 --- a/jsprit-instances/instances/belhaiza/prcm204.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 2 100 1 -0 1000 -0 40 50 0 0 0 0 0 960 -1 25 85 10 20 1 1 2 3 221 129 583 -2 22 75 10 30 1 1 2 15 386 556 781 -3 22 85 10 10 1 1 1 19 582 -4 20 80 10 40 1 1 2 7 458 569 967 -5 20 85 10 20 1 1 1 4 543 -6 18 75 10 20 1 1 2 9 317 241 539 -7 15 75 10 20 1 1 1 18 612 -8 15 80 10 10 1 1 1 3 599 -9 10 35 10 20 1 1 1 10 471 -10 10 40 10 30 1 1 1 12 523 -11 8 40 10 40 1 1 2 7 275 412 899 -12 8 45 10 20 1 1 2 10 370 474 910 -13 5 35 10 10 1 1 1 6 475 -14 5 45 10 10 1 1 1 10 667 -15 2 40 10 20 1 1 2 9 290 427 651 -16 0 40 10 20 1 1 1 3 687 -17 0 45 10 20 1 1 2 7 483 629 974 -18 44 5 10 20 1 1 2 2 232 239 877 -19 42 10 10 40 1 1 2 14 297 358 728 -20 42 15 10 10 1 1 2 13 347 295 741 -21 40 5 10 10 1 1 2 8 315 350 814 -22 40 15 10 40 1 1 2 17 612 760 1217 -23 38 5 10 30 1 1 2 7 250 417 647 -24 38 15 10 10 1 1 1 11 587 -25 35 5 10 20 1 1 2 6 480 505 709 -26 95 30 10 30 1 1 2 14 572 746 1439 -27 95 35 10 20 1 1 1 11 259 -28 92 30 10 10 1 1 1 11 487 -29 90 35 10 10 1 1 2 5 577 686 1083 -30 88 30 10 10 1 1 2 0 274 394 718 -31 88 35 10 20 1 1 1 14 341 -32 87 30 10 10 1 1 1 10 577 -33 85 25 10 10 1 1 2 0 554 8 226 -34 85 35 10 30 1 1 1 8 316 -35 67 85 10 20 1 1 2 13 296 433 731 -36 65 85 10 40 1 1 2 13 517 403 803 -37 65 82 10 10 1 1 2 3 511 314 944 -38 62 80 10 30 1 1 1 11 646 -39 60 80 10 10 1 1 2 2 286 424 1033 -40 60 85 10 30 1 1 2 10 436 310 866 -41 58 75 10 20 1 1 2 0 208 392 709 -42 55 80 10 10 1 1 3 12 541 343 753 697 1074 -43 55 85 10 20 1 1 2 0 555 235 911 -44 55 82 10 10 1 1 1 11 669 -45 20 82 10 10 1 1 2 11 291 67 569 -46 18 80 10 10 1 1 2 12 472 604 1096 -47 2 45 10 10 1 1 1 1 516 -48 42 5 10 10 1 1 2 10 528 447 693 -49 42 12 10 10 1 1 1 6 594 -50 72 35 10 30 1 1 2 5 365 471 1049 -51 55 20 10 19 1 1 1 16 682 -52 25 30 10 3 1 1 2 19 590 731 1103 -53 20 50 10 5 1 1 1 5 603 -54 55 60 10 16 1 1 2 17 665 503 1013 -55 30 60 10 16 1 1 2 7 530 675 1101 -56 50 35 10 19 1 1 1 6 431 -57 30 25 10 23 1 1 2 2 221 335 607 -58 15 10 10 20 1 1 3 0 528 445 855 712 1025 -59 10 20 10 19 1 1 2 16 307 419 1003 -60 15 60 10 17 1 1 2 18 500 655 1251 -61 45 65 10 9 1 1 1 6 604 -62 65 35 10 3 1 1 2 15 651 797 1224 -63 65 20 10 6 1 1 2 12 295 194 434 -64 45 30 10 17 1 1 2 1 581 764 1089 -65 35 40 10 16 1 1 2 4 371 533 873 -66 41 37 10 16 1 1 2 8 520 638 1074 -67 64 42 10 9 1 1 1 18 408 -68 40 60 10 21 1 1 2 19 474 161 845 -69 31 52 10 27 1 1 3 0 147 14 299 431 1085 -70 35 69 10 23 1 1 3 7 388 376 590 537 856 -71 65 55 10 14 1 1 2 19 380 459 963 -72 63 65 10 8 1 1 2 1 594 559 823 -73 2 60 10 5 1 1 1 7 523 -74 20 20 10 8 1 1 2 12 479 615 941 -75 5 5 10 16 1 1 2 5 210 515 827 -76 60 12 10 31 1 1 2 2 261 91 499 -77 23 3 10 7 1 1 2 10 348 521 1072 -78 8 56 10 27 1 1 1 15 617 -79 6 68 10 30 1 1 2 7 630 772 1399 -80 47 47 10 13 1 1 2 2 440 597 876 -81 49 58 10 10 1 1 2 15 535 664 957 -82 27 43 10 9 1 1 2 13 483 658 960 -83 37 31 10 14 1 1 3 12 388 327 577 545 1142 -84 57 29 10 18 1 1 2 7 672 857 1246 -85 63 23 10 2 1 1 2 7 648 843 1340 -86 21 24 10 28 1 1 2 4 303 427 1089 -87 12 24 10 13 1 1 2 3 426 575 875 -88 24 58 10 19 1 1 3 4 343 141 729 446 785 -89 67 5 10 25 1 1 1 5 381 -90 37 47 10 6 1 1 2 0 516 685 1236 -91 49 42 10 13 1 1 1 2 223 -92 53 43 10 14 1 1 1 1 515 -93 61 52 10 3 1 1 2 12 450 431 1021 -94 57 48 10 23 1 1 1 0 226 -95 56 37 10 6 1 1 2 1 664 807 1205 -96 55 54 10 26 1 1 2 12 615 732 1248 -97 4 18 10 35 1 1 2 7 462 579 805 -98 26 52 10 9 1 1 2 2 569 707 1271 -99 26 35 10 15 1 1 2 3 311 550 1032 -100 31 67 10 3 1 1 2 6 258 369 698 diff --git a/jsprit-instances/instances/belhaiza/prm101.txt b/jsprit-instances/instances/belhaiza/prm101.txt deleted file mode 100644 index 55937c9ac..000000000 --- a/jsprit-instances/instances/belhaiza/prm101.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 9 100 1 -0 200 - 0 35 35 0 0 0 0 0 230 - 1 41 49 10 10 1 1 2 3 56 187 217 - 2 35 17 10 7 1 1 2 15 99 143 198 - 3 55 45 10 13 1 1 2 3 101 146 208 - 4 55 20 10 19 1 1 2 4 73 113 215 - 5 15 30 10 26 1 1 2 10 91 134 160 - 6 25 30 10 3 1 1 3 10 151 148 186 184 291 - 7 20 50 10 5 1 1 2 11 138 173 259 - 8 10 43 10 9 1 1 2 1 99 146 208 - 9 55 60 10 16 1 1 2 4 103 141 212 - 10 30 60 10 16 1 1 3 15 101 110 140 138 246 - 11 20 65 10 12 1 1 3 11 116 138 158 160 261 - 12 50 35 10 19 1 1 3 0 64 98 172 207 292 - 13 30 25 10 23 1 1 2 3 121 154 271 - 14 15 10 10 20 1 1 3 17 84 68 102 131 190 - 15 30 5 10 8 1 1 2 4 57 123 159 - 16 10 20 10 19 1 1 3 12 127 148 174 168 253 - 17 5 30 10 2 1 1 3 1 114 104 130 156 238 - 18 20 40 10 12 1 1 2 1 126 174 233 - 19 15 60 10 17 1 1 3 6 153 151 179 184 275 - 20 45 65 10 9 1 1 4 0 56 88 151 144 180 194 310 - 21 45 20 10 11 1 1 2 3 63 108 242 - 22 45 10 10 18 1 1 3 11 93 92 118 138 275 - 23 55 5 10 29 1 1 3 12 90 105 127 132 235 - 24 65 35 10 3 1 1 2 18 106 146 200 - 25 65 20 10 6 1 1 2 6 146 188 253 - 26 45 30 10 17 1 1 2 12 108 149 237 - 27 35 40 10 16 1 1 2 5 116 154 240 - 28 41 37 10 16 1 1 2 14 115 153 276 - 29 64 42 10 9 1 1 2 7 141 179 314 - 30 40 60 10 21 1 1 2 15 85 127 212 - 31 31 52 10 27 1 1 2 19 128 161 215 - 32 35 69 10 23 1 1 2 11 81 115 192 - 33 53 52 10 11 1 1 2 15 68 105 200 - 34 65 55 10 14 1 1 2 14 64 101 220 - 35 63 65 10 8 1 1 2 11 61 64 102 - 36 2 60 10 5 1 1 1 8 97 - 37 20 20 10 8 1 1 2 12 142 175 288 - 38 5 5 10 16 1 1 3 6 66 98 173 216 337 - 39 60 12 10 31 1 1 4 17 73 56 92 104 165 200 310 - 40 40 25 10 9 1 1 2 5 120 154 284 - 41 42 7 10 5 1 1 2 18 143 184 255 - 42 24 12 10 5 1 1 1 13 100 - 43 23 3 10 7 1 1 2 0 149 196 282 - 44 11 14 10 18 1 1 2 13 155 187 244 - 45 6 38 10 16 1 1 1 2 141 - 46 2 48 10 1 1 1 2 18 165 199 268 - 47 8 56 10 27 1 1 2 5 153 201 289 - 48 13 52 10 36 1 1 2 15 97 145 290 - 49 6 68 10 30 1 1 2 10 124 169 264 - 50 47 47 10 13 1 1 3 4 28 18 86 117 193 - 51 49 58 10 10 1 1 2 13 144 180 252 - 52 27 43 10 9 1 1 4 1 74 121 178 188 224 216 312 - 53 37 31 10 14 1 1 3 0 16 16 151 195 341 - 54 57 29 10 18 1 1 2 5 147 190 299 - 55 63 23 10 2 1 1 2 16 70 116 188 - 56 53 12 10 6 1 1 2 4 91 129 207 - 57 32 12 10 7 1 1 2 0 86 143 175 - 58 36 26 10 18 1 1 2 5 92 132 241 - 59 21 24 10 28 1 1 3 19 81 129 185 220 297 - 60 17 34 10 3 1 1 2 1 93 135 255 - 61 12 24 10 13 1 1 2 0 95 127 251 - 62 24 58 10 19 1 1 3 5 141 126 156 174 317 - 63 27 69 10 10 1 1 2 9 156 200 347 - 64 15 77 10 9 1 1 3 19 101 107 143 138 238 - 65 62 77 10 20 1 1 2 8 147 183 263 - 66 49 73 10 25 1 1 3 6 135 124 162 182 239 - 67 67 5 10 25 1 1 2 10 75 83 105 - 68 56 39 10 36 1 1 2 5 81 113 235 - 69 37 47 10 6 1 1 2 9 91 123 218 - 70 37 56 10 5 1 1 2 5 105 146 291 - 71 57 68 10 15 1 1 3 12 99 80 118 138 279 - 72 47 16 10 25 1 1 2 17 134 183 273 - 73 44 17 10 9 1 1 2 10 129 161 259 - 74 46 13 10 8 1 1 2 10 99 131 256 - 75 49 11 10 18 1 1 2 17 157 196 311 - 76 49 42 10 13 1 1 2 13 68 100 200 - 77 53 43 10 14 1 1 2 9 103 133 210 - 78 61 52 10 3 1 1 2 10 132 165 314 - 79 57 48 10 23 1 1 3 18 126 117 149 161 257 - 80 56 37 10 6 1 1 2 9 80 126 207 - 81 55 54 10 26 1 1 2 16 136 181 320 - 82 15 47 10 16 1 1 1 15 99 - 83 14 37 10 11 1 1 2 11 156 189 328 - 84 11 31 10 7 1 1 2 12 111 121 145 - 85 16 22 10 41 1 1 2 2 119 149 277 - 86 4 18 10 35 1 1 2 8 149 186 262 - 87 28 18 10 26 1 1 2 11 108 141 253 - 88 26 52 10 9 1 1 3 14 134 142 172 171 274 - 89 26 35 10 15 1 1 3 0 26 15 127 169 250 - 90 31 67 10 3 1 1 2 5 130 174 311 - 91 15 19 10 1 1 1 4 15 65 56 78 114 179 217 349 - 92 22 22 10 2 1 1 2 15 118 165 274 - 93 18 24 10 22 1 1 2 19 128 171 266 - 94 26 27 10 27 1 1 2 12 112 150 227 - 95 25 24 10 20 1 1 2 1 91 121 191 - 96 22 27 10 11 1 1 2 7 109 139 205 - 97 25 21 10 12 1 1 3 16 92 123 186 229 342 - 98 19 21 10 10 1 1 2 5 135 177 268 - 99 20 26 10 9 1 1 4 11 77 118 170 183 203 204 334 - 100 18 18 10 17 1 1 2 7 129 175 306 diff --git a/jsprit-instances/instances/belhaiza/prm102.txt b/jsprit-instances/instances/belhaiza/prm102.txt deleted file mode 100644 index 279a23895..000000000 --- a/jsprit-instances/instances/belhaiza/prm102.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 9 100 1 -0 200 - 0 35 35 0 0 0 0 0 230 - 1 41 49 10 10 1 1 2 3 75 109 219 - 2 35 17 10 7 1 1 2 3 129 168 296 - 3 55 45 10 13 1 1 2 2 103 136 208 - 4 55 20 10 19 1 1 3 6 148 137 165 171 304 - 5 15 30 10 26 1 1 2 10 105 132 227 - 6 25 30 10 3 1 1 2 9 92 119 192 - 7 20 50 10 5 1 1 2 5 145 179 262 - 8 10 43 10 9 1 1 2 4 90 120 224 - 9 55 60 10 16 1 1 2 7 130 161 291 - 10 30 60 10 16 1 1 2 13 83 117 244 - 11 20 65 10 12 1 1 3 10 126 134 162 151 280 - 12 50 35 10 19 1 1 2 2 115 143 216 - 13 30 25 10 23 1 1 3 0 22 12 92 129 213 - 14 15 10 10 20 1 1 2 14 125 145 273 - 15 30 5 10 8 1 1 2 14 101 140 211 - 16 10 20 10 19 1 1 2 11 130 159 255 - 17 5 30 10 2 1 1 3 15 106 103 131 127 201 - 18 20 40 10 12 1 1 2 5 138 175 249 - 19 15 60 10 17 1 1 2 7 128 157 263 - 20 45 65 10 9 1 1 2 3 81 116 253 - 21 45 20 10 11 1 1 2 15 154 183 289 - 22 45 10 10 18 1 1 3 5 91 86 124 121 240 - 23 55 5 10 29 1 1 2 19 129 168 315 - 24 65 35 10 3 1 1 2 3 98 125 243 - 25 65 20 10 6 1 1 2 5 124 152 251 - 26 45 30 10 17 1 1 2 8 136 171 305 - 27 35 40 10 16 1 1 3 5 89 119 195 219 344 - 28 41 37 10 16 1 1 2 11 111 131 277 - 29 64 42 10 9 1 1 2 0 120 153 279 - 30 40 60 10 21 1 1 2 17 121 153 287 - 31 31 52 10 27 1 1 2 14 95 118 218 - 32 35 69 10 23 1 1 2 11 139 171 244 - 33 53 52 10 11 1 1 2 12 88 114 207 - 34 65 55 10 14 1 1 2 5 127 151 285 - 35 63 65 10 8 1 1 2 11 98 119 213 - 36 2 60 10 5 1 1 2 13 156 178 253 - 37 20 20 10 8 1 1 2 3 148 183 269 - 38 5 5 10 16 1 1 3 7 98 111 131 129 274 - 39 60 12 10 31 1 1 2 4 142 173 321 - 40 40 25 10 9 1 1 2 5 147 170 245 - 41 42 7 10 5 1 1 2 13 136 175 262 - 42 24 12 10 5 1 1 2 13 127 165 242 - 43 23 3 10 7 1 1 2 16 118 142 227 - 44 11 14 10 18 1 1 3 11 94 82 120 127 262 - 45 6 38 10 16 1 1 3 13 96 88 110 130 202 - 46 2 48 10 1 1 1 2 4 141 165 301 - 47 8 56 10 27 1 1 2 19 123 144 231 - 48 13 52 10 36 1 1 2 12 125 154 252 - 49 6 68 10 30 1 1 2 1 104 136 262 - 50 47 47 10 13 1 1 2 0 106 128 257 - 51 49 58 10 10 1 1 2 3 147 170 305 - 52 27 43 10 9 1 1 2 6 135 157 259 - 53 37 31 10 14 1 1 3 0 23 5 147 180 264 - 54 57 29 10 18 1 1 2 17 108 134 239 - 55 63 23 10 2 1 1 2 5 125 159 249 - 56 53 12 10 6 1 1 2 1 100 120 225 - 57 32 12 10 7 1 1 2 19 112 138 254 - 58 36 26 10 18 1 1 2 4 92 120 264 - 59 21 24 10 28 1 1 2 19 129 167 283 - 60 17 34 10 3 1 1 2 17 153 184 268 - 61 12 24 10 13 1 1 2 2 132 156 265 - 62 24 58 10 19 1 1 2 11 96 128 219 - 63 27 69 10 10 1 1 2 9 142 172 260 - 64 15 77 10 9 1 1 2 1 126 156 279 - 65 62 77 10 20 1 1 3 5 111 103 137 139 211 - 66 49 73 10 25 1 1 2 3 152 174 288 - 67 67 5 10 25 1 1 2 1 126 162 263 - 68 56 39 10 36 1 1 2 9 123 150 262 - 69 37 47 10 6 1 1 2 16 111 139 214 - 70 37 56 10 5 1 1 2 8 140 166 309 - 71 57 68 10 15 1 1 3 0 82 83 115 111 247 - 72 47 16 10 25 1 1 2 0 132 163 270 - 73 44 17 10 9 1 1 2 8 106 134 277 - 74 46 13 10 8 1 1 2 14 137 167 293 - 75 49 11 10 18 1 1 2 6 103 142 281 - 76 49 42 10 13 1 1 2 2 104 138 228 - 77 53 43 10 14 1 1 2 0 93 116 249 - 78 61 52 10 3 1 1 3 7 103 103 133 140 224 - 79 57 48 10 23 1 1 2 8 99 130 268 - 80 56 37 10 6 1 1 2 18 136 157 259 - 81 55 54 10 26 1 1 2 13 106 141 282 - 82 15 47 10 16 1 1 2 1 123 156 263 - 83 14 37 10 11 1 1 2 5 118 140 277 - 84 11 31 10 7 1 1 2 17 149 187 308 - 85 16 22 10 41 1 1 2 15 121 147 268 - 86 4 18 10 35 1 1 2 6 90 128 204 - 87 28 18 10 26 1 1 2 18 152 190 327 - 88 26 52 10 9 1 1 2 10 120 148 258 - 89 26 35 10 15 1 1 3 0 24 19 106 133 269 - 90 31 67 10 3 1 1 2 13 139 175 305 - 91 15 19 10 1 1 1 2 4 120 158 269 - 92 22 22 10 2 1 1 2 12 140 175 299 - 93 18 24 10 22 1 1 2 18 113 133 238 - 94 26 27 10 27 1 1 2 3 97 126 251 - 95 25 24 10 20 1 1 2 10 148 173 294 - 96 22 27 10 11 1 1 2 8 150 175 292 - 97 25 21 10 12 1 1 2 8 149 187 280 - 98 19 21 10 10 1 1 4 15 87 79 107 107 189 227 326 - 99 20 26 10 9 1 1 2 13 126 152 286 - 100 18 18 10 17 1 1 2 8 156 193 311 diff --git a/jsprit-instances/instances/belhaiza/prm103.txt b/jsprit-instances/instances/belhaiza/prm103.txt deleted file mode 100644 index 79fdfb218..000000000 --- a/jsprit-instances/instances/belhaiza/prm103.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 9 100 1 -0 200 - 0 35 35 0 0 0 0 0 230 - 1 41 49 10 10 1 1 3 3 53 87 147 182 238 - 2 35 17 10 7 1 1 4 3 67 106 170 161 187 200 261 - 3 55 45 10 13 1 1 4 0 52 76 139 130 164 163 222 - 4 55 20 10 19 1 1 4 10 64 85 145 138 164 177 239 - 5 15 30 10 26 1 1 3 17 74 104 160 180 239 - 6 25 30 10 3 1 1 4 7 57 96 146 156 178 181 234 - 7 20 50 10 5 1 1 3 3 58 84 148 173 224 - 8 10 43 10 9 1 1 3 7 70 101 166 196 253 - 9 55 60 10 16 1 1 4 13 63 48 78 97 161 195 264 - 10 30 60 10 16 1 1 3 14 74 101 156 191 242 - 11 20 65 10 12 1 1 4 2 62 90 140 134 162 169 236 - 12 50 35 10 19 1 1 3 3 65 86 153 184 251 - 13 30 25 10 23 1 1 3 7 73 102 155 189 249 - 14 15 10 10 20 1 1 4 16 70 70 100 103 171 198 260 - 15 30 5 10 8 1 1 3 14 68 107 157 195 254 - 16 10 20 10 19 1 1 4 11 73 102 158 148 174 179 241 - 17 5 30 10 2 1 1 3 1 66 104 155 191 257 - 18 20 40 10 12 1 1 3 5 70 107 158 190 257 - 19 15 60 10 17 1 1 4 7 69 98 157 151 179 186 240 - 20 45 65 10 9 1 1 3 16 69 108 173 211 272 - 21 45 20 10 11 1 1 3 1 62 88 153 190 251 - 22 45 10 10 18 1 1 3 4 60 92 147 179 239 - 23 55 5 10 29 1 1 3 6 74 106 159 186 243 - 24 65 35 10 3 1 1 3 12 71 102 159 191 251 - 25 65 20 10 6 1 1 3 5 55 76 130 152 204 - 26 45 30 10 17 1 1 3 15 81 117 181 218 275 - 27 35 40 10 16 1 1 4 0 23 15 77 102 155 185 236 - 28 41 37 10 16 1 1 3 19 80 103 153 191 245 - 29 64 42 10 9 1 1 4 0 55 70 90 84 149 174 231 - 30 40 60 10 21 1 1 3 7 70 92 142 174 231 - 31 31 52 10 27 1 1 4 8 65 101 168 161 183 200 262 - 32 35 69 10 23 1 1 4 7 67 65 87 90 141 175 243 - 33 53 52 10 11 1 1 3 2 57 90 154 178 230 - 34 65 55 10 14 1 1 3 3 63 93 151 177 246 - 35 63 65 10 8 1 1 4 13 71 70 96 107 162 185 239 - 36 2 60 10 5 1 1 4 7 58 73 93 86 149 169 238 - 37 20 20 10 8 1 1 3 18 71 92 155 176 228 - 38 5 5 10 16 1 1 3 18 87 111 164 184 249 - 39 60 12 10 31 1 1 4 5 74 55 93 112 169 190 251 - 40 40 25 10 9 1 1 3 10 72 107 166 191 250 - 41 42 7 10 5 1 1 3 18 71 92 147 176 229 - 42 24 12 10 5 1 1 3 4 67 104 160 185 251 - 43 23 3 10 7 1 1 3 4 72 93 144 173 240 - 44 11 14 10 18 1 1 3 16 74 97 160 181 234 - 45 6 38 10 16 1 1 3 3 65 90 142 180 232 - 46 2 48 10 1 1 1 4 4 70 66 90 94 160 184 241 - 47 8 56 10 27 1 1 3 4 73 100 151 184 234 - 48 13 52 10 36 1 1 3 2 61 82 151 176 244 - 49 6 68 10 30 1 1 4 8 72 88 116 106 157 183 245 - 50 47 47 10 13 1 1 3 2 66 104 163 196 256 - 51 49 58 10 10 1 1 4 5 60 95 164 162 198 190 257 - 52 27 43 10 9 1 1 3 8 70 107 167 196 265 - 53 37 31 10 14 1 1 3 2 60 90 143 163 226 - 54 57 29 10 18 1 1 3 16 85 111 175 205 274 - 55 63 23 10 2 1 1 3 3 58 84 147 167 223 - 56 53 12 10 6 1 1 3 17 68 103 166 187 255 - 57 32 12 10 7 1 1 4 14 69 98 150 149 169 180 236 - 58 36 26 10 18 1 1 3 11 73 102 158 180 239 - 59 21 24 10 28 1 1 3 2 64 89 148 176 228 - 60 17 34 10 3 1 1 3 9 77 101 157 195 249 - 61 12 24 10 13 1 1 3 11 80 119 187 211 267 - 62 24 58 10 19 1 1 3 13 65 86 145 181 232 - 63 27 69 10 10 1 1 3 9 61 86 140 179 239 - 64 15 77 10 9 1 1 3 13 80 102 161 190 255 - 65 62 77 10 20 1 1 3 13 67 87 147 174 234 - 66 49 73 10 25 1 1 3 18 86 116 180 203 272 - 67 67 5 10 25 1 1 4 5 67 83 105 98 157 178 241 - 68 56 39 10 36 1 1 3 11 68 98 157 177 234 - 69 37 47 10 6 1 1 3 4 73 109 170 198 263 - 70 37 56 10 5 1 1 3 8 58 78 130 165 221 - 71 57 68 10 15 1 1 4 3 70 87 111 106 156 192 251 - 72 47 16 10 25 1 1 4 9 59 49 79 84 146 179 239 - 73 44 17 10 9 1 1 3 10 69 103 171 199 256 - 74 46 13 10 8 1 1 4 11 70 64 90 93 155 189 252 - 75 49 11 10 18 1 1 3 1 56 82 145 182 238 - 76 49 42 10 13 1 1 4 5 57 92 156 160 188 181 246 - 77 53 43 10 14 1 1 3 19 78 101 164 199 259 - 78 61 52 10 3 1 1 3 15 65 104 157 185 251 - 79 57 48 10 23 1 1 3 8 75 114 179 217 271 - 80 56 37 10 6 1 1 3 9 78 99 162 199 252 - 81 55 54 10 26 1 1 3 4 69 98 152 180 244 - 82 15 47 10 16 1 1 3 4 55 89 139 178 242 - 83 14 37 10 11 1 1 3 5 70 94 153 182 246 - 84 11 31 10 7 1 1 3 17 83 108 168 190 256 - 85 16 22 10 41 1 1 3 13 75 98 157 189 249 - 86 4 18 10 35 1 1 3 13 64 89 155 187 245 - 87 28 18 10 26 1 1 3 4 70 99 149 181 246 - 88 26 52 10 9 1 1 4 1 62 96 152 141 173 188 245 - 89 26 35 10 15 1 1 4 0 21 11 66 93 143 182 249 - 90 31 67 10 3 1 1 4 10 70 77 105 105 163 193 258 - 91 15 19 10 1 1 1 3 8 73 97 148 172 236 - 92 22 22 10 2 1 1 3 4 65 103 163 199 255 - 93 18 24 10 22 1 1 3 12 76 111 174 209 273 - 94 26 27 10 27 1 1 4 18 74 94 152 139 175 173 239 - 95 25 24 10 20 1 1 3 13 66 97 156 195 261 - 96 22 27 10 11 1 1 3 1 58 89 155 176 245 - 97 25 21 10 12 1 1 3 8 75 112 165 188 238 - 98 19 21 10 10 1 1 3 5 66 86 136 163 218 - 99 20 26 10 9 1 1 4 18 73 110 179 180 206 210 262 - 100 18 18 10 17 1 1 4 12 75 67 93 95 160 183 248 diff --git a/jsprit-instances/instances/belhaiza/prm104.txt b/jsprit-instances/instances/belhaiza/prm104.txt deleted file mode 100644 index 4336e9438..000000000 --- a/jsprit-instances/instances/belhaiza/prm104.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 9 100 1 -0 200 - 0 35 35 0 0 0 0 0 230 - 1 41 49 10 10 1 1 4 3 33 57 97 122 158 192 212 - 2 35 17 10 7 1 1 5 14 47 68 117 134 174 157 191 186 223 - 3 55 45 10 13 1 1 4 15 51 65 98 118 158 180 211 - 4 55 20 10 19 1 1 5 7 43 63 111 124 165 175 214 224 261 - 5 15 30 10 26 1 1 5 9 44 55 94 121 153 166 201 217 261 - 6 25 30 10 3 1 1 4 13 48 62 101 119 153 152 182 - 7 20 50 10 5 1 1 4 17 62 81 121 132 175 186 223 - 8 10 43 10 9 1 1 4 1 33 48 89 110 151 175 215 - 9 55 60 10 16 1 1 5 14 49 51 75 73 112 124 164 182 212 - 10 30 60 10 16 1 1 4 3 46 59 102 120 157 180 222 - 11 20 65 10 12 1 1 4 17 48 69 110 122 155 172 218 - 12 50 35 10 19 1 1 4 7 49 67 108 132 166 195 225 - 13 30 25 10 23 1 1 5 11 53 72 108 119 161 183 219 230 270 - 14 15 10 10 20 1 1 4 15 50 61 92 118 166 190 236 - 15 30 5 10 8 1 1 4 15 46 57 92 119 166 190 232 - 16 10 20 10 19 1 1 4 6 45 55 86 98 130 153 196 - 17 5 30 10 2 1 1 4 16 50 62 100 100 134 126 159 - 18 20 40 10 12 1 1 5 0 33 18 59 80 125 150 181 202 238 - 19 15 60 10 17 1 1 5 4 40 62 97 119 159 148 182 178 216 - 20 45 65 10 9 1 1 5 3 39 56 98 112 149 159 198 214 246 - 21 45 20 10 11 1 1 5 5 47 65 102 117 147 158 192 204 236 - 22 45 10 10 18 1 1 4 8 52 77 123 149 193 220 257 - 23 55 5 10 29 1 1 4 5 38 58 89 103 146 163 208 - 24 65 35 10 3 1 1 4 11 48 58 107 121 154 173 221 - 25 65 20 10 6 1 1 6 0 42 41 67 65 109 119 156 173 205 216 258 - 26 45 30 10 17 1 1 4 16 63 85 127 147 180 197 237 - 27 35 40 10 16 1 1 5 0 18 7 51 65 98 119 152 164 211 - 28 41 37 10 16 1 1 4 14 46 58 101 118 152 173 217 - 29 64 42 10 9 1 1 4 8 41 70 110 121 157 169 216 - 30 40 60 10 21 1 1 5 5 48 37 75 62 108 120 153 178 215 - 31 31 52 10 27 1 1 4 6 47 63 94 105 143 166 203 - 32 35 69 10 23 1 1 4 0 49 76 113 132 172 194 240 - 33 53 52 10 11 1 1 5 2 33 17 51 60 91 119 151 179 228 - 34 65 55 10 14 1 1 4 6 47 75 116 132 172 201 232 - 35 63 65 10 8 1 1 3 19 57 73 106 135 180 - 36 2 60 10 5 1 1 4 12 59 78 118 137 182 194 229 - 37 20 20 10 8 1 1 5 5 53 66 97 91 119 124 163 176 212 - 38 5 5 10 16 1 1 4 4 47 73 122 136 179 206 242 - 39 60 12 10 31 1 1 4 19 49 74 118 137 174 188 236 - 40 40 25 10 9 1 1 4 9 43 70 116 142 180 193 236 - 41 42 7 10 5 1 1 5 3 34 60 101 102 136 128 171 200 246 - 42 24 12 10 5 1 1 5 0 43 34 56 64 108 123 164 177 219 - 43 23 3 10 7 1 1 5 18 50 52 76 71 106 119 162 188 218 - 44 11 14 10 18 1 1 5 5 39 68 106 117 151 161 198 212 255 - 45 6 38 10 16 1 1 4 11 46 68 108 127 164 193 225 - 46 2 48 10 1 1 1 4 6 53 77 123 134 172 194 238 - 47 8 56 10 27 1 1 4 0 39 51 95 123 162 185 225 - 48 13 52 10 36 1 1 4 3 51 64 110 128 170 197 237 - 49 6 68 10 30 1 1 6 6 50 62 100 89 115 120 153 163 206 227 259 - 50 47 47 10 13 1 1 4 3 38 54 97 107 143 161 206 - 51 49 58 10 10 1 1 5 17 48 73 116 127 175 168 192 195 228 - 52 27 43 10 9 1 1 5 2 46 62 101 129 169 180 217 227 265 - 53 37 31 10 14 1 1 5 0 22 11 53 72 108 120 159 179 212 - 54 57 29 10 18 1 1 5 9 41 53 88 108 146 175 210 226 267 - 55 63 23 10 2 1 1 3 7 45 73 115 131 170 - 56 53 12 10 6 1 1 5 18 52 74 112 119 147 136 185 212 255 - 57 32 12 10 7 1 1 4 19 59 87 128 144 193 217 251 - 58 36 26 10 18 1 1 4 17 63 84 117 134 183 179 209 - 59 21 24 10 28 1 1 4 9 41 56 90 119 159 183 228 - 60 17 34 10 3 1 1 4 13 60 72 111 130 175 195 229 - 61 12 24 10 13 1 1 4 13 47 57 97 114 154 174 219 - 62 24 58 10 19 1 1 5 18 66 86 130 124 158 143 192 204 245 - 63 27 69 10 10 1 1 4 9 44 67 108 125 156 177 223 - 64 15 77 10 9 1 1 4 11 48 68 107 117 154 178 224 - 65 62 77 10 20 1 1 5 4 53 79 120 109 131 138 183 199 247 - 66 49 73 10 25 1 1 3 2 40 56 86 112 157 - 67 67 5 10 25 1 1 4 17 58 68 101 120 166 188 234 - 68 56 39 10 36 1 1 4 13 53 78 110 129 159 182 223 - 69 37 47 10 6 1 1 4 7 51 79 117 132 170 192 229 - 70 37 56 10 5 1 1 4 7 47 62 111 134 165 181 217 - 71 57 68 10 15 1 1 4 13 55 78 125 154 198 210 248 - 72 47 16 10 25 1 1 5 5 50 47 81 74 121 144 181 209 245 - 73 44 17 10 9 1 1 4 16 65 78 116 136 180 201 246 - 74 46 13 10 8 1 1 4 15 53 67 116 136 184 201 237 - 75 49 11 10 18 1 1 4 10 57 72 114 141 179 208 249 - 76 49 42 10 13 1 1 5 15 52 66 100 124 163 164 184 181 219 - 77 53 43 10 14 1 1 4 19 63 84 132 154 197 220 255 - 78 61 52 10 3 1 1 5 3 40 57 87 98 141 164 203 219 261 - 79 57 48 10 23 1 1 4 5 45 57 103 125 156 175 218 - 80 56 37 10 6 1 1 4 17 62 90 132 156 200 226 266 - 81 55 54 10 26 1 1 3 15 54 70 112 135 175 - 82 15 47 10 16 1 1 5 6 39 67 98 119 156 172 203 220 264 - 83 14 37 10 11 1 1 4 18 64 92 138 150 198 213 256 - 84 11 31 10 7 1 1 4 10 50 68 108 133 178 204 244 - 85 16 22 10 41 1 1 5 19 53 39 69 70 116 145 185 211 249 - 86 4 18 10 35 1 1 4 13 57 83 128 130 158 156 190 - 87 28 18 10 26 1 1 4 10 44 60 108 125 171 189 219 - 88 26 52 10 9 1 1 4 14 59 79 124 144 182 204 246 - 89 26 35 10 15 1 1 4 8 56 82 112 132 163 178 212 - 90 31 67 10 3 1 1 4 13 46 67 106 135 181 203 244 - 91 15 19 10 1 1 1 4 1 38 59 105 116 165 178 220 - 92 22 22 10 2 1 1 5 8 55 82 115 103 131 128 158 186 224 - 93 18 24 10 22 1 1 6 0 35 22 60 50 80 106 143 166 197 223 256 - 94 26 27 10 27 1 1 4 11 43 53 97 122 169 186 228 - 95 25 24 10 20 1 1 5 15 64 88 137 126 162 154 202 225 257 - 96 22 27 10 11 1 1 5 15 45 59 94 106 150 160 207 227 259 - 97 25 21 10 12 1 1 4 8 57 70 106 118 164 182 231 - 98 19 21 10 10 1 1 4 15 52 74 112 132 175 196 241 - 99 20 26 10 9 1 1 5 10 44 68 109 138 178 179 207 204 251 - 100 18 18 10 17 1 1 5 12 42 56 90 101 139 159 201 218 257 diff --git a/jsprit-instances/instances/belhaiza/prm201.txt b/jsprit-instances/instances/belhaiza/prm201.txt deleted file mode 100644 index 185eb3090..000000000 --- a/jsprit-instances/instances/belhaiza/prm201.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 2 100 1 -0 1000 -0 35 35 0 0 0 0 0 1000 -1 41 49 10 10 1 1 3 3 69 156 435 674 878 -2 35 17 10 7 1 1 5 14 87 173 300 342 406 379 875 942 1218 -3 55 45 10 13 1 1 4 9 166 240 387 443 581 676 1081 -4 55 20 10 19 1 1 3 3 409 485 639 691 983 -5 15 30 10 26 1 1 4 19 341 408 519 587 895 961 1408 -6 25 30 10 3 1 1 4 0 262 338 528 597 793 869 1330 -7 20 50 10 5 1 1 4 9 132 200 271 369 440 528 655 -8 10 43 10 9 1 1 4 5 218 292 550 606 683 746 1190 -9 55 60 10 16 1 1 3 6 382 430 784 445 526 -10 30 60 10 16 1 1 3 4 146 222 467 556 1055 -11 20 65 10 12 1 1 3 9 290 344 702 755 975 -12 50 35 10 19 1 1 3 6 303 387 441 527 899 -13 30 25 10 23 1 1 4 2 387 465 558 635 813 888 1197 -14 15 10 10 20 1 1 3 15 107 157 273 333 495 -15 30 5 10 8 1 1 3 14 178 264 537 594 887 -16 10 20 10 19 1 1 2 17 267 327 586 -17 5 30 10 2 1 1 3 3 362 421 773 843 1063 -18 20 40 10 12 1 1 4 8 359 439 550 643 772 865 958 -19 15 60 10 17 1 1 5 3 315 193 563 405 513 572 796 871 1125 -20 45 65 10 9 1 1 4 0 57 149 304 386 859 926 1263 -21 45 20 10 11 1 1 3 4 244 294 664 736 1215 -22 45 10 10 18 1 1 2 11 133 222 545 -23 55 5 10 29 1 1 3 11 338 410 607 661 994 -24 65 35 10 3 1 1 4 5 97 67 143 162 561 627 967 -25 65 20 10 6 1 1 2 16 485 572 991 -26 45 30 10 17 1 1 4 8 213 302 381 433 607 701 1154 -27 35 40 10 16 1 1 4 9 238 298 551 616 868 919 999 -28 41 37 10 16 1 1 3 0 82 13 128 180 525 -29 64 42 10 9 1 1 3 2 241 333 465 564 961 -30 40 60 10 21 1 1 3 6 414 294 688 507 813 -31 31 52 10 27 1 1 3 4 261 341 466 545 632 -32 35 69 10 23 1 1 4 5 99 191 615 675 876 957 1133 -33 53 52 10 11 1 1 3 3 265 334 540 592 1068 -34 65 55 10 14 1 1 2 19 516 574 1055 -35 63 65 10 8 1 1 5 7 220 294 451 425 749 507 570 669 864 -36 2 60 10 5 1 1 3 1 405 478 587 656 990 -37 20 20 10 8 1 1 4 12 302 370 533 583 832 893 1057 -38 5 5 10 16 1 1 3 2 105 192 429 412 586 -39 60 12 10 31 1 1 3 14 380 470 702 788 1182 -40 40 25 10 9 1 1 5 11 251 308 572 650 771 706 888 853 1324 -41 42 7 10 5 1 1 2 13 306 393 535 -42 24 12 10 5 1 1 3 15 341 396 705 801 1256 -43 23 3 10 7 1 1 3 17 237 331 813 892 1111 -44 11 14 10 18 1 1 5 3 71 167 310 382 641 701 823 886 1195 -45 6 38 10 16 1 1 2 0 175 247 647 -46 2 48 10 1 1 1 3 17 194 244 579 663 1029 -47 8 56 10 27 1 1 3 2 71 152 366 432 512 -48 13 52 10 36 1 1 3 15 344 396 516 594 648 -49 6 68 10 30 1 1 4 7 95 189 434 515 927 985 1319 -50 47 47 10 13 1 1 3 3 77 163 636 722 839 -51 49 58 10 10 1 1 3 4 135 213 337 392 837 -52 27 43 10 9 1 1 3 2 168 252 624 685 800 -53 37 31 10 14 1 1 3 11 389 470 537 595 886 -54 57 29 10 18 1 1 3 19 297 350 546 601 1034 -55 63 23 10 2 1 1 2 5 326 415 605 -56 53 12 10 6 1 1 6 13 249 107 403 339 514 572 712 780 887 946 1341 -57 32 12 10 7 1 1 3 18 406 484 631 683 872 -58 36 26 10 18 1 1 3 1 250 332 551 650 892 -59 21 24 10 28 1 1 3 17 230 302 597 431 857 -60 17 34 10 3 1 1 5 0 300 2 75 171 292 345 697 750 855 -61 12 24 10 13 1 1 2 19 489 548 1022 -62 24 58 10 19 1 1 2 0 400 471 674 -63 27 69 10 10 1 1 2 15 472 551 848 -64 15 77 10 9 1 1 3 18 335 402 694 793 886 -65 62 77 10 20 1 1 4 5 497 430 670 594 816 870 1186 -66 49 73 10 25 1 1 3 6 145 242 650 742 1204 -67 67 5 10 25 1 1 4 0 460 2 176 241 331 391 823 -68 56 39 10 36 1 1 4 3 112 162 233 312 383 478 610 -69 37 47 10 6 1 1 4 3 82 176 448 507 705 673 909 -70 37 56 10 5 1 1 3 4 353 443 924 985 1340 -71 57 68 10 15 1 1 3 11 182 259 600 654 1011 -72 47 16 10 25 1 1 3 7 413 508 766 820 974 -73 44 17 10 9 1 1 3 16 250 310 446 536 793 -74 46 13 10 8 1 1 4 16 247 306 650 704 836 915 1038 -75 49 11 10 18 1 1 3 19 433 491 874 925 1289 -76 49 42 10 13 1 1 4 2 132 189 370 433 898 981 1300 -77 53 43 10 14 1 1 3 16 88 179 328 653 807 -78 61 52 10 3 1 1 3 5 158 256 498 552 700 -79 57 48 10 23 1 1 4 13 75 143 291 370 548 556 852 -80 56 37 10 6 1 1 4 9 219 318 422 518 595 659 832 -81 55 54 10 26 1 1 2 6 449 535 955 -82 15 47 10 16 1 1 2 2 273 362 790 -83 14 37 10 11 1 1 3 0 183 236 443 515 871 -84 11 31 10 7 1 1 2 2 386 481 748 -85 16 22 10 41 1 1 3 5 369 433 611 699 1177 -86 4 18 10 35 1 1 4 18 200 290 407 489 613 690 932 -87 28 18 10 26 1 1 3 14 500 570 777 834 937 -88 26 52 10 9 1 1 4 0 359 438 546 637 692 790 920 -89 26 35 10 15 1 1 2 6 382 457 949 -90 31 67 10 3 1 1 3 0 203 274 675 773 898 -91 15 19 10 1 1 1 4 17 188 253 502 576 776 836 1161 -92 22 22 10 2 1 1 2 13 458 553 948 -93 18 24 10 22 1 1 3 10 129 210 343 574 740 -94 26 27 10 27 1 1 3 2 378 444 718 813 1097 -95 25 24 10 20 1 1 4 8 90 148 210 289 618 624 820 -96 22 27 10 11 1 1 3 2 257 332 453 533 952 -97 25 21 10 12 1 1 3 5 269 339 454 597 873 -98 19 21 10 10 1 1 3 11 489 563 754 811 1161 -99 20 26 10 9 1 1 4 8 59 139 359 433 894 955 1159 -100 18 18 10 17 1 1 2 8 475 573 900 diff --git a/jsprit-instances/instances/belhaiza/prm202.txt b/jsprit-instances/instances/belhaiza/prm202.txt deleted file mode 100644 index c1d2b73ab..000000000 --- a/jsprit-instances/instances/belhaiza/prm202.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 2 100 1 -0 1000 -0 35 35 0 0 0 0 0 1000 -1 41 49 10 10 1 1 3 3 77 164 545 640 912 -2 35 17 10 7 1 1 4 14 97 183 344 220 528 423 1117 -3 55 45 10 13 1 1 3 13 83 156 361 622 812 -4 55 20 10 19 1 1 3 2 180 275 837 926 1202 -5 15 30 10 26 1 1 2 10 211 263 663 -6 25 30 10 3 1 1 4 19 463 384 1008 530 668 736 1159 -7 20 50 10 5 1 1 3 9 403 228 626 468 546 -8 10 43 10 9 1 1 2 18 327 405 797 -9 55 60 10 16 1 1 2 0 352 404 696 -10 30 60 10 16 1 1 3 15 176 244 653 726 965 -11 20 65 10 12 1 1 2 5 624 710 868 -12 50 35 10 19 1 1 3 5 100 174 665 725 908 -13 30 25 10 23 1 1 2 19 413 507 1070 -14 15 10 10 20 1 1 4 7 113 196 285 372 657 726 1157 -15 30 5 10 8 1 1 3 0 247 332 824 923 1450 -16 10 20 10 19 1 1 3 1 116 180 604 682 1091 -17 5 30 10 2 1 1 2 1 307 364 917 -18 20 40 10 12 1 1 2 4 216 278 561 -19 15 60 10 17 1 1 3 14 387 444 845 917 991 -20 45 65 10 9 1 1 2 13 329 412 569 -21 45 20 10 11 1 1 3 8 304 186 498 387 833 -22 45 10 10 18 1 1 2 3 454 508 1118 -23 55 5 10 29 1 1 3 11 431 487 646 715 1297 -24 65 35 10 3 1 1 3 14 528 579 639 731 933 -25 65 20 10 6 1 1 3 12 490 568 848 909 1234 -26 45 30 10 17 1 1 3 18 360 416 842 921 1075 -27 35 40 10 16 1 1 4 11 461 533 795 677 939 849 1308 -28 41 37 10 16 1 1 3 1 387 475 704 786 1033 -29 64 42 10 9 1 1 2 15 239 293 382 -30 40 60 10 21 1 1 2 16 595 693 1226 -31 31 52 10 27 1 1 2 17 100 181 815 -32 35 69 10 23 1 1 3 7 478 550 894 966 1153 -33 53 52 10 11 1 1 2 2 142 224 705 -34 65 55 10 14 1 1 3 16 213 268 591 589 757 -35 63 65 10 8 1 1 3 19 570 457 717 665 1082 -36 2 60 10 5 1 1 2 15 632 705 1050 -37 20 20 10 8 1 1 3 11 114 168 712 803 1016 -38 5 5 10 16 1 1 3 4 272 353 585 666 1064 -39 60 12 10 31 1 1 2 7 283 335 1001 -40 40 25 10 9 1 1 2 19 715 773 1446 -41 42 7 10 5 1 1 2 12 162 230 516 -42 24 12 10 5 1 1 2 0 373 439 575 -43 23 3 10 7 1 1 2 8 455 509 1070 -44 11 14 10 18 1 1 3 12 409 477 691 741 1079 -45 6 38 10 16 1 1 2 1 198 254 381 -46 2 48 10 1 1 1 2 5 537 622 1003 -47 8 56 10 27 1 1 2 14 561 630 1230 -48 13 52 10 36 1 1 2 11 163 245 904 -49 6 68 10 30 1 1 5 5 176 6 454 253 358 418 915 982 1524 -50 47 47 10 13 1 1 2 2 426 522 1157 -51 49 58 10 10 1 1 2 11 305 357 1024 -52 27 43 10 9 1 1 3 4 158 221 646 709 897 -53 37 31 10 14 1 1 2 9 564 628 907 -54 57 29 10 18 1 1 2 0 461 545 1052 -55 63 23 10 2 1 1 4 6 99 121 205 180 539 596 1153 -56 53 12 10 6 1 1 2 18 444 513 618 -57 32 12 10 7 1 1 2 16 648 729 1192 -58 36 26 10 18 1 1 3 1 288 385 546 603 1130 -59 21 24 10 28 1 1 3 3 300 358 548 641 1059 -60 17 34 10 3 1 1 2 14 140 197 691 -61 12 24 10 13 1 1 2 14 317 368 782 -62 24 58 10 19 1 1 3 3 401 476 812 878 1567 -63 27 69 10 10 1 1 2 2 605 685 784 -64 15 77 10 9 1 1 2 15 267 337 926 -65 62 77 10 20 1 1 4 16 247 276 824 305 486 554 686 -66 49 73 10 25 1 1 2 6 412 509 1048 -67 67 5 10 25 1 1 2 6 432 499 582 -68 56 39 10 36 1 1 3 7 100 171 649 699 1392 -69 37 47 10 6 1 1 2 10 640 731 1079 -70 37 56 10 5 1 1 2 18 171 224 711 -71 57 68 10 15 1 1 3 17 111 207 325 229 913 -72 47 16 10 25 1 1 3 4 180 232 788 859 1130 -73 44 17 10 9 1 1 3 11 418 497 751 827 1467 -74 46 13 10 8 1 1 3 19 319 388 615 694 1359 -75 49 11 10 18 1 1 4 6 185 97 441 282 850 942 1587 -76 49 42 10 13 1 1 4 5 359 413 540 632 887 985 1166 -77 53 43 10 14 1 1 4 3 138 188 268 347 428 646 814 -78 61 52 10 3 1 1 3 1 222 296 446 512 1134 -79 57 48 10 23 1 1 2 4 486 576 1248 -80 56 37 10 6 1 1 2 16 631 709 934 -81 55 54 10 26 1 1 4 18 129 181 581 478 828 667 1345 -82 15 47 10 16 1 1 5 1 202 296 392 319 503 462 811 870 1467 -83 14 37 10 11 1 1 2 17 597 688 1000 -84 11 31 10 7 1 1 2 3 108 199 629 -85 16 22 10 41 1 1 2 16 619 706 1383 -86 4 18 10 35 1 1 2 11 535 598 1025 -87 28 18 10 26 1 1 3 2 167 224 463 526 1175 -88 26 52 10 9 1 1 3 3 494 585 666 757 950 -89 26 35 10 15 1 1 2 4 296 367 604 -90 31 67 10 3 1 1 3 1 193 244 528 588 1075 -91 15 19 10 1 1 1 3 12 417 490 771 870 998 -92 22 22 10 2 1 1 2 5 654 750 986 -93 18 24 10 22 1 1 3 16 284 355 878 963 1045 -94 26 27 10 27 1 1 3 9 117 209 346 412 976 -95 25 24 10 20 1 1 3 6 70 154 246 550 894 -96 22 27 10 11 1 1 2 2 534 629 992 -97 25 21 10 12 1 1 3 5 509 573 808 896 1564 -98 19 21 10 10 1 1 4 17 293 389 629 719 867 949 1107 -99 20 26 10 9 1 1 2 17 424 498 1180 -100 18 18 10 17 1 1 4 2 320 395 548 527 661 599 1095 diff --git a/jsprit-instances/instances/belhaiza/prm203.txt b/jsprit-instances/instances/belhaiza/prm203.txt deleted file mode 100644 index e0ab8f56b..000000000 --- a/jsprit-instances/instances/belhaiza/prm203.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 2 100 1 -0 1000 -0 35 35 0 0 0 0 0 1000 -1 41 49 10 10 1 1 2 3 88 509 1043 -2 35 17 10 7 1 1 3 15 391 476 575 661 874 -3 55 45 10 13 1 1 2 10 627 696 1080 -4 55 20 10 19 1 1 2 9 265 321 558 -5 15 30 10 26 1 1 2 6 920 979 1782 -6 25 30 10 3 1 1 4 19 644 251 1141 711 890 958 1554 -7 20 50 10 5 1 1 2 9 563 628 719 -8 10 43 10 9 1 1 2 7 365 441 1360 -9 55 60 10 16 1 1 3 7 102 200 296 501 713 -10 30 60 10 16 1 1 2 7 582 655 981 -11 20 65 10 12 1 1 2 14 223 276 652 -12 50 35 10 19 1 1 2 9 704 764 1008 -13 30 25 10 23 1 1 2 19 572 666 1467 -14 15 10 10 20 1 1 3 13 525 593 724 807 914 -15 30 5 10 8 1 1 2 11 777 854 1281 -16 10 20 10 19 1 1 2 13 71 157 887 -17 5 30 10 2 1 1 2 2 760 838 980 -18 20 40 10 12 1 1 3 7 321 409 547 597 787 -19 15 60 10 17 1 1 2 7 253 232 524 -20 45 65 10 9 1 1 2 14 536 593 1157 -21 45 20 10 11 1 1 2 4 495 579 1018 -22 45 10 10 18 1 1 2 13 642 698 1131 -23 55 5 10 29 1 1 4 17 234 134 342 327 468 547 1138 -24 65 35 10 3 1 1 1 7 835 -25 65 20 10 6 1 1 1 10 491 -26 45 30 10 17 1 1 3 0 747 808 889 986 1839 -27 35 40 10 16 1 1 2 7 663 734 1318 -28 41 37 10 16 1 1 2 0 466 9 966 -29 64 42 10 9 1 1 3 3 180 260 861 937 1746 -30 40 60 10 21 1 1 2 6 610 691 1171 -31 31 52 10 27 1 1 2 1 543 631 943 -32 35 69 10 23 1 1 2 15 319 373 480 -33 53 52 10 11 1 1 2 16 839 937 1693 -34 65 55 10 14 1 1 2 17 115 196 1099 -35 63 65 10 8 1 1 2 7 672 744 1224 -36 2 60 10 5 1 1 2 0 114 171 353 -37 20 20 10 8 1 1 2 0 674 766 1031 -38 5 5 10 16 1 1 1 15 871 -39 60 12 10 31 1 1 2 18 605 682 1484 -40 40 25 10 9 1 1 3 9 786 411 1183 846 1334 -41 42 7 10 5 1 1 1 16 304 -42 24 12 10 5 1 1 4 4 372 331 557 453 769 850 1409 -43 23 3 10 7 1 1 2 18 430 505 593 -44 11 14 10 18 1 1 1 19 989 -45 6 38 10 16 1 1 2 4 400 451 974 -46 2 48 10 1 1 1 1 19 376 -47 8 56 10 27 1 1 3 15 473 529 663 744 1239 -48 13 52 10 36 1 1 2 10 623 685 1322 -49 6 68 10 30 1 1 2 0 471 532 824 -50 47 47 10 13 1 1 2 2 165 537 983 -51 49 58 10 10 1 1 2 10 322 408 1126 -52 27 43 10 9 1 1 2 16 757 849 1261 -53 37 31 10 14 1 1 2 18 611 485 1143 -54 57 29 10 18 1 1 3 5 232 309 439 499 1202 -55 63 23 10 2 1 1 2 11 815 910 1055 -56 53 12 10 6 1 1 2 19 878 946 1835 -57 32 12 10 7 1 1 1 0 953 -58 36 26 10 18 1 1 2 4 206 269 867 -59 21 24 10 28 1 1 2 0 314 250 1038 -60 17 34 10 3 1 1 2 5 390 471 1363 -61 12 24 10 13 1 1 1 13 731 -62 24 58 10 19 1 1 2 2 93 174 571 -63 27 69 10 10 1 1 1 9 378 -64 15 77 10 9 1 1 2 3 795 845 944 -65 62 77 10 20 1 1 2 8 434 100 1000 -66 49 73 10 25 1 1 2 12 666 741 955 -67 67 5 10 25 1 1 2 2 750 819 1560 -68 56 39 10 36 1 1 3 6 155 210 505 589 1318 -69 37 47 10 6 1 1 3 11 753 512 1070 834 920 -70 37 56 10 5 1 1 1 10 478 -71 57 68 10 15 1 1 2 1 360 415 1273 -72 47 16 10 25 1 1 2 8 846 909 1585 -73 44 17 10 9 1 1 2 3 782 848 1419 -74 46 13 10 8 1 1 1 4 949 -75 49 11 10 18 1 1 2 8 684 734 1724 -76 49 42 10 13 1 1 2 10 908 999 1485 -77 53 43 10 14 1 1 3 2 101 197 398 451 1139 -78 61 52 10 3 1 1 2 17 131 614 762 -79 57 48 10 23 1 1 1 18 997 -80 56 37 10 6 1 1 1 15 925 -81 55 54 10 26 1 1 3 6 619 583 723 714 1329 -82 15 47 10 16 1 1 3 19 435 504 813 892 1841 -83 14 37 10 11 1 1 2 6 244 341 1148 -84 11 31 10 7 1 1 2 9 816 871 1184 -85 16 22 10 41 1 1 2 17 367 447 689 -86 4 18 10 35 1 1 3 2 618 670 889 941 1008 -87 28 18 10 26 1 1 3 1 301 375 572 638 1525 -88 26 52 10 9 1 1 2 4 686 776 1736 -89 26 35 10 15 1 1 3 0 341 16 892 970 1276 -90 31 67 10 3 1 1 2 1 699 775 1699 -91 15 19 10 1 1 1 2 7 808 903 1392 -92 22 22 10 2 1 1 1 9 897 -93 18 24 10 22 1 1 2 3 853 926 1174 -94 26 27 10 27 1 1 2 8 895 977 1812 -95 25 24 10 20 1 1 2 13 846 936 1794 -96 22 27 10 11 1 1 1 0 713 -97 25 21 10 12 1 1 2 11 609 691 990 -98 19 21 10 10 1 1 3 18 203 271 965 282 588 -99 20 26 10 9 1 1 2 16 112 541 799 -100 18 18 10 17 1 1 3 7 280 344 611 709 1166 diff --git a/jsprit-instances/instances/belhaiza/prm204.txt b/jsprit-instances/instances/belhaiza/prm204.txt deleted file mode 100644 index 5267f7d62..000000000 --- a/jsprit-instances/instances/belhaiza/prm204.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 2 100 1 -0 1000 -0 35 35 0 0 0 0 0 1000 -1 41 49 10 10 1 1 2 3 136 497 1055 -2 35 17 10 7 1 1 3 15 424 594 740 912 1166 -3 55 45 10 13 1 1 3 10 647 362 1072 786 1202 -4 55 20 10 19 1 1 1 4 533 -5 15 30 10 26 1 1 2 2 279 469 1279 -6 25 30 10 3 1 1 2 3 816 968 1277 -7 20 50 10 5 1 1 2 12 162 361 1006 -8 10 43 10 9 1 1 1 11 429 -9 55 60 10 16 1 1 1 6 901 -10 30 60 10 16 1 1 1 10 391 -11 20 65 10 12 1 1 1 18 477 -12 50 35 10 19 1 1 2 3 624 728 1247 -13 30 25 10 23 1 1 3 19 162 339 593 469 1065 -14 15 10 10 20 1 1 3 9 371 355 571 477 1014 -15 30 5 10 8 1 1 3 3 349 52 762 483 1236 -16 10 20 10 19 1 1 2 4 288 440 930 -17 5 30 10 2 1 1 2 17 828 976 1539 -18 20 40 10 12 1 1 2 13 167 342 767 -19 15 60 10 17 1 1 2 10 467 567 940 -20 45 65 10 9 1 1 2 14 758 932 1920 -21 45 20 10 11 1 1 2 11 367 518 1136 -22 45 10 10 18 1 1 3 7 358 535 719 820 1053 -23 55 5 10 29 1 1 1 7 292 -24 65 35 10 3 1 1 1 9 782 -25 65 20 10 6 1 1 2 2 588 732 866 -26 45 30 10 17 1 1 1 13 481 -27 35 40 10 16 1 1 2 3 708 588 1028 -28 41 37 10 16 1 1 3 0 333 13 661 774 1236 -29 64 42 10 9 1 1 1 1 877 -30 40 60 10 21 1 1 2 11 623 735 986 -31 31 52 10 27 1 1 1 10 518 -32 35 69 10 23 1 1 2 0 760 883 1013 -33 53 52 10 11 1 1 2 7 681 823 1428 -34 65 55 10 14 1 1 1 0 740 -35 63 65 10 8 1 1 3 18 523 264 910 636 1257 -36 2 60 10 5 1 1 2 12 581 713 1338 -37 20 20 10 8 1 1 2 12 407 324 890 -38 5 5 10 16 1 1 2 15 363 313 685 -39 60 12 10 31 1 1 2 5 394 500 1280 -40 40 25 10 9 1 1 1 16 955 -41 42 7 10 5 1 1 2 19 787 928 1338 -42 24 12 10 5 1 1 2 0 898 17 163 -43 23 3 10 7 1 1 2 12 770 915 1374 -44 11 14 10 18 1 1 2 9 300 406 788 -45 6 38 10 16 1 1 1 2 227 -46 2 48 10 1 1 1 2 0 691 875 1179 -47 8 56 10 27 1 1 2 3 201 378 1241 -48 13 52 10 36 1 1 2 18 627 782 1595 -49 6 68 10 30 1 1 1 17 629 -50 47 47 10 13 1 1 2 9 517 633 923 -51 49 58 10 10 1 1 2 1 785 968 1294 -52 27 43 10 9 1 1 2 4 406 568 920 -53 37 31 10 14 1 1 2 3 528 666 1079 -54 57 29 10 18 1 1 2 10 146 342 1336 -55 63 23 10 2 1 1 1 6 924 -56 53 12 10 6 1 1 1 0 548 -57 32 12 10 7 1 1 1 19 410 -58 36 26 10 18 1 1 2 15 502 615 794 -59 21 24 10 28 1 1 2 7 676 829 1463 -60 17 34 10 3 1 1 2 7 334 435 934 -61 12 24 10 13 1 1 2 1 305 450 656 -62 24 58 10 19 1 1 1 14 489 -63 27 69 10 10 1 1 1 14 573 -64 15 77 10 9 1 1 2 16 480 652 1440 -65 62 77 10 20 1 1 3 11 491 79 1021 605 1133 -66 49 73 10 25 1 1 2 3 803 911 1276 -67 67 5 10 25 1 1 2 4 723 858 1640 -68 56 39 10 36 1 1 1 11 825 -69 37 47 10 6 1 1 2 7 454 650 1516 -70 37 56 10 5 1 1 1 0 955 -71 57 68 10 15 1 1 3 8 527 426 716 647 891 -72 47 16 10 25 1 1 2 15 142 73 583 -73 44 17 10 9 1 1 2 17 372 472 1142 -74 46 13 10 8 1 1 2 7 732 845 984 -75 49 11 10 18 1 1 1 9 411 -76 49 42 10 13 1 1 2 3 806 906 1053 -77 53 43 10 14 1 1 1 1 934 -78 61 52 10 3 1 1 2 12 837 954 1622 -79 57 48 10 23 1 1 2 3 151 324 1270 -80 56 37 10 6 1 1 1 7 762 -81 55 54 10 26 1 1 2 3 297 348 958 -82 15 47 10 16 1 1 3 6 199 310 643 811 1555 -83 14 37 10 11 1 1 1 7 312 -84 11 31 10 7 1 1 2 0 604 757 1415 -85 16 22 10 41 1 1 1 6 991 -86 4 18 10 35 1 1 2 12 180 341 703 -87 28 18 10 26 1 1 1 16 832 -88 26 52 10 9 1 1 2 5 698 818 1643 -89 26 35 10 15 1 1 1 7 221 -90 31 67 10 3 1 1 4 0 601 10 287 462 854 975 1923 -91 15 19 10 1 1 1 2 6 152 332 830 -92 22 22 10 2 1 1 2 13 451 389 873 -93 18 24 10 22 1 1 2 7 120 274 1178 -94 26 27 10 27 1 1 3 2 149 341 584 357 1061 -95 25 24 10 20 1 1 2 1 211 271 1173 -96 22 27 10 11 1 1 1 19 959 -97 25 21 10 12 1 1 2 4 278 382 1182 -98 19 21 10 10 1 1 1 15 930 -99 20 26 10 9 1 1 3 6 640 378 962 830 1465 -100 18 18 10 17 1 1 2 19 205 403 850 diff --git a/jsprit-instances/instances/belhaiza/rcm101.txt b/jsprit-instances/instances/belhaiza/rcm101.txt deleted file mode 100644 index 0f5f86c8e..000000000 --- a/jsprit-instances/instances/belhaiza/rcm101.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 11 100 1 -0 200 -0 40 50 0 0 0 0 0 240 -1 25 85 10 20 1 1 5 3 13 37 57 82 98 122 133 157 170 -2 22 75 10 30 1 1 7 12 33 50 67 77 89 103 126 140 159 172 191 216 228 -3 22 85 10 10 1 1 6 14 25 54 76 93 105 122 143 159 186 205 225 -4 20 80 10 40 1 1 7 12 40 53 74 84 103 113 130 143 172 193 218 233 250 -5 20 85 10 20 1 1 7 1 20 47 59 72 87 103 127 142 153 172 195 209 223 -6 18 75 10 20 1 1 6 23 43 70 95 114 134 145 168 179 196 213 236 -7 15 75 10 20 1 1 6 7 27 50 60 84 108 132 161 172 184 199 220 -8 15 80 10 10 1 1 7 6 30 41 58 70 95 109 119 136 150 174 189 213 232 -9 10 35 10 20 1 1 5 20 38 52 71 94 112 135 148 165 178 -10 10 40 10 30 1 1 6 16 38 50 68 81 103 114 141 162 189 202 223 -11 8 40 10 40 1 1 6 10 23 47 67 77 101 115 125 153 179 201 224 -12 8 45 10 20 1 1 6 17 31 60 70 98 117 129 150 171 184 209 231 -13 5 35 10 10 1 1 7 10 26 37 59 81 97 108 128 153 168 190 206 221 237 -14 5 45 10 10 1 1 5 19 47 71 97 113 142 153 171 186 211 -15 2 40 10 20 1 1 5 21 48 72 94 111 133 152 171 190 204 -16 0 40 10 20 1 1 6 0 11 23 35 58 81 95 105 123 149 162 174 -17 0 45 10 20 1 1 5 23 48 76 97 118 143 168 179 200 216 -18 44 5 10 20 1 1 5 19 34 50 77 92 106 126 148 166 188 -19 42 10 10 40 1 1 6 8 21 49 66 86 96 125 154 167 196 224 248 -20 42 15 10 10 1 1 7 8 25 44 58 70 80 109 125 143 165 176 201 220 232 -21 40 5 10 10 1 1 8 14 34 51 66 76 94 108 123 135 146 164 176 191 215 239 259 -22 40 15 10 40 1 1 6 19 37 61 86 103 129 147 174 193 214 227 239 -23 38 5 10 30 1 1 5 16 36 61 75 97 114 135 160 188 200 -24 38 15 10 10 1 1 6 9 26 55 82 99 126 155 176 189 199 227 241 -25 35 5 10 20 1 1 5 10 35 50 67 89 116 140 150 167 190 -26 95 30 10 30 1 1 5 8 20 31 53 72 88 113 135 146 159 -27 95 35 10 20 1 1 5 22 43 60 71 98 116 138 164 177 199 -28 92 30 10 10 1 1 7 8 28 41 52 76 104 128 140 153 170 183 197 224 245 -29 90 35 10 10 1 1 6 17 29 41 64 81 95 116 140 162 172 185 205 -30 88 30 10 10 1 1 6 23 43 54 70 82 109 131 142 158 173 199 224 -31 88 35 10 20 1 1 6 4 30 42 55 80 97 117 130 155 171 185 213 -32 87 30 10 10 1 1 7 1 17 35 51 68 79 97 120 130 159 186 203 222 242 -33 85 25 10 10 1 1 5 3 15 38 66 78 89 116 127 155 167 -34 85 35 10 30 1 1 6 4 32 57 71 87 97 107 125 150 178 199 219 -35 67 85 10 20 1 1 6 9 24 45 73 91 102 115 144 169 185 213 242 -36 65 85 10 40 1 1 5 20 36 65 79 91 112 122 135 145 155 -37 65 82 10 10 1 1 6 21 34 45 60 79 92 108 135 153 166 189 212 -38 62 80 10 30 1 1 6 20 36 51 77 99 120 143 164 192 203 213 233 -39 60 80 10 10 1 1 6 18 42 61 78 92 120 131 142 161 188 214 232 -40 60 85 10 30 1 1 6 2 15 36 49 72 98 124 151 175 204 227 240 -41 58 75 10 20 1 1 5 13 37 52 73 86 108 123 135 163 175 -42 55 80 10 10 1 1 6 16 37 47 60 74 100 114 140 154 171 189 204 -43 55 85 10 20 1 1 8 2 16 26 43 57 80 95 112 132 153 170 192 204 223 234 263 -44 55 82 10 10 1 1 7 19 35 53 77 101 112 128 150 161 178 190 209 234 260 -45 20 82 10 10 1 1 6 17 27 46 58 78 106 121 144 159 174 199 228 -46 18 80 10 10 1 1 6 22 37 63 76 98 111 131 149 178 205 234 253 -47 2 45 10 10 1 1 5 0 21 34 60 86 115 131 155 175 204 -48 42 5 10 10 1 1 7 21 37 50 65 81 104 114 130 148 173 202 215 230 256 -49 42 12 10 10 1 1 7 7 25 44 60 74 96 112 137 164 175 200 223 234 262 -50 72 35 10 30 1 1 7 11 23 43 59 76 104 122 133 146 156 177 199 218 234 -51 55 20 10 19 1 1 7 3 25 40 59 77 89 104 124 145 174 193 209 222 245 -52 25 30 10 3 1 1 6 11 39 53 69 97 111 133 151 175 204 231 254 -53 20 50 10 5 1 1 7 23 51 65 81 96 120 136 146 167 179 199 222 234 253 -54 55 60 10 16 1 1 5 19 30 43 70 99 120 140 157 169 194 -55 30 60 10 16 1 1 6 6 20 49 69 93 118 131 141 161 190 202 231 -56 50 35 10 19 1 1 6 21 43 66 93 105 124 143 168 188 202 223 244 -57 30 25 10 23 1 1 5 16 35 46 69 89 112 137 149 175 203 -58 15 10 10 20 1 1 6 12 35 55 65 90 107 125 145 160 179 197 207 -59 10 20 10 19 1 1 5 8 26 47 74 102 122 146 174 203 223 -60 15 60 10 17 1 1 6 15 39 58 73 96 117 134 145 166 192 211 239 -61 45 65 10 9 1 1 6 13 30 50 69 79 96 120 146 173 196 215 229 -62 65 35 10 3 1 1 5 5 34 60 81 99 124 140 168 194 218 -63 65 20 10 6 1 1 6 0 12 37 53 82 108 135 156 166 179 198 224 -64 45 30 10 17 1 1 7 1 18 28 52 69 94 109 123 142 152 167 189 212 232 -65 35 40 10 16 1 1 5 13 32 51 74 102 122 139 163 191 209 -66 41 37 10 16 1 1 6 8 23 49 71 99 127 141 159 178 191 213 234 -67 64 42 10 9 1 1 6 12 36 65 82 93 108 124 147 174 190 205 234 -68 40 60 10 21 1 1 6 21 44 68 91 109 138 153 165 190 214 229 254 -69 31 52 10 27 1 1 6 11 39 58 69 92 121 141 154 169 194 219 229 -70 35 69 10 23 1 1 6 4 22 42 66 87 112 130 157 186 211 239 253 -71 65 55 10 14 1 1 6 14 28 47 76 87 110 137 150 172 192 210 225 -72 63 65 10 8 1 1 7 5 30 49 63 81 105 123 141 169 191 202 220 230 244 -73 2 60 10 5 1 1 5 22 46 67 95 117 140 163 178 203 230 -74 20 20 10 8 1 1 5 8 18 29 52 75 94 110 132 144 161 -75 5 5 10 16 1 1 5 20 46 61 81 93 119 141 152 171 194 -76 60 12 10 31 1 1 6 14 34 45 73 99 122 140 155 177 199 226 251 -77 23 3 10 7 1 1 5 17 45 65 89 115 141 154 183 193 214 -78 8 56 10 27 1 1 7 12 28 43 66 82 95 123 134 155 172 188 199 216 240 -79 6 68 10 30 1 1 6 21 47 59 87 102 125 146 161 178 188 217 244 -80 47 47 10 13 1 1 6 19 44 70 90 104 129 155 184 204 221 239 268 -81 49 58 10 10 1 1 7 5 16 30 54 69 82 100 111 122 142 165 189 215 240 -82 27 43 10 9 1 1 6 11 39 53 74 102 122 148 164 174 191 216 234 -83 37 31 10 14 1 1 5 20 30 52 76 101 124 149 173 191 211 -84 57 29 10 18 1 1 7 14 36 48 70 95 117 134 145 161 176 204 220 230 248 -85 63 23 10 2 1 1 7 7 21 48 58 71 87 106 129 155 176 197 226 238 260 -86 21 24 10 28 1 1 6 20 31 60 81 103 114 132 145 165 192 207 229 -87 12 24 10 13 1 1 8 4 22 32 59 77 90 108 136 151 172 182 192 209 224 235 261 -88 24 58 10 19 1 1 6 22 37 64 93 114 126 136 160 185 212 229 251 -89 67 5 10 25 1 1 6 19 41 66 76 86 99 127 144 166 184 209 238 -90 37 47 10 6 1 1 5 14 37 56 81 101 130 156 179 189 205 -91 49 42 10 13 1 1 7 5 20 32 56 66 93 113 125 154 171 187 205 231 244 -92 53 43 10 14 1 1 6 9 37 55 80 103 125 150 170 185 206 224 245 -93 61 52 10 3 1 1 5 4 33 54 74 94 118 145 174 196 222 -94 57 48 10 23 1 1 7 11 33 47 76 103 121 143 153 167 181 192 210 230 252 -95 56 37 10 6 1 1 6 15 32 48 75 99 119 137 157 181 203 230 258 -96 55 54 10 26 1 1 5 16 45 72 89 112 135 157 169 197 226 -97 4 18 10 35 1 1 7 9 32 49 69 80 91 106 123 149 176 198 208 236 250 -98 26 52 10 9 1 1 6 23 49 73 94 113 133 144 155 184 200 216 234 -99 26 35 10 15 1 1 7 14 27 56 74 101 119 135 145 159 174 186 214 224 244 -100 31 67 10 3 1 1 7 9 22 41 57 86 110 129 144 171 182 204 224 234 244 diff --git a/jsprit-instances/instances/belhaiza/rcm102.txt b/jsprit-instances/instances/belhaiza/rcm102.txt deleted file mode 100644 index d4dc849f5..000000000 --- a/jsprit-instances/instances/belhaiza/rcm102.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 14 100 1 -0 200 -0 40 50 0 0 0 0 0 240 -1 25 85 10 20 1 1 5 5 15 54 74 114 130 168 179 218 231 -2 22 75 10 30 1 1 6 17 38 63 80 91 103 122 145 163 182 199 218 -3 22 85 10 10 1 1 5 26 42 61 74 105 125 159 170 219 241 -4 20 80 10 40 1 1 6 18 34 45 64 95 111 136 152 183 211 227 248 -5 20 85 10 20 1 1 5 32 42 82 95 119 140 168 183 195 214 -6 18 75 10 20 1 1 5 24 37 49 65 102 117 135 154 181 195 -7 15 75 10 20 1 1 4 26 55 85 112 149 168 193 204 -8 15 80 10 10 1 1 5 18 35 45 61 99 122 171 195 209 233 -9 10 35 10 20 1 1 5 19 40 79 99 124 139 180 191 201 213 -10 10 40 10 30 1 1 5 12 26 65 80 119 138 153 173 200 210 -11 8 40 10 40 1 1 5 7 26 63 81 117 130 155 168 202 220 -12 8 45 10 20 1 1 5 3 30 62 89 105 126 168 180 197 214 -13 5 35 10 10 1 1 5 24 44 54 78 97 107 154 180 215 238 -14 5 45 10 10 1 1 5 24 38 86 96 142 161 176 197 230 243 -15 2 40 10 20 1 1 5 19 41 69 85 98 120 155 171 184 204 -16 0 40 10 20 1 1 5 10 32 72 87 100 111 153 181 220 246 -17 0 45 10 20 1 1 5 13 29 70 81 93 108 153 180 219 241 -18 44 5 10 20 1 1 5 10 29 40 51 66 78 114 137 156 166 -19 42 10 10 40 1 1 4 3 21 64 77 126 151 197 218 -20 42 15 10 10 1 1 5 15 40 58 77 111 124 157 168 181 206 -21 40 5 10 10 1 1 5 21 36 70 90 118 136 159 172 219 236 -22 40 15 10 40 1 1 4 33 53 101 130 168 181 203 231 -23 38 5 10 30 1 1 6 8 25 36 55 77 89 123 152 193 211 226 237 -24 38 15 10 10 1 1 6 13 35 66 87 107 129 156 173 193 203 215 229 -25 35 5 10 20 1 1 5 14 26 47 71 109 129 155 179 219 245 -26 95 30 10 30 1 1 5 12 38 64 91 120 141 157 169 216 237 -27 95 35 10 20 1 1 4 23 43 83 97 131 148 181 206 -28 92 30 10 10 1 1 4 12 29 77 104 129 156 204 225 -29 90 35 10 10 1 1 5 19 33 51 66 77 92 120 145 166 183 -30 88 30 10 10 1 1 6 0 22 59 83 94 111 135 147 159 181 210 226 -31 88 35 10 20 1 1 5 0 11 58 79 104 115 160 178 213 239 -32 87 30 10 10 1 1 6 17 30 54 74 90 101 140 168 207 219 236 253 -33 85 25 10 10 1 1 5 19 32 46 73 93 109 147 159 174 197 -34 85 35 10 30 1 1 5 24 41 52 73 104 126 153 166 215 235 -35 67 85 10 20 1 1 5 28 39 52 64 85 107 148 164 190 216 -36 65 85 10 40 1 1 6 27 42 58 72 96 108 125 150 172 192 239 264 -37 65 82 10 10 1 1 5 10 31 54 65 77 95 131 148 197 215 -38 62 80 10 30 1 1 5 30 47 75 95 130 156 171 182 228 241 -39 60 80 10 10 1 1 5 4 15 60 71 118 130 177 206 224 237 -40 60 85 10 30 1 1 5 25 53 86 106 139 155 186 214 227 243 -41 58 75 10 20 1 1 5 33 50 75 90 123 151 178 189 206 235 -42 55 80 10 10 1 1 5 17 39 80 99 120 139 152 164 208 224 -43 55 85 10 20 1 1 5 0 10 43 53 99 112 124 139 168 181 -44 55 82 10 10 1 1 5 6 22 58 76 94 117 159 188 206 229 -45 20 82 10 10 1 1 5 19 41 54 77 108 136 184 194 235 259 -46 18 80 10 10 1 1 5 3 17 62 73 99 118 135 161 189 203 -47 2 45 10 10 1 1 5 6 19 35 46 88 109 153 176 224 250 -48 42 5 10 10 1 1 6 24 34 67 88 123 138 153 166 181 196 216 244 -49 42 12 10 10 1 1 5 28 38 81 95 119 133 154 168 216 234 -50 72 35 10 30 1 1 5 12 23 59 69 94 108 141 156 190 210 -51 55 20 10 19 1 1 5 4 23 35 64 84 112 158 173 196 223 -52 25 30 10 3 1 1 6 24 35 57 79 92 109 124 143 184 210 231 247 -53 20 50 10 5 1 1 5 2 18 46 69 108 118 147 159 190 218 -54 55 60 10 16 1 1 4 9 24 72 87 131 156 200 216 -55 30 60 10 16 1 1 5 29 49 78 107 146 175 201 217 233 245 -56 50 35 10 19 1 1 4 19 31 74 84 132 145 184 210 -57 30 25 10 23 1 1 6 10 27 47 75 111 124 147 163 204 214 230 248 -58 15 10 10 20 1 1 5 9 35 62 89 112 128 162 181 222 236 -59 10 20 10 19 1 1 6 2 30 61 74 109 122 142 157 172 196 218 237 -60 15 60 10 17 1 1 6 15 26 42 52 85 107 136 152 166 185 215 228 -61 45 65 10 9 1 1 6 4 26 46 65 91 103 124 144 177 206 235 251 -62 65 35 10 3 1 1 5 14 24 58 75 104 132 151 167 214 228 -63 65 20 10 6 1 1 4 13 40 70 99 132 161 209 237 -64 45 30 10 17 1 1 5 23 44 73 93 129 141 154 173 216 227 -65 35 40 10 16 1 1 5 19 32 57 86 126 146 175 187 207 221 -66 41 37 10 16 1 1 5 32 45 94 114 131 143 163 184 230 252 -67 64 42 10 9 1 1 5 16 39 80 92 111 130 162 182 198 219 -68 40 60 10 21 1 1 5 4 24 70 95 114 140 170 193 223 233 -69 31 52 10 27 1 1 5 0 15 57 75 99 117 149 176 222 242 -70 35 69 10 23 1 1 5 6 35 50 71 97 109 146 161 198 224 -71 65 55 10 14 1 1 5 19 38 51 74 116 133 179 200 221 240 -72 63 65 10 8 1 1 5 27 55 72 94 118 147 176 197 221 241 -73 2 60 10 5 1 1 5 29 52 81 95 138 154 180 191 206 226 -74 20 20 10 8 1 1 4 28 49 76 101 123 151 194 218 -75 5 5 10 16 1 1 5 13 23 33 45 86 102 150 176 221 242 -76 60 12 10 31 1 1 5 28 38 81 100 134 156 168 185 196 220 -77 23 3 10 7 1 1 6 7 24 34 49 83 102 132 147 162 185 196 221 -78 8 56 10 27 1 1 5 17 36 74 102 129 146 173 201 225 240 -79 6 68 10 30 1 1 5 5 19 51 70 87 109 147 170 201 225 -80 47 47 10 13 1 1 5 22 33 55 71 120 147 177 192 223 243 -81 49 58 10 10 1 1 4 10 35 72 94 130 157 206 230 -82 27 43 10 9 1 1 5 9 34 72 99 136 153 200 216 228 247 -83 37 31 10 14 1 1 4 10 35 76 86 135 148 175 201 -84 57 29 10 18 1 1 5 15 42 91 116 163 177 200 220 237 254 -85 63 23 10 2 1 1 5 20 34 62 91 104 127 171 184 218 238 -86 21 24 10 28 1 1 5 33 54 78 99 118 143 171 185 211 235 -87 12 24 10 13 1 1 5 6 17 55 65 113 137 169 197 231 254 -88 24 58 10 19 1 1 6 8 33 51 70 99 123 154 179 195 212 236 246 -89 67 5 10 25 1 1 6 20 43 67 83 95 107 151 177 197 217 232 258 -90 37 47 10 6 1 1 5 22 44 61 80 114 134 147 175 217 240 -91 49 42 10 13 1 1 4 21 39 80 102 137 164 203 231 -92 53 43 10 14 1 1 5 32 58 91 104 137 147 165 191 219 229 -93 61 52 10 3 1 1 6 5 20 33 49 74 102 115 136 175 191 233 250 -94 57 48 10 23 1 1 5 31 59 95 107 127 142 153 174 218 235 -95 56 37 10 6 1 1 5 17 31 61 81 122 140 170 195 235 261 -96 55 54 10 26 1 1 5 18 35 62 91 131 157 170 188 226 240 -97 4 18 10 35 1 1 4 3 23 60 84 127 152 199 213 -98 26 52 10 9 1 1 5 28 44 54 71 111 129 139 151 190 217 -99 26 35 10 15 1 1 5 13 33 67 87 122 144 179 191 203 228 -100 31 67 10 3 1 1 6 1 19 31 57 75 95 106 121 143 170 207 220 diff --git a/jsprit-instances/instances/belhaiza/rcm103.txt b/jsprit-instances/instances/belhaiza/rcm103.txt deleted file mode 100644 index 943f2dca1..000000000 --- a/jsprit-instances/instances/belhaiza/rcm103.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 14 100 1 -0 200 -0 40 50 0 0 0 0 0 240 -1 25 85 10 20 1 1 3 5 16 55 85 125 148 -2 22 75 10 30 1 1 3 5 43 92 131 161 194 -3 22 85 10 10 1 1 4 3 28 65 76 105 124 153 171 -4 20 80 10 40 1 1 3 26 41 64 110 127 168 -5 20 85 10 20 1 1 4 18 48 82 94 143 177 201 216 -6 18 75 10 20 1 1 5 30 54 85 107 118 146 177 199 224 246 -7 15 75 10 20 1 1 5 19 50 78 94 118 129 177 188 228 244 -8 15 80 10 10 1 1 5 4 16 36 81 120 136 148 171 208 228 -9 10 35 10 20 1 1 4 7 25 56 83 124 173 203 248 -10 10 40 10 30 1 1 3 2 27 51 87 120 160 -11 8 40 10 40 1 1 4 10 41 78 88 127 165 204 253 -12 8 45 10 20 1 1 3 19 32 64 85 115 148 -13 5 35 10 10 1 1 6 13 34 75 88 98 113 131 150 170 194 223 262 -14 5 45 10 10 1 1 5 4 35 62 73 101 145 171 189 205 242 -15 2 40 10 20 1 1 4 20 46 72 108 142 157 201 218 -16 0 40 10 20 1 1 3 19 63 79 112 154 169 -17 0 45 10 20 1 1 4 15 32 70 100 110 149 168 179 -18 44 5 10 20 1 1 4 22 69 93 128 154 186 224 242 -19 42 10 10 40 1 1 3 20 53 83 124 157 191 -20 42 15 10 10 1 1 4 21 49 72 85 115 150 171 184 -21 40 5 10 10 1 1 5 21 43 63 85 97 137 184 197 239 281 -22 40 15 10 40 1 1 4 2 28 49 90 135 147 181 226 -23 38 5 10 30 1 1 5 13 48 76 104 132 150 162 184 199 210 -24 38 15 10 10 1 1 5 7 18 44 87 104 118 158 201 233 282 -25 35 5 10 20 1 1 4 27 39 71 94 134 178 206 234 -26 95 30 10 30 1 1 5 20 33 46 86 129 149 172 216 237 255 -27 95 35 10 20 1 1 4 16 43 66 83 130 155 185 196 -28 92 30 10 10 1 1 5 11 57 91 107 131 155 184 203 218 229 -29 90 35 10 10 1 1 5 26 53 68 81 116 144 177 202 236 267 -30 88 30 10 10 1 1 5 8 18 30 49 64 78 117 143 173 194 -31 88 35 10 20 1 1 3 13 52 92 134 177 216 -32 87 30 10 10 1 1 3 31 63 104 139 160 177 -33 85 25 10 10 1 1 3 23 54 94 112 146 170 -34 85 35 10 30 1 1 4 3 36 83 129 154 179 227 271 -35 67 85 10 20 1 1 3 7 24 52 99 115 142 -36 65 85 10 40 1 1 4 9 42 63 81 122 133 157 185 -37 65 82 10 10 1 1 4 21 66 104 114 139 176 191 202 -38 62 80 10 30 1 1 4 2 37 66 89 130 164 176 192 -39 60 80 10 10 1 1 3 31 64 89 102 147 174 -40 60 85 10 30 1 1 5 21 56 86 102 126 156 172 184 223 270 -41 58 75 10 20 1 1 4 19 35 49 94 114 137 175 189 -42 55 80 10 10 1 1 5 7 22 61 86 97 129 160 194 221 238 -43 55 85 10 20 1 1 4 28 40 53 67 88 122 163 185 -44 55 82 10 10 1 1 5 22 48 90 111 127 145 169 184 201 241 -45 20 82 10 10 1 1 4 10 43 66 78 90 117 153 178 -46 18 80 10 10 1 1 4 0 49 94 118 146 177 212 255 -47 2 45 10 10 1 1 3 22 68 82 94 139 151 -48 42 5 10 10 1 1 3 33 80 97 144 185 203 -49 42 12 10 10 1 1 3 14 37 83 94 125 165 -50 72 35 10 30 1 1 4 20 42 73 119 132 155 180 229 -51 55 20 10 19 1 1 4 20 67 94 107 124 172 213 236 -52 25 30 10 3 1 1 4 29 75 105 140 181 209 230 258 -53 20 50 10 5 1 1 5 6 21 31 42 75 86 132 149 161 181 -54 55 60 10 16 1 1 3 29 58 75 98 134 160 -55 30 60 10 16 1 1 4 32 50 87 129 152 170 213 257 -56 50 35 10 19 1 1 4 31 44 55 86 125 173 197 238 -57 30 25 10 23 1 1 3 15 60 103 129 147 164 -58 15 10 10 20 1 1 4 29 71 114 140 157 193 206 223 -59 10 20 10 19 1 1 4 28 64 112 154 170 209 220 257 -60 15 60 10 17 1 1 3 4 25 45 91 128 161 -61 45 65 10 9 1 1 3 28 39 82 100 124 143 -62 65 35 10 3 1 1 4 14 35 53 101 125 138 174 185 -63 65 20 10 6 1 1 4 9 34 65 98 122 156 170 198 -64 45 30 10 17 1 1 4 31 43 64 84 128 174 216 239 -65 35 40 10 16 1 1 4 16 29 72 87 109 150 160 181 -66 41 37 10 16 1 1 4 23 35 46 74 88 127 173 202 -67 64 42 10 9 1 1 4 10 47 68 89 130 178 201 245 -68 40 60 10 21 1 1 4 27 43 78 94 125 152 200 245 -69 31 52 10 27 1 1 3 23 53 68 79 89 122 -70 35 69 10 23 1 1 4 32 49 88 131 180 203 227 257 -71 65 55 10 14 1 1 4 26 36 52 79 122 170 215 235 -72 63 65 10 8 1 1 5 11 33 67 96 137 155 168 190 227 272 -73 2 60 10 5 1 1 5 2 48 79 95 130 147 167 187 202 241 -74 20 20 10 8 1 1 5 12 58 85 97 113 124 157 191 220 242 -75 5 5 10 16 1 1 5 5 19 61 91 106 140 160 189 215 230 -76 60 12 10 31 1 1 4 32 53 75 108 144 173 212 228 -77 23 3 10 7 1 1 4 31 65 88 117 135 154 180 227 -78 8 56 10 27 1 1 3 24 72 116 153 202 228 -79 6 68 10 30 1 1 4 8 46 68 78 111 126 157 194 -80 47 47 10 13 1 1 4 22 37 50 78 121 133 150 194 -81 49 58 10 10 1 1 4 25 55 84 98 118 136 185 216 -82 27 43 10 9 1 1 5 0 38 86 103 152 182 199 214 234 267 -83 37 31 10 14 1 1 5 16 52 93 108 127 156 188 219 235 267 -84 57 29 10 18 1 1 4 4 34 80 120 139 181 211 248 -85 63 23 10 2 1 1 5 15 42 53 73 115 142 166 192 224 269 -86 21 24 10 28 1 1 4 32 78 109 147 164 213 228 260 -87 12 24 10 13 1 1 4 27 64 103 140 160 195 227 256 -88 24 58 10 19 1 1 4 13 26 59 101 129 175 210 231 -89 67 5 10 25 1 1 4 18 42 73 102 112 136 174 217 -90 37 47 10 6 1 1 3 17 43 83 98 125 147 -91 49 42 10 13 1 1 4 18 37 78 121 167 194 232 254 -92 53 43 10 14 1 1 3 11 21 63 104 136 184 -93 61 52 10 3 1 1 4 0 16 45 88 123 166 191 225 -94 57 48 10 23 1 1 4 16 26 47 81 118 148 189 204 -95 56 37 10 6 1 1 3 19 47 76 113 160 190 -96 55 54 10 26 1 1 4 14 38 65 111 135 155 198 232 -97 4 18 10 35 1 1 3 18 47 64 98 136 172 -98 26 52 10 9 1 1 4 12 43 64 113 149 161 183 206 -99 26 35 10 15 1 1 4 21 52 74 115 152 186 222 267 -100 31 67 10 3 1 1 4 8 23 64 103 123 163 201 245 diff --git a/jsprit-instances/instances/belhaiza/rcm104.txt b/jsprit-instances/instances/belhaiza/rcm104.txt deleted file mode 100644 index 253eaff9e..000000000 --- a/jsprit-instances/instances/belhaiza/rcm104.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 14 100 1 -0 200 -0 40 50 0 0 0 0 0 240 -1 25 85 10 20 1 1 3 7 18 57 87 127 150 -2 22 75 10 30 1 1 3 8 46 95 134 164 197 -3 22 85 10 10 1 1 4 5 30 67 78 107 126 155 173 -4 20 80 10 40 1 1 3 37 52 75 121 138 179 -5 20 85 10 20 1 1 3 25 55 89 101 150 184 -6 18 75 10 20 1 1 3 27 51 96 120 151 173 -7 15 75 10 20 1 1 4 15 26 48 79 125 150 183 214 -8 15 80 10 10 1 1 3 2 30 41 65 81 129 -9 10 35 10 20 1 1 5 17 49 77 98 110 139 184 199 215 235 -10 10 40 10 30 1 1 5 3 26 63 83 101 130 157 175 224 255 -11 8 40 10 40 1 1 4 24 69 106 135 160 173 209 221 -12 8 45 10 20 1 1 4 26 51 61 83 121 158 207 246 -13 5 35 10 10 1 1 5 4 18 39 72 105 137 176 206 231 252 -14 5 45 10 10 1 1 3 7 48 67 77 101 119 -15 2 40 10 20 1 1 3 23 62 93 132 143 158 -16 0 40 10 20 1 1 4 22 66 92 110 126 163 180 216 -17 0 45 10 20 1 1 4 29 55 81 117 151 166 210 227 -18 44 5 10 20 1 1 3 27 71 87 120 162 177 -19 42 10 10 40 1 1 4 21 38 76 106 116 155 174 185 -20 42 15 10 10 1 1 4 31 78 102 137 163 195 233 251 -21 40 5 10 10 1 1 4 27 73 89 104 138 171 201 242 -22 40 15 10 40 1 1 4 15 48 83 111 134 147 177 212 -23 38 5 10 30 1 1 3 37 58 93 115 135 157 -24 38 15 10 10 1 1 4 4 16 58 105 144 186 209 257 -25 35 5 10 20 1 1 4 2 23 68 113 152 186 211 246 -26 95 30 10 30 1 1 3 15 43 54 66 81 96 -27 95 35 10 20 1 1 4 2 38 81 100 114 140 183 200 -28 92 30 10 10 1 1 4 27 76 117 163 175 207 230 271 -29 90 35 10 10 1 1 5 22 50 66 84 97 131 171 204 224 237 -30 88 30 10 10 1 1 4 16 60 81 99 130 164 191 225 -31 88 35 10 20 1 1 4 45 70 100 111 159 208 224 272 -32 87 30 10 10 1 1 5 15 61 95 111 135 159 188 207 222 233 -33 85 25 10 10 1 1 3 29 78 119 146 161 174 -34 85 35 10 30 1 1 4 18 53 84 117 137 171 198 222 -35 67 85 10 20 1 1 3 10 30 44 56 82 97 -36 65 85 10 40 1 1 4 24 45 84 122 164 190 229 269 -37 65 82 10 10 1 1 4 28 54 69 98 130 146 181 228 -38 62 80 10 30 1 1 3 25 38 56 93 117 157 -39 60 80 10 10 1 1 3 27 68 114 128 153 200 -40 60 85 10 30 1 1 4 18 63 111 144 161 172 219 237 -41 58 75 10 20 1 1 3 27 45 63 84 95 116 -42 55 80 10 10 1 1 4 16 44 89 110 120 155 192 230 -43 55 85 10 20 1 1 3 30 54 77 89 123 152 -44 55 82 10 10 1 1 5 2 18 51 61 74 121 148 173 215 260 -45 20 82 10 10 1 1 4 8 43 73 103 115 139 186 202 -46 18 80 10 10 1 1 5 34 49 66 91 107 125 170 202 225 239 -47 2 45 10 10 1 1 3 34 48 63 100 125 144 -48 42 5 10 10 1 1 5 1 33 64 98 125 142 191 221 233 256 -49 42 12 10 10 1 1 5 3 17 38 72 113 135 161 204 225 261 -50 72 35 10 30 1 1 5 7 25 49 64 81 121 143 174 221 261 -51 55 20 10 19 1 1 3 14 47 70 82 94 121 -52 25 30 10 3 1 1 4 20 56 66 115 160 184 212 243 -53 20 50 10 5 1 1 5 2 37 53 68 104 150 164 176 221 233 -54 55 60 10 16 1 1 3 46 93 110 157 198 216 -55 30 60 10 16 1 1 3 20 43 89 100 131 171 -56 50 35 10 19 1 1 4 28 50 81 127 140 163 188 237 -57 30 25 10 23 1 1 4 18 38 71 118 145 158 175 223 -58 15 10 10 20 1 1 3 41 87 117 152 193 221 -59 10 20 10 19 1 1 3 9 53 86 135 152 167 -60 15 60 10 17 1 1 3 2 12 29 62 82 128 -61 45 65 10 9 1 1 3 23 39 62 107 133 150 -62 65 35 10 3 1 1 4 10 46 88 136 154 191 235 258 -63 65 20 10 6 1 1 4 26 46 78 113 126 163 194 240 -64 45 30 10 17 1 1 4 17 58 104 132 145 164 209 221 -65 35 40 10 16 1 1 4 10 27 69 97 123 168 204 247 -66 41 37 10 16 1 1 3 28 44 80 122 164 208 -67 64 42 10 9 1 1 5 7 46 57 94 127 166 186 219 236 271 -68 40 60 10 21 1 1 3 6 27 47 93 130 163 -69 31 52 10 27 1 1 3 40 51 94 112 136 155 -70 35 69 10 23 1 1 3 20 41 59 107 131 144 -71 65 55 10 14 1 1 3 10 46 67 92 123 156 -72 63 65 10 8 1 1 4 22 46 95 109 155 167 188 208 -73 2 60 10 5 1 1 4 16 60 99 141 153 179 213 251 -74 20 20 10 8 1 1 3 6 35 76 119 140 162 -75 5 5 10 16 1 1 3 3 26 54 91 130 141 -76 60 12 10 31 1 1 3 44 73 110 141 162 183 -77 23 3 10 7 1 1 3 37 85 108 152 173 217 -78 8 56 10 27 1 1 4 39 55 90 106 137 164 212 257 -79 6 68 10 30 1 1 5 19 42 58 72 109 139 154 165 175 208 -80 47 47 10 13 1 1 3 46 63 102 145 194 217 -81 49 58 10 10 1 1 3 31 48 71 93 134 144 -82 27 43 10 9 1 1 4 46 62 82 125 152 197 220 242 -83 37 31 10 14 1 1 4 10 44 66 107 152 165 205 242 -84 57 29 10 18 1 1 5 7 20 37 68 88 123 162 182 211 226 -85 63 23 10 2 1 1 3 43 73 85 109 120 147 -86 21 24 10 28 1 1 3 28 62 91 113 127 155 -87 12 24 10 13 1 1 3 39 69 84 118 138 167 -88 24 58 10 19 1 1 3 24 50 98 119 141 174 -89 67 5 10 25 1 1 4 7 43 53 92 117 143 189 223 -90 37 47 10 6 1 1 4 10 33 80 98 132 158 196 244 -91 49 42 10 13 1 1 3 19 63 93 142 175 224 -92 53 43 10 14 1 1 5 0 20 35 57 94 127 156 187 223 238 -93 61 52 10 3 1 1 4 3 16 60 103 135 152 177 226 -94 57 48 10 23 1 1 4 5 45 63 92 123 143 183 232 -95 56 37 10 6 1 1 4 8 19 49 97 112 161 194 211 -96 55 54 10 26 1 1 4 31 75 90 119 148 189 220 239 -97 4 18 10 35 1 1 3 32 61 73 110 140 176 -98 26 52 10 9 1 1 3 44 84 103 145 175 212 -99 26 35 10 15 1 1 3 19 49 79 119 147 174 -100 31 67 10 3 1 1 3 21 32 58 100 145 169 diff --git a/jsprit-instances/instances/belhaiza/rcm105.txt b/jsprit-instances/instances/belhaiza/rcm105.txt deleted file mode 100644 index e7dd558f6..000000000 --- a/jsprit-instances/instances/belhaiza/rcm105.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 14 100 1 -0 200 -0 40 50 0 0 0 0 0 240 -1 25 85 10 20 1 1 2 7 19 73 113 -2 22 75 10 30 1 1 3 2 57 77 129 198 251 -3 22 85 10 10 1 1 4 16 56 72 105 155 166 204 228 -4 20 80 10 40 1 1 2 9 47 104 121 -5 20 85 10 20 1 1 3 38 68 91 112 154 195 -6 18 75 10 20 1 1 2 27 58 121 153 -7 15 75 10 20 1 1 3 22 63 91 103 132 174 -8 15 80 10 10 1 1 3 25 89 108 152 164 201 -9 10 35 10 20 1 1 3 46 58 114 134 165 208 -10 10 40 10 30 1 1 3 23 60 77 90 116 178 -11 8 40 10 40 1 1 2 16 69 95 109 -12 8 45 10 20 1 1 3 9 48 84 106 175 216 -13 5 35 10 10 1 1 4 32 71 103 118 168 181 236 267 -14 5 45 10 10 1 1 3 26 59 69 97 149 199 -15 2 40 10 20 1 1 4 4 20 47 91 135 178 232 272 -16 0 40 10 20 1 1 3 4 37 55 111 135 145 -17 0 45 10 20 1 1 2 12 43 82 136 -18 44 5 10 20 1 1 4 6 48 84 96 133 194 228 251 -19 42 10 10 40 1 1 4 32 51 83 104 150 184 218 268 -20 42 15 10 10 1 1 2 8 55 70 131 -21 40 5 10 10 1 1 4 28 72 89 109 142 201 238 259 -22 40 15 10 40 1 1 3 1 11 71 95 144 210 -23 38 5 10 30 1 1 3 10 45 56 108 145 212 -24 38 15 10 10 1 1 2 27 46 103 149 -25 35 5 10 20 1 1 3 28 74 111 140 154 201 -26 95 30 10 30 1 1 3 13 28 56 112 141 189 -27 95 35 10 20 1 1 2 44 59 118 176 -28 92 30 10 10 1 1 3 16 84 97 131 157 214 -29 90 35 10 10 1 1 3 35 82 115 163 200 237 -30 88 30 10 10 1 1 2 6 24 73 122 -31 88 35 10 20 1 1 2 40 63 79 114 -32 87 30 10 10 1 1 2 37 97 140 209 -33 85 25 10 10 1 1 3 26 83 140 153 197 226 -34 85 35 10 30 1 1 2 29 49 94 108 -35 67 85 10 20 1 1 3 12 27 88 147 169 199 -36 65 85 10 40 1 1 3 8 46 78 108 120 186 -37 65 82 10 10 1 1 2 46 115 135 202 -38 62 80 10 30 1 1 4 17 48 87 111 128 139 208 237 -39 60 80 10 10 1 1 4 37 72 89 104 151 189 234 266 -40 60 85 10 30 1 1 4 12 59 95 127 152 162 176 199 -41 58 75 10 20 1 1 2 20 37 63 117 -42 55 80 10 10 1 1 3 35 87 145 179 232 287 -43 55 85 10 20 1 1 4 28 63 81 119 163 182 230 296 -44 55 82 10 10 1 1 3 25 40 62 113 144 199 -45 20 82 10 10 1 1 3 27 84 148 164 197 262 -46 18 80 10 10 1 1 3 18 81 148 193 214 226 -47 2 45 10 10 1 1 2 27 49 71 97 -48 42 5 10 10 1 1 3 37 48 79 116 179 206 -49 42 12 10 10 1 1 4 33 43 76 127 145 157 204 235 -50 72 35 10 30 1 1 2 22 52 108 155 -51 55 20 10 19 1 1 2 0 13 78 122 -52 25 30 10 3 1 1 2 20 53 111 174 -53 20 50 10 5 1 1 3 8 55 95 135 148 179 -54 55 60 10 16 1 1 4 34 52 72 104 123 145 207 251 -55 30 60 10 16 1 1 2 12 42 94 111 -56 50 35 10 19 1 1 4 10 28 81 114 126 169 211 258 -57 30 25 10 23 1 1 2 24 60 89 158 -58 15 10 10 20 1 1 2 5 66 112 126 -59 10 20 10 19 1 1 3 38 66 100 159 185 234 -60 15 60 10 17 1 1 4 7 29 60 77 98 154 183 225 -61 45 65 10 9 1 1 2 14 58 88 101 -62 65 35 10 3 1 1 3 18 31 66 115 125 194 -63 65 20 10 6 1 1 3 26 89 149 186 199 246 -64 45 30 10 17 1 1 2 44 63 77 127 -65 35 40 10 16 1 1 2 42 56 122 138 -66 41 37 10 16 1 1 4 9 75 131 153 183 195 207 242 -67 64 42 10 9 1 1 3 15 60 124 169 199 241 -68 40 60 10 21 1 1 3 13 81 147 179 194 239 -69 31 52 10 27 1 1 3 9 76 133 162 227 294 -70 35 69 10 23 1 1 3 24 72 129 166 192 230 -71 65 55 10 14 1 1 2 28 96 116 133 -72 63 65 10 8 1 1 2 2 13 33 78 -73 2 60 10 5 1 1 4 3 28 67 86 115 177 211 232 -74 20 20 10 8 1 1 2 39 106 129 179 -75 5 5 10 16 1 1 3 39 101 144 170 213 261 -76 60 12 10 31 1 1 3 44 59 71 113 166 234 -77 23 3 10 7 1 1 3 11 75 89 104 141 203 -78 8 56 10 27 1 1 3 9 69 106 128 190 248 -79 6 68 10 30 1 1 3 31 90 110 130 149 164 -80 47 47 10 13 1 1 2 31 90 148 209 -81 49 58 10 10 1 1 2 27 80 105 149 -82 27 43 10 9 1 1 4 6 26 44 71 97 162 212 257 -83 37 31 10 14 1 1 2 40 52 111 134 -84 57 29 10 18 1 1 2 10 42 77 104 -85 63 23 10 2 1 1 4 4 27 38 69 92 142 169 201 -86 21 24 10 28 1 1 3 22 53 122 139 204 217 -87 12 24 10 13 1 1 3 16 78 131 190 203 238 -88 24 58 10 19 1 1 2 6 45 102 162 -89 67 5 10 25 1 1 3 1 28 41 71 108 158 -90 37 47 10 6 1 1 2 5 59 124 162 -91 49 42 10 13 1 1 3 14 65 92 119 175 242 -92 53 43 10 14 1 1 3 44 71 130 149 197 216 -93 61 52 10 3 1 1 3 35 103 137 167 186 203 -94 57 48 10 23 1 1 3 1 52 97 114 173 183 -95 56 37 10 6 1 1 3 15 68 108 177 205 237 -96 55 54 10 26 1 1 3 1 31 67 123 190 210 -97 4 18 10 35 1 1 4 43 69 97 133 172 202 224 270 -98 26 52 10 9 1 1 2 33 95 159 215 -99 26 35 10 15 1 1 2 25 44 92 113 -100 31 67 10 3 1 1 3 34 59 98 115 156 185 diff --git a/jsprit-instances/instances/belhaiza/rcm106.txt b/jsprit-instances/instances/belhaiza/rcm106.txt deleted file mode 100644 index 110444080..000000000 --- a/jsprit-instances/instances/belhaiza/rcm106.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 14 100 1 -0 200 -0 40 50 0 0 0 0 0 240 -1 25 85 10 20 1 1 2 9 40 99 149 -2 22 75 10 30 1 1 3 3 63 99 157 226 285 -3 22 85 10 10 1 1 3 21 71 105 150 207 238 -4 20 80 10 40 1 1 2 13 62 99 148 -5 20 85 10 20 1 1 2 54 115 176 219 -6 18 75 10 20 1 1 2 31 70 102 153 -7 15 75 10 20 1 1 3 59 113 157 192 236 288 -8 15 80 10 10 1 1 3 31 73 104 152 203 245 -9 10 35 10 20 1 1 3 34 85 133 169 213 244 -10 10 40 10 30 1 1 2 33 93 134 178 -11 8 40 10 40 1 1 3 3 52 117 152 188 228 -12 8 45 10 20 1 1 3 4 47 104 144 182 231 -13 5 35 10 10 1 1 2 47 116 166 231 -14 5 45 10 10 1 1 2 3 48 92 148 -15 2 40 10 20 1 1 3 23 76 118 169 226 256 -16 0 40 10 20 1 1 3 6 65 118 151 203 244 -17 0 45 10 20 1 1 3 23 64 125 158 188 223 -18 44 5 10 20 1 1 3 44 84 143 192 227 278 -19 42 10 10 40 1 1 2 51 98 136 184 -20 42 15 10 10 1 1 3 9 66 103 159 205 250 -21 40 5 10 10 1 1 3 24 80 134 169 233 270 -22 40 15 10 40 1 1 2 34 98 134 187 -23 38 5 10 30 1 1 2 23 85 133 170 -24 38 15 10 10 1 1 3 44 102 133 163 226 265 -25 35 5 10 20 1 1 3 38 94 146 190 228 274 -26 95 30 10 30 1 1 2 55 103 138 191 -27 95 35 10 20 1 1 3 35 89 137 180 213 268 -28 92 30 10 10 1 1 2 31 86 127 160 -29 90 35 10 10 1 1 3 38 80 120 162 194 254 -30 88 30 10 10 1 1 2 44 106 149 217 -31 88 35 10 20 1 1 2 53 118 177 231 -32 87 30 10 10 1 1 3 27 72 110 158 200 248 -33 85 25 10 10 1 1 2 8 39 95 130 -34 85 35 10 30 1 1 3 13 44 90 153 190 224 -35 67 85 10 20 1 1 2 59 119 185 237 -36 65 85 10 40 1 1 2 52 104 152 212 -37 65 82 10 10 1 1 3 10 48 81 135 195 248 -38 62 80 10 30 1 1 2 49 89 132 196 -39 60 80 10 10 1 1 2 37 78 132 183 -40 60 85 10 30 1 1 3 11 59 104 147 178 245 -41 58 75 10 20 1 1 2 58 127 163 231 -42 55 80 10 10 1 1 2 36 72 116 160 -43 55 85 10 20 1 1 2 1 50 92 127 -44 55 82 10 10 1 1 3 25 79 112 173 221 256 -45 20 82 10 10 1 1 3 37 88 132 172 202 249 -46 18 80 10 10 1 1 2 4 43 78 112 -47 2 45 10 10 1 1 3 16 75 133 183 229 288 -48 42 5 10 10 1 1 2 43 103 148 211 -49 42 12 10 10 1 1 2 34 70 125 192 -50 72 35 10 30 1 1 3 17 54 105 138 176 233 -51 55 20 10 19 1 1 2 34 95 161 195 -52 25 30 10 3 1 1 2 57 121 166 231 -53 20 50 10 5 1 1 2 12 49 97 164 -54 55 60 10 16 1 1 3 12 48 89 142 183 221 -55 30 60 10 16 1 1 2 27 88 129 173 -56 50 35 10 19 1 1 3 0 55 112 170 201 246 -57 30 25 10 23 1 1 3 20 52 106 155 191 252 -58 15 10 10 20 1 1 2 34 64 97 164 -59 10 20 10 19 1 1 2 53 100 155 217 -60 15 60 10 17 1 1 3 21 71 107 139 198 265 -61 45 65 10 9 1 1 2 22 81 119 156 -62 65 35 10 3 1 1 2 52 104 147 181 -63 65 20 10 6 1 1 2 42 76 111 168 -64 45 30 10 17 1 1 2 43 88 119 171 -65 35 40 10 16 1 1 3 10 61 111 158 201 270 -66 41 37 10 16 1 1 2 6 70 124 157 -67 64 42 10 9 1 1 2 47 89 135 198 -68 40 60 10 21 1 1 3 48 89 125 163 207 242 -69 31 52 10 27 1 1 3 32 69 129 171 209 276 -70 35 69 10 23 1 1 2 26 69 114 146 -71 65 55 10 14 1 1 3 59 106 150 180 231 296 -72 63 65 10 8 1 1 3 37 100 135 167 233 269 -73 2 60 10 5 1 1 3 7 39 104 136 203 237 -74 20 20 10 8 1 1 2 46 84 127 158 -75 5 5 10 16 1 1 3 54 85 136 196 238 291 -76 60 12 10 31 1 1 3 32 98 131 174 219 288 -77 23 3 10 7 1 1 3 22 62 115 182 229 262 -78 8 56 10 27 1 1 2 57 118 182 248 -79 6 68 10 30 1 1 3 27 77 125 186 220 261 -80 47 47 10 13 1 1 2 51 93 162 200 -81 49 58 10 10 1 1 3 10 45 75 106 159 190 -82 27 43 10 9 1 1 2 15 81 117 149 -83 37 31 10 14 1 1 3 19 84 130 167 223 279 -84 57 29 10 18 1 1 2 49 117 155 212 -85 63 23 10 2 1 1 2 49 113 165 205 -86 21 24 10 28 1 1 3 55 88 119 170 229 297 -87 12 24 10 13 1 1 3 13 79 111 144 192 257 -88 24 58 10 19 1 1 3 11 74 122 160 225 287 -89 67 5 10 25 1 1 3 39 102 139 176 212 245 -90 37 47 10 6 1 1 2 39 101 163 227 -91 49 42 10 13 1 1 2 1 58 111 170 -92 53 43 10 14 1 1 3 38 78 113 150 185 226 -93 61 52 10 3 1 1 3 35 75 112 169 232 263 -94 57 48 10 23 1 1 2 13 57 104 145 -95 56 37 10 6 1 1 3 5 43 74 118 156 212 -96 55 54 10 26 1 1 2 37 88 136 180 -97 4 18 10 35 1 1 2 16 82 148 189 -98 26 52 10 9 1 1 2 49 92 138 197 -99 26 35 10 15 1 1 3 29 62 125 160 202 263 -100 31 67 10 3 1 1 2 20 50 107 139 diff --git a/jsprit-instances/instances/belhaiza/rcm107.txt b/jsprit-instances/instances/belhaiza/rcm107.txt deleted file mode 100644 index 3eaf8ccea..000000000 --- a/jsprit-instances/instances/belhaiza/rcm107.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 14 100 1 -0 200 -0 40 50 0 0 0 0 0 240 -1 25 85 10 20 1 1 1 13 45 -2 22 75 10 30 1 1 2 27 109 141 223 -3 22 85 10 10 1 1 2 58 100 153 252 -4 20 80 10 40 1 1 2 2 40 79 156 -5 20 85 10 20 1 1 2 38 83 118 161 -6 18 75 10 20 1 1 2 27 120 157 242 -7 15 75 10 20 1 1 2 49 82 151 223 -8 15 80 10 10 1 1 1 45 99 -9 10 35 10 20 1 1 2 25 116 164 231 -10 10 40 10 30 1 1 1 43 94 -11 8 40 10 40 1 1 1 73 130 -12 8 45 10 20 1 1 2 13 83 114 176 -13 5 35 10 10 1 1 2 77 110 170 212 -14 5 45 10 10 1 1 2 23 78 127 189 -15 2 40 10 20 1 1 1 70 109 -16 0 40 10 20 1 1 1 58 99 -17 0 45 10 20 1 1 2 21 55 104 181 -18 44 5 10 20 1 1 1 34 79 -19 42 10 10 40 1 1 2 63 162 212 303 -20 42 15 10 10 1 1 2 6 83 115 171 -21 40 5 10 10 1 1 2 60 115 160 231 -22 40 15 10 40 1 1 1 57 134 -23 38 5 10 30 1 1 2 59 158 191 228 -24 38 15 10 10 1 1 2 40 110 151 233 -25 35 5 10 20 1 1 2 62 98 128 168 -26 95 30 10 30 1 1 1 28 72 -27 95 35 10 20 1 1 1 39 121 -28 92 30 10 10 1 1 3 11 78 125 157 205 295 -29 90 35 10 10 1 1 1 55 113 -30 88 30 10 10 1 1 1 15 92 -31 88 35 10 20 1 1 2 48 106 152 228 -32 87 30 10 10 1 1 1 14 87 -33 85 25 10 10 1 1 2 69 105 158 227 -34 85 35 10 30 1 1 2 15 72 122 183 -35 67 85 10 20 1 1 1 18 50 -36 65 85 10 40 1 1 2 52 147 191 265 -37 65 82 10 10 1 1 1 1 80 -38 62 80 10 30 1 1 2 73 134 169 239 -39 60 80 10 10 1 1 2 41 126 179 252 -40 60 85 10 30 1 1 1 50 111 -41 58 75 10 20 1 1 1 50 102 -42 55 80 10 10 1 1 2 22 58 100 184 -43 55 85 10 20 1 1 2 21 73 105 187 -44 55 82 10 10 1 1 1 65 160 -45 20 82 10 10 1 1 2 77 159 205 259 -46 18 80 10 10 1 1 1 71 104 -47 2 45 10 10 1 1 2 58 131 176 251 -48 42 5 10 10 1 1 1 25 86 -49 42 12 10 10 1 1 1 11 43 -50 72 35 10 30 1 1 1 52 128 -51 55 20 10 19 1 1 1 67 112 -52 25 30 10 3 1 1 2 14 51 111 200 -53 20 50 10 5 1 1 2 73 142 194 279 -54 55 60 10 16 1 1 1 69 138 -55 30 60 10 16 1 1 3 36 97 133 177 210 282 -56 50 35 10 19 1 1 2 7 90 153 200 -57 30 25 10 23 1 1 3 16 69 123 172 226 293 -58 15 10 10 20 1 1 2 14 77 122 176 -59 10 20 10 19 1 1 2 40 72 140 239 -60 15 60 10 17 1 1 2 25 118 172 212 -61 45 65 10 9 1 1 1 2 66 -62 65 35 10 3 1 1 1 78 130 -63 65 20 10 6 1 1 2 62 122 157 193 -64 45 30 10 17 1 1 2 30 104 155 226 -65 35 40 10 16 1 1 2 29 76 106 167 -66 41 37 10 16 1 1 1 5 50 -67 64 42 10 9 1 1 1 33 72 -68 40 60 10 21 1 1 2 40 89 148 227 -69 31 52 10 27 1 1 2 67 147 211 267 -70 35 69 10 23 1 1 2 12 52 119 189 -71 65 55 10 14 1 1 2 14 98 131 181 -72 63 65 10 8 1 1 2 16 94 138 221 -73 2 60 10 5 1 1 2 46 131 197 234 -74 20 20 10 8 1 1 2 30 86 154 243 -75 5 5 10 16 1 1 2 3 99 137 180 -76 60 12 10 31 1 1 3 35 97 135 176 217 287 -77 23 3 10 7 1 1 1 2 51 -78 8 56 10 27 1 1 3 28 89 154 203 233 307 -79 6 68 10 30 1 1 3 31 109 144 177 232 287 -80 47 47 10 13 1 1 1 38 91 -81 49 58 10 10 1 1 2 12 96 126 159 -82 27 43 10 9 1 1 2 6 100 147 204 -83 37 31 10 14 1 1 2 50 136 172 246 -84 57 29 10 18 1 1 2 13 46 105 200 -85 63 23 10 2 1 1 1 30 110 -86 21 24 10 28 1 1 1 13 58 -87 12 24 10 13 1 1 2 8 99 139 192 -88 24 58 10 19 1 1 1 54 134 -89 67 5 10 25 1 1 1 31 76 -90 37 47 10 6 1 1 2 3 72 123 196 -91 49 42 10 13 1 1 2 26 124 188 222 -92 53 43 10 14 1 1 1 48 83 -93 61 52 10 3 1 1 1 63 114 -94 57 48 10 23 1 1 2 52 111 173 222 -95 56 37 10 6 1 1 1 61 116 -96 55 54 10 26 1 1 1 25 93 -97 4 18 10 35 1 1 2 17 112 154 224 -98 26 52 10 9 1 1 2 30 64 111 187 -99 26 35 10 15 1 1 2 29 60 111 203 -100 31 67 10 3 1 1 2 10 43 109 150 diff --git a/jsprit-instances/instances/belhaiza/rcm108.txt b/jsprit-instances/instances/belhaiza/rcm108.txt deleted file mode 100644 index 37e31c5bf..000000000 --- a/jsprit-instances/instances/belhaiza/rcm108.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 14 100 1 -0 200 -0 40 50 0 0 0 0 0 240 -1 25 85 10 20 1 1 1 13 45 -2 22 75 10 30 1 1 2 27 109 142 224 -3 22 85 10 10 1 1 2 58 100 171 270 -4 20 80 10 40 1 1 2 2 40 86 163 -5 20 85 10 20 1 1 2 38 83 121 164 -6 18 75 10 20 1 1 2 27 120 163 248 -7 15 75 10 20 1 1 2 49 82 181 253 -8 15 80 10 10 1 1 1 45 99 -9 10 35 10 20 1 1 2 25 116 179 246 -10 10 40 10 30 1 1 1 43 94 -11 8 40 10 40 1 1 1 73 130 -12 8 45 10 20 1 1 2 13 83 116 178 -13 5 35 10 10 1 1 2 77 110 193 235 -14 5 45 10 10 1 1 2 23 78 142 204 -15 2 40 10 20 1 1 1 70 109 -16 0 40 10 20 1 1 1 58 99 -17 0 45 10 20 1 1 2 21 55 119 196 -18 44 5 10 20 1 1 1 34 79 -19 42 10 10 40 1 1 2 63 162 228 319 -20 42 15 10 10 1 1 2 6 83 117 173 -21 40 5 10 10 1 1 2 60 115 172 243 -22 40 15 10 40 1 1 1 57 134 -23 38 5 10 30 1 1 2 59 158 194 231 -24 38 15 10 10 1 1 2 40 110 159 241 -25 35 5 10 20 1 1 2 62 98 128 168 -26 95 30 10 30 1 1 1 28 72 -27 95 35 10 20 1 1 1 39 121 -28 92 30 10 10 1 1 3 11 78 139 171 233 323 -29 90 35 10 10 1 1 1 55 113 -30 88 30 10 10 1 1 1 15 92 -31 88 35 10 20 1 1 2 48 106 164 240 -32 87 30 10 10 1 1 1 14 87 -33 85 25 10 10 1 1 2 69 105 175 244 -34 85 35 10 30 1 1 2 15 72 137 198 -35 67 85 10 20 1 1 1 18 50 -36 65 85 10 40 1 1 2 52 147 201 275 -37 65 82 10 10 1 1 1 1 80 -38 62 80 10 30 1 1 2 73 134 173 243 -39 60 80 10 10 1 1 2 41 126 196 269 -40 60 85 10 30 1 1 1 50 111 -41 58 75 10 20 1 1 1 50 102 -42 55 80 10 10 1 1 2 22 58 109 193 -43 55 85 10 20 1 1 2 21 73 107 189 -44 55 82 10 10 1 1 1 65 160 -45 20 82 10 10 1 1 2 77 159 217 271 -46 18 80 10 10 1 1 1 71 104 -47 2 45 10 10 1 1 2 58 131 188 263 -48 42 5 10 10 1 1 1 25 86 -49 42 12 10 10 1 1 1 11 43 -50 72 35 10 30 1 1 1 52 128 -51 55 20 10 19 1 1 1 67 112 -52 25 30 10 3 1 1 2 14 51 135 224 -53 20 50 10 5 1 1 2 73 142 210 295 -54 55 60 10 16 1 1 1 69 138 -55 30 60 10 16 1 1 3 36 97 138 182 217 289 -56 50 35 10 19 1 1 2 7 90 178 225 -57 30 25 10 23 1 1 2 16 69 142 191 -58 15 10 10 20 1 1 2 14 77 133 187 -59 10 20 10 19 1 1 2 40 72 169 268 -60 15 60 10 17 1 1 2 25 118 190 230 -61 45 65 10 9 1 1 1 2 66 -62 65 35 10 3 1 1 1 78 130 -63 65 20 10 6 1 1 2 62 122 161 197 -64 45 30 10 17 1 1 2 30 104 171 242 -65 35 40 10 16 1 1 2 29 76 106 167 -66 41 37 10 16 1 1 1 5 50 -67 64 42 10 9 1 1 1 33 72 -68 40 60 10 21 1 1 2 40 89 170 249 -69 31 52 10 27 1 1 2 67 147 236 292 -70 35 69 10 23 1 1 2 12 52 147 217 -71 65 55 10 14 1 1 2 14 98 133 183 -72 63 65 10 8 1 1 2 16 94 148 231 -73 2 60 10 5 1 1 2 46 131 224 261 -74 20 20 10 8 1 1 2 30 86 183 272 -75 5 5 10 16 1 1 2 3 99 143 186 -76 60 12 10 31 1 1 3 35 97 141 182 231 301 -77 23 3 10 7 1 1 1 2 51 -78 8 56 10 27 1 1 2 28 89 181 230 -79 6 68 10 30 1 1 2 31 109 148 181 -80 47 47 10 13 1 1 1 38 91 -81 49 58 10 10 1 1 2 12 96 126 159 -82 27 43 10 9 1 1 2 6 100 160 217 -83 37 31 10 14 1 1 2 50 136 178 252 -84 57 29 10 18 1 1 2 13 46 127 222 -85 63 23 10 2 1 1 1 30 110 -86 21 24 10 28 1 1 1 13 58 -87 12 24 10 13 1 1 2 8 99 147 200 -88 24 58 10 19 1 1 1 54 134 -89 67 5 10 25 1 1 1 31 76 -90 37 47 10 6 1 1 2 3 72 139 212 -91 49 42 10 13 1 1 2 26 124 213 247 -92 53 43 10 14 1 1 1 48 83 -93 61 52 10 3 1 1 1 63 114 -94 57 48 10 23 1 1 2 52 111 197 246 -95 56 37 10 6 1 1 1 61 116 -96 55 54 10 26 1 1 1 25 93 -97 4 18 10 35 1 1 2 17 112 163 233 -98 26 52 10 9 1 1 2 30 64 123 199 -99 26 35 10 15 1 1 2 29 60 128 220 -100 31 67 10 3 1 1 2 10 43 137 178 diff --git a/jsprit-instances/instances/belhaiza/rcm201.txt b/jsprit-instances/instances/belhaiza/rcm201.txt deleted file mode 100644 index 4f5505ad6..000000000 --- a/jsprit-instances/instances/belhaiza/rcm201.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 3 100 1 -0 1000 -0 40 50 0 0 0 0 0 960 -1 25 85 10 20 1 1 5 15 116 203 328 415 532 617 719 805 913 -2 22 75 10 30 1 1 6 48 177 246 363 414 519 580 713 773 896 955 1079 -3 22 85 10 10 1 1 5 59 161 260 390 457 563 631 759 825 969 -4 20 80 10 40 1 1 5 50 195 253 381 433 556 608 726 784 932 -5 20 85 10 20 1 1 6 5 129 222 328 386 499 566 702 765 868 942 1075 -6 18 75 10 20 1 1 5 95 221 315 454 528 653 707 841 894 1012 -7 15 75 10 20 1 1 5 29 156 240 340 426 561 648 797 851 956 -8 15 80 10 10 1 1 6 26 163 217 336 393 531 593 693 760 870 957 1069 -9 10 35 10 20 1 1 5 83 205 265 388 472 592 675 783 851 960 -10 10 40 10 30 1 1 5 64 194 250 370 428 558 612 755 833 976 -11 8 40 10 40 1 1 5 43 152 237 362 412 548 609 710 807 949 -12 8 45 10 20 1 1 5 68 179 276 376 471 593 649 777 856 964 -13 5 35 10 10 1 1 5 43 159 213 344 425 541 595 720 808 921 -14 5 45 10 10 1 1 5 78 224 311 452 519 667 720 840 903 1042 -15 2 40 10 20 1 1 5 86 230 316 447 516 648 720 842 914 1024 -16 0 40 10 20 1 1 6 3 106 163 269 351 484 545 647 718 860 919 1024 -17 0 45 10 20 1 1 5 95 233 328 456 533 672 761 864 942 1058 -18 44 5 10 20 1 1 5 79 191 257 399 463 573 649 780 852 983 -19 42 10 10 40 1 1 5 33 142 239 358 433 535 633 782 840 987 -20 42 15 10 10 1 1 5 35 153 227 338 394 495 594 710 781 911 -21 40 5 10 10 1 1 6 59 185 253 365 415 537 598 710 765 868 938 1044 -22 40 15 10 40 1 1 5 77 197 283 421 490 632 703 845 918 1047 -23 38 5 10 30 1 1 5 66 193 280 390 470 587 665 804 899 1004 -24 38 15 10 10 1 1 5 36 155 253 395 463 607 704 833 892 994 -25 35 5 10 20 1 1 5 43 181 245 362 443 587 672 772 841 975 -26 95 30 10 30 1 1 5 35 141 194 325 398 514 603 734 786 893 -27 95 35 10 20 1 1 5 88 216 285 389 483 604 685 825 883 1014 -28 92 30 10 10 1 1 5 35 160 218 320 406 553 639 746 805 924 -29 90 35 10 10 1 1 5 68 173 230 364 433 544 622 758 839 940 -30 88 30 10 10 1 1 5 94 219 272 388 443 585 665 768 833 947 -31 88 35 10 20 1 1 5 19 159 215 323 411 529 606 715 802 918 -32 87 30 10 10 1 1 5 4 119 191 308 376 479 550 682 732 881 -33 85 25 10 10 1 1 5 15 121 204 350 406 509 603 706 802 907 -34 85 35 10 30 1 1 5 18 165 253 363 430 532 583 704 791 936 -35 67 85 10 20 1 1 5 36 149 228 375 446 550 609 756 845 961 -36 65 85 10 40 1 1 5 81 196 294 404 460 589 641 749 801 901 -37 65 82 10 10 1 1 5 86 195 248 361 435 542 608 752 822 931 -38 62 80 10 30 1 1 5 83 199 262 403 485 613 697 824 920 1024 -39 60 80 10 10 1 1 5 75 211 284 402 463 608 661 765 838 982 -40 60 85 10 30 1 1 5 8 117 196 304 386 527 617 759 846 994 -41 58 75 10 20 1 1 5 55 191 254 383 441 573 637 743 839 946 -42 55 80 10 10 1 1 5 65 194 246 355 416 557 618 759 820 938 -43 55 85 10 20 1 1 6 9 119 170 288 348 481 545 663 740 869 936 1067 -44 55 82 10 10 1 1 5 79 195 266 402 487 589 654 784 838 957 -45 20 82 10 10 1 1 5 71 173 247 352 428 573 637 771 835 949 -46 18 80 10 10 1 1 5 89 203 293 400 482 590 667 788 886 1029 -47 2 45 10 10 1 1 5 1 130 188 329 421 569 635 771 846 995 -48 42 5 10 10 1 1 5 86 201 260 373 438 570 621 738 809 948 -49 42 12 10 10 1 1 5 29 151 225 341 401 531 596 735 828 931 -50 72 35 10 30 1 1 5 47 153 229 345 413 558 630 733 791 892 -51 55 20 10 19 1 1 5 13 143 206 329 399 506 570 695 774 921 -52 25 30 10 3 1 1 5 47 192 253 370 466 576 656 776 861 1009 -53 20 50 10 5 1 1 5 93 240 300 415 477 613 678 778 857 964 -54 55 60 10 16 1 1 5 79 182 241 383 482 610 685 804 859 996 -55 30 60 10 16 1 1 5 24 135 234 361 446 583 642 743 819 966 -56 50 35 10 19 1 1 5 86 216 298 440 496 620 694 833 909 1020 -57 30 25 10 23 1 1 5 65 189 241 375 450 583 671 778 868 1014 -58 15 10 10 20 1 1 5 48 182 257 359 446 565 637 762 825 947 -59 10 20 10 19 1 1 5 35 156 234 377 473 600 686 833 932 1059 -60 15 60 10 17 1 1 5 62 198 272 385 469 597 666 770 849 989 -61 45 65 10 9 1 1 5 53 171 247 371 422 540 626 767 860 992 -62 65 35 10 3 1 1 5 22 170 262 389 460 599 664 809 900 1035 -63 65 20 10 6 1 1 5 0 105 194 311 408 548 642 770 821 928 -64 45 30 10 17 1 1 6 6 125 177 313 381 519 582 693 767 867 930 1060 -65 35 40 10 16 1 1 5 55 178 252 386 483 608 676 811 906 1027 -66 41 37 10 16 1 1 5 34 147 238 368 463 608 669 791 864 972 -67 64 42 10 9 1 1 5 51 186 285 403 456 569 636 769 862 977 -68 40 60 10 21 1 1 5 86 219 306 438 508 657 719 826 915 1052 -69 31 52 10 27 1 1 5 47 193 266 369 452 601 676 785 849 987 -70 35 69 10 23 1 1 5 17 139 215 352 431 570 642 784 883 1022 -71 65 55 10 14 1 1 5 57 167 239 387 441 574 666 774 854 979 -72 63 65 10 8 1 1 5 22 159 232 344 414 551 622 742 838 968 -73 2 60 10 5 1 1 5 91 228 306 451 531 664 747 861 949 1093 -74 20 20 10 8 1 1 5 35 137 190 322 405 528 595 725 782 900 -75 5 5 10 16 1 1 5 82 223 286 413 469 611 692 796 870 1002 -76 60 12 10 31 1 1 5 57 184 238 384 474 606 676 790 871 1002 -77 23 3 10 7 1 1 5 71 216 292 428 519 659 717 864 915 1044 -78 8 56 10 27 1 1 5 49 165 227 361 427 535 631 734 813 931 -79 6 68 10 30 1 1 5 86 228 284 430 494 627 706 819 887 989 -80 47 47 10 13 1 1 5 76 215 305 431 491 629 720 868 944 1061 -81 49 58 10 10 1 1 6 21 124 184 319 382 491 562 666 720 846 929 1064 -82 27 43 10 9 1 1 5 44 190 250 379 476 602 694 809 859 976 -83 37 31 10 14 1 1 5 82 182 263 399 488 621 710 845 915 1040 -84 57 29 10 18 1 1 5 57 187 242 373 460 591 660 763 828 942 -85 63 23 10 2 1 1 5 28 138 231 333 391 506 579 713 805 934 -86 21 24 10 28 1 1 5 80 182 281 408 490 593 663 771 847 989 -87 12 24 10 13 1 1 5 17 139 190 334 404 513 584 729 793 922 -88 24 58 10 19 1 1 5 88 202 296 443 522 627 678 814 902 1045 -89 67 5 10 25 1 1 5 76 207 295 396 446 553 649 767 847 968 -90 37 47 10 6 1 1 5 56 190 264 403 480 629 719 851 902 1018 -91 49 42 10 13 1 1 5 20 133 189 324 375 518 594 700 799 916 -92 53 43 10 14 1 1 5 38 184 254 392 475 606 693 818 880 1008 -93 61 52 10 3 1 1 5 19 166 245 372 447 583 677 824 906 1047 -94 57 48 10 23 1 1 5 44 174 234 383 476 596 676 777 839 949 -95 56 37 10 6 1 1 5 63 181 246 388 474 599 669 795 882 1012 -96 55 54 10 26 1 1 5 66 214 306 423 506 638 720 825 921 1070 -97 4 18 10 35 1 1 5 38 171 239 364 416 520 583 702 794 938 -98 26 52 10 9 1 1 5 94 234 320 449 523 649 702 804 902 1018 -99 26 35 10 15 1 1 5 58 166 264 385 479 601 668 769 830 942 -100 31 67 10 3 1 1 5 38 147 220 336 434 571 643 756 849 953 diff --git a/jsprit-instances/instances/belhaiza/rcm202.txt b/jsprit-instances/instances/belhaiza/rcm202.txt deleted file mode 100644 index 0945bbd5f..000000000 --- a/jsprit-instances/instances/belhaiza/rcm202.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 3 100 1 -0 1000 -0 40 50 0 0 0 0 0 960 -1 25 85 10 20 1 1 5 22 125 212 362 449 583 668 773 859 976 -2 22 75 10 30 1 1 5 69 228 297 432 483 594 655 822 882 1029 -3 22 85 10 10 1 1 5 108 242 303 422 498 650 731 836 935 1095 -4 20 80 10 40 1 1 5 72 204 256 403 479 610 679 811 887 1078 -5 20 85 10 20 1 1 5 132 236 324 441 509 664 737 866 919 1067 -6 18 75 10 20 1 1 5 99 215 268 402 485 611 671 820 891 1012 -7 15 75 10 20 1 1 4 108 307 382 570 654 802 870 978 -8 15 80 10 10 1 1 4 75 214 264 394 479 647 746 919 -9 10 35 10 20 1 1 5 78 233 320 471 540 667 755 864 914 1028 -10 10 40 10 30 1 1 5 49 169 256 381 467 616 673 827 899 1002 -11 8 40 10 40 1 1 5 29 175 259 399 482 598 666 785 865 1005 -12 8 45 10 20 1 1 5 13 199 277 464 522 680 770 882 941 1079 -13 5 35 10 10 1 1 4 97 248 298 471 532 635 732 916 -14 5 45 10 10 1 1 5 97 219 316 417 512 657 713 870 949 1065 -15 2 40 10 20 1 1 5 80 241 313 445 499 662 743 875 929 1080 -16 0 40 10 20 1 1 5 44 208 295 421 475 581 671 864 951 1133 -17 0 45 10 20 1 1 5 56 190 279 385 437 564 658 847 933 1095 -18 44 5 10 20 1 1 5 43 188 239 345 402 515 597 763 824 928 -19 42 10 10 40 1 1 4 14 156 248 366 465 642 737 893 -20 42 15 10 10 1 1 5 62 238 298 444 524 640 719 827 881 1057 -21 40 5 10 10 1 1 5 85 213 294 447 520 664 731 849 946 1084 -22 40 15 10 40 1 1 4 136 287 384 580 665 782 848 1038 -23 38 5 10 30 1 1 5 32 168 219 368 434 547 627 825 914 1057 -24 38 15 10 10 1 1 5 52 215 291 450 512 673 745 881 943 1044 -25 35 5 10 20 1 1 4 57 170 233 407 492 643 713 886 -26 95 30 10 30 1 1 4 52 236 307 492 565 724 781 895 -27 95 35 10 20 1 1 4 94 248 335 455 535 670 748 927 -28 92 30 10 10 1 1 4 52 190 288 473 541 729 826 985 -29 90 35 10 10 1 1 5 79 199 259 386 437 564 636 813 877 1012 -30 88 30 10 10 1 1 5 0 163 247 417 469 607 675 788 841 1003 -31 88 35 10 20 1 1 5 1 106 202 359 428 536 630 773 854 1034 -32 87 30 10 10 1 1 5 69 186 254 405 463 568 654 848 934 1048 -33 85 25 10 10 1 1 5 77 193 248 435 497 630 715 826 883 1051 -34 85 35 10 30 1 1 4 99 237 288 444 520 682 754 871 -35 67 85 10 20 1 1 5 116 222 275 386 450 610 699 830 900 1082 -36 65 85 10 40 1 1 5 110 237 295 415 483 595 654 830 896 1050 -37 65 82 10 10 1 1 5 42 199 266 371 424 568 650 787 886 1028 -38 62 80 10 30 1 1 4 122 258 330 484 565 748 804 909 -39 60 80 10 10 1 1 5 16 123 217 323 419 529 626 823 883 1002 -40 60 85 10 30 1 1 4 102 292 371 525 604 735 811 1001 -41 58 75 10 20 1 1 4 134 272 341 468 547 741 812 921 -42 55 80 10 10 1 1 5 70 234 323 468 531 677 731 842 934 1065 -43 55 85 10 20 1 1 5 2 106 185 289 384 502 555 681 755 870 -44 55 82 10 10 1 1 5 25 158 241 382 442 608 698 893 954 1121 -45 20 82 10 10 1 1 4 76 240 294 462 538 730 828 932 -46 18 80 10 10 1 1 5 12 135 229 336 406 552 611 795 868 988 -47 2 45 10 10 1 1 5 25 143 201 309 400 558 650 815 913 1094 -48 42 5 10 10 1 1 5 100 202 281 438 520 646 702 819 876 1005 -49 42 12 10 10 1 1 5 114 218 309 431 499 622 686 808 906 1048 -50 72 35 10 30 1 1 5 49 158 241 343 411 532 611 739 820 974 -51 55 20 10 19 1 1 5 16 162 215 413 476 668 764 892 958 1145 -52 25 30 10 3 1 1 5 96 201 266 427 481 619 675 824 913 1097 -53 20 50 10 5 1 1 5 9 143 215 383 470 574 648 759 835 1026 -54 55 60 10 16 1 1 4 39 168 265 393 486 663 756 890 -55 30 60 10 16 1 1 4 120 274 348 545 632 829 899 1033 -56 50 35 10 19 1 1 4 80 193 284 385 483 600 686 870 -57 30 25 10 23 1 1 5 42 179 242 432 514 632 699 830 919 1021 -58 15 10 10 20 1 1 4 37 220 292 481 547 677 757 905 -59 10 20 10 19 1 1 5 10 201 277 392 473 591 654 780 836 1008 -60 15 60 10 17 1 1 5 60 167 225 327 406 568 642 774 829 974 -61 45 65 10 9 1 1 5 19 179 242 389 459 573 637 787 866 1061 -62 65 35 10 3 1 1 5 56 156 236 373 447 638 699 833 929 1050 -63 65 20 10 6 1 1 4 55 241 316 515 594 792 890 1084 -64 45 30 10 17 1 1 4 95 254 328 481 563 676 730 875 -65 35 40 10 16 1 1 5 78 196 265 464 551 701 775 886 948 1070 -66 41 37 10 16 1 1 4 130 248 347 499 558 671 734 891 -67 64 42 10 9 1 1 5 65 230 319 432 493 641 718 871 929 1085 -68 40 60 10 21 1 1 4 19 169 265 442 503 684 759 928 -69 31 52 10 27 1 1 5 3 130 220 364 432 574 652 839 935 1089 -70 35 69 10 23 1 1 5 27 226 283 438 508 618 702 830 914 1096 -71 65 55 10 14 1 1 4 77 225 279 448 538 677 772 930 -72 63 65 10 8 1 1 4 112 305 364 526 594 793 867 1022 -73 2 60 10 5 1 1 5 120 285 359 480 571 702 772 878 934 1086 -74 20 20 10 8 1 1 4 115 270 341 519 584 775 866 1036 -75 5 5 10 16 1 1 5 56 158 208 318 407 541 638 819 913 1069 -76 60 12 10 31 1 1 5 113 215 307 455 535 697 750 889 941 1113 -77 23 3 10 7 1 1 5 31 168 218 345 425 574 650 777 833 1000 -78 8 56 10 27 1 1 4 69 218 303 497 568 704 775 966 -79 6 68 10 30 1 1 5 23 145 222 369 428 590 675 841 917 1087 -80 47 47 10 13 1 1 4 90 197 262 396 495 682 757 886 -81 49 58 10 10 1 1 4 43 220 303 464 546 735 834 1008 -82 27 43 10 9 1 1 4 37 212 298 485 569 708 804 938 -83 37 31 10 14 1 1 4 40 217 306 406 505 620 692 874 -84 57 29 10 18 1 1 4 61 246 345 524 620 741 807 959 -85 63 23 10 2 1 1 4 81 201 273 470 524 690 782 899 -86 21 24 10 28 1 1 4 134 290 358 514 575 750 823 947 -87 12 24 10 13 1 1 5 27 132 218 319 416 590 668 859 939 1105 -88 24 58 10 19 1 1 4 34 211 271 420 494 667 743 919 -89 67 5 10 25 1 1 5 83 249 317 451 504 618 710 892 955 1109 -90 37 47 10 6 1 1 4 89 252 310 458 538 692 746 938 -91 49 42 10 13 1 1 4 87 228 316 479 561 748 835 1025 -92 53 43 10 14 1 1 4 131 313 392 508 587 689 749 929 -93 61 52 10 3 1 1 5 24 149 202 334 402 595 649 808 894 1024 -94 57 48 10 23 1 1 4 127 317 400 512 575 704 756 915 -95 56 37 10 6 1 1 4 68 189 264 418 507 647 723 902 -96 55 54 10 26 1 1 4 73 208 279 477 564 745 798 940 -97 4 18 10 35 1 1 4 12 164 247 417 508 683 779 900 -98 26 52 10 9 1 1 5 115 245 295 430 517 660 710 822 908 1093 -99 26 35 10 15 1 1 5 54 204 284 437 518 678 759 869 922 1097 -100 31 67 10 3 1 1 5 4 148 201 381 441 592 644 773 838 1025 diff --git a/jsprit-instances/instances/belhaiza/rcm203.txt b/jsprit-instances/instances/belhaiza/rcm203.txt deleted file mode 100644 index 87380a251..000000000 --- a/jsprit-instances/instances/belhaiza/rcm203.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 3 100 1 -0 1000 -0 40 50 0 0 0 0 0 960 -1 25 85 10 20 1 1 3 22 129 216 417 504 672 -2 22 75 10 30 1 1 3 23 264 363 608 683 902 -3 22 85 10 10 1 1 4 15 194 277 383 456 603 677 820 -4 20 80 10 40 1 1 3 108 233 300 581 640 898 -5 20 85 10 20 1 1 4 73 277 358 469 568 789 856 983 -6 18 75 10 20 1 1 4 121 295 371 535 587 781 857 1019 -7 15 75 10 20 1 1 4 79 284 357 489 557 666 764 873 -8 15 80 10 10 1 1 4 17 129 192 467 553 686 739 907 -9 10 35 10 20 1 1 4 29 170 246 432 521 820 895 1171 -10 10 40 10 30 1 1 3 8 183 251 485 564 814 -11 8 40 10 40 1 1 4 41 250 334 435 521 764 851 1148 -12 8 45 10 20 1 1 3 78 197 274 430 505 720 -13 5 35 10 10 1 1 5 54 209 297 415 465 594 654 803 865 1036 -14 5 45 10 10 1 1 4 19 227 299 406 479 752 822 965 -15 2 40 10 20 1 1 4 83 263 333 566 646 773 866 1001 -16 0 40 10 20 1 1 3 78 352 410 626 716 841 -17 0 45 10 20 1 1 4 62 200 285 487 537 783 844 950 -18 44 5 10 20 1 1 3 90 378 445 672 743 955 -19 42 10 10 40 1 1 3 83 299 375 634 713 936 -20 42 15 10 10 1 1 4 86 276 342 458 533 760 823 941 -21 40 5 10 10 1 1 4 88 248 311 475 528 779 875 993 -22 40 15 10 40 1 1 4 8 190 253 512 606 716 797 1076 -23 38 5 10 30 1 1 4 54 283 355 545 617 759 812 974 -24 38 15 10 10 1 1 4 31 139 210 478 537 658 746 1015 -25 35 5 10 20 1 1 4 109 222 300 465 553 827 900 1090 -26 95 30 10 30 1 1 4 81 197 251 503 594 744 810 1081 -27 95 35 10 20 1 1 4 64 252 319 456 553 729 804 912 -28 92 30 10 10 1 1 4 44 325 405 536 604 776 850 997 -29 90 35 10 10 1 1 4 107 293 349 466 547 740 819 995 -30 88 30 10 10 1 1 5 35 137 190 335 391 514 601 784 859 1014 -31 88 35 10 20 1 1 3 55 302 390 651 743 988 -32 87 30 10 10 1 1 3 128 342 430 658 722 859 -33 85 25 10 10 1 1 3 94 302 389 530 610 780 -34 85 35 10 30 1 1 4 13 228 324 604 672 849 947 1217 -35 67 85 10 20 1 1 3 28 167 240 525 583 772 -36 65 85 10 40 1 1 4 38 253 316 458 546 652 719 910 -37 65 82 10 10 1 1 4 86 363 448 549 618 856 912 1020 -38 62 80 10 30 1 1 4 9 234 307 474 563 787 839 970 -39 60 80 10 10 1 1 3 126 341 410 526 620 806 -40 60 85 10 30 1 1 4 86 313 388 522 590 792 850 960 -41 58 75 10 20 1 1 4 77 210 265 540 602 768 853 976 -42 55 80 10 10 1 1 4 31 159 245 422 473 685 761 985 -43 55 85 10 20 1 1 4 116 228 281 403 467 687 776 938 -44 55 82 10 10 1 1 4 90 272 362 517 575 715 783 908 -45 20 82 10 10 1 1 4 42 257 324 434 487 675 757 932 -46 18 80 10 10 1 1 4 2 300 394 566 638 846 927 1194 -47 2 45 10 10 1 1 3 92 376 432 546 640 753 -48 42 5 10 10 1 1 3 133 419 478 766 854 994 -49 42 12 10 10 1 1 3 57 225 320 427 504 754 -50 72 35 10 30 1 1 4 81 244 320 601 655 824 893 1191 -51 55 20 10 19 1 1 3 81 370 441 559 618 908 -52 25 30 10 3 1 1 3 117 400 475 704 793 983 -53 20 50 10 5 1 1 5 24 150 200 309 388 497 592 728 781 933 -54 55 60 10 16 1 1 3 120 318 377 543 626 808 -55 30 60 10 16 1 1 4 131 274 357 620 686 830 921 1195 -56 50 35 10 19 1 1 4 126 244 296 503 589 882 950 1208 -57 30 25 10 23 1 1 3 63 339 431 613 673 811 -58 15 10 10 20 1 1 3 120 383 474 654 713 943 -59 10 20 10 19 1 1 3 116 346 444 706 764 1012 -60 15 60 10 17 1 1 3 19 177 240 524 607 826 -61 45 65 10 9 1 1 3 114 223 314 458 526 673 -62 65 35 10 3 1 1 4 58 215 275 568 636 755 838 943 -63 65 20 10 6 1 1 4 39 214 291 509 576 800 856 1049 -64 45 30 10 17 1 1 4 126 238 302 456 549 833 924 1091 -65 35 40 10 16 1 1 4 67 185 277 403 469 727 778 937 -66 41 37 10 16 1 1 4 93 206 258 448 503 751 846 1042 -67 64 42 10 9 1 1 4 40 279 343 500 588 878 945 1217 -68 40 60 10 21 1 1 4 112 242 324 457 534 719 817 1092 -69 31 52 10 27 1 1 3 94 296 352 459 509 726 -70 35 69 10 23 1 1 4 132 267 353 621 720 885 953 1153 -71 65 55 10 14 1 1 4 106 210 268 455 546 838 932 1086 -72 63 65 10 8 1 1 4 45 206 286 482 571 713 766 929 -73 2 60 10 5 1 1 4 10 293 369 500 581 718 781 933 -74 20 20 10 8 1 1 4 50 330 402 516 574 679 758 982 -75 5 5 10 16 1 1 4 21 143 234 437 494 715 778 973 -76 60 12 10 31 1 1 4 130 289 354 570 653 850 936 1067 -77 23 3 10 7 1 1 4 125 345 412 610 670 815 885 1170 -78 8 56 10 27 1 1 3 98 390 483 718 817 998 -79 6 68 10 30 1 1 4 34 278 343 446 525 653 729 968 -80 47 47 10 13 1 1 4 89 215 269 460 551 665 724 995 -81 49 58 10 10 1 1 4 104 305 379 501 563 707 806 1015 -82 27 43 10 9 1 1 4 3 243 340 476 575 779 838 965 -83 37 31 10 14 1 1 4 65 296 385 512 573 770 847 1054 -84 57 29 10 18 1 1 3 19 219 315 569 630 893 -85 63 23 10 2 1 1 4 62 251 302 456 546 734 802 986 -86 21 24 10 28 1 1 3 128 412 489 733 792 1090 -87 12 24 10 13 1 1 3 112 349 435 674 737 966 -88 24 58 10 19 1 1 4 54 173 252 514 587 869 951 1106 -89 67 5 10 25 1 1 4 76 249 325 522 573 746 832 1098 -90 37 47 10 6 1 1 3 71 254 341 467 539 700 -91 49 42 10 13 1 1 4 75 222 311 580 675 860 945 1107 -92 53 43 10 14 1 1 3 47 147 237 493 571 862 -93 61 52 10 3 1 1 4 3 133 207 472 553 822 891 1114 -94 57 48 10 23 1 1 4 67 168 231 452 535 739 828 953 -95 56 37 10 6 1 1 3 78 270 344 583 680 880 -96 55 54 10 26 1 1 4 60 232 303 586 654 807 898 1120 -97 4 18 10 35 1 1 3 76 271 330 554 639 871 -98 26 52 10 9 1 1 4 49 256 319 615 698 812 877 1046 -99 26 35 10 15 1 1 3 85 293 358 613 696 919 -100 31 67 10 3 1 1 4 34 163 252 501 564 814 900 1174 diff --git a/jsprit-instances/instances/belhaiza/rcm204.txt b/jsprit-instances/instances/belhaiza/rcm204.txt deleted file mode 100644 index 3ca0e6b66..000000000 --- a/jsprit-instances/instances/belhaiza/rcm204.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 3 100 1 -0 1000 -0 40 50 0 0 0 0 0 960 -1 25 85 10 20 1 1 3 31 145 232 535 622 859 -2 22 75 10 30 1 1 2 32 415 514 904 -3 22 85 10 10 1 1 4 22 281 364 476 549 744 818 1004 -4 20 80 10 40 1 1 3 151 302 369 832 891 1308 -5 20 85 10 20 1 1 3 103 411 492 614 713 1055 -6 18 75 10 20 1 1 3 110 351 445 693 769 997 -7 15 75 10 20 1 1 3 60 177 243 558 653 912 -8 15 80 10 10 1 1 3 9 295 347 596 654 1141 -9 10 35 10 20 1 1 3 69 390 463 679 732 1026 -10 10 40 10 30 1 1 3 13 250 333 540 600 898 -11 8 40 10 40 1 1 2 98 551 635 929 -12 8 45 10 20 1 1 3 105 363 413 634 719 1091 -13 5 35 10 10 1 1 3 18 158 222 552 630 951 -14 5 45 10 10 1 1 3 28 438 500 605 672 854 -15 2 40 10 20 1 1 2 95 494 571 965 -16 0 40 10 20 1 1 3 89 535 605 792 850 1225 -17 0 45 10 20 1 1 3 117 378 448 815 895 1049 -18 44 5 10 20 1 1 2 109 557 615 948 -19 42 10 10 40 1 1 3 87 264 349 654 704 1097 -20 42 15 10 10 1 1 2 126 602 669 1024 -21 40 5 10 10 1 1 3 111 578 636 789 869 1201 -22 40 15 10 40 1 1 3 62 395 476 757 823 955 -23 38 5 10 30 1 1 3 149 359 441 662 725 953 -24 38 15 10 10 1 1 3 17 141 231 704 791 1219 -25 35 5 10 20 1 1 3 9 219 313 771 857 1205 -26 95 30 10 30 1 1 3 60 340 391 518 575 730 -27 95 35 10 20 1 1 3 8 371 463 653 708 976 -28 92 30 10 10 1 1 2 108 607 696 1163 -29 90 35 10 10 1 1 3 88 369 427 611 665 1008 -30 88 30 10 10 1 1 3 64 506 570 752 828 1176 -31 88 35 10 20 1 1 3 182 434 509 625 723 1220 -32 87 30 10 10 1 1 3 62 525 605 767 835 1080 -33 85 25 10 10 1 1 2 117 611 700 972 -34 85 35 10 30 1 1 3 73 426 502 839 901 1248 -35 67 85 10 20 1 1 3 43 245 300 429 499 652 -36 65 85 10 40 1 1 3 97 307 393 774 864 1126 -37 65 82 10 10 1 1 3 113 381 438 728 806 969 -38 62 80 10 30 1 1 3 103 236 296 671 738 1141 -39 60 80 10 10 1 1 3 110 527 622 762 831 1303 -40 60 85 10 30 1 1 2 72 525 622 959 -41 58 75 10 20 1 1 3 110 291 351 562 613 824 -42 55 80 10 10 1 1 3 67 349 443 656 706 1059 -43 55 85 10 20 1 1 3 120 366 432 558 639 929 -44 55 82 10 10 1 1 4 10 172 250 353 407 877 948 1206 -45 20 82 10 10 1 1 3 33 385 460 762 814 1060 -46 18 80 10 10 1 1 4 139 298 357 609 667 853 946 1272 -47 2 45 10 10 1 1 3 137 284 341 714 783 974 -48 42 5 10 10 1 1 3 7 331 407 755 827 998 -49 42 12 10 10 1 1 4 14 158 222 563 652 876 946 1377 -50 72 35 10 30 1 1 3 30 210 278 428 487 894 -51 55 20 10 19 1 1 3 59 390 457 577 630 907 -52 25 30 10 3 1 1 2 82 445 495 991 -53 20 50 10 5 1 1 3 10 362 419 571 654 1122 -54 55 60 10 16 1 1 2 187 660 719 1195 -55 30 60 10 16 1 1 3 80 316 411 526 603 1003 -56 50 35 10 19 1 1 3 114 340 416 879 933 1172 -57 30 25 10 23 1 1 3 73 282 361 839 910 1047 -58 15 10 10 20 1 1 2 164 630 705 1064 -59 10 20 10 19 1 1 2 38 478 557 1047 -60 15 60 10 17 1 1 3 9 116 175 511 574 1035 -61 45 65 10 9 1 1 3 94 256 322 774 844 1017 -62 65 35 10 3 1 1 2 41 407 497 980 -63 65 20 10 6 1 1 3 107 315 392 750 804 1176 -64 45 30 10 17 1 1 3 70 486 581 866 920 1113 -65 35 40 10 16 1 1 3 40 216 306 590 660 1112 -66 41 37 10 16 1 1 3 112 277 359 788 878 1318 -67 64 42 10 9 1 1 3 31 427 478 857 935 1327 -68 40 60 10 21 1 1 3 27 243 306 775 858 1197 -69 31 52 10 27 1 1 3 161 280 371 559 627 821 -70 35 69 10 23 1 1 3 82 297 357 844 912 1050 -71 65 55 10 14 1 1 3 42 411 475 726 803 1140 -72 63 65 10 8 1 1 4 89 331 430 578 674 798 862 1071 -73 2 60 10 5 1 1 2 64 513 599 1028 -74 20 20 10 8 1 1 3 25 322 411 847 911 1140 -75 5 5 10 16 1 1 3 12 251 323 695 782 900 -76 60 12 10 31 1 1 3 176 468 552 865 929 1148 -77 23 3 10 7 1 1 2 149 629 696 1141 -78 8 56 10 27 1 1 3 157 317 399 565 642 913 -79 6 68 10 30 1 1 3 79 318 375 522 606 910 -80 47 47 10 13 1 1 2 186 357 443 880 -81 49 58 10 10 1 1 3 125 298 365 592 681 790 -82 27 43 10 9 1 1 3 184 351 414 847 919 1377 -83 37 31 10 14 1 1 2 40 384 449 868 -84 57 29 10 18 1 1 3 29 160 219 530 593 947 -85 63 23 10 2 1 1 3 173 481 534 780 831 1108 -86 21 24 10 28 1 1 3 114 462 536 765 820 1102 -87 12 24 10 13 1 1 3 157 464 521 863 926 1216 -88 24 58 10 19 1 1 3 96 359 456 674 739 1072 -89 67 5 10 25 1 1 3 30 396 446 836 904 1169 -90 37 47 10 6 1 1 3 43 280 376 563 643 909 -91 49 42 10 13 1 1 2 78 524 599 1096 -92 53 43 10 14 1 1 3 3 204 261 485 569 908 -93 61 52 10 3 1 1 3 14 150 242 674 752 926 -94 57 48 10 23 1 1 3 21 424 485 784 861 1063 -95 56 37 10 6 1 1 3 35 146 222 702 758 1255 -96 55 54 10 26 1 1 2 126 567 623 915 -97 4 18 10 35 1 1 3 130 424 476 854 929 1298 -98 26 52 10 9 1 1 2 176 584 645 1072 -99 26 35 10 15 1 1 3 76 378 453 855 927 1205 -100 31 67 10 3 1 1 3 84 194 265 687 780 1028 diff --git a/jsprit-instances/instances/belhaiza/rcm205.txt b/jsprit-instances/instances/belhaiza/rcm205.txt deleted file mode 100644 index 2d578d91e..000000000 --- a/jsprit-instances/instances/belhaiza/rcm205.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 3 100 1 -0 1000 -0 40 50 0 0 0 0 0 960 -1 25 85 10 20 1 1 2 31 242 416 768 -2 22 75 10 30 1 1 2 9 435 552 964 -3 22 85 10 10 1 1 2 67 418 529 848 -4 20 80 10 40 1 1 2 37 381 559 797 -5 20 85 10 20 1 1 2 152 456 579 837 -6 18 75 10 20 1 1 2 110 416 604 915 -7 15 75 10 20 1 1 3 90 449 580 793 925 1286 -8 15 80 10 10 1 1 2 101 575 691 1064 -9 10 35 10 20 1 1 2 186 400 577 828 -10 10 40 10 30 1 1 3 93 431 543 761 888 1351 -11 8 40 10 40 1 1 2 66 483 609 830 -12 8 45 10 20 1 1 2 39 387 530 794 -13 5 35 10 10 1 1 2 131 477 614 839 -14 5 45 10 10 1 1 2 105 424 524 815 -15 2 40 10 20 1 1 3 18 248 376 748 905 1270 -16 0 40 10 20 1 1 2 17 335 449 881 -17 0 45 10 20 1 1 2 48 355 504 928 -18 44 5 10 20 1 1 3 27 389 533 744 890 1349 -19 42 10 10 40 1 1 3 129 378 515 774 934 1255 -20 42 15 10 10 1 1 2 33 418 527 985 -21 40 5 10 10 1 1 2 112 482 594 844 -22 40 15 10 40 1 1 3 6 210 394 664 829 1311 -23 38 5 10 30 1 1 2 42 368 469 882 -24 38 15 10 10 1 1 2 111 359 538 920 -25 35 5 10 20 1 1 2 112 496 641 939 -26 95 30 10 30 1 1 2 52 280 410 842 -27 95 35 10 20 1 1 2 179 406 588 1032 -28 92 30 10 10 1 1 2 66 557 663 986 -29 90 35 10 10 1 1 2 140 526 665 1059 -30 88 30 10 10 1 1 2 27 268 433 832 -31 88 35 10 20 1 1 2 161 429 539 865 -32 87 30 10 10 1 1 2 148 602 758 1257 -33 85 25 10 10 1 1 2 106 543 722 941 -34 85 35 10 30 1 1 2 116 366 525 749 -35 67 85 10 20 1 1 2 48 277 462 911 -36 65 85 10 40 1 1 3 35 376 514 818 922 1406 -37 65 82 10 10 1 1 2 186 684 801 1288 -38 62 80 10 30 1 1 3 70 378 527 798 911 1120 -39 60 80 10 10 1 1 2 151 480 593 819 -40 60 85 10 30 1 1 2 48 433 577 887 -41 58 75 10 20 1 1 2 80 319 446 868 -42 55 80 10 10 1 1 2 141 552 732 1053 -43 55 85 10 20 1 1 2 113 439 553 895 -44 55 82 10 10 1 1 2 103 328 448 854 -45 20 82 10 10 1 1 2 110 548 738 968 -46 18 80 10 10 1 1 2 72 537 732 1110 -47 2 45 10 10 1 1 2 110 371 492 775 -48 42 5 10 10 1 1 2 149 358 493 830 -49 42 12 10 10 1 1 2 135 336 474 882 -50 72 35 10 30 1 1 2 91 391 569 955 -51 55 20 10 19 1 1 2 1 216 408 781 -52 25 30 10 3 1 1 2 83 401 581 1049 -53 20 50 10 5 1 1 2 33 422 573 924 -54 55 60 10 16 1 1 3 139 383 501 815 931 1195 -55 30 60 10 16 1 1 2 49 349 520 755 -56 50 35 10 19 1 1 3 43 286 458 774 877 1245 -57 30 25 10 23 1 1 2 97 429 561 1056 -58 15 10 10 20 1 1 2 21 476 636 858 -59 10 20 10 19 1 1 2 152 445 586 1034 -60 15 60 10 17 1 1 3 30 290 426 664 783 1213 -61 45 65 10 9 1 1 2 59 432 566 781 -62 65 35 10 3 1 1 3 72 291 433 830 931 1428 -63 65 20 10 6 1 1 2 104 572 755 1092 -64 45 30 10 17 1 1 2 176 423 530 931 -65 35 40 10 16 1 1 2 171 391 584 815 -66 41 37 10 16 1 1 2 37 519 696 957 -67 64 42 10 9 1 1 2 60 438 628 1006 -68 40 60 10 21 1 1 2 52 546 740 1054 -69 31 52 10 27 1 1 2 38 523 702 999 -70 35 69 10 23 1 1 2 98 492 671 1007 -71 65 55 10 14 1 1 2 114 606 723 962 -72 63 65 10 8 1 1 2 9 214 332 709 -73 2 60 10 5 1 1 3 12 291 440 686 819 1283 -74 20 20 10 8 1 1 2 157 644 766 1169 -75 5 5 10 16 1 1 2 158 619 775 1056 -76 60 12 10 31 1 1 2 176 404 508 869 -77 23 3 10 7 1 1 2 44 517 624 851 -78 8 56 10 27 1 1 2 36 488 634 896 -79 6 68 10 30 1 1 2 125 573 691 945 -80 47 47 10 13 1 1 2 124 571 752 1207 -81 49 58 10 10 1 1 2 110 529 655 1029 -82 27 43 10 9 1 1 3 26 279 393 680 807 1283 -83 37 31 10 14 1 1 2 161 375 557 823 -84 57 29 10 18 1 1 2 43 355 497 783 -85 63 23 10 2 1 1 3 18 283 385 693 814 1215 -86 21 24 10 28 1 1 2 89 395 593 829 -87 12 24 10 13 1 1 2 64 526 698 1145 -88 24 58 10 19 1 1 2 25 372 551 1003 -89 67 5 10 25 1 1 3 4 292 398 702 847 1251 -90 37 47 10 6 1 1 2 21 443 634 978 -91 49 42 10 13 1 1 2 57 466 594 879 -92 53 43 10 14 1 1 2 179 467 648 893 -93 61 52 10 3 1 1 2 142 633 774 1078 -94 57 48 10 23 1 1 2 6 412 570 809 -95 56 37 10 6 1 1 2 62 479 629 1124 -96 55 54 10 26 1 1 2 4 306 449 883 -97 4 18 10 35 1 1 2 172 453 583 916 -98 26 52 10 9 1 1 2 133 596 787 1217 -99 26 35 10 15 1 1 2 101 347 510 765 -100 31 67 10 3 1 1 3 139 417 566 803 955 1251 diff --git a/jsprit-instances/instances/belhaiza/rcm206.txt b/jsprit-instances/instances/belhaiza/rcm206.txt deleted file mode 100644 index bda6fe113..000000000 --- a/jsprit-instances/instances/belhaiza/rcm206.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 3 100 1 -0 1000 -0 40 50 0 0 0 0 0 960 -1 25 85 10 20 1 1 2 39 257 431 885 -2 22 75 10 30 1 1 2 12 588 705 1259 -3 22 85 10 10 1 1 2 84 535 646 1044 -4 20 80 10 40 1 1 2 52 490 609 1050 -5 20 85 10 20 1 1 1 218 812 -6 18 75 10 20 1 1 2 125 441 546 1015 -7 15 75 10 20 1 1 2 238 741 876 1144 -8 15 80 10 10 1 1 2 127 487 591 1027 -9 10 35 10 20 1 1 2 139 602 748 1029 -10 10 40 10 30 1 1 2 132 717 846 1227 -11 8 40 10 40 1 1 2 14 456 643 907 -12 8 45 10 20 1 1 2 16 387 554 888 -13 5 35 10 10 1 1 1 189 888 -14 5 45 10 10 1 1 2 14 403 539 1075 -15 2 40 10 20 1 1 2 95 588 718 1192 -16 0 40 10 20 1 1 2 24 597 754 1002 -17 0 45 10 20 1 1 3 94 433 610 856 957 1231 -18 44 5 10 20 1 1 2 179 506 679 1127 -19 42 10 10 40 1 1 2 207 629 750 1182 -20 42 15 10 10 1 1 2 39 582 701 1237 -21 40 5 10 10 1 1 2 96 630 791 1059 -22 40 15 10 40 1 1 2 136 771 887 1379 -23 38 5 10 30 1 1 2 93 702 847 1143 -24 38 15 10 10 1 1 2 176 733 836 1044 -25 35 5 10 20 1 1 2 153 682 838 1215 -26 95 30 10 30 1 1 2 220 645 758 1247 -27 95 35 10 20 1 1 2 140 648 793 1156 -28 92 30 10 10 1 1 2 124 642 769 1016 -29 90 35 10 10 1 1 2 155 506 632 992 -30 88 30 10 10 1 1 2 178 788 922 1607 -31 88 35 10 20 1 1 1 215 863 -32 87 30 10 10 1 1 2 108 507 628 1053 -33 85 25 10 10 1 1 2 33 252 418 690 -34 85 35 10 30 1 1 2 54 275 417 1038 -35 67 85 10 20 1 1 1 239 824 -36 65 85 10 40 1 1 2 209 693 838 1420 -37 65 82 10 10 1 1 2 40 345 453 957 -38 62 80 10 30 1 1 2 199 524 657 1284 -39 60 80 10 10 1 1 2 149 489 651 1119 -40 60 85 10 30 1 1 2 44 480 618 992 -41 58 75 10 20 1 1 1 232 928 -42 55 80 10 10 1 1 2 146 423 559 940 -43 55 85 10 20 1 1 2 7 456 588 854 -44 55 82 10 10 1 1 2 103 608 716 1309 -45 20 82 10 10 1 1 2 148 615 751 1077 -46 18 80 10 10 1 1 2 17 330 443 702 -47 2 45 10 10 1 1 2 66 637 807 1262 -48 42 5 10 10 1 1 2 174 756 894 1517 -49 42 12 10 10 1 1 2 137 416 580 1248 -50 72 35 10 30 1 1 3 70 363 517 759 879 1423 -51 55 20 10 19 1 1 2 138 735 925 1175 -52 25 30 10 3 1 1 1 230 855 -53 20 50 10 5 1 1 2 50 349 495 1158 -54 55 60 10 16 1 1 2 48 328 455 943 -55 30 60 10 16 1 1 2 109 698 826 1202 -56 50 35 10 19 1 1 2 1 517 686 1237 -57 30 25 10 23 1 1 2 80 313 475 913 -58 15 10 10 20 1 1 2 138 342 450 1113 -59 10 20 10 19 1 1 2 214 631 794 1397 -60 15 60 10 17 1 1 2 87 542 659 885 -61 45 65 10 9 1 1 2 91 655 776 1066 -62 65 35 10 3 1 1 2 210 693 826 1078 -63 65 20 10 6 1 1 2 171 429 543 1084 -64 45 30 10 17 1 1 2 175 569 672 1152 -65 35 40 10 16 1 1 2 43 511 661 1081 -66 41 37 10 16 1 1 2 26 651 811 1048 -67 64 42 10 9 1 1 2 191 546 687 1301 -68 40 60 10 21 1 1 2 193 532 648 948 -69 31 52 10 27 1 1 2 131 429 604 966 -70 35 69 10 23 1 1 2 106 479 616 849 -71 65 55 10 14 1 1 2 237 651 787 994 -72 63 65 10 8 1 1 2 151 770 883 1109 -73 2 60 10 5 1 1 3 29 265 454 688 881 1133 -74 20 20 10 8 1 1 2 186 487 621 844 -75 5 5 10 16 1 1 2 217 435 589 1164 -76 60 12 10 31 1 1 2 129 783 892 1266 -77 23 3 10 7 1 1 2 91 427 586 1259 -78 8 56 10 27 1 1 1 228 826 -79 6 68 10 30 1 1 2 109 566 712 1310 -80 47 47 10 13 1 1 2 204 562 759 1060 -81 49 58 10 10 1 1 3 42 307 408 631 790 1013 -82 27 43 10 9 1 1 2 63 715 830 1062 -83 37 31 10 14 1 1 2 79 719 860 1152 -84 57 29 10 18 1 1 1 196 874 -85 63 23 10 2 1 1 1 198 833 -86 21 24 10 28 1 1 2 220 467 571 1040 -87 12 24 10 13 1 1 2 55 710 817 1062 -88 24 58 10 19 1 1 2 46 667 813 1117 -89 67 5 10 25 1 1 2 156 769 887 1178 -90 37 47 10 6 1 1 2 156 768 949 1574 -91 49 42 10 13 1 1 2 7 555 712 1277 -92 53 43 10 14 1 1 2 155 486 599 888 -93 61 52 10 3 1 1 2 143 478 597 1136 -94 57 48 10 23 1 1 2 54 440 582 926 -95 56 37 10 6 1 1 3 23 332 434 814 935 1471 -96 55 54 10 26 1 1 2 149 622 768 1145 -97 4 18 10 35 1 1 2 65 726 918 1261 -98 26 52 10 9 1 1 2 197 564 706 1270 -99 26 35 10 15 1 1 3 118 363 547 814 946 1541 -100 31 67 10 3 1 1 2 83 293 461 693 diff --git a/jsprit-instances/instances/belhaiza/rcm207.txt b/jsprit-instances/instances/belhaiza/rcm207.txt deleted file mode 100644 index b52558f7a..000000000 --- a/jsprit-instances/instances/belhaiza/rcm207.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 3 100 1 -0 1000 -0 40 50 0 0 0 0 0 960 -1 25 85 10 20 1 1 1 52 281 -2 22 75 10 30 1 1 1 109 907 -3 22 85 10 10 1 1 2 232 569 788 1781 -4 20 80 10 40 1 1 2 10 301 448 1190 -5 20 85 10 20 1 1 2 154 527 652 1009 -6 18 75 10 20 1 1 1 111 1038 -7 15 75 10 20 1 1 2 199 443 741 1426 -8 15 80 10 10 1 1 1 183 666 -9 10 35 10 20 1 1 1 102 1009 -10 10 40 10 30 1 1 1 172 622 -11 8 40 10 40 1 1 1 292 811 -12 8 45 10 20 1 1 2 52 715 824 1396 -13 5 35 10 10 1 1 2 310 549 803 1140 -14 5 45 10 10 1 1 2 93 582 779 1349 -15 2 40 10 20 1 1 1 280 583 -16 0 40 10 20 1 1 1 232 566 -17 0 45 10 20 1 1 2 86 342 541 1284 -18 44 5 10 20 1 1 1 138 510 -19 42 10 10 40 1 1 1 253 1252 -20 42 15 10 10 1 1 2 27 774 886 1389 -21 40 5 10 10 1 1 2 241 730 909 1577 -22 40 15 10 40 1 1 1 229 973 -23 38 5 10 30 1 1 1 238 1227 -24 38 15 10 10 1 1 1 163 823 -25 35 5 10 20 1 1 2 248 522 624 942 -26 95 30 10 30 1 1 1 114 479 -27 95 35 10 20 1 1 1 159 957 -28 92 30 10 10 1 1 2 46 678 866 1096 -29 90 35 10 10 1 1 1 220 747 -30 88 30 10 10 1 1 1 63 801 -31 88 35 10 20 1 1 2 195 718 898 1633 -32 87 30 10 10 1 1 1 56 750 -33 85 25 10 10 1 1 2 278 554 770 1425 -34 85 35 10 30 1 1 2 61 571 773 1336 -35 67 85 10 20 1 1 1 75 301 -36 65 85 10 40 1 1 1 211 1163 -37 65 82 10 10 1 1 1 6 775 -38 62 80 10 30 1 1 1 293 853 -39 60 80 10 10 1 1 1 166 1005 -40 60 85 10 30 1 1 1 201 763 -41 58 75 10 20 1 1 1 203 665 -42 55 80 10 10 1 1 2 88 363 523 1344 -43 55 85 10 20 1 1 2 85 542 654 1459 -44 55 82 10 10 1 1 1 260 1206 -45 20 82 10 10 1 1 1 310 1104 -46 18 80 10 10 1 1 1 286 526 -47 2 45 10 10 1 1 1 234 931 -48 42 5 10 10 1 1 1 100 660 -49 42 12 10 10 1 1 1 44 275 -50 72 35 10 30 1 1 1 210 941 -51 55 20 10 19 1 1 1 269 650 -52 25 30 10 3 1 1 2 58 345 599 1477 -53 20 50 10 5 1 1 1 294 946 -54 55 60 10 16 1 1 1 279 934 -55 30 60 10 16 1 1 2 147 710 843 1212 -56 50 35 10 19 1 1 1 31 839 -57 30 25 10 23 1 1 2 66 534 758 1182 -58 15 10 10 20 1 1 2 59 637 813 1291 -59 10 20 10 19 1 1 2 163 395 688 1683 -60 15 60 10 17 1 1 1 103 1030 -61 45 65 10 9 1 1 1 9 607 -62 65 35 10 3 1 1 1 315 773 -63 65 20 10 6 1 1 2 251 795 921 1191 -64 45 30 10 17 1 1 1 122 828 -65 35 40 10 16 1 1 2 118 520 622 1177 -66 41 37 10 16 1 1 1 23 404 -67 64 42 10 9 1 1 1 133 439 -68 40 60 10 21 1 1 2 163 583 830 1593 -69 31 52 10 27 1 1 1 271 1052 -70 35 69 10 23 1 1 2 50 366 653 1310 -71 65 55 10 14 1 1 1 59 881 -72 63 65 10 8 1 1 1 65 815 -73 2 60 10 5 1 1 1 184 1019 -74 20 20 10 8 1 1 2 121 629 921 1802 -75 5 5 10 16 1 1 1 13 973 -76 60 12 10 31 1 1 2 142 715 855 1183 -77 23 3 10 7 1 1 1 9 431 -78 8 56 10 27 1 1 2 112 677 954 1380 -79 6 68 10 30 1 1 1 124 879 -80 47 47 10 13 1 1 1 152 620 -81 49 58 10 10 1 1 1 50 875 -82 27 43 10 9 1 1 1 27 967 -83 37 31 10 14 1 1 1 203 1047 -84 57 29 10 18 1 1 2 55 298 544 1496 -85 63 23 10 2 1 1 1 121 903 -86 21 24 10 28 1 1 1 53 426 -87 12 24 10 13 1 1 1 33 935 -88 24 58 10 19 1 1 1 218 990 -89 67 5 10 25 1 1 1 124 506 -90 37 47 10 6 1 1 2 12 660 867 1563 -91 49 42 10 13 1 1 1 104 1091 -92 53 43 10 14 1 1 1 193 453 -93 61 52 10 3 1 1 1 254 703 -94 57 48 10 23 1 1 1 210 741 -95 56 37 10 6 1 1 1 245 734 -96 55 54 10 26 1 1 1 103 741 -97 4 18 10 35 1 1 1 69 1023 -98 26 52 10 9 1 1 2 120 372 557 1284 -99 26 35 10 15 1 1 2 116 327 535 1449 -100 31 67 10 3 1 1 2 41 282 566 893 diff --git a/jsprit-instances/instances/belhaiza/rcm208.txt b/jsprit-instances/instances/belhaiza/rcm208.txt deleted file mode 100644 index 0fe8090bd..000000000 --- a/jsprit-instances/instances/belhaiza/rcm208.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 3 100 1 -0 1000 -0 40 50 0 0 0 0 0 960 -1 25 85 10 20 1 1 1 52 570 -2 22 75 10 30 1 1 1 109 982 -3 22 85 10 10 1 1 1 232 817 -4 20 80 10 40 1 1 2 10 567 762 1601 -5 20 85 10 20 1 1 2 154 762 913 1511 -6 18 75 10 20 1 1 1 111 1065 -7 15 75 10 20 1 1 1 199 726 -8 15 80 10 10 1 1 1 183 860 -9 10 35 10 20 1 1 1 102 1044 -10 10 40 10 30 1 1 1 172 828 -11 8 40 10 40 1 1 1 292 991 -12 8 45 10 20 1 1 1 52 841 -13 5 35 10 10 1 1 1 310 834 -14 5 45 10 10 1 1 1 93 774 -15 2 40 10 20 1 1 1 280 844 -16 0 40 10 20 1 1 1 232 815 -17 0 45 10 20 1 1 2 86 621 919 1758 -18 44 5 10 20 1 1 1 138 745 -19 42 10 10 40 1 1 1 253 1252 -20 42 15 10 10 1 1 1 27 869 -21 40 5 10 10 1 1 1 241 922 -22 40 15 10 40 1 1 1 229 1069 -23 38 5 10 30 1 1 1 238 1231 -24 38 15 10 10 1 1 1 163 950 -25 35 5 10 20 1 1 2 248 794 899 1473 -26 95 30 10 30 1 1 1 114 717 -27 95 35 10 20 1 1 1 159 1033 -28 92 30 10 10 1 1 1 46 816 -29 90 35 10 10 1 1 1 220 924 -30 88 30 10 10 1 1 1 63 899 -31 88 35 10 20 1 1 1 195 896 -32 87 30 10 10 1 1 1 56 864 -33 85 25 10 10 1 1 1 278 826 -34 85 35 10 30 1 1 1 61 755 -35 67 85 10 20 1 1 1 75 591 -36 65 85 10 40 1 1 1 211 1181 -37 65 82 10 10 1 1 1 6 861 -38 62 80 10 30 1 1 1 293 1018 -39 60 80 10 10 1 1 1 166 1065 -40 60 85 10 30 1 1 1 201 927 -41 58 75 10 20 1 1 1 203 867 -42 55 80 10 10 1 1 2 88 635 856 1744 -43 55 85 10 20 1 1 2 85 745 869 1747 -44 55 82 10 10 1 1 1 260 1226 -45 20 82 10 10 1 1 1 310 1181 -46 18 80 10 10 1 1 1 286 811 -47 2 45 10 10 1 1 1 234 1045 -48 42 5 10 10 1 1 1 100 825 -49 42 12 10 10 1 1 1 44 563 -50 72 35 10 30 1 1 1 210 1042 -51 55 20 10 19 1 1 1 269 882 -52 25 30 10 3 1 1 1 58 612 -53 20 50 10 5 1 1 1 294 1076 -54 55 60 10 16 1 1 1 279 1063 -55 30 60 10 16 1 1 1 147 874 -56 50 35 10 19 1 1 1 31 911 -57 30 25 10 23 1 1 1 66 733 -58 15 10 10 20 1 1 1 59 795 -59 10 20 10 19 1 1 1 163 683 -60 15 60 10 17 1 1 1 103 1057 -61 45 65 10 9 1 1 1 9 758 -62 65 35 10 3 1 1 1 315 976 -63 65 20 10 6 1 1 1 251 966 -64 45 30 10 17 1 1 1 122 938 -65 35 40 10 16 1 1 2 118 744 848 1569 -66 41 37 10 16 1 1 1 23 636 -67 64 42 10 9 1 1 1 133 699 -68 40 60 10 21 1 1 1 163 801 -69 31 52 10 27 1 1 1 271 1134 -70 35 69 10 23 1 1 1 50 622 -71 65 55 10 14 1 1 1 59 948 -72 63 65 10 8 1 1 1 65 909 -73 2 60 10 5 1 1 1 184 1081 -74 20 20 10 8 1 1 1 121 813 -75 5 5 10 16 1 1 1 13 988 -76 60 12 10 31 1 1 1 142 875 -77 23 3 10 7 1 1 1 9 648 -78 8 56 10 27 1 1 1 112 840 -79 6 68 10 30 1 1 1 124 971 -80 47 47 10 13 1 1 1 152 819 -81 49 58 10 10 1 1 1 50 940 -82 27 43 10 9 1 1 1 27 990 -83 37 31 10 14 1 1 1 203 1106 -84 57 29 10 18 1 1 1 55 581 -85 63 23 10 2 1 1 1 121 985 -86 21 24 10 28 1 1 1 53 661 -87 12 24 10 13 1 1 1 33 972 -88 24 58 10 19 1 1 1 218 1075 -89 67 5 10 25 1 1 1 124 737 -90 37 47 10 6 1 1 1 12 792 -91 49 42 10 13 1 1 1 104 1096 -92 53 43 10 14 1 1 1 193 730 -93 61 52 10 3 1 1 1 254 909 -94 57 48 10 23 1 1 1 210 917 -95 56 37 10 6 1 1 1 245 925 -96 55 54 10 26 1 1 1 103 877 -97 4 18 10 35 1 1 1 69 1040 -98 26 52 10 9 1 1 2 120 653 924 1753 -99 26 35 10 15 1 1 2 116 623 940 1886 -100 31 67 10 3 1 1 1 41 567 diff --git a/jsprit-instances/instances/belhaiza/rm101.txt b/jsprit-instances/instances/belhaiza/rm101.txt deleted file mode 100644 index 98d922f2a..000000000 --- a/jsprit-instances/instances/belhaiza/rm101.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 10 100 1 -0 200 - 0 35 35 0 0 0 0 0 230 - 1 41 49 10 10 1 1 5 3 13 37 47 72 82 106 116 140 150 - 2 35 17 10 7 1 1 9 10 20 37 47 57 67 81 91 105 115 128 138 163 173 189 199 212 222 - 3 55 45 10 13 1 1 8 12 22 51 61 78 88 105 115 131 141 160 170 186 196 212 222 - 4 55 20 10 19 1 1 7 10 20 33 43 53 63 73 83 96 106 127 137 152 162 - 5 15 30 10 26 1 1 7 1 11 38 48 61 71 87 97 112 122 141 151 165 175 - 6 25 30 10 3 1 1 7 19 29 56 66 85 95 106 116 127 137 154 164 185 195 - 7 20 50 10 5 1 1 7 6 16 39 49 73 83 107 117 128 138 153 163 184 194 - 8 10 43 10 9 1 1 8 5 15 26 36 48 58 72 82 99 109 133 143 167 177 189 199 - 9 55 60 10 16 1 1 5 17 27 41 51 74 84 107 117 134 144 - 10 30 60 10 16 1 1 7 13 23 35 45 58 68 79 89 110 120 133 143 169 179 - 11 20 65 10 12 1 1 7 9 19 43 53 63 73 87 97 125 135 157 167 188 198 - 12 50 35 10 19 1 1 7 14 24 53 63 91 101 113 123 144 154 179 189 211 221 - 13 30 25 10 23 1 1 8 9 19 30 40 62 72 83 93 118 128 150 160 175 185 196 206 - 14 15 10 10 20 1 1 5 16 26 50 60 76 86 97 107 122 132 - 15 30 5 10 8 1 1 5 17 27 51 61 78 88 107 117 136 146 - 16 10 20 10 19 1 1 6 0 10 22 32 55 65 79 89 107 117 130 140 - 17 5 30 10 2 1 1 7 19 29 57 67 88 98 123 133 154 164 189 199 218 228 - 18 20 40 10 12 1 1 5 16 26 42 52 67 77 97 107 125 135 - 19 15 60 10 17 1 1 7 6 16 44 54 74 84 113 123 136 146 174 184 197 207 - 20 45 65 10 9 1 1 8 7 17 36 46 58 68 97 107 125 135 146 156 175 185 202 212 - 21 45 20 10 11 1 1 8 12 22 39 49 59 69 83 93 105 115 133 143 158 168 192 202 - 22 45 10 10 18 1 1 7 16 26 50 60 77 87 105 115 134 144 157 167 195 205 - 23 55 5 10 29 1 1 5 13 23 48 58 80 90 111 121 149 159 - 24 65 35 10 3 1 1 8 7 17 46 56 73 83 112 122 135 145 173 183 201 211 225 235 - 25 65 20 10 6 1 1 5 9 19 34 44 66 76 100 110 127 137 - 26 45 30 10 17 1 1 5 7 17 28 38 57 67 92 102 113 123 - 27 35 40 10 16 1 1 5 18 28 45 55 82 92 114 124 137 147 - 28 41 37 10 16 1 1 8 7 17 30 40 64 74 98 108 121 131 144 154 181 191 207 217 - 29 64 42 10 9 1 1 6 14 24 36 46 63 73 94 104 126 136 149 159 - 30 40 60 10 21 1 1 7 19 29 40 50 62 72 94 104 120 130 156 166 189 199 - 31 31 52 10 27 1 1 6 4 14 26 36 61 71 91 101 126 136 150 160 - 32 35 69 10 23 1 1 8 1 11 29 39 56 66 84 94 104 114 141 151 170 180 202 212 - 33 53 52 10 11 1 1 5 3 13 36 46 58 68 95 105 133 143 - 34 65 55 10 14 1 1 8 3 13 38 48 64 74 84 94 119 129 150 160 181 191 211 221 - 35 63 65 10 8 1 1 8 7 17 38 48 66 76 89 99 124 134 162 172 194 204 223 233 - 36 2 60 10 5 1 1 5 17 27 56 66 78 88 98 108 118 128 - 37 20 20 10 8 1 1 8 18 28 39 49 68 78 94 104 122 132 155 165 194 204 227 237 - 38 5 5 10 16 1 1 6 17 27 42 52 74 84 107 117 145 155 165 175 - 39 60 12 10 31 1 1 8 15 25 44 54 68 78 89 99 118 128 154 164 178 188 214 224 - 40 40 25 10 9 1 1 6 1 11 32 42 65 75 101 111 135 145 168 178 - 41 42 7 10 5 1 1 5 11 21 36 46 59 69 84 94 122 132 - 42 24 12 10 5 1 1 6 13 23 33 43 57 67 81 91 105 115 133 143 - 43 23 3 10 7 1 1 9 1 11 21 31 45 55 70 80 100 110 127 137 149 159 170 180 195 205 - 44 11 14 10 18 1 1 8 16 26 44 54 78 88 104 114 125 135 147 157 182 192 207 217 - 45 6 38 10 16 1 1 7 14 24 43 53 73 83 98 108 123 133 158 168 184 194 - 46 2 48 10 1 1 1 7 18 28 54 64 86 96 116 126 155 165 194 204 220 230 - 47 8 56 10 27 1 1 5 0 10 23 33 59 69 85 95 115 125 - 48 13 52 10 36 1 1 7 18 28 41 51 67 77 87 97 115 125 154 164 179 189 - 49 6 68 10 30 1 1 8 6 16 35 45 59 69 85 95 122 132 157 167 178 188 208 218 - 50 47 47 10 13 1 1 9 9 19 39 49 66 76 94 104 117 127 148 158 177 187 199 209 229 239 - 51 49 58 10 10 1 1 9 2 12 27 37 55 65 80 90 111 121 140 150 163 173 183 193 210 220 - 52 27 43 10 9 1 1 8 9 19 33 43 71 81 103 113 137 147 174 184 213 223 252 262 - 53 37 31 10 14 1 1 8 19 29 43 53 68 78 94 104 125 135 155 165 177 187 206 216 - 54 57 29 10 18 1 1 5 16 26 39 49 78 88 108 118 130 140 - 55 63 23 10 2 1 1 7 5 15 44 54 78 88 101 111 131 141 153 163 184 194 - 56 53 12 10 6 1 1 6 18 28 51 61 73 83 102 112 132 142 163 173 - 57 32 12 10 7 1 1 5 13 23 34 44 64 74 99 109 135 145 - 58 36 26 10 18 1 1 6 10 20 40 50 75 85 103 113 128 138 156 166 - 59 21 24 10 28 1 1 8 7 17 38 48 76 86 110 120 149 159 180 190 202 212 227 237 - 60 17 34 10 3 1 1 8 12 22 41 51 74 84 101 111 132 142 161 171 193 203 229 239 - 61 12 24 10 13 1 1 8 11 21 41 51 61 71 95 105 132 142 161 171 197 207 225 235 - 62 24 58 10 19 1 1 7 4 14 40 50 68 78 94 104 130 140 165 175 185 195 - 63 27 69 10 10 1 1 7 0 10 35 45 74 84 111 121 131 141 160 170 192 202 - 64 15 77 10 9 1 1 8 1 11 21 31 48 58 73 83 102 112 127 137 160 170 195 205 - 65 62 77 10 20 1 1 5 11 21 40 50 78 88 105 115 143 153 - 66 49 73 10 25 1 1 7 7 17 43 53 81 91 105 115 134 144 166 176 199 209 - 67 67 5 10 25 1 1 8 10 20 49 59 70 80 96 106 133 143 158 168 188 198 220 230 - 68 56 39 10 36 1 1 7 17 27 51 61 79 89 104 114 139 149 164 174 198 208 - 69 37 47 10 6 1 1 7 9 19 38 48 71 81 101 111 126 136 161 171 200 210 - 70 37 56 10 5 1 1 8 3 13 33 43 64 74 92 102 131 141 169 179 195 205 218 228 - 71 57 68 10 15 1 1 8 11 21 40 50 61 71 98 108 130 140 158 168 189 199 220 230 - 72 47 16 10 25 1 1 7 4 14 33 43 61 71 89 99 127 137 148 158 168 178 - 73 44 17 10 9 1 1 7 19 29 50 60 82 92 115 125 150 160 179 189 213 223 - 74 46 13 10 8 1 1 5 7 17 28 38 61 71 87 97 109 119 - 75 49 11 10 18 1 1 5 17 27 42 52 64 74 96 106 125 135 - 76 49 42 10 13 1 1 6 12 22 33 43 69 79 97 107 129 139 166 176 - 77 53 43 10 14 1 1 8 14 24 44 54 80 90 103 113 123 133 159 169 179 189 214 224 - 78 61 52 10 3 1 1 8 10 20 35 45 61 71 99 109 130 140 156 166 183 193 219 229 - 79 57 48 10 23 1 1 8 18 28 40 50 65 75 96 106 123 133 162 172 196 206 226 236 - 80 56 37 10 6 1 1 7 15 25 51 61 75 85 111 121 141 151 169 179 204 214 - 81 55 54 10 26 1 1 7 4 14 28 38 53 63 81 91 102 112 135 145 171 181 - 82 15 47 10 16 1 1 6 9 19 33 43 71 81 107 117 127 137 162 172 - 83 14 37 10 11 1 1 5 17 27 49 59 84 94 119 129 147 157 - 84 11 31 10 7 1 1 8 12 22 34 44 69 79 96 106 122 132 160 170 180 190 201 211 - 85 16 22 10 41 1 1 8 5 15 42 52 65 75 94 104 130 140 161 171 183 193 213 223 - 86 4 18 10 35 1 1 7 16 26 55 65 87 97 115 125 145 155 170 180 192 202 - 87 28 18 10 26 1 1 9 3 13 23 33 51 61 79 89 104 114 124 134 151 161 172 182 195 205 - 88 26 52 10 9 1 1 7 18 28 55 65 86 96 106 116 141 151 168 178 201 211 - 89 26 35 10 15 1 1 7 15 25 50 60 70 80 108 118 140 150 175 185 209 219 - 90 31 67 10 3 1 1 5 11 21 40 50 70 80 106 116 126 136 - 91 15 19 10 1 1 1 8 4 14 26 36 46 56 76 86 115 125 141 151 177 187 216 226 - 92 22 22 10 2 1 1 9 7 17 35 45 68 78 103 113 128 138 156 166 178 188 202 212 225 235 - 93 18 24 10 22 1 1 8 4 14 35 45 65 75 102 112 134 144 172 182 202 212 225 235 - 94 26 27 10 27 1 1 7 9 19 33 43 70 80 102 112 126 136 147 157 177 187 - 95 25 24 10 20 1 1 7 13 23 39 49 73 83 101 111 135 145 172 182 203 213 - 96 22 27 10 11 1 1 7 13 23 50 60 83 93 115 125 153 163 190 200 213 223 - 97 25 21 10 12 1 1 8 8 18 35 45 56 66 81 91 117 127 149 159 187 197 212 222 - 98 19 21 10 10 1 1 7 19 29 53 63 82 92 103 113 142 152 168 178 203 213 - 99 20 26 10 9 1 1 9 12 22 51 61 88 98 114 124 138 148 160 170 180 190 202 212 223 233 - 100 18 18 10 17 1 1 8 8 18 37 47 76 86 105 115 142 152 174 184 194 204 227 237 diff --git a/jsprit-instances/instances/belhaiza/rm102.txt b/jsprit-instances/instances/belhaiza/rm102.txt deleted file mode 100644 index c78c22997..000000000 --- a/jsprit-instances/instances/belhaiza/rm102.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 10 100 1 -0 200 - 0 35 35 0 0 0 0 0 230 - 1 41 49 10 10 1 1 5 3 13 37 57 82 98 122 133 157 170 - 2 35 17 10 7 1 1 7 10 31 48 65 75 87 101 124 138 157 170 189 214 226 - 3 55 45 10 13 1 1 6 12 23 52 74 91 103 120 141 157 184 203 223 - 4 55 20 10 19 1 1 6 10 38 51 72 82 101 111 128 141 170 191 216 - 5 15 30 10 26 1 1 7 1 20 47 59 72 87 103 127 142 153 172 195 209 223 - 6 25 30 10 3 1 1 6 19 39 66 91 110 130 141 164 175 192 209 232 - 7 20 50 10 5 1 1 6 6 26 49 59 83 107 131 160 171 183 198 219 - 8 10 43 10 9 1 1 7 5 29 40 57 69 94 108 118 135 149 173 188 212 231 - 9 55 60 10 16 1 1 5 17 35 49 68 91 109 132 145 162 175 - 10 30 60 10 16 1 1 6 13 35 47 65 78 100 111 138 159 186 199 220 - 11 20 65 10 12 1 1 6 9 22 46 66 76 100 114 124 152 178 200 223 - 12 50 35 10 19 1 1 6 14 28 57 67 95 114 126 147 168 181 206 228 - 13 30 25 10 23 1 1 7 9 25 36 58 80 96 107 127 152 167 189 205 220 236 - 14 15 10 10 20 1 1 5 16 44 68 94 110 139 150 168 183 208 - 15 30 5 10 8 1 1 5 17 44 68 90 107 129 148 167 186 200 - 16 10 20 10 19 1 1 6 0 11 23 35 58 81 95 105 123 149 162 174 - 17 5 30 10 2 1 1 5 19 44 72 93 114 139 164 175 196 212 - 18 20 40 10 12 1 1 5 16 31 47 74 89 103 123 145 163 185 - 19 15 60 10 17 1 1 6 6 19 47 64 84 94 123 152 165 194 222 246 - 20 45 65 10 9 1 1 7 7 24 43 57 69 79 108 124 142 164 175 200 219 231 - 21 45 20 10 11 1 1 7 12 32 49 64 74 92 106 121 133 144 162 174 189 213 - 22 45 10 10 18 1 1 6 16 34 58 83 100 126 144 171 190 211 224 236 - 23 55 5 10 29 1 1 5 13 33 58 72 94 111 132 157 185 197 - 24 65 35 10 3 1 1 6 7 24 53 80 97 124 153 174 187 197 225 239 - 25 65 20 10 6 1 1 5 9 34 49 66 88 115 139 149 166 189 - 26 45 30 10 17 1 1 5 7 19 30 52 71 87 112 134 145 158 - 27 35 40 10 16 1 1 5 18 39 56 67 94 112 134 160 173 195 - 28 41 37 10 16 1 1 7 7 27 40 51 75 103 127 139 152 169 182 196 223 244 - 29 64 42 10 9 1 1 6 14 26 38 61 78 92 113 137 159 169 182 202 - 30 40 60 10 21 1 1 6 19 39 50 66 78 105 127 138 154 169 195 220 - 31 31 52 10 27 1 1 6 4 30 42 55 80 97 117 130 155 171 185 213 - 32 35 69 10 23 1 1 7 1 17 35 51 68 79 97 120 130 159 186 203 222 242 - 33 53 52 10 11 1 1 5 3 15 38 66 78 89 116 127 155 167 - 34 65 55 10 14 1 1 6 3 31 56 70 86 96 106 124 149 177 198 218 - 35 63 65 10 8 1 1 6 7 22 43 71 89 100 113 142 167 183 211 240 - 36 2 60 10 5 1 1 5 17 33 62 76 88 109 119 132 142 152 - 37 20 20 10 8 1 1 6 18 31 42 57 76 89 105 132 150 163 186 209 - 38 5 5 10 16 1 1 6 17 33 48 74 96 117 140 161 189 200 210 230 - 39 60 12 10 31 1 1 6 15 39 58 75 89 117 128 139 158 185 211 229 - 40 40 25 10 9 1 1 6 1 14 35 48 71 97 123 150 174 203 226 239 - 41 42 7 10 5 1 1 5 11 35 50 71 84 106 121 133 161 173 - 42 24 12 10 5 1 1 6 13 34 44 57 71 97 111 137 151 168 186 201 - 43 23 3 10 7 1 1 7 1 15 25 42 56 79 94 111 131 152 169 191 203 222 - 44 11 14 10 18 1 1 6 16 32 50 74 98 109 125 147 158 175 187 206 - 45 6 38 10 16 1 1 6 14 24 43 55 75 103 118 141 156 171 196 225 - 46 2 48 10 1 1 1 6 18 33 59 72 94 107 127 145 174 201 230 249 - 47 8 56 10 27 1 1 5 0 21 34 60 86 115 131 155 175 204 - 48 13 52 10 36 1 1 7 18 34 47 62 78 101 111 127 145 170 199 212 227 253 - 49 6 68 10 30 1 1 6 6 24 43 59 73 95 111 136 163 174 199 222 - 50 47 47 10 13 1 1 7 9 21 41 57 74 102 120 131 144 154 175 197 216 232 - 51 49 58 10 10 1 1 7 2 24 39 58 76 88 103 123 144 173 192 208 221 244 - 52 27 43 10 9 1 1 6 9 37 51 67 95 109 131 149 173 202 229 252 - 53 37 31 10 14 1 1 7 19 47 61 77 92 116 132 142 163 175 195 218 230 249 - 54 57 29 10 18 1 1 5 16 27 40 67 96 117 137 154 166 191 - 55 63 23 10 2 1 1 6 5 19 48 68 92 117 130 140 160 189 201 230 - 56 53 12 10 6 1 1 6 18 40 63 90 102 121 140 165 185 199 220 241 - 57 32 12 10 7 1 1 5 13 32 43 66 86 109 134 146 172 200 - 58 36 26 10 18 1 1 6 10 33 53 63 88 105 123 143 158 177 195 205 - 59 21 24 10 28 1 1 5 7 25 46 73 101 121 145 173 202 222 - 60 17 34 10 3 1 1 6 12 36 55 70 93 114 131 142 163 189 208 236 - 61 12 24 10 13 1 1 6 11 28 48 67 77 94 118 144 171 194 213 227 - 62 24 58 10 19 1 1 5 4 33 59 80 98 123 139 167 193 217 - 63 27 69 10 10 1 1 6 0 12 37 53 82 108 135 156 166 179 198 224 - 64 15 77 10 9 1 1 7 1 18 28 52 69 94 109 123 142 152 167 189 212 232 - 65 62 77 10 20 1 1 5 11 30 49 72 100 120 137 161 189 207 - 66 49 73 10 25 1 1 6 7 22 48 70 98 126 140 158 177 190 212 233 - 67 67 5 10 25 1 1 6 10 34 63 80 91 106 122 145 172 188 203 232 - 68 56 39 10 36 1 1 6 17 40 64 87 105 134 149 161 186 210 225 250 - 69 37 47 10 6 1 1 6 9 37 56 67 90 119 139 152 167 192 217 227 - 70 37 56 10 5 1 1 5 3 21 41 65 86 111 129 156 185 210 - 71 57 68 10 15 1 1 6 11 25 44 73 84 107 134 147 169 189 207 222 - 72 47 16 10 25 1 1 7 4 29 48 62 80 104 122 140 168 190 201 219 229 243 - 73 44 17 10 9 1 1 5 19 43 64 92 114 137 160 175 200 227 - 74 46 13 10 8 1 1 5 7 17 28 51 74 93 109 131 143 160 - 75 49 11 10 18 1 1 5 17 43 58 78 90 116 138 149 168 191 - 76 49 42 10 13 1 1 6 12 32 43 71 97 120 138 153 175 197 224 249 - 77 53 43 10 14 1 1 5 14 42 62 86 112 138 151 180 190 211 - 78 61 52 10 3 1 1 7 10 26 41 64 80 93 121 132 153 170 186 197 214 238 - 79 57 48 10 23 1 1 6 18 44 56 84 99 122 143 158 175 185 214 241 - 80 56 37 10 6 1 1 5 15 40 66 86 100 125 151 180 200 217 - 81 55 54 10 26 1 1 7 4 15 29 53 68 81 99 110 121 141 164 188 214 239 - 82 15 47 10 16 1 1 6 9 37 51 72 100 120 146 162 172 189 214 232 - 83 14 37 10 11 1 1 5 17 27 49 73 98 121 146 170 188 208 - 84 11 31 10 7 1 1 7 12 34 46 68 93 115 132 143 159 174 202 218 228 246 - 85 16 22 10 41 1 1 6 5 19 46 56 69 85 104 127 153 174 195 224 - 86 4 18 10 35 1 1 6 16 27 56 77 99 110 128 141 161 188 203 225 - 87 28 18 10 26 1 1 7 3 21 31 58 76 89 107 135 150 171 181 191 208 223 - 88 26 52 10 9 1 1 6 18 33 60 89 110 122 132 156 181 208 225 247 - 89 26 35 10 15 1 1 6 15 37 62 72 82 95 123 140 162 180 205 234 - 90 31 67 10 3 1 1 5 11 34 53 78 98 127 153 176 186 202 - 91 15 19 10 1 1 1 7 4 19 31 55 65 92 112 124 153 170 186 204 230 243 - 92 22 22 10 2 1 1 6 7 35 53 78 101 123 148 168 183 204 222 243 - 93 18 24 10 22 1 1 5 4 33 54 74 94 118 145 174 196 222 - 94 26 27 10 27 1 1 7 9 31 45 74 101 119 141 151 165 179 190 208 228 250 - 95 25 24 10 20 1 1 6 13 30 46 73 97 117 135 155 179 201 228 256 - 96 22 27 10 11 1 1 5 13 42 69 86 109 132 154 166 194 223 - 97 25 21 10 12 1 1 6 8 31 48 68 79 90 105 122 148 175 197 207 - 98 19 21 10 10 1 1 6 19 45 69 90 109 129 140 151 180 196 212 230 - 99 20 26 10 9 1 1 7 12 25 54 72 99 117 133 143 157 172 184 212 222 242 - 100 18 18 10 17 1 1 6 8 21 40 56 85 109 128 143 170 181 203 223 diff --git a/jsprit-instances/instances/belhaiza/rm103.txt b/jsprit-instances/instances/belhaiza/rm103.txt deleted file mode 100644 index e9fea61fa..000000000 --- a/jsprit-instances/instances/belhaiza/rm103.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 10 100 1 -0 200 - 0 35 35 0 0 0 0 0 230 - 1 41 49 10 10 1 1 5 3 14 38 68 93 116 140 152 176 192 - 2 35 17 10 7 1 1 6 10 43 60 84 94 108 122 159 173 202 215 244 - 3 55 45 10 13 1 1 5 12 24 53 87 104 119 136 168 184 229 - 4 55 20 10 19 1 1 5 10 56 69 102 112 140 150 174 187 235 - 5 15 30 10 26 1 1 6 1 30 57 72 85 105 121 160 175 187 206 243 - 6 25 30 10 3 1 1 5 19 50 77 118 137 167 178 215 226 251 - 7 20 50 10 5 1 1 5 6 37 60 70 94 132 156 205 216 230 - 8 10 43 10 9 1 1 6 5 44 55 80 92 133 147 157 174 192 216 236 - 9 55 60 10 16 1 1 5 17 44 58 86 109 135 158 174 191 208 - 10 30 60 10 16 1 1 5 13 47 59 85 98 132 143 187 208 252 - 11 20 65 10 12 1 1 5 9 26 50 80 90 129 143 154 182 225 - 12 50 35 10 19 1 1 5 14 32 61 71 99 127 139 172 193 209 - 13 30 25 10 23 1 1 5 9 32 43 78 100 123 134 164 189 210 - 14 15 10 10 20 1 1 4 16 63 87 129 145 193 204 230 - 15 30 5 10 8 1 1 4 17 62 86 120 137 172 191 219 - 16 10 20 10 19 1 1 6 0 12 24 39 62 98 112 123 141 184 197 211 - 17 5 30 10 2 1 1 4 19 59 87 119 140 181 206 218 - 18 20 40 10 12 1 1 5 16 36 52 96 111 129 149 183 201 235 - 19 15 60 10 17 1 1 5 6 23 51 76 96 107 136 185 198 246 - 20 45 65 10 9 1 1 6 7 31 50 69 81 92 121 143 161 195 206 247 - 21 45 20 10 11 1 1 7 12 43 60 80 90 117 131 151 163 175 193 208 223 262 - 22 45 10 10 18 1 1 4 16 42 66 106 123 166 184 228 - 23 55 5 10 29 1 1 5 13 44 69 87 109 133 154 195 223 237 - 24 65 35 10 3 1 1 4 7 32 61 105 122 167 196 229 - 25 65 20 10 6 1 1 5 9 50 65 89 111 156 180 190 207 244 - 26 45 30 10 17 1 1 5 7 22 33 68 87 110 135 169 180 196 - 27 35 40 10 16 1 1 5 18 51 68 81 108 135 157 199 212 247 - 28 41 37 10 16 1 1 6 7 37 50 62 86 133 157 172 185 210 223 241 - 29 64 42 10 9 1 1 6 14 28 40 77 94 113 134 173 195 206 219 250 - 30 40 60 10 21 1 1 5 19 49 60 83 95 139 161 174 190 211 - 31 31 52 10 27 1 1 6 4 46 58 74 99 123 143 160 185 207 221 268 - 32 35 69 10 23 1 1 5 1 23 41 64 81 93 111 147 157 206 - 33 53 52 10 11 1 1 5 3 18 41 87 99 111 138 150 178 192 - 34 65 55 10 14 1 1 5 3 50 75 93 109 120 130 156 181 227 - 35 63 65 10 8 1 1 5 7 27 48 95 113 126 139 187 212 235 - 36 2 60 10 5 1 1 5 17 39 68 86 98 131 141 158 168 178 - 37 20 20 10 8 1 1 6 18 35 46 66 85 101 117 162 180 197 220 256 - 38 5 5 10 16 1 1 4 17 40 55 98 120 152 175 207 - 39 60 12 10 31 1 1 5 15 54 73 97 111 157 168 181 200 245 - 40 40 25 10 9 1 1 5 1 18 39 55 78 120 146 190 214 262 - 41 42 7 10 5 1 1 5 11 50 65 98 111 146 161 176 204 219 - 42 24 12 10 5 1 1 5 13 46 56 73 87 130 144 187 201 225 - 43 23 3 10 7 1 1 6 1 19 29 53 67 103 118 143 163 196 213 247 - 44 11 14 10 18 1 1 6 16 39 57 96 120 132 148 182 193 218 230 259 - 45 6 38 10 16 1 1 5 14 25 44 58 78 124 139 176 191 212 - 46 2 48 10 1 1 1 5 18 39 65 81 103 119 139 166 195 240 - 47 8 56 10 27 1 1 4 0 33 46 89 115 163 179 218 - 48 13 52 10 36 1 1 5 18 40 53 73 89 125 135 158 176 217 - 49 6 68 10 30 1 1 5 6 33 52 75 89 123 139 180 207 220 - 50 47 47 10 13 1 1 6 9 24 44 66 83 129 147 159 172 183 204 238 - 51 49 58 10 10 1 1 5 2 36 51 80 98 113 128 158 179 227 - 52 27 43 10 9 1 1 5 9 55 69 92 120 138 160 186 210 258 - 53 37 31 10 14 1 1 5 19 66 80 102 117 155 171 181 202 217 - 54 57 29 10 18 1 1 5 16 28 41 85 114 146 166 191 203 243 - 55 63 23 10 2 1 1 5 5 23 52 83 107 147 160 171 191 239 - 56 53 12 10 6 1 1 4 18 52 75 119 131 160 179 220 - 57 32 12 10 7 1 1 5 13 42 53 90 110 146 171 186 212 258 - 58 36 26 10 18 1 1 5 10 47 67 78 103 128 146 176 191 219 - 59 21 24 10 28 1 1 4 7 33 54 99 127 158 182 229 - 60 17 34 10 3 1 1 5 12 51 70 90 113 145 162 175 196 238 - 61 12 24 10 13 1 1 5 11 35 55 84 94 118 142 185 212 248 - 62 24 58 10 19 1 1 4 4 52 78 110 128 169 185 231 - 63 27 69 10 10 1 1 5 0 14 39 62 91 133 160 192 202 218 - 64 15 77 10 9 1 1 6 1 26 36 75 92 132 147 166 185 195 210 244 - 65 62 77 10 20 1 1 4 11 39 58 95 123 153 170 208 - 66 49 73 10 25 1 1 5 7 27 53 87 115 161 175 202 221 237 - 67 67 5 10 25 1 1 5 10 48 77 101 112 133 149 185 212 234 - 68 56 39 10 36 1 1 4 17 54 78 114 132 181 196 211 - 69 37 47 10 6 1 1 5 9 56 75 87 110 159 179 196 211 252 - 70 37 56 10 5 1 1 4 3 30 50 89 110 151 169 213 - 71 57 68 10 15 1 1 5 11 29 48 97 108 144 171 187 209 239 - 72 47 16 10 25 1 1 5 4 44 63 82 100 139 157 183 211 245 - 73 44 17 10 9 1 1 4 19 58 79 125 147 183 206 227 - 74 46 13 10 8 1 1 5 7 18 29 65 88 116 132 166 178 202 - 75 49 11 10 18 1 1 5 17 60 75 106 118 161 183 196 215 251 - 76 49 42 10 13 1 1 5 12 43 54 100 126 162 180 201 223 258 - 77 53 43 10 14 1 1 4 14 60 80 118 144 186 199 247 - 78 61 52 10 3 1 1 6 10 33 48 85 101 118 146 159 180 205 221 234 - 79 57 48 10 23 1 1 5 18 61 73 120 135 171 192 212 229 240 - 80 56 37 10 6 1 1 4 15 56 82 112 126 166 192 240 - 81 55 54 10 26 1 1 6 4 17 31 69 84 101 119 132 143 174 197 235 - 82 15 47 10 16 1 1 5 9 56 70 103 131 161 187 209 219 243 - 83 14 37 10 11 1 1 4 17 27 49 88 113 150 175 213 - 84 11 31 10 7 1 1 5 12 46 58 93 118 153 170 182 198 219 - 85 16 22 10 41 1 1 5 5 23 50 61 74 96 115 152 178 211 - 86 4 18 10 35 1 1 5 16 28 57 89 111 123 141 158 178 222 - 87 28 18 10 26 1 1 5 3 30 40 85 103 120 138 184 199 232 - 88 26 52 10 9 1 1 5 18 39 66 114 135 149 159 198 223 267 - 89 26 35 10 15 1 1 5 15 50 75 86 96 112 140 164 186 212 - 90 31 67 10 3 1 1 4 11 48 67 108 128 177 203 239 - 91 15 19 10 1 1 1 5 4 24 36 74 84 128 148 162 191 215 - 92 22 22 10 2 1 1 4 7 54 72 112 135 170 195 225 - 93 18 24 10 22 1 1 4 4 52 73 104 124 163 190 238 - 94 26 27 10 27 1 1 5 9 43 57 106 133 159 181 191 205 223 - 95 25 24 10 20 1 1 5 13 37 53 97 121 151 169 200 224 258 - 96 22 27 10 11 1 1 4 13 62 89 113 136 172 194 208 - 97 25 21 10 12 1 1 5 8 44 61 91 102 115 130 155 181 226 - 98 19 21 10 10 1 1 5 19 61 85 118 137 168 179 191 220 243 - 99 20 26 10 9 1 1 6 12 28 57 84 111 138 154 165 179 199 211 258 - 100 18 18 10 17 1 1 5 8 25 44 67 96 135 154 175 202 215 diff --git a/jsprit-instances/instances/belhaiza/rm104.txt b/jsprit-instances/instances/belhaiza/rm104.txt deleted file mode 100644 index 84b88b64a..000000000 --- a/jsprit-instances/instances/belhaiza/rm104.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 10 100 1 -0 200 - 0 35 35 0 0 0 0 0 230 - 1 41 49 10 10 1 1 3 3 15 39 79 104 134 - 2 35 17 10 7 1 1 3 3 55 84 137 157 202 - 3 55 45 10 13 1 1 5 2 35 58 69 88 112 131 154 166 187 - 4 55 20 10 19 1 1 4 6 70 83 140 160 183 194 236 - 5 15 30 10 26 1 1 5 6 18 34 76 104 137 158 199 218 237 - 6 25 30 10 3 1 1 3 3 71 92 148 163 194 - 7 20 50 10 5 1 1 5 1 40 67 84 97 123 139 192 207 221 - 8 10 43 10 9 1 1 4 8 30 59 100 127 184 203 243 - 9 55 60 10 16 1 1 5 7 22 45 58 83 114 131 176 192 234 - 10 30 60 10 16 1 1 3 11 26 47 74 94 138 - 11 20 65 10 12 1 1 6 7 33 58 73 83 101 115 139 154 185 204 258 - 12 50 35 10 19 1 1 4 9 70 88 111 124 175 188 238 - 13 30 25 10 23 1 1 5 12 30 57 77 104 119 140 184 196 216 - 14 15 10 10 20 1 1 4 10 47 71 123 133 143 169 193 - 15 30 5 10 8 1 1 4 12 61 82 113 127 162 172 224 - 16 10 20 10 19 1 1 5 12 49 65 79 99 147 162 177 193 249 - 17 5 30 10 2 1 1 4 5 34 45 100 128 143 169 227 - 18 20 40 10 12 1 1 4 12 75 97 150 169 202 216 253 - 19 15 60 10 17 1 1 3 16 36 65 121 149 192 - 20 45 65 10 9 1 1 4 1 44 60 117 144 188 207 262 - 21 45 20 10 11 1 1 5 4 34 56 82 104 146 165 201 217 238 - 22 45 10 10 18 1 1 5 6 70 92 111 128 159 178 202 214 225 - 23 55 5 10 29 1 1 4 12 50 71 103 125 167 184 209 - 24 65 35 10 3 1 1 6 5 15 26 49 61 78 102 137 157 183 207 259 - 25 65 20 10 6 1 1 3 15 73 99 152 179 211 - 26 45 30 10 17 1 1 5 15 63 78 99 119 134 148 199 216 271 - 27 35 40 10 16 1 1 4 11 43 53 120 134 155 174 239 - 28 41 37 10 16 1 1 5 0 48 71 123 133 166 183 201 212 259 - 29 64 42 10 9 1 1 4 17 53 75 133 146 193 213 253 - 30 40 60 10 21 1 1 6 14 32 45 77 90 112 139 183 199 215 227 252 - 31 31 52 10 27 1 1 5 11 64 86 98 111 153 173 209 225 294 - 32 35 69 10 23 1 1 3 12 26 42 69 95 152 - 33 53 52 10 11 1 1 4 5 54 68 126 138 157 182 213 - 34 65 55 10 14 1 1 6 11 33 44 72 90 120 137 150 168 217 227 296 - 35 63 65 10 8 1 1 4 13 78 90 104 131 145 173 189 - 36 2 60 10 5 1 1 5 3 69 94 116 132 144 154 189 214 278 - 37 20 20 10 8 1 1 4 7 33 54 120 138 153 166 233 - 38 5 5 10 16 1 1 3 17 45 74 96 108 153 - 39 60 12 10 31 1 1 4 0 12 33 45 73 93 104 129 - 40 40 25 10 9 1 1 4 17 56 69 98 121 155 169 218 - 41 42 7 10 5 1 1 4 13 72 88 111 137 199 220 246 - 42 24 12 10 5 1 1 5 1 24 51 65 83 120 133 193 212 234 - 43 23 3 10 7 1 1 4 17 66 95 153 166 220 230 281 - 44 11 14 10 18 1 1 4 13 58 68 89 103 163 177 236 - 45 6 38 10 16 1 1 5 19 54 65 88 98 129 143 193 208 240 - 46 2 48 10 1 1 1 5 12 54 73 104 133 150 178 191 206 232 - 47 8 56 10 27 1 1 5 1 36 58 110 127 155 174 189 215 233 - 48 13 52 10 36 1 1 4 0 37 49 103 131 169 192 234 - 49 6 68 10 30 1 1 3 3 68 81 140 158 206 - 50 47 47 10 13 1 1 5 6 60 72 106 126 145 155 206 227 244 - 51 49 58 10 10 1 1 5 5 69 92 113 129 158 183 194 207 243 - 52 27 43 10 9 1 1 4 5 64 82 145 161 189 211 250 - 53 37 31 10 14 1 1 5 5 30 42 95 111 150 178 219 230 261 - 54 57 29 10 18 1 1 5 2 39 59 78 100 159 178 196 208 233 - 55 63 23 10 2 1 1 4 11 78 97 125 138 188 198 251 - 56 53 12 10 6 1 1 4 9 73 87 117 145 168 190 224 - 57 32 12 10 7 1 1 3 11 80 109 175 189 217 - 58 36 26 10 18 1 1 5 13 30 41 78 104 118 131 192 221 265 - 59 21 24 10 28 1 1 5 9 25 40 63 92 134 158 213 226 237 - 60 17 34 10 3 1 1 4 13 74 86 124 143 200 220 243 - 61 12 24 10 13 1 1 4 13 37 47 87 104 144 164 219 - 62 24 58 10 19 1 1 3 18 83 103 156 169 238 - 63 27 69 10 10 1 1 4 5 53 74 113 124 175 201 234 - 64 15 77 10 9 1 1 4 7 76 95 138 155 196 222 233 - 65 62 77 10 20 1 1 5 17 66 85 107 133 161 179 192 204 245 - 66 49 73 10 25 1 1 3 8 65 81 145 171 223 - 67 67 5 10 25 1 1 4 0 19 38 97 119 179 196 243 - 68 56 39 10 36 1 1 5 15 32 51 62 85 129 149 188 212 278 - 69 37 47 10 6 1 1 4 18 78 96 160 173 196 217 255 - 70 37 56 10 5 1 1 4 5 73 96 110 126 156 185 247 - 71 57 68 10 15 1 1 4 12 54 70 126 149 196 219 282 - 72 47 16 10 25 1 1 4 5 60 84 146 169 202 230 260 - 73 44 17 10 9 1 1 4 19 38 56 115 139 160 185 227 - 74 46 13 10 8 1 1 4 2 63 77 119 148 193 216 253 - 75 49 11 10 18 1 1 3 17 37 59 99 117 143 - 76 49 42 10 13 1 1 4 19 63 80 123 137 192 211 235 - 77 53 43 10 14 1 1 3 19 73 94 158 180 230 - 78 61 52 10 3 1 1 5 3 35 52 64 75 124 147 184 200 246 - 79 57 48 10 23 1 1 4 5 47 59 119 141 156 175 224 - 80 56 37 10 6 1 1 3 17 73 101 149 173 227 - 81 55 54 10 26 1 1 3 15 52 68 116 139 179 - 82 15 47 10 16 1 1 5 6 26 54 68 89 121 137 151 168 221 - 83 14 37 10 11 1 1 3 18 76 104 164 176 241 - 84 11 31 10 7 1 1 4 10 50 68 108 133 190 216 257 - 85 16 22 10 41 1 1 4 19 41 58 117 146 188 214 249 - 86 4 18 10 35 1 1 4 14 29 54 104 118 178 197 263 - 87 28 18 10 26 1 1 5 8 18 30 85 112 122 144 197 222 272 - 88 26 52 10 9 1 1 4 10 67 87 121 143 189 201 248 - 89 26 35 10 15 1 1 6 16 28 48 61 76 98 125 137 150 178 197 248 - 90 31 67 10 3 1 1 4 19 79 101 145 160 177 194 236 - 91 15 19 10 1 1 1 4 17 52 74 115 143 169 196 214 - 92 22 22 10 2 1 1 5 17 37 50 61 89 124 145 180 190 216 - 93 18 24 10 22 1 1 4 1 59 72 122 149 209 224 259 - 94 26 27 10 27 1 1 4 0 54 79 141 158 206 229 261 - 95 25 24 10 20 1 1 3 18 50 72 107 132 201 - 96 22 27 10 11 1 1 4 18 71 83 114 135 186 205 262 - 97 25 21 10 12 1 1 3 10 27 56 87 103 139 - 98 19 21 10 10 1 1 3 2 61 79 147 174 220 - 99 20 26 10 9 1 1 4 12 46 66 115 136 191 212 237 - 100 18 18 10 17 1 1 4 10 32 56 101 130 170 196 259 diff --git a/jsprit-instances/instances/belhaiza/rm105.txt b/jsprit-instances/instances/belhaiza/rm105.txt deleted file mode 100644 index cc85a5275..000000000 --- a/jsprit-instances/instances/belhaiza/rm105.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 9 100 1 -0 200 - 0 35 35 0 0 0 0 0 230 - 1 41 49 10 10 1 1 3 3 16 40 95 120 160 - 2 35 17 10 7 1 1 3 3 76 105 180 200 263 - 3 55 45 10 13 1 1 5 2 47 70 82 101 132 151 180 192 219 - 4 55 20 10 19 1 1 3 6 97 110 191 211 241 - 5 15 30 10 26 1 1 4 6 19 35 93 121 166 187 244 - 6 25 30 10 3 1 1 3 3 100 121 200 215 257 - 7 20 50 10 5 1 1 4 1 54 81 102 115 149 165 240 - 8 10 43 10 9 1 1 3 8 37 66 123 150 231 - 9 55 60 10 16 1 1 5 7 24 47 62 87 129 146 208 224 283 - 10 30 60 10 16 1 1 3 11 29 50 85 105 166 - 11 20 65 10 12 1 1 5 7 42 67 85 95 118 132 164 179 221 - 12 50 35 10 19 1 1 3 9 96 114 143 156 227 - 13 30 25 10 23 1 1 5 12 34 61 86 113 131 152 213 225 250 - 14 15 10 10 20 1 1 4 10 60 84 158 168 179 205 236 - 15 30 5 10 8 1 1 4 12 81 102 143 157 205 215 289 - 16 10 20 10 19 1 1 4 12 62 78 95 115 182 197 215 - 17 5 30 10 2 1 1 4 5 43 54 132 160 178 204 287 - 18 20 40 10 12 1 1 3 12 102 124 199 218 263 - 19 15 60 10 17 1 1 3 16 42 71 150 178 238 - 20 45 65 10 9 1 1 3 1 61 77 158 185 246 - 21 45 20 10 11 1 1 4 4 44 66 101 123 181 200 250 - 22 45 10 10 18 1 1 4 6 97 119 142 159 201 220 251 - 23 55 5 10 29 1 1 4 12 64 85 129 151 209 226 258 - 24 65 35 10 3 1 1 5 5 15 26 56 68 88 112 159 179 213 - 25 65 20 10 6 1 1 3 15 97 123 198 225 269 - 26 45 30 10 17 1 1 4 15 82 97 123 143 160 174 245 - 27 35 40 10 16 1 1 4 11 54 64 159 173 200 219 312 - 28 41 37 10 16 1 1 3 0 67 90 163 173 218 - 29 64 42 10 9 1 1 3 17 66 88 170 183 249 - 30 40 60 10 21 1 1 4 14 37 50 94 107 136 163 224 - 31 31 52 10 27 1 1 4 11 86 108 121 134 192 212 261 - 32 35 69 10 23 1 1 3 12 28 44 80 106 187 - 33 53 52 10 11 1 1 3 5 74 88 170 182 206 - 34 65 55 10 14 1 1 5 11 40 51 88 106 147 164 179 197 266 - 35 63 65 10 8 1 1 4 13 105 117 133 160 176 204 223 - 36 2 60 10 5 1 1 4 3 97 122 150 166 180 190 237 - 37 20 20 10 8 1 1 4 7 41 62 157 175 193 206 301 - 38 5 5 10 16 1 1 3 17 55 84 112 124 187 - 39 60 12 10 31 1 1 4 0 14 35 49 77 103 114 147 - 40 40 25 10 9 1 1 4 17 71 84 123 146 193 207 276 - 41 42 7 10 5 1 1 3 13 96 112 142 168 256 - 42 24 12 10 5 1 1 4 1 31 58 74 92 143 156 241 - 43 23 3 10 7 1 1 3 17 85 114 196 209 285 - 44 11 14 10 18 1 1 4 13 76 86 113 127 212 226 310 - 45 6 38 10 16 1 1 4 19 67 78 107 117 159 173 243 - 46 2 48 10 1 1 1 4 12 71 90 132 161 181 209 224 - 47 8 56 10 27 1 1 4 1 49 71 144 161 198 217 235 - 48 13 52 10 36 1 1 3 0 50 62 138 166 219 - 49 6 68 10 30 1 1 3 3 96 109 192 210 277 - 50 47 47 10 13 1 1 4 6 82 94 141 161 185 195 266 - 51 49 58 10 10 1 1 4 5 96 119 145 161 199 224 236 - 52 27 43 10 9 1 1 3 5 89 107 197 213 250 - 53 37 31 10 14 1 1 4 5 38 50 125 141 195 223 279 - 54 57 29 10 18 1 1 4 2 53 73 97 119 202 221 243 - 55 63 23 10 2 1 1 3 11 106 125 163 176 246 - 56 53 12 10 6 1 1 3 9 101 115 155 183 212 - 57 32 12 10 7 1 1 2 11 109 138 233 - 58 36 26 10 18 1 1 4 13 34 45 96 122 138 151 238 - 59 21 24 10 28 1 1 4 9 29 44 73 102 161 185 263 - 60 17 34 10 3 1 1 3 13 99 111 164 183 264 - 61 12 24 10 13 1 1 4 13 44 54 109 126 181 201 279 - 62 24 58 10 19 1 1 3 18 110 130 204 217 316 - 63 27 69 10 10 1 1 3 5 73 94 147 158 230 - 64 15 77 10 9 1 1 3 7 106 125 185 202 259 - 65 62 77 10 20 1 1 4 17 85 104 133 159 197 215 230 - 66 49 73 10 25 1 1 3 8 88 104 196 222 295 - 67 67 5 10 25 1 1 3 0 23 42 126 148 234 - 68 56 39 10 36 1 1 4 15 36 55 67 90 151 171 225 - 69 37 47 10 6 1 1 3 18 103 121 212 225 255 - 70 37 56 10 5 1 1 4 5 103 126 142 158 199 228 316 - 71 57 68 10 15 1 1 3 12 70 86 165 188 253 - 72 47 16 10 25 1 1 3 5 82 106 194 217 262 - 73 44 17 10 9 1 1 4 19 42 60 144 168 194 219 277 - 74 46 13 10 8 1 1 3 2 89 103 161 190 253 - 75 49 11 10 18 1 1 3 17 42 64 119 137 171 - 76 49 42 10 13 1 1 3 19 80 97 157 171 248 - 77 53 43 10 14 1 1 2 19 96 117 209 - 78 61 52 10 3 1 1 4 3 46 63 77 88 157 180 231 - 79 57 48 10 23 1 1 4 5 64 76 161 183 200 219 287 - 80 56 37 10 6 1 1 3 17 97 125 192 216 293 - 81 55 54 10 26 1 1 3 15 66 82 150 173 229 - 82 15 47 10 16 1 1 5 6 31 59 76 97 140 156 173 190 265 - 83 14 37 10 11 1 1 3 18 101 129 215 227 320 - 84 11 31 10 7 1 1 3 10 65 83 138 163 243 - 85 16 22 10 41 1 1 3 19 48 65 149 178 236 - 86 4 18 10 35 1 1 3 14 32 57 127 141 226 - 87 28 18 10 26 1 1 4 8 18 30 107 134 145 167 242 - 88 26 52 10 9 1 1 3 10 91 111 157 179 243 - 89 26 35 10 15 1 1 6 16 29 49 64 79 107 134 147 160 198 217 289 - 90 31 67 10 3 1 1 3 19 105 127 188 203 224 - 91 15 19 10 1 1 1 3 17 64 86 143 171 206 - 92 22 22 10 2 1 1 5 17 43 56 68 96 143 164 212 222 257 - 93 18 24 10 22 1 1 3 1 83 96 166 193 278 - 94 26 27 10 27 1 1 3 0 76 101 189 206 274 - 95 25 24 10 20 1 1 3 18 61 83 131 156 255 - 96 22 27 10 11 1 1 3 18 93 105 146 167 239 - 97 25 21 10 12 1 1 3 10 30 59 100 116 166 - 98 19 21 10 10 1 1 3 2 85 103 201 228 292 - 99 20 26 10 9 1 1 3 12 59 79 148 169 246 - 100 18 18 10 17 1 1 3 10 38 62 125 154 209 diff --git a/jsprit-instances/instances/belhaiza/rm106.txt b/jsprit-instances/instances/belhaiza/rm106.txt deleted file mode 100644 index 1475ff550..000000000 --- a/jsprit-instances/instances/belhaiza/rm106.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 9 100 1 -0 200 - 0 35 35 0 0 0 0 0 230 - 1 41 49 10 10 1 1 3 3 54 98 173 218 285 - 2 35 17 10 7 1 1 2 3 88 137 223 - 3 55 45 10 13 1 1 3 2 71 114 165 204 265 - 4 55 20 10 19 1 1 2 6 101 134 223 - 5 15 30 10 26 1 1 3 6 58 94 170 218 287 - 6 25 30 10 3 1 1 2 3 101 142 230 - 7 20 50 10 5 1 1 3 1 75 122 178 211 274 - 8 10 43 10 9 1 1 2 8 68 117 193 - 9 55 60 10 16 1 1 3 7 61 104 157 202 270 - 10 30 60 10 16 1 1 3 11 65 106 170 210 288 - 11 20 65 10 12 1 1 3 7 70 115 169 199 256 - 12 50 35 10 19 1 1 2 9 102 140 200 - 13 30 25 10 23 1 1 3 12 68 115 173 220 274 - 14 15 10 10 20 1 1 2 10 82 126 211 - 15 30 5 10 8 1 1 2 12 94 135 202 - 16 10 20 10 19 1 1 3 12 84 120 174 214 295 - 17 5 30 10 2 1 1 2 5 71 102 189 - 18 20 40 10 12 1 1 2 12 106 148 234 - 19 15 60 10 17 1 1 2 16 75 124 212 - 20 45 65 10 9 1 1 2 1 78 114 203 - 21 45 20 10 11 1 1 3 4 70 112 176 218 294 - 22 45 10 10 18 1 1 2 6 101 143 200 - 23 55 5 10 29 1 1 2 12 85 126 195 - 24 65 35 10 3 1 1 3 5 55 86 147 179 234 - 25 65 20 10 6 1 1 2 15 105 151 237 - 26 45 30 10 17 1 1 2 15 97 132 191 - 27 35 40 10 16 1 1 2 11 79 109 206 - 28 41 37 10 16 1 1 2 0 81 124 209 - 29 64 42 10 9 1 1 2 17 88 130 220 - 30 40 60 10 21 1 1 3 14 71 104 173 206 266 - 31 31 52 10 27 1 1 3 11 97 139 190 223 299 - 32 35 69 10 23 1 1 3 12 65 101 165 211 300 - 33 53 52 10 11 1 1 2 5 87 121 211 - 34 65 55 10 14 1 1 3 11 71 102 167 205 272 - 35 63 65 10 8 1 1 2 13 109 141 194 - 36 2 60 10 5 1 1 2 3 100 145 205 - 37 20 20 10 8 1 1 2 7 70 111 208 - 38 5 5 10 16 1 1 3 17 82 131 191 223 302 - 39 60 12 10 31 1 1 3 0 52 93 145 193 252 - 40 40 25 10 9 1 1 2 17 91 124 190 - 41 42 7 10 5 1 1 2 13 103 139 200 - 42 24 12 10 5 1 1 3 1 62 109 162 200 273 - 43 23 3 10 7 1 1 2 17 99 148 238 - 44 11 14 10 18 1 1 3 13 92 122 181 215 306 - 45 6 38 10 16 1 1 3 19 90 121 181 211 279 - 46 2 48 10 1 1 1 2 12 89 128 195 - 47 8 56 10 27 1 1 2 1 72 114 199 - 48 13 52 10 36 1 1 2 0 72 104 191 - 49 6 68 10 30 1 1 2 3 99 132 222 - 50 47 47 10 13 1 1 2 6 93 125 195 - 51 49 58 10 10 1 1 2 5 100 143 202 - 52 27 43 10 9 1 1 2 5 96 134 228 - 53 37 31 10 14 1 1 3 5 68 100 186 222 296 - 54 57 29 10 18 1 1 3 2 74 114 171 213 304 - 55 63 23 10 2 1 1 2 11 108 147 212 - 56 53 12 10 6 1 1 2 9 104 138 205 - 57 32 12 10 7 1 1 2 11 110 159 256 - 58 36 26 10 18 1 1 3 13 69 100 172 218 271 - 59 21 24 10 28 1 1 3 9 64 99 160 209 286 - 60 17 34 10 3 1 1 2 13 105 137 211 - 61 12 24 10 13 1 1 3 13 74 104 179 216 291 - 62 24 58 10 19 1 1 2 18 114 154 240 - 63 27 69 10 10 1 1 2 5 87 128 202 - 64 15 77 10 9 1 1 2 7 106 145 222 - 65 62 77 10 20 1 1 2 17 99 138 198 - 66 49 73 10 25 1 1 2 8 97 133 228 - 67 67 5 10 25 1 1 3 0 57 96 187 229 321 - 68 56 39 10 36 1 1 3 15 71 110 161 204 282 - 69 37 47 10 6 1 1 2 18 109 147 242 - 70 37 56 10 5 1 1 2 5 104 147 200 - 71 57 68 10 15 1 1 2 12 89 125 213 - 72 47 16 10 25 1 1 2 5 92 136 229 - 73 44 17 10 9 1 1 2 19 76 114 205 - 74 46 13 10 8 1 1 2 2 95 129 205 - 75 49 11 10 18 1 1 3 17 75 117 192 230 293 - 76 49 42 10 13 1 1 2 19 97 134 212 - 77 53 43 10 14 1 1 2 19 106 147 242 - 78 61 52 10 3 1 1 3 3 71 108 160 191 273 - 79 57 48 10 23 1 1 2 5 82 114 206 - 80 56 37 10 6 1 1 2 17 105 153 235 - 81 55 54 10 26 1 1 2 15 87 123 205 - 82 15 47 10 16 1 1 3 6 64 112 165 206 274 - 83 14 37 10 11 1 1 2 18 108 156 248 - 84 11 31 10 7 1 1 2 10 85 123 198 - 85 16 22 10 41 1 1 2 19 79 116 207 - 86 4 18 10 35 1 1 3 14 68 113 196 230 321 - 87 28 18 10 26 1 1 3 8 58 90 177 224 274 - 88 26 52 10 9 1 1 2 10 99 139 209 - 89 26 35 10 15 1 1 3 16 67 107 160 195 255 - 90 31 67 10 3 1 1 2 19 111 153 231 - 91 15 19 10 1 1 1 2 17 87 129 205 - 92 22 22 10 2 1 1 3 17 75 108 159 207 277 - 93 18 24 10 22 1 1 2 1 91 124 207 - 94 26 27 10 27 1 1 2 0 86 131 224 - 95 25 24 10 20 1 1 2 18 86 128 199 - 96 22 27 10 11 1 1 2 18 104 136 203 - 97 25 21 10 12 1 1 3 10 66 115 182 218 290 - 98 19 21 10 10 1 1 2 2 93 131 230 - 99 20 26 10 9 1 1 2 12 82 122 205 - 100 18 18 10 17 1 1 2 10 70 114 193 diff --git a/jsprit-instances/instances/belhaiza/rm107.txt b/jsprit-instances/instances/belhaiza/rm107.txt deleted file mode 100644 index 4d8eb7bbc..000000000 --- a/jsprit-instances/instances/belhaiza/rm107.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 9 100 1 -0 200 - 0 35 35 0 0 0 0 0 230 - 1 41 49 10 10 1 1 1 3 56 - 2 35 17 10 7 1 1 2 6 130 161 286 - 3 55 45 10 13 1 1 2 13 66 105 178 - 4 55 20 10 19 1 1 2 3 101 146 208 - 5 15 30 10 26 1 1 2 4 73 113 215 - 6 25 30 10 3 1 1 1 10 91 - 7 20 50 10 5 1 1 2 18 107 148 250 - 8 10 43 10 9 1 1 1 3 149 - 9 55 60 10 16 1 1 2 7 112 151 230 - 10 30 60 10 16 1 1 2 8 79 128 230 - 11 20 65 10 12 1 1 2 13 111 148 206 - 12 50 35 10 19 1 1 1 14 132 - 13 30 25 10 23 1 1 2 14 162 193 253 - 14 15 10 10 20 1 1 2 7 77 121 196 - 15 30 5 10 8 1 1 2 0 64 111 205 - 16 10 20 10 19 1 1 2 13 123 155 245 - 17 5 30 10 2 1 1 2 2 68 105 236 - 18 20 40 10 12 1 1 2 13 157 194 307 - 19 15 60 10 17 1 1 2 11 122 161 243 - 20 45 65 10 9 1 1 2 6 120 165 241 - 21 45 20 10 11 1 1 2 19 143 181 265 - 22 45 10 10 18 1 1 3 0 56 88 151 194 310 - 23 55 5 10 29 1 1 2 2 94 140 208 - 24 65 35 10 3 1 1 3 12 78 119 177 208 334 - 25 65 20 10 6 1 1 2 17 150 184 267 - 26 45 30 10 17 1 1 2 8 120 153 250 - 27 35 40 10 16 1 1 2 18 139 172 254 - 28 41 37 10 16 1 1 2 7 93 132 205 - 29 64 42 10 9 1 1 2 11 99 141 244 - 30 40 60 10 21 1 1 2 10 87 131 251 - 31 31 52 10 27 1 1 2 12 155 188 315 - 32 35 69 10 23 1 1 2 2 109 157 297 - 33 53 52 10 11 1 1 2 3 97 138 208 - 34 65 55 10 14 1 1 2 17 95 125 238 - 35 63 65 10 8 1 1 2 12 98 134 190 - 36 2 60 10 5 1 1 2 15 127 158 223 - 37 20 20 10 8 1 1 2 12 142 175 288 - 38 5 5 10 16 1 1 3 6 66 98 173 216 337 - 39 60 12 10 31 1 1 3 17 73 104 165 200 310 - 40 40 25 10 9 1 1 2 13 104 150 227 - 41 42 7 10 5 1 1 2 1 95 138 225 - 42 24 12 10 5 1 1 2 9 113 155 288 - 43 23 3 10 7 1 1 2 0 127 165 249 - 44 11 14 10 18 1 1 2 11 115 156 237 - 45 6 38 10 16 1 1 2 3 148 193 275 - 46 2 48 10 1 1 1 2 5 101 132 193 - 47 8 56 10 27 1 1 3 1 77 116 181 217 355 - 48 13 52 10 36 1 1 2 13 118 166 225 - 49 6 68 10 30 1 1 1 9 147 - 50 47 47 10 13 1 1 2 3 137 176 246 - 51 49 58 10 10 1 1 2 3 61 107 215 - 52 27 43 10 9 1 1 2 16 151 195 341 - 53 37 31 10 14 1 1 2 18 82 123 200 - 54 57 29 10 18 1 1 1 4 137 - 55 63 23 10 2 1 1 2 7 80 115 187 - 56 53 12 10 6 1 1 3 19 81 129 185 220 297 - 57 32 12 10 7 1 1 2 1 93 135 255 - 58 36 26 10 18 1 1 2 0 95 127 251 - 59 21 24 10 28 1 1 2 5 141 174 317 - 60 17 34 10 3 1 1 2 19 156 205 303 - 61 12 24 10 13 1 1 2 0 108 141 274 - 62 24 58 10 19 1 1 2 14 148 197 279 - 63 27 69 10 10 1 1 2 6 100 139 222 - 64 15 77 10 9 1 1 2 14 90 129 191 - 65 62 77 10 20 1 1 2 1 87 117 211 - 66 49 73 10 25 1 1 2 19 98 134 242 - 67 67 5 10 25 1 1 2 6 105 139 211 - 68 56 39 10 36 1 1 2 0 75 107 188 - 69 37 47 10 6 1 1 2 7 156 201 301 - 70 37 56 10 5 1 1 1 19 87 - 71 57 68 10 15 1 1 2 2 151 192 261 - 72 47 16 10 25 1 1 2 10 82 123 228 - 73 44 17 10 9 1 1 2 15 79 125 267 - 74 46 13 10 8 1 1 3 5 100 138 190 228 358 - 75 49 11 10 18 1 1 2 14 158 207 311 - 76 49 42 10 13 1 1 2 11 142 181 322 - 77 53 43 10 14 1 1 2 19 87 128 214 - 78 61 52 10 3 1 1 2 1 133 173 264 - 79 57 48 10 23 1 1 2 11 84 129 263 - 80 56 37 10 6 1 1 2 3 142 188 240 - 81 55 54 10 26 1 1 2 4 91 121 198 - 82 15 47 10 16 1 1 2 14 158 196 282 - 83 14 37 10 11 1 1 2 3 75 116 213 - 84 11 31 10 7 1 1 2 5 153 196 253 - 85 16 22 10 41 1 1 2 10 111 153 257 - 86 4 18 10 35 1 1 2 17 134 178 293 - 87 28 18 10 26 1 1 2 6 124 163 306 - 88 26 52 10 9 1 1 2 15 115 145 224 - 89 26 35 10 15 1 1 2 19 84 122 254 - 90 31 67 10 3 1 1 2 3 88 120 256 - 91 15 19 10 1 1 1 2 1 117 164 231 - 92 22 22 10 2 1 1 2 7 113 147 272 - 93 18 24 10 22 1 1 2 12 128 171 250 - 94 26 27 10 27 1 1 3 3 90 127 181 212 327 - 95 25 24 10 20 1 1 1 17 149 - 96 22 27 10 11 1 1 3 16 92 123 186 229 342 - 97 25 21 10 12 1 1 2 5 135 177 268 - 98 19 21 10 10 1 1 3 11 77 118 170 204 334 - 99 20 26 10 9 1 1 1 14 94 - 100 18 18 10 17 1 1 2 16 147 193 336 diff --git a/jsprit-instances/instances/belhaiza/rm108.txt b/jsprit-instances/instances/belhaiza/rm108.txt deleted file mode 100644 index 81dc26af3..000000000 --- a/jsprit-instances/instances/belhaiza/rm108.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 10 100 1 -0 200 - 0 35 35 0 0 0 0 0 230 - 1 41 49 10 10 1 1 1 3 106 - 2 35 17 10 7 1 1 1 6 180 - 3 55 45 10 13 1 1 2 13 116 189 312 - 4 55 20 10 19 1 1 1 3 151 - 5 15 30 10 26 1 1 2 4 123 199 351 - 6 25 30 10 3 1 1 1 10 141 - 7 20 50 10 5 1 1 1 18 157 - 8 10 43 10 9 1 1 1 3 199 - 9 55 60 10 16 1 1 1 7 162 - 10 30 60 10 16 1 1 2 8 129 228 380 - 11 20 65 10 12 1 1 2 13 161 229 337 - 12 50 35 10 19 1 1 1 14 182 - 13 30 25 10 23 1 1 1 14 212 - 14 15 10 10 20 1 1 2 7 127 214 339 - 15 30 5 10 8 1 1 2 0 114 207 351 - 16 10 20 10 19 1 1 2 13 173 229 369 - 17 5 30 10 2 1 1 2 2 118 187 368 - 18 20 40 10 12 1 1 1 13 207 - 19 15 60 10 17 1 1 1 11 172 - 20 45 65 10 9 1 1 1 6 170 - 21 45 20 10 11 1 1 1 19 193 - 22 45 10 10 18 1 1 2 0 106 163 276 - 23 55 5 10 29 1 1 1 2 144 - 24 65 35 10 3 1 1 2 12 128 207 315 - 25 65 20 10 6 1 1 1 17 200 - 26 45 30 10 17 1 1 2 8 170 229 376 - 27 35 40 10 16 1 1 1 18 189 - 28 41 37 10 16 1 1 2 7 143 217 340 - 29 64 42 10 9 1 1 2 11 149 229 382 - 30 40 60 10 21 1 1 2 10 137 223 393 - 31 31 52 10 27 1 1 1 12 205 - 32 35 69 10 23 1 1 1 2 159 - 33 53 52 10 11 1 1 2 3 147 225 345 - 34 65 55 10 14 1 1 2 17 145 195 358 - 35 63 65 10 8 1 1 2 12 148 214 320 - 36 2 60 10 5 1 1 2 15 177 229 344 - 37 20 20 10 8 1 1 1 12 192 - 38 5 5 10 16 1 1 2 6 116 171 296 - 39 60 12 10 31 1 1 2 17 123 176 287 - 40 40 25 10 9 1 1 1 13 154 - 41 42 7 10 5 1 1 2 1 145 227 364 - 42 24 12 10 5 1 1 1 9 163 - 43 23 3 10 7 1 1 1 0 177 - 44 11 14 10 18 1 1 1 11 165 - 45 6 38 10 16 1 1 1 3 198 - 46 2 48 10 1 1 1 2 5 151 205 316 - 47 8 56 10 27 1 1 2 1 127 201 316 - 48 13 52 10 36 1 1 1 13 168 - 49 6 68 10 30 1 1 1 9 197 - 50 47 47 10 13 1 1 1 3 187 - 51 49 58 10 10 1 1 2 3 111 202 360 - 52 27 43 10 9 1 1 1 16 201 - 53 37 31 10 14 1 1 2 18 132 211 338 - 54 57 29 10 18 1 1 1 4 187 - 55 63 23 10 2 1 1 2 7 130 194 316 - 56 53 12 10 6 1 1 2 19 131 227 333 - 57 32 12 10 7 1 1 2 1 143 223 393 - 58 36 26 10 18 1 1 2 0 145 200 374 - 59 21 24 10 28 1 1 1 5 191 - 60 17 34 10 3 1 1 1 19 206 - 61 12 24 10 13 1 1 2 0 158 216 399 - 62 24 58 10 19 1 1 1 14 198 - 63 27 69 10 10 1 1 2 6 150 224 357 - 64 15 77 10 9 1 1 2 14 140 214 326 - 65 62 77 10 20 1 1 2 1 137 188 332 - 66 49 73 10 25 1 1 2 19 148 213 371 - 67 67 5 10 25 1 1 2 6 155 215 337 - 68 56 39 10 36 1 1 2 0 125 182 313 - 69 37 47 10 6 1 1 1 7 206 - 70 37 56 10 5 1 1 1 19 137 - 71 57 68 10 15 1 1 1 2 201 - 72 47 16 10 25 1 1 2 10 132 210 365 - 73 44 17 10 9 1 1 2 15 129 219 411 - 74 46 13 10 8 1 1 2 5 150 222 324 - 75 49 11 10 18 1 1 1 14 208 - 76 49 42 10 13 1 1 1 11 192 - 77 53 43 10 14 1 1 2 19 137 214 350 - 78 61 52 10 3 1 1 1 1 183 - 79 57 48 10 23 1 1 2 11 134 223 407 - 80 56 37 10 6 1 1 1 3 192 - 81 55 54 10 26 1 1 2 4 141 191 318 - 82 15 47 10 16 1 1 1 14 208 - 83 14 37 10 11 1 1 2 3 125 202 349 - 84 11 31 10 7 1 1 1 5 203 - 85 16 22 10 41 1 1 1 10 161 - 86 4 18 10 35 1 1 1 17 184 - 87 28 18 10 26 1 1 1 6 174 - 88 26 52 10 9 1 1 2 15 165 215 344 - 89 26 35 10 15 1 1 2 19 134 206 388 - 90 31 67 10 3 1 1 2 3 138 193 379 - 91 15 19 10 1 1 1 1 1 167 - 92 22 22 10 2 1 1 2 7 163 224 399 - 93 18 24 10 22 1 1 1 12 178 - 94 26 27 10 27 1 1 2 3 140 208 312 - 95 25 24 10 20 1 1 1 17 199 - 96 22 27 10 11 1 1 2 16 142 196 309 - 97 25 21 10 12 1 1 1 5 185 - 98 19 21 10 10 1 1 2 11 127 206 308 - 99 20 26 10 9 1 1 1 14 144 - 100 18 18 10 17 1 1 1 16 197 diff --git a/jsprit-instances/instances/belhaiza/rm201.txt b/jsprit-instances/instances/belhaiza/rm201.txt deleted file mode 100644 index 39a9f5f34..000000000 --- a/jsprit-instances/instances/belhaiza/rm201.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 3 100 1 -0 1000 - 0 35 35 0 0 0 0 0 1000 - 1 41 49 10 10 1 1 5 16 67 154 229 316 383 468 520 606 664 - 2 35 17 10 7 1 1 8 50 129 198 265 316 371 432 515 575 648 707 781 870 926 993 1088 - 3 55 45 10 13 1 1 7 62 114 213 293 360 416 484 562 628 722 795 871 936 988 - 4 55 20 10 19 1 1 7 52 147 205 283 335 408 460 528 586 684 761 849 913 981 - 5 15 30 10 26 1 1 7 6 80 173 229 287 350 417 503 566 619 693 776 836 896 - 6 25 30 10 3 1 1 7 99 175 269 358 432 507 561 645 698 766 834 917 996 1083 - 7 20 50 10 5 1 1 7 30 107 191 241 327 412 499 598 652 707 771 849 927 1004 - 8 10 43 10 9 1 1 8 27 114 168 237 294 382 444 494 561 621 708 770 856 930 987 1064 - 9 55 60 10 16 1 1 5 86 158 218 291 375 445 528 586 654 713 - 10 30 60 10 16 1 1 7 66 146 202 272 330 410 464 557 635 728 786 865 955 1011 - 11 20 65 10 12 1 1 7 45 104 189 264 314 400 461 512 609 701 782 864 942 1009 - 12 50 35 10 19 1 1 7 71 132 229 279 374 446 502 580 659 717 806 886 966 1042 - 13 30 25 10 23 1 1 7 45 111 165 246 327 393 447 522 610 673 755 820 883 949 - 14 15 10 10 20 1 1 5 81 177 264 355 422 520 573 643 706 795 - 15 30 5 10 8 1 1 5 89 183 269 350 419 501 573 645 717 777 - 16 10 20 10 19 1 1 6 3 56 113 169 251 334 395 447 518 610 669 724 - 17 5 30 10 2 1 1 6 99 187 282 360 437 526 615 668 746 812 900 993 - 18 20 40 10 12 1 1 5 83 145 211 303 367 427 503 584 656 737 - 19 15 60 10 17 1 1 7 34 93 190 259 334 386 484 583 641 738 833 918 975 1041 - 20 45 65 10 9 1 1 7 36 104 178 239 295 346 445 511 582 662 716 805 878 934 - 21 45 20 10 11 1 1 8 61 137 205 267 317 389 450 512 567 620 690 746 809 896 981 1056 - 22 45 10 10 18 1 1 6 80 150 236 324 393 485 556 648 721 800 857 914 - 23 55 5 10 29 1 1 5 68 145 232 292 372 439 517 606 701 756 - 24 65 35 10 3 1 1 7 37 106 204 296 364 458 555 634 693 745 841 901 973 1046 - 25 65 20 10 6 1 1 5 45 133 197 264 345 439 524 574 643 727 - 26 45 30 10 17 1 1 5 36 92 145 226 299 365 454 535 587 644 - 27 35 40 10 16 1 1 5 92 170 239 293 387 458 539 629 687 768 - 28 41 37 10 16 1 1 7 36 111 169 221 307 404 490 547 606 675 733 793 886 964 - 29 64 42 10 9 1 1 6 71 126 183 267 336 397 475 561 642 693 751 827 - 30 40 60 10 21 1 1 7 98 173 226 292 347 439 519 572 637 701 792 881 963 1033 - 31 31 52 10 27 1 1 6 20 110 166 224 312 380 457 516 603 669 729 826 - 32 35 69 10 23 1 1 7 5 70 142 209 277 330 401 483 533 632 726 794 866 943 - 33 53 52 10 11 1 1 5 15 71 154 250 306 359 453 506 602 657 - 34 65 55 10 14 1 1 7 19 116 204 264 331 383 434 505 592 687 766 843 922 987 - 35 63 65 10 8 1 1 7 38 101 180 277 348 402 461 558 647 713 808 905 987 1079 - 36 2 60 10 5 1 1 5 85 150 248 308 364 443 495 553 605 655 - 37 20 20 10 8 1 1 7 90 149 202 265 339 396 462 556 626 685 768 851 948 1008 - 38 5 5 10 16 1 1 6 87 153 216 307 389 467 551 628 724 778 830 906 - 39 60 12 10 31 1 1 7 79 165 238 306 367 462 515 569 642 736 828 898 958 1017 - 40 40 25 10 9 1 1 6 8 67 146 204 286 377 467 559 646 744 828 886 - 41 42 7 10 5 1 1 5 57 143 206 285 343 425 489 545 641 698 - 42 24 12 10 5 1 1 6 67 146 198 257 318 409 470 561 622 690 761 825 - 43 23 3 10 7 1 1 8 9 69 120 188 248 331 395 463 540 619 686 767 823 896 949 1048 - 44 11 14 10 18 1 1 7 82 148 219 305 390 442 507 587 641 710 766 840 929 1021 - 45 6 38 10 16 1 1 7 74 126 200 255 331 426 490 574 638 702 790 887 954 1047 - 46 2 48 10 1 1 1 6 93 157 247 304 386 444 521 592 690 783 881 955 - 47 8 56 10 27 1 1 5 1 80 138 229 321 419 485 571 646 745 - 48 13 52 10 36 1 1 7 90 155 214 277 342 424 475 542 613 702 800 858 921 1012 - 49 6 68 10 30 1 1 7 30 102 176 242 302 382 447 536 629 682 770 854 907 1002 - 50 47 47 10 13 1 1 8 49 105 181 247 315 410 482 535 593 644 723 804 878 944 999 1071 - 51 49 58 10 10 1 1 7 14 94 157 230 300 357 421 496 575 672 746 811 868 951 - 52 27 43 10 9 1 1 6 49 144 205 272 368 428 508 578 663 761 854 937 - 53 37 31 10 14 1 1 7 97 194 254 319 381 467 532 582 661 718 794 878 934 1008 - 54 57 29 10 18 1 1 5 83 136 195 287 386 464 539 608 663 750 - 55 63 23 10 2 1 1 7 25 86 185 262 347 434 493 544 620 717 773 872 950 1009 - 56 53 12 10 6 1 1 6 90 170 252 344 400 474 548 637 713 774 852 929 - 57 32 12 10 7 1 1 5 68 142 194 278 353 436 524 581 671 767 - 58 36 26 10 18 1 1 6 50 134 209 261 348 417 489 564 627 699 771 822 - 59 21 24 10 28 1 1 6 37 108 186 279 375 452 538 635 734 811 888 947 - 60 17 34 10 3 1 1 7 64 150 224 287 371 449 518 572 651 741 814 909 991 1054 - 61 12 24 10 13 1 1 7 55 123 199 273 324 392 478 569 662 744 818 878 969 1034 - 62 24 58 10 19 1 1 6 23 121 213 290 361 450 515 610 701 786 873 967 - 63 27 69 10 10 1 1 7 0 55 144 211 308 398 492 570 621 678 752 843 924 1016 - 64 15 77 10 9 1 1 7 7 76 128 214 282 370 433 494 568 618 681 761 844 920 - 65 62 77 10 20 1 1 5 57 130 204 288 385 460 528 613 708 779 - 66 49 73 10 25 1 1 7 36 99 190 270 365 460 521 593 666 724 805 882 965 1024 - 67 67 5 10 25 1 1 7 53 138 237 305 358 421 488 571 664 729 793 892 968 1043 - 68 56 39 10 36 1 1 6 89 172 259 341 411 510 572 629 718 805 868 955 - 69 37 47 10 6 1 1 7 49 145 218 271 354 453 528 587 651 739 828 878 977 1034 - 70 37 56 10 5 1 1 7 18 90 166 253 332 421 493 585 684 773 869 929 995 1071 - 71 57 68 10 15 1 1 7 59 119 191 289 343 426 518 576 656 731 801 864 942 1034 - 72 47 16 10 25 1 1 7 23 110 183 245 315 402 473 543 639 719 771 841 891 951 - 73 44 17 10 9 1 1 6 95 182 260 355 435 518 601 665 753 847 921 983 - 74 46 13 10 8 1 1 5 36 88 141 223 306 379 446 526 583 651 - 75 49 11 10 18 1 1 5 85 176 239 316 372 464 545 599 673 755 - 76 49 42 10 13 1 1 6 60 137 191 287 377 459 529 593 674 755 848 936 - 77 53 43 10 14 1 1 6 74 169 245 331 422 512 570 667 718 797 887 966 - 78 61 52 10 3 1 1 7 51 117 179 263 329 387 483 536 615 683 748 802 869 955 - 79 57 48 10 23 1 1 6 90 182 238 334 398 481 560 623 691 743 842 935 - 80 56 37 10 6 1 1 6 79 168 258 334 394 482 573 671 747 814 885 984 - 81 55 54 10 26 1 1 7 22 75 135 220 283 342 413 467 521 597 680 765 856 943 - 82 15 47 10 16 1 1 6 46 142 202 281 378 454 546 611 661 728 815 886 - 83 14 37 10 11 1 1 5 85 135 216 302 391 474 563 648 718 793 - 84 11 31 10 7 1 1 7 60 140 195 276 363 444 513 566 631 695 790 855 906 978 - 85 16 22 10 41 1 1 7 29 89 182 234 292 357 430 514 606 685 763 860 916 996 - 86 4 18 10 35 1 1 7 83 135 234 311 393 446 516 574 650 742 805 886 942 1038 - 87 28 18 10 26 1 1 8 17 89 140 234 304 363 434 529 593 672 723 773 842 905 958 1048 - 88 26 52 10 9 1 1 6 92 156 250 347 426 481 532 618 706 799 866 948 - 89 26 35 10 15 1 1 7 79 160 248 299 349 406 502 570 650 721 808 907 993 1091 - 90 31 67 10 3 1 1 5 58 142 216 305 382 481 571 653 704 770 - 91 15 19 10 1 1 1 7 21 84 140 225 276 369 445 501 600 667 734 806 897 955 - 92 22 22 10 2 1 1 7 39 135 205 293 376 457 544 619 681 759 830 909 966 1019 - 93 18 24 10 22 1 1 6 20 117 196 273 348 434 528 625 707 798 894 962 - 94 26 27 10 27 1 1 7 46 126 186 285 378 448 528 579 641 701 754 825 901 983 - 95 25 24 10 20 1 1 6 66 134 199 291 377 452 522 598 685 765 859 955 - 96 22 27 10 11 1 1 6 69 167 259 326 409 491 573 628 724 823 915 973 - 97 25 21 10 12 1 1 7 40 123 191 266 318 372 435 504 596 690 772 822 917 978 - 98 19 21 10 10 1 1 7 98 188 274 353 427 503 556 608 706 772 839 910 999 1084 - 99 20 26 10 9 1 1 7 60 118 216 287 381 453 520 571 632 694 751 847 898 974 -100 18 18 10 17 1 1 1 7 40 99 172 238 336 423 495 558 651 705 785 862 912 963 diff --git a/jsprit-instances/instances/belhaiza/rm202.txt b/jsprit-instances/instances/belhaiza/rm202.txt deleted file mode 100644 index 4a81ae076..000000000 --- a/jsprit-instances/instances/belhaiza/rm202.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 2 100 1 -0 1000 - 0 35 35 0 0 0 0 0 1000 - 1 41 49 10 10 1 1 5 16 75 162 339 426 561 646 708 794 886 - 2 35 17 10 7 1 1 5 50 249 318 455 506 584 645 864 924 1093 - 3 55 45 10 13 1 1 5 62 125 224 425 492 576 644 837 903 1174 - 4 55 20 10 19 1 1 4 52 330 388 582 634 800 852 995 - 5 15 30 10 26 1 1 5 6 177 270 352 410 528 595 826 889 956 - 6 25 30 10 3 1 1 4 99 281 375 622 696 874 928 1149 - 7 20 50 10 5 1 1 4 30 217 301 353 439 668 755 1051 - 8 10 43 10 9 1 1 5 27 263 317 465 522 765 827 880 947 1048 - 9 55 60 10 16 1 1 5 86 247 307 473 557 709 792 883 951 1050 - 10 30 60 10 16 1 1 4 66 268 324 474 532 736 790 1055 - 11 20 65 10 12 1 1 5 45 143 228 406 456 689 750 808 905 1166 - 12 50 35 10 19 1 1 5 71 176 273 327 422 584 640 834 913 1003 - 13 30 25 10 23 1 1 5 45 176 230 437 518 650 704 883 971 1090 - 14 15 10 10 20 1 1 3 81 364 451 706 773 1065 - 15 30 5 10 8 1 1 3 89 363 449 654 723 934 - 16 10 20 10 19 1 1 5 3 69 126 210 292 508 569 629 700 960 - 17 5 30 10 2 1 1 3 99 341 436 627 704 952 - 18 20 40 10 12 1 1 4 83 195 261 524 588 689 765 970 - 19 15 60 10 17 1 1 5 34 130 227 372 447 507 605 903 961 1250 - 20 45 65 10 9 1 1 5 36 176 250 359 415 472 571 701 772 974 - 21 45 20 10 11 1 1 5 61 244 312 425 475 635 696 809 864 932 - 22 45 10 10 18 1 1 4 80 231 317 558 627 888 959 1222 - 23 55 5 10 29 1 1 4 68 253 340 441 521 659 737 985 - 24 65 35 10 3 1 1 4 37 183 281 543 611 881 978 1176 - 25 65 20 10 6 1 1 4 45 289 353 491 572 843 928 979 - 26 45 30 10 17 1 1 5 36 120 173 380 453 586 675 880 932 1021 - 27 35 40 10 16 1 1 4 92 286 355 426 520 678 759 1010 - 28 41 37 10 16 1 1 5 36 213 271 334 420 705 791 878 937 1082 - 29 64 42 10 9 1 1 5 71 150 207 427 496 602 680 912 993 1052 - 30 40 60 10 21 1 1 5 98 275 328 459 514 776 856 924 989 1112 - 31 31 52 10 27 1 1 5 20 271 327 417 505 645 722 821 908 1039 - 32 35 69 10 23 1 1 5 5 132 204 340 408 474 545 759 809 1106 - 33 53 52 10 11 1 1 5 15 97 180 460 516 584 678 745 841 917 - 34 65 55 10 14 1 1 5 19 304 392 492 559 620 671 826 913 1189 - 35 63 65 10 8 1 1 4 38 156 235 521 592 665 724 1011 - 36 2 60 10 5 1 1 5 85 214 312 412 468 667 719 813 865 919 - 37 20 20 10 8 1 1 5 90 185 238 354 428 516 582 852 922 1018 - 38 5 5 10 16 1 1 4 87 221 284 540 622 812 896 1085 - 39 60 12 10 31 1 1 4 79 311 384 525 586 863 916 988 - 40 40 25 10 9 1 1 4 8 103 182 272 354 610 700 962 - 41 42 7 10 5 1 1 4 57 289 352 547 605 816 880 964 - 42 24 12 10 5 1 1 4 67 266 318 416 477 736 797 1053 - 43 23 3 10 7 1 1 5 9 113 164 304 364 582 646 790 867 1065 - 44 11 14 10 18 1 1 5 82 215 286 518 603 665 730 933 987 1132 - 45 6 38 10 16 1 1 5 74 135 209 286 362 641 705 929 993 1114 - 46 2 48 10 1 1 1 5 93 216 306 393 475 566 643 800 898 1167 - 47 8 56 10 27 1 1 4 1 197 255 512 604 896 962 1193 - 48 13 52 10 36 1 1 5 90 217 276 391 456 668 719 854 925 1170 - 49 6 68 10 30 1 1 4 30 191 265 398 458 661 726 975 - 50 47 47 10 13 1 1 5 49 130 206 336 404 679 751 818 876 933 - 51 49 58 10 10 1 1 5 14 215 278 447 517 603 667 843 922 1210 - 52 27 43 10 9 1 1 4 49 327 388 523 619 723 803 957 - 53 37 31 10 14 1 1 4 97 383 443 572 634 864 929 983 - 54 57 29 10 18 1 1 4 83 151 210 474 573 765 840 988 - 55 63 23 10 2 1 1 5 25 130 229 415 500 739 798 855 931 1218 - 56 53 12 10 6 1 1 4 90 293 375 638 694 864 938 1187 - 57 32 12 10 7 1 1 4 68 239 291 514 589 807 895 980 - 58 36 26 10 18 1 1 5 50 274 349 410 497 646 718 896 959 1123 - 59 21 24 10 28 1 1 4 37 192 270 538 634 820 906 1191 - 60 17 34 10 3 1 1 5 64 297 371 488 572 763 832 906 985 1237 - 61 12 24 10 13 1 1 4 55 196 272 443 494 636 722 980 - 62 24 58 10 19 1 1 4 23 314 406 594 665 911 976 1254 - 63 27 69 10 10 1 1 5 0 76 165 301 398 651 745 936 987 1075 - 64 15 77 10 9 1 1 5 7 156 208 439 507 750 813 920 994 1045 - 65 62 77 10 20 1 1 4 57 223 297 521 618 794 862 1089 - 66 49 73 10 25 1 1 4 36 152 243 446 541 818 879 1040 - 67 67 5 10 25 1 1 4 53 280 379 519 572 691 758 973 - 68 56 39 10 36 1 1 3 89 308 395 609 679 978 - 69 37 47 10 6 1 1 4 49 333 406 472 555 850 925 1020 - 70 37 56 10 5 1 1 4 18 179 255 492 571 817 889 1152 - 71 57 68 10 15 1 1 4 59 159 231 525 579 795 887 980 - 72 47 16 10 25 1 1 4 23 261 334 444 514 749 820 974 - 73 44 17 10 9 1 1 3 95 332 410 688 768 985 - 74 46 13 10 8 1 1 5 36 98 151 365 448 614 681 883 940 1083 - 75 49 11 10 18 1 1 4 85 342 405 592 648 908 989 1060 - 76 49 42 10 13 1 1 4 60 245 299 580 670 883 953 1075 - 77 53 43 10 14 1 1 3 74 351 427 657 748 999 - 78 61 52 10 3 1 1 5 51 184 246 466 532 626 722 791 870 1013 - 79 57 48 10 23 1 1 3 90 352 408 690 754 970 - 80 56 37 10 6 1 1 4 79 325 415 595 655 898 989 1280 - 81 55 54 10 26 1 1 5 22 91 151 378 441 538 609 681 735 917 - 82 15 47 10 16 1 1 4 46 330 390 586 683 864 956 1082 - 83 14 37 10 11 1 1 4 85 138 219 451 540 759 848 1076 - 84 11 31 10 7 1 1 4 60 260 315 521 608 816 885 950 - 85 16 22 10 41 1 1 5 29 130 223 283 341 468 541 764 856 1052 - 86 4 18 10 35 1 1 5 83 147 246 435 517 584 654 748 824 1088 - 87 28 18 10 26 1 1 4 17 177 228 500 570 665 736 1012 - 88 26 52 10 9 1 1 4 92 215 309 598 677 753 804 1038 - 89 26 35 10 15 1 1 5 79 288 376 432 482 570 666 809 889 1044 - 90 31 67 10 3 1 1 3 58 281 355 603 680 979 - 91 15 19 10 1 1 1 5 21 139 195 424 475 740 816 896 995 1133 - 92 22 22 10 2 1 1 3 39 322 392 633 716 924 - 93 18 24 10 22 1 1 4 20 308 387 572 647 878 972 1260 - 94 26 27 10 27 1 1 4 46 249 309 607 700 852 932 988 - 95 25 24 10 20 1 1 4 66 207 272 536 622 801 871 1053 - 96 22 27 10 11 1 1 4 69 363 455 594 677 890 972 1049 - 97 25 21 10 12 1 1 5 40 255 323 502 554 627 690 836 928 1202 - 98 19 21 10 10 1 1 4 98 348 434 633 707 890 943 1007 - 99 20 26 10 9 1 1 5 60 151 249 407 501 663 730 788 849 963 -100 18 18 10 17 1 1 1 5 40 136 209 342 440 676 748 867 960 1030 diff --git a/jsprit-instances/instances/belhaiza/rm203.txt b/jsprit-instances/instances/belhaiza/rm203.txt deleted file mode 100644 index 035334b1c..000000000 --- a/jsprit-instances/instances/belhaiza/rm203.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 19 100 1 -0 1000 - 0 35 35 0 0 0 0 0 1000 - 1 41 49 10 10 1 1 5 16 82 169 448 535 739 824 897 983 1110 - 2 35 17 10 7 1 1 4 50 368 437 645 696 797 858 1213 - 3 55 45 10 13 1 1 4 62 137 236 558 625 736 804 1112 - 4 55 20 10 19 1 1 3 52 513 571 881 933 1192 - 5 15 30 10 26 1 1 4 6 274 367 475 533 706 773 1149 - 6 25 30 10 3 1 1 3 99 387 481 886 960 1241 - 7 20 50 10 5 1 1 3 30 327 411 465 551 923 - 8 10 43 10 9 1 1 3 27 412 466 693 750 1148 - 9 55 60 10 16 1 1 3 86 336 396 655 739 973 - 10 30 60 10 16 1 1 3 66 390 446 677 735 1062 - 11 20 65 10 12 1 1 3 45 181 266 547 597 977 - 12 50 35 10 19 1 1 4 71 220 317 375 470 722 778 1088 - 13 30 25 10 23 1 1 4 45 242 296 629 710 907 961 1244 - 14 15 10 10 20 1 1 2 81 550 637 1056 - 15 30 5 10 8 1 1 2 89 542 628 958 - 16 10 20 10 19 1 1 5 3 83 140 252 334 682 743 812 883 1312 - 17 5 30 10 2 1 1 3 99 496 591 895 972 1378 - 18 20 40 10 12 1 1 3 83 246 312 746 810 953 - 19 15 60 10 17 1 1 4 34 167 264 485 560 628 726 1223 - 20 45 65 10 9 1 1 5 36 249 323 480 536 599 698 893 964 1289 - 21 45 20 10 11 1 1 4 61 351 419 582 632 881 942 1106 - 22 45 10 10 18 1 1 3 80 312 398 792 861 1292 - 23 55 5 10 29 1 1 4 68 361 448 590 670 878 956 1363 - 24 65 35 10 3 1 1 3 37 260 358 791 859 1306 - 25 65 20 10 6 1 1 3 45 445 509 717 798 1246 - 26 45 30 10 17 1 1 4 36 147 200 532 605 806 895 1224 - 27 35 40 10 16 1 1 4 92 402 471 559 653 898 979 1391 - 28 41 37 10 16 1 1 3 36 315 373 447 533 1006 - 29 64 42 10 9 1 1 4 71 174 231 588 657 809 887 1265 - 30 40 60 10 21 1 1 3 98 376 429 625 680 1113 - 31 31 52 10 27 1 1 4 20 432 488 610 698 910 987 1125 - 32 35 69 10 23 1 1 4 5 194 266 471 539 618 689 1035 - 33 53 52 10 11 1 1 4 15 123 206 670 726 808 902 982 - 34 65 55 10 14 1 1 4 19 493 581 722 789 860 911 1150 - 35 63 65 10 8 1 1 4 38 210 289 764 835 927 986 1464 - 36 2 60 10 5 1 1 4 85 277 375 516 572 890 942 1072 - 37 20 20 10 8 1 1 4 90 222 275 443 517 636 702 1148 - 38 5 5 10 16 1 1 3 87 288 351 772 854 1156 - 39 60 12 10 31 1 1 3 79 457 530 744 805 1265 - 40 40 25 10 9 1 1 4 8 140 219 342 424 845 935 1368 - 41 42 7 10 5 1 1 3 57 435 498 809 867 1207 - 42 24 12 10 5 1 1 3 67 386 438 574 635 1062 - 43 23 3 10 7 1 1 4 9 157 208 420 480 832 896 1116 - 44 11 14 10 18 1 1 4 82 283 354 732 817 889 954 1280 - 45 6 38 10 16 1 1 4 74 145 219 318 394 856 920 1284 - 46 2 48 10 1 1 1 4 93 275 365 482 564 688 765 1007 - 47 8 56 10 27 1 1 3 1 315 373 796 888 1374 - 48 13 52 10 36 1 1 4 90 279 338 506 571 914 965 1168 - 49 6 68 10 30 1 1 3 30 279 353 553 613 938 - 50 47 47 10 13 1 1 3 49 155 231 426 494 949 - 51 49 58 10 10 1 1 4 14 336 399 663 733 848 912 1189 - 52 27 43 10 9 1 1 3 49 510 571 775 871 1019 - 53 37 31 10 14 1 1 3 97 572 632 824 886 1260 - 54 57 29 10 18 1 1 3 83 165 224 659 758 1064 - 55 63 23 10 2 1 1 3 25 174 273 568 653 1043 - 56 53 12 10 6 1 1 3 90 416 498 931 987 1253 - 57 32 12 10 7 1 1 3 68 336 388 750 825 1177 - 58 36 26 10 18 1 1 4 50 413 488 558 645 874 946 1227 - 59 21 24 10 28 1 1 3 37 276 354 798 894 1190 - 60 17 34 10 3 1 1 3 64 445 519 691 775 1079 - 61 12 24 10 13 1 1 4 55 269 345 614 665 880 966 1391 - 62 24 58 10 19 1 1 3 23 506 598 897 968 1370 - 63 27 69 10 10 1 1 4 0 97 186 392 489 905 999 1304 - 64 15 77 10 9 1 1 3 7 236 288 665 733 1130 - 65 62 77 10 20 1 1 3 57 316 390 753 850 1126 - 66 49 73 10 25 1 1 3 36 205 296 622 717 1176 - 67 67 5 10 25 1 1 3 53 421 520 732 785 959 - 68 56 39 10 36 1 1 3 89 444 531 877 947 1445 - 69 37 47 10 6 1 1 3 49 521 594 673 756 1248 - 70 37 56 10 5 1 1 3 18 268 344 731 810 1213 - 71 57 68 10 15 1 1 3 59 199 271 760 814 1162 - 72 47 16 10 25 1 1 3 23 412 485 644 714 1098 - 73 44 17 10 9 1 1 2 95 481 559 1020 - 74 46 13 10 8 1 1 4 36 108 161 507 590 849 916 1239 - 75 49 11 10 18 1 1 3 85 508 571 868 924 1353 - 76 49 42 10 13 1 1 3 60 353 407 873 963 1307 - 77 53 43 10 14 1 1 2 74 532 608 983 - 78 61 52 10 3 1 1 4 51 251 313 669 735 864 960 1045 - 79 57 48 10 23 1 1 2 90 521 577 1045 - 80 56 37 10 6 1 1 3 79 482 572 857 917 1315 - 81 55 54 10 26 1 1 5 22 107 167 536 599 733 804 895 949 1237 - 82 15 47 10 16 1 1 3 46 517 577 890 987 1272 - 83 14 37 10 11 1 1 3 85 141 222 600 689 1043 - 84 11 31 10 7 1 1 3 60 381 436 768 855 1189 - 85 16 22 10 41 1 1 4 29 172 265 334 392 582 655 1017 - 86 4 18 10 35 1 1 5 83 159 258 559 641 722 792 921 997 1433 - 87 28 18 10 26 1 1 3 17 265 316 766 836 967 - 88 26 52 10 9 1 1 3 92 273 367 847 926 1023 - 89 26 35 10 15 1 1 4 79 416 504 566 616 734 830 1047 - 90 31 67 10 3 1 1 3 58 420 494 902 979 1478 - 91 15 19 10 1 1 1 3 21 193 249 622 673 1111 - 92 22 22 10 2 1 1 2 39 510 580 975 - 93 18 24 10 22 1 1 3 20 499 578 871 946 1323 - 94 26 27 10 27 1 1 2 46 371 431 928 - 95 25 24 10 20 1 1 3 66 281 346 782 868 1151 - 96 22 27 10 11 1 1 3 69 559 651 862 945 1289 - 97 25 21 10 12 1 1 4 40 387 455 738 790 882 945 1168 - 98 19 21 10 10 1 1 3 98 509 595 913 987 1277 - 99 20 26 10 9 1 1 4 60 185 283 528 622 874 941 1006 -100 18 18 10 17 1 1 1 3 40 172 245 444 542 928 diff --git a/jsprit-instances/instances/belhaiza/rm204.txt b/jsprit-instances/instances/belhaiza/rm204.txt deleted file mode 100644 index 89aee79cb..000000000 --- a/jsprit-instances/instances/belhaiza/rm204.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 19 100 1 -0 1000 - 0 35 35 0 0 0 0 0 1000 - 1 41 49 10 10 1 1 3 16 90 177 558 645 918 - 2 35 17 10 7 1 1 3 50 488 557 835 886 1010 - 3 55 45 10 13 1 1 4 62 148 247 691 758 896 964 1387 - 4 55 20 10 19 1 1 2 52 696 754 1180 - 5 15 30 10 26 1 1 4 6 371 464 598 656 883 950 1472 - 6 25 30 10 3 1 1 2 99 493 587 1150 - 7 20 50 10 5 1 1 3 30 436 520 576 662 1177 - 8 10 43 10 9 1 1 3 27 561 615 921 978 1531 - 9 55 60 10 16 1 1 3 86 425 485 837 921 1237 - 10 30 60 10 16 1 1 3 66 512 568 880 938 1389 - 11 20 65 10 12 1 1 3 45 220 305 689 739 1266 - 12 50 35 10 19 1 1 4 71 264 361 423 518 860 916 1342 - 13 30 25 10 23 1 1 3 45 307 361 820 901 1164 - 14 15 10 10 20 1 1 2 81 737 824 1407 - 15 30 5 10 8 1 1 2 89 721 807 1261 - 16 10 20 10 19 1 1 4 3 96 153 293 375 856 917 994 - 17 5 30 10 2 1 1 2 99 650 745 1162 - 18 20 40 10 12 1 1 2 83 296 362 967 - 19 15 60 10 17 1 1 4 34 204 301 599 674 750 848 1544 - 20 45 65 10 9 1 1 4 36 322 396 600 656 725 824 1084 - 21 45 20 10 11 1 1 3 61 458 526 740 790 1128 - 22 45 10 10 18 1 1 2 80 393 479 1026 - 23 55 5 10 29 1 1 3 68 469 556 739 819 1097 - 24 65 35 10 3 1 1 2 37 337 435 1038 - 25 65 20 10 6 1 1 2 45 600 664 943 - 26 45 30 10 17 1 1 3 36 174 227 685 758 1026 - 27 35 40 10 16 1 1 3 92 518 587 692 786 1118 - 28 41 37 10 16 1 1 3 36 417 475 560 646 1307 - 29 64 42 10 9 1 1 3 71 197 254 748 817 1015 - 30 40 60 10 21 1 1 3 98 478 531 792 847 1450 - 31 31 52 10 27 1 1 3 20 594 650 804 892 1176 - 32 35 69 10 23 1 1 4 5 256 328 603 671 764 835 1313 - 33 53 52 10 11 1 1 3 15 149 232 880 936 1033 - 34 65 55 10 14 1 1 2 19 681 769 951 - 35 63 65 10 8 1 1 2 38 265 344 1009 - 36 2 60 10 5 1 1 3 85 340 438 619 675 1112 - 37 20 20 10 8 1 1 4 90 258 311 532 606 756 822 1444 - 38 5 5 10 16 1 1 2 87 356 419 1006 - 39 60 12 10 31 1 1 2 79 603 676 963 - 40 40 25 10 9 1 1 3 8 177 256 411 493 1079 - 41 42 7 10 5 1 1 2 57 581 644 1071 - 42 24 12 10 5 1 1 3 67 506 558 733 794 1389 - 43 23 3 10 7 1 1 3 9 201 252 536 596 1083 - 44 11 14 10 18 1 1 2 82 350 421 944 - 45 6 38 10 16 1 1 3 74 154 228 349 425 1071 - 46 2 48 10 1 1 1 4 93 333 423 571 653 811 888 1216 - 47 8 56 10 27 1 1 2 1 432 490 1079 - 48 13 52 10 36 1 1 3 90 341 400 621 686 1159 - 49 6 68 10 30 1 1 3 30 368 442 709 769 1217 - 50 47 47 10 13 1 1 3 49 180 256 516 584 1220 - 51 49 58 10 10 1 1 3 14 458 521 881 951 1095 - 52 27 43 10 9 1 1 2 49 694 755 1028 - 53 37 31 10 14 1 1 2 97 761 821 1076 - 54 57 29 10 18 1 1 3 83 180 239 845 944 1364 - 55 63 23 10 2 1 1 3 25 218 317 722 807 1348 - 56 53 12 10 6 1 1 2 90 539 621 1225 - 57 32 12 10 7 1 1 2 68 433 485 987 - 58 36 26 10 18 1 1 3 50 552 627 707 794 1103 - 59 21 24 10 28 1 1 2 37 360 438 1057 - 60 17 34 10 3 1 1 3 64 592 666 892 976 1393 - 61 12 24 10 13 1 1 3 55 342 418 784 835 1124 - 62 24 58 10 19 1 1 2 23 699 791 1201 - 63 27 69 10 10 1 1 3 0 118 207 482 579 1158 - 64 15 77 10 9 1 1 3 7 315 367 889 957 1509 - 65 62 77 10 20 1 1 2 57 409 483 986 - 66 49 73 10 25 1 1 3 36 258 349 797 892 1532 - 67 67 5 10 25 1 1 3 53 563 662 946 999 1229 - 68 56 39 10 36 1 1 2 89 580 667 1145 - 69 37 47 10 6 1 1 3 49 709 782 874 957 1646 - 70 37 56 10 5 1 1 2 18 357 433 970 - 71 57 68 10 15 1 1 2 59 239 311 995 - 72 47 16 10 25 1 1 3 23 563 636 844 914 1447 - 73 44 17 10 9 1 1 2 95 631 709 1353 - 74 46 13 10 8 1 1 3 36 117 170 648 731 1084 - 75 49 11 10 18 1 1 2 85 673 736 1143 - 76 49 42 10 13 1 1 2 60 461 515 1166 - 77 53 43 10 14 1 1 2 74 714 790 1310 - 78 61 52 10 3 1 1 3 51 317 379 871 937 1101 - 79 57 48 10 23 1 1 2 90 691 747 1400 - 80 56 37 10 6 1 1 2 79 639 729 1119 - 81 55 54 10 26 1 1 3 22 123 183 695 758 930 - 82 15 47 10 16 1 1 2 46 704 764 1194 - 83 14 37 10 11 1 1 3 85 144 225 749 838 1327 - 84 11 31 10 7 1 1 2 60 502 557 1015 - 85 16 22 10 41 1 1 4 29 213 306 384 442 694 767 1268 - 86 4 18 10 35 1 1 4 83 171 270 683 765 860 930 1094 - 87 28 18 10 26 1 1 2 17 353 404 1032 - 88 26 52 10 9 1 1 2 92 332 426 1097 - 89 26 35 10 15 1 1 4 79 544 632 699 749 898 994 1285 - 90 31 67 10 3 1 1 2 58 559 633 1200 - 91 15 19 10 1 1 1 3 21 248 304 821 872 1482 - 92 22 22 10 2 1 1 2 39 697 767 1315 - 93 18 24 10 22 1 1 2 20 689 768 1169 - 94 26 27 10 27 1 1 2 46 494 554 1249 - 95 25 24 10 20 1 1 2 66 354 419 1026 - 96 22 27 10 11 1 1 2 69 755 847 1130 - 97 25 21 10 12 1 1 2 40 520 588 975 - 98 19 21 10 10 1 1 2 98 669 755 1192 - 99 20 26 10 9 1 1 3 60 218 316 648 742 1084 -100 18 18 10 17 1 1 1 3 40 209 282 548 646 1182 diff --git a/jsprit-instances/instances/belhaiza/rm205.txt b/jsprit-instances/instances/belhaiza/rm205.txt deleted file mode 100644 index 8d00e434e..000000000 --- a/jsprit-instances/instances/belhaiza/rm205.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 19 100 1 -0 1000 - 0 35 35 0 0 0 0 0 1000 - 1 41 49 10 10 1 1 3 16 101 188 722 809 1185 - 2 35 17 10 7 1 1 2 50 667 736 1120 - 3 55 45 10 13 1 1 3 62 164 263 888 955 1134 - 4 55 20 10 19 1 1 1 52 971 - 5 15 30 10 26 1 1 3 6 517 610 783 841 1151 - 6 25 30 10 3 1 1 2 99 652 746 1547 - 7 20 50 10 5 1 1 3 30 601 685 743 829 1559 - 8 10 43 10 9 1 1 2 27 785 839 1263 - 9 55 60 10 16 1 1 2 86 558 618 1109 - 10 30 60 10 16 1 1 2 66 695 751 1184 - 11 20 65 10 12 1 1 3 45 278 363 901 951 1698 - 12 50 35 10 19 1 1 3 71 330 427 495 590 1068 - 13 30 25 10 23 1 1 2 45 405 459 1107 - 14 15 10 10 20 1 1 1 81 1017 - 15 30 5 10 8 1 1 1 89 990 - 16 10 20 10 19 1 1 3 3 117 174 356 438 1118 - 17 5 30 10 2 1 1 2 99 882 977 1564 - 18 20 40 10 12 1 1 2 83 371 437 1299 - 19 15 60 10 17 1 1 3 34 260 357 769 844 932 - 20 45 65 10 9 1 1 3 36 431 505 781 837 916 - 21 45 20 10 11 1 1 2 61 619 687 977 - 22 45 10 10 18 1 1 2 80 514 600 1376 - 23 55 5 10 29 1 1 2 68 632 719 963 - 24 65 35 10 3 1 1 2 37 453 551 1410 - 25 65 20 10 6 1 1 2 45 834 898 1283 - 26 45 30 10 17 1 1 3 36 216 269 916 989 1358 - 27 35 40 10 16 1 1 3 92 692 761 891 985 1447 - 28 41 37 10 16 1 1 3 36 571 629 730 816 1759 - 29 64 42 10 9 1 1 2 71 233 290 989 - 30 40 60 10 21 1 1 2 98 631 684 1043 - 31 31 52 10 27 1 1 2 20 836 892 1094 - 32 35 69 10 23 1 1 3 5 348 420 799 867 979 - 33 53 52 10 11 1 1 2 15 189 272 1196 - 34 65 55 10 14 1 1 1 19 964 - 35 63 65 10 8 1 1 2 38 347 426 1375 - 36 2 60 10 5 1 1 3 85 435 533 775 831 1447 - 37 20 20 10 8 1 1 3 90 313 366 666 740 937 - 38 5 5 10 16 1 1 2 87 457 520 1355 - 39 60 12 10 31 1 1 2 79 821 894 1290 - 40 40 25 10 9 1 1 3 8 232 311 515 597 1430 - 41 42 7 10 5 1 1 2 57 800 863 1465 - 42 24 12 10 5 1 1 2 67 686 738 970 - 43 23 3 10 7 1 1 3 9 266 317 710 770 1459 - 44 11 14 10 18 1 1 2 82 451 522 1264 - 45 6 38 10 16 1 1 3 74 168 242 397 473 1394 - 46 2 48 10 1 1 1 3 93 421 511 704 786 994 - 47 8 56 10 27 1 1 2 1 608 666 1504 - 48 13 52 10 36 1 1 3 90 434 493 793 858 1527 - 49 6 68 10 30 1 1 2 30 502 576 943 - 50 47 47 10 13 1 1 3 49 218 294 651 719 1625 - 51 49 58 10 10 1 1 2 14 639 702 1205 - 52 27 43 10 9 1 1 1 49 968 - 53 37 31 10 14 1 1 1 97 1045 - 54 57 29 10 18 1 1 2 83 202 261 1124 - 55 63 23 10 2 1 1 2 25 284 383 952 - 56 53 12 10 6 1 1 2 90 724 806 1666 - 57 32 12 10 7 1 1 2 68 579 631 1341 - 58 36 26 10 18 1 1 2 50 761 836 930 - 59 21 24 10 28 1 1 2 37 486 564 1445 - 60 17 34 10 3 1 1 2 64 812 886 1194 - 61 12 24 10 13 1 1 2 55 452 528 1040 - 62 24 58 10 19 1 1 1 23 988 - 63 27 69 10 10 1 1 3 0 149 238 617 714 1537 - 64 15 77 10 9 1 1 2 7 435 487 1227 - 65 62 77 10 20 1 1 2 57 548 622 1334 - 66 49 73 10 25 1 1 2 36 338 429 1062 - 67 67 5 10 25 1 1 2 53 775 874 1266 - 68 56 39 10 36 1 1 2 89 783 870 1545 - 69 37 47 10 6 1 1 1 49 991 - 70 37 56 10 5 1 1 2 18 491 567 1328 - 71 57 68 10 15 1 1 2 59 299 371 1348 - 72 47 16 10 25 1 1 2 23 789 862 1143 - 73 44 17 10 9 1 1 2 95 856 934 1853 - 74 46 13 10 8 1 1 3 36 132 185 861 944 1437 - 75 49 11 10 18 1 1 2 85 922 985 1557 - 76 49 42 10 13 1 1 2 60 623 677 1605 - 77 53 43 10 14 1 1 1 74 987 - 78 61 52 10 3 1 1 2 51 417 479 1175 - 79 57 48 10 23 1 1 1 90 945 - 80 56 37 10 6 1 1 2 79 875 965 1512 - 81 55 54 10 26 1 1 3 22 147 207 932 995 1223 - 82 15 47 10 16 1 1 1 46 985 - 83 14 37 10 11 1 1 2 85 149 230 973 - 84 11 31 10 7 1 1 2 60 683 738 1384 - 85 16 22 10 41 1 1 4 29 276 369 460 518 864 937 1647 - 86 4 18 10 35 1 1 3 83 189 288 868 950 1066 - 87 28 18 10 26 1 1 2 17 486 537 1432 - 88 26 52 10 9 1 1 2 92 420 514 1472 - 89 26 35 10 15 1 1 3 79 736 824 899 949 1144 - 90 31 67 10 3 1 1 2 58 767 841 1646 - 91 15 19 10 1 1 1 2 21 330 386 1118 - 92 22 22 10 2 1 1 1 39 978 - 93 18 24 10 22 1 1 1 20 975 - 94 26 27 10 27 1 1 2 46 678 738 1731 - 95 25 24 10 20 1 1 2 66 464 529 1394 - 96 22 27 10 11 1 1 1 69 1049 - 97 25 21 10 12 1 1 2 40 718 786 1329 - 98 19 21 10 10 1 1 2 98 910 996 1612 - 99 20 26 10 9 1 1 3 60 268 366 829 923 1400 -100 18 18 10 17 1 1 1 3 40 265 338 704 802 1562 diff --git a/jsprit-instances/instances/belhaiza/rm206.txt b/jsprit-instances/instances/belhaiza/rm206.txt deleted file mode 100644 index ced18c14a..000000000 --- a/jsprit-instances/instances/belhaiza/rm206.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 2 100 1 -0 1000 - 0 35 35 0 0 0 0 0 1000 - 1 41 49 10 10 1 1 2 16 149 323 881 - 2 35 17 10 7 1 1 2 50 687 826 1242 - 3 55 45 10 13 1 1 2 62 212 411 1056 - 4 55 20 10 19 1 1 1 52 975 - 5 15 30 10 26 1 1 2 6 543 730 946 - 6 25 30 10 3 1 1 2 99 675 863 1674 - 7 20 50 10 5 1 1 2 30 624 792 900 - 8 10 43 10 9 1 1 2 27 797 906 1361 - 9 55 60 10 16 1 1 2 86 586 707 1225 - 10 30 60 10 16 1 1 2 66 714 827 1289 - 11 20 65 10 12 1 1 2 45 318 489 1051 - 12 50 35 10 19 1 1 3 71 369 564 681 872 1377 - 13 30 25 10 23 1 1 2 45 439 547 1214 - 14 15 10 10 20 1 1 1 81 1020 - 15 30 5 10 8 1 1 1 89 995 - 16 10 20 10 19 1 1 3 3 163 277 502 667 1364 - 17 5 30 10 2 1 1 1 99 893 - 18 20 40 10 12 1 1 2 83 409 542 1411 - 19 15 60 10 17 1 1 2 34 300 494 937 - 20 45 65 10 9 1 1 2 36 462 611 925 - 21 45 20 10 11 1 1 2 61 642 778 1105 - 22 45 10 10 18 1 1 2 80 544 716 1504 - 23 55 5 10 29 1 1 2 68 655 830 1114 - 24 65 35 10 3 1 1 2 37 484 680 1546 - 25 65 20 10 6 1 1 2 45 845 973 1390 - 26 45 30 10 17 1 1 2 36 259 365 1030 - 27 35 40 10 16 1 1 2 92 713 852 1028 - 28 41 37 10 16 1 1 2 36 595 712 860 - 29 64 42 10 9 1 1 2 71 277 391 1105 - 30 40 60 10 21 1 1 2 98 655 761 1154 - 31 31 52 10 27 1 1 2 20 845 957 1201 - 32 35 69 10 23 1 1 2 5 383 527 938 - 33 53 52 10 11 1 1 2 15 232 399 1327 - 34 65 55 10 14 1 1 1 19 967 - 35 63 65 10 8 1 1 2 38 383 542 1493 - 36 2 60 10 5 1 1 2 85 469 666 948 - 37 20 20 10 8 1 1 3 90 354 460 797 946 1185 - 38 5 5 10 16 1 1 2 87 490 617 1460 - 39 60 12 10 31 1 1 2 79 835 981 1409 - 40 40 25 10 9 1 1 3 8 272 430 676 841 1683 - 41 42 7 10 5 1 1 2 57 814 940 1563 - 42 24 12 10 5 1 1 2 67 706 810 1083 - 43 23 3 10 7 1 1 3 9 305 407 832 953 1658 - 44 11 14 10 18 1 1 2 82 484 626 1382 - 45 6 38 10 16 1 1 3 74 216 364 563 716 1641 - 46 2 48 10 1 1 1 2 93 457 638 873 - 47 8 56 10 27 1 1 2 1 629 746 1593 - 48 13 52 10 36 1 1 2 90 469 587 924 - 49 6 68 10 30 1 1 2 30 529 677 1077 - 50 47 47 10 13 1 1 3 49 262 414 804 940 1851 - 51 49 58 10 10 1 1 2 14 659 785 1314 - 52 27 43 10 9 1 1 1 49 972 - 53 37 31 10 14 1 1 1 97 1048 - 54 57 29 10 18 1 1 2 83 248 366 1236 - 55 63 23 10 2 1 1 2 25 323 521 1112 - 56 53 12 10 6 1 1 2 90 743 908 1775 - 57 32 12 10 7 1 1 2 68 605 710 1435 - 58 36 26 10 18 1 1 2 50 776 926 1067 - 59 21 24 10 28 1 1 2 37 515 671 1559 - 60 17 34 10 3 1 1 2 64 826 974 1318 - 61 12 24 10 13 1 1 2 55 484 637 1175 - 62 24 58 10 19 1 1 1 23 990 - 63 27 69 10 10 1 1 3 0 194 372 784 979 1812 - 64 15 77 10 9 1 1 2 7 465 569 1323 - 65 62 77 10 20 1 1 2 57 575 724 1451 - 66 49 73 10 25 1 1 2 36 374 557 1209 - 67 67 5 10 25 1 1 2 53 790 988 1412 - 68 56 39 10 36 1 1 2 89 799 973 1666 - 69 37 47 10 6 1 1 1 49 994 - 70 37 56 10 5 1 1 2 18 519 672 1446 - 71 57 68 10 15 1 1 2 59 339 484 1462 - 72 47 16 10 25 1 1 2 23 801 947 1266 - 73 44 17 10 9 1 1 1 95 868 - 74 46 13 10 8 1 1 2 36 180 286 979 - 75 49 11 10 18 1 1 1 85 931 - 76 49 42 10 13 1 1 2 60 646 755 1687 - 77 53 43 10 14 1 1 1 74 991 - 78 61 52 10 3 1 1 2 51 451 576 1288 - 79 57 48 10 23 1 1 1 90 953 - 80 56 37 10 6 1 1 1 79 886 - 81 55 54 10 26 1 1 2 22 193 313 1052 - 82 15 47 10 16 1 1 1 46 989 - 83 14 37 10 11 1 1 2 85 198 361 1117 - 84 11 31 10 7 1 1 2 60 703 813 1477 - 85 16 22 10 41 1 1 3 29 315 502 641 758 1138 - 86 4 18 10 35 1 1 2 83 236 435 1037 - 87 28 18 10 26 1 1 2 17 514 616 1516 - 88 26 52 10 9 1 1 2 92 455 643 1603 - 89 26 35 10 15 1 1 2 79 754 930 1054 - 90 31 67 10 3 1 1 2 58 783 932 1748 - 91 15 19 10 1 1 1 2 21 366 479 1226 - 92 22 22 10 2 1 1 1 39 981 - 93 18 24 10 22 1 1 1 20 978 - 94 26 27 10 27 1 1 2 46 697 818 1812 - 95 25 24 10 20 1 1 2 66 496 626 1498 - 96 22 27 10 11 1 1 1 69 1050 - 97 25 21 10 12 1 1 2 40 735 871 1438 - 98 19 21 10 10 1 1 1 98 920 - 99 20 26 10 9 1 1 2 60 310 506 997 -100 18 18 10 17 1 1 1 2 40 305 451 850 diff --git a/jsprit-instances/instances/belhaiza/rm207.txt b/jsprit-instances/instances/belhaiza/rm207.txt deleted file mode 100644 index 3eeb1be6e..000000000 --- a/jsprit-instances/instances/belhaiza/rm207.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 19 100 1 -0 1000 - 0 35 35 0 0 0 0 0 1000 - 1 41 49 10 10 1 1 2 16 245 419 1026 - 2 35 17 10 7 1 1 2 50 727 866 1347 - 3 55 45 10 13 1 1 2 62 306 505 1190 - 4 55 20 10 19 1 1 1 52 984 - 5 15 30 10 26 1 1 2 6 594 781 1084 - 6 25 30 10 3 1 1 2 99 722 910 1742 - 7 20 50 10 5 1 1 2 30 669 837 1044 - 8 10 43 10 9 1 1 2 27 823 932 1447 - 9 55 60 10 16 1 1 2 86 641 762 1333 - 10 30 60 10 16 1 1 2 66 753 866 1388 - 11 20 65 10 12 1 1 2 45 399 570 1181 - 12 50 35 10 19 1 1 2 71 447 642 857 - 13 30 25 10 23 1 1 2 45 506 614 1318 - 14 15 10 10 20 1 1 1 81 1027 - 15 30 5 10 8 1 1 1 89 1006 - 16 10 20 10 19 1 1 3 3 257 371 682 847 1578 - 17 5 30 10 2 1 1 1 99 916 - 18 20 40 10 12 1 1 2 83 484 617 1501 - 19 15 60 10 17 1 1 2 34 382 576 1081 - 20 45 65 10 9 1 1 2 36 526 675 1065 - 21 45 20 10 11 1 1 2 61 689 825 1227 - 22 45 10 10 18 1 1 2 80 604 776 1588 - 23 55 5 10 29 1 1 2 68 700 875 1239 - 24 65 35 10 3 1 1 2 37 545 741 1622 - 25 65 20 10 6 1 1 2 45 867 995 1477 - 26 45 30 10 17 1 1 2 36 345 451 1154 - 27 35 40 10 16 1 1 2 92 755 894 1161 - 28 41 37 10 16 1 1 2 36 644 761 1004 - 29 64 42 10 9 1 1 2 71 365 479 1225 - 30 40 60 10 21 1 1 2 98 704 810 1270 - 31 31 52 10 27 1 1 2 20 865 977 1305 - 32 35 69 10 23 1 1 2 5 452 596 1073 - 33 53 52 10 11 1 1 2 15 319 486 1422 - 34 65 55 10 14 1 1 1 19 972 - 35 63 65 10 8 1 1 2 38 456 615 1572 - 36 2 60 10 5 1 1 2 85 538 735 1096 - 37 20 20 10 8 1 1 2 90 436 542 953 - 38 5 5 10 16 1 1 2 87 556 683 1544 - 39 60 12 10 31 1 1 1 79 862 - 40 40 25 10 9 1 1 2 8 354 512 842 - 41 42 7 10 5 1 1 2 57 841 967 1632 - 42 24 12 10 5 1 1 2 67 746 850 1204 - 43 23 3 10 7 1 1 2 9 383 485 974 - 44 11 14 10 18 1 1 2 82 550 692 1475 - 45 6 38 10 16 1 1 3 74 311 459 747 900 1833 - 46 2 48 10 1 1 1 2 93 527 708 1028 - 47 8 56 10 27 1 1 2 1 670 787 1651 - 48 13 52 10 36 1 1 2 90 538 656 1067 - 49 6 68 10 30 1 1 2 30 585 733 1200 - 50 47 47 10 13 1 1 2 49 349 501 959 - 51 49 58 10 10 1 1 2 14 699 825 1406 - 52 27 43 10 9 1 1 1 49 981 - 53 37 31 10 14 1 1 1 97 1053 - 54 57 29 10 18 1 1 2 83 341 459 1343 - 55 63 23 10 2 1 1 2 25 401 599 1236 - 56 53 12 10 6 1 1 2 90 782 947 1829 - 57 32 12 10 7 1 1 2 68 656 761 1517 - 58 36 26 10 18 1 1 2 50 806 956 1193 - 59 21 24 10 28 1 1 2 37 573 729 1629 - 60 17 34 10 3 1 1 1 64 852 - 61 12 24 10 13 1 1 2 55 547 700 1289 - 62 24 58 10 19 1 1 1 23 994 - 63 27 69 10 10 1 1 2 0 283 461 938 - 64 15 77 10 9 1 1 2 7 525 629 1410 - 65 62 77 10 20 1 1 2 57 628 777 1534 - 66 49 73 10 25 1 1 2 36 448 631 1321 - 67 67 5 10 25 1 1 1 53 819 - 68 56 39 10 36 1 1 1 89 831 - 69 37 47 10 6 1 1 1 49 1000 - 70 37 56 10 5 1 1 2 18 574 727 1526 - 71 57 68 10 15 1 1 2 59 419 564 1544 - 72 47 16 10 25 1 1 2 23 826 972 1366 - 73 44 17 10 9 1 1 1 95 894 - 74 46 13 10 8 1 1 2 36 275 381 1108 - 75 49 11 10 18 1 1 1 85 948 - 76 49 42 10 13 1 1 2 60 692 801 1740 - 77 53 43 10 14 1 1 1 74 1001 - 78 61 52 10 3 1 1 2 51 517 642 1386 - 79 57 48 10 23 1 1 1 90 968 - 80 56 37 10 6 1 1 1 79 907 - 81 55 54 10 26 1 1 2 22 285 405 1173 - 82 15 47 10 16 1 1 1 46 995 - 83 14 37 10 11 1 1 2 85 297 460 1243 - 84 11 31 10 7 1 1 2 60 742 852 1554 - 85 16 22 10 41 1 1 3 29 395 582 817 934 1383 - 86 4 18 10 35 1 1 2 83 330 529 1176 - 87 28 18 10 26 1 1 2 17 569 671 1582 - 88 26 52 10 9 1 1 2 92 526 714 1679 - 89 26 35 10 15 1 1 2 79 790 966 1187 - 90 31 67 10 3 1 1 2 58 813 962 1798 - 91 15 19 10 1 1 1 2 21 439 552 1327 - 92 22 22 10 2 1 1 1 39 987 - 93 18 24 10 22 1 1 1 20 982 - 94 26 27 10 27 1 1 2 46 736 857 1851 - 95 25 24 10 20 1 1 2 66 559 689 1575 - 96 22 27 10 11 1 1 1 69 1052 - 97 25 21 10 12 1 1 2 40 769 905 1520 - 98 19 21 10 10 1 1 1 98 939 - 99 20 26 10 9 1 1 2 60 393 589 1136 -100 18 18 10 17 1 1 1 2 40 387 533 999 diff --git a/jsprit-instances/instances/belhaiza/rm208.txt b/jsprit-instances/instances/belhaiza/rm208.txt deleted file mode 100644 index 243da775f..000000000 --- a/jsprit-instances/instances/belhaiza/rm208.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 19 100 1 -0 1000 - 0 35 35 0 0 0 0 0 1000 - 1 41 49 10 10 1 1 2 16 534 708 1462 - 2 35 17 10 7 1 1 2 50 848 987 1662 - 3 55 45 10 13 1 1 2 62 589 788 1591 - 4 55 20 10 19 1 1 1 52 1009 - 5 15 30 10 26 1 1 2 6 748 935 1499 - 6 25 30 10 3 1 1 1 99 863 - 7 20 50 10 5 1 1 2 30 804 972 1476 - 8 10 43 10 9 1 1 1 27 899 - 9 55 60 10 16 1 1 2 86 808 929 1661 - 10 30 60 10 16 1 1 2 66 870 983 1684 - 11 20 65 10 12 1 1 2 45 641 812 1569 - 12 50 35 10 19 1 1 2 71 681 876 1385 - 13 30 25 10 23 1 1 2 45 708 816 1631 - 14 15 10 10 20 1 1 1 81 1047 - 15 30 5 10 8 1 1 1 89 1037 - 16 10 20 10 19 1 1 2 3 536 650 1219 - 17 5 30 10 2 1 1 1 99 984 - 18 20 40 10 12 1 1 2 83 708 841 1768 - 19 15 60 10 17 1 1 2 34 626 820 1510 - 20 45 65 10 9 1 1 2 36 717 866 1485 - 21 45 20 10 11 1 1 2 61 828 964 1590 - 22 45 10 10 18 1 1 2 80 782 954 1836 - 23 55 5 10 29 1 1 1 68 838 - 24 65 35 10 3 1 1 2 37 729 925 1850 - 25 65 20 10 6 1 1 1 45 934 - 26 45 30 10 17 1 1 2 36 604 710 1524 - 27 35 40 10 16 1 1 1 92 881 - 28 41 37 10 16 1 1 2 36 791 908 1434 - 29 64 42 10 9 1 1 2 71 629 743 1584 - 30 40 60 10 21 1 1 2 98 852 958 1620 - 31 31 52 10 27 1 1 1 20 923 - 32 35 69 10 23 1 1 2 5 659 803 1476 - 33 53 52 10 11 1 1 2 15 580 747 1707 - 34 65 55 10 14 1 1 1 19 990 - 35 63 65 10 8 1 1 2 38 674 833 1806 - 36 2 60 10 5 1 1 2 85 743 940 1541 - 37 20 20 10 8 1 1 2 90 681 787 1419 - 38 5 5 10 16 1 1 2 87 755 882 1795 - 39 60 12 10 31 1 1 1 79 943 - 40 40 25 10 9 1 1 2 8 599 757 1338 - 41 42 7 10 5 1 1 1 57 922 - 42 24 12 10 5 1 1 2 67 866 970 1566 - 43 23 3 10 7 1 1 2 9 618 720 1400 - 44 11 14 10 18 1 1 2 82 749 891 1755 - 45 6 38 10 16 1 1 2 74 597 745 1300 - 46 2 48 10 1 1 1 2 93 739 920 1495 - 47 8 56 10 27 1 1 2 1 794 911 1826 - 48 13 52 10 36 1 1 2 90 745 863 1494 - 49 6 68 10 30 1 1 2 30 752 900 1567 - 50 47 47 10 13 1 1 2 49 611 763 1424 - 51 49 58 10 10 1 1 2 14 817 943 1681 - 52 27 43 10 9 1 1 1 49 1006 - 53 37 31 10 14 1 1 1 97 1070 - 54 57 29 10 18 1 1 2 83 619 737 1665 - 55 63 23 10 2 1 1 2 25 635 833 1606 - 56 53 12 10 6 1 1 1 90 897 - 57 32 12 10 7 1 1 2 68 811 916 1763 - 58 36 26 10 18 1 1 1 50 898 - 59 21 24 10 28 1 1 2 37 747 903 1840 - 60 17 34 10 3 1 1 1 64 931 - 61 12 24 10 13 1 1 2 55 737 890 1633 - 62 24 58 10 19 1 1 1 23 1005 - 63 27 69 10 10 1 1 2 0 552 730 1403 - 64 15 77 10 9 1 1 2 7 706 810 1673 - 65 62 77 10 20 1 1 2 57 789 938 1786 - 66 49 73 10 25 1 1 2 36 668 851 1657 - 67 67 5 10 25 1 1 1 53 907 - 68 56 39 10 36 1 1 1 89 928 - 69 37 47 10 6 1 1 1 49 1018 - 70 37 56 10 5 1 1 2 18 740 893 1767 - 71 57 68 10 15 1 1 2 59 659 804 1792 - 72 47 16 10 25 1 1 1 23 900 - 73 44 17 10 9 1 1 1 95 969 - 74 46 13 10 8 1 1 2 36 560 666 1495 - 75 49 11 10 18 1 1 1 85 999 - 76 49 42 10 13 1 1 2 60 830 939 1901 - 77 53 43 10 14 1 1 1 74 1028 - 78 61 52 10 3 1 1 2 51 717 842 1682 - 79 57 48 10 23 1 1 1 90 1014 - 80 56 37 10 6 1 1 1 79 971 - 81 55 54 10 26 1 1 2 22 561 681 1536 - 82 15 47 10 16 1 1 1 46 1014 - 83 14 37 10 11 1 1 2 85 592 755 1619 - 84 11 31 10 7 1 1 2 60 861 971 1784 - 85 16 22 10 41 1 1 2 29 632 819 1340 - 86 4 18 10 35 1 1 2 83 612 811 1590 - 87 28 18 10 26 1 1 2 17 737 839 1783 - 88 26 52 10 9 1 1 2 92 738 926 1904 - 89 26 35 10 15 1 1 1 79 898 - 90 31 67 10 3 1 1 1 58 905 - 91 15 19 10 1 1 1 2 21 657 770 1629 - 92 22 22 10 2 1 1 1 39 1006 - 93 18 24 10 22 1 1 1 20 996 - 94 26 27 10 27 1 1 2 46 852 973 1969 - 95 25 24 10 20 1 1 2 66 749 879 1808 - 96 22 27 10 11 1 1 1 69 1058 - 97 25 21 10 12 1 1 1 40 870 - 98 19 21 10 10 1 1 1 98 999 - 99 20 26 10 9 1 1 2 60 643 839 1556 -100 18 18 10 17 1 1 1 2 40 632 778 1444 diff --git a/jsprit-instances/instances/christofides/vrpinfo.txt b/jsprit-instances/instances/christofides/vrpinfo.txt deleted file mode 100644 index e6e0988e6..000000000 --- a/jsprit-instances/instances/christofides/vrpinfo.txt +++ /dev/null @@ -1,47 +0,0 @@ -There are currently 24 data files. - -The first set of data files are the 10 test problems from -Chapter 9 of S.Eilon, C.D.T.Watson-Gandy and N.Christofides -"Distribution management: mathematical modelling and -practical analysis" Griffin, London 1971. - -Test problems 1, 2, ..., 10 from Chapter 9 are available -in files vrp1, vrp2, ..., vrp10 respectively. - -The format of these data files is apparent from the tables -of data given in the above reference. - -The second set of data files are the 14 test problems from -Chapter 11 of N.Christofides, A.Mingozzi, P.Toth and C.Sandi -(eds) "Combinatorial optimization", John Wiley, Chichester 1979. - -Test problems 1, 2, ..., 14 from Chapter 11 are available -in files vrpnc1, vrpnc2, ..., vrpnc14 respectively. - -The format of these data files is: -number of customers, vehicle capacity, maximum route time, drop time -depot x-coordinate, depot y-coordinate -for each customer in turn: x-coordinate, y-coordinate, quantity - -Both sets of files are of size 15Kb (approximately). - - - -OTHER SOURCES - -Test data for vehicle routing problems is also available -using the Web from http://www-apache.imag.fr/~paugerat/VRP/INSTANCES - -A variety of vehicle routing problems are also available from the -elib library: -telnet elib.zib.de and login as elib -WWW access available at: -ftp://ftp.zib.de/pub/Packages/mp-testdata/index.html - - - -A full listing of the problem areas covered by OR-library can -be found in the file info - -ftp access available at mscmga.ms.ic.ac.uk -WWW access available at http://mscmga.ms.ic.ac.uk/ diff --git a/jsprit-instances/instances/christofides/vrpnc1.txt b/jsprit-instances/instances/christofides/vrpnc1.txt deleted file mode 100644 index 7296a49f7..000000000 --- a/jsprit-instances/instances/christofides/vrpnc1.txt +++ /dev/null @@ -1,52 +0,0 @@ - 50 160 999999 0 - 30 40 - 37 52 7 - 49 49 30 - 52 64 16 - 20 26 9 - 40 30 21 - 21 47 15 - 17 63 19 - 31 62 23 - 52 33 11 - 51 21 5 - 42 41 19 - 31 32 29 - 5 25 23 - 12 42 21 - 36 16 10 - 52 41 15 - 27 23 3 - 17 33 41 - 13 13 9 - 57 58 28 - 62 42 8 - 42 57 8 - 16 57 16 - 8 52 10 - 7 38 28 - 27 68 7 - 30 48 15 - 43 67 14 - 58 48 6 - 58 27 19 - 37 69 11 - 38 46 12 - 46 10 23 - 61 33 26 - 62 63 17 - 63 69 6 - 32 22 9 - 45 35 15 - 59 15 14 - 5 6 7 - 10 17 27 - 21 10 13 - 5 64 11 - 30 15 16 - 39 10 10 - 32 39 5 - 25 32 25 - 25 55 17 - 48 28 18 - 56 37 10 diff --git a/jsprit-instances/instances/christofides/vrpnc10.txt b/jsprit-instances/instances/christofides/vrpnc10.txt deleted file mode 100644 index c73686829..000000000 --- a/jsprit-instances/instances/christofides/vrpnc10.txt +++ /dev/null @@ -1,201 +0,0 @@ - 199 200 200 10 - 35 35 - 41 49 10 - 35 17 7 - 55 45 13 - 55 20 19 - 15 30 26 - 25 30 3 - 20 50 5 - 10 43 9 - 55 60 16 - 30 60 16 - 20 65 12 - 50 35 19 - 30 25 23 - 15 10 20 - 30 5 8 - 10 20 19 - 5 30 2 - 20 40 12 - 15 60 17 - 45 65 9 - 45 20 11 - 45 10 18 - 55 5 29 - 65 35 3 - 65 20 6 - 45 30 17 - 35 40 16 - 41 37 16 - 64 42 9 - 40 60 21 - 31 52 27 - 35 69 23 - 53 52 11 - 65 55 14 - 63 65 8 - 2 60 5 - 20 20 8 - 5 5 16 - 60 12 31 - 40 25 9 - 42 7 5 - 24 12 5 - 23 3 7 - 11 14 18 - 6 38 16 - 2 48 1 - 8 56 27 - 13 52 36 - 6 68 30 - 47 47 13 - 49 58 10 - 27 43 9 - 37 31 14 - 57 29 18 - 63 23 2 - 53 12 6 - 32 12 7 - 36 26 18 - 21 24 28 - 17 34 3 - 12 24 13 - 24 58 19 - 27 69 10 - 15 77 9 - 62 77 20 - 49 73 25 - 67 5 25 - 56 39 36 - 37 47 6 - 37 56 5 - 57 68 15 - 47 16 25 - 44 17 9 - 46 13 8 - 49 11 18 - 49 42 13 - 53 43 14 - 61 52 3 - 57 48 23 - 56 37 6 - 55 54 26 - 15 47 16 - 14 37 11 - 11 31 7 - 16 22 41 - 4 18 35 - 28 18 26 - 26 52 9 - 26 35 15 - 31 67 3 - 15 19 1 - 22 22 2 - 18 24 22 - 26 27 27 - 25 24 20 - 22 27 11 - 25 21 12 - 19 21 10 - 20 26 9 - 18 18 17 - 37 52 7 - 49 49 30 - 52 64 16 - 20 26 9 - 40 30 21 - 21 47 15 - 17 63 19 - 31 62 23 - 52 33 11 - 51 21 5 - 42 41 19 - 31 32 29 - 5 25 23 - 12 42 21 - 36 16 10 - 52 41 15 - 27 23 3 - 17 33 41 - 13 13 9 - 57 58 28 - 62 42 8 - 42 57 8 - 16 57 16 - 8 52 10 - 7 38 28 - 27 68 7 - 30 48 15 - 43 67 14 - 58 48 6 - 58 27 19 - 37 69 11 - 38 46 12 - 46 10 23 - 61 33 26 - 62 63 17 - 63 69 6 - 32 22 9 - 45 35 15 - 59 15 14 - 5 6 7 - 10 17 27 - 21 10 13 - 5 64 11 - 30 15 16 - 39 10 10 - 32 39 5 - 25 32 25 - 25 55 17 - 48 28 18 - 56 37 10 - 22 22 18 - 36 26 26 - 21 45 11 - 45 35 30 - 55 20 21 - 33 34 19 - 50 50 15 - 55 45 16 - 26 59 29 - 40 66 26 - 55 65 37 - 35 51 16 - 62 35 12 - 62 57 31 - 62 24 8 - 21 36 19 - 33 44 20 - 9 56 13 - 62 48 15 - 66 14 22 - 44 13 28 - 26 13 12 - 11 28 6 - 7 43 27 - 17 64 14 - 41 46 18 - 55 34 17 - 35 16 29 - 52 26 13 - 43 26 22 - 31 76 25 - 22 53 28 - 26 29 27 - 50 40 19 - 55 50 10 - 54 10 12 - 60 15 14 - 47 66 24 - 30 60 16 - 30 50 33 - 12 17 15 - 15 14 11 - 16 19 18 - 21 48 17 - 50 30 21 - 51 42 27 - 50 15 19 - 48 21 20 - 12 38 5 diff --git a/jsprit-instances/instances/christofides/vrpnc11.txt b/jsprit-instances/instances/christofides/vrpnc11.txt deleted file mode 100644 index 36a2ba65f..000000000 --- a/jsprit-instances/instances/christofides/vrpnc11.txt +++ /dev/null @@ -1,122 +0,0 @@ - 120 200 999999 0 - 10 45 - 25 1 25 - 25 3 7 - 31 5 13 - 32 5 6 - 31 7 14 - 32 9 5 - 34 9 11 - 46 9 19 - 35 7 5 - 34 6 15 - 35 5 15 - 47 6 17 - 40 5 13 - 39 3 12 - 36 3 18 - 73 6 13 - 73 8 18 - 24 36 12 - 76 6 17 - 76 10 4 - 76 13 7 - 78 3 12 - 78 9 13 - 79 3 8 - 79 5 16 - 79 11 15 - 82 3 6 - 82 7 5 - 90 15 9 - 84 3 11 - 84 5 10 - 84 9 3 - 85 1 7 - 87 5 2 - 85 8 4 - 87 7 4 - 86 41 18 - 86 44 14 - 86 46 12 - 85 55 17 - 89 43 20 - 89 46 14 - 89 52 16 - 92 42 10 - 92 52 9 - 94 42 11 - 94 44 7 - 94 48 13 - 96 42 5 - 99 46 4 - 99 50 21 - 83 80 13 - 83 83 11 - 85 81 12 - 85 85 14 - 85 89 10 - 87 80 8 - 87 86 16 - 90 77 19 - 90 88 5 - 93 82 17 - 93 84 7 - 93 89 16 - 94 86 14 - 95 80 17 - 99 89 13 - 37 83 17 - 50 80 13 - 35 85 14 - 35 87 16 - 44 86 7 - 46 89 13 - 46 83 9 - 46 87 11 - 46 89 35 - 48 83 5 - 50 85 28 - 50 88 7 - 54 86 3 - 54 90 10 - 10 35 7 - 10 40 12 - 18 30 11 - 17 35 10 - 16 38 8 - 14 40 11 - 15 42 21 - 11 42 4 - 18 40 15 - 21 39 16 - 20 40 4 - 18 41 16 - 20 44 7 - 22 44 10 - 16 45 9 - 20 45 11 - 25 45 17 - 30 55 12 - 20 50 11 - 22 51 7 - 18 49 9 - 16 48 11 - 20 55 12 - 18 53 7 - 14 50 8 - 15 51 6 - 16 54 5 - 28 33 12 - 33 38 13 - 30 50 7 - 13 40 7 - 15 36 8 - 18 31 11 - 25 37 13 - 30 46 11 - 25 52 10 - 16 33 7 - 25 35 4 - 5 40 20 - 5 50 13 diff --git a/jsprit-instances/instances/christofides/vrpnc12.txt b/jsprit-instances/instances/christofides/vrpnc12.txt deleted file mode 100644 index 7ad047733..000000000 --- a/jsprit-instances/instances/christofides/vrpnc12.txt +++ /dev/null @@ -1,102 +0,0 @@ - 100 200 999999 0 - 40 50 - 45 68 10 - 45 70 30 - 42 66 10 - 42 68 10 - 42 65 10 - 40 69 20 - 40 66 20 - 38 68 20 - 38 70 10 - 35 66 10 - 35 69 10 - 25 85 20 - 22 75 30 - 22 85 10 - 20 80 40 - 20 85 40 - 18 75 20 - 15 75 20 - 15 80 10 - 30 50 10 - 30 52 20 - 28 52 20 - 28 55 10 - 25 50 10 - 25 52 40 - 25 55 10 - 23 52 10 - 23 55 20 - 20 50 10 - 20 55 10 - 10 35 20 - 10 40 30 - 8 40 40 - 8 45 20 - 5 35 10 - 5 45 10 - 2 40 20 - 0 40 30 - 0 45 20 - 35 30 10 - 35 32 10 - 33 32 20 - 33 35 10 - 32 30 10 - 30 30 10 - 30 32 30 - 30 35 10 - 28 30 10 - 28 35 10 - 26 32 10 - 25 30 10 - 25 35 10 - 44 5 20 - 42 10 40 - 42 15 10 - 40 5 30 - 40 15 40 - 38 5 30 - 38 15 10 - 35 5 20 - 50 30 10 - 50 35 20 - 50 40 50 - 48 30 10 - 48 40 10 - 47 35 10 - 47 40 10 - 45 30 10 - 45 35 10 - 95 30 30 - 95 35 20 - 53 30 10 - 92 30 10 - 53 35 50 - 45 65 20 - 90 35 10 - 88 30 10 - 88 35 20 - 87 30 10 - 85 25 10 - 85 35 30 - 75 55 20 - 72 55 10 - 70 58 20 - 68 60 30 - 66 55 10 - 65 55 20 - 65 60 30 - 63 58 10 - 60 55 10 - 60 60 10 - 67 85 20 - 65 85 40 - 65 82 10 - 62 80 30 - 60 80 10 - 60 85 30 - 58 75 20 - 55 80 10 - 55 85 20 diff --git a/jsprit-instances/instances/christofides/vrpnc13.txt b/jsprit-instances/instances/christofides/vrpnc13.txt deleted file mode 100644 index 1cd3bb2b1..000000000 --- a/jsprit-instances/instances/christofides/vrpnc13.txt +++ /dev/null @@ -1,122 +0,0 @@ - 120 200 720 50 - 10 45 - 25 1 25 - 25 3 7 - 31 5 13 - 32 5 6 - 31 7 14 - 32 9 5 - 34 9 11 - 46 9 19 - 35 7 5 - 34 6 15 - 35 5 15 - 47 6 17 - 40 5 13 - 39 3 12 - 36 3 18 - 73 6 13 - 73 8 18 - 24 36 12 - 76 6 17 - 76 10 4 - 76 13 7 - 78 3 12 - 78 9 13 - 79 3 8 - 79 5 16 - 79 11 15 - 82 3 6 - 82 7 5 - 90 15 9 - 84 3 11 - 84 5 10 - 84 9 3 - 85 1 7 - 87 5 2 - 85 8 4 - 87 7 4 - 86 41 18 - 86 44 14 - 86 46 12 - 85 55 17 - 89 43 20 - 89 46 14 - 89 52 16 - 92 42 10 - 92 52 9 - 94 42 11 - 94 44 7 - 94 48 13 - 96 42 5 - 99 46 4 - 99 50 21 - 83 80 13 - 83 83 11 - 85 81 12 - 85 85 14 - 85 89 10 - 87 80 8 - 87 86 16 - 90 77 19 - 90 88 5 - 93 82 17 - 93 84 7 - 93 89 16 - 94 86 14 - 95 80 17 - 99 89 13 - 37 83 17 - 50 80 13 - 35 85 14 - 35 87 16 - 44 86 7 - 46 89 13 - 46 83 9 - 46 87 11 - 46 89 35 - 48 83 5 - 50 85 28 - 50 88 7 - 54 86 3 - 54 90 10 - 10 35 7 - 10 40 12 - 18 30 11 - 17 35 10 - 16 38 8 - 14 40 11 - 15 42 21 - 11 42 4 - 18 40 15 - 21 39 16 - 20 40 4 - 18 41 16 - 20 44 7 - 22 44 10 - 16 45 9 - 20 45 11 - 25 45 17 - 30 55 12 - 20 50 11 - 22 51 7 - 18 49 9 - 16 48 11 - 20 55 12 - 18 53 7 - 14 50 8 - 15 51 6 - 16 54 5 - 28 33 12 - 33 38 13 - 30 50 7 - 13 40 7 - 15 36 8 - 18 31 11 - 25 37 13 - 30 46 11 - 25 52 10 - 16 33 7 - 25 35 4 - 5 40 20 - 5 50 13 diff --git a/jsprit-instances/instances/christofides/vrpnc14.txt b/jsprit-instances/instances/christofides/vrpnc14.txt deleted file mode 100644 index ca9693db0..000000000 --- a/jsprit-instances/instances/christofides/vrpnc14.txt +++ /dev/null @@ -1,102 +0,0 @@ - 100 200 1040 90 - 40 50 - 45 68 10 - 45 70 30 - 42 66 10 - 42 68 10 - 42 65 10 - 40 69 20 - 40 66 20 - 38 68 20 - 38 70 10 - 35 66 10 - 35 69 10 - 25 85 20 - 22 75 30 - 22 85 10 - 20 80 40 - 20 85 40 - 18 75 20 - 15 75 20 - 15 80 10 - 30 50 10 - 30 52 20 - 28 52 20 - 28 55 10 - 25 50 10 - 25 52 40 - 25 55 10 - 23 52 10 - 23 55 20 - 20 50 10 - 20 55 10 - 10 35 20 - 10 40 30 - 8 40 40 - 8 45 20 - 5 35 10 - 5 45 10 - 2 40 20 - 0 40 30 - 0 45 20 - 35 30 10 - 35 32 10 - 33 32 20 - 33 35 10 - 32 30 10 - 30 30 10 - 30 32 30 - 30 35 10 - 28 30 10 - 28 35 10 - 26 32 10 - 25 30 10 - 25 35 10 - 44 5 20 - 42 10 40 - 42 15 10 - 40 5 30 - 40 15 40 - 38 5 30 - 38 15 10 - 35 5 20 - 50 30 10 - 50 35 20 - 50 40 50 - 48 30 10 - 48 40 10 - 47 35 10 - 47 40 10 - 45 30 10 - 45 35 10 - 95 30 30 - 95 35 20 - 53 30 10 - 92 30 10 - 53 35 50 - 45 65 20 - 90 35 10 - 88 30 10 - 88 35 20 - 87 30 10 - 85 25 10 - 85 35 30 - 75 55 20 - 72 55 10 - 70 58 20 - 68 60 30 - 66 55 10 - 65 55 20 - 65 60 30 - 63 58 10 - 60 55 10 - 60 60 10 - 67 85 20 - 65 85 40 - 65 82 10 - 62 80 30 - 60 80 10 - 60 85 30 - 58 75 20 - 55 80 10 - 55 85 20 diff --git a/jsprit-instances/instances/christofides/vrpnc2.txt b/jsprit-instances/instances/christofides/vrpnc2.txt deleted file mode 100644 index 8bf69c006..000000000 --- a/jsprit-instances/instances/christofides/vrpnc2.txt +++ /dev/null @@ -1,77 +0,0 @@ - 75 140 999999 0 - 40 40 - 22 22 18 - 36 26 26 - 21 45 11 - 45 35 30 - 55 20 21 - 33 34 19 - 50 50 15 - 55 45 16 - 26 59 29 - 40 66 26 - 55 65 37 - 35 51 16 - 62 35 12 - 62 57 31 - 62 24 8 - 21 36 19 - 33 44 20 - 9 56 13 - 62 48 15 - 66 14 22 - 44 13 28 - 26 13 12 - 11 28 6 - 7 43 27 - 17 64 14 - 41 46 18 - 55 34 17 - 35 16 29 - 52 26 13 - 43 26 22 - 31 76 25 - 22 53 28 - 26 29 27 - 50 40 19 - 55 50 10 - 54 10 12 - 60 15 14 - 47 66 24 - 30 60 16 - 30 50 33 - 12 17 15 - 15 14 11 - 16 19 18 - 21 48 17 - 50 30 21 - 51 42 27 - 50 15 19 - 48 21 20 - 12 38 5 - 15 56 22 - 29 39 12 - 54 38 19 - 55 57 22 - 67 41 16 - 10 70 7 - 6 25 26 - 65 27 14 - 40 60 21 - 70 64 24 - 64 4 13 - 36 6 15 - 30 20 18 - 20 30 11 - 15 5 28 - 50 70 9 - 57 72 37 - 45 42 30 - 38 33 10 - 50 4 8 - 66 8 11 - 59 5 3 - 35 60 1 - 27 24 6 - 40 20 10 - 40 37 20 diff --git a/jsprit-instances/instances/christofides/vrpnc3.txt b/jsprit-instances/instances/christofides/vrpnc3.txt deleted file mode 100644 index f91ff9816..000000000 --- a/jsprit-instances/instances/christofides/vrpnc3.txt +++ /dev/null @@ -1,102 +0,0 @@ - 100 200 999999 0 - 35 35 - 41 49 10 - 35 17 7 - 55 45 13 - 55 20 19 - 15 30 26 - 25 30 3 - 20 50 5 - 10 43 9 - 55 60 16 - 30 60 16 - 20 65 12 - 50 35 19 - 30 25 23 - 15 10 20 - 30 5 8 - 10 20 19 - 5 30 2 - 20 40 12 - 15 60 17 - 45 65 9 - 45 20 11 - 45 10 18 - 55 5 29 - 65 35 3 - 65 20 6 - 45 30 17 - 35 40 16 - 41 37 16 - 64 42 9 - 40 60 21 - 31 52 27 - 35 69 23 - 53 52 11 - 65 55 14 - 63 65 8 - 2 60 5 - 20 20 8 - 5 5 16 - 60 12 31 - 40 25 9 - 42 7 5 - 24 12 5 - 23 3 7 - 11 14 18 - 6 38 16 - 2 48 1 - 8 56 27 - 13 52 36 - 6 68 30 - 47 47 13 - 49 58 10 - 27 43 9 - 37 31 14 - 57 29 18 - 63 23 2 - 53 12 6 - 32 12 7 - 36 26 18 - 21 24 28 - 17 34 3 - 12 24 13 - 24 58 19 - 27 69 10 - 15 77 9 - 62 77 20 - 49 73 25 - 67 5 25 - 56 39 36 - 37 47 6 - 37 56 5 - 57 68 15 - 47 16 25 - 44 17 9 - 46 13 8 - 49 11 18 - 49 42 13 - 53 43 14 - 61 52 3 - 57 48 23 - 56 37 6 - 55 54 26 - 15 47 16 - 14 37 11 - 11 31 7 - 16 22 41 - 4 18 35 - 28 18 26 - 26 52 9 - 26 35 15 - 31 67 3 - 15 19 1 - 22 22 2 - 18 24 22 - 26 27 27 - 25 24 20 - 22 27 11 - 25 21 12 - 19 21 10 - 20 26 9 - 18 18 17 diff --git a/jsprit-instances/instances/christofides/vrpnc4.txt b/jsprit-instances/instances/christofides/vrpnc4.txt deleted file mode 100644 index bd2821797..000000000 --- a/jsprit-instances/instances/christofides/vrpnc4.txt +++ /dev/null @@ -1,152 +0,0 @@ - 150 200 999999 0 - 35 35 - 41 49 10 - 35 17 7 - 55 45 13 - 55 20 19 - 15 30 26 - 25 30 3 - 20 50 5 - 10 43 9 - 55 60 16 - 30 60 16 - 20 65 12 - 50 35 19 - 30 25 23 - 15 10 20 - 30 5 8 - 10 20 19 - 5 30 2 - 20 40 12 - 15 60 17 - 45 65 9 - 45 20 11 - 45 10 18 - 55 5 29 - 65 35 3 - 65 20 6 - 45 30 17 - 35 40 16 - 41 37 16 - 64 42 9 - 40 60 21 - 31 52 27 - 35 69 23 - 53 52 11 - 65 55 14 - 63 65 8 - 2 60 5 - 20 20 8 - 5 5 16 - 60 12 31 - 40 25 9 - 42 7 5 - 24 12 5 - 23 3 7 - 11 14 18 - 6 38 16 - 2 48 1 - 8 56 27 - 13 52 36 - 6 68 30 - 47 47 13 - 49 58 10 - 27 43 9 - 37 31 14 - 57 29 18 - 63 23 2 - 53 12 6 - 32 12 7 - 36 26 18 - 21 24 28 - 17 34 3 - 12 24 13 - 24 58 19 - 27 69 10 - 15 77 9 - 62 77 20 - 49 73 25 - 67 5 25 - 56 39 36 - 37 47 6 - 37 56 5 - 57 68 15 - 47 16 25 - 44 17 9 - 46 13 8 - 49 11 18 - 49 42 13 - 53 43 14 - 61 52 3 - 57 48 23 - 56 37 6 - 55 54 26 - 15 47 16 - 14 37 11 - 11 31 7 - 16 22 41 - 4 18 35 - 28 18 26 - 26 52 9 - 26 35 15 - 31 67 3 - 15 19 1 - 22 22 2 - 18 24 22 - 26 27 27 - 25 24 20 - 22 27 11 - 25 21 12 - 19 21 10 - 20 26 9 - 18 18 17 - 37 52 7 - 49 49 30 - 52 64 16 - 20 26 9 - 40 30 21 - 21 47 15 - 17 63 19 - 31 62 23 - 52 33 11 - 51 21 5 - 42 41 19 - 31 32 29 - 5 25 23 - 12 42 21 - 36 16 10 - 52 41 15 - 27 23 3 - 17 33 41 - 13 13 9 - 57 58 28 - 62 42 8 - 42 57 8 - 16 57 16 - 8 52 10 - 7 38 28 - 27 68 7 - 30 48 15 - 43 67 14 - 58 48 6 - 58 27 19 - 37 69 11 - 38 46 12 - 46 10 23 - 61 33 26 - 62 63 17 - 63 69 6 - 32 22 9 - 45 35 15 - 59 15 14 - 5 6 7 - 10 17 27 - 21 10 13 - 5 64 11 - 30 15 16 - 39 10 10 - 32 39 5 - 25 32 25 - 25 55 17 - 48 28 18 - 56 37 10 diff --git a/jsprit-instances/instances/christofides/vrpnc5.txt b/jsprit-instances/instances/christofides/vrpnc5.txt deleted file mode 100644 index ba2e719e3..000000000 --- a/jsprit-instances/instances/christofides/vrpnc5.txt +++ /dev/null @@ -1,201 +0,0 @@ - 199 200 999999 0 - 35 35 - 41 49 10 - 35 17 7 - 55 45 13 - 55 20 19 - 15 30 26 - 25 30 3 - 20 50 5 - 10 43 9 - 55 60 16 - 30 60 16 - 20 65 12 - 50 35 19 - 30 25 23 - 15 10 20 - 30 5 8 - 10 20 19 - 5 30 2 - 20 40 12 - 15 60 17 - 45 65 9 - 45 20 11 - 45 10 18 - 55 5 29 - 65 35 3 - 65 20 6 - 45 30 17 - 35 40 16 - 41 37 16 - 64 42 9 - 40 60 21 - 31 52 27 - 35 69 23 - 53 52 11 - 65 55 14 - 63 65 8 - 2 60 5 - 20 20 8 - 5 5 16 - 60 12 31 - 40 25 9 - 42 7 5 - 24 12 5 - 23 3 7 - 11 14 18 - 6 38 16 - 2 48 1 - 8 56 27 - 13 52 36 - 6 68 30 - 47 47 13 - 49 58 10 - 27 43 9 - 37 31 14 - 57 29 18 - 63 23 2 - 53 12 6 - 32 12 7 - 36 26 18 - 21 24 28 - 17 34 3 - 12 24 13 - 24 58 19 - 27 69 10 - 15 77 9 - 62 77 20 - 49 73 25 - 67 5 25 - 56 39 36 - 37 47 6 - 37 56 5 - 57 68 15 - 47 16 25 - 44 17 9 - 46 13 8 - 49 11 18 - 49 42 13 - 53 43 14 - 61 52 3 - 57 48 23 - 56 37 6 - 55 54 26 - 15 47 16 - 14 37 11 - 11 31 7 - 16 22 41 - 4 18 35 - 28 18 26 - 26 52 9 - 26 35 15 - 31 67 3 - 15 19 1 - 22 22 2 - 18 24 22 - 26 27 27 - 25 24 20 - 22 27 11 - 25 21 12 - 19 21 10 - 20 26 9 - 18 18 17 - 37 52 7 - 49 49 30 - 52 64 16 - 20 26 9 - 40 30 21 - 21 47 15 - 17 63 19 - 31 62 23 - 52 33 11 - 51 21 5 - 42 41 19 - 31 32 29 - 5 25 23 - 12 42 21 - 36 16 10 - 52 41 15 - 27 23 3 - 17 33 41 - 13 13 9 - 57 58 28 - 62 42 8 - 42 57 8 - 16 57 16 - 8 52 10 - 7 38 28 - 27 68 7 - 30 48 15 - 43 67 14 - 58 48 6 - 58 27 19 - 37 69 11 - 38 46 12 - 46 10 23 - 61 33 26 - 62 63 17 - 63 69 6 - 32 22 9 - 45 35 15 - 59 15 14 - 5 6 7 - 10 17 27 - 21 10 13 - 5 64 11 - 30 15 16 - 39 10 10 - 32 39 5 - 25 32 25 - 25 55 17 - 48 28 18 - 56 37 10 - 22 22 18 - 36 26 26 - 21 45 11 - 45 35 30 - 55 20 21 - 33 34 19 - 50 50 15 - 55 45 16 - 26 59 29 - 40 66 26 - 55 65 37 - 35 51 16 - 62 35 12 - 62 57 31 - 62 24 8 - 21 36 19 - 33 44 20 - 9 56 13 - 62 48 15 - 66 14 22 - 44 13 28 - 26 13 12 - 11 28 6 - 7 43 27 - 17 64 14 - 41 46 18 - 55 34 17 - 35 16 29 - 52 26 13 - 43 26 22 - 31 76 25 - 22 53 28 - 26 29 27 - 50 40 19 - 55 50 10 - 54 10 12 - 60 15 14 - 47 66 24 - 30 60 16 - 30 50 33 - 12 17 15 - 15 14 11 - 16 19 18 - 21 48 17 - 50 30 21 - 51 42 27 - 50 15 19 - 48 21 20 - 12 38 5 diff --git a/jsprit-instances/instances/christofides/vrpnc6.txt b/jsprit-instances/instances/christofides/vrpnc6.txt deleted file mode 100644 index 6a966b526..000000000 --- a/jsprit-instances/instances/christofides/vrpnc6.txt +++ /dev/null @@ -1,52 +0,0 @@ - 50 160 200 10 - 30 40 - 37 52 7 - 49 49 30 - 52 64 16 - 20 26 9 - 40 30 21 - 21 47 15 - 17 63 19 - 31 62 23 - 52 33 11 - 51 21 5 - 42 41 19 - 31 32 29 - 5 25 23 - 12 42 21 - 36 16 10 - 52 41 15 - 27 23 3 - 17 33 41 - 13 13 9 - 57 58 28 - 62 42 8 - 42 57 8 - 16 57 16 - 8 52 10 - 7 38 28 - 27 68 7 - 30 48 15 - 43 67 14 - 58 48 6 - 58 27 19 - 37 69 11 - 38 46 12 - 46 10 23 - 61 33 26 - 62 63 17 - 63 69 6 - 32 22 9 - 45 35 15 - 59 15 14 - 5 6 7 - 10 17 27 - 21 10 13 - 5 64 11 - 30 15 16 - 39 10 10 - 32 39 5 - 25 32 25 - 25 55 17 - 48 28 18 - 56 37 10 diff --git a/jsprit-instances/instances/christofides/vrpnc7.txt b/jsprit-instances/instances/christofides/vrpnc7.txt deleted file mode 100644 index fa272e810..000000000 --- a/jsprit-instances/instances/christofides/vrpnc7.txt +++ /dev/null @@ -1,77 +0,0 @@ - 75 140 160 10 - 40 40 - 22 22 18 - 36 26 26 - 21 45 11 - 45 35 30 - 55 20 21 - 33 34 19 - 50 50 15 - 55 45 16 - 26 59 29 - 40 66 26 - 55 65 37 - 35 51 16 - 62 35 12 - 62 57 31 - 62 24 8 - 21 36 19 - 33 44 20 - 9 56 13 - 62 48 15 - 66 14 22 - 44 13 28 - 26 13 12 - 11 28 6 - 7 43 27 - 17 64 14 - 41 46 18 - 55 34 17 - 35 16 29 - 52 26 13 - 43 26 22 - 31 76 25 - 22 53 28 - 26 29 27 - 50 40 19 - 55 50 10 - 54 10 12 - 60 15 14 - 47 66 24 - 30 60 16 - 30 50 33 - 12 17 15 - 15 14 11 - 16 19 18 - 21 48 17 - 50 30 21 - 51 42 27 - 50 15 19 - 48 21 20 - 12 38 5 - 15 56 22 - 29 39 12 - 54 38 19 - 55 57 22 - 67 41 16 - 10 70 7 - 6 25 26 - 65 27 14 - 40 60 21 - 70 64 24 - 64 4 13 - 36 6 15 - 30 20 18 - 20 30 11 - 15 5 28 - 50 70 9 - 57 72 37 - 45 42 30 - 38 33 10 - 50 4 8 - 66 8 11 - 59 5 3 - 35 60 1 - 27 24 6 - 40 20 10 - 40 37 20 diff --git a/jsprit-instances/instances/christofides/vrpnc8.txt b/jsprit-instances/instances/christofides/vrpnc8.txt deleted file mode 100644 index da1d78879..000000000 --- a/jsprit-instances/instances/christofides/vrpnc8.txt +++ /dev/null @@ -1,102 +0,0 @@ - 100 200 230 10 - 35 35 - 41 49 10 - 35 17 7 - 55 45 13 - 55 20 19 - 15 30 26 - 25 30 3 - 20 50 5 - 10 43 9 - 55 60 16 - 30 60 16 - 20 65 12 - 50 35 19 - 30 25 23 - 15 10 20 - 30 5 8 - 10 20 19 - 5 30 2 - 20 40 12 - 15 60 17 - 45 65 9 - 45 20 11 - 45 10 18 - 55 5 29 - 65 35 3 - 65 20 6 - 45 30 17 - 35 40 16 - 41 37 16 - 64 42 9 - 40 60 21 - 31 52 27 - 35 69 23 - 53 52 11 - 65 55 14 - 63 65 8 - 2 60 5 - 20 20 8 - 5 5 16 - 60 12 31 - 40 25 9 - 42 7 5 - 24 12 5 - 23 3 7 - 11 14 18 - 6 38 16 - 2 48 1 - 8 56 27 - 13 52 36 - 6 68 30 - 47 47 13 - 49 58 10 - 27 43 9 - 37 31 14 - 57 29 18 - 63 23 2 - 53 12 6 - 32 12 7 - 36 26 18 - 21 24 28 - 17 34 3 - 12 24 13 - 24 58 19 - 27 69 10 - 15 77 9 - 62 77 20 - 49 73 25 - 67 5 25 - 56 39 36 - 37 47 6 - 37 56 5 - 57 68 15 - 47 16 25 - 44 17 9 - 46 13 8 - 49 11 18 - 49 42 13 - 53 43 14 - 61 52 3 - 57 48 23 - 56 37 6 - 55 54 26 - 15 47 16 - 14 37 11 - 11 31 7 - 16 22 41 - 4 18 35 - 28 18 26 - 26 52 9 - 26 35 15 - 31 67 3 - 15 19 1 - 22 22 2 - 18 24 22 - 26 27 27 - 25 24 20 - 22 27 11 - 25 21 12 - 19 21 10 - 20 26 9 - 18 18 17 diff --git a/jsprit-instances/instances/christofides/vrpnc9.txt b/jsprit-instances/instances/christofides/vrpnc9.txt deleted file mode 100644 index c6ebf9e9a..000000000 --- a/jsprit-instances/instances/christofides/vrpnc9.txt +++ /dev/null @@ -1,152 +0,0 @@ - 150 200 200 10 - 35 35 - 41 49 10 - 35 17 7 - 55 45 13 - 55 20 19 - 15 30 26 - 25 30 3 - 20 50 5 - 10 43 9 - 55 60 16 - 30 60 16 - 20 65 12 - 50 35 19 - 30 25 23 - 15 10 20 - 30 5 8 - 10 20 19 - 5 30 2 - 20 40 12 - 15 60 17 - 45 65 9 - 45 20 11 - 45 10 18 - 55 5 29 - 65 35 3 - 65 20 6 - 45 30 17 - 35 40 16 - 41 37 16 - 64 42 9 - 40 60 21 - 31 52 27 - 35 69 23 - 53 52 11 - 65 55 14 - 63 65 8 - 2 60 5 - 20 20 8 - 5 5 16 - 60 12 31 - 40 25 9 - 42 7 5 - 24 12 5 - 23 3 7 - 11 14 18 - 6 38 16 - 2 48 1 - 8 56 27 - 13 52 36 - 6 68 30 - 47 47 13 - 49 58 10 - 27 43 9 - 37 31 14 - 57 29 18 - 63 23 2 - 53 12 6 - 32 12 7 - 36 26 18 - 21 24 28 - 17 34 3 - 12 24 13 - 24 58 19 - 27 69 10 - 15 77 9 - 62 77 20 - 49 73 25 - 67 5 25 - 56 39 36 - 37 47 6 - 37 56 5 - 57 68 15 - 47 16 25 - 44 17 9 - 46 13 8 - 49 11 18 - 49 42 13 - 53 43 14 - 61 52 3 - 57 48 23 - 56 37 6 - 55 54 26 - 15 47 16 - 14 37 11 - 11 31 7 - 16 22 41 - 4 18 35 - 28 18 26 - 26 52 9 - 26 35 15 - 31 67 3 - 15 19 1 - 22 22 2 - 18 24 22 - 26 27 27 - 25 24 20 - 22 27 11 - 25 21 12 - 19 21 10 - 20 26 9 - 18 18 17 - 37 52 7 - 49 49 30 - 52 64 16 - 20 26 9 - 40 30 21 - 21 47 15 - 17 63 19 - 31 62 23 - 52 33 11 - 51 21 5 - 42 41 19 - 31 32 29 - 5 25 23 - 12 42 21 - 36 16 10 - 52 41 15 - 27 23 3 - 17 33 41 - 13 13 9 - 57 58 28 - 62 42 8 - 42 57 8 - 16 57 16 - 8 52 10 - 7 38 28 - 27 68 7 - 30 48 15 - 43 67 14 - 58 48 6 - 58 27 19 - 37 69 11 - 38 46 12 - 46 10 23 - 61 33 26 - 62 63 17 - 63 69 6 - 32 22 9 - 45 35 15 - 59 15 14 - 5 6 7 - 10 17 27 - 21 10 13 - 5 64 11 - 30 15 16 - 39 10 10 - 32 39 5 - 25 32 25 - 25 55 17 - 48 28 18 - 56 37 10 diff --git a/jsprit-instances/instances/cordeau/p01 b/jsprit-instances/instances/cordeau/p01 deleted file mode 100644 index 591575719..000000000 --- a/jsprit-instances/instances/cordeau/p01 +++ /dev/null @@ -1,59 +0,0 @@ -2 4 50 4 -0 80 -0 80 -0 80 -0 80 - 1 37 52 0 7 1 4 1 2 4 8 - 2 49 49 0 30 1 4 1 2 4 8 - 3 52 64 0 16 1 4 1 2 4 8 - 4 20 26 0 9 1 4 1 2 4 8 - 5 40 30 0 21 1 4 1 2 4 8 - 6 21 47 0 15 1 4 1 2 4 8 - 7 17 63 0 19 1 4 1 2 4 8 - 8 31 62 0 23 1 4 1 2 4 8 - 9 52 33 0 11 1 4 1 2 4 8 -10 51 21 0 5 1 4 1 2 4 8 -11 42 41 0 19 1 4 1 2 4 8 -12 31 32 0 29 1 4 1 2 4 8 -13 5 25 0 23 1 4 1 2 4 8 -14 12 42 0 21 1 4 1 2 4 8 -15 36 16 0 10 1 4 1 2 4 8 -16 52 41 0 15 1 4 1 2 4 8 -17 27 23 0 3 1 4 1 2 4 8 -18 17 33 0 41 1 4 1 2 4 8 -19 13 13 0 9 1 4 1 2 4 8 -20 57 58 0 28 1 4 1 2 4 8 -21 62 42 0 8 1 4 1 2 4 8 -22 42 57 0 8 1 4 1 2 4 8 -23 16 57 0 16 1 4 1 2 4 8 -24 8 52 0 10 1 4 1 2 4 8 -25 7 38 0 28 1 4 1 2 4 8 -26 27 68 0 7 1 4 1 2 4 8 -27 30 48 0 15 1 4 1 2 4 8 -28 43 67 0 14 1 4 1 2 4 8 -29 58 48 0 6 1 4 1 2 4 8 -30 58 27 0 19 1 4 1 2 4 8 -31 37 69 0 11 1 4 1 2 4 8 -32 38 46 0 12 1 4 1 2 4 8 -33 46 10 0 23 1 4 1 2 4 8 -34 61 33 0 26 1 4 1 2 4 8 -35 62 63 0 17 1 4 1 2 4 8 -36 63 69 0 6 1 4 1 2 4 8 -37 32 22 0 9 1 4 1 2 4 8 -38 45 35 0 15 1 4 1 2 4 8 -39 59 15 0 14 1 4 1 2 4 8 -40 5 6 0 7 1 4 1 2 4 8 -41 10 17 0 27 1 4 1 2 4 8 -42 21 10 0 13 1 4 1 2 4 8 -43 5 64 0 11 1 4 1 2 4 8 -44 30 15 0 16 1 4 1 2 4 8 -45 39 10 0 10 1 4 1 2 4 8 -46 32 39 0 5 1 4 1 2 4 8 -47 25 32 0 25 1 4 1 2 4 8 -48 25 55 0 17 1 4 1 2 4 8 -49 48 28 0 18 1 4 1 2 4 8 -50 56 37 0 10 1 4 1 2 4 8 -51 20 20 0 0 0 0 -52 30 40 0 0 0 0 -53 50 30 0 0 0 0 -54 60 50 0 0 0 0 diff --git a/jsprit-instances/instances/cordeau/p01.res b/jsprit-instances/instances/cordeau/p01.res deleted file mode 100644 index 2f8dccaa8..000000000 --- a/jsprit-instances/instances/cordeau/p01.res +++ /dev/null @@ -1,12 +0,0 @@ -576.87 -1 1 60.06 71 0 44 45 33 15 37 17 0 -1 2 66.55 79 0 42 19 40 41 13 0 -1 3 47.00 78 0 25 18 4 0 -2 1 53.44 73 0 6 27 1 32 11 46 0 -2 2 79.47 80 0 48 8 26 31 28 22 0 -2 3 81.40 77 0 23 7 43 24 14 0 -2 4 23.50 54 0 12 47 0 -3 1 50.41 75 0 9 34 30 39 10 0 -3 2 25.22 54 0 49 5 38 0 -4 1 47.67 67 0 35 36 3 20 0 -4 2 42.14 69 0 21 50 16 2 29 0 diff --git a/jsprit-instances/instances/cordeau/p02 b/jsprit-instances/instances/cordeau/p02 deleted file mode 100644 index bae8caf33..000000000 --- a/jsprit-instances/instances/cordeau/p02 +++ /dev/null @@ -1,59 +0,0 @@ -2 2 50 4 -0 160 -0 160 -0 160 -0 160 - 1 37 52 0 7 1 4 1 2 4 8 - 2 49 49 0 30 1 4 1 2 4 8 - 3 52 64 0 16 1 4 1 2 4 8 - 4 20 26 0 9 1 4 1 2 4 8 - 5 40 30 0 21 1 4 1 2 4 8 - 6 21 47 0 15 1 4 1 2 4 8 - 7 17 63 0 19 1 4 1 2 4 8 - 8 31 62 0 23 1 4 1 2 4 8 - 9 52 33 0 11 1 4 1 2 4 8 -10 51 21 0 5 1 4 1 2 4 8 -11 42 41 0 19 1 4 1 2 4 8 -12 31 32 0 29 1 4 1 2 4 8 -13 5 25 0 23 1 4 1 2 4 8 -14 12 42 0 21 1 4 1 2 4 8 -15 36 16 0 10 1 4 1 2 4 8 -16 52 41 0 15 1 4 1 2 4 8 -17 27 23 0 3 1 4 1 2 4 8 -18 17 33 0 41 1 4 1 2 4 8 -19 13 13 0 9 1 4 1 2 4 8 -20 57 58 0 28 1 4 1 2 4 8 -21 62 42 0 8 1 4 1 2 4 8 -22 42 57 0 8 1 4 1 2 4 8 -23 16 57 0 16 1 4 1 2 4 8 -24 8 52 0 10 1 4 1 2 4 8 -25 7 38 0 28 1 4 1 2 4 8 -26 27 68 0 7 1 4 1 2 4 8 -27 30 48 0 15 1 4 1 2 4 8 -28 43 67 0 14 1 4 1 2 4 8 -29 58 48 0 6 1 4 1 2 4 8 -30 58 27 0 19 1 4 1 2 4 8 -31 37 69 0 11 1 4 1 2 4 8 -32 38 46 0 12 1 4 1 2 4 8 -33 46 10 0 23 1 4 1 2 4 8 -34 61 33 0 26 1 4 1 2 4 8 -35 62 63 0 17 1 4 1 2 4 8 -36 63 69 0 6 1 4 1 2 4 8 -37 32 22 0 9 1 4 1 2 4 8 -38 45 35 0 15 1 4 1 2 4 8 -39 59 15 0 14 1 4 1 2 4 8 -40 5 6 0 7 1 4 1 2 4 8 -41 10 17 0 27 1 4 1 2 4 8 -42 21 10 0 13 1 4 1 2 4 8 -43 5 64 0 11 1 4 1 2 4 8 -44 30 15 0 16 1 4 1 2 4 8 -45 39 10 0 10 1 4 1 2 4 8 -46 32 39 0 5 1 4 1 2 4 8 -47 25 32 0 25 1 4 1 2 4 8 -48 25 55 0 17 1 4 1 2 4 8 -49 48 28 0 18 1 4 1 2 4 8 -50 56 37 0 10 1 4 1 2 4 8 -51 20 20 0 0 0 0 -52 30 40 0 0 0 0 -53 50 30 0 0 0 0 -54 60 50 0 0 0 0 diff --git a/jsprit-instances/instances/cordeau/p02.res b/jsprit-instances/instances/cordeau/p02.res deleted file mode 100644 index b60ef0fd9..000000000 --- a/jsprit-instances/instances/cordeau/p02.res +++ /dev/null @@ -1,6 +0,0 @@ -473.53 -1 1 87.04 154 0 4 47 18 13 41 40 19 42 0 -2 1 101.91 157 0 6 14 25 24 43 7 23 48 27 46 0 -3 1 74.27 153 0 38 11 2 16 50 21 34 30 9 0 -3 2 95.30 158 0 10 39 33 45 15 44 37 17 12 5 49 0 -4 1 115.02 155 0 20 35 36 3 28 31 26 8 22 1 32 29 0 diff --git a/jsprit-instances/instances/cordeau/p03 b/jsprit-instances/instances/cordeau/p03 deleted file mode 100644 index 2edaf1dc5..000000000 --- a/jsprit-instances/instances/cordeau/p03 +++ /dev/null @@ -1,86 +0,0 @@ -2 3 75 5 -0 140 -0 140 -0 140 -0 140 -0 140 - 1 22 22 0 18 1 5 1 2 4 8 16 - 2 36 26 0 26 1 5 1 2 4 8 16 - 3 21 45 0 11 1 5 1 2 4 8 16 - 4 45 35 0 30 1 5 1 2 4 8 16 - 5 55 20 0 21 1 5 1 2 4 8 16 - 6 33 34 0 19 1 5 1 2 4 8 16 - 7 50 50 0 15 1 5 1 2 4 8 16 - 8 55 45 0 16 1 5 1 2 4 8 16 - 9 26 59 0 29 1 5 1 2 4 8 16 -10 40 66 0 26 1 5 1 2 4 8 16 -11 55 65 0 37 1 5 1 2 4 8 16 -12 35 51 0 16 1 5 1 2 4 8 16 -13 62 35 0 12 1 5 1 2 4 8 16 -14 62 57 0 31 1 5 1 2 4 8 16 -15 62 24 0 8 1 5 1 2 4 8 16 -16 21 36 0 19 1 5 1 2 4 8 16 -17 33 44 0 20 1 5 1 2 4 8 16 -18 9 56 0 13 1 5 1 2 4 8 16 -19 62 48 0 15 1 5 1 2 4 8 16 -20 66 14 0 22 1 5 1 2 4 8 16 -21 44 13 0 28 1 5 1 2 4 8 16 -22 26 13 0 12 1 5 1 2 4 8 16 -23 11 28 0 6 1 5 1 2 4 8 16 -24 7 43 0 27 1 5 1 2 4 8 16 -25 17 64 0 14 1 5 1 2 4 8 16 -26 41 46 0 18 1 5 1 2 4 8 16 -27 55 34 0 17 1 5 1 2 4 8 16 -28 35 16 0 29 1 5 1 2 4 8 16 -29 52 26 0 13 1 5 1 2 4 8 16 -30 43 26 0 22 1 5 1 2 4 8 16 -31 31 76 0 25 1 5 1 2 4 8 16 -32 22 53 0 28 1 5 1 2 4 8 16 -33 26 29 0 27 1 5 1 2 4 8 16 -34 50 40 0 19 1 5 1 2 4 8 16 -35 55 50 0 10 1 5 1 2 4 8 16 -36 54 10 0 12 1 5 1 2 4 8 16 -37 60 15 0 14 1 5 1 2 4 8 16 -38 47 66 0 24 1 5 1 2 4 8 16 -39 30 60 0 16 1 5 1 2 4 8 16 -40 30 50 0 33 1 5 1 2 4 8 16 -41 12 17 0 15 1 5 1 2 4 8 16 -42 15 14 0 11 1 5 1 2 4 8 16 -43 16 19 0 18 1 5 1 2 4 8 16 -44 21 48 0 17 1 5 1 2 4 8 16 -45 50 30 0 21 1 5 1 2 4 8 16 -46 51 42 0 27 1 5 1 2 4 8 16 -47 50 15 0 19 1 5 1 2 4 8 16 -48 48 21 0 20 1 5 1 2 4 8 16 -49 12 38 0 5 1 5 1 2 4 8 16 -50 15 56 0 22 1 5 1 2 4 8 16 -51 29 39 0 12 1 5 1 2 4 8 16 -52 54 38 0 19 1 5 1 2 4 8 16 -53 55 57 0 22 1 5 1 2 4 8 16 -54 67 41 0 16 1 5 1 2 4 8 16 -55 10 70 0 7 1 5 1 2 4 8 16 -56 6 25 0 26 1 5 1 2 4 8 16 -57 65 27 0 14 1 5 1 2 4 8 16 -58 40 60 0 21 1 5 1 2 4 8 16 -59 70 64 0 24 1 5 1 2 4 8 16 -60 64 4 0 13 1 5 1 2 4 8 16 -61 36 6 0 15 1 5 1 2 4 8 16 -62 30 20 0 18 1 5 1 2 4 8 16 -63 20 30 0 11 1 5 1 2 4 8 16 -64 15 5 0 28 1 5 1 2 4 8 16 -65 50 70 0 9 1 5 1 2 4 8 16 -66 57 72 0 37 1 5 1 2 4 8 16 -67 45 42 0 30 1 5 1 2 4 8 16 -68 38 33 0 10 1 5 1 2 4 8 16 -69 50 4 0 8 1 5 1 2 4 8 16 -70 66 8 0 11 1 5 1 2 4 8 16 -71 59 5 0 3 1 5 1 2 4 8 16 -72 35 60 0 1 1 5 1 2 4 8 16 -73 27 24 0 6 1 5 1 2 4 8 16 -74 40 20 0 10 1 5 1 2 4 8 16 -75 40 37 0 20 1 5 1 2 4 8 16 -76 40 40 0 0 0 0 -77 50 22 0 0 0 0 -78 55 55 0 0 0 0 -79 25 45 0 0 0 0 -80 20 20 0 0 0 0 diff --git a/jsprit-instances/instances/cordeau/p03.res b/jsprit-instances/instances/cordeau/p03.res deleted file mode 100644 index 29807885a..000000000 --- a/jsprit-instances/instances/cordeau/p03.res +++ /dev/null @@ -1,12 +0,0 @@ -641.19 -1 1 27.76 106 0 4 34 46 67 0 -1 2 39.71 99 0 26 17 51 6 68 75 0 -2 1 63.78 123 0 5 37 20 70 60 71 69 36 47 0 -2 2 50.46 140 0 48 21 74 2 30 45 29 0 -3 1 72.50 127 0 35 8 52 27 15 57 13 54 19 0 -3 2 57.53 138 0 14 59 66 65 11 0 -3 3 77.20 134 0 7 58 72 31 10 38 53 0 -4 1 42.34 122 0 40 12 39 9 32 0 -4 2 87.79 135 0 3 44 50 25 55 18 24 49 16 0 -5 1 53.04 127 0 43 41 56 23 63 33 73 1 0 -5 2 69.07 113 0 62 28 61 22 64 42 0 diff --git a/jsprit-instances/instances/cordeau/p04 b/jsprit-instances/instances/cordeau/p04 deleted file mode 100644 index e1cd40948..000000000 --- a/jsprit-instances/instances/cordeau/p04 +++ /dev/null @@ -1,105 +0,0 @@ -2 8 100 2 -0 100 -0 100 - 1 41 49 0 10 1 2 1 2 - 2 35 17 0 7 1 2 1 2 - 3 55 45 0 13 1 2 1 2 - 4 55 20 0 19 1 2 1 2 - 5 15 30 0 26 1 2 1 2 - 6 25 30 0 3 1 2 1 2 - 7 20 50 0 5 1 2 1 2 - 8 10 43 0 9 1 2 1 2 - 9 55 60 0 16 1 2 1 2 - 10 30 60 0 16 1 2 1 2 - 11 20 65 0 12 1 2 1 2 - 12 50 35 0 19 1 2 1 2 - 13 30 25 0 23 1 2 1 2 - 14 15 10 0 20 1 2 1 2 - 15 30 5 0 8 1 2 1 2 - 16 10 20 0 19 1 2 1 2 - 17 5 30 0 2 1 2 1 2 - 18 20 40 0 12 1 2 1 2 - 19 15 60 0 17 1 2 1 2 - 20 45 65 0 9 1 2 1 2 - 21 45 20 0 11 1 2 1 2 - 22 45 10 0 18 1 2 1 2 - 23 55 5 0 29 1 2 1 2 - 24 65 35 0 3 1 2 1 2 - 25 65 20 0 6 1 2 1 2 - 26 45 30 0 17 1 2 1 2 - 27 35 40 0 16 1 2 1 2 - 28 41 37 0 16 1 2 1 2 - 29 64 42 0 9 1 2 1 2 - 30 40 60 0 21 1 2 1 2 - 31 31 52 0 27 1 2 1 2 - 32 35 69 0 23 1 2 1 2 - 33 53 52 0 11 1 2 1 2 - 34 65 55 0 14 1 2 1 2 - 35 63 65 0 8 1 2 1 2 - 36 2 60 0 5 1 2 1 2 - 37 20 20 0 8 1 2 1 2 - 38 5 5 0 16 1 2 1 2 - 39 60 12 0 31 1 2 1 2 - 40 40 25 0 9 1 2 1 2 - 41 42 7 0 5 1 2 1 2 - 42 24 12 0 5 1 2 1 2 - 43 23 3 0 7 1 2 1 2 - 44 11 14 0 18 1 2 1 2 - 45 6 38 0 16 1 2 1 2 - 46 2 48 0 1 1 2 1 2 - 47 8 56 0 27 1 2 1 2 - 48 13 52 0 36 1 2 1 2 - 49 6 68 0 30 1 2 1 2 - 50 47 47 0 13 1 2 1 2 - 51 49 58 0 10 1 2 1 2 - 52 27 43 0 9 1 2 1 2 - 53 37 31 0 14 1 2 1 2 - 54 57 29 0 18 1 2 1 2 - 55 63 23 0 2 1 2 1 2 - 56 53 12 0 6 1 2 1 2 - 57 32 12 0 7 1 2 1 2 - 58 36 26 0 18 1 2 1 2 - 59 21 24 0 28 1 2 1 2 - 60 17 34 0 3 1 2 1 2 - 61 12 24 0 13 1 2 1 2 - 62 24 58 0 19 1 2 1 2 - 63 27 69 0 10 1 2 1 2 - 64 15 77 0 9 1 2 1 2 - 65 62 77 0 20 1 2 1 2 - 66 49 73 0 25 1 2 1 2 - 67 67 5 0 25 1 2 1 2 - 68 56 39 0 36 1 2 1 2 - 69 37 47 0 6 1 2 1 2 - 70 37 56 0 5 1 2 1 2 - 71 57 68 0 15 1 2 1 2 - 72 47 16 0 25 1 2 1 2 - 73 44 17 0 9 1 2 1 2 - 74 46 13 0 8 1 2 1 2 - 75 49 11 0 18 1 2 1 2 - 76 49 42 0 13 1 2 1 2 - 77 53 43 0 14 1 2 1 2 - 78 61 52 0 3 1 2 1 2 - 79 57 48 0 23 1 2 1 2 - 80 56 37 0 6 1 2 1 2 - 81 55 54 0 26 1 2 1 2 - 82 15 47 0 16 1 2 1 2 - 83 14 37 0 11 1 2 1 2 - 84 11 31 0 7 1 2 1 2 - 85 16 22 0 41 1 2 1 2 - 86 4 18 0 35 1 2 1 2 - 87 28 18 0 26 1 2 1 2 - 88 26 52 0 9 1 2 1 2 - 89 26 35 0 15 1 2 1 2 - 90 31 67 0 3 1 2 1 2 - 91 15 19 0 1 1 2 1 2 - 92 22 22 0 2 1 2 1 2 - 93 18 24 0 22 1 2 1 2 - 94 26 27 0 27 1 2 1 2 - 95 25 24 0 20 1 2 1 2 - 96 22 27 0 11 1 2 1 2 - 97 25 21 0 12 1 2 1 2 - 98 19 21 0 10 1 2 1 2 - 99 20 26 0 9 1 2 1 2 -100 18 18 0 17 1 2 1 2 -101 35 20 0 0 0 0 -102 35 50 0 0 0 0 diff --git a/jsprit-instances/instances/cordeau/p04.res b/jsprit-instances/instances/cordeau/p04.res deleted file mode 100644 index 99eeeb716..000000000 --- a/jsprit-instances/instances/cordeau/p04.res +++ /dev/null @@ -1,16 +0,0 @@ -1001.59 -1 1 76.51 96 0 41 23 67 39 56 0 -1 2 59.50 93 0 96 6 89 27 28 53 58 0 -1 3 88.39 100 0 92 61 16 86 38 43 15 0 -1 4 60.71 98 0 57 42 14 44 91 100 98 37 97 0 -1 5 40.57 87 0 21 72 74 75 22 2 0 -1 6 73.41 99 0 73 4 25 55 54 12 26 40 0 -1 7 41.56 100 0 59 99 93 85 0 -1 8 28.69 96 0 87 95 94 13 0 -2 1 74.12 100 0 69 76 77 68 80 24 29 3 0 -2 2 89.62 99 0 51 9 35 71 65 66 70 0 -2 3 84.30 95 0 8 45 17 84 5 60 83 18 52 0 -2 4 107.18 98 0 63 64 49 36 47 46 82 0 -2 5 64.10 100 0 33 81 34 78 79 50 1 0 -2 6 59.81 98 0 88 7 48 19 11 62 0 -2 7 53.10 99 0 31 10 90 32 20 30 0 diff --git a/jsprit-instances/instances/cordeau/p05 b/jsprit-instances/instances/cordeau/p05 deleted file mode 100644 index c9900fcfc..000000000 --- a/jsprit-instances/instances/cordeau/p05 +++ /dev/null @@ -1,105 +0,0 @@ -2 5 100 2 -0 200 -0 200 - 1 41 49 0 10 1 2 1 2 - 2 35 17 0 7 1 2 1 2 - 3 55 45 0 13 1 2 1 2 - 4 55 20 0 19 1 2 1 2 - 5 15 30 0 26 1 2 1 2 - 6 25 30 0 3 1 2 1 2 - 7 20 50 0 5 1 2 1 2 - 8 10 43 0 9 1 2 1 2 - 9 55 60 0 16 1 2 1 2 - 10 30 60 0 16 1 2 1 2 - 11 20 65 0 12 1 2 1 2 - 12 50 35 0 19 1 2 1 2 - 13 30 25 0 23 1 2 1 2 - 14 15 10 0 20 1 2 1 2 - 15 30 5 0 8 1 2 1 2 - 16 10 20 0 19 1 2 1 2 - 17 5 30 0 2 1 2 1 2 - 18 20 40 0 12 1 2 1 2 - 19 15 60 0 17 1 2 1 2 - 20 45 65 0 9 1 2 1 2 - 21 45 20 0 11 1 2 1 2 - 22 45 10 0 18 1 2 1 2 - 23 55 5 0 29 1 2 1 2 - 24 65 35 0 3 1 2 1 2 - 25 65 20 0 6 1 2 1 2 - 26 45 30 0 17 1 2 1 2 - 27 35 40 0 16 1 2 1 2 - 28 41 37 0 16 1 2 1 2 - 29 64 42 0 9 1 2 1 2 - 30 40 60 0 21 1 2 1 2 - 31 31 52 0 27 1 2 1 2 - 32 35 69 0 23 1 2 1 2 - 33 53 52 0 11 1 2 1 2 - 34 65 55 0 14 1 2 1 2 - 35 63 65 0 8 1 2 1 2 - 36 2 60 0 5 1 2 1 2 - 37 20 20 0 8 1 2 1 2 - 38 5 5 0 16 1 2 1 2 - 39 60 12 0 31 1 2 1 2 - 40 40 25 0 9 1 2 1 2 - 41 42 7 0 5 1 2 1 2 - 42 24 12 0 5 1 2 1 2 - 43 23 3 0 7 1 2 1 2 - 44 11 14 0 18 1 2 1 2 - 45 6 38 0 16 1 2 1 2 - 46 2 48 0 1 1 2 1 2 - 47 8 56 0 27 1 2 1 2 - 48 13 52 0 36 1 2 1 2 - 49 6 68 0 30 1 2 1 2 - 50 47 47 0 13 1 2 1 2 - 51 49 58 0 10 1 2 1 2 - 52 27 43 0 9 1 2 1 2 - 53 37 31 0 14 1 2 1 2 - 54 57 29 0 18 1 2 1 2 - 55 63 23 0 2 1 2 1 2 - 56 53 12 0 6 1 2 1 2 - 57 32 12 0 7 1 2 1 2 - 58 36 26 0 18 1 2 1 2 - 59 21 24 0 28 1 2 1 2 - 60 17 34 0 3 1 2 1 2 - 61 12 24 0 13 1 2 1 2 - 62 24 58 0 19 1 2 1 2 - 63 27 69 0 10 1 2 1 2 - 64 15 77 0 9 1 2 1 2 - 65 62 77 0 20 1 2 1 2 - 66 49 73 0 25 1 2 1 2 - 67 67 5 0 25 1 2 1 2 - 68 56 39 0 36 1 2 1 2 - 69 37 47 0 6 1 2 1 2 - 70 37 56 0 5 1 2 1 2 - 71 57 68 0 15 1 2 1 2 - 72 47 16 0 25 1 2 1 2 - 73 44 17 0 9 1 2 1 2 - 74 46 13 0 8 1 2 1 2 - 75 49 11 0 18 1 2 1 2 - 76 49 42 0 13 1 2 1 2 - 77 53 43 0 14 1 2 1 2 - 78 61 52 0 3 1 2 1 2 - 79 57 48 0 23 1 2 1 2 - 80 56 37 0 6 1 2 1 2 - 81 55 54 0 26 1 2 1 2 - 82 15 47 0 16 1 2 1 2 - 83 14 37 0 11 1 2 1 2 - 84 11 31 0 7 1 2 1 2 - 85 16 22 0 41 1 2 1 2 - 86 4 18 0 35 1 2 1 2 - 87 28 18 0 26 1 2 1 2 - 88 26 52 0 9 1 2 1 2 - 89 26 35 0 15 1 2 1 2 - 90 31 67 0 3 1 2 1 2 - 91 15 19 0 1 1 2 1 2 - 92 22 22 0 2 1 2 1 2 - 93 18 24 0 22 1 2 1 2 - 94 26 27 0 27 1 2 1 2 - 95 25 24 0 20 1 2 1 2 - 96 22 27 0 11 1 2 1 2 - 97 25 21 0 12 1 2 1 2 - 98 19 21 0 10 1 2 1 2 - 99 20 26 0 9 1 2 1 2 -100 18 18 0 17 1 2 1 2 -101 15 35 0 0 0 0 -102 55 35 0 0 0 0 diff --git a/jsprit-instances/instances/cordeau/p05.res b/jsprit-instances/instances/cordeau/p05.res deleted file mode 100644 index 71feb7a22..000000000 --- a/jsprit-instances/instances/cordeau/p05.res +++ /dev/null @@ -1,9 +0,0 @@ -750.03 -1 1 138.91 197 0 89 27 69 1 70 30 32 90 63 64 49 36 47 46 45 0 -1 2 60.16 195 0 60 6 94 13 95 97 92 37 100 98 93 59 99 96 0 -1 3 94.91 198 0 18 52 7 88 31 10 62 11 19 48 82 8 83 0 -1 4 84.18 198 0 5 61 85 91 16 44 14 38 86 17 84 0 -2 1 127.89 195 0 76 50 33 81 9 51 20 66 65 71 35 34 78 29 24 0 -2 2 27.97 92 0 77 3 79 68 80 0 -2 3 124.14 196 0 12 28 53 58 2 57 87 42 43 15 41 22 73 21 40 26 0 -2 4 91.86 187 0 4 72 74 75 56 23 67 39 25 55 54 0 diff --git a/jsprit-instances/instances/cordeau/p06 b/jsprit-instances/instances/cordeau/p06 deleted file mode 100644 index 37520fda4..000000000 --- a/jsprit-instances/instances/cordeau/p06 +++ /dev/null @@ -1,107 +0,0 @@ -2 6 100 3 -0 100 -0 100 -0 100 - 1 41 49 0 10 1 3 1 2 4 - 2 35 17 0 7 1 3 1 2 4 - 3 55 45 0 13 1 3 1 2 4 - 4 55 20 0 19 1 3 1 2 4 - 5 15 30 0 26 1 3 1 2 4 - 6 25 30 0 3 1 3 1 2 4 - 7 20 50 0 5 1 3 1 2 4 - 8 10 43 0 9 1 3 1 2 4 - 9 55 60 0 16 1 3 1 2 4 - 10 30 60 0 16 1 3 1 2 4 - 11 20 65 0 12 1 3 1 2 4 - 12 50 35 0 19 1 3 1 2 4 - 13 30 25 0 23 1 3 1 2 4 - 14 15 10 0 20 1 3 1 2 4 - 15 30 5 0 8 1 3 1 2 4 - 16 10 20 0 19 1 3 1 2 4 - 17 5 30 0 2 1 3 1 2 4 - 18 20 40 0 12 1 3 1 2 4 - 19 15 60 0 17 1 3 1 2 4 - 20 45 65 0 9 1 3 1 2 4 - 21 45 20 0 11 1 3 1 2 4 - 22 45 10 0 18 1 3 1 2 4 - 23 55 5 0 29 1 3 1 2 4 - 24 65 35 0 3 1 3 1 2 4 - 25 65 20 0 6 1 3 1 2 4 - 26 45 30 0 17 1 3 1 2 4 - 27 35 40 0 16 1 3 1 2 4 - 28 41 37 0 16 1 3 1 2 4 - 29 64 42 0 9 1 3 1 2 4 - 30 40 60 0 21 1 3 1 2 4 - 31 31 52 0 27 1 3 1 2 4 - 32 35 69 0 23 1 3 1 2 4 - 33 53 52 0 11 1 3 1 2 4 - 34 65 55 0 14 1 3 1 2 4 - 35 63 65 0 8 1 3 1 2 4 - 36 2 60 0 5 1 3 1 2 4 - 37 20 20 0 8 1 3 1 2 4 - 38 5 5 0 16 1 3 1 2 4 - 39 60 12 0 31 1 3 1 2 4 - 40 40 25 0 9 1 3 1 2 4 - 41 42 7 0 5 1 3 1 2 4 - 42 24 12 0 5 1 3 1 2 4 - 43 23 3 0 7 1 3 1 2 4 - 44 11 14 0 18 1 3 1 2 4 - 45 6 38 0 16 1 3 1 2 4 - 46 2 48 0 1 1 3 1 2 4 - 47 8 56 0 27 1 3 1 2 4 - 48 13 52 0 36 1 3 1 2 4 - 49 6 68 0 30 1 3 1 2 4 - 50 47 47 0 13 1 3 1 2 4 - 51 49 58 0 10 1 3 1 2 4 - 52 27 43 0 9 1 3 1 2 4 - 53 37 31 0 14 1 3 1 2 4 - 54 57 29 0 18 1 3 1 2 4 - 55 63 23 0 2 1 3 1 2 4 - 56 53 12 0 6 1 3 1 2 4 - 57 32 12 0 7 1 3 1 2 4 - 58 36 26 0 18 1 3 1 2 4 - 59 21 24 0 28 1 3 1 2 4 - 60 17 34 0 3 1 3 1 2 4 - 61 12 24 0 13 1 3 1 2 4 - 62 24 58 0 19 1 3 1 2 4 - 63 27 69 0 10 1 3 1 2 4 - 64 15 77 0 9 1 3 1 2 4 - 65 62 77 0 20 1 3 1 2 4 - 66 49 73 0 25 1 3 1 2 4 - 67 67 5 0 25 1 3 1 2 4 - 68 56 39 0 36 1 3 1 2 4 - 69 37 47 0 6 1 3 1 2 4 - 70 37 56 0 5 1 3 1 2 4 - 71 57 68 0 15 1 3 1 2 4 - 72 47 16 0 25 1 3 1 2 4 - 73 44 17 0 9 1 3 1 2 4 - 74 46 13 0 8 1 3 1 2 4 - 75 49 11 0 18 1 3 1 2 4 - 76 49 42 0 13 1 3 1 2 4 - 77 53 43 0 14 1 3 1 2 4 - 78 61 52 0 3 1 3 1 2 4 - 79 57 48 0 23 1 3 1 2 4 - 80 56 37 0 6 1 3 1 2 4 - 81 55 54 0 26 1 3 1 2 4 - 82 15 47 0 16 1 3 1 2 4 - 83 14 37 0 11 1 3 1 2 4 - 84 11 31 0 7 1 3 1 2 4 - 85 16 22 0 41 1 3 1 2 4 - 86 4 18 0 35 1 3 1 2 4 - 87 28 18 0 26 1 3 1 2 4 - 88 26 52 0 9 1 3 1 2 4 - 89 26 35 0 15 1 3 1 2 4 - 90 31 67 0 3 1 3 1 2 4 - 91 15 19 0 1 1 3 1 2 4 - 92 22 22 0 2 1 3 1 2 4 - 93 18 24 0 22 1 3 1 2 4 - 94 26 27 0 27 1 3 1 2 4 - 95 25 24 0 20 1 3 1 2 4 - 96 22 27 0 11 1 3 1 2 4 - 97 25 21 0 12 1 3 1 2 4 - 98 19 21 0 10 1 3 1 2 4 - 99 20 26 0 9 1 3 1 2 4 -100 18 18 0 17 1 3 1 2 4 -101 15 20 0 0 0 0 -102 50 20 0 0 0 0 -103 35 55 0 0 0 0 diff --git a/jsprit-instances/instances/cordeau/p06.res b/jsprit-instances/instances/cordeau/p06.res deleted file mode 100644 index 18ecee7a1..000000000 --- a/jsprit-instances/instances/cordeau/p06.res +++ /dev/null @@ -1,17 +0,0 @@ -876.50 -1 1 4.47 41 0 85 0 -1 2 42.58 89 0 91 44 38 86 16 0 -1 3 18.37 77 0 93 59 98 100 0 -1 4 70.08 100 0 37 97 87 2 57 15 43 42 14 0 -1 5 37.91 95 0 92 95 13 94 6 96 99 0 -1 6 58.55 87 0 5 60 83 8 45 17 84 61 0 -2 1 50.53 91 0 56 23 67 39 0 -2 2 67.85 99 0 54 80 68 29 24 55 25 4 0 -2 3 38.49 94 0 72 75 41 22 74 73 21 0 -2 4 55.08 93 0 26 12 28 53 58 40 0 -3 1 95.71 99 0 51 9 71 65 35 34 78 50 0 -3 2 57.29 99 0 62 19 47 48 0 -3 3 55.18 99 0 70 30 20 66 32 10 0 -3 4 57.06 100 0 33 81 79 3 77 76 0 -3 5 106.54 100 0 88 7 82 46 36 49 64 11 63 90 0 -3 6 60.81 95 0 31 52 18 89 27 69 1 0 diff --git a/jsprit-instances/instances/cordeau/p07 b/jsprit-instances/instances/cordeau/p07 deleted file mode 100644 index bdf2a0be0..000000000 --- a/jsprit-instances/instances/cordeau/p07 +++ /dev/null @@ -1,109 +0,0 @@ -2 4 100 4 -0 100 -0 100 -0 100 -0 100 - 1 41 49 0 10 1 4 1 2 4 8 - 2 35 17 0 7 1 4 1 2 4 8 - 3 55 45 0 13 1 4 1 2 4 8 - 4 55 20 0 19 1 4 1 2 4 8 - 5 15 30 0 26 1 4 1 2 4 8 - 6 25 30 0 3 1 4 1 2 4 8 - 7 20 50 0 5 1 4 1 2 4 8 - 8 10 43 0 9 1 4 1 2 4 8 - 9 55 60 0 16 1 4 1 2 4 8 - 10 30 60 0 16 1 4 1 2 4 8 - 11 20 65 0 12 1 4 1 2 4 8 - 12 50 35 0 19 1 4 1 2 4 8 - 13 30 25 0 23 1 4 1 2 4 8 - 14 15 10 0 20 1 4 1 2 4 8 - 15 30 5 0 8 1 4 1 2 4 8 - 16 10 20 0 19 1 4 1 2 4 8 - 17 5 30 0 2 1 4 1 2 4 8 - 18 20 40 0 12 1 4 1 2 4 8 - 19 15 60 0 17 1 4 1 2 4 8 - 20 45 65 0 9 1 4 1 2 4 8 - 21 45 20 0 11 1 4 1 2 4 8 - 22 45 10 0 18 1 4 1 2 4 8 - 23 55 5 0 29 1 4 1 2 4 8 - 24 65 35 0 3 1 4 1 2 4 8 - 25 65 20 0 6 1 4 1 2 4 8 - 26 45 30 0 17 1 4 1 2 4 8 - 27 35 40 0 16 1 4 1 2 4 8 - 28 41 37 0 16 1 4 1 2 4 8 - 29 64 42 0 9 1 4 1 2 4 8 - 30 40 60 0 21 1 4 1 2 4 8 - 31 31 52 0 27 1 4 1 2 4 8 - 32 35 69 0 23 1 4 1 2 4 8 - 33 53 52 0 11 1 4 1 2 4 8 - 34 65 55 0 14 1 4 1 2 4 8 - 35 63 65 0 8 1 4 1 2 4 8 - 36 2 60 0 5 1 4 1 2 4 8 - 37 20 20 0 8 1 4 1 2 4 8 - 38 5 5 0 16 1 4 1 2 4 8 - 39 60 12 0 31 1 4 1 2 4 8 - 40 40 25 0 9 1 4 1 2 4 8 - 41 42 7 0 5 1 4 1 2 4 8 - 42 24 12 0 5 1 4 1 2 4 8 - 43 23 3 0 7 1 4 1 2 4 8 - 44 11 14 0 18 1 4 1 2 4 8 - 45 6 38 0 16 1 4 1 2 4 8 - 46 2 48 0 1 1 4 1 2 4 8 - 47 8 56 0 27 1 4 1 2 4 8 - 48 13 52 0 36 1 4 1 2 4 8 - 49 6 68 0 30 1 4 1 2 4 8 - 50 47 47 0 13 1 4 1 2 4 8 - 51 49 58 0 10 1 4 1 2 4 8 - 52 27 43 0 9 1 4 1 2 4 8 - 53 37 31 0 14 1 4 1 2 4 8 - 54 57 29 0 18 1 4 1 2 4 8 - 55 63 23 0 2 1 4 1 2 4 8 - 56 53 12 0 6 1 4 1 2 4 8 - 57 32 12 0 7 1 4 1 2 4 8 - 58 36 26 0 18 1 4 1 2 4 8 - 59 21 24 0 28 1 4 1 2 4 8 - 60 17 34 0 3 1 4 1 2 4 8 - 61 12 24 0 13 1 4 1 2 4 8 - 62 24 58 0 19 1 4 1 2 4 8 - 63 27 69 0 10 1 4 1 2 4 8 - 64 15 77 0 9 1 4 1 2 4 8 - 65 62 77 0 20 1 4 1 2 4 8 - 66 49 73 0 25 1 4 1 2 4 8 - 67 67 5 0 25 1 4 1 2 4 8 - 68 56 39 0 36 1 4 1 2 4 8 - 69 37 47 0 6 1 4 1 2 4 8 - 70 37 56 0 5 1 4 1 2 4 8 - 71 57 68 0 15 1 4 1 2 4 8 - 72 47 16 0 25 1 4 1 2 4 8 - 73 44 17 0 9 1 4 1 2 4 8 - 74 46 13 0 8 1 4 1 2 4 8 - 75 49 11 0 18 1 4 1 2 4 8 - 76 49 42 0 13 1 4 1 2 4 8 - 77 53 43 0 14 1 4 1 2 4 8 - 78 61 52 0 3 1 4 1 2 4 8 - 79 57 48 0 23 1 4 1 2 4 8 - 80 56 37 0 6 1 4 1 2 4 8 - 81 55 54 0 26 1 4 1 2 4 8 - 82 15 47 0 16 1 4 1 2 4 8 - 83 14 37 0 11 1 4 1 2 4 8 - 84 11 31 0 7 1 4 1 2 4 8 - 85 16 22 0 41 1 4 1 2 4 8 - 86 4 18 0 35 1 4 1 2 4 8 - 87 28 18 0 26 1 4 1 2 4 8 - 88 26 52 0 9 1 4 1 2 4 8 - 89 26 35 0 15 1 4 1 2 4 8 - 90 31 67 0 3 1 4 1 2 4 8 - 91 15 19 0 1 1 4 1 2 4 8 - 92 22 22 0 2 1 4 1 2 4 8 - 93 18 24 0 22 1 4 1 2 4 8 - 94 26 27 0 27 1 4 1 2 4 8 - 95 25 24 0 20 1 4 1 2 4 8 - 96 22 27 0 11 1 4 1 2 4 8 - 97 25 21 0 12 1 4 1 2 4 8 - 98 19 21 0 10 1 4 1 2 4 8 - 99 20 26 0 9 1 4 1 2 4 8 -100 18 18 0 17 1 4 1 2 4 8 -101 15 35 0 0 0 0 -102 55 35 0 0 0 0 -103 35 20 0 0 0 0 -104 35 50 0 0 0 0 diff --git a/jsprit-instances/instances/cordeau/p07.res b/jsprit-instances/instances/cordeau/p07.res deleted file mode 100644 index 70f5281f0..000000000 --- a/jsprit-instances/instances/cordeau/p07.res +++ /dev/null @@ -1,17 +0,0 @@ -885.80 -1 1 46.39 99 0 82 48 47 8 83 0 -1 2 45.73 95 0 5 61 16 86 17 0 -1 3 39.74 100 0 60 99 37 98 85 93 84 0 -1 4 99.18 95 0 45 46 36 49 64 19 7 18 0 -2 1 51.76 93 0 12 26 40 21 4 54 0 -2 2 60.54 92 0 24 29 34 78 79 3 77 76 0 -2 3 8.36 42 0 68 80 0 -2 4 79.73 99 0 55 25 39 67 23 56 0 -3 1 35.10 99 0 87 97 92 59 96 95 0 -3 2 42.69 100 0 13 94 6 89 53 58 0 -3 3 42.99 90 0 73 72 74 75 22 41 2 0 -3 4 87.38 99 0 42 100 91 44 38 14 43 15 57 0 -4 1 50.80 96 0 70 30 51 81 33 50 1 0 -4 2 43.95 74 0 31 52 27 28 69 0 -4 3 89.37 93 0 9 35 71 65 66 20 0 -4 4 62.09 92 0 10 32 90 63 11 62 88 0 diff --git a/jsprit-instances/instances/cordeau/p08 b/jsprit-instances/instances/cordeau/p08 deleted file mode 100644 index e272d5d8e..000000000 --- a/jsprit-instances/instances/cordeau/p08 +++ /dev/null @@ -1,254 +0,0 @@ -2 14 249 2 -310 500 -310 500 - 1 -99 -97 0 6 1 2 1 2 - 2 -59 50 0 72 1 2 1 2 - 3 0 14 0 93 1 2 1 2 - 4 -17 -66 0 28 1 2 1 2 - 5 -69 -19 0 5 1 2 1 2 - 6 31 12 0 43 1 2 1 2 - 7 5 -41 0 1 1 2 1 2 - 8 -12 10 0 36 1 2 1 2 - 9 -64 70 0 53 1 2 1 2 - 10 -12 85 0 63 1 2 1 2 - 11 -18 64 0 25 1 2 1 2 - 12 -77 -16 0 50 1 2 1 2 - 13 -53 88 0 57 1 2 1 2 - 14 83 -24 0 1 1 2 1 2 - 15 24 41 0 66 1 2 1 2 - 16 17 21 0 37 1 2 1 2 - 17 42 96 0 51 1 2 1 2 - 18 -65 0 0 47 1 2 1 2 - 19 -47 -26 0 88 1 2 1 2 - 20 85 36 0 75 1 2 1 2 - 21 -35 -54 0 48 1 2 1 2 - 22 54 -21 0 40 1 2 1 2 - 23 64 -17 0 8 1 2 1 2 - 24 55 89 0 69 1 2 1 2 - 25 17 -25 0 93 1 2 1 2 - 26 -61 66 0 29 1 2 1 2 - 27 -61 26 0 5 1 2 1 2 - 28 17 -72 0 53 1 2 1 2 - 29 79 38 0 8 1 2 1 2 - 30 -62 -2 0 24 1 2 1 2 - 31 -90 -68 0 53 1 2 1 2 - 32 52 66 0 13 1 2 1 2 - 33 -54 -50 0 47 1 2 1 2 - 34 8 -84 0 57 1 2 1 2 - 35 37 -90 0 9 1 2 1 2 - 36 -83 49 0 74 1 2 1 2 - 37 35 -1 0 83 1 2 1 2 - 38 7 59 0 96 1 2 1 2 - 39 12 48 0 42 1 2 1 2 - 40 57 95 0 80 1 2 1 2 - 41 92 28 0 22 1 2 1 2 - 42 -3 97 0 56 1 2 1 2 - 43 -7 52 0 43 1 2 1 2 - 44 42 -15 0 12 1 2 1 2 - 45 77 -43 0 73 1 2 1 2 - 46 59 -49 0 32 1 2 1 2 - 47 25 91 0 8 1 2 1 2 - 48 69 -19 0 79 1 2 1 2 - 49 -82 -14 0 79 1 2 1 2 - 50 74 -70 0 4 1 2 1 2 - 51 69 59 0 14 1 2 1 2 - 52 29 33 0 17 1 2 1 2 - 53 -97 9 0 19 1 2 1 2 - 54 -58 9 0 44 1 2 1 2 - 55 28 93 0 5 1 2 1 2 - 56 7 73 0 37 1 2 1 2 - 57 -28 73 0 100 1 2 1 2 - 58 -76 55 0 62 1 2 1 2 - 59 41 42 0 90 1 2 1 2 - 60 92 40 0 57 1 2 1 2 - 61 -84 -29 0 44 1 2 1 2 - 62 -12 42 0 37 1 2 1 2 - 63 51 -45 0 80 1 2 1 2 - 64 -37 46 0 60 1 2 1 2 - 65 -97 35 0 95 1 2 1 2 - 66 14 89 0 56 1 2 1 2 - 67 60 58 0 56 1 2 1 2 - 68 -63 -75 0 9 1 2 1 2 - 69 -18 34 0 39 1 2 1 2 - 70 -46 -82 0 15 1 2 1 2 - 71 -86 -79 0 4 1 2 1 2 - 72 -43 -30 0 58 1 2 1 2 - 73 -44 7 0 73 1 2 1 2 - 74 -3 -20 0 5 1 2 1 2 - 75 36 41 0 12 1 2 1 2 - 76 -30 -94 0 3 1 2 1 2 - 77 79 -62 0 8 1 2 1 2 - 78 51 70 0 31 1 2 1 2 - 79 -61 -26 0 48 1 2 1 2 - 80 6 94 0 3 1 2 1 2 - 81 -19 -62 0 52 1 2 1 2 - 82 -20 51 0 99 1 2 1 2 - 83 -81 37 0 29 1 2 1 2 - 84 7 31 0 12 1 2 1 2 - 85 52 12 0 50 1 2 1 2 - 86 83 -91 0 98 1 2 1 2 - 87 -7 -92 0 4 1 2 1 2 - 88 82 -74 0 56 1 2 1 2 - 89 -70 85 0 24 1 2 1 2 - 90 -83 -30 0 33 1 2 1 2 - 91 71 -61 0 45 1 2 1 2 - 92 85 11 0 98 1 2 1 2 - 93 66 -48 0 4 1 2 1 2 - 94 78 -87 0 36 1 2 1 2 - 95 9 -79 0 72 1 2 1 2 - 96 -36 4 0 26 1 2 1 2 - 97 66 39 0 71 1 2 1 2 - 98 92 -17 0 84 1 2 1 2 - 99 -46 -79 0 21 1 2 1 2 -100 -30 -63 0 99 1 2 1 2 -101 -42 63 0 33 1 2 1 2 -102 20 42 0 84 1 2 1 2 -103 15 98 0 74 1 2 1 2 -104 1 -17 0 93 1 2 1 2 -105 64 20 0 25 1 2 1 2 -106 -96 85 0 39 1 2 1 2 -107 93 -29 0 42 1 2 1 2 -108 -40 -84 0 77 1 2 1 2 -109 86 35 0 68 1 2 1 2 -110 91 36 0 50 1 2 1 2 -111 62 -8 0 42 1 2 1 2 -112 -24 4 0 71 1 2 1 2 -113 11 96 0 85 1 2 1 2 -114 -53 62 0 78 1 2 1 2 -115 -28 -71 0 64 1 2 1 2 -116 7 -4 0 5 1 2 1 2 -117 95 -9 0 93 1 2 1 2 -118 -3 17 0 18 1 2 1 2 -119 53 -90 0 38 1 2 1 2 -120 58 -19 0 29 1 2 1 2 -121 -83 84 0 81 1 2 1 2 -122 -1 49 0 4 1 2 1 2 -123 -4 17 0 23 1 2 1 2 -124 -82 -3 0 11 1 2 1 2 -125 -43 47 0 86 1 2 1 2 -126 6 -6 0 2 1 2 1 2 -127 70 99 0 31 1 2 1 2 -128 68 -29 0 54 1 2 1 2 -129 -94 -30 0 87 1 2 1 2 -130 -94 -20 0 17 1 2 1 2 -131 -21 77 0 81 1 2 1 2 -132 64 37 0 72 1 2 1 2 -133 -70 -19 0 10 1 2 1 2 -134 88 65 0 50 1 2 1 2 -135 2 29 0 25 1 2 1 2 -136 33 57 0 71 1 2 1 2 -137 -70 6 0 85 1 2 1 2 -138 -38 -56 0 51 1 2 1 2 -139 -80 -95 0 29 1 2 1 2 -140 -5 -39 0 55 1 2 1 2 -141 8 -22 0 45 1 2 1 2 -142 -61 -76 0 100 1 2 1 2 -143 76 -22 0 38 1 2 1 2 -144 49 -71 0 11 1 2 1 2 -145 -30 -68 0 82 1 2 1 2 -146 1 34 0 50 1 2 1 2 -147 77 79 0 39 1 2 1 2 -148 -58 64 0 6 1 2 1 2 -149 82 -97 0 87 1 2 1 2 -150 -80 55 0 83 1 2 1 2 -151 81 -86 0 22 1 2 1 2 -152 39 -49 0 24 1 2 1 2 -153 -67 72 0 69 1 2 1 2 -154 -25 -89 0 97 1 2 1 2 -155 -44 -95 0 65 1 2 1 2 -156 32 -68 0 97 1 2 1 2 -157 -17 49 0 79 1 2 1 2 -158 93 49 0 79 1 2 1 2 -159 99 81 0 46 1 2 1 2 -160 10 -49 0 52 1 2 1 2 -161 63 -41 0 39 1 2 1 2 -162 38 39 0 94 1 2 1 2 -163 -28 39 0 97 1 2 1 2 -164 -2 -47 0 18 1 2 1 2 -165 38 8 0 3 1 2 1 2 -166 -42 -6 0 23 1 2 1 2 -167 -67 88 0 19 1 2 1 2 -168 19 93 0 40 1 2 1 2 -169 40 27 0 49 1 2 1 2 -170 -61 56 0 96 1 2 1 2 -171 43 33 0 58 1 2 1 2 -172 -18 -39 0 15 1 2 1 2 -173 -69 19 0 21 1 2 1 2 -174 75 -18 0 56 1 2 1 2 -175 31 85 0 67 1 2 1 2 -176 25 58 0 10 1 2 1 2 -177 -16 36 0 36 1 2 1 2 -178 91 15 0 84 1 2 1 2 -179 60 -39 0 59 1 2 1 2 -180 49 -47 0 85 1 2 1 2 -181 42 33 0 60 1 2 1 2 -182 16 -81 0 33 1 2 1 2 -183 -78 53 0 62 1 2 1 2 -184 53 -80 0 70 1 2 1 2 -185 -46 -26 0 79 1 2 1 2 -186 -25 -54 0 98 1 2 1 2 -187 69 -46 0 99 1 2 1 2 -188 0 -78 0 18 1 2 1 2 -189 -84 74 0 55 1 2 1 2 -190 -16 16 0 75 1 2 1 2 -191 -63 -14 0 94 1 2 1 2 -192 51 -77 0 89 1 2 1 2 -193 -39 61 0 13 1 2 1 2 -194 5 97 0 19 1 2 1 2 -195 -55 39 0 19 1 2 1 2 -196 70 -14 0 90 1 2 1 2 -197 0 95 0 35 1 2 1 2 -198 -45 7 0 76 1 2 1 2 -199 38 -24 0 3 1 2 1 2 -200 50 -37 0 11 1 2 1 2 -201 59 71 0 98 1 2 1 2 -202 -73 -96 0 92 1 2 1 2 -203 -29 72 0 1 1 2 1 2 -204 -47 12 0 2 1 2 1 2 -205 -88 -61 0 63 1 2 1 2 -206 -88 36 0 57 1 2 1 2 -207 -46 -3 0 50 1 2 1 2 -208 26 -37 0 19 1 2 1 2 -209 -39 -67 0 24 1 2 1 2 -210 92 27 0 14 1 2 1 2 -211 -80 -31 0 18 1 2 1 2 -212 93 -50 0 77 1 2 1 2 -213 -20 -5 0 28 1 2 1 2 -214 -22 73 0 72 1 2 1 2 -215 -4 -7 0 49 1 2 1 2 -216 54 -48 0 58 1 2 1 2 -217 -70 39 0 84 1 2 1 2 -218 54 -82 0 58 1 2 1 2 -219 29 41 0 41 1 2 1 2 -220 -87 51 0 98 1 2 1 2 -221 -96 -36 0 77 1 2 1 2 -222 49 8 0 57 1 2 1 2 -223 -5 54 0 39 1 2 1 2 -224 -26 43 0 99 1 2 1 2 -225 -11 60 0 83 1 2 1 2 -226 40 61 0 54 1 2 1 2 -227 82 35 0 86 1 2 1 2 -228 -92 12 0 2 1 2 1 2 -229 -93 -86 0 14 1 2 1 2 -230 -66 63 0 42 1 2 1 2 -231 -72 -87 0 14 1 2 1 2 -232 -57 -84 0 55 1 2 1 2 -233 23 52 0 2 1 2 1 2 -234 -56 -62 0 18 1 2 1 2 -235 -19 59 0 17 1 2 1 2 -236 63 -14 0 22 1 2 1 2 -237 -13 38 0 28 1 2 1 2 -238 -19 87 0 3 1 2 1 2 -239 44 -84 0 96 1 2 1 2 -240 98 -17 0 53 1 2 1 2 -241 -16 62 0 15 1 2 1 2 -242 3 66 0 36 1 2 1 2 -243 26 22 0 98 1 2 1 2 -244 -38 -81 0 78 1 2 1 2 -245 70 -80 0 92 1 2 1 2 -246 17 -35 0 65 1 2 1 2 -247 96 -83 0 64 1 2 1 2 -248 -77 80 0 43 1 2 1 2 -249 -14 44 0 50 1 2 1 2 -250 -33 33 0 0 0 0 -251 33 -33 0 0 0 0 diff --git a/jsprit-instances/instances/cordeau/p08.res b/jsprit-instances/instances/cordeau/p08.res deleted file mode 100644 index 03301944e..000000000 --- a/jsprit-instances/instances/cordeau/p08.res +++ /dev/null @@ -1,26 +0,0 @@ -4437.68 -1 1 273.48 494 0 237 122 233 176 136 78 24 127 40 17 175 55 47 56 0 -1 2 133.14 473 0 73 198 207 19 185 72 166 96 0 -1 3 138.48 496 0 69 146 135 84 15 102 39 38 223 43 0 -1 4 115.54 496 0 125 101 203 57 131 214 11 241 225 0 -1 5 188.96 487 0 235 238 10 42 197 194 80 113 103 168 66 242 0 -1 6 191.58 488 0 148 26 9 153 189 106 121 248 89 167 13 193 0 -1 7 59.02 497 0 177 62 249 157 82 224 163 0 -1 8 122.55 495 0 114 230 58 150 183 170 2 0 -1 9 162.05 475 0 27 173 137 124 49 12 133 5 191 30 18 54 0 -1 10 281.96 482 0 195 228 53 130 129 221 31 205 61 90 211 79 204 0 -1 11 147.83 497 0 217 83 206 65 220 36 64 0 -1 12 148.28 493 0 190 8 123 118 3 116 126 104 215 213 112 0 -2 1 209.02 498 0 199 222 85 132 97 51 67 169 6 37 0 -2 2 175.08 498 0 165 181 171 59 162 219 52 243 16 0 -2 3 97.66 482 0 180 63 46 93 187 45 161 179 200 0 -2 4 165.62 486 0 7 140 186 21 138 100 145 81 0 -2 5 309.78 491 0 164 209 142 68 231 71 229 1 139 202 232 70 115 4 208 0 -2 6 266.60 493 0 188 87 154 76 155 108 244 99 234 33 172 74 141 0 -2 7 138.41 425 0 28 182 34 95 160 246 25 0 -2 8 185.69 459 0 50 88 247 149 86 151 94 245 0 -2 9 109.58 412 0 22 120 236 111 196 174 48 128 0 -2 10 187.86 499 0 143 14 98 117 240 107 212 77 91 216 0 -2 11 139.09 492 0 152 144 192 184 218 119 239 35 156 0 -2 12 193.07 500 0 23 92 178 210 41 109 20 227 29 105 44 0 -2 13 297.34 498 0 110 60 158 134 159 147 201 32 226 75 0 diff --git a/jsprit-instances/instances/cordeau/p09 b/jsprit-instances/instances/cordeau/p09 deleted file mode 100644 index e2fa2ab75..000000000 --- a/jsprit-instances/instances/cordeau/p09 +++ /dev/null @@ -1,256 +0,0 @@ -2 12 249 3 -310 500 -310 500 -310 500 - 1 -99 -97 0 6 1 3 1 2 4 - 2 -59 50 0 72 1 3 1 2 4 - 3 0 14 0 93 1 3 1 2 4 - 4 -17 -66 0 28 1 3 1 2 4 - 5 -69 -19 0 5 1 3 1 2 4 - 6 31 12 0 43 1 3 1 2 4 - 7 5 -41 0 1 1 3 1 2 4 - 8 -12 10 0 36 1 3 1 2 4 - 9 -64 70 0 53 1 3 1 2 4 - 10 -12 85 0 63 1 3 1 2 4 - 11 -18 64 0 25 1 3 1 2 4 - 12 -77 -16 0 50 1 3 1 2 4 - 13 -53 88 0 57 1 3 1 2 4 - 14 83 -24 0 1 1 3 1 2 4 - 15 24 41 0 66 1 3 1 2 4 - 16 17 21 0 37 1 3 1 2 4 - 17 42 96 0 51 1 3 1 2 4 - 18 -65 0 0 47 1 3 1 2 4 - 19 -47 -26 0 88 1 3 1 2 4 - 20 85 36 0 75 1 3 1 2 4 - 21 -35 -54 0 48 1 3 1 2 4 - 22 54 -21 0 40 1 3 1 2 4 - 23 64 -17 0 8 1 3 1 2 4 - 24 55 89 0 69 1 3 1 2 4 - 25 17 -25 0 93 1 3 1 2 4 - 26 -61 66 0 29 1 3 1 2 4 - 27 -61 26 0 5 1 3 1 2 4 - 28 17 -72 0 53 1 3 1 2 4 - 29 79 38 0 8 1 3 1 2 4 - 30 -62 -2 0 24 1 3 1 2 4 - 31 -90 -68 0 53 1 3 1 2 4 - 32 52 66 0 13 1 3 1 2 4 - 33 -54 -50 0 47 1 3 1 2 4 - 34 8 -84 0 57 1 3 1 2 4 - 35 37 -90 0 9 1 3 1 2 4 - 36 -83 49 0 74 1 3 1 2 4 - 37 35 -1 0 83 1 3 1 2 4 - 38 7 59 0 96 1 3 1 2 4 - 39 12 48 0 42 1 3 1 2 4 - 40 57 95 0 80 1 3 1 2 4 - 41 92 28 0 22 1 3 1 2 4 - 42 -3 97 0 56 1 3 1 2 4 - 43 -7 52 0 43 1 3 1 2 4 - 44 42 -15 0 12 1 3 1 2 4 - 45 77 -43 0 73 1 3 1 2 4 - 46 59 -49 0 32 1 3 1 2 4 - 47 25 91 0 8 1 3 1 2 4 - 48 69 -19 0 79 1 3 1 2 4 - 49 -82 -14 0 79 1 3 1 2 4 - 50 74 -70 0 4 1 3 1 2 4 - 51 69 59 0 14 1 3 1 2 4 - 52 29 33 0 17 1 3 1 2 4 - 53 -97 9 0 19 1 3 1 2 4 - 54 -58 9 0 44 1 3 1 2 4 - 55 28 93 0 5 1 3 1 2 4 - 56 7 73 0 37 1 3 1 2 4 - 57 -28 73 0 100 1 3 1 2 4 - 58 -76 55 0 62 1 3 1 2 4 - 59 41 42 0 90 1 3 1 2 4 - 60 92 40 0 57 1 3 1 2 4 - 61 -84 -29 0 44 1 3 1 2 4 - 62 -12 42 0 37 1 3 1 2 4 - 63 51 -45 0 80 1 3 1 2 4 - 64 -37 46 0 60 1 3 1 2 4 - 65 -97 35 0 95 1 3 1 2 4 - 66 14 89 0 56 1 3 1 2 4 - 67 60 58 0 56 1 3 1 2 4 - 68 -63 -75 0 9 1 3 1 2 4 - 69 -18 34 0 39 1 3 1 2 4 - 70 -46 -82 0 15 1 3 1 2 4 - 71 -86 -79 0 4 1 3 1 2 4 - 72 -43 -30 0 58 1 3 1 2 4 - 73 -44 7 0 73 1 3 1 2 4 - 74 -3 -20 0 5 1 3 1 2 4 - 75 36 41 0 12 1 3 1 2 4 - 76 -30 -94 0 3 1 3 1 2 4 - 77 79 -62 0 8 1 3 1 2 4 - 78 51 70 0 31 1 3 1 2 4 - 79 -61 -26 0 48 1 3 1 2 4 - 80 6 94 0 3 1 3 1 2 4 - 81 -19 -62 0 52 1 3 1 2 4 - 82 -20 51 0 99 1 3 1 2 4 - 83 -81 37 0 29 1 3 1 2 4 - 84 7 31 0 12 1 3 1 2 4 - 85 52 12 0 50 1 3 1 2 4 - 86 83 -91 0 98 1 3 1 2 4 - 87 -7 -92 0 4 1 3 1 2 4 - 88 82 -74 0 56 1 3 1 2 4 - 89 -70 85 0 24 1 3 1 2 4 - 90 -83 -30 0 33 1 3 1 2 4 - 91 71 -61 0 45 1 3 1 2 4 - 92 85 11 0 98 1 3 1 2 4 - 93 66 -48 0 4 1 3 1 2 4 - 94 78 -87 0 36 1 3 1 2 4 - 95 9 -79 0 72 1 3 1 2 4 - 96 -36 4 0 26 1 3 1 2 4 - 97 66 39 0 71 1 3 1 2 4 - 98 92 -17 0 84 1 3 1 2 4 - 99 -46 -79 0 21 1 3 1 2 4 -100 -30 -63 0 99 1 3 1 2 4 -101 -42 63 0 33 1 3 1 2 4 -102 20 42 0 84 1 3 1 2 4 -103 15 98 0 74 1 3 1 2 4 -104 1 -17 0 93 1 3 1 2 4 -105 64 20 0 25 1 3 1 2 4 -106 -96 85 0 39 1 3 1 2 4 -107 93 -29 0 42 1 3 1 2 4 -108 -40 -84 0 77 1 3 1 2 4 -109 86 35 0 68 1 3 1 2 4 -110 91 36 0 50 1 3 1 2 4 -111 62 -8 0 42 1 3 1 2 4 -112 -24 4 0 71 1 3 1 2 4 -113 11 96 0 85 1 3 1 2 4 -114 -53 62 0 78 1 3 1 2 4 -115 -28 -71 0 64 1 3 1 2 4 -116 7 -4 0 5 1 3 1 2 4 -117 95 -9 0 93 1 3 1 2 4 -118 -3 17 0 18 1 3 1 2 4 -119 53 -90 0 38 1 3 1 2 4 -120 58 -19 0 29 1 3 1 2 4 -121 -83 84 0 81 1 3 1 2 4 -122 -1 49 0 4 1 3 1 2 4 -123 -4 17 0 23 1 3 1 2 4 -124 -82 -3 0 11 1 3 1 2 4 -125 -43 47 0 86 1 3 1 2 4 -126 6 -6 0 2 1 3 1 2 4 -127 70 99 0 31 1 3 1 2 4 -128 68 -29 0 54 1 3 1 2 4 -129 -94 -30 0 87 1 3 1 2 4 -130 -94 -20 0 17 1 3 1 2 4 -131 -21 77 0 81 1 3 1 2 4 -132 64 37 0 72 1 3 1 2 4 -133 -70 -19 0 10 1 3 1 2 4 -134 88 65 0 50 1 3 1 2 4 -135 2 29 0 25 1 3 1 2 4 -136 33 57 0 71 1 3 1 2 4 -137 -70 6 0 85 1 3 1 2 4 -138 -38 -56 0 51 1 3 1 2 4 -139 -80 -95 0 29 1 3 1 2 4 -140 -5 -39 0 55 1 3 1 2 4 -141 8 -22 0 45 1 3 1 2 4 -142 -61 -76 0 100 1 3 1 2 4 -143 76 -22 0 38 1 3 1 2 4 -144 49 -71 0 11 1 3 1 2 4 -145 -30 -68 0 82 1 3 1 2 4 -146 1 34 0 50 1 3 1 2 4 -147 77 79 0 39 1 3 1 2 4 -148 -58 64 0 6 1 3 1 2 4 -149 82 -97 0 87 1 3 1 2 4 -150 -80 55 0 83 1 3 1 2 4 -151 81 -86 0 22 1 3 1 2 4 -152 39 -49 0 24 1 3 1 2 4 -153 -67 72 0 69 1 3 1 2 4 -154 -25 -89 0 97 1 3 1 2 4 -155 -44 -95 0 65 1 3 1 2 4 -156 32 -68 0 97 1 3 1 2 4 -157 -17 49 0 79 1 3 1 2 4 -158 93 49 0 79 1 3 1 2 4 -159 99 81 0 46 1 3 1 2 4 -160 10 -49 0 52 1 3 1 2 4 -161 63 -41 0 39 1 3 1 2 4 -162 38 39 0 94 1 3 1 2 4 -163 -28 39 0 97 1 3 1 2 4 -164 -2 -47 0 18 1 3 1 2 4 -165 38 8 0 3 1 3 1 2 4 -166 -42 -6 0 23 1 3 1 2 4 -167 -67 88 0 19 1 3 1 2 4 -168 19 93 0 40 1 3 1 2 4 -169 40 27 0 49 1 3 1 2 4 -170 -61 56 0 96 1 3 1 2 4 -171 43 33 0 58 1 3 1 2 4 -172 -18 -39 0 15 1 3 1 2 4 -173 -69 19 0 21 1 3 1 2 4 -174 75 -18 0 56 1 3 1 2 4 -175 31 85 0 67 1 3 1 2 4 -176 25 58 0 10 1 3 1 2 4 -177 -16 36 0 36 1 3 1 2 4 -178 91 15 0 84 1 3 1 2 4 -179 60 -39 0 59 1 3 1 2 4 -180 49 -47 0 85 1 3 1 2 4 -181 42 33 0 60 1 3 1 2 4 -182 16 -81 0 33 1 3 1 2 4 -183 -78 53 0 62 1 3 1 2 4 -184 53 -80 0 70 1 3 1 2 4 -185 -46 -26 0 79 1 3 1 2 4 -186 -25 -54 0 98 1 3 1 2 4 -187 69 -46 0 99 1 3 1 2 4 -188 0 -78 0 18 1 3 1 2 4 -189 -84 74 0 55 1 3 1 2 4 -190 -16 16 0 75 1 3 1 2 4 -191 -63 -14 0 94 1 3 1 2 4 -192 51 -77 0 89 1 3 1 2 4 -193 -39 61 0 13 1 3 1 2 4 -194 5 97 0 19 1 3 1 2 4 -195 -55 39 0 19 1 3 1 2 4 -196 70 -14 0 90 1 3 1 2 4 -197 0 95 0 35 1 3 1 2 4 -198 -45 7 0 76 1 3 1 2 4 -199 38 -24 0 3 1 3 1 2 4 -200 50 -37 0 11 1 3 1 2 4 -201 59 71 0 98 1 3 1 2 4 -202 -73 -96 0 92 1 3 1 2 4 -203 -29 72 0 1 1 3 1 2 4 -204 -47 12 0 2 1 3 1 2 4 -205 -88 -61 0 63 1 3 1 2 4 -206 -88 36 0 57 1 3 1 2 4 -207 -46 -3 0 50 1 3 1 2 4 -208 26 -37 0 19 1 3 1 2 4 -209 -39 -67 0 24 1 3 1 2 4 -210 92 27 0 14 1 3 1 2 4 -211 -80 -31 0 18 1 3 1 2 4 -212 93 -50 0 77 1 3 1 2 4 -213 -20 -5 0 28 1 3 1 2 4 -214 -22 73 0 72 1 3 1 2 4 -215 -4 -7 0 49 1 3 1 2 4 -216 54 -48 0 58 1 3 1 2 4 -217 -70 39 0 84 1 3 1 2 4 -218 54 -82 0 58 1 3 1 2 4 -219 29 41 0 41 1 3 1 2 4 -220 -87 51 0 98 1 3 1 2 4 -221 -96 -36 0 77 1 3 1 2 4 -222 49 8 0 57 1 3 1 2 4 -223 -5 54 0 39 1 3 1 2 4 -224 -26 43 0 99 1 3 1 2 4 -225 -11 60 0 83 1 3 1 2 4 -226 40 61 0 54 1 3 1 2 4 -227 82 35 0 86 1 3 1 2 4 -228 -92 12 0 2 1 3 1 2 4 -229 -93 -86 0 14 1 3 1 2 4 -230 -66 63 0 42 1 3 1 2 4 -231 -72 -87 0 14 1 3 1 2 4 -232 -57 -84 0 55 1 3 1 2 4 -233 23 52 0 2 1 3 1 2 4 -234 -56 -62 0 18 1 3 1 2 4 -235 -19 59 0 17 1 3 1 2 4 -236 63 -14 0 22 1 3 1 2 4 -237 -13 38 0 28 1 3 1 2 4 -238 -19 87 0 3 1 3 1 2 4 -239 44 -84 0 96 1 3 1 2 4 -240 98 -17 0 53 1 3 1 2 4 -241 -16 62 0 15 1 3 1 2 4 -242 3 66 0 36 1 3 1 2 4 -243 26 22 0 98 1 3 1 2 4 -244 -38 -81 0 78 1 3 1 2 4 -245 70 -80 0 92 1 3 1 2 4 -246 17 -35 0 65 1 3 1 2 4 -247 96 -83 0 64 1 3 1 2 4 -248 -77 80 0 43 1 3 1 2 4 -249 -14 44 0 50 1 3 1 2 4 -250 70 0 0 0 0 0 -251 -50 60 0 0 0 0 -252 -50 -60 0 0 0 0 diff --git a/jsprit-instances/instances/cordeau/p09.res b/jsprit-instances/instances/cordeau/p09.res deleted file mode 100644 index bc87a3589..000000000 --- a/jsprit-instances/instances/cordeau/p09.res +++ /dev/null @@ -1,27 +0,0 @@ -3900.22 -1 1 274.07 495 0 226 175 17 24 40 127 147 159 134 29 0 -1 2 93.59 497 0 227 20 109 110 41 210 178 92 0 -1 3 153.00 495 0 169 52 219 15 102 16 243 6 165 222 0 -1 4 190.11 474 0 44 199 208 246 25 141 104 74 215 126 116 37 0 -1 5 118.45 497 0 236 179 161 46 216 180 63 200 22 120 111 0 -1 6 215.13 500 0 23 144 192 184 218 119 239 35 156 152 0 -1 7 82.40 414 0 196 174 143 98 240 117 0 -1 8 219.07 471 0 93 50 245 94 151 86 149 247 88 77 0 -1 9 153.47 470 0 14 107 212 91 187 45 128 48 0 -1 10 180.06 491 0 60 158 51 201 78 32 67 97 132 0 -1 11 156.64 472 0 105 59 136 176 233 75 162 181 171 85 0 -2 1 113.37 497 0 58 220 65 206 83 217 2 0 -2 2 173.35 490 0 204 73 198 54 30 191 18 137 173 27 195 0 -2 3 164.62 498 0 157 249 62 146 84 135 3 118 123 8 190 0 -2 4 129.81 475 0 148 26 9 153 189 106 121 248 89 167 13 0 -2 5 68.69 287 0 203 57 131 214 101 0 -2 6 192.61 499 0 241 56 66 47 55 168 103 113 80 194 197 42 10 238 0 -2 7 74.85 435 0 114 230 150 36 183 170 0 -2 8 93.20 445 0 224 237 177 69 163 64 125 0 -2 9 146.31 497 0 193 235 11 225 242 38 39 122 223 43 82 0 -3 1 200.90 500 0 79 5 133 12 49 124 228 53 130 129 221 61 90 211 0 -3 2 161.31 457 0 68 142 232 231 202 139 1 229 71 31 205 234 0 -3 3 77.55 365 0 209 115 4 81 186 21 138 0 -3 4 91.37 437 0 100 145 244 108 155 70 99 0 -3 5 214.37 478 0 172 140 164 7 160 28 182 95 34 188 87 154 76 0 -3 6 161.92 470 0 213 112 96 207 166 19 185 72 33 0 diff --git a/jsprit-instances/instances/cordeau/p10 b/jsprit-instances/instances/cordeau/p10 deleted file mode 100644 index 88237489e..000000000 --- a/jsprit-instances/instances/cordeau/p10 +++ /dev/null @@ -1,258 +0,0 @@ -2 8 249 4 -310 500 -310 500 -310 500 -310 500 - 1 -99 -97 0 6 1 4 1 2 4 8 - 2 -59 50 0 72 1 4 1 2 4 8 - 3 0 14 0 93 1 4 1 2 4 8 - 4 -17 -66 0 28 1 4 1 2 4 8 - 5 -69 -19 0 5 1 4 1 2 4 8 - 6 31 12 0 43 1 4 1 2 4 8 - 7 5 -41 0 1 1 4 1 2 4 8 - 8 -12 10 0 36 1 4 1 2 4 8 - 9 -64 70 0 53 1 4 1 2 4 8 - 10 -12 85 0 63 1 4 1 2 4 8 - 11 -18 64 0 25 1 4 1 2 4 8 - 12 -77 -16 0 50 1 4 1 2 4 8 - 13 -53 88 0 57 1 4 1 2 4 8 - 14 83 -24 0 1 1 4 1 2 4 8 - 15 24 41 0 66 1 4 1 2 4 8 - 16 17 21 0 37 1 4 1 2 4 8 - 17 42 96 0 51 1 4 1 2 4 8 - 18 -65 0 0 47 1 4 1 2 4 8 - 19 -47 -26 0 88 1 4 1 2 4 8 - 20 85 36 0 75 1 4 1 2 4 8 - 21 -35 -54 0 48 1 4 1 2 4 8 - 22 54 -21 0 40 1 4 1 2 4 8 - 23 64 -17 0 8 1 4 1 2 4 8 - 24 55 89 0 69 1 4 1 2 4 8 - 25 17 -25 0 93 1 4 1 2 4 8 - 26 -61 66 0 29 1 4 1 2 4 8 - 27 -61 26 0 5 1 4 1 2 4 8 - 28 17 -72 0 53 1 4 1 2 4 8 - 29 79 38 0 8 1 4 1 2 4 8 - 30 -62 -2 0 24 1 4 1 2 4 8 - 31 -90 -68 0 53 1 4 1 2 4 8 - 32 52 66 0 13 1 4 1 2 4 8 - 33 -54 -50 0 47 1 4 1 2 4 8 - 34 8 -84 0 57 1 4 1 2 4 8 - 35 37 -90 0 9 1 4 1 2 4 8 - 36 -83 49 0 74 1 4 1 2 4 8 - 37 35 -1 0 83 1 4 1 2 4 8 - 38 7 59 0 96 1 4 1 2 4 8 - 39 12 48 0 42 1 4 1 2 4 8 - 40 57 95 0 80 1 4 1 2 4 8 - 41 92 28 0 22 1 4 1 2 4 8 - 42 -3 97 0 56 1 4 1 2 4 8 - 43 -7 52 0 43 1 4 1 2 4 8 - 44 42 -15 0 12 1 4 1 2 4 8 - 45 77 -43 0 73 1 4 1 2 4 8 - 46 59 -49 0 32 1 4 1 2 4 8 - 47 25 91 0 8 1 4 1 2 4 8 - 48 69 -19 0 79 1 4 1 2 4 8 - 49 -82 -14 0 79 1 4 1 2 4 8 - 50 74 -70 0 4 1 4 1 2 4 8 - 51 69 59 0 14 1 4 1 2 4 8 - 52 29 33 0 17 1 4 1 2 4 8 - 53 -97 9 0 19 1 4 1 2 4 8 - 54 -58 9 0 44 1 4 1 2 4 8 - 55 28 93 0 5 1 4 1 2 4 8 - 56 7 73 0 37 1 4 1 2 4 8 - 57 -28 73 0 100 1 4 1 2 4 8 - 58 -76 55 0 62 1 4 1 2 4 8 - 59 41 42 0 90 1 4 1 2 4 8 - 60 92 40 0 57 1 4 1 2 4 8 - 61 -84 -29 0 44 1 4 1 2 4 8 - 62 -12 42 0 37 1 4 1 2 4 8 - 63 51 -45 0 80 1 4 1 2 4 8 - 64 -37 46 0 60 1 4 1 2 4 8 - 65 -97 35 0 95 1 4 1 2 4 8 - 66 14 89 0 56 1 4 1 2 4 8 - 67 60 58 0 56 1 4 1 2 4 8 - 68 -63 -75 0 9 1 4 1 2 4 8 - 69 -18 34 0 39 1 4 1 2 4 8 - 70 -46 -82 0 15 1 4 1 2 4 8 - 71 -86 -79 0 4 1 4 1 2 4 8 - 72 -43 -30 0 58 1 4 1 2 4 8 - 73 -44 7 0 73 1 4 1 2 4 8 - 74 -3 -20 0 5 1 4 1 2 4 8 - 75 36 41 0 12 1 4 1 2 4 8 - 76 -30 -94 0 3 1 4 1 2 4 8 - 77 79 -62 0 8 1 4 1 2 4 8 - 78 51 70 0 31 1 4 1 2 4 8 - 79 -61 -26 0 48 1 4 1 2 4 8 - 80 6 94 0 3 1 4 1 2 4 8 - 81 -19 -62 0 52 1 4 1 2 4 8 - 82 -20 51 0 99 1 4 1 2 4 8 - 83 -81 37 0 29 1 4 1 2 4 8 - 84 7 31 0 12 1 4 1 2 4 8 - 85 52 12 0 50 1 4 1 2 4 8 - 86 83 -91 0 98 1 4 1 2 4 8 - 87 -7 -92 0 4 1 4 1 2 4 8 - 88 82 -74 0 56 1 4 1 2 4 8 - 89 -70 85 0 24 1 4 1 2 4 8 - 90 -83 -30 0 33 1 4 1 2 4 8 - 91 71 -61 0 45 1 4 1 2 4 8 - 92 85 11 0 98 1 4 1 2 4 8 - 93 66 -48 0 4 1 4 1 2 4 8 - 94 78 -87 0 36 1 4 1 2 4 8 - 95 9 -79 0 72 1 4 1 2 4 8 - 96 -36 4 0 26 1 4 1 2 4 8 - 97 66 39 0 71 1 4 1 2 4 8 - 98 92 -17 0 84 1 4 1 2 4 8 - 99 -46 -79 0 21 1 4 1 2 4 8 -100 -30 -63 0 99 1 4 1 2 4 8 -101 -42 63 0 33 1 4 1 2 4 8 -102 20 42 0 84 1 4 1 2 4 8 -103 15 98 0 74 1 4 1 2 4 8 -104 1 -17 0 93 1 4 1 2 4 8 -105 64 20 0 25 1 4 1 2 4 8 -106 -96 85 0 39 1 4 1 2 4 8 -107 93 -29 0 42 1 4 1 2 4 8 -108 -40 -84 0 77 1 4 1 2 4 8 -109 86 35 0 68 1 4 1 2 4 8 -110 91 36 0 50 1 4 1 2 4 8 -111 62 -8 0 42 1 4 1 2 4 8 -112 -24 4 0 71 1 4 1 2 4 8 -113 11 96 0 85 1 4 1 2 4 8 -114 -53 62 0 78 1 4 1 2 4 8 -115 -28 -71 0 64 1 4 1 2 4 8 -116 7 -4 0 5 1 4 1 2 4 8 -117 95 -9 0 93 1 4 1 2 4 8 -118 -3 17 0 18 1 4 1 2 4 8 -119 53 -90 0 38 1 4 1 2 4 8 -120 58 -19 0 29 1 4 1 2 4 8 -121 -83 84 0 81 1 4 1 2 4 8 -122 -1 49 0 4 1 4 1 2 4 8 -123 -4 17 0 23 1 4 1 2 4 8 -124 -82 -3 0 11 1 4 1 2 4 8 -125 -43 47 0 86 1 4 1 2 4 8 -126 6 -6 0 2 1 4 1 2 4 8 -127 70 99 0 31 1 4 1 2 4 8 -128 68 -29 0 54 1 4 1 2 4 8 -129 -94 -30 0 87 1 4 1 2 4 8 -130 -94 -20 0 17 1 4 1 2 4 8 -131 -21 77 0 81 1 4 1 2 4 8 -132 64 37 0 72 1 4 1 2 4 8 -133 -70 -19 0 10 1 4 1 2 4 8 -134 88 65 0 50 1 4 1 2 4 8 -135 2 29 0 25 1 4 1 2 4 8 -136 33 57 0 71 1 4 1 2 4 8 -137 -70 6 0 85 1 4 1 2 4 8 -138 -38 -56 0 51 1 4 1 2 4 8 -139 -80 -95 0 29 1 4 1 2 4 8 -140 -5 -39 0 55 1 4 1 2 4 8 -141 8 -22 0 45 1 4 1 2 4 8 -142 -61 -76 0 100 1 4 1 2 4 8 -143 76 -22 0 38 1 4 1 2 4 8 -144 49 -71 0 11 1 4 1 2 4 8 -145 -30 -68 0 82 1 4 1 2 4 8 -146 1 34 0 50 1 4 1 2 4 8 -147 77 79 0 39 1 4 1 2 4 8 -148 -58 64 0 6 1 4 1 2 4 8 -149 82 -97 0 87 1 4 1 2 4 8 -150 -80 55 0 83 1 4 1 2 4 8 -151 81 -86 0 22 1 4 1 2 4 8 -152 39 -49 0 24 1 4 1 2 4 8 -153 -67 72 0 69 1 4 1 2 4 8 -154 -25 -89 0 97 1 4 1 2 4 8 -155 -44 -95 0 65 1 4 1 2 4 8 -156 32 -68 0 97 1 4 1 2 4 8 -157 -17 49 0 79 1 4 1 2 4 8 -158 93 49 0 79 1 4 1 2 4 8 -159 99 81 0 46 1 4 1 2 4 8 -160 10 -49 0 52 1 4 1 2 4 8 -161 63 -41 0 39 1 4 1 2 4 8 -162 38 39 0 94 1 4 1 2 4 8 -163 -28 39 0 97 1 4 1 2 4 8 -164 -2 -47 0 18 1 4 1 2 4 8 -165 38 8 0 3 1 4 1 2 4 8 -166 -42 -6 0 23 1 4 1 2 4 8 -167 -67 88 0 19 1 4 1 2 4 8 -168 19 93 0 40 1 4 1 2 4 8 -169 40 27 0 49 1 4 1 2 4 8 -170 -61 56 0 96 1 4 1 2 4 8 -171 43 33 0 58 1 4 1 2 4 8 -172 -18 -39 0 15 1 4 1 2 4 8 -173 -69 19 0 21 1 4 1 2 4 8 -174 75 -18 0 56 1 4 1 2 4 8 -175 31 85 0 67 1 4 1 2 4 8 -176 25 58 0 10 1 4 1 2 4 8 -177 -16 36 0 36 1 4 1 2 4 8 -178 91 15 0 84 1 4 1 2 4 8 -179 60 -39 0 59 1 4 1 2 4 8 -180 49 -47 0 85 1 4 1 2 4 8 -181 42 33 0 60 1 4 1 2 4 8 -182 16 -81 0 33 1 4 1 2 4 8 -183 -78 53 0 62 1 4 1 2 4 8 -184 53 -80 0 70 1 4 1 2 4 8 -185 -46 -26 0 79 1 4 1 2 4 8 -186 -25 -54 0 98 1 4 1 2 4 8 -187 69 -46 0 99 1 4 1 2 4 8 -188 0 -78 0 18 1 4 1 2 4 8 -189 -84 74 0 55 1 4 1 2 4 8 -190 -16 16 0 75 1 4 1 2 4 8 -191 -63 -14 0 94 1 4 1 2 4 8 -192 51 -77 0 89 1 4 1 2 4 8 -193 -39 61 0 13 1 4 1 2 4 8 -194 5 97 0 19 1 4 1 2 4 8 -195 -55 39 0 19 1 4 1 2 4 8 -196 70 -14 0 90 1 4 1 2 4 8 -197 0 95 0 35 1 4 1 2 4 8 -198 -45 7 0 76 1 4 1 2 4 8 -199 38 -24 0 3 1 4 1 2 4 8 -200 50 -37 0 11 1 4 1 2 4 8 -201 59 71 0 98 1 4 1 2 4 8 -202 -73 -96 0 92 1 4 1 2 4 8 -203 -29 72 0 1 1 4 1 2 4 8 -204 -47 12 0 2 1 4 1 2 4 8 -205 -88 -61 0 63 1 4 1 2 4 8 -206 -88 36 0 57 1 4 1 2 4 8 -207 -46 -3 0 50 1 4 1 2 4 8 -208 26 -37 0 19 1 4 1 2 4 8 -209 -39 -67 0 24 1 4 1 2 4 8 -210 92 27 0 14 1 4 1 2 4 8 -211 -80 -31 0 18 1 4 1 2 4 8 -212 93 -50 0 77 1 4 1 2 4 8 -213 -20 -5 0 28 1 4 1 2 4 8 -214 -22 73 0 72 1 4 1 2 4 8 -215 -4 -7 0 49 1 4 1 2 4 8 -216 54 -48 0 58 1 4 1 2 4 8 -217 -70 39 0 84 1 4 1 2 4 8 -218 54 -82 0 58 1 4 1 2 4 8 -219 29 41 0 41 1 4 1 2 4 8 -220 -87 51 0 98 1 4 1 2 4 8 -221 -96 -36 0 77 1 4 1 2 4 8 -222 49 8 0 57 1 4 1 2 4 8 -223 -5 54 0 39 1 4 1 2 4 8 -224 -26 43 0 99 1 4 1 2 4 8 -225 -11 60 0 83 1 4 1 2 4 8 -226 40 61 0 54 1 4 1 2 4 8 -227 82 35 0 86 1 4 1 2 4 8 -228 -92 12 0 2 1 4 1 2 4 8 -229 -93 -86 0 14 1 4 1 2 4 8 -230 -66 63 0 42 1 4 1 2 4 8 -231 -72 -87 0 14 1 4 1 2 4 8 -232 -57 -84 0 55 1 4 1 2 4 8 -233 23 52 0 2 1 4 1 2 4 8 -234 -56 -62 0 18 1 4 1 2 4 8 -235 -19 59 0 17 1 4 1 2 4 8 -236 63 -14 0 22 1 4 1 2 4 8 -237 -13 38 0 28 1 4 1 2 4 8 -238 -19 87 0 3 1 4 1 2 4 8 -239 44 -84 0 96 1 4 1 2 4 8 -240 98 -17 0 53 1 4 1 2 4 8 -241 -16 62 0 15 1 4 1 2 4 8 -242 3 66 0 36 1 4 1 2 4 8 -243 26 22 0 98 1 4 1 2 4 8 -244 -38 -81 0 78 1 4 1 2 4 8 -245 70 -80 0 92 1 4 1 2 4 8 -246 17 -35 0 65 1 4 1 2 4 8 -247 96 -83 0 64 1 4 1 2 4 8 -248 -77 80 0 43 1 4 1 2 4 8 -249 -14 44 0 50 1 4 1 2 4 8 -250 75 0 0 0 0 0 -251 0 75 0 0 0 0 -252 -75 0 0 0 0 0 -253 0 -75 0 0 0 0 diff --git a/jsprit-instances/instances/cordeau/p10.res b/jsprit-instances/instances/cordeau/p10.res deleted file mode 100644 index ddc520418..000000000 --- a/jsprit-instances/instances/cordeau/p10.res +++ /dev/null @@ -1,27 +0,0 @@ -3663.02 -1 1 131.84 480 0 111 236 23 120 22 200 179 161 93 187 45 128 0 -1 2 137.33 496 0 85 169 52 219 75 162 59 181 171 105 0 -1 3 192.98 488 0 37 116 126 215 3 118 16 243 6 165 222 0 -1 4 210.64 492 0 132 97 67 51 147 159 134 158 60 29 0 -1 5 88.55 497 0 92 178 210 41 110 109 20 227 0 -1 6 85.33 494 0 117 240 98 14 143 174 48 196 0 -1 7 202.45 485 0 107 212 77 91 46 216 63 180 152 208 199 44 0 -2 1 120.05 498 0 242 38 39 102 15 233 136 226 176 56 0 -2 2 208.98 497 0 114 26 153 189 106 121 248 89 167 13 238 0 -2 3 93.39 489 0 225 157 163 224 82 235 241 0 -2 4 81.49 391 0 10 42 197 194 80 113 103 66 0 -2 5 151.04 497 0 122 146 84 135 123 8 190 69 177 237 62 249 43 223 0 -2 6 185.49 493 0 175 78 32 201 127 40 24 17 55 47 168 0 -2 7 119.96 471 0 131 214 57 203 101 193 125 64 11 0 -3 1 124.88 484 0 173 217 58 183 150 220 36 0 -3 2 94.98 398 0 12 61 90 221 129 130 49 124 0 -3 3 238.45 482 0 133 5 33 234 142 68 231 202 139 1 229 71 31 205 211 0 -3 4 123.67 440 0 18 207 166 213 112 96 73 198 204 54 0 -3 5 102.47 476 0 191 79 72 185 19 30 137 0 -3 6 185.47 495 0 27 195 2 170 148 9 230 83 206 65 228 53 0 -4 1 157.62 442 0 160 7 246 25 141 104 74 172 140 164 0 -4 2 104.01 482 0 4 81 186 21 138 209 100 145 0 -4 3 143.06 497 0 188 87 154 76 155 232 70 99 108 244 115 0 -4 4 37.71 162 0 95 182 34 0 -4 5 219.62 497 0 50 88 247 149 86 151 94 245 119 0 -4 6 121.56 483 0 35 239 218 184 192 144 156 28 0 diff --git a/jsprit-instances/instances/cordeau/p11 b/jsprit-instances/instances/cordeau/p11 deleted file mode 100644 index 82bfcfed1..000000000 --- a/jsprit-instances/instances/cordeau/p11 +++ /dev/null @@ -1,260 +0,0 @@ -2 6 249 5 -310 500 -310 500 -310 500 -310 500 -310 500 - 1 -99 -97 0 6 1 5 1 2 4 8 16 - 2 -59 50 0 72 1 5 1 2 4 8 16 - 3 0 14 0 93 1 5 1 2 4 8 16 - 4 -17 -66 0 28 1 5 1 2 4 8 16 - 5 -69 -19 0 5 1 5 1 2 4 8 16 - 6 31 12 0 43 1 5 1 2 4 8 16 - 7 5 -41 0 1 1 5 1 2 4 8 16 - 8 -12 10 0 36 1 5 1 2 4 8 16 - 9 -64 70 0 53 1 5 1 2 4 8 16 - 10 -12 85 0 63 1 5 1 2 4 8 16 - 11 -18 64 0 25 1 5 1 2 4 8 16 - 12 -77 -16 0 50 1 5 1 2 4 8 16 - 13 -53 88 0 57 1 5 1 2 4 8 16 - 14 83 -24 0 1 1 5 1 2 4 8 16 - 15 24 41 0 66 1 5 1 2 4 8 16 - 16 17 21 0 37 1 5 1 2 4 8 16 - 17 42 96 0 51 1 5 1 2 4 8 16 - 18 -65 0 0 47 1 5 1 2 4 8 16 - 19 -47 -26 0 88 1 5 1 2 4 8 16 - 20 85 36 0 75 1 5 1 2 4 8 16 - 21 -35 -54 0 48 1 5 1 2 4 8 16 - 22 54 -21 0 40 1 5 1 2 4 8 16 - 23 64 -17 0 8 1 5 1 2 4 8 16 - 24 55 89 0 69 1 5 1 2 4 8 16 - 25 17 -25 0 93 1 5 1 2 4 8 16 - 26 -61 66 0 29 1 5 1 2 4 8 16 - 27 -61 26 0 5 1 5 1 2 4 8 16 - 28 17 -72 0 53 1 5 1 2 4 8 16 - 29 79 38 0 8 1 5 1 2 4 8 16 - 30 -62 -2 0 24 1 5 1 2 4 8 16 - 31 -90 -68 0 53 1 5 1 2 4 8 16 - 32 52 66 0 13 1 5 1 2 4 8 16 - 33 -54 -50 0 47 1 5 1 2 4 8 16 - 34 8 -84 0 57 1 5 1 2 4 8 16 - 35 37 -90 0 9 1 5 1 2 4 8 16 - 36 -83 49 0 74 1 5 1 2 4 8 16 - 37 35 -1 0 83 1 5 1 2 4 8 16 - 38 7 59 0 96 1 5 1 2 4 8 16 - 39 12 48 0 42 1 5 1 2 4 8 16 - 40 57 95 0 80 1 5 1 2 4 8 16 - 41 92 28 0 22 1 5 1 2 4 8 16 - 42 -3 97 0 56 1 5 1 2 4 8 16 - 43 -7 52 0 43 1 5 1 2 4 8 16 - 44 42 -15 0 12 1 5 1 2 4 8 16 - 45 77 -43 0 73 1 5 1 2 4 8 16 - 46 59 -49 0 32 1 5 1 2 4 8 16 - 47 25 91 0 8 1 5 1 2 4 8 16 - 48 69 -19 0 79 1 5 1 2 4 8 16 - 49 -82 -14 0 79 1 5 1 2 4 8 16 - 50 74 -70 0 4 1 5 1 2 4 8 16 - 51 69 59 0 14 1 5 1 2 4 8 16 - 52 29 33 0 17 1 5 1 2 4 8 16 - 53 -97 9 0 19 1 5 1 2 4 8 16 - 54 -58 9 0 44 1 5 1 2 4 8 16 - 55 28 93 0 5 1 5 1 2 4 8 16 - 56 7 73 0 37 1 5 1 2 4 8 16 - 57 -28 73 0 100 1 5 1 2 4 8 16 - 58 -76 55 0 62 1 5 1 2 4 8 16 - 59 41 42 0 90 1 5 1 2 4 8 16 - 60 92 40 0 57 1 5 1 2 4 8 16 - 61 -84 -29 0 44 1 5 1 2 4 8 16 - 62 -12 42 0 37 1 5 1 2 4 8 16 - 63 51 -45 0 80 1 5 1 2 4 8 16 - 64 -37 46 0 60 1 5 1 2 4 8 16 - 65 -97 35 0 95 1 5 1 2 4 8 16 - 66 14 89 0 56 1 5 1 2 4 8 16 - 67 60 58 0 56 1 5 1 2 4 8 16 - 68 -63 -75 0 9 1 5 1 2 4 8 16 - 69 -18 34 0 39 1 5 1 2 4 8 16 - 70 -46 -82 0 15 1 5 1 2 4 8 16 - 71 -86 -79 0 4 1 5 1 2 4 8 16 - 72 -43 -30 0 58 1 5 1 2 4 8 16 - 73 -44 7 0 73 1 5 1 2 4 8 16 - 74 -3 -20 0 5 1 5 1 2 4 8 16 - 75 36 41 0 12 1 5 1 2 4 8 16 - 76 -30 -94 0 3 1 5 1 2 4 8 16 - 77 79 -62 0 8 1 5 1 2 4 8 16 - 78 51 70 0 31 1 5 1 2 4 8 16 - 79 -61 -26 0 48 1 5 1 2 4 8 16 - 80 6 94 0 3 1 5 1 2 4 8 16 - 81 -19 -62 0 52 1 5 1 2 4 8 16 - 82 -20 51 0 99 1 5 1 2 4 8 16 - 83 -81 37 0 29 1 5 1 2 4 8 16 - 84 7 31 0 12 1 5 1 2 4 8 16 - 85 52 12 0 50 1 5 1 2 4 8 16 - 86 83 -91 0 98 1 5 1 2 4 8 16 - 87 -7 -92 0 4 1 5 1 2 4 8 16 - 88 82 -74 0 56 1 5 1 2 4 8 16 - 89 -70 85 0 24 1 5 1 2 4 8 16 - 90 -83 -30 0 33 1 5 1 2 4 8 16 - 91 71 -61 0 45 1 5 1 2 4 8 16 - 92 85 11 0 98 1 5 1 2 4 8 16 - 93 66 -48 0 4 1 5 1 2 4 8 16 - 94 78 -87 0 36 1 5 1 2 4 8 16 - 95 9 -79 0 72 1 5 1 2 4 8 16 - 96 -36 4 0 26 1 5 1 2 4 8 16 - 97 66 39 0 71 1 5 1 2 4 8 16 - 98 92 -17 0 84 1 5 1 2 4 8 16 - 99 -46 -79 0 21 1 5 1 2 4 8 16 -100 -30 -63 0 99 1 5 1 2 4 8 16 -101 -42 63 0 33 1 5 1 2 4 8 16 -102 20 42 0 84 1 5 1 2 4 8 16 -103 15 98 0 74 1 5 1 2 4 8 16 -104 1 -17 0 93 1 5 1 2 4 8 16 -105 64 20 0 25 1 5 1 2 4 8 16 -106 -96 85 0 39 1 5 1 2 4 8 16 -107 93 -29 0 42 1 5 1 2 4 8 16 -108 -40 -84 0 77 1 5 1 2 4 8 16 -109 86 35 0 68 1 5 1 2 4 8 16 -110 91 36 0 50 1 5 1 2 4 8 16 -111 62 -8 0 42 1 5 1 2 4 8 16 -112 -24 4 0 71 1 5 1 2 4 8 16 -113 11 96 0 85 1 5 1 2 4 8 16 -114 -53 62 0 78 1 5 1 2 4 8 16 -115 -28 -71 0 64 1 5 1 2 4 8 16 -116 7 -4 0 5 1 5 1 2 4 8 16 -117 95 -9 0 93 1 5 1 2 4 8 16 -118 -3 17 0 18 1 5 1 2 4 8 16 -119 53 -90 0 38 1 5 1 2 4 8 16 -120 58 -19 0 29 1 5 1 2 4 8 16 -121 -83 84 0 81 1 5 1 2 4 8 16 -122 -1 49 0 4 1 5 1 2 4 8 16 -123 -4 17 0 23 1 5 1 2 4 8 16 -124 -82 -3 0 11 1 5 1 2 4 8 16 -125 -43 47 0 86 1 5 1 2 4 8 16 -126 6 -6 0 2 1 5 1 2 4 8 16 -127 70 99 0 31 1 5 1 2 4 8 16 -128 68 -29 0 54 1 5 1 2 4 8 16 -129 -94 -30 0 87 1 5 1 2 4 8 16 -130 -94 -20 0 17 1 5 1 2 4 8 16 -131 -21 77 0 81 1 5 1 2 4 8 16 -132 64 37 0 72 1 5 1 2 4 8 16 -133 -70 -19 0 10 1 5 1 2 4 8 16 -134 88 65 0 50 1 5 1 2 4 8 16 -135 2 29 0 25 1 5 1 2 4 8 16 -136 33 57 0 71 1 5 1 2 4 8 16 -137 -70 6 0 85 1 5 1 2 4 8 16 -138 -38 -56 0 51 1 5 1 2 4 8 16 -139 -80 -95 0 29 1 5 1 2 4 8 16 -140 -5 -39 0 55 1 5 1 2 4 8 16 -141 8 -22 0 45 1 5 1 2 4 8 16 -142 -61 -76 0 100 1 5 1 2 4 8 16 -143 76 -22 0 38 1 5 1 2 4 8 16 -144 49 -71 0 11 1 5 1 2 4 8 16 -145 -30 -68 0 82 1 5 1 2 4 8 16 -146 1 34 0 50 1 5 1 2 4 8 16 -147 77 79 0 39 1 5 1 2 4 8 16 -148 -58 64 0 6 1 5 1 2 4 8 16 -149 82 -97 0 87 1 5 1 2 4 8 16 -150 -80 55 0 83 1 5 1 2 4 8 16 -151 81 -86 0 22 1 5 1 2 4 8 16 -152 39 -49 0 24 1 5 1 2 4 8 16 -153 -67 72 0 69 1 5 1 2 4 8 16 -154 -25 -89 0 97 1 5 1 2 4 8 16 -155 -44 -95 0 65 1 5 1 2 4 8 16 -156 32 -68 0 97 1 5 1 2 4 8 16 -157 -17 49 0 79 1 5 1 2 4 8 16 -158 93 49 0 79 1 5 1 2 4 8 16 -159 99 81 0 46 1 5 1 2 4 8 16 -160 10 -49 0 52 1 5 1 2 4 8 16 -161 63 -41 0 39 1 5 1 2 4 8 16 -162 38 39 0 94 1 5 1 2 4 8 16 -163 -28 39 0 97 1 5 1 2 4 8 16 -164 -2 -47 0 18 1 5 1 2 4 8 16 -165 38 8 0 3 1 5 1 2 4 8 16 -166 -42 -6 0 23 1 5 1 2 4 8 16 -167 -67 88 0 19 1 5 1 2 4 8 16 -168 19 93 0 40 1 5 1 2 4 8 16 -169 40 27 0 49 1 5 1 2 4 8 16 -170 -61 56 0 96 1 5 1 2 4 8 16 -171 43 33 0 58 1 5 1 2 4 8 16 -172 -18 -39 0 15 1 5 1 2 4 8 16 -173 -69 19 0 21 1 5 1 2 4 8 16 -174 75 -18 0 56 1 5 1 2 4 8 16 -175 31 85 0 67 1 5 1 2 4 8 16 -176 25 58 0 10 1 5 1 2 4 8 16 -177 -16 36 0 36 1 5 1 2 4 8 16 -178 91 15 0 84 1 5 1 2 4 8 16 -179 60 -39 0 59 1 5 1 2 4 8 16 -180 49 -47 0 85 1 5 1 2 4 8 16 -181 42 33 0 60 1 5 1 2 4 8 16 -182 16 -81 0 33 1 5 1 2 4 8 16 -183 -78 53 0 62 1 5 1 2 4 8 16 -184 53 -80 0 70 1 5 1 2 4 8 16 -185 -46 -26 0 79 1 5 1 2 4 8 16 -186 -25 -54 0 98 1 5 1 2 4 8 16 -187 69 -46 0 99 1 5 1 2 4 8 16 -188 0 -78 0 18 1 5 1 2 4 8 16 -189 -84 74 0 55 1 5 1 2 4 8 16 -190 -16 16 0 75 1 5 1 2 4 8 16 -191 -63 -14 0 94 1 5 1 2 4 8 16 -192 51 -77 0 89 1 5 1 2 4 8 16 -193 -39 61 0 13 1 5 1 2 4 8 16 -194 5 97 0 19 1 5 1 2 4 8 16 -195 -55 39 0 19 1 5 1 2 4 8 16 -196 70 -14 0 90 1 5 1 2 4 8 16 -197 0 95 0 35 1 5 1 2 4 8 16 -198 -45 7 0 76 1 5 1 2 4 8 16 -199 38 -24 0 3 1 5 1 2 4 8 16 -200 50 -37 0 11 1 5 1 2 4 8 16 -201 59 71 0 98 1 5 1 2 4 8 16 -202 -73 -96 0 92 1 5 1 2 4 8 16 -203 -29 72 0 1 1 5 1 2 4 8 16 -204 -47 12 0 2 1 5 1 2 4 8 16 -205 -88 -61 0 63 1 5 1 2 4 8 16 -206 -88 36 0 57 1 5 1 2 4 8 16 -207 -46 -3 0 50 1 5 1 2 4 8 16 -208 26 -37 0 19 1 5 1 2 4 8 16 -209 -39 -67 0 24 1 5 1 2 4 8 16 -210 92 27 0 14 1 5 1 2 4 8 16 -211 -80 -31 0 18 1 5 1 2 4 8 16 -212 93 -50 0 77 1 5 1 2 4 8 16 -213 -20 -5 0 28 1 5 1 2 4 8 16 -214 -22 73 0 72 1 5 1 2 4 8 16 -215 -4 -7 0 49 1 5 1 2 4 8 16 -216 54 -48 0 58 1 5 1 2 4 8 16 -217 -70 39 0 84 1 5 1 2 4 8 16 -218 54 -82 0 58 1 5 1 2 4 8 16 -219 29 41 0 41 1 5 1 2 4 8 16 -220 -87 51 0 98 1 5 1 2 4 8 16 -221 -96 -36 0 77 1 5 1 2 4 8 16 -222 49 8 0 57 1 5 1 2 4 8 16 -223 -5 54 0 39 1 5 1 2 4 8 16 -224 -26 43 0 99 1 5 1 2 4 8 16 -225 -11 60 0 83 1 5 1 2 4 8 16 -226 40 61 0 54 1 5 1 2 4 8 16 -227 82 35 0 86 1 5 1 2 4 8 16 -228 -92 12 0 2 1 5 1 2 4 8 16 -229 -93 -86 0 14 1 5 1 2 4 8 16 -230 -66 63 0 42 1 5 1 2 4 8 16 -231 -72 -87 0 14 1 5 1 2 4 8 16 -232 -57 -84 0 55 1 5 1 2 4 8 16 -233 23 52 0 2 1 5 1 2 4 8 16 -234 -56 -62 0 18 1 5 1 2 4 8 16 -235 -19 59 0 17 1 5 1 2 4 8 16 -236 63 -14 0 22 1 5 1 2 4 8 16 -237 -13 38 0 28 1 5 1 2 4 8 16 -238 -19 87 0 3 1 5 1 2 4 8 16 -239 44 -84 0 96 1 5 1 2 4 8 16 -240 98 -17 0 53 1 5 1 2 4 8 16 -241 -16 62 0 15 1 5 1 2 4 8 16 -242 3 66 0 36 1 5 1 2 4 8 16 -243 26 22 0 98 1 5 1 2 4 8 16 -244 -38 -81 0 78 1 5 1 2 4 8 16 -245 70 -80 0 92 1 5 1 2 4 8 16 -246 17 -35 0 65 1 5 1 2 4 8 16 -247 96 -83 0 64 1 5 1 2 4 8 16 -248 -77 80 0 43 1 5 1 2 4 8 16 -249 -14 44 0 50 1 5 1 2 4 8 16 -250 70 0 0 0 0 0 -251 40 80 0 0 0 0 -252 40 -80 0 0 0 0 -253 -60 20 0 0 0 0 -254 -60 -20 0 0 0 0 diff --git a/jsprit-instances/instances/cordeau/p11.res b/jsprit-instances/instances/cordeau/p11.res deleted file mode 100644 index 38db8e779..000000000 --- a/jsprit-instances/instances/cordeau/p11.res +++ /dev/null @@ -1,27 +0,0 @@ -3554.18 -1 1 140.19 472 0 222 165 6 16 243 52 181 171 169 85 0 -1 2 84.20 327 0 92 109 20 227 0 -1 3 131.64 482 0 105 132 97 29 158 60 110 41 210 178 0 -1 4 119.29 495 0 48 128 179 161 46 63 200 22 120 23 236 111 0 -1 5 190.11 474 0 44 199 208 246 25 141 104 74 215 126 116 37 0 -1 6 96.14 457 0 117 240 98 107 14 143 174 196 0 -2 1 164.38 496 0 10 238 131 214 57 203 11 235 241 225 242 0 -2 2 117.60 497 0 176 233 102 15 219 75 162 59 226 32 78 0 -2 3 163.16 483 0 24 40 127 147 159 134 51 67 201 0 -2 4 177.09 484 0 136 39 84 135 146 237 62 122 43 223 38 56 0 -2 5 112.21 499 0 175 66 80 197 42 194 113 103 168 47 55 17 0 -3 1 142.21 497 0 50 88 247 149 86 151 94 245 119 0 -3 2 174.80 488 0 156 160 7 164 140 172 186 81 4 95 0 -3 3 33.10 313 0 192 184 218 239 0 -3 4 151.32 484 0 152 180 216 93 187 45 212 77 91 144 0 -3 5 193.99 494 0 28 188 244 108 155 76 154 87 34 182 35 0 -4 1 130.73 334 0 54 137 124 53 228 65 206 173 0 -4 2 95.93 492 0 83 36 220 150 183 58 217 0 -4 3 116.47 499 0 163 224 82 157 249 177 69 0 -4 4 142.60 445 0 204 73 96 112 213 8 3 118 123 190 0 -4 5 198.03 487 0 27 230 9 153 13 167 89 248 121 106 189 0 -4 6 124.44 492 0 125 64 193 101 114 148 26 170 2 195 0 -5 1 97.00 468 0 5 133 12 49 130 129 221 61 90 211 79 0 -5 2 230.26 493 0 205 31 71 229 1 139 202 231 232 70 99 142 68 234 0 -5 3 94.46 481 0 191 18 30 198 207 166 185 19 0 -5 4 132.83 473 0 72 21 138 100 145 115 209 33 0 diff --git a/jsprit-instances/instances/cordeau/p12 b/jsprit-instances/instances/cordeau/p12 deleted file mode 100644 index 2a354d6a4..000000000 --- a/jsprit-instances/instances/cordeau/p12 +++ /dev/null @@ -1,85 +0,0 @@ -2 5 80 2 -300 60 -300 60 - 1 -10 -10 0 12 1 2 1 2 - 2 -10 0 0 12 1 2 1 2 - 3 -10 10 0 12 1 2 1 2 - 4 0 -10 0 12 1 2 1 2 - 5 0 10 0 12 1 2 1 2 - 6 10 -10 0 12 1 2 1 2 - 7 10 0 0 12 1 2 1 2 - 8 10 10 0 12 1 2 1 2 - 9 -20 -20 0 8 1 2 1 2 -10 -20 0 0 8 1 2 1 2 -11 -20 20 0 8 1 2 1 2 -12 0 -20 0 8 1 2 1 2 -13 0 20 0 8 1 2 1 2 -14 20 -20 0 8 1 2 1 2 -15 20 0 0 8 1 2 1 2 -16 20 20 0 8 1 2 1 2 -17 -30 -30 0 4 1 2 1 2 -18 -30 0 0 4 1 2 1 2 -19 -30 30 0 4 1 2 1 2 -20 0 -30 0 4 1 2 1 2 -21 0 30 0 4 1 2 1 2 -22 30 -30 0 4 1 2 1 2 -23 30 0 0 4 1 2 1 2 -24 30 30 0 4 1 2 1 2 -25 -40 -40 0 2 1 2 1 2 -26 -40 0 0 2 1 2 1 2 -27 -40 40 0 2 1 2 1 2 -28 0 -40 0 2 1 2 1 2 -29 0 40 0 2 1 2 1 2 -30 40 -40 0 2 1 2 1 2 -31 40 0 0 2 1 2 1 2 -32 40 40 0 2 1 2 1 2 -33 -50 -50 0 1 1 2 1 2 -34 -50 0 0 1 1 2 1 2 -35 -50 50 0 1 1 2 1 2 -36 0 -50 0 1 1 2 1 2 -37 0 50 0 1 1 2 1 2 -38 50 -50 0 1 1 2 1 2 -39 50 0 0 1 1 2 1 2 -40 50 50 0 1 1 2 1 2 -41 100 -10 0 12 1 2 1 2 -42 100 0 0 12 1 2 1 2 -43 100 10 0 12 1 2 1 2 -44 110 -10 0 12 1 2 1 2 -45 110 10 0 12 1 2 1 2 -46 120 -10 0 12 1 2 1 2 -47 120 0 0 12 1 2 1 2 -48 120 10 0 12 1 2 1 2 -49 90 -20 0 8 1 2 1 2 -50 90 0 0 8 1 2 1 2 -51 90 20 0 8 1 2 1 2 -52 110 -20 0 8 1 2 1 2 -53 110 20 0 8 1 2 1 2 -54 130 -20 0 8 1 2 1 2 -55 130 0 0 8 1 2 1 2 -56 130 20 0 8 1 2 1 2 -57 80 -30 0 4 1 2 1 2 -58 80 0 0 4 1 2 1 2 -59 80 30 0 4 1 2 1 2 -60 110 -30 0 4 1 2 1 2 -61 110 30 0 4 1 2 1 2 -62 140 -30 0 4 1 2 1 2 -63 140 0 0 4 1 2 1 2 -64 140 30 0 4 1 2 1 2 -65 70 -40 0 2 1 2 1 2 -66 70 0 0 2 1 2 1 2 -67 70 40 0 2 1 2 1 2 -68 110 -40 0 2 1 2 1 2 -69 110 40 0 2 1 2 1 2 -70 150 -40 0 2 1 2 1 2 -71 150 0 0 2 1 2 1 2 -72 150 40 0 2 1 2 1 2 -73 60 -50 0 1 1 2 1 2 -74 60 0 0 1 1 2 1 2 -75 60 50 0 1 1 2 1 2 -76 110 -50 0 1 1 2 1 2 -77 110 50 0 1 1 2 1 2 -78 160 -50 0 1 1 2 1 2 -79 160 0 0 1 1 2 1 2 -80 160 50 0 1 1 2 1 2 -81 0 0 0 0 0 0 -82 110 0 0 0 0 0 diff --git a/jsprit-instances/instances/cordeau/p12.res b/jsprit-instances/instances/cordeau/p12.res deleted file mode 100644 index 02684db02..000000000 --- a/jsprit-instances/instances/cordeau/p12.res +++ /dev/null @@ -1,9 +0,0 @@ -1318.95 -1 1 128.48 51 0 4 12 20 28 36 22 14 6 0 -1 2 189.57 57 0 7 15 23 31 39 67 75 40 32 24 16 8 0 -1 3 170.71 54 0 5 13 21 29 37 35 27 19 11 3 0 -1 4 170.71 54 0 1 9 17 25 33 34 26 18 10 2 0 -2 1 128.48 51 0 45 53 61 69 77 59 51 43 0 -2 2 170.71 54 0 47 55 63 71 79 80 72 64 56 48 0 -2 3 189.57 57 0 42 50 58 66 74 30 38 73 65 57 49 41 0 -2 4 170.71 54 0 46 54 62 70 78 76 68 60 52 44 0 diff --git a/jsprit-instances/instances/cordeau/p13 b/jsprit-instances/instances/cordeau/p13 deleted file mode 100644 index 5febde97b..000000000 --- a/jsprit-instances/instances/cordeau/p13 +++ /dev/null @@ -1,85 +0,0 @@ -2 5 80 2 -200 60 -200 60 - 1 -10 -10 0 12 1 2 1 2 - 2 -10 0 0 12 1 2 1 2 - 3 -10 10 0 12 1 2 1 2 - 4 0 -10 0 12 1 2 1 2 - 5 0 10 0 12 1 2 1 2 - 6 10 -10 0 12 1 2 1 2 - 7 10 0 0 12 1 2 1 2 - 8 10 10 0 12 1 2 1 2 - 9 -20 -20 0 8 1 2 1 2 -10 -20 0 0 8 1 2 1 2 -11 -20 20 0 8 1 2 1 2 -12 0 -20 0 8 1 2 1 2 -13 0 20 0 8 1 2 1 2 -14 20 -20 0 8 1 2 1 2 -15 20 0 0 8 1 2 1 2 -16 20 20 0 8 1 2 1 2 -17 -30 -30 0 4 1 2 1 2 -18 -30 0 0 4 1 2 1 2 -19 -30 30 0 4 1 2 1 2 -20 0 -30 0 4 1 2 1 2 -21 0 30 0 4 1 2 1 2 -22 30 -30 0 4 1 2 1 2 -23 30 0 0 4 1 2 1 2 -24 30 30 0 4 1 2 1 2 -25 -40 -40 0 2 1 2 1 2 -26 -40 0 0 2 1 2 1 2 -27 -40 40 0 2 1 2 1 2 -28 0 -40 0 2 1 2 1 2 -29 0 40 0 2 1 2 1 2 -30 40 -40 0 2 1 2 1 2 -31 40 0 0 2 1 2 1 2 -32 40 40 0 2 1 2 1 2 -33 -50 -50 0 1 1 2 1 2 -34 -50 0 0 1 1 2 1 2 -35 -50 50 0 1 1 2 1 2 -36 0 -50 0 1 1 2 1 2 -37 0 50 0 1 1 2 1 2 -38 50 -50 0 1 1 2 1 2 -39 50 0 0 1 1 2 1 2 -40 50 50 0 1 1 2 1 2 -41 100 -10 0 12 1 2 1 2 -42 100 0 0 12 1 2 1 2 -43 100 10 0 12 1 2 1 2 -44 110 -10 0 12 1 2 1 2 -45 110 10 0 12 1 2 1 2 -46 120 -10 0 12 1 2 1 2 -47 120 0 0 12 1 2 1 2 -48 120 10 0 12 1 2 1 2 -49 90 -20 0 8 1 2 1 2 -50 90 0 0 8 1 2 1 2 -51 90 20 0 8 1 2 1 2 -52 110 -20 0 8 1 2 1 2 -53 110 20 0 8 1 2 1 2 -54 130 -20 0 8 1 2 1 2 -55 130 0 0 8 1 2 1 2 -56 130 20 0 8 1 2 1 2 -57 80 -30 0 4 1 2 1 2 -58 80 0 0 4 1 2 1 2 -59 80 30 0 4 1 2 1 2 -60 110 -30 0 4 1 2 1 2 -61 110 30 0 4 1 2 1 2 -62 140 -30 0 4 1 2 1 2 -63 140 0 0 4 1 2 1 2 -64 140 30 0 4 1 2 1 2 -65 70 -40 0 2 1 2 1 2 -66 70 0 0 2 1 2 1 2 -67 70 40 0 2 1 2 1 2 -68 110 -40 0 2 1 2 1 2 -69 110 40 0 2 1 2 1 2 -70 150 -40 0 2 1 2 1 2 -71 150 0 0 2 1 2 1 2 -72 150 40 0 2 1 2 1 2 -73 60 -50 0 1 1 2 1 2 -74 60 0 0 1 1 2 1 2 -75 60 50 0 1 1 2 1 2 -76 110 -50 0 1 1 2 1 2 -77 110 50 0 1 1 2 1 2 -78 160 -50 0 1 1 2 1 2 -79 160 0 0 1 1 2 1 2 -80 160 50 0 1 1 2 1 2 -81 0 0 0 0 0 0 -82 110 0 0 0 0 0 diff --git a/jsprit-instances/instances/cordeau/p13.res b/jsprit-instances/instances/cordeau/p13.res deleted file mode 100644 index 75468ac6d..000000000 --- a/jsprit-instances/instances/cordeau/p13.res +++ /dev/null @@ -1,9 +0,0 @@ -1318.95 -1 1 170.71 54 0 3 11 19 27 35 34 26 18 10 2 0 -1 2 128.48 51 0 8 16 24 37 29 21 13 5 0 -1 3 189.57 57 0 7 15 23 31 39 65 73 38 30 22 14 6 0 -1 4 170.71 54 0 1 9 17 25 33 36 28 20 12 4 0 -2 1 128.48 51 0 41 49 57 76 68 60 52 44 0 -2 2 170.71 54 0 45 53 61 69 77 80 72 64 56 48 0 -2 3 189.57 57 0 42 50 58 66 74 32 40 75 67 59 51 43 0 -2 4 170.71 54 0 47 55 63 71 79 78 70 62 54 46 0 diff --git a/jsprit-instances/instances/cordeau/p14 b/jsprit-instances/instances/cordeau/p14 deleted file mode 100644 index f44dbb4f2..000000000 --- a/jsprit-instances/instances/cordeau/p14 +++ /dev/null @@ -1,85 +0,0 @@ -2 5 80 2 -180 60 -180 60 - 1 -10 -10 0 12 1 2 1 2 - 2 -10 0 0 12 1 2 1 2 - 3 -10 10 0 12 1 2 1 2 - 4 0 -10 0 12 1 2 1 2 - 5 0 10 0 12 1 2 1 2 - 6 10 -10 0 12 1 2 1 2 - 7 10 0 0 12 1 2 1 2 - 8 10 10 0 12 1 2 1 2 - 9 -20 -20 0 8 1 2 1 2 -10 -20 0 0 8 1 2 1 2 -11 -20 20 0 8 1 2 1 2 -12 0 -20 0 8 1 2 1 2 -13 0 20 0 8 1 2 1 2 -14 20 -20 0 8 1 2 1 2 -15 20 0 0 8 1 2 1 2 -16 20 20 0 8 1 2 1 2 -17 -30 -30 0 4 1 2 1 2 -18 -30 0 0 4 1 2 1 2 -19 -30 30 0 4 1 2 1 2 -20 0 -30 0 4 1 2 1 2 -21 0 30 0 4 1 2 1 2 -22 30 -30 0 4 1 2 1 2 -23 30 0 0 4 1 2 1 2 -24 30 30 0 4 1 2 1 2 -25 -40 -40 0 2 1 2 1 2 -26 -40 0 0 2 1 2 1 2 -27 -40 40 0 2 1 2 1 2 -28 0 -40 0 2 1 2 1 2 -29 0 40 0 2 1 2 1 2 -30 40 -40 0 2 1 2 1 2 -31 40 0 0 2 1 2 1 2 -32 40 40 0 2 1 2 1 2 -33 -50 -50 0 1 1 2 1 2 -34 -50 0 0 1 1 2 1 2 -35 -50 50 0 1 1 2 1 2 -36 0 -50 0 1 1 2 1 2 -37 0 50 0 1 1 2 1 2 -38 50 -50 0 1 1 2 1 2 -39 50 0 0 1 1 2 1 2 -40 50 50 0 1 1 2 1 2 -41 100 -10 0 12 1 2 1 2 -42 100 0 0 12 1 2 1 2 -43 100 10 0 12 1 2 1 2 -44 110 -10 0 12 1 2 1 2 -45 110 10 0 12 1 2 1 2 -46 120 -10 0 12 1 2 1 2 -47 120 0 0 12 1 2 1 2 -48 120 10 0 12 1 2 1 2 -49 90 -20 0 8 1 2 1 2 -50 90 0 0 8 1 2 1 2 -51 90 20 0 8 1 2 1 2 -52 110 -20 0 8 1 2 1 2 -53 110 20 0 8 1 2 1 2 -54 130 -20 0 8 1 2 1 2 -55 130 0 0 8 1 2 1 2 -56 130 20 0 8 1 2 1 2 -57 80 -30 0 4 1 2 1 2 -58 80 0 0 4 1 2 1 2 -59 80 30 0 4 1 2 1 2 -60 110 -30 0 4 1 2 1 2 -61 110 30 0 4 1 2 1 2 -62 140 -30 0 4 1 2 1 2 -63 140 0 0 4 1 2 1 2 -64 140 30 0 4 1 2 1 2 -65 70 -40 0 2 1 2 1 2 -66 70 0 0 2 1 2 1 2 -67 70 40 0 2 1 2 1 2 -68 110 -40 0 2 1 2 1 2 -69 110 40 0 2 1 2 1 2 -70 150 -40 0 2 1 2 1 2 -71 150 0 0 2 1 2 1 2 -72 150 40 0 2 1 2 1 2 -73 60 -50 0 1 1 2 1 2 -74 60 0 0 1 1 2 1 2 -75 60 50 0 1 1 2 1 2 -76 110 -50 0 1 1 2 1 2 -77 110 50 0 1 1 2 1 2 -78 160 -50 0 1 1 2 1 2 -79 160 0 0 1 1 2 1 2 -80 160 50 0 1 1 2 1 2 -81 0 0 0 0 0 0 -82 110 0 0 0 0 0 diff --git a/jsprit-instances/instances/cordeau/p14.res b/jsprit-instances/instances/cordeau/p14.res deleted file mode 100644 index 1524252de..000000000 --- a/jsprit-instances/instances/cordeau/p14.res +++ /dev/null @@ -1,9 +0,0 @@ -1360.12 -1 1 170.71 54 0 4 12 20 28 36 33 25 17 9 1 0 -1 2 174.56 54 0 6 14 22 30 38 73 31 23 15 7 0 -1 3 170.71 54 0 3 11 19 27 35 34 26 18 10 2 0 -1 4 170.71 54 0 8 16 24 32 40 37 29 21 13 5 0 -2 1 170.71 54 0 48 56 64 72 80 79 71 63 55 47 0 -2 2 161.29 54 0 42 50 58 66 74 39 65 57 49 41 0 -2 3 170.71 54 0 43 51 59 67 75 77 69 61 53 45 0 -2 4 170.71 54 0 44 52 60 68 76 78 70 62 54 46 0 diff --git a/jsprit-instances/instances/cordeau/p15 b/jsprit-instances/instances/cordeau/p15 deleted file mode 100644 index c4a2530da..000000000 --- a/jsprit-instances/instances/cordeau/p15 +++ /dev/null @@ -1,169 +0,0 @@ -2 5 160 4 -0 60 -0 60 -0 60 -0 60 - 1 -10 -10 0 12 1 4 1 2 4 8 - 2 -10 0 0 12 1 4 1 2 4 8 - 3 -10 10 0 12 1 4 1 2 4 8 - 4 0 -10 0 12 1 4 1 2 4 8 - 5 0 10 0 12 1 4 1 2 4 8 - 6 10 -10 0 12 1 4 1 2 4 8 - 7 10 0 0 12 1 4 1 2 4 8 - 8 10 10 0 12 1 4 1 2 4 8 - 9 -20 -20 0 8 1 4 1 2 4 8 - 10 -20 0 0 8 1 4 1 2 4 8 - 11 -20 20 0 8 1 4 1 2 4 8 - 12 0 -20 0 8 1 4 1 2 4 8 - 13 0 20 0 8 1 4 1 2 4 8 - 14 20 -20 0 8 1 4 1 2 4 8 - 15 20 0 0 8 1 4 1 2 4 8 - 16 20 20 0 8 1 4 1 2 4 8 - 17 -30 -30 0 4 1 4 1 2 4 8 - 18 -30 0 0 4 1 4 1 2 4 8 - 19 -30 30 0 4 1 4 1 2 4 8 - 20 0 -30 0 4 1 4 1 2 4 8 - 21 0 30 0 4 1 4 1 2 4 8 - 22 30 -30 0 4 1 4 1 2 4 8 - 23 30 0 0 4 1 4 1 2 4 8 - 24 30 30 0 4 1 4 1 2 4 8 - 25 -40 -40 0 2 1 4 1 2 4 8 - 26 -40 0 0 2 1 4 1 2 4 8 - 27 -40 40 0 2 1 4 1 2 4 8 - 28 0 -40 0 2 1 4 1 2 4 8 - 29 0 40 0 2 1 4 1 2 4 8 - 30 40 -40 0 2 1 4 1 2 4 8 - 31 40 0 0 2 1 4 1 2 4 8 - 32 40 40 0 2 1 4 1 2 4 8 - 33 -50 -50 0 1 1 4 1 2 4 8 - 34 -50 0 0 1 1 4 1 2 4 8 - 35 -50 50 0 1 1 4 1 2 4 8 - 36 0 -50 0 1 1 4 1 2 4 8 - 37 0 50 0 1 1 4 1 2 4 8 - 38 50 -50 0 1 1 4 1 2 4 8 - 39 50 0 0 1 1 4 1 2 4 8 - 40 50 50 0 1 1 4 1 2 4 8 - 41 100 -10 0 12 1 4 1 2 4 8 - 42 100 0 0 12 1 4 1 2 4 8 - 43 100 10 0 12 1 4 1 2 4 8 - 44 110 -10 0 12 1 4 1 2 4 8 - 45 110 10 0 12 1 4 1 2 4 8 - 46 120 -10 0 12 1 4 1 2 4 8 - 47 120 0 0 12 1 4 1 2 4 8 - 48 120 10 0 12 1 4 1 2 4 8 - 49 90 -20 0 8 1 4 1 2 4 8 - 50 90 0 0 8 1 4 1 2 4 8 - 51 90 20 0 8 1 4 1 2 4 8 - 52 110 -20 0 8 1 4 1 2 4 8 - 53 110 20 0 8 1 4 1 2 4 8 - 54 130 -20 0 8 1 4 1 2 4 8 - 55 130 0 0 8 1 4 1 2 4 8 - 56 130 20 0 8 1 4 1 2 4 8 - 57 80 -30 0 4 1 4 1 2 4 8 - 58 80 0 0 4 1 4 1 2 4 8 - 59 80 30 0 4 1 4 1 2 4 8 - 60 110 -30 0 4 1 4 1 2 4 8 - 61 110 30 0 4 1 4 1 2 4 8 - 62 140 -30 0 4 1 4 1 2 4 8 - 63 140 0 0 4 1 4 1 2 4 8 - 64 140 30 0 4 1 4 1 2 4 8 - 65 70 -40 0 2 1 4 1 2 4 8 - 66 70 0 0 2 1 4 1 2 4 8 - 67 70 40 0 2 1 4 1 2 4 8 - 68 110 -40 0 2 1 4 1 2 4 8 - 69 110 40 0 2 1 4 1 2 4 8 - 70 150 -40 0 2 1 4 1 2 4 8 - 71 150 0 0 2 1 4 1 2 4 8 - 72 150 40 0 2 1 4 1 2 4 8 - 73 60 -50 0 1 1 4 1 2 4 8 - 74 60 0 0 1 1 4 1 2 4 8 - 75 60 50 0 1 1 4 1 2 4 8 - 76 110 -50 0 1 1 4 1 2 4 8 - 77 110 50 0 1 1 4 1 2 4 8 - 78 160 -50 0 1 1 4 1 2 4 8 - 79 160 0 0 1 1 4 1 2 4 8 - 80 160 50 0 1 1 4 1 2 4 8 - 81 100 100 0 12 1 4 1 2 4 8 - 82 100 110 0 12 1 4 1 2 4 8 - 83 100 120 0 12 1 4 1 2 4 8 - 84 110 100 0 12 1 4 1 2 4 8 - 85 110 120 0 12 1 4 1 2 4 8 - 86 120 100 0 12 1 4 1 2 4 8 - 87 120 110 0 12 1 4 1 2 4 8 - 88 120 120 0 12 1 4 1 2 4 8 - 89 90 90 0 8 1 4 1 2 4 8 - 90 90 110 0 8 1 4 1 2 4 8 - 91 90 130 0 8 1 4 1 2 4 8 - 92 110 90 0 8 1 4 1 2 4 8 - 93 110 130 0 8 1 4 1 2 4 8 - 94 130 90 0 8 1 4 1 2 4 8 - 95 130 110 0 8 1 4 1 2 4 8 - 96 130 130 0 8 1 4 1 2 4 8 - 97 80 80 0 4 1 4 1 2 4 8 - 98 80 110 0 4 1 4 1 2 4 8 - 99 80 140 0 4 1 4 1 2 4 8 -100 110 80 0 4 1 4 1 2 4 8 -101 110 140 0 4 1 4 1 2 4 8 -102 140 80 0 4 1 4 1 2 4 8 -103 140 110 0 4 1 4 1 2 4 8 -104 140 140 0 4 1 4 1 2 4 8 -105 70 70 0 2 1 4 1 2 4 8 -106 70 110 0 2 1 4 1 2 4 8 -107 70 150 0 2 1 4 1 2 4 8 -108 110 70 0 2 1 4 1 2 4 8 -109 110 150 0 2 1 4 1 2 4 8 -110 150 70 0 2 1 4 1 2 4 8 -111 150 110 0 2 1 4 1 2 4 8 -112 150 150 0 2 1 4 1 2 4 8 -113 60 60 0 1 1 4 1 2 4 8 -114 60 110 0 1 1 4 1 2 4 8 -115 60 160 0 1 1 4 1 2 4 8 -116 110 60 0 1 1 4 1 2 4 8 -117 110 160 0 1 1 4 1 2 4 8 -118 160 60 0 1 1 4 1 2 4 8 -119 160 110 0 1 1 4 1 2 4 8 -120 160 160 0 1 1 4 1 2 4 8 -121 -10 100 0 12 1 4 1 2 4 8 -122 -10 110 0 12 1 4 1 2 4 8 -123 -10 120 0 12 1 4 1 2 4 8 -124 0 100 0 12 1 4 1 2 4 8 -125 0 120 0 12 1 4 1 2 4 8 -126 10 100 0 12 1 4 1 2 4 8 -127 10 110 0 12 1 4 1 2 4 8 -128 10 120 0 12 1 4 1 2 4 8 -129 -20 90 0 8 1 4 1 2 4 8 -130 -20 110 0 8 1 4 1 2 4 8 -131 -20 130 0 8 1 4 1 2 4 8 -132 0 90 0 8 1 4 1 2 4 8 -133 0 130 0 8 1 4 1 2 4 8 -134 20 90 0 8 1 4 1 2 4 8 -135 20 110 0 8 1 4 1 2 4 8 -136 20 130 0 8 1 4 1 2 4 8 -137 -30 80 0 4 1 4 1 2 4 8 -138 -30 110 0 4 1 4 1 2 4 8 -139 -30 140 0 4 1 4 1 2 4 8 -140 0 80 0 4 1 4 1 2 4 8 -141 0 140 0 4 1 4 1 2 4 8 -142 30 80 0 4 1 4 1 2 4 8 -143 30 110 0 4 1 4 1 2 4 8 -144 30 140 0 4 1 4 1 2 4 8 -145 -40 70 0 2 1 4 1 2 4 8 -146 -40 110 0 2 1 4 1 2 4 8 -147 -40 150 0 2 1 4 1 2 4 8 -148 0 70 0 2 1 4 1 2 4 8 -149 0 150 0 2 1 4 1 2 4 8 -150 40 70 0 2 1 4 1 2 4 8 -151 40 110 0 2 1 4 1 2 4 8 -152 40 150 0 2 1 4 1 2 4 8 -153 -50 60 0 1 1 4 1 2 4 8 -154 -50 110 0 1 1 4 1 2 4 8 -155 -50 160 0 1 1 4 1 2 4 8 -156 0 60 0 1 1 4 1 2 4 8 -157 0 160 0 1 1 4 1 2 4 8 -158 50 60 0 1 1 4 1 2 4 8 -159 50 110 0 1 1 4 1 2 4 8 -160 50 160 0 1 1 4 1 2 4 8 -161 0 0 0 0 0 0 -162 110 0 0 0 0 0 -163 110 110 0 0 0 0 -164 0 110 0 0 0 0 diff --git a/jsprit-instances/instances/cordeau/p15.res b/jsprit-instances/instances/cordeau/p15.res deleted file mode 100644 index b19147863..000000000 --- a/jsprit-instances/instances/cordeau/p15.res +++ /dev/null @@ -1,17 +0,0 @@ -2505.42 -1 1 147.80 53 0 3 11 19 27 34 26 18 10 2 0 -1 2 170.71 54 0 1 9 17 25 33 36 28 20 12 4 0 -1 3 233.14 60 0 15 23 31 39 74 66 58 50 49 57 65 73 38 30 22 14 0 -1 4 54.14 48 0 6 7 8 5 0 -2 1 233.14 60 0 53 61 69 77 116 108 100 92 89 97 105 113 75 67 59 51 0 -2 2 54.14 48 0 41 42 43 45 0 -2 3 188.93 55 0 48 56 64 72 118 80 79 71 63 55 47 0 -2 4 170.71 54 0 46 54 62 70 78 76 68 60 52 44 0 -3 1 147.80 53 0 86 94 102 110 119 111 103 95 87 0 -3 2 54.14 48 0 83 82 81 84 0 -3 3 170.71 54 0 85 93 101 109 117 120 112 104 96 88 0 -3 4 233.14 60 0 90 98 106 114 159 151 143 135 136 144 152 160 115 107 99 91 0 -4 1 54.14 48 0 124 126 127 128 0 -4 2 233.14 60 0 132 140 148 156 37 29 21 13 16 24 32 40 158 150 142 134 0 -4 3 170.71 54 0 123 131 139 147 155 157 149 141 133 125 0 -4 4 188.93 55 0 121 129 137 145 35 153 154 146 138 130 122 0 diff --git a/jsprit-instances/instances/cordeau/p16 b/jsprit-instances/instances/cordeau/p16 deleted file mode 100644 index fdced9446..000000000 --- a/jsprit-instances/instances/cordeau/p16 +++ /dev/null @@ -1,169 +0,0 @@ -2 5 160 4 -200 60 -200 60 -200 60 -200 60 - 1 -10 -10 0 12 1 4 1 2 4 8 - 2 -10 0 0 12 1 4 1 2 4 8 - 3 -10 10 0 12 1 4 1 2 4 8 - 4 0 -10 0 12 1 4 1 2 4 8 - 5 0 10 0 12 1 4 1 2 4 8 - 6 10 -10 0 12 1 4 1 2 4 8 - 7 10 0 0 12 1 4 1 2 4 8 - 8 10 10 0 12 1 4 1 2 4 8 - 9 -20 -20 0 8 1 4 1 2 4 8 - 10 -20 0 0 8 1 4 1 2 4 8 - 11 -20 20 0 8 1 4 1 2 4 8 - 12 0 -20 0 8 1 4 1 2 4 8 - 13 0 20 0 8 1 4 1 2 4 8 - 14 20 -20 0 8 1 4 1 2 4 8 - 15 20 0 0 8 1 4 1 2 4 8 - 16 20 20 0 8 1 4 1 2 4 8 - 17 -30 -30 0 4 1 4 1 2 4 8 - 18 -30 0 0 4 1 4 1 2 4 8 - 19 -30 30 0 4 1 4 1 2 4 8 - 20 0 -30 0 4 1 4 1 2 4 8 - 21 0 30 0 4 1 4 1 2 4 8 - 22 30 -30 0 4 1 4 1 2 4 8 - 23 30 0 0 4 1 4 1 2 4 8 - 24 30 30 0 4 1 4 1 2 4 8 - 25 -40 -40 0 2 1 4 1 2 4 8 - 26 -40 0 0 2 1 4 1 2 4 8 - 27 -40 40 0 2 1 4 1 2 4 8 - 28 0 -40 0 2 1 4 1 2 4 8 - 29 0 40 0 2 1 4 1 2 4 8 - 30 40 -40 0 2 1 4 1 2 4 8 - 31 40 0 0 2 1 4 1 2 4 8 - 32 40 40 0 2 1 4 1 2 4 8 - 33 -50 -50 0 1 1 4 1 2 4 8 - 34 -50 0 0 1 1 4 1 2 4 8 - 35 -50 50 0 1 1 4 1 2 4 8 - 36 0 -50 0 1 1 4 1 2 4 8 - 37 0 50 0 1 1 4 1 2 4 8 - 38 50 -50 0 1 1 4 1 2 4 8 - 39 50 0 0 1 1 4 1 2 4 8 - 40 50 50 0 1 1 4 1 2 4 8 - 41 100 -10 0 12 1 4 1 2 4 8 - 42 100 0 0 12 1 4 1 2 4 8 - 43 100 10 0 12 1 4 1 2 4 8 - 44 110 -10 0 12 1 4 1 2 4 8 - 45 110 10 0 12 1 4 1 2 4 8 - 46 120 -10 0 12 1 4 1 2 4 8 - 47 120 0 0 12 1 4 1 2 4 8 - 48 120 10 0 12 1 4 1 2 4 8 - 49 90 -20 0 8 1 4 1 2 4 8 - 50 90 0 0 8 1 4 1 2 4 8 - 51 90 20 0 8 1 4 1 2 4 8 - 52 110 -20 0 8 1 4 1 2 4 8 - 53 110 20 0 8 1 4 1 2 4 8 - 54 130 -20 0 8 1 4 1 2 4 8 - 55 130 0 0 8 1 4 1 2 4 8 - 56 130 20 0 8 1 4 1 2 4 8 - 57 80 -30 0 4 1 4 1 2 4 8 - 58 80 0 0 4 1 4 1 2 4 8 - 59 80 30 0 4 1 4 1 2 4 8 - 60 110 -30 0 4 1 4 1 2 4 8 - 61 110 30 0 4 1 4 1 2 4 8 - 62 140 -30 0 4 1 4 1 2 4 8 - 63 140 0 0 4 1 4 1 2 4 8 - 64 140 30 0 4 1 4 1 2 4 8 - 65 70 -40 0 2 1 4 1 2 4 8 - 66 70 0 0 2 1 4 1 2 4 8 - 67 70 40 0 2 1 4 1 2 4 8 - 68 110 -40 0 2 1 4 1 2 4 8 - 69 110 40 0 2 1 4 1 2 4 8 - 70 150 -40 0 2 1 4 1 2 4 8 - 71 150 0 0 2 1 4 1 2 4 8 - 72 150 40 0 2 1 4 1 2 4 8 - 73 60 -50 0 1 1 4 1 2 4 8 - 74 60 0 0 1 1 4 1 2 4 8 - 75 60 50 0 1 1 4 1 2 4 8 - 76 110 -50 0 1 1 4 1 2 4 8 - 77 110 50 0 1 1 4 1 2 4 8 - 78 160 -50 0 1 1 4 1 2 4 8 - 79 160 0 0 1 1 4 1 2 4 8 - 80 160 50 0 1 1 4 1 2 4 8 - 81 100 100 0 12 1 4 1 2 4 8 - 82 100 110 0 12 1 4 1 2 4 8 - 83 100 120 0 12 1 4 1 2 4 8 - 84 110 100 0 12 1 4 1 2 4 8 - 85 110 120 0 12 1 4 1 2 4 8 - 86 120 100 0 12 1 4 1 2 4 8 - 87 120 110 0 12 1 4 1 2 4 8 - 88 120 120 0 12 1 4 1 2 4 8 - 89 90 90 0 8 1 4 1 2 4 8 - 90 90 110 0 8 1 4 1 2 4 8 - 91 90 130 0 8 1 4 1 2 4 8 - 92 110 90 0 8 1 4 1 2 4 8 - 93 110 130 0 8 1 4 1 2 4 8 - 94 130 90 0 8 1 4 1 2 4 8 - 95 130 110 0 8 1 4 1 2 4 8 - 96 130 130 0 8 1 4 1 2 4 8 - 97 80 80 0 4 1 4 1 2 4 8 - 98 80 110 0 4 1 4 1 2 4 8 - 99 80 140 0 4 1 4 1 2 4 8 -100 110 80 0 4 1 4 1 2 4 8 -101 110 140 0 4 1 4 1 2 4 8 -102 140 80 0 4 1 4 1 2 4 8 -103 140 110 0 4 1 4 1 2 4 8 -104 140 140 0 4 1 4 1 2 4 8 -105 70 70 0 2 1 4 1 2 4 8 -106 70 110 0 2 1 4 1 2 4 8 -107 70 150 0 2 1 4 1 2 4 8 -108 110 70 0 2 1 4 1 2 4 8 -109 110 150 0 2 1 4 1 2 4 8 -110 150 70 0 2 1 4 1 2 4 8 -111 150 110 0 2 1 4 1 2 4 8 -112 150 150 0 2 1 4 1 2 4 8 -113 60 60 0 1 1 4 1 2 4 8 -114 60 110 0 1 1 4 1 2 4 8 -115 60 160 0 1 1 4 1 2 4 8 -116 110 60 0 1 1 4 1 2 4 8 -117 110 160 0 1 1 4 1 2 4 8 -118 160 60 0 1 1 4 1 2 4 8 -119 160 110 0 1 1 4 1 2 4 8 -120 160 160 0 1 1 4 1 2 4 8 -121 -10 100 0 12 1 4 1 2 4 8 -122 -10 110 0 12 1 4 1 2 4 8 -123 -10 120 0 12 1 4 1 2 4 8 -124 0 100 0 12 1 4 1 2 4 8 -125 0 120 0 12 1 4 1 2 4 8 -126 10 100 0 12 1 4 1 2 4 8 -127 10 110 0 12 1 4 1 2 4 8 -128 10 120 0 12 1 4 1 2 4 8 -129 -20 90 0 8 1 4 1 2 4 8 -130 -20 110 0 8 1 4 1 2 4 8 -131 -20 130 0 8 1 4 1 2 4 8 -132 0 90 0 8 1 4 1 2 4 8 -133 0 130 0 8 1 4 1 2 4 8 -134 20 90 0 8 1 4 1 2 4 8 -135 20 110 0 8 1 4 1 2 4 8 -136 20 130 0 8 1 4 1 2 4 8 -137 -30 80 0 4 1 4 1 2 4 8 -138 -30 110 0 4 1 4 1 2 4 8 -139 -30 140 0 4 1 4 1 2 4 8 -140 0 80 0 4 1 4 1 2 4 8 -141 0 140 0 4 1 4 1 2 4 8 -142 30 80 0 4 1 4 1 2 4 8 -143 30 110 0 4 1 4 1 2 4 8 -144 30 140 0 4 1 4 1 2 4 8 -145 -40 70 0 2 1 4 1 2 4 8 -146 -40 110 0 2 1 4 1 2 4 8 -147 -40 150 0 2 1 4 1 2 4 8 -148 0 70 0 2 1 4 1 2 4 8 -149 0 150 0 2 1 4 1 2 4 8 -150 40 70 0 2 1 4 1 2 4 8 -151 40 110 0 2 1 4 1 2 4 8 -152 40 150 0 2 1 4 1 2 4 8 -153 -50 60 0 1 1 4 1 2 4 8 -154 -50 110 0 1 1 4 1 2 4 8 -155 -50 160 0 1 1 4 1 2 4 8 -156 0 60 0 1 1 4 1 2 4 8 -157 0 160 0 1 1 4 1 2 4 8 -158 50 60 0 1 1 4 1 2 4 8 -159 50 110 0 1 1 4 1 2 4 8 -160 50 160 0 1 1 4 1 2 4 8 -161 0 0 0 0 0 0 -162 110 0 0 0 0 0 -163 110 110 0 0 0 0 -164 0 110 0 0 0 0 diff --git a/jsprit-instances/instances/cordeau/p16.res b/jsprit-instances/instances/cordeau/p16.res deleted file mode 100644 index bb640208a..000000000 --- a/jsprit-instances/instances/cordeau/p16.res +++ /dev/null @@ -1,17 +0,0 @@ -2572.23 -1 1 196.08 58 0 5 13 21 29 37 156 145 153 35 27 19 11 3 0 -1 2 170.71 54 0 1 9 17 25 33 34 26 18 10 2 0 -1 3 128.48 51 0 6 14 22 36 28 20 12 4 0 -1 4 96.57 46 0 8 16 31 23 15 7 0 -2 1 198.99 60 0 43 51 59 67 75 113 105 97 69 61 53 45 0 -2 2 196.08 58 0 41 49 57 65 73 38 30 39 74 66 58 50 42 0 -2 3 128.48 51 0 47 55 63 71 79 64 56 48 0 -2 4 170.71 54 0 46 54 62 70 78 76 68 60 52 44 0 -3 1 196.08 58 0 86 94 102 110 118 80 72 77 116 108 100 92 84 0 -3 2 170.71 54 0 88 96 104 112 120 119 111 103 95 87 0 -3 3 96.57 46 0 81 89 106 98 90 82 0 -3 4 128.48 51 0 83 91 99 117 109 101 93 85 0 -4 1 198.99 60 0 126 134 142 150 158 40 32 24 148 140 132 124 0 -4 2 128.48 51 0 122 130 138 146 154 137 129 121 0 -4 3 170.71 54 0 125 133 141 149 157 155 147 139 131 123 0 -4 4 196.08 58 0 127 135 143 151 159 114 107 115 160 152 144 136 128 0 diff --git a/jsprit-instances/instances/cordeau/p17 b/jsprit-instances/instances/cordeau/p17 deleted file mode 100644 index 3607c1e59..000000000 --- a/jsprit-instances/instances/cordeau/p17 +++ /dev/null @@ -1,169 +0,0 @@ -2 5 160 4 -180 60 -180 60 -180 60 -180 60 - 1 -10 -10 0 12 1 4 1 2 4 8 - 2 -10 0 0 12 1 4 1 2 4 8 - 3 -10 10 0 12 1 4 1 2 4 8 - 4 0 -10 0 12 1 4 1 2 4 8 - 5 0 10 0 12 1 4 1 2 4 8 - 6 10 -10 0 12 1 4 1 2 4 8 - 7 10 0 0 12 1 4 1 2 4 8 - 8 10 10 0 12 1 4 1 2 4 8 - 9 -20 -20 0 8 1 4 1 2 4 8 - 10 -20 0 0 8 1 4 1 2 4 8 - 11 -20 20 0 8 1 4 1 2 4 8 - 12 0 -20 0 8 1 4 1 2 4 8 - 13 0 20 0 8 1 4 1 2 4 8 - 14 20 -20 0 8 1 4 1 2 4 8 - 15 20 0 0 8 1 4 1 2 4 8 - 16 20 20 0 8 1 4 1 2 4 8 - 17 -30 -30 0 4 1 4 1 2 4 8 - 18 -30 0 0 4 1 4 1 2 4 8 - 19 -30 30 0 4 1 4 1 2 4 8 - 20 0 -30 0 4 1 4 1 2 4 8 - 21 0 30 0 4 1 4 1 2 4 8 - 22 30 -30 0 4 1 4 1 2 4 8 - 23 30 0 0 4 1 4 1 2 4 8 - 24 30 30 0 4 1 4 1 2 4 8 - 25 -40 -40 0 2 1 4 1 2 4 8 - 26 -40 0 0 2 1 4 1 2 4 8 - 27 -40 40 0 2 1 4 1 2 4 8 - 28 0 -40 0 2 1 4 1 2 4 8 - 29 0 40 0 2 1 4 1 2 4 8 - 30 40 -40 0 2 1 4 1 2 4 8 - 31 40 0 0 2 1 4 1 2 4 8 - 32 40 40 0 2 1 4 1 2 4 8 - 33 -50 -50 0 1 1 4 1 2 4 8 - 34 -50 0 0 1 1 4 1 2 4 8 - 35 -50 50 0 1 1 4 1 2 4 8 - 36 0 -50 0 1 1 4 1 2 4 8 - 37 0 50 0 1 1 4 1 2 4 8 - 38 50 -50 0 1 1 4 1 2 4 8 - 39 50 0 0 1 1 4 1 2 4 8 - 40 50 50 0 1 1 4 1 2 4 8 - 41 100 -10 0 12 1 4 1 2 4 8 - 42 100 0 0 12 1 4 1 2 4 8 - 43 100 10 0 12 1 4 1 2 4 8 - 44 110 -10 0 12 1 4 1 2 4 8 - 45 110 10 0 12 1 4 1 2 4 8 - 46 120 -10 0 12 1 4 1 2 4 8 - 47 120 0 0 12 1 4 1 2 4 8 - 48 120 10 0 12 1 4 1 2 4 8 - 49 90 -20 0 8 1 4 1 2 4 8 - 50 90 0 0 8 1 4 1 2 4 8 - 51 90 20 0 8 1 4 1 2 4 8 - 52 110 -20 0 8 1 4 1 2 4 8 - 53 110 20 0 8 1 4 1 2 4 8 - 54 130 -20 0 8 1 4 1 2 4 8 - 55 130 0 0 8 1 4 1 2 4 8 - 56 130 20 0 8 1 4 1 2 4 8 - 57 80 -30 0 4 1 4 1 2 4 8 - 58 80 0 0 4 1 4 1 2 4 8 - 59 80 30 0 4 1 4 1 2 4 8 - 60 110 -30 0 4 1 4 1 2 4 8 - 61 110 30 0 4 1 4 1 2 4 8 - 62 140 -30 0 4 1 4 1 2 4 8 - 63 140 0 0 4 1 4 1 2 4 8 - 64 140 30 0 4 1 4 1 2 4 8 - 65 70 -40 0 2 1 4 1 2 4 8 - 66 70 0 0 2 1 4 1 2 4 8 - 67 70 40 0 2 1 4 1 2 4 8 - 68 110 -40 0 2 1 4 1 2 4 8 - 69 110 40 0 2 1 4 1 2 4 8 - 70 150 -40 0 2 1 4 1 2 4 8 - 71 150 0 0 2 1 4 1 2 4 8 - 72 150 40 0 2 1 4 1 2 4 8 - 73 60 -50 0 1 1 4 1 2 4 8 - 74 60 0 0 1 1 4 1 2 4 8 - 75 60 50 0 1 1 4 1 2 4 8 - 76 110 -50 0 1 1 4 1 2 4 8 - 77 110 50 0 1 1 4 1 2 4 8 - 78 160 -50 0 1 1 4 1 2 4 8 - 79 160 0 0 1 1 4 1 2 4 8 - 80 160 50 0 1 1 4 1 2 4 8 - 81 100 100 0 12 1 4 1 2 4 8 - 82 100 110 0 12 1 4 1 2 4 8 - 83 100 120 0 12 1 4 1 2 4 8 - 84 110 100 0 12 1 4 1 2 4 8 - 85 110 120 0 12 1 4 1 2 4 8 - 86 120 100 0 12 1 4 1 2 4 8 - 87 120 110 0 12 1 4 1 2 4 8 - 88 120 120 0 12 1 4 1 2 4 8 - 89 90 90 0 8 1 4 1 2 4 8 - 90 90 110 0 8 1 4 1 2 4 8 - 91 90 130 0 8 1 4 1 2 4 8 - 92 110 90 0 8 1 4 1 2 4 8 - 93 110 130 0 8 1 4 1 2 4 8 - 94 130 90 0 8 1 4 1 2 4 8 - 95 130 110 0 8 1 4 1 2 4 8 - 96 130 130 0 8 1 4 1 2 4 8 - 97 80 80 0 4 1 4 1 2 4 8 - 98 80 110 0 4 1 4 1 2 4 8 - 99 80 140 0 4 1 4 1 2 4 8 -100 110 80 0 4 1 4 1 2 4 8 -101 110 140 0 4 1 4 1 2 4 8 -102 140 80 0 4 1 4 1 2 4 8 -103 140 110 0 4 1 4 1 2 4 8 -104 140 140 0 4 1 4 1 2 4 8 -105 70 70 0 2 1 4 1 2 4 8 -106 70 110 0 2 1 4 1 2 4 8 -107 70 150 0 2 1 4 1 2 4 8 -108 110 70 0 2 1 4 1 2 4 8 -109 110 150 0 2 1 4 1 2 4 8 -110 150 70 0 2 1 4 1 2 4 8 -111 150 110 0 2 1 4 1 2 4 8 -112 150 150 0 2 1 4 1 2 4 8 -113 60 60 0 1 1 4 1 2 4 8 -114 60 110 0 1 1 4 1 2 4 8 -115 60 160 0 1 1 4 1 2 4 8 -116 110 60 0 1 1 4 1 2 4 8 -117 110 160 0 1 1 4 1 2 4 8 -118 160 60 0 1 1 4 1 2 4 8 -119 160 110 0 1 1 4 1 2 4 8 -120 160 160 0 1 1 4 1 2 4 8 -121 -10 100 0 12 1 4 1 2 4 8 -122 -10 110 0 12 1 4 1 2 4 8 -123 -10 120 0 12 1 4 1 2 4 8 -124 0 100 0 12 1 4 1 2 4 8 -125 0 120 0 12 1 4 1 2 4 8 -126 10 100 0 12 1 4 1 2 4 8 -127 10 110 0 12 1 4 1 2 4 8 -128 10 120 0 12 1 4 1 2 4 8 -129 -20 90 0 8 1 4 1 2 4 8 -130 -20 110 0 8 1 4 1 2 4 8 -131 -20 130 0 8 1 4 1 2 4 8 -132 0 90 0 8 1 4 1 2 4 8 -133 0 130 0 8 1 4 1 2 4 8 -134 20 90 0 8 1 4 1 2 4 8 -135 20 110 0 8 1 4 1 2 4 8 -136 20 130 0 8 1 4 1 2 4 8 -137 -30 80 0 4 1 4 1 2 4 8 -138 -30 110 0 4 1 4 1 2 4 8 -139 -30 140 0 4 1 4 1 2 4 8 -140 0 80 0 4 1 4 1 2 4 8 -141 0 140 0 4 1 4 1 2 4 8 -142 30 80 0 4 1 4 1 2 4 8 -143 30 110 0 4 1 4 1 2 4 8 -144 30 140 0 4 1 4 1 2 4 8 -145 -40 70 0 2 1 4 1 2 4 8 -146 -40 110 0 2 1 4 1 2 4 8 -147 -40 150 0 2 1 4 1 2 4 8 -148 0 70 0 2 1 4 1 2 4 8 -149 0 150 0 2 1 4 1 2 4 8 -150 40 70 0 2 1 4 1 2 4 8 -151 40 110 0 2 1 4 1 2 4 8 -152 40 150 0 2 1 4 1 2 4 8 -153 -50 60 0 1 1 4 1 2 4 8 -154 -50 110 0 1 1 4 1 2 4 8 -155 -50 160 0 1 1 4 1 2 4 8 -156 0 60 0 1 1 4 1 2 4 8 -157 0 160 0 1 1 4 1 2 4 8 -158 50 60 0 1 1 4 1 2 4 8 -159 50 110 0 1 1 4 1 2 4 8 -160 50 160 0 1 1 4 1 2 4 8 -161 0 0 0 0 0 0 -162 110 0 0 0 0 0 -163 110 110 0 0 0 0 -164 0 110 0 0 0 0 diff --git a/jsprit-instances/instances/cordeau/p17.res b/jsprit-instances/instances/cordeau/p17.res deleted file mode 100644 index 8a4f780c8..000000000 --- a/jsprit-instances/instances/cordeau/p17.res +++ /dev/null @@ -1,17 +0,0 @@ -2709.09 -1 1 170.71 54 0 1 9 17 25 33 36 28 20 12 4 0 -1 2 174.56 54 0 7 15 23 31 73 38 30 22 14 6 0 -1 3 170.71 54 0 2 10 18 26 34 35 27 19 11 3 0 -1 4 161.29 54 0 5 13 21 29 37 156 32 24 16 8 0 -2 1 170.71 54 0 47 55 63 71 79 80 72 64 56 48 0 -2 2 170.71 54 0 46 54 62 70 78 76 68 60 52 44 0 -2 3 161.29 54 0 42 50 58 66 74 39 65 57 49 41 0 -2 4 161.29 54 0 45 53 61 69 77 116 67 59 51 43 0 -3 1 170.71 54 0 86 94 102 110 118 119 111 103 95 87 0 -3 2 161.29 54 0 82 90 98 106 114 159 107 99 91 83 0 -3 3 174.56 54 0 84 92 100 108 75 113 105 97 89 81 0 -3 4 170.71 54 0 85 93 101 109 117 120 112 104 96 88 0 -4 1 174.56 54 0 128 136 144 152 160 115 151 143 135 127 0 -4 2 174.56 54 0 126 134 142 150 158 40 148 140 132 124 0 -4 3 170.71 54 0 121 129 137 145 153 154 146 138 130 122 0 -4 4 170.71 54 0 125 133 141 149 157 155 147 139 131 123 0 diff --git a/jsprit-instances/instances/cordeau/p18 b/jsprit-instances/instances/cordeau/p18 deleted file mode 100644 index 7fbf4a24d..000000000 --- a/jsprit-instances/instances/cordeau/p18 +++ /dev/null @@ -1,253 +0,0 @@ -2 5 240 6 -0 60 -0 60 -0 60 -0 60 -0 60 -0 60 - 1 -10 -10 0 12 1 6 1 2 4 8 16 32 - 2 -10 0 0 12 1 6 1 2 4 8 16 32 - 3 -10 10 0 12 1 6 1 2 4 8 16 32 - 4 0 -10 0 12 1 6 1 2 4 8 16 32 - 5 0 10 0 12 1 6 1 2 4 8 16 32 - 6 10 -10 0 12 1 6 1 2 4 8 16 32 - 7 10 0 0 12 1 6 1 2 4 8 16 32 - 8 10 10 0 12 1 6 1 2 4 8 16 32 - 9 -20 -20 0 8 1 6 1 2 4 8 16 32 - 10 -20 0 0 8 1 6 1 2 4 8 16 32 - 11 -20 20 0 8 1 6 1 2 4 8 16 32 - 12 0 -20 0 8 1 6 1 2 4 8 16 32 - 13 0 20 0 8 1 6 1 2 4 8 16 32 - 14 20 -20 0 8 1 6 1 2 4 8 16 32 - 15 20 0 0 8 1 6 1 2 4 8 16 32 - 16 20 20 0 8 1 6 1 2 4 8 16 32 - 17 -30 -30 0 4 1 6 1 2 4 8 16 32 - 18 -30 0 0 4 1 6 1 2 4 8 16 32 - 19 -30 30 0 4 1 6 1 2 4 8 16 32 - 20 0 -30 0 4 1 6 1 2 4 8 16 32 - 21 0 30 0 4 1 6 1 2 4 8 16 32 - 22 30 -30 0 4 1 6 1 2 4 8 16 32 - 23 30 0 0 4 1 6 1 2 4 8 16 32 - 24 30 30 0 4 1 6 1 2 4 8 16 32 - 25 -40 -40 0 2 1 6 1 2 4 8 16 32 - 26 -40 0 0 2 1 6 1 2 4 8 16 32 - 27 -40 40 0 2 1 6 1 2 4 8 16 32 - 28 0 -40 0 2 1 6 1 2 4 8 16 32 - 29 0 40 0 2 1 6 1 2 4 8 16 32 - 30 40 -40 0 2 1 6 1 2 4 8 16 32 - 31 40 0 0 2 1 6 1 2 4 8 16 32 - 32 40 40 0 2 1 6 1 2 4 8 16 32 - 33 -50 -50 0 1 1 6 1 2 4 8 16 32 - 34 -50 0 0 1 1 6 1 2 4 8 16 32 - 35 -50 50 0 1 1 6 1 2 4 8 16 32 - 36 0 -50 0 1 1 6 1 2 4 8 16 32 - 37 0 50 0 1 1 6 1 2 4 8 16 32 - 38 50 -50 0 1 1 6 1 2 4 8 16 32 - 39 50 0 0 1 1 6 1 2 4 8 16 32 - 40 50 50 0 1 1 6 1 2 4 8 16 32 - 41 100 -10 0 12 1 6 1 2 4 8 16 32 - 42 100 0 0 12 1 6 1 2 4 8 16 32 - 43 100 10 0 12 1 6 1 2 4 8 16 32 - 44 110 -10 0 12 1 6 1 2 4 8 16 32 - 45 110 10 0 12 1 6 1 2 4 8 16 32 - 46 120 -10 0 12 1 6 1 2 4 8 16 32 - 47 120 0 0 12 1 6 1 2 4 8 16 32 - 48 120 10 0 12 1 6 1 2 4 8 16 32 - 49 90 -20 0 8 1 6 1 2 4 8 16 32 - 50 90 0 0 8 1 6 1 2 4 8 16 32 - 51 90 20 0 8 1 6 1 2 4 8 16 32 - 52 110 -20 0 8 1 6 1 2 4 8 16 32 - 53 110 20 0 8 1 6 1 2 4 8 16 32 - 54 130 -20 0 8 1 6 1 2 4 8 16 32 - 55 130 0 0 8 1 6 1 2 4 8 16 32 - 56 130 20 0 8 1 6 1 2 4 8 16 32 - 57 80 -30 0 4 1 6 1 2 4 8 16 32 - 58 80 0 0 4 1 6 1 2 4 8 16 32 - 59 80 30 0 4 1 6 1 2 4 8 16 32 - 60 110 -30 0 4 1 6 1 2 4 8 16 32 - 61 110 30 0 4 1 6 1 2 4 8 16 32 - 62 140 -30 0 4 1 6 1 2 4 8 16 32 - 63 140 0 0 4 1 6 1 2 4 8 16 32 - 64 140 30 0 4 1 6 1 2 4 8 16 32 - 65 70 -40 0 2 1 6 1 2 4 8 16 32 - 66 70 0 0 2 1 6 1 2 4 8 16 32 - 67 70 40 0 2 1 6 1 2 4 8 16 32 - 68 110 -40 0 2 1 6 1 2 4 8 16 32 - 69 110 40 0 2 1 6 1 2 4 8 16 32 - 70 150 -40 0 2 1 6 1 2 4 8 16 32 - 71 150 0 0 2 1 6 1 2 4 8 16 32 - 72 150 40 0 2 1 6 1 2 4 8 16 32 - 73 60 -50 0 1 1 6 1 2 4 8 16 32 - 74 60 0 0 1 1 6 1 2 4 8 16 32 - 75 60 50 0 1 1 6 1 2 4 8 16 32 - 76 110 -50 0 1 1 6 1 2 4 8 16 32 - 77 110 50 0 1 1 6 1 2 4 8 16 32 - 78 160 -50 0 1 1 6 1 2 4 8 16 32 - 79 160 0 0 1 1 6 1 2 4 8 16 32 - 80 160 50 0 1 1 6 1 2 4 8 16 32 - 81 100 100 0 12 1 6 1 2 4 8 16 32 - 82 100 110 0 12 1 6 1 2 4 8 16 32 - 83 100 120 0 12 1 6 1 2 4 8 16 32 - 84 110 100 0 12 1 6 1 2 4 8 16 32 - 85 110 120 0 12 1 6 1 2 4 8 16 32 - 86 120 100 0 12 1 6 1 2 4 8 16 32 - 87 120 110 0 12 1 6 1 2 4 8 16 32 - 88 120 120 0 12 1 6 1 2 4 8 16 32 - 89 90 90 0 8 1 6 1 2 4 8 16 32 - 90 90 110 0 8 1 6 1 2 4 8 16 32 - 91 90 130 0 8 1 6 1 2 4 8 16 32 - 92 110 90 0 8 1 6 1 2 4 8 16 32 - 93 110 130 0 8 1 6 1 2 4 8 16 32 - 94 130 90 0 8 1 6 1 2 4 8 16 32 - 95 130 110 0 8 1 6 1 2 4 8 16 32 - 96 130 130 0 8 1 6 1 2 4 8 16 32 - 97 80 80 0 4 1 6 1 2 4 8 16 32 - 98 80 110 0 4 1 6 1 2 4 8 16 32 - 99 80 140 0 4 1 6 1 2 4 8 16 32 -100 110 80 0 4 1 6 1 2 4 8 16 32 -101 110 140 0 4 1 6 1 2 4 8 16 32 -102 140 80 0 4 1 6 1 2 4 8 16 32 -103 140 110 0 4 1 6 1 2 4 8 16 32 -104 140 140 0 4 1 6 1 2 4 8 16 32 -105 70 70 0 2 1 6 1 2 4 8 16 32 -106 70 110 0 2 1 6 1 2 4 8 16 32 -107 70 150 0 2 1 6 1 2 4 8 16 32 -108 110 70 0 2 1 6 1 2 4 8 16 32 -109 110 150 0 2 1 6 1 2 4 8 16 32 -110 150 70 0 2 1 6 1 2 4 8 16 32 -111 150 110 0 2 1 6 1 2 4 8 16 32 -112 150 150 0 2 1 6 1 2 4 8 16 32 -113 60 60 0 1 1 6 1 2 4 8 16 32 -114 60 110 0 1 1 6 1 2 4 8 16 32 -115 60 160 0 1 1 6 1 2 4 8 16 32 -116 110 60 0 1 1 6 1 2 4 8 16 32 -117 110 160 0 1 1 6 1 2 4 8 16 32 -118 160 60 0 1 1 6 1 2 4 8 16 32 -119 160 110 0 1 1 6 1 2 4 8 16 32 -120 160 160 0 1 1 6 1 2 4 8 16 32 -121 -10 100 0 12 1 6 1 2 4 8 16 32 -122 -10 110 0 12 1 6 1 2 4 8 16 32 -123 -10 120 0 12 1 6 1 2 4 8 16 32 -124 0 100 0 12 1 6 1 2 4 8 16 32 -125 0 120 0 12 1 6 1 2 4 8 16 32 -126 10 100 0 12 1 6 1 2 4 8 16 32 -127 10 110 0 12 1 6 1 2 4 8 16 32 -128 10 120 0 12 1 6 1 2 4 8 16 32 -129 -20 90 0 8 1 6 1 2 4 8 16 32 -130 -20 110 0 8 1 6 1 2 4 8 16 32 -131 -20 130 0 8 1 6 1 2 4 8 16 32 -132 0 90 0 8 1 6 1 2 4 8 16 32 -133 0 130 0 8 1 6 1 2 4 8 16 32 -134 20 90 0 8 1 6 1 2 4 8 16 32 -135 20 110 0 8 1 6 1 2 4 8 16 32 -136 20 130 0 8 1 6 1 2 4 8 16 32 -137 -30 80 0 4 1 6 1 2 4 8 16 32 -138 -30 110 0 4 1 6 1 2 4 8 16 32 -139 -30 140 0 4 1 6 1 2 4 8 16 32 -140 0 80 0 4 1 6 1 2 4 8 16 32 -141 0 140 0 4 1 6 1 2 4 8 16 32 -142 30 80 0 4 1 6 1 2 4 8 16 32 -143 30 110 0 4 1 6 1 2 4 8 16 32 -144 30 140 0 4 1 6 1 2 4 8 16 32 -145 -40 70 0 2 1 6 1 2 4 8 16 32 -146 -40 110 0 2 1 6 1 2 4 8 16 32 -147 -40 150 0 2 1 6 1 2 4 8 16 32 -148 0 70 0 2 1 6 1 2 4 8 16 32 -149 0 150 0 2 1 6 1 2 4 8 16 32 -150 40 70 0 2 1 6 1 2 4 8 16 32 -151 40 110 0 2 1 6 1 2 4 8 16 32 -152 40 150 0 2 1 6 1 2 4 8 16 32 -153 -50 60 0 1 1 6 1 2 4 8 16 32 -154 -50 110 0 1 1 6 1 2 4 8 16 32 -155 -50 160 0 1 1 6 1 2 4 8 16 32 -156 0 60 0 1 1 6 1 2 4 8 16 32 -157 0 160 0 1 1 6 1 2 4 8 16 32 -158 50 60 0 1 1 6 1 2 4 8 16 32 -159 50 110 0 1 1 6 1 2 4 8 16 32 -160 50 160 0 1 1 6 1 2 4 8 16 32 -161 -120 100 0 12 1 6 1 2 4 8 16 32 -162 -120 110 0 12 1 6 1 2 4 8 16 32 -163 -120 120 0 12 1 6 1 2 4 8 16 32 -164 -110 100 0 12 1 6 1 2 4 8 16 32 -165 -110 120 0 12 1 6 1 2 4 8 16 32 -166 -100 100 0 12 1 6 1 2 4 8 16 32 -167 -100 110 0 12 1 6 1 2 4 8 16 32 -168 -100 120 0 12 1 6 1 2 4 8 16 32 -169 -130 90 0 8 1 6 1 2 4 8 16 32 -170 -130 110 0 8 1 6 1 2 4 8 16 32 -171 -130 130 0 8 1 6 1 2 4 8 16 32 -172 -110 90 0 8 1 6 1 2 4 8 16 32 -173 -110 130 0 8 1 6 1 2 4 8 16 32 -174 -90 90 0 8 1 6 1 2 4 8 16 32 -175 -90 110 0 8 1 6 1 2 4 8 16 32 -176 -90 130 0 8 1 6 1 2 4 8 16 32 -177 -140 80 0 4 1 6 1 2 4 8 16 32 -178 -140 110 0 4 1 6 1 2 4 8 16 32 -179 -140 140 0 4 1 6 1 2 4 8 16 32 -180 -110 80 0 4 1 6 1 2 4 8 16 32 -181 -110 140 0 4 1 6 1 2 4 8 16 32 -182 -80 80 0 4 1 6 1 2 4 8 16 32 -183 -80 110 0 4 1 6 1 2 4 8 16 32 -184 -80 140 0 4 1 6 1 2 4 8 16 32 -185 -150 70 0 2 1 6 1 2 4 8 16 32 -186 -150 110 0 2 1 6 1 2 4 8 16 32 -187 -150 150 0 2 1 6 1 2 4 8 16 32 -188 -110 70 0 2 1 6 1 2 4 8 16 32 -189 -110 150 0 2 1 6 1 2 4 8 16 32 -190 -70 70 0 2 1 6 1 2 4 8 16 32 -191 -70 110 0 2 1 6 1 2 4 8 16 32 -192 -70 150 0 2 1 6 1 2 4 8 16 32 -193 -160 60 0 1 1 6 1 2 4 8 16 32 -194 -160 110 0 1 1 6 1 2 4 8 16 32 -195 -160 160 0 1 1 6 1 2 4 8 16 32 -196 -110 60 0 1 1 6 1 2 4 8 16 32 -197 -110 160 0 1 1 6 1 2 4 8 16 32 -198 -60 60 0 1 1 6 1 2 4 8 16 32 -199 -60 110 0 1 1 6 1 2 4 8 16 32 -200 -60 160 0 1 1 6 1 2 4 8 16 32 -201 -120 -10 0 12 1 6 1 2 4 8 16 32 -202 -120 0 0 12 1 6 1 2 4 8 16 32 -203 -120 10 0 12 1 6 1 2 4 8 16 32 -204 -110 -10 0 12 1 6 1 2 4 8 16 32 -205 -110 10 0 12 1 6 1 2 4 8 16 32 -206 -100 -10 0 12 1 6 1 2 4 8 16 32 -207 -100 0 0 12 1 6 1 2 4 8 16 32 -208 -100 10 0 12 1 6 1 2 4 8 16 32 -209 -130 -20 0 8 1 6 1 2 4 8 16 32 -210 -130 0 0 8 1 6 1 2 4 8 16 32 -211 -130 20 0 8 1 6 1 2 4 8 16 32 -212 -110 -20 0 8 1 6 1 2 4 8 16 32 -213 -110 20 0 8 1 6 1 2 4 8 16 32 -214 -90 -20 0 8 1 6 1 2 4 8 16 32 -215 -90 0 0 8 1 6 1 2 4 8 16 32 -216 -90 20 0 8 1 6 1 2 4 8 16 32 -217 -140 -30 0 4 1 6 1 2 4 8 16 32 -218 -140 0 0 4 1 6 1 2 4 8 16 32 -219 -140 30 0 4 1 6 1 2 4 8 16 32 -220 -110 -30 0 4 1 6 1 2 4 8 16 32 -221 -110 30 0 4 1 6 1 2 4 8 16 32 -222 -80 -30 0 4 1 6 1 2 4 8 16 32 -223 -80 0 0 4 1 6 1 2 4 8 16 32 -224 -80 30 0 4 1 6 1 2 4 8 16 32 -225 -150 -40 0 2 1 6 1 2 4 8 16 32 -226 -150 0 0 2 1 6 1 2 4 8 16 32 -227 -150 40 0 2 1 6 1 2 4 8 16 32 -228 -110 -40 0 2 1 6 1 2 4 8 16 32 -229 -110 40 0 2 1 6 1 2 4 8 16 32 -230 -70 -40 0 2 1 6 1 2 4 8 16 32 -231 -70 0 0 2 1 6 1 2 4 8 16 32 -232 -70 40 0 2 1 6 1 2 4 8 16 32 -233 -160 -50 0 1 1 6 1 2 4 8 16 32 -234 -160 0 0 1 1 6 1 2 4 8 16 32 -235 -160 50 0 1 1 6 1 2 4 8 16 32 -236 -110 -50 0 1 1 6 1 2 4 8 16 32 -237 -110 50 0 1 1 6 1 2 4 8 16 32 -238 -60 -50 0 1 1 6 1 2 4 8 16 32 -239 -60 0 0 1 1 6 1 2 4 8 16 32 -240 -60 50 0 1 1 6 1 2 4 8 16 32 -241 0 0 0 0 0 0 -242 110 0 0 0 0 0 -243 110 110 0 0 0 0 -244 0 110 0 0 0 0 -245 -110 110 0 0 0 0 -246 -110 0 0 0 0 0 diff --git a/jsprit-instances/instances/cordeau/p18.res b/jsprit-instances/instances/cordeau/p18.res deleted file mode 100644 index 60aee390e..000000000 --- a/jsprit-instances/instances/cordeau/p18.res +++ /dev/null @@ -1,25 +0,0 @@ -3702.85 -1 1 188.93 55 0 6 14 22 30 73 38 36 28 20 12 4 0 -1 2 60.00 60 0 2 3 5 8 7 0 -1 3 221.42 60 0 10 18 26 34 239 231 214 222 230 238 33 25 17 9 1 0 -2 1 233.14 60 0 56 64 72 80 118 110 102 94 92 100 108 116 77 69 61 53 0 -2 2 147.80 53 0 41 49 57 65 76 68 60 52 44 0 -2 3 54.14 48 0 42 43 45 48 0 -2 4 170.71 54 0 47 55 63 71 79 78 70 62 54 46 0 -2 5 233.14 60 0 50 58 66 74 39 31 23 15 16 24 32 40 75 67 59 51 0 -3 1 54.14 48 0 86 84 81 82 0 -3 2 170.71 54 0 88 96 104 112 120 119 111 103 95 87 0 -3 3 188.93 55 0 83 91 99 107 160 115 117 109 101 93 85 0 -4 1 233.14 60 0 135 143 151 159 114 106 98 90 89 97 105 113 158 150 142 134 0 -4 2 147.80 53 0 128 136 144 152 157 149 141 133 125 0 -4 3 60.00 60 0 127 126 124 121 122 0 -4 4 233.14 60 0 132 140 148 156 37 29 21 13 11 19 27 35 153 145 137 129 0 -4 5 221.42 60 0 130 138 146 154 199 191 176 184 192 200 155 147 139 131 123 0 - -5 1 86.50 60 0 167 168 175 183 166 164 0 -5 2 188.93 55 0 161 169 177 185 235 193 194 186 178 170 162 0 -5 3 170.71 54 0 163 171 179 187 195 197 189 181 173 165 0 -6 1 233.14 60 0 213 221 229 237 196 188 180 172 174 182 190 198 240 232 224 216 0 -6 2 170.71 54 0 201 209 217 225 233 236 228 220 212 204 0 -6 3 147.80 53 0 203 211 219 227 234 226 218 210 202 0 -6 4 86.50 60 0 207 206 223 215 208 205 0 diff --git a/jsprit-instances/instances/cordeau/p19 b/jsprit-instances/instances/cordeau/p19 deleted file mode 100644 index 900438062..000000000 --- a/jsprit-instances/instances/cordeau/p19 +++ /dev/null @@ -1,253 +0,0 @@ -2 5 240 6 -200 60 -200 60 -200 60 -200 60 -200 60 -200 60 - 1 -10 -10 0 12 1 6 1 2 4 8 16 32 - 2 -10 0 0 12 1 6 1 2 4 8 16 32 - 3 -10 10 0 12 1 6 1 2 4 8 16 32 - 4 0 -10 0 12 1 6 1 2 4 8 16 32 - 5 0 10 0 12 1 6 1 2 4 8 16 32 - 6 10 -10 0 12 1 6 1 2 4 8 16 32 - 7 10 0 0 12 1 6 1 2 4 8 16 32 - 8 10 10 0 12 1 6 1 2 4 8 16 32 - 9 -20 -20 0 8 1 6 1 2 4 8 16 32 - 10 -20 0 0 8 1 6 1 2 4 8 16 32 - 11 -20 20 0 8 1 6 1 2 4 8 16 32 - 12 0 -20 0 8 1 6 1 2 4 8 16 32 - 13 0 20 0 8 1 6 1 2 4 8 16 32 - 14 20 -20 0 8 1 6 1 2 4 8 16 32 - 15 20 0 0 8 1 6 1 2 4 8 16 32 - 16 20 20 0 8 1 6 1 2 4 8 16 32 - 17 -30 -30 0 4 1 6 1 2 4 8 16 32 - 18 -30 0 0 4 1 6 1 2 4 8 16 32 - 19 -30 30 0 4 1 6 1 2 4 8 16 32 - 20 0 -30 0 4 1 6 1 2 4 8 16 32 - 21 0 30 0 4 1 6 1 2 4 8 16 32 - 22 30 -30 0 4 1 6 1 2 4 8 16 32 - 23 30 0 0 4 1 6 1 2 4 8 16 32 - 24 30 30 0 4 1 6 1 2 4 8 16 32 - 25 -40 -40 0 2 1 6 1 2 4 8 16 32 - 26 -40 0 0 2 1 6 1 2 4 8 16 32 - 27 -40 40 0 2 1 6 1 2 4 8 16 32 - 28 0 -40 0 2 1 6 1 2 4 8 16 32 - 29 0 40 0 2 1 6 1 2 4 8 16 32 - 30 40 -40 0 2 1 6 1 2 4 8 16 32 - 31 40 0 0 2 1 6 1 2 4 8 16 32 - 32 40 40 0 2 1 6 1 2 4 8 16 32 - 33 -50 -50 0 1 1 6 1 2 4 8 16 32 - 34 -50 0 0 1 1 6 1 2 4 8 16 32 - 35 -50 50 0 1 1 6 1 2 4 8 16 32 - 36 0 -50 0 1 1 6 1 2 4 8 16 32 - 37 0 50 0 1 1 6 1 2 4 8 16 32 - 38 50 -50 0 1 1 6 1 2 4 8 16 32 - 39 50 0 0 1 1 6 1 2 4 8 16 32 - 40 50 50 0 1 1 6 1 2 4 8 16 32 - 41 100 -10 0 12 1 6 1 2 4 8 16 32 - 42 100 0 0 12 1 6 1 2 4 8 16 32 - 43 100 10 0 12 1 6 1 2 4 8 16 32 - 44 110 -10 0 12 1 6 1 2 4 8 16 32 - 45 110 10 0 12 1 6 1 2 4 8 16 32 - 46 120 -10 0 12 1 6 1 2 4 8 16 32 - 47 120 0 0 12 1 6 1 2 4 8 16 32 - 48 120 10 0 12 1 6 1 2 4 8 16 32 - 49 90 -20 0 8 1 6 1 2 4 8 16 32 - 50 90 0 0 8 1 6 1 2 4 8 16 32 - 51 90 20 0 8 1 6 1 2 4 8 16 32 - 52 110 -20 0 8 1 6 1 2 4 8 16 32 - 53 110 20 0 8 1 6 1 2 4 8 16 32 - 54 130 -20 0 8 1 6 1 2 4 8 16 32 - 55 130 0 0 8 1 6 1 2 4 8 16 32 - 56 130 20 0 8 1 6 1 2 4 8 16 32 - 57 80 -30 0 4 1 6 1 2 4 8 16 32 - 58 80 0 0 4 1 6 1 2 4 8 16 32 - 59 80 30 0 4 1 6 1 2 4 8 16 32 - 60 110 -30 0 4 1 6 1 2 4 8 16 32 - 61 110 30 0 4 1 6 1 2 4 8 16 32 - 62 140 -30 0 4 1 6 1 2 4 8 16 32 - 63 140 0 0 4 1 6 1 2 4 8 16 32 - 64 140 30 0 4 1 6 1 2 4 8 16 32 - 65 70 -40 0 2 1 6 1 2 4 8 16 32 - 66 70 0 0 2 1 6 1 2 4 8 16 32 - 67 70 40 0 2 1 6 1 2 4 8 16 32 - 68 110 -40 0 2 1 6 1 2 4 8 16 32 - 69 110 40 0 2 1 6 1 2 4 8 16 32 - 70 150 -40 0 2 1 6 1 2 4 8 16 32 - 71 150 0 0 2 1 6 1 2 4 8 16 32 - 72 150 40 0 2 1 6 1 2 4 8 16 32 - 73 60 -50 0 1 1 6 1 2 4 8 16 32 - 74 60 0 0 1 1 6 1 2 4 8 16 32 - 75 60 50 0 1 1 6 1 2 4 8 16 32 - 76 110 -50 0 1 1 6 1 2 4 8 16 32 - 77 110 50 0 1 1 6 1 2 4 8 16 32 - 78 160 -50 0 1 1 6 1 2 4 8 16 32 - 79 160 0 0 1 1 6 1 2 4 8 16 32 - 80 160 50 0 1 1 6 1 2 4 8 16 32 - 81 100 100 0 12 1 6 1 2 4 8 16 32 - 82 100 110 0 12 1 6 1 2 4 8 16 32 - 83 100 120 0 12 1 6 1 2 4 8 16 32 - 84 110 100 0 12 1 6 1 2 4 8 16 32 - 85 110 120 0 12 1 6 1 2 4 8 16 32 - 86 120 100 0 12 1 6 1 2 4 8 16 32 - 87 120 110 0 12 1 6 1 2 4 8 16 32 - 88 120 120 0 12 1 6 1 2 4 8 16 32 - 89 90 90 0 8 1 6 1 2 4 8 16 32 - 90 90 110 0 8 1 6 1 2 4 8 16 32 - 91 90 130 0 8 1 6 1 2 4 8 16 32 - 92 110 90 0 8 1 6 1 2 4 8 16 32 - 93 110 130 0 8 1 6 1 2 4 8 16 32 - 94 130 90 0 8 1 6 1 2 4 8 16 32 - 95 130 110 0 8 1 6 1 2 4 8 16 32 - 96 130 130 0 8 1 6 1 2 4 8 16 32 - 97 80 80 0 4 1 6 1 2 4 8 16 32 - 98 80 110 0 4 1 6 1 2 4 8 16 32 - 99 80 140 0 4 1 6 1 2 4 8 16 32 -100 110 80 0 4 1 6 1 2 4 8 16 32 -101 110 140 0 4 1 6 1 2 4 8 16 32 -102 140 80 0 4 1 6 1 2 4 8 16 32 -103 140 110 0 4 1 6 1 2 4 8 16 32 -104 140 140 0 4 1 6 1 2 4 8 16 32 -105 70 70 0 2 1 6 1 2 4 8 16 32 -106 70 110 0 2 1 6 1 2 4 8 16 32 -107 70 150 0 2 1 6 1 2 4 8 16 32 -108 110 70 0 2 1 6 1 2 4 8 16 32 -109 110 150 0 2 1 6 1 2 4 8 16 32 -110 150 70 0 2 1 6 1 2 4 8 16 32 -111 150 110 0 2 1 6 1 2 4 8 16 32 -112 150 150 0 2 1 6 1 2 4 8 16 32 -113 60 60 0 1 1 6 1 2 4 8 16 32 -114 60 110 0 1 1 6 1 2 4 8 16 32 -115 60 160 0 1 1 6 1 2 4 8 16 32 -116 110 60 0 1 1 6 1 2 4 8 16 32 -117 110 160 0 1 1 6 1 2 4 8 16 32 -118 160 60 0 1 1 6 1 2 4 8 16 32 -119 160 110 0 1 1 6 1 2 4 8 16 32 -120 160 160 0 1 1 6 1 2 4 8 16 32 -121 -10 100 0 12 1 6 1 2 4 8 16 32 -122 -10 110 0 12 1 6 1 2 4 8 16 32 -123 -10 120 0 12 1 6 1 2 4 8 16 32 -124 0 100 0 12 1 6 1 2 4 8 16 32 -125 0 120 0 12 1 6 1 2 4 8 16 32 -126 10 100 0 12 1 6 1 2 4 8 16 32 -127 10 110 0 12 1 6 1 2 4 8 16 32 -128 10 120 0 12 1 6 1 2 4 8 16 32 -129 -20 90 0 8 1 6 1 2 4 8 16 32 -130 -20 110 0 8 1 6 1 2 4 8 16 32 -131 -20 130 0 8 1 6 1 2 4 8 16 32 -132 0 90 0 8 1 6 1 2 4 8 16 32 -133 0 130 0 8 1 6 1 2 4 8 16 32 -134 20 90 0 8 1 6 1 2 4 8 16 32 -135 20 110 0 8 1 6 1 2 4 8 16 32 -136 20 130 0 8 1 6 1 2 4 8 16 32 -137 -30 80 0 4 1 6 1 2 4 8 16 32 -138 -30 110 0 4 1 6 1 2 4 8 16 32 -139 -30 140 0 4 1 6 1 2 4 8 16 32 -140 0 80 0 4 1 6 1 2 4 8 16 32 -141 0 140 0 4 1 6 1 2 4 8 16 32 -142 30 80 0 4 1 6 1 2 4 8 16 32 -143 30 110 0 4 1 6 1 2 4 8 16 32 -144 30 140 0 4 1 6 1 2 4 8 16 32 -145 -40 70 0 2 1 6 1 2 4 8 16 32 -146 -40 110 0 2 1 6 1 2 4 8 16 32 -147 -40 150 0 2 1 6 1 2 4 8 16 32 -148 0 70 0 2 1 6 1 2 4 8 16 32 -149 0 150 0 2 1 6 1 2 4 8 16 32 -150 40 70 0 2 1 6 1 2 4 8 16 32 -151 40 110 0 2 1 6 1 2 4 8 16 32 -152 40 150 0 2 1 6 1 2 4 8 16 32 -153 -50 60 0 1 1 6 1 2 4 8 16 32 -154 -50 110 0 1 1 6 1 2 4 8 16 32 -155 -50 160 0 1 1 6 1 2 4 8 16 32 -156 0 60 0 1 1 6 1 2 4 8 16 32 -157 0 160 0 1 1 6 1 2 4 8 16 32 -158 50 60 0 1 1 6 1 2 4 8 16 32 -159 50 110 0 1 1 6 1 2 4 8 16 32 -160 50 160 0 1 1 6 1 2 4 8 16 32 -161 -120 100 0 12 1 6 1 2 4 8 16 32 -162 -120 110 0 12 1 6 1 2 4 8 16 32 -163 -120 120 0 12 1 6 1 2 4 8 16 32 -164 -110 100 0 12 1 6 1 2 4 8 16 32 -165 -110 120 0 12 1 6 1 2 4 8 16 32 -166 -100 100 0 12 1 6 1 2 4 8 16 32 -167 -100 110 0 12 1 6 1 2 4 8 16 32 -168 -100 120 0 12 1 6 1 2 4 8 16 32 -169 -130 90 0 8 1 6 1 2 4 8 16 32 -170 -130 110 0 8 1 6 1 2 4 8 16 32 -171 -130 130 0 8 1 6 1 2 4 8 16 32 -172 -110 90 0 8 1 6 1 2 4 8 16 32 -173 -110 130 0 8 1 6 1 2 4 8 16 32 -174 -90 90 0 8 1 6 1 2 4 8 16 32 -175 -90 110 0 8 1 6 1 2 4 8 16 32 -176 -90 130 0 8 1 6 1 2 4 8 16 32 -177 -140 80 0 4 1 6 1 2 4 8 16 32 -178 -140 110 0 4 1 6 1 2 4 8 16 32 -179 -140 140 0 4 1 6 1 2 4 8 16 32 -180 -110 80 0 4 1 6 1 2 4 8 16 32 -181 -110 140 0 4 1 6 1 2 4 8 16 32 -182 -80 80 0 4 1 6 1 2 4 8 16 32 -183 -80 110 0 4 1 6 1 2 4 8 16 32 -184 -80 140 0 4 1 6 1 2 4 8 16 32 -185 -150 70 0 2 1 6 1 2 4 8 16 32 -186 -150 110 0 2 1 6 1 2 4 8 16 32 -187 -150 150 0 2 1 6 1 2 4 8 16 32 -188 -110 70 0 2 1 6 1 2 4 8 16 32 -189 -110 150 0 2 1 6 1 2 4 8 16 32 -190 -70 70 0 2 1 6 1 2 4 8 16 32 -191 -70 110 0 2 1 6 1 2 4 8 16 32 -192 -70 150 0 2 1 6 1 2 4 8 16 32 -193 -160 60 0 1 1 6 1 2 4 8 16 32 -194 -160 110 0 1 1 6 1 2 4 8 16 32 -195 -160 160 0 1 1 6 1 2 4 8 16 32 -196 -110 60 0 1 1 6 1 2 4 8 16 32 -197 -110 160 0 1 1 6 1 2 4 8 16 32 -198 -60 60 0 1 1 6 1 2 4 8 16 32 -199 -60 110 0 1 1 6 1 2 4 8 16 32 -200 -60 160 0 1 1 6 1 2 4 8 16 32 -201 -120 -10 0 12 1 6 1 2 4 8 16 32 -202 -120 0 0 12 1 6 1 2 4 8 16 32 -203 -120 10 0 12 1 6 1 2 4 8 16 32 -204 -110 -10 0 12 1 6 1 2 4 8 16 32 -205 -110 10 0 12 1 6 1 2 4 8 16 32 -206 -100 -10 0 12 1 6 1 2 4 8 16 32 -207 -100 0 0 12 1 6 1 2 4 8 16 32 -208 -100 10 0 12 1 6 1 2 4 8 16 32 -209 -130 -20 0 8 1 6 1 2 4 8 16 32 -210 -130 0 0 8 1 6 1 2 4 8 16 32 -211 -130 20 0 8 1 6 1 2 4 8 16 32 -212 -110 -20 0 8 1 6 1 2 4 8 16 32 -213 -110 20 0 8 1 6 1 2 4 8 16 32 -214 -90 -20 0 8 1 6 1 2 4 8 16 32 -215 -90 0 0 8 1 6 1 2 4 8 16 32 -216 -90 20 0 8 1 6 1 2 4 8 16 32 -217 -140 -30 0 4 1 6 1 2 4 8 16 32 -218 -140 0 0 4 1 6 1 2 4 8 16 32 -219 -140 30 0 4 1 6 1 2 4 8 16 32 -220 -110 -30 0 4 1 6 1 2 4 8 16 32 -221 -110 30 0 4 1 6 1 2 4 8 16 32 -222 -80 -30 0 4 1 6 1 2 4 8 16 32 -223 -80 0 0 4 1 6 1 2 4 8 16 32 -224 -80 30 0 4 1 6 1 2 4 8 16 32 -225 -150 -40 0 2 1 6 1 2 4 8 16 32 -226 -150 0 0 2 1 6 1 2 4 8 16 32 -227 -150 40 0 2 1 6 1 2 4 8 16 32 -228 -110 -40 0 2 1 6 1 2 4 8 16 32 -229 -110 40 0 2 1 6 1 2 4 8 16 32 -230 -70 -40 0 2 1 6 1 2 4 8 16 32 -231 -70 0 0 2 1 6 1 2 4 8 16 32 -232 -70 40 0 2 1 6 1 2 4 8 16 32 -233 -160 -50 0 1 1 6 1 2 4 8 16 32 -234 -160 0 0 1 1 6 1 2 4 8 16 32 -235 -160 50 0 1 1 6 1 2 4 8 16 32 -236 -110 -50 0 1 1 6 1 2 4 8 16 32 -237 -110 50 0 1 1 6 1 2 4 8 16 32 -238 -60 -50 0 1 1 6 1 2 4 8 16 32 -239 -60 0 0 1 1 6 1 2 4 8 16 32 -240 -60 50 0 1 1 6 1 2 4 8 16 32 -241 0 0 0 0 0 0 -242 110 0 0 0 0 0 -243 110 110 0 0 0 0 -244 0 110 0 0 0 0 -245 -110 110 0 0 0 0 -246 -110 0 0 0 0 0 diff --git a/jsprit-instances/instances/cordeau/p19.res b/jsprit-instances/instances/cordeau/p19.res deleted file mode 100644 index 2de5f0797..000000000 --- a/jsprit-instances/instances/cordeau/p19.res +++ /dev/null @@ -1,25 +0,0 @@ -3827.06 -1 1 196.08 58 0 3 11 19 27 35 153 145 156 37 29 21 13 5 0 -1 2 196.08 58 0 2 10 18 26 34 239 230 238 33 25 17 9 1 0 -1 3 128.48 51 0 6 14 22 36 28 20 12 4 0 -1 4 96.57 46 0 8 16 31 23 15 7 0 -2 1 170.71 54 0 46 54 62 70 78 76 68 60 52 44 0 -2 2 128.48 51 0 48 56 64 79 71 63 55 47 0 -2 3 198.99 60 0 43 51 59 67 75 113 105 97 69 61 53 45 0 -2 4 196.08 58 0 42 50 58 66 74 39 30 38 73 65 57 49 41 0 -3 1 170.71 54 0 88 96 104 112 120 119 111 103 95 87 0 -3 2 128.48 51 0 85 93 101 109 117 99 91 83 0 -3 3 96.57 46 0 82 90 98 106 89 81 0 -3 4 196.08 58 0 84 92 100 108 116 77 72 80 118 110 102 94 86 0 -4 1 196.08 58 0 127 135 143 151 159 114 107 115 160 152 144 136 128 0 -4 2 128.48 51 0 123 131 139 157 149 141 133 125 0 -4 3 114.05 50 0 121 129 137 146 138 130 122 0 -4 4 198.99 60 0 126 134 142 150 158 40 32 24 148 140 132 124 0 -5 1 196.08 58 0 167 175 183 191 199 154 147 155 200 192 184 176 168 0 -5 2 170.71 54 0 163 171 179 187 195 197 189 181 173 165 0 -5 3 128.48 51 0 161 169 177 194 186 178 170 162 0 -5 4 198.99 60 0 166 174 182 190 198 240 232 224 188 180 172 164 0 -6 1 170.71 54 0 201 209 217 225 233 234 226 218 210 202 0 -6 2 128.48 51 0 206 214 222 236 228 220 212 204 0 -6 3 96.57 46 0 208 216 231 223 215 207 0 -6 4 196.08 58 0 203 211 219 227 235 193 185 196 237 229 221 213 205 0 diff --git a/jsprit-instances/instances/cordeau/p20 b/jsprit-instances/instances/cordeau/p20 deleted file mode 100644 index 2b0df10e1..000000000 --- a/jsprit-instances/instances/cordeau/p20 +++ /dev/null @@ -1,253 +0,0 @@ -2 5 240 6 -180 60 -180 60 -180 60 -180 60 -180 60 -180 60 - 1 -10 -10 0 12 1 6 1 2 4 8 16 32 - 2 -10 0 0 12 1 6 1 2 4 8 16 32 - 3 -10 10 0 12 1 6 1 2 4 8 16 32 - 4 0 -10 0 12 1 6 1 2 4 8 16 32 - 5 0 10 0 12 1 6 1 2 4 8 16 32 - 6 10 -10 0 12 1 6 1 2 4 8 16 32 - 7 10 0 0 12 1 6 1 2 4 8 16 32 - 8 10 10 0 12 1 6 1 2 4 8 16 32 - 9 -20 -20 0 8 1 6 1 2 4 8 16 32 - 10 -20 0 0 8 1 6 1 2 4 8 16 32 - 11 -20 20 0 8 1 6 1 2 4 8 16 32 - 12 0 -20 0 8 1 6 1 2 4 8 16 32 - 13 0 20 0 8 1 6 1 2 4 8 16 32 - 14 20 -20 0 8 1 6 1 2 4 8 16 32 - 15 20 0 0 8 1 6 1 2 4 8 16 32 - 16 20 20 0 8 1 6 1 2 4 8 16 32 - 17 -30 -30 0 4 1 6 1 2 4 8 16 32 - 18 -30 0 0 4 1 6 1 2 4 8 16 32 - 19 -30 30 0 4 1 6 1 2 4 8 16 32 - 20 0 -30 0 4 1 6 1 2 4 8 16 32 - 21 0 30 0 4 1 6 1 2 4 8 16 32 - 22 30 -30 0 4 1 6 1 2 4 8 16 32 - 23 30 0 0 4 1 6 1 2 4 8 16 32 - 24 30 30 0 4 1 6 1 2 4 8 16 32 - 25 -40 -40 0 2 1 6 1 2 4 8 16 32 - 26 -40 0 0 2 1 6 1 2 4 8 16 32 - 27 -40 40 0 2 1 6 1 2 4 8 16 32 - 28 0 -40 0 2 1 6 1 2 4 8 16 32 - 29 0 40 0 2 1 6 1 2 4 8 16 32 - 30 40 -40 0 2 1 6 1 2 4 8 16 32 - 31 40 0 0 2 1 6 1 2 4 8 16 32 - 32 40 40 0 2 1 6 1 2 4 8 16 32 - 33 -50 -50 0 1 1 6 1 2 4 8 16 32 - 34 -50 0 0 1 1 6 1 2 4 8 16 32 - 35 -50 50 0 1 1 6 1 2 4 8 16 32 - 36 0 -50 0 1 1 6 1 2 4 8 16 32 - 37 0 50 0 1 1 6 1 2 4 8 16 32 - 38 50 -50 0 1 1 6 1 2 4 8 16 32 - 39 50 0 0 1 1 6 1 2 4 8 16 32 - 40 50 50 0 1 1 6 1 2 4 8 16 32 - 41 100 -10 0 12 1 6 1 2 4 8 16 32 - 42 100 0 0 12 1 6 1 2 4 8 16 32 - 43 100 10 0 12 1 6 1 2 4 8 16 32 - 44 110 -10 0 12 1 6 1 2 4 8 16 32 - 45 110 10 0 12 1 6 1 2 4 8 16 32 - 46 120 -10 0 12 1 6 1 2 4 8 16 32 - 47 120 0 0 12 1 6 1 2 4 8 16 32 - 48 120 10 0 12 1 6 1 2 4 8 16 32 - 49 90 -20 0 8 1 6 1 2 4 8 16 32 - 50 90 0 0 8 1 6 1 2 4 8 16 32 - 51 90 20 0 8 1 6 1 2 4 8 16 32 - 52 110 -20 0 8 1 6 1 2 4 8 16 32 - 53 110 20 0 8 1 6 1 2 4 8 16 32 - 54 130 -20 0 8 1 6 1 2 4 8 16 32 - 55 130 0 0 8 1 6 1 2 4 8 16 32 - 56 130 20 0 8 1 6 1 2 4 8 16 32 - 57 80 -30 0 4 1 6 1 2 4 8 16 32 - 58 80 0 0 4 1 6 1 2 4 8 16 32 - 59 80 30 0 4 1 6 1 2 4 8 16 32 - 60 110 -30 0 4 1 6 1 2 4 8 16 32 - 61 110 30 0 4 1 6 1 2 4 8 16 32 - 62 140 -30 0 4 1 6 1 2 4 8 16 32 - 63 140 0 0 4 1 6 1 2 4 8 16 32 - 64 140 30 0 4 1 6 1 2 4 8 16 32 - 65 70 -40 0 2 1 6 1 2 4 8 16 32 - 66 70 0 0 2 1 6 1 2 4 8 16 32 - 67 70 40 0 2 1 6 1 2 4 8 16 32 - 68 110 -40 0 2 1 6 1 2 4 8 16 32 - 69 110 40 0 2 1 6 1 2 4 8 16 32 - 70 150 -40 0 2 1 6 1 2 4 8 16 32 - 71 150 0 0 2 1 6 1 2 4 8 16 32 - 72 150 40 0 2 1 6 1 2 4 8 16 32 - 73 60 -50 0 1 1 6 1 2 4 8 16 32 - 74 60 0 0 1 1 6 1 2 4 8 16 32 - 75 60 50 0 1 1 6 1 2 4 8 16 32 - 76 110 -50 0 1 1 6 1 2 4 8 16 32 - 77 110 50 0 1 1 6 1 2 4 8 16 32 - 78 160 -50 0 1 1 6 1 2 4 8 16 32 - 79 160 0 0 1 1 6 1 2 4 8 16 32 - 80 160 50 0 1 1 6 1 2 4 8 16 32 - 81 100 100 0 12 1 6 1 2 4 8 16 32 - 82 100 110 0 12 1 6 1 2 4 8 16 32 - 83 100 120 0 12 1 6 1 2 4 8 16 32 - 84 110 100 0 12 1 6 1 2 4 8 16 32 - 85 110 120 0 12 1 6 1 2 4 8 16 32 - 86 120 100 0 12 1 6 1 2 4 8 16 32 - 87 120 110 0 12 1 6 1 2 4 8 16 32 - 88 120 120 0 12 1 6 1 2 4 8 16 32 - 89 90 90 0 8 1 6 1 2 4 8 16 32 - 90 90 110 0 8 1 6 1 2 4 8 16 32 - 91 90 130 0 8 1 6 1 2 4 8 16 32 - 92 110 90 0 8 1 6 1 2 4 8 16 32 - 93 110 130 0 8 1 6 1 2 4 8 16 32 - 94 130 90 0 8 1 6 1 2 4 8 16 32 - 95 130 110 0 8 1 6 1 2 4 8 16 32 - 96 130 130 0 8 1 6 1 2 4 8 16 32 - 97 80 80 0 4 1 6 1 2 4 8 16 32 - 98 80 110 0 4 1 6 1 2 4 8 16 32 - 99 80 140 0 4 1 6 1 2 4 8 16 32 -100 110 80 0 4 1 6 1 2 4 8 16 32 -101 110 140 0 4 1 6 1 2 4 8 16 32 -102 140 80 0 4 1 6 1 2 4 8 16 32 -103 140 110 0 4 1 6 1 2 4 8 16 32 -104 140 140 0 4 1 6 1 2 4 8 16 32 -105 70 70 0 2 1 6 1 2 4 8 16 32 -106 70 110 0 2 1 6 1 2 4 8 16 32 -107 70 150 0 2 1 6 1 2 4 8 16 32 -108 110 70 0 2 1 6 1 2 4 8 16 32 -109 110 150 0 2 1 6 1 2 4 8 16 32 -110 150 70 0 2 1 6 1 2 4 8 16 32 -111 150 110 0 2 1 6 1 2 4 8 16 32 -112 150 150 0 2 1 6 1 2 4 8 16 32 -113 60 60 0 1 1 6 1 2 4 8 16 32 -114 60 110 0 1 1 6 1 2 4 8 16 32 -115 60 160 0 1 1 6 1 2 4 8 16 32 -116 110 60 0 1 1 6 1 2 4 8 16 32 -117 110 160 0 1 1 6 1 2 4 8 16 32 -118 160 60 0 1 1 6 1 2 4 8 16 32 -119 160 110 0 1 1 6 1 2 4 8 16 32 -120 160 160 0 1 1 6 1 2 4 8 16 32 -121 -10 100 0 12 1 6 1 2 4 8 16 32 -122 -10 110 0 12 1 6 1 2 4 8 16 32 -123 -10 120 0 12 1 6 1 2 4 8 16 32 -124 0 100 0 12 1 6 1 2 4 8 16 32 -125 0 120 0 12 1 6 1 2 4 8 16 32 -126 10 100 0 12 1 6 1 2 4 8 16 32 -127 10 110 0 12 1 6 1 2 4 8 16 32 -128 10 120 0 12 1 6 1 2 4 8 16 32 -129 -20 90 0 8 1 6 1 2 4 8 16 32 -130 -20 110 0 8 1 6 1 2 4 8 16 32 -131 -20 130 0 8 1 6 1 2 4 8 16 32 -132 0 90 0 8 1 6 1 2 4 8 16 32 -133 0 130 0 8 1 6 1 2 4 8 16 32 -134 20 90 0 8 1 6 1 2 4 8 16 32 -135 20 110 0 8 1 6 1 2 4 8 16 32 -136 20 130 0 8 1 6 1 2 4 8 16 32 -137 -30 80 0 4 1 6 1 2 4 8 16 32 -138 -30 110 0 4 1 6 1 2 4 8 16 32 -139 -30 140 0 4 1 6 1 2 4 8 16 32 -140 0 80 0 4 1 6 1 2 4 8 16 32 -141 0 140 0 4 1 6 1 2 4 8 16 32 -142 30 80 0 4 1 6 1 2 4 8 16 32 -143 30 110 0 4 1 6 1 2 4 8 16 32 -144 30 140 0 4 1 6 1 2 4 8 16 32 -145 -40 70 0 2 1 6 1 2 4 8 16 32 -146 -40 110 0 2 1 6 1 2 4 8 16 32 -147 -40 150 0 2 1 6 1 2 4 8 16 32 -148 0 70 0 2 1 6 1 2 4 8 16 32 -149 0 150 0 2 1 6 1 2 4 8 16 32 -150 40 70 0 2 1 6 1 2 4 8 16 32 -151 40 110 0 2 1 6 1 2 4 8 16 32 -152 40 150 0 2 1 6 1 2 4 8 16 32 -153 -50 60 0 1 1 6 1 2 4 8 16 32 -154 -50 110 0 1 1 6 1 2 4 8 16 32 -155 -50 160 0 1 1 6 1 2 4 8 16 32 -156 0 60 0 1 1 6 1 2 4 8 16 32 -157 0 160 0 1 1 6 1 2 4 8 16 32 -158 50 60 0 1 1 6 1 2 4 8 16 32 -159 50 110 0 1 1 6 1 2 4 8 16 32 -160 50 160 0 1 1 6 1 2 4 8 16 32 -161 -120 100 0 12 1 6 1 2 4 8 16 32 -162 -120 110 0 12 1 6 1 2 4 8 16 32 -163 -120 120 0 12 1 6 1 2 4 8 16 32 -164 -110 100 0 12 1 6 1 2 4 8 16 32 -165 -110 120 0 12 1 6 1 2 4 8 16 32 -166 -100 100 0 12 1 6 1 2 4 8 16 32 -167 -100 110 0 12 1 6 1 2 4 8 16 32 -168 -100 120 0 12 1 6 1 2 4 8 16 32 -169 -130 90 0 8 1 6 1 2 4 8 16 32 -170 -130 110 0 8 1 6 1 2 4 8 16 32 -171 -130 130 0 8 1 6 1 2 4 8 16 32 -172 -110 90 0 8 1 6 1 2 4 8 16 32 -173 -110 130 0 8 1 6 1 2 4 8 16 32 -174 -90 90 0 8 1 6 1 2 4 8 16 32 -175 -90 110 0 8 1 6 1 2 4 8 16 32 -176 -90 130 0 8 1 6 1 2 4 8 16 32 -177 -140 80 0 4 1 6 1 2 4 8 16 32 -178 -140 110 0 4 1 6 1 2 4 8 16 32 -179 -140 140 0 4 1 6 1 2 4 8 16 32 -180 -110 80 0 4 1 6 1 2 4 8 16 32 -181 -110 140 0 4 1 6 1 2 4 8 16 32 -182 -80 80 0 4 1 6 1 2 4 8 16 32 -183 -80 110 0 4 1 6 1 2 4 8 16 32 -184 -80 140 0 4 1 6 1 2 4 8 16 32 -185 -150 70 0 2 1 6 1 2 4 8 16 32 -186 -150 110 0 2 1 6 1 2 4 8 16 32 -187 -150 150 0 2 1 6 1 2 4 8 16 32 -188 -110 70 0 2 1 6 1 2 4 8 16 32 -189 -110 150 0 2 1 6 1 2 4 8 16 32 -190 -70 70 0 2 1 6 1 2 4 8 16 32 -191 -70 110 0 2 1 6 1 2 4 8 16 32 -192 -70 150 0 2 1 6 1 2 4 8 16 32 -193 -160 60 0 1 1 6 1 2 4 8 16 32 -194 -160 110 0 1 1 6 1 2 4 8 16 32 -195 -160 160 0 1 1 6 1 2 4 8 16 32 -196 -110 60 0 1 1 6 1 2 4 8 16 32 -197 -110 160 0 1 1 6 1 2 4 8 16 32 -198 -60 60 0 1 1 6 1 2 4 8 16 32 -199 -60 110 0 1 1 6 1 2 4 8 16 32 -200 -60 160 0 1 1 6 1 2 4 8 16 32 -201 -120 -10 0 12 1 6 1 2 4 8 16 32 -202 -120 0 0 12 1 6 1 2 4 8 16 32 -203 -120 10 0 12 1 6 1 2 4 8 16 32 -204 -110 -10 0 12 1 6 1 2 4 8 16 32 -205 -110 10 0 12 1 6 1 2 4 8 16 32 -206 -100 -10 0 12 1 6 1 2 4 8 16 32 -207 -100 0 0 12 1 6 1 2 4 8 16 32 -208 -100 10 0 12 1 6 1 2 4 8 16 32 -209 -130 -20 0 8 1 6 1 2 4 8 16 32 -210 -130 0 0 8 1 6 1 2 4 8 16 32 -211 -130 20 0 8 1 6 1 2 4 8 16 32 -212 -110 -20 0 8 1 6 1 2 4 8 16 32 -213 -110 20 0 8 1 6 1 2 4 8 16 32 -214 -90 -20 0 8 1 6 1 2 4 8 16 32 -215 -90 0 0 8 1 6 1 2 4 8 16 32 -216 -90 20 0 8 1 6 1 2 4 8 16 32 -217 -140 -30 0 4 1 6 1 2 4 8 16 32 -218 -140 0 0 4 1 6 1 2 4 8 16 32 -219 -140 30 0 4 1 6 1 2 4 8 16 32 -220 -110 -30 0 4 1 6 1 2 4 8 16 32 -221 -110 30 0 4 1 6 1 2 4 8 16 32 -222 -80 -30 0 4 1 6 1 2 4 8 16 32 -223 -80 0 0 4 1 6 1 2 4 8 16 32 -224 -80 30 0 4 1 6 1 2 4 8 16 32 -225 -150 -40 0 2 1 6 1 2 4 8 16 32 -226 -150 0 0 2 1 6 1 2 4 8 16 32 -227 -150 40 0 2 1 6 1 2 4 8 16 32 -228 -110 -40 0 2 1 6 1 2 4 8 16 32 -229 -110 40 0 2 1 6 1 2 4 8 16 32 -230 -70 -40 0 2 1 6 1 2 4 8 16 32 -231 -70 0 0 2 1 6 1 2 4 8 16 32 -232 -70 40 0 2 1 6 1 2 4 8 16 32 -233 -160 -50 0 1 1 6 1 2 4 8 16 32 -234 -160 0 0 1 1 6 1 2 4 8 16 32 -235 -160 50 0 1 1 6 1 2 4 8 16 32 -236 -110 -50 0 1 1 6 1 2 4 8 16 32 -237 -110 50 0 1 1 6 1 2 4 8 16 32 -238 -60 -50 0 1 1 6 1 2 4 8 16 32 -239 -60 0 0 1 1 6 1 2 4 8 16 32 -240 -60 50 0 1 1 6 1 2 4 8 16 32 -241 0 0 0 0 0 0 -242 110 0 0 0 0 0 -243 110 110 0 0 0 0 -244 0 110 0 0 0 0 -245 -110 110 0 0 0 0 -246 -110 0 0 0 0 0 diff --git a/jsprit-instances/instances/cordeau/p20.res b/jsprit-instances/instances/cordeau/p20.res deleted file mode 100644 index 3e2e41957..000000000 --- a/jsprit-instances/instances/cordeau/p20.res +++ /dev/null @@ -1,25 +0,0 @@ -4058.07 -1 1 161.29 54 0 1 9 17 25 239 34 26 18 10 2 0 -1 2 170.71 54 0 6 14 22 30 38 36 28 20 12 4 0 -1 3 161.29 54 0 8 16 24 32 74 39 31 23 15 7 0 -1 4 174.56 54 0 3 11 19 27 35 153 29 21 13 5 0 -2 1 174.56 54 0 48 56 64 72 80 118 69 61 53 45 0 -2 2 174.56 54 0 43 51 59 67 75 40 66 58 50 42 0 -2 3 170.71 54 0 41 49 57 65 73 76 68 60 52 44 0 -2 4 170.71 54 0 46 54 62 70 78 79 71 63 55 47 0 -3 1 161.29 54 0 86 94 102 110 77 116 108 100 92 84 0 -3 2 170.71 54 0 88 96 104 112 120 119 111 103 95 87 0 -3 3 170.71 54 0 83 91 99 107 115 117 109 101 93 85 0 -3 4 161.29 54 0 81 89 97 105 159 114 106 98 90 82 0 -4 1 161.29 54 0 123 131 139 147 199 154 146 138 130 122 0 -4 2 161.29 54 0 121 129 137 145 37 156 148 140 132 124 0 -4 3 174.56 54 0 126 134 142 150 158 113 151 143 135 127 0 -4 4 170.71 54 0 125 133 141 149 157 160 152 144 136 128 0 -5 1 170.71 54 0 163 171 179 187 195 197 189 181 173 165 0 -5 2 170.71 54 0 161 169 177 185 193 194 186 178 170 162 0 -5 3 161.29 54 0 166 174 182 190 237 196 188 180 172 164 0 -5 4 174.56 54 0 168 176 184 192 200 155 191 183 175 167 0 -6 1 170.71 54 0 203 211 219 227 235 234 226 218 210 202 0 -6 2 170.71 54 0 201 209 217 225 233 236 228 220 212 204 0 -6 3 174.56 54 0 206 214 222 230 238 33 231 223 215 207 0 -6 4 174.56 54 0 208 216 224 232 240 198 229 221 213 205 0 diff --git a/jsprit-instances/instances/cordeau/p21 b/jsprit-instances/instances/cordeau/p21 deleted file mode 100644 index 81eb78b6a..000000000 --- a/jsprit-instances/instances/cordeau/p21 +++ /dev/null @@ -1,379 +0,0 @@ -2 5 360 9 -0 60 -0 60 -0 60 -0 60 -0 60 -0 60 -0 60 -0 60 -0 60 - 1 -10 -10 0 12 1 9 1 2 4 8 16 32 64 128 256 - 2 -10 0 0 12 1 9 1 2 4 8 16 32 64 128 256 - 3 -10 10 0 12 1 9 1 2 4 8 16 32 64 128 256 - 4 0 -10 0 12 1 9 1 2 4 8 16 32 64 128 256 - 5 0 10 0 12 1 9 1 2 4 8 16 32 64 128 256 - 6 10 -10 0 12 1 9 1 2 4 8 16 32 64 128 256 - 7 10 0 0 12 1 9 1 2 4 8 16 32 64 128 256 - 8 10 10 0 12 1 9 1 2 4 8 16 32 64 128 256 - 9 -20 -20 0 8 1 9 1 2 4 8 16 32 64 128 256 - 10 -20 0 0 8 1 9 1 2 4 8 16 32 64 128 256 - 11 -20 20 0 8 1 9 1 2 4 8 16 32 64 128 256 - 12 0 -20 0 8 1 9 1 2 4 8 16 32 64 128 256 - 13 0 20 0 8 1 9 1 2 4 8 16 32 64 128 256 - 14 20 -20 0 8 1 9 1 2 4 8 16 32 64 128 256 - 15 20 0 0 8 1 9 1 2 4 8 16 32 64 128 256 - 16 20 20 0 8 1 9 1 2 4 8 16 32 64 128 256 - 17 -30 -30 0 4 1 9 1 2 4 8 16 32 64 128 256 - 18 -30 0 0 4 1 9 1 2 4 8 16 32 64 128 256 - 19 -30 30 0 4 1 9 1 2 4 8 16 32 64 128 256 - 20 0 -30 0 4 1 9 1 2 4 8 16 32 64 128 256 - 21 0 30 0 4 1 9 1 2 4 8 16 32 64 128 256 - 22 30 -30 0 4 1 9 1 2 4 8 16 32 64 128 256 - 23 30 0 0 4 1 9 1 2 4 8 16 32 64 128 256 - 24 30 30 0 4 1 9 1 2 4 8 16 32 64 128 256 - 25 -40 -40 0 2 1 9 1 2 4 8 16 32 64 128 256 - 26 -40 0 0 2 1 9 1 2 4 8 16 32 64 128 256 - 27 -40 40 0 2 1 9 1 2 4 8 16 32 64 128 256 - 28 0 -40 0 2 1 9 1 2 4 8 16 32 64 128 256 - 29 0 40 0 2 1 9 1 2 4 8 16 32 64 128 256 - 30 40 -40 0 2 1 9 1 2 4 8 16 32 64 128 256 - 31 40 0 0 2 1 9 1 2 4 8 16 32 64 128 256 - 32 40 40 0 2 1 9 1 2 4 8 16 32 64 128 256 - 33 -50 -50 0 1 1 9 1 2 4 8 16 32 64 128 256 - 34 -50 0 0 1 1 9 1 2 4 8 16 32 64 128 256 - 35 -50 50 0 1 1 9 1 2 4 8 16 32 64 128 256 - 36 0 -50 0 1 1 9 1 2 4 8 16 32 64 128 256 - 37 0 50 0 1 1 9 1 2 4 8 16 32 64 128 256 - 38 50 -50 0 1 1 9 1 2 4 8 16 32 64 128 256 - 39 50 0 0 1 1 9 1 2 4 8 16 32 64 128 256 - 40 50 50 0 1 1 9 1 2 4 8 16 32 64 128 256 - 41 100 -10 0 12 1 9 1 2 4 8 16 32 64 128 256 - 42 100 0 0 12 1 9 1 2 4 8 16 32 64 128 256 - 43 100 10 0 12 1 9 1 2 4 8 16 32 64 128 256 - 44 110 -10 0 12 1 9 1 2 4 8 16 32 64 128 256 - 45 110 10 0 12 1 9 1 2 4 8 16 32 64 128 256 - 46 120 -10 0 12 1 9 1 2 4 8 16 32 64 128 256 - 47 120 0 0 12 1 9 1 2 4 8 16 32 64 128 256 - 48 120 10 0 12 1 9 1 2 4 8 16 32 64 128 256 - 49 90 -20 0 8 1 9 1 2 4 8 16 32 64 128 256 - 50 90 0 0 8 1 9 1 2 4 8 16 32 64 128 256 - 51 90 20 0 8 1 9 1 2 4 8 16 32 64 128 256 - 52 110 -20 0 8 1 9 1 2 4 8 16 32 64 128 256 - 53 110 20 0 8 1 9 1 2 4 8 16 32 64 128 256 - 54 130 -20 0 8 1 9 1 2 4 8 16 32 64 128 256 - 55 130 0 0 8 1 9 1 2 4 8 16 32 64 128 256 - 56 130 20 0 8 1 9 1 2 4 8 16 32 64 128 256 - 57 80 -30 0 4 1 9 1 2 4 8 16 32 64 128 256 - 58 80 0 0 4 1 9 1 2 4 8 16 32 64 128 256 - 59 80 30 0 4 1 9 1 2 4 8 16 32 64 128 256 - 60 110 -30 0 4 1 9 1 2 4 8 16 32 64 128 256 - 61 110 30 0 4 1 9 1 2 4 8 16 32 64 128 256 - 62 140 -30 0 4 1 9 1 2 4 8 16 32 64 128 256 - 63 140 0 0 4 1 9 1 2 4 8 16 32 64 128 256 - 64 140 30 0 4 1 9 1 2 4 8 16 32 64 128 256 - 65 70 -40 0 2 1 9 1 2 4 8 16 32 64 128 256 - 66 70 0 0 2 1 9 1 2 4 8 16 32 64 128 256 - 67 70 40 0 2 1 9 1 2 4 8 16 32 64 128 256 - 68 110 -40 0 2 1 9 1 2 4 8 16 32 64 128 256 - 69 110 40 0 2 1 9 1 2 4 8 16 32 64 128 256 - 70 150 -40 0 2 1 9 1 2 4 8 16 32 64 128 256 - 71 150 0 0 2 1 9 1 2 4 8 16 32 64 128 256 - 72 150 40 0 2 1 9 1 2 4 8 16 32 64 128 256 - 73 60 -50 0 1 1 9 1 2 4 8 16 32 64 128 256 - 74 60 0 0 1 1 9 1 2 4 8 16 32 64 128 256 - 75 60 50 0 1 1 9 1 2 4 8 16 32 64 128 256 - 76 110 -50 0 1 1 9 1 2 4 8 16 32 64 128 256 - 77 110 50 0 1 1 9 1 2 4 8 16 32 64 128 256 - 78 160 -50 0 1 1 9 1 2 4 8 16 32 64 128 256 - 79 160 0 0 1 1 9 1 2 4 8 16 32 64 128 256 - 80 160 50 0 1 1 9 1 2 4 8 16 32 64 128 256 - 81 100 100 0 12 1 9 1 2 4 8 16 32 64 128 256 - 82 100 110 0 12 1 9 1 2 4 8 16 32 64 128 256 - 83 100 120 0 12 1 9 1 2 4 8 16 32 64 128 256 - 84 110 100 0 12 1 9 1 2 4 8 16 32 64 128 256 - 85 110 120 0 12 1 9 1 2 4 8 16 32 64 128 256 - 86 120 100 0 12 1 9 1 2 4 8 16 32 64 128 256 - 87 120 110 0 12 1 9 1 2 4 8 16 32 64 128 256 - 88 120 120 0 12 1 9 1 2 4 8 16 32 64 128 256 - 89 90 90 0 8 1 9 1 2 4 8 16 32 64 128 256 - 90 90 110 0 8 1 9 1 2 4 8 16 32 64 128 256 - 91 90 130 0 8 1 9 1 2 4 8 16 32 64 128 256 - 92 110 90 0 8 1 9 1 2 4 8 16 32 64 128 256 - 93 110 130 0 8 1 9 1 2 4 8 16 32 64 128 256 - 94 130 90 0 8 1 9 1 2 4 8 16 32 64 128 256 - 95 130 110 0 8 1 9 1 2 4 8 16 32 64 128 256 - 96 130 130 0 8 1 9 1 2 4 8 16 32 64 128 256 - 97 80 80 0 4 1 9 1 2 4 8 16 32 64 128 256 - 98 80 110 0 4 1 9 1 2 4 8 16 32 64 128 256 - 99 80 140 0 4 1 9 1 2 4 8 16 32 64 128 256 -100 110 80 0 4 1 9 1 2 4 8 16 32 64 128 256 -101 110 140 0 4 1 9 1 2 4 8 16 32 64 128 256 -102 140 80 0 4 1 9 1 2 4 8 16 32 64 128 256 -103 140 110 0 4 1 9 1 2 4 8 16 32 64 128 256 -104 140 140 0 4 1 9 1 2 4 8 16 32 64 128 256 -105 70 70 0 2 1 9 1 2 4 8 16 32 64 128 256 -106 70 110 0 2 1 9 1 2 4 8 16 32 64 128 256 -107 70 150 0 2 1 9 1 2 4 8 16 32 64 128 256 -108 110 70 0 2 1 9 1 2 4 8 16 32 64 128 256 -109 110 150 0 2 1 9 1 2 4 8 16 32 64 128 256 -110 150 70 0 2 1 9 1 2 4 8 16 32 64 128 256 -111 150 110 0 2 1 9 1 2 4 8 16 32 64 128 256 -112 150 150 0 2 1 9 1 2 4 8 16 32 64 128 256 -113 60 60 0 1 1 9 1 2 4 8 16 32 64 128 256 -114 60 110 0 1 1 9 1 2 4 8 16 32 64 128 256 -115 60 160 0 1 1 9 1 2 4 8 16 32 64 128 256 -116 110 60 0 1 1 9 1 2 4 8 16 32 64 128 256 -117 110 160 0 1 1 9 1 2 4 8 16 32 64 128 256 -118 160 60 0 1 1 9 1 2 4 8 16 32 64 128 256 -119 160 110 0 1 1 9 1 2 4 8 16 32 64 128 256 -120 160 160 0 1 1 9 1 2 4 8 16 32 64 128 256 -121 -10 100 0 12 1 9 1 2 4 8 16 32 64 128 256 -122 -10 110 0 12 1 9 1 2 4 8 16 32 64 128 256 -123 -10 120 0 12 1 9 1 2 4 8 16 32 64 128 256 -124 0 100 0 12 1 9 1 2 4 8 16 32 64 128 256 -125 0 120 0 12 1 9 1 2 4 8 16 32 64 128 256 -126 10 100 0 12 1 9 1 2 4 8 16 32 64 128 256 -127 10 110 0 12 1 9 1 2 4 8 16 32 64 128 256 -128 10 120 0 12 1 9 1 2 4 8 16 32 64 128 256 -129 -20 90 0 8 1 9 1 2 4 8 16 32 64 128 256 -130 -20 110 0 8 1 9 1 2 4 8 16 32 64 128 256 -131 -20 130 0 8 1 9 1 2 4 8 16 32 64 128 256 -132 0 90 0 8 1 9 1 2 4 8 16 32 64 128 256 -133 0 130 0 8 1 9 1 2 4 8 16 32 64 128 256 -134 20 90 0 8 1 9 1 2 4 8 16 32 64 128 256 -135 20 110 0 8 1 9 1 2 4 8 16 32 64 128 256 -136 20 130 0 8 1 9 1 2 4 8 16 32 64 128 256 -137 -30 80 0 4 1 9 1 2 4 8 16 32 64 128 256 -138 -30 110 0 4 1 9 1 2 4 8 16 32 64 128 256 -139 -30 140 0 4 1 9 1 2 4 8 16 32 64 128 256 -140 0 80 0 4 1 9 1 2 4 8 16 32 64 128 256 -141 0 140 0 4 1 9 1 2 4 8 16 32 64 128 256 -142 30 80 0 4 1 9 1 2 4 8 16 32 64 128 256 -143 30 110 0 4 1 9 1 2 4 8 16 32 64 128 256 -144 30 140 0 4 1 9 1 2 4 8 16 32 64 128 256 -145 -40 70 0 2 1 9 1 2 4 8 16 32 64 128 256 -146 -40 110 0 2 1 9 1 2 4 8 16 32 64 128 256 -147 -40 150 0 2 1 9 1 2 4 8 16 32 64 128 256 -148 0 70 0 2 1 9 1 2 4 8 16 32 64 128 256 -149 0 150 0 2 1 9 1 2 4 8 16 32 64 128 256 -150 40 70 0 2 1 9 1 2 4 8 16 32 64 128 256 -151 40 110 0 2 1 9 1 2 4 8 16 32 64 128 256 -152 40 150 0 2 1 9 1 2 4 8 16 32 64 128 256 -153 -50 60 0 1 1 9 1 2 4 8 16 32 64 128 256 -154 -50 110 0 1 1 9 1 2 4 8 16 32 64 128 256 -155 -50 160 0 1 1 9 1 2 4 8 16 32 64 128 256 -156 0 60 0 1 1 9 1 2 4 8 16 32 64 128 256 -157 0 160 0 1 1 9 1 2 4 8 16 32 64 128 256 -158 50 60 0 1 1 9 1 2 4 8 16 32 64 128 256 -159 50 110 0 1 1 9 1 2 4 8 16 32 64 128 256 -160 50 160 0 1 1 9 1 2 4 8 16 32 64 128 256 -161 -120 100 0 12 1 9 1 2 4 8 16 32 64 128 256 -162 -120 110 0 12 1 9 1 2 4 8 16 32 64 128 256 -163 -120 120 0 12 1 9 1 2 4 8 16 32 64 128 256 -164 -110 100 0 12 1 9 1 2 4 8 16 32 64 128 256 -165 -110 120 0 12 1 9 1 2 4 8 16 32 64 128 256 -166 -100 100 0 12 1 9 1 2 4 8 16 32 64 128 256 -167 -100 110 0 12 1 9 1 2 4 8 16 32 64 128 256 -168 -100 120 0 12 1 9 1 2 4 8 16 32 64 128 256 -169 -130 90 0 8 1 9 1 2 4 8 16 32 64 128 256 -170 -130 110 0 8 1 9 1 2 4 8 16 32 64 128 256 -171 -130 130 0 8 1 9 1 2 4 8 16 32 64 128 256 -172 -110 90 0 8 1 9 1 2 4 8 16 32 64 128 256 -173 -110 130 0 8 1 9 1 2 4 8 16 32 64 128 256 -174 -90 90 0 8 1 9 1 2 4 8 16 32 64 128 256 -175 -90 110 0 8 1 9 1 2 4 8 16 32 64 128 256 -176 -90 130 0 8 1 9 1 2 4 8 16 32 64 128 256 -177 -140 80 0 4 1 9 1 2 4 8 16 32 64 128 256 -178 -140 110 0 4 1 9 1 2 4 8 16 32 64 128 256 -179 -140 140 0 4 1 9 1 2 4 8 16 32 64 128 256 -180 -110 80 0 4 1 9 1 2 4 8 16 32 64 128 256 -181 -110 140 0 4 1 9 1 2 4 8 16 32 64 128 256 -182 -80 80 0 4 1 9 1 2 4 8 16 32 64 128 256 -183 -80 110 0 4 1 9 1 2 4 8 16 32 64 128 256 -184 -80 140 0 4 1 9 1 2 4 8 16 32 64 128 256 -185 -150 70 0 2 1 9 1 2 4 8 16 32 64 128 256 -186 -150 110 0 2 1 9 1 2 4 8 16 32 64 128 256 -187 -150 150 0 2 1 9 1 2 4 8 16 32 64 128 256 -188 -110 70 0 2 1 9 1 2 4 8 16 32 64 128 256 -189 -110 150 0 2 1 9 1 2 4 8 16 32 64 128 256 -190 -70 70 0 2 1 9 1 2 4 8 16 32 64 128 256 -191 -70 110 0 2 1 9 1 2 4 8 16 32 64 128 256 -192 -70 150 0 2 1 9 1 2 4 8 16 32 64 128 256 -193 -160 60 0 1 1 9 1 2 4 8 16 32 64 128 256 -194 -160 110 0 1 1 9 1 2 4 8 16 32 64 128 256 -195 -160 160 0 1 1 9 1 2 4 8 16 32 64 128 256 -196 -110 60 0 1 1 9 1 2 4 8 16 32 64 128 256 -197 -110 160 0 1 1 9 1 2 4 8 16 32 64 128 256 -198 -60 60 0 1 1 9 1 2 4 8 16 32 64 128 256 -199 -60 110 0 1 1 9 1 2 4 8 16 32 64 128 256 -200 -60 160 0 1 1 9 1 2 4 8 16 32 64 128 256 -201 -120 -10 0 12 1 9 1 2 4 8 16 32 64 128 256 -202 -120 0 0 12 1 9 1 2 4 8 16 32 64 128 256 -203 -120 10 0 12 1 9 1 2 4 8 16 32 64 128 256 -204 -110 -10 0 12 1 9 1 2 4 8 16 32 64 128 256 -205 -110 10 0 12 1 9 1 2 4 8 16 32 64 128 256 -206 -100 -10 0 12 1 9 1 2 4 8 16 32 64 128 256 -207 -100 0 0 12 1 9 1 2 4 8 16 32 64 128 256 -208 -100 10 0 12 1 9 1 2 4 8 16 32 64 128 256 -209 -130 -20 0 8 1 9 1 2 4 8 16 32 64 128 256 -210 -130 0 0 8 1 9 1 2 4 8 16 32 64 128 256 -211 -130 20 0 8 1 9 1 2 4 8 16 32 64 128 256 -212 -110 -20 0 8 1 9 1 2 4 8 16 32 64 128 256 -213 -110 20 0 8 1 9 1 2 4 8 16 32 64 128 256 -214 -90 -20 0 8 1 9 1 2 4 8 16 32 64 128 256 -215 -90 0 0 8 1 9 1 2 4 8 16 32 64 128 256 -216 -90 20 0 8 1 9 1 2 4 8 16 32 64 128 256 -217 -140 -30 0 4 1 9 1 2 4 8 16 32 64 128 256 -218 -140 0 0 4 1 9 1 2 4 8 16 32 64 128 256 -219 -140 30 0 4 1 9 1 2 4 8 16 32 64 128 256 -220 -110 -30 0 4 1 9 1 2 4 8 16 32 64 128 256 -221 -110 30 0 4 1 9 1 2 4 8 16 32 64 128 256 -222 -80 -30 0 4 1 9 1 2 4 8 16 32 64 128 256 -223 -80 0 0 4 1 9 1 2 4 8 16 32 64 128 256 -224 -80 30 0 4 1 9 1 2 4 8 16 32 64 128 256 -225 -150 -40 0 2 1 9 1 2 4 8 16 32 64 128 256 -226 -150 0 0 2 1 9 1 2 4 8 16 32 64 128 256 -227 -150 40 0 2 1 9 1 2 4 8 16 32 64 128 256 -228 -110 -40 0 2 1 9 1 2 4 8 16 32 64 128 256 -229 -110 40 0 2 1 9 1 2 4 8 16 32 64 128 256 -230 -70 -40 0 2 1 9 1 2 4 8 16 32 64 128 256 -231 -70 0 0 2 1 9 1 2 4 8 16 32 64 128 256 -232 -70 40 0 2 1 9 1 2 4 8 16 32 64 128 256 -233 -160 -50 0 1 1 9 1 2 4 8 16 32 64 128 256 -234 -160 0 0 1 1 9 1 2 4 8 16 32 64 128 256 -235 -160 50 0 1 1 9 1 2 4 8 16 32 64 128 256 -236 -110 -50 0 1 1 9 1 2 4 8 16 32 64 128 256 -237 -110 50 0 1 1 9 1 2 4 8 16 32 64 128 256 -238 -60 -50 0 1 1 9 1 2 4 8 16 32 64 128 256 -239 -60 0 0 1 1 9 1 2 4 8 16 32 64 128 256 -240 -60 50 0 1 1 9 1 2 4 8 16 32 64 128 256 -241 -120 -120 0 12 1 9 1 2 4 8 16 32 64 128 256 -242 -120 -110 0 12 1 9 1 2 4 8 16 32 64 128 256 -243 -120 -100 0 12 1 9 1 2 4 8 16 32 64 128 256 -244 -110 -120 0 12 1 9 1 2 4 8 16 32 64 128 256 -245 -110 -100 0 12 1 9 1 2 4 8 16 32 64 128 256 -246 -100 -120 0 12 1 9 1 2 4 8 16 32 64 128 256 -247 -100 -110 0 12 1 9 1 2 4 8 16 32 64 128 256 -248 -100 -100 0 12 1 9 1 2 4 8 16 32 64 128 256 -249 -130 -130 0 8 1 9 1 2 4 8 16 32 64 128 256 -250 -130 -110 0 8 1 9 1 2 4 8 16 32 64 128 256 -251 -130 -90 0 8 1 9 1 2 4 8 16 32 64 128 256 -252 -110 -130 0 8 1 9 1 2 4 8 16 32 64 128 256 -253 -110 -90 0 8 1 9 1 2 4 8 16 32 64 128 256 -254 -90 -130 0 8 1 9 1 2 4 8 16 32 64 128 256 -255 -90 -110 0 8 1 9 1 2 4 8 16 32 64 128 256 -256 -90 -90 0 8 1 9 1 2 4 8 16 32 64 128 256 -257 -140 -140 0 4 1 9 1 2 4 8 16 32 64 128 256 -258 -140 -110 0 4 1 9 1 2 4 8 16 32 64 128 256 -259 -140 -80 0 4 1 9 1 2 4 8 16 32 64 128 256 -260 -110 -140 0 4 1 9 1 2 4 8 16 32 64 128 256 -261 -110 -80 0 4 1 9 1 2 4 8 16 32 64 128 256 -262 -80 -140 0 4 1 9 1 2 4 8 16 32 64 128 256 -263 -80 -110 0 4 1 9 1 2 4 8 16 32 64 128 256 -264 -80 -80 0 4 1 9 1 2 4 8 16 32 64 128 256 -265 -150 -150 0 2 1 9 1 2 4 8 16 32 64 128 256 -266 -150 -110 0 2 1 9 1 2 4 8 16 32 64 128 256 -267 -150 -70 0 2 1 9 1 2 4 8 16 32 64 128 256 -268 -110 -150 0 2 1 9 1 2 4 8 16 32 64 128 256 -269 -110 -70 0 2 1 9 1 2 4 8 16 32 64 128 256 -270 -70 -150 0 2 1 9 1 2 4 8 16 32 64 128 256 -271 -70 -110 0 2 1 9 1 2 4 8 16 32 64 128 256 -272 -70 -70 0 2 1 9 1 2 4 8 16 32 64 128 256 -273 -160 -160 0 1 1 9 1 2 4 8 16 32 64 128 256 -274 -160 -110 0 1 1 9 1 2 4 8 16 32 64 128 256 -275 -160 -60 0 1 1 9 1 2 4 8 16 32 64 128 256 -276 -110 -160 0 1 1 9 1 2 4 8 16 32 64 128 256 -277 -110 -60 0 1 1 9 1 2 4 8 16 32 64 128 256 -278 -60 -160 0 1 1 9 1 2 4 8 16 32 64 128 256 -279 -60 -110 0 1 1 9 1 2 4 8 16 32 64 128 256 -280 -60 -60 0 1 1 9 1 2 4 8 16 32 64 128 256 -281 -10 -120 0 12 1 9 1 2 4 8 16 32 64 128 256 -282 -10 -110 0 12 1 9 1 2 4 8 16 32 64 128 256 -283 -10 -100 0 12 1 9 1 2 4 8 16 32 64 128 256 -284 0 -120 0 12 1 9 1 2 4 8 16 32 64 128 256 -285 0 -100 0 12 1 9 1 2 4 8 16 32 64 128 256 -286 10 -120 0 12 1 9 1 2 4 8 16 32 64 128 256 -287 10 -110 0 12 1 9 1 2 4 8 16 32 64 128 256 -288 10 -100 0 12 1 9 1 2 4 8 16 32 64 128 256 -289 -20 -130 0 8 1 9 1 2 4 8 16 32 64 128 256 -290 -20 -110 0 8 1 9 1 2 4 8 16 32 64 128 256 -291 -20 -90 0 8 1 9 1 2 4 8 16 32 64 128 256 -292 0 -130 0 8 1 9 1 2 4 8 16 32 64 128 256 -293 0 -90 0 8 1 9 1 2 4 8 16 32 64 128 256 -294 20 -130 0 8 1 9 1 2 4 8 16 32 64 128 256 -295 20 -110 0 8 1 9 1 2 4 8 16 32 64 128 256 -296 20 -90 0 8 1 9 1 2 4 8 16 32 64 128 256 -297 -30 -140 0 4 1 9 1 2 4 8 16 32 64 128 256 -298 -30 -110 0 4 1 9 1 2 4 8 16 32 64 128 256 -299 -30 -80 0 4 1 9 1 2 4 8 16 32 64 128 256 -300 0 -140 0 4 1 9 1 2 4 8 16 32 64 128 256 -301 0 -80 0 4 1 9 1 2 4 8 16 32 64 128 256 -302 30 -140 0 4 1 9 1 2 4 8 16 32 64 128 256 -303 30 -110 0 4 1 9 1 2 4 8 16 32 64 128 256 -304 30 -80 0 4 1 9 1 2 4 8 16 32 64 128 256 -305 -40 -150 0 2 1 9 1 2 4 8 16 32 64 128 256 -306 -40 -110 0 2 1 9 1 2 4 8 16 32 64 128 256 -307 -40 -70 0 2 1 9 1 2 4 8 16 32 64 128 256 -308 0 -150 0 2 1 9 1 2 4 8 16 32 64 128 256 -309 0 -70 0 2 1 9 1 2 4 8 16 32 64 128 256 -310 40 -150 0 2 1 9 1 2 4 8 16 32 64 128 256 -311 40 -110 0 2 1 9 1 2 4 8 16 32 64 128 256 -312 40 -70 0 2 1 9 1 2 4 8 16 32 64 128 256 -313 -50 -160 0 1 1 9 1 2 4 8 16 32 64 128 256 -314 -50 -110 0 1 1 9 1 2 4 8 16 32 64 128 256 -315 -50 -60 0 1 1 9 1 2 4 8 16 32 64 128 256 -316 0 -160 0 1 1 9 1 2 4 8 16 32 64 128 256 -317 0 -60 0 1 1 9 1 2 4 8 16 32 64 128 256 -318 50 -160 0 1 1 9 1 2 4 8 16 32 64 128 256 -319 50 -110 0 1 1 9 1 2 4 8 16 32 64 128 256 -320 50 -60 0 1 1 9 1 2 4 8 16 32 64 128 256 -321 100 -120 0 12 1 9 1 2 4 8 16 32 64 128 256 -322 100 -110 0 12 1 9 1 2 4 8 16 32 64 128 256 -323 100 -100 0 12 1 9 1 2 4 8 16 32 64 128 256 -324 110 -120 0 12 1 9 1 2 4 8 16 32 64 128 256 -325 110 -100 0 12 1 9 1 2 4 8 16 32 64 128 256 -326 120 -120 0 12 1 9 1 2 4 8 16 32 64 128 256 -327 120 -110 0 12 1 9 1 2 4 8 16 32 64 128 256 -328 120 -100 0 12 1 9 1 2 4 8 16 32 64 128 256 -329 90 -130 0 8 1 9 1 2 4 8 16 32 64 128 256 -330 90 -110 0 8 1 9 1 2 4 8 16 32 64 128 256 -331 90 -90 0 8 1 9 1 2 4 8 16 32 64 128 256 -332 110 -130 0 8 1 9 1 2 4 8 16 32 64 128 256 -333 110 -90 0 8 1 9 1 2 4 8 16 32 64 128 256 -334 130 -130 0 8 1 9 1 2 4 8 16 32 64 128 256 -335 130 -110 0 8 1 9 1 2 4 8 16 32 64 128 256 -336 130 -90 0 8 1 9 1 2 4 8 16 32 64 128 256 -337 80 -140 0 4 1 9 1 2 4 8 16 32 64 128 256 -338 80 -110 0 4 1 9 1 2 4 8 16 32 64 128 256 -339 80 -80 0 4 1 9 1 2 4 8 16 32 64 128 256 -340 110 -140 0 4 1 9 1 2 4 8 16 32 64 128 256 -341 110 -80 0 4 1 9 1 2 4 8 16 32 64 128 256 -342 140 -140 0 4 1 9 1 2 4 8 16 32 64 128 256 -343 140 -110 0 4 1 9 1 2 4 8 16 32 64 128 256 -344 140 -80 0 4 1 9 1 2 4 8 16 32 64 128 256 -345 70 -150 0 2 1 9 1 2 4 8 16 32 64 128 256 -346 70 -110 0 2 1 9 1 2 4 8 16 32 64 128 256 -347 70 -70 0 2 1 9 1 2 4 8 16 32 64 128 256 -348 110 -150 0 2 1 9 1 2 4 8 16 32 64 128 256 -349 110 -70 0 2 1 9 1 2 4 8 16 32 64 128 256 -350 150 -150 0 2 1 9 1 2 4 8 16 32 64 128 256 -351 150 -110 0 2 1 9 1 2 4 8 16 32 64 128 256 -352 150 -70 0 2 1 9 1 2 4 8 16 32 64 128 256 -353 60 -160 0 1 1 9 1 2 4 8 16 32 64 128 256 -354 60 -110 0 1 1 9 1 2 4 8 16 32 64 128 256 -355 60 -60 0 1 1 9 1 2 4 8 16 32 64 128 256 -356 110 -160 0 1 1 9 1 2 4 8 16 32 64 128 256 -357 110 -60 0 1 1 9 1 2 4 8 16 32 64 128 256 -358 160 -160 0 1 1 9 1 2 4 8 16 32 64 128 256 -359 160 -110 0 1 1 9 1 2 4 8 16 32 64 128 256 -360 160 -60 0 1 1 9 1 2 4 8 16 32 64 128 256 -361 0 0 0 0 0 0 -362 110 0 0 0 0 0 -363 110 110 0 0 0 0 -364 0 110 0 0 0 0 -365 -110 110 0 0 0 0 -366 -110 0 0 0 0 0 -367 -110 -110 0 0 0 0 -368 0 -110 0 0 0 0 -369 110 -110 0 0 0 0 diff --git a/jsprit-instances/instances/cordeau/p21.res b/jsprit-instances/instances/cordeau/p21.res deleted file mode 100644 index 5395c2b97..000000000 --- a/jsprit-instances/instances/cordeau/p21.res +++ /dev/null @@ -1,35 +0,0 @@ -5474.84 -1 1 233.14 60 0 11 19 27 35 240 232 224 216 215 223 231 239 34 26 18 10 0 -1 2 233.14 60 0 9 17 25 33 315 307 299 291 293 301 309 317 36 28 20 12 0 -1 3 54.14 48 0 3 2 1 4 0 -1 4 54.14 48 0 6 7 8 5 0 -1 5 233.14 60 0 13 21 29 37 156 148 140 132 134 142 150 158 40 32 24 16 0 -2 1 221.42 60 0 52 60 68 76 357 349 336 344 352 360 78 70 62 54 46 0 -2 2 188.93 55 0 48 56 64 72 118 80 79 71 63 55 47 0 -2 3 233.14 60 0 50 58 66 74 39 31 23 15 14 22 30 38 73 65 57 49 0 -2 4 233.14 60 0 53 61 69 77 116 108 100 92 89 97 105 113 75 67 59 51 0 -2 5 60.00 60 0 45 43 42 41 44 0 -3 1 86.50 60 0 84 81 82 90 98 83 0 -3 2 147.80 53 0 87 95 103 111 119 110 102 94 86 0 -3 3 170.71 54 0 88 96 104 112 120 117 109 101 93 85 0 -4 1 60.00 60 0 122 121 124 126 127 0 -4 2 221.42 60 0 128 136 144 152 160 115 107 99 91 106 114 159 151 143 135 0 -4 3 233.14 60 0 129 137 145 153 198 190 182 174 175 183 191 199 154 146 138 130 0 -4 4 188.93 55 0 123 131 139 147 200 155 157 149 141 133 125 0 -5 1 147.80 53 0 168 176 184 192 197 189 181 173 165 0 -5 2 86.50 60 0 161 164 172 180 166 167 0 -5 3 170.71 54 0 163 171 179 187 195 194 186 178 170 162 0 -6 1 233.14 60 0 212 220 228 236 277 269 261 253 256 264 272 280 238 230 222 214 0 -6 2 221.42 60 0 213 221 229 237 196 188 169 177 185 193 235 227 219 211 203 0 -6 3 60.00 60 0 204 206 207 208 205 0 -6 4 147.80 53 0 201 209 217 225 234 226 218 210 202 0 -7 1 86.50 60 0 245 248 247 255 263 246 0 -7 2 188.93 55 0 242 250 258 266 274 275 233 267 259 251 243 0 -7 3 170.71 54 0 241 249 257 265 273 276 268 260 252 244 0 -8 1 233.14 60 0 295 303 311 319 354 346 338 330 331 339 347 355 320 312 304 296 0 -8 2 221.42 60 0 290 298 306 314 279 271 254 262 270 278 313 305 297 289 281 0 -8 3 60.00 60 0 287 288 285 283 282 0 -8 4 188.93 55 0 286 294 302 310 353 318 316 308 300 292 284 0 -9 1 170.71 54 0 326 334 342 350 358 359 351 343 335 327 0 -9 2 147.80 53 0 321 329 337 345 356 348 340 332 324 0 -9 3 86.50 60 0 328 341 333 325 323 322 0 diff --git a/jsprit-instances/instances/cordeau/p22 b/jsprit-instances/instances/cordeau/p22 deleted file mode 100644 index 8a58a4909..000000000 --- a/jsprit-instances/instances/cordeau/p22 +++ /dev/null @@ -1,379 +0,0 @@ -2 5 360 9 -200 60 -200 60 -200 60 -200 60 -200 60 -200 60 -200 60 -200 60 -200 60 - 1 -10 -10 0 12 1 9 1 2 4 8 16 32 64 128 256 - 2 -10 0 0 12 1 9 1 2 4 8 16 32 64 128 256 - 3 -10 10 0 12 1 9 1 2 4 8 16 32 64 128 256 - 4 0 -10 0 12 1 9 1 2 4 8 16 32 64 128 256 - 5 0 10 0 12 1 9 1 2 4 8 16 32 64 128 256 - 6 10 -10 0 12 1 9 1 2 4 8 16 32 64 128 256 - 7 10 0 0 12 1 9 1 2 4 8 16 32 64 128 256 - 8 10 10 0 12 1 9 1 2 4 8 16 32 64 128 256 - 9 -20 -20 0 8 1 9 1 2 4 8 16 32 64 128 256 - 10 -20 0 0 8 1 9 1 2 4 8 16 32 64 128 256 - 11 -20 20 0 8 1 9 1 2 4 8 16 32 64 128 256 - 12 0 -20 0 8 1 9 1 2 4 8 16 32 64 128 256 - 13 0 20 0 8 1 9 1 2 4 8 16 32 64 128 256 - 14 20 -20 0 8 1 9 1 2 4 8 16 32 64 128 256 - 15 20 0 0 8 1 9 1 2 4 8 16 32 64 128 256 - 16 20 20 0 8 1 9 1 2 4 8 16 32 64 128 256 - 17 -30 -30 0 4 1 9 1 2 4 8 16 32 64 128 256 - 18 -30 0 0 4 1 9 1 2 4 8 16 32 64 128 256 - 19 -30 30 0 4 1 9 1 2 4 8 16 32 64 128 256 - 20 0 -30 0 4 1 9 1 2 4 8 16 32 64 128 256 - 21 0 30 0 4 1 9 1 2 4 8 16 32 64 128 256 - 22 30 -30 0 4 1 9 1 2 4 8 16 32 64 128 256 - 23 30 0 0 4 1 9 1 2 4 8 16 32 64 128 256 - 24 30 30 0 4 1 9 1 2 4 8 16 32 64 128 256 - 25 -40 -40 0 2 1 9 1 2 4 8 16 32 64 128 256 - 26 -40 0 0 2 1 9 1 2 4 8 16 32 64 128 256 - 27 -40 40 0 2 1 9 1 2 4 8 16 32 64 128 256 - 28 0 -40 0 2 1 9 1 2 4 8 16 32 64 128 256 - 29 0 40 0 2 1 9 1 2 4 8 16 32 64 128 256 - 30 40 -40 0 2 1 9 1 2 4 8 16 32 64 128 256 - 31 40 0 0 2 1 9 1 2 4 8 16 32 64 128 256 - 32 40 40 0 2 1 9 1 2 4 8 16 32 64 128 256 - 33 -50 -50 0 1 1 9 1 2 4 8 16 32 64 128 256 - 34 -50 0 0 1 1 9 1 2 4 8 16 32 64 128 256 - 35 -50 50 0 1 1 9 1 2 4 8 16 32 64 128 256 - 36 0 -50 0 1 1 9 1 2 4 8 16 32 64 128 256 - 37 0 50 0 1 1 9 1 2 4 8 16 32 64 128 256 - 38 50 -50 0 1 1 9 1 2 4 8 16 32 64 128 256 - 39 50 0 0 1 1 9 1 2 4 8 16 32 64 128 256 - 40 50 50 0 1 1 9 1 2 4 8 16 32 64 128 256 - 41 100 -10 0 12 1 9 1 2 4 8 16 32 64 128 256 - 42 100 0 0 12 1 9 1 2 4 8 16 32 64 128 256 - 43 100 10 0 12 1 9 1 2 4 8 16 32 64 128 256 - 44 110 -10 0 12 1 9 1 2 4 8 16 32 64 128 256 - 45 110 10 0 12 1 9 1 2 4 8 16 32 64 128 256 - 46 120 -10 0 12 1 9 1 2 4 8 16 32 64 128 256 - 47 120 0 0 12 1 9 1 2 4 8 16 32 64 128 256 - 48 120 10 0 12 1 9 1 2 4 8 16 32 64 128 256 - 49 90 -20 0 8 1 9 1 2 4 8 16 32 64 128 256 - 50 90 0 0 8 1 9 1 2 4 8 16 32 64 128 256 - 51 90 20 0 8 1 9 1 2 4 8 16 32 64 128 256 - 52 110 -20 0 8 1 9 1 2 4 8 16 32 64 128 256 - 53 110 20 0 8 1 9 1 2 4 8 16 32 64 128 256 - 54 130 -20 0 8 1 9 1 2 4 8 16 32 64 128 256 - 55 130 0 0 8 1 9 1 2 4 8 16 32 64 128 256 - 56 130 20 0 8 1 9 1 2 4 8 16 32 64 128 256 - 57 80 -30 0 4 1 9 1 2 4 8 16 32 64 128 256 - 58 80 0 0 4 1 9 1 2 4 8 16 32 64 128 256 - 59 80 30 0 4 1 9 1 2 4 8 16 32 64 128 256 - 60 110 -30 0 4 1 9 1 2 4 8 16 32 64 128 256 - 61 110 30 0 4 1 9 1 2 4 8 16 32 64 128 256 - 62 140 -30 0 4 1 9 1 2 4 8 16 32 64 128 256 - 63 140 0 0 4 1 9 1 2 4 8 16 32 64 128 256 - 64 140 30 0 4 1 9 1 2 4 8 16 32 64 128 256 - 65 70 -40 0 2 1 9 1 2 4 8 16 32 64 128 256 - 66 70 0 0 2 1 9 1 2 4 8 16 32 64 128 256 - 67 70 40 0 2 1 9 1 2 4 8 16 32 64 128 256 - 68 110 -40 0 2 1 9 1 2 4 8 16 32 64 128 256 - 69 110 40 0 2 1 9 1 2 4 8 16 32 64 128 256 - 70 150 -40 0 2 1 9 1 2 4 8 16 32 64 128 256 - 71 150 0 0 2 1 9 1 2 4 8 16 32 64 128 256 - 72 150 40 0 2 1 9 1 2 4 8 16 32 64 128 256 - 73 60 -50 0 1 1 9 1 2 4 8 16 32 64 128 256 - 74 60 0 0 1 1 9 1 2 4 8 16 32 64 128 256 - 75 60 50 0 1 1 9 1 2 4 8 16 32 64 128 256 - 76 110 -50 0 1 1 9 1 2 4 8 16 32 64 128 256 - 77 110 50 0 1 1 9 1 2 4 8 16 32 64 128 256 - 78 160 -50 0 1 1 9 1 2 4 8 16 32 64 128 256 - 79 160 0 0 1 1 9 1 2 4 8 16 32 64 128 256 - 80 160 50 0 1 1 9 1 2 4 8 16 32 64 128 256 - 81 100 100 0 12 1 9 1 2 4 8 16 32 64 128 256 - 82 100 110 0 12 1 9 1 2 4 8 16 32 64 128 256 - 83 100 120 0 12 1 9 1 2 4 8 16 32 64 128 256 - 84 110 100 0 12 1 9 1 2 4 8 16 32 64 128 256 - 85 110 120 0 12 1 9 1 2 4 8 16 32 64 128 256 - 86 120 100 0 12 1 9 1 2 4 8 16 32 64 128 256 - 87 120 110 0 12 1 9 1 2 4 8 16 32 64 128 256 - 88 120 120 0 12 1 9 1 2 4 8 16 32 64 128 256 - 89 90 90 0 8 1 9 1 2 4 8 16 32 64 128 256 - 90 90 110 0 8 1 9 1 2 4 8 16 32 64 128 256 - 91 90 130 0 8 1 9 1 2 4 8 16 32 64 128 256 - 92 110 90 0 8 1 9 1 2 4 8 16 32 64 128 256 - 93 110 130 0 8 1 9 1 2 4 8 16 32 64 128 256 - 94 130 90 0 8 1 9 1 2 4 8 16 32 64 128 256 - 95 130 110 0 8 1 9 1 2 4 8 16 32 64 128 256 - 96 130 130 0 8 1 9 1 2 4 8 16 32 64 128 256 - 97 80 80 0 4 1 9 1 2 4 8 16 32 64 128 256 - 98 80 110 0 4 1 9 1 2 4 8 16 32 64 128 256 - 99 80 140 0 4 1 9 1 2 4 8 16 32 64 128 256 -100 110 80 0 4 1 9 1 2 4 8 16 32 64 128 256 -101 110 140 0 4 1 9 1 2 4 8 16 32 64 128 256 -102 140 80 0 4 1 9 1 2 4 8 16 32 64 128 256 -103 140 110 0 4 1 9 1 2 4 8 16 32 64 128 256 -104 140 140 0 4 1 9 1 2 4 8 16 32 64 128 256 -105 70 70 0 2 1 9 1 2 4 8 16 32 64 128 256 -106 70 110 0 2 1 9 1 2 4 8 16 32 64 128 256 -107 70 150 0 2 1 9 1 2 4 8 16 32 64 128 256 -108 110 70 0 2 1 9 1 2 4 8 16 32 64 128 256 -109 110 150 0 2 1 9 1 2 4 8 16 32 64 128 256 -110 150 70 0 2 1 9 1 2 4 8 16 32 64 128 256 -111 150 110 0 2 1 9 1 2 4 8 16 32 64 128 256 -112 150 150 0 2 1 9 1 2 4 8 16 32 64 128 256 -113 60 60 0 1 1 9 1 2 4 8 16 32 64 128 256 -114 60 110 0 1 1 9 1 2 4 8 16 32 64 128 256 -115 60 160 0 1 1 9 1 2 4 8 16 32 64 128 256 -116 110 60 0 1 1 9 1 2 4 8 16 32 64 128 256 -117 110 160 0 1 1 9 1 2 4 8 16 32 64 128 256 -118 160 60 0 1 1 9 1 2 4 8 16 32 64 128 256 -119 160 110 0 1 1 9 1 2 4 8 16 32 64 128 256 -120 160 160 0 1 1 9 1 2 4 8 16 32 64 128 256 -121 -10 100 0 12 1 9 1 2 4 8 16 32 64 128 256 -122 -10 110 0 12 1 9 1 2 4 8 16 32 64 128 256 -123 -10 120 0 12 1 9 1 2 4 8 16 32 64 128 256 -124 0 100 0 12 1 9 1 2 4 8 16 32 64 128 256 -125 0 120 0 12 1 9 1 2 4 8 16 32 64 128 256 -126 10 100 0 12 1 9 1 2 4 8 16 32 64 128 256 -127 10 110 0 12 1 9 1 2 4 8 16 32 64 128 256 -128 10 120 0 12 1 9 1 2 4 8 16 32 64 128 256 -129 -20 90 0 8 1 9 1 2 4 8 16 32 64 128 256 -130 -20 110 0 8 1 9 1 2 4 8 16 32 64 128 256 -131 -20 130 0 8 1 9 1 2 4 8 16 32 64 128 256 -132 0 90 0 8 1 9 1 2 4 8 16 32 64 128 256 -133 0 130 0 8 1 9 1 2 4 8 16 32 64 128 256 -134 20 90 0 8 1 9 1 2 4 8 16 32 64 128 256 -135 20 110 0 8 1 9 1 2 4 8 16 32 64 128 256 -136 20 130 0 8 1 9 1 2 4 8 16 32 64 128 256 -137 -30 80 0 4 1 9 1 2 4 8 16 32 64 128 256 -138 -30 110 0 4 1 9 1 2 4 8 16 32 64 128 256 -139 -30 140 0 4 1 9 1 2 4 8 16 32 64 128 256 -140 0 80 0 4 1 9 1 2 4 8 16 32 64 128 256 -141 0 140 0 4 1 9 1 2 4 8 16 32 64 128 256 -142 30 80 0 4 1 9 1 2 4 8 16 32 64 128 256 -143 30 110 0 4 1 9 1 2 4 8 16 32 64 128 256 -144 30 140 0 4 1 9 1 2 4 8 16 32 64 128 256 -145 -40 70 0 2 1 9 1 2 4 8 16 32 64 128 256 -146 -40 110 0 2 1 9 1 2 4 8 16 32 64 128 256 -147 -40 150 0 2 1 9 1 2 4 8 16 32 64 128 256 -148 0 70 0 2 1 9 1 2 4 8 16 32 64 128 256 -149 0 150 0 2 1 9 1 2 4 8 16 32 64 128 256 -150 40 70 0 2 1 9 1 2 4 8 16 32 64 128 256 -151 40 110 0 2 1 9 1 2 4 8 16 32 64 128 256 -152 40 150 0 2 1 9 1 2 4 8 16 32 64 128 256 -153 -50 60 0 1 1 9 1 2 4 8 16 32 64 128 256 -154 -50 110 0 1 1 9 1 2 4 8 16 32 64 128 256 -155 -50 160 0 1 1 9 1 2 4 8 16 32 64 128 256 -156 0 60 0 1 1 9 1 2 4 8 16 32 64 128 256 -157 0 160 0 1 1 9 1 2 4 8 16 32 64 128 256 -158 50 60 0 1 1 9 1 2 4 8 16 32 64 128 256 -159 50 110 0 1 1 9 1 2 4 8 16 32 64 128 256 -160 50 160 0 1 1 9 1 2 4 8 16 32 64 128 256 -161 -120 100 0 12 1 9 1 2 4 8 16 32 64 128 256 -162 -120 110 0 12 1 9 1 2 4 8 16 32 64 128 256 -163 -120 120 0 12 1 9 1 2 4 8 16 32 64 128 256 -164 -110 100 0 12 1 9 1 2 4 8 16 32 64 128 256 -165 -110 120 0 12 1 9 1 2 4 8 16 32 64 128 256 -166 -100 100 0 12 1 9 1 2 4 8 16 32 64 128 256 -167 -100 110 0 12 1 9 1 2 4 8 16 32 64 128 256 -168 -100 120 0 12 1 9 1 2 4 8 16 32 64 128 256 -169 -130 90 0 8 1 9 1 2 4 8 16 32 64 128 256 -170 -130 110 0 8 1 9 1 2 4 8 16 32 64 128 256 -171 -130 130 0 8 1 9 1 2 4 8 16 32 64 128 256 -172 -110 90 0 8 1 9 1 2 4 8 16 32 64 128 256 -173 -110 130 0 8 1 9 1 2 4 8 16 32 64 128 256 -174 -90 90 0 8 1 9 1 2 4 8 16 32 64 128 256 -175 -90 110 0 8 1 9 1 2 4 8 16 32 64 128 256 -176 -90 130 0 8 1 9 1 2 4 8 16 32 64 128 256 -177 -140 80 0 4 1 9 1 2 4 8 16 32 64 128 256 -178 -140 110 0 4 1 9 1 2 4 8 16 32 64 128 256 -179 -140 140 0 4 1 9 1 2 4 8 16 32 64 128 256 -180 -110 80 0 4 1 9 1 2 4 8 16 32 64 128 256 -181 -110 140 0 4 1 9 1 2 4 8 16 32 64 128 256 -182 -80 80 0 4 1 9 1 2 4 8 16 32 64 128 256 -183 -80 110 0 4 1 9 1 2 4 8 16 32 64 128 256 -184 -80 140 0 4 1 9 1 2 4 8 16 32 64 128 256 -185 -150 70 0 2 1 9 1 2 4 8 16 32 64 128 256 -186 -150 110 0 2 1 9 1 2 4 8 16 32 64 128 256 -187 -150 150 0 2 1 9 1 2 4 8 16 32 64 128 256 -188 -110 70 0 2 1 9 1 2 4 8 16 32 64 128 256 -189 -110 150 0 2 1 9 1 2 4 8 16 32 64 128 256 -190 -70 70 0 2 1 9 1 2 4 8 16 32 64 128 256 -191 -70 110 0 2 1 9 1 2 4 8 16 32 64 128 256 -192 -70 150 0 2 1 9 1 2 4 8 16 32 64 128 256 -193 -160 60 0 1 1 9 1 2 4 8 16 32 64 128 256 -194 -160 110 0 1 1 9 1 2 4 8 16 32 64 128 256 -195 -160 160 0 1 1 9 1 2 4 8 16 32 64 128 256 -196 -110 60 0 1 1 9 1 2 4 8 16 32 64 128 256 -197 -110 160 0 1 1 9 1 2 4 8 16 32 64 128 256 -198 -60 60 0 1 1 9 1 2 4 8 16 32 64 128 256 -199 -60 110 0 1 1 9 1 2 4 8 16 32 64 128 256 -200 -60 160 0 1 1 9 1 2 4 8 16 32 64 128 256 -201 -120 -10 0 12 1 9 1 2 4 8 16 32 64 128 256 -202 -120 0 0 12 1 9 1 2 4 8 16 32 64 128 256 -203 -120 10 0 12 1 9 1 2 4 8 16 32 64 128 256 -204 -110 -10 0 12 1 9 1 2 4 8 16 32 64 128 256 -205 -110 10 0 12 1 9 1 2 4 8 16 32 64 128 256 -206 -100 -10 0 12 1 9 1 2 4 8 16 32 64 128 256 -207 -100 0 0 12 1 9 1 2 4 8 16 32 64 128 256 -208 -100 10 0 12 1 9 1 2 4 8 16 32 64 128 256 -209 -130 -20 0 8 1 9 1 2 4 8 16 32 64 128 256 -210 -130 0 0 8 1 9 1 2 4 8 16 32 64 128 256 -211 -130 20 0 8 1 9 1 2 4 8 16 32 64 128 256 -212 -110 -20 0 8 1 9 1 2 4 8 16 32 64 128 256 -213 -110 20 0 8 1 9 1 2 4 8 16 32 64 128 256 -214 -90 -20 0 8 1 9 1 2 4 8 16 32 64 128 256 -215 -90 0 0 8 1 9 1 2 4 8 16 32 64 128 256 -216 -90 20 0 8 1 9 1 2 4 8 16 32 64 128 256 -217 -140 -30 0 4 1 9 1 2 4 8 16 32 64 128 256 -218 -140 0 0 4 1 9 1 2 4 8 16 32 64 128 256 -219 -140 30 0 4 1 9 1 2 4 8 16 32 64 128 256 -220 -110 -30 0 4 1 9 1 2 4 8 16 32 64 128 256 -221 -110 30 0 4 1 9 1 2 4 8 16 32 64 128 256 -222 -80 -30 0 4 1 9 1 2 4 8 16 32 64 128 256 -223 -80 0 0 4 1 9 1 2 4 8 16 32 64 128 256 -224 -80 30 0 4 1 9 1 2 4 8 16 32 64 128 256 -225 -150 -40 0 2 1 9 1 2 4 8 16 32 64 128 256 -226 -150 0 0 2 1 9 1 2 4 8 16 32 64 128 256 -227 -150 40 0 2 1 9 1 2 4 8 16 32 64 128 256 -228 -110 -40 0 2 1 9 1 2 4 8 16 32 64 128 256 -229 -110 40 0 2 1 9 1 2 4 8 16 32 64 128 256 -230 -70 -40 0 2 1 9 1 2 4 8 16 32 64 128 256 -231 -70 0 0 2 1 9 1 2 4 8 16 32 64 128 256 -232 -70 40 0 2 1 9 1 2 4 8 16 32 64 128 256 -233 -160 -50 0 1 1 9 1 2 4 8 16 32 64 128 256 -234 -160 0 0 1 1 9 1 2 4 8 16 32 64 128 256 -235 -160 50 0 1 1 9 1 2 4 8 16 32 64 128 256 -236 -110 -50 0 1 1 9 1 2 4 8 16 32 64 128 256 -237 -110 50 0 1 1 9 1 2 4 8 16 32 64 128 256 -238 -60 -50 0 1 1 9 1 2 4 8 16 32 64 128 256 -239 -60 0 0 1 1 9 1 2 4 8 16 32 64 128 256 -240 -60 50 0 1 1 9 1 2 4 8 16 32 64 128 256 -241 -120 -120 0 12 1 9 1 2 4 8 16 32 64 128 256 -242 -120 -110 0 12 1 9 1 2 4 8 16 32 64 128 256 -243 -120 -100 0 12 1 9 1 2 4 8 16 32 64 128 256 -244 -110 -120 0 12 1 9 1 2 4 8 16 32 64 128 256 -245 -110 -100 0 12 1 9 1 2 4 8 16 32 64 128 256 -246 -100 -120 0 12 1 9 1 2 4 8 16 32 64 128 256 -247 -100 -110 0 12 1 9 1 2 4 8 16 32 64 128 256 -248 -100 -100 0 12 1 9 1 2 4 8 16 32 64 128 256 -249 -130 -130 0 8 1 9 1 2 4 8 16 32 64 128 256 -250 -130 -110 0 8 1 9 1 2 4 8 16 32 64 128 256 -251 -130 -90 0 8 1 9 1 2 4 8 16 32 64 128 256 -252 -110 -130 0 8 1 9 1 2 4 8 16 32 64 128 256 -253 -110 -90 0 8 1 9 1 2 4 8 16 32 64 128 256 -254 -90 -130 0 8 1 9 1 2 4 8 16 32 64 128 256 -255 -90 -110 0 8 1 9 1 2 4 8 16 32 64 128 256 -256 -90 -90 0 8 1 9 1 2 4 8 16 32 64 128 256 -257 -140 -140 0 4 1 9 1 2 4 8 16 32 64 128 256 -258 -140 -110 0 4 1 9 1 2 4 8 16 32 64 128 256 -259 -140 -80 0 4 1 9 1 2 4 8 16 32 64 128 256 -260 -110 -140 0 4 1 9 1 2 4 8 16 32 64 128 256 -261 -110 -80 0 4 1 9 1 2 4 8 16 32 64 128 256 -262 -80 -140 0 4 1 9 1 2 4 8 16 32 64 128 256 -263 -80 -110 0 4 1 9 1 2 4 8 16 32 64 128 256 -264 -80 -80 0 4 1 9 1 2 4 8 16 32 64 128 256 -265 -150 -150 0 2 1 9 1 2 4 8 16 32 64 128 256 -266 -150 -110 0 2 1 9 1 2 4 8 16 32 64 128 256 -267 -150 -70 0 2 1 9 1 2 4 8 16 32 64 128 256 -268 -110 -150 0 2 1 9 1 2 4 8 16 32 64 128 256 -269 -110 -70 0 2 1 9 1 2 4 8 16 32 64 128 256 -270 -70 -150 0 2 1 9 1 2 4 8 16 32 64 128 256 -271 -70 -110 0 2 1 9 1 2 4 8 16 32 64 128 256 -272 -70 -70 0 2 1 9 1 2 4 8 16 32 64 128 256 -273 -160 -160 0 1 1 9 1 2 4 8 16 32 64 128 256 -274 -160 -110 0 1 1 9 1 2 4 8 16 32 64 128 256 -275 -160 -60 0 1 1 9 1 2 4 8 16 32 64 128 256 -276 -110 -160 0 1 1 9 1 2 4 8 16 32 64 128 256 -277 -110 -60 0 1 1 9 1 2 4 8 16 32 64 128 256 -278 -60 -160 0 1 1 9 1 2 4 8 16 32 64 128 256 -279 -60 -110 0 1 1 9 1 2 4 8 16 32 64 128 256 -280 -60 -60 0 1 1 9 1 2 4 8 16 32 64 128 256 -281 -10 -120 0 12 1 9 1 2 4 8 16 32 64 128 256 -282 -10 -110 0 12 1 9 1 2 4 8 16 32 64 128 256 -283 -10 -100 0 12 1 9 1 2 4 8 16 32 64 128 256 -284 0 -120 0 12 1 9 1 2 4 8 16 32 64 128 256 -285 0 -100 0 12 1 9 1 2 4 8 16 32 64 128 256 -286 10 -120 0 12 1 9 1 2 4 8 16 32 64 128 256 -287 10 -110 0 12 1 9 1 2 4 8 16 32 64 128 256 -288 10 -100 0 12 1 9 1 2 4 8 16 32 64 128 256 -289 -20 -130 0 8 1 9 1 2 4 8 16 32 64 128 256 -290 -20 -110 0 8 1 9 1 2 4 8 16 32 64 128 256 -291 -20 -90 0 8 1 9 1 2 4 8 16 32 64 128 256 -292 0 -130 0 8 1 9 1 2 4 8 16 32 64 128 256 -293 0 -90 0 8 1 9 1 2 4 8 16 32 64 128 256 -294 20 -130 0 8 1 9 1 2 4 8 16 32 64 128 256 -295 20 -110 0 8 1 9 1 2 4 8 16 32 64 128 256 -296 20 -90 0 8 1 9 1 2 4 8 16 32 64 128 256 -297 -30 -140 0 4 1 9 1 2 4 8 16 32 64 128 256 -298 -30 -110 0 4 1 9 1 2 4 8 16 32 64 128 256 -299 -30 -80 0 4 1 9 1 2 4 8 16 32 64 128 256 -300 0 -140 0 4 1 9 1 2 4 8 16 32 64 128 256 -301 0 -80 0 4 1 9 1 2 4 8 16 32 64 128 256 -302 30 -140 0 4 1 9 1 2 4 8 16 32 64 128 256 -303 30 -110 0 4 1 9 1 2 4 8 16 32 64 128 256 -304 30 -80 0 4 1 9 1 2 4 8 16 32 64 128 256 -305 -40 -150 0 2 1 9 1 2 4 8 16 32 64 128 256 -306 -40 -110 0 2 1 9 1 2 4 8 16 32 64 128 256 -307 -40 -70 0 2 1 9 1 2 4 8 16 32 64 128 256 -308 0 -150 0 2 1 9 1 2 4 8 16 32 64 128 256 -309 0 -70 0 2 1 9 1 2 4 8 16 32 64 128 256 -310 40 -150 0 2 1 9 1 2 4 8 16 32 64 128 256 -311 40 -110 0 2 1 9 1 2 4 8 16 32 64 128 256 -312 40 -70 0 2 1 9 1 2 4 8 16 32 64 128 256 -313 -50 -160 0 1 1 9 1 2 4 8 16 32 64 128 256 -314 -50 -110 0 1 1 9 1 2 4 8 16 32 64 128 256 -315 -50 -60 0 1 1 9 1 2 4 8 16 32 64 128 256 -316 0 -160 0 1 1 9 1 2 4 8 16 32 64 128 256 -317 0 -60 0 1 1 9 1 2 4 8 16 32 64 128 256 -318 50 -160 0 1 1 9 1 2 4 8 16 32 64 128 256 -319 50 -110 0 1 1 9 1 2 4 8 16 32 64 128 256 -320 50 -60 0 1 1 9 1 2 4 8 16 32 64 128 256 -321 100 -120 0 12 1 9 1 2 4 8 16 32 64 128 256 -322 100 -110 0 12 1 9 1 2 4 8 16 32 64 128 256 -323 100 -100 0 12 1 9 1 2 4 8 16 32 64 128 256 -324 110 -120 0 12 1 9 1 2 4 8 16 32 64 128 256 -325 110 -100 0 12 1 9 1 2 4 8 16 32 64 128 256 -326 120 -120 0 12 1 9 1 2 4 8 16 32 64 128 256 -327 120 -110 0 12 1 9 1 2 4 8 16 32 64 128 256 -328 120 -100 0 12 1 9 1 2 4 8 16 32 64 128 256 -329 90 -130 0 8 1 9 1 2 4 8 16 32 64 128 256 -330 90 -110 0 8 1 9 1 2 4 8 16 32 64 128 256 -331 90 -90 0 8 1 9 1 2 4 8 16 32 64 128 256 -332 110 -130 0 8 1 9 1 2 4 8 16 32 64 128 256 -333 110 -90 0 8 1 9 1 2 4 8 16 32 64 128 256 -334 130 -130 0 8 1 9 1 2 4 8 16 32 64 128 256 -335 130 -110 0 8 1 9 1 2 4 8 16 32 64 128 256 -336 130 -90 0 8 1 9 1 2 4 8 16 32 64 128 256 -337 80 -140 0 4 1 9 1 2 4 8 16 32 64 128 256 -338 80 -110 0 4 1 9 1 2 4 8 16 32 64 128 256 -339 80 -80 0 4 1 9 1 2 4 8 16 32 64 128 256 -340 110 -140 0 4 1 9 1 2 4 8 16 32 64 128 256 -341 110 -80 0 4 1 9 1 2 4 8 16 32 64 128 256 -342 140 -140 0 4 1 9 1 2 4 8 16 32 64 128 256 -343 140 -110 0 4 1 9 1 2 4 8 16 32 64 128 256 -344 140 -80 0 4 1 9 1 2 4 8 16 32 64 128 256 -345 70 -150 0 2 1 9 1 2 4 8 16 32 64 128 256 -346 70 -110 0 2 1 9 1 2 4 8 16 32 64 128 256 -347 70 -70 0 2 1 9 1 2 4 8 16 32 64 128 256 -348 110 -150 0 2 1 9 1 2 4 8 16 32 64 128 256 -349 110 -70 0 2 1 9 1 2 4 8 16 32 64 128 256 -350 150 -150 0 2 1 9 1 2 4 8 16 32 64 128 256 -351 150 -110 0 2 1 9 1 2 4 8 16 32 64 128 256 -352 150 -70 0 2 1 9 1 2 4 8 16 32 64 128 256 -353 60 -160 0 1 1 9 1 2 4 8 16 32 64 128 256 -354 60 -110 0 1 1 9 1 2 4 8 16 32 64 128 256 -355 60 -60 0 1 1 9 1 2 4 8 16 32 64 128 256 -356 110 -160 0 1 1 9 1 2 4 8 16 32 64 128 256 -357 110 -60 0 1 1 9 1 2 4 8 16 32 64 128 256 -358 160 -160 0 1 1 9 1 2 4 8 16 32 64 128 256 -359 160 -110 0 1 1 9 1 2 4 8 16 32 64 128 256 -360 160 -60 0 1 1 9 1 2 4 8 16 32 64 128 256 -361 0 0 0 0 0 0 -362 110 0 0 0 0 0 -363 110 110 0 0 0 0 -364 0 110 0 0 0 0 -365 -110 110 0 0 0 0 -366 -110 0 0 0 0 0 -367 -110 -110 0 0 0 0 -368 0 -110 0 0 0 0 -369 110 -110 0 0 0 0 diff --git a/jsprit-instances/instances/cordeau/p22.res b/jsprit-instances/instances/cordeau/p22.res deleted file mode 100644 index facb7d6a7..000000000 --- a/jsprit-instances/instances/cordeau/p22.res +++ /dev/null @@ -1,37 +0,0 @@ -5702.16 -1 1 196.08 58 0 6 14 22 30 38 320 312 317 36 28 20 12 4 0 -1 2 114.05 50 0 2 10 18 26 17 9 1 0 -1 3 114.05 50 0 7 15 23 31 24 16 8 0 -1 4 114.05 50 0 5 13 21 29 19 11 3 0 -2 1 198.99 60 0 41 49 57 65 73 355 347 339 68 60 52 44 0 -2 2 196.08 58 0 45 53 61 69 77 116 110 118 80 72 64 56 48 0 -2 3 128.48 51 0 47 55 63 71 79 62 54 46 0 -2 4 196.08 58 0 43 51 59 67 75 40 32 39 74 66 58 50 42 0 -3 1 196.08 58 0 82 90 98 106 114 159 152 160 115 107 99 91 83 0 -3 2 128.48 51 0 86 94 102 119 111 103 95 87 0 -3 3 170.71 54 0 88 96 104 112 120 117 109 101 93 85 0 -3 4 96.57 46 0 81 89 108 100 92 84 0 -4 1 128.48 51 0 125 133 141 149 157 144 136 128 0 -4 2 198.99 60 0 127 135 143 151 97 105 113 158 150 142 134 126 0 -4 3 196.08 58 0 121 129 137 145 153 35 27 37 156 148 140 132 124 0 -4 4 196.08 58 0 122 130 138 146 154 199 192 200 155 147 139 131 123 0 -5 1 96.57 46 0 167 175 183 191 174 166 0 -5 2 128.48 51 0 165 173 181 189 197 184 176 168 0 -5 3 196.08 58 0 164 172 180 188 196 237 227 235 193 185 177 169 161 0 -5 4 170.71 54 0 163 171 179 187 195 194 186 178 170 162 0 -6 1 128.48 51 0 202 210 218 226 234 219 211 203 0 -6 2 198.99 60 0 205 213 221 229 182 190 198 240 232 224 216 208 0 -6 3 196.08 58 0 204 212 220 228 236 277 267 275 233 225 217 209 201 0 -6 4 196.08 58 0 206 214 222 230 238 33 25 34 239 231 223 215 207 0 -7 1 96.57 46 0 248 256 269 261 253 245 0 -7 2 128.48 51 0 242 250 258 266 274 259 251 243 0 -7 3 170.71 54 0 241 249 257 265 273 276 268 260 252 244 0 -7 4 196.08 58 0 246 254 262 270 278 313 305 314 279 271 263 255 247 0 -8 1 196.08 58 0 287 295 303 311 319 354 345 353 318 310 302 294 286 0 -8 2 114.05 50 0 285 293 301 309 304 296 288 0 -8 3 198.99 60 0 282 290 298 306 264 272 280 315 307 299 291 283 0 -8 4 128.48 51 0 281 289 297 316 308 300 292 284 0 -9 1 128.48 51 0 321 329 337 356 348 340 332 324 0 -9 2 96.57 46 0 322 330 338 346 331 323 0 -9 3 196.08 58 0 325 333 341 349 357 76 70 78 360 352 344 336 328 0 -9 4 170.71 54 0 327 335 343 351 359 358 350 342 334 326 0 diff --git a/jsprit-instances/instances/cordeau/p23 b/jsprit-instances/instances/cordeau/p23 deleted file mode 100644 index 816235fc6..000000000 --- a/jsprit-instances/instances/cordeau/p23 +++ /dev/null @@ -1,379 +0,0 @@ -2 5 360 9 -180 60 -180 60 -180 60 -180 60 -180 60 -180 60 -180 60 -180 60 -180 60 - 1 -10 -10 0 12 1 9 1 2 4 8 16 32 64 128 256 - 2 -10 0 0 12 1 9 1 2 4 8 16 32 64 128 256 - 3 -10 10 0 12 1 9 1 2 4 8 16 32 64 128 256 - 4 0 -10 0 12 1 9 1 2 4 8 16 32 64 128 256 - 5 0 10 0 12 1 9 1 2 4 8 16 32 64 128 256 - 6 10 -10 0 12 1 9 1 2 4 8 16 32 64 128 256 - 7 10 0 0 12 1 9 1 2 4 8 16 32 64 128 256 - 8 10 10 0 12 1 9 1 2 4 8 16 32 64 128 256 - 9 -20 -20 0 8 1 9 1 2 4 8 16 32 64 128 256 - 10 -20 0 0 8 1 9 1 2 4 8 16 32 64 128 256 - 11 -20 20 0 8 1 9 1 2 4 8 16 32 64 128 256 - 12 0 -20 0 8 1 9 1 2 4 8 16 32 64 128 256 - 13 0 20 0 8 1 9 1 2 4 8 16 32 64 128 256 - 14 20 -20 0 8 1 9 1 2 4 8 16 32 64 128 256 - 15 20 0 0 8 1 9 1 2 4 8 16 32 64 128 256 - 16 20 20 0 8 1 9 1 2 4 8 16 32 64 128 256 - 17 -30 -30 0 4 1 9 1 2 4 8 16 32 64 128 256 - 18 -30 0 0 4 1 9 1 2 4 8 16 32 64 128 256 - 19 -30 30 0 4 1 9 1 2 4 8 16 32 64 128 256 - 20 0 -30 0 4 1 9 1 2 4 8 16 32 64 128 256 - 21 0 30 0 4 1 9 1 2 4 8 16 32 64 128 256 - 22 30 -30 0 4 1 9 1 2 4 8 16 32 64 128 256 - 23 30 0 0 4 1 9 1 2 4 8 16 32 64 128 256 - 24 30 30 0 4 1 9 1 2 4 8 16 32 64 128 256 - 25 -40 -40 0 2 1 9 1 2 4 8 16 32 64 128 256 - 26 -40 0 0 2 1 9 1 2 4 8 16 32 64 128 256 - 27 -40 40 0 2 1 9 1 2 4 8 16 32 64 128 256 - 28 0 -40 0 2 1 9 1 2 4 8 16 32 64 128 256 - 29 0 40 0 2 1 9 1 2 4 8 16 32 64 128 256 - 30 40 -40 0 2 1 9 1 2 4 8 16 32 64 128 256 - 31 40 0 0 2 1 9 1 2 4 8 16 32 64 128 256 - 32 40 40 0 2 1 9 1 2 4 8 16 32 64 128 256 - 33 -50 -50 0 1 1 9 1 2 4 8 16 32 64 128 256 - 34 -50 0 0 1 1 9 1 2 4 8 16 32 64 128 256 - 35 -50 50 0 1 1 9 1 2 4 8 16 32 64 128 256 - 36 0 -50 0 1 1 9 1 2 4 8 16 32 64 128 256 - 37 0 50 0 1 1 9 1 2 4 8 16 32 64 128 256 - 38 50 -50 0 1 1 9 1 2 4 8 16 32 64 128 256 - 39 50 0 0 1 1 9 1 2 4 8 16 32 64 128 256 - 40 50 50 0 1 1 9 1 2 4 8 16 32 64 128 256 - 41 100 -10 0 12 1 9 1 2 4 8 16 32 64 128 256 - 42 100 0 0 12 1 9 1 2 4 8 16 32 64 128 256 - 43 100 10 0 12 1 9 1 2 4 8 16 32 64 128 256 - 44 110 -10 0 12 1 9 1 2 4 8 16 32 64 128 256 - 45 110 10 0 12 1 9 1 2 4 8 16 32 64 128 256 - 46 120 -10 0 12 1 9 1 2 4 8 16 32 64 128 256 - 47 120 0 0 12 1 9 1 2 4 8 16 32 64 128 256 - 48 120 10 0 12 1 9 1 2 4 8 16 32 64 128 256 - 49 90 -20 0 8 1 9 1 2 4 8 16 32 64 128 256 - 50 90 0 0 8 1 9 1 2 4 8 16 32 64 128 256 - 51 90 20 0 8 1 9 1 2 4 8 16 32 64 128 256 - 52 110 -20 0 8 1 9 1 2 4 8 16 32 64 128 256 - 53 110 20 0 8 1 9 1 2 4 8 16 32 64 128 256 - 54 130 -20 0 8 1 9 1 2 4 8 16 32 64 128 256 - 55 130 0 0 8 1 9 1 2 4 8 16 32 64 128 256 - 56 130 20 0 8 1 9 1 2 4 8 16 32 64 128 256 - 57 80 -30 0 4 1 9 1 2 4 8 16 32 64 128 256 - 58 80 0 0 4 1 9 1 2 4 8 16 32 64 128 256 - 59 80 30 0 4 1 9 1 2 4 8 16 32 64 128 256 - 60 110 -30 0 4 1 9 1 2 4 8 16 32 64 128 256 - 61 110 30 0 4 1 9 1 2 4 8 16 32 64 128 256 - 62 140 -30 0 4 1 9 1 2 4 8 16 32 64 128 256 - 63 140 0 0 4 1 9 1 2 4 8 16 32 64 128 256 - 64 140 30 0 4 1 9 1 2 4 8 16 32 64 128 256 - 65 70 -40 0 2 1 9 1 2 4 8 16 32 64 128 256 - 66 70 0 0 2 1 9 1 2 4 8 16 32 64 128 256 - 67 70 40 0 2 1 9 1 2 4 8 16 32 64 128 256 - 68 110 -40 0 2 1 9 1 2 4 8 16 32 64 128 256 - 69 110 40 0 2 1 9 1 2 4 8 16 32 64 128 256 - 70 150 -40 0 2 1 9 1 2 4 8 16 32 64 128 256 - 71 150 0 0 2 1 9 1 2 4 8 16 32 64 128 256 - 72 150 40 0 2 1 9 1 2 4 8 16 32 64 128 256 - 73 60 -50 0 1 1 9 1 2 4 8 16 32 64 128 256 - 74 60 0 0 1 1 9 1 2 4 8 16 32 64 128 256 - 75 60 50 0 1 1 9 1 2 4 8 16 32 64 128 256 - 76 110 -50 0 1 1 9 1 2 4 8 16 32 64 128 256 - 77 110 50 0 1 1 9 1 2 4 8 16 32 64 128 256 - 78 160 -50 0 1 1 9 1 2 4 8 16 32 64 128 256 - 79 160 0 0 1 1 9 1 2 4 8 16 32 64 128 256 - 80 160 50 0 1 1 9 1 2 4 8 16 32 64 128 256 - 81 100 100 0 12 1 9 1 2 4 8 16 32 64 128 256 - 82 100 110 0 12 1 9 1 2 4 8 16 32 64 128 256 - 83 100 120 0 12 1 9 1 2 4 8 16 32 64 128 256 - 84 110 100 0 12 1 9 1 2 4 8 16 32 64 128 256 - 85 110 120 0 12 1 9 1 2 4 8 16 32 64 128 256 - 86 120 100 0 12 1 9 1 2 4 8 16 32 64 128 256 - 87 120 110 0 12 1 9 1 2 4 8 16 32 64 128 256 - 88 120 120 0 12 1 9 1 2 4 8 16 32 64 128 256 - 89 90 90 0 8 1 9 1 2 4 8 16 32 64 128 256 - 90 90 110 0 8 1 9 1 2 4 8 16 32 64 128 256 - 91 90 130 0 8 1 9 1 2 4 8 16 32 64 128 256 - 92 110 90 0 8 1 9 1 2 4 8 16 32 64 128 256 - 93 110 130 0 8 1 9 1 2 4 8 16 32 64 128 256 - 94 130 90 0 8 1 9 1 2 4 8 16 32 64 128 256 - 95 130 110 0 8 1 9 1 2 4 8 16 32 64 128 256 - 96 130 130 0 8 1 9 1 2 4 8 16 32 64 128 256 - 97 80 80 0 4 1 9 1 2 4 8 16 32 64 128 256 - 98 80 110 0 4 1 9 1 2 4 8 16 32 64 128 256 - 99 80 140 0 4 1 9 1 2 4 8 16 32 64 128 256 -100 110 80 0 4 1 9 1 2 4 8 16 32 64 128 256 -101 110 140 0 4 1 9 1 2 4 8 16 32 64 128 256 -102 140 80 0 4 1 9 1 2 4 8 16 32 64 128 256 -103 140 110 0 4 1 9 1 2 4 8 16 32 64 128 256 -104 140 140 0 4 1 9 1 2 4 8 16 32 64 128 256 -105 70 70 0 2 1 9 1 2 4 8 16 32 64 128 256 -106 70 110 0 2 1 9 1 2 4 8 16 32 64 128 256 -107 70 150 0 2 1 9 1 2 4 8 16 32 64 128 256 -108 110 70 0 2 1 9 1 2 4 8 16 32 64 128 256 -109 110 150 0 2 1 9 1 2 4 8 16 32 64 128 256 -110 150 70 0 2 1 9 1 2 4 8 16 32 64 128 256 -111 150 110 0 2 1 9 1 2 4 8 16 32 64 128 256 -112 150 150 0 2 1 9 1 2 4 8 16 32 64 128 256 -113 60 60 0 1 1 9 1 2 4 8 16 32 64 128 256 -114 60 110 0 1 1 9 1 2 4 8 16 32 64 128 256 -115 60 160 0 1 1 9 1 2 4 8 16 32 64 128 256 -116 110 60 0 1 1 9 1 2 4 8 16 32 64 128 256 -117 110 160 0 1 1 9 1 2 4 8 16 32 64 128 256 -118 160 60 0 1 1 9 1 2 4 8 16 32 64 128 256 -119 160 110 0 1 1 9 1 2 4 8 16 32 64 128 256 -120 160 160 0 1 1 9 1 2 4 8 16 32 64 128 256 -121 -10 100 0 12 1 9 1 2 4 8 16 32 64 128 256 -122 -10 110 0 12 1 9 1 2 4 8 16 32 64 128 256 -123 -10 120 0 12 1 9 1 2 4 8 16 32 64 128 256 -124 0 100 0 12 1 9 1 2 4 8 16 32 64 128 256 -125 0 120 0 12 1 9 1 2 4 8 16 32 64 128 256 -126 10 100 0 12 1 9 1 2 4 8 16 32 64 128 256 -127 10 110 0 12 1 9 1 2 4 8 16 32 64 128 256 -128 10 120 0 12 1 9 1 2 4 8 16 32 64 128 256 -129 -20 90 0 8 1 9 1 2 4 8 16 32 64 128 256 -130 -20 110 0 8 1 9 1 2 4 8 16 32 64 128 256 -131 -20 130 0 8 1 9 1 2 4 8 16 32 64 128 256 -132 0 90 0 8 1 9 1 2 4 8 16 32 64 128 256 -133 0 130 0 8 1 9 1 2 4 8 16 32 64 128 256 -134 20 90 0 8 1 9 1 2 4 8 16 32 64 128 256 -135 20 110 0 8 1 9 1 2 4 8 16 32 64 128 256 -136 20 130 0 8 1 9 1 2 4 8 16 32 64 128 256 -137 -30 80 0 4 1 9 1 2 4 8 16 32 64 128 256 -138 -30 110 0 4 1 9 1 2 4 8 16 32 64 128 256 -139 -30 140 0 4 1 9 1 2 4 8 16 32 64 128 256 -140 0 80 0 4 1 9 1 2 4 8 16 32 64 128 256 -141 0 140 0 4 1 9 1 2 4 8 16 32 64 128 256 -142 30 80 0 4 1 9 1 2 4 8 16 32 64 128 256 -143 30 110 0 4 1 9 1 2 4 8 16 32 64 128 256 -144 30 140 0 4 1 9 1 2 4 8 16 32 64 128 256 -145 -40 70 0 2 1 9 1 2 4 8 16 32 64 128 256 -146 -40 110 0 2 1 9 1 2 4 8 16 32 64 128 256 -147 -40 150 0 2 1 9 1 2 4 8 16 32 64 128 256 -148 0 70 0 2 1 9 1 2 4 8 16 32 64 128 256 -149 0 150 0 2 1 9 1 2 4 8 16 32 64 128 256 -150 40 70 0 2 1 9 1 2 4 8 16 32 64 128 256 -151 40 110 0 2 1 9 1 2 4 8 16 32 64 128 256 -152 40 150 0 2 1 9 1 2 4 8 16 32 64 128 256 -153 -50 60 0 1 1 9 1 2 4 8 16 32 64 128 256 -154 -50 110 0 1 1 9 1 2 4 8 16 32 64 128 256 -155 -50 160 0 1 1 9 1 2 4 8 16 32 64 128 256 -156 0 60 0 1 1 9 1 2 4 8 16 32 64 128 256 -157 0 160 0 1 1 9 1 2 4 8 16 32 64 128 256 -158 50 60 0 1 1 9 1 2 4 8 16 32 64 128 256 -159 50 110 0 1 1 9 1 2 4 8 16 32 64 128 256 -160 50 160 0 1 1 9 1 2 4 8 16 32 64 128 256 -161 -120 100 0 12 1 9 1 2 4 8 16 32 64 128 256 -162 -120 110 0 12 1 9 1 2 4 8 16 32 64 128 256 -163 -120 120 0 12 1 9 1 2 4 8 16 32 64 128 256 -164 -110 100 0 12 1 9 1 2 4 8 16 32 64 128 256 -165 -110 120 0 12 1 9 1 2 4 8 16 32 64 128 256 -166 -100 100 0 12 1 9 1 2 4 8 16 32 64 128 256 -167 -100 110 0 12 1 9 1 2 4 8 16 32 64 128 256 -168 -100 120 0 12 1 9 1 2 4 8 16 32 64 128 256 -169 -130 90 0 8 1 9 1 2 4 8 16 32 64 128 256 -170 -130 110 0 8 1 9 1 2 4 8 16 32 64 128 256 -171 -130 130 0 8 1 9 1 2 4 8 16 32 64 128 256 -172 -110 90 0 8 1 9 1 2 4 8 16 32 64 128 256 -173 -110 130 0 8 1 9 1 2 4 8 16 32 64 128 256 -174 -90 90 0 8 1 9 1 2 4 8 16 32 64 128 256 -175 -90 110 0 8 1 9 1 2 4 8 16 32 64 128 256 -176 -90 130 0 8 1 9 1 2 4 8 16 32 64 128 256 -177 -140 80 0 4 1 9 1 2 4 8 16 32 64 128 256 -178 -140 110 0 4 1 9 1 2 4 8 16 32 64 128 256 -179 -140 140 0 4 1 9 1 2 4 8 16 32 64 128 256 -180 -110 80 0 4 1 9 1 2 4 8 16 32 64 128 256 -181 -110 140 0 4 1 9 1 2 4 8 16 32 64 128 256 -182 -80 80 0 4 1 9 1 2 4 8 16 32 64 128 256 -183 -80 110 0 4 1 9 1 2 4 8 16 32 64 128 256 -184 -80 140 0 4 1 9 1 2 4 8 16 32 64 128 256 -185 -150 70 0 2 1 9 1 2 4 8 16 32 64 128 256 -186 -150 110 0 2 1 9 1 2 4 8 16 32 64 128 256 -187 -150 150 0 2 1 9 1 2 4 8 16 32 64 128 256 -188 -110 70 0 2 1 9 1 2 4 8 16 32 64 128 256 -189 -110 150 0 2 1 9 1 2 4 8 16 32 64 128 256 -190 -70 70 0 2 1 9 1 2 4 8 16 32 64 128 256 -191 -70 110 0 2 1 9 1 2 4 8 16 32 64 128 256 -192 -70 150 0 2 1 9 1 2 4 8 16 32 64 128 256 -193 -160 60 0 1 1 9 1 2 4 8 16 32 64 128 256 -194 -160 110 0 1 1 9 1 2 4 8 16 32 64 128 256 -195 -160 160 0 1 1 9 1 2 4 8 16 32 64 128 256 -196 -110 60 0 1 1 9 1 2 4 8 16 32 64 128 256 -197 -110 160 0 1 1 9 1 2 4 8 16 32 64 128 256 -198 -60 60 0 1 1 9 1 2 4 8 16 32 64 128 256 -199 -60 110 0 1 1 9 1 2 4 8 16 32 64 128 256 -200 -60 160 0 1 1 9 1 2 4 8 16 32 64 128 256 -201 -120 -10 0 12 1 9 1 2 4 8 16 32 64 128 256 -202 -120 0 0 12 1 9 1 2 4 8 16 32 64 128 256 -203 -120 10 0 12 1 9 1 2 4 8 16 32 64 128 256 -204 -110 -10 0 12 1 9 1 2 4 8 16 32 64 128 256 -205 -110 10 0 12 1 9 1 2 4 8 16 32 64 128 256 -206 -100 -10 0 12 1 9 1 2 4 8 16 32 64 128 256 -207 -100 0 0 12 1 9 1 2 4 8 16 32 64 128 256 -208 -100 10 0 12 1 9 1 2 4 8 16 32 64 128 256 -209 -130 -20 0 8 1 9 1 2 4 8 16 32 64 128 256 -210 -130 0 0 8 1 9 1 2 4 8 16 32 64 128 256 -211 -130 20 0 8 1 9 1 2 4 8 16 32 64 128 256 -212 -110 -20 0 8 1 9 1 2 4 8 16 32 64 128 256 -213 -110 20 0 8 1 9 1 2 4 8 16 32 64 128 256 -214 -90 -20 0 8 1 9 1 2 4 8 16 32 64 128 256 -215 -90 0 0 8 1 9 1 2 4 8 16 32 64 128 256 -216 -90 20 0 8 1 9 1 2 4 8 16 32 64 128 256 -217 -140 -30 0 4 1 9 1 2 4 8 16 32 64 128 256 -218 -140 0 0 4 1 9 1 2 4 8 16 32 64 128 256 -219 -140 30 0 4 1 9 1 2 4 8 16 32 64 128 256 -220 -110 -30 0 4 1 9 1 2 4 8 16 32 64 128 256 -221 -110 30 0 4 1 9 1 2 4 8 16 32 64 128 256 -222 -80 -30 0 4 1 9 1 2 4 8 16 32 64 128 256 -223 -80 0 0 4 1 9 1 2 4 8 16 32 64 128 256 -224 -80 30 0 4 1 9 1 2 4 8 16 32 64 128 256 -225 -150 -40 0 2 1 9 1 2 4 8 16 32 64 128 256 -226 -150 0 0 2 1 9 1 2 4 8 16 32 64 128 256 -227 -150 40 0 2 1 9 1 2 4 8 16 32 64 128 256 -228 -110 -40 0 2 1 9 1 2 4 8 16 32 64 128 256 -229 -110 40 0 2 1 9 1 2 4 8 16 32 64 128 256 -230 -70 -40 0 2 1 9 1 2 4 8 16 32 64 128 256 -231 -70 0 0 2 1 9 1 2 4 8 16 32 64 128 256 -232 -70 40 0 2 1 9 1 2 4 8 16 32 64 128 256 -233 -160 -50 0 1 1 9 1 2 4 8 16 32 64 128 256 -234 -160 0 0 1 1 9 1 2 4 8 16 32 64 128 256 -235 -160 50 0 1 1 9 1 2 4 8 16 32 64 128 256 -236 -110 -50 0 1 1 9 1 2 4 8 16 32 64 128 256 -237 -110 50 0 1 1 9 1 2 4 8 16 32 64 128 256 -238 -60 -50 0 1 1 9 1 2 4 8 16 32 64 128 256 -239 -60 0 0 1 1 9 1 2 4 8 16 32 64 128 256 -240 -60 50 0 1 1 9 1 2 4 8 16 32 64 128 256 -241 -120 -120 0 12 1 9 1 2 4 8 16 32 64 128 256 -242 -120 -110 0 12 1 9 1 2 4 8 16 32 64 128 256 -243 -120 -100 0 12 1 9 1 2 4 8 16 32 64 128 256 -244 -110 -120 0 12 1 9 1 2 4 8 16 32 64 128 256 -245 -110 -100 0 12 1 9 1 2 4 8 16 32 64 128 256 -246 -100 -120 0 12 1 9 1 2 4 8 16 32 64 128 256 -247 -100 -110 0 12 1 9 1 2 4 8 16 32 64 128 256 -248 -100 -100 0 12 1 9 1 2 4 8 16 32 64 128 256 -249 -130 -130 0 8 1 9 1 2 4 8 16 32 64 128 256 -250 -130 -110 0 8 1 9 1 2 4 8 16 32 64 128 256 -251 -130 -90 0 8 1 9 1 2 4 8 16 32 64 128 256 -252 -110 -130 0 8 1 9 1 2 4 8 16 32 64 128 256 -253 -110 -90 0 8 1 9 1 2 4 8 16 32 64 128 256 -254 -90 -130 0 8 1 9 1 2 4 8 16 32 64 128 256 -255 -90 -110 0 8 1 9 1 2 4 8 16 32 64 128 256 -256 -90 -90 0 8 1 9 1 2 4 8 16 32 64 128 256 -257 -140 -140 0 4 1 9 1 2 4 8 16 32 64 128 256 -258 -140 -110 0 4 1 9 1 2 4 8 16 32 64 128 256 -259 -140 -80 0 4 1 9 1 2 4 8 16 32 64 128 256 -260 -110 -140 0 4 1 9 1 2 4 8 16 32 64 128 256 -261 -110 -80 0 4 1 9 1 2 4 8 16 32 64 128 256 -262 -80 -140 0 4 1 9 1 2 4 8 16 32 64 128 256 -263 -80 -110 0 4 1 9 1 2 4 8 16 32 64 128 256 -264 -80 -80 0 4 1 9 1 2 4 8 16 32 64 128 256 -265 -150 -150 0 2 1 9 1 2 4 8 16 32 64 128 256 -266 -150 -110 0 2 1 9 1 2 4 8 16 32 64 128 256 -267 -150 -70 0 2 1 9 1 2 4 8 16 32 64 128 256 -268 -110 -150 0 2 1 9 1 2 4 8 16 32 64 128 256 -269 -110 -70 0 2 1 9 1 2 4 8 16 32 64 128 256 -270 -70 -150 0 2 1 9 1 2 4 8 16 32 64 128 256 -271 -70 -110 0 2 1 9 1 2 4 8 16 32 64 128 256 -272 -70 -70 0 2 1 9 1 2 4 8 16 32 64 128 256 -273 -160 -160 0 1 1 9 1 2 4 8 16 32 64 128 256 -274 -160 -110 0 1 1 9 1 2 4 8 16 32 64 128 256 -275 -160 -60 0 1 1 9 1 2 4 8 16 32 64 128 256 -276 -110 -160 0 1 1 9 1 2 4 8 16 32 64 128 256 -277 -110 -60 0 1 1 9 1 2 4 8 16 32 64 128 256 -278 -60 -160 0 1 1 9 1 2 4 8 16 32 64 128 256 -279 -60 -110 0 1 1 9 1 2 4 8 16 32 64 128 256 -280 -60 -60 0 1 1 9 1 2 4 8 16 32 64 128 256 -281 -10 -120 0 12 1 9 1 2 4 8 16 32 64 128 256 -282 -10 -110 0 12 1 9 1 2 4 8 16 32 64 128 256 -283 -10 -100 0 12 1 9 1 2 4 8 16 32 64 128 256 -284 0 -120 0 12 1 9 1 2 4 8 16 32 64 128 256 -285 0 -100 0 12 1 9 1 2 4 8 16 32 64 128 256 -286 10 -120 0 12 1 9 1 2 4 8 16 32 64 128 256 -287 10 -110 0 12 1 9 1 2 4 8 16 32 64 128 256 -288 10 -100 0 12 1 9 1 2 4 8 16 32 64 128 256 -289 -20 -130 0 8 1 9 1 2 4 8 16 32 64 128 256 -290 -20 -110 0 8 1 9 1 2 4 8 16 32 64 128 256 -291 -20 -90 0 8 1 9 1 2 4 8 16 32 64 128 256 -292 0 -130 0 8 1 9 1 2 4 8 16 32 64 128 256 -293 0 -90 0 8 1 9 1 2 4 8 16 32 64 128 256 -294 20 -130 0 8 1 9 1 2 4 8 16 32 64 128 256 -295 20 -110 0 8 1 9 1 2 4 8 16 32 64 128 256 -296 20 -90 0 8 1 9 1 2 4 8 16 32 64 128 256 -297 -30 -140 0 4 1 9 1 2 4 8 16 32 64 128 256 -298 -30 -110 0 4 1 9 1 2 4 8 16 32 64 128 256 -299 -30 -80 0 4 1 9 1 2 4 8 16 32 64 128 256 -300 0 -140 0 4 1 9 1 2 4 8 16 32 64 128 256 -301 0 -80 0 4 1 9 1 2 4 8 16 32 64 128 256 -302 30 -140 0 4 1 9 1 2 4 8 16 32 64 128 256 -303 30 -110 0 4 1 9 1 2 4 8 16 32 64 128 256 -304 30 -80 0 4 1 9 1 2 4 8 16 32 64 128 256 -305 -40 -150 0 2 1 9 1 2 4 8 16 32 64 128 256 -306 -40 -110 0 2 1 9 1 2 4 8 16 32 64 128 256 -307 -40 -70 0 2 1 9 1 2 4 8 16 32 64 128 256 -308 0 -150 0 2 1 9 1 2 4 8 16 32 64 128 256 -309 0 -70 0 2 1 9 1 2 4 8 16 32 64 128 256 -310 40 -150 0 2 1 9 1 2 4 8 16 32 64 128 256 -311 40 -110 0 2 1 9 1 2 4 8 16 32 64 128 256 -312 40 -70 0 2 1 9 1 2 4 8 16 32 64 128 256 -313 -50 -160 0 1 1 9 1 2 4 8 16 32 64 128 256 -314 -50 -110 0 1 1 9 1 2 4 8 16 32 64 128 256 -315 -50 -60 0 1 1 9 1 2 4 8 16 32 64 128 256 -316 0 -160 0 1 1 9 1 2 4 8 16 32 64 128 256 -317 0 -60 0 1 1 9 1 2 4 8 16 32 64 128 256 -318 50 -160 0 1 1 9 1 2 4 8 16 32 64 128 256 -319 50 -110 0 1 1 9 1 2 4 8 16 32 64 128 256 -320 50 -60 0 1 1 9 1 2 4 8 16 32 64 128 256 -321 100 -120 0 12 1 9 1 2 4 8 16 32 64 128 256 -322 100 -110 0 12 1 9 1 2 4 8 16 32 64 128 256 -323 100 -100 0 12 1 9 1 2 4 8 16 32 64 128 256 -324 110 -120 0 12 1 9 1 2 4 8 16 32 64 128 256 -325 110 -100 0 12 1 9 1 2 4 8 16 32 64 128 256 -326 120 -120 0 12 1 9 1 2 4 8 16 32 64 128 256 -327 120 -110 0 12 1 9 1 2 4 8 16 32 64 128 256 -328 120 -100 0 12 1 9 1 2 4 8 16 32 64 128 256 -329 90 -130 0 8 1 9 1 2 4 8 16 32 64 128 256 -330 90 -110 0 8 1 9 1 2 4 8 16 32 64 128 256 -331 90 -90 0 8 1 9 1 2 4 8 16 32 64 128 256 -332 110 -130 0 8 1 9 1 2 4 8 16 32 64 128 256 -333 110 -90 0 8 1 9 1 2 4 8 16 32 64 128 256 -334 130 -130 0 8 1 9 1 2 4 8 16 32 64 128 256 -335 130 -110 0 8 1 9 1 2 4 8 16 32 64 128 256 -336 130 -90 0 8 1 9 1 2 4 8 16 32 64 128 256 -337 80 -140 0 4 1 9 1 2 4 8 16 32 64 128 256 -338 80 -110 0 4 1 9 1 2 4 8 16 32 64 128 256 -339 80 -80 0 4 1 9 1 2 4 8 16 32 64 128 256 -340 110 -140 0 4 1 9 1 2 4 8 16 32 64 128 256 -341 110 -80 0 4 1 9 1 2 4 8 16 32 64 128 256 -342 140 -140 0 4 1 9 1 2 4 8 16 32 64 128 256 -343 140 -110 0 4 1 9 1 2 4 8 16 32 64 128 256 -344 140 -80 0 4 1 9 1 2 4 8 16 32 64 128 256 -345 70 -150 0 2 1 9 1 2 4 8 16 32 64 128 256 -346 70 -110 0 2 1 9 1 2 4 8 16 32 64 128 256 -347 70 -70 0 2 1 9 1 2 4 8 16 32 64 128 256 -348 110 -150 0 2 1 9 1 2 4 8 16 32 64 128 256 -349 110 -70 0 2 1 9 1 2 4 8 16 32 64 128 256 -350 150 -150 0 2 1 9 1 2 4 8 16 32 64 128 256 -351 150 -110 0 2 1 9 1 2 4 8 16 32 64 128 256 -352 150 -70 0 2 1 9 1 2 4 8 16 32 64 128 256 -353 60 -160 0 1 1 9 1 2 4 8 16 32 64 128 256 -354 60 -110 0 1 1 9 1 2 4 8 16 32 64 128 256 -355 60 -60 0 1 1 9 1 2 4 8 16 32 64 128 256 -356 110 -160 0 1 1 9 1 2 4 8 16 32 64 128 256 -357 110 -60 0 1 1 9 1 2 4 8 16 32 64 128 256 -358 160 -160 0 1 1 9 1 2 4 8 16 32 64 128 256 -359 160 -110 0 1 1 9 1 2 4 8 16 32 64 128 256 -360 160 -60 0 1 1 9 1 2 4 8 16 32 64 128 256 -361 0 0 0 0 0 0 -362 110 0 0 0 0 0 -363 110 110 0 0 0 0 -364 0 110 0 0 0 0 -365 -110 110 0 0 0 0 -366 -110 0 0 0 0 0 -367 -110 -110 0 0 0 0 -368 0 -110 0 0 0 0 -369 110 -110 0 0 0 0 diff --git a/jsprit-instances/instances/cordeau/p23.res b/jsprit-instances/instances/cordeau/p23.res deleted file mode 100644 index deeeebd14..000000000 --- a/jsprit-instances/instances/cordeau/p23.res +++ /dev/null @@ -1,37 +0,0 @@ -6095.46 -1 1 174.56 54 0 8 16 24 32 40 158 29 21 13 5 0 -1 2 170.71 54 0 3 11 19 27 35 34 26 18 10 2 0 -1 3 161.29 54 0 1 9 17 25 317 36 28 20 12 4 0 -1 4 174.56 54 0 6 14 22 30 38 73 31 23 15 7 0 -2 1 161.29 54 0 41 49 57 65 39 74 66 58 50 42 0 -2 2 161.29 54 0 46 54 62 70 357 76 68 60 52 44 0 -2 3 170.71 54 0 48 56 64 72 80 79 71 63 55 47 0 -2 4 174.56 54 0 43 51 59 67 75 113 69 61 53 45 0 -3 1 170.71 54 0 88 96 104 112 120 117 109 101 93 85 0 -3 2 174.56 54 0 83 91 99 107 115 160 106 98 90 82 0 -3 3 161.29 54 0 81 89 97 105 77 116 108 100 92 84 0 -3 4 170.71 54 0 86 94 102 110 118 119 111 103 95 87 0 -4 1 161.29 54 0 126 134 142 150 37 156 148 140 132 124 0 -4 2 161.29 54 0 128 136 144 152 114 159 151 143 135 127 0 -4 3 170.71 54 0 123 131 139 147 155 157 149 141 133 125 0 -4 4 170.71 54 0 121 129 137 145 153 154 146 138 130 122 0 -5 1 161.29 54 0 166 174 182 190 237 196 188 180 172 164 0 -5 2 170.71 54 0 168 176 184 192 200 199 191 183 175 167 0 -5 3 170.71 54 0 163 171 179 187 195 197 189 181 173 165 0 -5 4 170.71 54 0 161 169 177 185 193 194 186 178 170 162 0 -6 1 170.71 54 0 206 214 222 230 238 239 231 223 215 207 0 -6 2 174.56 54 0 208 216 224 232 240 198 229 221 213 205 0 -6 3 170.71 54 0 203 211 219 227 235 234 226 218 210 202 0 -6 4 170.71 54 0 201 209 217 225 233 236 228 220 212 204 0 -7 1 174.56 54 0 246 254 262 270 278 313 271 263 255 247 0 -7 2 170.71 54 0 248 256 264 272 280 277 269 261 253 245 0 -7 3 170.71 54 0 243 251 259 267 275 274 266 258 250 242 0 -7 4 170.71 54 0 241 249 257 265 273 276 268 260 252 244 0 -8 1 161.29 54 0 281 289 297 305 279 314 306 298 290 282 0 -8 2 170.71 54 0 286 294 302 310 318 316 308 300 292 284 0 -8 3 161.29 54 0 288 296 304 312 354 319 311 303 295 287 0 -8 4 174.56 54 0 283 291 299 307 315 33 309 301 293 285 0 -9 1 174.56 54 0 323 331 339 347 355 320 346 338 330 322 0 -9 2 170.71 54 0 321 329 337 345 353 356 348 340 332 324 0 -9 3 170.71 54 0 326 334 342 350 358 359 351 343 335 327 0 -9 4 174.56 54 0 328 336 344 352 360 78 349 341 333 325 0 diff --git a/jsprit-instances/instances/cordeau/pr01 b/jsprit-instances/instances/cordeau/pr01 deleted file mode 100644 index 1b8c56bff..000000000 --- a/jsprit-instances/instances/cordeau/pr01 +++ /dev/null @@ -1,57 +0,0 @@ -2 1 48 4 -500 200 -500 200 -500 200 -500 200 - 1 -29.730 64.136 2 12 1 4 1 2 4 8 - 2 -30.664 5.463 7 8 1 4 1 2 4 8 - 3 51.642 5.469 21 16 1 4 1 2 4 8 - 4 -13.171 69.336 24 5 1 4 1 2 4 8 - 5 -67.413 68.323 1 12 1 4 1 2 4 8 - 6 48.907 6.274 17 5 1 4 1 2 4 8 - 7 5.243 22.260 6 13 1 4 1 2 4 8 - 8 -65.002 77.234 5 20 1 4 1 2 4 8 - 9 -4.175 -1.569 7 13 1 4 1 2 4 8 - 10 23.029 11.639 1 18 1 4 1 2 4 8 - 11 25.482 6.287 4 7 1 4 1 2 4 8 - 12 -42.615 -26.392 10 6 1 4 1 2 4 8 - 13 -76.672 99.341 2 9 1 4 1 2 4 8 - 14 -20.673 57.892 16 9 1 4 1 2 4 8 - 15 -52.039 6.567 23 4 1 4 1 2 4 8 - 16 -41.376 50.824 18 25 1 4 1 2 4 8 - 17 -91.943 27.588 3 5 1 4 1 2 4 8 - 18 -65.118 30.212 15 17 1 4 1 2 4 8 - 19 18.597 96.716 13 3 1 4 1 2 4 8 - 20 -40.942 83.209 10 16 1 4 1 2 4 8 - 21 -37.756 -33.325 4 25 1 4 1 2 4 8 - 22 23.767 29.083 23 21 1 4 1 2 4 8 - 23 -43.030 20.453 20 14 1 4 1 2 4 8 - 24 -35.297 -24.896 10 19 1 4 1 2 4 8 - 25 -54.755 14.368 4 14 1 4 1 2 4 8 - 26 -49.329 33.374 2 6 1 4 1 2 4 8 - 27 57.404 23.822 23 16 1 4 1 2 4 8 - 28 -22.754 55.408 6 9 1 4 1 2 4 8 - 29 -56.622 73.340 8 20 1 4 1 2 4 8 - 30 -38.562 -3.705 10 13 1 4 1 2 4 8 - 31 -16.779 19.537 7 10 1 4 1 2 4 8 - 32 -11.560 11.615 1 16 1 4 1 2 4 8 - 33 -46.545 97.974 21 19 1 4 1 2 4 8 - 34 16.229 9.320 6 22 1 4 1 2 4 8 - 35 1.294 7.349 4 14 1 4 1 2 4 8 - 36 -26.404 29.529 13 10 1 4 1 2 4 8 - 37 4.352 14.685 9 11 1 4 1 2 4 8 - 38 -50.665 -23.126 22 15 1 4 1 2 4 8 - 39 -22.833 -9.814 22 13 1 4 1 2 4 8 - 40 -71.100 -18.616 18 15 1 4 1 2 4 8 - 41 -7.849 32.074 10 8 1 4 1 2 4 8 - 42 11.877 -24.933 25 22 1 4 1 2 4 8 - 43 -18.927 -23.730 23 24 1 4 1 2 4 8 - 44 -11.920 11.755 4 3 1 4 1 2 4 8 - 45 29.840 11.633 9 25 1 4 1 2 4 8 - 46 12.268 -55.811 17 19 1 4 1 2 4 8 - 47 -37.933 -21.613 10 21 1 4 1 2 4 8 - 48 42.883 -2.966 17 10 1 4 1 2 4 8 - 49 4.163 13.559 0 0 0 0 - 50 21.387 17.105 0 0 0 0 - 51 -36.118 49.097 0 0 0 0 - 52 -31.201 0.235 0 0 0 0 diff --git a/jsprit-instances/instances/cordeau/pr01.res b/jsprit-instances/instances/cordeau/pr01.res deleted file mode 100644 index cb71726e8..000000000 --- a/jsprit-instances/instances/cordeau/pr01.res +++ /dev/null @@ -1,5 +0,0 @@ -861.32 -1 1 375.24 176.00 49 37 7 41 36 31 44 32 39 43 46 42 9 35 49 -2 1 249.26 140.00 50 22 27 3 6 48 45 11 10 34 50 -3 1 398.23 159.00 51 1 28 14 4 19 20 33 13 8 5 29 16 51 -4 1 391.59 182.00 52 2 15 25 23 26 18 17 40 38 12 21 24 47 30 52 \ No newline at end of file diff --git a/jsprit-instances/instances/cordeau/pr02 b/jsprit-instances/instances/cordeau/pr02 deleted file mode 100644 index 0e397ef2c..000000000 --- a/jsprit-instances/instances/cordeau/pr02 +++ /dev/null @@ -1,105 +0,0 @@ -2 2 96 4 -480 195 -480 195 -480 195 -480 195 - 1 33.588 30.750 12 4 1 4 1 2 4 8 - 2 48.828 65.314 1 12 1 4 1 2 4 8 - 3 86.176 59.344 1 3 1 4 1 2 4 8 - 4 39.270 -33.057 15 15 1 4 1 2 4 8 - 5 -23.370 86.853 10 13 1 4 1 2 4 8 - 6 48.132 95.593 12 20 1 4 1 2 4 8 - 7 -16.357 93.311 15 21 1 4 1 2 4 8 - 8 -57.703 -65.601 16 4 1 4 1 2 4 8 - 9 7.147 32.684 18 25 1 4 1 2 4 8 - 10 42.950 68.701 9 21 1 4 1 2 4 8 - 11 37.085 -2.112 5 7 1 4 1 2 4 8 - 12 77.759 55.817 19 3 1 4 1 2 4 8 - 13 -17.462 -56.567 11 9 1 4 1 2 4 8 - 14 58.575 59.888 12 5 1 4 1 2 4 8 - 15 57.776 15.344 13 20 1 4 1 2 4 8 - 16 -22.327 36.072 8 21 1 4 1 2 4 8 - 17 -7.080 30.493 14 19 1 4 1 2 4 8 - 18 55.658 60.425 9 2 1 4 1 2 4 8 - 19 -14.307 11.456 2 16 1 4 1 2 4 8 - 20 -29.724 24.268 25 18 1 4 1 2 4 8 - 21 43.219 0.739 6 24 1 4 1 2 4 8 - 22 45.184 35.474 16 24 1 4 1 2 4 8 - 23 64.484 2.240 18 8 1 4 1 2 4 8 - 24 55.078 72.241 4 16 1 4 1 2 4 8 - 25 16.925 15.741 17 19 1 4 1 2 4 8 - 26 45.038 -3.723 4 12 1 4 1 2 4 8 - 27 -76.782 5.939 22 9 1 4 1 2 4 8 - 28 36.169 0.256 12 3 1 4 1 2 4 8 - 29 29.218 8.936 13 15 1 4 1 2 4 8 - 30 65.057 5.225 5 4 1 4 1 2 4 8 - 31 42.175 -22.284 24 24 1 4 1 2 4 8 - 32 25.574 31.726 12 22 1 4 1 2 4 8 - 33 31.561 37.262 16 14 1 4 1 2 4 8 - 34 66.498 -54.169 8 11 1 4 1 2 4 8 - 35 46.576 -17.938 10 20 1 4 1 2 4 8 - 36 65.063 40.875 15 5 1 4 1 2 4 8 - 37 -2.716 24.768 21 11 1 4 1 2 4 8 - 38 -40.002 3.870 5 12 1 4 1 2 4 8 - 39 -73.505 57.043 9 7 1 4 1 2 4 8 - 40 81.146 -25.714 5 1 1 4 1 2 4 8 - 41 12.006 -7.965 9 23 1 4 1 2 4 8 - 42 42.761 38.092 20 13 1 4 1 2 4 8 - 43 3.857 -23.181 14 4 1 4 1 2 4 8 - 44 -7.367 24.390 24 23 1 4 1 2 4 8 - 45 35.944 -11.835 23 17 1 4 1 2 4 8 - 46 52.075 9.692 12 13 1 4 1 2 4 8 - 47 30.725 30.701 13 9 1 4 1 2 4 8 - 48 41.223 77.924 19 10 1 4 1 2 4 8 - 49 68.884 -40.546 21 22 1 4 1 2 4 8 - 50 76.312 86.670 5 21 1 4 1 2 4 8 - 51 63.934 78.540 9 13 1 4 1 2 4 8 - 52 29.150 -9.961 23 25 1 4 1 2 4 8 - 53 85.522 39.954 8 8 1 4 1 2 4 8 - 54 31.775 3.870 5 20 1 4 1 2 4 8 - 55 -20.544 19.086 8 3 1 4 1 2 4 8 - 56 55.353 43.817 10 4 1 4 1 2 4 8 - 57 35.406 10.278 9 13 1 4 1 2 4 8 - 58 25.464 -0.287 21 18 1 4 1 2 4 8 - 59 12.396 0.244 12 1 1 4 1 2 4 8 - 60 18.359 20.917 8 10 1 4 1 2 4 8 - 61 27.960 -15.039 4 16 1 4 1 2 4 8 - 62 -3.192 19.879 14 9 1 4 1 2 4 8 - 63 9.332 -41.351 19 13 1 4 1 2 4 8 - 64 -20.581 38.177 23 23 1 4 1 2 4 8 - 65 27.820 28.729 4 14 1 4 1 2 4 8 - 66 59.027 42.310 9 5 1 4 1 2 4 8 - 67 56.311 58.734 1 1 1 4 1 2 4 8 - 68 -51.654 -0.342 21 6 1 4 1 2 4 8 - 69 2.576 32.721 20 20 1 4 1 2 4 8 - 70 15.131 -3.046 24 10 1 4 1 2 4 8 - 71 66.595 34.937 22 19 1 4 1 2 4 8 - 72 19.476 20.142 25 24 1 4 1 2 4 8 - 73 -1.172 20.648 19 3 1 4 1 2 4 8 - 74 -21.204 13.660 14 5 1 4 1 2 4 8 - 75 98.846 1.257 11 13 1 4 1 2 4 8 - 76 82.593 72.003 22 5 1 4 1 2 4 8 - 77 30.017 -30.896 25 4 1 4 1 2 4 8 - 78 33.228 41.663 5 12 1 4 1 2 4 8 - 79 39.490 -8.539 10 11 1 4 1 2 4 8 - 80 54.498 70.813 4 20 1 4 1 2 4 8 - 81 3.058 10.248 4 13 1 4 1 2 4 8 - 82 51.831 -16.870 6 1 1 4 1 2 4 8 - 83 76.416 11.346 22 3 1 4 1 2 4 8 - 84 5.243 0.238 17 2 1 4 1 2 4 8 - 85 50.592 34.247 22 23 1 4 1 2 4 8 - 86 -5.231 -2.081 3 8 1 4 1 2 4 8 - 87 24.194 25.836 25 25 1 4 1 2 4 8 - 88 33.630 37.585 22 18 1 4 1 2 4 8 - 89 31.445 -7.001 23 4 1 4 1 2 4 8 - 90 30.707 -28.168 16 5 1 4 1 2 4 8 - 91 49.860 1.038 13 21 1 4 1 2 4 8 - 92 -35.767 14.142 23 23 1 4 1 2 4 8 - 93 -29.309 4.889 1 19 1 4 1 2 4 8 - 94 19.049 41.974 11 2 1 4 1 2 4 8 - 95 27.600 13.934 19 21 1 4 1 2 4 8 - 96 52.832 50.684 21 10 1 4 1 2 4 8 - 97 6.229 10.590 0 0 0 0 - 98 32.663 44.730 0 0 0 0 - 99 48.807 48.792 0 0 0 0 -100 33.179 -4.968 0 0 0 0 diff --git a/jsprit-instances/instances/cordeau/pr02.res b/jsprit-instances/instances/cordeau/pr02.res deleted file mode 100644 index 08c33840d..000000000 --- a/jsprit-instances/instances/cordeau/pr02.res +++ /dev/null @@ -1,9 +0,0 @@ -1307.61 -1 1 479.98 164.00 97 81 86 19 74 93 92 38 68 27 8 13 63 43 41 97 -1 2 341.16 176.00 97 73 62 37 25 60 72 95 29 57 54 58 70 59 84 97 -2 1 469.05 195.00 98 7 5 39 64 16 20 55 44 17 69 9 94 98 -2 2 240.08 178.00 98 78 88 33 32 87 65 47 1 85 22 42 98 -3 1 403.44 193.00 99 56 66 36 71 53 12 3 76 50 51 6 48 10 2 80 24 18 14 67 99 -3 2 29.90 10.00 99 96 99 -4 1 408.91 194.00 100 79 35 82 34 49 40 75 83 23 30 15 46 91 26 21 28 11 100 -4 2 221.09 110.00 100 89 52 61 90 77 4 31 45 100 \ No newline at end of file diff --git a/jsprit-instances/instances/cordeau/pr03 b/jsprit-instances/instances/cordeau/pr03 deleted file mode 100644 index fe337dcba..000000000 --- a/jsprit-instances/instances/cordeau/pr03 +++ /dev/null @@ -1,153 +0,0 @@ -2 3 144 4 -460 190 -460 190 -460 190 -460 190 - 1 -55.280 -24.371 25 9 1 4 1 2 4 8 - 2 -48.297 53.314 13 22 1 4 1 2 4 8 - 3 -49.072 -38.489 20 10 1 4 1 2 4 8 - 4 25.311 -18.561 16 24 1 4 1 2 4 8 - 5 -24.469 -3.815 4 25 1 4 1 2 4 8 - 6 24.591 -17.896 2 6 1 4 1 2 4 8 - 7 -10.419 60.364 7 22 1 4 1 2 4 8 - 8 38.177 -35.175 15 1 1 4 1 2 4 8 - 9 -68.280 93.073 10 19 1 4 1 2 4 8 - 10 -30.792 -57.336 4 19 1 4 1 2 4 8 - 11 -37.061 -12.122 19 5 1 4 1 2 4 8 - 12 -15.741 -47.638 10 9 1 4 1 2 4 8 - 13 -63.379 -22.919 15 8 1 4 1 2 4 8 - 14 -43.109 -43.439 4 14 1 4 1 2 4 8 - 15 -25.623 13.599 17 4 1 4 1 2 4 8 - 16 -2.625 16.632 4 7 1 4 1 2 4 8 - 17 -41.577 -28.497 3 10 1 4 1 2 4 8 - 18 2.081 12.885 9 22 1 4 1 2 4 8 - 19 3.925 -47.845 25 17 1 4 1 2 4 8 - 20 -83.295 26.324 14 10 1 4 1 2 4 8 - 21 -6.458 26.355 23 8 1 4 1 2 4 8 - 22 3.290 6.732 7 14 1 4 1 2 4 8 - 23 -34.869 30.426 7 12 1 4 1 2 4 8 - 24 15.546 -36.273 1 17 1 4 1 2 4 8 - 25 12.842 5.127 10 19 1 4 1 2 4 8 - 26 -48.450 -24.426 15 25 1 4 1 2 4 8 - 27 -88.538 -10.461 1 25 1 4 1 2 4 8 - 28 -29.773 0.995 2 6 1 4 1 2 4 8 - 29 9.827 38.416 9 21 1 4 1 2 4 8 - 30 1.410 92.938 10 3 1 4 1 2 4 8 - 31 -79.303 15.381 2 19 1 4 1 2 4 8 - 32 -30.652 40.063 23 16 1 4 1 2 4 8 - 33 18.927 21.637 15 21 1 4 1 2 4 8 - 34 45.087 -59.906 13 17 1 4 1 2 4 8 - 35 -34.949 -3.815 16 19 1 4 1 2 4 8 - 36 81.201 -74.744 21 6 1 4 1 2 4 8 - 37 15.594 -28.455 1 10 1 4 1 2 4 8 - 38 -72.192 29.547 18 22 1 4 1 2 4 8 - 39 -42.914 -22.675 17 17 1 4 1 2 4 8 - 40 -76.392 -57.489 13 16 1 4 1 2 4 8 - 41 -28.540 12.073 5 5 1 4 1 2 4 8 - 42 -61.389 26.526 23 1 1 4 1 2 4 8 - 43 -8.472 12.616 20 21 1 4 1 2 4 8 - 44 -61.475 33.392 1 20 1 4 1 2 4 8 - 45 -34.674 -27.588 2 6 1 4 1 2 4 8 - 46 10.315 -12.518 15 1 1 4 1 2 4 8 - 47 -83.014 77.002 20 11 1 4 1 2 4 8 - 48 -40.417 49.988 9 22 1 4 1 2 4 8 - 49 83.832 33.905 13 25 1 4 1 2 4 8 - 50 -20.563 -75.830 4 18 1 4 1 2 4 8 - 51 15.442 -18.719 15 9 1 4 1 2 4 8 - 52 -59.937 -65.802 5 23 1 4 1 2 4 8 - 53 5.151 47.815 8 17 1 4 1 2 4 8 - 54 46.008 14.990 19 4 1 4 1 2 4 8 - 55 82.977 -1.660 16 1 1 4 1 2 4 8 - 56 39.893 -38.916 11 14 1 4 1 2 4 8 - 57 90.839 -83.539 23 11 1 4 1 2 4 8 - 58 7.068 0.067 14 7 1 4 1 2 4 8 - 59 18.958 40.088 24 21 1 4 1 2 4 8 - 60 -80.487 58.209 5 3 1 4 1 2 4 8 - 61 64.459 -62.946 5 18 1 4 1 2 4 8 - 62 -43.616 -26.117 23 5 1 4 1 2 4 8 - 63 -18.408 10.303 3 6 1 4 1 2 4 8 - 64 -43.921 63.251 10 22 1 4 1 2 4 8 - 65 11.353 26.221 23 13 1 4 1 2 4 8 - 66 -6.995 38.239 23 17 1 4 1 2 4 8 - 67 74.084 -34.216 20 5 1 4 1 2 4 8 - 68 14.301 -0.800 5 7 1 4 1 2 4 8 - 69 -94.141 -48.779 14 1 1 4 1 2 4 8 - 70 15.332 -42.169 1 3 1 4 1 2 4 8 - 71 -46.637 -16.461 10 10 1 4 1 2 4 8 - 72 -0.958 -81.000 3 5 1 4 1 2 4 8 - 73 -37.445 -42.505 4 1 1 4 1 2 4 8 - 74 -3.680 -69.073 23 17 1 4 1 2 4 8 - 75 34.894 -20.898 21 14 1 4 1 2 4 8 - 76 45.544 51.410 3 4 1 4 1 2 4 8 - 77 -31.927 88.239 21 10 1 4 1 2 4 8 - 78 -13.580 -26.959 25 25 1 4 1 2 4 8 - 79 12.653 -48.340 5 11 1 4 1 2 4 8 - 80 -46.179 -38.269 11 16 1 4 1 2 4 8 - 81 -29.620 35.083 10 25 1 4 1 2 4 8 - 82 13.696 43.988 5 20 1 4 1 2 4 8 - 83 38.342 -46.338 3 3 1 4 1 2 4 8 - 84 -26.227 24.506 13 7 1 4 1 2 4 8 - 85 90.009 -43.640 19 2 1 4 1 2 4 8 - 86 -6.995 22.522 13 6 1 4 1 2 4 8 - 87 -29.993 -28.851 8 14 1 4 1 2 4 8 - 88 -56.268 -64.740 13 14 1 4 1 2 4 8 - 89 -87.415 90.796 15 2 1 4 1 2 4 8 - 90 -5.762 54.034 10 15 1 4 1 2 4 8 - 91 -34.845 -27.185 4 22 1 4 1 2 4 8 - 92 -16.479 16.180 23 4 1 4 1 2 4 8 - 93 23.712 29.492 23 22 1 4 1 2 4 8 - 94 -40.991 46.594 14 19 1 4 1 2 4 8 - 95 -53.516 -21.619 20 5 1 4 1 2 4 8 - 96 -17.560 37.494 3 10 1 4 1 2 4 8 - 97 -37.311 56.836 5 4 1 4 1 2 4 8 - 98 71.515 22.510 16 7 1 4 1 2 4 8 - 99 -41.864 27.710 21 11 1 4 1 2 4 8 -100 14.819 -82.117 4 14 1 4 1 2 4 8 -101 30.316 -55.322 2 2 1 4 1 2 4 8 -102 -39.172 47.998 11 12 1 4 1 2 4 8 -103 -94.415 15.192 15 12 1 4 1 2 4 8 -104 -7.806 11.273 16 24 1 4 1 2 4 8 -105 28.571 -49.908 3 8 1 4 1 2 4 8 -106 -20.654 24.554 21 4 1 4 1 2 4 8 -107 -30.963 -18.903 21 25 1 4 1 2 4 8 -108 1.721 -20.447 25 6 1 4 1 2 4 8 -109 -31.012 -21.106 12 9 1 4 1 2 4 8 -110 -85.718 -28.015 21 23 1 4 1 2 4 8 -111 58.826 -63.043 6 15 1 4 1 2 4 8 -112 -15.753 -52.686 2 7 1 4 1 2 4 8 -113 -71.661 51.184 24 6 1 4 1 2 4 8 -114 -92.633 -6.598 21 5 1 4 1 2 4 8 -115 33.508 -49.255 24 12 1 4 1 2 4 8 -116 59.314 54.095 11 3 1 4 1 2 4 8 -117 30.737 -28.436 12 22 1 4 1 2 4 8 -118 -55.896 18.457 22 18 1 4 1 2 4 8 -119 -89.960 -39.532 19 16 1 4 1 2 4 8 -120 36.438 20.819 8 5 1 4 1 2 4 8 -121 -53.674 -56.427 9 1 1 4 1 2 4 8 -122 -31.866 32.538 10 8 1 4 1 2 4 8 -123 5.658 12.756 5 20 1 4 1 2 4 8 -124 -52.905 42.804 14 17 1 4 1 2 4 8 -125 47.131 -45.465 7 11 1 4 1 2 4 8 -126 30.792 9.869 5 8 1 4 1 2 4 8 -127 -45.209 -56.293 22 15 1 4 1 2 4 8 -128 10.919 13.306 5 16 1 4 1 2 4 8 -129 -32.990 -34.003 1 6 1 4 1 2 4 8 -130 -40.869 30.579 9 24 1 4 1 2 4 8 -131 -69.348 80.408 16 10 1 4 1 2 4 8 -132 -58.966 -29.541 14 4 1 4 1 2 4 8 -133 -36.847 -33.710 21 10 1 4 1 2 4 8 -134 -21.820 65.369 8 17 1 4 1 2 4 8 -135 22.980 -41.010 7 5 1 4 1 2 4 8 -136 -77.557 59.814 24 14 1 4 1 2 4 8 -137 -47.205 67.725 24 16 1 4 1 2 4 8 -138 -21.606 35.168 16 11 1 4 1 2 4 8 -139 -55.676 -31.384 4 25 1 4 1 2 4 8 -140 -85.229 88.788 7 4 1 4 1 2 4 8 -141 -3.918 -63.525 13 12 1 4 1 2 4 8 -142 -58.557 59.375 25 19 1 4 1 2 4 8 -143 -24.542 14.935 10 6 1 4 1 2 4 8 -144 -48.779 16.968 24 23 1 4 1 2 4 8 -145 -40.082 -24.780 0 0 0 0 -146 24.292 -27.704 0 0 0 0 -147 -45.877 41.092 0 0 0 0 -148 -11.896 15.875 0 0 0 0 diff --git a/jsprit-instances/instances/cordeau/pr03.res b/jsprit-instances/instances/cordeau/pr03.res deleted file mode 100644 index 991f72695..000000000 --- a/jsprit-instances/instances/cordeau/pr03.res +++ /dev/null @@ -1,13 +0,0 @@ -1806.60 -1 1 406.31 183.00 145 95 13 27 114 110 119 69 40 52 88 121 127 14 73 129 133 145 -1 2 168.26 104.00 145 62 26 1 132 139 3 80 17 145 -1 3 196.57 158.00 145 91 45 87 109 107 5 28 35 11 71 39 145 -2 1 445.26 144.00 146 4 6 126 54 120 33 93 76 116 49 98 55 75 146 -2 2 402.12 190.00 146 24 70 79 19 141 74 100 72 50 10 112 12 78 108 46 51 146 -2 3 430.42 162.00 146 117 8 56 125 67 85 57 36 61 111 34 83 115 101 105 135 37 146 -3 1 236.54 138.00 147 32 81 122 23 130 99 144 118 42 147 -3 2 327.19 184.00 147 2 64 137 77 30 90 7 134 97 48 102 94 147 -3 3 440.90 188.00 147 44 38 31 103 20 113 60 136 47 140 89 9 131 142 124 147 -4 1 -0.00 0.00 148 148 -4 2 389.17 180.00 148 92 63 41 15 143 84 106 138 96 66 53 82 59 29 65 21 86 148 -4 3 166.85 157.00 148 43 104 22 58 68 25 128 123 18 16 148 \ No newline at end of file diff --git a/jsprit-instances/instances/cordeau/pr04 b/jsprit-instances/instances/cordeau/pr04 deleted file mode 100644 index ce58d9615..000000000 --- a/jsprit-instances/instances/cordeau/pr04 +++ /dev/null @@ -1,201 +0,0 @@ -2 4 192 4 -440 185 -440 185 -440 185 -440 185 - 1 -44.629 -55.640 6 11 1 4 1 2 4 8 - 2 36.096 64.935 16 11 1 4 1 2 4 8 - 3 -25.470 44.580 7 23 1 4 1 2 4 8 - 4 -33.954 -73.059 20 16 1 4 1 2 4 8 - 5 45.654 35.730 7 16 1 4 1 2 4 8 - 6 14.954 -36.719 8 2 1 4 1 2 4 8 - 7 -1.477 47.205 4 1 1 4 1 2 4 8 - 8 2.155 -40.912 23 25 1 4 1 2 4 8 - 9 22.992 1.398 4 24 1 4 1 2 4 8 - 10 -28.857 5.957 5 14 1 4 1 2 4 8 - 11 -48.120 94.116 15 6 1 4 1 2 4 8 - 12 7.239 17.322 12 20 1 4 1 2 4 8 - 13 4.614 27.051 12 10 1 4 1 2 4 8 - 14 -13.971 28.198 18 11 1 4 1 2 4 8 - 15 12.946 -11.688 19 2 1 4 1 2 4 8 - 16 -36.670 23.102 17 22 1 4 1 2 4 8 - 17 -4.224 -49.310 2 2 1 4 1 2 4 8 - 18 1.093 -7.135 15 12 1 4 1 2 4 8 - 19 -56.958 27.905 10 9 1 4 1 2 4 8 - 20 -80.994 -77.686 3 21 1 4 1 2 4 8 - 21 72.260 59.027 24 10 1 4 1 2 4 8 - 22 -21.655 1.636 1 13 1 4 1 2 4 8 - 23 -20.154 -62.415 22 25 1 4 1 2 4 8 - 24 -48.157 6.287 22 9 1 4 1 2 4 8 - 25 -5.078 61.597 17 19 1 4 1 2 4 8 - 26 17.145 -47.046 7 22 1 4 1 2 4 8 - 27 -16.064 8.557 11 4 1 4 1 2 4 8 - 28 6.683 -27.069 4 4 1 4 1 2 4 8 - 29 15.027 -34.979 15 7 1 4 1 2 4 8 - 30 37.946 73.914 15 20 1 4 1 2 4 8 - 31 -41.199 -43.018 9 17 1 4 1 2 4 8 - 32 32.538 11.786 15 19 1 4 1 2 4 8 - 33 -20.306 -20.239 1 12 1 4 1 2 4 8 - 34 -35.480 19.135 13 2 1 4 1 2 4 8 - 35 58.038 56.659 17 13 1 4 1 2 4 8 - 36 -36.694 -6.256 17 24 1 4 1 2 4 8 - 37 0.446 -46.735 25 22 1 4 1 2 4 8 - 38 -19.690 38.977 5 17 1 4 1 2 4 8 - 39 -47.339 20.911 25 19 1 4 1 2 4 8 - 40 -79.236 -57.678 2 4 1 4 1 2 4 8 - 41 5.597 -34.076 9 12 1 4 1 2 4 8 - 42 34.454 -8.289 7 22 1 4 1 2 4 8 - 43 18.500 -51.154 5 2 1 4 1 2 4 8 - 44 -4.346 -44.525 3 19 1 4 1 2 4 8 - 45 -14.148 -74.164 17 3 1 4 1 2 4 8 - 46 19.867 77.515 12 5 1 4 1 2 4 8 - 47 -50.079 17.871 21 22 1 4 1 2 4 8 - 48 42.786 -79.883 18 6 1 4 1 2 4 8 - 49 1.520 -29.034 8 9 1 4 1 2 4 8 - 50 14.728 -3.436 14 8 1 4 1 2 4 8 - 51 -26.166 -48.999 22 24 1 4 1 2 4 8 - 52 -63.873 -5.273 16 15 1 4 1 2 4 8 - 53 -54.138 7.086 21 16 1 4 1 2 4 8 - 54 17.932 -34.094 7 9 1 4 1 2 4 8 - 55 -98.706 34.552 12 1 1 4 1 2 4 8 - 56 28.802 -8.582 2 18 1 4 1 2 4 8 - 57 2.716 90.594 5 17 1 4 1 2 4 8 - 58 -31.024 48.938 3 18 1 4 1 2 4 8 - 59 -46.545 42.316 11 2 1 4 1 2 4 8 - 60 27.289 58.179 2 25 1 4 1 2 4 8 - 61 28.815 -28.027 7 21 1 4 1 2 4 8 - 62 -26.099 11.328 20 19 1 4 1 2 4 8 - 63 0.537 -26.221 7 10 1 4 1 2 4 8 - 64 -50.458 7.812 11 2 1 4 1 2 4 8 - 65 30.005 19.092 24 21 1 4 1 2 4 8 - 66 -12.604 22.058 15 20 1 4 1 2 4 8 - 67 22.009 -8.636 5 21 1 4 1 2 4 8 - 68 8.942 2.875 25 2 1 4 1 2 4 8 - 69 -19.812 0.922 12 6 1 4 1 2 4 8 - 70 -4.230 31.250 22 2 1 4 1 2 4 8 - 71 17.975 -0.409 11 12 1 4 1 2 4 8 - 72 -2.350 42.938 16 12 1 4 1 2 4 8 - 73 -16.516 68.085 10 5 1 4 1 2 4 8 - 74 -1.190 42.023 3 5 1 4 1 2 4 8 - 75 56.635 -44.019 10 8 1 4 1 2 4 8 - 76 57.483 35.504 17 15 1 4 1 2 4 8 - 77 -26.099 7.477 2 8 1 4 1 2 4 8 - 78 7.489 -57.239 21 7 1 4 1 2 4 8 - 79 -22.095 55.780 16 14 1 4 1 2 4 8 - 80 19.867 38.824 6 18 1 4 1 2 4 8 - 81 5.310 49.219 12 17 1 4 1 2 4 8 - 82 15.155 6.299 23 5 1 4 1 2 4 8 - 83 5.481 -31.500 23 6 1 4 1 2 4 8 - 84 7.959 -28.662 18 9 1 4 1 2 4 8 - 85 -75.812 4.010 18 24 1 4 1 2 4 8 - 86 -43.671 -61.646 14 13 1 4 1 2 4 8 - 87 -2.576 -62.140 2 5 1 4 1 2 4 8 - 88 -18.842 -36.884 11 4 1 4 1 2 4 8 - 89 20.844 21.167 24 22 1 4 1 2 4 8 - 90 3.137 -19.220 14 24 1 4 1 2 4 8 - 91 -20.361 18.878 3 25 1 4 1 2 4 8 - 92 -0.897 -54.938 21 9 1 4 1 2 4 8 - 93 -29.553 9.277 8 8 1 4 1 2 4 8 - 94 5.048 -35.046 19 8 1 4 1 2 4 8 - 95 27.759 48.712 7 25 1 4 1 2 4 8 - 96 12.079 -42.346 19 7 1 4 1 2 4 8 - 97 -51.270 41.144 23 24 1 4 1 2 4 8 - 98 -29.077 4.291 8 16 1 4 1 2 4 8 - 99 -18.555 -14.819 18 15 1 4 1 2 4 8 -100 7.855 -49.451 7 7 1 4 1 2 4 8 -101 -19.116 -32.086 1 17 1 4 1 2 4 8 -102 17.651 -52.271 9 9 1 4 1 2 4 8 -103 16.907 -62.964 5 14 1 4 1 2 4 8 -104 18.988 6.219 23 20 1 4 1 2 4 8 -105 -68.878 -64.539 18 6 1 4 1 2 4 8 -106 -13.361 20.264 5 17 1 4 1 2 4 8 -107 -44.440 63.721 17 23 1 4 1 2 4 8 -108 -6.500 71.436 9 14 1 4 1 2 4 8 -109 -51.978 25.409 19 19 1 4 1 2 4 8 -110 -0.739 59.491 20 21 1 4 1 2 4 8 -111 -64.679 83.038 1 6 1 4 1 2 4 8 -112 -11.273 -35.944 18 1 1 4 1 2 4 8 -113 -16.864 7.776 15 22 1 4 1 2 4 8 -114 19.843 -49.805 10 7 1 4 1 2 4 8 -115 -16.284 -2.936 8 14 1 4 1 2 4 8 -116 8.356 67.041 14 7 1 4 1 2 4 8 -117 30.878 24.316 15 25 1 4 1 2 4 8 -118 93.524 -20.233 17 17 1 4 1 2 4 8 -119 -9.332 -56.177 9 10 1 4 1 2 4 8 -120 -34.442 -63.312 13 23 1 4 1 2 4 8 -121 20.941 -5.646 18 22 1 4 1 2 4 8 -122 -3.418 89.594 20 3 1 4 1 2 4 8 -123 -18.738 45.227 8 14 1 4 1 2 4 8 -124 2.435 -30.524 2 14 1 4 1 2 4 8 -125 -28.864 56.616 7 2 1 4 1 2 4 8 -126 76.880 -29.901 6 2 1 4 1 2 4 8 -127 -90.466 10.278 12 21 1 4 1 2 4 8 -128 -35.101 46.545 12 10 1 4 1 2 4 8 -129 -48.395 43.854 25 10 1 4 1 2 4 8 -130 -40.997 26.703 6 5 1 4 1 2 4 8 -131 13.696 34.607 5 9 1 4 1 2 4 8 -132 -71.472 11.450 20 15 1 4 1 2 4 8 -133 -36.230 51.904 2 19 1 4 1 2 4 8 -134 -39.465 4.907 25 7 1 4 1 2 4 8 -135 -16.565 23.773 7 11 1 4 1 2 4 8 -136 10.754 -28.552 6 2 1 4 1 2 4 8 -137 -23.029 47.015 21 25 1 4 1 2 4 8 -138 -8.807 21.216 19 14 1 4 1 2 4 8 -139 -40.039 27.435 22 15 1 4 1 2 4 8 -140 -37.445 -41.040 8 12 1 4 1 2 4 8 -141 48.224 0.085 19 11 1 4 1 2 4 8 -142 -0.323 68.237 6 17 1 4 1 2 4 8 -143 -14.294 -33.423 24 4 1 4 1 2 4 8 -144 -1.440 -34.814 15 24 1 4 1 2 4 8 -145 -34.454 42.346 25 8 1 4 1 2 4 8 -146 8.679 -66.180 6 20 1 4 1 2 4 8 -147 -61.249 -51.367 21 12 1 4 1 2 4 8 -148 -1.093 9.912 4 10 1 4 1 2 4 8 -149 -16.565 66.547 10 12 1 4 1 2 4 8 -150 8.435 52.838 16 9 1 4 1 2 4 8 -151 -22.034 -36.896 12 16 1 4 1 2 4 8 -152 15.765 17.322 13 23 1 4 1 2 4 8 -153 9.003 -18.695 2 15 1 4 1 2 4 8 -154 -4.584 3.491 3 10 1 4 1 2 4 8 -155 8.875 40.662 10 21 1 4 1 2 4 8 -156 26.093 -33.966 18 2 1 4 1 2 4 8 -157 -32.501 39.526 18 16 1 4 1 2 4 8 -158 -32.629 -82.581 11 15 1 4 1 2 4 8 -159 -98.486 22.021 7 11 1 4 1 2 4 8 -160 -59.052 4.163 18 11 1 4 1 2 4 8 -161 7.428 -2.570 15 17 1 4 1 2 4 8 -162 -59.601 12.469 5 3 1 4 1 2 4 8 -163 -11.224 -31.830 20 9 1 4 1 2 4 8 -164 -16.809 -35.040 9 1 1 4 1 2 4 8 -165 21.863 18.140 22 13 1 4 1 2 4 8 -166 45.038 -61.316 13 1 1 4 1 2 4 8 -167 -48.816 25.568 24 2 1 4 1 2 4 8 -168 -32.184 -16.736 4 22 1 4 1 2 4 8 -169 12.439 -41.492 16 10 1 4 1 2 4 8 -170 -21.082 -77.075 16 4 1 4 1 2 4 8 -171 -17.822 -18.518 14 9 1 4 1 2 4 8 -172 48.334 93.518 14 11 1 4 1 2 4 8 -173 -18.677 49.005 25 3 1 4 1 2 4 8 -174 12.140 30.042 23 19 1 4 1 2 4 8 -175 3.113 -40.302 23 19 1 4 1 2 4 8 -176 17.133 37.079 4 4 1 4 1 2 4 8 -177 22.577 0.836 17 19 1 4 1 2 4 8 -178 -30.426 52.942 12 15 1 4 1 2 4 8 -179 33.765 -67.108 11 21 1 4 1 2 4 8 -180 5.414 1.532 24 25 1 4 1 2 4 8 -181 72.156 30.103 22 4 1 4 1 2 4 8 -182 -24.109 -34.625 10 3 1 4 1 2 4 8 -183 17.413 75.146 10 6 1 4 1 2 4 8 -184 10.638 -60.052 10 6 1 4 1 2 4 8 -185 -5.176 -48.999 5 21 1 4 1 2 4 8 -186 -19.342 21.118 13 25 1 4 1 2 4 8 -187 -46.802 -14.661 18 10 1 4 1 2 4 8 -188 -16.779 43.439 25 25 1 4 1 2 4 8 -189 14.093 -13.605 12 19 1 4 1 2 4 8 -190 -21.063 26.019 18 19 1 4 1 2 4 8 -191 39.813 -40.668 9 22 1 4 1 2 4 8 -192 52.057 30.334 23 5 1 4 1 2 4 8 -193 -0.140 7.266 0 0 0 0 -194 -23.138 48.450 0 0 0 0 -195 -26.102 16.809 0 0 0 0 -196 0.244 -35.892 0 0 0 0 diff --git a/jsprit-instances/instances/cordeau/pr04.res b/jsprit-instances/instances/cordeau/pr04.res deleted file mode 100644 index 68f2f498b..000000000 --- a/jsprit-instances/instances/cordeau/pr04.res +++ /dev/null @@ -1,17 +0,0 @@ -2072.52 -1 1 245.42 183.00 193 148 12 152 89 65 32 9 177 104 82 193 -1 2 -0.00 0.00 193 193 -1 3 232.84 166.00 193 154 18 90 153 189 15 121 71 50 161 180 193 -1 4 436.49 175.00 193 68 67 56 42 141 192 76 181 21 35 5 117 165 193 -2 1 251.36 179.00 194 3 38 70 13 174 131 176 80 155 74 72 188 123 194 -2 2 376.55 180.00 194 173 7 81 150 95 60 2 30 172 46 183 116 110 25 194 -2 3 348.08 177.00 194 137 79 149 73 108 142 57 122 11 111 107 125 178 58 194 -2 4 -0.00 0.00 194 194 -3 1 358.34 182.00 195 190 157 145 128 133 59 129 97 19 109 167 130 139 16 34 195 -3 2 433.86 184.00 195 39 47 162 132 55 159 127 85 52 160 53 64 24 134 93 195 -3 3 164.42 149.00 195 113 27 106 138 66 14 135 186 91 195 -3 4 236.95 182.00 195 62 77 22 69 115 99 171 33 168 187 36 98 10 195 -4 1 436.71 183.00 196 87 45 170 158 4 120 86 1 105 20 40 147 31 140 182 101 112 196 -4 2 326.18 172.00 196 94 41 83 124 49 63 28 84 136 6 169 96 26 114 43 102 184 78 100 175 196 -4 3 435.93 180.00 196 44 17 92 146 103 179 48 166 75 126 118 191 61 156 54 29 196 -4 4 287.39 185.00 196 8 37 185 119 23 51 151 88 164 143 163 144 196 \ No newline at end of file diff --git a/jsprit-instances/instances/cordeau/pr05 b/jsprit-instances/instances/cordeau/pr05 deleted file mode 100644 index 9932be506..000000000 --- a/jsprit-instances/instances/cordeau/pr05 +++ /dev/null @@ -1,249 +0,0 @@ -2 5 240 4 -420 180 -420 180 -420 180 -420 180 - 1 65.991 -49.829 20 10 1 4 1 2 4 8 - 2 -36.938 -36.743 20 25 1 4 1 2 4 8 - 3 -2.734 18.774 13 18 1 4 1 2 4 8 - 4 31.116 -35.907 13 16 1 4 1 2 4 8 - 5 2.789 8.008 17 14 1 4 1 2 4 8 - 6 31.152 43.665 24 7 1 4 1 2 4 8 - 7 -36.304 -21.307 15 9 1 4 1 2 4 8 - 8 52.814 35.046 12 16 1 4 1 2 4 8 - 9 11.267 20.660 20 24 1 4 1 2 4 8 - 10 -0.623 23.114 20 6 1 4 1 2 4 8 - 11 43.091 -12.360 3 22 1 4 1 2 4 8 - 12 6.854 19.073 8 11 1 4 1 2 4 8 - 13 -6.848 25.317 16 19 1 4 1 2 4 8 - 14 -27.930 -23.712 20 20 1 4 1 2 4 8 - 15 33.240 -30.487 21 20 1 4 1 2 4 8 - 16 63.885 -52.881 23 16 1 4 1 2 4 8 - 17 -13.672 -43.945 21 5 1 4 1 2 4 8 - 18 -0.647 -27.502 3 21 1 4 1 2 4 8 - 19 59.406 -49.261 19 19 1 4 1 2 4 8 - 20 27.167 -5.713 20 18 1 4 1 2 4 8 - 21 70.001 -20.844 7 22 1 4 1 2 4 8 - 22 35.327 -65.167 14 19 1 4 1 2 4 8 - 23 -14.386 -42.236 24 15 1 4 1 2 4 8 - 24 19.366 30.273 3 24 1 4 1 2 4 8 - 25 -39.789 10.101 13 20 1 4 1 2 4 8 - 26 -15.753 -40.204 1 17 1 4 1 2 4 8 - 27 -28.418 -40.503 5 20 1 4 1 2 4 8 - 28 27.081 9.735 2 12 1 4 1 2 4 8 - 29 22.205 -9.216 9 23 1 4 1 2 4 8 - 30 -0.830 -6.525 18 15 1 4 1 2 4 8 - 31 10.217 75.531 5 19 1 4 1 2 4 8 - 32 7.446 18.500 12 23 1 4 1 2 4 8 - 33 48.914 -20.294 11 9 1 4 1 2 4 8 - 34 -18.958 -29.675 17 21 1 4 1 2 4 8 - 35 16.815 -6.659 21 17 1 4 1 2 4 8 - 36 2.509 -30.420 5 6 1 4 1 2 4 8 - 37 15.424 4.913 5 10 1 4 1 2 4 8 - 38 60.315 89.801 7 9 1 4 1 2 4 8 - 39 40.405 -45.367 24 19 1 4 1 2 4 8 - 40 -26.837 -54.272 1 17 1 4 1 2 4 8 - 41 69.171 72.577 12 22 1 4 1 2 4 8 - 42 -22.815 46.173 6 8 1 4 1 2 4 8 - 43 -14.258 -30.249 5 25 1 4 1 2 4 8 - 44 76.050 12.073 19 13 1 4 1 2 4 8 - 45 63.043 60.022 23 1 1 4 1 2 4 8 - 46 -20.239 -81.970 8 15 1 4 1 2 4 8 - 47 -41.168 -42.023 1 16 1 4 1 2 4 8 - 48 79.199 -29.016 20 20 1 4 1 2 4 8 - 49 -20.728 -7.068 16 14 1 4 1 2 4 8 - 50 -4.163 -53.497 8 2 1 4 1 2 4 8 - 51 39.594 -40.460 16 5 1 4 1 2 4 8 - 52 -47.125 -77.850 25 16 1 4 1 2 4 8 - 53 -1.233 49.182 5 12 1 4 1 2 4 8 - 54 -0.372 -27.264 10 1 1 4 1 2 4 8 - 55 31.537 -8.722 24 15 1 4 1 2 4 8 - 56 -0.134 -20.264 16 5 1 4 1 2 4 8 - 57 66.394 -26.691 7 9 1 4 1 2 4 8 - 58 6.104 -64.093 14 8 1 4 1 2 4 8 - 59 13.544 -20.874 11 2 1 4 1 2 4 8 - 60 54.211 -6.537 15 10 1 4 1 2 4 8 - 61 22.046 -34.137 23 25 1 4 1 2 4 8 - 62 -9.723 4.706 5 24 1 4 1 2 4 8 - 63 -11.584 -46.857 16 7 1 4 1 2 4 8 - 64 -2.905 -0.305 13 14 1 4 1 2 4 8 - 65 13.837 -44.452 18 3 1 4 1 2 4 8 - 66 17.480 27.747 14 23 1 4 1 2 4 8 - 67 2.972 -43.689 3 21 1 4 1 2 4 8 - 68 -44.354 -38.202 22 13 1 4 1 2 4 8 - 69 -59.399 1.514 16 15 1 4 1 2 4 8 - 70 -13.452 -75.531 16 14 1 4 1 2 4 8 - 71 -5.518 -51.947 2 7 1 4 1 2 4 8 - 72 -9.589 -26.880 19 20 1 4 1 2 4 8 - 73 19.318 29.498 23 6 1 4 1 2 4 8 - 74 26.245 36.743 6 24 1 4 1 2 4 8 - 75 43.707 -28.033 11 17 1 4 1 2 4 8 - 76 -52.026 -35.339 19 3 1 4 1 2 4 8 - 77 -8.435 -0.116 3 15 1 4 1 2 4 8 - 78 89.111 62.122 14 6 1 4 1 2 4 8 - 79 6.067 -16.132 14 21 1 4 1 2 4 8 - 80 27.094 -5.103 19 25 1 4 1 2 4 8 - 81 27.527 -15.344 3 18 1 4 1 2 4 8 - 82 42.511 32.056 18 1 1 4 1 2 4 8 - 83 25.311 12.689 24 19 1 4 1 2 4 8 - 84 47.778 -12.769 6 17 1 4 1 2 4 8 - 85 -3.143 -13.837 1 20 1 4 1 2 4 8 - 86 12.482 -78.101 3 1 1 4 1 2 4 8 - 87 -21.039 -3.430 15 13 1 4 1 2 4 8 - 88 -3.149 -55.432 18 25 1 4 1 2 4 8 - 89 53.009 84.900 5 16 1 4 1 2 4 8 - 90 35.638 -47.552 23 5 1 4 1 2 4 8 - 91 43.427 -18.439 10 18 1 4 1 2 4 8 - 92 6.598 -54.578 20 17 1 4 1 2 4 8 - 93 87.952 94.012 11 15 1 4 1 2 4 8 - 94 39.105 -48.743 16 13 1 4 1 2 4 8 - 95 -48.340 -26.477 15 15 1 4 1 2 4 8 - 96 72.003 -9.253 19 2 1 4 1 2 4 8 - 97 -37.732 3.351 4 1 1 4 1 2 4 8 - 98 -65.967 -36.749 14 9 1 4 1 2 4 8 - 99 -16.669 -35.284 23 16 1 4 1 2 4 8 -100 10.742 -4.669 11 6 1 4 1 2 4 8 -101 15.594 -5.817 21 18 1 4 1 2 4 8 -102 21.606 -18.109 14 24 1 4 1 2 4 8 -103 9.784 49.280 16 24 1 4 1 2 4 8 -104 94.147 -4.492 25 9 1 4 1 2 4 8 -105 10.382 -16.302 17 19 1 4 1 2 4 8 -106 -1.453 -0.861 16 12 1 4 1 2 4 8 -107 -6.219 25.305 13 22 1 4 1 2 4 8 -108 -6.250 10.217 23 13 1 4 1 2 4 8 -109 -17.444 -70.795 10 20 1 4 1 2 4 8 -110 -55.090 -43.854 2 25 1 4 1 2 4 8 -111 -9.442 23.724 15 1 1 4 1 2 4 8 -112 8.978 35.406 14 24 1 4 1 2 4 8 -113 -16.754 -0.812 22 10 1 4 1 2 4 8 -114 66.852 -37.842 15 22 1 4 1 2 4 8 -115 14.716 -23.724 16 14 1 4 1 2 4 8 -116 33.472 20.026 12 12 1 4 1 2 4 8 -117 66.394 -70.111 14 23 1 4 1 2 4 8 -118 -5.664 8.881 15 14 1 4 1 2 4 8 -119 -5.103 -46.729 11 23 1 4 1 2 4 8 -120 -8.826 55.743 11 25 1 4 1 2 4 8 -121 5.847 -3.186 4 5 1 4 1 2 4 8 -122 -25.726 -37.695 23 7 1 4 1 2 4 8 -123 -15.363 -24.548 13 25 1 4 1 2 4 8 -124 43.793 -11.102 22 11 1 4 1 2 4 8 -125 17.664 -25.604 17 18 1 4 1 2 4 8 -126 -39.624 54.883 2 18 1 4 1 2 4 8 -127 -24.554 -43.225 5 1 1 4 1 2 4 8 -128 -26.892 -12.738 14 7 1 4 1 2 4 8 -129 34.155 -38.458 1 22 1 4 1 2 4 8 -130 -47.314 -29.468 13 7 1 4 1 2 4 8 -131 49.365 -25.592 8 3 1 4 1 2 4 8 -132 3.705 -16.449 24 18 1 4 1 2 4 8 -133 22.430 -23.273 12 8 1 4 1 2 4 8 -134 -37.549 -29.608 23 6 1 4 1 2 4 8 -135 25.549 3.674 1 7 1 4 1 2 4 8 -136 -15.216 3.284 2 20 1 4 1 2 4 8 -137 -12.939 -7.495 8 10 1 4 1 2 4 8 -138 -22.107 26.434 18 2 1 4 1 2 4 8 -139 -17.944 7.733 14 3 1 4 1 2 4 8 -140 -21.234 14.490 23 10 1 4 1 2 4 8 -141 3.503 -19.708 14 5 1 4 1 2 4 8 -142 32.599 -14.935 4 25 1 4 1 2 4 8 -143 -5.737 -28.296 24 23 1 4 1 2 4 8 -144 -6.128 -39.624 9 21 1 4 1 2 4 8 -145 -2.460 12.817 15 13 1 4 1 2 4 8 -146 -6.470 8.466 10 1 1 4 1 2 4 8 -147 -37.891 -36.115 3 11 1 4 1 2 4 8 -148 10.852 -18.750 12 6 1 4 1 2 4 8 -149 50.104 8.636 6 9 1 4 1 2 4 8 -150 46.844 4.712 1 17 1 4 1 2 4 8 -151 19.598 -10.406 24 13 1 4 1 2 4 8 -152 -38.947 52.942 3 23 1 4 1 2 4 8 -153 -0.641 -21.289 4 19 1 4 1 2 4 8 -154 40.906 -33.765 7 11 1 4 1 2 4 8 -155 -0.574 -62.299 21 12 1 4 1 2 4 8 -156 -9.778 26.794 1 18 1 4 1 2 4 8 -157 34.265 -23.895 24 25 1 4 1 2 4 8 -158 29.572 -24.561 5 13 1 4 1 2 4 8 -159 16.376 -58.887 23 24 1 4 1 2 4 8 -160 61.877 -15.167 5 5 1 4 1 2 4 8 -161 40.088 -9.625 17 14 1 4 1 2 4 8 -162 0.122 -4.645 24 18 1 4 1 2 4 8 -163 -8.929 -43.903 23 25 1 4 1 2 4 8 -164 -7.135 -57.434 3 11 1 4 1 2 4 8 -165 7.550 -21.210 5 18 1 4 1 2 4 8 -166 3.949 7.300 22 23 1 4 1 2 4 8 -167 -15.118 92.023 9 22 1 4 1 2 4 8 -168 84.821 -24.518 23 20 1 4 1 2 4 8 -169 -52.325 30.682 15 11 1 4 1 2 4 8 -170 7.538 13.818 15 11 1 4 1 2 4 8 -171 -21.484 30.359 11 19 1 4 1 2 4 8 -172 36.047 29.883 20 13 1 4 1 2 4 8 -173 12.781 -40.942 10 24 1 4 1 2 4 8 -174 -17.291 -10.254 24 6 1 4 1 2 4 8 -175 -10.541 12.402 10 5 1 4 1 2 4 8 -176 -15.845 -59.460 6 24 1 4 1 2 4 8 -177 29.266 -2.222 22 7 1 4 1 2 4 8 -178 -12.598 -58.929 25 13 1 4 1 2 4 8 -179 -17.303 -35.297 11 25 1 4 1 2 4 8 -180 57.050 -50.354 6 15 1 4 1 2 4 8 -181 26.941 17.444 9 15 1 4 1 2 4 8 -182 -6.195 -8.881 6 16 1 4 1 2 4 8 -183 16.980 -16.321 12 5 1 4 1 2 4 8 -184 83.710 -32.520 4 15 1 4 1 2 4 8 -185 12.451 34.589 24 24 1 4 1 2 4 8 -186 15.057 67.004 18 15 1 4 1 2 4 8 -187 25.818 -5.835 3 9 1 4 1 2 4 8 -188 13.666 -14.832 18 19 1 4 1 2 4 8 -189 48.322 -5.164 17 15 1 4 1 2 4 8 -190 13.489 19.739 23 2 1 4 1 2 4 8 -191 -18.512 65.405 10 3 1 4 1 2 4 8 -192 17.554 38.379 22 18 1 4 1 2 4 8 -193 37.775 -16.003 5 20 1 4 1 2 4 8 -194 47.968 -30.310 16 14 1 4 1 2 4 8 -195 38.806 36.243 10 10 1 4 1 2 4 8 -196 -16.089 -42.841 10 6 1 4 1 2 4 8 -197 28.656 -1.990 9 17 1 4 1 2 4 8 -198 -5.859 -1.862 5 20 1 4 1 2 4 8 -199 60.516 63.416 9 3 1 4 1 2 4 8 -200 63.196 -47.766 12 14 1 4 1 2 4 8 -201 -15.308 -23.285 16 12 1 4 1 2 4 8 -202 -2.875 0.787 8 2 1 4 1 2 4 8 -203 32.056 -10.175 1 11 1 4 1 2 4 8 -204 -18.634 -25.665 1 16 1 4 1 2 4 8 -205 -3.632 25.433 18 18 1 4 1 2 4 8 -206 10.480 22.888 22 14 1 4 1 2 4 8 -207 1.819 -3.009 20 6 1 4 1 2 4 8 -208 -25.275 -12.183 4 12 1 4 1 2 4 8 -209 56.927 -75.507 15 21 1 4 1 2 4 8 -210 13.885 -36.230 7 1 1 4 1 2 4 8 -211 32.520 -29.523 25 18 1 4 1 2 4 8 -212 4.803 -7.288 3 17 1 4 1 2 4 8 -213 11.365 -8.344 22 15 1 4 1 2 4 8 -214 17.126 -24.646 5 4 1 4 1 2 4 8 -215 -33.661 -41.241 1 18 1 4 1 2 4 8 -216 -32.391 -50.885 9 22 1 4 1 2 4 8 -217 23.041 -14.496 16 16 1 4 1 2 4 8 -218 -21.857 -39.502 23 14 1 4 1 2 4 8 -219 32.013 77.332 5 25 1 4 1 2 4 8 -220 13.831 -76.190 5 15 1 4 1 2 4 8 -221 -8.051 -21.179 6 6 1 4 1 2 4 8 -222 25.391 46.613 16 7 1 4 1 2 4 8 -223 49.536 -54.639 25 21 1 4 1 2 4 8 -224 63.416 -8.636 1 3 1 4 1 2 4 8 -225 2.301 -5.536 25 15 1 4 1 2 4 8 -226 52.423 29.895 17 24 1 4 1 2 4 8 -227 9.296 -16.254 11 2 1 4 1 2 4 8 -228 34.845 -96.185 24 17 1 4 1 2 4 8 -229 -21.063 -41.498 10 2 1 4 1 2 4 8 -230 28.448 10.242 12 25 1 4 1 2 4 8 -231 16.254 -22.583 17 15 1 4 1 2 4 8 -232 -36.639 -34.033 18 3 1 4 1 2 4 8 -233 -27.356 -50.177 5 1 1 4 1 2 4 8 -234 -53.705 11.334 16 1 1 4 1 2 4 8 -235 26.276 -5.994 9 20 1 4 1 2 4 8 -236 -31.519 34.589 6 19 1 4 1 2 4 8 -237 -14.612 -31.506 1 2 1 4 1 2 4 8 -238 -4.242 -30.865 4 9 1 4 1 2 4 8 -239 -18.524 -29.486 20 4 1 4 1 2 4 8 -240 -17.133 -19.397 19 16 1 4 1 2 4 8 -241 34.430 -17.151 0 0 0 0 -242 0.269 -8.154 0 0 0 0 -243 3.140 13.297 0 0 0 0 -244 -3.113 -29.745 0 0 0 0 diff --git a/jsprit-instances/instances/cordeau/pr05.res b/jsprit-instances/instances/cordeau/pr05.res deleted file mode 100644 index 818106fe3..000000000 --- a/jsprit-instances/instances/cordeau/pr05.res +++ /dev/null @@ -1,21 +0,0 @@ -2385.77 -1 1 180.87 178.00 241 157 15 211 158 133 102 217 81 203 142 241 -1 2 290.67 178.00 241 161 124 189 150 149 226 8 82 116 230 28 135 55 241 -1 3 362.83 180.00 241 75 194 1 16 117 209 228 22 90 129 4 241 -1 4 295.55 178.00 241 154 51 39 94 223 180 19 200 114 57 131 33 91 241 -1 5 325.55 178.00 241 193 11 84 60 224 96 44 104 168 184 48 21 160 241 -2 1 309.84 174.00 242 225 207 5 145 3 205 107 13 111 108 146 118 202 162 242 -2 2 -0.00 0.00 242 242 -2 3 206.75 179.00 242 182 174 49 87 113 136 62 77 198 64 106 30 242 -2 4 252.37 178.00 242 85 221 240 201 123 204 239 34 14 7 128 208 137 242 -2 5 243.37 159.00 242 132 79 227 105 148 59 183 188 35 101 213 212 242 -3 1 227.25 158.00 243 32 206 185 192 24 73 66 190 9 243 -3 2 409.53 180.00 243 112 103 219 89 38 93 78 41 199 45 74 12 243 -3 3 392.34 178.00 243 53 120 191 167 31 186 222 6 195 172 181 83 170 243 -3 4 396.05 179.00 243 10 156 138 171 236 42 152 126 169 234 69 25 97 140 139 175 243 -3 5 233.28 176.00 243 37 197 177 80 20 235 187 29 151 100 121 166 243 -4 1 317.24 179.00 244 164 178 176 109 70 46 52 216 40 233 127 229 218 238 244 -4 2 267.39 180.00 244 163 119 71 50 88 155 58 86 220 159 92 67 244 -4 3 216.51 180.00 244 143 72 43 99 179 26 196 23 17 63 144 244 -4 4 251.38 179.00 244 18 54 153 56 141 165 115 231 214 125 61 65 173 210 36 244 -4 5 329.99 180.00 244 122 27 215 47 68 110 98 76 95 130 134 232 147 2 237 244 \ No newline at end of file diff --git a/jsprit-instances/instances/cordeau/pr06 b/jsprit-instances/instances/cordeau/pr06 deleted file mode 100644 index b8e77a68d..000000000 --- a/jsprit-instances/instances/cordeau/pr06 +++ /dev/null @@ -1,297 +0,0 @@ -2 6 288 4 -400 175 -400 175 -400 175 -400 175 - 1 -66.174 -37.811 13 19 1 4 1 2 4 8 - 2 2.673 -35.223 16 21 1 4 1 2 4 8 - 3 38.751 8.618 1 17 1 4 1 2 4 8 - 4 62.653 20.667 9 6 1 4 1 2 4 8 - 5 60.974 -6.110 20 6 1 4 1 2 4 8 - 6 -98.535 -39.532 2 19 1 4 1 2 4 8 - 7 8.411 -81.274 5 17 1 4 1 2 4 8 - 8 -14.569 26.056 10 19 1 4 1 2 4 8 - 9 -34.186 -76.697 10 2 1 4 1 2 4 8 - 10 55.145 -33.911 25 3 1 4 1 2 4 8 - 11 15.869 8.716 2 24 1 4 1 2 4 8 - 12 -63.416 -20.282 5 5 1 4 1 2 4 8 - 13 -9.357 -42.212 16 9 1 4 1 2 4 8 - 14 -53.619 3.729 24 20 1 4 1 2 4 8 - 15 53.491 -3.308 7 19 1 4 1 2 4 8 - 16 -22.614 -32.794 19 20 1 4 1 2 4 8 - 17 39.612 -1.550 15 4 1 4 1 2 4 8 - 18 16.705 -22.748 7 3 1 4 1 2 4 8 - 19 -51.245 -13.757 16 2 1 4 1 2 4 8 - 20 -29.907 14.380 20 23 1 4 1 2 4 8 - 21 -70.441 -27.911 21 6 1 4 1 2 4 8 - 22 -75.385 -30.811 7 17 1 4 1 2 4 8 - 23 10.590 -28.931 17 17 1 4 1 2 4 8 - 24 86.340 -45.935 11 3 1 4 1 2 4 8 - 25 3.864 34.583 6 16 1 4 1 2 4 8 - 26 -37.598 -42.114 4 15 1 4 1 2 4 8 - 27 69.440 1.379 16 23 1 4 1 2 4 8 - 28 -13.818 1.245 8 15 1 4 1 2 4 8 - 29 -27.124 -38.037 13 12 1 4 1 2 4 8 - 30 -69.348 -14.734 25 19 1 4 1 2 4 8 - 31 58.575 29.346 16 23 1 4 1 2 4 8 - 32 58.105 31.702 2 10 1 4 1 2 4 8 - 33 -62.250 -16.425 12 23 1 4 1 2 4 8 - 34 -66.382 13.586 12 22 1 4 1 2 4 8 - 35 68.030 -12.482 14 4 1 4 1 2 4 8 - 36 -30.701 -41.681 16 5 1 4 1 2 4 8 - 37 -55.389 -51.050 9 1 1 4 1 2 4 8 - 38 36.237 -2.655 16 11 1 4 1 2 4 8 - 39 -1.215 5.591 2 20 1 4 1 2 4 8 - 40 10.278 -23.950 21 25 1 4 1 2 4 8 - 41 -7.159 36.859 7 18 1 4 1 2 4 8 - 42 -90.204 61.169 3 4 1 4 1 2 4 8 - 43 46.368 65.082 5 10 1 4 1 2 4 8 - 44 13.348 31.372 12 17 1 4 1 2 4 8 - 45 -73.566 -28.839 9 7 1 4 1 2 4 8 - 46 -41.528 -37.097 11 4 1 4 1 2 4 8 - 47 -60.938 -27.246 17 3 1 4 1 2 4 8 - 48 38.312 54.376 10 12 1 4 1 2 4 8 - 49 26.306 11.975 5 13 1 4 1 2 4 8 - 50 10.297 -48.346 3 24 1 4 1 2 4 8 - 51 52.417 -28.363 1 16 1 4 1 2 4 8 - 52 -43.756 -39.343 3 2 1 4 1 2 4 8 - 53 49.316 11.395 5 7 1 4 1 2 4 8 - 54 45.593 4.346 25 15 1 4 1 2 4 8 - 55 -25.989 -15.814 14 12 1 4 1 2 4 8 - 56 65.253 -59.631 4 15 1 4 1 2 4 8 - 57 12.109 -34.387 14 17 1 4 1 2 4 8 - 58 12.390 -16.254 20 16 1 4 1 2 4 8 - 59 0.525 69.611 5 1 1 4 1 2 4 8 - 60 -8.679 7.770 22 9 1 4 1 2 4 8 - 61 41.467 -35.016 17 4 1 4 1 2 4 8 - 62 11.859 -34.973 19 3 1 4 1 2 4 8 - 63 -1.306 -58.063 9 1 1 4 1 2 4 8 - 64 6.024 -31.018 16 4 1 4 1 2 4 8 - 65 1.788 -32.544 19 6 1 4 1 2 4 8 - 66 29.272 -6.494 11 1 1 4 1 2 4 8 - 67 23.950 10.742 6 19 1 4 1 2 4 8 - 68 -65.887 40.912 23 1 1 4 1 2 4 8 - 69 -10.095 26.257 24 2 1 4 1 2 4 8 - 70 58.093 67.352 21 25 1 4 1 2 4 8 - 71 90.015 9.485 16 4 1 4 1 2 4 8 - 72 -6.622 15.216 15 4 1 4 1 2 4 8 - 73 -2.875 -42.841 23 13 1 4 1 2 4 8 - 74 -37.714 -7.306 22 18 1 4 1 2 4 8 - 75 44.171 -11.224 21 9 1 4 1 2 4 8 - 76 -58.704 -2.808 21 5 1 4 1 2 4 8 - 77 -3.912 10.071 21 12 1 4 1 2 4 8 - 78 -41.370 -1.495 7 22 1 4 1 2 4 8 - 79 58.179 27.563 15 9 1 4 1 2 4 8 - 80 -63.861 26.147 15 11 1 4 1 2 4 8 - 81 -56.793 -15.918 16 6 1 4 1 2 4 8 - 82 22.217 -27.509 13 19 1 4 1 2 4 8 - 83 -1.031 -14.838 22 10 1 4 1 2 4 8 - 84 -57.703 -10.480 1 1 1 4 1 2 4 8 - 85 80.847 6.299 22 10 1 4 1 2 4 8 - 86 2.887 10.822 24 20 1 4 1 2 4 8 - 87 -37.390 -7.800 6 18 1 4 1 2 4 8 - 88 -33.600 -26.740 5 1 1 4 1 2 4 8 - 89 95.197 24.231 14 11 1 4 1 2 4 8 - 90 -13.904 29.327 19 20 1 4 1 2 4 8 - 91 -53.461 9.296 16 12 1 4 1 2 4 8 - 92 67.578 13.007 20 17 1 4 1 2 4 8 - 93 -83.881 -53.265 12 16 1 4 1 2 4 8 - 94 30.255 -72.430 7 3 1 4 1 2 4 8 - 95 -22.333 -20.538 23 14 1 4 1 2 4 8 - 96 3.741 -35.461 9 12 1 4 1 2 4 8 - 97 -20.093 -43.982 19 9 1 4 1 2 4 8 - 98 -47.687 -21.100 17 1 1 4 1 2 4 8 - 99 -20.447 -13.849 1 7 1 4 1 2 4 8 -100 34.515 3.967 25 7 1 4 1 2 4 8 -101 20.514 -11.884 12 5 1 4 1 2 4 8 -102 -46.039 -22.565 15 9 1 4 1 2 4 8 -103 -39.630 25.385 16 15 1 4 1 2 4 8 -104 -1.025 50.433 10 4 1 4 1 2 4 8 -105 -28.632 23.486 24 10 1 4 1 2 4 8 -106 -52.997 -16.248 24 21 1 4 1 2 4 8 -107 -3.345 -22.955 18 2 1 4 1 2 4 8 -108 -62.640 -26.349 21 6 1 4 1 2 4 8 -109 25.403 0.531 21 1 1 4 1 2 4 8 -110 -29.895 72.919 17 23 1 4 1 2 4 8 -111 26.630 1.971 7 24 1 4 1 2 4 8 -112 -9.814 35.004 14 16 1 4 1 2 4 8 -113 -7.758 -42.426 8 18 1 4 1 2 4 8 -114 28.918 -7.117 2 1 1 4 1 2 4 8 -115 47.693 36.108 18 1 1 4 1 2 4 8 -116 -53.168 5.206 10 21 1 4 1 2 4 8 -117 17.560 13.214 17 8 1 4 1 2 4 8 -118 6.836 -2.496 20 22 1 4 1 2 4 8 -119 -17.322 97.260 9 23 1 4 1 2 4 8 -120 22.406 26.532 25 11 1 4 1 2 4 8 -121 -73.090 -13.251 6 15 1 4 1 2 4 8 -122 -64.996 -4.578 16 14 1 4 1 2 4 8 -123 -34.906 -43.903 11 16 1 4 1 2 4 8 -124 -92.346 -4.517 9 25 1 4 1 2 4 8 -125 0.647 -8.496 9 12 1 4 1 2 4 8 -126 5.048 -37.323 18 9 1 4 1 2 4 8 -127 -19.080 -14.178 10 20 1 4 1 2 4 8 -128 -71.704 -11.450 11 22 1 4 1 2 4 8 -129 -45.581 -28.717 14 13 1 4 1 2 4 8 -130 -28.351 -23.914 15 24 1 4 1 2 4 8 -131 -16.486 30.920 19 13 1 4 1 2 4 8 -132 -83.423 -20.935 25 4 1 4 1 2 4 8 -133 -12.054 -20.612 10 22 1 4 1 2 4 8 -134 -7.184 -63.721 11 18 1 4 1 2 4 8 -135 34.546 -8.881 11 25 1 4 1 2 4 8 -136 -4.865 73.694 25 19 1 4 1 2 4 8 -137 -36.005 -3.876 14 8 1 4 1 2 4 8 -138 -28.400 -21.820 20 13 1 4 1 2 4 8 -139 -56.281 -15.112 7 1 1 4 1 2 4 8 -140 -11.017 42.151 1 1 1 4 1 2 4 8 -141 -63.092 -62.573 15 5 1 4 1 2 4 8 -142 29.486 79.944 2 2 1 4 1 2 4 8 -143 -65.674 -0.238 7 22 1 4 1 2 4 8 -144 46.130 -20.416 21 3 1 4 1 2 4 8 -145 1.575 -16.364 19 2 1 4 1 2 4 8 -146 40.277 -1.379 17 6 1 4 1 2 4 8 -147 -15.271 42.249 23 19 1 4 1 2 4 8 -148 33.215 -16.614 17 5 1 4 1 2 4 8 -149 -72.388 13.074 20 25 1 4 1 2 4 8 -150 -24.487 5.273 11 9 1 4 1 2 4 8 -151 -6.598 -30.957 1 20 1 4 1 2 4 8 -152 31.287 21.332 11 11 1 4 1 2 4 8 -153 20.557 0.378 15 18 1 4 1 2 4 8 -154 -67.200 -41.339 3 25 1 4 1 2 4 8 -155 22.168 -40.375 21 22 1 4 1 2 4 8 -156 31.165 2.222 5 25 1 4 1 2 4 8 -157 74.634 30.219 11 14 1 4 1 2 4 8 -158 60.699 81.116 6 21 1 4 1 2 4 8 -159 -60.736 24.133 17 1 1 4 1 2 4 8 -160 1.978 17.517 20 9 1 4 1 2 4 8 -161 -80.566 -38.196 10 2 1 4 1 2 4 8 -162 -49.927 -36.713 24 2 1 4 1 2 4 8 -163 -60.449 -27.820 6 4 1 4 1 2 4 8 -164 -78.748 -44.226 18 15 1 4 1 2 4 8 -165 54.260 -9.259 15 11 1 4 1 2 4 8 -166 -42.059 -26.636 6 15 1 4 1 2 4 8 -167 -57.336 -16.718 10 15 1 4 1 2 4 8 -168 -1.276 -13.330 7 16 1 4 1 2 4 8 -169 -24.158 39.197 24 14 1 4 1 2 4 8 -170 17.908 -40.442 3 25 1 4 1 2 4 8 -171 59.833 -3.674 22 9 1 4 1 2 4 8 -172 -3.510 6.256 1 23 1 4 1 2 4 8 -173 40.167 8.594 4 16 1 4 1 2 4 8 -174 -1.691 -54.376 12 10 1 4 1 2 4 8 -175 -36.035 -17.065 14 4 1 4 1 2 4 8 -176 7.275 -4.144 17 25 1 4 1 2 4 8 -177 30.219 -6.830 20 20 1 4 1 2 4 8 -178 -26.379 -63.055 19 5 1 4 1 2 4 8 -179 28.772 -0.031 18 19 1 4 1 2 4 8 -180 2.625 5.072 22 2 1 4 1 2 4 8 -181 3.595 -21.600 14 13 1 4 1 2 4 8 -182 -64.948 -10.956 14 19 1 4 1 2 4 8 -183 18.671 -41.010 20 2 1 4 1 2 4 8 -184 29.291 12.799 16 16 1 4 1 2 4 8 -185 4.529 26.654 25 2 1 4 1 2 4 8 -186 25.360 29.718 12 6 1 4 1 2 4 8 -187 57.349 -15.405 1 3 1 4 1 2 4 8 -188 -11.566 -19.012 11 20 1 4 1 2 4 8 -189 -45.441 -71.808 18 13 1 4 1 2 4 8 -190 2.197 -3.564 8 9 1 4 1 2 4 8 -191 -1.855 -24.475 8 5 1 4 1 2 4 8 -192 -59.851 -48.938 1 15 1 4 1 2 4 8 -193 70.081 -17.816 23 22 1 4 1 2 4 8 -194 -4.932 28.754 19 18 1 4 1 2 4 8 -195 -46.625 -23.529 18 21 1 4 1 2 4 8 -196 -49.872 -35.339 16 16 1 4 1 2 4 8 -197 -67.499 8.142 7 22 1 4 1 2 4 8 -198 31.195 -18.243 13 23 1 4 1 2 4 8 -199 -42.139 -52.704 5 1 1 4 1 2 4 8 -200 -15.094 18.933 3 1 1 4 1 2 4 8 -201 -78.625 -24.341 22 13 1 4 1 2 4 8 -202 51.471 -9.607 21 14 1 4 1 2 4 8 -203 29.987 -31.061 18 18 1 4 1 2 4 8 -204 46.741 1.453 14 5 1 4 1 2 4 8 -205 -52.954 31.738 19 24 1 4 1 2 4 8 -206 10.535 -61.432 18 11 1 4 1 2 4 8 -207 -15.948 -56.012 12 5 1 4 1 2 4 8 -208 -7.776 -54.730 21 1 1 4 1 2 4 8 -209 11.047 -20.905 15 21 1 4 1 2 4 8 -210 -24.359 -23.047 8 6 1 4 1 2 4 8 -211 2.948 -20.398 5 6 1 4 1 2 4 8 -212 -82.654 24.323 3 5 1 4 1 2 4 8 -213 -12.134 42.065 2 23 1 4 1 2 4 8 -214 -98.035 -36.359 5 16 1 4 1 2 4 8 -215 -61.102 -13.477 3 18 1 4 1 2 4 8 -216 -39.136 6.287 12 10 1 4 1 2 4 8 -217 41.180 7.971 4 9 1 4 1 2 4 8 -218 4.254 19.830 23 18 1 4 1 2 4 8 -219 -34.143 -37.915 8 22 1 4 1 2 4 8 -220 -4.559 23.566 7 24 1 4 1 2 4 8 -221 37.891 -1.947 10 15 1 4 1 2 4 8 -222 78.259 15.936 18 6 1 4 1 2 4 8 -223 -8.661 -25.110 4 12 1 4 1 2 4 8 -224 10.071 37.164 9 19 1 4 1 2 4 8 -225 -42.621 -46.985 19 19 1 4 1 2 4 8 -226 92.157 -94.183 5 17 1 4 1 2 4 8 -227 32.202 -39.844 19 22 1 4 1 2 4 8 -228 -55.231 -15.027 7 25 1 4 1 2 4 8 -229 -26.746 -21.490 22 11 1 4 1 2 4 8 -230 -75.513 -0.708 2 23 1 4 1 2 4 8 -231 34.021 12.665 7 10 1 4 1 2 4 8 -232 -2.643 -20.831 4 17 1 4 1 2 4 8 -233 53.369 13.770 11 6 1 4 1 2 4 8 -234 -14.948 -40.259 12 20 1 4 1 2 4 8 -235 67.828 5.750 2 6 1 4 1 2 4 8 -236 -13.220 -26.031 13 4 1 4 1 2 4 8 -237 4.169 -32.617 22 25 1 4 1 2 4 8 -238 -26.050 -33.313 6 7 1 4 1 2 4 8 -239 31.964 -45.703 11 11 1 4 1 2 4 8 -240 96.820 26.208 22 14 1 4 1 2 4 8 -241 -44.696 -37.854 9 14 1 4 1 2 4 8 -242 33.417 11.792 21 15 1 4 1 2 4 8 -243 -35.187 19.226 8 2 1 4 1 2 4 8 -244 -14.233 -74.988 4 14 1 4 1 2 4 8 -245 37.158 -0.836 19 17 1 4 1 2 4 8 -246 -51.697 -26.447 20 24 1 4 1 2 4 8 -247 23.535 5.896 22 10 1 4 1 2 4 8 -248 -18.433 53.711 10 20 1 4 1 2 4 8 -249 -11.340 -17.621 20 11 1 4 1 2 4 8 -250 -7.812 -35.895 10 16 1 4 1 2 4 8 -251 3.522 26.941 23 3 1 4 1 2 4 8 -252 -46.588 -22.266 5 11 1 4 1 2 4 8 -253 -2.997 -0.549 25 10 1 4 1 2 4 8 -254 32.147 17.151 7 18 1 4 1 2 4 8 -255 32.019 13.007 16 20 1 4 1 2 4 8 -256 -6.628 29.889 15 24 1 4 1 2 4 8 -257 77.777 -25.397 9 16 1 4 1 2 4 8 -258 30.707 65.704 19 2 1 4 1 2 4 8 -259 -43.811 -43.036 11 14 1 4 1 2 4 8 -260 49.561 16.827 19 10 1 4 1 2 4 8 -261 -28.931 -0.439 10 22 1 4 1 2 4 8 -262 40.363 16.382 20 14 1 4 1 2 4 8 -263 22.748 40.674 17 15 1 4 1 2 4 8 -264 -1.471 6.567 22 7 1 4 1 2 4 8 -265 -1.190 16.864 24 20 1 4 1 2 4 8 -266 8.032 41.821 5 1 1 4 1 2 4 8 -267 -44.019 -22.784 5 24 1 4 1 2 4 8 -268 12.366 -11.353 17 22 1 4 1 2 4 8 -269 33.276 15.881 7 23 1 4 1 2 4 8 -270 -34.790 -15.045 25 20 1 4 1 2 4 8 -271 -96.857 -19.391 12 15 1 4 1 2 4 8 -272 38.434 -5.353 11 14 1 4 1 2 4 8 -273 -25.391 0.220 6 12 1 4 1 2 4 8 -274 0.848 -31.860 13 4 1 4 1 2 4 8 -275 -24.023 95.691 23 15 1 4 1 2 4 8 -276 -4.272 35.468 15 12 1 4 1 2 4 8 -277 -6.927 1.855 13 8 1 4 1 2 4 8 -278 -70.953 -3.217 10 2 1 4 1 2 4 8 -279 -32.648 -16.522 24 24 1 4 1 2 4 8 -280 42.859 -21.680 13 5 1 4 1 2 4 8 -281 5.182 6.403 12 8 1 4 1 2 4 8 -282 36.920 -4.987 21 21 1 4 1 2 4 8 -283 49.591 27.783 10 5 1 4 1 2 4 8 -284 45.038 10.785 12 16 1 4 1 2 4 8 -285 7.690 14.056 9 8 1 4 1 2 4 8 -286 -60.907 18.640 5 24 1 4 1 2 4 8 -287 -64.496 8.923 18 23 1 4 1 2 4 8 -288 37.158 -14.990 24 6 1 4 1 2 4 8 -289 2.277 7.840 0 0 0 0 -290 32.883 -1.779 0 0 0 0 -291 -49.554 -17.828 0 0 0 0 -292 3.690 -26.099 0 0 0 0 diff --git a/jsprit-instances/instances/cordeau/pr06.res b/jsprit-instances/instances/cordeau/pr06.res deleted file mode 100644 index 969454f22..000000000 --- a/jsprit-instances/instances/cordeau/pr06.res +++ /dev/null @@ -1,25 +0,0 @@ -2723.27 -1 1 311.90 175.00 289 265 160 218 185 251 25 224 44 120 117 11 285 86 289 -1 2 386.46 172.00 289 8 90 131 169 248 110 275 119 136 59 104 266 289 -1 3 18.48 8.00 289 281 289 -1 4 250.20 173.00 289 77 72 69 256 112 147 213 140 41 276 194 220 289 -1 5 307.07 173.00 289 39 264 172 60 200 105 243 20 150 261 273 28 277 253 180 289 -1 6 -0.00 0.00 289 289 -2 1 355.16 165.00 290 177 66 114 101 198 148 288 75 202 165 5 171 15 146 17 221 38 290 -2 2 399.71 171.00 290 53 233 4 79 31 32 157 240 89 71 85 222 92 235 27 204 290 -2 3 389.33 170.00 290 269 254 152 186 263 258 142 158 70 43 48 115 283 260 217 290 -2 4 204.44 165.00 290 179 111 109 153 247 67 49 184 255 231 242 290 -2 5 188.60 148.00 290 156 100 3 173 262 284 54 245 282 290 -2 6 389.27 146.00 290 135 280 144 51 10 56 226 24 257 193 35 187 272 290 -3 1 271.25 174.00 291 246 196 162 241 52 259 225 199 123 36 219 26 46 102 252 291 -3 2 201.40 138.00 291 98 195 267 175 279 270 137 74 87 291 -3 3 226.95 174.00 291 19 14 116 91 286 34 287 197 143 76 84 291 -3 4 182.74 166.00 291 106 228 139 182 128 121 30 33 167 81 291 -3 5 387.72 175.00 291 78 216 103 205 159 80 68 42 212 149 230 278 122 215 291 -3 6 368.31 173.00 291 163 47 108 21 45 22 161 164 93 6 214 271 124 132 201 12 291 -4 1 262.73 175.00 292 274 65 2 73 113 13 234 97 29 238 16 250 151 292 -4 2 237.21 154.00 292 232 133 188 249 127 99 55 138 229 95 107 191 292 -4 3 331.41 168.00 292 237 96 126 174 63 134 244 7 94 206 50 62 57 64 292 -4 4 261.50 168.00 292 40 18 82 203 61 227 239 155 183 170 23 292 -4 5 392.33 166.00 292 208 207 178 9 189 141 37 192 154 1 129 166 88 130 210 236 223 292 -4 6 232.09 174.00 292 209 58 268 176 118 190 125 168 83 145 211 181 292 \ No newline at end of file diff --git a/jsprit-instances/instances/cordeau/pr07 b/jsprit-instances/instances/cordeau/pr07 deleted file mode 100644 index 72bc45de3..000000000 --- a/jsprit-instances/instances/cordeau/pr07 +++ /dev/null @@ -1,85 +0,0 @@ -2 1 72 6 -500 200 -500 200 -500 200 -500 200 -500 200 -500 200 - 1 -92.700 -59.180 8 20 1 6 1 2 4 8 16 32 - 2 71.179 12.543 15 6 1 6 1 2 4 8 16 32 - 3 31.537 66.638 20 19 1 6 1 2 4 8 16 32 - 4 -4.694 25.537 7 10 1 6 1 2 4 8 16 32 - 5 -30.194 67.773 13 18 1 6 1 2 4 8 16 32 - 6 12.677 -57.471 6 1 1 6 1 2 4 8 16 32 - 7 -32.355 -20.966 5 15 1 6 1 2 4 8 16 32 - 8 19.910 48.975 1 23 1 6 1 2 4 8 16 32 - 9 13.202 -19.135 12 13 1 6 1 2 4 8 16 32 - 10 54.877 -41.168 18 12 1 6 1 2 4 8 16 32 - 11 15.063 -25.171 25 7 1 6 1 2 4 8 16 32 - 12 -50.598 -16.418 14 25 1 6 1 2 4 8 16 32 - 13 -29.730 17.078 18 5 1 6 1 2 4 8 16 32 - 14 17.542 1.575 13 1 1 6 1 2 4 8 16 32 - 15 11.127 77.216 6 25 1 6 1 2 4 8 16 32 - 16 33.752 71.259 14 10 1 6 1 2 4 8 16 32 - 17 -56.012 -10.394 10 2 1 6 1 2 4 8 16 32 - 18 57.874 -16.290 18 7 1 6 1 2 4 8 16 32 - 19 10.718 -18.787 8 11 1 6 1 2 4 8 16 32 - 20 53.088 -18.750 6 4 1 6 1 2 4 8 16 32 - 21 1.569 7.532 2 6 1 6 1 2 4 8 16 32 - 22 31.531 48.944 4 15 1 6 1 2 4 8 16 32 - 23 -66.833 -37.854 4 7 1 6 1 2 4 8 16 32 - 24 -70.740 62.244 23 8 1 6 1 2 4 8 16 32 - 25 32.538 23.096 12 10 1 6 1 2 4 8 16 32 - 26 -51.453 -36.444 24 9 1 6 1 2 4 8 16 32 - 27 36.456 -22.638 17 4 1 6 1 2 4 8 16 32 - 28 -31.207 43.494 18 6 1 6 1 2 4 8 16 32 - 29 -10.388 34.491 25 22 1 6 1 2 4 8 16 32 - 30 14.722 -10.834 22 17 1 6 1 2 4 8 16 32 - 31 47.095 -21.387 10 9 1 6 1 2 4 8 16 32 - 32 43.781 34.766 25 25 1 6 1 2 4 8 16 32 - 33 53.546 -67.487 21 10 1 6 1 2 4 8 16 32 - 34 26.801 46.515 21 18 1 6 1 2 4 8 16 32 - 35 63.385 11.981 16 21 1 6 1 2 4 8 16 32 - 36 47.192 -5.475 23 10 1 6 1 2 4 8 16 32 - 37 -16.315 -11.267 21 23 1 6 1 2 4 8 16 32 - 38 78.900 17.651 15 23 1 6 1 2 4 8 16 32 - 39 79.822 22.272 7 11 1 6 1 2 4 8 16 32 - 40 12.878 16.919 20 1 1 6 1 2 4 8 16 32 - 41 -67.981 -3.754 6 23 1 6 1 2 4 8 16 32 - 42 9.198 -18.597 16 16 1 6 1 2 4 8 16 32 - 43 -35.950 -19.141 10 10 1 6 1 2 4 8 16 32 - 44 28.766 45.276 7 12 1 6 1 2 4 8 16 32 - 45 11.469 68.231 20 12 1 6 1 2 4 8 16 32 - 46 -22.760 45.496 9 3 1 6 1 2 4 8 16 32 - 47 -65.674 -23.120 12 22 1 6 1 2 4 8 16 32 - 48 7.239 1.599 10 21 1 6 1 2 4 8 16 32 - 49 -29.785 -11.285 19 13 1 6 1 2 4 8 16 32 - 50 -89.050 16.211 6 15 1 6 1 2 4 8 16 32 - 51 -46.887 -3.363 14 13 1 6 1 2 4 8 16 32 - 52 -14.972 30.621 23 20 1 6 1 2 4 8 16 32 - 53 -17.035 49.774 8 10 1 6 1 2 4 8 16 32 - 54 31.635 53.619 10 25 1 6 1 2 4 8 16 32 - 55 -3.577 13.342 14 7 1 6 1 2 4 8 16 32 - 56 33.008 58.960 3 15 1 6 1 2 4 8 16 32 - 57 -92.950 63.263 25 2 1 6 1 2 4 8 16 32 - 58 -9.137 -22.931 21 23 1 6 1 2 4 8 16 32 - 59 -39.960 6.195 5 5 1 6 1 2 4 8 16 32 - 60 28.430 -19.214 2 25 1 6 1 2 4 8 16 32 - 61 -28.540 -3.485 3 9 1 6 1 2 4 8 16 32 - 62 31.415 36.859 21 2 1 6 1 2 4 8 16 32 - 63 -49.426 60.602 1 24 1 6 1 2 4 8 16 32 - 64 -72.827 -27.765 25 13 1 6 1 2 4 8 16 32 - 65 60.083 -45.905 21 20 1 6 1 2 4 8 16 32 - 66 10.870 -3.900 21 13 1 6 1 2 4 8 16 32 - 67 25.122 7.672 25 15 1 6 1 2 4 8 16 32 - 68 -46.997 -17.474 14 4 1 6 1 2 4 8 16 32 - 69 16.058 33.020 20 20 1 6 1 2 4 8 16 32 - 70 25.409 -11.700 14 8 1 6 1 2 4 8 16 32 - 71 68.323 -5.145 11 19 1 6 1 2 4 8 16 32 - 72 -13.104 62.158 25 20 1 6 1 2 4 8 16 32 - 73 42.395 -8.344 0 0 0 0 - 74 -42.175 -14.554 0 0 0 0 - 75 16.034 40.726 0 0 0 0 - 76 -14.639 29.633 0 0 0 0 - 77 16.049 -3.934 0 0 0 0 - 78 46.112 12.430 0 0 0 0 diff --git a/jsprit-instances/instances/cordeau/pr07.res b/jsprit-instances/instances/cordeau/pr07.res deleted file mode 100644 index b61ec122a..000000000 --- a/jsprit-instances/instances/cordeau/pr07.res +++ /dev/null @@ -1,7 +0,0 @@ -1089.56 -1 1 492.15 193.00 73 27 60 70 30 42 19 9 11 6 33 65 10 31 20 18 71 36 73 -2 1 400.02 193.00 74 49 61 37 58 7 43 26 23 1 64 47 12 68 74 -3 1 272.66 196.00 75 69 62 44 34 22 54 56 3 16 15 45 8 75 -4 1 484.52 174.00 76 13 59 51 17 41 50 57 24 63 5 72 53 46 28 52 76 -5 1 247.53 96.00 77 66 48 21 55 4 29 40 67 14 77 -6 1 200.68 96.00 78 35 2 38 39 32 25 78 \ No newline at end of file diff --git a/jsprit-instances/instances/cordeau/pr08 b/jsprit-instances/instances/cordeau/pr08 deleted file mode 100644 index 34b7ae178..000000000 --- a/jsprit-instances/instances/cordeau/pr08 +++ /dev/null @@ -1,157 +0,0 @@ -2 2 144 6 -475 190 -475 190 -475 190 -475 190 -475 190 -475 190 - 1 -40.289 -42.303 6 20 1 6 1 2 4 8 16 32 - 2 -64.709 -17.389 3 10 1 6 1 2 4 8 16 32 - 3 5.060 -14.349 23 8 1 6 1 2 4 8 16 32 - 4 72.095 20.233 1 6 1 6 1 2 4 8 16 32 - 5 2.594 -15.002 18 1 1 6 1 2 4 8 16 32 - 6 -24.176 -72.894 8 19 1 6 1 2 4 8 16 32 - 7 -13.190 66.498 2 13 1 6 1 2 4 8 16 32 - 8 33.191 13.690 9 24 1 6 1 2 4 8 16 32 - 9 66.827 -30.554 1 15 1 6 1 2 4 8 16 32 - 10 19.934 35.883 20 13 1 6 1 2 4 8 16 32 - 11 -27.771 32.269 23 10 1 6 1 2 4 8 16 32 - 12 51.154 -16.827 22 4 1 6 1 2 4 8 16 32 - 13 -19.214 23.749 24 12 1 6 1 2 4 8 16 32 - 14 -46.643 -52.954 21 21 1 6 1 2 4 8 16 32 - 15 -10.590 -16.626 18 2 1 6 1 2 4 8 16 32 - 16 35.150 12.622 21 10 1 6 1 2 4 8 16 32 - 17 -37.378 12.256 7 20 1 6 1 2 4 8 16 32 - 18 82.794 25.836 4 9 1 6 1 2 4 8 16 32 - 19 8.936 -3.723 21 24 1 6 1 2 4 8 16 32 - 20 -56.659 25.555 13 19 1 6 1 2 4 8 16 32 - 21 -52.020 -40.137 18 13 1 6 1 2 4 8 16 32 - 22 39.270 12.787 4 14 1 6 1 2 4 8 16 32 - 23 19.757 21.228 3 17 1 6 1 2 4 8 16 32 - 24 -23.071 -12.659 12 25 1 6 1 2 4 8 16 32 - 25 15.686 52.374 5 1 1 6 1 2 4 8 16 32 - 26 58.771 -7.056 8 9 1 6 1 2 4 8 16 32 - 27 -33.087 72.266 14 12 1 6 1 2 4 8 16 32 - 28 2.551 46.851 10 22 1 6 1 2 4 8 16 32 - 29 -18.719 73.126 14 2 1 6 1 2 4 8 16 32 - 30 -67.627 -20.679 19 21 1 6 1 2 4 8 16 32 - 31 -76.862 -11.365 20 8 1 6 1 2 4 8 16 32 - 32 -24.194 -38.263 21 19 1 6 1 2 4 8 16 32 - 33 -20.374 -31.903 11 24 1 6 1 2 4 8 16 32 - 34 9.290 39.618 14 24 1 6 1 2 4 8 16 32 - 35 26.044 35.974 6 2 1 6 1 2 4 8 16 32 - 36 -57.385 -45.264 7 20 1 6 1 2 4 8 16 32 - 37 1.489 -62.592 3 20 1 6 1 2 4 8 16 32 - 38 34.937 13.672 22 5 1 6 1 2 4 8 16 32 - 39 -22.290 45.648 21 17 1 6 1 2 4 8 16 32 - 40 -5.920 44.061 12 4 1 6 1 2 4 8 16 32 - 41 -38.446 -23.541 1 21 1 6 1 2 4 8 16 32 - 42 28.894 33.936 11 3 1 6 1 2 4 8 16 32 - 43 -35.388 -5.341 12 16 1 6 1 2 4 8 16 32 - 44 -19.501 13.519 19 14 1 6 1 2 4 8 16 32 - 45 -9.216 -30.988 8 6 1 6 1 2 4 8 16 32 - 46 -22.131 -17.065 11 5 1 6 1 2 4 8 16 32 - 47 -22.827 36.810 18 12 1 6 1 2 4 8 16 32 - 48 -61.365 -18.463 6 23 1 6 1 2 4 8 16 32 - 49 50.128 -66.046 3 12 1 6 1 2 4 8 16 32 - 50 25.647 24.139 6 18 1 6 1 2 4 8 16 32 - 51 65.521 42.810 10 24 1 6 1 2 4 8 16 32 - 52 -60.956 -47.925 7 3 1 6 1 2 4 8 16 32 - 53 -9.070 42.798 17 3 1 6 1 2 4 8 16 32 - 54 -19.061 4.480 12 25 1 6 1 2 4 8 16 32 - 55 -54.071 -3.870 11 22 1 6 1 2 4 8 16 32 - 56 -25.598 -18.866 15 25 1 6 1 2 4 8 16 32 - 57 -18.707 84.296 6 15 1 6 1 2 4 8 16 32 - 58 -70.184 -39.166 13 18 1 6 1 2 4 8 16 32 - 59 -14.636 -0.446 3 8 1 6 1 2 4 8 16 32 - 60 -76.465 -38.922 23 20 1 6 1 2 4 8 16 32 - 61 44.092 12.433 24 18 1 6 1 2 4 8 16 32 - 62 -22.772 -50.867 22 5 1 6 1 2 4 8 16 32 - 63 19.104 44.672 11 25 1 6 1 2 4 8 16 32 - 64 -44.019 -39.935 24 16 1 6 1 2 4 8 16 32 - 65 -2.972 -4.059 8 14 1 6 1 2 4 8 16 32 - 66 -24.261 35.907 22 1 1 6 1 2 4 8 16 32 - 67 -61.877 -73.901 11 15 1 6 1 2 4 8 16 32 - 68 -5.640 -26.721 6 22 1 6 1 2 4 8 16 32 - 69 45.844 -36.835 10 6 1 6 1 2 4 8 16 32 - 70 -51.746 -79.840 10 24 1 6 1 2 4 8 16 32 - 71 -33.008 10.992 20 19 1 6 1 2 4 8 16 32 - 72 -25.653 -0.372 2 12 1 6 1 2 4 8 16 32 - 73 -21.497 61.487 18 13 1 6 1 2 4 8 16 32 - 74 2.032 26.727 8 10 1 6 1 2 4 8 16 32 - 75 -26.758 14.807 13 12 1 6 1 2 4 8 16 32 - 76 -37.256 -44.861 8 13 1 6 1 2 4 8 16 32 - 77 -0.861 -16.418 8 25 1 6 1 2 4 8 16 32 - 78 -51.160 34.967 18 12 1 6 1 2 4 8 16 32 - 79 -41.266 -76.886 17 2 1 6 1 2 4 8 16 32 - 80 -30.255 74.701 10 11 1 6 1 2 4 8 16 32 - 81 -46.368 -1.514 23 10 1 6 1 2 4 8 16 32 - 82 -71.619 73.077 3 9 1 6 1 2 4 8 16 32 - 83 -46.606 -39.948 25 21 1 6 1 2 4 8 16 32 - 84 -30.243 67.102 4 14 1 6 1 2 4 8 16 32 - 85 -40.997 -43.036 25 15 1 6 1 2 4 8 16 32 - 86 -74.286 -52.307 5 6 1 6 1 2 4 8 16 32 - 87 -17.609 -71.851 9 25 1 6 1 2 4 8 16 32 - 88 2.350 -81.805 18 14 1 6 1 2 4 8 16 32 - 89 -85.486 -54.059 16 17 1 6 1 2 4 8 16 32 - 90 23.822 10.571 16 8 1 6 1 2 4 8 16 32 - 91 -24.530 -31.726 22 4 1 6 1 2 4 8 16 32 - 92 -42.474 -15.009 2 17 1 6 1 2 4 8 16 32 - 93 -33.624 50.330 22 23 1 6 1 2 4 8 16 32 - 94 -81.458 -41.565 11 4 1 6 1 2 4 8 16 32 - 95 -73.505 -48.279 24 4 1 6 1 2 4 8 16 32 - 96 -3.052 70.898 17 9 1 6 1 2 4 8 16 32 - 97 0.946 25.458 12 9 1 6 1 2 4 8 16 32 - 98 -54.144 13.525 1 19 1 6 1 2 4 8 16 32 - 99 -30.634 7.526 23 12 1 6 1 2 4 8 16 32 -100 -68.335 -34.277 4 25 1 6 1 2 4 8 16 32 -101 7.178 57.935 15 8 1 6 1 2 4 8 16 32 -102 4.712 48.669 15 13 1 6 1 2 4 8 16 32 -103 58.087 26.379 12 3 1 6 1 2 4 8 16 32 -104 18.347 34.784 21 6 1 6 1 2 4 8 16 32 -105 -44.629 -61.975 21 11 1 6 1 2 4 8 16 32 -106 5.231 26.068 15 24 1 6 1 2 4 8 16 32 -107 -48.065 -36.755 21 16 1 6 1 2 4 8 16 32 -108 -3.589 -27.734 19 21 1 6 1 2 4 8 16 32 -109 9.808 36.896 11 25 1 6 1 2 4 8 16 32 -110 59.460 1.233 3 10 1 6 1 2 4 8 16 32 -111 -47.522 19.873 12 2 1 6 1 2 4 8 16 32 -112 -48.431 -50.317 4 13 1 6 1 2 4 8 16 32 -113 44.666 20.953 2 14 1 6 1 2 4 8 16 32 -114 -19.226 32.770 9 19 1 6 1 2 4 8 16 32 -115 -15.662 17.462 21 16 1 6 1 2 4 8 16 32 -116 -91.669 77.722 17 23 1 6 1 2 4 8 16 32 -117 -30.035 -78.284 22 13 1 6 1 2 4 8 16 32 -118 73.663 32.941 24 24 1 6 1 2 4 8 16 32 -119 22.400 -60.083 2 17 1 6 1 2 4 8 16 32 -120 61.206 -13.501 25 8 1 6 1 2 4 8 16 32 -121 22.131 -50.012 21 12 1 6 1 2 4 8 16 32 -122 -6.317 56.665 11 6 1 6 1 2 4 8 16 32 -123 -20.471 12.885 23 20 1 6 1 2 4 8 16 32 -124 -61.084 -44.769 4 20 1 6 1 2 4 8 16 32 -125 -9.576 -19.366 1 24 1 6 1 2 4 8 16 32 -126 5.627 -88.501 15 10 1 6 1 2 4 8 16 32 -127 -2.618 22.131 20 18 1 6 1 2 4 8 16 32 -128 40.497 32.343 8 10 1 6 1 2 4 8 16 32 -129 -3.296 36.774 4 15 1 6 1 2 4 8 16 32 -130 -50.995 19.781 12 12 1 6 1 2 4 8 16 32 -131 -70.520 -3.809 23 22 1 6 1 2 4 8 16 32 -132 4.205 0.812 25 11 1 6 1 2 4 8 16 32 -133 9.955 26.337 5 14 1 6 1 2 4 8 16 32 -134 13.538 -21.313 15 9 1 6 1 2 4 8 16 32 -135 -21.869 -18.768 2 6 1 6 1 2 4 8 16 32 -136 -37.158 -30.768 22 23 1 6 1 2 4 8 16 32 -137 -86.975 10.345 16 8 1 6 1 2 4 8 16 32 -138 -47.272 -46.326 23 22 1 6 1 2 4 8 16 32 -139 4.095 -19.354 13 7 1 6 1 2 4 8 16 32 -140 4.205 30.292 7 15 1 6 1 2 4 8 16 32 -141 -42.017 53.986 20 22 1 6 1 2 4 8 16 32 -142 35.095 -10.895 25 7 1 6 1 2 4 8 16 32 -143 61.188 -59.875 12 14 1 6 1 2 4 8 16 32 -144 -34.674 -1.337 9 21 1 6 1 2 4 8 16 32 -145 -3.799 44.290 0 0 0 0 -146 14.233 21.173 0 0 0 0 -147 -23.334 -28.397 0 0 0 0 -148 10.065 1.822 0 0 0 0 -149 -49.115 -43.549 0 0 0 0 -150 -21.054 4.144 0 0 0 0 diff --git a/jsprit-instances/instances/cordeau/pr08.res b/jsprit-instances/instances/cordeau/pr08.res deleted file mode 100644 index bda029e61..000000000 --- a/jsprit-instances/instances/cordeau/pr08.res +++ /dev/null @@ -1,13 +0,0 @@ -1666.60 -1 1 270.50 176.00 145 40 53 129 140 109 34 104 10 35 63 25 101 102 28 145 -1 2 432.14 189.00 145 39 93 141 116 82 84 27 80 57 29 73 7 96 122 145 -2 1 345.65 190.00 146 90 8 38 16 22 61 113 103 4 18 118 51 128 42 50 146 -2 2 14.05 17.00 146 23 146 -3 1 250.79 168.00 147 41 136 107 83 64 85 1 76 32 91 147 -3 2 216.60 186.00 147 56 135 46 24 15 125 77 5 68 108 45 33 147 -4 1 464.59 162.00 148 19 3 139 134 121 119 49 143 69 9 120 26 110 12 142 148 -4 2 272.55 183.00 148 132 65 59 54 123 44 115 127 97 74 106 133 148 -5 1 375.06 179.00 149 14 105 67 70 79 117 6 87 126 88 37 62 149 -5 2 263.76 185.00 149 21 100 58 60 94 89 86 95 52 124 36 112 138 149 -6 1 312.13 190.00 150 144 81 55 131 137 31 30 2 48 92 43 72 150 -6 2 348.78 181.00 150 75 13 114 47 66 11 78 20 98 130 111 17 71 99 150 \ No newline at end of file diff --git a/jsprit-instances/instances/cordeau/pr09 b/jsprit-instances/instances/cordeau/pr09 deleted file mode 100644 index 2d53e4988..000000000 --- a/jsprit-instances/instances/cordeau/pr09 +++ /dev/null @@ -1,229 +0,0 @@ -2 3 216 6 -450 180 -450 180 -450 180 -450 180 -450 180 -450 180 - 1 -41.235 -66.357 14 3 1 6 1 2 4 8 16 32 - 2 34.064 -59.357 16 16 1 6 1 2 4 8 16 32 - 3 20.917 -52.582 17 8 1 6 1 2 4 8 16 32 - 4 -38.538 -37.396 19 15 1 6 1 2 4 8 16 32 - 5 41.058 22.931 6 12 1 6 1 2 4 8 16 32 - 6 -54.034 -53.131 7 13 1 6 1 2 4 8 16 32 - 7 8.099 80.725 3 8 1 6 1 2 4 8 16 32 - 8 81.299 13.409 10 24 1 6 1 2 4 8 16 32 - 9 14.459 -2.972 4 14 1 6 1 2 4 8 16 32 - 10 -52.539 60.107 17 17 1 6 1 2 4 8 16 32 - 11 -57.202 -34.229 10 8 1 6 1 2 4 8 16 32 - 12 -65.552 -40.222 13 11 1 6 1 2 4 8 16 32 - 13 -19.751 -10.278 20 8 1 6 1 2 4 8 16 32 - 14 -26.965 -87.012 6 17 1 6 1 2 4 8 16 32 - 15 3.192 -88.654 18 19 1 6 1 2 4 8 16 32 - 16 34.521 32.837 3 13 1 6 1 2 4 8 16 32 - 17 80.035 5.273 10 2 1 6 1 2 4 8 16 32 - 18 -39.838 -67.731 4 8 1 6 1 2 4 8 16 32 - 19 14.600 11.365 15 21 1 6 1 2 4 8 16 32 - 20 -20.990 -80.511 4 13 1 6 1 2 4 8 16 32 - 21 48.242 47.284 6 17 1 6 1 2 4 8 16 32 - 22 59.338 -31.860 19 4 1 6 1 2 4 8 16 32 - 23 -13.995 -45.624 7 22 1 6 1 2 4 8 16 32 - 24 32.397 -32.532 20 24 1 6 1 2 4 8 16 32 - 25 2.826 50.824 12 11 1 6 1 2 4 8 16 32 - 26 -66.077 -34.686 8 6 1 6 1 2 4 8 16 32 - 27 -13.660 18.640 18 19 1 6 1 2 4 8 16 32 - 28 -59.344 12.769 1 11 1 6 1 2 4 8 16 32 - 29 -5.133 -18.463 25 23 1 6 1 2 4 8 16 32 - 30 -22.961 -21.729 16 4 1 6 1 2 4 8 16 32 - 31 58.130 46.606 5 5 1 6 1 2 4 8 16 32 - 32 -49.603 -76.624 7 16 1 6 1 2 4 8 16 32 - 33 -4.803 43.036 20 2 1 6 1 2 4 8 16 32 - 34 68.616 -19.623 3 13 1 6 1 2 4 8 16 32 - 35 37.915 63.599 11 11 1 6 1 2 4 8 16 32 - 36 1.251 -26.550 15 9 1 6 1 2 4 8 16 32 - 37 -37.952 1.685 15 18 1 6 1 2 4 8 16 32 - 38 -40.503 8.038 8 7 1 6 1 2 4 8 16 32 - 39 -8.392 -38.678 13 24 1 6 1 2 4 8 16 32 - 40 -36.725 25.494 16 5 1 6 1 2 4 8 16 32 - 41 -47.754 -50.073 4 2 1 6 1 2 4 8 16 32 - 42 22.595 -28.357 9 5 1 6 1 2 4 8 16 32 - 43 -36.365 -48.163 5 5 1 6 1 2 4 8 16 32 - 44 75.452 -13.422 20 3 1 6 1 2 4 8 16 32 - 45 -64.520 -13.232 10 13 1 6 1 2 4 8 16 32 - 46 1.257 29.156 9 2 1 6 1 2 4 8 16 32 - 47 -1.569 -35.974 18 10 1 6 1 2 4 8 16 32 - 48 46.747 6.696 13 12 1 6 1 2 4 8 16 32 - 49 82.080 27.057 17 24 1 6 1 2 4 8 16 32 - 50 74.695 19.366 22 21 1 6 1 2 4 8 16 32 - 51 47.015 9.338 5 18 1 6 1 2 4 8 16 32 - 52 -62.036 -21.326 12 5 1 6 1 2 4 8 16 32 - 53 9.192 20.038 4 15 1 6 1 2 4 8 16 32 - 54 -3.094 21.582 5 11 1 6 1 2 4 8 16 32 - 55 -75.446 13.086 22 7 1 6 1 2 4 8 16 32 - 56 10.034 -63.739 7 3 1 6 1 2 4 8 16 32 - 57 71.814 26.501 12 17 1 6 1 2 4 8 16 32 - 58 18.842 -38.019 10 14 1 6 1 2 4 8 16 32 - 59 -10.541 -31.305 18 14 1 6 1 2 4 8 16 32 - 60 8.252 -91.150 17 7 1 6 1 2 4 8 16 32 - 61 72.821 -38.916 3 12 1 6 1 2 4 8 16 32 - 62 -30.157 38.776 1 5 1 6 1 2 4 8 16 32 - 63 -56.256 -5.548 9 11 1 6 1 2 4 8 16 32 - 64 -8.398 -37.604 12 17 1 6 1 2 4 8 16 32 - 65 15.021 13.708 4 3 1 6 1 2 4 8 16 32 - 66 -60.199 24.292 2 7 1 6 1 2 4 8 16 32 - 67 -13.794 -27.106 18 13 1 6 1 2 4 8 16 32 - 68 -34.796 -22.205 23 20 1 6 1 2 4 8 16 32 - 69 69.641 83.057 14 13 1 6 1 2 4 8 16 32 - 70 -44.440 30.090 6 4 1 6 1 2 4 8 16 32 - 71 48.633 3.021 1 3 1 6 1 2 4 8 16 32 - 72 -15.314 51.709 6 24 1 6 1 2 4 8 16 32 - 73 36.261 26.782 6 23 1 6 1 2 4 8 16 32 - 74 59.961 24.310 8 21 1 6 1 2 4 8 16 32 - 75 55.304 6.628 25 23 1 6 1 2 4 8 16 32 - 76 39.960 48.297 3 10 1 6 1 2 4 8 16 32 - 77 -48.895 -71.100 3 21 1 6 1 2 4 8 16 32 - 78 -2.338 -62.909 16 24 1 6 1 2 4 8 16 32 - 79 9.491 -41.901 5 9 1 6 1 2 4 8 16 32 - 80 -54.675 -18.439 6 22 1 6 1 2 4 8 16 32 - 81 10.980 -7.605 6 3 1 6 1 2 4 8 16 32 - 82 -69.824 -50.354 16 6 1 6 1 2 4 8 16 32 - 83 -40.308 -7.452 6 11 1 6 1 2 4 8 16 32 - 84 62.244 43.628 13 10 1 6 1 2 4 8 16 32 - 85 29.077 63.116 4 15 1 6 1 2 4 8 16 32 - 86 -12.067 -21.509 12 9 1 6 1 2 4 8 16 32 - 87 14.728 28.906 15 20 1 6 1 2 4 8 16 32 - 88 -63.086 -60.114 10 19 1 6 1 2 4 8 16 32 - 89 33.655 -0.928 19 19 1 6 1 2 4 8 16 32 - 90 -12.225 14.148 19 19 1 6 1 2 4 8 16 32 - 91 -89.966 51.514 1 20 1 6 1 2 4 8 16 32 - 92 -0.763 41.339 22 1 1 6 1 2 4 8 16 32 - 93 80.695 32.983 20 15 1 6 1 2 4 8 16 32 - 94 -53.394 -14.240 5 18 1 6 1 2 4 8 16 32 - 95 -53.284 -64.136 12 2 1 6 1 2 4 8 16 32 - 96 73.260 10.669 4 25 1 6 1 2 4 8 16 32 - 97 59.613 13.452 12 20 1 6 1 2 4 8 16 32 - 98 -37.012 6.476 8 18 1 6 1 2 4 8 16 32 - 99 -53.656 21.692 10 8 1 6 1 2 4 8 16 32 -100 -36.890 18.372 2 3 1 6 1 2 4 8 16 32 -101 -4.608 -13.806 25 2 1 6 1 2 4 8 16 32 -102 53.802 36.993 14 15 1 6 1 2 4 8 16 32 -103 48.468 -66.040 20 21 1 6 1 2 4 8 16 32 -104 -46.393 -20.929 11 6 1 6 1 2 4 8 16 32 -105 -15.045 -40.845 4 24 1 6 1 2 4 8 16 32 -106 -73.621 -9.552 6 19 1 6 1 2 4 8 16 32 -107 92.847 45.587 8 23 1 6 1 2 4 8 16 32 -108 33.557 28.064 5 16 1 6 1 2 4 8 16 32 -109 47.321 24.414 3 16 1 6 1 2 4 8 16 32 -110 -6.610 -30.157 4 9 1 6 1 2 4 8 16 32 -111 12.103 23.840 24 1 1 6 1 2 4 8 16 32 -112 -61.963 26.239 4 10 1 6 1 2 4 8 16 32 -113 23.877 9.808 11 14 1 6 1 2 4 8 16 32 -114 49.780 6.866 23 11 1 6 1 2 4 8 16 32 -115 -53.021 -21.484 1 4 1 6 1 2 4 8 16 32 -116 54.962 2.985 15 23 1 6 1 2 4 8 16 32 -117 4.865 -69.586 12 23 1 6 1 2 4 8 16 32 -118 33.948 45.209 10 22 1 6 1 2 4 8 16 32 -119 -32.166 -23.621 24 11 1 6 1 2 4 8 16 32 -120 -17.548 -46.765 5 14 1 6 1 2 4 8 16 32 -121 31.744 33.972 23 12 1 6 1 2 4 8 16 32 -122 45.374 22.131 15 13 1 6 1 2 4 8 16 32 -123 -5.219 -23.114 6 11 1 6 1 2 4 8 16 32 -124 -51.056 -46.545 20 9 1 6 1 2 4 8 16 32 -125 11.774 11.133 13 6 1 6 1 2 4 8 16 32 -126 -39.758 -13.019 3 25 1 6 1 2 4 8 16 32 -127 27.930 29.321 3 21 1 6 1 2 4 8 16 32 -128 33.740 66.595 25 13 1 6 1 2 4 8 16 32 -129 -91.815 29.858 15 23 1 6 1 2 4 8 16 32 -130 -24.628 -68.701 6 8 1 6 1 2 4 8 16 32 -131 44.659 20.465 4 7 1 6 1 2 4 8 16 32 -132 45.447 -21.069 14 8 1 6 1 2 4 8 16 32 -133 -37.366 -12.097 15 9 1 6 1 2 4 8 16 32 -134 41.998 0.153 17 2 1 6 1 2 4 8 16 32 -135 -42.822 -30.170 12 24 1 6 1 2 4 8 16 32 -136 34.906 -4.578 2 7 1 6 1 2 4 8 16 32 -137 -65.137 -43.079 11 23 1 6 1 2 4 8 16 32 -138 20.270 -4.999 5 21 1 6 1 2 4 8 16 32 -139 -36.731 -8.929 20 12 1 6 1 2 4 8 16 32 -140 -26.984 -19.568 16 23 1 6 1 2 4 8 16 32 -141 -31.299 -83.813 13 18 1 6 1 2 4 8 16 32 -142 -26.794 12.506 9 5 1 6 1 2 4 8 16 32 -143 -39.362 -58.521 23 15 1 6 1 2 4 8 16 32 -144 -34.369 0.610 11 11 1 6 1 2 4 8 16 32 -145 43.372 4.187 14 8 1 6 1 2 4 8 16 32 -146 -38.226 -9.448 3 2 1 6 1 2 4 8 16 32 -147 -25.610 -99.237 9 6 1 6 1 2 4 8 16 32 -148 48.059 29.517 21 23 1 6 1 2 4 8 16 32 -149 -43.628 -32.318 24 9 1 6 1 2 4 8 16 32 -150 -16.602 -29.327 4 1 1 6 1 2 4 8 16 32 -151 -29.810 -12.408 18 12 1 6 1 2 4 8 16 32 -152 -51.910 -28.711 10 17 1 6 1 2 4 8 16 32 -153 -1.801 -18.671 3 2 1 6 1 2 4 8 16 32 -154 18.738 21.399 4 5 1 6 1 2 4 8 16 32 -155 60.120 7.788 25 1 1 6 1 2 4 8 16 32 -156 43.079 42.017 3 20 1 6 1 2 4 8 16 32 -157 -39.435 -5.902 22 19 1 6 1 2 4 8 16 32 -158 -35.889 -16.034 19 13 1 6 1 2 4 8 16 32 -159 -41.827 38.995 20 10 1 6 1 2 4 8 16 32 -160 84.497 29.822 7 9 1 6 1 2 4 8 16 32 -161 -17.560 -10.480 19 14 1 6 1 2 4 8 16 32 -162 -48.383 -48.920 19 4 1 6 1 2 4 8 16 32 -163 -49.335 -17.969 22 20 1 6 1 2 4 8 16 32 -164 16.095 -2.490 4 17 1 6 1 2 4 8 16 32 -165 65.527 14.026 25 19 1 6 1 2 4 8 16 32 -166 -2.930 13.220 23 19 1 6 1 2 4 8 16 32 -167 -18.768 -23.663 24 16 1 6 1 2 4 8 16 32 -168 -91.095 -80.737 25 4 1 6 1 2 4 8 16 32 -169 -21.088 -13.293 4 1 1 6 1 2 4 8 16 32 -170 46.985 17.224 3 21 1 6 1 2 4 8 16 32 -171 -61.957 -33.038 7 9 1 6 1 2 4 8 16 32 -172 -9.003 -25.452 10 2 1 6 1 2 4 8 16 32 -173 33.661 -7.666 10 24 1 6 1 2 4 8 16 32 -174 -25.592 -10.840 23 1 1 6 1 2 4 8 16 32 -175 36.560 -2.441 18 21 1 6 1 2 4 8 16 32 -176 7.141 24.817 8 13 1 6 1 2 4 8 16 32 -177 -43.170 -30.487 16 15 1 6 1 2 4 8 16 32 -178 -21.228 0.751 4 4 1 6 1 2 4 8 16 32 -179 19.696 10.767 14 10 1 6 1 2 4 8 16 32 -180 -6.494 -29.425 23 19 1 6 1 2 4 8 16 32 -181 54.388 8.630 17 1 1 6 1 2 4 8 16 32 -182 64.203 77.612 7 25 1 6 1 2 4 8 16 32 -183 40.381 1.611 8 3 1 6 1 2 4 8 16 32 -184 -41.711 -5.133 14 21 1 6 1 2 4 8 16 32 -185 74.274 -19.922 22 7 1 6 1 2 4 8 16 32 -186 -73.999 -54.626 7 18 1 6 1 2 4 8 16 32 -187 29.706 15.454 16 3 1 6 1 2 4 8 16 32 -188 23.785 12.177 24 1 1 6 1 2 4 8 16 32 -189 42.578 45.325 15 2 1 6 1 2 4 8 16 32 -190 -16.730 -16.559 15 8 1 6 1 2 4 8 16 32 -191 -14.697 -0.116 5 10 1 6 1 2 4 8 16 32 -192 -19.769 8.392 9 19 1 6 1 2 4 8 16 32 -193 -30.267 14.893 24 17 1 6 1 2 4 8 16 32 -194 -63.116 -67.462 6 19 1 6 1 2 4 8 16 32 -195 86.029 38.916 3 24 1 6 1 2 4 8 16 32 -196 79.480 -24.866 24 24 1 6 1 2 4 8 16 32 -197 35.144 14.734 22 6 1 6 1 2 4 8 16 32 -198 -49.365 -9.052 2 2 1 6 1 2 4 8 16 32 -199 -49.475 -17.578 21 7 1 6 1 2 4 8 16 32 -200 57.501 16.327 17 10 1 6 1 2 4 8 16 32 -201 54.889 12.024 13 13 1 6 1 2 4 8 16 32 -202 -53.027 -33.179 21 20 1 6 1 2 4 8 16 32 -203 -0.415 16.644 3 1 1 6 1 2 4 8 16 32 -204 21.594 16.144 9 17 1 6 1 2 4 8 16 32 -205 -46.924 -49.261 14 17 1 6 1 2 4 8 16 32 -206 18.457 19.733 9 16 1 6 1 2 4 8 16 32 -207 35.822 19.763 3 9 1 6 1 2 4 8 16 32 -208 71.869 29.034 22 25 1 6 1 2 4 8 16 32 -209 -56.378 -42.755 13 1 1 6 1 2 4 8 16 32 -210 -25.800 25.159 10 23 1 6 1 2 4 8 16 32 -211 -5.676 33.850 7 10 1 6 1 2 4 8 16 32 -212 54.041 -5.292 3 15 1 6 1 2 4 8 16 32 -213 -63.074 27.380 11 25 1 6 1 2 4 8 16 32 -214 -16.864 -49.768 17 25 1 6 1 2 4 8 16 32 -215 47.919 13.629 15 16 1 6 1 2 4 8 16 32 -216 -10.724 -2.075 4 1 1 6 1 2 4 8 16 32 -217 -15.067 -23.950 0 0 0 0 -218 38.791 22.443 0 0 0 0 -219 -41.833 -35.361 0 0 0 0 -220 -29.523 -4.843 0 0 0 0 -221 49.725 11.990 0 0 0 0 -222 21.133 14.142 0 0 0 0 diff --git a/jsprit-instances/instances/cordeau/pr09.res b/jsprit-instances/instances/cordeau/pr09.res deleted file mode 100644 index 3f0e4ca19..000000000 --- a/jsprit-instances/instances/cordeau/pr09.res +++ /dev/null @@ -1,19 +0,0 @@ -2153.10 -1 1 411.63 180.00 217 172 123 36 79 58 3 2 103 60 15 117 56 78 59 217 -1 2 248.18 98.00 217 167 30 190 169 13 161 191 216 101 153 29 86 217 -1 3 193.28 178.00 217 67 180 110 47 64 39 23 214 120 105 150 217 -2 1 277.47 178.00 218 5 131 122 109 148 102 84 31 69 182 21 189 156 218 -2 2 414.30 180.00 218 207 197 187 87 176 46 211 92 33 72 25 7 85 128 35 76 118 218 -2 3 73.78 85.00 218 73 16 121 127 108 218 -3 1 206.36 147.00 219 177 135 104 163 199 94 80 52 115 152 149 219 -3 2 333.16 166.00 219 202 11 171 26 12 137 82 186 168 194 88 6 124 209 219 -3 3 328.42 170.00 219 205 162 41 95 77 32 141 14 147 20 130 18 1 143 43 4 219 -4 1 272.14 172.00 220 144 37 98 38 28 66 112 213 99 70 40 100 193 142 192 178 220 -4 2 362.78 171.00 220 184 198 63 45 106 55 129 91 10 159 62 210 220 -4 3 254.11 158.00 220 174 151 140 119 68 158 126 133 139 146 83 157 220 -5 1 359.80 180.00 221 201 165 96 8 17 44 34 185 196 61 22 132 212 114 221 -5 2 225.58 160.00 221 215 170 200 97 181 75 116 71 134 183 145 48 51 221 -5 3 264.70 180.00 221 74 57 208 93 107 195 160 49 50 155 221 -6 1 236.75 153.00 222 65 19 125 203 166 90 27 54 53 111 154 206 204 222 -6 2 266.65 180.00 222 179 138 164 9 81 42 24 173 136 175 89 113 188 222 -6 3 -0.00 0.00 222 222 \ No newline at end of file diff --git a/jsprit-instances/instances/cordeau/pr10 b/jsprit-instances/instances/cordeau/pr10 deleted file mode 100644 index 171a8010f..000000000 --- a/jsprit-instances/instances/cordeau/pr10 +++ /dev/null @@ -1,301 +0,0 @@ -2 4 288 6 -425 170 -425 170 -425 170 -425 170 -425 170 -425 170 - 1 12.805 1.886 15 10 1 6 1 2 4 8 16 32 - 2 18.213 1.373 7 21 1 6 1 2 4 8 16 32 - 3 57.947 -48.779 10 8 1 6 1 2 4 8 16 32 - 4 -52.429 -84.088 20 23 1 6 1 2 4 8 16 32 - 5 60.797 -32.593 11 10 1 6 1 2 4 8 16 32 - 6 23.151 4.205 7 9 1 6 1 2 4 8 16 32 - 7 25.385 22.986 14 21 1 6 1 2 4 8 16 32 - 8 25.513 -52.985 15 16 1 6 1 2 4 8 16 32 - 9 -49.261 -41.718 8 21 1 6 1 2 4 8 16 32 - 10 -37.561 -41.730 5 3 1 6 1 2 4 8 16 32 - 11 -14.520 48.962 17 24 1 6 1 2 4 8 16 32 - 12 41.229 -24.500 1 2 1 6 1 2 4 8 16 32 - 13 -21.863 0.916 3 4 1 6 1 2 4 8 16 32 - 14 -48.181 -16.284 8 18 1 6 1 2 4 8 16 32 - 15 -7.776 44.348 14 5 1 6 1 2 4 8 16 32 - 16 20.801 10.760 3 13 1 6 1 2 4 8 16 32 - 17 -29.712 -46.326 6 13 1 6 1 2 4 8 16 32 - 18 -20.203 -59.564 23 14 1 6 1 2 4 8 16 32 - 19 -87.079 -52.899 14 10 1 6 1 2 4 8 16 32 - 20 3.046 -6.305 1 3 1 6 1 2 4 8 16 32 - 21 11.865 5.261 2 1 1 6 1 2 4 8 16 32 - 22 -24.072 -55.927 17 11 1 6 1 2 4 8 16 32 - 23 -22.803 5.658 15 16 1 6 1 2 4 8 16 32 - 24 -51.904 9.412 18 6 1 6 1 2 4 8 16 32 - 25 12.732 -40.967 15 18 1 6 1 2 4 8 16 32 - 26 -30.988 7.654 7 11 1 6 1 2 4 8 16 32 - 27 37.512 0.458 4 15 1 6 1 2 4 8 16 32 - 28 2.954 -8.563 24 17 1 6 1 2 4 8 16 32 - 29 0.549 3.644 18 17 1 6 1 2 4 8 16 32 - 30 -52.484 9.711 2 1 1 6 1 2 4 8 16 32 - 31 33.936 -48.718 4 1 1 6 1 2 4 8 16 32 - 32 -13.129 -53.601 11 18 1 6 1 2 4 8 16 32 - 33 -99.591 23.303 25 3 1 6 1 2 4 8 16 32 - 34 6.439 -3.516 15 21 1 6 1 2 4 8 16 32 - 35 -14.032 -19.818 18 22 1 6 1 2 4 8 16 32 - 36 -24.677 16.608 9 14 1 6 1 2 4 8 16 32 - 37 -10.260 -81.769 23 4 1 6 1 2 4 8 16 32 - 38 35.858 5.597 22 17 1 6 1 2 4 8 16 32 - 39 -11.603 42.908 9 16 1 6 1 2 4 8 16 32 - 40 -34.662 -15.466 20 8 1 6 1 2 4 8 16 32 - 41 66.852 1.135 13 14 1 6 1 2 4 8 16 32 - 42 6.866 -1.416 3 23 1 6 1 2 4 8 16 32 - 43 1.660 -2.234 6 1 1 6 1 2 4 8 16 32 - 44 37.561 11.450 18 21 1 6 1 2 4 8 16 32 - 45 51.672 -26.343 9 10 1 6 1 2 4 8 16 32 - 46 19.025 -10.889 24 19 1 6 1 2 4 8 16 32 - 47 -37.982 -6.360 19 6 1 6 1 2 4 8 16 32 - 48 -56.537 -42.334 11 4 1 6 1 2 4 8 16 32 - 49 1.099 -14.624 14 18 1 6 1 2 4 8 16 32 - 50 -56.238 -3.076 15 23 1 6 1 2 4 8 16 32 - 51 -23.669 -15.289 5 25 1 6 1 2 4 8 16 32 - 52 -34.277 -1.410 18 17 1 6 1 2 4 8 16 32 - 53 -64.178 63.812 22 11 1 6 1 2 4 8 16 32 - 54 -47.083 -20.386 13 20 1 6 1 2 4 8 16 32 - 55 -33.710 8.380 11 9 1 6 1 2 4 8 16 32 - 56 34.290 26.031 11 23 1 6 1 2 4 8 16 32 - 57 -38.861 42.114 1 14 1 6 1 2 4 8 16 32 - 58 -92.731 44.885 25 7 1 6 1 2 4 8 16 32 - 59 23.633 27.643 19 15 1 6 1 2 4 8 16 32 - 60 -67.139 -67.078 13 22 1 6 1 2 4 8 16 32 - 61 25.726 -25.836 7 4 1 6 1 2 4 8 16 32 - 62 -40.985 -16.895 2 14 1 6 1 2 4 8 16 32 - 63 77.008 -6.097 16 24 1 6 1 2 4 8 16 32 - 64 -54.810 -1.935 2 13 1 6 1 2 4 8 16 32 - 65 -53.943 -29.663 1 9 1 6 1 2 4 8 16 32 - 66 16.089 -27.887 19 3 1 6 1 2 4 8 16 32 - 67 -59.436 36.487 24 23 1 6 1 2 4 8 16 32 - 68 34.473 25.391 19 2 1 6 1 2 4 8 16 32 - 69 -9.283 -6.689 24 23 1 6 1 2 4 8 16 32 - 70 -85.559 -20.477 10 8 1 6 1 2 4 8 16 32 - 71 29.523 18.347 19 23 1 6 1 2 4 8 16 32 - 72 27.814 6.512 1 13 1 6 1 2 4 8 16 32 - 73 42.151 -25.580 19 25 1 6 1 2 4 8 16 32 - 74 82.202 85.828 25 25 1 6 1 2 4 8 16 32 - 75 -47.766 -35.590 24 20 1 6 1 2 4 8 16 32 - 76 22.015 -20.349 11 9 1 6 1 2 4 8 16 32 - 77 -55.756 -33.490 7 15 1 6 1 2 4 8 16 32 - 78 62.006 -1.453 25 4 1 6 1 2 4 8 16 32 - 79 25.549 -3.796 3 1 1 6 1 2 4 8 16 32 - 80 -43.372 -7.379 3 7 1 6 1 2 4 8 16 32 - 81 60.297 52.637 18 12 1 6 1 2 4 8 16 32 - 82 -96.155 34.100 18 5 1 6 1 2 4 8 16 32 - 83 -32.806 -3.845 9 8 1 6 1 2 4 8 16 32 - 84 -47.827 -45.203 21 1 1 6 1 2 4 8 16 32 - 85 -31.128 -93.848 21 24 1 6 1 2 4 8 16 32 - 86 -17.010 -21.857 21 23 1 6 1 2 4 8 16 32 - 87 -8.386 -2.264 11 12 1 6 1 2 4 8 16 32 - 88 35.834 13.147 2 2 1 6 1 2 4 8 16 32 - 89 29.315 54.468 4 22 1 6 1 2 4 8 16 32 - 90 48.352 -8.783 3 3 1 6 1 2 4 8 16 32 - 91 -2.930 27.039 8 12 1 6 1 2 4 8 16 32 - 92 -16.620 -55.389 20 16 1 6 1 2 4 8 16 32 - 93 -40.851 -47.742 23 8 1 6 1 2 4 8 16 32 - 94 -12.878 -2.039 15 25 1 6 1 2 4 8 16 32 - 95 -51.776 7.281 3 6 1 6 1 2 4 8 16 32 - 96 -32.922 23.828 14 24 1 6 1 2 4 8 16 32 - 97 13.983 -34.521 8 16 1 6 1 2 4 8 16 32 - 98 -35.834 -23.834 4 7 1 6 1 2 4 8 16 32 - 99 91.858 5.542 19 9 1 6 1 2 4 8 16 32 -100 -28.442 -34.180 6 23 1 6 1 2 4 8 16 32 -101 33.844 27.875 1 24 1 6 1 2 4 8 16 32 -102 98.431 31.348 2 19 1 6 1 2 4 8 16 32 -103 -57.751 -27.753 3 9 1 6 1 2 4 8 16 32 -104 -43.890 13.007 24 10 1 6 1 2 4 8 16 32 -105 37.585 49.768 6 23 1 6 1 2 4 8 16 32 -106 -3.687 7.373 14 2 1 6 1 2 4 8 16 32 -107 -98.242 61.658 22 5 1 6 1 2 4 8 16 32 -108 -23.560 -32.520 14 25 1 6 1 2 4 8 16 32 -109 22.980 -18.109 7 17 1 6 1 2 4 8 16 32 -110 43.915 -2.985 13 23 1 6 1 2 4 8 16 32 -111 71.509 11.652 19 23 1 6 1 2 4 8 16 32 -112 -43.011 -38.702 6 13 1 6 1 2 4 8 16 32 -113 -83.954 2.179 4 2 1 6 1 2 4 8 16 32 -114 11.090 -40.942 17 24 1 6 1 2 4 8 16 32 -115 27.173 -13.330 17 22 1 6 1 2 4 8 16 32 -116 -86.102 -59.808 13 20 1 6 1 2 4 8 16 32 -117 -22.345 -78.278 21 15 1 6 1 2 4 8 16 32 -118 -38.727 -33.588 8 12 1 6 1 2 4 8 16 32 -119 -1.227 -28.668 7 17 1 6 1 2 4 8 16 32 -120 81.329 -44.244 15 21 1 6 1 2 4 8 16 32 -121 51.904 19.891 5 10 1 6 1 2 4 8 16 32 -122 -34.973 -27.856 6 4 1 6 1 2 4 8 16 32 -123 -51.483 -23.248 17 21 1 6 1 2 4 8 16 32 -124 -0.647 -46.057 4 3 1 6 1 2 4 8 16 32 -125 68.219 -66.986 25 17 1 6 1 2 4 8 16 32 -126 -15.149 -25.482 11 19 1 6 1 2 4 8 16 32 -127 22.412 -34.375 17 10 1 6 1 2 4 8 16 32 -128 36.176 -10.431 17 21 1 6 1 2 4 8 16 32 -129 -23.639 -47.681 2 21 1 6 1 2 4 8 16 32 -130 -14.722 32.684 7 6 1 6 1 2 4 8 16 32 -131 16.821 -12.720 16 8 1 6 1 2 4 8 16 32 -132 93.378 23.004 2 8 1 6 1 2 4 8 16 32 -133 40.344 -24.176 12 13 1 6 1 2 4 8 16 32 -134 5.530 -4.901 7 7 1 6 1 2 4 8 16 32 -135 -78.015 1.270 19 11 1 6 1 2 4 8 16 32 -136 51.569 -45.673 16 18 1 6 1 2 4 8 16 32 -137 49.249 -30.896 17 10 1 6 1 2 4 8 16 32 -138 -62.195 -21.399 8 25 1 6 1 2 4 8 16 32 -139 -5.048 7.306 24 7 1 6 1 2 4 8 16 32 -140 1.727 -70.221 10 17 1 6 1 2 4 8 16 32 -141 1.361 -3.564 20 20 1 6 1 2 4 8 16 32 -142 -15.521 16.425 8 18 1 6 1 2 4 8 16 32 -143 -31.604 -60.938 6 21 1 6 1 2 4 8 16 32 -144 -46.997 -55.560 5 14 1 6 1 2 4 8 16 32 -145 2.301 5.536 23 2 1 6 1 2 4 8 16 32 -146 -30.328 -0.580 14 18 1 6 1 2 4 8 16 32 -147 -16.821 17.664 23 10 1 6 1 2 4 8 16 32 -148 52.655 29.034 13 5 1 6 1 2 4 8 16 32 -149 -11.993 -83.771 12 15 1 6 1 2 4 8 16 32 -150 41.632 43.048 13 17 1 6 1 2 4 8 16 32 -151 8.508 -2.539 20 12 1 6 1 2 4 8 16 32 -152 31.512 -8.978 14 14 1 6 1 2 4 8 16 32 -153 -3.339 -36.243 6 3 1 6 1 2 4 8 16 32 -154 -26.379 13.776 4 7 1 6 1 2 4 8 16 32 -155 28.430 10.571 13 21 1 6 1 2 4 8 16 32 -156 5.975 27.289 1 7 1 6 1 2 4 8 16 32 -157 -32.135 -45.068 9 5 1 6 1 2 4 8 16 32 -158 31.097 -7.916 5 24 1 6 1 2 4 8 16 32 -159 28.198 -29.755 7 13 1 6 1 2 4 8 16 32 -160 -39.612 -33.594 4 18 1 6 1 2 4 8 16 32 -161 -19.220 -5.133 12 19 1 6 1 2 4 8 16 32 -162 -10.114 69.977 20 22 1 6 1 2 4 8 16 32 -163 22.894 -44.348 20 13 1 6 1 2 4 8 16 32 -164 -34.741 0.580 14 10 1 6 1 2 4 8 16 32 -165 -44.952 -77.734 11 4 1 6 1 2 4 8 16 32 -166 -23.749 -56.012 1 17 1 6 1 2 4 8 16 32 -167 69.073 -97.125 5 2 1 6 1 2 4 8 16 32 -168 12.170 -59.869 1 18 1 6 1 2 4 8 16 32 -169 47.339 17.365 14 2 1 6 1 2 4 8 16 32 -170 -4.706 14.056 19 18 1 6 1 2 4 8 16 32 -171 -52.374 -50.244 16 13 1 6 1 2 4 8 16 32 -172 39.215 -29.773 21 24 1 6 1 2 4 8 16 32 -173 -42.316 -60.602 9 25 1 6 1 2 4 8 16 32 -174 19.135 41.150 1 2 1 6 1 2 4 8 16 32 -175 -54.706 -17.596 18 2 1 6 1 2 4 8 16 32 -176 11.737 -83.173 7 7 1 6 1 2 4 8 16 32 -177 -40.582 -53.247 15 23 1 6 1 2 4 8 16 32 -178 -6.421 21.967 21 21 1 6 1 2 4 8 16 32 -179 -31.268 -34.613 4 18 1 6 1 2 4 8 16 32 -180 -3.668 -26.868 21 21 1 6 1 2 4 8 16 32 -181 13.409 -22.302 10 23 1 6 1 2 4 8 16 32 -182 -95.892 -86.322 16 16 1 6 1 2 4 8 16 32 -183 88.983 -53.387 21 22 1 6 1 2 4 8 16 32 -184 -55.048 -32.538 7 11 1 6 1 2 4 8 16 32 -185 27.850 -10.028 8 22 1 6 1 2 4 8 16 32 -186 40.918 -36.090 6 10 1 6 1 2 4 8 16 32 -187 -58.350 15.814 23 15 1 6 1 2 4 8 16 32 -188 -52.161 -74.725 18 23 1 6 1 2 4 8 16 32 -189 -66.772 -34.943 6 7 1 6 1 2 4 8 16 32 -190 -33.374 -62.024 6 1 1 6 1 2 4 8 16 32 -191 -8.649 31.708 14 21 1 6 1 2 4 8 16 32 -192 -26.166 -56.152 14 11 1 6 1 2 4 8 16 32 -193 -39.874 -53.375 22 2 1 6 1 2 4 8 16 32 -194 71.643 -36.981 22 24 1 6 1 2 4 8 16 32 -195 -96.924 8.411 25 25 1 6 1 2 4 8 16 32 -196 -2.911 36.200 13 17 1 6 1 2 4 8 16 32 -197 -53.253 14.099 21 10 1 6 1 2 4 8 16 32 -198 67.316 -39.734 14 18 1 6 1 2 4 8 16 32 -199 -6.525 11.975 18 2 1 6 1 2 4 8 16 32 -200 16.425 33.221 18 12 1 6 1 2 4 8 16 32 -201 -19.061 -56.921 11 4 1 6 1 2 4 8 16 32 -202 25.189 -21.045 10 1 1 6 1 2 4 8 16 32 -203 37.854 -5.524 15 1 1 6 1 2 4 8 16 32 -204 -16.479 48.657 3 6 1 6 1 2 4 8 16 32 -205 2.344 -16.516 2 22 1 6 1 2 4 8 16 32 -206 -48.621 -12.390 12 25 1 6 1 2 4 8 16 32 -207 -42.621 -50.006 18 21 1 6 1 2 4 8 16 32 -208 16.016 11.169 1 18 1 6 1 2 4 8 16 32 -209 -80.408 -60.583 3 14 1 6 1 2 4 8 16 32 -210 -95.068 44.293 4 21 1 6 1 2 4 8 16 32 -211 -6.885 24.884 12 4 1 6 1 2 4 8 16 32 -212 -4.803 21.674 15 1 1 6 1 2 4 8 16 32 -213 7.037 -45.337 22 18 1 6 1 2 4 8 16 32 -214 31.293 -39.905 20 4 1 6 1 2 4 8 16 32 -215 14.984 26.172 16 4 1 6 1 2 4 8 16 32 -216 33.203 -52.289 11 5 1 6 1 2 4 8 16 32 -217 -59.277 39.667 20 15 1 6 1 2 4 8 16 32 -218 30.054 -36.823 13 5 1 6 1 2 4 8 16 32 -219 9.351 -39.044 9 22 1 6 1 2 4 8 16 32 -220 -10.651 54.431 16 21 1 6 1 2 4 8 16 32 -221 20.856 -26.465 7 17 1 6 1 2 4 8 16 32 -222 19.617 17.865 21 8 1 6 1 2 4 8 16 32 -223 -36.981 -92.950 18 4 1 6 1 2 4 8 16 32 -224 -3.760 59.875 4 4 1 6 1 2 4 8 16 32 -225 11.682 -63.336 15 16 1 6 1 2 4 8 16 32 -226 4.468 -36.133 5 5 1 6 1 2 4 8 16 32 -227 47.040 -41.254 24 15 1 6 1 2 4 8 16 32 -228 29.938 -58.710 21 25 1 6 1 2 4 8 16 32 -229 -70.569 -7.037 7 15 1 6 1 2 4 8 16 32 -230 56.262 1.819 24 7 1 6 1 2 4 8 16 32 -231 46.210 -53.522 22 19 1 6 1 2 4 8 16 32 -232 6.366 -14.264 1 11 1 6 1 2 4 8 16 32 -233 -34.540 -39.502 6 13 1 6 1 2 4 8 16 32 -234 -50.537 28.357 4 24 1 6 1 2 4 8 16 32 -235 -61.444 -10.901 14 4 1 6 1 2 4 8 16 32 -236 -30.823 17.902 18 13 1 6 1 2 4 8 16 32 -237 49.658 24.469 16 6 1 6 1 2 4 8 16 32 -238 -69.775 -41.406 1 4 1 6 1 2 4 8 16 32 -239 -18.939 57.690 24 12 1 6 1 2 4 8 16 32 -240 -22.449 15.771 19 4 1 6 1 2 4 8 16 32 -241 -7.599 37.030 19 4 1 6 1 2 4 8 16 32 -242 27.435 17.554 11 25 1 6 1 2 4 8 16 32 -243 45.526 -5.127 9 25 1 6 1 2 4 8 16 32 -244 -33.551 -25.586 3 14 1 6 1 2 4 8 16 32 -245 -4.645 53.754 1 25 1 6 1 2 4 8 16 32 -246 -41.119 -13.361 10 13 1 6 1 2 4 8 16 32 -247 23.010 -45.703 19 13 1 6 1 2 4 8 16 32 -248 17.230 5.096 14 11 1 6 1 2 4 8 16 32 -249 -6.818 -19.873 14 24 1 6 1 2 4 8 16 32 -250 52.966 51.410 24 5 1 6 1 2 4 8 16 32 -251 -28.662 -50.940 16 12 1 6 1 2 4 8 16 32 -252 69.684 -51.520 6 4 1 6 1 2 4 8 16 32 -253 36.884 -17.371 9 5 1 6 1 2 4 8 16 32 -254 -19.659 42.035 20 24 1 6 1 2 4 8 16 32 -255 72.125 65.405 21 17 1 6 1 2 4 8 16 32 -256 -71.368 59.863 8 4 1 6 1 2 4 8 16 32 -257 18.317 -37.750 11 1 1 6 1 2 4 8 16 32 -258 18.121 0.482 13 19 1 6 1 2 4 8 16 32 -259 -1.105 -30.676 24 7 1 6 1 2 4 8 16 32 -260 -44.574 -44.055 15 24 1 6 1 2 4 8 16 32 -261 -28.058 -59.436 6 10 1 6 1 2 4 8 16 32 -262 -7.953 4.639 24 13 1 6 1 2 4 8 16 32 -263 -37.366 -28.528 3 24 1 6 1 2 4 8 16 32 -264 4.388 -38.489 16 3 1 6 1 2 4 8 16 32 -265 -44.592 -35.333 24 14 1 6 1 2 4 8 16 32 -266 -56.714 -39.252 19 2 1 6 1 2 4 8 16 32 -267 13.452 -32.159 5 24 1 6 1 2 4 8 16 32 -268 -20.343 -11.182 11 11 1 6 1 2 4 8 16 32 -269 3.436 -52.734 19 5 1 6 1 2 4 8 16 32 -270 40.576 -54.492 22 14 1 6 1 2 4 8 16 32 -271 31.952 -25.421 23 21 1 6 1 2 4 8 16 32 -272 -57.434 38.525 12 14 1 6 1 2 4 8 16 32 -273 47.510 -42.035 23 15 1 6 1 2 4 8 16 32 -274 -28.143 -41.614 25 3 1 6 1 2 4 8 16 32 -275 -2.258 -5.078 3 15 1 6 1 2 4 8 16 32 -276 -27.167 -27.936 25 15 1 6 1 2 4 8 16 32 -277 -24.048 -47.192 1 21 1 6 1 2 4 8 16 32 -278 -77.521 -55.084 16 17 1 6 1 2 4 8 16 32 -279 -62.036 -43.439 21 18 1 6 1 2 4 8 16 32 -280 -71.936 -20.160 11 15 1 6 1 2 4 8 16 32 -281 -66.504 -39.789 6 19 1 6 1 2 4 8 16 32 -282 14.587 48.444 14 9 1 6 1 2 4 8 16 32 -283 31.366 -29.462 23 10 1 6 1 2 4 8 16 32 -284 6.512 -46.124 9 13 1 6 1 2 4 8 16 32 -285 9.650 39.508 8 25 1 6 1 2 4 8 16 32 -286 16.040 16.681 19 1 1 6 1 2 4 8 16 32 -287 7.745 -75.378 17 11 1 6 1 2 4 8 16 32 -288 -27.173 -4.462 15 25 1 6 1 2 4 8 16 32 -289 -40.198 -12.781 0 0 0 0 -290 -40.488 -35.864 0 0 0 0 -291 -1.193 2.515 0 0 0 0 -292 18.329 -35.468 0 0 0 0 -293 23.746 -0.522 0 0 0 0 -294 -46.396 -39.923 0 0 0 0 diff --git a/jsprit-instances/instances/cordeau/pr10.res b/jsprit-instances/instances/cordeau/pr10.res deleted file mode 100644 index 47aec85c5..000000000 --- a/jsprit-instances/instances/cordeau/pr10.res +++ /dev/null @@ -1,25 +0,0 @@ -2921.85 -1 1 217.89 160.00 289 62 14 175 138 280 70 235 50 64 206 246 289 -1 2 424.81 140.00 289 95 30 234 53 256 107 58 210 82 33 195 113 135 229 289 -1 3 351.43 170.00 289 164 55 236 96 57 272 217 67 187 197 24 104 80 289 -1 4 276.62 166.00 289 40 288 13 23 142 147 240 36 154 26 146 52 83 47 289 -2 1 229.12 168.00 290 276 86 35 249 94 161 268 51 122 290 -2 2 220.14 167.00 290 112 93 207 177 193 173 190 143 261 251 17 157 233 290 -2 3 220.30 169.00 290 160 118 274 277 129 32 92 201 18 166 22 192 10 290 -2 4 231.57 163.00 290 179 100 108 126 180 119 259 226 219 264 153 290 -3 1 341.38 164.00 291 145 156 285 282 245 224 162 239 220 15 196 91 212 106 291 -3 2 314.00 166.00 291 139 170 178 211 191 241 39 11 204 254 130 199 262 291 -3 3 196.34 170.00 291 29 42 151 34 134 28 20 141 275 69 87 291 -3 4 258.75 163.00 291 1 21 286 222 16 248 2 258 46 131 232 205 49 43 291 -4 1 335.03 169.00 292 163 214 31 216 270 231 273 227 186 172 73 12 133 253 61 292 -4 2 418.26 169.00 292 218 136 3 252 125 167 183 120 194 198 5 45 137 292 -4 3 212.90 164.00 292 127 159 283 271 202 109 76 221 181 66 267 97 292 -4 4 259.46 170.00 292 25 114 213 284 124 269 168 225 228 8 247 257 292 -5 1 168.08 168.00 293 79 185 115 158 152 128 203 243 110 27 293 -5 2 393.82 170.00 293 6 38 44 169 121 111 102 132 99 63 41 78 230 90 293 -5 3 422.56 170.00 293 208 215 200 174 89 105 150 250 74 255 81 148 237 88 293 -5 4 178.70 167.00 293 242 7 59 101 56 68 71 155 72 293 -6 1 36.13 45.00 294 260 9 294 -6 2 408.90 162.00 294 140 287 176 37 149 117 85 223 4 165 188 144 84 294 -6 3 174.62 164.00 294 75 77 184 65 103 123 54 98 244 263 265 294 -6 4 328.05 166.00 294 266 48 279 281 189 238 278 209 19 116 182 60 171 294 \ No newline at end of file diff --git a/jsprit-instances/instances/lilim/1000/LC1101.txt b/jsprit-instances/instances/lilim/1000/LC1101.txt deleted file mode 100644 index 3e5738373..000000000 --- a/jsprit-instances/instances/lilim/1000/LC1101.txt +++ /dev/null @@ -1,1056 +0,0 @@ -250 200 1 -0 250 250 0 0 1824 0 0 0 -1 387 297 10 200 270 90 0 496 -2 5 297 10 955 1017 90 0 62 -3 355 177 20 194 245 90 0 193 -4 78 346 30 355 403 90 0 919 -5 286 159 -20 530 597 90 774 0 -6 322 465 10 226 291 90 0 268 -7 393 408 -20 630 708 90 451 0 -8 89 216 -30 495 562 90 129 0 -9 76 345 30 539 586 90 0 105 -10 410 285 20 499 556 90 0 273 -11 472 189 30 385 440 90 0 733 -12 270 49 -30 925 970 90 618 0 -13 219 325 -20 520 563 90 855 0 -14 437 12 20 557 613 90 0 700 -15 418 218 20 974 1030 0 0 1014 -16 20 488 -10 754 820 90 489 0 -17 77 347 -10 436 505 90 380 0 -18 73 346 10 726 772 90 0 97 -19 480 455 -10 1123 1179 90 302 0 -20 129 292 -20 552 610 90 329 0 -21 337 257 -20 805 863 90 796 0 -22 237 254 -10 629 688 90 438 0 -23 131 220 -10 749 810 90 298 0 -24 417 417 -20 954 1020 90 925 0 -25 287 143 10 748 793 0 0 1046 -26 379 80 -30 737 789 90 173 0 -27 87 285 -20 709 764 90 986 0 -28 374 489 20 269 339 90 0 775 -29 440 247 -20 717 779 90 112 0 -30 281 137 10 370 416 90 0 136 -31 379 196 20 665 714 90 0 41 -32 297 102 -10 214 281 90 941 0 -33 39 76 10 328 399 90 0 709 -34 35 306 20 369 440 90 0 912 -35 435 68 10 259 314 90 0 868 -36 245 251 10 60 130 90 0 311 -37 409 88 -10 655 715 90 582 0 -38 273 55 20 196 246 90 0 192 -39 163 340 30 468 513 90 0 782 -40 129 223 20 274 340 90 0 610 -41 371 200 -20 843 916 90 31 0 -42 357 26 -20 1162 1202 90 659 0 -43 470 473 -20 1221 1270 90 790 0 -44 77 344 10 254 319 90 0 89 -45 478 461 10 462 529 90 0 575 -46 128 291 10 639 706 90 0 689 -47 111 113 10 632 694 90 0 603 -48 164 21 20 578 639 0 0 1019 -49 21 485 30 487 540 90 0 490 -50 108 26 10 423 491 90 0 822 -51 424 286 10 517 571 90 0 848 -52 200 270 20 208 260 90 0 140 -53 7 300 -20 1056 1104 90 407 0 -54 433 31 10 285 333 90 0 135 -55 420 295 -10 976 1044 90 141 0 -56 451 367 -20 1134 1195 90 580 0 -57 118 157 -20 403 465 90 562 0 -58 489 101 -20 1005 1066 90 787 0 -59 200 261 -10 945 1017 90 699 0 -60 476 483 -30 657 722 90 625 0 -61 30 302 10 572 632 90 0 744 -62 8 300 -10 1131 1211 90 2 0 -63 275 45 20 444 515 90 0 366 -64 238 46 40 735 784 90 0 589 -65 152 206 10 910 973 0 0 1047 -66 99 218 30 154 205 90 0 491 -67 393 410 -10 913 982 90 427 0 -68 480 460 20 549 627 90 0 187 -69 337 256 20 154 201 90 0 566 -70 389 300 -20 293 364 90 231 0 -71 90 237 -20 1229 1284 90 723 0 -72 321 280 30 143 194 90 0 588 -73 417 218 -20 1060 1126 90 293 0 -74 64 108 10 473 539 90 0 338 -75 57 432 -20 973 1033 90 570 0 -76 356 24 20 249 323 90 0 467 -77 143 207 30 267 326 90 0 186 -78 221 325 10 594 673 90 0 794 -79 22 483 30 325 389 90 0 387 -80 24 65 -20 904 976 90 271 0 -81 141 431 -20 362 423 90 106 0 -82 202 9 10 1225 1281 0 0 1018 -83 20 48 -10 1294 1358 90 367 0 -84 457 163 -30 284 346 90 194 0 -85 470 290 -10 835 895 90 950 0 -86 268 400 -10 869 928 90 621 0 -87 337 251 10 145 210 90 0 996 -88 366 20 10 874 927 90 0 110 -89 72 344 -10 618 695 90 44 0 -90 149 203 -10 553 597 90 417 0 -91 55 428 -20 511 568 90 571 0 -92 189 7 30 310 372 90 0 200 -93 397 18 -10 519 575 90 108 0 -94 481 122 30 607 653 90 0 843 -95 20 73 10 290 354 90 0 750 -96 54 430 20 610 652 90 0 275 -97 74 350 -10 915 955 90 18 0 -98 202 8 -20 1134 1190 90 683 0 -99 406 285 20 412 456 90 0 649 -100 460 2 -10 655 720 90 334 0 -101 441 244 -20 909 955 90 336 0 -102 1 293 10 492 554 90 0 934 -103 115 465 10 409 465 90 0 401 -104 422 420 20 490 545 0 0 1021 -105 75 347 -30 810 872 90 9 0 -106 141 428 20 208 266 90 0 81 -107 404 264 -40 395 462 90 623 0 -108 398 23 10 270 334 90 0 93 -109 148 211 -20 167 233 90 473 0 -110 362 22 -10 1050 1121 90 88 0 -111 479 127 -20 412 478 90 982 0 -112 443 246 20 536 593 90 0 29 -113 22 37 10 833 894 90 0 452 -114 65 100 10 763 811 90 0 234 -115 404 447 20 250 280 90 0 939 -116 102 264 10 148 215 90 0 840 -117 444 271 -10 633 688 90 829 0 -118 325 466 -10 670 717 90 980 0 -119 124 219 -10 571 615 90 441 0 -120 335 243 -30 428 495 90 997 0 -121 26 42 20 455 519 90 0 448 -122 113 106 20 198 260 90 0 705 -123 399 450 -20 971 1056 90 962 0 -124 146 439 10 642 707 90 0 160 -125 162 336 20 180 247 90 0 857 -126 2 295 30 774 828 0 0 1016 -127 122 35 10 305 376 90 0 235 -128 346 60 10 1027 1086 90 0 691 -129 93 213 30 409 457 90 0 8 -130 218 316 20 73 134 90 0 904 -131 116 156 10 495 557 90 0 374 -132 419 422 -10 575 647 90 785 0 -133 467 141 -40 574 637 90 175 0 -134 187 491 20 771 854 90 0 358 -135 433 25 -10 903 970 90 54 0 -136 286 137 -10 459 516 90 30 0 -137 370 82 -30 450 509 90 931 0 -138 132 290 10 818 898 90 0 225 -139 435 11 40 362 422 90 0 955 -140 206 261 -20 1050 1104 90 52 0 -141 428 291 10 698 764 90 0 55 -142 95 384 -10 719 785 90 505 0 -143 205 223 -10 491 544 90 643 0 -144 463 140 10 295 366 0 0 1017 -145 343 47 -10 738 805 90 909 0 -146 435 62 30 1156 1218 0 0 1010 -147 387 488 -20 987 1046 90 245 0 -148 121 157 10 220 279 90 0 560 -149 182 463 -20 372 440 90 208 0 -150 92 216 10 777 834 90 0 695 -151 370 83 20 357 419 90 0 340 -152 444 242 -10 441 501 90 254 0 -153 90 285 -10 981 1042 90 189 0 -154 446 64 -10 600 665 90 932 0 -155 312 264 20 131 179 90 0 873 -156 208 11 -20 1316 1382 90 764 0 -157 442 247 10 623 689 90 0 283 -158 140 431 30 280 324 90 0 385 -159 118 153 -20 949 1028 90 418 0 -160 134 428 -10 935 992 90 124 0 -161 91 235 -10 1140 1188 90 828 0 -162 406 257 -20 596 637 90 228 0 -163 377 76 20 638 699 0 0 1031 -164 474 96 30 271 327 90 0 877 -165 346 57 20 925 1002 90 0 668 -166 393 301 30 482 545 90 0 515 -167 412 214 10 165 215 90 0 542 -168 210 398 -20 592 647 90 761 0 -169 346 150 -40 948 998 90 294 0 -170 62 453 10 515 584 90 0 240 -171 437 61 -20 1063 1127 90 370 0 -172 87 96 30 744 810 90 0 569 -173 367 83 30 266 324 90 0 26 -174 91 268 -10 869 931 90 886 0 -175 459 145 40 233 291 90 0 133 -176 63 444 -30 1084 1146 90 349 0 -177 433 27 20 628 694 90 0 769 -178 60 454 -10 892 952 90 216 0 -179 478 99 10 617 675 90 0 450 -180 485 454 -20 842 890 90 295 0 -181 6 292 -10 316 360 90 937 0 -182 398 20 20 333 394 90 0 762 -183 248 251 20 2 63 90 0 663 -184 433 15 20 297 344 0 0 1004 -185 64 426 -10 1162 1223 90 400 0 -186 154 207 -30 1002 1066 90 77 0 -187 481 456 -20 1028 1091 90 68 0 -188 380 498 10 523 582 90 0 793 -189 88 286 10 795 859 90 0 153 -190 111 23 10 266 326 90 0 842 -191 199 187 20 433 490 90 0 979 -192 269 48 -20 823 889 90 38 0 -193 367 178 -20 570 620 90 3 0 -194 452 163 30 219 263 90 0 84 -195 431 28 -10 724 783 90 531 0 -196 8 116 -10 894 957 90 509 0 -197 233 47 20 356 415 90 0 214 -198 237 43 -20 631 702 90 648 0 -199 320 262 10 585 656 0 0 1051 -200 188 4 -30 413 455 90 92 0 -201 180 6 10 774 839 90 0 517 -202 328 466 30 847 906 0 0 1023 -203 393 12 -20 617 671 90 470 0 -204 409 90 20 569 617 90 0 696 -205 406 87 10 936 999 90 0 514 -206 394 407 -30 733 789 90 346 0 -207 358 183 -20 932 1005 90 670 0 -208 186 461 20 220 284 90 0 149 -209 38 72 30 420 496 90 0 805 -210 323 471 30 469 546 90 0 547 -211 224 192 10 215 274 90 0 359 -212 278 46 20 205 269 90 0 859 -213 272 403 30 494 555 90 0 252 -214 232 42 -20 545 599 90 197 0 -215 18 63 10 716 792 0 0 1005 -216 58 458 10 702 774 90 0 178 -217 416 417 -30 1057 1099 90 267 0 -218 205 230 30 203 263 0 0 1052 -219 65 453 30 423 490 90 0 237 -220 421 294 10 883 953 90 0 647 -221 434 245 -10 1377 1416 90 453 0 -222 2 116 -30 526 586 90 820 0 -223 411 421 -10 862 917 90 526 0 -224 315 260 10 223 278 90 0 312 -225 136 288 -10 1023 1063 90 138 0 -226 173 490 20 406 462 90 0 671 -227 90 232 10 682 732 90 0 850 -228 402 265 20 306 365 90 0 162 -229 361 14 -20 686 738 90 631 0 -230 348 147 -10 845 914 90 306 0 -231 385 295 20 142 182 90 0 70 -232 394 23 -20 1271 1326 90 601 0 -233 466 295 20 1033 1073 90 0 881 -234 71 103 -10 1402 1472 90 114 0 -235 125 29 -10 588 649 90 127 0 -236 25 65 -20 1005 1057 90 381 0 -237 58 449 -30 993 1042 90 219 0 -238 246 398 40 148 199 90 0 287 -239 423 294 10 790 863 0 0 1035 -240 59 459 -10 622 670 90 170 0 -241 348 145 20 763 813 90 0 540 -242 477 97 10 421 495 90 0 622 -243 307 102 40 602 647 90 0 327 -244 169 31 -20 387 447 90 984 0 -245 381 495 20 705 769 90 0 147 -246 95 234 -10 315 362 90 819 0 -247 22 33 -10 735 803 90 257 0 -248 435 268 -20 1100 1154 90 863 0 -249 135 293 30 360 430 90 0 945 -250 439 266 10 267 293 90 0 629 -251 269 402 -10 587 648 90 969 0 -252 267 400 -30 779 836 90 213 0 -253 473 196 -10 564 642 90 890 0 -254 445 237 10 349 402 90 0 152 -255 461 284 10 275 340 90 0 899 -256 167 339 -20 648 710 90 404 0 -257 26 43 10 365 427 90 0 247 -258 101 386 20 349 415 90 0 317 -259 342 54 -10 553 616 90 901 0 -260 243 399 -10 782 837 90 471 0 -261 288 44 20 636 711 0 0 1032 -262 274 48 10 368 405 90 0 632 -263 360 184 -20 846 906 90 456 0 -264 23 67 -10 1092 1157 90 557 0 -265 6 296 -10 863 926 90 720 0 -266 249 258 30 910 974 0 0 1054 -267 421 415 30 297 364 90 0 217 -268 319 468 -10 289 353 90 6 0 -269 50 438 -20 724 779 90 350 0 -270 440 61 -10 971 1032 90 825 0 -271 17 65 20 625 699 90 0 80 -272 323 118 20 304 367 90 0 321 -273 402 281 -20 886 924 90 10 0 -274 71 153 -10 746 816 90 786 0 -275 52 432 -20 789 843 90 96 0 -276 378 199 -30 761 804 90 987 0 -277 238 204 -10 566 634 90 667 0 -278 208 184 20 146 192 90 0 712 -279 376 195 -20 576 616 90 963 0 -280 473 475 -20 1124 1181 90 990 0 -281 215 395 -10 865 928 90 592 0 -282 123 222 -20 376 430 90 394 0 -283 436 241 -10 1271 1333 90 157 0 -284 70 100 10 1119 1191 90 0 878 -285 73 328 20 193 270 90 0 967 -286 241 205 30 669 717 0 0 1053 -287 250 405 -40 303 370 90 238 0 -288 483 14 10 664 732 90 0 858 -289 466 287 10 467 525 90 0 423 -290 467 114 -10 1159 1223 90 318 0 -291 120 159 10 306 377 90 0 513 -292 408 84 -10 745 814 90 437 0 -293 413 217 20 230 289 90 0 73 -294 338 142 40 204 256 90 0 169 -295 483 457 20 735 811 90 0 180 -296 479 169 20 774 834 90 0 995 -297 95 224 -20 1057 1120 90 383 0 -298 122 216 10 461 537 90 0 23 -299 477 179 20 237 308 90 0 602 -300 406 99 20 367 438 90 0 965 -301 44 47 20 289 356 90 0 763 -302 487 450 10 929 993 90 0 19 -303 172 488 10 310 374 90 0 978 -304 460 374 -20 753 831 90 960 0 -305 279 138 -40 281 320 90 985 0 -306 338 147 10 135 193 90 0 230 -307 395 295 20 677 736 0 0 1038 -308 195 185 -20 335 399 90 544 0 -309 463 194 20 220 279 90 0 651 -310 30 72 -20 1379 1434 90 630 0 -311 244 254 -10 723 787 90 36 0 -312 317 261 -10 398 473 90 224 0 -313 67 108 10 297 346 90 0 795 -314 442 310 20 643 698 90 0 770 -315 63 336 20 822 861 90 0 518 -316 109 107 20 357 416 0 0 1033 -317 100 387 -20 449 498 90 258 0 -318 494 94 10 634 692 90 0 290 -319 343 49 -30 650 710 90 386 0 -320 40 52 40 546 591 90 0 360 -321 319 124 -20 400 465 90 272 0 -322 94 97 -20 285 334 90 415 0 -323 476 94 20 334 396 90 0 419 -324 283 47 10 373 420 90 0 697 -325 398 325 -10 774 843 90 457 0 -326 460 13 20 462 532 90 0 430 -327 305 107 -40 688 753 90 243 0 -328 188 12 30 245 309 90 0 454 -329 136 290 20 272 332 90 0 20 -330 439 268 10 1005 1060 90 0 826 -331 112 467 -20 505 557 90 553 0 -332 181 469 -10 468 536 90 425 0 -333 358 18 10 485 568 90 0 639 -334 459 10 10 566 614 90 0 100 -335 199 268 20 284 368 90 0 654 -336 436 237 20 186 264 90 0 101 -337 318 280 -10 319 384 90 573 0 -338 64 99 -10 853 904 90 74 0 -339 394 333 20 492 567 90 0 735 -340 366 93 -20 936 989 90 151 0 -341 95 391 -10 909 973 90 681 0 -342 391 425 -10 842 909 90 849 0 -343 344 146 -20 496 529 90 766 0 -344 198 12 10 582 631 90 0 399 -345 186 472 20 564 633 90 0 936 -346 390 408 30 450 520 90 0 206 -347 19 43 20 1203 1259 0 0 1003 -348 307 108 -30 777 847 90 686 0 -349 59 457 30 810 848 90 0 176 -350 49 451 20 340 409 90 0 269 -351 125 39 20 245 318 90 0 475 -352 61 147 -20 383 413 90 390 0 -353 317 123 20 497 554 90 0 983 -354 392 426 -20 666 722 90 528 0 -355 237 213 -10 846 917 90 888 0 -356 71 333 10 252 325 90 0 393 -357 304 97 -30 407 466 90 520 0 -358 196 462 -20 955 1003 90 134 0 -359 224 191 -10 312 359 90 211 0 -360 37 51 -40 633 689 90 320 0 -361 491 25 10 957 1010 90 0 447 -362 270 401 20 217 268 90 0 485 -363 474 461 30 307 379 90 0 797 -364 66 448 10 270 345 90 0 492 -365 337 241 20 334 403 0 0 1049 -366 269 46 -20 733 794 90 63 0 -367 22 41 10 1110 1164 90 0 83 -368 198 271 20 380 458 90 0 530 -369 287 43 -10 555 609 90 421 0 -370 446 63 20 697 750 90 0 171 -371 200 229 -10 301 355 90 745 0 -372 48 72 30 711 768 0 0 1009 -373 465 142 10 401 445 90 0 892 -374 123 155 -10 1143 1209 90 131 0 -375 16 497 20 1038 1123 90 0 436 -376 220 319 -10 971 1037 90 971 0 -377 484 171 -20 680 736 90 449 0 -378 55 431 20 694 752 90 0 606 -379 428 24 -10 1105 1140 90 607 0 -380 80 342 10 193 275 90 0 17 -381 16 68 20 521 617 90 0 236 -382 124 56 20 231 285 90 0 907 -383 95 218 20 873 927 90 0 297 -384 481 26 30 321 374 90 0 835 -385 145 434 -30 462 514 90 158 0 -386 335 57 30 210 261 90 0 319 -387 26 490 -30 1345 1394 90 79 0 -388 324 127 30 143 200 90 0 499 -389 109 114 -20 829 871 90 461 0 -390 72 148 20 265 330 90 0 352 -391 220 392 -10 970 1015 90 464 0 -392 442 243 -20 996 1052 90 508 0 -393 69 336 -10 440 507 90 356 0 -394 131 226 20 121 183 90 0 282 -395 150 204 20 639 694 90 0 728 -396 423 217 20 785 849 90 0 469 -397 419 459 -10 785 838 90 440 0 -398 285 163 -30 714 780 90 477 0 -399 203 7 -10 1033 1108 90 344 0 -400 54 445 10 534 593 90 0 185 -401 109 463 -10 959 1018 90 103 0 -402 355 180 30 279 345 90 0 646 -403 13 455 -20 381 430 90 711 0 -404 165 337 20 373 422 90 0 256 -405 314 124 20 775 836 90 0 548 -406 9 124 20 271 336 90 0 502 -407 3 292 20 404 457 90 0 53 -408 16 462 10 935 986 90 0 812 -409 189 464 -40 856 906 90 739 0 -410 288 154 -20 442 494 90 856 0 -411 90 296 20 166 240 90 0 910 -412 138 438 20 832 893 0 0 1029 -413 13 459 20 646 718 90 0 866 -414 461 8 -20 756 812 90 722 0 -415 96 97 20 217 280 90 0 322 -416 68 99 -20 1040 1085 90 895 0 -417 146 205 10 363 417 90 0 90 -418 117 152 20 859 935 90 0 159 -419 481 96 -20 526 577 90 323 0 -420 338 260 -20 622 678 90 495 0 -421 285 44 10 459 522 90 0 369 -422 111 464 10 775 837 90 0 944 -423 468 291 -10 748 798 90 289 0 -424 148 206 20 458 506 90 0 519 -425 184 464 10 285 344 90 0 332 -426 197 11 -10 678 719 90 501 0 -427 396 410 10 829 880 90 0 67 -428 133 53 20 668 720 0 0 1026 -429 132 30 -30 875 926 90 682 0 -430 464 13 -20 853 906 90 326 0 -431 100 394 -20 1006 1067 90 948 0 -432 483 22 -20 476 543 90 853 0 -433 93 235 -20 951 1012 90 999 0 -434 174 26 -10 1037 1105 90 896 0 -435 436 264 20 186 248 90 0 657 -436 24 492 -20 1252 1302 90 375 0 -437 406 94 10 375 430 90 0 292 -438 234 246 10 537 582 90 0 22 -439 315 287 30 693 754 90 0 751 -440 408 453 10 575 661 90 0 397 -441 128 225 10 176 253 90 0 119 -442 226 191 -10 397 459 90 800 0 -443 391 407 -10 549 605 90 578 0 -444 198 264 -10 770 821 90 918 0 -445 179 7 -20 864 930 90 846 0 -446 425 215 -20 699 748 90 619 0 -447 483 27 -10 1322 1384 90 361 0 -448 22 40 -20 1012 1080 90 121 0 -449 479 176 20 296 367 90 0 377 -450 476 102 -10 797 866 90 179 0 -451 386 405 20 206 266 90 0 7 -452 22 38 -10 929 980 90 113 0 -453 440 241 10 1088 1145 90 0 221 -454 182 14 -30 1062 1116 90 328 0 -455 266 405 -10 680 745 90 914 0 -456 357 181 20 367 441 90 0 263 -457 395 332 10 593 648 90 0 325 -458 423 290 10 329 389 90 0 637 -459 104 28 20 716 748 90 0 830 -460 131 56 10 489 533 90 0 852 -461 111 110 20 550 590 90 0 389 -462 97 93 20 460 530 90 0 559 -463 90 274 20 411 458 90 0 586 -464 214 394 10 778 834 90 0 391 -465 6 114 10 809 855 90 0 674 -466 375 191 30 473 531 0 0 1042 -467 356 21 -20 414 452 90 76 0 -468 466 165 -20 747 805 90 908 0 -469 415 223 -20 1257 1302 90 396 0 -470 397 20 20 433 477 90 0 203 -471 241 403 10 686 744 90 0 260 -472 69 334 30 348 415 90 0 688 -473 152 210 20 105 163 90 0 109 -474 67 335 20 629 684 90 0 946 -475 126 30 -20 495 558 90 351 0 -476 390 423 10 290 336 90 0 558 -477 285 162 30 625 688 90 0 398 -478 285 158 -30 340 405 90 758 0 -479 406 96 20 280 342 0 0 1027 -480 459 374 20 848 917 90 0 684 -481 67 109 -10 388 438 90 616 0 -482 468 475 10 313 373 90 0 584 -483 438 31 10 348 413 90 0 791 -484 168 24 10 770 816 90 0 975 -485 267 394 -20 962 1027 90 362 0 -486 406 450 20 405 464 90 0 512 -487 460 288 10 213 265 90 0 554 -488 224 203 20 53 90 90 0 804 -489 21 487 10 582 629 90 0 16 -490 21 488 -30 667 725 90 49 0 -491 87 217 -30 597 644 90 66 0 -492 67 452 -10 327 402 90 364 0 -493 119 223 10 853 906 0 0 1041 -494 398 428 -20 561 634 90 788 0 -495 344 262 20 522 585 90 0 420 -496 390 301 -10 391 450 90 1 0 -497 167 27 30 487 536 90 0 765 -498 236 247 20 443 492 90 0 893 -499 313 119 -30 679 742 90 388 0 -500 13 51 -30 1366 1425 90 536 0 -501 200 13 10 397 453 90 0 426 -502 0 120 -20 431 492 90 406 0 -503 202 4 -20 950 1004 90 799 0 -504 343 144 10 302 349 90 0 930 -505 94 383 10 636 687 90 0 142 -506 250 411 30 492 554 90 0 626 -507 464 134 20 1048 1106 0 0 1013 -508 443 237 20 248 318 90 0 392 -509 4 114 10 712 769 90 0 196 -510 169 336 -10 838 892 90 954 0 -511 200 178 20 240 298 90 0 898 -512 412 453 -20 674 750 90 486 0 -513 121 151 -10 1053 1110 90 291 0 -514 403 93 -10 1131 1181 90 205 0 -515 399 301 -30 584 634 90 166 0 -516 97 387 -30 823 869 90 958 0 -517 176 8 -10 969 1012 90 201 0 -518 62 326 -20 914 969 90 315 0 -519 151 207 -20 731 788 90 424 0 -520 299 98 30 320 364 90 0 357 -521 334 240 -30 526 582 90 585 0 -522 92 270 -10 954 1029 90 541 0 -523 444 269 20 544 593 90 0 768 -524 132 223 30 837 909 0 0 1043 -525 428 25 20 1175 1251 0 0 1006 -526 413 421 10 768 828 90 0 223 -527 382 498 10 619 669 90 0 747 -528 391 429 20 475 525 90 0 354 -529 398 97 -20 264 344 90 780 0 -530 192 265 -20 678 721 90 368 0 -531 438 26 10 453 497 90 0 195 -532 44 79 10 267 333 90 0 991 -533 137 290 -10 176 245 90 577 0 -534 446 319 -30 364 416 90 940 0 -535 175 487 20 248 308 90 0 851 -536 26 45 30 303 366 90 0 500 -537 147 435 20 553 607 90 0 816 -538 111 459 20 1152 1195 0 0 1015 -539 472 132 -10 767 826 90 913 0 -540 349 158 -20 1050 1093 90 241 0 -541 86 268 10 689 735 90 0 522 -542 415 216 -10 319 384 90 167 0 -543 121 218 20 191 257 90 0 781 -544 210 185 20 76 120 90 0 308 -545 98 215 20 218 278 90 0 778 -546 484 174 10 496 544 90 0 759 -547 328 458 -30 944 1006 90 210 0 -548 313 126 -20 873 923 90 405 0 -549 390 415 20 1042 1090 0 0 1025 -550 459 17 -20 1039 1094 90 802 0 -551 481 124 -10 505 571 90 707 0 -552 386 414 -10 1109 1162 90 555 0 -553 116 466 20 318 373 90 0 331 -554 468 295 -10 934 987 90 487 0 -555 391 426 10 752 818 90 0 552 -556 408 279 20 682 747 90 0 598 -557 15 68 10 448 508 90 0 264 -558 392 424 -10 926 1007 90 476 0 -559 88 95 -20 658 712 90 462 0 -560 116 151 -10 774 836 90 148 0 -561 240 250 -30 340 405 90 714 0 -562 123 159 20 156 216 90 0 57 -563 89 290 20 225 300 90 0 680 -564 39 50 30 440 511 0 0 1007 -565 359 179 -20 465 529 90 660 0 -566 338 257 -20 713 772 90 69 0 -567 92 236 20 1041 1104 90 0 862 -568 413 417 -10 1135 1207 90 837 0 -569 91 101 -30 844 902 90 172 0 -570 55 449 20 278 339 90 0 75 -571 57 425 20 260 317 90 0 91 -572 465 287 10 556 617 90 0 650 -573 320 280 10 221 298 90 0 337 -574 322 468 20 575 625 90 0 897 -575 483 458 -10 656 708 90 45 0 -576 312 267 -20 862 941 90 702 0 -577 139 291 10 118 187 90 0 533 -578 388 408 10 361 425 90 0 443 -579 110 459 -20 1057 1109 90 972 0 -580 459 372 20 672 726 90 0 56 -581 204 269 30 49 98 90 0 933 -582 407 98 10 218 297 90 0 37 -583 335 256 -20 890 962 90 734 0 -584 471 484 -10 571 618 90 482 0 -585 339 244 30 251 299 90 0 521 -586 89 272 -20 498 555 90 463 0 -587 488 96 -10 909 973 90 831 0 -588 316 286 -30 601 662 90 72 0 -589 235 50 -40 813 896 90 64 0 -590 316 258 20 317 368 90 0 676 -591 425 288 -20 603 669 90 976 0 -592 213 397 10 680 744 90 0 281 -593 113 156 10 577 661 90 0 953 -594 199 9 -10 853 911 90 879 0 -595 463 167 10 657 709 90 0 847 -596 129 27 10 680 745 90 0 749 -597 248 404 30 214 274 90 0 772 -598 405 276 -20 771 848 90 556 0 -599 400 288 30 154 232 90 0 704 -600 61 156 30 462 532 90 0 870 -601 393 20 20 1190 1222 90 0 232 -602 484 177 -20 390 463 90 299 0 -603 108 116 -10 911 973 90 47 0 -604 112 217 -20 383 443 90 902 0 -605 389 404 10 267 331 90 0 685 -606 102 391 -20 1098 1161 90 378 0 -607 434 26 10 538 601 90 0 379 -608 488 26 -20 1136 1199 90 727 0 -609 477 120 10 968 1026 90 0 753 -610 126 220 -20 659 711 90 40 0 -611 439 310 10 198 256 90 0 738 -612 212 319 -10 227 293 90 725 0 -613 320 283 -10 421 471 90 638 0 -614 17 459 -20 1200 1275 90 690 0 -615 236 213 20 39 114 90 0 988 -616 68 108 10 230 324 90 0 481 -617 390 294 -20 853 931 90 687 0 -618 275 42 30 537 608 90 0 12 -619 423 214 20 595 669 90 0 446 -620 460 367 20 392 450 90 0 959 -621 272 402 10 317 353 90 0 86 -622 478 102 -10 704 775 90 242 0 -623 400 260 40 150 212 90 0 107 -624 181 6 -10 678 753 90 634 0 -625 470 475 30 381 429 90 0 60 -626 245 408 -30 585 652 90 506 0 -627 93 96 20 374 427 90 0 698 -628 218 318 20 884 939 90 0 817 -629 441 265 -10 344 400 90 250 0 -630 21 64 20 818 876 90 0 310 -631 356 23 20 309 373 90 0 229 -632 267 44 -10 649 693 90 262 0 -633 277 50 10 257 329 90 0 929 -634 182 4 10 586 659 90 0 624 -635 26 36 -10 646 702 90 966 0 -636 384 491 -30 897 948 90 973 0 -637 418 290 -10 1172 1221 90 458 0 -638 321 277 10 75 140 90 0 613 -639 358 16 -10 596 641 90 333 0 -640 389 334 -20 316 373 90 783 0 -641 48 78 -20 990 1042 90 777 0 -642 24 68 -10 1282 1337 90 834 0 -643 206 225 10 405 446 90 0 143 -644 290 141 30 645 709 90 0 1000 -645 439 15 20 650 706 90 0 724 -646 359 182 -30 748 821 90 402 0 -647 413 287 -10 1348 1417 90 220 0 -648 230 49 20 201 253 90 0 198 -649 407 280 -20 595 653 90 99 0 -650 459 295 -10 1209 1273 90 572 0 -651 468 199 -20 669 730 90 309 0 -652 101 384 30 200 262 90 0 823 -653 170 26 -20 855 918 90 935 0 -654 197 270 -20 474 548 90 335 0 -655 415 289 20 169 228 90 0 798 -656 203 390 -30 307 361 90 658 0 -657 443 272 -20 821 869 90 435 0 -658 210 391 30 202 272 90 0 656 -659 363 22 20 964 1025 90 0 42 -660 352 176 20 126 175 90 0 565 -661 212 223 -10 758 832 90 968 0 -662 8 120 -10 1169 1232 90 927 0 -663 244 250 -20 157 217 90 183 0 -664 18 484 10 397 444 90 0 731 -665 379 82 -10 827 884 90 998 0 -666 84 346 20 1095 1157 0 0 1034 -667 233 207 10 105 167 90 0 277 -668 344 62 -20 1208 1274 90 165 0 -669 20 489 10 856 901 90 0 701 -670 361 181 20 662 723 90 0 207 -671 174 494 -20 498 559 90 226 0 -672 49 76 -20 899 950 90 894 0 -673 390 325 -20 883 929 90 748 0 -674 7 118 -10 988 1047 90 465 0 -675 107 26 10 517 579 90 0 872 -676 312 270 -20 967 1022 90 590 0 -677 399 102 -10 649 715 90 740 0 -678 109 108 10 444 510 90 0 773 -679 115 218 10 298 341 90 0 742 -680 88 287 -20 878 959 90 563 0 -681 54 424 10 320 387 90 0 341 -682 125 32 30 407 462 90 0 429 -683 199 12 20 475 557 90 0 98 -684 457 374 -20 945 1005 90 480 0 -685 391 413 -10 1013 1069 90 605 0 -686 304 102 30 505 559 90 0 348 -687 391 293 20 768 834 90 0 617 -688 66 336 -30 719 778 90 472 0 -689 132 291 -10 736 797 90 46 0 -690 18 462 20 1015 1090 90 0 614 -691 347 62 -10 1121 1176 90 128 0 -692 466 142 10 492 537 90 0 891 -693 389 17 -20 993 1049 90 875 0 -694 342 254 10 244 301 90 0 951 -695 92 223 -10 967 1023 90 150 0 -696 404 83 -20 831 916 90 204 0 -697 290 46 -10 832 896 90 324 0 -698 95 92 -20 554 621 90 627 0 -699 200 265 10 853 922 90 0 59 -700 435 16 -20 829 895 90 14 0 -701 25 499 -10 1154 1206 90 669 0 -702 319 260 20 489 566 90 0 576 -703 116 225 -30 752 820 90 880 0 -704 402 284 -30 313 367 90 599 0 -705 108 105 -20 258 329 90 122 0 -706 386 13 -20 785 878 90 716 0 -707 472 129 10 312 383 90 0 551 -708 132 57 -40 396 443 90 784 0 -709 43 71 -10 525 581 90 33 0 -710 493 91 -10 542 599 90 957 0 -711 12 451 20 311 359 90 0 403 -712 201 188 -20 526 581 90 278 0 -713 60 428 -20 1059 1137 90 865 0 -714 243 248 30 243 314 90 0 561 -715 230 197 40 588 645 90 0 923 -716 389 11 20 707 769 90 0 706 -717 401 281 -10 968 1024 90 755 0 -718 459 14 20 372 439 0 0 1002 -719 411 95 30 475 521 90 0 746 -720 0 297 10 679 737 90 0 265 -721 476 196 30 476 544 90 0 741 -722 458 16 20 313 369 90 0 414 -723 92 230 20 498 549 90 0 71 -724 432 24 -20 1000 1056 90 645 0 -725 215 317 10 140 194 90 0 612 -726 371 192 30 190 259 90 0 801 -727 481 20 20 572 631 90 0 608 -728 152 207 -20 824 877 90 395 0 -729 14 459 20 559 622 90 0 887 -730 361 17 20 777 832 0 0 1036 -731 8 497 -10 959 1006 90 664 0 -732 206 186 -30 891 955 90 915 0 -733 421 218 -30 880 939 90 11 0 -734 402 264 20 216 273 90 0 583 -735 388 325 -20 971 1026 90 339 0 -736 35 304 30 280 345 90 0 911 -737 321 263 -10 680 743 90 924 0 -738 444 313 -10 462 511 90 611 0 -739 188 462 40 753 826 90 0 409 -740 400 103 10 546 636 90 0 677 -741 418 221 -30 1150 1223 90 721 0 -742 112 219 -10 469 541 90 679 0 -743 408 452 10 490 564 0 0 1012 -744 30 301 -10 660 726 90 61 0 -745 205 228 10 110 173 90 0 371 -746 407 88 -30 1035 1083 90 719 0 -747 380 489 -10 1084 1143 90 527 0 -748 395 331 20 690 734 90 0 673 -749 133 26 -10 776 837 90 596 0 -750 21 68 -10 1189 1243 90 95 0 -751 313 282 -30 790 847 90 439 0 -752 53 440 -10 633 684 90 882 0 -753 458 130 -10 1140 1210 90 609 0 -754 437 15 30 739 801 90 0 889 -755 400 286 10 217 276 90 0 717 -756 346 144 10 661 729 0 0 1040 -757 440 244 10 809 874 90 0 860 -758 280 162 30 158 210 90 0 478 -759 488 173 -10 583 645 90 546 0 -760 326 118 10 213 272 0 0 1039 -761 207 400 20 489 562 90 0 168 -762 391 18 -20 1085 1141 90 182 0 -763 37 55 -20 730 780 90 301 0 -764 204 15 20 239 301 90 0 156 -765 173 28 -30 1134 1191 90 497 0 -766 343 148 20 399 441 90 0 343 -767 231 43 -10 447 513 90 949 0 -768 445 273 -20 725 781 90 523 0 -769 432 27 -20 810 878 90 177 0 -770 439 305 -20 736 797 90 314 0 -771 208 396 -20 401 462 90 815 0 -772 249 407 -30 403 455 90 597 0 -773 107 112 -10 728 787 90 678 0 -774 279 159 20 252 301 90 0 5 -775 376 494 -20 334 396 90 28 0 -776 403 262 30 493 547 90 0 992 -777 41 47 20 359 406 90 0 641 -778 96 213 -20 311 369 90 545 0 -779 461 167 -20 470 531 90 867 0 -780 391 99 20 206 268 90 0 529 -781 116 221 -20 571 627 90 543 0 -782 165 343 -30 556 613 90 39 0 -783 388 334 20 227 280 90 0 640 -784 130 57 40 289 365 90 0 708 -785 422 409 10 234 290 90 0 132 -786 66 156 10 653 718 90 0 274 -787 485 86 20 349 413 90 0 58 -788 389 428 20 380 435 90 0 494 -789 117 467 10 254 307 90 0 974 -790 475 477 20 1028 1091 90 0 43 -791 429 27 -10 1272 1339 90 483 0 -792 339 60 20 274 338 90 0 803 -793 381 494 -10 801 855 90 188 0 -794 218 321 -10 697 759 90 78 0 -795 64 101 -10 667 724 90 313 0 -796 343 254 20 334 394 90 0 21 -797 478 464 -30 360 446 90 363 0 -798 423 286 -20 430 477 90 655 0 -799 198 9 20 763 819 90 0 503 -800 225 196 10 128 174 90 0 442 -801 374 190 -30 292 344 90 726 0 -802 462 14 20 944 1000 90 0 550 -803 347 54 -20 836 904 90 792 0 -804 231 195 -20 497 552 90 488 0 -805 72 96 -30 1220 1278 90 209 0 -806 489 87 20 451 499 90 0 961 -807 443 313 30 554 602 90 0 883 -808 233 204 20 198 260 90 0 964 -809 477 483 20 745 817 0 0 1001 -810 459 368 10 299 361 90 0 841 -811 95 277 -20 1057 1121 90 922 0 -812 16 460 -10 1112 1180 90 408 0 -813 100 266 20 207 275 90 0 906 -814 288 53 -10 925 997 90 838 0 -815 211 386 20 141 212 90 0 771 -816 144 439 -20 736 797 90 537 0 -817 224 314 -20 1074 1126 90 628 0 -818 79 291 -10 519 568 90 938 0 -819 95 235 10 155 227 90 0 246 -820 7 123 30 329 399 90 0 222 -821 91 217 10 692 738 0 0 1037 -822 105 27 -10 611 670 90 50 0 -823 101 385 -30 262 320 90 652 0 -824 238 210 -20 757 821 90 926 0 -825 439 67 10 322 386 90 0 270 -826 435 267 -10 1188 1247 90 330 0 -827 443 64 30 779 854 90 0 832 -828 92 234 10 853 926 90 0 161 -829 450 265 10 444 498 90 0 117 -830 102 27 -20 796 852 90 459 0 -831 492 94 10 724 787 90 0 587 -832 440 63 -30 886 934 90 827 0 -833 453 367 20 1055 1091 0 0 1020 -834 15 69 10 359 414 90 0 642 -835 489 17 -30 764 826 90 384 0 -836 335 255 20 85 124 0 0 1048 -837 419 418 10 394 454 90 0 568 -838 292 41 10 733 804 90 0 814 -839 489 27 10 1035 1117 90 0 994 -840 96 270 -10 308 367 90 116 0 -841 461 369 -10 579 633 90 810 0 -842 105 22 -10 339 385 90 190 0 -843 479 121 -30 692 754 90 94 0 -844 207 223 10 585 634 90 0 956 -845 17 458 -20 1297 1360 90 970 0 -846 186 7 20 500 555 90 0 445 -847 465 168 -10 837 902 90 595 0 -848 416 288 -10 1251 1328 90 51 0 -849 388 418 10 217 283 90 0 342 -850 92 233 -10 768 830 90 227 0 -851 179 492 -20 678 752 90 535 0 -852 132 55 -10 573 632 90 460 0 -853 485 24 20 387 445 90 0 432 -854 388 331 20 160 230 90 0 861 -855 217 323 20 424 473 90 0 13 -856 281 164 20 91 140 90 0 410 -857 169 340 -20 737 806 90 125 0 -858 491 20 -10 853 925 90 288 0 -859 279 42 -20 262 338 90 212 0 -860 439 243 -10 1191 1227 90 757 0 -861 391 334 -20 402 470 90 854 0 -862 96 244 -20 1332 1380 90 567 0 -863 441 273 20 903 972 90 0 248 -864 477 478 -30 942 993 90 993 0 -865 56 434 20 881 940 90 0 713 -866 12 463 -20 751 800 90 413 0 -867 458 164 20 374 439 90 0 779 -868 446 65 -10 516 566 90 35 0 -869 71 156 -30 844 904 90 977 0 -870 65 153 -30 570 614 90 600 0 -871 8 118 20 1079 1138 0 0 1008 -872 102 29 -10 887 946 90 675 0 -873 315 265 -20 774 841 90 155 0 -874 343 62 10 1300 1364 0 0 1028 -875 384 16 20 892 959 90 0 693 -876 67 105 10 579 622 0 0 1022 -877 478 118 -30 1058 1121 90 164 0 -878 73 101 -10 1313 1375 90 284 0 -879 200 14 10 311 356 90 0 594 -880 114 225 30 664 723 90 0 703 -881 460 293 -20 1121 1176 90 233 0 -882 51 447 10 438 501 90 0 752 -883 418 295 -30 1063 1140 90 807 0 -884 282 139 20 188 227 90 0 900 -885 477 122 -40 886 924 90 942 0 -886 91 266 10 776 840 90 0 174 -887 16 463 -20 836 904 90 729 0 -888 228 199 10 673 746 90 0 355 -889 435 20 -30 933 980 90 754 0 -890 467 195 10 285 344 90 0 253 -891 469 132 -10 856 923 90 692 0 -892 465 136 -10 964 1007 90 373 0 -893 246 255 -20 818 877 90 498 0 -894 49 75 20 810 857 90 0 672 -895 66 98 20 944 996 90 0 416 -896 166 32 10 296 352 90 0 434 -897 326 466 -20 753 817 90 574 0 -898 202 186 -20 616 676 90 511 0 -899 467 285 -10 380 428 90 255 0 -900 290 136 -20 549 614 90 884 0 -901 341 58 10 364 433 90 0 259 -902 121 219 20 132 203 90 0 604 -903 107 35 30 986 1041 0 0 1011 -904 216 319 -20 321 387 90 130 0 -905 134 288 20 923 979 0 0 1044 -906 89 270 -20 590 647 90 813 0 -907 136 52 -20 759 817 90 382 0 -908 462 167 20 566 617 90 0 468 -909 340 54 10 461 525 90 0 145 -910 80 286 -20 601 677 90 411 0 -911 38 301 -30 768 814 90 736 0 -912 25 307 -20 480 529 90 34 0 -913 470 139 10 668 731 90 0 539 -914 270 400 10 151 213 90 0 455 -915 204 187 30 803 857 90 0 732 -916 460 171 30 937 994 0 0 1024 -917 399 106 20 925 989 0 0 1030 -918 197 267 10 582 626 90 0 444 -919 77 350 -30 997 1058 90 4 0 -920 91 231 -10 579 652 90 943 0 -921 398 103 30 739 807 90 0 989 -922 35 303 20 221 262 90 0 811 -923 231 204 -40 776 834 90 715 0 -924 311 266 10 63 126 90 0 737 -925 416 420 20 663 746 90 0 24 -926 231 203 20 291 352 90 0 824 -927 4 116 10 618 678 90 0 662 -928 417 217 30 423 465 90 0 952 -929 268 52 -10 1003 1079 90 633 0 -930 345 144 -10 568 640 90 504 0 -931 368 85 30 202 275 90 0 137 -932 441 65 10 422 470 90 0 154 -933 201 270 -30 108 177 90 581 0 -934 0 293 -10 591 637 90 102 0 -935 167 24 20 668 736 90 0 653 -936 186 464 -20 662 730 90 345 0 -937 7 292 10 246 306 90 0 181 -938 80 290 10 420 484 90 0 818 -939 405 455 -20 883 948 90 115 0 -940 439 312 30 257 324 90 0 534 -941 300 108 10 150 211 90 0 32 -942 478 121 40 788 840 90 0 885 -943 92 232 10 401 462 90 0 920 -944 111 463 -10 875 919 90 422 0 -945 132 294 -30 454 521 90 249 0 -946 134 285 -20 1104 1168 90 474 0 -947 316 284 20 510 570 0 0 1050 -948 56 428 20 415 482 90 0 431 -949 232 47 10 262 327 90 0 767 -950 466 291 10 656 705 90 0 85 -951 341 257 -10 424 490 90 694 0 -952 420 213 -30 509 568 90 928 0 -953 116 152 -10 678 750 90 593 0 -954 163 337 10 277 334 90 0 510 -955 440 7 -40 469 508 90 139 0 -956 208 222 -10 667 734 90 844 0 -957 485 95 10 281 351 90 0 710 -958 97 385 30 537 598 90 0 516 -959 462 367 -20 481 545 90 620 0 -960 455 365 20 235 306 90 0 304 -961 492 95 -20 815 877 90 806 0 -962 405 450 20 311 376 90 0 123 -963 371 193 20 133 185 90 0 279 -964 234 202 -20 389 440 90 808 0 -965 404 103 -20 464 530 90 300 0 -966 24 41 10 557 601 90 0 635 -967 67 334 -20 532 600 90 285 0 -968 207 227 10 48 112 90 0 661 -969 277 403 10 395 464 90 0 251 -970 15 457 20 462 534 90 0 845 -971 217 319 10 789 851 90 0 376 -972 111 467 20 597 647 90 0 579 -973 378 493 30 426 487 90 0 636 -974 112 465 -10 685 743 90 789 0 -975 173 25 -10 952 1007 90 484 0 -976 421 292 20 245 287 90 0 591 -977 74 146 30 204 259 90 0 869 -978 178 491 -10 591 656 90 303 0 -979 204 185 -20 707 769 90 191 0 -980 319 470 10 383 442 90 0 118 -981 163 331 40 118 179 0 0 1045 -982 470 125 20 253 316 90 0 111 -983 315 121 -20 590 647 90 353 0 -984 166 34 20 231 305 90 0 244 -985 284 140 40 115 172 90 0 305 -986 85 288 20 329 386 90 0 27 -987 376 190 30 382 439 90 0 276 -988 238 203 -20 483 534 90 615 0 -989 399 104 -30 834 896 90 921 0 -990 472 481 20 477 527 90 0 280 -991 46 74 -10 612 682 90 532 0 -992 401 255 -30 685 738 90 776 0 -993 475 480 30 837 911 90 0 864 -994 485 27 -10 1231 1291 90 839 0 -995 476 174 -20 874 924 90 296 0 -996 330 242 -10 627 671 90 87 0 -997 332 249 30 82 144 90 0 120 -998 375 80 10 550 598 90 0 665 -999 94 235 20 227 266 90 0 433 -1000 287 144 -30 827 895 90 644 0 -1001 477 483 -20 745 817 90 809 0 -1002 459 14 -20 372 439 90 718 0 -1003 19 43 -20 1203 1259 90 347 0 -1004 433 15 -20 297 344 90 184 0 -1005 18 63 -10 716 792 90 215 0 -1006 428 25 -20 1175 1251 90 525 0 -1007 39 50 -30 440 511 90 564 0 -1008 8 118 -20 1079 1138 90 871 0 -1009 48 72 -30 711 768 90 372 0 -1010 435 62 -30 1156 1218 90 146 0 -1011 107 35 -30 986 1041 90 903 0 -1012 408 452 -10 490 564 90 743 0 -1013 464 134 -20 1048 1106 90 507 0 -1014 418 218 -20 974 1030 90 15 0 -1015 111 459 -20 1152 1195 90 538 0 -1016 2 295 -30 774 828 90 126 0 -1017 463 140 -10 295 366 90 144 0 -1018 202 9 -10 1225 1281 90 82 0 -1019 164 21 -20 578 639 90 48 0 -1020 453 367 -20 1055 1091 90 833 0 -1021 422 420 -20 490 545 90 104 0 -1022 67 105 -10 579 622 90 876 0 -1023 328 466 -30 847 906 90 202 0 -1024 460 171 -30 937 994 90 916 0 -1025 390 415 -20 1042 1090 90 549 0 -1026 133 53 -20 668 720 90 428 0 -1027 406 96 -20 280 342 90 479 0 -1028 343 62 -10 1300 1364 90 874 0 -1029 138 438 -20 832 893 90 412 0 -1030 399 106 -20 925 989 90 917 0 -1031 377 76 -20 638 699 90 163 0 -1032 288 44 -20 636 711 90 261 0 -1033 109 107 -20 357 416 90 316 0 -1034 84 346 -20 1095 1157 90 666 0 -1035 423 294 -10 790 863 90 239 0 -1036 361 17 -20 777 832 90 730 0 -1037 91 217 -10 692 738 90 821 0 -1038 395 295 -20 677 736 90 307 0 -1039 326 118 -10 213 272 90 760 0 -1040 346 144 -10 661 729 90 756 0 -1041 119 223 -10 853 906 90 493 0 -1042 375 191 -30 473 531 90 466 0 -1043 132 223 -30 837 909 90 524 0 -1044 134 288 -20 923 979 90 905 0 -1045 163 331 -40 118 179 90 981 0 -1046 287 143 -10 748 793 90 25 0 -1047 152 206 -10 910 973 90 65 0 -1048 335 255 -20 85 124 90 836 0 -1049 337 241 -20 334 403 90 365 0 -1050 316 284 -20 510 570 90 947 0 -1051 320 262 -10 585 656 90 199 0 -1052 205 230 -30 203 263 90 218 0 -1053 241 205 -30 669 717 90 286 0 -1054 249 258 -30 910 974 90 266 0 diff --git a/jsprit-instances/instances/lilim/1000/LC11010.txt b/jsprit-instances/instances/lilim/1000/LC11010.txt deleted file mode 100644 index cee335278..000000000 --- a/jsprit-instances/instances/lilim/1000/LC11010.txt +++ /dev/null @@ -1,1048 +0,0 @@ -250 200 1 -0 250 250 0 0 1824 0 0 0 -1 387 297 10 144 681 90 0 515 -2 5 297 10 789 1183 90 0 53 -3 355 177 20 127 680 90 0 965 -4 78 346 -10 196 785 90 44 0 -5 286 159 20 290 836 0 0 1015 -6 322 465 10 226 743 90 0 210 -7 393 408 30 413 926 90 0 848 -8 89 216 10 287 770 90 0 695 -9 76 345 30 348 778 90 0 142 -10 410 285 -20 338 717 90 99 0 -11 472 189 30 230 803 90 0 721 -12 270 49 -10 746 1149 90 633 0 -13 219 325 10 337 745 90 0 78 -14 437 12 20 449 720 90 0 645 -15 418 218 20 740 1264 0 0 1003 -16 20 488 -10 627 948 90 664 0 -17 77 347 -20 260 682 90 89 0 -18 73 346 -20 451 1047 90 967 0 -19 480 455 10 908 1394 0 0 1041 -20 129 292 -20 351 812 90 329 0 -21 337 257 -20 595 1073 90 702 0 -22 237 254 -10 414 902 90 844 0 -23 131 220 -20 599 960 90 119 0 -24 417 417 10 832 1142 0 0 1020 -25 287 143 10 599 942 90 0 644 -26 379 80 -10 602 925 90 760 0 -27 87 285 30 456 1016 90 0 522 -28 374 489 20 269 799 90 0 973 -29 440 247 -10 503 993 90 152 0 -30 281 137 10 117 726 90 0 632 -31 379 196 20 443 935 0 0 1046 -32 297 102 10 155 644 90 0 520 -33 39 76 10 273 734 90 0 320 -34 35 306 -30 222 662 90 736 0 -35 435 68 10 259 746 90 0 832 -36 245 251 10 5 418 90 0 249 -37 409 88 20 409 962 90 0 205 -38 273 55 -40 196 664 90 305 0 -39 163 340 -20 168 813 90 404 0 -40 129 223 20 123 501 90 0 902 -41 371 200 -10 656 1102 90 276 0 -42 357 26 20 936 1428 0 0 1032 -43 470 473 -20 771 1421 90 990 0 -44 77 344 10 196 746 90 0 4 -45 478 461 10 310 686 90 0 575 -46 128 291 -10 362 984 90 577 0 -47 111 113 -20 427 899 90 562 0 -48 164 21 -10 381 835 90 211 0 -49 21 485 -30 348 679 90 79 0 -50 108 26 10 265 654 90 0 675 -51 424 286 10 368 721 90 0 591 -52 200 270 20 53 538 90 0 444 -53 7 300 -10 819 1341 90 2 0 -54 433 31 10 285 788 90 0 177 -55 420 295 -10 800 1220 90 443 0 -56 451 367 -10 944 1385 90 180 0 -57 118 157 20 200 668 90 0 389 -58 489 101 -30 858 1214 90 961 0 -59 200 261 -10 762 1201 90 699 0 -60 476 483 -30 482 898 90 625 0 -61 30 302 10 317 887 90 0 937 -62 8 300 -20 975 1367 90 922 0 -63 275 45 20 206 824 90 0 929 -64 238 46 -20 584 936 90 198 0 -65 152 206 -20 744 1139 90 728 0 -66 99 218 -10 154 690 90 441 0 -67 393 410 20 739 1155 90 0 647 -68 480 460 -10 362 814 90 797 0 -69 337 256 20 87 658 90 0 162 -70 389 300 -20 147 623 90 231 0 -71 90 237 -10 1070 1442 90 433 0 -72 321 280 30 77 522 90 0 439 -73 417 218 -10 937 1250 90 377 0 -74 64 108 10 265 748 90 0 83 -75 57 432 -30 803 1202 90 652 0 -76 356 24 20 249 694 90 0 467 -77 143 207 -20 115 548 90 424 0 -78 221 325 -10 480 786 90 13 0 -79 22 483 30 325 703 90 0 49 -80 24 65 -20 674 1206 90 698 0 -81 141 431 30 211 709 90 0 816 -82 202 9 10 951 1489 90 0 399 -83 20 48 -10 942 1428 90 74 0 -84 457 163 -30 224 840 90 402 0 -85 470 290 -30 611 1120 90 423 0 -86 268 400 -10 656 1140 90 914 0 -87 337 251 10 87 705 90 0 107 -88 366 20 -30 671 1131 90 639 0 -89 72 344 20 402 912 90 0 17 -90 149 203 -20 352 799 90 308 0 -91 55 428 -20 264 849 90 571 0 -92 189 7 30 250 801 90 0 200 -93 397 18 -20 304 789 90 321 0 -94 481 122 30 327 933 90 0 942 -95 20 73 10 290 865 90 0 271 -96 54 430 -20 326 936 90 948 0 -97 74 350 -10 634 1236 90 105 0 -98 202 8 10 826 1488 90 0 156 -99 406 285 20 188 680 90 0 10 -100 460 2 20 408 968 90 0 334 -101 441 244 10 719 1145 90 0 392 -102 1 293 10 278 768 90 0 265 -103 115 465 10 253 674 90 0 422 -104 422 420 20 284 751 90 0 925 -105 75 347 10 606 1076 90 0 97 -106 141 428 20 208 667 90 0 553 -107 404 264 -10 176 681 90 87 0 -108 398 23 10 270 681 90 0 601 -109 148 211 20 109 738 90 0 723 -110 362 22 -20 937 1233 90 730 0 -111 479 127 20 259 660 90 0 843 -112 443 246 -20 254 876 90 336 0 -113 22 37 10 566 1161 90 0 448 -114 65 100 -20 558 1015 90 705 0 -115 404 447 20 250 563 90 0 440 -116 102 264 10 148 606 90 0 563 -117 444 271 10 392 929 90 0 657 -118 325 466 40 483 905 90 0 547 -119 124 219 20 375 810 90 0 23 -120 335 243 -30 181 741 90 997 0 -121 26 42 -30 305 764 90 536 0 -122 113 106 20 198 713 90 0 322 -123 399 450 -20 838 1189 90 397 0 -124 146 439 10 413 936 0 0 1036 -125 162 336 20 123 506 90 0 378 -126 2 295 -30 639 962 90 934 0 -127 122 35 10 250 635 90 0 903 -128 346 60 10 742 1371 90 0 668 -129 93 213 30 215 652 90 0 593 -130 218 316 20 73 681 90 0 904 -131 116 156 10 251 802 90 0 186 -132 419 422 -10 416 807 90 785 0 -133 467 141 -10 408 803 90 692 0 -134 187 491 -20 449 1176 90 535 0 -135 433 25 -20 689 1184 90 195 0 -136 286 137 10 298 677 90 0 900 -137 370 82 40 234 724 90 0 370 -138 132 290 -20 661 1054 90 335 0 -139 435 11 40 302 720 90 0 430 -140 206 261 -10 824 1330 90 530 0 -141 428 291 10 564 898 90 0 863 -142 95 384 -30 572 933 90 9 0 -143 205 223 20 381 655 90 0 661 -144 463 140 10 239 708 90 0 551 -145 343 47 20 526 1017 90 0 691 -146 435 62 -10 962 1413 90 835 0 -147 387 488 -30 848 1186 90 775 0 -148 121 157 10 159 558 90 0 773 -149 182 463 30 223 762 90 0 303 -150 92 216 10 620 991 90 0 297 -151 370 83 -20 205 793 90 272 0 -152 444 242 10 270 671 90 0 29 -153 90 285 -10 876 1146 90 938 0 -154 446 64 -10 447 818 90 825 0 -155 312 264 20 63 504 90 0 873 -156 208 11 -10 972 1492 90 98 0 -157 442 247 -10 390 923 90 254 0 -158 140 431 30 211 802 90 0 579 -159 118 153 -20 791 1186 90 278 0 -160 134 428 20 692 1235 90 0 412 -161 91 235 10 962 1367 0 0 1037 -162 406 257 -20 401 832 90 69 0 -163 377 76 -30 399 939 90 931 0 -164 474 96 -20 271 646 90 193 0 -165 346 57 -10 700 1226 90 909 0 -166 393 301 30 287 739 90 0 676 -167 412 214 10 165 738 90 0 916 -168 210 398 10 335 903 90 0 592 -169 346 150 -20 795 1151 90 774 0 -170 62 453 -30 296 803 90 492 0 -171 437 61 -30 817 1373 90 754 0 -172 87 96 -10 481 1073 90 569 0 -173 367 83 30 203 752 90 0 700 -174 91 268 -10 568 1231 90 679 0 -175 459 145 40 233 866 90 0 885 -176 63 444 -20 822 1408 90 240 0 -177 433 27 -10 468 854 90 54 0 -178 60 454 10 641 1203 90 0 216 -179 478 99 -20 348 944 90 456 0 -180 485 454 10 636 1096 90 0 56 -181 6 292 10 247 908 90 0 407 -182 398 20 20 273 774 90 0 693 -183 248 251 20 2 428 90 0 311 -184 433 15 20 297 707 90 0 414 -185 64 426 10 931 1454 0 0 1014 -186 154 207 -10 801 1268 90 131 0 -187 481 456 40 796 1322 90 0 302 -188 380 498 10 336 768 90 0 747 -189 88 286 -10 551 1104 90 298 0 -190 111 23 10 266 760 90 0 830 -191 199 187 20 270 653 90 0 703 -192 269 48 20 709 1003 0 0 1019 -193 367 178 20 405 785 90 0 164 -194 452 163 30 219 632 90 0 373 -195 431 28 20 463 1043 90 0 135 -196 8 116 20 673 1177 90 0 662 -197 233 47 20 203 790 90 0 589 -198 237 43 20 511 823 90 0 64 -199 320 262 10 376 864 90 0 420 -200 188 4 -30 253 685 90 92 0 -201 180 6 -10 575 1037 90 634 0 -202 328 466 -30 560 1193 90 897 0 -203 393 12 -20 384 905 90 470 0 -204 409 90 -10 300 887 90 437 0 -205 406 87 -20 771 1165 90 37 0 -206 394 407 -30 468 1053 90 346 0 -207 358 183 -40 724 1214 90 294 0 -208 186 461 20 220 656 90 0 332 -209 38 72 30 276 722 90 0 805 -210 323 471 -10 234 780 90 6 0 -211 224 192 10 63 651 90 0 48 -212 278 46 20 205 664 90 0 366 -213 272 403 30 310 739 0 0 1040 -214 232 42 10 422 721 0 0 1009 -215 18 63 -20 529 980 90 381 0 -216 58 458 -10 491 984 90 178 0 -217 416 417 -20 874 1283 90 223 0 -218 205 230 30 53 413 90 0 371 -219 65 453 30 274 802 90 0 237 -220 421 294 -10 642 1195 90 611 0 -221 434 245 -10 1119 1550 90 757 0 -222 2 116 20 391 722 90 0 927 -223 411 421 20 697 1082 90 0 217 -224 315 260 10 65 479 90 0 734 -225 136 288 -10 843 1242 90 689 0 -226 173 490 20 252 644 90 0 409 -227 90 232 -30 439 975 90 920 0 -228 402 265 20 152 696 90 0 776 -229 361 14 -10 392 1032 90 333 0 -230 348 147 -20 647 1113 90 884 0 -231 385 295 20 142 599 90 0 70 -232 394 23 -10 1163 1434 90 762 0 -233 466 295 -10 831 1274 90 950 0 -234 71 103 -10 959 1503 90 338 0 -235 125 29 30 304 932 90 0 596 -236 25 65 10 799 1263 90 0 674 -237 58 449 -30 872 1164 90 219 0 -238 246 398 40 148 635 90 0 266 -239 423 294 -20 611 1041 90 798 0 -240 59 459 20 418 875 90 0 176 -241 348 145 -20 549 1026 90 353 0 -242 477 97 -20 273 825 90 565 0 -243 307 102 40 351 898 90 0 348 -244 169 31 20 233 832 90 0 765 -245 381 495 20 466 1009 90 0 636 -246 95 234 10 155 673 90 0 828 -247 22 33 10 559 979 90 0 452 -248 435 268 -30 851 1403 90 599 0 -249 135 293 -10 160 629 90 36 0 -250 439 266 10 189 478 90 0 768 -251 269 402 -20 446 790 90 362 0 -252 267 400 -10 551 1063 90 621 0 -253 473 196 10 345 862 90 0 733 -254 445 237 10 195 758 90 0 157 -255 461 284 -10 213 653 90 829 0 -256 167 339 10 425 934 90 0 510 -257 26 43 -20 305 753 90 301 0 -258 101 386 20 201 773 90 0 958 -259 342 54 20 357 813 90 0 319 -260 243 399 10 585 1034 0 0 1039 -261 288 44 20 435 912 90 0 697 -262 274 48 10 203 745 90 0 618 -263 360 184 -20 645 1108 90 670 0 -264 23 67 -10 986 1263 90 678 0 -265 6 296 -10 717 1073 90 102 0 -266 249 258 -40 750 1134 90 238 0 -267 421 415 30 237 677 90 0 526 -268 319 468 -10 228 728 90 969 0 -269 50 438 20 543 960 90 0 690 -270 440 61 -20 758 1246 90 868 0 -271 17 65 -10 432 891 90 95 0 -272 323 118 20 150 606 90 0 151 -273 402 281 20 698 1112 90 0 717 -274 71 153 -30 587 975 90 600 0 -275 52 432 20 554 1078 90 0 845 -276 378 199 10 507 1057 90 0 41 -277 238 204 20 392 807 0 0 1044 -278 208 184 20 78 687 90 0 159 -279 376 195 -30 391 800 90 466 0 -280 473 475 -20 996 1309 90 864 0 -281 215 395 -20 698 1096 90 761 0 -282 123 222 30 208 598 90 0 383 -283 436 241 -10 1068 1537 90 453 0 -284 70 100 -10 885 1425 90 876 0 -285 73 328 20 193 625 90 0 666 -286 241 205 30 572 814 90 0 888 -287 250 405 20 155 781 90 0 626 -288 483 14 10 409 988 90 0 858 -289 466 287 -20 219 772 90 899 0 -290 467 114 -10 1016 1366 90 609 0 -291 120 159 10 158 568 90 0 870 -292 408 84 10 564 995 90 0 696 -293 413 217 20 166 643 90 0 908 -294 338 142 40 139 557 90 0 207 -295 483 457 -30 632 914 90 363 0 -296 479 169 -20 634 974 90 759 0 -297 95 224 -10 905 1273 90 150 0 -298 122 216 10 237 760 90 0 189 -299 477 179 -20 237 795 90 309 0 -300 406 99 -20 217 862 90 660 0 -301 44 47 20 289 862 90 0 257 -302 487 450 -40 738 1184 90 187 0 -303 172 488 -30 250 763 90 149 0 -304 460 374 -20 562 1021 90 960 0 -305 279 138 40 115 608 90 0 38 -306 338 147 10 135 671 90 0 646 -307 395 295 -10 494 919 90 496 0 -308 195 185 20 153 582 90 0 90 -309 463 194 20 220 721 90 0 299 -310 30 72 -20 1023 1452 90 750 0 -311 244 254 -20 423 1087 90 183 0 -312 317 261 20 194 678 90 0 566 -313 67 108 10 231 625 0 0 1023 -314 442 310 -20 464 877 90 738 0 -315 63 336 -10 620 1063 90 910 0 -316 109 107 20 200 652 90 0 895 -317 100 387 10 279 668 90 0 865 -318 494 94 -20 459 867 90 806 0 -319 343 49 -20 381 978 90 259 0 -320 40 52 -10 363 773 90 33 0 -321 319 124 20 186 680 90 0 93 -322 94 97 -20 218 497 90 122 0 -323 476 94 20 274 695 0 0 1006 -324 283 47 10 261 531 90 0 369 -325 398 325 30 600 1017 90 0 735 -326 460 13 -20 316 755 90 955 0 -327 305 107 20 500 941 90 0 405 -328 188 12 30 245 762 90 0 846 -329 136 290 20 120 602 90 0 20 -330 439 268 10 749 1316 0 0 1022 -331 112 467 -10 339 723 90 789 0 -332 181 469 -20 253 752 90 208 0 -333 358 18 10 297 755 90 0 229 -334 459 10 -20 357 822 90 100 0 -335 199 268 20 89 564 90 0 138 -336 436 237 20 186 550 90 0 112 -337 318 280 20 110 593 90 0 573 -338 64 99 10 699 1057 90 0 234 -339 394 333 20 357 701 90 0 673 -340 366 93 -10 691 1233 90 665 0 -341 95 391 -10 671 1211 90 516 0 -342 391 425 -10 637 1114 90 354 0 -343 344 146 -10 352 673 90 504 0 -344 198 12 -10 359 854 90 501 0 -345 186 472 20 311 885 90 0 401 -346 390 408 30 260 711 90 0 206 -347 19 43 20 943 1424 90 0 500 -348 307 108 -40 627 997 90 243 0 -349 59 457 -10 552 1106 90 364 0 -350 49 451 20 284 711 90 0 403 -351 125 39 20 245 716 90 0 475 -352 61 147 40 220 576 90 0 465 -353 317 123 20 334 717 90 0 241 -354 392 426 10 478 909 90 0 342 -355 237 213 -30 588 1176 90 824 0 -356 71 333 10 197 665 90 0 472 -357 304 97 20 221 652 90 0 499 -358 196 462 -40 771 1186 90 656 0 -359 224 191 20 132 540 90 0 898 -360 37 51 -10 400 922 90 532 0 -361 491 25 10 727 1240 90 0 447 -362 270 401 20 152 575 90 0 251 -363 474 461 30 307 679 90 0 295 -364 66 448 10 270 720 90 0 349 -365 337 241 20 161 576 90 0 521 -366 269 46 -20 553 974 90 212 0 -367 22 41 -20 873 1401 90 777 0 -368 198 271 -10 217 621 90 663 0 -369 287 43 -10 356 808 90 324 0 -370 446 63 -40 388 1058 90 137 0 -371 200 229 -30 156 500 90 218 0 -372 48 72 -20 423 1056 90 462 0 -373 465 142 -30 240 739 90 194 0 -374 123 155 -20 966 1386 90 418 0 -375 16 497 -10 863 1298 90 669 0 -376 220 319 30 732 1276 0 0 1038 -377 484 171 10 542 874 90 0 73 -378 55 431 -20 516 930 90 125 0 -379 428 24 -10 812 1433 90 607 0 -380 80 342 10 193 604 90 0 505 -381 16 68 20 296 977 90 0 215 -382 124 56 20 231 913 90 0 459 -383 95 218 -30 633 1167 90 282 0 -384 481 26 30 321 756 90 0 432 -385 145 434 -20 269 707 90 537 0 -386 335 57 30 210 606 90 0 792 -387 26 490 -20 832 1406 90 711 0 -388 324 127 30 143 595 90 0 998 -389 109 114 -20 540 1159 90 57 0 -390 72 148 -30 205 683 90 977 0 -391 220 392 -20 722 1263 90 771 0 -392 442 243 -10 712 1336 90 101 0 -393 69 336 20 293 654 90 0 919 -394 131 226 20 121 670 90 0 742 -395 150 204 20 358 976 90 0 781 -396 423 217 -20 603 1030 90 619 0 -397 419 459 20 562 1060 90 0 123 -398 285 163 -20 532 963 90 1000 0 -399 203 7 -10 805 1336 90 82 0 -400 54 445 10 307 819 90 0 752 -401 109 463 -20 776 1202 90 345 0 -402 355 180 30 126 632 90 0 84 -403 13 455 -20 313 921 90 350 0 -404 165 337 20 218 577 90 0 39 -405 314 124 -20 532 1080 90 327 0 -406 9 124 20 271 696 90 0 502 -407 3 292 -10 250 766 90 181 0 -408 16 462 -20 721 1200 90 887 0 -409 189 464 -20 590 1173 90 226 0 -410 288 154 10 170 766 90 0 901 -411 90 296 20 166 636 90 0 474 -412 138 438 -20 643 1081 90 160 0 -413 13 459 20 407 957 0 0 1001 -414 461 8 -20 510 1058 90 184 0 -415 96 97 20 217 687 90 0 627 -416 68 99 10 858 1268 90 0 878 -417 146 205 -20 132 648 90 473 0 -418 117 152 20 675 1118 90 0 374 -419 481 96 20 334 769 90 0 831 -420 338 260 -10 489 810 90 199 0 -421 285 44 -40 258 722 90 859 0 -422 111 464 -10 551 1060 90 103 0 -423 468 291 30 435 1111 90 0 85 -424 148 206 20 205 760 90 0 77 -425 184 464 10 223 688 90 0 944 -426 197 11 10 479 918 0 0 1016 -427 396 410 10 661 1047 90 0 637 -428 133 53 20 453 935 0 0 1029 -429 132 30 -20 695 1106 90 708 0 -430 464 13 -40 560 1200 90 139 0 -431 100 394 10 778 1294 0 0 1005 -432 483 22 -30 325 856 90 384 0 -433 93 235 10 748 1214 90 0 71 -434 174 26 -10 750 1392 90 653 0 -435 436 264 20 186 693 90 0 629 -436 24 492 -10 1053 1403 90 489 0 -437 406 94 10 220 758 90 0 204 -438 234 246 10 349 770 90 0 654 -439 315 287 -30 474 972 90 72 0 -440 408 453 -20 383 853 90 115 0 -441 128 225 10 124 635 90 0 66 -442 226 191 20 163 693 90 0 979 -443 391 407 10 378 776 90 0 55 -444 198 264 -20 559 1032 90 52 0 -445 179 7 -10 705 1089 90 879 0 -446 425 215 10 469 978 90 0 741 -447 483 27 -10 892 1412 90 361 0 -448 22 40 -10 813 1280 90 113 0 -449 479 176 20 240 834 90 0 546 -450 476 102 -10 654 1008 90 622 0 -451 386 405 20 206 640 90 0 476 -452 22 38 -10 721 1187 90 247 0 -453 440 241 10 835 1398 90 0 283 -454 182 14 -10 827 1352 90 517 0 -455 266 405 20 483 941 90 0 485 -456 357 181 20 127 703 90 0 179 -457 395 332 -20 364 878 90 854 0 -458 423 290 -20 177 673 90 976 0 -459 104 28 -20 519 944 90 382 0 -460 131 56 -40 227 832 90 784 0 -461 111 110 -10 369 771 90 968 0 -462 97 93 20 261 730 90 0 372 -463 90 274 20 170 698 90 0 906 -464 214 394 10 558 1053 90 0 817 -465 6 114 -40 649 1016 90 352 0 -466 375 191 30 197 806 90 0 279 -467 356 21 -20 252 798 90 76 0 -468 466 165 30 580 972 0 0 1007 -469 415 223 -10 1016 1544 90 890 0 -470 397 20 20 272 761 90 0 203 -471 241 403 -10 576 855 90 772 0 -472 69 334 -10 199 804 90 356 0 -473 152 210 20 105 447 90 0 417 -474 67 335 -20 461 852 90 411 0 -475 126 30 -20 284 770 90 351 0 -476 390 423 -20 222 658 90 451 0 -477 285 162 -20 403 910 90 856 0 -478 285 158 -30 139 606 90 758 0 -479 406 96 -10 219 696 90 582 0 -480 459 374 20 702 1063 90 0 684 -481 67 109 20 231 702 90 0 795 -482 468 475 -10 313 848 90 605 0 -483 438 31 10 288 893 90 0 769 -484 168 24 10 522 1065 0 0 1004 -485 267 394 -20 818 1170 90 455 0 -486 406 450 -20 253 649 90 788 0 -487 460 288 10 213 626 90 0 572 -488 224 203 20 53 543 90 0 511 -489 21 487 10 329 910 90 0 436 -490 21 488 -10 343 1049 90 882 0 -491 87 217 10 330 912 90 0 821 -492 67 452 30 272 780 90 0 170 -493 119 223 10 691 1067 90 0 524 -494 398 428 -20 355 839 90 528 0 -495 344 262 -20 353 753 90 951 0 -496 390 301 10 149 767 90 0 307 -497 167 27 30 275 747 90 0 975 -498 236 247 -10 267 667 90 561 0 -499 313 119 -20 480 941 90 357 0 -500 13 51 -20 921 1425 90 347 0 -501 200 13 10 242 867 90 0 344 -502 0 120 -20 281 862 90 406 0 -503 202 4 -20 757 1197 90 683 0 -504 343 144 10 153 498 90 0 343 -505 94 383 -10 472 851 90 380 0 -506 250 411 -30 261 785 90 597 0 -507 464 134 20 844 1310 0 0 1034 -508 443 237 -40 193 638 90 623 0 -509 4 114 -30 459 1021 90 820 0 -510 169 336 -10 571 1159 90 256 0 -511 200 178 -20 87 491 90 488 0 -512 412 453 10 395 1029 90 0 939 -513 121 151 -10 821 1342 90 852 0 -514 403 93 -10 1001 1311 90 740 0 -515 399 301 -10 488 730 90 1 0 -516 97 387 10 637 1055 90 0 341 -517 176 8 10 791 1191 90 0 454 -518 62 326 20 707 1176 90 0 946 -519 151 207 10 502 1018 0 0 1043 -520 299 98 -10 159 603 90 32 0 -521 334 240 -20 220 889 90 365 0 -522 92 270 -30 707 1277 90 27 0 -523 444 269 20 345 793 90 0 860 -524 132 223 -10 527 1218 90 493 0 -525 428 25 20 937 1448 0 0 1021 -526 413 421 -30 598 997 90 267 0 -527 382 498 10 433 855 90 0 793 -528 391 429 20 272 728 90 0 494 -529 398 97 10 212 658 90 0 719 -530 192 265 10 522 876 90 0 140 -531 438 26 10 292 785 90 0 724 -532 44 79 10 267 916 90 0 360 -533 137 290 10 119 588 90 0 945 -534 446 319 30 207 741 90 0 810 -535 175 487 20 248 746 90 0 134 -536 26 45 30 303 704 90 0 121 -537 147 435 20 295 865 90 0 385 -538 111 459 20 970 1378 0 0 1013 -539 472 132 -10 626 966 90 913 0 -540 349 158 20 854 1289 0 0 1026 -541 86 268 -20 540 885 90 543 0 -542 415 216 10 168 664 90 0 867 -543 121 218 20 132 676 90 0 541 -544 210 185 20 76 438 90 0 907 -545 98 215 -20 155 518 90 604 0 -546 484 174 -20 338 701 90 449 0 -547 328 458 -40 666 1284 90 118 0 -548 313 126 -10 738 1058 90 983 0 -549 390 415 -10 878 1255 90 578 0 -550 459 17 -20 830 1302 90 802 0 -551 481 124 -10 321 755 90 144 0 -552 386 414 -10 819 1453 90 558 0 -553 116 466 -20 254 941 90 106 0 -554 468 295 10 710 1212 90 0 881 -555 391 426 -10 514 1056 90 849 0 -556 408 279 20 492 938 90 0 649 -557 15 68 -10 297 823 90 834 0 -558 392 424 10 763 1171 90 0 552 -559 88 95 20 479 892 90 0 894 -560 116 151 20 516 1095 90 0 603 -561 240 250 10 147 598 90 0 498 -562 123 159 20 156 646 90 0 47 -563 89 290 -10 165 576 90 116 0 -564 39 50 30 290 739 0 0 1030 -565 359 179 20 270 725 90 0 242 -566 338 257 -20 448 1038 90 312 0 -567 92 236 -10 879 1267 90 586 0 -568 413 417 -10 901 1442 90 837 0 -569 91 101 10 635 1112 90 0 172 -570 55 449 20 278 699 90 0 866 -571 57 425 20 260 860 90 0 91 -572 465 287 -10 426 748 90 487 0 -573 320 280 -20 99 420 90 337 0 -574 322 468 -10 403 798 90 980 0 -575 483 458 -10 411 952 90 45 0 -576 312 267 10 703 1100 0 0 1045 -577 139 291 10 118 682 90 0 46 -578 388 408 10 209 740 90 0 549 -579 110 459 -30 748 1417 90 158 0 -580 459 372 20 471 927 0 0 1017 -581 204 269 30 49 498 0 0 1042 -582 407 98 10 218 696 90 0 479 -583 335 256 -30 659 1193 90 992 0 -584 471 484 10 369 820 90 0 993 -585 339 244 -20 89 685 90 590 0 -586 89 272 10 263 790 90 0 567 -587 488 96 -10 655 1226 90 957 0 -588 316 286 -20 400 863 90 947 0 -589 235 50 -20 682 1028 90 197 0 -590 316 258 20 90 596 90 0 585 -591 425 288 -10 395 877 90 51 0 -592 213 397 -10 502 923 90 168 0 -593 113 156 -30 451 787 90 129 0 -594 199 9 -20 582 1181 90 648 0 -595 463 167 -10 465 901 90 779 0 -596 129 27 -30 410 1015 90 235 0 -597 248 404 30 154 737 90 0 506 -598 405 276 -30 625 994 90 704 0 -599 400 288 30 154 556 90 0 248 -600 61 156 30 263 731 90 0 274 -601 393 20 -10 912 1464 90 108 0 -602 484 177 20 245 628 90 0 995 -603 108 116 -20 773 1111 90 560 0 -604 112 217 20 201 625 90 0 545 -605 389 404 10 207 688 90 0 482 -606 102 391 -20 899 1360 90 713 0 -607 434 26 10 314 825 90 0 379 -608 488 26 -10 936 1399 90 839 0 -609 477 120 10 732 1262 90 0 290 -610 126 220 -10 493 877 90 745 0 -611 439 310 10 198 526 90 0 220 -612 212 319 -30 78 468 90 714 0 -613 320 283 30 213 678 90 0 751 -614 17 459 -20 1006 1421 90 812 0 -615 236 213 20 39 627 90 0 964 -616 68 108 10 230 724 90 0 642 -617 390 294 -20 614 1170 90 687 0 -618 275 42 -10 413 732 90 262 0 -619 423 214 20 412 852 90 0 396 -620 460 367 20 240 861 90 0 833 -621 272 402 10 153 638 90 0 252 -622 478 102 10 558 921 90 0 450 -623 400 260 40 150 527 90 0 508 -624 181 6 20 471 959 0 0 1010 -625 470 475 30 314 975 90 0 60 -626 245 408 -20 363 874 90 287 0 -627 93 96 -20 219 742 90 415 0 -628 218 318 -10 716 1108 90 971 0 -629 441 265 -20 191 734 90 435 0 -630 21 64 -40 590 1104 90 709 0 -631 356 23 20 250 712 90 0 659 -632 267 44 -10 451 891 90 30 0 -633 277 50 10 201 540 90 0 12 -634 182 4 10 377 868 90 0 201 -635 26 36 -10 386 962 90 966 0 -636 384 491 -20 676 1170 90 245 0 -637 418 290 -10 975 1419 90 427 0 -638 321 277 10 75 516 90 0 826 -639 358 16 30 397 839 90 0 88 -640 389 334 20 162 616 90 0 748 -641 48 78 -20 763 1270 90 672 0 -642 24 68 -10 930 1444 90 616 0 -643 206 225 10 195 655 90 0 956 -644 290 141 -10 405 949 90 25 0 -645 439 15 -20 403 954 90 14 0 -646 359 182 -10 572 997 90 306 0 -647 413 287 -20 1076 1567 90 67 0 -648 230 49 20 201 721 90 0 594 -649 407 280 -20 419 828 90 556 0 -650 459 295 20 1027 1455 0 0 1031 -651 468 199 20 507 892 90 0 952 -652 101 384 30 200 563 90 0 75 -653 170 26 10 646 1127 90 0 434 -654 197 270 -10 312 710 90 438 0 -655 415 289 20 169 646 90 0 807 -656 203 390 40 147 644 90 0 358 -657 443 272 -10 585 1105 90 117 0 -658 210 391 -20 146 661 90 815 0 -659 363 22 -20 707 1282 90 631 0 -660 352 176 20 126 473 90 0 300 -661 212 223 -20 515 1076 90 143 0 -662 8 120 -20 946 1455 90 196 0 -663 244 250 10 6 546 90 0 368 -664 18 484 10 329 865 90 0 16 -665 379 82 10 656 1054 90 0 340 -666 84 346 -20 889 1363 90 285 0 -667 233 207 10 46 531 90 0 923 -668 344 62 -10 978 1505 90 128 0 -669 20 489 10 630 1127 90 0 375 -670 361 181 20 483 902 90 0 263 -671 174 494 10 305 751 90 0 978 -672 49 76 20 674 1175 90 0 641 -673 390 325 -20 646 1166 90 339 0 -674 7 118 -10 775 1259 90 236 0 -675 107 26 -10 292 805 90 50 0 -676 312 270 -30 698 1292 90 166 0 -677 399 102 20 381 984 90 0 917 -678 109 108 10 245 709 90 0 264 -679 115 218 10 138 698 90 0 174 -680 88 287 -20 694 1143 90 986 0 -681 54 424 -20 262 838 90 823 0 -682 125 32 30 251 687 90 0 749 -683 199 12 20 265 766 90 0 503 -684 457 374 -20 697 1253 90 480 0 -685 391 413 10 845 1237 0 0 1035 -686 304 102 -10 250 813 90 941 0 -687 391 293 20 611 990 90 0 617 -688 66 336 10 483 1014 0 0 1033 -689 132 291 10 501 1032 90 0 225 -690 18 462 -20 837 1268 90 269 0 -691 347 62 -20 977 1319 90 145 0 -692 466 142 10 247 781 90 0 133 -693 389 17 -20 771 1270 90 182 0 -694 342 254 -20 92 511 90 836 0 -695 92 223 -10 787 1203 90 8 0 -696 404 83 -10 625 1121 90 292 0 -697 290 46 -20 636 1093 90 261 0 -698 95 92 20 277 899 90 0 80 -699 200 265 10 642 1133 90 0 59 -700 435 16 -30 693 1031 90 173 0 -701 25 499 -40 911 1399 90 731 0 -702 319 260 20 207 849 90 0 21 -703 116 225 -20 537 1035 90 191 0 -704 402 284 30 155 634 90 0 598 -705 108 105 20 202 528 90 0 114 -706 386 13 -20 617 1046 90 716 0 -707 472 129 10 252 849 90 0 982 -708 132 57 20 226 833 90 0 429 -709 43 71 40 294 812 90 0 630 -710 493 91 -20 382 759 90 787 0 -711 12 451 20 311 705 90 0 387 -712 201 188 10 267 841 90 0 880 -713 60 428 20 894 1301 90 0 606 -714 243 248 30 44 513 90 0 612 -715 230 197 -20 333 901 90 926 0 -716 389 11 20 534 943 90 0 706 -717 401 281 -20 761 1232 90 273 0 -718 459 14 20 315 778 90 0 994 -719 411 95 -10 235 760 90 529 0 -720 0 297 10 432 983 90 0 744 -721 476 196 -30 260 760 90 11 0 -722 458 16 20 313 764 90 0 727 -723 92 230 -20 311 737 90 109 0 -724 432 24 -10 722 1334 90 531 0 -725 215 317 10 75 402 90 0 936 -726 371 192 30 134 690 90 0 801 -727 481 20 -20 430 773 90 722 0 -728 152 207 20 574 1128 90 0 65 -729 14 459 -20 341 840 90 970 0 -730 361 17 20 577 1032 90 0 110 -731 8 497 40 701 1265 90 0 701 -732 206 186 10 705 1140 90 0 915 -733 421 218 -10 590 1229 90 253 0 -734 402 264 -10 152 702 90 224 0 -735 388 325 -30 732 1264 90 325 0 -736 35 304 30 221 751 90 0 34 -737 321 263 -10 516 907 90 924 0 -738 444 313 20 211 762 90 0 314 -739 188 462 -10 468 1111 90 851 0 -740 400 103 10 360 821 90 0 514 -741 418 221 -10 907 1466 90 446 0 -742 112 219 -20 320 689 90 394 0 -743 408 452 -20 268 786 90 962 0 -744 30 301 -10 459 927 90 720 0 -745 205 228 10 50 480 90 0 610 -746 407 88 -20 806 1312 90 780 0 -747 380 489 -10 928 1300 90 188 0 -748 395 331 -20 410 1013 90 640 0 -749 133 26 -30 560 1054 90 682 0 -750 21 68 20 1020 1412 90 0 310 -751 313 282 -30 637 1000 90 613 0 -752 53 440 -10 420 897 90 400 0 -753 458 130 -20 918 1432 90 877 0 -754 437 15 30 431 1110 90 0 171 -755 400 286 -20 154 447 90 796 0 -756 346 144 -40 437 954 90 985 0 -757 440 244 10 613 1070 90 0 221 -758 280 162 30 92 687 90 0 478 -759 488 173 20 376 852 90 0 296 -760 326 118 10 152 508 90 0 26 -761 207 400 20 256 795 90 0 281 -762 391 18 10 820 1405 90 0 232 -763 37 55 -20 530 981 90 991 0 -764 204 15 20 239 522 90 0 799 -765 173 28 -20 916 1409 90 244 0 -766 343 148 -30 138 795 90 930 0 -767 231 43 -10 280 680 90 949 0 -768 445 273 -10 510 995 90 250 0 -769 432 27 -10 649 1040 90 483 0 -770 439 305 -30 549 985 90 940 0 -771 208 396 20 171 691 90 0 391 -772 249 407 10 174 683 90 0 471 -773 107 112 -10 550 964 90 148 0 -774 279 159 20 121 433 90 0 169 -775 376 494 30 274 552 90 0 147 -776 403 262 -20 259 781 90 228 0 -777 41 47 20 291 795 90 0 367 -778 96 213 30 158 576 90 0 953 -779 461 167 10 226 774 90 0 595 -780 391 99 20 206 716 90 0 746 -781 116 221 -20 346 852 90 395 0 -782 165 343 -40 377 793 90 981 0 -783 388 334 20 161 704 90 0 861 -784 130 57 40 227 786 90 0 460 -785 422 409 10 234 635 90 0 132 -786 66 156 10 349 1021 90 0 869 -787 485 86 20 286 841 90 0 710 -788 389 428 20 225 648 90 0 486 -789 117 467 10 254 794 90 0 331 -790 475 477 -20 822 1297 90 809 0 -791 429 27 -20 1064 1449 90 889 0 -792 339 60 -30 209 685 90 386 0 -793 381 494 -10 633 1024 90 527 0 -794 218 321 20 517 939 90 0 893 -795 64 101 -20 468 922 90 481 0 -796 343 254 20 126 602 90 0 755 -797 478 464 10 312 733 90 0 68 -798 423 286 20 330 577 90 0 239 -799 198 9 -20 540 1041 90 764 0 -800 225 196 10 59 602 90 0 984 -801 374 190 -30 137 520 90 726 0 -802 462 14 20 712 1232 90 0 550 -803 347 54 10 579 1161 90 0 874 -804 231 195 20 262 787 0 0 1027 -805 72 96 -30 965 1499 90 209 0 -806 489 87 20 289 780 90 0 318 -807 443 313 -20 333 823 90 655 0 -808 233 204 20 49 515 90 0 988 -809 477 483 20 554 1007 90 0 790 -810 459 368 -30 240 566 90 534 0 -811 95 277 -10 915 1264 90 818 0 -812 16 460 20 908 1383 90 0 614 -813 100 266 20 150 633 90 0 840 -814 288 53 -10 720 1203 90 838 0 -815 211 386 20 141 455 90 0 658 -816 144 439 -30 490 1042 90 81 0 -817 224 314 -10 935 1265 90 464 0 -818 79 291 10 313 774 90 0 811 -819 95 235 10 155 388 90 0 886 -820 7 123 30 274 734 90 0 509 -821 91 217 -10 482 947 90 491 0 -822 105 27 10 423 857 90 0 872 -823 101 385 20 201 802 90 0 681 -824 238 210 30 580 998 90 0 355 -825 439 67 10 263 748 90 0 154 -826 435 267 -10 1034 1401 90 638 0 -827 443 64 -10 561 1073 90 932 0 -828 92 234 -10 699 1081 90 246 0 -829 450 265 10 215 727 90 0 255 -830 102 27 -10 552 1096 90 190 0 -831 492 94 -20 461 1049 90 419 0 -832 440 63 -10 643 1176 90 35 0 -833 453 367 -20 876 1269 90 620 0 -834 15 69 10 296 586 90 0 557 -835 489 17 10 585 1005 90 0 146 -836 335 255 20 85 494 90 0 694 -837 419 418 10 238 729 90 0 568 -838 292 41 10 594 943 90 0 814 -839 489 27 10 822 1331 90 0 608 -840 96 270 -20 155 712 90 813 0 -841 461 369 -20 412 800 90 959 0 -842 105 22 30 270 823 0 0 1028 -843 479 121 -20 401 1045 90 111 0 -844 207 223 10 447 772 90 0 22 -845 17 458 -20 1024 1422 90 275 0 -846 186 7 -30 278 778 90 328 0 -847 465 168 -30 613 1125 90 928 0 -848 416 288 -30 1058 1521 90 7 0 -849 388 418 10 217 719 90 0 555 -850 92 233 -10 570 1028 90 943 0 -851 179 492 10 441 989 90 0 739 -852 132 55 10 385 819 90 0 513 -853 485 24 20 326 729 0 0 1008 -854 388 331 20 160 529 90 0 457 -855 217 323 -10 133 764 90 933 0 -856 281 164 20 91 629 90 0 477 -857 169 340 -10 467 1075 90 954 0 -858 491 20 -10 620 1157 90 288 0 -859 279 42 40 210 744 90 0 421 -860 439 243 -20 979 1439 90 523 0 -861 391 334 -20 215 657 90 783 0 -862 96 244 -20 1133 1578 90 999 0 -863 441 273 -10 615 1260 90 141 0 -864 477 478 20 696 1239 90 0 280 -865 56 434 -10 632 1188 90 317 0 -866 12 463 -20 519 1033 90 570 0 -867 458 164 -10 225 664 90 542 0 -868 446 65 20 269 819 90 0 270 -869 71 156 -10 641 1108 90 786 0 -870 65 153 -10 385 800 90 291 0 -871 8 118 20 844 1373 0 0 1012 -872 102 29 -10 592 1241 90 822 0 -873 315 265 -20 634 982 90 155 0 -874 343 62 -10 873 1525 90 803 0 -875 384 16 20 764 1088 0 0 1018 -876 67 105 10 354 846 90 0 284 -877 478 118 20 825 1353 90 0 753 -878 73 101 -10 869 1503 90 416 0 -879 200 14 10 241 713 90 0 445 -880 114 225 -10 462 925 90 712 0 -881 460 293 -10 857 1441 90 554 0 -882 51 447 10 280 684 90 0 490 -883 418 295 20 885 1318 0 0 1025 -884 282 139 20 115 506 90 0 230 -885 477 122 -40 705 1105 90 175 0 -886 91 266 -10 512 1104 90 819 0 -887 16 463 20 649 1090 90 0 408 -888 228 199 -30 502 916 90 286 0 -889 435 20 20 728 1184 90 0 791 -890 467 195 10 223 712 90 0 469 -891 469 132 10 707 1071 90 0 892 -892 465 136 -10 689 1282 90 891 0 -893 246 255 -20 543 1153 90 794 0 -894 49 75 -20 707 959 90 559 0 -895 66 98 -20 737 1204 90 316 0 -896 166 32 10 233 814 90 0 935 -897 326 466 30 515 1054 90 0 202 -898 202 186 -20 405 887 90 359 0 -899 467 285 20 219 666 90 0 289 -900 290 136 -10 334 830 90 136 0 -901 341 58 -10 212 656 90 410 0 -902 121 219 -20 132 659 90 40 0 -903 107 35 -10 854 1173 90 127 0 -904 216 319 -20 147 561 90 130 0 -905 134 288 20 668 1234 0 0 1024 -906 89 270 -20 335 902 90 463 0 -907 136 52 -20 572 1004 90 544 0 -908 462 167 -20 340 844 90 293 0 -909 340 54 10 241 745 90 0 165 -910 80 286 10 351 926 90 0 315 -911 38 301 -10 409 1172 90 912 0 -912 25 307 10 239 769 90 0 911 -913 470 139 10 514 885 90 0 539 -914 270 400 10 151 703 90 0 86 -915 204 187 -10 578 1082 90 732 0 -916 460 171 -10 704 1226 90 167 0 -917 399 106 -20 708 1206 90 677 0 -918 197 267 10 378 830 0 0 1002 -919 77 350 -20 700 1355 90 393 0 -920 91 231 30 391 840 90 0 227 -921 398 103 -10 477 1069 90 989 0 -922 35 303 20 221 571 90 0 62 -923 231 204 -10 660 950 90 667 0 -924 311 266 10 63 465 90 0 737 -925 416 420 -20 527 883 90 104 0 -926 231 203 20 115 528 90 0 715 -927 4 116 -20 412 885 90 222 0 -928 417 217 30 170 753 90 0 847 -929 268 52 -20 876 1205 90 63 0 -930 345 144 30 388 820 90 0 766 -931 368 85 30 202 661 90 0 163 -932 441 65 10 265 690 90 0 827 -933 201 270 10 52 702 90 0 855 -934 0 293 30 331 897 90 0 126 -935 167 24 -10 508 896 90 896 0 -936 186 464 -10 434 958 90 725 0 -937 7 292 -10 246 731 90 61 0 -938 80 290 10 213 692 90 0 153 -939 405 455 -10 781 1050 90 512 0 -940 439 312 30 198 646 90 0 770 -941 300 108 10 150 612 90 0 686 -942 478 121 -30 578 1050 90 94 0 -943 92 232 10 196 668 90 0 850 -944 111 463 -10 694 1099 90 425 0 -945 132 294 -10 194 782 90 533 0 -946 134 285 -20 922 1350 90 518 0 -947 316 284 20 311 768 90 0 588 -948 56 428 20 263 824 90 0 96 -949 232 47 10 203 764 90 0 767 -950 466 291 10 406 956 90 0 233 -951 341 257 20 234 681 90 0 495 -952 420 213 -20 202 876 90 651 0 -953 116 152 -30 526 902 90 778 0 -954 163 337 10 123 808 90 0 857 -955 440 7 20 308 714 90 0 326 -956 208 222 -10 410 991 90 643 0 -957 485 95 10 281 825 90 0 587 -958 97 385 -20 310 825 90 258 0 -959 462 367 20 342 685 90 0 841 -960 455 365 20 235 731 90 0 304 -961 492 95 30 603 1089 90 0 58 -962 405 450 20 253 774 90 0 743 -963 371 193 20 133 713 90 0 987 -964 234 202 -20 145 684 90 615 0 -965 404 103 -20 222 772 90 3 0 -966 24 41 10 383 775 90 0 635 -967 67 334 20 317 814 90 0 18 -968 207 227 10 48 522 90 0 461 -969 277 403 10 210 650 90 0 268 -970 15 457 20 313 832 90 0 729 -971 217 319 10 539 1101 90 0 628 -972 111 467 20 408 836 90 0 974 -973 378 493 -20 274 759 90 28 0 -974 112 465 -20 419 1009 90 972 0 -975 173 25 -30 753 1206 90 497 0 -976 421 292 20 176 714 90 0 458 -977 74 146 30 204 555 90 0 390 -978 178 491 -10 302 945 90 671 0 -979 204 185 -20 503 973 90 442 0 -980 319 470 10 230 784 90 0 574 -981 163 331 40 118 326 90 0 782 -982 470 125 -10 253 809 90 707 0 -983 315 121 10 355 882 90 0 548 -984 166 34 -10 231 823 90 800 0 -985 284 140 40 115 584 90 0 756 -986 85 288 20 169 729 90 0 680 -987 376 190 -20 258 563 90 963 0 -988 238 203 -20 305 712 90 808 0 -989 399 104 10 660 1070 90 0 921 -990 472 481 20 320 936 90 0 43 -991 46 74 20 428 866 90 0 763 -992 401 255 30 394 1029 90 0 583 -993 475 480 -10 586 1162 90 584 0 -994 485 27 -20 900 1411 90 718 0 -995 476 174 -20 675 1123 90 602 0 -996 330 242 30 422 876 0 0 1011 -997 332 249 30 82 612 90 0 120 -998 375 80 -30 340 808 90 388 0 -999 94 235 20 156 667 90 0 862 -1000 287 144 20 635 1088 90 0 398 -1001 13 459 -20 407 957 90 413 0 -1002 197 267 -10 378 830 90 918 0 -1003 418 218 -20 740 1264 90 15 0 -1004 168 24 -10 522 1065 90 484 0 -1005 100 394 -10 778 1294 90 431 0 -1006 476 94 -20 274 695 90 323 0 -1007 466 165 -30 580 972 90 468 0 -1008 485 24 -20 326 729 90 853 0 -1009 232 42 -10 422 721 90 214 0 -1010 181 6 -20 471 959 90 624 0 -1011 330 242 -30 422 876 90 996 0 -1012 8 118 -20 844 1373 90 871 0 -1013 111 459 -20 970 1378 90 538 0 -1014 64 426 -10 931 1454 90 185 0 -1015 286 159 -20 290 836 90 5 0 -1016 197 11 -10 479 918 90 426 0 -1017 459 372 -20 471 927 90 580 0 -1018 384 16 -20 764 1088 90 875 0 -1019 269 48 -20 709 1003 90 192 0 -1020 417 417 -10 832 1142 90 24 0 -1021 428 25 -20 937 1448 90 525 0 -1022 439 268 -10 749 1316 90 330 0 -1023 67 108 -10 231 625 90 313 0 -1024 134 288 -20 668 1234 90 905 0 -1025 418 295 -20 885 1318 90 883 0 -1026 349 158 -20 854 1289 90 540 0 -1027 231 195 -20 262 787 90 804 0 -1028 105 22 -30 270 823 90 842 0 -1029 133 53 -20 453 935 90 428 0 -1030 39 50 -30 290 739 90 564 0 -1031 459 295 -20 1027 1455 90 650 0 -1032 357 26 -20 936 1428 90 42 0 -1033 66 336 -10 483 1014 90 688 0 -1034 464 134 -20 844 1310 90 507 0 -1035 391 413 -10 845 1237 90 685 0 -1036 146 439 -10 413 936 90 124 0 -1037 91 235 -10 962 1367 90 161 0 -1038 220 319 -30 732 1276 90 376 0 -1039 243 399 -10 585 1034 90 260 0 -1040 272 403 -30 310 739 90 213 0 -1041 480 455 -10 908 1394 90 19 0 -1042 204 269 -30 49 498 90 581 0 -1043 151 207 -10 502 1018 90 519 0 -1044 238 204 -20 392 807 90 277 0 -1045 312 267 -10 703 1100 90 576 0 -1046 379 196 -20 443 935 90 31 0 diff --git a/jsprit-instances/instances/lilim/1000/LC1102.txt b/jsprit-instances/instances/lilim/1000/LC1102.txt deleted file mode 100644 index adbc6c9b0..000000000 --- a/jsprit-instances/instances/lilim/1000/LC1102.txt +++ /dev/null @@ -1,1048 +0,0 @@ -250 200 1 -0 250 250 0 0 1824 0 0 0 -1 387 297 10 200 270 90 0 307 -2 5 297 -30 955 1017 90 126 0 -3 355 177 -20 0 1607 90 58 0 -4 78 346 -10 355 403 90 44 0 -5 286 159 -30 530 597 90 478 0 -6 322 465 10 226 291 90 0 980 -7 393 408 30 0 1521 90 0 443 -8 89 216 -20 495 562 90 545 0 -9 76 345 -30 0 1536 90 652 0 -10 410 285 20 499 556 90 0 556 -11 472 189 -20 0 1504 90 309 0 -12 270 49 -20 925 970 90 192 0 -13 219 325 10 520 563 90 0 794 -14 437 12 20 557 613 90 0 700 -15 418 218 -10 974 1030 90 446 0 -16 20 488 10 754 820 90 0 387 -17 77 347 20 436 505 90 0 518 -18 73 346 10 726 772 90 0 89 -19 480 455 -40 1123 1179 90 187 0 -20 129 292 -20 552 610 90 329 0 -21 337 257 -30 805 863 90 992 0 -22 237 254 -10 0 1721 90 699 0 -23 131 220 -20 0 1612 90 610 0 -24 417 417 10 954 1020 90 0 568 -25 287 143 10 748 793 0 0 1001 -26 379 80 -40 737 789 90 137 0 -27 87 285 -20 709 764 90 967 0 -28 374 489 20 269 339 90 0 775 -29 440 247 20 717 779 90 0 162 -30 281 137 -40 370 416 90 985 0 -31 379 196 20 665 714 90 0 276 -32 297 102 10 214 281 90 0 243 -33 39 76 10 328 399 90 0 352 -34 35 306 -20 369 440 90 285 0 -35 435 68 10 0 1475 90 0 582 -36 245 251 10 60 130 90 0 277 -37 409 88 20 655 715 90 0 696 -38 273 55 20 196 246 90 0 929 -39 163 340 -10 468 513 90 954 0 -40 129 223 20 274 340 90 0 119 -41 371 200 10 0 1604 90 0 84 -42 357 26 20 0 1486 90 0 229 -43 470 473 10 1221 1270 90 0 797 -44 77 344 10 254 319 90 0 4 -45 478 461 -30 462 529 90 363 0 -46 128 291 -30 639 706 90 249 0 -47 111 113 10 632 694 90 0 773 -48 164 21 20 578 639 90 0 765 -49 21 485 -30 487 540 90 79 0 -50 108 26 -10 423 491 90 190 0 -51 424 286 10 0 1557 0 0 1021 -52 200 270 20 0 1681 90 0 444 -53 7 300 30 1056 1104 90 0 912 -54 433 31 10 285 333 90 0 326 -55 420 295 -20 0 1559 90 655 0 -56 451 367 -20 1134 1195 90 304 0 -57 118 157 20 403 465 90 0 953 -58 489 101 20 0 1453 90 0 3 -59 200 261 -30 945 1017 90 654 0 -60 476 483 -10 657 722 90 584 0 -61 30 302 10 572 632 90 0 922 -62 8 300 -10 1131 1211 90 937 0 -63 275 45 -10 444 515 90 262 0 -64 238 46 40 735 784 90 0 589 -65 152 206 -10 910 973 90 298 0 -66 99 218 30 154 205 90 0 821 -67 393 410 -20 913 982 90 206 0 -68 480 460 20 549 627 90 0 575 -69 337 256 -20 154 201 90 836 0 -70 389 300 -10 0 1587 90 638 0 -71 90 237 20 0 1574 90 0 862 -72 321 280 30 143 194 90 0 751 -73 417 218 -10 0 1564 90 847 0 -74 64 108 10 473 539 90 0 234 -75 57 432 -20 973 1033 90 865 0 -76 356 24 20 249 323 90 0 467 -77 143 207 30 0 1619 90 0 968 -78 221 325 10 0 1654 90 0 817 -79 22 483 30 325 389 90 0 49 -80 24 65 -30 0 1442 90 172 0 -81 141 431 30 362 423 90 0 666 -82 202 9 -20 0 1489 90 764 0 -83 20 48 10 1294 1358 90 0 500 -84 457 163 -10 284 346 90 41 0 -85 470 290 -10 835 895 90 289 0 -86 268 400 -20 869 928 90 455 0 -87 337 251 -10 0 1647 90 221 0 -88 366 20 -20 874 927 90 730 0 -89 72 344 -10 0 1533 90 18 0 -90 149 203 -20 553 597 90 278 0 -91 55 428 -20 511 568 90 571 0 -92 189 7 30 0 1484 90 0 201 -93 397 18 -20 519 575 90 182 0 -94 481 122 -20 607 653 90 111 0 -95 20 73 10 0 1444 90 0 750 -96 54 430 20 610 652 90 0 404 -97 74 350 10 915 955 90 0 919 -98 202 8 10 0 1488 90 0 156 -99 406 285 -20 0 1575 90 848 0 -100 460 2 20 655 720 90 0 994 -101 441 244 10 909 955 0 0 1016 -102 1 293 -10 0 1482 90 181 0 -103 115 465 10 409 465 90 0 944 -104 422 420 -20 0 1493 90 295 0 -105 75 347 10 810 872 0 0 1029 -106 141 428 -20 0 1526 90 412 0 -107 404 264 -20 395 462 90 228 0 -108 398 23 10 270 334 90 0 173 -109 148 211 20 167 233 90 0 786 -110 362 22 20 1050 1121 90 0 909 -111 479 127 20 412 478 90 0 94 -112 443 246 20 536 593 90 0 250 -113 22 37 10 0 1422 90 0 347 -114 65 100 10 763 811 90 0 284 -115 404 447 20 250 280 90 0 743 -116 102 264 10 148 215 90 0 189 -117 444 271 10 633 688 90 0 248 -118 325 466 40 0 1506 90 0 202 -119 124 219 -20 571 615 90 40 0 -120 335 243 20 428 495 90 0 996 -121 26 42 20 455 519 90 0 966 -122 113 106 20 198 260 90 0 461 -123 399 450 -10 971 1056 90 440 0 -124 146 439 -20 642 707 90 208 0 -125 162 336 20 0 1611 90 0 510 -126 2 295 30 774 828 90 0 2 -127 122 35 10 0 1484 90 0 698 -128 346 60 10 1027 1086 90 0 668 -129 93 213 -30 0 1573 90 870 0 -130 218 316 20 73 134 90 0 537 -131 116 156 10 495 557 90 0 159 -132 419 422 -10 0 1493 90 302 0 -133 467 141 10 0 1492 90 0 891 -134 187 491 -20 771 854 90 345 0 -135 433 25 20 0 1444 90 0 724 -136 286 137 -40 0 1616 90 305 0 -137 370 82 40 0 1528 90 0 26 -138 132 290 10 818 898 90 0 225 -139 435 11 40 0 1432 90 0 645 -140 206 261 -30 1050 1104 90 581 0 -141 428 291 10 698 764 90 0 647 -142 95 384 -20 719 785 90 385 0 -143 205 223 -30 491 544 90 371 0 -144 463 140 10 295 366 90 0 539 -145 343 47 -10 0 1511 90 760 0 -146 435 62 30 1156 1218 90 0 965 -147 387 488 -20 987 1046 90 636 0 -148 121 157 10 220 279 90 0 291 -149 182 463 30 372 440 90 0 816 -150 92 216 -30 0 1573 90 920 0 -151 370 83 20 357 419 90 0 163 -152 444 242 10 441 501 90 0 435 -153 90 285 -20 981 1042 90 840 0 -154 446 64 10 600 665 90 0 827 -155 312 264 20 131 179 90 0 199 -156 208 11 -10 0 1492 90 98 0 -157 442 247 -20 623 689 90 336 0 -158 140 431 30 280 324 90 0 516 -159 118 153 -10 949 1028 90 131 0 -160 134 428 20 935 992 90 0 971 -161 91 235 10 1140 1188 90 0 561 -162 406 257 -20 0 1578 90 29 0 -163 377 76 -20 638 699 90 151 0 -164 474 96 30 271 327 90 0 622 -165 346 57 -10 0 1519 90 901 0 -166 393 301 30 482 545 90 0 515 -167 412 214 10 165 215 90 0 860 -168 210 398 -20 592 647 90 815 0 -169 346 150 -10 948 998 90 756 0 -170 62 453 -30 515 584 90 219 0 -171 437 61 -10 1063 1127 90 989 0 -172 87 96 30 0 1510 90 0 80 -173 367 83 -10 0 1531 90 108 0 -174 91 268 10 869 931 90 0 567 -175 459 145 40 233 291 90 0 194 -176 63 444 -20 1084 1146 90 240 0 -177 433 27 -20 628 694 90 470 0 -178 60 454 -10 892 952 90 364 0 -179 478 99 -20 0 1461 90 323 0 -180 485 454 10 0 1423 0 0 1003 -181 6 292 10 316 360 90 0 102 -182 398 20 20 333 394 90 0 93 -183 248 251 20 2 63 90 0 714 -184 433 15 20 297 344 90 0 955 -185 64 426 10 1162 1223 90 0 538 -186 154 207 -30 0 1629 90 282 0 -187 481 456 40 1028 1091 90 0 19 -188 380 498 10 523 582 90 0 793 -189 88 286 -10 795 859 90 116 0 -190 111 23 10 266 326 90 0 50 -191 199 187 20 433 490 90 0 898 -192 269 48 20 0 1532 90 0 12 -193 367 178 -10 0 1597 90 290 0 -194 452 163 -40 0 1515 90 175 0 -195 431 28 20 0 1448 90 0 791 -196 8 116 20 894 957 0 0 1006 -197 233 47 20 356 415 90 0 198 -198 237 43 -20 631 702 90 197 0 -199 320 262 -20 585 656 90 155 0 -200 188 4 20 413 455 90 0 445 -201 180 6 -30 0 1481 90 92 0 -202 328 466 -40 847 906 90 118 0 -203 393 12 10 0 1457 90 0 706 -204 409 90 20 0 1509 90 0 205 -205 406 87 -20 936 999 90 204 0 -206 394 407 20 733 789 90 0 67 -207 358 183 -30 932 1005 90 402 0 -208 186 461 20 220 284 90 0 124 -209 38 72 30 420 496 90 0 559 -210 323 471 -10 0 1502 90 268 0 -211 224 192 10 215 274 90 0 888 -212 278 46 20 205 269 90 0 421 -213 272 403 -10 494 555 90 621 0 -214 232 42 10 545 599 0 0 1038 -215 18 63 -20 716 792 90 381 0 -216 58 458 10 702 774 90 0 349 -217 416 417 -20 1057 1099 90 925 0 -218 205 230 -10 203 263 90 745 0 -219 65 453 30 423 490 90 0 170 -220 421 294 -20 883 953 90 738 0 -221 434 245 10 1377 1416 90 0 87 -222 2 116 20 526 586 90 0 662 -223 411 421 -10 862 917 90 837 0 -224 315 260 10 223 278 90 0 873 -225 136 288 -10 1023 1063 90 138 0 -226 173 490 -10 406 462 90 303 0 -227 90 232 -20 682 732 90 463 0 -228 402 265 20 306 365 90 0 107 -229 361 14 -20 686 738 90 42 0 -230 348 147 -10 845 914 90 343 0 -231 385 295 -20 0 1592 90 617 0 -232 394 23 20 1271 1326 90 0 272 -233 466 295 -10 0 1514 90 487 0 -234 71 103 -10 0 1503 90 74 0 -235 125 29 30 0 1481 90 0 596 -236 25 65 -20 1005 1057 90 777 0 -237 58 449 -30 993 1042 90 492 0 -238 246 398 40 148 199 90 0 626 -239 423 294 10 0 1556 90 0 637 -240 59 459 20 0 1451 90 0 176 -241 348 145 20 763 813 90 0 540 -242 477 97 10 421 495 90 0 419 -243 307 102 -10 0 1576 90 32 0 -244 169 31 -10 0 1501 90 484 0 -245 381 495 -30 705 769 90 973 0 -246 95 234 10 315 362 90 0 383 -247 22 33 10 735 803 90 0 452 -248 435 268 -10 1100 1154 90 117 0 -249 135 293 30 0 1612 90 0 46 -250 439 266 -20 0 1545 90 112 0 -251 269 402 20 587 648 90 0 252 -252 267 400 -20 779 836 90 251 0 -253 473 196 -30 564 642 90 721 0 -254 445 237 -20 349 402 90 508 0 -255 461 284 10 275 340 90 0 423 -256 167 339 10 648 710 90 0 857 -257 26 43 -30 365 427 90 536 0 -258 101 386 -20 349 415 90 823 0 -259 342 54 -30 553 616 90 386 0 -260 243 399 -10 782 837 90 772 0 -261 288 44 -40 0 1525 90 859 0 -262 274 48 10 368 405 90 0 63 -263 360 184 -20 846 906 90 670 0 -264 23 67 -10 0 1443 90 532 0 -265 6 296 10 863 926 0 0 1012 -266 249 258 -20 910 974 90 311 0 -267 421 415 30 297 364 0 0 1017 -268 319 468 10 289 353 90 0 210 -269 50 438 20 0 1460 90 0 713 -270 440 61 -10 971 1032 90 825 0 -271 17 65 20 625 699 90 0 630 -272 323 118 -20 0 1584 90 232 0 -273 402 281 20 886 924 90 0 717 -274 71 153 20 746 816 0 0 1025 -275 52 432 -10 789 843 90 681 0 -276 378 199 -20 761 804 90 31 0 -277 238 204 -10 566 634 90 36 0 -278 208 184 20 146 192 90 0 90 -279 376 195 -30 576 616 90 726 0 -280 473 475 -10 0 1418 90 482 0 -281 215 395 20 865 928 0 0 1027 -282 123 222 30 376 430 90 0 186 -283 436 241 -10 1271 1333 90 757 0 -284 70 100 -10 1119 1191 90 114 0 -285 73 328 20 193 270 90 0 34 -286 241 205 -10 0 1689 90 949 0 -287 250 405 20 303 370 90 0 506 -288 483 14 -20 0 1403 90 727 0 -289 466 287 10 467 525 90 0 85 -290 467 114 10 1159 1223 90 0 193 -291 120 159 -10 306 377 90 148 0 -292 408 84 10 745 814 90 0 514 -293 413 217 20 230 289 90 0 469 -294 338 142 40 204 256 90 0 930 -295 483 457 20 735 811 90 0 104 -296 479 169 -10 774 834 90 377 0 -297 95 224 -10 0 1577 90 819 0 -298 122 216 10 461 537 90 0 65 -299 477 179 -10 0 1497 90 546 0 -300 406 99 20 367 438 90 0 917 -301 44 47 20 0 1445 90 0 878 -302 487 450 10 929 993 90 0 132 -303 172 488 10 310 374 90 0 226 -304 460 374 20 753 831 90 0 56 -305 279 138 40 281 320 90 0 136 -306 338 147 10 135 193 90 0 766 -307 395 295 -10 677 736 90 1 0 -308 195 185 20 335 399 90 0 395 -309 463 194 20 220 279 90 0 11 -310 30 72 -20 0 1452 90 642 0 -311 244 254 20 723 787 90 0 266 -312 317 261 20 398 473 90 0 676 -313 67 108 10 297 346 90 0 795 -314 442 310 -30 643 698 90 807 0 -315 63 336 -10 822 861 90 380 0 -316 109 107 -20 357 416 90 705 0 -317 100 387 -20 0 1531 90 378 0 -318 494 94 10 634 692 90 0 961 -319 343 49 10 650 710 90 0 803 -320 40 52 40 546 591 90 0 390 -321 319 124 20 400 465 90 0 983 -322 94 97 20 285 334 0 0 1043 -323 476 94 20 334 396 90 0 179 -324 283 47 10 373 420 90 0 838 -325 398 325 -20 774 843 90 748 0 -326 460 13 -10 0 1418 90 54 0 -327 305 107 -20 0 1581 90 659 0 -328 188 12 30 245 309 90 0 846 -329 136 290 20 272 332 90 0 20 -330 439 268 10 0 1545 90 0 768 -331 112 467 10 505 557 0 0 1011 -332 181 469 -10 468 536 90 425 0 -333 358 18 10 0 1479 90 0 639 -334 459 10 10 0 1416 90 0 384 -335 199 268 -10 284 368 90 933 0 -336 436 237 20 186 264 90 0 157 -337 318 280 20 319 384 90 0 588 -338 64 99 10 853 904 90 0 895 -339 394 333 -20 0 1568 90 783 0 -340 366 93 20 936 989 0 0 1023 -341 95 391 -20 909 973 90 948 0 -342 391 425 20 842 909 90 0 558 -343 344 146 10 496 529 90 0 230 -344 198 12 10 582 631 90 0 426 -345 186 472 20 564 633 90 0 134 -346 390 408 -10 0 1523 90 605 0 -347 19 43 -10 1203 1259 90 113 0 -348 307 108 10 777 847 90 0 900 -349 59 457 -10 810 848 90 216 0 -350 49 451 20 340 409 90 0 752 -351 125 39 20 245 318 90 0 475 -352 61 147 -10 0 1519 90 33 0 -353 317 123 20 497 554 90 0 548 -354 392 426 -20 666 722 90 788 0 -355 237 213 -40 846 917 90 715 0 -356 71 333 10 0 1537 90 0 411 -357 304 97 -30 407 466 90 520 0 -358 196 462 10 955 1003 90 0 739 -359 224 191 20 312 359 90 0 824 -360 37 51 -30 0 1443 90 564 0 -361 491 25 -20 0 1405 90 718 0 -362 270 401 20 217 268 90 0 969 -363 474 461 30 307 379 90 0 45 -364 66 448 10 270 345 90 0 178 -365 337 241 -10 0 1647 90 542 0 -366 269 46 -20 733 794 90 632 0 -367 22 41 -10 1110 1164 90 635 0 -368 198 271 -10 0 1678 90 689 0 -369 287 43 10 555 609 0 0 1024 -370 446 63 -20 697 750 90 660 0 -371 200 229 30 301 355 90 0 143 -372 48 72 -20 711 768 90 627 0 -373 465 142 10 0 1494 90 0 692 -374 123 155 -20 1143 1209 90 418 0 -375 16 497 20 1038 1123 90 0 436 -376 220 319 -20 971 1037 90 855 0 -377 484 171 10 680 736 90 0 296 -378 55 431 20 694 752 90 0 317 -379 428 24 10 0 1447 90 0 525 -380 80 342 10 193 275 90 0 315 -381 16 68 20 521 617 90 0 215 -382 124 56 -10 0 1503 90 675 0 -383 95 218 -10 873 927 90 246 0 -384 481 26 -10 0 1413 90 334 0 -385 145 434 20 462 514 90 0 142 -386 335 57 30 210 261 90 0 259 -387 26 490 -10 1345 1394 90 16 0 -388 324 127 30 143 200 90 0 998 -389 109 114 10 829 871 90 0 603 -390 72 148 -40 0 1529 90 320 0 -391 220 392 -20 970 1015 90 771 0 -392 442 243 -10 996 1052 90 890 0 -393 69 336 -20 440 507 90 813 0 -394 131 226 20 121 183 90 0 417 -395 150 204 -20 639 694 90 308 0 -396 423 217 20 785 849 90 0 741 -397 419 459 -10 785 838 90 512 0 -398 285 163 -30 714 780 90 477 0 -399 203 7 -10 1033 1108 90 501 0 -400 54 445 -20 534 593 90 570 0 -401 109 463 30 0 1479 90 0 612 -402 355 180 30 279 345 90 0 207 -403 13 455 10 381 430 90 0 887 -404 165 337 -20 0 1613 90 96 0 -405 314 124 -10 0 1593 90 874 0 -406 9 124 20 271 336 90 0 927 -407 3 292 20 404 457 90 0 720 -408 16 462 -20 935 986 90 690 0 -409 189 464 -20 856 906 90 535 0 -410 288 154 -20 442 494 90 774 0 -411 90 296 -10 0 1568 90 356 0 -412 138 438 20 832 893 90 0 106 -413 13 459 -20 646 718 90 711 0 -414 461 8 -20 0 1413 90 802 0 -415 96 97 20 217 280 90 0 709 -416 68 99 10 1040 1085 90 0 593 -417 146 205 -20 0 1621 90 394 0 -418 117 152 20 0 1569 90 0 374 -419 481 96 -10 526 577 90 242 0 -420 338 260 20 0 1646 0 0 1040 -421 285 44 -20 0 1526 90 212 0 -422 111 464 10 775 837 90 0 936 -423 468 291 -10 748 798 90 255 0 -424 148 206 -20 458 506 90 511 0 -425 184 464 10 285 344 90 0 332 -426 197 11 -10 0 1490 90 344 0 -427 396 410 10 829 880 0 0 1022 -428 133 53 20 668 720 0 0 1014 -429 132 30 -30 875 926 90 682 0 -430 464 13 20 853 906 90 0 932 -431 100 394 10 0 1527 90 0 606 -432 483 22 10 476 543 90 0 858 -433 93 235 10 951 1012 90 0 723 -434 174 26 -20 1037 1105 90 935 0 -435 436 264 -10 0 1548 90 152 0 -436 24 492 -20 1252 1302 90 375 0 -437 406 94 10 375 430 0 0 1020 -438 234 246 10 0 1718 0 0 1036 -439 315 287 -20 693 754 90 947 0 -440 408 453 10 0 1477 90 0 123 -441 128 225 -20 0 1610 90 604 0 -442 226 191 20 397 459 90 0 804 -443 391 407 -30 0 1523 90 7 0 -444 198 264 -20 770 821 90 52 0 -445 179 7 -20 864 930 90 200 0 -446 425 215 10 699 748 90 0 15 -447 483 27 -20 1322 1384 90 853 0 -448 22 40 30 1012 1080 0 0 1002 -449 479 176 -30 0 1494 90 995 0 -450 476 102 20 797 866 90 0 646 -451 386 405 20 206 266 90 0 578 -452 22 38 -10 929 980 90 247 0 -453 440 241 -20 0 1544 90 651 0 -454 182 14 -10 1062 1116 90 634 0 -455 266 405 20 680 745 90 0 86 -456 357 181 20 367 441 90 0 565 -457 395 332 10 593 648 90 0 735 -458 423 290 10 0 1557 90 0 591 -459 104 28 20 0 1469 90 0 872 -460 131 56 10 0 1507 90 0 907 -461 111 110 -20 550 590 90 122 0 -462 97 93 -10 0 1515 90 749 0 -463 90 274 20 411 458 90 0 227 -464 214 394 -10 0 1586 90 851 0 -465 6 114 -30 0 1455 90 820 0 -466 375 191 -20 473 531 90 963 0 -467 356 21 -20 414 452 90 76 0 -468 466 165 -20 747 805 90 908 0 -469 415 223 -20 1257 1302 90 293 0 -470 397 20 20 433 477 90 0 177 -471 241 403 -30 686 744 90 597 0 -472 69 334 -20 0 1535 90 474 0 -473 152 210 20 105 163 90 0 778 -474 67 335 20 629 684 90 0 472 -475 126 30 -20 495 558 90 351 0 -476 390 423 10 290 336 90 0 528 -477 285 162 30 625 688 90 0 398 -478 285 158 30 340 405 90 0 5 -479 406 96 20 280 342 90 0 746 -480 459 374 -20 848 917 90 580 0 -481 67 109 20 388 438 90 0 643 -482 468 475 10 313 373 90 0 280 -483 438 31 10 348 413 90 0 550 -484 168 24 10 770 816 90 0 244 -485 267 394 -10 962 1027 90 914 0 -486 406 450 20 405 464 90 0 939 -487 460 288 10 213 265 90 0 233 -488 224 203 -20 0 1681 90 544 0 -489 21 487 10 582 629 90 0 701 -490 21 488 -10 0 1404 90 664 0 -491 87 217 -30 0 1568 90 600 0 -492 67 452 30 327 402 90 0 237 -493 119 223 -20 853 906 90 742 0 -494 398 428 -20 0 1503 90 962 0 -495 344 262 -10 0 1640 90 755 0 -496 390 301 10 0 1585 90 0 687 -497 167 27 -10 487 536 90 896 0 -498 236 247 -20 0 1720 90 728 0 -499 313 119 30 679 742 0 0 1039 -500 13 51 -10 1366 1425 90 83 0 -501 200 13 10 397 453 90 0 399 -502 0 120 30 431 492 90 0 509 -503 202 4 -20 950 1004 90 594 0 -504 343 144 -30 0 1593 90 754 0 -505 94 383 -30 636 687 90 958 0 -506 250 411 -20 492 554 90 287 0 -507 464 134 20 0 1491 0 0 1010 -508 443 237 20 248 318 90 0 254 -509 4 114 -30 712 769 90 502 0 -510 169 336 -20 838 892 90 125 0 -511 200 178 20 240 298 90 0 424 -512 412 453 10 0 1475 90 0 397 -513 121 151 -20 0 1572 90 562 0 -514 403 93 -10 1131 1181 90 292 0 -515 399 301 -30 584 634 90 166 0 -516 97 387 -30 823 869 90 158 0 -517 176 8 10 0 1481 90 0 964 -518 62 326 -20 0 1532 90 17 0 -519 151 207 10 0 1627 0 0 1018 -520 299 98 30 320 364 90 0 357 -521 334 240 -30 0 1650 90 892 0 -522 92 270 -30 954 1029 90 736 0 -523 444 269 -30 0 1540 90 599 0 -524 132 223 -30 0 1613 90 781 0 -525 428 25 -10 1175 1251 90 379 0 -526 413 421 -10 768 828 90 785 0 -527 382 498 10 619 669 90 0 747 -528 391 429 -10 0 1507 90 476 0 -529 398 97 -20 264 344 90 780 0 -530 192 265 -10 678 721 90 918 0 -531 438 26 -20 0 1442 90 889 0 -532 44 79 10 267 333 90 0 264 -533 137 290 10 176 245 90 0 905 -534 446 319 -30 364 416 90 940 0 -535 175 487 20 248 308 90 0 409 -536 26 45 30 0 1431 90 0 257 -537 147 435 -20 553 607 90 130 0 -538 111 459 -10 0 1483 90 185 0 -539 472 132 -10 767 826 90 144 0 -540 349 158 -20 1050 1093 90 241 0 -541 86 268 -10 689 735 90 818 0 -542 415 216 10 319 384 90 0 365 -543 121 218 -20 191 257 90 902 0 -544 210 185 20 0 1658 90 0 488 -545 98 215 20 218 278 90 0 8 -546 484 174 10 0 1488 90 0 299 -547 328 458 -30 0 1512 90 897 0 -548 313 126 -20 873 923 90 353 0 -549 390 415 20 0 1518 0 0 1008 -550 459 17 -10 1039 1094 90 483 0 -551 481 124 10 505 571 90 0 877 -552 386 414 -10 1109 1162 90 685 0 -553 116 466 -10 318 373 90 789 0 -554 468 295 10 934 987 90 0 650 -555 391 426 -10 0 1509 90 849 0 -556 408 279 -20 682 747 90 10 0 -557 15 68 -10 448 508 90 834 0 -558 392 424 -20 926 1007 90 342 0 -559 88 95 -30 658 712 90 209 0 -560 116 151 20 774 836 0 0 1030 -561 240 250 -10 0 1724 90 161 0 -562 123 159 20 156 216 90 0 513 -563 89 290 -30 225 300 90 680 0 -564 39 50 30 440 511 90 0 360 -565 359 179 -20 465 529 90 456 0 -566 338 257 -20 0 1646 90 951 0 -567 92 236 -10 1041 1104 90 174 0 -568 413 417 -10 1135 1207 90 24 0 -569 91 101 -20 0 1517 90 805 0 -570 55 449 20 0 1456 90 0 400 -571 57 425 20 260 317 90 0 91 -572 465 287 -20 556 617 90 899 0 -573 320 280 10 221 298 90 0 613 -574 322 468 20 575 625 0 0 1044 -575 483 458 -20 656 708 90 68 0 -576 312 267 -20 862 941 90 702 0 -577 139 291 10 118 187 90 0 945 -578 388 408 -20 361 425 90 451 0 -579 110 459 -10 0 1483 90 882 0 -580 459 372 20 0 1492 90 0 480 -581 204 269 30 49 98 90 0 140 -582 407 98 -10 0 1516 90 35 0 -583 335 256 -30 890 962 90 776 0 -584 471 484 10 0 1413 90 0 60 -585 339 244 30 251 299 90 0 796 -586 89 272 -20 498 555 90 999 0 -587 488 96 10 909 973 90 0 753 -588 316 286 -20 601 662 90 337 0 -589 235 50 -40 813 896 90 64 0 -590 316 258 20 0 1668 0 0 1007 -591 425 288 -10 0 1555 90 458 0 -592 213 397 -20 680 744 90 761 0 -593 113 156 -10 0 1568 90 416 0 -594 199 9 20 853 911 90 0 503 -595 463 167 -10 657 709 90 779 0 -596 129 27 -30 680 745 90 235 0 -597 248 404 30 214 274 90 0 471 -598 405 276 -10 771 848 90 649 0 -599 400 288 30 154 232 90 0 523 -600 61 156 30 462 532 90 0 491 -601 393 20 -10 1190 1222 90 762 0 -602 484 177 20 390 463 90 0 759 -603 108 116 -10 911 973 90 389 0 -604 112 217 20 383 443 90 0 441 -605 389 404 10 267 331 90 0 346 -606 102 391 -10 1098 1161 90 431 0 -607 434 26 10 0 1445 90 0 769 -608 488 26 -10 0 1408 90 839 0 -609 477 120 -10 968 1026 90 885 0 -610 126 220 20 0 1607 90 0 23 -611 439 310 10 198 256 90 0 883 -612 212 319 -30 0 1656 90 401 0 -613 320 283 -10 421 471 90 573 0 -614 17 459 10 1200 1275 90 0 845 -615 236 213 20 0 1695 90 0 975 -616 68 108 10 230 324 90 0 876 -617 390 294 20 853 931 90 0 231 -618 275 42 -10 537 608 90 633 0 -619 423 214 -10 0 1558 90 952 0 -620 460 367 -20 392 450 90 960 0 -621 272 402 10 317 353 90 0 213 -622 478 102 -30 704 775 90 164 0 -623 400 260 40 150 212 90 0 734 -624 181 6 20 678 753 0 0 1045 -625 470 475 30 381 429 90 0 993 -626 245 408 -40 585 652 90 238 0 -627 93 96 20 374 427 90 0 372 -628 218 318 20 884 939 0 0 1037 -629 441 265 40 344 400 0 0 1032 -630 21 64 -20 818 876 90 271 0 -631 356 23 20 309 373 90 0 693 -632 267 44 20 649 693 90 0 366 -633 277 50 10 0 1533 90 0 618 -634 182 4 10 586 659 90 0 454 -635 26 36 10 646 702 90 0 367 -636 384 491 20 897 948 90 0 147 -637 418 290 -10 1172 1221 90 239 0 -638 321 277 10 75 140 90 0 70 -639 358 16 -10 596 641 90 333 0 -640 389 334 -20 0 1572 90 854 0 -641 48 78 -10 0 1469 90 763 0 -642 24 68 20 1282 1337 90 0 310 -643 206 225 -20 0 1684 90 481 0 -644 290 141 -20 645 709 90 884 0 -645 439 15 -40 650 706 90 139 0 -646 359 182 -20 0 1606 90 450 0 -647 413 287 -10 1348 1417 90 141 0 -648 230 49 20 201 253 90 0 767 -649 407 280 10 595 653 90 0 598 -650 459 295 -10 1209 1273 90 554 0 -651 468 199 20 669 730 90 0 453 -652 101 384 30 200 262 90 0 9 -653 170 26 10 855 918 90 0 984 -654 197 270 30 474 548 90 0 59 -655 415 289 20 169 228 90 0 55 -656 203 390 -30 307 361 90 658 0 -657 443 272 10 821 869 90 0 694 -658 210 391 30 202 272 90 0 656 -659 363 22 20 964 1025 90 0 327 -660 352 176 20 126 175 90 0 370 -661 212 223 -10 758 832 90 844 0 -662 8 120 -20 1169 1232 90 222 0 -663 244 250 -10 0 1728 90 938 0 -664 18 484 10 397 444 90 0 490 -665 379 82 -30 827 884 90 931 0 -666 84 346 -30 1095 1157 90 81 0 -667 233 207 10 105 167 90 0 712 -668 344 62 -10 1208 1274 90 128 0 -669 20 489 10 856 901 90 0 731 -670 361 181 20 662 723 90 0 263 -671 174 494 -10 0 1479 90 974 0 -672 49 76 20 0 1469 0 0 1004 -673 390 325 -20 883 929 90 861 0 -674 7 118 20 0 1458 90 0 871 -675 107 26 10 0 1469 90 0 382 -676 312 270 -20 0 1669 90 312 0 -677 399 102 20 0 1524 90 0 719 -678 109 108 10 0 1534 0 0 1009 -679 115 218 10 298 341 90 0 703 -680 88 287 30 0 1568 90 0 563 -681 54 424 10 320 387 90 0 275 -682 125 32 30 407 462 90 0 429 -683 199 12 -10 475 557 90 879 0 -684 457 374 -10 0 1493 90 841 0 -685 391 413 10 1013 1069 90 0 552 -686 304 102 30 505 559 90 0 1000 -687 391 293 -10 768 834 90 496 0 -688 66 336 10 719 778 0 0 1031 -689 132 291 10 0 1610 90 0 368 -690 18 462 20 0 1420 90 0 408 -691 347 62 -20 1121 1176 90 792 0 -692 466 142 -10 0 1493 90 373 0 -693 389 17 -20 993 1049 90 631 0 -694 342 254 -10 0 1642 90 657 0 -695 92 223 -10 0 1574 90 828 0 -696 404 83 -20 831 916 90 37 0 -697 290 46 20 832 896 90 0 814 -698 95 92 -10 0 1513 90 127 0 -699 200 265 10 853 922 90 0 22 -700 435 16 -20 829 895 90 14 0 -701 25 499 -10 1154 1206 90 489 0 -702 319 260 20 489 566 90 0 576 -703 116 225 -10 752 820 90 679 0 -704 402 284 -10 313 367 90 924 0 -705 108 105 20 258 329 90 0 316 -706 386 13 -10 785 878 90 203 0 -707 472 129 -20 312 383 90 982 0 -708 132 57 20 396 443 90 0 852 -709 43 71 -20 525 581 90 415 0 -710 493 91 30 542 599 0 0 1005 -711 12 451 20 0 1423 90 0 413 -712 201 188 -10 526 581 90 667 0 -713 60 428 -20 1059 1137 90 269 0 -714 243 248 -20 243 314 90 183 0 -715 230 197 40 588 645 90 0 355 -716 389 11 20 707 769 90 0 875 -717 401 281 -20 968 1024 90 273 0 -718 459 14 20 372 439 90 0 361 -719 411 95 -20 475 521 90 677 0 -720 0 297 -20 679 737 90 407 0 -721 476 196 30 476 544 90 0 253 -722 458 16 20 313 369 90 0 835 -723 92 230 -10 0 1575 90 433 0 -724 432 24 -20 1000 1056 90 135 0 -725 215 317 10 140 194 90 0 904 -726 371 192 30 190 259 90 0 279 -727 481 20 20 572 631 90 0 288 -728 152 207 20 824 877 90 0 498 -729 14 459 20 559 622 90 0 866 -730 361 17 20 777 832 90 0 88 -731 8 497 -10 959 1006 90 669 0 -732 206 186 -20 891 955 90 808 0 -733 421 218 -30 880 939 90 997 0 -734 402 264 -40 216 273 90 623 0 -735 388 325 -10 971 1026 90 457 0 -736 35 304 30 280 345 90 0 522 -737 321 263 20 680 743 0 0 1046 -738 444 313 20 462 511 90 0 220 -739 188 462 -10 0 1514 90 358 0 -740 400 103 10 546 636 90 0 921 -741 418 221 -20 1150 1223 90 396 0 -742 112 219 20 469 541 90 0 493 -743 408 452 -20 490 564 90 115 0 -744 30 301 10 660 726 90 0 911 -745 205 228 10 110 173 90 0 218 -746 407 88 -20 1035 1083 90 479 0 -747 380 489 -10 1084 1143 90 527 0 -748 395 331 20 690 734 90 0 325 -749 133 26 10 0 1482 90 0 462 -750 21 68 -10 1189 1243 90 95 0 -751 313 282 -30 790 847 90 72 0 -752 53 440 -20 633 684 90 350 0 -753 458 130 -10 0 1494 90 587 0 -754 437 15 30 0 1434 90 0 504 -755 400 286 10 217 276 90 0 495 -756 346 144 10 0 1591 90 0 169 -757 440 244 10 809 874 90 0 283 -758 280 162 -20 158 210 90 856 0 -759 488 173 -20 0 1484 90 602 0 -760 326 118 10 213 272 90 0 145 -761 207 400 20 489 562 90 0 592 -762 391 18 10 1085 1141 90 0 601 -763 37 55 10 730 780 90 0 641 -764 204 15 20 0 1495 90 0 82 -765 173 28 -20 1134 1191 90 48 0 -766 343 148 -10 399 441 90 306 0 -767 231 43 -20 447 513 90 648 0 -768 445 273 -10 725 781 90 330 0 -769 432 27 -10 810 878 90 607 0 -770 439 305 30 0 1538 0 0 1034 -771 208 396 20 401 462 90 0 391 -772 249 407 10 403 455 90 0 260 -773 107 112 -10 728 787 90 47 0 -774 279 159 20 252 301 90 0 410 -775 376 494 -20 334 396 90 28 0 -776 403 262 30 493 547 90 0 583 -777 41 47 20 359 406 90 0 236 -778 96 213 -20 0 1576 90 473 0 -779 461 167 10 470 531 90 0 595 -780 391 99 20 206 268 90 0 529 -781 116 221 30 571 627 90 0 524 -782 165 343 -40 556 613 90 981 0 -783 388 334 20 227 280 90 0 339 -784 130 57 -20 289 365 90 979 0 -785 422 409 10 234 290 90 0 526 -786 66 156 -20 653 718 90 109 0 -787 485 86 20 349 413 90 0 806 -788 389 428 20 380 435 90 0 354 -789 117 467 10 254 307 90 0 553 -790 475 477 -20 1028 1091 90 990 0 -791 429 27 -20 1272 1339 90 195 0 -792 339 60 20 274 338 90 0 691 -793 381 494 -10 801 855 90 188 0 -794 218 321 -10 697 759 90 13 0 -795 64 101 -10 667 724 90 313 0 -796 343 254 -30 334 394 90 585 0 -797 478 464 -10 0 1422 90 43 0 -798 423 286 -20 430 477 90 976 0 -799 198 9 20 763 819 90 0 988 -800 225 196 -20 128 174 90 923 0 -801 374 190 20 292 344 90 0 987 -802 462 14 20 0 1417 90 0 414 -803 347 54 -10 836 904 90 319 0 -804 231 195 -20 497 552 90 442 0 -805 72 96 20 1220 1278 90 0 569 -806 489 87 -20 451 499 90 787 0 -807 443 313 30 554 602 90 0 314 -808 233 204 20 198 260 90 0 732 -809 477 483 20 745 817 90 0 864 -810 459 368 10 299 361 90 0 959 -811 95 277 20 1057 1121 0 0 1028 -812 16 460 -20 1112 1180 90 970 0 -813 100 266 20 207 275 90 0 393 -814 288 53 -20 925 997 90 697 0 -815 211 386 20 141 212 90 0 168 -816 144 439 -30 736 797 90 149 0 -817 224 314 -10 0 1665 90 78 0 -818 79 291 10 519 568 90 0 541 -819 95 235 10 155 227 90 0 297 -820 7 123 30 329 399 90 0 465 -821 91 217 -30 692 738 90 66 0 -822 105 27 -30 0 1469 90 842 0 -823 101 385 20 262 320 90 0 258 -824 238 210 -20 757 821 90 359 0 -825 439 67 10 322 386 90 0 270 -826 435 267 -20 1188 1247 90 863 0 -827 443 64 -10 779 854 90 154 0 -828 92 234 10 0 1576 90 0 695 -829 450 265 10 0 1534 0 0 1019 -830 102 27 20 796 852 90 0 903 -831 492 94 -10 724 787 90 957 0 -832 440 63 -20 886 934 90 868 0 -833 453 367 20 0 1500 0 0 1015 -834 15 69 10 0 1438 90 0 557 -835 489 17 -20 764 826 90 722 0 -836 335 255 20 85 124 90 0 69 -837 419 418 10 394 454 90 0 223 -838 292 41 -10 733 804 90 324 0 -839 489 27 10 0 1408 90 0 608 -840 96 270 20 308 367 90 0 153 -841 461 369 10 579 633 90 0 684 -842 105 22 30 339 385 90 0 822 -843 479 121 10 0 1472 90 0 942 -844 207 223 10 585 634 90 0 661 -845 17 458 -10 1297 1360 90 614 0 -846 186 7 -30 500 555 90 328 0 -847 465 168 10 837 902 90 0 73 -848 416 288 20 1251 1328 90 0 99 -849 388 418 10 217 283 90 0 555 -850 92 233 10 768 830 90 0 943 -851 179 492 10 678 752 90 0 464 -852 132 55 -20 573 632 90 708 0 -853 485 24 20 0 1408 90 0 447 -854 388 331 20 160 230 90 0 640 -855 217 323 20 424 473 90 0 376 -856 281 164 20 91 140 90 0 758 -857 169 340 -10 737 806 90 256 0 -858 491 20 -10 0 1401 90 432 0 -859 279 42 40 0 1524 90 0 261 -860 439 243 -10 0 1545 90 167 0 -861 391 334 20 402 470 90 0 673 -862 96 244 -20 1332 1380 90 71 0 -863 441 273 20 903 972 90 0 826 -864 477 478 -20 942 993 90 809 0 -865 56 434 20 0 1467 90 0 75 -866 12 463 -20 0 1415 90 729 0 -867 458 164 20 374 439 90 0 916 -868 446 65 20 516 566 90 0 832 -869 71 156 -30 0 1532 90 977 0 -870 65 153 30 570 614 90 0 129 -871 8 118 -20 1079 1138 90 674 0 -872 102 29 -20 0 1469 90 459 0 -873 315 265 -10 774 841 90 224 0 -874 343 62 10 1300 1364 90 0 405 -875 384 16 -20 892 959 90 716 0 -876 67 105 -10 579 622 90 616 0 -877 478 118 -10 1058 1121 90 551 0 -878 73 101 -20 1313 1375 90 301 0 -879 200 14 10 311 356 90 0 683 -880 114 225 -10 0 1596 90 906 0 -881 460 293 -10 1121 1176 90 950 0 -882 51 447 10 438 501 90 0 579 -883 418 295 -10 1063 1140 90 611 0 -884 282 139 20 188 227 90 0 644 -885 477 122 10 886 924 90 0 609 -886 91 266 -20 0 1575 90 986 0 -887 16 463 -10 836 904 90 403 0 -888 228 199 -10 673 746 90 211 0 -889 435 20 20 0 1439 90 0 531 -890 467 195 10 285 344 90 0 392 -891 469 132 -10 856 923 90 133 0 -892 465 136 30 964 1007 90 0 521 -893 246 255 10 818 877 0 0 1033 -894 49 75 -20 810 857 90 991 0 -895 66 98 -10 944 996 90 338 0 -896 166 32 10 296 352 90 0 497 -897 326 466 30 753 817 90 0 547 -898 202 186 -20 616 676 90 191 0 -899 467 285 20 0 1515 90 0 572 -900 290 136 -10 0 1614 90 348 0 -901 341 58 10 0 1522 90 0 165 -902 121 219 20 132 203 90 0 543 -903 107 35 -20 986 1041 90 830 0 -904 216 319 -10 321 387 90 725 0 -905 134 288 -10 923 979 90 533 0 -906 89 270 10 590 647 90 0 880 -907 136 52 -10 759 817 90 460 0 -908 462 167 20 0 1507 90 0 468 -909 340 54 -20 0 1519 90 110 0 -910 80 286 -30 0 1561 90 934 0 -911 38 301 -10 0 1516 90 744 0 -912 25 307 -30 0 1502 90 53 0 -913 470 139 10 668 731 0 0 1013 -914 270 400 10 151 213 90 0 485 -915 204 187 -20 803 857 90 926 0 -916 460 171 -20 937 994 90 867 0 -917 399 106 -20 925 989 90 300 0 -918 197 267 10 582 626 90 0 530 -919 77 350 -10 997 1058 90 97 0 -920 91 231 30 579 652 90 0 150 -921 398 103 -10 739 807 90 740 0 -922 35 303 -10 0 1513 90 61 0 -923 231 204 20 0 1685 90 0 800 -924 311 266 10 63 126 90 0 704 -925 416 420 20 0 1497 90 0 217 -926 231 203 20 291 352 90 0 915 -927 4 116 -20 618 678 90 406 0 -928 417 217 30 0 1564 0 0 1035 -929 268 52 -20 1003 1079 90 38 0 -930 345 144 -40 568 640 90 294 0 -931 368 85 30 0 1532 90 0 665 -932 441 65 -20 0 1469 90 430 0 -933 201 270 10 108 177 90 0 335 -934 0 293 30 591 637 90 0 910 -935 167 24 20 668 736 90 0 434 -936 186 464 -10 0 1511 90 422 0 -937 7 292 10 246 306 90 0 62 -938 80 290 10 420 484 90 0 663 -939 405 455 -20 883 948 90 486 0 -940 439 312 30 257 324 90 0 534 -941 300 108 10 150 211 0 0 1026 -942 478 121 -10 788 840 90 843 0 -943 92 232 -10 0 1575 90 850 0 -944 111 463 -10 0 1480 90 103 0 -945 132 294 -10 454 521 90 577 0 -946 134 285 20 1104 1168 0 0 1041 -947 316 284 20 510 570 90 0 439 -948 56 428 20 415 482 90 0 341 -949 232 47 10 262 327 90 0 286 -950 466 291 10 656 705 90 0 881 -951 341 257 20 0 1643 90 0 566 -952 420 213 10 509 568 90 0 619 -953 116 152 -20 678 750 90 57 0 -954 163 337 10 277 334 90 0 39 -955 440 7 -20 0 1426 90 184 0 -956 208 222 30 667 734 0 0 1042 -957 485 95 10 281 351 90 0 831 -958 97 385 30 537 598 90 0 505 -959 462 367 -10 481 545 90 810 0 -960 455 365 20 235 306 90 0 620 -961 492 95 -10 0 1447 90 318 0 -962 405 450 20 311 376 90 0 494 -963 371 193 20 133 185 90 0 466 -964 234 202 -10 0 1684 90 517 0 -965 404 103 -30 0 1522 90 146 0 -966 24 41 -20 557 601 90 121 0 -967 67 334 20 532 600 90 0 27 -968 207 227 -30 0 1686 90 77 0 -969 277 403 -20 395 464 90 362 0 -970 15 457 20 462 534 90 0 812 -971 217 319 -20 0 1658 90 160 0 -972 111 467 20 597 647 90 0 978 -973 378 493 30 426 487 90 0 245 -974 112 465 10 685 743 90 0 671 -975 173 25 -20 952 1007 90 615 0 -976 421 292 20 245 287 90 0 798 -977 74 146 30 0 1530 90 0 869 -978 178 491 -20 0 1483 90 972 0 -979 204 185 20 0 1655 90 0 784 -980 319 470 -10 0 1504 90 6 0 -981 163 331 40 118 179 90 0 782 -982 470 125 20 253 316 90 0 707 -983 315 121 -20 590 647 90 321 0 -984 166 34 -10 0 1503 90 653 0 -985 284 140 40 115 172 90 0 30 -986 85 288 20 329 386 90 0 886 -987 376 190 -20 382 439 90 801 0 -988 238 203 -20 0 1686 90 799 0 -989 399 104 10 834 896 90 0 171 -990 472 481 20 477 527 90 0 790 -991 46 74 20 612 682 90 0 894 -992 401 255 30 685 738 90 0 21 -993 475 480 -30 837 911 90 625 0 -994 485 27 -20 1231 1291 90 100 0 -995 476 174 30 874 924 90 0 449 -996 330 242 -20 627 671 90 120 0 -997 332 249 30 82 144 90 0 733 -998 375 80 -30 550 598 90 388 0 -999 94 235 20 227 266 90 0 586 -1000 287 144 -30 0 1622 90 686 0 -1001 287 143 -10 748 793 90 25 0 -1002 22 40 -30 1012 1080 90 448 0 -1003 485 454 -10 0 1423 90 180 0 -1004 49 76 -20 0 1469 90 672 0 -1005 493 91 -30 542 599 90 710 0 -1006 8 116 -20 894 957 90 196 0 -1007 316 258 -20 0 1668 90 590 0 -1008 390 415 -20 0 1518 90 549 0 -1009 109 108 -10 0 1534 90 678 0 -1010 464 134 -20 0 1491 90 507 0 -1011 112 467 -10 505 557 90 331 0 -1012 6 296 -10 863 926 90 265 0 -1013 470 139 -10 668 731 90 913 0 -1014 133 53 -20 668 720 90 428 0 -1015 453 367 -20 0 1500 90 833 0 -1016 441 244 -10 909 955 90 101 0 -1017 421 415 -30 297 364 90 267 0 -1018 151 207 -10 0 1627 90 519 0 -1019 450 265 -10 0 1534 90 829 0 -1020 406 94 -10 375 430 90 437 0 -1021 424 286 -10 0 1557 90 51 0 -1022 396 410 -10 829 880 90 427 0 -1023 366 93 -20 936 989 90 340 0 -1024 287 43 -10 555 609 90 369 0 -1025 71 153 -20 746 816 90 274 0 -1026 300 108 -10 150 211 90 941 0 -1027 215 395 -20 865 928 90 281 0 -1028 95 277 -20 1057 1121 90 811 0 -1029 75 347 -10 810 872 90 105 0 -1030 116 151 -20 774 836 90 560 0 -1031 66 336 -10 719 778 90 688 0 -1032 441 265 -40 344 400 90 629 0 -1033 246 255 -10 818 877 90 893 0 -1034 439 305 -30 0 1538 90 770 0 -1035 417 217 -30 0 1564 90 928 0 -1036 234 246 -10 0 1718 90 438 0 -1037 218 318 -20 884 939 90 628 0 -1038 232 42 -10 545 599 90 214 0 -1039 313 119 -30 679 742 90 499 0 -1040 338 260 -20 0 1646 90 420 0 -1041 134 285 -20 1104 1168 90 946 0 -1042 208 222 -30 667 734 90 956 0 -1043 94 97 -20 285 334 90 322 0 -1044 322 468 -20 575 625 90 574 0 -1045 181 6 -20 678 753 90 624 0 -1046 321 263 -20 680 743 90 737 0 diff --git a/jsprit-instances/instances/lilim/1000/LC1103.txt b/jsprit-instances/instances/lilim/1000/LC1103.txt deleted file mode 100644 index 31f653ba8..000000000 --- a/jsprit-instances/instances/lilim/1000/LC1103.txt +++ /dev/null @@ -1,1050 +0,0 @@ -250 200 1 -0 250 250 0 0 1824 0 0 0 -1 387 297 10 200 270 90 0 307 -2 5 297 -10 955 1017 90 181 0 -3 355 177 -20 0 1607 90 565 0 -4 78 346 30 355 403 90 0 518 -5 286 159 -30 530 597 90 478 0 -6 322 465 10 226 291 90 0 980 -7 393 408 -20 0 1521 90 861 0 -8 89 216 -10 0 1570 90 491 0 -9 76 345 30 0 1536 90 0 18 -10 410 285 20 499 556 90 0 554 -11 472 189 30 0 1504 90 0 913 -12 270 49 30 925 970 0 0 1017 -13 219 325 10 0 1653 90 0 794 -14 437 12 -20 557 613 90 645 0 -15 418 218 20 0 1563 0 0 1044 -16 20 488 -30 754 820 90 49 0 -17 77 347 20 436 505 90 0 411 -18 73 346 -30 0 1533 90 9 0 -19 480 455 -40 1123 1179 90 187 0 -20 129 292 10 552 610 90 0 933 -21 337 257 20 0 1647 90 0 495 -22 237 254 20 0 1721 0 0 1027 -23 131 220 -20 0 1612 90 119 0 -24 417 417 -10 954 1020 90 785 0 -25 287 143 -40 748 793 90 985 0 -26 379 80 20 0 1521 0 0 1021 -27 87 285 -10 709 764 90 818 0 -28 374 489 20 0 1465 90 0 747 -29 440 247 20 717 779 90 0 99 -30 281 137 10 0 1617 90 0 136 -31 379 196 -30 665 714 90 726 0 -32 297 102 10 214 281 90 0 983 -33 39 76 10 328 399 90 0 805 -34 35 306 20 0 1512 0 0 1010 -35 435 68 10 0 1475 90 0 868 -36 245 251 10 60 130 90 0 956 -37 409 88 -10 0 1508 90 437 0 -38 273 55 20 196 246 90 0 369 -39 163 340 30 468 513 90 0 612 -40 129 223 20 274 340 90 0 298 -41 371 200 -10 0 1604 90 144 0 -42 357 26 -20 0 1486 90 659 0 -43 470 473 10 1221 1270 90 0 797 -44 77 344 -20 254 319 90 666 0 -45 478 461 10 0 1424 90 0 68 -46 128 291 10 0 1606 0 0 1016 -47 111 113 -20 632 694 90 316 0 -48 164 21 20 578 639 90 0 244 -49 21 485 30 487 540 90 0 16 -50 108 26 -10 423 491 90 675 0 -51 424 286 -10 0 1557 90 572 0 -52 200 270 20 0 1681 90 0 183 -53 7 300 -10 1056 1104 90 720 0 -54 433 31 10 0 1449 90 0 791 -55 420 295 -20 0 1559 90 650 0 -56 451 367 -10 1134 1195 90 841 0 -57 118 157 -10 0 1573 90 131 0 -58 489 101 20 0 1453 90 0 753 -59 200 261 -20 945 1017 90 143 0 -60 476 483 10 0 1410 90 0 864 -61 30 302 -20 0 1508 90 285 0 -62 8 300 10 1131 1211 90 0 910 -63 275 45 20 444 515 90 0 859 -64 238 46 40 735 784 90 0 589 -65 152 206 10 910 973 90 0 417 -66 99 218 30 154 205 90 0 383 -67 393 410 -20 913 982 90 783 0 -68 480 460 -10 549 627 90 45 0 -69 337 256 20 154 201 90 0 556 -70 389 300 -30 0 1587 90 992 0 -71 90 237 -10 0 1574 90 819 0 -72 321 280 30 143 194 90 0 573 -73 417 218 -10 0 1564 90 595 0 -74 64 108 10 473 539 90 0 114 -75 57 432 -30 973 1033 90 158 0 -76 356 24 20 249 323 90 0 110 -77 143 207 -20 0 1619 90 728 0 -78 221 325 10 0 1654 90 0 376 -79 22 483 -10 0 1409 90 387 0 -80 24 65 -10 0 1442 90 557 0 -81 141 431 30 362 423 90 0 269 -82 202 9 -10 0 1489 90 879 0 -83 20 48 -20 1294 1358 90 630 0 -84 457 163 20 284 346 90 0 779 -85 470 290 10 0 1511 90 0 899 -86 268 400 -30 0 1583 90 213 0 -87 337 251 10 0 1647 90 0 583 -88 366 20 -10 874 927 90 229 0 -89 72 344 -10 0 1533 90 97 0 -90 149 203 -20 553 597 90 109 0 -91 55 428 -30 511 568 90 652 0 -92 189 7 30 0 1484 90 0 846 -93 397 18 -20 0 1460 90 470 0 -94 481 122 -20 607 653 90 982 0 -95 20 73 10 0 1444 90 0 834 -96 54 430 -20 610 652 90 948 0 -97 74 350 10 915 955 90 0 89 -98 202 8 -10 0 1488 90 503 0 -99 406 285 -20 0 1575 90 29 0 -100 460 2 20 655 720 90 0 531 -101 441 244 10 0 1543 90 0 392 -102 1 293 10 0 1482 0 0 1042 -103 115 465 -10 409 465 90 789 0 -104 422 420 20 0 1493 90 0 132 -105 75 347 10 0 1534 90 0 669 -106 141 428 20 0 1526 90 0 385 -107 404 264 -20 0 1580 90 228 0 -108 398 23 10 270 334 90 0 706 -109 148 211 20 167 233 90 0 90 -110 362 22 -20 0 1480 90 76 0 -111 479 127 20 412 478 90 0 692 -112 443 246 -20 536 593 90 336 0 -113 22 37 -20 0 1422 90 452 0 -114 65 100 -10 763 811 90 74 0 -115 404 447 20 250 280 90 0 549 -116 102 264 10 148 215 90 0 862 -117 444 271 -10 633 688 90 487 0 -118 325 466 -20 0 1506 90 574 0 -119 124 219 20 571 615 90 0 23 -120 335 243 20 0 1649 90 0 566 -121 26 42 -10 455 519 90 257 0 -122 113 106 20 0 1536 90 0 355 -123 399 450 20 0 1485 90 0 494 -124 146 439 -20 642 707 90 332 0 -125 162 336 -20 0 1611 90 258 0 -126 2 295 -10 774 828 90 937 0 -127 122 35 10 0 1484 0 0 1011 -128 346 60 -20 1027 1086 90 165 0 -129 93 213 -10 0 1573 90 695 0 -130 218 316 -10 0 1661 90 725 0 -131 116 156 10 495 557 90 0 57 -132 419 422 -20 0 1493 90 104 0 -133 467 141 -10 0 1492 90 707 0 -134 187 491 20 0 1485 0 0 1012 -135 433 25 20 0 1444 90 0 525 -136 286 137 -10 0 1616 90 30 0 -137 370 82 40 0 1528 90 0 724 -138 132 290 -10 0 1610 90 577 0 -139 435 11 -20 0 1432 90 955 0 -140 206 261 -10 1050 1104 90 745 0 -141 428 291 -20 698 764 90 655 0 -142 95 384 -30 719 785 90 958 0 -143 205 223 20 491 544 90 0 59 -144 463 140 10 0 1495 90 0 41 -145 343 47 20 0 1511 90 0 803 -146 435 62 30 0 1471 0 0 1031 -147 387 488 -20 0 1460 90 245 0 -148 121 157 10 0 1575 90 0 389 -149 182 463 30 0 1511 90 0 971 -150 92 216 10 0 1573 90 0 778 -151 370 83 20 357 419 90 0 607 -152 444 242 -20 441 501 90 508 0 -153 90 285 40 0 1571 90 0 654 -154 446 64 10 0 1464 90 0 270 -155 312 264 20 131 179 90 0 312 -156 208 11 20 0 1492 90 0 197 -157 442 247 -10 0 1542 90 254 0 -158 140 431 30 280 324 90 0 75 -159 118 153 -40 0 1571 90 784 0 -160 134 428 -20 935 992 90 972 0 -161 91 235 10 0 1575 90 0 227 -162 406 257 -20 0 1578 90 768 0 -163 377 76 20 0 1519 0 0 1005 -164 474 96 30 0 1463 90 0 843 -165 346 57 20 0 1519 90 0 128 -166 393 301 -30 0 1583 90 704 0 -167 412 214 -10 0 1569 90 847 0 -168 210 398 10 0 1581 90 0 281 -169 346 150 -40 948 998 90 294 0 -170 62 453 -30 515 584 90 219 0 -171 437 61 -30 1063 1127 90 827 0 -172 87 96 30 0 1510 90 0 559 -173 367 83 -10 0 1531 90 769 0 -174 91 268 -20 869 931 90 522 0 -175 459 145 40 233 291 90 0 296 -176 63 444 -20 0 1465 90 350 0 -177 433 27 -10 0 1446 90 998 0 -178 60 454 10 892 952 90 0 401 -179 478 99 -20 0 1461 90 323 0 -180 485 454 -10 0 1423 90 575 0 -181 6 292 10 316 360 90 0 2 -182 398 20 20 333 394 90 0 875 -183 248 251 -20 0 1732 90 52 0 -184 433 15 -10 0 1437 90 700 0 -185 64 426 -20 1162 1223 90 713 0 -186 154 207 -10 0 1629 90 519 0 -187 481 456 40 1028 1091 90 0 19 -188 380 498 -30 523 582 90 973 0 -189 88 286 -20 795 859 90 563 0 -190 111 23 10 266 326 90 0 975 -191 199 187 -20 0 1653 90 878 0 -192 269 48 -30 0 1532 90 618 0 -193 367 178 -20 0 1597 90 801 0 -194 452 163 30 0 1515 90 0 867 -195 431 28 -20 0 1448 90 479 0 -196 8 116 -20 894 957 90 406 0 -197 233 47 -20 0 1531 90 156 0 -198 237 43 20 631 702 90 0 548 -199 320 262 -10 585 656 90 224 0 -200 188 4 -30 413 455 90 328 0 -201 180 6 -20 0 1481 90 624 0 -202 328 466 -30 0 1505 90 897 0 -203 393 12 10 0 1457 90 0 693 -204 409 90 20 0 1509 90 0 292 -205 406 87 -10 0 1509 90 740 0 -206 394 407 20 733 789 90 0 605 -207 358 183 20 0 1607 90 0 466 -208 186 461 20 220 284 90 0 919 -209 38 72 30 420 496 0 0 1015 -210 323 471 -10 0 1502 90 268 0 -211 224 192 10 215 274 90 0 926 -212 278 46 -10 0 1529 90 421 0 -213 272 403 30 494 555 90 0 86 -214 232 42 10 545 599 0 0 1001 -215 18 63 -10 716 792 90 966 0 -216 58 458 -10 702 774 90 400 0 -217 416 417 -20 1057 1099 90 223 0 -218 205 230 30 203 263 90 0 699 -219 65 453 30 0 1460 90 0 170 -220 421 294 -20 0 1558 90 826 0 -221 434 245 -20 1377 1416 90 283 0 -222 2 116 20 526 586 90 0 674 -223 411 421 20 862 917 90 0 217 -224 315 260 10 223 278 90 0 199 -225 136 288 -20 1023 1063 90 945 0 -226 173 490 20 406 462 90 0 851 -227 90 232 -10 0 1573 90 161 0 -228 402 265 20 306 365 90 0 107 -229 361 14 10 0 1474 90 0 88 -230 348 147 -10 845 914 90 756 0 -231 385 295 20 0 1592 0 0 1030 -232 394 23 -20 1271 1326 90 716 0 -233 466 295 20 0 1514 0 0 1040 -234 71 103 -30 0 1503 90 264 0 -235 125 29 -20 0 1481 90 429 0 -236 25 65 -20 1005 1057 90 381 0 -237 58 449 30 0 1458 90 0 570 -238 246 398 40 148 199 90 0 772 -239 423 294 -30 0 1556 90 881 0 -240 59 459 -10 0 1451 90 882 0 -241 348 145 20 763 813 0 0 1033 -242 477 97 10 0 1461 90 0 450 -243 307 102 40 0 1576 90 0 410 -244 169 31 -20 0 1501 90 48 0 -245 381 495 20 705 769 90 0 147 -246 95 234 10 315 362 90 0 433 -247 22 33 10 0 1420 90 0 635 -248 435 268 10 1100 1154 90 0 591 -249 135 293 30 0 1612 0 0 1018 -250 439 266 -10 0 1545 90 657 0 -251 269 402 -20 587 648 90 362 0 -252 267 400 -10 779 836 90 969 0 -253 473 196 10 564 642 90 0 453 -254 445 237 10 349 402 90 0 157 -255 461 284 10 275 340 90 0 523 -256 167 339 -20 0 1613 90 606 0 -257 26 43 10 365 427 90 0 121 -258 101 386 20 0 1533 90 0 125 -259 342 54 -20 553 616 90 792 0 -260 243 399 -10 782 837 90 471 0 -261 288 44 20 0 1525 90 0 633 -262 274 48 10 0 1531 90 0 324 -263 360 184 -20 846 906 90 646 0 -264 23 67 30 0 1443 90 0 234 -265 6 296 10 863 926 90 0 912 -266 249 258 -20 0 1726 90 628 0 -267 421 415 30 297 364 90 0 748 -268 319 468 10 289 353 90 0 210 -269 50 438 -30 0 1460 90 81 0 -270 440 61 -10 0 1467 90 154 0 -271 17 65 20 625 699 90 0 500 -272 323 118 -20 0 1584 90 353 0 -273 402 281 -10 0 1579 90 649 0 -274 71 153 -30 746 816 90 600 0 -275 52 432 20 789 843 0 0 1045 -276 378 199 10 761 804 90 0 365 -277 238 204 20 566 634 0 0 1035 -278 208 184 20 146 192 90 0 615 -279 376 195 -20 576 616 90 963 0 -280 473 475 -20 0 1418 90 809 0 -281 215 395 -10 0 1585 90 168 0 -282 123 222 -20 376 430 90 394 0 -283 436 241 20 0 1548 90 0 221 -284 70 100 -10 1119 1191 90 416 0 -285 73 328 20 193 270 90 0 61 -286 241 205 -20 0 1689 90 804 0 -287 250 405 -30 303 370 90 597 0 -288 483 14 -20 0 1403 90 853 0 -289 466 287 10 467 525 90 0 435 -290 467 114 -10 0 1478 90 957 0 -291 120 159 10 306 377 90 0 395 -292 408 84 -20 745 814 90 204 0 -293 413 217 20 230 289 90 0 446 -294 338 142 40 204 256 90 0 169 -295 483 457 20 735 811 0 0 1008 -296 479 169 -40 774 834 90 175 0 -297 95 224 20 0 1577 90 0 821 -298 122 216 -20 461 537 90 40 0 -299 477 179 -20 0 1497 90 309 0 -300 406 99 20 0 1517 90 0 965 -301 44 47 20 0 1445 90 0 564 -302 487 450 -30 929 993 90 363 0 -303 172 488 10 310 374 90 0 671 -304 460 374 -10 753 831 90 810 0 -305 279 138 40 281 320 90 0 644 -306 338 147 10 0 1599 90 0 930 -307 395 295 -10 677 736 90 1 0 -308 195 185 -20 0 1649 90 895 0 -309 463 194 20 0 1514 90 0 299 -310 30 72 -20 0 1452 90 347 0 -311 244 254 20 723 787 90 0 893 -312 317 261 -20 398 473 90 155 0 -313 67 108 10 0 1503 90 0 876 -314 442 310 20 643 698 0 0 1028 -315 63 336 -10 0 1529 90 688 0 -316 109 107 20 357 416 90 0 47 -317 100 387 10 0 1531 90 0 823 -318 494 94 -20 634 692 90 806 0 -319 343 49 10 0 1513 90 0 691 -320 40 52 -20 546 591 90 777 0 -321 319 124 -10 400 465 90 760 0 -322 94 97 20 285 334 90 0 705 -323 476 94 20 334 396 90 0 179 -324 283 47 -10 0 1529 90 262 0 -325 398 325 30 774 843 90 0 673 -326 460 13 20 0 1418 90 0 430 -327 305 107 -10 0 1581 90 767 0 -328 188 12 30 245 309 90 0 200 -329 136 290 20 272 332 90 0 689 -330 439 268 -20 0 1545 90 863 0 -331 112 467 10 0 1477 90 0 974 -332 181 469 20 468 536 90 0 124 -333 358 18 10 0 1479 90 0 639 -334 459 10 10 0 1416 90 0 550 -335 199 268 20 284 368 90 0 918 -336 436 237 20 186 264 90 0 112 -337 318 280 20 319 384 90 0 439 -338 64 99 -20 853 904 90 481 0 -339 394 333 20 0 1568 90 0 854 -340 366 93 20 0 1539 90 0 931 -341 95 391 10 0 1525 0 0 1014 -342 391 425 20 842 909 90 0 558 -343 344 146 -10 0 1594 90 504 0 -344 198 12 10 0 1491 90 0 799 -345 186 472 20 0 1503 90 0 739 -346 390 408 30 0 1523 0 0 1020 -347 19 43 20 1203 1259 90 0 310 -348 307 108 -10 0 1581 90 874 0 -349 59 457 30 810 848 90 0 538 -350 49 451 20 0 1450 90 0 176 -351 125 39 20 245 318 90 0 953 -352 61 147 40 0 1519 90 0 786 -353 317 123 20 497 554 90 0 272 -354 392 426 10 666 722 90 0 578 -355 237 213 -20 0 1695 90 122 0 -356 71 333 -30 0 1537 90 472 0 -357 304 97 20 0 1572 90 0 686 -358 196 462 10 955 1003 90 0 936 -359 224 191 -20 0 1670 90 544 0 -360 37 51 10 0 1443 90 0 367 -361 491 25 10 0 1405 90 0 835 -362 270 401 20 217 268 90 0 251 -363 474 461 30 307 379 90 0 302 -364 66 448 10 270 345 90 0 492 -365 337 241 -10 0 1647 90 276 0 -366 269 46 -20 0 1530 90 648 0 -367 22 41 -10 1110 1164 90 360 0 -368 198 271 -20 0 1678 90 905 0 -369 287 43 -20 555 609 90 38 0 -370 446 63 -10 697 750 90 932 0 -371 200 229 30 0 1680 0 0 1007 -372 48 72 30 711 768 90 0 569 -373 465 142 -30 0 1494 90 892 0 -374 123 155 -30 1143 1209 90 773 0 -375 16 497 20 1038 1123 90 0 436 -376 220 319 -10 0 1659 90 78 0 -377 484 171 -20 680 736 90 602 0 -378 55 431 -10 0 1468 90 681 0 -379 428 24 -30 0 1447 90 754 0 -380 80 342 10 193 275 90 0 701 -381 16 68 20 521 617 90 0 236 -382 124 56 20 0 1503 90 0 898 -383 95 218 -30 873 927 90 66 0 -384 481 26 30 0 1413 90 0 839 -385 145 434 -20 462 514 90 106 0 -386 335 57 30 0 1524 90 0 668 -387 26 490 10 0 1406 90 0 79 -388 324 127 30 143 200 90 0 402 -389 109 114 -10 829 871 90 148 0 -390 72 148 20 0 1529 90 0 977 -391 220 392 20 970 1015 90 0 817 -392 442 243 -10 996 1052 90 101 0 -393 69 336 20 440 507 90 0 911 -394 131 226 20 121 183 90 0 282 -395 150 204 -10 0 1624 90 291 0 -396 423 217 20 785 849 90 0 687 -397 419 459 -20 785 838 90 962 0 -398 285 163 -20 714 780 90 774 0 -399 203 7 -20 0 1487 90 594 0 -400 54 445 10 534 593 90 0 216 -401 109 463 -10 0 1479 90 178 0 -402 355 180 -30 0 1608 90 388 0 -403 13 455 -20 381 430 90 711 0 -404 165 337 20 0 1613 90 0 782 -405 314 124 -10 0 1593 90 896 0 -406 9 124 20 271 336 90 0 196 -407 3 292 20 404 457 90 0 934 -408 16 462 -20 935 986 90 413 0 -409 189 464 -20 0 1512 90 535 0 -410 288 154 -40 0 1631 90 243 0 -411 90 296 -20 0 1568 90 17 0 -412 138 438 -20 0 1516 90 553 0 -413 13 459 20 646 718 90 0 408 -414 461 8 20 0 1413 90 0 514 -415 96 97 20 217 280 90 0 627 -416 68 99 10 1040 1085 90 0 284 -417 146 205 -10 0 1621 90 65 0 -418 117 152 -20 0 1569 90 560 0 -419 481 96 20 526 577 90 0 622 -420 338 260 -30 0 1646 90 714 0 -421 285 44 10 0 1526 90 0 212 -422 111 464 10 775 837 90 0 816 -423 468 291 30 0 1513 90 0 950 -424 148 206 -20 458 506 90 473 0 -425 184 464 10 285 344 90 0 537 -426 197 11 -10 0 1490 90 501 0 -427 396 410 10 829 880 90 0 443 -428 133 53 20 0 1505 90 0 979 -429 132 30 20 875 926 90 0 235 -430 464 13 -20 853 906 90 326 0 -431 100 394 -20 0 1527 90 571 0 -432 483 22 -20 476 543 90 447 0 -433 93 235 -10 0 1577 90 246 0 -434 174 26 -10 0 1498 90 765 0 -435 436 264 -10 0 1548 90 289 0 -436 24 492 -20 1252 1302 90 375 0 -437 406 94 10 375 430 90 0 37 -438 234 246 10 0 1718 90 0 498 -439 315 287 -20 693 754 90 337 0 -440 408 453 -10 0 1477 90 743 0 -441 128 225 -10 0 1610 90 679 0 -442 226 191 20 0 1671 90 0 907 -443 391 407 -10 0 1523 90 427 0 -444 198 264 20 0 1681 90 0 986 -445 179 7 20 864 930 90 0 454 -446 425 215 -20 699 748 90 293 0 -447 483 27 20 0 1412 90 0 432 -448 22 40 -30 1012 1080 90 536 0 -449 479 176 20 0 1494 90 0 891 -450 476 102 -10 0 1464 90 242 0 -451 386 405 -10 0 1528 90 685 0 -452 22 38 20 0 1423 90 0 113 -453 440 241 -10 0 1544 90 253 0 -454 182 14 -20 0 1489 90 445 0 -455 266 405 20 680 745 90 0 855 -456 357 181 20 367 441 90 0 670 -457 395 332 10 593 648 0 0 1023 -458 423 290 -20 0 1557 90 798 0 -459 104 28 20 0 1469 90 0 903 -460 131 56 10 0 1507 90 0 852 -461 111 110 -20 0 1537 90 562 0 -462 97 93 -20 0 1515 90 698 0 -463 90 274 20 411 458 90 0 886 -464 214 394 -10 0 1586 90 978 0 -465 6 114 10 0 1455 90 0 662 -466 375 191 -20 0 1596 90 207 0 -467 356 21 20 414 452 0 0 1004 -468 466 165 30 0 1502 90 0 987 -469 415 223 -20 1257 1302 90 759 0 -470 397 20 20 0 1462 90 0 93 -471 241 403 10 686 744 90 0 260 -472 69 334 30 0 1535 90 0 356 -473 152 210 20 105 163 90 0 424 -474 67 335 -20 629 684 90 967 0 -475 126 30 10 495 558 90 0 497 -476 390 423 -10 0 1512 90 849 0 -477 285 162 -30 625 688 90 758 0 -478 285 158 30 340 405 90 0 5 -479 406 96 20 280 342 90 0 195 -480 459 374 -20 848 917 90 580 0 -481 67 109 20 388 438 90 0 338 -482 468 475 10 313 373 90 0 993 -483 438 31 -20 0 1446 90 802 0 -484 168 24 -10 0 1494 90 653 0 -485 267 394 -10 0 1589 90 547 0 -486 406 450 20 405 464 90 0 512 -487 460 288 10 213 265 90 0 117 -488 224 203 20 0 1681 90 0 923 -489 21 487 10 582 629 90 0 490 -490 21 488 -10 0 1404 90 489 0 -491 87 217 10 0 1568 90 0 8 -492 67 452 -10 327 402 90 364 0 -493 119 223 -20 853 906 90 703 0 -494 398 428 -20 0 1503 90 123 0 -495 344 262 -20 0 1640 90 21 0 -496 390 301 -10 0 1585 90 684 0 -497 167 27 -10 0 1497 90 475 0 -498 236 247 -10 0 1720 90 438 0 -499 313 119 30 679 742 0 0 1047 -500 13 51 -20 0 1425 90 271 0 -501 200 13 10 397 453 90 0 426 -502 0 120 30 0 1453 90 0 509 -503 202 4 10 950 1004 90 0 98 -504 343 144 10 0 1593 90 0 343 -505 94 383 -40 636 687 90 981 0 -506 250 411 30 492 554 90 0 626 -507 464 134 20 0 1491 0 0 1026 -508 443 237 20 248 318 90 0 152 -509 4 114 -30 712 769 90 502 0 -510 169 336 30 0 1616 0 0 1013 -511 200 178 20 240 298 90 0 824 -512 412 453 -20 0 1475 90 486 0 -513 121 151 -30 0 1572 90 603 0 -514 403 93 -20 0 1515 90 414 0 -515 399 301 -10 584 634 90 638 0 -516 97 387 -10 823 869 90 954 0 -517 176 8 -10 0 1481 90 634 0 -518 62 326 -30 0 1532 90 4 0 -519 151 207 10 0 1627 90 0 186 -520 299 98 -20 0 1575 90 900 0 -521 334 240 -30 0 1650 90 585 0 -522 92 270 20 0 1575 90 0 174 -523 444 269 -10 0 1540 90 255 0 -524 132 223 30 0 1613 90 0 604 -525 428 25 -20 0 1448 90 135 0 -526 413 421 -20 768 828 90 925 0 -527 382 498 10 0 1454 90 0 793 -528 391 429 20 0 1507 90 0 555 -529 398 97 10 264 344 90 0 989 -530 192 265 -30 0 1675 90 680 0 -531 438 26 -20 0 1442 90 100 0 -532 44 79 10 267 333 90 0 991 -533 137 290 10 0 1615 90 0 946 -534 446 319 -30 0 1527 90 940 0 -535 175 487 20 248 308 90 0 409 -536 26 45 30 0 1431 90 0 448 -537 147 435 -10 553 607 90 425 0 -538 111 459 -30 0 1483 90 349 0 -539 472 132 10 767 826 90 0 908 -540 349 158 -20 0 1599 90 766 0 -541 86 268 10 689 735 0 0 1036 -542 415 216 10 319 384 90 0 733 -543 121 218 20 191 257 90 0 742 -544 210 185 20 0 1658 90 0 359 -545 98 215 20 0 1579 0 0 1032 -546 484 174 10 0 1488 90 0 995 -547 328 458 10 0 1512 90 0 485 -548 313 126 -20 0 1595 90 198 0 -549 390 415 -20 0 1518 90 115 0 -550 459 17 -10 1039 1094 90 334 0 -551 481 124 10 505 571 0 0 1009 -552 386 414 -20 1109 1162 90 788 0 -553 116 466 20 318 373 90 0 412 -554 468 295 -20 934 987 90 10 0 -555 391 426 -20 0 1509 90 528 0 -556 408 279 -20 682 747 90 69 0 -557 15 68 10 448 508 90 0 80 -558 392 424 -20 926 1007 90 342 0 -559 88 95 -30 0 1510 90 172 0 -560 116 151 20 774 836 90 0 418 -561 240 250 -20 0 1724 90 723 0 -562 123 159 20 156 216 90 0 461 -563 89 290 20 0 1569 90 0 189 -564 39 50 -20 0 1444 90 301 0 -565 359 179 20 0 1604 90 0 3 -566 338 257 -20 0 1646 90 120 0 -567 92 236 -10 0 1576 90 828 0 -568 413 417 -10 1135 1207 90 837 0 -569 91 101 -30 0 1517 90 372 0 -570 55 449 -30 0 1456 90 237 0 -571 57 425 20 0 1474 90 0 431 -572 465 287 10 0 1516 90 0 51 -573 320 280 -30 221 298 90 72 0 -574 322 468 20 0 1505 90 0 118 -575 483 458 10 656 708 90 0 180 -576 312 267 10 0 1670 90 0 924 -577 139 291 10 118 187 90 0 138 -578 388 408 -10 0 1525 90 354 0 -579 110 459 -40 0 1483 90 731 0 -580 459 372 20 0 1492 90 0 480 -581 204 269 30 49 98 0 0 1003 -582 407 98 -30 0 1516 90 696 0 -583 335 256 -10 890 962 90 87 0 -584 471 484 -20 0 1413 90 990 0 -585 339 244 30 251 299 90 0 521 -586 89 272 10 498 555 90 0 906 -587 488 96 -20 0 1451 90 787 0 -588 316 286 -30 601 662 90 613 0 -589 235 50 -40 813 896 90 64 0 -590 316 258 20 0 1668 90 0 873 -591 425 288 -10 0 1555 90 248 0 -592 213 397 -30 680 744 90 658 0 -593 113 156 10 0 1568 0 0 1029 -594 199 9 20 853 911 90 0 399 -595 463 167 10 657 709 90 0 73 -596 129 27 -10 0 1481 90 749 0 -597 248 404 30 0 1580 90 0 287 -598 405 276 20 0 1577 90 0 647 -599 400 288 30 154 232 90 0 734 -600 61 156 30 462 532 90 0 274 -601 393 20 -10 0 1464 90 762 0 -602 484 177 20 390 463 90 0 377 -603 108 116 30 0 1539 90 0 513 -604 112 217 -30 383 443 90 524 0 -605 389 404 -20 0 1527 90 206 0 -606 102 391 20 0 1530 90 0 256 -607 434 26 -20 0 1445 90 151 0 -608 488 26 30 0 1408 90 0 994 -609 477 120 10 968 1026 90 0 877 -610 126 220 -20 0 1607 90 902 0 -611 439 310 10 198 256 90 0 755 -612 212 319 -30 0 1656 90 39 0 -613 320 283 30 421 471 90 0 588 -614 17 459 -20 1200 1275 90 970 0 -615 236 213 -20 0 1695 90 278 0 -616 68 108 10 0 1504 90 0 795 -617 390 294 -30 0 1588 90 776 0 -618 275 42 30 537 608 90 0 192 -619 423 214 20 0 1558 90 0 741 -620 460 367 -20 0 1494 90 960 0 -621 272 402 -10 0 1581 90 914 0 -622 478 102 -20 704 775 90 419 0 -623 400 260 40 150 212 90 0 721 -624 181 6 20 678 753 90 0 201 -625 470 475 30 381 429 90 0 790 -626 245 408 -30 585 652 90 506 0 -627 93 96 -20 374 427 90 415 0 -628 218 318 20 884 939 90 0 266 -629 441 265 40 0 1543 0 0 1043 -630 21 64 20 818 876 90 0 83 -631 356 23 20 0 1484 90 0 730 -632 267 44 20 649 693 90 0 814 -633 277 50 -20 0 1533 90 261 0 -634 182 4 10 586 659 90 0 517 -635 26 36 -10 0 1425 90 247 0 -636 384 491 -30 897 948 90 775 0 -637 418 290 -20 1172 1221 90 796 0 -638 321 277 10 75 140 90 0 515 -639 358 16 -10 596 641 90 333 0 -640 389 334 -20 0 1572 90 751 0 -641 48 78 -20 0 1469 90 672 0 -642 24 68 -20 0 1444 90 750 0 -643 206 225 10 0 1684 90 0 968 -644 290 141 -40 645 709 90 305 0 -645 439 15 20 0 1433 90 0 14 -646 359 182 20 0 1606 90 0 263 -647 413 287 -20 0 1567 90 598 0 -648 230 49 20 201 253 90 0 366 -649 407 280 10 595 653 90 0 273 -650 459 295 20 1209 1273 90 0 55 -651 468 199 -10 669 730 90 890 0 -652 101 384 30 200 262 90 0 91 -653 170 26 10 855 918 90 0 484 -654 197 270 -40 0 1678 90 153 0 -655 415 289 20 169 228 90 0 141 -656 203 390 40 307 361 90 0 761 -657 443 272 10 0 1540 90 0 250 -658 210 391 30 202 272 90 0 592 -659 363 22 20 964 1025 90 0 42 -660 352 176 20 126 175 90 0 780 -661 212 223 -10 758 832 90 844 0 -662 8 120 -10 0 1460 90 465 0 -663 244 250 -10 0 1728 90 678 0 -664 18 484 10 0 1405 90 0 857 -665 379 82 -20 0 1523 90 889 0 -666 84 346 20 0 1543 90 0 44 -667 233 207 -10 0 1688 90 888 0 -668 344 62 -30 1208 1274 90 386 0 -669 20 489 -10 856 901 90 105 0 -670 361 181 -20 662 723 90 456 0 -671 174 494 -10 0 1479 90 303 0 -672 49 76 20 0 1469 90 0 641 -673 390 325 -30 883 929 90 325 0 -674 7 118 -20 0 1458 90 222 0 -675 107 26 10 0 1469 90 0 50 -676 312 270 30 0 1669 90 0 947 -677 399 102 20 0 1524 90 0 917 -678 109 108 10 0 1534 90 0 663 -679 115 218 10 298 341 90 0 441 -680 88 287 30 0 1568 90 0 530 -681 54 424 10 320 387 90 0 378 -682 125 32 30 407 462 90 0 935 -683 199 12 -10 0 1491 90 988 0 -684 457 374 10 0 1493 90 0 496 -685 391 413 10 0 1519 90 0 451 -686 304 102 -20 505 559 90 357 0 -687 391 293 -20 0 1587 90 396 0 -688 66 336 10 719 778 90 0 315 -689 132 291 -20 0 1610 90 329 0 -690 18 462 -20 0 1420 90 729 0 -691 347 62 -10 1121 1176 90 319 0 -692 466 142 -20 0 1493 90 111 0 -693 389 17 -10 0 1463 90 203 0 -694 342 254 10 0 1642 90 0 848 -695 92 223 10 0 1574 90 0 129 -696 404 83 30 831 916 90 0 582 -697 290 46 -10 832 896 90 838 0 -698 95 92 20 0 1513 90 0 462 -699 200 265 -30 853 922 90 218 0 -700 435 16 10 829 895 90 0 184 -701 25 499 -10 0 1399 90 380 0 -702 319 260 20 0 1665 90 0 737 -703 116 225 20 0 1598 90 0 493 -704 402 284 30 313 367 90 0 166 -705 108 105 -20 0 1532 90 322 0 -706 386 13 -10 785 878 90 108 0 -707 472 129 10 312 383 90 0 133 -708 132 57 -10 396 443 90 964 0 -709 43 71 40 0 1461 0 0 1038 -710 493 91 30 542 599 90 0 831 -711 12 451 20 0 1423 90 0 403 -712 201 188 -20 0 1655 90 894 0 -713 60 428 20 1059 1137 90 0 185 -714 243 248 30 243 314 90 0 420 -715 230 197 -20 588 645 90 808 0 -716 389 11 20 707 769 90 0 232 -717 401 281 -20 0 1580 90 836 0 -718 459 14 -20 372 439 90 722 0 -719 411 95 30 475 521 0 0 1019 -720 0 297 10 679 737 90 0 53 -721 476 196 -40 476 544 90 623 0 -722 458 16 20 313 369 90 0 718 -723 92 230 20 0 1575 90 0 561 -724 432 24 -40 0 1444 90 137 0 -725 215 317 10 140 194 90 0 130 -726 371 192 30 0 1600 90 0 31 -727 481 20 -20 0 1409 90 858 0 -728 152 207 20 824 877 90 0 77 -729 14 459 20 0 1419 90 0 690 -730 361 17 -20 777 832 90 631 0 -731 8 497 40 959 1006 90 0 579 -732 206 186 -10 891 955 90 800 0 -733 421 218 -10 880 939 90 542 0 -734 402 264 -30 216 273 90 599 0 -735 388 325 10 971 1026 0 0 1041 -736 35 304 30 0 1513 90 0 938 -737 321 263 -20 0 1662 90 702 0 -738 444 313 20 0 1531 90 0 807 -739 188 462 -20 0 1514 90 345 0 -740 400 103 10 0 1524 90 0 205 -741 418 221 -20 1150 1223 90 619 0 -742 112 219 -20 0 1593 90 543 0 -743 408 452 10 490 564 90 0 440 -744 30 301 10 660 726 90 0 922 -745 205 228 10 0 1684 90 0 140 -746 407 88 -30 0 1509 90 921 0 -747 380 489 -20 0 1462 90 28 0 -748 395 331 -30 0 1568 90 267 0 -749 133 26 10 0 1482 90 0 596 -750 21 68 20 0 1442 90 0 642 -751 313 282 20 0 1664 90 0 640 -752 53 440 10 633 684 90 0 865 -753 458 130 -20 0 1494 90 58 0 -754 437 15 30 0 1434 90 0 379 -755 400 286 -10 0 1580 90 611 0 -756 346 144 10 0 1591 90 0 230 -757 440 244 10 809 874 90 0 860 -758 280 162 30 158 210 90 0 477 -759 488 173 20 0 1484 90 0 469 -760 326 118 10 213 272 90 0 321 -761 207 400 -40 489 562 90 656 0 -762 391 18 10 1085 1141 90 0 601 -763 37 55 10 0 1446 0 0 1002 -764 204 15 20 0 1495 0 0 1039 -765 173 28 10 1134 1191 90 0 434 -766 343 148 20 399 441 90 0 540 -767 231 43 10 447 513 90 0 327 -768 445 273 20 725 781 90 0 162 -769 432 27 10 810 878 90 0 173 -770 439 305 30 0 1538 90 0 883 -771 208 396 -20 401 462 90 815 0 -772 249 407 -40 403 455 90 238 0 -773 107 112 30 728 787 90 0 374 -774 279 159 20 252 301 90 0 398 -775 376 494 30 334 396 90 0 636 -776 403 262 30 493 547 90 0 617 -777 41 47 20 359 406 90 0 320 -778 96 213 -10 0 1576 90 150 0 -779 461 167 -20 470 531 90 84 0 -780 391 99 -20 0 1528 90 660 0 -781 116 221 30 0 1597 90 0 880 -782 165 343 -20 556 613 90 404 0 -783 388 334 20 227 280 90 0 67 -784 130 57 40 289 365 90 0 159 -785 422 409 10 234 290 90 0 24 -786 66 156 -40 653 718 90 352 0 -787 485 86 20 349 413 90 0 587 -788 389 428 20 0 1509 90 0 552 -789 117 467 10 0 1480 90 0 103 -790 475 477 -30 1028 1091 90 625 0 -791 429 27 -10 1272 1339 90 54 0 -792 339 60 20 274 338 90 0 259 -793 381 494 -10 801 855 90 527 0 -794 218 321 -10 0 1657 90 13 0 -795 64 101 -10 667 724 90 616 0 -796 343 254 20 334 394 90 0 637 -797 478 464 -10 0 1422 90 43 0 -798 423 286 20 430 477 90 0 458 -799 198 9 -10 0 1488 90 344 0 -800 225 196 10 128 174 90 0 732 -801 374 190 20 0 1597 90 0 193 -802 462 14 20 0 1417 90 0 483 -803 347 54 -20 836 904 90 145 0 -804 231 195 20 0 1676 90 0 286 -805 72 96 -10 1220 1278 90 33 0 -806 489 87 20 451 499 90 0 318 -807 443 313 -20 554 602 90 738 0 -808 233 204 20 0 1685 90 0 715 -809 477 483 20 745 817 90 0 280 -810 459 368 10 299 361 90 0 304 -811 95 277 20 1057 1121 0 0 1037 -812 16 460 -20 1112 1180 90 866 0 -813 100 266 20 207 275 90 0 840 -814 288 53 -20 0 1534 90 632 0 -815 211 386 20 141 212 90 0 771 -816 144 439 -10 0 1518 90 422 0 -817 224 314 -20 0 1665 90 391 0 -818 79 291 10 519 568 90 0 27 -819 95 235 10 155 227 90 0 71 -820 7 123 30 329 399 90 0 871 -821 91 217 -20 692 738 90 297 0 -822 105 27 10 0 1469 90 0 830 -823 101 385 -10 0 1533 90 317 0 -824 238 210 -20 757 821 90 511 0 -825 439 67 10 322 386 90 0 832 -826 435 267 20 0 1549 90 0 220 -827 443 64 30 779 854 90 0 171 -828 92 234 10 0 1576 90 0 567 -829 450 265 -10 0 1534 90 952 0 -830 102 27 -10 796 852 90 822 0 -831 492 94 -30 724 787 90 710 0 -832 440 63 -10 886 934 90 825 0 -833 453 367 -20 0 1500 90 959 0 -834 15 69 -10 0 1438 90 95 0 -835 489 17 -10 0 1401 90 361 0 -836 335 255 20 85 124 90 0 717 -837 419 418 10 394 454 90 0 568 -838 292 41 10 0 1521 90 0 697 -839 489 27 -30 0 1408 90 384 0 -840 96 270 -20 308 367 90 813 0 -841 461 369 10 0 1492 90 0 56 -842 105 22 30 339 385 90 0 872 -843 479 121 -30 0 1472 90 164 0 -844 207 223 10 585 634 90 0 661 -845 17 458 -20 1297 1360 90 887 0 -846 186 7 -30 0 1483 90 92 0 -847 465 168 10 837 902 90 0 167 -848 416 288 -10 1251 1328 90 694 0 -849 388 418 10 217 283 90 0 476 -850 92 233 -10 768 830 90 943 0 -851 179 492 -20 678 752 90 226 0 -852 132 55 -10 573 632 90 460 0 -853 485 24 20 0 1408 90 0 288 -854 388 331 -20 0 1574 90 339 0 -855 217 323 -20 0 1654 90 455 0 -856 281 164 -20 0 1643 90 884 0 -857 169 340 -10 0 1613 90 664 0 -858 491 20 20 0 1401 90 0 727 -859 279 42 -20 0 1524 90 63 0 -860 439 243 -10 0 1545 90 757 0 -861 391 334 20 402 470 90 0 7 -862 96 244 -10 1332 1380 90 116 0 -863 441 273 20 903 972 90 0 330 -864 477 478 -10 0 1413 90 60 0 -865 56 434 -10 0 1467 90 752 0 -866 12 463 20 0 1415 90 0 812 -867 458 164 -30 374 439 90 194 0 -868 446 65 -10 516 566 90 35 0 -869 71 156 10 0 1532 90 0 870 -870 65 153 -10 0 1526 90 869 0 -871 8 118 -30 1079 1138 90 820 0 -872 102 29 -30 0 1469 90 842 0 -873 315 265 -20 0 1668 90 590 0 -874 343 62 10 1300 1364 90 0 348 -875 384 16 -20 892 959 90 182 0 -876 67 105 -10 0 1501 90 313 0 -877 478 118 -10 0 1471 90 609 0 -878 73 101 20 1313 1375 90 0 191 -879 200 14 10 311 356 90 0 82 -880 114 225 -30 0 1596 90 781 0 -881 460 293 30 1121 1176 90 0 239 -882 51 447 10 438 501 90 0 240 -883 418 295 -30 1063 1140 90 770 0 -884 282 139 20 0 1619 90 0 856 -885 477 122 -40 886 924 90 942 0 -886 91 266 -20 0 1575 90 463 0 -887 16 463 20 0 1418 90 0 845 -888 228 199 10 673 746 90 0 667 -889 435 20 20 0 1439 90 0 665 -890 467 195 10 285 344 90 0 651 -891 469 132 -20 856 923 90 449 0 -892 465 136 30 964 1007 90 0 373 -893 246 255 -20 818 877 90 311 0 -894 49 75 20 810 857 90 0 712 -895 66 98 20 0 1496 90 0 308 -896 166 32 10 296 352 90 0 405 -897 326 466 30 753 817 90 0 202 -898 202 186 -20 0 1654 90 382 0 -899 467 285 -10 0 1515 90 85 0 -900 290 136 20 0 1614 90 0 520 -901 341 58 10 0 1522 90 0 909 -902 121 219 20 0 1602 90 0 610 -903 107 35 -20 986 1041 90 459 0 -904 216 319 -20 0 1658 90 944 0 -905 134 288 20 0 1612 90 0 368 -906 89 270 -10 590 647 90 586 0 -907 136 52 -20 759 817 90 442 0 -908 462 167 -10 0 1507 90 539 0 -909 340 54 -10 0 1519 90 901 0 -910 80 286 -10 0 1561 90 62 0 -911 38 301 -20 0 1516 90 393 0 -912 25 307 -10 0 1502 90 265 0 -913 470 139 -30 668 731 90 11 0 -914 270 400 10 151 213 90 0 621 -915 204 187 30 803 857 0 0 1046 -916 460 171 30 937 994 90 0 928 -917 399 106 -20 0 1527 90 677 0 -918 197 267 -20 582 626 90 335 0 -919 77 350 -20 997 1058 90 208 0 -920 91 231 -20 579 652 90 999 0 -921 398 103 30 739 807 90 0 746 -922 35 303 -10 0 1513 90 744 0 -923 231 204 -20 0 1685 90 488 0 -924 311 266 -10 0 1671 90 576 0 -925 416 420 20 0 1497 90 0 526 -926 231 203 -10 0 1684 90 211 0 -927 4 116 10 618 678 0 0 1022 -928 417 217 -30 0 1564 90 916 0 -929 268 52 -10 1003 1079 90 949 0 -930 345 144 -10 568 640 90 306 0 -931 368 85 -20 0 1532 90 340 0 -932 441 65 10 0 1469 90 0 370 -933 201 270 -10 0 1682 90 20 0 -934 0 293 -20 591 637 90 407 0 -935 167 24 -30 668 736 90 682 0 -936 186 464 -10 0 1511 90 358 0 -937 7 292 10 246 306 90 0 126 -938 80 290 -30 0 1560 90 736 0 -939 405 455 40 0 1477 0 0 1025 -940 439 312 30 257 324 90 0 534 -941 300 108 -20 0 1584 90 984 0 -942 478 121 40 788 840 90 0 885 -943 92 232 10 0 1575 90 0 850 -944 111 463 20 0 1480 90 0 904 -945 132 294 20 454 521 90 0 225 -946 134 285 -10 0 1613 90 533 0 -947 316 284 -30 510 570 90 676 0 -948 56 428 20 415 482 90 0 96 -949 232 47 10 262 327 90 0 929 -950 466 291 -30 0 1515 90 423 0 -951 341 257 -30 0 1643 90 996 0 -952 420 213 10 509 568 90 0 829 -953 116 152 -20 678 750 90 351 0 -954 163 337 10 277 334 90 0 516 -955 440 7 20 0 1426 90 0 139 -956 208 222 -10 667 734 90 36 0 -957 485 95 10 281 351 90 0 290 -958 97 385 30 0 1530 90 0 142 -959 462 367 20 481 545 90 0 833 -960 455 365 20 235 306 90 0 620 -961 492 95 30 0 1447 0 0 1006 -962 405 450 20 311 376 90 0 397 -963 371 193 20 0 1601 90 0 279 -964 234 202 10 0 1684 90 0 708 -965 404 103 -20 0 1522 90 300 0 -966 24 41 10 0 1427 90 0 215 -967 67 334 20 532 600 90 0 474 -968 207 227 -10 0 1686 90 643 0 -969 277 403 10 395 464 90 0 252 -970 15 457 20 462 534 90 0 614 -971 217 319 -30 0 1658 90 149 0 -972 111 467 20 597 647 90 0 160 -973 378 493 30 426 487 90 0 188 -974 112 465 -10 0 1479 90 331 0 -975 173 25 -10 952 1007 90 190 0 -976 421 292 20 0 1558 0 0 1034 -977 74 146 -20 0 1530 90 390 0 -978 178 491 10 0 1483 90 0 464 -979 204 185 -20 0 1655 90 428 0 -980 319 470 -10 0 1504 90 6 0 -981 163 331 40 118 179 90 0 505 -982 470 125 20 253 316 90 0 94 -983 315 121 -10 0 1590 90 32 0 -984 166 34 20 0 1503 90 0 941 -985 284 140 40 115 172 90 0 25 -986 85 288 -20 329 386 90 444 0 -987 376 190 -30 0 1595 90 468 0 -988 238 203 10 0 1686 90 0 683 -989 399 104 -10 0 1526 90 529 0 -990 472 481 20 477 527 90 0 584 -991 46 74 -10 0 1465 90 532 0 -992 401 255 30 685 738 90 0 70 -993 475 480 -10 837 911 90 482 0 -994 485 27 -30 1231 1291 90 608 0 -995 476 174 -10 874 924 90 546 0 -996 330 242 30 627 671 90 0 951 -997 332 249 30 82 144 0 0 1024 -998 375 80 10 550 598 90 0 177 -999 94 235 20 227 266 90 0 920 -1000 287 144 20 0 1622 0 0 1048 -1001 232 42 -10 545 599 90 214 0 -1002 37 55 -10 0 1446 90 763 0 -1003 204 269 -30 49 98 90 581 0 -1004 356 21 -20 414 452 90 467 0 -1005 377 76 -20 0 1519 90 163 0 -1006 492 95 -30 0 1447 90 961 0 -1007 200 229 -30 0 1680 90 371 0 -1008 483 457 -20 735 811 90 295 0 -1009 481 124 -10 505 571 90 551 0 -1010 35 306 -20 0 1512 90 34 0 -1011 122 35 -10 0 1484 90 127 0 -1012 187 491 -20 0 1485 90 134 0 -1013 169 336 -30 0 1616 90 510 0 -1014 95 391 -10 0 1525 90 341 0 -1015 38 72 -30 420 496 90 209 0 -1016 128 291 -10 0 1606 90 46 0 -1017 270 49 -30 925 970 90 12 0 -1018 135 293 -30 0 1612 90 249 0 -1019 411 95 -30 475 521 90 719 0 -1020 390 408 -30 0 1523 90 346 0 -1021 379 80 -20 0 1521 90 26 0 -1022 4 116 -10 618 678 90 927 0 -1023 395 332 -10 593 648 90 457 0 -1024 332 249 -30 82 144 90 997 0 -1025 405 455 -40 0 1477 90 939 0 -1026 464 134 -20 0 1491 90 507 0 -1027 237 254 -20 0 1721 90 22 0 -1028 442 310 -20 643 698 90 314 0 -1029 113 156 -10 0 1568 90 593 0 -1030 385 295 -20 0 1592 90 231 0 -1031 435 62 -30 0 1471 90 146 0 -1032 98 215 -20 0 1579 90 545 0 -1033 348 145 -20 763 813 90 241 0 -1034 421 292 -20 0 1558 90 976 0 -1035 238 204 -20 566 634 90 277 0 -1036 86 268 -10 689 735 90 541 0 -1037 95 277 -20 1057 1121 90 811 0 -1038 43 71 -40 0 1461 90 709 0 -1039 204 15 -20 0 1495 90 764 0 -1040 466 295 -20 0 1514 90 233 0 -1041 388 325 -10 971 1026 90 735 0 -1042 1 293 -10 0 1482 90 102 0 -1043 441 265 -40 0 1543 90 629 0 -1044 418 218 -20 0 1563 90 15 0 -1045 52 432 -20 789 843 90 275 0 -1046 204 187 -30 803 857 90 915 0 -1047 313 119 -30 679 742 90 499 0 -1048 287 144 -20 0 1622 90 1000 0 diff --git a/jsprit-instances/instances/lilim/1000/LC1104.txt b/jsprit-instances/instances/lilim/1000/LC1104.txt deleted file mode 100644 index 98f7e5897..000000000 --- a/jsprit-instances/instances/lilim/1000/LC1104.txt +++ /dev/null @@ -1,1040 +0,0 @@ -250 200 1 -0 250 250 0 0 1824 0 0 0 -1 387 297 10 200 270 90 0 950 -2 5 297 -10 0 1485 90 720 0 -3 355 177 -10 0 1607 90 504 0 -4 78 346 -10 0 1538 90 919 0 -5 286 159 20 0 1637 90 0 477 -6 322 465 10 226 291 90 0 268 -7 393 408 -10 0 1521 90 494 0 -8 89 216 -20 0 1570 90 297 0 -9 76 345 30 0 1536 0 0 1025 -10 410 285 -20 499 556 90 99 0 -11 472 189 30 0 1504 90 0 309 -12 270 49 30 925 970 0 0 1005 -13 219 325 -20 0 1653 90 391 0 -14 437 12 20 557 613 90 0 700 -15 418 218 20 0 1563 0 0 1028 -16 20 488 -10 754 820 90 701 0 -17 77 347 20 436 505 90 0 411 -18 73 346 10 0 1533 90 0 105 -19 480 455 -10 1123 1179 90 180 0 -20 129 292 -30 552 610 90 472 0 -21 337 257 -20 0 1647 90 566 0 -22 237 254 -30 0 1721 90 39 0 -23 131 220 -10 0 1612 90 968 0 -24 417 417 10 0 1498 90 0 217 -25 287 143 -20 0 1621 90 900 0 -26 379 80 -20 0 1521 90 677 0 -27 87 285 -20 0 1568 90 563 0 -28 374 489 20 0 1465 90 0 973 -29 440 247 20 0 1544 0 0 1015 -30 281 137 10 0 1617 90 0 644 -31 379 196 20 0 1595 90 0 466 -32 297 102 10 214 281 90 0 405 -33 39 76 -10 328 399 90 532 0 -34 35 306 20 0 1512 90 0 736 -35 435 68 10 0 1475 90 0 154 -36 245 251 10 60 130 90 0 218 -37 409 88 20 0 1508 90 0 965 -38 273 55 20 196 246 90 0 901 -39 163 340 30 0 1609 90 0 22 -40 129 223 -20 0 1611 90 109 0 -41 371 200 -20 0 1604 90 660 0 -42 357 26 -20 0 1486 90 730 0 -43 470 473 -10 1221 1270 90 60 0 -44 77 344 10 254 319 90 0 518 -45 478 461 10 0 1424 90 0 575 -46 128 291 -10 0 1606 90 910 0 -47 111 113 10 632 694 90 0 773 -48 164 21 -10 578 639 90 484 0 -49 21 485 30 0 1406 90 0 664 -50 108 26 -20 0 1469 90 830 0 -51 424 286 -20 0 1557 90 798 0 -52 200 270 20 0 1681 90 0 654 -53 7 300 -20 0 1486 90 407 0 -54 433 31 10 0 1449 90 0 769 -55 420 295 20 0 1559 90 0 687 -56 451 367 -10 0 1502 90 785 0 -57 118 157 20 0 1573 0 0 1001 -58 489 101 -30 0 1453 90 710 0 -59 200 261 -20 945 1017 90 335 0 -60 476 483 10 0 1410 90 0 43 -61 30 302 -10 0 1508 90 744 0 -62 8 300 -10 0 1487 90 102 0 -63 275 45 -30 0 1528 90 618 0 -64 238 46 40 735 784 90 0 589 -65 152 206 10 0 1627 0 0 1035 -66 99 218 30 154 205 90 0 695 -67 393 410 -20 0 1520 90 115 0 -68 480 460 -10 549 627 90 849 0 -69 337 256 20 154 201 90 0 576 -70 389 300 10 0 1587 90 0 231 -71 90 237 -10 0 1574 90 828 0 -72 321 280 30 0 1657 90 0 573 -73 417 218 -10 0 1564 90 157 0 -74 64 108 -40 0 1500 90 709 0 -75 57 432 10 0 1469 90 0 185 -76 356 24 20 249 323 90 0 659 -77 143 207 -20 0 1619 90 395 0 -78 221 325 -40 0 1654 90 656 0 -79 22 483 30 0 1409 90 0 669 -80 24 65 -10 0 1442 90 500 0 -81 141 431 30 362 423 90 0 142 -82 202 9 -10 0 1489 90 964 0 -83 20 48 -20 1294 1358 90 347 0 -84 457 163 20 284 346 90 0 253 -85 470 290 10 0 1511 0 0 1010 -86 268 400 -20 0 1583 90 362 0 -87 337 251 -20 0 1647 90 768 0 -88 366 20 -20 0 1477 90 631 0 -89 72 344 -20 0 1533 90 393 0 -90 149 203 10 553 597 90 0 473 -91 55 428 20 511 568 90 0 97 -92 189 7 30 0 1484 90 0 454 -93 397 18 -10 0 1460 90 108 0 -94 481 122 30 0 1470 90 0 551 -95 20 73 -10 0 1444 90 113 0 -96 54 430 -10 0 1468 90 341 0 -97 74 350 -20 0 1532 90 91 0 -98 202 8 -20 0 1488 90 399 0 -99 406 285 20 0 1575 90 0 10 -100 460 2 20 0 1410 90 0 483 -101 441 244 -10 0 1543 90 392 0 -102 1 293 10 0 1482 90 0 62 -103 115 465 -10 0 1481 90 789 0 -104 422 420 20 0 1493 90 0 549 -105 75 347 -10 0 1534 90 18 0 -106 141 428 -20 0 1526 90 972 0 -107 404 264 20 0 1580 0 0 1029 -108 398 23 10 0 1464 90 0 93 -109 148 211 20 167 233 90 0 40 -110 362 22 20 0 1480 0 0 1031 -111 479 127 -10 0 1475 90 885 0 -112 443 246 20 0 1541 90 0 757 -113 22 37 10 0 1422 90 0 95 -114 65 100 10 0 1496 90 0 338 -115 404 447 20 250 280 90 0 67 -116 102 264 10 0 1586 90 0 438 -117 444 271 10 0 1539 90 0 283 -118 325 466 -30 0 1506 90 210 0 -119 124 219 20 571 615 90 0 394 -120 335 243 -20 0 1649 90 646 0 -121 26 42 20 455 519 90 0 367 -122 113 106 20 0 1536 90 0 191 -123 399 450 20 0 1485 90 0 788 -124 146 439 -20 0 1519 90 208 0 -125 162 336 20 0 1611 90 0 663 -126 2 295 -10 0 1482 90 937 0 -127 122 35 -20 0 1484 90 351 0 -128 346 60 -20 1027 1086 90 165 0 -129 93 213 -10 0 1573 90 821 0 -130 218 316 20 0 1661 90 0 628 -131 116 156 10 0 1571 90 0 148 -132 419 422 20 0 1493 90 0 925 -133 467 141 10 0 1492 90 0 916 -134 187 491 20 0 1485 90 0 739 -135 433 25 20 0 1444 90 0 724 -136 286 137 10 0 1616 90 0 327 -137 370 82 40 0 1528 90 0 548 -138 132 290 -20 0 1610 90 986 0 -139 435 11 40 0 1432 90 0 645 -140 206 261 -10 1050 1104 90 918 0 -141 428 291 10 698 764 90 0 487 -142 95 384 -30 719 785 90 81 0 -143 205 223 -20 0 1682 90 183 0 -144 463 140 -20 0 1495 90 507 0 -145 343 47 -20 0 1511 90 716 0 -146 435 62 -10 0 1471 90 171 0 -147 387 488 -30 0 1460 90 775 0 -148 121 157 -10 0 1575 90 131 0 -149 182 463 30 0 1511 90 0 537 -150 92 216 10 0 1573 0 0 1018 -151 370 83 20 357 419 90 0 803 -152 444 242 -20 441 501 90 336 0 -153 90 285 -20 0 1571 90 946 0 -154 446 64 -10 0 1464 90 35 0 -155 312 264 20 0 1671 90 0 676 -156 208 11 20 0 1492 90 0 799 -157 442 247 10 0 1542 90 0 73 -158 140 431 -10 0 1523 90 425 0 -159 118 153 -10 0 1571 90 374 0 -160 134 428 -20 0 1522 90 538 0 -161 91 235 10 0 1575 90 0 999 -162 406 257 -20 0 1578 90 435 0 -163 377 76 -30 0 1519 90 921 0 -164 474 96 30 0 1463 90 0 419 -165 346 57 20 0 1519 90 0 128 -166 393 301 30 0 1583 90 0 496 -167 412 214 10 0 1569 90 0 726 -168 210 398 -30 0 1581 90 658 0 -169 346 150 20 948 998 90 0 306 -170 62 453 -10 0 1458 90 752 0 -171 437 61 10 0 1469 90 0 146 -172 87 96 30 0 1510 0 0 1003 -173 367 83 30 0 1531 0 0 1034 -174 91 268 10 869 931 90 0 813 -175 459 145 40 233 291 90 0 546 -176 63 444 20 0 1465 90 0 431 -177 433 27 20 0 1446 90 0 525 -178 60 454 -10 892 952 90 400 0 -179 478 99 -10 0 1461 90 957 0 -180 485 454 10 0 1423 90 0 19 -181 6 292 10 316 360 90 0 934 -182 398 20 20 333 394 90 0 706 -183 248 251 20 0 1732 90 0 143 -184 433 15 -10 0 1437 90 379 0 -185 64 426 -10 1162 1223 90 75 0 -186 154 207 20 0 1629 90 0 417 -187 481 456 -20 0 1425 90 295 0 -188 380 498 10 523 582 0 0 1019 -189 88 286 10 795 859 90 0 680 -190 111 23 10 266 326 90 0 822 -191 199 187 -20 0 1653 90 122 0 -192 269 48 -10 0 1532 90 929 0 -193 367 178 20 0 1597 90 0 565 -194 452 163 -20 0 1515 90 753 0 -195 431 28 -10 0 1448 90 531 0 -196 8 116 -20 0 1458 90 406 0 -197 233 47 20 0 1531 90 0 366 -198 237 43 -10 0 1527 90 896 0 -199 320 262 -20 585 656 90 836 0 -200 188 4 20 0 1481 90 0 328 -201 180 6 10 0 1481 90 0 846 -202 328 466 -10 0 1505 90 980 0 -203 393 12 -10 0 1457 90 762 0 -204 409 90 20 0 1509 90 0 300 -205 406 87 -20 0 1509 90 889 0 -206 394 407 20 733 789 90 0 427 -207 358 183 20 0 1607 90 0 365 -208 186 461 20 0 1514 90 0 124 -209 38 72 30 420 496 90 0 991 -210 323 471 30 0 1502 90 0 118 -211 224 192 -10 215 274 90 800 0 -212 278 46 20 0 1529 90 0 668 -213 272 403 30 494 555 90 0 251 -214 232 42 -20 0 1526 90 984 0 -215 18 63 -10 716 792 90 557 0 -216 58 458 10 0 1451 90 0 349 -217 416 417 -10 0 1499 90 24 0 -218 205 230 -10 0 1685 90 36 0 -219 65 453 -20 0 1460 90 240 0 -220 421 294 -20 0 1558 90 883 0 -221 434 245 -10 1377 1416 90 657 0 -222 2 116 -30 0 1453 90 820 0 -223 411 421 20 862 917 90 0 568 -224 315 260 10 223 278 90 0 848 -225 136 288 -20 1023 1063 90 945 0 -226 173 490 -10 406 462 90 303 0 -227 90 232 10 0 1573 90 0 433 -228 402 265 -40 306 365 90 623 0 -229 361 14 -30 0 1474 90 639 0 -230 348 147 10 0 1592 0 0 1022 -231 385 295 -10 0 1592 90 70 0 -232 394 23 20 0 1466 90 0 875 -233 466 295 20 0 1514 90 0 650 -234 71 103 20 0 1503 90 0 513 -235 125 29 -30 0 1481 90 842 0 -236 25 65 -20 0 1443 90 630 0 -237 58 449 -20 0 1458 90 711 0 -238 246 398 40 0 1586 90 0 597 -239 423 294 10 0 1556 90 0 289 -240 59 459 20 0 1451 90 0 219 -241 348 145 -20 763 813 90 272 0 -242 477 97 -10 0 1461 90 318 0 -243 307 102 40 0 1576 90 0 348 -244 169 31 -20 0 1501 90 935 0 -245 381 495 20 705 769 90 0 793 -246 95 234 10 315 362 90 0 850 -247 22 33 10 0 1420 90 0 635 -248 435 268 -10 1100 1154 90 873 0 -249 135 293 30 0 1612 90 0 905 -250 439 266 -20 0 1545 90 826 0 -251 269 402 -30 0 1581 90 213 0 -252 267 400 10 0 1584 90 0 337 -253 473 196 -20 564 642 90 84 0 -254 445 237 10 349 402 90 0 453 -255 461 284 -30 0 1521 90 423 0 -256 167 339 -10 0 1613 90 954 0 -257 26 43 -30 365 427 90 536 0 -258 101 386 20 0 1533 90 0 823 -259 342 54 -10 0 1518 90 998 0 -260 243 399 -30 782 837 90 506 0 -261 288 44 20 0 1525 90 0 859 -262 274 48 -10 0 1531 90 653 0 -263 360 184 -20 846 906 90 456 0 -264 23 67 -20 0 1443 90 271 0 -265 6 296 10 0 1486 0 0 1026 -266 249 258 -20 0 1726 90 287 0 -267 421 415 30 297 364 90 0 939 -268 319 468 -10 0 1506 90 6 0 -269 50 438 -20 0 1460 90 375 0 -270 440 61 -30 0 1467 90 827 0 -271 17 65 20 0 1437 90 0 264 -272 323 118 20 0 1584 90 0 241 -273 402 281 20 0 1579 90 0 556 -274 71 153 -40 746 816 90 352 0 -275 52 432 20 0 1466 0 0 1012 -276 378 199 10 0 1597 90 0 963 -277 238 204 20 0 1687 90 0 355 -278 208 184 20 146 192 90 0 442 -279 376 195 -20 0 1597 90 293 0 -280 473 475 10 0 1418 90 0 797 -281 215 395 20 0 1585 0 0 1016 -282 123 222 -20 0 1604 90 902 0 -283 436 241 -10 0 1548 90 117 0 -284 70 100 -10 1119 1191 90 313 0 -285 73 328 20 193 270 90 0 689 -286 241 205 30 0 1689 90 0 758 -287 250 405 20 303 370 90 0 266 -288 483 14 -30 0 1403 90 384 0 -289 466 287 -10 0 1515 90 239 0 -290 467 114 10 0 1478 0 0 1037 -291 120 159 -20 0 1576 90 418 0 -292 408 84 -20 0 1505 90 414 0 -293 413 217 20 230 289 90 0 279 -294 338 142 40 204 256 0 0 1017 -295 483 457 20 0 1423 90 0 187 -296 479 169 20 0 1492 90 0 377 -297 95 224 20 0 1577 90 0 8 -298 122 216 -20 461 537 90 610 0 -299 477 179 -20 0 1497 90 759 0 -300 406 99 -20 0 1517 90 204 0 -301 44 47 20 0 1445 90 0 320 -302 487 450 10 929 993 90 0 512 -303 172 488 10 0 1484 90 0 226 -304 460 374 20 753 831 90 0 959 -305 279 138 -20 281 320 90 884 0 -306 338 147 -20 0 1599 90 169 0 -307 395 295 20 0 1583 90 0 637 -308 195 185 -10 0 1649 90 416 0 -309 463 194 -30 0 1514 90 11 0 -310 30 72 -20 0 1452 90 642 0 -311 244 254 20 0 1727 0 0 1024 -312 317 261 -30 398 473 90 997 0 -313 67 108 10 0 1503 90 0 284 -314 442 310 -30 0 1533 90 534 0 -315 63 336 -20 0 1529 90 967 0 -316 109 107 -20 357 416 90 461 0 -317 100 387 -10 0 1531 90 505 0 -318 494 94 10 634 692 90 0 242 -319 343 49 -10 0 1513 90 691 0 -320 40 52 -20 546 591 90 301 0 -321 319 124 20 400 465 90 0 388 -322 94 97 -10 285 334 90 712 0 -323 476 94 20 0 1460 90 0 450 -324 283 47 -10 0 1529 90 633 0 -325 398 325 -20 774 843 90 861 0 -326 460 13 -20 0 1418 90 718 0 -327 305 107 -10 0 1581 90 136 0 -328 188 12 -20 0 1489 90 200 0 -329 136 290 -10 0 1614 90 356 0 -330 439 268 -20 0 1545 90 863 0 -331 112 467 10 0 1477 90 0 401 -332 181 469 -10 468 536 90 936 0 -333 358 18 -20 0 1479 90 467 0 -334 459 10 -20 0 1416 90 722 0 -335 199 268 20 0 1680 90 0 59 -336 436 237 20 186 264 90 0 152 -337 318 280 -10 0 1660 90 252 0 -338 64 99 -10 0 1495 90 114 0 -339 394 333 20 0 1568 90 0 457 -340 366 93 20 0 1539 90 0 931 -341 95 391 10 0 1525 90 0 96 -342 391 425 -10 0 1510 90 440 0 -343 344 146 -10 0 1594 90 756 0 -344 198 12 10 0 1491 90 0 683 -345 186 472 -10 0 1503 90 671 0 -346 390 408 -10 0 1523 90 526 0 -347 19 43 20 0 1424 90 0 83 -348 307 108 -40 0 1581 90 243 0 -349 59 457 -10 0 1453 90 216 0 -350 49 451 -10 0 1450 90 403 0 -351 125 39 20 0 1489 90 0 127 -352 61 147 40 0 1519 90 0 274 -353 317 123 -30 0 1591 90 686 0 -354 392 426 10 666 722 90 0 685 -355 237 213 -20 0 1695 90 277 0 -356 71 333 10 0 1537 90 0 329 -357 304 97 20 0 1572 90 0 520 -358 196 462 10 0 1516 90 0 761 -359 224 191 20 0 1670 90 0 804 -360 37 51 10 0 1443 90 0 763 -361 491 25 10 0 1405 90 0 858 -362 270 401 20 217 268 90 0 86 -363 474 461 30 0 1427 90 0 397 -364 66 448 10 0 1464 90 0 729 -365 337 241 -20 0 1647 90 207 0 -366 269 46 -20 0 1530 90 197 0 -367 22 41 -20 1110 1164 90 121 0 -368 198 271 20 0 1678 90 0 444 -369 287 43 10 0 1524 90 0 838 -370 446 63 -10 0 1464 90 825 0 -371 200 229 -10 0 1680 90 519 0 -372 48 72 -30 0 1465 90 564 0 -373 465 142 -30 0 1494 90 892 0 -374 123 155 10 0 1576 90 0 159 -375 16 497 20 0 1394 90 0 269 -376 220 319 30 0 1659 90 0 817 -377 484 171 -20 680 736 90 296 0 -378 55 431 -20 0 1468 90 571 0 -379 428 24 10 0 1447 90 0 184 -380 80 342 10 193 275 90 0 912 -381 16 68 20 521 617 0 0 1032 -382 124 56 -10 0 1503 90 749 0 -383 95 218 20 873 927 90 0 778 -384 481 26 30 0 1413 90 0 288 -385 145 434 20 462 514 90 0 516 -386 335 57 -10 0 1524 90 909 0 -387 26 490 10 0 1406 90 0 489 -388 324 127 -20 0 1591 90 321 0 -389 109 114 10 829 871 90 0 705 -390 72 148 -10 0 1529 90 786 0 -391 220 392 20 970 1015 90 0 13 -392 442 243 10 0 1542 90 0 101 -393 69 336 20 440 507 90 0 89 -394 131 226 -20 0 1613 90 119 0 -395 150 204 20 0 1624 90 0 77 -396 423 217 -30 0 1558 90 721 0 -397 419 459 -30 0 1466 90 363 0 -398 285 163 -20 0 1641 90 774 0 -399 203 7 20 0 1487 90 0 98 -400 54 445 10 0 1458 90 0 178 -401 109 463 -10 0 1479 90 331 0 -402 355 180 -20 0 1608 90 670 0 -403 13 455 10 381 430 90 0 350 -404 165 337 -40 0 1613 90 981 0 -405 314 124 -10 0 1593 90 32 0 -406 9 124 20 0 1463 90 0 196 -407 3 292 20 404 457 90 0 53 -408 16 462 10 935 986 90 0 845 -409 189 464 -20 0 1512 90 535 0 -410 288 154 -40 0 1631 90 985 0 -411 90 296 -20 0 1568 90 17 0 -412 138 438 -30 0 1516 90 816 0 -413 13 459 -20 0 1419 90 887 0 -414 461 8 20 0 1413 90 0 292 -415 96 97 -20 0 1517 90 627 0 -416 68 99 10 0 1498 90 0 308 -417 146 205 -20 0 1621 90 186 0 -418 117 152 20 0 1569 90 0 291 -419 481 96 -30 526 577 90 164 0 -420 338 260 -20 0 1646 90 598 0 -421 285 44 10 0 1526 90 0 792 -422 111 464 10 0 1479 90 0 944 -423 468 291 30 0 1513 90 0 255 -424 148 206 -20 0 1623 90 728 0 -425 184 464 10 285 344 90 0 158 -426 197 11 -20 0 1490 90 594 0 -427 396 410 -20 829 880 90 206 0 -428 133 53 20 0 1505 90 0 462 -429 132 30 20 875 926 0 0 1033 -430 464 13 20 853 906 90 0 802 -431 100 394 -20 0 1527 90 176 0 -432 483 22 10 0 1409 90 0 447 -433 93 235 -10 0 1577 90 227 0 -434 174 26 -10 0 1498 90 765 0 -435 436 264 20 0 1548 90 0 162 -436 24 492 10 0 1403 90 0 490 -437 406 94 -10 375 430 90 989 0 -438 234 246 -10 0 1718 90 116 0 -439 315 287 30 0 1660 90 0 893 -440 408 453 10 0 1477 90 0 342 -441 128 225 -30 0 1610 90 781 0 -442 226 191 -20 0 1671 90 278 0 -443 391 407 -20 0 1523 90 486 0 -444 198 264 -20 0 1681 90 368 0 -445 179 7 20 0 1481 90 0 634 -446 425 215 10 0 1556 90 0 741 -447 483 27 -10 0 1412 90 432 0 -448 22 40 -10 0 1425 90 966 0 -449 479 176 20 0 1494 90 0 602 -450 476 102 -20 0 1464 90 323 0 -451 386 405 -10 0 1528 90 578 0 -452 22 38 20 0 1423 0 0 1002 -453 440 241 -10 0 1544 90 254 0 -454 182 14 -30 0 1489 90 92 0 -455 266 405 -10 680 745 90 621 0 -456 357 181 20 367 441 90 0 263 -457 395 332 -20 593 648 90 339 0 -458 423 290 10 0 1557 90 0 881 -459 104 28 20 0 1469 90 0 682 -460 131 56 10 0 1507 90 0 569 -461 111 110 20 0 1537 90 0 316 -462 97 93 -20 0 1515 90 428 0 -463 90 274 -10 0 1573 90 699 0 -464 214 394 -20 0 1586 90 815 0 -465 6 114 -10 0 1455 90 509 0 -466 375 191 -20 0 1596 90 31 0 -467 356 21 20 414 452 90 0 333 -468 466 165 30 0 1502 90 0 779 -469 415 223 20 0 1567 90 0 890 -470 397 20 20 0 1462 90 0 693 -471 241 403 10 686 744 0 0 1036 -472 69 334 30 0 1535 90 0 20 -473 152 210 -10 0 1629 90 90 0 -474 67 335 20 0 1533 90 0 688 -475 126 30 10 0 1482 90 0 667 -476 390 423 -20 0 1512 90 747 0 -477 285 162 -20 625 688 90 5 0 -478 285 158 30 340 405 90 0 856 -479 406 96 20 280 342 90 0 746 -480 459 374 20 0 1491 90 0 833 -481 67 109 -20 0 1503 90 641 0 -482 468 475 10 0 1421 90 0 993 -483 438 31 -20 0 1446 90 100 0 -484 168 24 10 0 1494 90 0 48 -485 267 394 10 0 1589 90 0 751 -486 406 450 20 0 1481 90 0 443 -487 460 288 -10 0 1521 90 141 0 -488 224 203 20 0 1681 90 0 898 -489 21 487 -10 582 629 90 387 0 -490 21 488 -10 0 1404 90 436 0 -491 87 217 10 0 1568 90 0 545 -492 67 452 30 0 1462 90 0 579 -493 119 223 -20 853 906 90 604 0 -494 398 428 10 0 1503 90 0 7 -495 344 262 20 0 1640 90 0 951 -496 390 301 -30 0 1585 90 166 0 -497 167 27 30 0 1497 90 0 975 -498 236 247 20 0 1720 0 0 1021 -499 313 119 30 0 1589 90 0 983 -500 13 51 10 0 1425 90 0 80 -501 200 13 10 0 1492 90 0 503 -502 0 120 30 0 1453 0 0 1014 -503 202 4 -10 950 1004 90 501 0 -504 343 144 10 0 1593 90 0 3 -505 94 383 10 636 687 90 0 317 -506 250 411 30 0 1573 90 0 260 -507 464 134 20 0 1491 90 0 144 -508 443 237 20 0 1541 90 0 860 -509 4 114 10 712 769 90 0 465 -510 169 336 -10 0 1616 90 782 0 -511 200 178 20 240 298 90 0 915 -512 412 453 -10 0 1475 90 302 0 -513 121 151 -20 0 1572 90 234 0 -514 403 93 -20 0 1515 90 550 0 -515 399 301 -20 0 1577 90 617 0 -516 97 387 -20 823 869 90 385 0 -517 176 8 10 0 1481 90 0 624 -518 62 326 -10 0 1532 90 44 0 -519 151 207 10 0 1627 90 0 371 -520 299 98 -20 0 1575 90 357 0 -521 334 240 30 0 1650 90 0 996 -522 92 270 -10 0 1575 90 530 0 -523 444 269 -20 0 1540 90 651 0 -524 132 223 30 0 1613 90 0 679 -525 428 25 -20 0 1448 90 177 0 -526 413 421 10 768 828 90 0 346 -527 382 498 10 0 1454 90 0 636 -528 391 429 20 0 1507 0 0 1038 -529 398 97 10 264 344 90 0 780 -530 192 265 10 0 1675 90 0 522 -531 438 26 10 0 1442 90 0 195 -532 44 79 10 0 1467 90 0 33 -533 137 290 10 0 1615 90 0 577 -534 446 319 30 0 1527 90 0 314 -535 175 487 20 248 308 90 0 409 -536 26 45 30 0 1431 90 0 257 -537 147 435 -30 0 1523 90 149 0 -538 111 459 20 0 1483 90 0 160 -539 472 132 -20 767 826 90 982 0 -540 349 158 -20 0 1599 90 766 0 -541 86 268 -10 0 1570 90 906 0 -542 415 216 -10 0 1566 90 733 0 -543 121 218 20 191 257 90 0 742 -544 210 185 20 0 1658 90 0 596 -545 98 215 -10 0 1579 90 491 0 -546 484 174 -40 0 1488 90 175 0 -547 328 458 10 0 1512 90 0 552 -548 313 126 -40 0 1595 90 137 0 -549 390 415 -20 0 1518 90 104 0 -550 459 17 20 1039 1094 90 0 514 -551 481 124 -30 505 571 90 94 0 -552 386 414 -10 1109 1162 90 547 0 -553 116 466 20 0 1480 90 0 974 -554 468 295 10 0 1512 0 0 1011 -555 391 426 10 0 1509 90 0 558 -556 408 279 -20 0 1574 90 273 0 -557 15 68 10 448 508 90 0 215 -558 392 424 -10 0 1510 90 555 0 -559 88 95 -20 0 1510 90 698 0 -560 116 151 20 774 836 90 0 562 -561 240 250 10 0 1724 0 0 1027 -562 123 159 -20 0 1578 90 560 0 -563 89 290 20 0 1569 90 0 27 -564 39 50 30 0 1444 90 0 372 -565 359 179 -20 0 1604 90 193 0 -566 338 257 20 0 1646 90 0 21 -567 92 236 20 0 1576 90 0 862 -568 413 417 -20 1135 1207 90 223 0 -569 91 101 -10 0 1517 90 460 0 -570 55 449 20 0 1456 90 0 865 -571 57 425 20 0 1474 90 0 378 -572 465 287 10 0 1516 90 0 829 -573 320 280 -30 221 298 90 72 0 -574 322 468 20 0 1505 90 0 897 -575 483 458 -10 656 708 90 45 0 -576 312 267 -20 0 1670 90 69 0 -577 139 291 -10 0 1616 90 533 0 -578 388 408 10 0 1525 90 0 451 -579 110 459 -30 0 1483 90 492 0 -580 459 372 -10 0 1492 90 684 0 -581 204 269 30 49 98 90 0 933 -582 407 98 10 0 1516 90 0 740 -583 335 256 -10 890 962 90 694 0 -584 471 484 10 0 1413 90 0 864 -585 339 244 -20 0 1645 90 619 0 -586 89 272 -20 0 1572 90 811 0 -587 488 96 -10 0 1451 90 831 0 -588 316 286 -30 601 662 90 613 0 -589 235 50 -40 813 896 90 64 0 -590 316 258 -10 0 1668 90 649 0 -591 425 288 -10 0 1555 90 924 0 -592 213 397 -20 0 1583 90 771 0 -593 113 156 -20 0 1568 90 953 0 -594 199 9 20 853 911 90 0 426 -595 463 167 -10 0 1506 90 847 0 -596 129 27 -20 0 1481 90 544 0 -597 248 404 -40 0 1580 90 238 0 -598 405 276 20 0 1577 90 0 420 -599 400 288 30 0 1580 90 0 717 -600 61 156 -10 462 532 90 869 0 -601 393 20 20 0 1464 0 0 1008 -602 484 177 -20 0 1489 90 449 0 -603 108 116 -10 0 1539 90 907 0 -604 112 217 20 0 1593 90 0 493 -605 389 404 -10 0 1527 90 837 0 -606 102 391 20 0 1530 90 0 652 -607 434 26 10 0 1445 90 0 791 -608 488 26 30 0 1408 90 0 839 -609 477 120 10 968 1026 90 0 843 -610 126 220 20 0 1607 90 0 298 -611 439 310 -30 0 1536 90 807 0 -612 212 319 30 0 1656 90 0 904 -613 320 283 30 421 471 90 0 588 -614 17 459 -20 0 1421 90 812 0 -615 236 213 20 0 1695 90 0 988 -616 68 108 10 0 1504 90 0 895 -617 390 294 20 0 1588 90 0 515 -618 275 42 30 0 1525 90 0 63 -619 423 214 20 0 1558 90 0 585 -620 460 367 20 0 1494 90 0 960 -621 272 402 10 0 1581 90 0 455 -622 478 102 -20 0 1463 90 806 0 -623 400 260 40 150 212 90 0 228 -624 181 6 -10 678 753 90 517 0 -625 470 475 30 0 1420 90 0 990 -626 245 408 -10 585 652 90 772 0 -627 93 96 20 0 1515 90 0 415 -628 218 318 -20 0 1659 90 130 0 -629 441 265 -20 0 1543 90 899 0 -630 21 64 20 0 1439 90 0 236 -631 356 23 20 0 1484 90 0 88 -632 267 44 -20 0 1528 90 648 0 -633 277 50 10 0 1533 90 0 324 -634 182 4 -20 0 1479 90 445 0 -635 26 36 -10 0 1425 90 247 0 -636 384 491 -10 897 948 90 527 0 -637 418 290 -20 1172 1221 90 307 0 -638 321 277 10 0 1659 90 0 947 -639 358 16 30 596 641 90 0 229 -640 389 334 -20 0 1572 90 854 0 -641 48 78 20 0 1469 90 0 481 -642 24 68 20 0 1444 90 0 310 -643 206 225 -30 0 1684 90 977 0 -644 290 141 -10 645 709 90 30 0 -645 439 15 -40 0 1433 90 139 0 -646 359 182 20 0 1606 90 0 120 -647 413 287 -20 0 1567 90 976 0 -648 230 49 20 201 253 90 0 632 -649 407 280 10 595 653 90 0 590 -650 459 295 -20 0 1521 90 233 0 -651 468 199 20 0 1511 90 0 523 -652 101 384 -20 0 1534 90 606 0 -653 170 26 10 0 1497 90 0 262 -654 197 270 -20 0 1678 90 52 0 -655 415 289 20 169 228 90 0 770 -656 203 390 40 0 1587 90 0 78 -657 443 272 10 0 1540 90 0 221 -658 210 391 30 0 1588 90 0 168 -659 363 22 -20 0 1480 90 76 0 -660 352 176 20 0 1608 90 0 41 -661 212 223 -10 0 1688 90 844 0 -662 8 120 -10 0 1460 90 927 0 -663 244 250 -20 0 1728 90 125 0 -664 18 484 -30 0 1405 90 49 0 -665 379 82 -30 0 1523 90 696 0 -666 84 346 -10 0 1543 90 681 0 -667 233 207 -10 0 1688 90 475 0 -668 344 62 -20 1208 1274 90 212 0 -669 20 489 -30 856 901 90 79 0 -670 361 181 20 662 723 90 0 402 -671 174 494 10 0 1479 90 0 345 -672 49 76 -20 0 1469 90 894 0 -673 390 325 30 883 929 90 0 735 -674 7 118 -20 0 1458 90 871 0 -675 107 26 -30 0 1469 90 872 0 -676 312 270 -20 0 1669 90 155 0 -677 399 102 20 0 1524 90 0 26 -678 109 108 10 0 1534 0 0 1013 -679 115 218 -30 298 341 90 524 0 -680 88 287 -10 0 1568 90 189 0 -681 54 424 10 0 1472 90 0 666 -682 125 32 -20 0 1483 90 459 0 -683 199 12 -10 0 1491 90 344 0 -684 457 374 10 0 1493 90 0 580 -685 391 413 -10 0 1519 90 354 0 -686 304 102 30 0 1577 90 0 353 -687 391 293 -20 0 1587 90 55 0 -688 66 336 -20 0 1531 90 474 0 -689 132 291 -20 0 1610 90 285 0 -690 18 462 -40 0 1420 90 731 0 -691 347 62 10 0 1523 90 0 319 -692 466 142 10 0 1493 90 0 995 -693 389 17 -20 0 1463 90 470 0 -694 342 254 10 0 1642 90 0 583 -695 92 223 -30 0 1574 90 66 0 -696 404 83 30 0 1507 90 0 665 -697 290 46 -40 0 1527 90 814 0 -698 95 92 20 0 1513 90 0 559 -699 200 265 10 0 1682 90 0 463 -700 435 16 -20 0 1436 90 14 0 -701 25 499 10 0 1399 90 0 16 -702 319 260 20 0 1665 90 0 737 -703 116 225 -30 0 1598 90 880 0 -704 402 284 -10 313 367 90 755 0 -705 108 105 -10 0 1532 90 389 0 -706 386 13 -20 0 1461 90 182 0 -707 472 129 10 312 383 90 0 928 -708 132 57 20 396 443 90 0 852 -709 43 71 40 0 1461 90 0 74 -710 493 91 30 542 599 90 0 58 -711 12 451 20 0 1423 90 0 237 -712 201 188 10 0 1655 90 0 322 -713 60 428 20 1059 1137 90 0 857 -714 243 248 30 0 1727 90 0 745 -715 230 197 -20 0 1678 90 808 0 -716 389 11 20 0 1458 90 0 145 -717 401 281 -30 0 1580 90 599 0 -718 459 14 20 372 439 90 0 326 -719 411 95 30 475 521 90 0 917 -720 0 297 10 679 737 90 0 2 -721 476 196 30 476 544 90 0 396 -722 458 16 20 0 1421 90 0 334 -723 92 230 -10 0 1575 90 819 0 -724 432 24 -20 0 1444 90 135 0 -725 215 317 10 0 1659 90 0 855 -726 371 192 -10 0 1600 90 167 0 -727 481 20 20 0 1409 90 0 853 -728 152 207 20 0 1627 90 0 424 -729 14 459 -10 0 1419 90 364 0 -730 361 17 20 777 832 90 0 42 -731 8 497 40 0 1389 90 0 690 -732 206 186 -20 891 955 90 979 0 -733 421 218 10 0 1561 90 0 542 -734 402 264 20 0 1582 90 0 776 -735 388 325 -30 0 1577 90 673 0 -736 35 304 -20 0 1513 90 34 0 -737 321 263 -20 0 1662 90 702 0 -738 444 313 -30 0 1531 90 940 0 -739 188 462 -20 0 1514 90 134 0 -740 400 103 -10 0 1524 90 582 0 -741 418 221 -10 1150 1223 90 446 0 -742 112 219 -20 0 1593 90 543 0 -743 408 452 -20 490 564 90 962 0 -744 30 301 10 660 726 90 0 61 -745 205 228 -30 0 1684 90 714 0 -746 407 88 -20 0 1509 90 479 0 -747 380 489 20 0 1462 90 0 476 -748 395 331 -20 0 1568 90 783 0 -749 133 26 10 0 1482 90 0 382 -750 21 68 20 0 1442 90 0 834 -751 313 282 -10 0 1664 90 485 0 -752 53 440 10 0 1461 90 0 170 -753 458 130 20 0 1494 90 0 194 -754 437 15 -20 0 1434 90 955 0 -755 400 286 10 0 1580 90 0 704 -756 346 144 10 0 1591 90 0 343 -757 440 244 -20 809 874 90 112 0 -758 280 162 -30 158 210 90 286 0 -759 488 173 20 0 1484 90 0 299 -760 326 118 10 213 272 90 0 930 -761 207 400 -10 0 1578 90 358 0 -762 391 18 10 0 1463 90 0 203 -763 37 55 -10 0 1446 90 360 0 -764 204 15 -10 0 1495 90 879 0 -765 173 28 10 0 1500 90 0 434 -766 343 148 20 399 441 90 0 540 -767 231 43 -10 447 513 90 949 0 -768 445 273 20 725 781 90 0 87 -769 432 27 -10 0 1447 90 54 0 -770 439 305 -20 0 1538 90 655 0 -771 208 396 20 0 1583 90 0 592 -772 249 407 10 403 455 90 0 626 -773 107 112 -10 0 1536 90 47 0 -774 279 159 20 0 1639 90 0 398 -775 376 494 30 0 1460 90 0 147 -776 403 262 -20 493 547 90 734 0 -777 41 47 20 359 406 90 0 805 -778 96 213 -20 0 1576 90 383 0 -779 461 167 -30 0 1508 90 468 0 -780 391 99 -10 0 1528 90 529 0 -781 116 221 30 0 1597 90 0 441 -782 165 343 10 556 613 90 0 510 -783 388 334 20 0 1573 90 0 748 -784 130 57 40 289 365 90 0 903 -785 422 409 10 234 290 90 0 56 -786 66 156 10 0 1528 90 0 390 -787 485 86 20 0 1448 90 0 961 -788 389 428 -20 0 1509 90 123 0 -789 117 467 10 0 1480 90 0 103 -790 475 477 -20 0 1415 90 809 0 -791 429 27 -10 1272 1339 90 607 0 -792 339 60 -10 0 1525 90 421 0 -793 381 494 -20 0 1458 90 245 0 -794 218 321 -10 0 1657 90 971 0 -795 64 101 -10 667 724 90 876 0 -796 343 254 -30 0 1641 90 992 0 -797 478 464 -10 0 1422 90 280 0 -798 423 286 20 0 1558 90 0 51 -799 198 9 -20 0 1488 90 156 0 -800 225 196 10 128 174 90 0 211 -801 374 190 -30 0 1597 90 987 0 -802 462 14 -20 0 1417 90 430 0 -803 347 54 -20 0 1516 90 151 0 -804 231 195 -20 0 1676 90 359 0 -805 72 96 -20 0 1499 90 777 0 -806 489 87 20 0 1445 90 0 622 -807 443 313 30 0 1531 90 0 611 -808 233 204 20 0 1685 90 0 715 -809 477 483 20 0 1409 90 0 790 -810 459 368 -10 0 1494 90 841 0 -811 95 277 20 0 1577 90 0 586 -812 16 460 20 1112 1180 90 0 614 -813 100 266 -10 0 1584 90 174 0 -814 288 53 40 0 1534 90 0 697 -815 211 386 20 141 212 90 0 464 -816 144 439 30 0 1518 90 0 412 -817 224 314 -30 0 1665 90 376 0 -818 79 291 10 0 1559 90 0 938 -819 95 235 10 155 227 90 0 723 -820 7 123 30 0 1460 90 0 222 -821 91 217 10 692 738 90 0 129 -822 105 27 -10 0 1469 90 190 0 -823 101 385 -20 0 1533 90 258 0 -824 238 210 -20 757 821 90 923 0 -825 439 67 10 322 386 90 0 370 -826 435 267 20 0 1549 90 0 250 -827 443 64 30 0 1466 90 0 270 -828 92 234 10 0 1576 90 0 71 -829 450 265 -10 0 1534 90 572 0 -830 102 27 20 796 852 90 0 50 -831 492 94 10 0 1447 90 0 587 -832 440 63 -20 0 1468 90 868 0 -833 453 367 -20 0 1500 90 480 0 -834 15 69 -20 0 1438 90 750 0 -835 489 17 10 0 1401 90 0 994 -836 335 255 20 0 1649 90 0 199 -837 419 418 10 394 454 90 0 605 -838 292 41 -10 0 1521 90 369 0 -839 489 27 -30 0 1408 90 608 0 -840 96 270 -10 0 1579 90 886 0 -841 461 369 10 0 1492 90 0 810 -842 105 22 30 0 1464 90 0 235 -843 479 121 -10 0 1472 90 609 0 -844 207 223 10 0 1684 90 0 661 -845 17 458 -10 1297 1360 90 408 0 -846 186 7 -10 0 1483 90 201 0 -847 465 168 10 837 902 90 0 595 -848 416 288 -10 0 1564 90 224 0 -849 388 418 10 217 283 90 0 68 -850 92 233 -10 768 830 90 246 0 -851 179 492 -10 678 752 90 978 0 -852 132 55 -20 0 1507 90 708 0 -853 485 24 -20 0 1408 90 727 0 -854 388 331 20 0 1574 90 0 640 -855 217 323 -10 0 1654 90 725 0 -856 281 164 -30 0 1643 90 478 0 -857 169 340 -20 0 1613 90 713 0 -858 491 20 -10 0 1401 90 361 0 -859 279 42 -20 0 1524 90 261 0 -860 439 243 -20 0 1545 90 508 0 -861 391 334 20 402 470 90 0 325 -862 96 244 -20 0 1580 90 567 0 -863 441 273 20 903 972 90 0 330 -864 477 478 -10 0 1413 90 584 0 -865 56 434 -20 0 1467 90 570 0 -866 12 463 20 0 1415 90 0 970 -867 458 164 -10 0 1509 90 913 0 -868 446 65 20 0 1465 90 0 832 -869 71 156 10 0 1532 90 0 600 -870 65 153 30 0 1526 0 0 1006 -871 8 118 20 1079 1138 90 0 674 -872 102 29 30 0 1469 90 0 675 -873 315 265 10 0 1668 90 0 248 -874 343 62 10 0 1525 90 0 941 -875 384 16 -20 0 1465 90 232 0 -876 67 105 10 0 1501 90 0 795 -877 478 118 20 0 1471 90 0 942 -878 73 101 20 0 1503 0 0 1023 -879 200 14 10 311 356 90 0 764 -880 114 225 30 0 1596 90 0 703 -881 460 293 -10 1121 1176 90 458 0 -882 51 447 10 438 501 0 0 1004 -883 418 295 20 0 1561 90 0 220 -884 282 139 20 0 1619 90 0 305 -885 477 122 10 886 924 90 0 111 -886 91 266 10 0 1575 90 0 840 -887 16 463 20 0 1418 90 0 413 -888 228 199 -20 673 746 90 926 0 -889 435 20 20 0 1439 90 0 205 -890 467 195 -20 285 344 90 469 0 -891 469 132 10 0 1486 0 0 1020 -892 465 136 30 964 1007 90 0 373 -893 246 255 -30 818 877 90 439 0 -894 49 75 20 810 857 90 0 672 -895 66 98 -10 0 1496 90 616 0 -896 166 32 10 296 352 90 0 198 -897 326 466 -20 753 817 90 574 0 -898 202 186 -20 0 1654 90 488 0 -899 467 285 20 0 1515 90 0 629 -900 290 136 20 0 1614 90 0 25 -901 341 58 -20 0 1522 90 38 0 -902 121 219 20 0 1602 90 0 282 -903 107 35 -40 986 1041 90 784 0 -904 216 319 -30 0 1658 90 612 0 -905 134 288 -30 0 1612 90 249 0 -906 89 270 10 590 647 90 0 541 -907 136 52 10 759 817 90 0 603 -908 462 167 20 0 1507 90 0 952 -909 340 54 10 0 1519 90 0 386 -910 80 286 10 0 1561 90 0 46 -911 38 301 -20 0 1516 90 922 0 -912 25 307 -10 0 1502 90 380 0 -913 470 139 10 0 1488 90 0 867 -914 270 400 10 151 213 90 0 969 -915 204 187 -20 803 857 90 511 0 -916 460 171 -10 937 994 90 133 0 -917 399 106 -30 0 1527 90 719 0 -918 197 267 10 582 626 90 0 140 -919 77 350 10 997 1058 90 0 4 -920 91 231 30 0 1574 90 0 943 -921 398 103 30 0 1526 90 0 163 -922 35 303 20 0 1513 90 0 911 -923 231 204 20 0 1685 90 0 824 -924 311 266 10 0 1671 90 0 591 -925 416 420 -20 0 1497 90 132 0 -926 231 203 20 0 1684 90 0 888 -927 4 116 10 618 678 90 0 662 -928 417 217 -10 0 1564 90 707 0 -929 268 52 10 1003 1079 90 0 192 -930 345 144 -10 568 640 90 760 0 -931 368 85 -20 0 1532 90 340 0 -932 441 65 10 0 1469 0 0 1007 -933 201 270 -30 0 1682 90 581 0 -934 0 293 -10 591 637 90 181 0 -935 167 24 20 0 1494 90 0 244 -936 186 464 10 0 1511 90 0 332 -937 7 292 10 246 306 90 0 126 -938 80 290 -10 0 1560 90 818 0 -939 405 455 -30 0 1477 90 267 0 -940 439 312 30 257 324 90 0 738 -941 300 108 -10 0 1584 90 874 0 -942 478 121 -20 788 840 90 877 0 -943 92 232 -30 0 1575 90 920 0 -944 111 463 -10 0 1480 90 422 0 -945 132 294 20 0 1609 90 0 225 -946 134 285 20 0 1613 90 0 153 -947 316 284 -10 510 570 90 638 0 -948 56 428 -30 0 1471 90 958 0 -949 232 47 10 262 327 90 0 767 -950 466 291 -10 0 1515 90 1 0 -951 341 257 -20 0 1643 90 495 0 -952 420 213 -20 0 1561 90 908 0 -953 116 152 20 678 750 90 0 593 -954 163 337 10 0 1611 90 0 256 -955 440 7 20 0 1426 90 0 754 -956 208 222 30 667 734 0 0 1009 -957 485 95 10 281 351 90 0 179 -958 97 385 30 0 1530 90 0 948 -959 462 367 -20 0 1492 90 304 0 -960 455 365 -20 0 1499 90 620 0 -961 492 95 -20 0 1447 90 787 0 -962 405 450 20 0 1481 90 0 743 -963 371 193 -10 0 1601 90 276 0 -964 234 202 10 0 1684 90 0 82 -965 404 103 -20 0 1522 90 37 0 -966 24 41 10 0 1427 90 0 448 -967 67 334 20 532 600 90 0 315 -968 207 227 10 0 1686 90 0 23 -969 277 403 -10 395 464 90 914 0 -970 15 457 -20 0 1421 90 866 0 -971 217 319 10 0 1658 90 0 794 -972 111 467 20 597 647 90 0 106 -973 378 493 -20 426 487 90 28 0 -974 112 465 -20 0 1479 90 553 0 -975 173 25 -30 952 1007 90 497 0 -976 421 292 20 0 1558 90 0 647 -977 74 146 30 0 1530 90 0 643 -978 178 491 10 0 1483 90 0 851 -979 204 185 20 0 1655 90 0 732 -980 319 470 10 0 1504 90 0 202 -981 163 331 40 118 179 90 0 404 -982 470 125 20 253 316 90 0 539 -983 315 121 -30 0 1590 90 499 0 -984 166 34 20 0 1503 90 0 214 -985 284 140 40 115 172 90 0 410 -986 85 288 20 329 386 90 0 138 -987 376 190 30 0 1595 90 0 801 -988 238 203 -20 0 1686 90 615 0 -989 399 104 10 0 1526 90 0 437 -990 472 481 -30 0 1414 90 625 0 -991 46 74 -30 0 1465 90 209 0 -992 401 255 30 0 1583 90 0 796 -993 475 480 -10 0 1413 90 482 0 -994 485 27 -10 1231 1291 90 835 0 -995 476 174 -10 874 924 90 692 0 -996 330 242 -30 0 1654 90 521 0 -997 332 249 30 82 144 90 0 312 -998 375 80 10 550 598 90 0 259 -999 94 235 -10 0 1578 90 161 0 -1000 287 144 20 0 1622 0 0 1030 -1001 118 157 -20 0 1573 90 57 0 -1002 22 38 -20 0 1423 90 452 0 -1003 87 96 -30 0 1510 90 172 0 -1004 51 447 -10 438 501 90 882 0 -1005 270 49 -30 925 970 90 12 0 -1006 65 153 -30 0 1526 90 870 0 -1007 441 65 -10 0 1469 90 932 0 -1008 393 20 -20 0 1464 90 601 0 -1009 208 222 -30 667 734 90 956 0 -1010 470 290 -10 0 1511 90 85 0 -1011 468 295 -10 0 1512 90 554 0 -1012 52 432 -20 0 1466 90 275 0 -1013 109 108 -10 0 1534 90 678 0 -1014 0 120 -30 0 1453 90 502 0 -1015 440 247 -20 0 1544 90 29 0 -1016 215 395 -20 0 1585 90 281 0 -1017 338 142 -40 204 256 90 294 0 -1018 92 216 -10 0 1573 90 150 0 -1019 380 498 -10 523 582 90 188 0 -1020 469 132 -10 0 1486 90 891 0 -1021 236 247 -20 0 1720 90 498 0 -1022 348 147 -10 0 1592 90 230 0 -1023 73 101 -20 0 1503 90 878 0 -1024 244 254 -20 0 1727 90 311 0 -1025 76 345 -30 0 1536 90 9 0 -1026 6 296 -10 0 1486 90 265 0 -1027 240 250 -10 0 1724 90 561 0 -1028 418 218 -20 0 1563 90 15 0 -1029 404 264 -20 0 1580 90 107 0 -1030 287 144 -20 0 1622 90 1000 0 -1031 362 22 -20 0 1480 90 110 0 -1032 16 68 -20 521 617 90 381 0 -1033 132 30 -20 875 926 90 429 0 -1034 367 83 -30 0 1531 90 173 0 -1035 152 206 -10 0 1627 90 65 0 -1036 241 403 -10 686 744 90 471 0 -1037 467 114 -10 0 1478 90 290 0 -1038 391 429 -20 0 1507 90 528 0 diff --git a/jsprit-instances/instances/lilim/1000/LC1105.txt b/jsprit-instances/instances/lilim/1000/LC1105.txt deleted file mode 100644 index 1b8b03bfd..000000000 --- a/jsprit-instances/instances/lilim/1000/LC1105.txt +++ /dev/null @@ -1,1060 +0,0 @@ -250 200 1 -0 250 250 0 0 1824 0 0 0 -1 387 297 -20 187 283 90 231 0 -2 5 297 -10 931 1041 90 720 0 -3 355 177 20 136 303 90 0 565 -4 78 346 -10 307 451 90 44 0 -5 286 159 -30 502 624 90 478 0 -6 322 465 10 226 335 90 0 118 -7 393 408 -10 625 713 90 443 0 -8 89 216 -30 473 584 90 129 0 -9 76 345 -10 503 623 90 380 0 -10 410 285 20 457 599 90 0 649 -11 472 189 30 356 468 90 0 721 -12 270 49 -20 889 1006 90 632 0 -13 219 325 10 486 597 90 0 971 -14 437 12 -40 526 643 90 139 0 -15 418 218 -10 948 1056 90 542 0 -16 20 488 -10 726 849 90 490 0 -17 77 347 20 397 545 90 0 89 -18 73 346 10 701 798 90 0 105 -19 480 455 -10 1098 1203 90 797 0 -20 129 292 10 526 636 90 0 138 -21 337 257 -20 771 897 90 951 0 -22 237 254 20 608 709 0 0 1058 -23 131 220 -10 720 840 90 298 0 -24 417 417 -20 931 1044 90 925 0 -25 287 143 10 718 823 0 0 1051 -26 379 80 -30 694 832 90 173 0 -27 87 285 -10 671 801 90 818 0 -28 374 489 20 269 389 90 0 147 -29 440 247 20 675 822 90 0 392 -30 281 137 10 339 447 90 0 136 -31 379 196 20 633 745 0 0 1047 -32 297 102 10 195 300 90 0 357 -33 39 76 10 299 429 90 0 513 -34 35 306 20 347 461 90 0 61 -35 435 68 10 259 378 90 0 154 -36 245 251 10 26 164 90 0 663 -37 409 88 20 626 744 90 0 746 -38 273 55 20 196 313 90 0 63 -39 163 340 30 431 551 90 0 510 -40 129 223 20 267 347 90 0 524 -41 371 200 -30 812 946 90 726 0 -42 357 26 -10 1117 1247 90 333 0 -43 470 473 10 1195 1296 0 0 1001 -44 77 344 10 215 359 90 0 4 -45 478 461 10 422 569 90 0 187 -46 128 291 10 591 754 0 0 1048 -47 111 113 -20 621 704 90 705 0 -48 164 21 20 555 661 90 0 765 -49 21 485 30 458 568 90 0 701 -50 108 26 -10 380 535 90 190 0 -51 424 286 -10 488 600 90 458 0 -52 200 270 -10 184 283 90 933 0 -53 7 300 -10 1034 1125 90 102 0 -54 433 31 10 285 423 90 0 379 -55 420 295 20 946 1074 90 0 637 -56 451 367 -20 1092 1237 90 304 0 -57 118 157 20 385 484 90 0 593 -58 489 101 -10 995 1076 90 831 0 -59 200 261 10 910 1053 90 0 140 -60 476 483 10 619 760 90 0 809 -61 30 302 -20 536 668 90 34 0 -62 8 300 -30 1125 1216 90 934 0 -63 275 45 -20 422 537 90 38 0 -64 238 46 -10 702 817 90 949 0 -65 152 206 -30 895 989 90 77 0 -66 99 218 30 154 286 90 0 778 -67 393 410 -20 889 1005 90 206 0 -68 480 460 -30 532 643 90 363 0 -69 337 256 -20 142 213 90 836 0 -70 389 300 10 267 390 90 0 617 -71 90 237 -30 1195 1317 90 920 0 -72 321 280 -10 119 218 90 638 0 -73 417 218 -10 1030 1156 90 446 0 -74 64 108 10 453 560 90 0 876 -75 57 432 -20 951 1055 90 269 0 -76 356 24 20 249 363 90 0 631 -77 143 207 30 243 349 90 0 65 -78 221 325 -10 586 681 90 725 0 -79 22 483 30 325 466 90 0 669 -80 24 65 -10 879 1002 90 95 0 -81 141 431 30 341 445 90 0 160 -82 202 9 10 1170 1336 0 0 1020 -83 20 48 10 1267 1385 90 0 500 -84 457 163 20 255 374 90 0 779 -85 470 290 -20 807 924 90 899 0 -86 268 400 -20 833 964 90 455 0 -87 337 251 -30 105 249 90 997 0 -88 366 20 10 844 958 90 0 110 -89 72 344 -20 584 729 90 17 0 -90 149 203 -10 515 636 90 417 0 -91 55 428 20 481 597 90 0 378 -92 189 7 30 291 392 90 0 624 -93 397 18 -10 480 613 90 108 0 -94 481 122 30 547 714 90 0 843 -95 20 73 10 290 397 90 0 80 -96 54 430 20 600 662 90 0 606 -97 74 350 10 885 984 90 0 919 -98 202 8 -10 1082 1242 90 344 0 -99 406 285 -30 375 492 90 704 0 -100 460 2 20 635 741 90 0 802 -101 441 244 -20 849 1016 90 112 0 -102 1 293 10 449 597 90 0 53 -103 115 465 10 365 510 90 0 944 -104 422 420 -30 448 588 90 267 0 -105 75 347 -10 789 893 90 18 0 -106 141 428 20 208 328 90 0 412 -107 404 264 20 371 485 90 0 776 -108 398 23 10 270 404 90 0 93 -109 148 211 -20 147 252 90 473 0 -110 362 22 -10 1022 1149 90 88 0 -111 479 127 -10 375 515 90 707 0 -112 443 246 20 496 633 90 0 101 -113 22 37 -10 798 928 90 635 0 -114 65 100 -20 724 850 90 481 0 -115 404 447 20 250 324 90 0 397 -116 102 264 10 148 257 90 0 813 -117 444 271 -10 607 714 90 250 0 -118 325 466 -10 616 772 90 6 0 -119 124 219 -20 545 641 90 394 0 -120 335 243 -20 393 529 90 365 0 -121 26 42 20 427 546 90 0 452 -122 113 106 20 198 323 90 0 389 -123 399 450 20 964 1063 0 0 1013 -124 146 439 -20 604 744 90 385 0 -125 162 336 20 153 274 90 0 857 -126 2 295 30 741 860 0 0 1018 -127 122 35 10 283 397 90 0 429 -128 346 60 -20 998 1114 90 145 0 -129 93 213 30 370 497 90 0 8 -130 218 316 20 73 211 90 0 904 -131 116 156 10 474 578 90 0 560 -132 419 422 -10 530 692 90 837 0 -133 467 141 10 543 668 90 0 892 -134 187 491 20 736 890 90 0 409 -135 433 25 -10 869 1004 90 607 0 -136 286 137 -10 413 562 90 30 0 -137 370 82 40 419 539 90 0 998 -138 132 290 -10 804 911 90 20 0 -139 435 11 40 325 459 90 0 14 -140 206 261 -10 1017 1137 90 59 0 -141 428 291 -20 664 798 90 798 0 -142 95 384 -30 680 825 90 652 0 -143 205 223 20 443 592 90 0 844 -144 463 140 10 263 398 90 0 692 -145 343 47 20 704 840 90 0 128 -146 435 62 -20 1139 1236 90 868 0 -147 387 488 -20 952 1082 90 28 0 -148 121 157 -20 199 300 90 562 0 -149 182 463 -10 353 459 90 425 0 -150 92 216 -10 746 866 90 821 0 -151 370 83 20 334 442 90 0 340 -152 444 242 -20 399 543 90 508 0 -153 90 285 40 953 1069 90 0 811 -154 446 64 -10 564 700 90 35 0 -155 312 264 20 96 215 90 0 590 -156 208 11 -10 1304 1394 90 503 0 -157 442 247 -20 601 712 90 336 0 -158 140 431 30 265 338 0 0 1034 -159 118 153 30 917 1059 90 0 374 -160 134 428 -30 914 1013 90 81 0 -161 91 235 -10 1111 1218 90 227 0 -162 406 257 -20 556 676 90 228 0 -163 377 76 -30 609 729 90 931 0 -164 474 96 30 271 407 0 0 1009 -165 346 57 20 904 1023 90 0 668 -166 393 301 30 463 564 90 0 515 -167 412 214 10 165 272 90 0 952 -168 210 398 -40 557 681 90 656 0 -169 346 150 -10 922 1024 90 756 0 -170 62 453 -10 475 624 90 364 0 -171 437 61 -20 1033 1157 90 832 0 -172 87 96 30 715 838 0 0 1011 -173 367 83 30 224 366 90 0 26 -174 91 268 -10 844 955 90 906 0 -175 459 145 40 233 363 90 0 539 -176 63 444 -30 1054 1176 90 219 0 -177 433 27 20 619 703 90 0 791 -178 60 454 10 854 990 90 0 237 -179 478 99 10 585 707 90 0 450 -180 485 454 -20 809 924 90 295 0 -181 6 292 -10 288 387 90 937 0 -182 398 20 20 320 408 90 0 601 -183 248 251 20 2 103 90 0 714 -184 433 15 20 297 412 90 0 700 -185 64 426 -10 1122 1263 90 400 0 -186 154 207 20 961 1107 0 0 1052 -187 481 456 -10 991 1128 90 45 0 -188 380 498 -30 485 619 90 775 0 -189 88 286 -10 758 896 90 910 0 -190 111 23 10 266 324 90 0 50 -191 199 187 -20 393 531 90 278 0 -192 269 48 -10 796 915 90 262 0 -193 367 178 20 529 662 90 0 646 -194 452 163 30 219 354 90 0 908 -195 431 28 20 689 818 90 0 525 -196 8 116 20 857 994 90 0 662 -197 233 47 20 321 451 90 0 214 -198 237 43 20 609 725 90 0 589 -199 320 262 10 562 678 90 0 576 -200 188 4 -30 382 486 90 328 0 -201 180 6 10 749 863 90 0 445 -202 328 466 -20 806 947 90 574 0 -203 393 12 10 589 700 90 0 693 -204 409 90 -10 531 655 90 582 0 -205 406 87 -10 893 1043 90 437 0 -206 394 407 20 703 818 90 0 67 -207 358 183 -20 892 1045 90 456 0 -208 186 461 20 220 342 90 0 739 -209 38 72 30 385 530 90 0 372 -210 323 471 -10 433 581 90 268 0 -211 224 192 -20 186 304 90 488 0 -212 278 46 20 205 338 90 0 814 -213 272 403 -10 470 579 90 914 0 -214 232 42 -20 507 637 90 197 0 -215 18 63 -10 705 803 90 834 0 -216 58 458 -30 680 795 90 492 0 -217 416 417 -10 1011 1145 90 785 0 -218 205 230 30 185 282 90 0 956 -219 65 453 30 393 520 90 0 176 -220 421 294 -10 858 978 90 591 0 -221 434 245 -20 1325 1469 90 860 0 -222 2 116 -30 499 614 90 502 0 -223 411 421 20 850 930 90 0 568 -224 315 260 -10 185 315 90 924 0 -225 136 288 -10 986 1099 90 689 0 -226 173 490 20 366 502 90 0 851 -227 90 232 10 661 752 90 0 161 -228 402 265 20 261 410 90 0 162 -229 361 14 -20 665 759 90 467 0 -230 348 147 -10 834 925 90 343 0 -231 385 295 20 142 306 90 0 1 -232 394 23 -20 1249 1349 90 716 0 -233 466 295 -10 998 1107 90 289 0 -234 71 103 -10 1385 1490 90 284 0 -235 125 29 -10 562 675 90 475 0 -236 25 65 -10 974 1089 90 557 0 -237 58 449 -10 956 1080 90 178 0 -238 246 398 40 148 263 90 0 597 -239 423 294 10 787 865 90 0 647 -240 59 459 20 597 696 90 0 349 -241 348 145 -30 730 845 90 930 0 -242 477 97 10 417 498 90 0 753 -243 307 102 -10 580 669 90 941 0 -244 169 31 20 352 481 90 0 935 -245 381 495 -30 675 800 90 973 0 -246 95 234 10 287 390 90 0 850 -247 22 33 10 706 832 90 0 347 -248 435 268 -10 1041 1213 90 829 0 -249 135 293 -20 336 454 90 329 0 -250 439 266 10 234 326 90 0 117 -251 269 402 20 569 667 90 0 252 -252 267 400 -20 746 868 90 251 0 -253 473 196 -10 548 658 90 890 0 -254 445 237 10 322 428 90 0 283 -255 461 284 -10 254 362 90 487 0 -256 167 339 -10 628 731 90 782 0 -257 26 43 10 326 466 90 0 448 -258 101 386 -20 307 457 90 823 0 -259 342 54 20 537 632 90 0 803 -260 243 399 -30 758 861 90 506 0 -261 288 44 -10 612 735 90 369 0 -262 274 48 10 313 459 90 0 192 -263 360 184 -20 819 933 90 660 0 -264 23 67 30 1072 1176 90 0 642 -265 6 296 -20 830 959 90 407 0 -266 249 258 -10 883 1000 90 893 0 -267 421 415 30 265 396 90 0 104 -268 319 468 10 250 391 90 0 210 -269 50 438 20 689 815 90 0 75 -270 440 61 30 953 1050 0 0 1032 -271 17 65 20 607 717 90 0 750 -272 323 118 20 275 397 90 0 548 -273 402 281 20 842 968 90 0 717 -274 71 153 20 738 824 90 0 869 -275 52 432 20 754 878 90 0 865 -276 378 199 -20 725 840 90 801 0 -277 238 204 -20 547 653 90 808 0 -278 208 184 20 108 229 90 0 191 -279 376 195 -20 526 665 90 963 0 -280 473 475 -20 1097 1208 90 864 0 -281 215 395 -20 847 946 90 815 0 -282 123 222 30 355 450 0 0 1049 -283 436 241 -10 1242 1362 90 254 0 -284 70 100 10 1101 1208 90 0 234 -285 73 328 20 193 311 90 0 315 -286 241 205 -10 655 731 90 988 0 -287 250 405 20 279 394 90 0 626 -288 483 14 10 636 761 90 0 447 -289 466 287 10 421 570 90 0 233 -290 467 114 -20 1117 1265 90 806 0 -291 120 159 10 283 400 90 0 418 -292 408 84 10 708 850 90 0 514 -293 413 217 20 186 332 90 0 928 -294 338 142 40 166 294 90 0 766 -295 483 457 20 700 846 90 0 180 -296 479 169 20 742 866 90 0 995 -297 95 224 -20 1030 1147 90 545 0 -298 122 216 10 441 557 90 0 23 -299 477 179 20 237 347 90 0 759 -300 406 99 -10 334 470 90 529 0 -301 44 47 20 289 393 90 0 641 -302 487 450 -10 902 1019 90 575 0 -303 172 488 10 297 387 0 0 1017 -304 460 374 20 740 844 90 0 56 -305 279 138 -40 250 351 90 985 0 -306 338 147 10 135 260 90 0 504 -307 395 295 -10 649 764 90 496 0 -308 195 185 20 310 424 90 0 712 -309 463 194 20 220 336 90 0 741 -310 30 72 -20 1351 1452 90 381 0 -311 244 254 -20 698 813 90 498 0 -312 317 261 20 383 488 90 0 676 -313 67 108 10 266 377 90 0 416 -314 442 310 -30 619 722 90 534 0 -315 63 336 -20 785 898 90 285 0 -316 109 107 20 320 452 90 0 461 -317 100 387 10 404 544 90 0 516 -318 494 94 -10 609 718 90 957 0 -319 343 49 -10 612 747 90 901 0 -320 40 52 -20 508 628 90 777 0 -321 319 124 20 381 485 0 0 1045 -322 94 97 -20 230 388 90 415 0 -323 476 94 20 306 424 90 0 419 -324 283 47 -40 321 472 90 859 0 -325 398 325 30 738 878 90 0 735 -326 460 13 -20 432 562 90 718 0 -327 305 107 -30 662 779 90 686 0 -328 188 12 30 245 426 90 0 200 -329 136 290 20 270 334 90 0 249 -330 439 268 -20 969 1096 90 768 0 -331 112 467 10 478 584 90 0 972 -332 181 469 20 445 559 90 0 345 -333 358 18 10 451 602 90 0 42 -334 459 10 10 522 657 90 0 414 -335 199 268 20 252 400 90 0 699 -336 436 237 20 186 307 90 0 157 -337 318 280 20 298 405 90 0 588 -338 64 99 -10 832 925 90 616 0 -339 394 333 20 454 605 90 0 457 -340 366 93 -20 897 1028 90 151 0 -341 95 391 -20 885 996 90 571 0 -342 391 425 -10 818 934 90 849 0 -343 344 146 10 478 547 90 0 230 -344 198 12 10 542 672 90 0 98 -345 186 472 -20 539 658 90 332 0 -346 390 408 30 431 540 90 0 685 -347 19 43 -10 1178 1283 90 247 0 -348 307 108 -30 769 856 90 520 0 -349 59 457 -20 772 887 90 240 0 -350 49 451 20 314 435 90 0 882 -351 125 39 20 245 353 90 0 596 -352 61 147 -30 322 475 90 977 0 -353 317 123 20 461 589 90 0 983 -354 392 426 -20 653 735 90 528 0 -355 237 213 -10 823 940 90 888 0 -356 71 333 10 217 361 90 0 472 -357 304 97 -10 357 516 90 32 0 -358 196 462 -10 908 1050 90 978 0 -359 224 191 20 266 406 90 0 923 -360 37 51 10 607 716 90 0 763 -361 491 25 -30 926 1041 90 384 0 -362 270 401 20 182 302 90 0 485 -363 474 461 30 307 421 90 0 68 -364 66 448 10 270 338 90 0 170 -365 337 241 20 294 443 90 0 120 -366 269 46 -30 708 820 90 618 0 -367 22 41 -10 1074 1201 90 966 0 -368 198 271 20 357 482 90 0 530 -369 287 43 10 515 649 90 0 261 -370 446 63 20 678 769 90 0 827 -371 200 229 30 275 381 90 0 643 -372 48 72 -30 669 811 90 209 0 -373 465 142 10 375 472 90 0 913 -374 123 155 -30 1136 1216 90 159 0 -375 16 497 -40 1007 1154 90 731 0 -376 220 319 -10 958 1050 90 936 0 -377 484 171 -10 652 765 90 546 0 -378 55 431 -20 673 772 90 91 0 -379 428 24 -10 1061 1183 90 54 0 -380 80 342 10 193 336 90 0 9 -381 16 68 20 510 627 90 0 310 -382 124 56 20 231 345 90 0 708 -383 95 218 -10 834 965 90 491 0 -384 481 26 30 321 444 90 0 361 -385 145 434 20 420 556 90 0 124 -386 335 57 30 210 330 90 0 874 -387 26 490 -10 1278 1406 90 436 0 -388 324 127 30 143 281 90 0 760 -389 109 114 -20 792 908 90 122 0 -390 72 148 20 234 360 90 0 786 -391 220 392 -10 954 1031 90 464 0 -392 442 243 -20 977 1071 90 29 0 -393 69 336 20 399 548 0 0 1037 -394 131 226 20 121 258 90 0 119 -395 150 204 20 595 739 90 0 728 -396 423 217 20 765 868 90 0 469 -397 419 459 -20 766 857 90 115 0 -398 285 163 -30 688 806 90 477 0 -399 203 7 -20 1005 1136 90 594 0 -400 54 445 10 509 618 90 0 185 -401 109 463 -10 914 1064 90 422 0 -402 355 180 30 271 353 90 0 670 -403 13 455 10 346 465 90 0 413 -404 165 337 20 320 475 0 0 1050 -405 314 124 -30 774 838 90 499 0 -406 9 124 20 271 420 90 0 465 -407 3 292 20 376 486 90 0 265 -408 16 462 -20 889 1032 90 729 0 -409 189 464 -20 818 945 90 134 0 -410 288 154 -20 415 521 90 774 0 -411 90 296 20 166 311 90 0 938 -412 138 438 -20 804 920 90 106 0 -413 13 459 -10 634 729 90 403 0 -414 461 8 -10 714 854 90 334 0 -415 96 97 20 217 322 90 0 322 -416 68 99 -10 996 1130 90 313 0 -417 146 205 10 332 448 90 0 90 -418 117 152 -10 835 959 90 291 0 -419 481 96 -20 504 599 90 323 0 -420 338 260 -20 604 695 90 495 0 -421 285 44 10 399 581 90 0 697 -422 111 464 10 747 865 90 0 401 -423 468 291 30 716 829 90 0 650 -424 148 206 20 418 546 90 0 519 -425 184 464 10 254 374 90 0 149 -426 197 11 -20 619 778 90 683 0 -427 396 410 -10 795 913 90 605 0 -428 133 53 -10 648 741 90 460 0 -429 132 30 -10 843 958 90 127 0 -430 464 13 20 843 916 0 0 1002 -431 100 394 10 990 1082 0 0 1014 -432 483 22 10 458 561 90 0 835 -433 93 235 10 917 1046 90 0 862 -434 174 26 -30 1013 1128 90 497 0 -435 436 264 20 186 317 90 0 863 -436 24 492 10 1212 1341 90 0 387 -437 406 94 10 331 475 90 0 205 -438 234 246 -10 497 622 90 561 0 -439 315 287 -30 666 780 90 613 0 -440 408 453 10 570 666 90 0 939 -441 128 225 10 151 278 90 0 610 -442 226 191 -10 367 488 90 800 0 -443 391 407 10 521 633 90 0 7 -444 198 264 -30 746 845 90 581 0 -445 179 7 -10 824 971 90 201 0 -446 425 215 10 646 801 90 0 73 -447 483 27 -10 1256 1412 90 288 0 -448 22 40 -10 975 1118 90 257 0 -449 479 176 20 256 406 90 0 602 -450 476 102 -10 773 890 90 179 0 -451 386 405 20 206 335 90 0 578 -452 22 38 -20 899 1009 90 121 0 -453 440 241 -10 1054 1179 90 757 0 -454 182 14 -20 1039 1139 90 846 0 -455 266 405 20 653 771 90 0 86 -456 357 181 20 324 484 90 0 207 -457 395 332 -20 568 673 90 339 0 -458 423 290 10 304 414 90 0 51 -459 104 28 20 664 799 90 0 830 -460 131 56 10 459 562 90 0 428 -461 111 110 -20 514 625 90 316 0 -462 97 93 -20 433 558 90 627 0 -463 90 274 -20 366 503 90 840 0 -464 214 394 10 749 863 90 0 391 -465 6 114 -20 762 903 90 406 0 -466 375 191 -30 421 582 90 987 0 -467 356 21 20 358 507 90 0 229 -468 466 165 -10 709 844 90 595 0 -469 415 223 -20 1231 1329 90 396 0 -470 397 20 20 386 523 90 0 706 -471 241 403 -10 654 777 90 772 0 -472 69 334 -10 318 444 90 356 0 -473 152 210 20 105 201 90 0 109 -474 67 335 20 591 722 90 0 688 -475 126 30 10 473 580 90 0 235 -476 390 423 10 248 377 90 0 555 -477 285 162 30 579 733 90 0 398 -478 285 158 30 317 428 90 0 5 -479 406 96 20 258 363 90 0 719 -480 459 374 20 815 951 90 0 684 -481 67 109 20 332 493 90 0 114 -482 468 475 10 313 432 90 0 625 -483 438 31 10 335 426 90 0 769 -484 168 24 10 735 852 90 0 653 -485 267 394 -20 945 1043 90 362 0 -486 406 450 -20 382 487 90 962 0 -487 460 288 10 213 350 90 0 255 -488 224 203 20 53 174 90 0 211 -489 21 487 -10 552 659 90 664 0 -490 21 488 10 614 779 90 0 16 -491 87 217 10 558 683 90 0 383 -492 67 452 30 285 443 90 0 216 -493 119 223 -20 817 942 90 604 0 -494 398 428 -20 545 650 90 788 0 -495 344 262 20 483 624 90 0 420 -496 390 301 10 359 482 90 0 307 -497 167 27 30 450 573 90 0 434 -498 236 247 20 394 540 90 0 311 -499 313 119 30 648 773 90 0 405 -500 13 51 -10 1282 1425 90 83 0 -501 200 13 10 378 472 90 0 799 -502 0 120 30 405 518 90 0 222 -503 202 4 10 919 1035 90 0 156 -504 343 144 -10 290 361 90 306 0 -505 94 383 -30 599 723 90 958 0 -506 250 411 30 465 580 90 0 260 -507 464 134 -40 1005 1149 90 942 0 -508 443 237 20 212 355 90 0 152 -509 4 114 -10 671 810 90 927 0 -510 169 336 -30 807 923 90 39 0 -511 200 178 -20 216 322 90 544 0 -512 412 453 -10 646 778 90 743 0 -513 121 151 -10 1022 1141 90 33 0 -514 403 93 -10 1095 1216 90 292 0 -515 399 301 -30 557 662 90 166 0 -516 97 387 -10 799 893 90 317 0 -517 176 8 -10 921 1060 90 634 0 -518 62 326 -20 877 1006 90 967 0 -519 151 207 -20 695 824 90 424 0 -520 299 98 30 283 401 90 0 348 -521 334 240 30 497 612 90 0 996 -522 92 270 -10 937 1047 90 541 0 -523 444 269 20 502 636 90 0 657 -524 132 223 -20 803 942 90 40 0 -525 428 25 -20 1168 1258 90 195 0 -526 413 421 10 740 855 0 0 1023 -527 382 498 10 601 688 90 0 636 -528 391 429 20 434 566 90 0 354 -529 398 97 10 253 354 90 0 300 -530 192 265 -20 624 775 90 368 0 -531 438 26 10 397 553 0 0 1005 -532 44 79 10 267 394 90 0 894 -533 137 290 -10 169 252 90 577 0 -534 446 319 30 345 435 90 0 314 -535 175 487 20 248 398 90 0 671 -536 26 45 30 303 458 0 0 1025 -537 147 435 20 504 656 90 0 816 -538 111 459 -10 1108 1239 90 789 0 -539 472 132 -40 728 864 90 175 0 -540 349 158 -20 1022 1121 90 917 0 -541 86 268 10 655 769 90 0 522 -542 415 216 10 292 410 90 0 15 -543 121 218 20 159 289 90 0 679 -544 210 185 20 76 204 90 0 511 -545 98 215 20 190 306 90 0 297 -546 484 174 10 473 567 90 0 377 -547 328 458 10 907 1043 0 0 1024 -548 313 126 -20 850 947 90 272 0 -549 390 415 -10 1025 1108 90 558 0 -550 459 17 -20 987 1146 90 722 0 -551 481 124 10 463 613 90 0 609 -552 386 414 10 1082 1189 0 0 1027 -553 116 466 20 289 403 90 0 579 -554 468 295 -10 904 1018 90 950 0 -555 391 426 -10 724 845 90 476 0 -556 408 279 -10 650 779 90 755 0 -557 15 68 10 412 544 90 0 236 -558 392 424 10 917 1017 90 0 549 -559 88 95 -20 624 747 90 698 0 -560 116 151 -10 732 878 90 131 0 -561 240 250 10 308 437 90 0 438 -562 123 159 20 156 294 90 0 148 -563 89 290 20 201 324 90 0 986 -564 39 50 30 416 536 0 0 1019 -565 359 179 -20 418 577 90 3 0 -566 338 257 20 692 793 0 0 1007 -567 92 236 -20 1007 1139 90 723 0 -568 413 417 -20 1111 1232 90 223 0 -569 91 101 10 818 929 90 0 603 -570 55 449 20 278 405 90 0 752 -571 57 425 20 260 387 90 0 341 -572 465 287 10 524 650 90 0 881 -573 320 280 10 201 318 90 0 947 -574 322 468 20 533 667 90 0 202 -575 483 458 10 607 756 90 0 302 -576 312 267 -10 852 951 90 199 0 -577 139 291 10 118 235 90 0 533 -578 388 408 -20 321 465 90 451 0 -579 110 459 -20 1029 1136 90 553 0 -580 459 372 -20 631 768 90 620 0 -581 204 269 30 49 194 90 0 444 -582 407 98 10 218 345 90 0 204 -583 335 256 -20 861 991 90 734 0 -584 471 484 -20 558 632 90 990 0 -585 339 244 30 201 348 0 0 1053 -586 89 272 10 471 582 90 0 886 -587 488 96 -30 881 1001 90 710 0 -588 316 286 -20 575 689 90 337 0 -589 235 50 -20 797 912 90 198 0 -590 316 258 -20 262 424 90 155 0 -591 425 288 10 578 694 90 0 220 -592 213 397 -20 652 773 90 761 0 -593 113 156 -20 567 672 90 57 0 -594 199 9 20 840 924 90 0 399 -595 463 167 10 619 746 90 0 468 -596 129 27 -20 663 763 90 351 0 -597 248 404 -40 165 323 90 238 0 -598 405 276 -30 738 881 90 599 0 -599 400 288 30 154 300 90 0 598 -600 61 156 30 431 563 90 0 870 -601 393 20 -20 1120 1292 90 182 0 -602 484 177 -20 363 490 90 449 0 -603 108 116 -10 892 993 90 569 0 -604 112 217 20 345 481 90 0 493 -605 389 404 10 243 356 90 0 427 -606 102 391 -20 1082 1177 90 96 0 -607 434 26 10 499 640 90 0 135 -608 488 26 -10 1113 1222 90 839 0 -609 477 120 -10 938 1057 90 551 0 -610 126 220 -10 630 740 90 441 0 -611 439 310 10 198 342 90 0 940 -612 212 319 30 209 311 90 0 855 -613 320 283 30 384 507 90 0 439 -614 17 459 -20 1185 1289 90 711 0 -615 236 213 20 39 162 90 0 667 -616 68 108 10 230 350 90 0 338 -617 390 294 -10 827 957 90 70 0 -618 275 42 30 509 637 90 0 366 -619 423 214 20 580 684 0 0 1040 -620 460 367 20 375 468 90 0 580 -621 272 402 10 280 390 90 0 969 -622 478 102 10 690 789 90 0 877 -623 400 260 40 150 237 90 0 992 -624 181 6 -30 656 774 90 92 0 -625 470 475 -10 342 468 90 482 0 -626 245 408 -20 575 663 90 287 0 -627 93 96 20 336 464 90 0 462 -628 218 318 -20 854 969 90 794 0 -629 441 265 40 304 441 90 0 826 -630 21 64 20 804 890 0 0 1004 -631 356 23 -20 276 405 90 76 0 -632 267 44 20 613 729 90 0 12 -633 277 50 10 234 352 90 0 929 -634 182 4 10 571 675 90 0 517 -635 26 36 10 622 727 90 0 113 -636 384 491 -10 848 998 90 527 0 -637 418 290 -20 1147 1247 90 55 0 -638 321 277 10 75 187 90 0 72 -639 358 16 30 571 665 90 0 730 -640 389 334 -20 282 406 90 783 0 -641 48 78 -20 946 1087 90 301 0 -642 24 68 -30 1236 1382 90 264 0 -643 206 225 -30 388 463 90 371 0 -644 290 141 30 610 744 90 0 1000 -645 439 15 20 615 741 90 0 889 -646 359 182 -20 735 833 90 193 0 -647 413 287 -10 1325 1440 90 239 0 -648 230 49 20 201 302 90 0 767 -649 407 280 -20 563 684 90 10 0 -650 459 295 -30 1189 1293 90 423 0 -651 468 199 20 651 748 90 0 733 -652 101 384 30 200 296 90 0 142 -653 170 26 -10 817 955 90 484 0 -654 197 270 30 448 573 90 0 918 -655 415 289 20 169 331 90 0 976 -656 203 390 40 279 388 90 0 168 -657 443 272 -20 788 902 90 523 0 -658 210 391 30 172 301 90 0 771 -659 363 22 20 922 1066 0 0 1015 -660 352 176 20 126 233 90 0 263 -661 212 223 -10 742 849 90 968 0 -662 8 120 -20 1128 1273 90 196 0 -663 244 250 -10 123 250 90 36 0 -664 18 484 10 345 495 90 0 489 -665 379 82 10 796 915 0 0 1035 -666 84 346 20 1044 1207 0 0 1038 -667 233 207 -20 72 201 90 615 0 -668 344 62 -20 1176 1306 90 165 0 -669 20 489 -30 833 924 90 79 0 -670 361 181 -30 626 759 90 402 0 -671 174 494 -20 469 587 90 535 0 -672 49 76 -20 882 966 90 991 0 -673 390 325 -20 839 973 90 748 0 -674 7 118 20 958 1076 0 0 1008 -675 107 26 -30 492 605 90 842 0 -676 312 270 -20 951 1038 90 312 0 -677 399 102 -20 608 756 90 780 0 -678 109 108 10 422 532 90 0 773 -679 115 218 -20 247 393 90 543 0 -680 88 287 30 857 980 90 0 946 -681 54 424 10 285 423 90 0 948 -682 125 32 30 377 492 90 0 749 -683 199 12 20 462 570 90 0 426 -684 457 374 -20 909 1040 90 480 0 -685 391 413 -30 985 1097 90 346 0 -686 304 102 30 481 583 90 0 327 -687 391 293 20 736 866 0 0 1044 -688 66 336 -20 674 823 90 474 0 -689 132 291 10 710 824 90 0 225 -690 18 462 20 1005 1100 90 0 845 -691 347 62 -20 1083 1214 90 792 0 -692 466 142 -10 436 592 90 144 0 -693 389 17 -10 960 1081 90 203 0 -694 342 254 10 209 337 90 0 796 -695 92 223 10 934 1056 0 0 1042 -696 404 83 30 806 941 0 0 1030 -697 290 46 -10 800 929 90 421 0 -698 95 92 20 526 650 90 0 559 -699 200 265 -20 822 953 90 335 0 -700 435 16 -20 813 911 90 184 0 -701 25 499 -30 1118 1241 90 49 0 -702 319 260 20 460 596 0 0 1055 -703 116 225 -20 720 851 90 742 0 -704 402 284 30 267 412 90 0 99 -705 108 105 20 234 353 90 0 47 -706 386 13 -20 772 891 90 470 0 -707 472 129 10 278 418 90 0 111 -708 132 57 -20 360 479 90 382 0 -709 43 71 40 505 600 0 0 1010 -710 493 91 30 500 640 90 0 587 -711 12 451 20 311 454 90 0 614 -712 201 188 -20 508 599 90 308 0 -713 60 428 20 1033 1162 0 0 1006 -714 243 248 -20 212 346 90 183 0 -715 230 197 -20 534 700 90 804 0 -716 389 11 20 677 800 90 0 232 -717 401 281 -20 921 1071 90 273 0 -718 459 14 20 362 448 90 0 326 -719 411 95 -20 443 553 90 479 0 -720 0 297 10 639 776 90 0 2 -721 476 196 -30 467 553 90 11 0 -722 458 16 20 313 391 90 0 550 -723 92 230 20 450 597 90 0 567 -724 432 24 20 962 1094 0 0 1003 -725 215 317 10 110 223 90 0 78 -726 371 192 30 167 283 90 0 41 -727 481 20 20 538 666 90 0 994 -728 152 207 -20 795 907 90 395 0 -729 14 459 20 517 664 90 0 408 -730 361 17 -30 751 858 90 639 0 -731 8 497 40 919 1047 90 0 375 -732 206 186 -20 857 989 90 979 0 -733 421 218 -20 845 973 90 651 0 -734 402 264 20 187 303 90 0 583 -735 388 325 -30 930 1067 90 325 0 -736 35 304 30 252 372 0 0 1026 -737 321 263 20 653 771 90 0 873 -738 444 313 20 440 534 90 0 807 -739 188 462 -20 740 839 90 208 0 -740 400 103 10 516 666 90 0 989 -741 418 221 -20 1127 1246 90 309 0 -742 112 219 20 428 581 90 0 703 -743 408 452 10 480 575 90 0 512 -744 30 301 -10 637 748 90 912 0 -745 205 228 10 90 193 0 0 1056 -746 407 88 -20 1004 1115 90 37 0 -747 380 489 -10 1053 1175 90 793 0 -748 395 331 20 649 774 90 0 673 -749 133 26 -30 744 870 90 682 0 -750 21 68 -20 1157 1275 90 271 0 -751 313 282 20 751 886 0 0 1054 -752 53 440 -20 591 725 90 570 0 -753 458 130 -10 1113 1237 90 242 0 -754 437 15 -20 719 821 90 955 0 -755 400 286 10 187 306 90 0 556 -756 346 144 10 637 753 90 0 169 -757 440 244 10 774 909 90 0 453 -758 280 162 -20 125 243 90 856 0 -759 488 173 -20 563 665 90 299 0 -760 326 118 -30 195 291 90 388 0 -761 207 400 20 492 559 90 0 592 -762 391 18 -20 1056 1169 90 875 0 -763 37 55 -10 694 816 90 360 0 -764 204 15 20 239 351 90 0 879 -765 173 28 -20 1112 1213 90 48 0 -766 343 148 -40 345 495 90 294 0 -767 231 43 -20 429 531 90 648 0 -768 445 273 20 700 806 90 0 330 -769 432 27 -10 766 922 90 483 0 -770 439 305 30 693 841 90 0 883 -771 208 396 -30 375 487 90 658 0 -772 249 407 10 373 485 90 0 471 -773 107 112 -10 698 817 90 678 0 -774 279 159 20 238 315 90 0 410 -775 376 494 30 302 428 90 0 188 -776 403 262 -20 466 574 90 107 0 -777 41 47 20 331 433 90 0 320 -778 96 213 -30 292 389 90 66 0 -779 461 167 -20 450 551 90 84 0 -780 391 99 20 206 311 90 0 677 -781 116 221 30 560 639 0 0 1046 -782 165 343 10 550 619 90 0 256 -783 388 334 20 193 314 90 0 640 -784 130 57 40 262 392 90 0 852 -785 422 409 10 234 403 90 0 217 -786 66 156 -20 635 736 90 390 0 -787 485 86 20 307 455 90 0 961 -788 389 428 20 348 468 90 0 494 -789 117 467 10 254 393 90 0 538 -790 475 477 -30 1014 1106 90 993 0 -791 429 27 -20 1231 1380 90 177 0 -792 339 60 20 249 362 90 0 691 -793 381 494 10 768 888 90 0 747 -794 218 321 20 662 794 90 0 628 -795 64 101 20 643 748 90 0 895 -796 343 254 -10 301 426 90 694 0 -797 478 464 10 356 449 90 0 19 -798 423 286 20 407 499 90 0 141 -799 198 9 -10 738 843 90 501 0 -800 225 196 10 85 216 90 0 442 -801 374 190 20 226 411 90 0 276 -802 462 14 -20 915 1029 90 100 0 -803 347 54 -20 813 928 90 259 0 -804 231 195 20 460 589 90 0 715 -805 72 96 20 1194 1305 90 0 878 -806 489 87 20 403 546 90 0 290 -807 443 313 -20 521 635 90 738 0 -808 233 204 20 164 294 90 0 277 -809 477 483 -10 710 851 90 60 0 -810 459 368 10 280 380 90 0 959 -811 95 277 -40 1032 1147 90 153 0 -812 16 460 -20 1099 1193 90 866 0 -813 100 266 -10 183 300 90 116 0 -814 288 53 -20 895 1028 90 212 0 -815 211 386 20 141 250 90 0 281 -816 144 439 -20 711 821 90 537 0 -817 224 314 10 1029 1172 0 0 1029 -818 79 291 10 486 601 90 0 27 -819 95 235 10 155 248 90 0 999 -820 7 123 30 296 433 90 0 871 -821 91 217 10 676 754 90 0 150 -822 105 27 10 571 709 0 0 1012 -823 101 385 20 239 344 90 0 258 -824 238 210 -10 735 843 90 964 0 -825 439 67 10 290 417 90 0 932 -826 435 267 -40 1155 1281 90 629 0 -827 443 64 -20 768 866 90 370 0 -828 92 234 -10 821 959 90 943 0 -829 450 265 10 404 538 90 0 248 -830 102 27 -20 764 885 90 459 0 -831 492 94 10 693 817 90 0 58 -832 440 63 20 835 984 90 0 171 -833 453 367 20 1021 1124 0 0 1022 -834 15 69 10 320 453 90 0 215 -835 489 17 -10 729 860 90 432 0 -836 335 255 20 85 239 90 0 69 -837 419 418 10 367 481 90 0 132 -838 292 41 10 698 840 0 0 1036 -839 489 27 10 999 1153 90 0 608 -840 96 270 20 262 413 90 0 463 -841 461 369 -20 564 648 90 960 0 -842 105 22 30 316 408 90 0 675 -843 479 121 -30 680 765 90 94 0 -844 207 223 -20 543 677 90 143 0 -845 17 458 -20 1255 1402 90 690 0 -846 186 7 20 459 597 90 0 454 -847 465 168 10 794 944 90 0 916 -848 416 288 20 1239 1340 0 0 1039 -849 388 418 10 217 372 90 0 342 -850 92 233 -10 741 856 90 246 0 -851 179 492 -20 641 788 90 226 0 -852 132 55 -40 553 651 90 784 0 -853 485 24 20 370 463 90 0 858 -854 388 331 20 160 303 90 0 861 -855 217 323 -30 358 538 90 612 0 -856 281 164 20 91 225 90 0 758 -857 169 340 -20 723 820 90 125 0 -858 491 20 -20 835 943 90 853 0 -859 279 42 40 231 370 90 0 324 -860 439 243 20 1152 1266 90 0 221 -861 391 334 -20 376 496 90 854 0 -862 96 244 -10 1294 1417 90 433 0 -863 441 273 -20 879 996 90 435 0 -864 477 478 20 914 1021 90 0 280 -865 56 434 -20 844 977 90 275 0 -866 12 463 20 706 846 90 0 812 -867 458 164 20 335 477 0 0 1031 -868 446 65 20 478 605 90 0 146 -869 71 156 -20 806 942 90 274 0 -870 65 153 -30 523 662 90 600 0 -871 8 118 -30 1038 1178 90 820 0 -872 102 29 30 864 969 90 0 903 -873 315 265 -20 746 870 90 737 0 -874 343 62 -30 1271 1394 90 386 0 -875 384 16 20 881 971 90 0 762 -876 67 105 -10 526 674 90 74 0 -877 478 118 -10 1045 1134 90 622 0 -878 73 101 -20 1284 1405 90 805 0 -879 200 14 -20 272 395 90 764 0 -880 114 225 -20 618 769 90 902 0 -881 460 293 -10 1083 1215 90 572 0 -882 51 447 -20 413 525 90 350 0 -883 418 295 -30 1041 1163 90 770 0 -884 282 139 20 133 282 90 0 900 -885 477 122 -20 841 970 90 982 0 -886 91 266 -10 763 852 90 586 0 -887 16 463 -20 823 916 90 970 0 -888 228 199 10 658 760 90 0 355 -889 435 20 -20 900 1013 90 645 0 -890 467 195 10 236 392 90 0 253 -891 469 132 10 828 951 0 0 1043 -892 465 136 -10 915 1055 90 133 0 -893 246 255 10 805 891 90 0 266 -894 49 75 -10 770 896 90 532 0 -895 66 98 -20 913 1027 90 795 0 -896 166 32 -20 256 391 90 984 0 -897 326 466 -10 737 832 90 980 0 -898 202 186 20 578 714 90 0 915 -899 467 285 20 352 455 90 0 85 -900 290 136 -20 521 642 90 884 0 -901 341 58 10 345 452 90 0 319 -902 121 219 20 132 274 90 0 880 -903 107 35 -30 964 1063 90 872 0 -904 216 319 -20 283 425 90 130 0 -905 134 288 -20 888 1014 90 945 0 -906 89 270 10 558 679 90 0 174 -907 136 52 10 734 842 0 0 1028 -908 462 167 -30 514 669 90 194 0 -909 340 54 10 428 557 0 0 1033 -910 80 286 10 566 712 90 0 189 -911 38 301 -20 720 862 90 922 0 -912 25 307 10 442 567 90 0 744 -913 470 139 -10 614 785 90 373 0 -914 270 400 10 151 253 90 0 213 -915 204 187 -20 771 890 90 898 0 -916 460 171 -10 900 1031 90 847 0 -917 399 106 20 892 1022 90 0 540 -918 197 267 -30 538 669 90 654 0 -919 77 350 -10 964 1092 90 97 0 -920 91 231 30 549 681 90 0 71 -921 398 103 -20 699 848 90 965 0 -922 35 303 20 221 353 90 0 911 -923 231 204 -20 741 869 90 359 0 -924 311 266 10 63 165 90 0 224 -925 416 420 20 652 757 90 0 24 -926 231 203 20 278 366 0 0 1057 -927 4 116 10 591 706 90 0 509 -928 417 217 -20 399 488 90 293 0 -929 268 52 -10 977 1105 90 633 0 -930 345 144 30 533 676 90 0 241 -931 368 85 30 202 345 90 0 163 -932 441 65 -10 385 508 90 825 0 -933 201 270 10 88 198 90 0 52 -934 0 293 30 570 657 90 0 62 -935 167 24 -20 622 782 90 244 0 -936 186 464 10 639 754 90 0 376 -937 7 292 10 246 380 90 0 181 -938 80 290 -20 413 492 90 411 0 -939 405 455 -10 857 974 90 440 0 -940 439 312 -10 230 350 90 611 0 -941 300 108 10 150 265 90 0 243 -942 478 121 40 756 871 90 0 507 -943 92 232 10 364 500 90 0 828 -944 111 463 -10 850 944 90 103 0 -945 132 294 20 428 547 90 0 905 -946 134 285 -30 1087 1185 90 680 0 -947 316 284 -10 457 622 90 573 0 -948 56 428 -10 394 503 90 681 0 -949 232 47 10 241 349 90 0 64 -950 466 291 10 615 746 90 0 554 -951 341 257 20 401 513 90 0 21 -952 420 213 -10 462 616 90 167 0 -953 116 152 20 652 777 0 0 1041 -954 163 337 -40 258 353 90 981 0 -955 440 7 20 424 554 90 0 754 -956 208 222 -30 644 757 90 218 0 -957 485 95 10 281 401 90 0 318 -958 97 385 30 502 633 90 0 505 -959 462 367 -10 465 561 90 810 0 -960 455 365 20 235 352 90 0 841 -961 492 95 -20 777 915 90 787 0 -962 405 450 20 288 398 90 0 486 -963 371 193 20 133 221 90 0 279 -964 234 202 10 359 471 90 0 824 -965 404 103 20 431 562 90 0 921 -966 24 41 10 515 643 90 0 367 -967 67 334 20 509 622 90 0 518 -968 207 227 10 48 180 90 0 661 -969 277 403 -10 357 502 90 621 0 -970 15 457 20 452 544 90 0 887 -971 217 319 -10 754 886 90 13 0 -972 111 467 -10 568 676 90 331 0 -973 378 493 30 419 495 90 0 245 -974 112 465 10 658 770 0 0 1016 -975 173 25 20 899 1060 0 0 1021 -976 421 292 -20 204 329 90 655 0 -977 74 146 30 204 305 90 0 352 -978 178 491 10 563 683 90 0 358 -979 204 185 20 697 779 90 0 732 -980 319 470 10 338 487 90 0 897 -981 163 331 40 118 245 90 0 954 -982 470 125 20 253 379 90 0 885 -983 315 121 -20 563 673 90 353 0 -984 166 34 20 231 314 90 0 896 -985 284 140 40 115 227 90 0 305 -986 85 288 -20 288 426 90 563 0 -987 376 190 30 344 477 90 0 466 -988 238 203 10 451 567 90 0 286 -989 399 104 -10 799 930 90 740 0 -990 472 481 20 444 560 90 0 584 -991 46 74 20 592 703 90 0 672 -992 401 255 -40 635 787 90 623 0 -993 475 480 30 806 942 90 0 790 -994 485 27 -20 1193 1328 90 727 0 -995 476 174 -20 823 975 90 296 0 -996 330 242 -30 606 691 90 521 0 -997 332 249 30 82 204 90 0 87 -998 375 80 -40 526 623 90 137 0 -999 94 235 -10 191 302 90 819 0 -1000 287 144 -30 805 918 90 644 0 -1001 470 473 -10 1195 1296 90 43 0 -1002 464 13 -20 843 916 90 430 0 -1003 432 24 -20 962 1094 90 724 0 -1004 21 64 -20 804 890 90 630 0 -1005 438 26 -10 397 553 90 531 0 -1006 60 428 -20 1033 1162 90 713 0 -1007 338 257 -20 692 793 90 566 0 -1008 7 118 -20 958 1076 90 674 0 -1009 474 96 -30 271 407 90 164 0 -1010 43 71 -40 505 600 90 709 0 -1011 87 96 -30 715 838 90 172 0 -1012 105 27 -10 571 709 90 822 0 -1013 399 450 -20 964 1063 90 123 0 -1014 100 394 -10 990 1082 90 431 0 -1015 363 22 -20 922 1066 90 659 0 -1016 112 465 -10 658 770 90 974 0 -1017 172 488 -10 297 387 90 303 0 -1018 2 295 -30 741 860 90 126 0 -1019 39 50 -30 416 536 90 564 0 -1020 202 9 -10 1170 1336 90 82 0 -1021 173 25 -20 899 1060 90 975 0 -1022 453 367 -20 1021 1124 90 833 0 -1023 413 421 -10 740 855 90 526 0 -1024 328 458 -10 907 1043 90 547 0 -1025 26 45 -30 303 458 90 536 0 -1026 35 304 -30 252 372 90 736 0 -1027 386 414 -10 1082 1189 90 552 0 -1028 136 52 -10 734 842 90 907 0 -1029 224 314 -10 1029 1172 90 817 0 -1030 404 83 -30 806 941 90 696 0 -1031 458 164 -20 335 477 90 867 0 -1032 440 61 -30 953 1050 90 270 0 -1033 340 54 -10 428 557 90 909 0 -1034 140 431 -30 265 338 90 158 0 -1035 379 82 -10 796 915 90 665 0 -1036 292 41 -10 698 840 90 838 0 -1037 69 336 -20 399 548 90 393 0 -1038 84 346 -20 1044 1207 90 666 0 -1039 416 288 -20 1239 1340 90 848 0 -1040 423 214 -20 580 684 90 619 0 -1041 116 152 -20 652 777 90 953 0 -1042 92 223 -10 934 1056 90 695 0 -1043 469 132 -10 828 951 90 891 0 -1044 391 293 -20 736 866 90 687 0 -1045 319 124 -20 381 485 90 321 0 -1046 116 221 -30 560 639 90 781 0 -1047 379 196 -20 633 745 90 31 0 -1048 128 291 -10 591 754 90 46 0 -1049 123 222 -30 355 450 90 282 0 -1050 165 337 -20 320 475 90 404 0 -1051 287 143 -10 718 823 90 25 0 -1052 154 207 -20 961 1107 90 186 0 -1053 339 244 -30 201 348 90 585 0 -1054 313 282 -20 751 886 90 751 0 -1055 319 260 -20 460 596 90 702 0 -1056 205 228 -10 90 193 90 745 0 -1057 231 203 -20 278 366 90 926 0 -1058 237 254 -20 608 709 90 22 0 diff --git a/jsprit-instances/instances/lilim/1000/LC1106.txt b/jsprit-instances/instances/lilim/1000/LC1106.txt deleted file mode 100644 index c3e003780..000000000 --- a/jsprit-instances/instances/lilim/1000/LC1106.txt +++ /dev/null @@ -1,1056 +0,0 @@ -250 200 1 -0 250 250 0 0 1824 0 0 0 -1 387 297 -20 176 295 90 231 0 -2 5 297 -20 871 1101 90 407 0 -3 355 177 20 140 299 90 0 402 -4 78 346 30 286 473 90 0 89 -5 286 159 20 451 675 90 0 477 -6 322 465 10 226 395 90 0 118 -7 393 408 30 650 688 90 0 67 -8 89 216 10 466 591 90 0 383 -9 76 345 -10 425 701 90 380 0 -10 410 285 20 503 553 90 0 556 -11 472 189 30 345 480 90 0 721 -12 270 49 -20 934 961 90 192 0 -13 219 325 10 504 579 90 0 78 -14 437 12 20 494 675 90 0 700 -15 418 218 -30 837 1167 90 928 0 -16 20 488 10 654 920 90 0 436 -17 77 347 20 410 531 90 0 105 -18 73 346 -10 643 856 90 44 0 -19 480 455 -20 1005 1296 90 68 0 -20 129 292 10 539 623 90 0 905 -21 337 257 -20 687 981 90 796 0 -22 237 254 20 623 693 90 0 266 -23 131 220 30 710 849 0 0 1037 -24 417 417 -30 881 1093 90 267 0 -25 287 143 -40 628 912 90 985 0 -26 379 80 -20 704 823 90 151 0 -27 87 285 -10 660 812 90 910 0 -28 374 489 20 269 462 90 0 527 -29 440 247 20 743 753 90 0 883 -30 281 137 10 300 485 90 0 900 -31 379 196 -30 577 801 90 726 0 -32 297 102 10 192 303 90 0 327 -33 39 76 10 273 482 90 0 372 -34 35 306 20 328 481 90 0 912 -35 435 68 10 259 434 90 0 932 -36 245 251 10 5 241 90 0 663 -37 409 88 -10 583 788 90 582 0 -38 273 55 20 196 352 90 0 633 -39 163 340 -20 468 513 90 404 0 -40 129 223 20 180 434 90 0 77 -41 371 200 -30 798 961 90 466 0 -42 357 26 -30 1059 1304 90 639 0 -43 470 473 -20 1200 1291 90 809 0 -44 77 344 10 248 325 90 0 18 -45 478 461 10 434 558 90 0 302 -46 128 291 -20 614 732 90 329 0 -47 111 113 10 600 725 90 0 389 -48 164 21 -20 567 650 90 244 0 -49 21 485 30 441 585 90 0 490 -50 108 26 10 387 528 90 0 822 -51 424 286 -20 430 658 90 798 0 -52 200 270 20 138 329 90 0 654 -53 7 300 30 1049 1111 90 0 62 -54 433 31 10 285 442 0 0 1005 -55 420 295 20 922 1097 90 0 848 -56 451 367 -20 1115 1214 90 580 0 -57 118 157 20 398 470 90 0 418 -58 489 101 -10 922 1149 90 831 0 -59 200 261 -20 934 1028 90 368 0 -60 476 483 -20 550 830 90 990 0 -61 30 302 10 534 669 90 0 744 -62 8 300 -30 1074 1268 90 53 0 -63 275 45 20 474 485 90 0 632 -64 238 46 -10 612 907 90 214 0 -65 152 206 -20 889 995 90 424 0 -66 99 218 30 154 473 90 0 150 -67 393 410 -30 882 1013 90 7 0 -68 480 460 20 455 721 90 0 19 -69 337 256 20 102 252 90 0 694 -70 389 300 10 285 372 90 0 307 -71 90 237 -20 1190 1322 90 999 0 -72 321 280 -10 77 298 90 638 0 -73 417 218 -10 1067 1120 90 952 0 -74 64 108 10 480 533 90 0 114 -75 57 432 -20 894 1112 90 865 0 -76 356 24 20 249 317 90 0 631 -77 143 207 -20 202 390 90 40 0 -78 221 325 -10 554 713 90 13 0 -79 22 483 30 325 369 90 0 701 -80 24 65 -20 839 1042 90 271 0 -81 141 431 -30 320 466 90 158 0 -82 202 9 -10 1125 1382 90 501 0 -83 20 48 -20 1273 1379 90 452 0 -84 457 163 20 286 343 90 0 916 -85 470 290 -10 854 876 90 289 0 -86 268 400 -30 824 973 90 213 0 -87 337 251 10 92 262 90 0 120 -88 366 20 -20 716 1086 90 730 0 -89 72 344 -30 559 754 90 4 0 -90 149 203 10 524 626 90 0 395 -91 55 428 -10 523 555 90 681 0 -92 189 7 30 250 482 90 0 624 -93 397 18 -20 506 587 90 182 0 -94 481 122 -10 540 720 90 551 0 -95 20 73 10 290 440 90 0 557 -96 54 430 -20 502 761 90 571 0 -97 74 350 10 848 1022 0 0 1036 -98 202 8 -20 1047 1277 90 683 0 -99 406 285 20 279 588 90 0 649 -100 460 2 20 586 789 90 0 802 -101 441 244 -20 882 983 90 309 0 -102 1 293 10 393 652 90 0 720 -103 115 465 10 289 585 90 0 944 -104 422 420 -10 447 589 90 837 0 -105 75 347 -20 704 978 90 17 0 -106 141 428 20 208 512 90 0 537 -107 404 264 20 277 579 90 0 992 -108 398 23 10 270 521 90 0 203 -109 148 211 20 119 280 90 0 417 -110 362 22 -10 975 1195 90 229 0 -111 479 127 -20 415 474 90 982 0 -112 443 246 20 528 601 90 0 647 -113 22 37 -10 793 934 90 966 0 -114 65 100 -10 676 897 90 74 0 -115 404 447 20 250 565 90 0 743 -116 102 264 10 148 195 90 0 463 -117 444 271 10 616 705 90 0 330 -118 325 466 -10 573 815 90 6 0 -119 124 219 -10 506 679 90 298 0 -120 335 243 -10 313 609 90 87 0 -121 26 42 20 417 557 90 0 448 -122 113 106 20 198 391 90 0 316 -123 399 450 -40 994 1034 90 939 0 -124 146 439 10 620 729 90 0 816 -125 162 336 -40 207 221 90 981 0 -126 2 295 -30 726 875 90 934 0 -127 122 35 -20 250 629 90 351 0 -128 346 60 10 979 1134 90 0 874 -129 93 213 30 378 489 0 0 1038 -130 218 316 20 73 199 90 0 612 -131 116 156 10 519 533 90 0 953 -132 419 422 20 570 652 90 0 223 -133 467 141 -10 496 715 90 692 0 -134 187 491 -10 728 897 90 851 0 -135 433 25 -10 898 975 90 607 0 -136 286 137 -40 410 565 90 305 0 -137 370 82 40 351 608 90 0 163 -138 132 290 -30 753 962 90 249 0 -139 435 11 40 302 482 90 0 955 -140 206 261 -10 1036 1118 90 918 0 -141 428 291 10 601 860 90 0 676 -142 95 384 -20 642 863 90 823 0 -143 205 223 -30 395 641 90 371 0 -144 463 140 -40 239 451 90 175 0 -145 343 47 -10 677 866 90 319 0 -146 435 62 30 1143 1231 0 0 1009 -147 387 488 -20 947 1087 90 636 0 -148 121 157 -20 172 327 90 562 0 -149 182 463 30 302 510 90 0 345 -150 92 216 -30 737 874 90 66 0 -151 370 83 20 298 478 90 0 26 -152 444 242 -20 404 538 90 508 0 -153 90 285 -20 886 1136 90 986 0 -154 446 64 -10 629 635 90 825 0 -155 312 264 20 103 208 90 0 702 -156 208 11 -10 1245 1454 90 503 0 -157 442 247 -10 587 725 90 254 0 -158 140 431 30 211 493 90 0 81 -159 118 153 -10 925 1051 90 593 0 -160 134 428 -20 930 996 90 412 0 -161 91 235 -10 1050 1278 90 819 0 -162 406 257 10 497 736 90 0 583 -163 377 76 -40 567 770 90 137 0 -164 474 96 30 271 437 90 0 242 -165 346 57 -30 800 1126 90 386 0 -166 393 301 30 448 578 90 0 515 -167 412 214 10 165 376 90 0 741 -168 210 398 10 451 788 90 0 391 -169 346 150 -20 933 1013 90 241 0 -170 62 453 10 516 584 90 0 240 -171 437 61 -20 1024 1165 90 832 0 -172 87 96 -20 702 852 90 322 0 -173 367 83 30 255 336 0 0 1032 -174 91 268 -10 833 966 90 886 0 -175 459 145 40 233 318 90 0 144 -176 63 444 -10 1103 1127 90 178 0 -177 433 27 20 622 699 90 0 525 -178 60 454 10 805 1040 90 0 176 -179 478 99 -20 561 732 90 323 0 -180 485 454 -20 843 890 90 295 0 -181 6 292 -10 247 496 90 937 0 -182 398 20 20 273 457 90 0 93 -183 248 251 20 2 279 90 0 498 -184 433 15 20 297 391 90 0 645 -185 64 426 -20 1168 1216 90 948 0 -186 154 207 20 907 1162 0 0 1048 -187 481 456 -30 946 1173 90 363 0 -188 380 498 10 463 641 90 0 747 -189 88 286 10 784 871 90 0 811 -190 111 23 10 266 479 90 0 675 -191 199 187 -20 407 516 90 278 0 -192 269 48 20 789 923 90 0 12 -193 367 178 -20 508 683 90 456 0 -194 452 163 30 219 420 90 0 867 -195 431 28 20 698 809 90 0 379 -196 8 116 20 826 1025 0 0 1007 -197 233 47 20 226 546 90 0 648 -198 237 43 -10 508 825 90 949 0 -199 320 262 -20 533 708 90 590 0 -200 188 4 20 368 500 90 0 445 -201 180 6 -20 727 885 90 846 0 -202 328 466 -20 869 884 90 574 0 -203 393 12 -10 629 660 90 108 0 -204 409 90 -30 569 617 90 719 0 -205 406 87 -30 886 1049 90 696 0 -206 394 407 20 739 783 90 0 427 -207 358 183 -10 889 1048 90 263 0 -208 186 461 20 220 468 90 0 376 -209 38 72 30 362 553 90 0 991 -210 323 471 30 494 521 0 0 1021 -211 224 192 -10 186 303 90 800 0 -212 278 46 20 205 293 90 0 859 -213 272 403 30 502 548 90 0 86 -214 232 42 10 518 626 90 0 64 -215 18 63 -10 696 813 90 834 0 -216 58 458 -30 632 843 90 219 0 -217 416 417 -10 1014 1142 90 526 0 -218 205 230 30 228 239 90 0 893 -219 65 453 30 439 475 90 0 216 -220 421 294 -20 857 979 90 314 0 -221 434 245 -10 1348 1445 90 253 0 -222 2 116 20 489 623 90 0 927 -223 411 421 -20 820 959 90 132 0 -224 315 260 10 228 272 90 0 312 -225 136 288 -10 947 1139 90 689 0 -226 173 490 -20 414 454 90 535 0 -227 90 232 -10 629 785 90 246 0 -228 402 265 20 269 403 90 0 776 -229 361 14 10 709 715 90 0 110 -230 348 147 -10 796 963 90 504 0 -231 385 295 20 142 291 90 0 1 -232 394 23 -20 1240 1358 90 716 0 -233 466 295 -10 939 1166 90 572 0 -234 71 103 -20 1267 1503 90 777 0 -235 125 29 30 528 708 90 0 429 -236 25 65 -20 936 1126 90 630 0 -237 58 449 -30 935 1100 90 349 0 -238 246 398 40 148 255 90 0 597 -239 423 294 -10 706 947 90 611 0 -240 59 459 -10 617 675 90 170 0 -241 348 145 20 659 916 90 0 169 -242 477 97 -30 440 476 90 164 0 -243 307 102 -10 520 730 90 941 0 -244 169 31 20 374 460 90 0 48 -245 381 495 20 623 852 90 0 793 -246 95 234 10 261 416 90 0 227 -247 22 33 10 693 846 90 0 347 -248 435 268 10 1098 1156 90 0 826 -249 135 293 30 322 467 90 0 138 -250 439 266 10 230 331 90 0 863 -251 269 402 -20 530 706 90 362 0 -252 267 400 10 713 902 90 0 485 -253 473 196 10 533 673 90 0 221 -254 445 237 10 241 510 90 0 157 -255 461 284 -10 213 402 90 487 0 -256 167 339 10 584 774 90 0 857 -257 26 43 10 314 478 90 0 635 -258 101 386 -30 353 411 90 652 0 -259 342 54 20 433 737 90 0 691 -260 243 399 -20 803 816 90 287 0 -261 288 44 -10 555 793 90 369 0 -262 274 48 10 230 542 90 0 618 -263 360 184 10 744 1009 90 0 207 -264 23 67 30 1001 1248 90 0 310 -265 6 296 10 748 1041 0 0 1014 -266 249 258 -20 914 969 90 22 0 -267 421 415 30 289 371 90 0 24 -268 319 468 10 228 461 90 0 897 -269 50 438 -10 704 799 90 400 0 -270 440 61 -20 984 1020 90 868 0 -271 17 65 20 581 742 90 0 80 -272 323 118 20 228 444 90 0 405 -273 402 281 -30 778 1033 90 599 0 -274 71 153 -10 749 813 90 786 0 -275 52 432 20 744 887 90 0 341 -276 378 199 -20 691 874 90 801 0 -277 238 204 -20 514 685 90 808 0 -278 208 184 20 92 245 90 0 191 -279 376 195 10 500 692 0 0 1045 -280 473 475 -10 1114 1191 90 584 0 -281 215 395 -10 816 978 90 592 0 -282 123 222 30 306 500 0 0 1044 -283 436 241 -10 1290 1315 90 377 0 -284 70 100 -20 1023 1286 90 795 0 -285 73 328 20 193 280 90 0 356 -286 241 205 30 613 773 90 0 824 -287 250 405 20 311 362 90 0 260 -288 483 14 10 684 713 90 0 858 -289 466 287 10 457 534 90 0 85 -290 467 114 -20 1135 1247 90 419 0 -291 120 159 10 253 430 90 0 560 -292 408 84 -10 749 810 90 437 0 -293 413 217 20 210 308 90 0 446 -294 338 142 40 171 289 90 0 766 -295 483 457 20 767 779 90 0 180 -296 479 169 20 725 882 90 0 995 -297 95 224 -20 1044 1133 90 545 0 -298 122 216 10 368 630 90 0 119 -299 477 179 20 237 503 90 0 759 -300 406 99 20 336 469 90 0 965 -301 44 47 20 289 453 90 0 763 -302 487 450 -10 894 1027 90 45 0 -303 172 488 10 282 402 90 0 671 -304 460 374 -20 692 891 90 959 0 -305 279 138 40 264 338 90 0 136 -306 338 147 10 135 267 90 0 540 -307 395 295 -10 638 774 90 70 0 -308 195 185 20 315 420 90 0 979 -309 463 194 20 220 414 90 0 101 -310 30 72 -30 1281 1452 90 264 0 -311 244 254 -10 714 796 90 745 0 -312 317 261 -10 386 486 90 224 0 -313 67 108 10 285 359 90 0 878 -314 442 310 20 578 763 90 0 220 -315 63 336 20 768 915 0 0 1034 -316 109 107 -20 298 475 90 122 0 -317 100 387 10 398 549 90 0 505 -318 494 94 10 478 848 90 0 961 -319 343 49 10 574 786 90 0 145 -320 40 52 40 485 651 90 0 360 -321 319 124 -10 396 469 90 760 0 -322 94 97 20 253 365 90 0 172 -323 476 94 20 274 613 90 0 179 -324 283 47 10 307 485 90 0 838 -325 398 325 -20 706 910 90 861 0 -326 460 13 20 371 623 90 0 430 -327 305 107 -10 505 936 90 32 0 -328 188 12 30 245 323 90 0 634 -329 136 290 20 260 343 90 0 46 -330 439 268 -10 961 1104 90 117 0 -331 112 467 10 438 624 90 0 972 -332 181 469 20 403 601 90 0 936 -333 358 18 -20 479 573 90 467 0 -334 459 10 -20 418 762 90 722 0 -335 199 268 20 187 466 90 0 699 -336 436 237 20 186 417 90 0 637 -337 318 280 20 341 363 90 0 947 -338 64 99 10 862 895 0 0 1020 -339 394 333 -20 448 610 90 854 0 -340 366 93 -30 874 1050 90 931 0 -341 95 391 -20 827 1055 90 275 0 -342 391 425 -10 811 940 90 476 0 -343 344 146 10 398 626 90 0 756 -344 198 12 -10 537 676 90 879 0 -345 186 472 -30 558 638 90 149 0 -346 390 408 -20 468 502 90 451 0 -347 19 43 -10 1083 1378 90 247 0 -348 307 108 -30 760 865 90 686 0 -349 59 457 30 689 969 90 0 237 -350 49 451 20 332 418 90 0 431 -351 125 39 20 245 251 90 0 127 -352 61 147 -30 309 488 90 977 0 -353 317 123 20 419 631 90 0 499 -354 392 426 -20 684 704 90 528 0 -355 237 213 -40 784 979 90 715 0 -356 71 333 -20 197 456 90 285 0 -357 304 97 -30 326 547 90 520 0 -358 196 462 -10 947 1011 90 978 0 -359 224 191 20 212 460 90 0 442 -360 37 51 -40 534 788 90 320 0 -361 491 25 10 881 1087 90 0 839 -362 270 401 20 152 389 90 0 251 -363 474 461 30 307 486 90 0 187 -364 66 448 10 270 437 90 0 492 -365 337 241 20 286 450 0 0 1049 -366 269 46 20 681 847 90 0 929 -367 22 41 10 1067 1208 0 0 1003 -368 198 271 20 379 459 90 0 59 -369 287 43 10 542 623 90 0 261 -370 446 63 20 626 821 90 0 827 -371 200 229 30 254 402 90 0 143 -372 48 72 -10 622 858 90 33 0 -373 465 142 10 380 467 90 0 539 -374 123 155 -20 1118 1235 90 513 0 -375 16 497 20 1053 1109 90 0 387 -376 220 319 -20 868 1140 90 208 0 -377 484 171 10 596 820 90 0 283 -378 55 431 20 635 811 90 0 713 -379 428 24 -20 1095 1150 90 195 0 -380 80 342 10 193 309 90 0 9 -381 16 68 20 413 724 0 0 1004 -382 124 56 20 231 437 90 0 852 -383 95 218 -10 893 907 90 8 0 -384 481 26 30 321 586 90 0 994 -385 145 434 20 389 586 0 0 1029 -386 335 57 30 210 541 90 0 165 -387 26 490 -20 1078 1406 90 375 0 -388 324 127 30 143 377 90 0 548 -389 109 114 -10 784 915 90 47 0 -390 72 148 20 249 346 90 0 600 -391 220 392 -10 916 1070 90 168 0 -392 442 243 -10 957 1091 90 890 0 -393 69 336 20 383 563 90 0 688 -394 131 226 20 121 382 90 0 493 -395 150 204 -10 517 817 90 90 0 -396 423 217 20 739 894 0 0 1027 -397 419 459 -10 787 835 90 440 0 -398 285 163 -10 618 876 90 410 0 -399 203 7 -20 968 1173 90 594 0 -400 54 445 10 537 589 90 0 269 -401 109 463 -10 886 1092 90 422 0 -402 355 180 -20 209 416 90 3 0 -403 13 455 10 362 449 90 0 866 -404 165 337 20 369 426 90 0 39 -405 314 124 -20 729 882 90 272 0 -406 9 124 20 271 282 90 0 662 -407 3 292 20 299 562 90 0 2 -408 16 462 10 851 1071 90 0 845 -409 189 464 10 770 993 90 0 817 -410 288 154 10 433 503 90 0 398 -411 90 296 20 166 214 90 0 563 -412 138 438 20 740 984 90 0 160 -413 13 459 -20 644 720 90 729 0 -414 461 8 20 668 900 0 0 1002 -415 96 97 20 217 390 90 0 559 -416 68 99 -10 954 1171 90 616 0 -417 146 205 -20 275 504 90 109 0 -418 117 152 -20 820 973 90 57 0 -419 481 96 20 465 639 90 0 290 -420 338 260 -20 538 762 90 495 0 -421 285 44 10 364 617 90 0 697 -422 111 464 10 769 843 90 0 401 -423 468 291 -20 712 834 90 899 0 -424 148 206 20 358 607 90 0 65 -425 184 464 10 223 405 90 0 739 -426 197 11 -20 612 784 90 764 0 -427 396 410 -20 797 912 90 206 0 -428 133 53 -10 616 773 90 460 0 -429 132 30 -30 897 905 90 235 0 -430 464 13 -20 862 898 90 326 0 -431 100 394 -20 965 1108 90 350 0 -432 483 22 -20 379 639 90 853 0 -433 93 235 -10 966 996 90 850 0 -434 174 26 -20 979 1162 90 975 0 -435 436 264 20 186 358 90 0 657 -436 24 492 -10 1273 1280 90 16 0 -437 406 94 10 276 530 90 0 292 -438 234 246 10 477 643 0 0 1052 -439 315 287 -10 632 815 90 573 0 -440 408 453 10 562 674 90 0 397 -441 128 225 10 178 252 90 0 781 -442 226 191 -20 338 518 90 359 0 -443 391 407 -10 524 629 90 605 0 -444 198 264 -30 677 913 90 581 0 -445 179 7 -20 765 1030 90 200 0 -446 425 215 -20 691 757 90 293 0 -447 483 27 -30 1218 1412 90 608 0 -448 22 40 -20 986 1106 90 121 0 -449 479 176 20 240 469 90 0 546 -450 476 102 -10 778 885 90 622 0 -451 386 405 20 206 224 90 0 346 -452 22 38 20 895 1013 90 0 83 -453 440 241 -20 992 1240 90 602 0 -454 182 14 -10 893 1286 90 517 0 -455 266 405 -10 679 746 90 969 0 -456 357 181 20 278 530 90 0 193 -457 395 332 10 574 667 90 0 673 -458 423 290 10 187 531 90 0 591 -459 104 28 -30 623 841 90 842 0 -460 131 56 10 430 592 90 0 428 -461 111 110 -20 480 659 90 705 0 -462 97 93 20 448 543 90 0 698 -463 90 274 -10 329 540 90 116 0 -464 214 394 -20 785 827 90 771 0 -465 6 114 -30 792 873 90 820 0 -466 375 191 30 455 549 90 0 41 -467 356 21 20 368 498 90 0 333 -468 466 165 -10 640 912 90 779 0 -469 415 223 -10 1226 1333 90 733 0 -470 397 20 20 338 572 90 0 693 -471 241 403 -30 695 735 90 506 0 -472 69 334 30 302 460 90 0 967 -473 152 210 20 105 321 90 0 844 -474 67 335 20 604 709 90 0 518 -475 126 30 10 459 594 90 0 749 -476 390 423 10 285 341 90 0 342 -477 285 162 -20 560 752 90 5 0 -478 285 158 -20 274 471 90 856 0 -479 406 96 20 225 396 90 0 746 -480 459 374 20 813 952 0 0 1017 -481 67 109 20 363 463 90 0 876 -482 468 475 10 313 594 90 0 625 -483 438 31 10 288 599 90 0 531 -484 168 24 10 754 833 0 0 1016 -485 267 394 -10 876 1112 90 252 0 -486 406 450 -20 335 533 90 962 0 -487 460 288 10 213 538 90 0 255 -488 224 203 20 53 360 90 0 888 -489 21 487 -10 547 664 90 664 0 -490 21 488 -30 635 758 90 49 0 -491 87 217 10 568 673 90 0 821 -492 67 452 -10 276 452 90 364 0 -493 119 223 -20 697 1062 90 394 0 -494 398 428 10 577 617 90 0 555 -495 344 262 20 481 626 90 0 420 -496 390 301 10 307 534 90 0 576 -497 167 27 30 368 654 90 0 935 -498 236 247 -20 448 487 90 183 0 -499 313 119 -20 635 786 90 353 0 -500 13 51 -30 1143 1425 90 536 0 -501 200 13 10 355 495 90 0 82 -502 0 120 30 374 550 90 0 509 -503 202 4 10 973 981 90 0 156 -504 343 144 10 223 429 90 0 230 -505 94 383 -10 541 781 90 317 0 -506 250 411 30 470 575 90 0 471 -507 464 134 -30 1032 1123 90 892 0 -508 443 237 20 258 309 90 0 152 -509 4 114 -30 692 788 90 502 0 -510 169 336 30 804 926 0 0 1042 -511 200 178 20 209 329 90 0 732 -512 412 453 10 647 778 0 0 1011 -513 121 151 20 1059 1105 90 0 374 -514 403 93 10 1114 1198 0 0 1026 -515 399 301 -30 567 651 90 166 0 -516 97 387 -30 736 957 90 958 0 -517 176 8 10 932 1050 90 0 454 -518 62 326 -20 788 1094 90 474 0 -519 151 207 10 680 840 90 0 728 -520 299 98 30 178 506 90 0 357 -521 334 240 -30 448 661 90 585 0 -522 92 270 -20 972 1011 90 813 0 -523 444 269 -40 506 632 90 629 0 -524 132 223 -20 828 918 90 604 0 -525 428 25 -20 1182 1244 90 177 0 -526 413 421 10 624 972 90 0 217 -527 382 498 -20 568 720 90 28 0 -528 391 429 20 405 596 90 0 354 -529 398 97 10 243 364 90 0 989 -530 192 265 -10 656 743 90 933 0 -531 438 26 -10 373 577 90 483 0 -532 44 79 10 267 322 90 0 709 -533 137 290 -10 149 272 90 577 0 -534 446 319 30 334 447 90 0 738 -535 175 487 20 248 457 90 0 226 -536 26 45 30 303 335 90 0 500 -537 147 435 -20 497 664 90 106 0 -538 111 459 20 1083 1264 0 0 1013 -539 472 132 -10 723 869 90 373 0 -540 349 158 -10 1035 1109 90 306 0 -541 86 268 -10 663 762 90 586 0 -542 415 216 10 246 456 90 0 619 -543 121 218 20 154 293 90 0 679 -544 210 185 20 76 212 90 0 915 -545 98 215 20 155 363 90 0 297 -546 484 174 -20 468 571 90 449 0 -547 328 458 -10 871 1078 90 980 0 -548 313 126 -30 797 1000 90 388 0 -549 390 415 -10 952 1180 90 685 0 -550 459 17 -20 928 1204 90 718 0 -551 481 124 10 493 584 90 0 94 -552 386 414 -10 1011 1261 90 558 0 -553 116 466 -10 254 479 90 789 0 -554 468 295 10 869 1053 90 0 881 -555 391 426 -10 719 851 90 494 0 -556 408 279 -20 709 720 90 10 0 -557 15 68 -10 383 572 90 95 0 -558 392 424 10 845 1088 90 0 552 -559 88 95 -20 535 835 90 415 0 -560 116 151 -10 683 927 90 291 0 -561 240 250 10 228 517 90 0 714 -562 123 159 20 156 354 90 0 148 -563 89 290 -20 165 419 90 411 0 -564 39 50 30 362 590 90 0 641 -565 359 179 20 454 540 90 0 646 -566 338 257 20 671 814 0 0 1050 -567 92 236 20 989 1157 90 0 862 -568 413 417 10 1014 1328 0 0 1018 -569 91 101 10 860 887 90 0 603 -570 55 449 20 278 357 90 0 606 -571 57 425 20 260 371 90 0 96 -572 465 287 10 509 665 90 0 233 -573 320 280 10 220 299 90 0 439 -574 322 468 20 529 672 90 0 202 -575 483 458 -10 649 715 90 797 0 -576 312 267 -10 895 909 90 496 0 -577 139 291 10 118 287 90 0 533 -578 388 408 10 280 507 0 0 1024 -579 110 459 -10 955 1211 90 974 0 -580 459 372 20 607 792 90 0 56 -581 204 269 30 49 88 90 0 444 -582 407 98 10 218 320 90 0 37 -583 335 256 -10 879 973 90 162 0 -584 471 484 10 541 648 90 0 280 -585 339 244 30 165 384 90 0 521 -586 89 272 10 428 625 90 0 541 -587 488 96 -30 845 1036 90 710 0 -588 316 286 -30 489 775 90 613 0 -589 235 50 -10 693 1016 90 767 0 -590 316 258 20 208 477 90 0 199 -591 425 288 -10 572 700 90 458 0 -592 213 397 10 619 806 90 0 281 -593 113 156 10 562 677 90 0 159 -594 199 9 20 804 959 90 0 399 -595 463 167 10 592 773 0 0 1046 -596 129 27 -30 674 752 90 682 0 -597 248 404 -40 154 383 90 238 0 -598 405 276 -30 649 969 90 704 0 -599 400 288 30 154 165 90 0 273 -600 61 156 -20 411 584 90 390 0 -601 393 20 -10 1025 1386 90 706 0 -602 484 177 20 365 488 90 0 453 -603 108 116 -10 864 1021 90 569 0 -604 112 217 20 405 420 90 0 524 -605 389 404 10 259 340 90 0 443 -606 102 391 -20 1017 1243 90 570 0 -607 434 26 10 538 600 90 0 135 -608 488 26 30 1119 1216 90 0 447 -609 477 120 10 935 1060 90 0 753 -610 126 220 -20 602 767 90 902 0 -611 439 310 10 198 515 90 0 239 -612 212 319 -20 163 357 90 130 0 -613 320 283 30 357 534 90 0 588 -614 17 459 -20 1171 1304 90 812 0 -615 236 213 20 39 117 90 0 667 -616 68 108 10 230 351 90 0 416 -617 390 294 -20 781 1004 90 976 0 -618 275 42 -10 558 588 90 262 0 -619 423 214 -10 530 734 90 542 0 -620 460 367 20 322 520 90 0 841 -621 272 402 -10 213 457 90 914 0 -622 478 102 10 712 766 90 0 450 -623 400 260 40 150 257 90 0 734 -624 181 6 -30 655 775 90 92 0 -625 470 475 -10 353 458 90 482 0 -626 245 408 -10 542 696 90 772 0 -627 93 96 20 382 419 0 0 1030 -628 218 318 -10 811 1012 90 971 0 -629 441 265 40 295 449 90 0 523 -630 21 64 20 827 867 90 0 236 -631 356 23 -20 305 376 90 76 0 -632 267 44 -20 588 753 90 63 0 -633 277 50 -20 201 442 90 38 0 -634 182 4 -30 471 775 90 328 0 -635 26 36 -10 623 725 90 257 0 -636 384 491 20 918 927 90 0 147 -637 418 290 -20 1118 1276 90 336 0 -638 321 277 10 75 239 90 0 72 -639 358 16 30 512 724 90 0 42 -640 389 334 -20 254 435 90 783 0 -641 48 78 -30 922 1110 90 564 0 -642 24 68 -20 1260 1358 90 750 0 -643 206 225 10 331 519 90 0 956 -644 290 141 30 553 800 90 0 1000 -645 439 15 -20 633 724 90 184 0 -646 359 182 -20 755 813 90 565 0 -647 413 287 -20 1280 1486 90 112 0 -648 230 49 -20 201 438 90 197 0 -649 407 280 -20 516 732 90 99 0 -650 459 295 -10 1217 1265 90 950 0 -651 468 199 20 630 769 90 0 757 -652 101 384 30 200 463 90 0 258 -653 170 26 10 733 1039 90 0 765 -654 197 270 -20 480 541 90 52 0 -655 415 289 20 169 345 90 0 687 -656 203 390 40 280 387 90 0 761 -657 443 272 -20 775 915 90 435 0 -658 210 391 -20 194 280 90 815 0 -659 363 22 20 892 1097 0 0 1012 -660 352 176 20 126 244 90 0 670 -661 212 223 -10 661 929 90 968 0 -662 8 120 -20 1192 1209 90 406 0 -663 244 250 -10 58 315 90 36 0 -664 18 484 10 336 505 90 0 489 -665 379 82 -10 716 995 90 998 0 -666 84 346 -10 1066 1186 90 919 0 -667 233 207 -20 113 159 90 615 0 -668 344 62 -10 1179 1304 90 901 0 -669 20 489 10 786 971 90 0 731 -670 361 181 -20 671 713 90 660 0 -671 174 494 -10 426 630 90 303 0 -672 49 76 20 821 1027 0 0 1008 -673 390 325 -10 818 995 90 457 0 -674 7 118 20 906 1129 90 0 871 -675 107 26 -10 468 629 90 190 0 -676 312 270 -10 836 1154 90 141 0 -677 399 102 20 638 727 90 0 921 -678 109 108 10 339 615 90 0 773 -679 115 218 -20 202 438 90 543 0 -680 88 287 -30 860 977 90 736 0 -681 54 424 10 266 441 90 0 91 -682 125 32 30 311 558 90 0 596 -683 199 12 20 466 566 90 0 98 -684 457 374 10 965 984 90 0 833 -685 391 413 10 971 1110 90 0 549 -686 304 102 30 432 631 90 0 348 -687 391 293 -20 694 907 90 655 0 -688 66 336 -20 545 951 90 393 0 -689 132 291 10 686 847 90 0 225 -690 18 462 -20 931 1174 90 887 0 -691 347 62 -20 1077 1219 90 259 0 -692 466 142 10 416 612 90 0 133 -693 389 17 -20 979 1062 90 470 0 -694 342 254 -20 222 323 90 69 0 -695 92 223 -30 901 1090 90 778 0 -696 404 83 30 782 965 90 0 205 -697 290 46 -10 755 974 90 421 0 -698 95 92 -20 505 670 90 462 0 -699 200 265 -20 790 984 90 335 0 -700 435 16 -20 767 958 90 14 0 -701 25 499 -30 1114 1245 90 79 0 -702 319 260 -20 495 561 90 155 0 -703 116 225 -20 716 856 90 723 0 -704 402 284 30 286 394 90 0 598 -705 108 105 20 287 301 90 0 461 -706 386 13 10 745 918 90 0 601 -707 472 129 10 327 369 90 0 942 -708 132 57 -40 257 581 90 784 0 -709 43 71 -10 436 669 90 532 0 -710 493 91 30 485 655 90 0 587 -711 12 451 20 311 348 90 0 970 -712 201 188 10 452 655 90 0 898 -713 60 428 -20 1035 1161 90 378 0 -714 243 248 -10 198 359 90 561 0 -715 230 197 40 498 736 90 0 355 -716 389 11 20 656 820 90 0 232 -717 401 281 -10 952 1040 90 755 0 -718 459 14 20 391 419 90 0 550 -719 411 95 30 410 585 90 0 204 -720 0 297 -10 615 801 90 102 0 -721 476 196 -30 419 601 90 11 0 -722 458 16 20 313 384 90 0 334 -723 92 230 20 487 560 90 0 703 -724 432 24 -30 927 1130 90 754 0 -725 215 317 10 75 309 90 0 794 -726 371 192 30 134 416 90 0 31 -727 481 20 20 427 777 90 0 835 -728 152 207 -10 758 943 90 519 0 -729 14 459 20 513 669 90 0 413 -730 361 17 20 737 872 90 0 88 -731 8 497 -10 924 1041 90 669 0 -732 206 186 -20 864 981 90 511 0 -733 421 218 10 786 1032 90 0 469 -734 402 264 -40 152 392 90 623 0 -735 388 325 -20 973 1024 90 748 0 -736 35 304 30 221 520 90 0 680 -737 321 263 20 573 850 0 0 1053 -738 444 313 -30 374 599 90 534 0 -739 188 462 -10 686 893 90 425 0 -740 400 103 -20 441 741 90 780 0 -741 418 221 -10 969 1404 90 167 0 -742 112 219 20 394 616 90 0 880 -743 408 452 -20 393 662 90 115 0 -744 30 301 -10 632 753 90 61 0 -745 205 228 10 52 230 90 0 311 -746 407 88 -20 966 1153 90 479 0 -747 380 489 -10 987 1241 90 188 0 -748 395 331 20 641 783 90 0 735 -749 133 26 -10 768 845 90 475 0 -750 21 68 20 1129 1303 90 0 642 -751 313 282 20 761 875 0 0 1051 -752 53 440 -10 593 724 90 882 0 -753 458 130 -10 1116 1233 90 609 0 -754 437 15 30 586 954 90 0 724 -755 400 286 10 172 321 90 0 717 -756 346 144 -10 658 732 90 343 0 -757 440 244 -20 668 1015 90 651 0 -758 280 162 30 92 286 90 0 774 -759 488 173 -20 529 699 90 299 0 -760 326 118 10 152 406 90 0 321 -761 207 400 -40 462 590 90 656 0 -762 391 18 -20 1014 1211 90 875 0 -763 37 55 -20 685 826 90 301 0 -764 204 15 20 239 314 90 0 426 -765 173 28 -10 1158 1168 90 653 0 -766 343 148 -40 357 483 90 294 0 -767 231 43 10 401 560 90 0 589 -768 445 273 -10 620 886 90 829 0 -769 432 27 10 817 872 90 0 791 -770 439 305 -30 644 890 90 940 0 -771 208 396 20 416 447 90 0 464 -772 249 407 10 329 528 90 0 626 -773 107 112 -10 688 827 90 678 0 -774 279 159 -30 216 337 90 758 0 -775 376 494 30 274 533 90 0 973 -776 403 262 -20 501 540 90 228 0 -777 41 47 20 335 429 90 0 234 -778 96 213 30 222 458 90 0 695 -779 461 167 10 456 545 90 0 468 -780 391 99 20 206 334 90 0 740 -781 116 221 -10 510 688 90 441 0 -782 165 343 -10 477 692 90 954 0 -783 388 334 20 161 378 90 0 640 -784 130 57 40 277 377 90 0 708 -785 422 409 10 234 431 90 0 925 -786 66 156 10 600 771 90 0 274 -787 485 86 20 286 510 90 0 877 -788 389 428 -10 389 426 90 849 0 -789 117 467 10 254 446 90 0 553 -790 475 477 20 946 1173 0 0 1001 -791 429 27 -10 1235 1376 90 769 0 -792 339 60 20 247 365 90 0 803 -793 381 494 -20 772 885 90 245 0 -794 218 321 -10 677 780 90 725 0 -795 64 101 20 620 771 90 0 284 -796 343 254 20 204 523 90 0 21 -797 478 464 10 343 462 90 0 575 -798 423 286 20 377 530 90 0 51 -799 198 9 20 750 831 0 0 1015 -800 225 196 10 59 346 90 0 211 -801 374 190 20 239 398 90 0 276 -802 462 14 -20 846 1099 90 100 0 -803 347 54 -20 776 964 90 792 0 -804 231 195 20 480 568 90 0 923 -805 72 96 -20 1211 1288 90 894 0 -806 489 87 -10 436 514 90 957 0 -807 443 313 30 469 687 0 0 1035 -808 233 204 20 189 269 90 0 277 -809 477 483 20 687 875 90 0 43 -810 459 368 -20 240 446 90 960 0 -811 95 277 -10 1036 1142 90 189 0 -812 16 460 20 1066 1225 90 0 614 -813 100 266 20 150 380 90 0 522 -814 288 53 40 850 1073 0 0 1033 -815 211 386 20 141 301 90 0 658 -816 144 439 -10 681 851 90 124 0 -817 224 314 -10 948 1253 90 409 0 -818 79 291 -10 487 601 90 938 0 -819 95 235 10 155 276 90 0 161 -820 7 123 30 327 402 90 0 465 -821 91 217 -10 671 758 90 491 0 -822 105 27 -10 597 684 90 50 0 -823 101 385 20 251 331 90 0 142 -824 238 210 -30 740 838 90 286 0 -825 439 67 10 263 455 90 0 154 -826 435 267 -10 1108 1327 90 248 0 -827 443 64 -20 767 866 90 370 0 -828 92 234 -10 854 925 90 943 0 -829 450 265 10 416 527 90 0 768 -830 102 27 20 780 869 90 0 872 -831 492 94 10 636 875 90 0 58 -832 440 63 20 813 1007 90 0 171 -833 453 367 -10 1045 1101 90 684 0 -834 15 69 10 296 601 90 0 215 -835 489 17 -20 724 865 90 727 0 -836 335 255 20 85 248 90 0 951 -837 419 418 10 295 552 90 0 104 -838 292 41 -10 663 875 90 324 0 -839 489 27 -10 947 1206 90 361 0 -840 96 270 20 253 422 90 0 906 -841 461 369 -20 521 691 90 620 0 -842 105 22 30 270 537 90 0 459 -843 479 121 10 635 810 90 0 885 -844 207 223 -20 545 675 90 473 0 -845 17 458 -10 1192 1422 90 408 0 -846 186 7 20 454 601 90 0 201 -847 465 168 -20 720 1018 90 908 0 -848 416 288 -20 1257 1322 90 55 0 -849 388 418 10 217 498 90 0 788 -850 92 233 10 711 886 90 0 433 -851 179 492 10 654 776 90 0 134 -852 132 55 -20 531 674 90 382 0 -853 485 24 20 326 514 90 0 432 -854 388 331 20 160 314 90 0 339 -855 217 323 -10 432 465 90 904 0 -856 281 164 20 91 299 90 0 478 -857 169 340 -10 750 792 90 256 0 -858 491 20 -10 856 921 90 288 0 -859 279 42 -20 217 384 90 212 0 -860 439 243 20 1083 1335 0 0 1022 -861 391 334 20 412 461 90 0 325 -862 96 244 -20 1333 1378 90 567 0 -863 441 273 -10 847 1028 90 250 0 -864 477 478 -30 943 991 90 993 0 -865 56 434 20 752 1069 90 0 75 -866 12 463 -10 698 853 90 403 0 -867 458 164 -30 330 482 90 194 0 -868 446 65 20 508 574 90 0 270 -869 71 156 -30 735 1013 90 870 0 -870 65 153 30 549 635 90 0 869 -871 8 118 -20 1031 1185 90 674 0 -872 102 29 -20 866 967 90 830 0 -873 315 265 -10 693 922 90 924 0 -874 343 62 -10 1276 1388 90 128 0 -875 384 16 20 754 1098 90 0 762 -876 67 105 -20 447 753 90 481 0 -877 478 118 -20 1018 1161 90 787 0 -878 73 101 -10 1210 1479 90 313 0 -879 200 14 10 278 389 90 0 344 -880 114 225 -20 618 770 90 742 0 -881 460 293 -10 1125 1173 90 554 0 -882 51 447 10 376 562 90 0 752 -883 418 295 -20 1057 1146 90 29 0 -884 282 139 20 146 269 0 0 1019 -885 477 122 -10 849 962 90 843 0 -886 91 266 10 673 943 90 0 174 -887 16 463 20 810 929 90 0 690 -888 228 199 -20 698 720 90 488 0 -889 435 20 20 920 993 0 0 1040 -890 467 195 10 265 363 90 0 392 -891 469 132 -10 819 960 90 913 0 -892 465 136 30 966 1004 90 0 507 -893 246 255 -30 759 937 90 218 0 -894 49 75 20 742 925 90 0 805 -895 66 98 20 885 1055 0 0 1006 -896 166 32 -20 267 380 90 984 0 -897 326 466 -10 716 854 90 268 0 -898 202 186 -10 545 747 90 712 0 -899 467 285 20 281 526 90 0 423 -900 290 136 -10 503 661 90 30 0 -901 341 58 10 334 463 90 0 668 -902 121 219 20 132 143 90 0 610 -903 107 35 30 904 1124 0 0 1010 -904 216 319 10 208 501 90 0 855 -905 134 288 -10 894 1007 90 20 0 -906 89 270 -20 536 702 90 840 0 -907 136 52 10 705 870 0 0 1025 -908 462 167 20 556 627 90 0 847 -909 340 54 10 396 589 0 0 1028 -910 80 286 10 563 714 90 0 27 -911 38 301 20 730 851 0 0 1023 -912 25 307 -20 403 606 90 34 0 -913 470 139 10 687 712 90 0 891 -914 270 400 10 151 224 90 0 621 -915 204 187 -20 720 941 90 544 0 -916 460 171 -20 918 1012 90 84 0 -917 399 106 20 904 1010 0 0 1041 -918 197 267 10 504 704 90 0 140 -919 77 350 10 961 1094 90 0 666 -920 91 231 30 611 620 0 0 1039 -921 398 103 -20 769 777 90 677 0 -922 35 303 20 221 239 90 0 946 -923 231 204 -20 756 855 90 804 0 -924 311 266 10 63 348 90 0 873 -925 416 420 -10 664 745 90 785 0 -926 231 203 20 194 450 0 0 1054 -927 4 116 -20 571 726 90 222 0 -928 417 217 30 384 503 90 0 15 -929 268 52 -20 895 1187 90 366 0 -930 345 144 30 452 756 0 0 1043 -931 368 85 30 202 425 90 0 340 -932 441 65 -10 355 538 90 35 0 -933 201 270 10 64 222 90 0 530 -934 0 293 30 583 645 90 0 126 -935 167 24 -30 646 759 90 497 0 -936 186 464 -20 686 707 90 332 0 -937 7 292 10 246 437 90 0 181 -938 80 290 10 305 600 90 0 818 -939 405 455 40 845 987 90 0 123 -940 439 312 30 198 444 90 0 770 -941 300 108 10 150 211 90 0 243 -942 478 121 -10 713 914 90 707 0 -943 92 232 10 332 531 90 0 828 -944 111 463 -10 861 933 90 103 0 -945 132 294 20 439 536 0 0 1047 -946 134 285 -20 1063 1210 90 922 0 -947 316 284 -20 525 555 90 337 0 -948 56 428 20 306 591 90 0 185 -949 232 47 10 237 353 90 0 198 -950 466 291 10 662 700 90 0 650 -951 341 257 -20 408 507 90 836 0 -952 420 213 10 418 659 90 0 73 -953 116 152 -10 591 837 90 131 0 -954 163 337 10 249 362 90 0 782 -955 440 7 -40 483 495 90 139 0 -956 208 222 -10 641 761 90 643 0 -957 485 95 10 281 424 90 0 806 -958 97 385 30 464 670 90 0 516 -959 462 367 20 425 602 90 0 304 -960 455 365 20 235 369 90 0 810 -961 492 95 -10 713 980 90 318 0 -962 405 450 20 253 454 90 0 486 -963 371 193 20 133 342 90 0 987 -964 234 202 10 378 451 90 0 988 -965 404 103 -20 459 535 90 300 0 -966 24 41 10 497 660 90 0 113 -967 67 334 -30 461 671 90 472 0 -968 207 227 10 48 84 90 0 661 -969 277 403 10 319 541 90 0 455 -970 15 457 -20 448 549 90 711 0 -971 217 319 10 765 875 90 0 628 -972 111 467 -10 560 684 90 331 0 -973 378 493 -30 274 658 90 775 0 -974 112 465 10 693 735 90 0 579 -975 173 25 20 885 1074 90 0 434 -976 421 292 20 249 283 90 0 617 -977 74 146 30 204 265 90 0 352 -978 178 491 10 469 777 90 0 358 -979 204 185 -20 658 818 90 308 0 -980 319 470 10 369 456 90 0 547 -981 163 331 40 118 129 90 0 125 -982 470 125 20 253 313 90 0 111 -983 315 121 10 553 683 0 0 1031 -984 166 34 20 231 302 90 0 896 -985 284 140 40 115 134 90 0 25 -986 85 288 20 328 386 90 0 153 -987 376 190 -20 361 460 90 963 0 -988 238 203 -10 463 555 90 964 0 -989 399 104 -10 736 993 90 529 0 -990 472 481 20 373 630 90 0 60 -991 46 74 -30 525 769 90 209 0 -992 401 255 -20 683 740 90 107 0 -993 475 480 30 811 937 90 0 864 -994 485 27 -30 1223 1299 90 384 0 -995 476 174 -20 847 951 90 296 0 -996 330 242 -30 569 728 90 997 0 -997 332 249 30 82 252 90 0 996 -998 375 80 10 508 640 90 0 665 -999 94 235 20 156 375 90 0 71 -1000 287 144 -30 790 932 90 644 0 -1001 475 477 -20 946 1173 90 790 0 -1002 461 8 -20 668 900 90 414 0 -1003 22 41 -10 1067 1208 90 367 0 -1004 16 68 -20 413 724 90 381 0 -1005 433 31 -10 285 442 90 54 0 -1006 66 98 -20 885 1055 90 895 0 -1007 8 116 -20 826 1025 90 196 0 -1008 49 76 -20 821 1027 90 672 0 -1009 435 62 -30 1143 1231 90 146 0 -1010 107 35 -30 904 1124 90 903 0 -1011 412 453 -10 647 778 90 512 0 -1012 363 22 -20 892 1097 90 659 0 -1013 111 459 -20 1083 1264 90 538 0 -1014 6 296 -10 748 1041 90 265 0 -1015 198 9 -20 750 831 90 799 0 -1016 168 24 -10 754 833 90 484 0 -1017 459 374 -20 813 952 90 480 0 -1018 413 417 -10 1014 1328 90 568 0 -1019 282 139 -20 146 269 90 884 0 -1020 64 99 -10 862 895 90 338 0 -1021 323 471 -30 494 521 90 210 0 -1022 439 243 -20 1083 1335 90 860 0 -1023 38 301 -20 730 851 90 911 0 -1024 388 408 -10 280 507 90 578 0 -1025 136 52 -10 705 870 90 907 0 -1026 403 93 -10 1114 1198 90 514 0 -1027 423 217 -20 739 894 90 396 0 -1028 340 54 -10 396 589 90 909 0 -1029 145 434 -20 389 586 90 385 0 -1030 93 96 -20 382 419 90 627 0 -1031 315 121 -10 553 683 90 983 0 -1032 367 83 -30 255 336 90 173 0 -1033 288 53 -40 850 1073 90 814 0 -1034 63 336 -20 768 915 90 315 0 -1035 443 313 -30 469 687 90 807 0 -1036 74 350 -10 848 1022 90 97 0 -1037 131 220 -30 710 849 90 23 0 -1038 93 213 -30 378 489 90 129 0 -1039 91 231 -30 611 620 90 920 0 -1040 435 20 -20 920 993 90 889 0 -1041 399 106 -20 904 1010 90 917 0 -1042 169 336 -30 804 926 90 510 0 -1043 345 144 -30 452 756 90 930 0 -1044 123 222 -30 306 500 90 282 0 -1045 376 195 -10 500 692 90 279 0 -1046 463 167 -10 592 773 90 595 0 -1047 132 294 -20 439 536 90 945 0 -1048 154 207 -20 907 1162 90 186 0 -1049 337 241 -20 286 450 90 365 0 -1050 338 257 -20 671 814 90 566 0 -1051 313 282 -20 761 875 90 751 0 -1052 234 246 -10 477 643 90 438 0 -1053 321 263 -20 573 850 90 737 0 -1054 231 203 -20 194 450 90 926 0 diff --git a/jsprit-instances/instances/lilim/1000/LC1107.txt b/jsprit-instances/instances/lilim/1000/LC1107.txt deleted file mode 100644 index 62a9a98a0..000000000 --- a/jsprit-instances/instances/lilim/1000/LC1107.txt +++ /dev/null @@ -1,1054 +0,0 @@ -250 200 1 -0 250 250 0 0 1824 0 0 0 -1 387 297 10 145 325 90 0 307 -2 5 297 -20 896 1076 90 407 0 -3 355 177 20 129 309 90 0 193 -4 78 346 30 289 469 90 0 97 -5 286 159 20 473 653 90 0 477 -6 322 465 10 226 406 90 0 268 -7 393 408 30 579 759 90 0 67 -8 89 216 10 438 618 90 0 695 -9 76 345 30 473 653 0 0 1031 -10 410 285 20 438 618 90 0 598 -11 472 189 -10 322 502 90 890 0 -12 270 49 30 857 1037 90 0 929 -13 219 325 -10 451 631 90 725 0 -14 437 12 20 495 675 90 0 700 -15 418 218 -30 912 1092 90 928 0 -16 20 488 10 697 877 90 0 387 -17 77 347 20 381 561 90 0 89 -18 73 346 10 659 839 90 0 666 -19 480 455 -10 1061 1241 90 797 0 -20 129 292 -20 491 671 90 329 0 -21 337 257 -20 744 924 90 796 0 -22 237 254 -20 568 748 90 498 0 -23 131 220 30 690 870 90 0 524 -24 417 417 -20 897 1077 90 104 0 -25 287 143 -20 680 860 90 900 0 -26 379 80 -30 673 853 90 173 0 -27 87 285 30 646 826 90 0 680 -28 374 489 20 269 449 90 0 775 -29 440 247 20 658 838 90 0 101 -30 281 137 -40 303 483 90 305 0 -31 379 196 20 599 779 0 0 1039 -32 297 102 10 157 337 90 0 520 -33 39 76 10 274 454 90 0 991 -34 35 306 -30 314 494 90 736 0 -35 435 68 10 259 439 0 0 1008 -36 245 251 10 5 185 90 0 561 -37 409 88 -20 595 775 90 204 0 -38 273 55 20 196 376 90 0 63 -39 163 340 -20 401 581 90 125 0 -40 129 223 20 217 397 90 0 610 -41 371 200 -10 789 969 90 279 0 -42 357 26 20 1092 1272 90 0 874 -43 470 473 -10 1156 1336 90 482 0 -44 77 344 -10 197 377 90 380 0 -45 478 461 -30 406 586 90 363 0 -46 128 291 10 583 763 0 0 1043 -47 111 113 10 573 753 90 0 560 -48 164 21 -20 518 698 90 984 0 -49 21 485 30 423 603 90 0 375 -50 108 26 10 367 547 90 0 459 -51 424 286 10 454 634 90 0 848 -52 200 270 20 144 324 90 0 335 -53 7 300 -10 990 1170 90 265 0 -54 433 31 10 285 465 90 0 531 -55 420 295 20 920 1100 90 0 637 -56 451 367 -20 1075 1255 90 959 0 -57 118 157 20 344 524 90 0 264 -58 489 101 20 946 1126 0 0 1006 -59 200 261 10 891 1071 90 0 140 -60 476 483 -30 600 780 90 625 0 -61 30 302 10 512 692 90 0 911 -62 8 300 -10 1081 1261 90 181 0 -63 275 45 -20 390 570 90 38 0 -64 238 46 -20 670 850 90 198 0 -65 152 206 -20 852 1032 90 728 0 -66 99 218 30 154 334 90 0 545 -67 393 410 -30 857 1037 90 7 0 -68 480 460 20 498 678 90 0 295 -69 337 256 -20 87 267 90 836 0 -70 389 300 -20 239 419 90 231 0 -71 90 237 20 1166 1346 90 0 862 -72 321 280 30 79 259 90 0 947 -73 417 218 10 1003 1183 0 0 1032 -74 64 108 10 416 596 90 0 569 -75 57 432 -20 913 1093 90 275 0 -76 356 24 20 249 429 90 0 631 -77 143 207 30 206 386 90 0 417 -78 221 325 -10 543 723 90 904 0 -79 22 483 30 325 505 90 0 490 -80 24 65 -10 850 1030 90 593 0 -81 141 431 30 303 483 90 0 160 -82 202 9 10 1163 1343 0 0 1017 -83 20 48 -10 1236 1416 90 367 0 -84 457 163 20 225 405 0 0 1022 -85 470 290 -10 775 955 90 289 0 -86 268 400 -10 808 988 90 914 0 -87 337 251 10 87 267 90 0 120 -88 366 20 10 811 991 0 0 1011 -89 72 344 -20 567 747 90 17 0 -90 149 203 -20 485 665 90 473 0 -91 55 428 20 449 629 90 0 378 -92 189 7 30 251 431 90 0 200 -93 397 18 10 457 637 90 0 203 -94 481 122 30 540 720 90 0 942 -95 20 73 10 290 470 90 0 557 -96 54 430 20 541 721 90 0 431 -97 74 350 -30 845 1025 90 4 0 -98 202 8 -10 1072 1252 90 344 0 -99 406 285 -10 344 524 90 755 0 -100 460 2 -20 598 778 90 722 0 -101 441 244 -20 842 1022 90 29 0 -102 1 293 10 433 613 90 0 720 -103 115 465 -20 347 527 90 553 0 -104 422 420 20 428 608 90 0 24 -105 75 347 10 751 931 90 0 919 -106 141 428 20 208 388 90 0 385 -107 404 264 -20 338 518 90 228 0 -108 398 23 10 270 450 90 0 875 -109 148 211 20 110 290 90 0 519 -110 362 22 -20 995 1175 90 659 0 -111 479 127 20 355 535 90 0 885 -112 443 246 20 475 655 90 0 157 -113 22 37 10 773 953 90 0 347 -114 65 100 10 697 877 90 0 895 -115 404 447 20 250 430 90 0 962 -116 102 264 10 148 328 90 0 886 -117 444 271 10 571 751 90 0 330 -118 325 466 40 604 784 90 0 547 -119 124 219 20 503 683 0 0 1041 -120 335 243 -10 371 551 90 87 0 -121 26 42 20 397 577 90 0 635 -122 113 106 20 198 378 90 0 374 -123 399 450 -10 924 1104 90 440 0 -124 146 439 10 584 764 90 0 816 -125 162 336 20 124 304 90 0 39 -126 2 295 -30 711 891 90 934 0 -127 122 35 10 250 430 90 0 682 -128 346 60 -20 966 1146 90 145 0 -129 93 213 30 343 523 90 0 297 -130 218 316 20 73 253 90 0 612 -131 116 156 -20 436 616 90 562 0 -132 419 422 20 521 701 90 0 217 -133 467 141 -10 516 696 90 373 0 -134 187 491 -10 723 903 90 851 0 -135 433 25 20 847 1027 90 0 232 -136 286 137 10 398 578 90 0 644 -137 370 82 -30 389 569 90 931 0 -138 132 290 -10 768 948 90 577 0 -139 435 11 40 302 482 90 0 724 -140 206 261 -10 987 1167 90 59 0 -141 428 291 -10 641 821 90 458 0 -142 95 384 30 662 842 90 0 516 -143 205 223 -10 428 608 90 745 0 -144 463 140 -40 240 420 90 175 0 -145 343 47 20 682 862 90 0 128 -146 435 62 -10 1097 1277 90 171 0 -147 387 488 -20 927 1107 90 245 0 -148 121 157 10 159 339 90 0 291 -149 182 463 -10 316 496 90 425 0 -150 92 216 -30 716 896 90 778 0 -151 370 83 20 298 478 90 0 998 -152 444 242 -20 381 561 90 336 0 -153 90 285 -10 921 1101 90 189 0 -154 446 64 -20 542 722 90 868 0 -155 312 264 -10 65 245 90 924 0 -156 208 11 -20 1259 1439 90 399 0 -157 442 247 -20 566 746 90 112 0 -158 140 431 30 212 392 90 0 537 -159 118 153 -20 898 1078 90 705 0 -160 134 428 -30 873 1053 90 81 0 -161 91 235 -20 1074 1254 90 567 0 -162 406 257 10 526 706 90 0 992 -163 377 76 20 579 759 0 0 1018 -164 474 96 30 271 451 90 0 323 -165 346 57 -10 873 1053 90 803 0 -166 393 301 30 423 603 90 0 676 -167 412 214 10 165 345 90 0 542 -168 210 398 10 529 709 90 0 817 -169 346 150 -30 883 1063 90 930 0 -170 62 453 10 460 640 90 0 240 -171 437 61 10 1005 1185 90 0 146 -172 87 96 30 687 867 0 0 1035 -173 367 83 30 205 385 90 0 26 -174 91 268 -20 810 990 90 463 0 -175 459 145 40 233 413 90 0 144 -176 63 444 -10 1025 1205 90 216 0 -177 433 27 20 571 751 90 0 601 -178 60 454 -10 832 1012 90 364 0 -179 478 99 10 556 736 90 0 622 -180 485 454 -10 776 956 90 575 0 -181 6 292 10 248 428 90 0 62 -182 398 20 20 274 454 90 0 470 -183 248 251 20 2 182 90 0 714 -184 433 15 20 297 477 90 0 955 -185 64 426 -20 1102 1282 90 713 0 -186 154 207 20 944 1124 0 0 1038 -187 481 456 -10 969 1149 90 302 0 -188 380 498 -30 462 642 90 973 0 -189 88 286 10 737 917 90 0 153 -190 111 23 10 266 446 90 0 675 -191 199 187 -20 372 552 90 278 0 -192 269 48 -20 766 946 90 632 0 -193 367 178 -20 505 685 90 3 0 -194 452 163 30 219 399 90 0 779 -195 431 28 -10 663 843 90 483 0 -196 8 116 20 835 1015 0 0 1036 -197 233 47 20 296 476 90 0 589 -198 237 43 20 577 757 90 0 64 -199 320 262 -10 530 710 90 224 0 -200 188 4 -30 344 524 90 92 0 -201 180 6 -20 716 896 90 624 0 -202 328 466 -20 787 967 90 574 0 -203 393 12 -10 554 734 90 93 0 -204 409 90 20 503 683 90 0 37 -205 406 87 -30 878 1058 90 696 0 -206 394 407 -10 671 851 90 578 0 -207 358 183 -20 879 1059 90 670 0 -208 186 461 20 220 400 90 0 936 -209 38 72 30 368 548 90 0 338 -210 323 471 30 417 597 90 0 897 -211 224 192 10 155 335 90 0 804 -212 278 46 20 205 385 90 0 421 -213 272 403 30 435 615 90 0 455 -214 232 42 -10 482 662 90 767 0 -215 18 63 10 664 844 90 0 630 -216 58 458 10 648 828 90 0 176 -217 416 417 -20 988 1168 90 132 0 -218 205 230 30 143 323 90 0 844 -219 65 453 30 367 547 90 0 349 -220 421 294 -10 828 1008 90 591 0 -221 434 245 -10 1307 1487 90 254 0 -222 2 116 20 466 646 90 0 509 -223 411 421 -20 800 980 90 925 0 -224 315 260 10 160 340 90 0 199 -225 136 288 -30 953 1133 90 249 0 -226 173 490 20 344 524 90 0 671 -227 90 232 -10 617 797 90 943 0 -228 402 265 20 246 426 90 0 107 -229 361 14 10 622 802 90 0 730 -230 348 147 -10 790 970 90 343 0 -231 385 295 20 142 322 90 0 70 -232 394 23 -20 1209 1389 90 135 0 -233 466 295 -10 963 1143 90 255 0 -234 71 103 -20 1323 1503 90 795 0 -235 125 29 30 528 708 90 0 596 -236 25 65 10 941 1121 0 0 1052 -237 58 449 -30 928 1108 90 492 0 -238 246 398 40 148 328 90 0 287 -239 423 294 10 736 916 90 0 647 -240 59 459 -10 556 736 90 170 0 -241 348 145 -10 698 878 90 306 0 -242 477 97 10 368 548 90 0 419 -243 307 102 -10 535 715 90 941 0 -244 169 31 -10 327 507 90 896 0 -245 381 495 20 647 827 90 0 147 -246 95 234 10 248 428 90 0 723 -247 22 33 -10 679 859 90 966 0 -248 435 268 -20 1037 1217 90 523 0 -249 135 293 30 305 485 90 0 225 -250 439 266 10 190 370 90 0 629 -251 269 402 -10 528 708 90 969 0 -252 267 400 10 717 897 90 0 485 -253 473 196 -30 513 693 90 721 0 -254 445 237 10 285 465 90 0 221 -255 461 284 10 218 398 90 0 233 -256 167 339 10 589 769 90 0 510 -257 26 43 10 306 486 90 0 448 -258 101 386 20 292 472 90 0 317 -259 342 54 20 495 675 90 0 668 -260 243 399 -30 720 900 90 506 0 -261 288 44 -10 584 764 90 369 0 -262 274 48 10 296 476 90 0 366 -263 360 184 -20 786 966 90 565 0 -264 23 67 -20 1034 1214 90 57 0 -265 6 296 10 805 985 90 0 53 -266 249 258 30 852 1032 0 0 1033 -267 421 415 30 240 420 90 0 837 -268 319 468 -10 231 411 90 6 0 -269 50 438 -20 662 842 90 350 0 -270 440 61 -10 912 1092 90 932 0 -271 17 65 20 572 752 0 0 1004 -272 323 118 20 246 426 90 0 321 -273 402 281 -30 815 995 90 599 0 -274 71 153 20 691 871 90 0 869 -275 52 432 20 726 906 90 0 75 -276 378 199 -30 692 872 90 466 0 -277 238 204 -10 510 690 90 964 0 -278 208 184 20 79 259 90 0 191 -279 376 195 10 506 686 90 0 41 -280 473 475 -20 1062 1242 90 864 0 -281 215 395 -40 807 987 90 739 0 -282 123 222 -10 313 493 90 441 0 -283 436 241 -10 1212 1392 90 392 0 -284 70 100 10 1065 1245 0 0 1007 -285 73 328 20 193 373 90 0 518 -286 241 205 -10 603 783 90 988 0 -287 250 405 -40 247 427 90 238 0 -288 483 14 10 608 788 90 0 361 -289 466 287 10 406 586 90 0 85 -290 467 114 -20 1101 1281 90 450 0 -291 120 159 -10 251 431 90 148 0 -292 408 84 10 689 869 90 0 746 -293 413 217 20 169 349 90 0 619 -294 338 142 40 140 320 90 0 756 -295 483 457 -20 683 863 90 68 0 -296 479 169 20 714 894 90 0 995 -297 95 224 -30 999 1179 90 129 0 -298 122 216 -20 409 589 90 394 0 -299 477 179 20 237 417 90 0 759 -300 406 99 20 312 492 90 0 965 -301 44 47 20 289 469 90 0 777 -302 487 450 10 871 1051 90 0 187 -303 172 488 -20 252 432 90 535 0 -304 460 374 -20 702 882 90 580 0 -305 279 138 40 211 391 90 0 30 -306 338 147 10 135 315 90 0 241 -307 395 295 -10 616 796 90 1 0 -308 195 185 20 277 457 90 0 898 -309 463 194 20 220 400 90 0 741 -310 30 72 -10 1272 1452 90 360 0 -311 244 254 20 665 845 90 0 893 -312 317 261 20 346 526 0 0 1012 -313 67 108 10 232 412 90 0 805 -314 442 310 -30 581 761 90 940 0 -315 63 336 -10 751 931 90 356 0 -316 109 107 20 296 476 90 0 953 -317 100 387 -20 384 564 90 258 0 -318 494 94 -20 573 753 90 787 0 -319 343 49 -10 590 770 90 901 0 -320 40 52 -30 478 658 90 564 0 -321 319 124 -20 343 523 90 272 0 -322 94 97 -20 219 399 90 415 0 -323 476 94 -30 275 455 90 164 0 -324 283 47 10 306 486 90 0 697 -325 398 325 30 718 898 90 0 735 -326 460 13 20 407 587 90 0 802 -327 305 107 20 630 810 90 0 348 -328 188 12 30 245 425 90 0 634 -329 136 290 20 212 392 90 0 20 -330 439 268 -10 943 1123 90 117 0 -331 112 467 10 441 621 90 0 401 -332 181 469 20 412 592 90 0 345 -333 358 18 10 436 616 90 0 639 -334 459 10 10 500 680 90 0 414 -335 199 268 -20 236 416 90 52 0 -336 436 237 20 186 366 90 0 152 -337 318 280 -10 262 442 90 638 0 -338 64 99 -30 788 968 90 209 0 -339 394 333 20 439 619 90 0 748 -340 366 93 -10 872 1052 90 665 0 -341 95 391 10 851 1031 90 0 606 -342 391 425 20 786 966 0 0 1023 -343 344 146 10 422 602 90 0 230 -344 198 12 10 517 697 90 0 98 -345 186 472 -20 508 688 90 332 0 -346 390 408 30 395 575 90 0 443 -347 19 43 -10 1141 1321 90 113 0 -348 307 108 -20 722 902 90 327 0 -349 59 457 -30 739 919 90 219 0 -350 49 451 20 285 465 90 0 269 -351 125 39 20 245 425 90 0 475 -352 61 147 40 308 488 90 0 600 -353 317 123 20 435 615 90 0 983 -354 392 426 10 604 784 90 0 552 -355 237 213 -20 792 972 90 923 0 -356 71 333 10 199 379 90 0 315 -357 304 97 20 347 527 90 0 686 -358 196 462 -10 889 1069 90 978 0 -359 224 191 -20 246 426 90 488 0 -360 37 51 10 571 751 90 0 310 -361 491 25 -10 894 1074 90 288 0 -362 270 401 20 152 332 90 0 621 -363 474 461 30 307 487 90 0 45 -364 66 448 10 270 450 90 0 178 -365 337 241 -30 278 458 90 997 0 -366 269 46 -10 674 854 90 262 0 -367 22 41 10 1047 1227 90 0 83 -368 198 271 20 329 509 90 0 530 -369 287 43 10 492 672 90 0 261 -370 446 63 -10 633 813 90 825 0 -371 200 229 30 238 418 90 0 643 -372 48 72 30 650 830 90 0 416 -373 465 142 10 333 513 90 0 133 -374 123 155 -20 1086 1266 90 122 0 -375 16 497 -30 991 1171 90 49 0 -376 220 319 -20 914 1094 90 771 0 -377 484 171 -10 618 798 90 546 0 -378 55 431 -20 633 813 90 91 0 -379 428 24 -10 1032 1212 90 769 0 -380 80 342 10 193 373 90 0 44 -381 16 68 -10 479 659 90 834 0 -382 124 56 20 231 411 90 0 708 -383 95 218 20 810 990 0 0 1034 -384 481 26 30 321 501 90 0 835 -385 145 434 -20 398 578 90 106 0 -386 335 57 30 210 390 0 0 1026 -387 26 490 -10 1226 1406 90 16 0 -388 324 127 30 143 323 90 0 760 -389 109 114 10 760 940 0 0 1025 -390 72 148 -30 207 387 90 977 0 -391 220 392 20 903 1083 0 0 1024 -392 442 243 10 934 1114 90 0 283 -393 69 336 20 383 563 90 0 688 -394 131 226 20 121 301 90 0 298 -395 150 204 -20 577 757 90 424 0 -396 423 217 20 727 907 90 0 469 -397 419 459 -10 721 901 90 512 0 -398 285 163 -30 657 837 90 758 0 -399 203 7 20 981 1161 90 0 156 -400 54 445 -20 473 653 90 570 0 -401 109 463 -10 899 1079 90 331 0 -402 355 180 -20 222 402 90 660 0 -403 13 455 -20 316 496 90 711 0 -404 165 337 20 307 487 90 0 782 -405 314 124 -30 716 896 90 499 0 -406 9 124 20 271 451 90 0 820 -407 3 292 20 341 521 90 0 2 -408 16 462 -20 871 1051 90 866 0 -409 189 464 10 791 971 0 0 1013 -410 288 154 -20 378 558 90 856 0 -411 90 296 20 166 346 90 0 986 -412 138 438 20 772 952 0 0 1003 -413 13 459 -20 592 772 90 729 0 -414 461 8 -10 694 874 90 334 0 -415 96 97 20 217 397 90 0 322 -416 68 99 -30 973 1153 90 372 0 -417 146 205 -30 300 480 90 77 0 -418 117 152 20 807 987 0 0 1030 -419 481 96 -10 462 642 90 242 0 -420 338 260 -20 560 740 90 495 0 -421 285 44 -20 400 580 90 212 0 -422 111 464 10 716 896 90 0 579 -423 468 291 -10 683 863 90 950 0 -424 148 206 20 392 572 90 0 395 -425 184 464 10 224 404 90 0 149 -426 197 11 -10 608 788 90 501 0 -427 396 410 10 764 944 90 0 685 -428 133 53 -40 604 784 90 784 0 -429 132 30 -10 811 991 90 749 0 -430 464 13 -20 790 970 90 718 0 -431 100 394 -20 946 1126 90 96 0 -432 483 22 10 419 599 90 0 727 -433 93 235 -10 891 1071 90 828 0 -434 174 26 -10 981 1161 90 484 0 -435 436 264 20 186 366 90 0 863 -436 24 492 -10 1187 1367 90 489 0 -437 406 94 10 313 493 90 0 514 -438 234 246 -10 470 650 90 663 0 -439 315 287 -10 633 813 90 573 0 -440 408 453 10 528 708 90 0 123 -441 128 225 10 125 305 90 0 282 -442 226 191 20 338 518 90 0 888 -443 391 407 -30 487 667 90 346 0 -444 198 264 -30 705 885 90 654 0 -445 179 7 20 807 987 90 0 517 -446 425 215 -10 634 814 90 952 0 -447 483 27 -20 1232 1412 90 853 0 -448 22 40 -10 956 1136 90 257 0 -449 479 176 20 241 421 90 0 602 -450 476 102 20 741 921 90 0 290 -451 386 405 20 206 386 90 0 605 -452 22 38 -30 864 1044 90 536 0 -453 440 241 -10 1026 1206 90 757 0 -454 182 14 -20 999 1179 90 846 0 -455 266 405 -30 622 802 90 213 0 -456 357 181 20 314 494 90 0 646 -457 395 332 10 531 711 90 0 673 -458 423 290 10 269 449 90 0 141 -459 104 28 -10 642 822 90 50 0 -460 131 56 10 421 601 90 0 852 -461 111 110 -10 480 660 90 678 0 -462 97 93 -20 405 585 90 627 0 -463 90 274 20 344 524 90 0 174 -464 214 394 -10 716 896 90 592 0 -465 6 114 -10 742 922 90 927 0 -466 375 191 30 412 592 90 0 276 -467 356 21 20 343 523 90 0 691 -468 466 165 30 686 866 90 0 847 -469 415 223 -20 1190 1370 90 396 0 -470 397 20 -20 365 545 90 182 0 -471 241 403 -30 625 805 90 597 0 -472 69 334 30 291 471 90 0 967 -473 152 210 20 105 285 90 0 90 -474 67 335 20 567 747 90 0 946 -475 126 30 -20 437 617 90 351 0 -476 390 423 10 223 403 90 0 494 -477 285 162 -20 566 746 90 5 0 -478 285 158 -20 283 463 90 774 0 -479 406 96 20 221 401 90 0 719 -480 459 374 -20 793 973 90 960 0 -481 67 109 -10 323 503 90 616 0 -482 468 475 10 313 493 90 0 43 -483 438 31 10 290 470 90 0 195 -484 168 24 10 703 883 90 0 434 -485 267 394 -10 904 1084 90 252 0 -486 406 450 20 344 524 90 0 743 -487 460 288 10 213 393 90 0 572 -488 224 203 20 53 233 90 0 359 -489 21 487 10 515 695 90 0 436 -490 21 488 -30 606 786 90 79 0 -491 87 217 10 531 711 90 0 821 -492 67 452 30 274 454 90 0 237 -493 119 223 -30 789 969 90 781 0 -494 398 428 -10 507 687 90 476 0 -495 344 262 20 463 643 90 0 420 -496 390 301 10 330 510 90 0 515 -497 167 27 30 421 601 0 0 1040 -498 236 247 20 377 557 90 0 22 -499 313 119 30 621 801 90 0 405 -500 13 51 10 1245 1425 0 0 1002 -501 200 13 10 335 515 90 0 426 -502 0 120 30 372 552 90 0 674 -503 202 4 -20 887 1067 90 799 0 -504 343 144 10 236 416 90 0 766 -505 94 383 -30 571 751 90 958 0 -506 250 411 30 433 613 90 0 260 -507 464 134 -10 987 1167 90 843 0 -508 443 237 20 193 373 90 0 860 -509 4 114 -20 650 830 90 222 0 -510 169 336 -10 775 955 90 256 0 -511 200 178 -20 179 359 90 544 0 -512 412 453 10 622 802 90 0 397 -513 121 151 -10 992 1172 90 907 0 -514 403 93 -10 1066 1246 90 437 0 -515 399 301 -10 519 699 90 496 0 -516 97 387 -30 756 936 90 142 0 -517 176 8 -20 901 1081 90 445 0 -518 62 326 -20 851 1031 90 285 0 -519 151 207 -20 670 850 90 109 0 -520 299 98 -10 252 432 90 32 0 -521 334 240 30 464 644 0 0 1046 -522 92 270 -20 902 1082 90 840 0 -523 444 269 20 479 659 90 0 248 -524 132 223 -30 783 963 90 23 0 -525 428 25 -10 1123 1303 90 607 0 -526 413 421 10 708 888 90 0 568 -527 382 498 10 554 734 90 0 747 -528 391 429 20 410 590 90 0 555 -529 398 97 10 214 394 90 0 989 -530 192 265 -20 609 789 90 368 0 -531 438 26 -10 385 565 90 54 0 -532 44 79 10 267 447 90 0 709 -533 137 290 10 121 301 90 0 905 -534 446 319 -10 300 480 90 611 0 -535 175 487 20 248 428 90 0 303 -536 26 45 30 303 483 90 0 452 -537 147 435 -30 490 670 90 158 0 -538 111 459 20 1084 1264 0 0 1048 -539 472 132 10 706 886 90 0 891 -540 349 158 -10 982 1162 90 740 0 -541 86 268 -20 622 802 90 813 0 -542 415 216 -10 261 441 90 167 0 -543 121 218 -20 134 314 90 902 0 -544 210 185 20 76 256 90 0 511 -545 98 215 -30 158 338 90 66 0 -546 484 174 10 430 610 90 0 377 -547 328 458 -40 885 1065 90 118 0 -548 313 126 10 808 988 0 0 1037 -549 390 415 -20 976 1156 90 788 0 -550 459 17 20 976 1156 90 0 791 -551 481 124 -20 448 628 90 982 0 -552 386 414 -10 1046 1226 90 354 0 -553 116 466 20 256 436 90 0 103 -554 468 295 -20 871 1051 90 899 0 -555 391 426 -20 695 875 90 528 0 -556 408 279 -10 625 805 90 649 0 -557 15 68 -10 388 568 90 95 0 -558 392 424 -10 877 1057 90 849 0 -559 88 95 20 595 775 90 0 773 -560 116 151 -10 715 895 90 47 0 -561 240 250 -10 282 462 90 36 0 -562 123 159 20 156 336 90 0 131 -563 89 290 20 173 353 90 0 818 -564 39 50 30 386 566 90 0 320 -565 359 179 20 407 587 90 0 263 -566 338 257 20 653 833 0 0 1047 -567 92 236 20 983 1163 90 0 161 -568 413 417 -10 1081 1261 90 526 0 -569 91 101 -10 783 963 90 74 0 -570 55 449 20 278 458 90 0 400 -571 57 425 20 260 440 90 0 948 -572 465 287 -10 497 677 90 487 0 -573 320 280 10 170 350 90 0 439 -574 322 468 20 510 690 90 0 202 -575 483 458 10 592 772 90 0 180 -576 312 267 -20 812 992 90 738 0 -577 139 291 10 118 298 90 0 138 -578 388 408 10 303 483 90 0 206 -579 110 459 -10 993 1173 90 422 0 -580 459 372 20 609 789 90 0 304 -581 204 269 30 49 229 90 0 699 -582 407 98 10 218 398 0 0 1027 -583 335 256 -20 836 1016 90 734 0 -584 471 484 -20 505 685 90 990 0 -585 339 244 30 185 365 90 0 996 -586 89 272 10 437 617 90 0 906 -587 488 96 -10 851 1031 90 831 0 -588 316 286 -30 542 722 90 613 0 -589 235 50 -20 765 945 90 197 0 -590 316 258 20 253 433 90 0 702 -591 425 288 10 546 726 90 0 220 -592 213 397 10 622 802 90 0 464 -593 113 156 10 529 709 90 0 80 -594 199 9 -20 792 972 90 764 0 -595 463 167 10 593 773 90 0 916 -596 129 27 -30 623 803 90 235 0 -597 248 404 30 154 334 90 0 471 -598 405 276 -20 719 899 90 10 0 -599 400 288 30 154 334 90 0 273 -600 61 156 -40 407 587 90 352 0 -601 393 20 -20 1116 1296 90 177 0 -602 484 177 -20 337 517 90 449 0 -603 108 116 -20 852 1032 90 698 0 -604 112 217 20 323 503 90 0 742 -605 389 404 -20 209 389 90 451 0 -606 102 391 -10 1040 1220 90 341 0 -607 434 26 10 479 659 90 0 525 -608 488 26 -20 1078 1258 90 858 0 -609 477 120 -10 907 1087 90 707 0 -610 126 220 -20 595 775 90 40 0 -611 439 310 10 198 378 90 0 534 -612 212 319 -20 170 350 90 130 0 -613 320 283 30 356 536 90 0 588 -614 17 459 -20 1147 1327 90 812 0 -615 236 213 20 39 219 90 0 667 -616 68 108 10 230 410 90 0 481 -617 390 294 -20 802 982 90 687 0 -618 275 42 -10 483 663 90 633 0 -619 423 214 -20 542 722 90 293 0 -620 460 367 20 331 511 0 0 1019 -621 272 402 -20 245 425 90 362 0 -622 478 102 -10 649 829 90 179 0 -623 400 260 40 150 330 90 0 776 -624 181 6 20 625 805 90 0 201 -625 470 475 30 315 495 90 0 60 -626 245 408 -10 529 709 90 772 0 -627 93 96 20 310 490 90 0 462 -628 218 318 -10 822 1002 90 971 0 -629 441 265 -10 282 462 90 250 0 -630 21 64 -10 757 937 90 215 0 -631 356 23 -20 251 431 90 76 0 -632 267 44 20 581 761 90 0 192 -633 277 50 10 203 383 90 0 618 -634 182 4 -30 533 713 90 328 0 -635 26 36 -20 584 764 90 121 0 -636 384 491 -10 833 1013 90 793 0 -637 418 290 -20 1107 1287 90 55 0 -638 321 277 10 75 255 90 0 337 -639 358 16 -10 528 708 90 333 0 -640 389 334 20 254 434 90 0 861 -641 48 78 -10 926 1106 90 763 0 -642 24 68 -20 1219 1399 90 750 0 -643 206 225 -30 335 515 90 371 0 -644 290 141 -10 587 767 90 136 0 -645 439 15 20 588 768 90 0 889 -646 359 182 -20 694 874 90 456 0 -647 413 287 -10 1293 1473 90 239 0 -648 230 49 20 201 381 90 0 949 -649 407 280 10 534 714 90 0 556 -650 459 295 -30 1151 1331 90 881 0 -651 468 199 20 609 789 90 0 733 -652 101 384 30 200 380 90 0 823 -653 170 26 -20 796 976 90 935 0 -654 197 270 30 421 601 90 0 444 -655 415 289 20 169 349 90 0 976 -656 203 390 40 244 424 90 0 761 -657 443 272 10 755 935 90 0 826 -658 210 391 -20 147 327 90 815 0 -659 363 22 20 904 1084 90 0 110 -660 352 176 20 126 306 90 0 402 -661 212 223 -30 705 885 90 956 0 -662 8 120 -20 1110 1290 90 871 0 -663 244 250 10 97 277 90 0 438 -664 18 484 10 330 510 90 0 731 -665 379 82 10 765 945 90 0 340 -666 84 346 -10 1036 1216 90 18 0 -667 233 207 -20 46 226 90 615 0 -668 344 62 -20 1151 1331 90 259 0 -669 20 489 10 788 968 90 0 701 -670 361 181 20 602 782 90 0 207 -671 174 494 -20 438 618 90 226 0 -672 49 76 -20 834 1014 90 894 0 -673 390 325 -10 816 996 90 457 0 -674 7 118 -30 927 1107 90 502 0 -675 107 26 -10 458 638 90 190 0 -676 312 270 -30 905 1085 90 166 0 -677 399 102 20 592 772 90 0 917 -678 109 108 10 387 567 90 0 461 -679 115 218 10 230 410 90 0 880 -680 88 287 -30 828 1008 90 27 0 -681 54 424 10 264 444 0 0 1010 -682 125 32 -10 344 524 90 127 0 -683 199 12 -10 426 606 90 879 0 -684 457 374 -10 885 1065 90 810 0 -685 391 413 -10 951 1131 90 427 0 -686 304 102 -20 442 622 90 357 0 -687 391 293 20 711 891 90 0 617 -688 66 336 -20 658 838 90 393 0 -689 132 291 -20 677 857 90 945 0 -690 18 462 -20 963 1143 90 887 0 -691 347 62 -20 1058 1238 90 467 0 -692 466 142 10 424 604 90 0 913 -693 389 17 -20 931 1111 90 716 0 -694 342 254 10 183 363 90 0 951 -695 92 223 -10 905 1085 90 8 0 -696 404 83 30 783 963 90 0 205 -697 290 46 -10 774 954 90 324 0 -698 95 92 20 498 678 90 0 603 -699 200 265 -30 797 977 90 581 0 -700 435 16 -20 772 952 90 14 0 -701 25 499 -10 1090 1270 90 669 0 -702 319 260 -20 438 618 90 590 0 -703 116 225 20 696 876 0 0 1045 -704 402 284 30 250 430 90 0 717 -705 108 105 20 204 384 90 0 159 -706 386 13 10 742 922 90 0 762 -707 472 129 10 258 438 90 0 609 -708 132 57 -20 329 509 90 382 0 -709 43 71 -10 463 643 90 532 0 -710 493 91 30 480 660 90 0 961 -711 12 451 20 311 491 90 0 403 -712 201 188 10 464 644 90 0 732 -713 60 428 20 1008 1188 90 0 185 -714 243 248 -20 189 369 90 183 0 -715 230 197 -10 527 707 90 800 0 -716 389 11 20 648 828 90 0 693 -717 401 281 -30 906 1086 90 704 0 -718 459 14 20 315 495 90 0 430 -719 411 95 -20 408 588 90 479 0 -720 0 297 -10 618 798 90 102 0 -721 476 196 30 420 600 90 0 253 -722 458 16 20 313 493 90 0 100 -723 92 230 -10 434 614 90 246 0 -724 432 24 -40 938 1118 90 139 0 -725 215 317 10 77 257 90 0 13 -726 371 192 -20 135 315 90 963 0 -727 481 20 -10 512 692 90 432 0 -728 152 207 20 761 941 90 0 65 -729 14 459 20 501 681 90 0 413 -730 361 17 -10 715 895 90 229 0 -731 8 497 -10 893 1073 90 664 0 -732 206 186 -10 833 1013 90 712 0 -733 421 218 -20 819 999 90 651 0 -734 402 264 20 155 335 90 0 583 -735 388 325 -30 908 1088 90 325 0 -736 35 304 30 222 402 90 0 34 -737 321 263 20 622 802 90 0 873 -738 444 313 20 397 577 90 0 576 -739 188 462 40 699 879 90 0 281 -740 400 103 10 501 681 90 0 540 -741 418 221 -20 1096 1276 90 309 0 -742 112 219 -20 415 595 90 604 0 -743 408 452 -20 437 617 90 486 0 -744 30 301 10 603 783 90 0 811 -745 205 228 10 51 231 90 0 143 -746 407 88 -10 969 1149 90 292 0 -747 380 489 -10 1024 1204 90 527 0 -748 395 331 -20 622 802 90 339 0 -749 133 26 10 717 897 90 0 429 -750 21 68 20 1126 1306 90 0 642 -751 313 282 20 728 908 0 0 1049 -752 53 440 -10 568 748 90 882 0 -753 458 130 -20 1085 1265 90 877 0 -754 437 15 30 680 860 0 0 1029 -755 400 286 10 157 337 90 0 99 -756 346 144 -40 605 785 90 294 0 -757 440 244 10 751 931 90 0 453 -758 280 162 30 94 274 90 0 398 -759 488 173 -20 524 704 90 299 0 -760 326 118 -30 153 333 90 388 0 -761 207 400 -40 436 616 90 656 0 -762 391 18 -10 1023 1203 90 706 0 -763 37 55 10 665 845 90 0 641 -764 204 15 20 239 419 90 0 594 -765 173 28 -20 1073 1253 90 975 0 -766 343 148 -10 330 510 90 504 0 -767 231 43 10 390 570 90 0 214 -768 445 273 -10 663 843 90 829 0 -769 432 27 10 754 934 90 0 379 -770 439 305 -30 677 857 90 807 0 -771 208 396 20 341 521 90 0 376 -772 249 407 10 339 519 90 0 626 -773 107 112 -20 667 847 90 559 0 -774 279 159 20 187 367 90 0 478 -775 376 494 -20 275 455 90 28 0 -776 403 262 -40 430 610 90 623 0 -777 41 47 -20 292 472 90 301 0 -778 96 213 30 250 430 90 0 150 -779 461 167 -30 411 591 90 194 0 -780 391 99 20 206 386 90 0 921 -781 116 221 30 509 689 90 0 493 -782 165 343 -20 495 675 90 404 0 -783 388 334 -20 163 343 90 854 0 -784 130 57 40 237 417 90 0 428 -785 422 409 10 234 414 0 0 1020 -786 66 156 -30 595 775 90 870 0 -787 485 86 20 291 471 90 0 318 -788 389 428 20 318 498 90 0 549 -789 117 467 10 254 434 90 0 972 -790 475 477 -20 970 1150 90 809 0 -791 429 27 -20 1215 1395 90 550 0 -792 339 60 20 216 396 90 0 909 -793 381 494 10 738 918 90 0 636 -794 218 321 -20 638 818 90 855 0 -795 64 101 20 605 785 90 0 234 -796 343 254 20 274 454 90 0 21 -797 478 464 10 313 493 90 0 19 -798 423 286 20 363 543 90 0 883 -799 198 9 20 701 881 90 0 503 -800 225 196 10 61 241 90 0 715 -801 374 190 20 228 408 90 0 987 -802 462 14 -20 882 1062 90 326 0 -803 347 54 10 780 960 90 0 165 -804 231 195 -10 434 614 90 211 0 -805 72 96 -10 1159 1339 90 313 0 -806 489 87 -10 385 565 90 957 0 -807 443 313 30 488 668 90 0 770 -808 233 204 20 139 319 90 0 926 -809 477 483 20 691 871 90 0 790 -810 459 368 10 240 420 90 0 684 -811 95 277 -10 999 1179 90 744 0 -812 16 460 20 1056 1236 90 0 614 -813 100 266 20 151 331 90 0 541 -814 288 53 40 871 1051 0 0 1028 -815 211 386 20 141 321 90 0 658 -816 144 439 -10 676 856 90 124 0 -817 224 314 -10 1010 1190 90 168 0 -818 79 291 -20 454 634 90 563 0 -819 95 235 10 155 335 90 0 920 -820 7 123 -20 274 454 90 406 0 -821 91 217 -10 625 805 90 491 0 -822 105 27 10 550 730 90 0 903 -823 101 385 -30 201 381 90 652 0 -824 238 210 30 699 879 0 0 1051 -825 439 67 10 264 444 90 0 370 -826 435 267 -10 1128 1308 90 657 0 -827 443 64 30 727 907 90 0 832 -828 92 234 10 800 980 90 0 433 -829 450 265 10 381 561 90 0 768 -830 102 27 -30 734 914 90 842 0 -831 492 94 10 665 845 90 0 587 -832 440 63 -30 820 1000 90 827 0 -833 453 367 -10 983 1163 90 841 0 -834 15 69 10 297 477 90 0 381 -835 489 17 -30 705 885 90 384 0 -836 335 255 20 85 265 90 0 69 -837 419 418 -30 334 514 90 267 0 -838 292 41 -40 679 859 90 859 0 -839 489 27 10 986 1166 90 0 994 -840 96 270 20 247 427 90 0 522 -841 461 369 10 516 696 90 0 833 -842 105 22 30 272 452 90 0 830 -843 479 121 10 633 813 90 0 507 -844 207 223 -30 520 700 90 218 0 -845 17 458 -20 1238 1418 90 970 0 -846 186 7 20 438 618 90 0 454 -847 465 168 -30 779 959 90 468 0 -848 416 288 -10 1200 1380 90 51 0 -849 388 418 10 217 397 90 0 558 -850 92 233 -20 709 889 90 999 0 -851 179 492 10 625 805 90 0 134 -852 132 55 -10 512 692 90 460 0 -853 485 24 20 326 506 90 0 447 -854 388 331 20 160 340 90 0 783 -855 217 323 20 358 538 90 0 794 -856 281 164 20 91 271 90 0 410 -857 169 340 10 681 861 0 0 1042 -858 491 20 20 799 979 90 0 608 -859 279 42 40 210 390 90 0 838 -860 439 243 -20 1119 1299 90 508 0 -861 391 334 -20 346 526 90 640 0 -862 96 244 -20 1266 1446 90 71 0 -863 441 273 -20 847 1027 90 435 0 -864 477 478 20 877 1057 90 0 280 -865 56 434 20 820 1000 0 0 1005 -866 12 463 20 686 866 90 0 408 -867 458 164 20 316 496 90 0 908 -868 446 65 20 451 631 90 0 154 -869 71 156 -20 784 964 90 274 0 -870 65 153 30 502 682 90 0 786 -871 8 118 20 1018 1198 90 0 662 -872 102 29 30 826 1006 0 0 1015 -873 315 265 -20 718 898 90 737 0 -874 343 62 -20 1242 1422 90 42 0 -875 384 16 -10 836 1016 90 108 0 -876 67 105 10 510 690 90 0 878 -877 478 118 20 999 1179 90 0 753 -878 73 101 -10 1254 1434 90 876 0 -879 200 14 10 244 424 90 0 683 -880 114 225 -10 604 784 90 679 0 -881 460 293 30 1059 1239 90 0 650 -882 51 447 10 379 559 90 0 752 -883 418 295 -20 1012 1192 90 798 0 -884 282 139 20 117 297 0 0 1044 -885 477 122 -20 815 995 90 111 0 -886 91 266 -10 718 898 90 116 0 -887 16 463 20 780 960 90 0 690 -888 228 199 -20 619 799 90 442 0 -889 435 20 -20 866 1046 90 645 0 -890 467 195 10 224 404 90 0 11 -891 469 132 -10 799 979 90 539 0 -892 465 136 30 895 1075 0 0 1016 -893 246 255 -20 758 938 90 311 0 -894 49 75 20 743 923 90 0 672 -895 66 98 -10 880 1060 90 114 0 -896 166 32 10 234 414 90 0 244 -897 326 466 -30 695 875 90 210 0 -898 202 186 -20 556 736 90 308 0 -899 467 285 20 314 494 90 0 554 -900 290 136 20 492 672 90 0 25 -901 341 58 10 309 489 90 0 319 -902 121 219 20 132 312 90 0 543 -903 107 35 -10 924 1104 90 822 0 -904 216 319 10 264 444 90 0 78 -905 134 288 -10 861 1041 90 533 0 -906 89 270 -10 529 709 90 586 0 -907 136 52 10 698 878 90 0 513 -908 462 167 -20 502 682 90 867 0 -909 340 54 -20 403 583 90 792 0 -910 80 286 -10 549 729 90 938 0 -911 38 301 -10 701 881 90 61 0 -912 25 307 -20 414 594 90 922 0 -913 470 139 -10 609 789 90 692 0 -914 270 400 10 151 331 90 0 86 -915 204 187 -20 740 920 90 979 0 -916 460 171 -10 875 1055 90 595 0 -917 399 106 -20 867 1047 90 677 0 -918 197 267 -10 514 694 90 933 0 -919 77 350 -10 938 1118 90 105 0 -920 91 231 -10 525 705 90 819 0 -921 398 103 -20 683 863 90 780 0 -922 35 303 20 221 401 90 0 912 -923 231 204 20 715 895 90 0 355 -924 311 266 10 63 243 90 0 155 -925 416 420 20 615 795 90 0 223 -926 231 203 -20 232 412 90 808 0 -927 4 116 10 558 738 90 0 465 -928 417 217 30 354 534 90 0 15 -929 268 52 -30 951 1131 90 12 0 -930 345 144 30 514 694 90 0 169 -931 368 85 30 202 382 90 0 137 -932 441 65 10 356 536 90 0 270 -933 201 270 10 53 233 90 0 918 -934 0 293 30 524 704 90 0 126 -935 167 24 20 612 792 90 0 653 -936 186 464 -20 606 786 90 208 0 -937 7 292 10 246 426 0 0 1014 -938 80 290 10 362 542 90 0 910 -939 405 455 40 826 1006 0 0 1009 -940 439 312 30 200 380 90 0 314 -941 300 108 10 150 330 90 0 243 -942 478 121 -30 724 904 90 94 0 -943 92 232 10 342 522 90 0 227 -944 111 463 -10 807 987 90 974 0 -945 132 294 20 398 578 90 0 689 -946 134 285 -20 1046 1226 90 474 0 -947 316 284 -30 450 630 90 72 0 -948 56 428 -20 358 538 90 571 0 -949 232 47 -20 205 385 90 648 0 -950 466 291 10 591 771 90 0 423 -951 341 257 -10 367 547 90 694 0 -952 420 213 10 449 629 90 0 446 -953 116 152 -20 624 804 90 316 0 -954 163 337 -40 215 395 90 981 0 -955 440 7 -20 399 579 90 184 0 -956 208 222 30 611 791 90 0 661 -957 485 95 10 281 461 90 0 806 -958 97 385 30 477 657 90 0 505 -959 462 367 20 423 603 90 0 56 -960 455 365 20 235 415 90 0 480 -961 492 95 -30 756 936 90 710 0 -962 405 450 -20 253 433 90 115 0 -963 371 193 20 133 313 90 0 726 -964 234 202 10 325 505 90 0 277 -965 404 103 -20 407 587 90 300 0 -966 24 41 10 489 669 90 0 247 -967 67 334 -30 476 656 90 472 0 -968 207 227 10 48 228 0 0 1050 -969 277 403 10 340 520 90 0 251 -970 15 457 20 408 588 90 0 845 -971 217 319 10 730 910 90 0 628 -972 111 467 -10 532 712 90 789 0 -973 378 493 30 367 547 90 0 188 -974 112 465 10 624 804 90 0 944 -975 173 25 20 889 1069 90 0 765 -976 421 292 -20 176 356 90 655 0 -977 74 146 30 204 384 90 0 390 -978 178 491 10 533 713 90 0 358 -979 204 185 20 648 828 90 0 915 -980 319 470 10 323 503 0 0 1021 -981 163 331 40 118 298 90 0 954 -982 470 125 20 253 433 90 0 551 -983 315 121 -20 528 708 90 353 0 -984 166 34 20 231 411 90 0 48 -985 284 140 40 115 295 90 0 1000 -986 85 288 -20 267 447 90 411 0 -987 376 190 -20 320 500 90 801 0 -988 238 203 10 419 599 90 0 286 -989 399 104 -10 775 955 90 529 0 -990 472 481 20 412 592 90 0 584 -991 46 74 -10 557 737 90 33 0 -992 401 255 -10 621 801 90 162 0 -993 475 480 30 784 964 0 0 1001 -994 485 27 -10 1171 1351 90 839 0 -995 476 174 -20 809 989 90 296 0 -996 330 242 -30 559 739 90 585 0 -997 332 249 30 82 262 90 0 365 -998 375 80 -20 484 664 90 151 0 -999 94 235 20 157 337 90 0 850 -1000 287 144 -40 771 951 90 985 0 -1001 475 480 -30 784 964 90 993 0 -1002 13 51 -10 1245 1425 90 500 0 -1003 138 438 -20 772 952 90 412 0 -1004 17 65 -20 572 752 90 271 0 -1005 56 434 -20 820 1000 90 865 0 -1006 489 101 -20 946 1126 90 58 0 -1007 70 100 -10 1065 1245 90 284 0 -1008 435 68 -10 259 439 90 35 0 -1009 405 455 -40 826 1006 90 939 0 -1010 54 424 -10 264 444 90 681 0 -1011 366 20 -10 811 991 90 88 0 -1012 317 261 -20 346 526 90 312 0 -1013 189 464 -10 791 971 90 409 0 -1014 7 292 -10 246 426 90 937 0 -1015 102 29 -30 826 1006 90 872 0 -1016 465 136 -30 895 1075 90 892 0 -1017 202 9 -10 1163 1343 90 82 0 -1018 377 76 -20 579 759 90 163 0 -1019 460 367 -20 331 511 90 620 0 -1020 422 409 -10 234 414 90 785 0 -1021 319 470 -10 323 503 90 980 0 -1022 457 163 -20 225 405 90 84 0 -1023 391 425 -20 786 966 90 342 0 -1024 220 392 -20 903 1083 90 391 0 -1025 109 114 -10 760 940 90 389 0 -1026 335 57 -30 210 390 90 386 0 -1027 407 98 -10 218 398 90 582 0 -1028 288 53 -40 871 1051 90 814 0 -1029 437 15 -30 680 860 90 754 0 -1030 117 152 -20 807 987 90 418 0 -1031 76 345 -30 473 653 90 9 0 -1032 417 218 -10 1003 1183 90 73 0 -1033 249 258 -30 852 1032 90 266 0 -1034 95 218 -20 810 990 90 383 0 -1035 87 96 -30 687 867 90 172 0 -1036 8 116 -20 835 1015 90 196 0 -1037 313 126 -10 808 988 90 548 0 -1038 154 207 -20 944 1124 90 186 0 -1039 379 196 -20 599 779 90 31 0 -1040 167 27 -30 421 601 90 497 0 -1041 124 219 -20 503 683 90 119 0 -1042 169 340 -10 681 861 90 857 0 -1043 128 291 -10 583 763 90 46 0 -1044 282 139 -20 117 297 90 884 0 -1045 116 225 -20 696 876 90 703 0 -1046 334 240 -30 464 644 90 521 0 -1047 338 257 -20 653 833 90 566 0 -1048 111 459 -20 1084 1264 90 538 0 -1049 313 282 -20 728 908 90 751 0 -1050 207 227 -10 48 228 90 968 0 -1051 238 210 -30 699 879 90 824 0 -1052 25 65 -10 941 1121 90 236 0 diff --git a/jsprit-instances/instances/lilim/1000/LC1108.txt b/jsprit-instances/instances/lilim/1000/LC1108.txt deleted file mode 100644 index 54a8ae3ae..000000000 --- a/jsprit-instances/instances/lilim/1000/LC1108.txt +++ /dev/null @@ -1,1054 +0,0 @@ -250 200 1 -0 250 250 0 0 1824 0 0 0 -1 387 297 -10 144 390 90 638 0 -2 5 297 -10 857 1116 90 720 0 -3 355 177 20 141 298 90 0 587 -4 78 346 -10 261 497 90 380 0 -5 286 159 20 434 693 90 0 286 -6 322 465 10 226 417 90 0 268 -7 393 408 -30 534 805 90 346 0 -8 89 216 10 399 658 90 0 821 -9 76 345 30 431 694 90 0 905 -10 410 285 20 400 655 90 0 649 -11 472 189 30 290 534 90 0 651 -12 270 49 30 837 1057 90 0 929 -13 219 325 10 434 648 90 0 78 -14 437 12 20 463 706 90 0 645 -15 418 218 20 898 1106 0 0 1020 -16 20 488 -10 665 909 90 664 0 -17 77 347 20 393 549 90 0 189 -18 73 346 10 642 857 90 0 27 -19 480 455 -20 980 1321 90 295 0 -20 129 292 -10 450 712 90 577 0 -21 337 257 -20 698 970 90 598 0 -22 237 254 -20 545 771 90 498 0 -23 131 220 -20 653 907 90 394 0 -24 417 417 10 888 1086 90 0 568 -25 287 143 -20 646 894 90 900 0 -26 379 80 20 655 871 90 0 340 -27 87 285 -10 609 864 90 18 0 -28 374 489 20 269 545 90 0 188 -29 440 247 -10 593 904 90 157 0 -30 281 137 10 255 531 90 0 136 -31 379 196 20 590 789 90 0 276 -32 297 102 10 155 362 90 0 357 -33 39 76 10 273 533 90 0 209 -34 35 306 20 309 500 90 0 946 -35 435 68 10 259 461 90 0 370 -36 245 251 10 5 246 90 0 463 -37 409 88 -20 575 796 90 204 0 -38 273 55 20 196 377 90 0 192 -39 163 340 -10 417 565 90 954 0 -40 129 223 20 191 423 90 0 610 -41 371 200 -20 763 996 90 801 0 -42 357 26 -20 1065 1299 90 875 0 -43 470 473 -30 1146 1345 90 993 0 -44 77 344 10 196 385 90 0 225 -45 478 461 10 347 644 90 0 302 -46 128 291 -20 549 797 90 329 0 -47 111 113 -20 531 794 90 511 0 -48 164 21 -20 479 737 90 984 0 -49 21 485 30 393 633 90 0 490 -50 108 26 10 340 575 90 0 903 -51 424 286 10 412 676 90 0 220 -52 200 270 20 139 328 90 0 59 -53 7 300 30 959 1201 90 0 62 -54 433 31 10 285 554 90 0 531 -55 420 295 20 867 1153 90 0 883 -56 451 367 -10 1047 1283 90 684 0 -57 118 157 -10 303 565 90 968 0 -58 489 101 20 917 1154 90 0 290 -59 200 261 -20 876 1087 90 52 0 -60 476 483 10 584 796 90 0 809 -61 30 302 10 450 753 90 0 744 -62 8 300 -30 1056 1286 90 53 0 -63 275 45 20 359 600 90 0 366 -64 238 46 40 620 900 90 0 589 -65 152 206 -20 824 1059 90 473 0 -66 99 218 30 154 366 90 0 491 -67 393 410 -10 813 1082 90 427 0 -68 480 460 -10 482 693 90 785 0 -69 337 256 20 87 315 90 0 694 -70 389 300 10 225 432 90 0 496 -71 90 237 -10 1122 1390 90 541 0 -72 321 280 30 77 362 90 0 337 -73 417 218 10 938 1249 90 0 741 -74 64 108 -20 386 627 90 481 0 -75 57 432 -20 889 1116 90 350 0 -76 356 24 20 249 546 90 0 639 -77 143 207 30 173 420 90 0 90 -78 221 325 -10 529 738 90 13 0 -79 22 483 30 325 540 90 0 387 -80 24 65 -10 810 1070 90 557 0 -81 141 431 -20 263 522 90 106 0 -82 202 9 -20 1145 1362 90 399 0 -83 20 48 -20 1098 1428 90 121 0 -84 457 163 20 224 445 90 0 908 -85 470 290 -10 738 993 90 289 0 -86 268 400 20 780 1016 90 0 485 -87 337 251 10 87 299 90 0 848 -88 366 20 -20 760 1042 90 631 0 -89 72 344 20 505 809 90 0 518 -90 149 203 -30 460 690 90 77 0 -91 55 428 20 398 681 90 0 96 -92 189 7 -30 250 489 90 328 0 -93 397 18 10 449 645 90 0 203 -94 481 122 30 486 774 90 0 843 -95 20 73 10 290 537 90 0 215 -96 54 430 -20 512 750 90 91 0 -97 74 350 -10 817 1052 90 317 0 -98 202 8 -10 1036 1288 90 503 0 -99 406 285 20 346 522 0 0 1048 -100 460 2 -20 568 807 90 718 0 -101 441 244 10 845 1019 90 0 826 -102 1 293 -10 384 662 90 937 0 -103 115 465 -10 305 569 90 789 0 -104 422 420 20 416 619 90 0 132 -105 75 347 10 696 987 90 0 919 -106 141 428 20 208 407 90 0 81 -107 404 264 -40 340 517 90 623 0 -108 398 23 10 270 485 90 0 693 -109 148 211 20 131 268 90 0 728 -110 362 22 -20 965 1206 90 716 0 -111 479 127 20 331 558 90 0 551 -112 443 246 -20 434 695 90 508 0 -113 22 37 -10 748 978 90 257 0 -114 65 100 10 679 895 90 0 895 -115 404 447 20 250 444 90 0 552 -116 102 264 10 148 425 90 0 840 -117 444 271 10 541 780 90 0 637 -118 325 466 -30 563 824 90 210 0 -119 124 219 -20 476 710 90 183 0 -120 335 243 20 326 596 90 0 477 -121 26 42 20 384 589 90 0 83 -122 113 106 20 198 424 90 0 461 -123 399 450 -10 908 1120 90 512 0 -124 146 439 -30 531 818 90 158 0 -125 162 336 20 123 366 0 0 1046 -126 2 295 -10 676 925 90 181 0 -127 122 35 -20 250 471 90 382 0 -128 346 60 -10 941 1171 90 901 0 -129 93 213 -20 319 548 90 545 0 -130 218 316 20 73 315 90 0 904 -131 116 156 -10 434 619 90 291 0 -132 419 422 -20 446 777 90 104 0 -133 467 141 -40 506 705 90 175 0 -134 187 491 -10 696 929 90 671 0 -135 433 25 20 801 1072 90 0 232 -136 286 137 -10 353 622 90 30 0 -137 370 82 -20 372 586 90 151 0 -138 132 290 -20 741 975 90 945 0 -139 435 11 40 302 597 90 0 791 -140 206 261 -30 932 1223 90 581 0 -141 428 291 10 613 849 90 0 239 -142 95 384 -30 634 871 90 958 0 -143 205 223 -20 359 677 90 615 0 -144 463 140 10 239 480 0 0 1017 -145 343 47 20 639 905 90 0 165 -146 435 62 -10 1086 1289 90 932 0 -147 387 488 -10 884 1149 90 527 0 -148 121 157 10 159 369 90 0 616 -149 182 463 -10 275 537 90 425 0 -150 92 216 -10 726 886 90 227 0 -151 370 83 20 280 497 90 0 137 -152 444 242 -20 343 599 90 336 0 -153 90 285 -10 903 1119 90 174 0 -154 446 64 -10 517 748 90 825 0 -155 312 264 20 63 326 90 0 755 -156 208 11 20 1226 1473 0 0 1035 -157 442 247 10 517 795 90 0 29 -158 140 431 30 211 424 90 0 124 -159 118 153 -20 884 1092 90 418 0 -160 134 428 -20 845 1081 90 385 0 -161 91 235 10 1025 1303 90 0 862 -162 406 257 -20 518 715 90 734 0 -163 377 76 20 561 776 90 0 665 -164 474 96 30 271 496 90 0 242 -165 346 57 -20 808 1119 90 145 0 -166 393 301 -20 401 625 90 231 0 -167 412 214 10 165 454 90 0 542 -168 210 398 -20 502 737 90 761 0 -169 346 150 -10 911 1036 90 504 0 -170 62 453 10 449 651 90 0 216 -171 437 61 -30 954 1235 90 270 0 -172 87 96 -20 637 917 90 627 0 -173 367 83 30 203 499 0 0 1019 -174 91 268 10 778 1021 90 0 153 -175 459 145 40 233 479 90 0 133 -176 63 444 -10 1014 1216 90 364 0 -177 433 27 20 556 766 90 0 724 -178 60 454 10 829 1016 90 0 237 -179 478 99 10 540 753 90 0 753 -180 485 454 10 720 1012 90 0 187 -181 6 292 10 250 425 90 0 126 -182 398 20 20 273 532 90 0 470 -183 248 251 20 2 279 90 0 119 -184 433 15 20 297 569 90 0 754 -185 64 426 -20 1058 1326 90 269 0 -186 154 207 -20 920 1149 90 395 0 -187 481 456 -10 924 1194 90 180 0 -188 380 498 -20 418 687 90 28 0 -189 88 286 -20 740 914 90 17 0 -190 111 23 10 266 439 90 0 459 -191 199 187 -30 338 585 90 218 0 -192 269 48 -20 761 951 90 38 0 -193 367 178 20 453 737 90 0 646 -194 452 163 30 219 486 90 0 692 -195 431 28 20 617 890 90 0 762 -196 8 116 -10 782 1069 90 465 0 -197 233 47 20 292 479 90 0 214 -198 237 43 -10 565 768 90 949 0 -199 320 262 -20 559 681 90 590 0 -200 188 4 20 314 555 90 0 634 -201 180 6 10 691 921 90 0 454 -202 328 466 30 720 1033 0 0 1028 -203 393 12 -10 527 762 90 93 0 -204 409 90 20 481 706 90 0 37 -205 406 87 -20 871 1064 90 300 0 -206 394 407 -20 687 834 90 451 0 -207 358 183 -20 867 1070 90 456 0 -208 186 461 -30 220 467 90 658 0 -209 38 72 -10 317 599 90 33 0 -210 323 471 30 372 643 90 0 118 -211 224 192 10 109 381 90 0 804 -212 278 46 20 205 399 90 0 421 -213 272 403 -10 404 646 90 969 0 -214 232 42 -20 468 676 90 197 0 -215 18 63 -10 648 860 90 95 0 -216 58 458 -10 605 870 90 170 0 -217 416 417 -10 977 1180 90 526 0 -218 205 230 30 90 377 90 0 191 -219 65 453 30 330 584 90 0 240 -220 421 294 -10 794 1042 90 51 0 -221 434 245 -20 1292 1502 90 860 0 -222 2 116 -20 445 667 90 406 0 -223 411 421 -20 782 997 90 925 0 -224 315 260 10 87 414 0 0 1013 -225 136 288 -10 939 1146 90 44 0 -226 173 490 20 336 531 90 0 978 -227 90 232 10 648 765 90 0 150 -228 402 265 20 208 464 90 0 566 -229 361 14 10 609 815 0 0 1051 -230 348 147 -20 768 991 90 241 0 -231 385 295 20 142 327 90 0 166 -232 394 23 -20 1184 1414 90 135 0 -233 466 295 -10 901 1204 90 487 0 -234 71 103 20 1259 1503 0 0 1018 -235 125 29 -30 499 738 90 682 0 -236 25 65 10 919 1143 0 0 1003 -237 58 449 -10 917 1119 90 178 0 -238 246 398 40 148 409 90 0 597 -239 423 294 -10 678 974 90 141 0 -240 59 459 -30 478 814 90 219 0 -241 348 145 20 700 875 90 0 230 -242 477 97 -30 302 614 90 164 0 -243 307 102 -30 497 753 90 686 0 -244 169 31 20 290 543 90 0 484 -245 381 495 20 592 882 90 0 747 -246 95 234 10 244 433 90 0 920 -247 22 33 -10 632 906 90 635 0 -248 435 268 -10 1010 1244 90 330 0 -249 135 293 -10 252 538 90 533 0 -250 439 266 -20 189 399 90 435 0 -251 269 402 20 512 723 90 0 252 -252 267 400 -20 728 887 90 251 0 -253 473 196 10 480 727 90 0 392 -254 445 237 10 236 514 90 0 717 -255 461 284 10 215 400 90 0 423 -256 167 339 10 564 794 90 0 857 -257 26 43 10 305 575 90 0 113 -258 101 386 -20 242 522 90 823 0 -259 342 54 -20 414 756 90 792 0 -260 243 399 -10 721 899 90 471 0 -261 288 44 20 580 767 90 0 814 -262 274 48 -10 270 502 90 633 0 -263 360 184 -20 763 989 90 670 0 -264 23 67 -10 1016 1233 90 834 0 -265 6 296 10 720 1070 0 0 1015 -266 249 258 -10 823 1061 90 626 0 -267 421 415 30 237 495 90 0 837 -268 319 468 -10 228 478 90 6 0 -269 50 438 20 634 870 90 0 185 -270 440 61 30 871 1133 90 0 171 -271 17 65 -20 553 771 90 381 0 -272 323 118 20 212 460 90 0 548 -273 402 281 -10 777 1034 90 757 0 -274 71 153 -20 641 922 90 390 0 -275 52 432 -10 689 942 90 882 0 -276 378 199 -20 670 895 90 31 0 -277 238 204 -10 459 741 90 988 0 -278 208 184 20 91 246 90 0 907 -279 376 195 -30 488 704 90 726 0 -280 473 475 -20 1022 1283 90 790 0 -281 215 395 -20 768 1026 90 815 0 -282 123 222 30 289 517 90 0 298 -283 436 241 -20 1180 1425 90 867 0 -284 70 100 -20 1031 1279 90 672 0 -285 73 328 20 193 328 90 0 474 -286 241 205 -20 553 833 90 5 0 -287 250 405 20 211 463 90 0 772 -288 483 14 10 558 838 90 0 835 -289 466 287 10 386 606 90 0 85 -290 467 114 -20 1093 1288 90 58 0 -291 120 159 10 265 418 90 0 131 -292 408 84 10 640 919 90 0 746 -293 413 217 20 166 401 90 0 469 -294 338 142 40 139 358 90 0 540 -295 483 457 20 653 892 90 0 19 -296 479 169 -10 683 925 90 377 0 -297 95 224 -30 983 1194 90 778 0 -298 122 216 -30 375 622 90 282 0 -299 477 179 20 237 456 90 0 759 -300 406 99 20 303 501 90 0 205 -301 44 47 20 289 583 90 0 777 -302 487 450 -10 822 1099 90 45 0 -303 172 488 -20 250 455 90 535 0 -304 460 374 -10 649 935 90 810 0 -305 279 138 40 159 442 90 0 520 -306 338 147 10 135 446 0 0 1037 -307 395 295 20 577 836 90 0 676 -308 195 185 20 280 455 90 0 915 -309 463 194 20 220 466 90 0 890 -310 30 72 -20 1277 1452 90 750 0 -311 244 254 -10 641 870 90 438 0 -312 317 261 20 315 557 90 0 702 -313 67 108 10 231 494 90 0 795 -314 442 310 20 570 772 0 0 1031 -315 63 336 -10 701 982 90 688 0 -316 109 107 20 246 527 90 0 678 -317 100 387 10 334 613 90 0 97 -318 494 94 -10 524 802 90 957 0 -319 343 49 -10 529 830 90 941 0 -320 40 52 -30 462 674 90 564 0 -321 319 124 -10 300 565 90 760 0 -322 94 97 20 218 410 90 0 532 -323 476 94 20 274 499 0 0 1010 -324 283 47 10 287 505 0 0 1030 -325 398 325 30 675 941 90 0 673 -326 460 13 20 397 596 90 0 334 -327 305 107 20 611 830 90 0 348 -328 188 12 30 245 466 90 0 92 -329 136 290 20 194 410 90 0 46 -330 439 268 10 905 1161 90 0 248 -331 112 467 10 410 651 90 0 579 -332 181 469 20 379 625 90 0 936 -333 358 18 -30 430 623 90 386 0 -334 459 10 -20 457 723 90 326 0 -335 199 268 20 181 471 90 0 368 -336 436 237 20 186 408 90 0 152 -337 318 280 -30 215 489 90 72 0 -338 64 99 -30 740 1017 90 372 0 -339 394 333 20 372 686 90 0 457 -340 366 93 -20 860 1065 90 26 0 -341 95 391 -20 806 1075 90 378 0 -342 391 425 -10 768 983 90 555 0 -343 344 146 -20 390 635 90 766 0 -344 198 12 10 455 758 90 0 799 -345 186 472 20 453 744 90 0 739 -346 390 408 30 375 596 90 0 7 -347 19 43 -30 1086 1375 90 536 0 -348 307 108 -20 666 958 90 327 0 -349 59 457 -30 706 952 90 492 0 -350 49 451 20 284 548 90 0 75 -351 125 39 20 245 509 0 0 1024 -352 61 147 -30 278 518 90 977 0 -353 317 123 20 434 617 0 0 1029 -354 392 426 -10 576 812 90 849 0 -355 237 213 -40 789 974 90 715 0 -356 71 333 10 201 376 90 0 393 -357 304 97 -10 328 546 90 32 0 -358 196 462 -10 875 1083 90 851 0 -359 224 191 -10 243 429 90 667 0 -360 37 51 10 536 787 90 0 763 -361 491 25 -20 870 1097 90 727 0 -362 270 401 -10 152 387 90 914 0 -363 474 461 30 307 534 90 0 797 -364 66 448 10 270 582 90 0 176 -365 337 241 20 236 500 90 0 398 -366 269 46 -20 643 885 90 63 0 -367 22 41 10 997 1278 90 0 500 -368 198 271 -20 285 554 90 335 0 -369 287 43 10 457 708 90 0 697 -370 446 63 -10 616 831 90 35 0 -371 200 229 30 211 446 90 0 898 -372 48 72 30 604 876 90 0 338 -373 465 142 10 307 540 90 0 892 -374 123 155 -10 1077 1276 90 593 0 -375 16 497 20 979 1183 90 0 701 -376 220 319 -40 849 1158 90 656 0 -377 484 171 10 597 820 90 0 296 -378 55 431 20 611 835 90 0 341 -379 428 24 10 998 1247 0 0 1001 -380 80 342 10 193 521 90 0 4 -381 16 68 20 395 742 90 0 271 -382 124 56 20 231 537 90 0 127 -383 95 218 20 796 1003 0 0 1039 -384 481 26 30 321 471 90 0 858 -385 145 434 20 384 592 90 0 160 -386 335 57 30 210 406 90 0 333 -387 26 490 -30 1159 1406 90 79 0 -388 324 127 30 143 392 90 0 983 -389 109 114 -30 763 937 90 773 0 -390 72 148 20 207 387 90 0 274 -391 220 392 20 867 1118 0 0 1014 -392 442 243 -10 906 1142 90 253 0 -393 69 336 -10 323 624 90 356 0 -394 131 226 20 121 336 90 0 23 -395 150 204 20 537 796 90 0 186 -396 423 217 -20 666 967 90 619 0 -397 419 459 -10 682 941 90 743 0 -398 285 163 -20 614 880 90 365 0 -399 203 7 20 972 1170 90 0 82 -400 54 445 10 407 719 90 0 752 -401 109 463 -20 861 1117 90 944 0 -402 355 180 30 228 396 90 0 565 -403 13 455 -20 313 538 90 711 0 -404 165 337 -40 254 541 90 981 0 -405 314 124 -30 696 916 90 499 0 -406 9 124 20 271 581 90 0 222 -407 3 292 20 276 586 90 0 934 -408 16 462 -20 843 1079 90 887 0 -409 189 464 10 778 985 0 0 1049 -410 288 154 10 319 617 0 0 1050 -411 90 296 20 166 436 90 0 912 -412 138 438 -30 720 1004 90 816 0 -413 13 459 20 520 844 90 0 614 -414 461 8 20 703 866 90 0 802 -415 96 97 20 217 484 90 0 603 -416 68 99 10 973 1153 90 0 805 -417 146 205 10 271 509 0 0 1045 -418 117 152 20 768 1026 90 0 159 -419 481 96 -20 451 652 90 660 0 -420 338 260 20 534 765 90 0 873 -421 285 44 -20 392 589 90 212 0 -422 111 464 -10 672 940 90 974 0 -423 468 291 -10 654 891 90 255 0 -424 148 206 20 347 617 90 0 519 -425 184 464 10 223 464 90 0 149 -426 197 11 -20 589 808 90 683 0 -427 396 410 10 717 991 90 0 67 -428 133 53 -40 538 850 90 784 0 -429 132 30 -10 768 1033 90 749 0 -430 464 13 20 782 978 90 0 525 -431 100 394 -20 927 1146 90 948 0 -432 483 22 10 388 630 90 0 839 -433 93 235 -10 886 1077 90 910 0 -434 174 26 -20 970 1171 90 975 0 -435 436 264 20 186 419 90 0 250 -436 24 492 -10 1197 1356 90 489 0 -437 406 94 -10 275 530 90 582 0 -438 234 246 10 424 695 90 0 311 -439 315 287 30 593 853 90 0 751 -440 408 453 10 483 754 90 0 939 -441 128 225 10 124 314 90 0 695 -442 226 191 -10 295 561 90 800 0 -443 391 407 -10 441 712 90 578 0 -444 198 264 -30 665 925 90 654 0 -445 179 7 -20 853 941 90 624 0 -446 425 215 10 605 843 90 0 733 -447 483 27 -30 1113 1412 90 608 0 -448 22 40 -10 944 1149 90 966 0 -449 479 176 20 240 489 90 0 546 -450 476 102 20 677 985 90 0 609 -451 386 405 20 206 411 90 0 206 -452 22 38 20 854 1055 0 0 1002 -453 440 241 -10 986 1247 90 847 0 -454 182 14 -10 986 1193 90 201 0 -455 266 405 -10 599 826 90 621 0 -456 357 181 20 282 527 90 0 207 -457 395 332 -20 505 736 90 339 0 -458 423 290 -30 228 490 90 599 0 -459 104 28 -10 594 869 90 190 0 -460 131 56 -20 406 615 90 544 0 -461 111 110 -20 480 660 90 122 0 -462 97 93 20 391 600 90 0 569 -463 90 274 -10 308 560 90 36 0 -464 214 394 10 682 929 90 0 817 -465 6 114 10 712 952 90 0 196 -466 375 191 -30 346 658 90 987 0 -467 356 21 20 301 564 90 0 730 -468 466 165 -10 663 889 90 595 0 -469 415 223 -20 1139 1420 90 293 0 -470 397 20 -20 326 583 90 182 0 -471 241 403 10 608 823 90 0 260 -472 69 334 30 266 497 90 0 967 -473 152 210 20 105 281 90 0 65 -474 67 335 -20 536 777 90 285 0 -475 126 30 10 411 643 90 0 596 -476 390 423 10 222 489 90 0 549 -477 285 162 -20 512 801 90 120 0 -478 285 158 -30 261 485 90 758 0 -479 406 96 20 219 480 90 0 719 -480 459 374 20 800 966 90 0 833 -481 67 109 20 322 504 90 0 74 -482 468 475 10 313 570 90 0 864 -483 438 31 10 288 538 90 0 769 -484 168 24 -20 641 945 90 244 0 -485 267 394 -20 870 1118 90 86 0 -486 406 450 -20 305 563 90 962 0 -487 460 288 10 213 441 90 0 233 -488 224 203 20 53 237 90 0 653 -489 21 487 10 480 730 90 0 436 -490 21 488 -30 548 845 90 49 0 -491 87 217 -30 486 756 90 66 0 -492 67 452 30 272 474 90 0 349 -493 119 223 10 750 1009 0 0 1036 -494 398 428 10 523 672 90 0 685 -495 344 262 -20 419 688 90 836 0 -496 390 301 -10 326 515 90 70 0 -497 167 27 30 404 618 90 0 765 -498 236 247 20 379 555 90 0 22 -499 313 119 30 635 786 90 0 405 -500 13 51 -10 1223 1425 90 367 0 -501 200 13 10 321 528 90 0 594 -502 0 120 -30 323 601 90 820 0 -503 202 4 10 836 1118 90 0 98 -504 343 144 10 181 471 90 0 169 -505 94 383 10 590 732 0 0 1032 -506 250 411 30 374 672 0 0 1040 -507 464 134 -10 946 1209 90 891 0 -508 443 237 20 193 375 90 0 112 -509 4 114 10 614 867 90 0 871 -510 169 336 -10 742 988 90 782 0 -511 200 178 20 172 365 90 0 47 -512 412 453 10 624 801 90 0 123 -513 121 151 20 971 1192 0 0 1005 -514 403 93 -30 1050 1261 90 696 0 -515 399 301 30 490 729 90 0 687 -516 97 387 10 735 957 90 0 606 -517 176 8 -20 908 1074 90 846 0 -518 62 326 -20 799 1084 90 89 0 -519 151 207 -20 675 845 90 424 0 -520 299 98 -40 232 451 90 305 0 -521 334 240 30 460 648 90 0 996 -522 92 270 -20 877 1106 90 813 0 -523 444 269 20 432 706 90 0 657 -524 132 223 -20 760 985 90 703 0 -525 428 25 -20 1106 1321 90 430 0 -526 413 421 10 689 906 90 0 217 -527 382 498 10 549 739 90 0 147 -528 391 429 -20 400 600 90 788 0 -529 398 97 10 212 411 90 0 740 -530 192 265 -10 596 802 90 933 0 -531 438 26 -10 360 591 90 54 0 -532 44 79 -20 267 463 90 322 0 -533 137 290 10 119 398 90 0 249 -534 446 319 30 292 489 90 0 617 -535 175 487 20 248 469 90 0 303 -536 26 45 30 303 558 90 0 347 -537 147 435 20 418 743 0 0 1026 -538 111 459 -10 1066 1282 90 725 0 -539 472 132 -10 656 936 90 913 0 -540 349 158 -40 994 1149 90 294 0 -541 86 268 10 597 827 90 0 71 -542 415 216 -10 266 437 90 167 0 -543 121 218 20 132 388 90 0 679 -544 210 185 20 76 295 90 0 460 -545 98 215 20 155 375 90 0 129 -546 484 174 -20 376 664 90 449 0 -547 328 458 -10 833 1116 90 980 0 -548 313 126 -20 781 1016 90 272 0 -549 390 415 -10 928 1205 90 476 0 -550 459 17 -20 929 1203 90 722 0 -551 481 124 -20 401 675 90 111 0 -552 386 414 -20 997 1274 90 115 0 -553 116 466 20 254 536 90 0 972 -554 468 295 10 876 1046 90 0 881 -555 391 426 10 684 885 90 0 342 -556 408 279 -30 560 870 90 704 0 -557 15 68 10 311 644 90 0 80 -558 392 424 10 853 1081 0 0 1021 -559 88 95 -20 522 848 90 698 0 -560 116 151 -20 679 932 90 562 0 -561 240 250 -30 237 508 90 714 0 -562 123 159 20 156 457 90 0 560 -563 89 290 20 165 457 90 0 818 -564 39 50 30 370 582 90 0 320 -565 359 179 -30 395 600 90 402 0 -566 338 257 -20 609 876 90 228 0 -567 92 236 -10 914 1232 90 938 0 -568 413 417 -10 1027 1315 90 24 0 -569 91 101 -20 728 1019 90 462 0 -570 55 449 20 278 497 90 0 713 -571 57 425 20 260 542 90 0 681 -572 465 287 -20 483 690 90 899 0 -573 320 280 10 134 386 90 0 613 -574 322 468 20 466 735 90 0 897 -575 483 458 10 539 825 0 0 1027 -576 312 267 -20 804 999 90 951 0 -577 139 291 10 118 458 90 0 20 -578 388 408 10 289 497 90 0 443 -579 110 459 -10 973 1192 90 331 0 -580 459 372 20 580 819 0 0 1047 -581 204 269 30 49 314 90 0 140 -582 407 98 10 218 468 90 0 437 -583 335 256 -30 827 1025 90 992 0 -584 471 484 -30 473 716 90 625 0 -585 339 244 -30 151 399 90 997 0 -586 89 272 10 434 620 90 0 906 -587 488 96 -20 829 1053 90 3 0 -588 316 286 -20 499 765 90 947 0 -589 235 50 -40 763 947 90 64 0 -590 316 258 20 232 454 90 0 199 -591 425 288 -20 513 760 90 976 0 -592 213 397 -20 585 839 90 771 0 -593 113 156 10 483 756 90 0 374 -594 199 9 -10 799 965 90 501 0 -595 463 167 10 561 804 90 0 468 -596 129 27 -10 584 841 90 475 0 -597 248 404 -40 154 432 90 238 0 -598 405 276 20 678 941 90 0 21 -599 400 288 30 154 400 90 0 458 -600 61 156 30 364 631 90 0 869 -601 393 20 -10 1059 1352 90 607 0 -602 484 177 20 318 535 90 0 995 -603 108 116 -20 813 1071 90 415 0 -604 112 217 20 260 565 90 0 742 -605 389 404 10 207 426 90 0 990 -606 102 391 -10 1001 1259 90 516 0 -607 434 26 10 462 676 90 0 601 -608 488 26 30 1056 1280 90 0 447 -609 477 120 -20 845 1150 90 450 0 -610 126 220 -20 539 831 90 40 0 -611 439 310 10 198 471 90 0 770 -612 212 319 30 141 380 90 0 855 -613 320 283 -10 324 567 90 573 0 -614 17 459 -20 1112 1363 90 413 0 -615 236 213 20 39 250 90 0 143 -616 68 108 -10 230 468 90 148 0 -617 390 294 -30 762 1023 90 534 0 -618 275 42 30 458 687 90 0 632 -619 423 214 20 558 705 90 0 396 -620 460 367 20 326 516 90 0 959 -621 272 402 10 216 454 90 0 455 -622 478 102 10 617 862 90 0 877 -623 400 260 40 150 393 90 0 107 -624 181 6 20 577 853 90 0 445 -625 470 475 30 314 548 90 0 584 -626 245 408 10 472 765 90 0 266 -627 93 96 20 317 483 90 0 172 -628 218 318 20 777 1046 90 0 893 -629 441 265 40 252 493 90 0 829 -630 21 64 20 757 937 90 0 642 -631 356 23 20 250 507 90 0 88 -632 267 44 -30 555 786 90 618 0 -633 277 50 10 210 375 90 0 262 -634 182 4 -20 513 732 90 200 0 -635 26 36 10 549 799 90 0 247 -636 384 491 -10 807 1039 90 793 0 -637 418 290 -10 1080 1314 90 117 0 -638 321 277 10 75 261 90 0 1 -639 358 16 -20 512 725 90 76 0 -640 389 334 20 233 455 90 0 861 -641 48 78 -20 901 1132 90 894 0 -642 24 68 -20 1190 1428 90 630 0 -643 206 225 10 334 516 90 0 844 -644 290 141 -20 566 787 90 774 0 -645 439 15 -20 559 798 90 14 0 -646 359 182 -20 642 926 90 193 0 -647 413 287 -20 1296 1469 90 650 0 -648 230 49 20 201 415 90 0 767 -649 407 280 -20 498 749 90 10 0 -650 459 295 20 1110 1372 90 0 647 -651 468 199 -30 584 814 90 11 0 -652 101 384 30 200 476 90 0 666 -653 170 26 -20 735 1037 90 488 0 -654 197 270 30 374 648 90 0 444 -655 415 289 20 169 437 90 0 798 -656 203 390 40 232 436 90 0 376 -657 443 272 -20 723 967 90 523 0 -658 210 391 30 146 466 90 0 208 -659 363 22 20 843 1146 90 0 874 -660 352 176 20 126 328 90 0 419 -661 212 223 -30 661 929 90 956 0 -662 8 120 10 1095 1306 0 0 1008 -663 244 250 10 47 327 0 0 1043 -664 18 484 10 329 605 90 0 16 -665 379 82 -20 751 960 90 163 0 -666 84 346 -30 1042 1209 90 652 0 -667 233 207 10 46 329 90 0 359 -668 344 62 -10 1130 1352 90 691 0 -669 20 489 10 757 999 90 0 731 -670 361 181 20 599 785 90 0 263 -671 174 494 10 382 675 90 0 134 -672 49 76 20 794 1054 90 0 284 -673 390 325 -30 770 1042 90 325 0 -674 7 118 -10 913 1121 90 927 0 -675 107 26 -30 437 660 90 842 0 -676 312 270 -20 889 1101 90 307 0 -677 399 102 -20 592 773 90 780 0 -678 109 108 -20 345 610 90 316 0 -679 115 218 -20 169 471 90 543 0 -680 88 287 -20 798 1039 90 911 0 -681 54 424 -20 262 575 90 571 0 -682 125 32 30 298 570 90 0 235 -683 199 12 20 398 633 90 0 426 -684 457 374 10 864 1086 90 0 56 -685 391 413 -10 920 1161 90 494 0 -686 304 102 30 431 632 90 0 243 -687 391 293 -30 685 916 90 515 0 -688 66 336 10 623 873 90 0 315 -689 132 291 10 668 866 90 0 699 -690 18 462 -20 936 1170 90 866 0 -691 347 62 10 1089 1207 90 0 668 -692 466 142 -30 403 625 90 194 0 -693 389 17 -10 930 1111 90 108 0 -694 342 254 -20 136 409 90 69 0 -695 92 223 -10 894 1096 90 441 0 -696 404 83 30 755 992 90 0 514 -697 290 46 -10 739 990 90 369 0 -698 95 92 20 446 730 90 0 559 -699 200 265 -10 729 1045 90 689 0 -700 435 16 -20 762 963 90 955 0 -701 25 499 -20 1048 1312 90 375 0 -702 319 260 -20 412 643 90 312 0 -703 116 225 20 683 889 90 0 524 -704 402 284 30 229 450 90 0 556 -705 108 105 20 202 414 0 0 1016 -706 386 13 10 739 924 0 0 1009 -707 472 129 -20 259 437 90 982 0 -708 132 57 20 294 545 90 0 852 -709 43 71 40 425 681 90 0 991 -710 493 91 -20 442 698 90 787 0 -711 12 451 20 311 554 90 0 403 -712 201 188 10 411 697 90 0 979 -713 60 428 -20 976 1220 90 570 0 -714 243 248 30 150 408 90 0 561 -715 230 197 40 513 721 90 0 355 -716 389 11 20 610 867 90 0 110 -717 401 281 -10 877 1115 90 254 0 -718 459 14 20 315 510 90 0 100 -719 411 95 -20 373 623 90 479 0 -720 0 297 10 586 829 90 0 2 -721 476 196 30 404 617 0 0 1034 -722 458 16 20 313 462 90 0 550 -723 92 230 -10 433 614 90 819 0 -724 432 24 -20 925 1131 90 177 0 -725 215 317 10 75 327 90 0 538 -726 371 192 30 134 352 90 0 279 -727 481 20 20 486 718 90 0 361 -728 152 207 -20 727 974 90 109 0 -729 14 459 20 422 759 90 0 812 -730 361 17 -20 663 947 90 467 0 -731 8 497 -10 834 1132 90 669 0 -732 206 186 -10 826 1020 90 745 0 -733 421 218 -10 820 999 90 446 0 -734 402 264 20 152 435 90 0 162 -735 388 325 -20 911 1085 90 748 0 -736 35 304 -20 221 456 90 922 0 -737 321 263 -20 632 791 90 796 0 -738 444 313 -30 361 612 90 940 0 -739 188 462 -20 662 917 90 345 0 -740 400 103 -10 479 702 90 529 0 -741 418 221 -10 1046 1327 90 73 0 -742 112 219 -20 423 586 90 604 0 -743 408 452 10 397 657 90 0 397 -744 30 301 -10 581 804 90 61 0 -745 205 228 10 50 274 90 0 732 -746 407 88 -10 943 1176 90 292 0 -747 380 489 -20 1012 1216 90 245 0 -748 395 331 20 572 851 90 0 735 -749 133 26 10 714 900 90 0 429 -750 21 68 20 1091 1341 90 0 310 -751 313 282 -30 708 928 90 439 0 -752 53 440 -10 539 778 90 400 0 -753 458 130 -10 1059 1290 90 179 0 -754 437 15 -20 642 898 90 184 0 -755 400 286 -20 154 416 90 155 0 -756 346 144 -30 565 825 90 930 0 -757 440 244 10 746 936 90 0 273 -758 280 162 30 92 310 90 0 478 -759 488 173 -20 512 716 90 299 0 -760 326 118 10 152 343 90 0 321 -761 207 400 20 412 640 90 0 168 -762 391 18 -20 993 1233 90 195 0 -763 37 55 -10 627 884 90 360 0 -764 204 15 20 239 575 90 0 879 -765 173 28 -30 1023 1302 90 497 0 -766 343 148 20 297 543 90 0 343 -767 231 43 -20 365 596 90 648 0 -768 445 273 20 598 908 90 0 863 -769 432 27 -10 753 936 90 483 0 -770 439 305 -10 647 887 90 611 0 -771 208 396 20 316 547 90 0 592 -772 249 407 -20 356 502 90 287 0 -773 107 112 30 614 901 90 0 389 -774 279 159 20 132 421 90 0 644 -775 376 494 30 274 481 90 0 973 -776 403 262 30 404 637 0 0 1041 -777 41 47 -20 291 494 90 301 0 -778 96 213 30 209 472 90 0 297 -779 461 167 -20 400 602 90 963 0 -780 391 99 20 206 574 90 0 677 -781 116 221 30 487 712 90 0 880 -782 165 343 10 445 724 90 0 510 -783 388 334 -20 161 394 90 854 0 -784 130 57 40 227 459 90 0 428 -785 422 409 10 234 482 90 0 68 -786 66 156 -30 561 809 90 870 0 -787 485 86 20 286 487 90 0 710 -788 389 428 20 275 541 90 0 528 -789 117 467 10 254 460 90 0 103 -790 475 477 20 903 1217 90 0 280 -791 429 27 -40 1179 1431 90 139 0 -792 339 60 20 209 450 90 0 259 -793 381 494 10 708 949 90 0 636 -794 218 321 20 617 839 90 0 971 -795 64 101 -10 594 797 90 313 0 -796 343 254 20 226 502 90 0 737 -797 478 464 -30 312 590 90 363 0 -798 423 286 -20 323 583 90 655 0 -799 198 9 -10 656 926 90 344 0 -800 225 196 10 59 347 90 0 442 -801 374 190 20 185 451 90 0 41 -802 462 14 -20 900 1045 90 414 0 -803 347 54 -10 762 979 90 909 0 -804 231 195 -10 415 633 90 211 0 -805 72 96 -10 1158 1341 90 416 0 -806 489 87 20 319 630 90 0 961 -807 443 313 -10 478 677 90 924 0 -808 233 204 20 91 368 0 0 1022 -809 477 483 -10 667 894 90 60 0 -810 459 368 10 240 438 90 0 304 -811 95 277 20 954 1224 0 0 1044 -812 16 460 -20 1001 1290 90 729 0 -813 100 266 20 150 413 90 0 522 -814 288 53 -20 872 1050 90 261 0 -815 211 386 20 141 357 90 0 281 -816 144 439 30 655 877 90 0 412 -817 224 314 -10 921 1279 90 464 0 -818 79 291 -20 427 661 90 563 0 -819 95 235 10 155 388 90 0 723 -820 7 123 30 274 547 90 0 502 -821 91 217 -10 607 823 90 8 0 -822 105 27 10 509 772 90 0 830 -823 101 385 20 201 423 90 0 258 -824 238 210 -20 642 936 90 856 0 -825 439 67 10 263 450 90 0 154 -826 435 267 -10 1110 1325 90 101 0 -827 443 64 -20 701 933 90 868 0 -828 92 234 -20 797 982 90 986 0 -829 450 265 -40 360 583 90 629 0 -830 102 27 -10 717 931 90 822 0 -831 492 94 10 625 886 0 0 1006 -832 440 63 20 808 1012 0 0 1011 -833 453 367 -20 961 1184 90 480 0 -834 15 69 10 296 549 90 0 264 -835 489 17 -10 689 901 90 288 0 -836 335 255 20 85 378 90 0 495 -837 419 418 -30 292 556 90 267 0 -838 292 41 -40 625 913 90 859 0 -839 489 27 -10 1001 1152 90 432 0 -840 96 270 -10 214 461 90 116 0 -841 461 369 -20 469 742 90 960 0 -842 105 22 30 273 452 90 0 675 -843 479 121 -30 592 853 90 94 0 -844 207 223 -10 500 719 90 643 0 -845 17 458 -20 1110 1422 90 970 0 -846 186 7 20 391 664 90 0 517 -847 465 168 10 740 998 90 0 453 -848 416 288 -10 1151 1428 90 87 0 -849 388 418 10 217 446 90 0 354 -850 92 233 -10 691 907 90 886 0 -851 179 492 10 590 839 90 0 358 -852 132 55 -20 510 694 90 708 0 -853 485 24 20 326 562 90 0 994 -854 388 331 20 160 434 90 0 783 -855 217 323 -30 330 566 90 612 0 -856 281 164 20 91 375 90 0 824 -857 169 340 -10 667 875 90 256 0 -858 491 20 -30 786 991 90 384 0 -859 279 42 40 210 428 90 0 838 -860 439 243 20 1082 1335 90 0 221 -861 391 334 -20 296 577 90 640 0 -862 96 244 -10 1191 1521 90 161 0 -863 441 273 -20 830 1045 90 768 0 -864 477 478 -10 833 1101 90 482 0 -865 56 434 20 797 1023 0 0 1007 -866 12 463 20 686 865 90 0 690 -867 458 164 20 297 515 90 0 283 -868 446 65 20 408 675 90 0 827 -869 71 156 -30 754 995 90 600 0 -870 65 153 30 428 757 90 0 786 -871 8 118 -10 1006 1211 90 509 0 -872 102 29 30 793 1040 0 0 1012 -873 315 265 -20 698 918 90 420 0 -874 343 62 -20 1254 1410 90 659 0 -875 384 16 20 817 1035 90 0 42 -876 67 105 10 479 721 90 0 878 -877 478 118 -10 984 1194 90 622 0 -878 73 101 -10 1236 1453 90 876 0 -879 200 14 -20 241 445 90 764 0 -880 114 225 -30 587 801 90 781 0 -881 460 293 -10 990 1308 90 554 0 -882 51 447 10 343 596 90 0 275 -883 418 295 -20 978 1225 90 55 0 -884 282 139 -40 115 458 90 985 0 -885 477 122 -40 818 993 90 942 0 -886 91 266 10 672 943 90 0 850 -887 16 463 20 776 964 90 0 408 -888 228 199 10 577 842 90 0 923 -889 435 20 20 839 1073 0 0 1004 -890 467 195 -20 223 592 90 309 0 -891 469 132 10 755 1023 90 0 507 -892 465 136 -10 874 1096 90 373 0 -893 246 255 -20 704 991 90 628 0 -894 49 75 20 721 945 90 0 641 -895 66 98 -10 853 1088 90 114 0 -896 166 32 10 233 530 90 0 935 -897 326 466 -20 634 936 90 574 0 -898 202 186 -30 551 742 90 371 0 -899 467 285 20 270 538 90 0 572 -900 290 136 20 479 685 90 0 25 -901 341 58 10 265 532 90 0 128 -902 121 219 20 132 389 0 0 1038 -903 107 35 -10 909 1118 90 50 0 -904 216 319 -20 232 477 90 130 0 -905 134 288 -30 821 1081 90 9 0 -906 89 270 -10 510 728 90 586 0 -907 136 52 -20 661 914 90 278 0 -908 462 167 -20 447 736 90 84 0 -909 340 54 10 347 638 90 0 803 -910 80 286 10 507 770 90 0 433 -911 38 301 20 652 929 90 0 680 -912 25 307 -20 409 599 90 411 0 -913 470 139 10 568 831 90 0 539 -914 270 400 10 151 451 90 0 362 -915 204 187 -20 735 925 90 308 0 -916 460 171 30 869 1062 0 0 1023 -917 399 106 -20 852 1062 90 965 0 -918 197 267 10 504 704 0 0 1052 -919 77 350 -10 920 1135 90 105 0 -920 91 231 -10 462 768 90 246 0 -921 398 103 30 650 896 90 0 989 -922 35 303 20 221 408 90 0 736 -923 231 204 -10 678 933 90 888 0 -924 311 266 10 63 222 90 0 807 -925 416 420 20 580 830 90 0 223 -926 231 203 -10 183 461 90 964 0 -927 4 116 10 544 752 90 0 674 -928 417 217 30 319 568 90 0 952 -929 268 52 -30 927 1155 90 12 0 -930 345 144 30 475 734 90 0 756 -931 368 85 30 202 456 90 0 998 -932 441 65 10 307 586 90 0 146 -933 201 270 10 52 306 90 0 530 -934 0 293 -20 508 719 90 407 0 -935 167 24 -10 601 804 90 896 0 -936 186 464 -20 564 828 90 332 0 -937 7 292 10 246 492 90 0 102 -938 80 290 10 331 573 90 0 567 -939 405 455 -10 796 1036 90 440 0 -940 439 312 30 198 521 90 0 738 -941 300 108 10 150 318 90 0 319 -942 478 121 40 705 922 90 0 885 -943 92 232 -20 288 575 90 999 0 -944 111 463 20 797 997 90 0 401 -945 132 294 20 357 618 90 0 138 -946 134 285 -20 1066 1207 90 34 0 -947 316 284 20 424 655 90 0 588 -948 56 428 20 323 574 90 0 431 -949 232 47 10 203 387 90 0 198 -950 466 291 10 543 819 0 0 1025 -951 341 257 20 352 563 90 0 576 -952 420 213 -30 432 645 90 928 0 -953 116 152 20 589 839 0 0 1042 -954 163 337 10 155 455 90 0 39 -955 440 7 20 420 557 90 0 700 -956 208 222 30 590 811 90 0 661 -957 485 95 10 281 512 90 0 318 -958 97 385 30 456 679 90 0 142 -959 462 367 -20 415 611 90 620 0 -960 455 365 20 235 476 90 0 841 -961 492 95 -20 722 971 90 806 0 -962 405 450 20 253 448 90 0 486 -963 371 193 20 133 373 90 0 779 -964 234 202 10 279 550 90 0 926 -965 404 103 20 358 636 90 0 917 -966 24 41 10 441 716 90 0 448 -967 67 334 -30 422 710 90 472 0 -968 207 227 10 48 328 90 0 57 -969 277 403 10 320 539 90 0 213 -970 15 457 20 365 631 90 0 845 -971 217 319 -20 681 959 90 794 0 -972 111 467 -20 515 728 90 553 0 -973 378 493 -30 335 578 90 775 0 -974 112 465 10 592 836 90 0 422 -975 173 25 20 881 1077 90 0 434 -976 421 292 20 176 456 90 0 591 -977 74 146 30 204 534 90 0 352 -978 178 491 -20 494 752 90 226 0 -979 204 185 -10 630 846 90 712 0 -980 319 470 10 260 565 90 0 547 -981 163 331 40 118 338 90 0 404 -982 470 125 20 253 501 90 0 707 -983 315 121 -30 473 764 90 388 0 -984 166 34 20 231 508 90 0 48 -985 284 140 40 115 326 90 0 884 -986 85 288 20 211 504 90 0 828 -987 376 190 30 295 526 90 0 466 -988 238 203 10 377 641 90 0 277 -989 399 104 -30 743 987 90 921 0 -990 472 481 -10 338 665 90 605 0 -991 46 74 -40 507 788 90 709 0 -992 401 255 30 608 814 90 0 583 -993 475 480 30 745 1003 90 0 43 -994 485 27 -20 1137 1385 90 853 0 -995 476 174 -20 797 1001 90 602 0 -996 330 242 -30 525 772 90 521 0 -997 332 249 30 82 328 90 0 585 -998 375 80 -30 447 701 90 931 0 -999 94 235 20 156 362 90 0 943 -1000 287 144 20 753 969 0 0 1033 -1001 428 24 -10 998 1247 90 379 0 -1002 22 38 -20 854 1055 90 452 0 -1003 25 65 -10 919 1143 90 236 0 -1004 435 20 -20 839 1073 90 889 0 -1005 121 151 -20 971 1192 90 513 0 -1006 492 94 -10 625 886 90 831 0 -1007 56 434 -20 797 1023 90 865 0 -1008 8 120 -10 1095 1306 90 662 0 -1009 386 13 -10 739 924 90 706 0 -1010 476 94 -20 274 499 90 323 0 -1011 440 63 -20 808 1012 90 832 0 -1012 102 29 -30 793 1040 90 872 0 -1013 315 260 -10 87 414 90 224 0 -1014 220 392 -20 867 1118 90 391 0 -1015 6 296 -10 720 1070 90 265 0 -1016 108 105 -20 202 414 90 705 0 -1017 463 140 -10 239 480 90 144 0 -1018 71 103 -20 1259 1503 90 234 0 -1019 367 83 -30 203 499 90 173 0 -1020 418 218 -20 898 1106 90 15 0 -1021 392 424 -10 853 1081 90 558 0 -1022 233 204 -20 91 368 90 808 0 -1023 460 171 -30 869 1062 90 916 0 -1024 125 39 -20 245 509 90 351 0 -1025 466 291 -10 543 819 90 950 0 -1026 147 435 -20 418 743 90 537 0 -1027 483 458 -10 539 825 90 575 0 -1028 328 466 -30 720 1033 90 202 0 -1029 317 123 -20 434 617 90 353 0 -1030 283 47 -10 287 505 90 324 0 -1031 442 310 -20 570 772 90 314 0 -1032 94 383 -10 590 732 90 505 0 -1033 287 144 -20 753 969 90 1000 0 -1034 476 196 -30 404 617 90 721 0 -1035 208 11 -20 1226 1473 90 156 0 -1036 119 223 -10 750 1009 90 493 0 -1037 338 147 -10 135 446 90 306 0 -1038 121 219 -20 132 389 90 902 0 -1039 95 218 -20 796 1003 90 383 0 -1040 250 411 -30 374 672 90 506 0 -1041 403 262 -30 404 637 90 776 0 -1042 116 152 -20 589 839 90 953 0 -1043 244 250 -10 47 327 90 663 0 -1044 95 277 -20 954 1224 90 811 0 -1045 146 205 -10 271 509 90 417 0 -1046 162 336 -20 123 366 90 125 0 -1047 459 372 -20 580 819 90 580 0 -1048 406 285 -20 346 522 90 99 0 -1049 189 464 -10 778 985 90 409 0 -1050 288 154 -10 319 617 90 410 0 -1051 361 14 -10 609 815 90 229 0 -1052 197 267 -10 504 704 90 918 0 diff --git a/jsprit-instances/instances/lilim/1000/LC1109.txt b/jsprit-instances/instances/lilim/1000/LC1109.txt deleted file mode 100644 index 63f86a46a..000000000 --- a/jsprit-instances/instances/lilim/1000/LC1109.txt +++ /dev/null @@ -1,1048 +0,0 @@ -250 200 1 -0 250 250 0 0 1824 0 0 0 -1 387 297 10 144 504 90 0 515 -2 5 297 -20 806 1166 90 407 0 -3 355 177 20 127 487 90 0 565 -4 78 346 30 199 559 90 0 341 -5 286 159 20 383 743 90 0 355 -6 322 465 10 226 586 90 0 28 -7 393 408 -10 489 849 90 605 0 -8 89 216 10 348 708 90 0 821 -9 76 345 30 383 743 90 0 378 -10 410 285 20 348 708 90 0 655 -11 472 189 30 232 592 90 0 296 -12 270 49 -10 767 1127 90 30 0 -13 219 325 10 361 721 90 0 376 -14 437 12 20 405 765 90 0 754 -15 418 218 20 822 1182 90 0 741 -16 20 488 -10 607 967 90 490 0 -17 77 347 20 291 651 90 0 958 -18 73 346 -20 569 929 90 89 0 -19 480 455 -40 971 1331 90 187 0 -20 129 292 -30 401 761 90 249 0 -21 337 257 -20 654 1014 90 590 0 -22 237 254 20 478 838 90 0 311 -23 131 220 30 600 960 90 0 524 -24 417 417 10 807 1167 90 0 568 -25 287 143 -20 590 950 90 357 0 -26 379 80 20 583 943 90 0 340 -27 87 285 30 556 916 90 0 680 -28 374 489 -10 269 629 90 6 0 -29 440 247 -10 568 928 90 152 0 -30 281 137 10 213 573 90 0 12 -31 379 196 -30 509 869 90 987 0 -32 297 102 10 155 515 90 0 520 -33 39 76 10 273 633 90 0 95 -34 35 306 20 224 584 90 0 862 -35 435 68 10 259 619 90 0 932 -36 245 251 10 5 365 90 0 714 -37 409 88 20 505 865 90 0 205 -38 273 55 20 196 556 90 0 261 -39 163 340 30 311 671 90 0 256 -40 129 223 20 127 487 90 0 282 -41 371 200 -30 699 1059 90 466 0 -42 357 26 20 1002 1362 0 0 1003 -43 470 473 -10 1061 1421 90 280 0 -44 77 344 10 196 556 90 0 516 -45 478 461 -30 316 676 90 267 0 -46 128 291 -20 493 853 90 945 0 -47 111 113 -10 483 843 90 131 0 -48 164 21 20 428 788 90 0 765 -49 21 485 -10 333 693 90 664 0 -50 108 26 10 277 637 90 0 459 -51 424 286 -20 364 724 90 99 0 -52 200 270 20 54 414 90 0 530 -53 7 300 -10 900 1260 90 937 0 -54 433 31 10 285 645 90 0 447 -55 420 295 20 830 1190 90 0 883 -56 451 367 -20 985 1345 90 339 0 -57 118 157 20 254 614 90 0 461 -58 489 101 -10 856 1216 90 242 0 -59 200 261 -10 801 1161 90 918 0 -60 476 483 -10 510 870 90 584 0 -61 30 302 -10 422 782 90 938 0 -62 8 300 -10 991 1351 90 720 0 -63 275 45 20 300 660 90 0 192 -64 238 46 -10 580 940 90 214 0 -65 152 206 -10 762 1122 90 786 0 -66 99 218 30 154 514 90 0 491 -67 393 410 -30 767 1127 90 346 0 -68 480 460 -30 408 768 90 363 0 -69 337 256 20 87 447 90 0 556 -70 389 300 10 149 509 90 0 687 -71 90 237 -10 1076 1436 90 161 0 -72 321 280 30 77 437 90 0 217 -73 417 218 10 913 1273 0 0 1023 -74 64 108 -20 326 686 90 481 0 -75 57 432 10 823 1183 0 0 1013 -76 356 24 20 249 609 90 0 88 -77 143 207 30 116 476 90 0 600 -78 221 325 10 453 813 90 0 628 -79 22 483 -20 325 685 90 570 0 -80 24 65 10 760 1120 0 0 1005 -81 141 431 30 213 573 90 0 425 -82 202 9 -20 1073 1433 90 399 0 -83 20 48 -10 1068 1428 90 367 0 -84 457 163 -30 224 584 90 194 0 -85 470 290 -10 685 1045 90 487 0 -86 268 400 -10 718 1078 90 252 0 -87 337 251 10 87 447 90 0 199 -88 366 20 -20 721 1081 90 76 0 -89 72 344 20 477 837 90 0 18 -90 149 203 10 395 755 90 0 728 -91 55 428 20 359 719 90 0 275 -92 189 7 30 250 610 90 0 454 -93 397 18 -20 367 727 90 470 0 -94 481 122 30 450 810 90 0 843 -95 20 73 -10 290 650 90 33 0 -96 54 430 -20 451 811 90 948 0 -97 74 350 10 755 1115 90 0 919 -98 202 8 -10 982 1342 90 503 0 -99 406 285 20 254 614 90 0 51 -100 460 2 20 508 868 90 0 802 -101 441 244 10 752 1112 90 0 453 -102 1 293 10 343 703 90 0 934 -103 115 465 10 257 617 90 0 974 -104 422 420 20 338 698 90 0 526 -105 75 347 10 661 1021 90 0 666 -106 141 428 20 208 568 90 0 345 -107 404 264 20 248 608 90 0 717 -108 398 23 -20 270 630 90 272 0 -109 148 211 20 109 469 90 0 227 -110 362 22 -30 905 1265 90 639 0 -111 479 127 -10 265 625 90 144 0 -112 443 246 -10 385 745 90 694 0 -113 22 37 10 683 1043 90 0 452 -114 65 100 10 607 967 90 0 674 -115 404 447 -20 250 610 90 788 0 -116 102 264 -20 148 508 90 394 0 -117 444 271 10 481 841 90 0 647 -118 325 466 -10 514 874 90 969 0 -119 124 219 20 413 773 90 0 610 -120 335 243 20 281 641 90 0 521 -121 26 42 20 307 667 90 0 966 -122 113 106 20 198 558 90 0 852 -123 399 450 -10 834 1194 90 512 0 -124 146 439 -20 494 854 90 258 0 -125 162 336 20 123 483 90 0 404 -126 2 295 30 621 981 90 0 265 -127 122 35 10 250 610 90 0 475 -128 346 60 -10 876 1236 90 803 0 -129 93 213 30 253 613 90 0 828 -130 218 316 20 73 433 90 0 612 -131 116 156 10 346 706 90 0 47 -132 419 422 20 431 791 90 0 925 -133 467 141 -10 426 786 90 692 0 -134 187 491 20 633 993 90 0 358 -135 433 25 -30 757 1117 90 173 0 -136 286 137 -40 308 668 90 985 0 -137 370 82 -20 299 659 90 321 0 -138 132 290 -20 678 1038 90 329 0 -139 435 11 40 302 662 90 0 334 -140 206 261 -20 897 1257 90 444 0 -141 428 291 -30 551 911 90 599 0 -142 95 384 -10 572 932 90 505 0 -143 205 223 20 338 698 90 0 781 -144 463 140 10 239 599 90 0 111 -145 343 47 20 592 952 90 0 668 -146 435 62 -20 1007 1367 90 832 0 -147 387 488 20 837 1197 0 0 1010 -148 121 157 10 159 519 90 0 795 -149 182 463 30 226 586 90 0 739 -150 92 216 -20 626 986 90 902 0 -151 370 83 20 208 568 90 0 195 -152 444 242 10 291 651 90 0 29 -153 90 285 40 831 1191 0 0 1045 -154 446 64 10 452 812 90 0 370 -155 312 264 20 63 423 90 0 947 -156 208 11 -10 1132 1492 90 426 0 -157 442 247 10 476 836 90 0 330 -158 140 431 30 211 571 90 0 422 -159 118 153 -10 808 1168 90 291 0 -160 134 428 -20 783 1143 90 412 0 -161 91 235 10 984 1344 90 0 71 -162 406 257 10 436 796 90 0 583 -163 377 76 -20 489 849 90 353 0 -164 474 96 -20 271 631 90 449 0 -165 346 57 -10 783 1143 90 901 0 -166 393 301 30 333 693 90 0 617 -167 412 214 10 165 525 90 0 619 -168 210 398 -20 439 799 90 815 0 -169 346 150 -10 793 1153 90 756 0 -170 62 453 10 370 730 90 0 349 -171 437 61 -20 915 1275 90 718 0 -172 87 96 -20 597 957 90 708 0 -173 367 83 30 203 563 90 0 135 -174 91 268 -20 720 1080 90 723 0 -175 459 145 40 233 593 90 0 707 -176 63 444 -30 935 1295 90 237 0 -177 433 27 20 481 841 90 0 791 -178 60 454 -30 742 1102 90 219 0 -179 478 99 10 466 826 0 0 1029 -180 485 454 -10 686 1046 90 797 0 -181 6 292 -20 247 607 90 922 0 -182 398 20 20 273 633 90 0 203 -183 248 251 20 2 362 90 0 592 -184 433 15 -10 297 657 90 531 0 -185 64 426 -20 1012 1372 90 713 0 -186 154 207 20 854 1214 0 0 1043 -187 481 456 40 879 1239 90 0 19 -188 380 498 -30 372 732 90 775 0 -189 88 286 -10 647 1007 90 441 0 -190 111 23 -20 266 626 90 382 0 -191 199 187 -20 282 642 90 278 0 -192 269 48 -20 676 1036 90 63 0 -193 367 178 20 415 775 90 0 670 -194 452 163 30 219 579 90 0 84 -195 431 28 -20 573 933 90 151 0 -196 8 116 -20 745 1105 90 222 0 -197 233 47 20 206 566 90 0 767 -198 237 43 -10 487 847 90 949 0 -199 320 262 -10 440 800 90 87 0 -200 188 4 20 254 614 90 0 634 -201 180 6 -20 626 986 90 846 0 -202 328 466 -10 697 1057 90 980 0 -203 393 12 -20 464 824 90 182 0 -204 409 90 20 413 773 90 0 696 -205 406 87 -20 788 1148 90 37 0 -206 394 407 -10 581 941 90 443 0 -207 358 183 -20 789 1149 90 646 0 -208 186 461 20 220 580 90 0 303 -209 38 72 30 278 638 90 0 301 -210 323 471 -10 327 687 90 268 0 -211 224 192 10 65 425 90 0 898 -212 278 46 20 205 565 90 0 369 -213 272 403 -10 345 705 90 621 0 -214 232 42 10 392 752 90 0 64 -215 18 63 -20 574 934 90 271 0 -216 58 458 -30 558 918 90 492 0 -217 416 417 -30 898 1258 90 72 0 -218 205 230 30 53 413 90 0 473 -219 65 453 30 277 637 90 0 178 -220 421 294 -10 738 1098 90 239 0 -221 434 245 -20 1190 1550 90 860 0 -222 2 116 20 376 736 90 0 196 -223 411 421 -20 710 1070 90 783 0 -224 315 260 10 70 430 90 0 836 -225 136 288 -20 863 1223 90 905 0 -226 173 490 20 254 614 90 0 978 -227 90 232 -20 527 887 90 109 0 -228 402 265 20 156 516 90 0 598 -229 361 14 -20 532 892 90 631 0 -230 348 147 -20 700 1060 90 241 0 -231 385 295 20 142 502 90 0 307 -232 394 23 20 1106 1466 0 0 1011 -233 466 295 -10 873 1233 90 255 0 -234 71 103 -20 1143 1503 90 642 0 -235 125 29 -30 438 798 90 682 0 -236 25 65 10 851 1211 90 0 264 -237 58 449 30 838 1198 90 0 176 -238 246 398 40 148 508 90 0 772 -239 423 294 10 646 1006 90 0 220 -240 59 459 -10 466 826 90 364 0 -241 348 145 20 608 968 90 0 230 -242 477 97 10 278 638 90 0 58 -243 307 102 40 445 805 90 0 665 -244 169 31 -20 237 597 90 511 0 -245 381 495 20 557 917 90 0 747 -246 95 234 10 158 518 90 0 819 -247 22 33 10 589 949 90 0 448 -248 435 268 10 947 1307 90 0 826 -249 135 293 30 215 575 90 0 20 -250 439 266 10 189 549 90 0 829 -251 269 402 20 438 798 90 0 455 -252 267 400 10 627 987 90 0 86 -253 473 196 -10 423 783 90 952 0 -254 445 237 10 195 555 90 0 779 -255 461 284 10 213 573 90 0 233 -256 167 339 -30 499 859 90 39 0 -257 26 43 -30 305 665 90 564 0 -258 101 386 20 202 562 90 0 124 -259 342 54 20 405 765 90 0 319 -260 243 399 -10 630 990 90 626 0 -261 288 44 -20 494 854 90 38 0 -262 274 48 10 206 566 90 0 366 -263 360 184 -20 696 1056 90 660 0 -264 23 67 -10 944 1304 90 236 0 -265 6 296 -30 715 1075 90 126 0 -266 249 258 30 762 1122 0 0 1030 -267 421 415 30 237 597 90 0 45 -268 319 468 10 228 588 90 0 210 -269 50 438 20 572 932 90 0 579 -270 440 61 30 822 1182 0 0 1036 -271 17 65 20 482 842 90 0 215 -272 323 118 20 156 516 90 0 108 -273 402 281 -30 725 1085 90 776 0 -274 71 153 20 601 961 90 0 869 -275 52 432 -20 636 996 90 91 0 -276 378 199 -30 602 962 90 726 0 -277 238 204 20 420 780 90 0 286 -278 208 184 20 78 438 90 0 191 -279 376 195 -20 416 776 90 801 0 -280 473 475 10 972 1332 90 0 43 -281 215 395 -20 717 1077 90 761 0 -282 123 222 -20 223 583 90 40 0 -283 436 241 -10 1122 1482 90 757 0 -284 70 100 -20 975 1335 90 428 0 -285 73 328 20 193 553 90 0 946 -286 241 205 -20 513 873 90 277 0 -287 250 405 -30 157 517 90 597 0 -288 483 14 -20 518 878 90 727 0 -289 466 287 10 316 676 0 0 1027 -290 467 114 10 1011 1371 0 0 1008 -291 120 159 10 161 521 90 0 159 -292 408 84 -10 599 959 90 306 0 -293 413 217 20 166 526 90 0 446 -294 338 142 40 139 499 90 0 930 -295 483 457 20 593 953 0 0 1015 -296 479 169 -30 624 984 90 11 0 -297 95 224 -30 909 1269 90 778 0 -298 122 216 -10 319 679 90 968 0 -299 477 179 -10 237 597 90 890 0 -300 406 99 20 222 582 90 0 514 -301 44 47 -30 289 649 90 209 0 -302 487 450 -10 781 1141 90 575 0 -303 172 488 -20 250 610 90 208 0 -304 460 374 20 612 972 90 0 833 -305 279 138 40 121 481 90 0 589 -306 338 147 10 135 495 90 0 292 -307 395 295 -20 526 886 90 231 0 -308 195 185 20 187 547 90 0 979 -309 463 194 20 220 580 90 0 468 -310 30 72 -10 1092 1452 90 500 0 -311 244 254 -20 575 935 90 22 0 -312 317 261 20 256 616 90 0 566 -313 67 108 -10 231 591 90 616 0 -314 442 310 20 491 851 90 0 637 -315 63 336 -20 661 1021 90 967 0 -316 109 107 20 206 566 90 0 678 -317 100 387 10 294 654 90 0 385 -318 494 94 10 483 843 90 0 961 -319 343 49 -20 500 860 90 259 0 -320 40 52 40 388 748 90 0 360 -321 319 124 20 253 613 90 0 137 -322 94 97 20 218 578 90 0 876 -323 476 94 20 274 634 90 0 877 -324 283 47 -40 216 576 90 859 0 -325 398 325 -20 628 988 90 620 0 -326 460 13 -20 317 677 90 955 0 -327 305 107 20 540 900 90 0 1000 -328 188 12 30 245 605 90 0 624 -329 136 290 20 122 482 90 0 138 -330 439 268 -10 853 1213 90 157 0 -331 112 467 10 351 711 90 0 944 -332 181 469 20 322 682 0 0 1004 -333 358 18 10 346 706 90 0 659 -334 459 10 -40 410 770 90 139 0 -335 199 268 20 146 506 90 0 689 -336 436 237 20 186 546 0 0 1034 -337 318 280 20 172 532 90 0 439 -338 64 99 -20 698 1058 90 895 0 -339 394 333 20 349 709 90 0 56 -340 366 93 -20 782 1142 90 26 0 -341 95 391 -30 761 1121 90 4 0 -342 391 425 -10 696 1056 90 555 0 -343 344 146 -20 332 692 90 766 0 -344 198 12 10 427 787 90 0 594 -345 186 472 -20 418 778 90 106 0 -346 390 408 30 305 665 90 0 67 -347 19 43 20 1051 1411 90 0 750 -348 307 108 -20 632 992 90 774 0 -349 59 457 -10 649 1009 90 170 0 -350 49 451 20 284 644 90 0 729 -351 125 39 20 245 605 90 0 749 -352 61 147 40 218 578 90 0 465 -353 317 123 20 345 705 90 0 163 -354 392 426 -10 514 874 90 494 0 -355 237 213 -20 702 1062 90 5 0 -356 71 333 10 197 557 90 0 393 -357 304 97 20 257 617 90 0 25 -358 196 462 -20 799 1159 90 134 0 -359 224 191 -20 156 516 90 488 0 -360 37 51 -40 481 841 90 320 0 -361 491 25 -10 804 1164 90 432 0 -362 270 401 20 152 512 90 0 485 -363 474 461 30 307 667 90 0 68 -364 66 448 10 270 630 90 0 240 -365 337 241 20 188 548 90 0 996 -366 269 46 -10 584 944 90 262 0 -367 22 41 10 957 1317 90 0 83 -368 198 271 20 239 599 90 0 654 -369 287 43 -20 402 762 90 212 0 -370 446 63 -10 543 903 90 154 0 -371 200 229 30 148 508 90 0 424 -372 48 72 30 560 920 90 0 894 -373 465 142 -20 243 603 90 867 0 -374 123 155 -10 996 1356 90 593 0 -375 16 497 -10 901 1261 90 669 0 -376 220 319 -10 824 1184 90 13 0 -377 484 171 -10 528 888 90 546 0 -378 55 431 -30 543 903 90 9 0 -379 428 24 -10 942 1302 90 769 0 -380 80 342 10 193 553 90 0 431 -381 16 68 -10 389 749 90 834 0 -382 124 56 20 231 591 90 0 190 -383 95 218 -20 720 1080 90 742 0 -384 481 26 30 321 681 90 0 839 -385 145 434 -10 308 668 90 317 0 -386 335 57 30 210 570 90 0 792 -387 26 490 10 1046 1406 90 0 812 -388 324 127 30 143 503 90 0 504 -389 109 114 -30 670 1030 90 773 0 -390 72 148 20 205 565 90 0 870 -391 220 392 -10 813 1173 90 936 0 -392 442 243 -20 844 1204 90 651 0 -393 69 336 -10 293 653 90 356 0 -394 131 226 20 121 481 90 0 116 -395 150 204 20 487 847 90 0 519 -396 423 217 -30 637 997 90 997 0 -397 419 459 -10 631 991 90 440 0 -398 285 163 -30 567 927 90 477 0 -399 203 7 20 891 1251 90 0 82 -400 54 445 -20 383 743 90 571 0 -401 109 463 -20 809 1169 90 972 0 -402 355 180 30 132 492 90 0 456 -403 13 455 10 313 673 90 0 413 -404 165 337 -20 217 577 90 125 0 -405 314 124 20 626 986 90 0 548 -406 9 124 20 271 631 90 0 502 -407 3 292 20 251 611 90 0 2 -408 16 462 10 781 1141 90 0 614 -409 189 464 -20 701 1061 90 535 0 -410 288 154 -30 288 648 90 478 0 -411 90 296 20 166 526 90 0 865 -412 138 438 20 682 1042 90 0 160 -413 13 459 -10 502 862 90 403 0 -414 461 8 20 604 964 90 0 430 -415 96 97 20 217 577 90 0 569 -416 68 99 10 883 1243 90 0 878 -417 146 205 -10 210 570 90 745 0 -418 117 152 -20 717 1077 90 560 0 -419 481 96 20 372 732 90 0 450 -420 338 260 20 470 830 90 0 951 -421 285 44 10 310 670 90 0 838 -422 111 464 -30 626 986 90 158 0 -423 468 291 -10 593 953 90 950 0 -424 148 206 -30 302 662 90 371 0 -425 184 464 -30 223 583 90 81 0 -426 197 11 10 518 878 90 0 156 -427 396 410 -20 674 1034 90 451 0 -428 133 53 20 514 874 90 0 284 -429 132 30 20 721 1081 0 0 1025 -430 464 13 -20 700 1060 90 414 0 -431 100 394 -10 856 1216 90 380 0 -432 483 22 10 329 689 90 0 361 -433 93 235 -10 801 1161 90 912 0 -434 174 26 -10 891 1251 90 484 0 -435 436 264 20 186 546 90 0 629 -436 24 492 10 1043 1403 90 0 845 -437 406 94 10 223 583 90 0 825 -438 234 246 -10 380 740 90 988 0 -439 315 287 -20 543 903 90 337 0 -440 408 453 10 438 798 90 0 397 -441 128 225 10 124 484 90 0 189 -442 226 191 20 248 608 90 0 498 -443 391 407 10 397 757 90 0 206 -444 198 264 20 615 975 90 0 140 -445 179 7 20 717 1077 90 0 517 -446 425 215 -20 544 904 90 293 0 -447 483 27 -10 1052 1412 90 54 0 -448 22 40 -10 866 1226 90 247 0 -449 479 176 20 240 600 90 0 164 -450 476 102 -20 651 1011 90 419 0 -451 386 405 20 206 566 90 0 427 -452 22 38 -10 774 1134 90 113 0 -453 440 241 -10 936 1296 90 101 0 -454 182 14 -30 909 1269 90 92 0 -455 266 405 -20 532 892 90 251 0 -456 357 181 -30 224 584 90 402 0 -457 395 332 10 441 801 90 0 480 -458 423 290 10 179 539 90 0 611 -459 104 28 -10 552 912 90 50 0 -460 131 56 10 331 691 90 0 907 -461 111 110 -20 390 750 90 57 0 -462 97 93 20 315 675 90 0 698 -463 90 274 -20 254 614 90 813 0 -464 214 394 -40 626 986 90 656 0 -465 6 114 -40 652 1012 90 352 0 -466 375 191 30 322 682 90 0 41 -467 356 21 20 253 613 90 0 730 -468 466 165 -20 596 956 90 309 0 -469 415 223 -10 1100 1460 90 733 0 -470 397 20 20 275 635 90 0 93 -471 241 403 -30 535 895 90 506 0 -472 69 334 30 201 561 90 0 474 -473 152 210 -30 105 465 90 218 0 -474 67 335 -30 477 837 90 472 0 -475 126 30 -10 347 707 90 127 0 -476 390 423 10 222 582 90 0 558 -477 285 162 30 476 836 90 0 398 -478 285 158 30 193 553 90 0 410 -479 406 96 20 219 579 90 0 746 -480 459 374 -10 703 1063 90 457 0 -481 67 109 20 233 593 90 0 74 -482 468 475 -10 313 673 90 837 0 -483 438 31 10 288 648 90 0 700 -484 168 24 10 613 973 90 0 434 -485 267 394 -20 814 1174 90 362 0 -486 406 450 -20 254 614 90 962 0 -487 460 288 10 213 573 90 0 85 -488 224 203 20 53 413 90 0 359 -489 21 487 10 425 785 0 0 1001 -490 21 488 10 516 876 90 0 16 -491 87 217 -30 441 801 90 66 0 -492 67 452 30 272 632 90 0 216 -493 119 223 -20 699 1059 90 703 0 -494 398 428 10 417 777 90 0 354 -495 344 262 -20 373 733 90 702 0 -496 390 301 10 240 600 90 0 676 -497 167 27 30 331 691 90 0 975 -498 236 247 -20 287 647 90 442 0 -499 313 119 30 531 891 90 0 983 -500 13 51 10 1065 1425 90 0 310 -501 200 13 -10 245 605 90 879 0 -502 0 120 -20 282 642 90 406 0 -503 202 4 10 797 1157 90 0 98 -504 343 144 -30 146 506 90 388 0 -505 94 383 10 481 841 90 0 142 -506 250 411 30 343 703 90 0 471 -507 464 134 -10 897 1257 90 551 0 -508 443 237 20 193 553 90 0 847 -509 4 114 -10 560 920 90 927 0 -510 169 336 -10 685 1045 90 857 0 -511 200 178 20 89 449 90 0 244 -512 412 453 10 532 892 90 0 123 -513 121 151 -20 902 1262 90 953 0 -514 403 93 -20 976 1336 90 300 0 -515 399 301 -10 429 789 90 1 0 -516 97 387 -10 666 1026 90 44 0 -517 176 8 -20 811 1171 90 445 0 -518 62 326 -10 761 1121 90 688 0 -519 151 207 -20 580 940 90 395 0 -520 299 98 -10 162 522 90 32 0 -521 334 240 -20 374 734 90 120 0 -522 92 270 -20 812 1172 90 604 0 -523 444 269 20 389 749 0 0 1020 -524 132 223 -30 693 1053 90 23 0 -525 428 25 20 1033 1393 0 0 1046 -526 413 421 -20 618 978 90 104 0 -527 382 498 -30 464 824 90 973 0 -528 391 429 -10 320 680 90 849 0 -529 398 97 -20 212 572 90 780 0 -530 192 265 -20 519 879 90 52 0 -531 438 26 10 295 655 90 0 184 -532 44 79 10 267 627 0 0 1007 -533 137 290 -30 119 479 90 581 0 -534 446 319 30 210 570 90 0 960 -535 175 487 20 248 608 90 0 409 -536 26 45 30 303 663 90 0 635 -537 147 435 -30 400 760 90 652 0 -538 111 459 -20 994 1354 90 553 0 -539 472 132 -10 616 976 90 913 0 -540 349 158 -20 892 1252 90 917 0 -541 86 268 10 532 892 90 0 886 -542 415 216 10 171 531 90 0 721 -543 121 218 20 132 492 90 0 545 -544 210 185 20 76 436 0 0 1019 -545 98 215 -20 155 515 90 543 0 -546 484 174 10 340 700 90 0 377 -547 328 458 10 795 1155 0 0 1022 -548 313 126 -20 718 1078 90 405 0 -549 390 415 20 886 1246 90 0 685 -550 459 17 -20 886 1246 90 645 0 -551 481 124 10 358 718 90 0 507 -552 386 414 10 956 1316 0 0 1006 -553 116 466 20 254 614 90 0 538 -554 468 295 -10 781 1141 90 755 0 -555 391 426 10 605 965 90 0 342 -556 408 279 -20 535 895 90 69 0 -557 15 68 10 298 658 90 0 630 -558 392 424 -10 787 1147 90 476 0 -559 88 95 20 505 865 90 0 805 -560 116 151 20 625 985 90 0 418 -561 240 250 10 192 552 90 0 699 -562 123 159 20 156 516 90 0 627 -563 89 290 20 165 525 90 0 681 -564 39 50 30 296 656 90 0 257 -565 359 179 -20 317 677 90 3 0 -566 338 257 -20 563 923 90 312 0 -567 92 236 20 893 1253 0 0 1024 -568 413 417 -10 991 1351 90 24 0 -569 91 101 -20 693 1053 90 415 0 -570 55 449 20 278 638 90 0 79 -571 57 425 20 260 620 90 0 400 -572 465 287 -20 407 767 90 899 0 -573 320 280 10 80 440 90 0 785 -574 322 468 20 420 780 90 0 897 -575 483 458 10 502 862 90 0 302 -576 312 267 10 722 1082 0 0 1041 -577 139 291 10 118 478 0 0 1032 -578 388 408 10 213 573 0 0 1028 -579 110 459 -20 903 1263 90 269 0 -580 459 372 -10 519 879 90 810 0 -581 204 269 30 49 409 90 0 533 -582 407 98 10 218 578 90 0 719 -583 335 256 -10 746 1106 90 162 0 -584 471 484 10 415 775 90 0 60 -585 339 244 30 95 455 0 0 1035 -586 89 272 -20 347 707 90 999 0 -587 488 96 -20 761 1121 90 806 0 -588 316 286 30 452 812 90 0 751 -589 235 50 -40 675 1035 90 305 0 -590 316 258 20 163 523 90 0 21 -591 425 288 -20 456 816 90 798 0 -592 213 397 -20 532 892 90 183 0 -593 113 156 10 439 799 90 0 374 -594 199 9 -10 702 1062 90 344 0 -595 463 167 -20 503 863 90 908 0 -596 129 27 -40 533 893 90 784 0 -597 248 404 30 154 514 90 0 287 -598 405 276 -20 629 989 90 228 0 -599 400 288 30 154 514 90 0 141 -600 61 156 -30 317 677 90 77 0 -601 393 20 -10 1026 1386 90 693 0 -602 484 177 20 247 607 90 0 759 -603 108 116 -20 762 1122 90 705 0 -604 112 217 20 233 593 90 0 522 -605 389 404 10 207 567 90 0 7 -606 102 391 20 950 1310 0 0 1002 -607 434 26 10 389 749 90 0 724 -608 488 26 30 988 1348 90 0 994 -609 477 120 -20 817 1177 90 982 0 -610 126 220 -20 505 865 90 119 0 -611 439 310 -10 198 558 90 458 0 -612 212 319 -20 80 440 90 130 0 -613 320 283 -10 266 626 90 638 0 -614 17 459 -10 1057 1417 90 408 0 -615 236 213 20 39 399 90 0 808 -616 68 108 10 230 590 90 0 313 -617 390 294 -30 712 1072 90 166 0 -618 275 42 30 393 753 90 0 632 -619 423 214 -10 452 812 90 167 0 -620 460 367 20 241 601 90 0 325 -621 272 402 10 155 515 90 0 213 -622 478 102 10 559 919 90 0 753 -623 400 260 -20 150 510 90 796 0 -624 181 6 -30 535 895 90 328 0 -625 470 475 30 314 674 90 0 809 -626 245 408 10 439 799 90 0 260 -627 93 96 -20 220 580 90 562 0 -628 218 318 -10 732 1092 90 78 0 -629 441 265 -20 192 552 90 435 0 -630 21 64 -10 667 1027 90 557 0 -631 356 23 20 250 610 90 0 229 -632 267 44 -30 491 851 90 618 0 -633 277 50 10 201 561 90 0 929 -634 182 4 -20 443 803 90 200 0 -635 26 36 -30 494 854 90 536 0 -636 384 491 -10 743 1103 90 793 0 -637 418 290 -20 1017 1377 90 314 0 -638 321 277 10 75 435 90 0 613 -639 358 16 30 438 798 90 0 110 -640 389 334 20 164 524 90 0 748 -641 48 78 -20 836 1196 90 672 0 -642 24 68 20 1084 1444 90 0 234 -643 206 225 -10 245 605 90 663 0 -644 290 141 -30 497 857 90 686 0 -645 439 15 20 498 858 90 0 550 -646 359 182 20 604 964 90 0 207 -647 413 287 -10 1203 1563 90 117 0 -648 230 49 20 201 561 0 0 1033 -649 407 280 -20 444 804 90 734 0 -650 459 295 -30 1061 1421 90 881 0 -651 468 199 20 519 879 90 0 392 -652 101 384 30 200 560 90 0 537 -653 170 26 -20 706 1066 90 984 0 -654 197 270 -20 331 691 90 368 0 -655 415 289 -20 169 529 90 10 0 -656 203 390 40 154 514 90 0 464 -657 443 272 10 665 1025 90 0 863 -658 210 391 30 146 506 90 0 771 -659 363 22 -10 814 1174 90 333 0 -660 352 176 20 126 486 90 0 263 -661 212 223 -30 615 975 90 956 0 -662 8 120 -20 1020 1380 90 871 0 -663 244 250 10 7 367 90 0 643 -664 18 484 10 329 689 90 0 49 -665 379 82 -40 675 1035 90 243 0 -666 84 346 -10 946 1306 90 105 0 -667 233 207 10 46 406 90 0 926 -668 344 62 -20 1061 1421 90 145 0 -669 20 489 10 698 1058 90 0 375 -670 361 181 -20 512 872 90 193 0 -671 174 494 10 348 708 90 0 851 -672 49 76 20 744 1104 90 0 641 -673 390 325 30 726 1086 90 0 735 -674 7 118 -10 837 1197 90 114 0 -675 107 26 10 368 728 90 0 872 -676 312 270 -10 815 1175 90 496 0 -677 399 102 -20 502 862 90 965 0 -678 109 108 -20 297 657 90 316 0 -679 115 218 10 140 500 90 0 880 -680 88 287 -30 738 1098 90 27 0 -681 54 424 -20 262 622 90 563 0 -682 125 32 30 254 614 90 0 235 -683 199 12 -20 336 696 90 764 0 -684 457 374 10 795 1155 0 0 1021 -685 391 413 -20 861 1221 90 549 0 -686 304 102 30 352 712 90 0 644 -687 391 293 -10 621 981 90 70 0 -688 66 336 10 568 928 90 0 518 -689 132 291 -20 587 947 90 335 0 -690 18 462 -20 873 1233 90 970 0 -691 347 62 10 968 1328 90 0 874 -692 466 142 10 334 694 90 0 133 -693 389 17 10 841 1201 90 0 601 -694 342 254 10 93 453 90 0 112 -695 92 223 10 815 1175 0 0 1037 -696 404 83 -20 693 1053 90 204 0 -697 290 46 20 684 1044 90 0 814 -698 95 92 -20 408 768 90 462 0 -699 200 265 -10 707 1067 90 561 0 -700 435 16 -10 682 1042 90 483 0 -701 25 499 -40 1000 1360 90 731 0 -702 319 260 20 348 708 90 0 495 -703 116 225 20 606 966 90 0 493 -704 402 284 30 160 520 90 0 768 -705 108 105 20 202 562 90 0 603 -706 386 13 10 652 1012 90 0 762 -707 472 129 -40 252 612 90 175 0 -708 132 57 20 239 599 90 0 172 -709 43 71 -20 373 733 90 991 0 -710 493 91 30 390 750 90 0 831 -711 12 451 20 311 671 0 0 1014 -712 201 188 10 374 734 90 0 732 -713 60 428 20 918 1278 90 0 185 -714 243 248 -10 99 459 90 36 0 -715 230 197 -10 437 797 90 964 0 -716 389 11 20 558 918 90 0 875 -717 401 281 -20 816 1176 90 107 0 -718 459 14 20 315 675 90 0 171 -719 411 95 -10 318 678 90 582 0 -720 0 297 10 528 888 90 0 62 -721 476 196 -10 330 690 90 542 0 -722 458 16 20 313 673 90 0 853 -723 92 230 20 344 704 90 0 174 -724 432 24 -10 848 1208 90 607 0 -725 215 317 10 75 435 90 0 971 -726 371 192 30 134 494 90 0 276 -727 481 20 20 422 782 90 0 288 -728 152 207 -10 671 1031 90 90 0 -729 14 459 -20 411 771 90 350 0 -730 361 17 -20 625 985 90 467 0 -731 8 497 40 803 1163 90 0 701 -732 206 186 -10 743 1103 90 712 0 -733 421 218 10 729 1089 90 0 469 -734 402 264 20 152 512 90 0 649 -735 388 325 -30 818 1178 90 673 0 -736 35 304 30 221 581 90 0 911 -737 321 263 20 532 892 90 0 873 -738 444 313 -20 307 667 90 976 0 -739 188 462 -30 609 969 90 149 0 -740 400 103 10 411 771 0 0 1017 -741 418 221 -20 1006 1366 90 15 0 -742 112 219 20 325 685 90 0 383 -743 408 452 10 347 707 90 0 939 -744 30 301 -20 513 873 90 986 0 -745 205 228 10 50 410 90 0 417 -746 407 88 -20 879 1239 90 479 0 -747 380 489 -20 934 1294 90 245 0 -748 395 331 -20 532 892 90 640 0 -749 133 26 -20 627 987 90 351 0 -750 21 68 -20 1036 1396 90 347 0 -751 313 282 -30 638 998 90 588 0 -752 53 440 10 478 838 90 0 882 -753 458 130 -10 995 1355 90 622 0 -754 437 15 -20 590 950 90 14 0 -755 400 286 10 154 514 90 0 554 -756 346 144 10 515 875 90 0 169 -757 440 244 10 661 1021 90 0 283 -758 280 162 30 92 452 90 0 824 -759 488 173 -20 434 794 90 602 0 -760 326 118 10 152 512 90 0 921 -761 207 400 20 346 706 90 0 281 -762 391 18 -10 933 1293 90 706 0 -763 37 55 -20 575 935 90 777 0 -764 204 15 20 239 599 90 0 683 -765 173 28 -20 983 1343 90 48 0 -766 343 148 20 240 600 90 0 343 -767 231 43 -20 300 660 90 197 0 -768 445 273 -30 573 933 90 704 0 -769 432 27 10 664 1024 90 0 379 -770 439 305 30 587 947 90 0 848 -771 208 396 -30 251 611 90 658 0 -772 249 407 -40 249 609 90 238 0 -773 107 112 30 577 937 90 0 389 -774 279 159 20 97 457 90 0 348 -775 376 494 30 274 634 90 0 188 -776 403 262 30 340 700 90 0 273 -777 41 47 20 291 651 90 0 763 -778 96 213 30 160 520 90 0 297 -779 461 167 -10 321 681 90 254 0 -780 391 99 20 206 566 90 0 529 -781 116 221 -20 419 779 90 143 0 -782 165 343 -10 405 765 90 933 0 -783 388 334 20 161 521 90 0 223 -784 130 57 40 227 587 90 0 596 -785 422 409 -10 234 594 90 573 0 -786 66 156 10 505 865 90 0 65 -787 485 86 -10 286 646 90 957 0 -788 389 428 20 228 588 90 0 115 -789 117 467 10 254 614 0 0 1044 -790 475 477 -30 880 1240 90 993 0 -791 429 27 -20 1089 1449 90 177 0 -792 339 60 -30 209 569 90 386 0 -793 381 494 10 648 1008 90 0 636 -794 218 321 20 548 908 90 0 817 -795 64 101 -10 515 875 90 148 0 -796 343 254 20 184 544 90 0 623 -797 478 464 10 312 672 90 0 180 -798 423 286 20 273 633 90 0 591 -799 198 9 -10 611 971 90 800 0 -800 225 196 10 59 419 90 0 799 -801 374 190 20 138 498 90 0 279 -802 462 14 -20 792 1152 90 100 0 -803 347 54 10 690 1050 90 0 128 -804 231 195 20 344 704 90 0 893 -805 72 96 -20 1069 1429 90 559 0 -806 489 87 20 295 655 90 0 587 -807 443 313 -30 398 758 90 940 0 -808 233 204 -20 49 409 90 615 0 -809 477 483 -30 601 961 90 625 0 -810 459 368 10 240 600 90 0 580 -811 95 277 -30 909 1269 90 920 0 -812 16 460 -10 966 1326 90 387 0 -813 100 266 20 150 510 90 0 463 -814 288 53 -20 781 1141 90 697 0 -815 211 386 20 141 501 90 0 168 -816 144 439 -20 586 946 90 823 0 -817 224 314 -20 920 1280 90 794 0 -818 79 291 -20 364 724 90 840 0 -819 95 235 -10 155 515 90 246 0 -820 7 123 30 274 634 0 0 1009 -821 91 217 -10 535 895 90 8 0 -822 105 27 -30 460 820 90 842 0 -823 101 385 20 201 561 90 0 816 -824 238 210 -30 609 969 90 758 0 -825 439 67 -10 263 623 90 437 0 -826 435 267 -10 1038 1398 90 248 0 -827 443 64 -20 637 997 90 868 0 -828 92 234 -30 710 1070 90 129 0 -829 450 265 -10 291 651 90 250 0 -830 102 27 20 644 1004 90 0 903 -831 492 94 -30 575 935 90 710 0 -832 440 63 20 730 1090 90 0 146 -833 453 367 -20 893 1253 90 304 0 -834 15 69 10 296 656 90 0 381 -835 489 17 10 615 975 90 0 858 -836 335 255 -10 85 445 90 224 0 -837 419 418 10 244 604 90 0 482 -838 292 41 -10 589 949 90 421 0 -839 489 27 -30 896 1256 90 384 0 -840 96 270 20 157 517 90 0 818 -841 461 369 -20 426 786 90 959 0 -842 105 22 30 270 630 90 0 822 -843 479 121 -30 543 903 90 94 0 -844 207 223 10 430 790 0 0 1026 -845 17 458 -10 1062 1422 90 436 0 -846 186 7 20 348 708 90 0 201 -847 465 168 -20 689 1049 90 508 0 -848 416 288 -30 1110 1470 90 770 0 -849 388 418 10 217 577 90 0 528 -850 92 233 -10 619 979 90 943 0 -851 179 492 -10 535 895 90 671 0 -852 132 55 -20 422 782 90 122 0 -853 485 24 -20 326 686 90 722 0 -854 388 331 20 160 520 90 0 861 -855 217 323 -10 268 628 90 904 0 -856 281 164 20 91 451 90 0 900 -857 169 340 10 591 951 90 0 510 -858 491 20 -10 709 1069 90 835 0 -859 279 42 40 210 570 90 0 324 -860 439 243 20 1029 1389 90 0 221 -861 391 334 -20 256 616 90 854 0 -862 96 244 -20 1176 1536 90 34 0 -863 441 273 -10 757 1117 90 657 0 -864 477 478 -20 787 1147 90 990 0 -865 56 434 -20 730 1090 90 411 0 -866 12 463 20 596 956 90 0 887 -867 458 164 20 226 586 90 0 373 -868 446 65 20 361 721 90 0 827 -869 71 156 -20 694 1054 90 274 0 -870 65 153 -20 412 772 90 390 0 -871 8 118 20 928 1288 90 0 662 -872 102 29 -10 736 1096 90 675 0 -873 315 265 -20 628 988 90 737 0 -874 343 62 -10 1152 1512 90 691 0 -875 384 16 -20 746 1106 90 716 0 -876 67 105 -20 420 780 90 322 0 -877 478 118 -20 909 1269 90 323 0 -878 73 101 -10 1143 1503 90 416 0 -879 200 14 10 241 601 90 0 501 -880 114 225 -10 514 874 90 679 0 -881 460 293 30 969 1329 90 0 650 -882 51 447 -10 289 649 90 752 0 -883 418 295 -20 922 1282 90 55 0 -884 282 139 20 115 475 0 0 1031 -885 477 122 -40 725 1085 90 942 0 -886 91 266 -10 628 988 90 541 0 -887 16 463 -20 690 1050 90 866 0 -888 228 199 10 529 889 90 0 923 -889 435 20 20 776 1136 0 0 1038 -890 467 195 10 223 583 90 0 299 -891 469 132 10 709 1069 90 0 892 -892 465 136 -10 805 1165 90 891 0 -893 246 255 -20 668 1028 90 804 0 -894 49 75 -30 653 1013 90 372 0 -895 66 98 20 790 1150 90 0 338 -896 166 32 10 233 593 90 0 935 -897 326 466 -20 605 965 90 574 0 -898 202 186 -10 466 826 90 211 0 -899 467 285 20 224 584 90 0 572 -900 290 136 -20 402 762 90 856 0 -901 341 58 10 219 579 90 0 165 -902 121 219 20 132 492 90 0 150 -903 107 35 -20 834 1194 90 830 0 -904 216 319 10 174 534 90 0 855 -905 134 288 20 771 1131 90 0 225 -906 89 270 10 439 799 90 0 910 -907 136 52 -10 608 968 90 460 0 -908 462 167 20 412 772 90 0 595 -909 340 54 -10 313 673 90 941 0 -910 80 286 -10 459 819 90 906 0 -911 38 301 -30 611 971 90 736 0 -912 25 307 10 324 684 90 0 433 -913 470 139 10 519 879 90 0 539 -914 270 400 10 151 511 0 0 1040 -915 204 187 30 650 1010 0 0 1016 -916 460 171 -30 785 1145 90 995 0 -917 399 106 20 777 1137 90 0 540 -918 197 267 10 424 784 90 0 59 -919 77 350 -10 848 1208 90 97 0 -920 91 231 30 435 795 90 0 811 -921 398 103 -10 593 953 90 760 0 -922 35 303 20 221 581 90 0 181 -923 231 204 -10 625 985 90 888 0 -924 311 266 10 63 423 0 0 1039 -925 416 420 -20 525 885 90 132 0 -926 231 203 -10 142 502 90 667 0 -927 4 116 10 468 828 90 0 509 -928 417 217 30 264 624 90 0 992 -929 268 52 -10 861 1221 90 633 0 -930 345 144 -40 424 784 90 294 0 -931 368 85 30 202 562 90 0 989 -932 441 65 -10 266 626 90 35 0 -933 201 270 10 52 412 90 0 782 -934 0 293 -10 434 794 90 102 0 -935 167 24 -10 522 882 90 896 0 -936 186 464 10 516 876 90 0 391 -937 7 292 10 246 606 90 0 53 -938 80 290 10 272 632 90 0 61 -939 405 455 -10 736 1096 90 743 0 -940 439 312 30 198 558 90 0 807 -941 300 108 10 150 510 90 0 909 -942 478 121 40 634 994 90 0 885 -943 92 232 10 252 612 90 0 850 -944 111 463 -10 717 1077 90 331 0 -945 132 294 20 308 668 90 0 46 -946 134 285 -20 956 1316 90 285 0 -947 316 284 -20 360 720 90 155 0 -948 56 428 20 268 628 90 0 96 -949 232 47 10 203 563 90 0 198 -950 466 291 10 501 861 90 0 423 -951 341 257 -20 277 637 90 420 0 -952 420 213 10 359 719 90 0 253 -953 116 152 20 534 894 90 0 513 -954 163 337 -40 125 485 90 981 0 -955 440 7 20 309 669 90 0 326 -956 208 222 30 521 881 90 0 661 -957 485 95 10 281 641 90 0 787 -958 97 385 -20 387 747 90 17 0 -959 462 367 20 333 693 90 0 841 -960 455 365 -30 235 595 90 534 0 -961 492 95 -10 666 1026 90 318 0 -962 405 450 20 253 613 90 0 486 -963 371 193 20 133 493 0 0 1018 -964 234 202 10 235 595 90 0 715 -965 404 103 20 317 677 90 0 677 -966 24 41 -20 399 759 90 121 0 -967 67 334 20 386 746 90 0 315 -968 207 227 10 48 408 90 0 298 -969 277 403 10 250 610 90 0 118 -970 15 457 20 318 678 90 0 690 -971 217 319 -10 640 1000 90 725 0 -972 111 467 20 442 802 90 0 401 -973 378 493 30 277 637 90 0 527 -974 112 465 -10 534 894 90 103 0 -975 173 25 -30 799 1159 90 497 0 -976 421 292 20 176 536 90 0 738 -977 74 146 30 204 564 0 0 1012 -978 178 491 -20 443 803 90 226 0 -979 204 185 -20 558 918 90 308 0 -980 319 470 10 233 593 90 0 202 -981 163 331 40 118 478 90 0 954 -982 470 125 20 253 613 90 0 609 -983 315 121 -30 438 798 90 499 0 -984 166 34 20 231 591 90 0 653 -985 284 140 40 115 475 90 0 136 -986 85 288 20 177 537 90 0 744 -987 376 190 30 230 590 90 0 31 -988 238 203 10 329 689 90 0 438 -989 399 104 -30 685 1045 90 931 0 -990 472 481 20 322 682 90 0 864 -991 46 74 20 467 827 90 0 709 -992 401 255 -30 531 891 90 928 0 -993 475 480 30 694 1054 90 0 790 -994 485 27 -30 1051 1411 90 608 0 -995 476 174 30 719 1079 90 0 916 -996 330 242 -20 469 829 90 365 0 -997 332 249 30 82 442 90 0 396 -998 375 80 10 394 754 0 0 1042 -999 94 235 20 156 516 90 0 586 -1000 287 144 -20 681 1041 90 327 0 -1001 21 487 -10 425 785 90 489 0 -1002 102 391 -20 950 1310 90 606 0 -1003 357 26 -20 1002 1362 90 42 0 -1004 181 469 -20 322 682 90 332 0 -1005 24 65 -10 760 1120 90 80 0 -1006 386 414 -10 956 1316 90 552 0 -1007 44 79 -10 267 627 90 532 0 -1008 467 114 -10 1011 1371 90 290 0 -1009 7 123 -30 274 634 90 820 0 -1010 387 488 -20 837 1197 90 147 0 -1011 394 23 -20 1106 1466 90 232 0 -1012 74 146 -30 204 564 90 977 0 -1013 57 432 -10 823 1183 90 75 0 -1014 12 451 -20 311 671 90 711 0 -1015 483 457 -20 593 953 90 295 0 -1016 204 187 -30 650 1010 90 915 0 -1017 400 103 -10 411 771 90 740 0 -1018 371 193 -20 133 493 90 963 0 -1019 210 185 -20 76 436 90 544 0 -1020 444 269 -20 389 749 90 523 0 -1021 457 374 -10 795 1155 90 684 0 -1022 328 458 -10 795 1155 90 547 0 -1023 417 218 -10 913 1273 90 73 0 -1024 92 236 -20 893 1253 90 567 0 -1025 132 30 -20 721 1081 90 429 0 -1026 207 223 -10 430 790 90 844 0 -1027 466 287 -10 316 676 90 289 0 -1028 388 408 -10 213 573 90 578 0 -1029 478 99 -10 466 826 90 179 0 -1030 249 258 -30 762 1122 90 266 0 -1031 282 139 -20 115 475 90 884 0 -1032 139 291 -10 118 478 90 577 0 -1033 230 49 -20 201 561 90 648 0 -1034 436 237 -20 186 546 90 336 0 -1035 339 244 -30 95 455 90 585 0 -1036 440 61 -30 822 1182 90 270 0 -1037 92 223 -10 815 1175 90 695 0 -1038 435 20 -20 776 1136 90 889 0 -1039 311 266 -10 63 423 90 924 0 -1040 270 400 -10 151 511 90 914 0 -1041 312 267 -10 722 1082 90 576 0 -1042 375 80 -10 394 754 90 998 0 -1043 154 207 -20 854 1214 90 186 0 -1044 117 467 -10 254 614 90 789 0 -1045 90 285 -40 831 1191 90 153 0 -1046 428 25 -20 1033 1393 90 525 0 diff --git a/jsprit-instances/instances/lilim/1000/LC2101.txt b/jsprit-instances/instances/lilim/1000/LC2101.txt deleted file mode 100644 index f2b840f95..000000000 --- a/jsprit-instances/instances/lilim/1000/LC2101.txt +++ /dev/null @@ -1,1016 +0,0 @@ -250 700 1 -0 250 250 0 0 3914 0 0 0 -1 212 101 -10 2662 2822 90 247 0 -2 266 231 -10 1936 2096 90 921 0 -3 89 284 -20 1436 1596 90 961 0 -4 430 298 -10 1562 1722 90 375 0 -5 435 77 20 1002 1162 0 0 1012 -6 25 293 -30 2964 3124 90 7 0 -7 43 269 30 687 847 90 0 6 -8 216 117 10 429 589 90 0 917 -9 294 437 30 661 821 90 0 810 -10 79 479 30 998 1158 90 0 125 -11 365 18 20 2213 2373 90 0 381 -12 225 125 20 127 287 90 0 274 -13 448 103 -10 3343 3503 90 757 0 -14 143 266 10 402 562 90 0 101 -15 252 347 -20 2911 3071 90 764 0 -16 403 390 -30 2560 2720 90 132 0 -17 67 153 20 912 1072 90 0 480 -18 90 168 -10 3080 3240 90 677 0 -19 302 235 -10 1043 1203 90 98 0 -20 259 355 -10 1917 2077 90 352 0 -21 149 183 20 3108 3268 0 0 1009 -22 19 297 20 2282 2442 90 0 154 -23 209 358 -20 1477 1637 90 665 0 -24 56 388 -10 1791 1951 90 234 0 -25 115 269 -10 2956 3116 90 285 0 -26 377 356 10 1846 2006 90 0 702 -27 113 229 30 1123 1283 90 0 612 -28 205 343 20 902 1062 90 0 751 -29 48 137 -10 1797 1957 90 422 0 -30 467 157 20 2307 2467 90 0 954 -31 220 394 -30 2783 2943 90 878 0 -32 436 54 -10 1991 2151 90 988 0 -33 54 357 -20 1696 1856 90 786 0 -34 456 154 10 238 398 90 0 468 -35 216 307 -40 2516 2676 90 973 0 -36 280 224 -10 2226 2386 90 633 0 -37 90 270 -10 565 725 90 50 0 -38 166 452 20 599 759 90 0 209 -39 17 283 20 2584 2744 90 0 522 -40 196 192 -20 2090 2250 90 610 0 -41 94 275 10 469 629 90 0 860 -42 292 445 -10 1716 1876 90 625 0 -43 329 471 30 2783 2943 90 0 208 -44 326 57 20 1364 1524 90 0 617 -45 95 466 -20 3024 3184 90 160 0 -46 429 282 -20 3018 3178 90 624 0 -47 229 364 10 2512 2672 90 0 149 -48 457 160 -20 2991 3151 90 410 0 -49 452 154 30 332 492 90 0 65 -50 113 289 10 162 322 90 0 37 -51 67 387 -20 2376 2536 90 198 0 -52 368 17 -10 2021 2181 90 650 0 -53 341 367 -30 2530 2690 90 589 0 -54 410 364 30 1842 2002 90 0 523 -55 80 281 10 1717 1877 90 0 470 -56 321 224 30 2106 2266 0 0 1001 -57 73 395 20 1223 1383 90 0 412 -58 259 76 10 928 1088 90 0 920 -59 121 203 -10 1792 1952 90 393 0 -60 118 256 -10 2519 2679 90 289 0 -61 236 361 30 1713 1873 90 0 335 -62 78 371 20 220 380 90 0 229 -63 301 53 20 969 1129 90 0 435 -64 382 197 -10 640 800 90 213 0 -65 491 160 -30 1989 2149 90 49 0 -66 453 164 -10 3086 3246 90 179 0 -67 277 371 30 595 755 90 0 907 -68 272 212 -10 2330 2490 90 153 0 -69 386 218 20 1901 2061 90 0 75 -70 353 32 10 905 1065 90 0 678 -71 59 389 -30 1698 1858 90 398 0 -72 414 62 -20 1686 1846 90 957 0 -73 278 357 10 212 372 90 0 184 -74 101 179 20 2412 2572 90 0 231 -75 396 234 -20 2390 2550 90 69 0 -76 74 390 -10 797 957 90 257 0 -77 332 55 30 211 371 90 0 164 -78 272 365 30 693 853 90 0 187 -79 418 355 -10 2037 2197 90 501 0 -80 216 380 -30 2300 2460 90 292 0 -81 440 173 10 3282 3442 90 0 139 -82 89 358 -10 3471 3631 90 358 0 -83 66 491 -20 2070 2230 90 232 0 -84 317 234 10 2479 2639 90 0 529 -85 439 297 -10 2043 2203 90 569 0 -86 394 367 30 380 540 90 0 697 -87 58 364 10 2262 2422 90 0 418 -88 290 75 20 191 351 90 0 922 -89 346 344 -30 3212 3372 90 854 0 -90 131 269 -10 2388 2548 90 548 0 -91 236 96 20 1604 1764 90 0 283 -92 29 282 -20 1410 1570 90 212 0 -93 418 385 -20 2757 2917 90 262 0 -94 148 225 40 613 773 90 0 166 -95 166 464 10 794 954 90 0 222 -96 266 373 10 793 953 90 0 245 -97 201 273 30 54 214 90 0 755 -98 255 245 10 7 167 90 0 19 -99 220 379 10 2394 2554 90 0 118 -100 85 317 -10 2607 2767 90 595 0 -101 125 264 -10 2855 3015 90 14 0 -102 131 253 -10 2809 2969 90 627 0 -103 184 188 10 1260 1420 90 0 886 -104 128 209 -20 1093 1253 90 983 0 -105 373 364 -30 3170 3330 90 512 0 -106 389 342 10 1145 1305 90 0 385 -107 420 20 30 575 735 90 0 496 -108 132 218 10 136 296 90 0 563 -109 32 256 10 901 1061 90 0 193 -110 406 339 20 295 455 90 0 492 -111 191 397 20 263 423 90 0 312 -112 72 341 10 2866 3026 90 0 508 -113 35 308 -20 3072 3232 90 186 0 -114 169 360 -30 2172 2332 90 314 0 -115 222 381 -30 2589 2749 90 236 0 -116 96 292 10 862 1022 90 0 828 -117 311 496 -20 728 888 90 730 0 -118 220 384 -10 2683 2843 90 99 0 -119 259 243 20 22 182 90 0 336 -120 349 476 10 2483 2643 90 0 366 -121 63 159 -30 1009 1169 90 963 0 -122 112 243 -30 2321 2481 90 777 0 -123 448 302 -30 2327 2487 90 320 0 -124 343 27 20 1196 1356 90 0 404 -125 67 485 -30 2166 2326 90 10 0 -126 220 359 30 1424 1584 90 0 731 -127 147 435 10 2111 2271 90 0 574 -128 317 235 -20 2570 2730 90 778 0 -129 43 355 -20 1595 1755 90 199 0 -130 368 340 10 461 621 90 0 580 -131 450 72 -30 2561 2721 90 345 0 -132 400 364 30 570 730 90 0 16 -133 355 480 -10 1616 1776 90 178 0 -134 450 153 20 533 693 90 0 439 -135 126 188 -20 2098 2258 90 597 0 -136 380 223 -10 1614 1774 90 570 0 -137 71 453 20 685 845 90 0 892 -138 54 287 20 209 369 90 0 606 -139 420 168 -10 3393 3553 90 81 0 -140 219 89 -30 2692 2852 90 204 0 -141 189 327 -20 420 580 90 713 0 -142 191 309 10 1430 1590 90 0 671 -143 301 67 40 480 640 90 0 861 -144 484 161 10 1696 1856 90 0 192 -145 77 483 -20 2539 2699 90 226 0 -146 241 375 -20 1998 2158 90 513 0 -147 428 64 20 1201 1361 90 0 699 -148 403 361 -20 1452 1612 90 475 0 -149 257 336 -10 3106 3266 90 47 0 -150 131 241 -10 3378 3538 90 740 0 -151 63 166 -20 2502 2662 90 768 0 -152 71 368 -40 3257 3417 90 317 0 -153 272 228 10 2033 2193 90 0 68 -154 25 290 -20 2871 3031 90 22 0 -155 441 157 10 433 593 90 0 772 -156 13 266 20 1204 1364 90 0 737 -157 251 376 -10 3186 3346 90 577 0 -158 61 170 -30 2408 2568 90 493 0 -159 386 357 20 1433 1593 90 0 195 -160 95 475 20 2925 3085 90 0 45 -161 90 298 -30 2104 2264 90 346 0 -162 71 388 20 1505 1665 90 0 947 -163 383 246 -20 2868 3028 90 646 0 -164 352 38 -30 626 786 90 77 0 -165 395 1 30 887 1047 90 0 607 -166 120 210 -40 1282 1442 90 94 0 -167 46 383 30 1288 1448 90 0 747 -168 202 198 30 2278 2438 90 0 452 -169 358 365 30 2326 2486 0 0 1010 -170 191 352 20 117 277 90 0 890 -171 470 152 30 1226 1386 90 0 766 -172 228 124 20 141 301 90 0 720 -173 402 230 -10 2202 2362 90 423 0 -174 323 229 10 1718 1878 90 0 368 -175 331 486 -10 2003 2163 90 549 0 -176 112 208 -30 1601 1761 90 554 0 -177 172 435 -20 3061 3221 90 780 0 -178 326 498 10 1021 1181 90 0 133 -179 460 183 10 2787 2947 90 0 66 -180 95 279 20 375 535 90 0 716 -181 76 456 30 780 940 90 0 235 -182 242 350 -10 2811 2971 90 403 0 -183 152 196 -20 212 372 90 383 0 -184 268 351 -10 1450 1610 90 73 0 -185 360 356 -10 2733 2893 90 359 0 -186 39 296 20 1983 2143 90 0 113 -187 262 368 -30 1162 1322 90 78 0 -188 204 90 -20 1094 1254 90 712 0 -189 149 273 20 212 372 90 0 862 -190 446 86 10 3056 3216 90 0 871 -191 139 269 20 1728 1888 90 0 795 -192 483 170 -10 2197 2357 90 144 0 -193 39 278 -10 1601 1761 90 109 0 -194 201 307 10 1713 1873 90 0 959 -195 395 378 -20 1636 1796 90 159 0 -196 139 262 30 1450 1610 90 0 923 -197 176 447 20 311 471 90 0 572 -198 67 380 20 2279 2439 90 0 51 -199 35 358 20 1497 1657 90 0 129 -200 294 455 -20 2426 2586 90 653 0 -201 351 33 -20 721 881 90 749 0 -202 216 316 -30 2319 2479 90 872 0 -203 261 96 40 447 607 90 0 380 -204 238 57 30 1336 1496 90 0 140 -205 383 18 -30 1643 1803 90 863 0 -206 152 460 10 1310 1470 90 0 444 -207 94 479 -10 2830 2990 90 288 0 -208 337 453 -30 2985 3145 90 43 0 -209 135 460 -20 1785 1945 90 38 0 -210 260 104 20 157 317 90 0 771 -211 337 63 -30 2045 2205 90 546 0 -212 32 247 20 802 962 90 0 92 -213 394 205 10 445 605 90 0 64 -214 95 294 10 770 930 90 0 705 -215 253 241 -10 2835 2995 90 560 0 -216 223 90 30 2787 2947 90 0 327 -217 64 473 10 1284 1444 90 0 263 -218 275 431 10 1242 1402 90 0 227 -219 261 84 -10 734 894 90 406 0 -220 176 296 20 1230 1390 90 0 865 -221 361 349 -10 3016 3176 90 916 0 -222 168 433 -10 3156 3316 90 95 0 -223 394 10 -40 1169 1329 90 457 0 -224 308 60 20 776 936 90 0 846 -225 94 456 -40 3124 3284 90 608 0 -226 73 484 20 2445 2605 90 0 145 -227 277 434 -10 1427 1587 90 218 0 -228 119 232 -30 1939 2099 90 551 0 -229 78 375 -20 314 474 90 62 0 -230 366 346 20 648 808 90 0 303 -231 125 181 -20 2718 2878 90 74 0 -232 69 493 20 1977 2137 90 0 83 -233 432 80 40 908 1068 90 0 885 -234 72 391 10 1412 1572 90 0 24 -235 85 486 -30 2638 2798 90 181 0 -236 204 371 30 749 909 90 0 115 -237 173 328 10 2481 2641 90 0 261 -238 280 423 -30 951 1111 90 929 0 -239 200 327 -10 3150 3310 90 585 0 -240 241 98 -30 2987 3147 90 268 0 -241 96 356 10 186 346 90 0 647 -242 332 491 30 1211 1371 90 0 264 -243 81 283 -30 1624 1784 90 552 0 -244 373 22 10 2312 2472 90 0 259 -245 255 371 -10 2209 2369 90 96 0 -246 358 359 -30 2639 2799 90 347 0 -247 216 93 10 2473 2633 90 0 1 -248 73 360 -20 2947 3107 90 517 0 -249 305 212 -20 1156 1316 90 387 0 -250 151 462 10 1402 1562 90 0 857 -251 47 389 30 1102 1262 90 0 502 -252 155 198 30 118 278 90 0 405 -253 152 457 10 1217 1377 90 0 765 -254 329 48 -20 1555 1715 90 427 0 -255 88 394 10 727 887 90 0 758 -256 153 295 -30 3382 3542 90 367 0 -257 81 373 10 590 750 90 0 76 -258 163 453 -20 693 853 90 673 0 -259 378 25 -10 2408 2568 90 244 0 -260 401 385 -20 2864 3024 90 669 0 -261 184 340 -10 2768 2928 90 237 0 -262 402 362 20 1361 1521 90 0 93 -263 70 482 -10 2351 2511 90 217 0 -264 357 445 -30 3187 3347 90 242 0 -265 212 71 20 1204 1364 90 0 869 -266 231 81 -20 2403 2563 90 837 0 -267 379 208 -40 835 995 90 654 0 -268 236 95 30 2117 2277 90 0 240 -269 386 344 20 1239 1399 90 0 536 -270 189 200 -20 1989 2149 90 635 0 -271 296 253 -20 834 994 90 602 0 -272 73 303 10 2397 2557 90 0 906 -273 30 162 10 2102 2262 90 0 407 -274 230 95 -20 1899 2059 90 12 0 -275 57 131 10 1403 1563 90 0 553 -276 379 245 -30 2773 2933 90 756 0 -277 107 221 40 534 694 90 0 424 -278 154 458 -30 1125 1285 90 640 0 -279 290 417 10 182 342 90 0 845 -280 272 243 30 125 285 90 0 674 -281 94 130 10 601 761 90 0 914 -282 222 356 -20 1608 1768 90 590 0 -283 243 108 -20 3061 3221 90 91 0 -284 224 93 20 2191 2351 90 0 287 -285 155 242 10 886 1046 90 0 25 -286 440 302 20 1279 1439 90 0 870 -287 221 102 -20 2858 3018 90 284 0 -288 52 484 10 1681 1841 90 0 207 -289 111 244 10 2229 2389 90 0 60 -290 132 273 -30 2203 2363 90 587 0 -291 228 186 20 269 429 90 0 684 -292 221 374 30 1130 1290 90 0 80 -293 406 286 -30 3314 3474 90 931 0 -294 390 9 30 1263 1423 90 0 655 -295 335 52 -10 1761 1921 90 932 0 -296 189 368 20 144 304 90 0 867 -297 397 40 -20 2491 2651 90 598 0 -298 408 305 -30 419 579 90 993 0 -299 156 434 10 2865 3025 90 0 386 -300 180 335 -20 2581 2741 90 974 0 -301 327 483 -20 2098 2258 90 874 0 -302 363 62 -20 3264 3424 90 909 0 -303 375 342 -20 939 1099 90 230 0 -304 16 280 -10 2767 2927 90 950 0 -305 277 431 -30 1334 1494 90 858 0 -306 110 241 -10 2136 2296 90 994 0 -307 48 385 -20 1008 1168 90 462 0 -308 152 260 10 98 258 90 0 859 -309 255 120 10 130 290 90 0 547 -310 214 382 -20 2491 2651 90 680 0 -311 414 384 -10 2662 2822 90 339 0 -312 232 378 -20 2194 2354 90 111 0 -313 80 141 30 494 654 90 0 658 -314 188 330 30 513 673 90 0 114 -315 157 192 -10 3210 3370 90 875 0 -316 101 237 -20 1831 1991 90 382 0 -317 74 360 40 2856 3016 90 0 152 -318 267 260 20 509 669 90 0 690 -319 378 46 -20 3090 3250 90 849 0 -320 420 311 30 893 1053 90 0 123 -321 384 217 -20 1809 1969 90 813 0 -322 418 300 10 611 771 90 0 514 -323 356 77 -10 2249 2409 90 898 0 -324 253 244 -30 2742 2902 90 830 0 -325 323 258 -20 1328 1488 90 417 0 -326 293 454 -30 2611 2771 90 826 0 -327 231 97 -30 2887 3047 90 216 0 -328 316 234 -20 2661 2821 90 967 0 -329 207 196 -10 2565 2725 90 376 0 -330 321 228 -10 2200 2360 90 356 0 -331 382 17 20 1734 1894 90 0 621 -332 206 326 -10 3246 3406 90 816 0 -333 198 284 10 76 236 90 0 473 -334 137 186 -30 2912 3072 90 431 0 -335 229 396 -30 2882 3042 90 61 0 -336 268 235 -20 1842 2002 90 119 0 -337 95 243 -30 759 919 90 504 0 -338 297 430 20 378 538 90 0 614 -339 393 368 10 472 632 90 0 311 -340 66 391 -30 1601 1761 90 937 0 -341 189 339 -20 2863 3023 90 511 0 -342 280 351 30 116 276 90 0 350 -343 241 77 -20 1225 1385 90 415 0 -344 134 265 -20 2666 2826 90 694 0 -345 420 95 30 345 505 90 0 131 -346 111 279 30 141 301 90 0 161 -347 367 358 30 2133 2293 90 0 246 -348 239 373 -30 1905 2065 90 428 0 -349 384 235 -20 2672 2832 90 616 0 -350 284 360 -30 309 469 90 342 0 -351 325 75 -20 2370 2530 90 531 0 -352 279 369 10 502 662 90 0 20 -353 340 449 -30 3080 3240 90 820 0 -354 275 448 10 2902 3062 90 0 687 -355 447 88 20 2963 3123 90 0 588 -356 314 279 10 270 430 90 0 330 -357 434 377 -10 2345 2505 90 541 0 -358 67 377 10 2186 2346 90 0 82 -359 370 353 10 746 906 90 0 185 -360 57 367 20 2169 2329 90 0 464 -361 332 486 -20 1912 2072 90 419 0 -362 386 361 30 1527 1687 90 0 400 -363 55 282 -20 305 465 90 833 0 -364 317 467 20 424 584 90 0 840 -365 335 54 -10 1853 2013 90 408 0 -366 348 466 -10 2583 2743 90 120 0 -367 132 314 30 3214 3374 90 0 256 -368 328 216 -10 1912 2072 90 174 0 -369 416 48 10 1880 2040 90 0 774 -370 370 55 -10 2886 3046 90 864 0 -371 149 434 -20 2203 2363 90 856 0 -372 466 169 -20 2502 2662 90 832 0 -373 141 267 -20 1635 1795 90 538 0 -374 258 350 -10 1822 1982 90 651 0 -375 428 312 10 1084 1244 90 0 4 -376 211 188 10 660 820 90 0 329 -377 50 343 10 2754 2914 0 0 1013 -378 107 311 -30 2813 2973 90 564 0 -379 178 441 20 215 375 90 0 776 -380 232 85 -40 2309 2469 90 203 0 -381 391 23 -20 2698 2858 90 11 0 -382 137 227 20 115 275 90 0 316 -383 161 203 20 100 260 90 0 183 -384 363 212 -20 3274 3434 90 934 0 -385 384 346 -10 1331 1491 90 106 0 -386 166 434 -10 2965 3125 90 299 0 -387 274 248 20 310 470 90 0 249 -388 156 421 -30 3355 3515 90 433 0 -389 346 211 10 103 263 90 0 980 -390 265 358 20 1352 1512 90 0 958 -391 96 407 20 434 594 90 0 750 -392 443 70 -20 2464 2624 90 989 0 -393 125 212 10 1187 1347 90 0 59 -394 361 337 50 363 523 90 0 939 -395 322 78 20 2464 2624 90 0 899 -396 481 156 20 1600 1760 90 0 986 -397 188 293 30 837 997 90 0 945 -398 76 408 30 1020 1180 90 0 71 -399 130 304 -20 3175 3335 90 881 0 -400 378 363 -30 1749 1909 90 362 0 -401 185 301 20 1330 1490 90 0 882 -402 385 235 -20 2581 2741 90 581 0 -403 261 350 10 1729 1889 90 0 182 -404 389 33 -20 2983 3143 90 124 0 -405 151 214 -30 511 671 90 252 0 -406 265 94 10 258 418 90 0 219 -407 65 164 -10 2595 2755 90 273 0 -408 293 81 10 174 334 90 0 365 -409 363 55 -10 2983 3143 90 727 0 -410 465 176 20 2599 2759 90 0 48 -411 428 298 30 1654 1814 90 0 852 -412 75 379 -20 2567 2727 90 57 0 -413 404 378 -40 857 1017 90 825 0 -414 203 203 -10 2850 3010 90 506 0 -415 259 88 20 545 705 90 0 343 -416 362 17 -20 1884 2044 90 465 0 -417 320 258 20 564 724 90 0 325 -418 59 358 -10 2358 2518 90 87 0 -419 316 453 20 224 384 90 0 361 -420 225 192 20 74 234 90 0 539 -421 140 206 30 408 568 90 0 629 -422 83 151 10 300 460 90 0 29 -423 366 196 10 139 299 90 0 173 -424 108 245 -40 1730 1890 90 277 0 -425 129 267 -20 2480 2640 90 474 0 -426 57 379 20 907 1067 90 0 802 -427 329 56 20 1457 1617 90 0 254 -428 213 363 30 1234 1394 90 0 348 -429 76 391 -10 1318 1478 90 718 0 -430 330 259 30 1231 1391 90 0 724 -431 136 217 30 898 1058 90 0 334 -432 165 333 -30 2381 2541 90 836 0 -433 160 431 30 3254 3414 90 0 388 -434 338 489 -10 1308 1468 90 479 0 -435 335 64 -20 1953 2113 90 63 0 -436 412 361 -10 1748 1908 90 800 0 -437 259 90 30 637 797 90 0 438 -438 265 77 -30 832 992 90 437 0 -439 460 173 -20 2887 3047 90 134 0 -440 83 301 -40 2297 2457 90 565 0 -441 201 331 -20 707 867 90 526 0 -442 118 214 20 240 400 90 0 476 -443 395 30 20 2796 2956 90 0 759 -444 125 444 -10 1997 2157 90 206 0 -445 283 248 30 33 193 90 0 686 -446 391 334 -30 1047 1207 90 835 0 -447 212 215 -10 3160 3320 90 708 0 -448 276 428 20 1048 1208 90 0 834 -449 96 152 20 197 357 90 0 787 -450 425 85 10 536 696 90 0 785 -451 336 7 10 1584 1744 90 0 700 -452 196 219 -30 3054 3214 90 168 0 -453 210 94 20 997 1157 90 0 773 -454 310 81 -10 2846 3006 90 534 0 -455 341 37 -10 434 594 90 1000 0 -456 344 478 -20 2296 2456 90 558 0 -457 406 37 40 275 435 90 0 223 -458 69 346 -30 2962 3122 90 467 0 -459 80 376 -10 407 567 90 561 0 -460 314 449 30 209 369 90 0 991 -461 209 201 -20 2753 2913 90 593 0 -462 88 379 20 689 849 90 0 307 -463 352 500 -10 1505 1665 90 500 0 -464 65 357 -20 2454 2614 90 360 0 -465 345 15 20 1482 1642 90 0 416 -466 125 245 20 3002 3162 90 0 842 -467 52 369 30 2073 2233 90 0 458 -468 449 140 -10 730 890 90 34 0 -469 430 310 30 1176 1336 90 0 982 -470 109 325 -10 3008 3168 90 55 0 -471 446 139 20 637 797 90 0 796 -472 229 214 20 41 201 90 0 968 -473 197 301 -10 183 343 90 333 0 -474 146 245 20 696 856 90 0 425 -475 401 368 20 664 824 90 0 148 -476 116 259 -20 2613 2773 90 442 0 -477 374 55 -20 2792 2952 90 576 0 -478 249 251 -20 3036 3196 90 637 0 -479 325 490 10 923 1083 90 0 434 -480 59 159 -20 1103 1263 90 17 0 -481 186 177 -10 1361 1521 90 623 0 -482 319 229 -10 2292 2452 90 591 0 -483 26 269 30 1005 1165 90 0 568 -484 53 139 -30 1214 1374 90 605 0 -485 471 154 -10 1319 1479 90 908 0 -486 301 247 -20 3238 3398 90 798 0 -487 388 220 -20 1423 1583 90 946 0 -488 235 81 20 1450 1610 90 0 578 -489 347 479 10 2389 2549 90 0 672 -490 367 59 -30 3169 3329 90 918 0 -491 261 370 -10 1069 1229 90 746 0 -492 441 287 -20 2915 3075 90 110 0 -493 44 153 30 1995 2155 90 0 158 -494 263 351 10 1545 1705 90 0 775 -495 444 157 10 215 375 90 0 791 -496 374 17 -30 1925 2085 90 107 0 -497 448 295 -20 2724 2884 90 670 0 -498 446 297 10 2232 2392 90 0 714 -499 347 40 30 530 690 90 0 715 -500 318 493 10 825 985 90 0 463 -501 399 352 10 1260 1420 90 0 79 -502 51 364 -30 1887 2047 90 251 0 -503 250 217 -10 2534 2694 90 767 0 -504 107 225 30 440 600 90 0 337 -505 173 208 -20 1881 2041 90 848 0 -506 204 189 10 2378 2538 90 0 414 -507 399 379 20 2960 3120 90 0 805 -508 79 346 -10 3150 3310 90 112 0 -509 360 338 10 272 432 90 0 722 -510 390 17 30 1453 1613 90 0 693 -511 207 337 20 805 965 90 0 341 -512 409 361 30 1057 1217 90 0 105 -513 206 377 20 559 719 90 0 146 -514 429 294 -10 1943 2103 90 322 0 -515 375 31 20 2185 2345 90 0 912 -516 426 80 20 722 882 90 0 853 -517 74 374 20 2662 2822 90 0 248 -518 408 20 -10 473 633 90 935 0 -519 239 369 -10 1811 1971 90 559 0 -520 420 308 30 709 869 90 0 594 -521 254 357 -10 2012 2172 90 960 0 -522 53 297 -20 3300 3460 90 39 0 -523 434 382 -30 2250 2410 90 54 0 -524 204 171 -20 958 1118 90 970 0 -525 173 169 10 1558 1718 0 0 1002 -526 190 332 20 606 766 90 0 441 -527 274 231 30 2126 2286 90 0 615 -528 207 194 -20 2473 2633 90 736 0 -529 315 232 -10 2753 2913 90 84 0 -530 425 87 20 444 604 90 0 883 -531 312 64 20 582 742 90 0 351 -532 129 244 -10 2908 3068 90 850 0 -533 278 230 10 1466 1626 90 0 709 -534 351 75 10 2154 2314 90 0 454 -535 185 293 -20 930 1090 90 540 0 -536 364 364 -20 2230 2390 90 269 0 -537 432 369 10 2147 2307 90 0 679 -538 128 249 20 1343 1503 90 0 373 -539 221 179 -20 369 529 90 420 0 -540 194 296 20 650 810 90 0 535 -541 413 350 10 1557 1717 90 0 357 -542 214 372 10 943 1103 90 0 900 -543 379 229 -20 1045 1205 90 729 0 -544 91 298 -30 2013 2173 90 656 0 -545 226 120 30 235 395 90 0 926 -546 344 46 30 1660 1820 90 0 211 -547 238 84 -10 1634 1794 90 309 0 -548 138 276 10 1915 2075 90 0 90 -549 346 487 10 1808 1968 90 0 175 -550 95 160 10 179 339 90 0 721 -551 103 266 30 1062 1222 90 0 228 -552 98 286 30 1337 1497 90 0 243 -553 77 172 -10 2976 3136 90 275 0 -554 147 199 30 308 468 90 0 176 -555 210 98 10 721 881 90 0 641 -556 428 292 10 1851 2011 90 0 966 -557 121 236 10 2034 2194 90 0 696 -558 336 479 20 2198 2358 90 0 456 -559 203 369 10 841 1001 90 0 519 -560 296 232 10 1268 1428 90 0 215 -561 87 369 10 201 361 90 0 459 -562 247 88 -20 1924 2084 90 838 0 -563 104 246 -10 1353 1513 90 108 0 -564 67 302 30 2493 2653 90 0 378 -565 114 296 40 259 419 90 0 440 -566 394 356 30 189 349 90 0 889 -567 192 306 -10 1523 1683 90 997 0 -568 16 285 -30 2492 2652 90 483 0 -569 419 310 10 802 962 90 0 85 -570 389 221 10 1332 1492 90 0 136 -571 129 264 20 2761 2921 0 0 1004 -572 172 483 -20 904 1064 90 197 0 -573 325 251 -20 1425 1585 90 639 0 -574 151 436 -10 2386 2546 90 127 0 -575 263 91 20 352 512 90 0 924 -576 401 15 20 685 845 90 0 477 -577 253 382 10 3090 3250 90 0 157 -578 247 89 -20 2015 2175 90 488 0 -579 283 229 30 1371 1531 90 0 748 -580 366 341 -10 553 713 90 130 0 -581 392 213 20 2092 2252 90 0 402 -582 167 304 20 207 367 90 0 940 -583 477 154 10 1506 1666 90 0 725 -584 234 383 10 2099 2259 0 0 1007 -585 199 327 10 3059 3219 90 0 239 -586 140 220 30 803 963 90 0 638 -587 144 266 30 311 471 90 0 290 -588 432 105 -20 3432 3592 90 355 0 -589 368 325 30 139 299 90 0 53 -590 202 386 20 369 529 90 0 282 -591 325 246 10 1520 1680 90 0 482 -592 430 86 -20 2766 2926 90 681 0 -593 200 195 20 2185 2345 90 0 461 -594 440 295 -30 2136 2296 90 520 0 -595 77 287 10 1905 2065 90 0 100 -596 187 362 -10 1786 1946 90 783 0 -597 131 207 20 999 1159 90 0 135 -598 405 5 20 786 946 90 0 297 -599 125 226 20 1389 1549 90 0 893 -600 254 335 10 3013 3173 90 0 676 -601 212 168 20 860 1020 90 0 971 -602 281 279 20 714 874 90 0 271 -603 326 241 -10 1615 1775 90 660 0 -604 152 241 20 793 953 90 0 880 -605 71 139 30 807 967 90 0 484 -606 46 277 -20 589 749 90 138 0 -607 393 13 -30 1358 1518 90 165 0 -608 87 454 40 882 1042 90 0 225 -609 86 359 -30 3255 3415 90 695 0 -610 220 192 20 169 329 90 0 40 -611 426 279 30 3112 3272 90 0 667 -612 131 267 -30 2572 2732 90 27 0 -613 200 297 -10 553 713 90 911 0 -614 299 442 -20 1904 2064 90 338 0 -615 265 218 -30 2429 2589 90 527 0 -616 398 231 20 2296 2456 90 0 349 -617 312 74 -20 2749 2909 90 44 0 -618 99 307 20 2714 2874 90 0 812 -619 22 283 30 1313 1473 90 0 790 -620 67 160 10 2690 2850 90 0 933 -621 390 42 -20 2588 2748 90 331 0 -622 44 279 10 496 656 90 0 632 -623 200 182 10 1153 1313 90 0 481 -624 458 303 20 2531 2691 90 0 46 -625 298 438 10 567 727 90 0 42 -626 62 301 -20 3400 3560 90 784 0 -627 112 251 10 1633 1793 90 0 102 -628 184 354 -10 1976 2136 90 794 0 -629 140 180 -30 3009 3169 90 421 0 -630 269 428 20 1145 1305 90 0 851 -631 123 206 10 1885 2045 90 0 691 -632 36 284 -10 1698 1858 90 622 0 -633 272 233 10 1747 1907 90 0 36 -634 320 231 20 2384 2544 90 0 844 -635 211 180 20 758 918 90 0 270 -636 114 169 -20 2612 2772 90 683 0 -637 245 239 20 2933 3093 90 0 478 -638 117 204 -30 1698 1858 90 586 0 -639 316 254 20 750 910 90 0 573 -640 169 443 30 500 660 90 0 278 -641 212 96 -10 904 1064 90 555 0 -642 119 285 40 3063 3223 90 0 949 -643 71 163 20 2785 2945 0 0 1011 -644 78 361 -10 3448 3608 90 841 0 -645 354 219 -20 3375 3535 90 819 0 -646 389 233 20 2487 2647 90 0 163 -647 90 391 -10 541 701 90 241 0 -648 209 307 10 1811 1971 90 0 728 -649 363 351 -20 2923 3083 90 682 0 -650 405 47 10 255 415 90 0 52 -651 278 329 10 83 243 90 0 374 -652 261 371 -30 978 1138 90 827 0 -653 302 470 20 2227 2387 90 0 200 -654 373 205 40 334 494 90 0 267 -655 381 20 -30 1828 1988 90 294 0 -656 90 277 30 662 822 90 0 544 -657 46 341 10 2659 2819 90 0 719 -658 50 138 -30 1889 2049 90 313 0 -659 61 437 20 265 425 90 0 801 -660 331 252 10 1134 1294 90 0 603 -661 440 81 -20 2665 2825 90 815 0 -662 384 206 20 739 899 90 0 723 -663 232 87 30 1504 1664 90 0 984 -664 59 471 20 1484 1644 90 0 762 -665 174 304 20 110 270 90 0 23 -666 106 248 -20 1446 1606 90 855 0 -667 410 287 -30 3220 3380 90 611 0 -668 206 313 -30 2091 2251 90 829 0 -669 412 367 20 960 1120 90 0 260 -670 412 300 20 515 675 90 0 497 -671 206 295 -10 2809 2969 90 142 0 -672 329 459 -10 2885 3045 90 489 0 -673 177 436 20 199 359 90 0 258 -674 266 264 -30 603 763 90 280 0 -675 308 235 -20 3135 3295 90 975 0 -676 260 330 -10 3203 3363 90 600 0 -677 49 136 10 1705 1865 90 0 18 -678 356 28 -10 1000 1160 90 70 0 -679 428 384 -10 2444 2604 90 537 0 -680 220 362 20 1331 1491 90 0 310 -681 437 61 20 2088 2248 90 0 592 -682 365 360 20 2040 2200 90 0 649 -683 107 168 20 2515 2675 90 0 636 -684 220 177 -20 461 621 90 291 0 -685 347 21 20 1386 1546 90 0 701 -686 293 245 -30 3430 3590 90 445 0 -687 267 436 -10 3007 3167 90 354 0 -688 216 96 -30 2566 2726 90 831 0 -689 383 351 20 167 327 90 0 879 -690 289 240 -20 939 1099 90 318 0 -691 129 185 -10 2814 2974 90 631 0 -692 291 450 10 2705 2865 90 0 979 -693 387 21 -30 1548 1708 90 510 0 -694 116 255 20 1239 1399 90 0 344 -695 50 368 30 1981 2141 90 0 609 -696 121 249 -10 2421 2581 90 557 0 -697 404 346 -30 1163 1323 90 86 0 -698 77 360 -10 3357 3517 90 811 0 -699 447 102 -20 3252 3412 90 147 0 -700 366 16 -10 1978 2138 90 451 0 -701 348 16 -20 1780 1940 90 685 0 -702 353 346 -10 3114 3274 90 26 0 -703 54 485 -30 1773 1933 90 760 0 -704 319 77 30 2558 2718 90 0 779 -705 83 282 -10 1532 1692 90 214 0 -706 384 24 -10 2601 2761 90 876 0 -707 52 469 20 1387 1547 90 0 972 -708 199 200 10 2945 3105 90 0 447 -709 273 234 -10 1656 1816 90 533 0 -710 16 281 -20 2676 2836 90 996 0 -711 151 442 -10 2482 2642 90 809 0 -712 223 114 20 332 492 90 0 188 -713 191 308 20 82 242 90 0 141 -714 448 297 -10 2632 2792 90 498 0 -715 386 28 -30 2507 2667 90 499 0 -716 106 295 -20 1053 1213 90 180 0 -717 387 224 -10 1517 1677 90 745 0 -718 96 377 10 224 384 90 0 429 -719 86 361 -10 3347 3507 90 657 0 -720 211 107 -20 531 691 90 172 0 -721 43 125 -10 1603 1763 90 550 0 -722 369 351 -10 838 998 90 509 0 -723 388 228 -20 1235 1395 90 662 0 -724 325 228 -30 1810 1970 90 430 0 -725 490 159 -10 1897 2057 90 583 0 -726 420 78 -20 1398 1558 90 953 0 -727 396 4 10 1073 1233 90 0 409 -728 222 317 -10 2415 2575 90 648 0 -729 389 198 20 543 703 90 0 543 -730 322 454 20 320 480 90 0 117 -731 241 391 -30 2985 3145 90 126 0 -732 256 117 -20 3167 3327 90 752 0 -733 298 255 10 151 311 90 0 743 -734 74 363 -30 2763 2923 90 905 0 -735 345 496 20 1407 1567 90 0 887 -736 167 169 20 1654 1814 90 0 528 -737 23 306 -20 2182 2342 90 156 0 -738 317 62 20 677 837 90 0 896 -739 319 257 -20 656 816 90 823 0 -740 129 255 10 2716 2876 90 0 150 -741 59 377 20 2088 2248 90 0 868 -742 138 272 -30 1821 1981 90 987 0 -743 317 251 -10 940 1100 90 733 0 -744 279 436 20 1519 1679 0 0 1003 -745 371 207 10 241 401 90 0 717 -746 263 372 10 886 1046 90 0 491 -747 50 347 -30 2562 2722 90 167 0 -748 275 236 -30 1563 1723 90 579 0 -749 334 47 20 331 491 90 0 201 -750 50 383 -20 1889 2049 90 391 0 -751 170 338 -20 2284 2444 90 28 0 -752 245 109 20 3089 3249 90 0 732 -753 69 475 30 1189 1349 90 0 799 -754 54 372 -10 1991 2151 90 915 0 -755 198 334 -30 2203 2363 90 97 0 -756 380 228 30 1137 1297 90 0 276 -757 425 118 10 219 379 90 0 13 -758 80 398 -10 826 986 90 255 0 -759 366 57 -20 3076 3236 90 443 0 -760 67 463 30 584 744 90 0 703 -761 226 86 -10 2595 2755 90 843 0 -762 59 480 -20 1583 1743 90 664 0 -763 40 378 20 1386 1546 90 0 977 -764 250 367 20 2113 2273 90 0 15 -765 157 436 -10 2773 2933 90 253 0 -766 463 161 -30 2403 2563 90 171 0 -767 266 250 10 409 569 90 0 503 -768 51 162 20 2213 2373 90 0 151 -769 194 353 -10 1371 1531 90 913 0 -770 383 41 -10 2685 2845 90 952 0 -771 247 82 -20 1828 1988 90 210 0 -772 457 142 -10 829 989 90 155 0 -773 244 94 -20 1795 1955 90 453 0 -774 441 63 -10 2274 2434 90 369 0 -775 244 371 -10 2310 2470 90 494 0 -776 174 444 -20 405 565 90 379 0 -777 94 247 30 853 1013 90 0 122 -778 320 225 20 2014 2174 90 0 128 -779 316 80 -30 2652 2812 90 704 0 -780 155 447 20 2672 2832 90 0 177 -781 211 308 30 1903 2063 90 0 884 -782 297 442 20 1812 1972 90 0 969 -783 200 342 10 997 1157 90 0 596 -784 44 325 20 3181 3341 90 0 626 -785 438 60 -10 2180 2340 90 450 0 -786 80 374 20 499 659 90 0 33 -787 59 163 -20 2311 2471 90 449 0 -788 236 92 10 2210 2370 0 0 1008 -789 414 66 30 1592 1752 90 0 990 -790 34 279 -30 1506 1666 90 619 0 -791 475 156 -10 1413 1573 90 495 0 -792 404 310 20 165 325 90 0 995 -793 367 239 20 3156 3316 0 0 1005 -794 210 359 10 1568 1728 90 0 628 -795 133 278 -20 2010 2170 90 191 0 -796 446 169 -20 3185 3345 90 471 0 -797 188 356 20 1882 2042 90 0 948 -798 312 252 20 845 1005 90 0 486 -799 69 485 -30 2258 2418 90 753 0 -800 413 353 10 1650 1810 90 0 436 -801 54 446 -20 287 447 90 659 0 -802 56 357 -20 1788 1948 90 426 0 -803 230 105 -20 2958 3118 90 808 0 -804 196 302 20 274 434 90 0 891 -805 391 373 -20 3060 3220 90 507 0 -806 101 295 30 958 1118 90 0 839 -807 234 350 10 2617 2777 90 0 962 -808 215 108 20 2760 2920 90 0 803 -809 142 457 10 1593 1753 90 0 711 -810 283 425 -30 858 1018 90 9 0 -811 77 397 10 919 1079 90 0 698 -812 105 317 -20 2909 3069 90 618 0 -813 382 213 20 1715 1875 90 0 321 -814 213 76 -10 1300 1460 90 999 0 -815 417 56 20 1782 1942 90 0 661 -816 183 340 10 2677 2837 90 0 332 -817 123 242 20 3190 3350 0 0 1006 -818 475 136 20 1029 1189 90 0 824 -819 377 246 20 3054 3214 90 0 645 -820 310 484 30 626 786 90 0 353 -821 47 280 10 403 563 90 0 978 -822 57 456 20 388 548 90 0 877 -823 313 266 20 373 533 90 0 739 -824 475 145 -20 1128 1288 90 818 0 -825 400 376 40 762 922 90 0 413 -826 290 416 30 170 330 90 0 326 -827 277 369 30 410 570 90 0 652 -828 91 303 -10 2199 2359 90 116 0 -829 194 301 30 366 526 90 0 668 -830 254 238 30 2646 2806 90 0 324 -831 215 91 30 2290 2450 90 0 688 -832 500 162 20 2088 2248 90 0 372 -833 56 287 20 197 357 90 0 363 -834 289 452 -20 2798 2958 90 448 0 -835 378 326 30 160 320 90 0 446 -836 197 350 30 1186 1346 90 0 432 -837 243 88 20 1731 1891 90 0 266 -838 250 72 20 1125 1285 90 0 562 -839 101 290 -30 1150 1310 90 806 0 -840 351 480 -20 1710 1870 90 364 0 -841 67 357 10 3044 3204 90 0 644 -842 128 240 -20 3285 3445 90 466 0 -843 253 81 10 1026 1186 90 0 761 -844 307 227 -20 2853 3013 90 634 0 -845 233 441 -10 3225 3385 90 279 0 -846 311 47 -20 1070 1230 90 224 0 -847 292 456 -30 2518 2678 90 998 0 -848 183 187 20 1768 1928 90 0 505 -849 392 31 20 2890 3050 90 0 319 -850 103 251 10 1258 1418 90 0 532 -851 300 443 -20 1996 2156 90 630 0 -852 420 295 -30 1752 1912 90 411 0 -853 427 64 -20 1292 1452 90 516 0 -854 372 354 30 1941 2101 90 0 89 -855 101 263 20 1156 1316 90 0 666 -856 141 454 20 1686 1846 90 0 371 -857 146 461 -10 1497 1657 90 250 0 -858 298 430 30 469 629 90 0 305 -859 148 270 -10 119 279 90 308 0 -860 76 287 -10 1814 1974 90 41 0 -861 308 55 -40 871 1031 90 143 0 -862 143 257 -20 501 661 90 189 0 -863 393 2 30 979 1139 90 0 205 -864 385 28 10 2286 2446 90 0 370 -865 204 291 -20 2903 3063 90 220 0 -866 132 272 30 2294 2454 90 0 925 -867 206 379 -20 467 627 90 296 0 -868 69 383 -20 2470 2630 90 741 0 -869 245 96 -20 1703 1863 90 265 0 -870 431 301 -20 1468 1628 90 286 0 -871 448 94 -10 3154 3314 90 190 0 -872 199 305 30 1620 1780 90 0 202 -873 95 356 -20 3447 3607 90 895 0 -874 328 498 20 1113 1273 90 0 301 -875 108 222 10 1497 1657 90 0 315 -876 341 26 10 1288 1448 90 0 706 -877 63 454 -20 484 644 90 822 0 -878 222 357 30 1517 1677 90 0 31 -879 416 364 -20 1938 2098 90 689 0 -880 127 278 -20 2106 2266 90 604 0 -881 140 252 20 597 757 90 0 399 -882 218 298 -20 2706 2866 90 401 0 -883 432 87 -20 2858 3018 90 530 0 -884 216 300 -30 2613 2773 90 781 0 -885 438 72 -40 1098 1258 90 233 0 -886 184 178 -10 1454 1614 90 103 0 -887 345 468 -20 2677 2837 90 735 0 -888 150 435 -20 2295 2455 90 951 0 -889 395 365 -30 288 448 90 566 0 -890 208 371 -20 655 815 90 170 0 -891 190 292 -20 745 905 90 804 0 -892 78 479 -20 1089 1249 90 137 0 -893 104 198 -20 2303 2463 90 599 0 -894 346 13 20 1686 1846 90 0 910 -895 47 388 20 1193 1353 90 0 873 -896 315 57 -20 1171 1331 90 738 0 -897 110 199 -30 2207 2367 90 955 0 -898 323 60 10 1270 1430 90 0 323 -899 308 82 -20 2939 3099 90 395 0 -900 216 374 -10 1035 1195 90 542 0 -901 326 253 10 1039 1199 90 0 902 -902 308 232 -10 2948 3108 90 901 0 -903 118 223 10 339 499 90 0 943 -904 149 444 -20 2575 2735 90 941 0 -905 95 395 30 332 492 90 0 734 -906 117 319 -10 3108 3268 90 272 0 -907 262 352 -30 1636 1796 90 67 0 -908 468 135 10 932 1092 90 0 485 -909 351 31 20 813 973 90 0 302 -910 361 15 -20 2118 2278 90 894 0 -911 195 300 10 458 618 90 0 613 -912 397 27 -20 2388 2548 90 515 0 -913 179 311 10 311 471 90 0 769 -914 77 133 -10 709 869 90 281 0 -915 66 397 10 1125 1285 90 0 754 -916 366 352 10 2830 2990 90 0 221 -917 221 87 -10 1403 1563 90 8 0 -918 347 23 30 1100 1260 90 0 490 -919 176 358 -10 2075 2235 90 964 0 -920 229 78 -10 2496 2656 90 58 0 -921 272 246 10 218 378 90 0 2 -922 293 67 -20 290 450 90 88 0 -923 140 265 -30 1543 1703 90 196 0 -924 238 83 -20 1543 1703 90 575 0 -925 136 296 -30 3275 3435 90 866 0 -926 218 98 -30 2002 2162 90 545 0 -927 290 440 -10 1621 1781 90 981 0 -928 29 302 -20 2085 2245 90 938 0 -929 290 425 30 280 440 90 0 238 -930 124 247 -10 3095 3255 90 944 0 -931 442 287 30 2824 2984 90 0 293 -932 294 64 10 383 543 90 0 295 -933 74 165 -10 2878 3038 90 620 0 -934 382 245 20 2959 3119 90 0 384 -935 405 24 10 378 538 90 0 518 -936 211 97 20 812 972 90 0 965 -937 88 390 30 633 793 90 0 340 -938 37 295 20 1891 2051 90 0 928 -939 359 371 -50 2422 2582 90 394 0 -940 186 372 -20 1685 1845 90 582 0 -941 116 446 20 1898 2058 90 0 904 -942 293 249 10 53 213 90 0 976 -943 83 228 -10 649 809 90 903 0 -944 96 269 10 965 1125 90 0 930 -945 179 284 -30 1031 1191 90 397 0 -946 368 219 20 940 1100 90 0 487 -947 66 359 -20 3157 3317 90 162 0 -948 189 338 -20 2954 3114 90 797 0 -949 163 277 -40 3492 3652 90 642 0 -950 5 296 10 2386 2546 90 0 304 -951 152 478 20 1015 1175 90 0 888 -952 366 34 10 2086 2246 90 0 770 -953 429 80 20 815 975 90 0 726 -954 464 178 -20 2691 2851 90 30 0 -955 138 196 30 1993 2153 90 0 897 -956 87 481 10 2733 2893 0 0 1014 -957 425 99 20 248 408 90 0 72 -958 241 362 -20 2410 2570 90 390 0 -959 207 289 -10 2997 3157 90 194 0 -960 264 365 10 1255 1415 90 0 521 -961 102 289 20 1242 1402 90 0 3 -962 233 346 -10 2711 2871 90 807 0 -963 78 141 30 402 562 90 0 121 -964 196 348 10 1094 1254 90 0 919 -965 216 92 -20 2382 2542 90 936 0 -966 444 309 -10 2425 2585 90 556 0 -967 313 263 20 466 626 90 0 328 -968 211 198 -20 2660 2820 90 472 0 -969 314 436 -20 2101 2261 90 782 0 -970 217 189 20 564 724 90 0 524 -971 197 178 -20 1058 1218 90 601 0 -972 60 497 -20 1877 2037 90 707 0 -973 206 312 40 2000 2160 90 0 35 -974 197 351 20 1277 1437 90 0 300 -975 305 233 20 3041 3201 90 0 675 -976 297 250 -10 3333 3493 90 942 0 -977 71 348 -20 3055 3215 90 763 0 -978 11 269 -10 1110 1270 90 821 0 -979 247 447 -10 3120 3280 90 692 0 -980 386 213 -10 1996 2156 90 389 0 -981 292 434 10 755 915 90 0 927 -982 436 301 -30 1373 1533 90 469 0 -983 145 221 20 708 868 90 0 104 -984 224 96 -30 2098 2258 90 663 0 -985 59 128 -10 1496 1656 90 992 0 -986 489 150 -20 1798 1958 90 396 0 -987 152 225 30 994 1154 90 0 742 -988 426 85 10 627 787 90 0 32 -989 415 73 20 1495 1655 90 0 392 -990 440 70 -30 2371 2531 90 789 0 -991 320 476 -30 523 683 90 460 0 -992 57 132 10 1312 1472 90 0 985 -993 405 311 30 177 337 90 0 298 -994 109 250 10 1540 1700 90 0 306 -995 428 314 -20 992 1152 90 792 0 -996 40 288 20 1793 1953 90 0 710 -997 175 282 10 1126 1286 90 0 567 -998 298 456 30 2332 2492 90 0 847 -999 208 101 10 627 787 90 0 814 -1000 342 52 10 232 392 90 0 455 -1001 321 224 -30 2106 2266 90 56 0 -1002 173 169 -10 1558 1718 90 525 0 -1003 279 436 -20 1519 1679 90 744 0 -1004 129 264 -20 2761 2921 90 571 0 -1005 367 239 -20 3156 3316 90 793 0 -1006 123 242 -20 3190 3350 90 817 0 -1007 234 383 -10 2099 2259 90 584 0 -1008 236 92 -10 2210 2370 90 788 0 -1009 149 183 -20 3108 3268 90 21 0 -1010 358 365 -30 2326 2486 90 169 0 -1011 71 163 -20 2785 2945 90 643 0 -1012 435 77 -20 1002 1162 90 5 0 -1013 50 343 -10 2754 2914 90 377 0 -1014 87 481 -10 2733 2893 90 956 0 diff --git a/jsprit-instances/instances/lilim/1000/LC21010.txt b/jsprit-instances/instances/lilim/1000/LC21010.txt deleted file mode 100644 index f74b34588..000000000 --- a/jsprit-instances/instances/lilim/1000/LC21010.txt +++ /dev/null @@ -1,1010 +0,0 @@ -250 700 1 -0 250 250 0 0 3914 0 0 0 -1 212 101 -20 2302 3182 90 488 0 -2 266 231 -30 1576 2456 90 579 0 -3 89 284 -20 1076 1956 90 839 0 -4 430 298 -10 1202 2082 90 322 0 -5 435 77 -10 642 1522 90 34 0 -6 25 293 20 2604 3484 90 0 113 -7 43 269 30 327 1207 90 0 22 -8 216 117 -20 137 1017 90 12 0 -9 294 437 30 301 1181 90 0 500 -10 79 479 30 638 1518 90 0 226 -11 365 18 -10 1853 2733 90 406 0 -12 225 125 20 127 1007 90 0 8 -13 448 103 -20 2698 3578 90 592 0 -14 143 266 10 108 988 90 0 180 -15 252 347 10 2551 3431 90 0 149 -16 403 390 10 2200 3080 90 0 260 -17 67 153 -10 552 1432 90 914 0 -18 90 168 -30 2720 3600 90 158 0 -19 302 235 20 683 1563 90 0 503 -20 259 355 -10 1557 2437 90 960 0 -21 149 183 20 2748 3628 90 0 315 -22 19 297 -30 1922 2802 90 7 0 -23 209 358 -10 1117 1997 90 559 0 -24 56 388 20 1431 2311 90 0 734 -25 115 269 -20 2596 3476 90 424 0 -26 377 356 -20 1486 2366 90 262 0 -27 113 229 -20 763 1643 90 943 0 -28 205 343 -20 542 1422 90 511 0 -29 48 137 20 1437 2317 90 0 643 -30 467 157 -50 1947 2827 90 986 0 -31 220 394 10 2423 3303 90 0 335 -32 436 54 20 1631 2511 90 0 871 -33 54 357 -30 1336 2216 90 251 0 -34 456 154 10 227 1107 90 0 5 -35 216 307 -40 2156 3036 90 245 0 -36 280 224 -10 1866 2746 90 767 0 -37 90 270 -10 205 1085 90 859 0 -38 166 452 -20 239 1119 90 111 0 -39 17 283 -10 2224 3104 90 109 0 -40 196 192 30 1730 2610 90 0 708 -41 94 275 10 157 1037 90 0 944 -42 292 445 -20 1356 2236 90 630 0 -43 329 471 -20 2423 3303 90 456 0 -44 326 57 20 1004 1884 90 0 770 -45 95 466 -10 2664 3544 90 972 0 -46 429 282 -40 2658 3538 90 492 0 -47 229 364 -10 2152 3032 90 584 0 -48 457 160 10 2631 3511 90 0 796 -49 452 154 30 223 1103 90 0 853 -50 113 289 10 142 1022 90 0 828 -51 67 387 10 2016 2896 90 0 458 -52 368 17 20 1661 2541 90 0 779 -53 341 367 -10 2170 3050 90 185 0 -54 410 364 30 1482 2362 90 0 311 -55 80 281 10 1357 2237 90 0 161 -56 321 224 -20 1746 2626 90 798 0 -57 73 395 -30 863 1743 90 181 0 -58 259 76 -10 568 1448 90 219 0 -59 121 203 -20 1432 2312 90 337 0 -60 118 256 -10 2159 3039 90 228 0 -61 236 361 -10 1353 2233 90 542 0 -62 78 371 20 210 1090 90 0 199 -63 301 53 20 609 1489 90 0 752 -64 382 197 -20 280 1160 90 119 0 -65 491 160 -30 1629 2509 90 171 0 -66 453 164 -10 2724 3604 90 883 0 -67 277 371 30 235 1115 90 0 184 -68 272 212 20 1970 2850 90 0 615 -69 386 218 -30 1541 2421 90 717 0 -70 353 32 10 545 1425 90 0 832 -71 59 389 20 1338 2218 90 0 467 -72 414 62 -30 1326 2206 90 861 0 -73 278 357 10 110 990 90 0 78 -74 101 179 -10 2052 2932 90 393 0 -75 396 234 -10 2030 2910 90 213 0 -76 74 390 -40 437 1317 90 608 0 -77 332 55 30 211 1091 90 0 164 -78 272 365 -10 333 1213 90 73 0 -79 418 355 -30 1677 2557 90 512 0 -80 216 380 -30 1940 2820 90 314 0 -81 440 173 -20 2739 3619 90 396 0 -82 89 358 -10 2751 3631 90 464 0 -83 66 491 20 1710 2590 90 0 263 -84 317 234 10 2119 2999 90 0 675 -85 439 297 -10 1683 2563 90 556 0 -86 394 367 30 185 1065 90 0 93 -87 58 364 -20 1902 2782 90 129 0 -88 290 75 20 179 1059 90 0 918 -89 346 344 -10 2810 3690 90 221 0 -90 131 269 -30 2028 2908 90 866 0 -91 236 96 20 1244 2124 90 0 247 -92 29 282 -10 1050 1930 90 978 0 -93 418 385 -30 2397 3277 90 86 0 -94 148 225 40 253 1133 90 0 285 -95 166 464 10 434 1314 90 0 278 -96 266 373 -10 433 1313 90 352 0 -97 201 273 30 54 934 90 0 961 -98 255 245 10 7 887 90 0 729 -99 220 379 -20 2034 2914 90 890 0 -100 85 317 -20 2247 3127 90 440 0 -101 125 264 -10 2495 3375 90 612 0 -102 131 253 -30 2449 3329 90 196 0 -103 184 188 -20 900 1780 90 848 0 -104 128 209 20 733 1613 90 0 631 -105 373 364 -10 2777 3657 90 413 0 -106 389 342 10 785 1665 90 0 536 -107 420 20 30 286 1166 90 0 607 -108 132 218 10 122 1002 90 0 638 -109 32 256 10 541 1421 90 0 39 -110 406 339 20 179 1059 90 0 375 -111 191 397 20 158 1038 90 0 38 -112 72 341 -20 2506 3386 90 784 0 -113 35 308 -20 2712 3592 90 6 0 -114 169 360 20 1812 2692 90 0 478 -115 222 381 -20 2229 3109 90 296 0 -116 96 292 10 502 1382 90 0 552 -117 311 496 -30 368 1248 90 991 0 -118 220 384 10 2323 3203 90 0 182 -119 259 243 20 11 891 90 0 64 -120 349 476 -20 2123 3003 90 735 0 -121 63 159 20 649 1529 90 0 992 -122 112 243 -10 1961 2841 90 850 0 -123 448 302 -20 1967 2847 90 982 0 -124 343 27 -10 836 1716 90 846 0 -125 67 485 -20 1806 2686 90 665 0 -126 220 359 -30 1064 1944 90 428 0 -127 147 435 10 1751 2631 90 0 371 -128 317 235 -20 2210 3090 90 823 0 -129 43 355 20 1235 2115 90 0 87 -130 368 340 -30 148 1028 90 589 0 -131 450 72 -20 2201 3081 90 471 0 -132 400 364 -30 210 1090 90 889 0 -133 355 480 -10 1256 2136 90 479 0 -134 450 153 20 222 1102 90 0 785 -135 126 188 20 1738 2618 90 0 897 -136 380 223 10 1254 2134 90 0 756 -137 71 453 -10 325 1205 90 913 0 -138 54 287 20 199 1079 90 0 632 -139 420 168 -20 2756 3636 90 439 0 -140 219 89 20 2332 3212 90 0 688 -141 189 327 10 98 978 90 0 170 -142 191 309 -30 1070 1950 90 945 0 -143 301 67 40 189 1069 90 0 546 -144 484 161 -20 1336 2216 90 818 0 -145 77 483 -10 2179 3059 90 217 0 -146 241 375 10 1638 2518 90 0 676 -147 428 64 20 841 1721 90 0 774 -148 403 361 10 1092 1972 90 0 682 -149 257 336 -10 2746 3626 90 15 0 -150 131 241 -10 2825 3705 90 740 0 -151 63 166 -30 2142 3022 90 605 0 -152 71 368 -20 2730 3610 90 754 0 -153 272 228 10 1673 2553 90 0 324 -154 25 290 -30 2511 3391 90 568 0 -155 441 157 10 212 1092 90 0 757 -156 13 266 -20 844 1724 90 212 0 -157 251 376 -10 2818 3698 90 279 0 -158 61 170 30 2048 2928 90 0 18 -159 386 357 20 1073 1953 90 0 854 -160 95 475 -20 2565 3445 90 707 0 -161 90 298 -10 1744 2624 90 55 0 -162 71 388 -10 1145 2025 90 758 0 -163 383 246 -30 2508 3388 90 280 0 -164 352 38 -30 266 1146 90 77 0 -165 395 1 -10 527 1407 90 935 0 -166 120 210 -30 922 1802 90 777 0 -167 46 383 -20 928 1808 90 895 0 -168 202 198 -20 1918 2798 90 593 0 -169 358 365 30 1966 2846 0 0 1007 -170 191 352 -10 117 997 90 141 0 -171 470 152 30 866 1746 90 0 65 -172 228 124 20 127 1007 90 0 545 -173 402 230 -10 1842 2722 90 723 0 -174 323 229 -20 1358 2238 90 603 0 -175 331 486 -20 1643 2523 90 874 0 -176 112 208 -20 1241 2121 90 442 0 -177 172 435 -40 2701 3581 90 386 0 -178 326 498 10 661 1541 90 0 361 -179 460 183 -20 2427 3307 90 749 0 -180 95 279 -10 157 1037 90 14 0 -181 76 456 30 420 1300 90 0 57 -182 242 350 -10 2451 3331 90 118 0 -183 152 196 10 111 991 90 0 313 -184 268 351 -30 1090 1970 90 67 0 -185 360 356 10 2373 3253 90 0 53 -186 39 296 -20 1623 2503 90 860 0 -187 262 368 30 802 1682 90 0 494 -188 204 90 -20 734 1614 90 712 0 -189 149 273 20 103 983 90 0 378 -190 446 86 10 2689 3569 90 0 355 -191 139 269 -30 1368 2248 90 346 0 -192 483 170 -10 1837 2717 90 908 0 -193 39 278 10 1241 2121 90 0 564 -194 201 307 -20 1353 2233 90 567 0 -195 395 378 -20 1276 2156 90 689 0 -196 139 262 30 1090 1970 90 0 102 -197 176 447 20 210 1090 90 0 857 -198 67 380 20 1919 2799 90 0 412 -199 35 358 -20 1137 2017 90 62 0 -200 294 455 30 2066 2946 90 0 354 -201 351 33 20 361 1241 90 0 909 -202 216 316 -10 1959 2839 90 403 0 -203 261 96 -20 154 1034 90 210 0 -204 238 57 30 976 1856 90 0 837 -205 383 18 20 1283 2163 90 0 259 -206 152 460 -10 950 1830 90 250 0 -207 94 479 -10 2470 3350 90 288 0 -208 337 453 -20 2625 3505 90 364 0 -209 135 460 -10 1425 2305 90 253 0 -210 260 104 20 146 1026 90 0 203 -211 337 63 -20 1685 2565 90 295 0 -212 32 247 20 442 1322 90 0 156 -213 394 205 10 150 1030 90 0 75 -214 95 294 10 410 1290 90 0 716 -215 253 241 -10 2475 3355 90 336 0 -216 223 90 -10 2427 3307 90 761 0 -217 64 473 10 924 1804 90 0 145 -218 275 431 10 882 1762 90 0 927 -219 261 84 10 374 1254 90 0 58 -220 176 296 20 870 1750 90 0 872 -221 361 349 10 2656 3536 90 0 89 -222 168 433 -20 2744 3624 90 765 0 -223 394 10 40 809 1689 90 0 706 -224 308 60 20 416 1296 90 0 726 -225 94 456 20 2686 3566 90 0 388 -226 73 484 -30 2085 2965 90 10 0 -227 277 434 -20 1067 1947 90 448 0 -228 119 232 10 1579 2459 90 0 60 -229 78 375 -10 212 1092 90 257 0 -230 366 346 20 288 1168 90 0 303 -231 125 181 -20 2358 3238 90 382 0 -232 69 493 -30 1617 2497 90 760 0 -233 432 80 40 548 1428 90 0 699 -234 72 391 10 1052 1932 90 0 517 -235 85 486 -20 2278 3158 90 664 0 -236 204 371 30 389 1269 90 0 282 -237 173 328 -20 2121 3001 90 432 0 -238 280 423 -30 591 1471 90 826 0 -239 200 327 -10 2790 3670 90 585 0 -240 241 98 -20 2627 3507 90 685 0 -241 96 356 -20 186 1066 90 582 0 -242 332 491 -20 851 1731 90 730 0 -243 81 283 -40 1264 2144 90 565 0 -244 373 22 -20 1952 2832 90 331 0 -245 255 371 40 1849 2729 90 0 35 -246 358 359 20 2279 3159 90 0 939 -247 216 93 -20 2113 2993 90 91 0 -248 73 360 -20 2587 3467 90 763 0 -249 305 212 20 796 1676 90 0 830 -250 151 462 10 1042 1922 90 0 206 -251 47 389 30 742 1622 90 0 33 -252 155 198 30 108 988 90 0 787 -253 152 457 10 857 1737 90 0 209 -254 329 48 -20 1195 2075 90 896 0 -255 88 394 -30 367 1247 90 937 0 -256 153 295 -10 2838 3718 90 399 0 -257 81 373 10 230 1110 90 0 229 -258 163 453 10 333 1213 90 0 809 -259 378 25 -20 2048 2928 90 205 0 -260 401 385 -10 2504 3384 90 16 0 -261 184 340 10 2408 3288 90 0 865 -262 402 362 20 1001 1881 90 0 26 -263 70 482 -20 1991 2871 90 83 0 -264 357 445 -30 2722 3602 90 820 0 -265 212 71 -20 844 1724 90 539 0 -266 231 81 -10 2043 2923 90 788 0 -267 379 208 10 475 1355 90 0 487 -268 236 95 30 1757 2637 90 0 506 -269 386 344 20 879 1759 90 0 501 -270 189 200 10 1629 2509 90 0 414 -271 296 253 -20 474 1354 90 387 0 -272 73 303 10 2037 2917 90 0 470 -273 30 162 -10 1742 2622 90 281 0 -274 230 95 20 1539 2419 90 0 984 -275 57 131 -30 1043 1923 90 963 0 -276 379 245 -10 2413 3293 90 402 0 -277 107 221 -10 174 1054 90 405 0 -278 154 458 -10 765 1645 90 95 0 -279 290 417 10 171 1051 90 0 157 -280 272 243 30 23 903 90 0 163 -281 94 130 10 241 1121 90 0 273 -282 222 356 -30 1248 2128 90 236 0 -283 243 108 -10 2701 3581 90 416 0 -284 224 93 -20 1831 2711 90 936 0 -285 155 242 -40 526 1406 90 94 0 -286 440 302 -10 919 1799 90 298 0 -287 221 102 -20 2498 3378 90 920 0 -288 52 484 10 1321 2201 90 0 207 -289 111 244 -20 1869 2749 90 604 0 -290 132 273 -30 1843 2723 90 587 0 -291 228 186 20 67 947 90 0 917 -292 221 374 30 770 1650 90 0 310 -293 406 286 -10 2784 3664 90 714 0 -294 390 9 30 903 1783 90 0 381 -295 335 52 20 1401 2281 90 0 211 -296 189 368 20 132 1012 90 0 115 -297 397 40 40 2131 3011 90 0 454 -298 408 305 10 167 1047 90 0 286 -299 156 434 -30 2505 3385 90 640 0 -300 180 335 -20 2221 3101 90 804 0 -301 327 483 -30 1738 2618 90 840 0 -302 363 62 -20 2725 3605 90 815 0 -303 375 342 -20 579 1459 90 230 0 -304 16 280 -20 2407 3287 90 737 0 -305 277 431 30 974 1854 90 0 744 -306 110 241 -20 1776 2656 90 666 0 -307 48 385 20 648 1528 90 0 360 -308 152 260 10 98 978 90 0 862 -309 255 120 10 130 1010 90 0 415 -310 214 382 -30 2131 3011 90 292 0 -311 414 384 -30 2302 3182 90 54 0 -312 232 378 -10 1834 2714 90 867 0 -313 80 141 -10 201 1081 90 183 0 -314 188 330 30 153 1033 90 0 80 -315 157 192 -20 2835 3715 90 21 0 -316 101 237 -30 1471 2351 90 987 0 -317 74 360 40 2496 3376 90 0 609 -318 267 260 20 149 1029 90 0 359 -319 378 46 -20 2704 3584 90 404 0 -320 420 311 30 533 1413 90 0 594 -321 384 217 20 1449 2329 90 0 646 -322 418 300 10 251 1131 90 0 4 -323 356 77 -20 1889 2769 90 575 0 -324 253 244 -10 2382 3262 90 153 0 -325 323 258 10 968 1848 90 0 975 -326 293 454 20 2251 3131 90 0 979 -327 231 97 20 2527 3407 90 0 803 -328 316 234 10 2301 3181 90 0 486 -329 207 196 -10 2205 3085 90 528 0 -330 321 228 -20 1840 2720 90 724 0 -331 382 17 20 1374 2254 90 0 244 -332 206 326 -20 2857 3737 90 904 0 -333 198 284 10 62 942 90 0 719 -334 137 186 10 2552 3432 0 0 1006 -335 229 396 -10 2522 3402 90 31 0 -336 268 235 10 1482 2362 90 0 215 -337 95 243 20 399 1279 90 0 59 -338 297 430 20 186 1066 90 0 731 -339 393 368 10 185 1065 90 0 537 -340 66 391 -10 1241 2121 90 915 0 -341 189 339 -10 2503 3383 90 919 0 -342 280 351 30 105 985 90 0 390 -343 241 77 30 865 1745 90 0 663 -344 134 265 -10 2306 3186 90 548 0 -345 420 95 30 230 1110 90 0 518 -346 111 279 30 141 1021 90 0 191 -347 367 358 -50 1773 2653 90 394 0 -348 239 373 -20 1545 2425 90 513 0 -349 384 235 20 2312 3192 90 0 645 -350 284 360 30 115 995 90 0 851 -351 325 75 -20 2010 2890 90 465 0 -352 279 369 10 142 1022 90 0 96 -353 340 449 10 2720 3600 0 0 1003 -354 275 448 -30 2542 3422 90 200 0 -355 447 88 -10 2603 3483 90 190 0 -356 314 279 10 70 950 90 0 514 -357 434 377 10 1985 2865 90 0 702 -358 67 377 -10 1826 2706 90 811 0 -359 370 353 -20 386 1266 90 318 0 -360 57 367 -20 1809 2689 90 307 0 -361 332 486 -10 1552 2432 90 178 0 -362 386 361 -20 1167 2047 90 385 0 -363 55 282 40 197 1077 90 0 928 -364 317 467 20 227 1107 90 0 208 -365 335 54 -10 1493 2373 90 898 0 -366 348 466 -10 2223 3103 90 489 0 -367 132 314 -10 2810 3690 90 868 0 -368 328 216 -30 1552 2432 90 674 0 -369 416 48 10 1520 2400 90 0 621 -370 370 55 10 2526 3406 90 0 759 -371 149 434 -10 1843 2723 90 127 0 -372 466 169 -20 2142 3022 90 772 0 -373 141 267 10 1275 2155 90 0 425 -374 258 350 20 1462 2342 90 0 728 -375 428 312 -20 724 1604 90 110 0 -376 211 188 -20 300 1180 90 970 0 -377 50 343 -10 2394 3274 90 657 0 -378 107 311 -20 2453 3333 90 189 0 -379 178 441 20 204 1084 90 0 888 -380 232 85 -20 1949 2829 90 924 0 -381 391 23 -30 2338 3218 90 294 0 -382 137 227 20 115 995 90 0 231 -383 161 203 20 100 980 90 0 474 -384 363 212 30 2825 3705 90 0 686 -385 384 346 20 971 1851 90 0 362 -386 166 434 40 2605 3485 90 0 177 -387 274 248 20 24 904 90 0 271 -388 156 421 -20 2749 3629 90 225 0 -389 346 211 10 103 983 90 0 662 -390 265 358 -30 992 1872 90 342 0 -391 96 407 20 219 1099 90 0 750 -392 443 70 -10 2104 2984 90 990 0 -393 125 212 10 827 1707 90 0 74 -394 361 337 50 141 1021 90 0 347 -395 322 78 -30 2104 2984 90 701 0 -396 481 156 20 1240 2120 90 0 81 -397 188 293 30 477 1357 90 0 648 -398 76 408 30 660 1540 90 0 892 -399 130 304 10 2813 3693 90 0 256 -400 378 363 -20 1389 2269 90 722 0 -401 185 301 -10 970 1850 90 891 0 -402 385 235 10 2221 3101 90 0 276 -403 261 350 10 1369 2249 90 0 202 -404 389 33 20 2623 3503 90 0 319 -405 151 214 10 151 1031 90 0 277 -406 265 94 10 156 1036 90 0 11 -407 65 164 20 2235 3115 90 0 629 -408 293 81 10 174 1054 90 0 477 -409 363 55 -20 2623 3503 90 655 0 -410 465 176 -10 2239 3119 90 583 0 -411 428 298 30 1294 2174 90 0 852 -412 75 379 -20 2207 3087 90 198 0 -413 404 378 10 497 1377 90 0 105 -414 203 203 -10 2490 3370 90 270 0 -415 259 88 -10 185 1065 90 309 0 -416 362 17 10 1524 2404 90 0 283 -417 320 258 20 204 1084 90 0 901 -418 59 358 20 1998 2878 90 0 841 -419 316 453 -10 213 1093 90 625 0 -420 225 192 20 63 943 90 0 601 -421 140 206 -30 118 998 90 554 0 -422 83 151 -10 194 1074 90 550 0 -423 366 196 10 127 1007 90 0 988 -424 108 245 20 1370 2250 90 0 25 -425 129 267 -10 2120 3000 90 373 0 -426 57 379 20 547 1427 90 0 644 -427 329 56 20 1097 1977 90 0 989 -428 213 363 30 874 1754 90 0 126 -429 76 391 -20 958 1838 90 659 0 -430 330 259 30 871 1751 90 0 591 -431 136 217 30 538 1418 90 0 696 -432 165 333 20 2021 2901 90 0 237 -433 160 431 -20 2742 3622 90 711 0 -434 338 489 30 948 1828 90 0 672 -435 335 64 10 1593 2473 90 0 789 -436 412 361 -20 1388 2268 90 669 0 -437 259 90 30 277 1157 90 0 843 -438 265 77 20 472 1352 90 0 773 -439 460 173 20 2527 3407 90 0 139 -440 83 301 20 1937 2817 90 0 100 -441 201 331 20 347 1227 90 0 959 -442 118 214 20 136 1016 90 0 176 -443 395 30 -30 2436 3316 90 510 0 -444 125 444 -20 1637 2517 90 590 0 -445 283 248 -10 33 913 90 921 0 -446 391 334 -10 687 1567 90 509 0 -447 212 215 -10 2800 3680 90 886 0 -448 276 428 20 688 1568 90 0 227 -449 96 152 20 182 1062 90 0 985 -450 425 85 10 240 1120 90 0 693 -451 336 7 -10 1224 2104 90 876 0 -452 196 219 -20 2694 3574 90 683 0 -453 210 94 20 637 1517 90 0 926 -454 310 81 -40 2486 3366 90 297 0 -455 341 37 20 231 1111 90 0 515 -456 344 478 20 1936 2816 90 0 43 -457 406 37 40 264 1144 90 0 864 -458 69 346 -10 2602 3482 90 51 0 -459 80 376 40 211 1091 90 0 502 -460 314 449 -30 209 1089 90 929 0 -461 209 201 30 2393 3273 90 0 637 -462 88 379 20 329 1209 90 0 822 -463 352 500 30 1145 2025 90 0 549 -464 65 357 10 2094 2974 90 0 82 -465 345 15 20 1122 2002 90 0 351 -466 125 245 20 2642 3522 90 0 476 -467 52 369 -20 1713 2593 90 71 0 -468 449 140 -10 370 1250 90 1000 0 -469 430 310 -30 816 1696 90 993 0 -470 109 325 -10 2648 3528 90 272 0 -471 446 139 20 277 1157 90 0 131 -472 229 214 20 41 921 90 0 505 -473 197 301 10 73 953 90 0 816 -474 146 245 -20 336 1216 90 383 0 -475 401 368 20 304 1184 90 0 523 -476 116 259 -20 2253 3133 90 466 0 -477 374 55 -10 2432 3312 90 408 0 -478 249 251 -20 2676 3556 90 114 0 -479 325 490 10 563 1443 90 0 133 -480 59 159 10 743 1623 90 0 493 -481 186 177 -20 1001 1881 90 971 0 -482 319 229 -20 1932 2812 90 639 0 -483 26 269 -10 645 1525 90 622 0 -484 53 139 30 854 1734 90 0 721 -485 471 154 -30 959 1839 90 824 0 -486 301 247 -10 2878 3758 90 328 0 -487 388 220 -10 1063 1943 90 267 0 -488 235 81 20 1090 1970 90 0 1 -489 347 479 10 2029 2909 90 0 366 -490 367 59 10 2721 3601 90 0 899 -491 261 370 -10 709 1589 90 746 0 -492 441 287 40 2555 3435 90 0 46 -493 44 153 -10 1635 2515 90 480 0 -494 263 351 -30 1185 2065 90 187 0 -495 444 157 10 215 1095 90 0 661 -496 374 17 10 1565 2445 90 0 952 -497 448 295 -20 2364 3244 90 966 0 -498 446 297 10 1872 2752 90 0 624 -499 347 40 30 231 1111 90 0 678 -500 318 493 -30 465 1345 90 9 0 -501 399 352 -20 900 1780 90 269 0 -502 51 364 -40 1527 2407 90 459 0 -503 250 217 -20 2174 3054 90 19 0 -504 107 225 30 145 1025 90 0 599 -505 173 208 -20 1521 2401 90 472 0 -506 204 189 -30 2018 2898 90 268 0 -507 399 379 -10 2600 3480 90 541 0 -508 79 346 -10 2748 3628 90 977 0 -509 360 338 10 140 1020 90 0 446 -510 390 17 30 1093 1973 90 0 443 -511 207 337 20 445 1325 90 0 28 -512 409 361 30 697 1577 90 0 79 -513 206 377 20 199 1079 90 0 348 -514 429 294 -10 1583 2463 90 356 0 -515 375 31 -20 1825 2705 90 455 0 -516 426 80 20 362 1242 90 0 885 -517 74 374 -10 2302 3182 90 234 0 -518 408 20 -30 279 1159 90 345 0 -519 239 369 -10 1451 2331 90 794 0 -520 420 308 30 349 1229 90 0 667 -521 254 357 20 1652 2532 90 0 807 -522 53 297 -10 2742 3622 90 710 0 -523 434 382 -20 1890 2770 90 475 0 -524 204 171 20 598 1478 90 0 736 -525 173 169 -10 1198 2078 90 623 0 -526 190 332 -20 246 1126 90 713 0 -527 274 231 -10 1766 2646 90 533 0 -528 207 194 10 2113 2993 90 0 329 -529 315 232 -20 2393 3273 90 739 0 -530 425 87 20 239 1119 90 0 715 -531 312 64 20 222 1102 90 0 738 -532 129 244 -20 2548 3428 90 571 0 -533 278 230 10 1106 1986 90 0 527 -534 351 75 -20 1794 2674 90 700 0 -535 185 293 -20 570 1450 90 540 0 -536 364 364 -10 1870 2750 90 106 0 -537 432 369 -10 1787 2667 90 339 0 -538 128 249 20 983 1863 90 0 949 -539 221 179 20 76 956 90 0 265 -540 194 296 20 290 1170 90 0 535 -541 413 350 10 1197 2077 90 0 507 -542 214 372 10 583 1463 90 0 61 -543 379 229 10 685 1565 90 0 570 -544 91 298 10 1653 2533 90 0 618 -545 226 120 -20 132 1012 90 172 0 -546 344 46 -40 1300 2180 90 143 0 -547 238 84 10 1274 2154 90 0 771 -548 138 276 10 1555 2435 90 0 344 -549 346 487 -30 1448 2328 90 463 0 -550 95 160 10 179 1059 90 0 422 -551 103 266 30 702 1582 90 0 880 -552 98 286 -10 977 1857 90 116 0 -553 77 172 -20 2616 3496 90 768 0 -554 147 199 30 114 994 90 0 421 -555 210 98 -10 361 1241 90 999 0 -556 428 292 10 1491 2371 90 0 85 -557 121 236 10 1674 2554 90 0 642 -558 336 479 20 1838 2718 90 0 887 -559 203 369 10 481 1361 90 0 23 -560 296 232 -20 908 1788 90 690 0 -561 87 369 10 201 1081 90 0 802 -562 247 88 30 1564 2444 90 0 578 -563 104 246 10 993 1873 90 0 597 -564 67 302 -10 2133 3013 90 193 0 -565 114 296 40 143 1023 90 0 243 -566 394 356 30 178 1058 90 0 825 -567 192 306 20 1163 2043 90 0 194 -568 16 285 30 2132 3012 90 0 154 -569 419 310 10 442 1322 90 0 995 -570 389 221 -10 972 1852 90 543 0 -571 129 264 20 2401 3281 90 0 532 -572 172 483 -10 544 1424 90 776 0 -573 325 251 -30 1065 1945 90 743 0 -574 151 436 10 2026 2906 90 0 780 -575 263 91 20 159 1039 90 0 323 -576 401 15 -20 325 1205 90 957 0 -577 253 382 -30 2730 3610 90 687 0 -578 247 89 -30 1655 2535 90 562 0 -579 283 229 30 1011 1891 90 0 2 -580 366 341 20 193 1073 90 0 697 -581 392 213 20 1732 2612 90 0 934 -582 167 304 20 99 979 90 0 241 -583 477 154 10 1146 2026 90 0 410 -584 234 383 10 1739 2619 90 0 47 -585 199 327 10 2699 3579 90 0 239 -586 140 220 30 443 1323 90 0 983 -587 144 266 30 107 987 90 0 290 -588 432 105 10 2712 3592 0 0 1002 -589 368 325 30 139 1019 90 0 130 -590 202 386 20 144 1024 90 0 444 -591 325 246 -30 1160 2040 90 430 0 -592 430 86 20 2406 3286 90 0 13 -593 200 195 20 1825 2705 90 0 168 -594 440 295 -30 1776 2656 90 320 0 -595 77 287 10 1545 2425 90 0 790 -596 187 362 -20 1426 2306 90 940 0 -597 131 207 -10 639 1519 90 563 0 -598 405 5 -10 426 1306 90 650 0 -599 125 226 -30 1029 1909 90 504 0 -600 254 335 -30 2653 3533 90 900 0 -601 212 168 -20 500 1380 90 420 0 -602 281 279 20 354 1234 90 0 844 -603 326 241 20 1255 2135 90 0 174 -604 152 241 20 433 1313 90 0 289 -605 71 139 30 447 1327 90 0 151 -606 46 277 10 229 1109 90 0 619 -607 393 13 -30 998 1878 90 107 0 -608 87 454 40 522 1402 90 0 76 -609 86 359 -40 2748 3628 90 317 0 -610 220 192 20 65 945 90 0 635 -611 426 279 -30 2752 3632 90 835 0 -612 131 267 10 2212 3092 90 0 101 -613 200 297 30 193 1073 90 0 911 -614 299 442 10 1544 2424 90 0 998 -615 265 218 -20 2069 2949 90 68 0 -616 398 231 -40 1936 2816 90 654 0 -617 312 74 -30 2389 3269 90 704 0 -618 99 307 -10 2354 3234 90 544 0 -619 22 283 -10 953 1833 90 606 0 -620 67 160 10 2330 3210 90 0 933 -621 390 42 -10 2228 3108 90 369 0 -622 44 279 10 208 1088 90 0 483 -623 200 182 10 793 1673 90 0 525 -624 458 303 -10 2171 3051 90 498 0 -625 298 438 10 207 1087 90 0 419 -626 62 301 20 2750 3630 0 0 1005 -627 112 251 10 1273 2153 90 0 930 -628 184 354 30 1616 2496 90 0 751 -629 140 180 -20 2649 3529 90 407 0 -630 269 428 20 785 1665 90 0 42 -631 123 206 -20 1525 2405 90 104 0 -632 36 284 -20 1338 2218 90 138 0 -633 272 233 10 1387 2267 0 0 1008 -634 320 231 20 2024 2904 90 0 902 -635 211 180 -20 398 1278 90 610 0 -636 114 169 -10 2252 3132 90 875 0 -637 245 239 -30 2573 3453 90 461 0 -638 117 204 -10 1338 2218 90 108 0 -639 316 254 20 390 1270 90 0 482 -640 169 443 30 209 1089 90 0 299 -641 212 96 10 544 1424 90 0 808 -642 119 285 -10 2703 3583 90 557 0 -643 71 163 -20 2425 3305 90 29 0 -644 78 361 -20 2740 3620 90 426 0 -645 354 219 -20 2836 3716 90 349 0 -646 389 233 -20 2127 3007 90 321 0 -647 90 391 10 213 1093 90 0 905 -648 209 307 -30 1451 2331 90 397 0 -649 363 351 -10 2563 3443 90 679 0 -650 405 47 10 255 1135 90 0 598 -651 278 329 10 83 963 90 0 764 -652 261 371 -30 618 1498 90 827 0 -653 302 470 -20 1867 2747 90 782 0 -654 373 205 40 130 1010 90 0 616 -655 381 20 20 1468 2348 90 0 409 -656 90 277 30 302 1182 90 0 795 -657 46 341 10 2299 3179 90 0 377 -658 50 138 -10 1529 2409 90 677 0 -659 61 437 20 265 1145 90 0 429 -660 331 252 -20 774 1654 90 967 0 -661 440 81 -10 2305 3185 90 495 0 -662 384 206 -10 379 1259 90 389 0 -663 232 87 -30 1144 2024 90 343 0 -664 59 471 20 1124 2004 90 0 235 -665 174 304 20 93 973 90 0 125 -666 106 248 20 1086 1966 90 0 306 -667 410 287 -30 2780 3660 90 520 0 -668 206 313 20 1731 2611 90 0 882 -669 412 367 20 600 1480 90 0 436 -670 412 300 20 169 1049 90 0 870 -671 206 295 -10 2449 3329 90 948 0 -672 329 459 -30 2525 3405 90 434 0 -673 177 436 20 199 1079 90 0 856 -674 266 264 30 243 1123 90 0 368 -675 308 235 -10 2775 3655 90 84 0 -676 260 330 -10 2843 3723 90 146 0 -677 49 136 10 1345 2225 90 0 658 -678 356 28 -30 640 1520 90 499 0 -679 428 384 10 2084 2964 90 0 649 -680 220 362 20 971 1851 90 0 878 -681 437 61 -20 1728 2608 90 953 0 -682 365 360 -10 1680 2560 90 148 0 -683 107 168 20 2155 3035 90 0 452 -684 220 177 20 101 981 90 0 968 -685 347 21 20 1026 1906 90 0 240 -686 293 245 -30 2901 3781 90 384 0 -687 267 436 30 2647 3527 90 0 577 -688 216 96 -20 2206 3086 90 140 0 -689 383 351 20 167 1047 90 0 195 -690 289 240 20 579 1459 90 0 560 -691 129 185 -20 2454 3334 90 893 0 -692 291 450 10 2345 3225 90 0 834 -693 387 21 -10 1188 2068 90 450 0 -694 116 255 20 879 1759 90 0 994 -695 50 368 30 1621 2501 90 0 698 -696 121 249 -30 2061 2941 90 431 0 -697 404 346 -20 803 1683 90 580 0 -698 77 360 -30 2739 3619 90 695 0 -699 447 102 -40 2698 3578 90 233 0 -700 366 16 20 1618 2498 90 0 534 -701 348 16 30 1420 2300 90 0 395 -702 353 346 -10 2754 3634 90 357 0 -703 54 485 30 1413 2293 90 0 799 -704 319 77 30 2198 3078 90 0 617 -705 83 282 10 1172 2052 90 0 906 -706 384 24 -40 2241 3121 90 223 0 -707 52 469 20 1027 1907 90 0 160 -708 199 200 -30 2585 3465 90 40 0 -709 273 234 -10 1296 2176 90 942 0 -710 16 281 10 2316 3196 90 0 522 -711 151 442 20 2122 3002 90 0 433 -712 223 114 20 138 1018 90 0 188 -713 191 308 20 82 962 90 0 526 -714 448 297 10 2272 3152 90 0 293 -715 386 28 -20 2147 3027 90 530 0 -716 106 295 -10 693 1573 90 214 0 -717 387 224 30 1157 2037 90 0 69 -718 96 377 10 199 1079 90 0 753 -719 86 361 -10 2746 3626 90 333 0 -720 211 107 10 171 1051 90 0 814 -721 43 125 -30 1243 2123 90 484 0 -722 369 351 20 478 1358 90 0 400 -723 388 228 10 875 1755 90 0 173 -724 325 228 20 1450 2330 90 0 330 -725 490 159 -40 1537 2417 90 791 0 -726 420 78 -20 1038 1918 90 224 0 -727 396 4 10 713 1593 90 0 849 -728 222 317 -20 2055 2935 90 374 0 -729 389 198 -10 183 1063 90 98 0 -730 322 454 20 216 1096 90 0 242 -731 241 391 -20 2625 3505 90 338 0 -732 256 117 -20 2807 3687 90 910 0 -733 298 255 10 48 928 90 0 748 -734 74 363 -20 2403 3283 90 24 0 -735 345 496 20 1047 1927 90 0 120 -736 167 169 -20 1294 2174 90 524 0 -737 23 306 20 1822 2702 90 0 304 -738 317 62 -20 317 1197 90 531 0 -739 319 257 20 296 1176 90 0 529 -740 129 255 10 2356 3236 90 0 150 -741 59 377 20 1728 2608 0 0 1001 -742 138 272 -40 1461 2341 90 923 0 -743 317 251 30 580 1460 90 0 573 -744 279 436 -30 1159 2039 90 305 0 -745 371 207 10 128 1008 90 0 813 -746 263 372 10 526 1406 90 0 491 -747 50 347 -20 2202 3082 90 786 0 -748 275 236 -10 1203 2083 90 733 0 -749 334 47 20 219 1099 90 0 179 -750 50 383 -20 1529 2409 90 391 0 -751 170 338 -30 1924 2804 90 628 0 -752 245 109 -20 2729 3609 90 63 0 -753 69 475 -10 829 1709 90 718 0 -754 54 372 20 1631 2511 90 0 152 -755 198 334 -20 1843 2723 90 797 0 -756 380 228 -10 777 1657 90 136 0 -757 425 118 -10 219 1099 90 155 0 -758 80 398 10 466 1346 90 0 162 -759 366 57 -10 2716 3596 90 370 0 -760 67 463 30 280 1160 90 0 232 -761 226 86 10 2235 3115 90 0 216 -762 59 480 -20 1223 2103 90 801 0 -763 40 378 20 1026 1906 90 0 248 -764 250 367 -10 1753 2633 90 651 0 -765 157 436 20 2413 3293 90 0 222 -766 463 161 30 2043 2923 90 0 954 -767 266 250 10 49 929 90 0 36 -768 51 162 20 1853 2733 90 0 553 -769 194 353 -30 1011 1891 90 829 0 -770 383 41 -20 2325 3205 90 44 0 -771 247 82 -10 1468 2348 90 547 0 -772 457 142 20 469 1349 90 0 372 -773 244 94 -20 1435 2315 90 438 0 -774 441 63 -20 1914 2794 90 147 0 -775 244 371 20 1950 2830 90 0 958 -776 174 444 10 208 1088 90 0 572 -777 94 247 30 493 1373 90 0 166 -778 320 225 20 1654 2534 90 0 976 -779 316 80 -20 2292 3172 90 52 0 -780 155 447 -10 2312 3192 90 574 0 -781 211 308 -10 1543 2423 90 997 0 -782 297 442 20 1452 2332 90 0 653 -783 200 342 10 637 1517 90 0 974 -784 44 325 20 2725 3605 90 0 112 -785 438 60 -20 1820 2700 90 134 0 -786 80 374 20 210 1090 90 0 747 -787 59 163 -30 1951 2831 90 252 0 -788 236 92 10 1850 2730 90 0 266 -789 414 66 -10 1232 2112 90 435 0 -790 34 279 -10 1146 2026 90 595 0 -791 475 156 40 1053 1933 90 0 725 -792 404 310 20 165 1045 90 0 931 -793 367 239 -20 2796 3676 90 946 0 -794 210 359 10 1208 2088 90 0 519 -795 133 278 -30 1650 2530 90 656 0 -796 446 169 -10 2732 3612 90 48 0 -797 188 356 20 1522 2402 90 0 755 -798 312 252 20 485 1365 90 0 56 -799 69 485 -30 1898 2778 90 703 0 -800 413 353 10 1290 2170 90 0 879 -801 54 446 20 277 1157 90 0 762 -802 56 357 -10 1428 2308 90 561 0 -803 230 105 -20 2598 3478 90 327 0 -804 196 302 20 74 954 90 0 300 -805 391 373 10 2700 3580 90 0 916 -806 101 295 30 598 1478 90 0 996 -807 234 350 -20 2257 3137 90 521 0 -808 215 108 -10 2400 3280 90 641 0 -809 142 457 -10 1233 2113 90 258 0 -810 283 425 -10 498 1378 90 981 0 -811 77 397 10 559 1439 90 0 358 -812 105 317 10 2549 3429 90 0 925 -813 382 213 -10 1355 2235 90 745 0 -814 213 76 -10 940 1820 90 720 0 -815 417 56 20 1422 2302 90 0 302 -816 183 340 -10 2317 3197 90 473 0 -817 123 242 20 2817 3697 90 0 842 -818 475 136 20 669 1549 90 0 144 -819 377 246 -20 2694 3574 90 980 0 -820 310 484 30 266 1146 90 0 264 -821 47 280 -20 205 1085 90 833 0 -822 57 456 -20 282 1162 90 462 0 -823 313 266 20 65 945 90 0 128 -824 475 145 30 768 1648 90 0 485 -825 400 376 -30 402 1282 90 566 0 -826 290 416 30 170 1050 90 0 238 -827 277 369 30 122 1002 90 0 652 -828 91 303 -10 1839 2719 90 50 0 -829 194 301 30 75 955 90 0 769 -830 254 238 -20 2286 3166 90 249 0 -831 215 91 -20 1930 2810 90 965 0 -832 500 162 -10 1728 2608 90 70 0 -833 56 287 20 197 1077 90 0 821 -834 289 452 -10 2438 3318 90 692 0 -835 378 326 30 148 1028 90 0 611 -836 197 350 -10 826 1706 90 964 0 -837 243 88 -30 1371 2251 90 204 0 -838 250 72 20 765 1645 90 0 869 -839 101 290 20 790 1670 90 0 3 -840 351 480 30 1350 2230 90 0 301 -841 67 357 -20 2684 3564 90 418 0 -842 128 240 -20 2822 3702 90 817 0 -843 253 81 -30 666 1546 90 437 0 -844 307 227 -20 2493 3373 90 602 0 -845 233 441 -20 2753 3633 90 847 0 -846 311 47 10 710 1590 90 0 124 -847 292 456 20 2158 3038 90 0 845 -848 183 187 20 1408 2288 90 0 103 -849 392 31 -10 2530 3410 90 727 0 -850 103 251 10 898 1778 90 0 122 -851 300 443 -30 1636 2516 90 350 0 -852 420 295 -30 1392 2272 90 411 0 -853 427 64 -30 932 1812 90 49 0 -854 372 354 -20 1581 2461 90 159 0 -855 101 263 -20 796 1676 90 881 0 -856 141 454 -20 1326 2206 90 673 0 -857 146 461 -20 1137 2017 90 197 0 -858 298 430 30 186 1066 90 0 969 -859 148 270 10 103 983 90 0 37 -860 76 287 20 1454 2334 90 0 186 -861 308 55 30 511 1391 90 0 72 -862 143 257 -10 141 1021 90 308 0 -863 393 2 30 619 1499 90 0 912 -864 385 28 -40 1926 2806 90 457 0 -865 204 291 -10 2543 3423 90 261 0 -866 132 272 30 1934 2814 90 0 90 -867 206 379 10 136 1016 90 0 312 -868 69 383 10 2110 2990 90 0 367 -869 245 96 -20 1343 2223 90 838 0 -870 431 301 -20 1108 1988 90 670 0 -871 448 94 -20 2692 3572 90 32 0 -872 199 305 -20 1260 2140 90 220 0 -873 95 356 -20 2757 3637 90 947 0 -874 328 498 20 753 1633 90 0 175 -875 108 222 10 1137 2017 90 0 636 -876 341 26 10 928 1808 90 0 451 -877 63 454 10 276 1156 90 0 956 -878 222 357 -20 1157 2037 90 680 0 -879 416 364 -10 1578 2458 90 800 0 -880 127 278 -30 1746 2626 90 551 0 -881 140 252 20 237 1117 90 0 855 -882 218 298 -20 2346 3226 90 668 0 -883 432 87 10 2498 3378 90 0 66 -884 216 300 -40 2253 3133 90 973 0 -885 438 72 -20 738 1618 90 516 0 -886 184 178 10 1094 1974 90 0 447 -887 345 468 -20 2317 3197 90 558 0 -888 150 435 -20 1935 2815 90 379 0 -889 395 365 30 185 1065 90 0 132 -890 208 371 20 295 1175 90 0 99 -891 190 292 10 385 1265 90 0 401 -892 78 479 -30 729 1609 90 398 0 -893 104 198 20 1943 2823 90 0 691 -894 346 13 -10 1326 2206 90 932 0 -895 47 388 20 833 1713 90 0 167 -896 315 57 20 811 1691 90 0 254 -897 110 199 -20 1847 2727 90 135 0 -898 323 60 10 910 1790 90 0 365 -899 308 82 -10 2579 3459 90 490 0 -900 216 374 30 675 1555 90 0 600 -901 326 253 -20 679 1559 90 417 0 -902 308 232 -20 2588 3468 90 634 0 -903 118 223 10 134 1014 90 0 955 -904 149 444 20 2215 3095 90 0 332 -905 95 395 -10 212 1092 90 647 0 -906 117 319 -10 2748 3628 90 705 0 -907 262 352 10 1276 2156 90 0 962 -908 468 135 10 572 1452 90 0 192 -909 351 31 -20 453 1333 90 201 0 -910 361 15 20 1758 2638 90 0 732 -911 195 300 -30 98 978 90 613 0 -912 397 27 -30 2028 2908 90 863 0 -913 179 311 10 93 973 90 0 137 -914 77 133 10 349 1229 90 0 17 -915 66 397 10 765 1645 90 0 340 -916 366 352 -10 2470 3350 90 805 0 -917 221 87 -20 1043 1923 90 291 0 -918 347 23 -20 740 1620 90 88 0 -919 176 358 10 1715 2595 90 0 341 -920 229 78 20 2136 3016 90 0 287 -921 272 246 10 22 902 90 0 445 -922 293 67 20 187 1067 0 0 1004 -923 140 265 40 1183 2063 90 0 742 -924 238 83 20 1183 2063 90 0 380 -925 136 296 -10 2822 3702 90 812 0 -926 218 98 -20 1642 2522 90 453 0 -927 290 440 -10 1261 2141 90 218 0 -928 29 302 -40 1725 2605 90 363 0 -929 290 425 30 179 1059 90 0 460 -930 124 247 -10 2735 3615 90 627 0 -931 442 287 -20 2464 3344 90 792 0 -932 294 64 10 191 1071 90 0 894 -933 74 165 -10 2518 3398 90 620 0 -934 382 245 -20 2599 3479 90 581 0 -935 405 24 10 274 1154 90 0 165 -936 211 97 20 452 1332 90 0 284 -937 88 390 30 273 1153 90 0 255 -938 37 295 20 1531 2411 90 0 950 -939 359 371 -20 2062 2942 90 246 0 -940 186 372 20 1325 2205 90 0 596 -941 116 446 -20 1538 2418 90 951 0 -942 293 249 10 43 923 90 0 709 -943 83 228 20 289 1169 90 0 27 -944 96 269 -10 605 1485 90 41 0 -945 179 284 30 671 1551 90 0 142 -946 368 219 20 580 1460 90 0 793 -947 66 359 20 2731 3611 90 0 873 -948 189 338 10 2594 3474 90 0 671 -949 163 277 -20 2853 3733 90 538 0 -950 5 296 -20 2026 2906 90 938 0 -951 152 478 20 655 1535 90 0 941 -952 366 34 -10 1726 2606 90 496 0 -953 429 80 20 455 1335 90 0 681 -954 464 178 -30 2331 3211 90 766 0 -955 138 196 -10 1633 2513 90 903 0 -956 87 481 -10 2373 3253 90 877 0 -957 425 99 20 231 1111 90 0 576 -958 241 362 -20 2050 2930 90 775 0 -959 207 289 -20 2637 3517 90 441 0 -960 264 365 10 895 1775 90 0 20 -961 102 289 -30 882 1762 90 97 0 -962 233 346 -10 2351 3231 90 907 0 -963 78 141 30 203 1083 90 0 275 -964 196 348 10 734 1614 90 0 836 -965 216 92 20 2022 2902 90 0 831 -966 444 309 20 2065 2945 90 0 497 -967 313 263 20 106 986 90 0 660 -968 211 198 -20 2300 3180 90 684 0 -969 314 436 -30 1741 2621 90 858 0 -970 217 189 20 204 1084 90 0 376 -971 197 178 20 698 1578 90 0 481 -972 60 497 10 1517 2397 90 0 45 -973 206 312 40 1640 2520 90 0 884 -974 197 351 -10 917 1797 90 783 0 -975 305 233 -10 2681 3561 90 325 0 -976 297 250 -20 2897 3777 90 778 0 -977 71 348 10 2695 3575 90 0 508 -978 11 269 10 750 1630 90 0 92 -979 247 447 -20 2747 3627 90 326 0 -980 386 213 20 1636 2516 90 0 819 -981 292 434 10 395 1275 90 0 810 -982 436 301 20 1013 1893 90 0 123 -983 145 221 -30 348 1228 90 586 0 -984 224 96 -20 1738 2618 90 274 0 -985 59 128 -20 1136 2016 90 449 0 -986 489 150 50 1438 2318 90 0 30 -987 152 225 30 634 1514 90 0 316 -988 426 85 -10 267 1147 90 423 0 -989 415 73 -20 1135 2015 90 427 0 -990 440 70 10 2011 2891 90 0 392 -991 320 476 30 236 1116 90 0 117 -992 57 132 -20 952 1832 90 121 0 -993 405 311 30 166 1046 90 0 469 -994 109 250 -20 1180 2060 90 694 0 -995 428 314 -10 632 1512 90 569 0 -996 40 288 -30 1433 2313 90 806 0 -997 175 282 10 766 1646 90 0 781 -998 298 456 -10 1972 2852 90 614 0 -999 208 101 10 267 1147 90 0 555 -1000 342 52 10 218 1098 90 0 468 -1001 59 377 -20 1728 2608 90 741 0 -1002 432 105 -10 2712 3592 90 588 0 -1003 340 449 -10 2720 3600 90 353 0 -1004 293 67 -20 187 1067 90 922 0 -1005 62 301 -20 2750 3630 90 626 0 -1006 137 186 -10 2552 3432 90 334 0 -1007 358 365 -30 1966 2846 90 169 0 -1008 272 233 -10 1387 2267 90 633 0 diff --git a/jsprit-instances/instances/lilim/1000/LC2102.txt b/jsprit-instances/instances/lilim/1000/LC2102.txt deleted file mode 100644 index 16b34b088..000000000 --- a/jsprit-instances/instances/lilim/1000/LC2102.txt +++ /dev/null @@ -1,1018 +0,0 @@ -250 700 1 -0 250 250 0 0 3914 0 0 0 -1 212 101 -30 2662 2822 90 926 0 -2 266 231 -10 1936 2096 90 633 0 -3 89 284 -20 1436 1596 90 716 0 -4 430 298 -30 0 3638 90 469 0 -5 435 77 20 1002 1162 90 0 392 -6 25 293 20 2964 3124 90 0 784 -7 43 269 30 687 847 90 0 996 -8 216 117 -10 0 3687 90 688 0 -9 294 437 -30 661 821 90 929 0 -10 79 479 30 998 1158 90 0 160 -11 365 18 -10 2213 2373 90 898 0 -12 225 125 20 127 287 90 0 172 -13 448 103 30 0 3578 90 0 699 -14 143 266 10 402 562 90 0 538 -15 252 347 10 2911 3071 0 0 1012 -16 403 390 10 2560 2720 90 0 602 -17 67 153 20 912 1072 90 0 721 -18 90 168 20 3080 3240 90 0 893 -19 302 235 20 1043 1203 90 0 503 -20 259 355 20 1917 2077 90 0 99 -21 149 183 20 3108 3268 0 0 1011 -22 19 297 20 2282 2442 90 0 522 -23 209 358 30 1477 1637 90 0 797 -24 56 388 -20 1791 1951 90 162 0 -25 115 269 10 2956 3116 90 0 949 -26 377 356 10 0 3659 90 0 169 -27 113 229 30 1123 1283 90 0 612 -28 205 343 20 902 1062 90 0 974 -29 48 137 20 0 3593 90 0 493 -30 467 157 -20 2307 2467 90 832 0 -31 220 394 10 2783 2943 90 0 521 -32 436 54 -20 1991 2151 90 953 0 -33 54 357 10 1696 1856 90 0 502 -34 456 154 -10 0 3597 90 495 0 -35 216 307 20 2516 2676 90 0 882 -36 280 224 -30 2226 2386 90 579 0 -37 90 270 10 565 725 90 0 961 -38 166 452 20 599 759 90 0 755 -39 17 283 -20 2584 2744 90 833 0 -40 196 192 30 0 3745 90 0 329 -41 94 275 10 469 629 90 0 116 -42 292 445 10 1716 1876 90 0 200 -43 329 471 -20 2783 2943 90 366 0 -44 326 57 20 1364 1524 90 0 704 -45 95 466 -20 0 3559 90 83 0 -46 429 282 20 3018 3178 90 0 611 -47 229 364 -10 2512 2672 90 542 0 -48 457 160 10 2991 3151 90 0 66 -49 452 154 30 332 492 90 0 396 -50 113 289 10 0 3682 0 0 1008 -51 67 387 10 2376 2536 90 0 152 -52 368 17 -20 2021 2181 90 465 0 -53 341 367 -10 2530 2690 90 130 0 -54 410 364 30 1842 2002 90 0 79 -55 80 281 -10 0 3652 90 859 0 -56 321 224 30 2106 2266 90 0 330 -57 73 395 -20 1223 1383 90 462 0 -58 259 76 -20 0 3650 90 909 0 -59 121 203 10 1792 1952 90 0 955 -60 118 256 10 2519 2679 90 0 571 -61 236 361 -20 1713 1873 90 890 0 -62 78 371 20 220 380 90 0 459 -63 301 53 -20 969 1129 90 531 0 -64 382 197 20 640 800 90 0 69 -65 491 160 20 1989 2149 90 0 954 -66 453 164 -10 0 3604 90 48 0 -67 277 371 30 595 755 90 0 187 -68 272 212 -20 2330 2490 90 748 0 -69 386 218 -20 1901 2061 90 64 0 -70 353 32 -10 905 1065 90 164 0 -71 59 389 -30 1698 1858 90 429 0 -72 414 62 -30 0 3575 90 345 0 -73 278 357 10 212 372 90 0 491 -74 101 179 -30 2412 2572 90 421 0 -75 396 234 20 2390 2550 90 0 402 -76 74 390 -10 797 957 90 718 0 -77 332 55 30 211 371 90 0 294 -78 272 365 30 693 853 90 0 907 -79 418 355 -30 2037 2197 90 54 0 -80 216 380 -20 2300 2460 90 390 0 -81 440 173 -20 3282 3442 90 439 0 -82 89 358 20 0 3631 90 0 873 -83 66 491 20 0 3521 90 0 45 -84 317 234 -20 2479 2639 90 573 0 -85 439 297 -10 2043 2203 90 870 0 -86 394 367 30 380 540 90 0 311 -87 58 364 10 2262 2422 90 0 377 -88 290 75 -10 191 351 90 309 0 -89 346 344 -10 3212 3372 90 106 0 -90 131 269 -20 0 3704 90 191 0 -91 236 96 -30 1604 1764 90 204 0 -92 29 282 -20 1410 1570 90 156 0 -93 418 385 -20 2757 2917 90 669 0 -94 148 225 40 613 773 90 0 897 -95 166 464 10 794 954 90 0 857 -96 266 373 10 793 953 90 0 403 -97 201 273 30 54 214 90 0 811 -98 255 245 10 7 167 90 0 654 -99 220 379 -20 0 3692 90 20 0 -100 85 317 -20 0 3646 90 440 0 -101 125 264 -10 2855 3015 90 108 0 -102 131 253 -20 2809 2969 90 344 0 -103 184 188 10 1260 1420 90 0 414 -104 128 209 -30 1093 1253 90 554 0 -105 373 364 -30 3170 3330 90 523 0 -106 389 342 10 1145 1305 90 0 89 -107 420 20 -10 575 735 90 650 0 -108 132 218 10 136 296 90 0 101 -109 32 256 -40 901 1061 90 363 0 -110 406 339 20 295 455 90 0 286 -111 191 397 -20 263 423 90 170 0 -112 72 341 10 0 3625 90 0 719 -113 35 308 -30 3072 3232 90 154 0 -114 169 360 -10 2172 2332 90 919 0 -115 222 381 -10 0 3691 90 184 0 -116 96 292 -10 862 1022 90 41 0 -117 311 496 -30 0 3571 90 820 0 -118 220 384 10 2683 2843 90 0 157 -119 259 243 20 22 182 90 0 723 -120 349 476 10 2483 2643 90 0 672 -121 63 159 -30 1009 1169 90 313 0 -122 112 243 -10 2321 2481 90 228 0 -123 448 302 -10 2327 2487 90 556 0 -124 343 27 -20 0 3583 90 749 0 -125 67 485 40 2166 2326 90 0 799 -126 220 359 30 1424 1584 90 0 519 -127 147 435 10 2111 2271 90 0 780 -128 317 235 20 2570 2730 90 0 529 -129 43 355 20 1595 1755 90 0 734 -130 368 340 10 461 621 90 0 53 -131 450 72 -30 2561 2721 90 785 0 -132 400 364 -30 570 730 90 889 0 -133 355 480 -20 1616 1776 90 419 0 -134 450 153 20 533 693 90 0 818 -135 126 188 20 2098 2258 90 0 683 -136 380 223 -10 1614 1774 90 570 0 -137 71 453 20 685 845 90 0 707 -138 54 287 20 209 369 90 0 565 -139 420 168 -10 3393 3553 90 796 0 -140 219 89 -30 2692 2852 90 771 0 -141 189 327 10 420 580 90 0 341 -142 191 309 -20 1430 1590 90 401 0 -143 301 67 40 480 640 90 0 427 -144 484 161 10 1696 1856 90 0 725 -145 77 483 20 0 3534 90 0 432 -146 241 375 -10 1998 2158 90 651 0 -147 428 64 -40 1201 1361 90 233 0 -148 403 361 10 1452 1612 90 0 879 -149 257 336 -30 0 3738 90 335 0 -150 131 241 -20 3378 3538 90 604 0 -151 63 166 -30 0 3619 90 963 0 -152 71 368 -10 3257 3417 90 51 0 -153 272 228 10 2033 2193 90 0 830 -154 25 290 30 2871 3031 90 0 113 -155 441 157 10 433 593 90 0 372 -156 13 266 20 0 3587 90 0 92 -157 251 376 -10 3186 3346 90 118 0 -158 61 170 30 0 3619 90 0 643 -159 386 357 20 1433 1593 90 0 400 -160 95 475 -30 2925 3085 90 10 0 -161 90 298 10 2104 2264 90 0 470 -162 71 388 20 1505 1665 90 0 24 -163 383 246 20 0 3691 90 0 793 -164 352 38 10 626 786 90 0 70 -165 395 1 -10 0 3536 90 864 0 -166 120 210 -10 1282 1442 90 405 0 -167 46 383 30 1288 1448 90 0 317 -168 202 198 -20 0 3754 90 736 0 -169 358 365 -10 2326 2486 90 26 0 -170 191 352 20 117 277 90 0 111 -171 470 152 -10 1226 1386 90 213 0 -172 228 124 -20 141 301 90 12 0 -173 402 230 -20 0 3671 90 581 0 -174 323 229 -30 1718 1878 90 430 0 -175 331 486 -30 2003 2163 90 242 0 -176 112 208 10 1601 1761 90 0 691 -177 172 435 -10 3061 3221 90 574 0 -178 326 498 -10 1021 1181 90 479 0 -179 460 183 -50 0 3604 90 986 0 -180 95 279 20 375 535 90 0 705 -181 76 456 -30 780 940 90 760 0 -182 242 350 -10 2811 2971 90 958 0 -183 152 196 10 212 372 90 0 597 -184 268 351 10 0 3722 90 0 115 -185 360 356 -20 2733 2893 90 580 0 -186 39 296 -20 1983 2143 90 212 0 -187 262 368 -30 1162 1322 90 67 0 -188 204 90 20 1094 1254 90 0 773 -189 149 273 20 212 372 90 0 548 -190 446 86 -10 3056 3216 90 883 0 -191 139 269 20 1728 1888 90 0 90 -192 483 170 -10 2197 2357 90 583 0 -193 39 278 10 1601 1761 90 0 619 -194 201 307 10 0 3749 0 0 1014 -195 395 378 -20 1636 1796 90 385 0 -196 139 262 -20 1450 1610 90 474 0 -197 176 447 20 311 471 90 0 572 -198 67 380 -20 0 3600 90 199 0 -199 35 358 20 1497 1657 90 0 198 -200 294 455 -10 2426 2586 90 42 0 -201 351 33 -10 0 3585 90 408 0 -202 216 316 -10 2319 2479 90 209 0 -203 261 96 40 0 3670 90 0 838 -204 238 57 30 1336 1496 90 0 91 -205 383 18 20 1643 1803 90 0 952 -206 152 460 -30 1310 1470 90 640 0 -207 94 479 20 0 3547 90 0 911 -208 337 453 -10 0 3604 90 887 0 -209 135 460 10 1785 1945 90 0 202 -210 260 104 20 157 317 90 0 406 -211 337 63 -30 2045 2205 90 546 0 -212 32 247 20 802 962 90 0 186 -213 394 205 10 0 3674 90 0 171 -214 95 294 10 770 930 90 0 828 -215 253 241 -10 2835 2995 90 533 0 -216 223 90 -30 2787 2947 90 663 0 -217 64 473 -20 1284 1444 90 822 0 -218 275 431 10 0 3642 90 0 847 -219 261 84 10 734 894 90 0 965 -220 176 296 -10 1230 1390 90 891 0 -221 361 349 10 3016 3176 90 0 702 -222 168 433 20 3156 3316 90 0 596 -223 394 10 40 1169 1329 90 0 510 -224 308 60 -10 776 936 90 932 0 -225 94 456 -30 3124 3284 90 235 0 -226 73 484 -20 2445 2605 90 664 0 -227 277 434 -10 1427 1587 90 279 0 -228 119 232 10 1939 2099 90 0 122 -229 78 375 10 0 3612 90 0 426 -230 366 346 -10 648 808 90 509 0 -231 125 181 -30 2718 2878 90 638 0 -232 69 493 -40 1977 2137 90 608 0 -233 432 80 40 908 1068 90 0 147 -234 72 391 10 0 3597 90 0 977 -235 85 486 30 0 3537 90 0 225 -236 204 371 30 0 3695 90 0 559 -237 173 328 10 2481 2641 90 0 585 -238 280 423 10 951 1111 90 0 653 -239 200 327 -30 3150 3310 90 628 0 -240 241 98 20 2987 3147 90 0 283 -241 96 356 10 186 346 90 0 915 -242 332 491 30 1211 1371 90 0 175 -243 81 283 10 1624 1784 90 0 367 -244 373 22 10 0 3565 90 0 259 -245 255 371 -30 2209 2369 90 900 0 -246 358 359 -20 2639 2799 90 536 0 -247 216 93 -20 0 3664 90 327 0 -248 73 360 20 0 3616 90 0 698 -249 305 212 -20 0 3758 90 871 0 -250 151 462 10 1402 1562 0 0 1005 -251 47 389 30 1102 1262 90 0 467 -252 155 198 30 118 278 90 0 586 -253 152 457 10 0 3595 90 0 258 -254 329 48 10 1555 1715 90 0 295 -255 88 394 -30 727 887 90 937 0 -256 153 295 -10 3382 3542 90 399 0 -257 81 373 10 590 750 90 0 763 -258 163 453 -10 0 3604 90 253 0 -259 378 25 -10 2408 2568 90 244 0 -260 401 385 -30 2864 3024 90 566 0 -261 184 340 -20 2768 2928 90 526 0 -262 402 362 -10 0 3636 90 339 0 -263 70 482 20 2351 2511 90 0 956 -264 357 445 -20 0 3602 90 558 0 -265 212 71 -30 0 3642 90 545 0 -266 231 81 30 2403 2563 90 0 920 -267 379 208 10 835 995 90 0 321 -268 236 95 30 0 3669 90 0 637 -269 386 344 20 0 3659 90 0 682 -270 189 200 -20 1989 2149 90 472 0 -271 296 253 10 834 994 90 0 336 -272 73 303 -20 2397 2557 90 839 0 -273 30 162 -20 2102 2262 90 658 0 -274 230 95 -20 1899 2059 90 438 0 -275 57 131 -20 1403 1563 90 449 0 -276 379 245 10 2773 2933 90 0 934 -277 107 221 40 0 3679 90 0 424 -278 154 458 20 0 3595 90 0 379 -279 290 417 10 0 3653 90 0 227 -280 272 243 30 0 3801 0 0 1009 -281 94 130 -10 0 3628 90 550 0 -282 222 356 20 1608 1768 90 0 775 -283 243 108 -20 3061 3221 90 240 0 -284 224 93 -30 2191 2351 90 343 0 -285 155 242 10 886 1046 90 0 987 -286 440 302 -20 1279 1439 90 110 0 -287 221 102 -20 2858 3018 90 917 0 -288 52 484 -30 0 3518 90 753 0 -289 111 244 -30 2229 2389 90 777 0 -290 132 273 -10 2203 2363 90 373 0 -291 228 186 20 269 429 90 0 539 -292 221 374 -10 1130 1290 90 867 0 -293 406 286 -10 3314 3474 90 497 0 -294 390 9 -30 1263 1423 90 77 0 -295 335 52 -10 1761 1921 90 254 0 -296 189 368 20 144 304 90 0 676 -297 397 40 40 2491 2651 90 0 770 -298 408 305 10 419 579 90 0 667 -299 156 434 -30 2865 3025 90 371 0 -300 180 335 -10 0 3714 90 964 0 -301 327 483 -20 2098 2258 90 361 0 -302 363 62 -30 0 3605 90 477 0 -303 375 342 10 939 1099 90 0 362 -304 16 280 -20 0 3589 90 928 0 -305 277 431 -10 0 3641 90 625 0 -306 110 241 -20 2136 2296 90 316 0 -307 48 385 20 1008 1168 90 0 895 -308 152 260 -20 0 3726 90 817 0 -309 255 120 10 130 290 90 0 88 -310 214 382 -30 0 3688 90 342 0 -311 414 384 -30 0 3613 90 86 0 -312 232 378 -10 2194 2354 90 352 0 -313 80 141 30 494 654 90 0 121 -314 188 330 30 0 3723 90 0 816 -315 157 192 -20 3210 3370 90 636 0 -316 101 237 20 1831 1991 90 0 306 -317 74 360 -30 2856 3016 90 167 0 -318 267 260 -10 509 669 90 767 0 -319 378 46 -10 3090 3250 90 706 0 -320 420 311 30 893 1053 90 0 995 -321 384 217 -10 1809 1969 90 267 0 -322 418 300 10 611 771 0 0 1007 -323 356 77 -20 2249 2409 90 738 0 -324 253 244 -20 2742 2902 90 615 0 -325 323 258 -20 1328 1488 90 798 0 -326 293 454 -10 0 3616 90 614 0 -327 231 97 20 0 3670 90 0 247 -328 316 234 10 2661 2821 90 0 975 -329 207 196 -30 2565 2725 90 40 0 -330 321 228 -30 0 3750 90 56 0 -331 382 17 -10 1734 1894 90 1000 0 -332 206 326 -20 3246 3406 90 751 0 -333 198 284 -10 0 3762 90 644 0 -334 137 186 10 2912 3072 90 0 629 -335 229 396 30 2882 3042 90 0 149 -336 268 235 -10 1842 2002 90 271 0 -337 95 243 20 759 919 90 0 642 -338 297 430 20 378 538 90 0 851 -339 393 368 10 472 632 90 0 262 -340 66 391 20 0 3593 90 0 397 -341 189 339 -10 2863 3023 90 141 0 -342 280 351 30 116 276 90 0 310 -343 241 77 30 1225 1385 90 0 284 -344 134 265 20 2666 2826 90 0 102 -345 420 95 30 345 505 90 0 72 -346 111 279 30 141 301 90 0 806 -347 367 358 30 2133 2293 90 0 649 -348 239 373 -20 1905 2065 90 374 0 -349 384 235 -20 2672 2832 90 616 0 -350 284 360 30 309 469 90 0 827 -351 325 75 30 2370 2530 90 0 395 -352 279 369 10 0 3702 90 0 312 -353 340 449 -20 3080 3240 90 735 0 -354 275 448 -30 2902 3062 90 826 0 -355 447 88 -40 2963 3123 90 457 0 -356 314 279 10 270 430 90 0 739 -357 434 377 -10 2345 2505 90 436 0 -358 67 377 10 0 3602 90 0 802 -359 370 353 10 746 906 90 0 446 -360 57 367 -20 2169 2329 90 754 0 -361 332 486 20 1912 2072 90 0 301 -362 386 361 -10 1527 1687 90 303 0 -363 55 282 40 305 465 90 0 109 -364 317 467 20 424 584 90 0 991 -365 335 54 -20 1853 2013 90 922 0 -366 348 466 20 0 3587 90 0 43 -367 132 314 -10 3214 3374 90 243 0 -368 328 216 10 0 3739 0 0 1003 -369 416 48 10 1880 2040 90 0 621 -370 370 55 -10 2886 3046 90 988 0 -371 149 434 30 0 3615 90 0 299 -372 466 169 -10 2502 2662 90 155 0 -373 141 267 10 1635 1795 90 0 290 -374 258 350 20 1822 1982 90 0 348 -375 428 312 10 1084 1244 90 0 514 -376 211 188 10 660 820 90 0 601 -377 50 343 -10 2754 2914 90 87 0 -378 107 311 40 2813 2973 90 0 925 -379 178 441 -20 0 3620 90 278 0 -380 232 85 -20 2309 2469 90 924 0 -381 391 23 -20 2698 2858 90 576 0 -382 137 227 20 115 275 90 0 875 -383 161 203 20 100 260 90 0 431 -384 363 212 30 3274 3434 90 0 645 -385 384 346 20 1331 1491 90 0 195 -386 166 434 -20 2965 3125 90 665 0 -387 274 248 20 0 3800 0 0 1015 -388 156 421 -20 0 3629 90 711 0 -389 346 211 10 0 3721 90 0 487 -390 265 358 20 1352 1512 90 0 80 -391 96 407 20 434 594 90 0 904 -392 443 70 -20 2464 2624 90 5 0 -393 125 212 -10 0 3694 90 620 0 -394 361 337 50 363 523 90 0 722 -395 322 78 -30 2464 2624 90 351 0 -396 481 156 -30 1600 1760 90 49 0 -397 188 293 -20 0 3749 90 340 0 -398 76 408 30 0 3589 90 0 444 -399 130 304 10 3175 3335 90 0 256 -400 378 363 -20 1749 1909 90 159 0 -401 185 301 20 1330 1490 90 0 142 -402 385 235 -20 2581 2741 90 75 0 -403 261 350 -10 0 3724 90 96 0 -404 389 33 20 0 3567 90 0 490 -405 151 214 10 511 671 90 0 166 -406 265 94 -20 258 418 90 210 0 -407 65 164 -10 2595 2755 90 480 0 -408 293 81 10 174 334 90 0 201 -409 363 55 -20 2983 3143 90 726 0 -410 465 176 20 2599 2759 90 0 423 -411 428 298 -30 1654 1814 90 993 0 -412 75 379 30 2567 2727 90 0 947 -413 404 378 -10 0 3624 90 501 0 -414 203 203 -10 2850 3010 90 103 0 -415 259 88 -20 0 3662 90 732 0 -416 362 17 -30 1884 2044 90 701 0 -417 320 258 -10 564 724 90 733 0 -418 59 358 -20 2358 2518 90 713 0 -419 316 453 20 224 384 90 0 133 -420 225 192 20 74 234 90 0 971 -421 140 206 30 408 568 90 0 74 -422 83 151 10 300 460 90 0 787 -423 366 196 -20 0 3697 90 410 0 -424 108 245 -40 1730 1890 90 277 0 -425 129 267 10 2480 2640 90 0 466 -426 57 379 -10 907 1067 90 229 0 -427 329 56 -40 1457 1617 90 143 0 -428 213 363 30 0 3706 90 0 809 -429 76 391 30 0 3601 90 0 71 -430 330 259 30 1231 1391 90 0 174 -431 136 217 -20 898 1058 90 383 0 -432 165 333 -20 0 3706 90 145 0 -433 160 431 30 3254 3414 90 0 781 -434 338 489 -30 1308 1468 90 460 0 -435 335 64 10 0 3620 90 0 534 -436 412 361 10 1748 1908 90 0 357 -437 259 90 30 0 3664 90 0 831 -438 265 77 20 832 992 90 0 274 -439 460 173 20 2887 3047 90 0 81 -440 83 301 20 2297 2457 90 0 100 -441 201 331 20 707 867 90 0 836 -442 118 214 20 0 3688 90 0 631 -443 395 30 -20 2796 2956 90 607 0 -444 125 444 -30 1997 2157 90 398 0 -445 283 248 30 33 193 90 0 942 -446 391 334 -10 1047 1207 90 359 0 -447 212 215 -30 3160 3320 90 968 0 -448 276 428 -10 1048 1208 90 981 0 -449 96 152 20 197 357 90 0 275 -450 425 85 10 536 696 90 0 468 -451 336 7 -20 0 3567 90 685 0 -452 196 219 -30 3054 3214 90 461 0 -453 210 94 20 997 1157 90 0 788 -454 310 81 -30 2846 3006 90 779 0 -455 341 37 20 434 594 90 0 910 -456 344 478 -10 2296 2456 90 549 0 -457 406 37 40 275 435 90 0 355 -458 69 346 10 0 3620 90 0 609 -459 80 376 -20 407 567 90 62 0 -460 314 449 30 209 369 90 0 434 -461 209 201 30 2753 2913 90 0 452 -462 88 379 20 689 849 90 0 57 -463 352 500 30 1505 1665 90 0 840 -464 65 357 -10 0 3611 90 841 0 -465 345 15 20 0 3571 90 0 52 -466 125 245 -10 3002 3162 90 425 0 -467 52 369 -30 2073 2233 90 251 0 -468 449 140 -10 730 890 90 450 0 -469 430 310 30 1176 1336 90 0 4 -470 109 325 -10 3008 3168 90 161 0 -471 446 139 20 637 797 90 0 592 -472 229 214 20 41 201 90 0 270 -473 197 301 10 0 3751 90 0 804 -474 146 245 20 696 856 90 0 196 -475 401 368 20 664 824 90 0 800 -476 116 259 -10 2613 2773 90 563 0 -477 374 55 30 2792 2952 90 0 302 -478 249 251 -10 3036 3196 90 648 0 -479 325 490 10 923 1083 90 0 178 -480 59 159 10 0 3613 90 0 407 -481 186 177 -20 1361 1521 90 610 0 -482 319 229 -20 2292 2452 90 603 0 -483 26 269 -10 1005 1165 90 821 0 -484 53 139 30 1214 1374 90 0 992 -485 471 154 -30 0 3584 90 824 0 -486 301 247 -30 0 3773 90 976 0 -487 388 220 -10 1423 1583 90 389 0 -488 235 81 20 1450 1610 90 0 808 -489 347 479 -20 2389 2549 90 874 0 -490 367 59 -20 0 3601 90 404 0 -491 261 370 -10 1069 1229 90 73 0 -492 441 287 -20 2915 3075 90 982 0 -493 44 153 -20 0 3597 90 29 0 -494 263 351 -20 1545 1705 90 652 0 -495 444 157 10 215 375 90 0 34 -496 374 17 10 1925 2085 90 0 515 -497 448 295 10 2724 2884 90 0 293 -498 446 297 -10 2232 2392 90 852 0 -499 347 40 30 530 690 90 0 843 -500 318 493 -20 825 985 90 730 0 -501 399 352 10 1260 1420 90 0 413 -502 51 364 -10 1887 2047 90 33 0 -503 250 217 -20 2534 2694 90 19 0 -504 107 225 30 440 600 90 0 943 -505 173 208 -20 0 3737 90 599 0 -506 204 189 10 0 3748 90 0 528 -507 399 379 20 2960 3120 90 0 825 -508 79 346 -10 3150 3310 90 747 0 -509 360 338 10 272 432 90 0 230 -510 390 17 -40 0 3553 90 223 0 -511 207 337 20 805 965 90 0 769 -512 409 361 -20 0 3631 90 792 0 -513 206 377 -20 559 719 90 590 0 -514 429 294 -10 0 3640 90 375 0 -515 375 31 -10 2185 2345 90 496 0 -516 426 80 20 0 3580 90 0 989 -517 74 374 -10 0 3609 90 868 0 -518 408 20 -10 473 633 90 935 0 -519 239 369 -30 1811 1971 90 126 0 -520 420 308 30 709 869 90 0 594 -521 254 357 -10 0 3717 90 31 0 -522 53 297 -20 0 3622 90 22 0 -523 434 382 30 2250 2410 90 0 105 -524 204 171 20 0 3733 90 0 623 -525 173 169 -20 1558 1718 90 970 0 -526 190 332 20 606 766 90 0 261 -527 274 231 -10 2126 2286 90 560 0 -528 207 194 -10 0 3754 90 506 0 -529 315 232 -20 0 3757 90 128 0 -530 425 87 -20 444 604 90 957 0 -531 312 64 20 582 742 90 0 63 -532 129 244 30 2908 3068 90 0 881 -533 278 230 10 1466 1626 90 0 215 -534 351 75 -10 2154 2314 90 435 0 -535 185 293 10 930 1090 90 0 668 -536 364 364 20 0 3663 90 0 246 -537 432 369 10 2147 2307 90 0 674 -538 128 249 -10 1343 1503 90 14 0 -539 221 179 -20 369 529 90 291 0 -540 194 296 -30 0 3752 90 613 0 -541 413 350 10 0 3633 90 0 679 -542 214 372 10 0 3697 90 0 47 -543 379 229 10 1045 1205 90 0 756 -544 91 298 10 2013 2173 90 0 812 -545 226 120 30 0 3692 90 0 265 -546 344 46 30 1660 1820 90 0 211 -547 238 84 10 1634 1794 90 0 837 -548 138 276 -20 1915 2075 90 189 0 -549 346 487 10 1808 1968 90 0 456 -550 95 160 10 0 3645 90 0 281 -551 103 266 -10 1062 1222 90 944 0 -552 98 286 30 1337 1497 90 0 906 -553 77 172 20 2976 3136 90 0 983 -554 147 199 30 308 468 90 0 104 -555 210 98 10 721 881 90 0 936 -556 428 292 10 0 3642 90 0 123 -557 121 236 -20 2034 2194 90 666 0 -558 336 479 20 2198 2358 90 0 264 -559 203 369 -30 841 1001 90 236 0 -560 296 232 10 1268 1428 90 0 527 -561 87 369 10 201 361 90 0 786 -562 247 88 30 1924 2084 90 0 578 -563 104 246 10 1353 1513 90 0 476 -564 67 302 -10 2493 2653 90 595 0 -565 114 296 -20 0 3681 90 138 0 -566 394 356 30 0 3646 90 0 260 -567 192 306 20 1523 1683 90 0 959 -568 16 285 -20 2492 2652 90 938 0 -569 419 310 -30 802 962 90 589 0 -570 389 221 10 0 3683 90 0 136 -571 129 264 -10 0 3703 90 60 0 -572 172 483 -20 904 1064 90 197 0 -573 325 251 20 1425 1585 90 0 84 -574 151 436 10 2386 2546 90 0 177 -575 263 91 20 352 512 90 0 984 -576 401 15 20 685 845 90 0 381 -577 253 382 -30 3090 3250 90 731 0 -578 247 89 -30 2015 2175 90 562 0 -579 283 229 30 1371 1531 90 0 36 -580 366 341 20 553 713 90 0 185 -581 392 213 20 2092 2252 90 0 173 -582 167 304 20 207 367 90 0 758 -583 477 154 10 1506 1666 90 0 192 -584 234 383 -10 0 3691 90 979 0 -585 199 327 -10 0 3732 90 237 0 -586 140 220 -30 0 3710 90 252 0 -587 144 266 30 311 471 90 0 923 -588 432 105 10 3432 3592 0 0 1002 -589 368 325 30 139 299 90 0 569 -590 202 386 20 0 3680 90 0 513 -591 325 246 10 1520 1680 90 0 675 -592 430 86 -20 0 3581 90 471 0 -593 200 195 20 0 3750 90 0 708 -594 440 295 -30 2136 2296 90 520 0 -595 77 287 10 1905 2065 90 0 564 -596 187 362 -20 0 3696 90 222 0 -597 131 207 -10 999 1159 90 183 0 -598 405 5 20 786 946 90 0 715 -599 125 226 20 1389 1549 90 0 505 -600 254 335 -10 3013 3173 90 807 0 -601 212 168 -10 860 1020 90 376 0 -602 281 279 -10 0 3782 90 16 0 -603 326 241 20 1615 1775 90 0 482 -604 152 241 20 793 953 90 0 150 -605 71 139 -10 807 967 90 914 0 -606 46 277 10 589 749 90 0 622 -607 393 13 20 1358 1518 90 0 443 -608 87 454 40 882 1042 90 0 232 -609 86 359 -10 3255 3415 90 458 0 -610 220 192 20 169 329 90 0 481 -611 426 279 -20 3112 3272 90 46 0 -612 131 267 -30 2572 2732 90 27 0 -613 200 297 30 553 713 90 0 540 -614 299 442 10 1904 2064 90 0 326 -615 265 218 20 2429 2589 90 0 324 -616 398 231 20 2296 2456 90 0 349 -617 312 74 20 0 3638 90 0 655 -618 99 307 -30 0 3663 90 656 0 -619 22 283 -10 0 3594 90 193 0 -620 67 160 10 2690 2850 90 0 393 -621 390 42 -10 2588 2748 90 369 0 -622 44 279 -10 0 3616 90 606 0 -623 200 182 -20 0 3740 90 524 0 -624 458 303 20 0 3610 90 0 931 -625 298 438 10 567 727 90 0 305 -626 62 301 20 3400 3560 0 0 1004 -627 112 251 -10 1633 1793 90 994 0 -628 184 354 30 0 3701 90 0 239 -629 140 180 -10 0 3694 90 334 0 -630 269 428 20 1145 1305 90 0 834 -631 123 206 -20 1885 2045 90 442 0 -632 36 284 10 1698 1858 90 0 737 -633 272 233 10 0 3797 90 0 2 -634 320 231 20 2384 2544 90 0 686 -635 211 180 -20 758 918 90 684 0 -636 114 169 20 2612 2772 90 0 315 -637 245 239 -30 2933 3093 90 268 0 -638 117 204 30 0 3684 90 0 231 -639 316 254 20 0 3758 90 0 743 -640 169 443 30 500 660 90 0 206 -641 212 96 -10 904 1064 90 999 0 -642 119 285 -20 3063 3223 90 337 0 -643 71 163 -30 2785 2945 90 158 0 -644 78 361 10 0 3620 90 0 333 -645 354 219 -30 3375 3535 90 384 0 -646 389 233 -20 0 3684 90 662 0 -647 90 391 10 541 701 90 0 884 -648 209 307 10 1811 1971 90 0 478 -649 363 351 -30 2923 3083 90 347 0 -650 405 47 10 255 415 90 0 107 -651 278 329 10 83 243 90 0 146 -652 261 371 20 978 1138 90 0 494 -653 302 470 -10 2227 2387 90 238 0 -654 373 205 -10 0 3694 90 98 0 -655 381 20 -20 1828 1988 90 617 0 -656 90 277 30 662 822 90 0 618 -657 46 341 -10 2659 2819 90 750 0 -658 50 138 20 0 3595 90 0 273 -659 61 437 20 265 425 90 0 877 -660 331 252 -20 1134 1294 90 967 0 -661 440 81 -10 2665 2825 90 990 0 -662 384 206 20 739 899 90 0 646 -663 232 87 30 0 3661 90 0 216 -664 59 471 20 0 3532 90 0 226 -665 174 304 20 110 270 90 0 386 -666 106 248 20 0 3680 90 0 557 -667 410 287 -10 0 3660 90 298 0 -668 206 313 -10 2091 2251 90 535 0 -669 412 367 20 960 1120 90 0 93 -670 412 300 20 515 675 90 0 714 -671 206 295 -40 2809 2969 90 973 0 -672 329 459 -10 2885 3045 90 120 0 -673 177 436 20 199 359 90 0 856 -674 266 264 -10 0 3803 90 537 0 -675 308 235 -10 3135 3295 90 591 0 -676 260 330 -20 3203 3363 90 296 0 -677 49 136 10 1705 1865 90 0 768 -678 356 28 20 1000 1160 90 0 918 -679 428 384 -10 2444 2604 90 541 0 -680 220 362 20 1331 1491 90 0 878 -681 437 61 -10 0 3559 90 885 0 -682 365 360 -20 2040 2200 90 269 0 -683 107 168 -20 0 3660 90 135 0 -684 220 177 20 0 3746 90 0 635 -685 347 21 20 1386 1546 90 0 451 -686 293 245 -20 3430 3590 90 634 0 -687 267 436 -10 3007 3167 90 692 0 -688 216 96 10 2566 2726 90 0 8 -689 383 351 20 167 327 90 0 697 -690 289 240 -20 0 3784 90 819 0 -691 129 185 -10 2814 2974 90 176 0 -692 291 450 10 2705 2865 90 0 687 -693 387 21 -30 1548 1708 90 863 0 -694 116 255 20 1239 1399 90 0 795 -695 50 368 30 0 3592 90 0 741 -696 121 249 -10 2421 2581 90 850 0 -697 404 346 -20 0 3643 90 689 0 -698 77 360 -20 0 3619 90 248 0 -699 447 102 -30 0 3578 90 13 0 -700 366 16 20 0 3563 90 0 846 -701 348 16 30 1780 1940 90 0 416 -702 353 346 -10 3114 3274 90 221 0 -703 54 485 30 1773 1933 90 0 972 -704 319 77 -20 0 3638 90 44 0 -705 83 282 -20 1532 1692 90 180 0 -706 384 24 10 2601 2761 90 0 319 -707 52 469 -20 1387 1547 90 137 0 -708 199 200 -20 2945 3105 90 593 0 -709 273 234 -10 0 3796 90 921 0 -710 16 281 -20 2676 2836 90 790 0 -711 151 442 20 2482 2642 90 0 388 -712 223 114 20 332 492 90 0 720 -713 191 308 20 82 242 90 0 418 -714 448 297 -20 2632 2792 90 670 0 -715 386 28 -20 2507 2667 90 598 0 -716 106 295 20 1053 1213 90 0 3 -717 387 224 -20 1517 1677 90 729 0 -718 96 377 10 0 3625 90 0 76 -719 86 361 -10 3347 3507 90 112 0 -720 211 107 -20 531 691 90 712 0 -721 43 125 -20 1603 1763 90 17 0 -722 369 351 -50 0 3668 90 394 0 -723 388 228 -20 1235 1395 90 119 0 -724 325 228 -20 1810 1970 90 823 0 -725 490 159 -10 1897 2057 90 144 0 -726 420 78 20 1398 1558 90 0 409 -727 396 4 10 0 3538 0 0 1001 -728 222 317 -10 2415 2575 90 776 0 -729 389 198 20 543 703 90 0 717 -730 322 454 20 320 480 90 0 500 -731 241 391 30 2985 3145 90 0 577 -732 256 117 20 0 3691 90 0 415 -733 298 255 10 151 311 90 0 417 -734 74 363 -20 2763 2923 90 129 0 -735 345 496 20 1407 1567 90 0 353 -736 167 169 20 1654 1814 90 0 168 -737 23 306 -10 2182 2342 90 632 0 -738 317 62 20 677 837 90 0 323 -739 319 257 -10 656 816 90 356 0 -740 129 255 -20 2716 2876 90 742 0 -741 59 377 -30 2088 2248 90 695 0 -742 138 272 20 1821 1981 90 0 740 -743 317 251 -20 940 1100 90 639 0 -744 279 436 20 0 3636 90 0 782 -745 371 207 10 241 401 90 0 813 -746 263 372 10 886 1046 90 0 960 -747 50 347 10 2562 2722 90 0 508 -748 275 236 20 1563 1723 90 0 68 -749 334 47 20 331 491 90 0 124 -750 50 383 10 1889 2049 90 0 657 -751 170 338 20 2284 2444 90 0 332 -752 245 109 -10 0 3683 90 876 0 -753 69 475 30 1189 1349 90 0 288 -754 54 372 20 1991 2151 90 0 360 -755 198 334 -20 2203 2363 90 38 0 -756 380 228 -10 0 3693 90 543 0 -757 425 118 10 219 379 90 0 815 -758 80 398 -20 0 3599 90 582 0 -759 366 57 -30 3076 3236 90 789 0 -760 67 463 30 584 744 90 0 181 -761 226 86 10 2595 2755 0 0 1010 -762 59 480 -20 1583 1743 90 801 0 -763 40 378 -10 1386 1546 90 257 0 -764 250 367 20 2113 2273 90 0 962 -765 157 436 -30 2773 2933 90 905 0 -766 463 161 -40 2403 2563 90 791 0 -767 266 250 10 409 569 90 0 318 -768 51 162 -10 2213 2373 90 677 0 -769 194 353 -20 1371 1531 90 511 0 -770 383 41 -40 2685 2845 90 297 0 -771 247 82 30 1828 1988 90 0 140 -772 457 142 20 829 989 90 0 908 -773 244 94 -20 1795 1955 90 188 0 -774 441 63 -30 2274 2434 90 853 0 -775 244 371 -20 2310 2470 90 282 0 -776 174 444 10 0 3616 90 0 728 -777 94 247 30 853 1013 90 0 289 -778 320 225 -10 0 3750 90 901 0 -779 316 80 30 0 3642 90 0 454 -780 155 447 -10 2672 2832 90 127 0 -781 211 308 -30 0 3755 90 433 0 -782 297 442 -20 1812 1972 90 744 0 -783 200 342 -30 997 1157 90 829 0 -784 44 325 -20 3181 3341 90 6 0 -785 438 60 30 2180 2340 90 0 131 -786 80 374 -10 0 3614 90 561 0 -787 59 163 -10 2311 2471 90 422 0 -788 236 92 -20 2210 2370 90 453 0 -789 414 66 30 1592 1752 90 0 759 -790 34 279 20 0 3607 90 0 710 -791 475 156 40 0 3581 90 0 766 -792 404 310 20 0 3659 90 0 512 -793 367 239 -20 3156 3316 90 163 0 -794 210 359 10 1568 1728 90 0 948 -795 133 278 -20 0 3704 90 694 0 -796 446 169 10 3185 3345 90 0 139 -797 188 356 -30 1882 2042 90 23 0 -798 312 252 20 845 1005 90 0 325 -799 69 485 -40 0 3528 90 125 0 -800 413 353 -20 1650 1810 90 475 0 -801 54 446 20 287 447 90 0 762 -802 56 357 -10 1788 1948 90 358 0 -803 230 105 -20 0 3678 90 814 0 -804 196 302 -10 274 434 90 473 0 -805 391 373 10 0 3637 90 0 854 -806 101 295 -30 958 1118 90 346 0 -807 234 350 10 2617 2777 90 0 600 -808 215 108 -20 2760 2920 90 488 0 -809 142 457 -30 0 3591 90 428 0 -810 283 425 20 0 3646 90 0 927 -811 77 397 -30 919 1079 90 97 0 -812 105 317 -10 2909 3069 90 544 0 -813 382 213 -10 1715 1875 90 745 0 -814 213 76 20 0 3647 90 0 803 -815 417 56 -10 0 3569 90 757 0 -816 183 340 -30 2677 2837 90 314 0 -817 123 242 20 3190 3350 90 0 308 -818 475 136 -20 1029 1189 90 134 0 -819 377 246 20 3054 3214 90 0 690 -820 310 484 30 626 786 90 0 117 -821 47 280 10 403 563 90 0 483 -822 57 456 20 388 548 90 0 217 -823 313 266 20 373 533 90 0 724 -824 475 145 30 1128 1288 90 0 485 -825 400 376 -20 0 3629 90 507 0 -826 290 416 30 0 3654 90 0 354 -827 277 369 -30 0 3702 90 350 0 -828 91 303 -10 0 3657 90 214 0 -829 194 301 30 366 526 90 0 783 -830 254 238 -10 2646 2806 90 153 0 -831 215 91 -30 2290 2450 90 437 0 -832 500 162 20 2088 2248 90 0 30 -833 56 287 20 197 357 90 0 39 -834 289 452 -20 2798 2958 90 630 0 -835 378 326 30 160 320 90 0 966 -836 197 350 -20 1186 1346 90 441 0 -837 243 88 -10 1731 1891 90 547 0 -838 250 72 -40 1125 1285 90 203 0 -839 101 290 20 1150 1310 90 0 272 -840 351 480 -30 0 3573 90 463 0 -841 67 357 10 3044 3204 90 0 464 -842 128 240 -10 3285 3445 90 862 0 -843 253 81 -30 0 3655 90 499 0 -844 307 227 30 2853 3013 90 0 902 -845 233 441 -30 0 3633 90 998 0 -846 311 47 -20 0 3613 90 700 0 -847 292 456 -10 0 3614 90 218 0 -848 183 187 -10 0 3733 90 886 0 -849 392 31 -20 2890 3050 90 912 0 -850 103 251 10 1258 1418 90 0 696 -851 300 443 -20 1996 2156 90 338 0 -852 420 295 10 1752 1912 90 0 498 -853 427 64 30 1292 1452 90 0 774 -854 372 354 -10 1941 2101 90 805 0 -855 101 263 -10 1156 1316 90 903 0 -856 141 454 -20 1686 1846 90 673 0 -857 146 461 -10 1497 1657 90 95 0 -858 298 430 30 469 629 90 0 969 -859 148 270 10 119 279 90 0 55 -860 76 287 20 1814 1974 0 0 1016 -861 308 55 30 871 1031 90 0 896 -862 143 257 10 501 661 90 0 842 -863 393 2 30 979 1139 90 0 693 -864 385 28 10 0 3565 90 0 165 -865 204 291 20 0 3763 90 0 872 -866 132 272 -10 2294 2454 90 880 0 -867 206 379 10 467 627 90 0 292 -868 69 383 10 0 3600 90 0 517 -869 245 96 -20 0 3670 90 894 0 -870 431 301 10 0 3636 90 0 85 -871 448 94 20 3154 3314 90 0 249 -872 199 305 -20 0 3749 90 865 0 -873 95 356 -20 3447 3607 90 82 0 -874 328 498 20 1113 1273 90 0 489 -875 108 222 -20 0 3680 90 382 0 -876 341 26 10 1288 1448 90 0 752 -877 63 454 -20 0 3548 90 659 0 -878 222 357 -20 0 3714 90 680 0 -879 416 364 -10 1938 2098 90 148 0 -880 127 278 10 2106 2266 90 0 866 -881 140 252 -30 0 3714 90 532 0 -882 218 298 -20 2706 2866 90 35 0 -883 432 87 10 2858 3018 90 0 190 -884 216 300 -10 0 3764 90 647 0 -885 438 72 10 1098 1258 90 0 681 -886 184 178 10 1454 1614 90 0 848 -887 345 468 10 2677 2837 90 0 208 -888 150 435 -20 0 3614 90 941 0 -889 395 365 30 0 3639 90 0 132 -890 208 371 20 655 815 90 0 61 -891 190 292 10 745 905 90 0 220 -892 78 479 30 1089 1249 90 0 913 -893 104 198 -20 0 3670 90 18 0 -894 346 13 20 1686 1846 90 0 869 -895 47 388 -20 1193 1353 90 307 0 -896 315 57 -30 0 3621 90 861 0 -897 110 199 -40 2207 2367 90 94 0 -898 323 60 10 0 3621 90 0 11 -899 308 82 30 0 3647 0 0 1006 -900 216 374 30 1035 1195 90 0 245 -901 326 253 10 1039 1199 90 0 778 -902 308 232 -30 2948 3108 90 844 0 -903 118 223 10 339 499 90 0 855 -904 149 444 -20 0 3606 90 391 0 -905 95 395 30 0 3612 90 0 765 -906 117 319 -30 0 3675 90 552 0 -907 262 352 -30 0 3722 90 78 0 -908 468 135 -20 932 1092 90 772 0 -909 351 31 20 813 973 90 0 58 -910 361 15 -20 2118 2278 90 455 0 -911 195 300 -20 0 3750 90 207 0 -912 397 27 20 0 3557 90 0 849 -913 179 311 -30 0 3731 90 892 0 -914 77 133 10 709 869 90 0 605 -915 66 397 -10 1125 1285 90 241 0 -916 366 352 -10 2830 2990 90 939 0 -917 221 87 20 1403 1563 90 0 287 -918 347 23 -20 0 3578 90 678 0 -919 176 358 10 2075 2235 90 0 114 -920 229 78 -30 2496 2656 90 266 0 -921 272 246 10 218 378 90 0 709 -922 293 67 20 0 3637 90 0 365 -923 140 265 -30 1543 1703 90 587 0 -924 238 83 20 1543 1703 90 0 380 -925 136 296 -40 3275 3435 90 378 0 -926 218 98 30 2002 2162 90 0 1 -927 290 440 -20 1621 1781 90 810 0 -928 29 302 20 2085 2245 90 0 304 -929 290 425 30 280 440 90 0 9 -930 124 247 20 3095 3255 0 0 1013 -931 442 287 -20 0 3629 90 624 0 -932 294 64 10 383 543 90 0 224 -933 74 165 -20 2878 3038 90 985 0 -934 382 245 -10 2959 3119 90 276 0 -935 405 24 10 378 538 90 0 518 -936 211 97 -10 812 972 90 555 0 -937 88 390 30 0 3610 90 0 255 -938 37 295 20 1891 2051 90 0 568 -939 359 371 10 0 3662 90 0 916 -940 186 372 -20 0 3687 90 951 0 -941 116 446 20 1898 2058 90 0 888 -942 293 249 -30 53 213 90 445 0 -943 83 228 -30 649 809 90 504 0 -944 96 269 10 965 1125 90 0 551 -945 179 284 -10 0 3746 90 997 0 -946 368 219 20 0 3702 90 0 980 -947 66 359 -30 3157 3317 90 412 0 -948 189 338 -10 2954 3114 90 794 0 -949 163 277 -10 3492 3652 90 25 0 -950 5 296 -10 0 3575 90 978 0 -951 152 478 20 0 3576 90 0 940 -952 366 34 -20 2086 2246 90 205 0 -953 429 80 20 0 3578 90 0 32 -954 464 178 -20 2691 2851 90 65 0 -955 138 196 -10 1993 2153 90 59 0 -956 87 481 -20 2733 2893 90 263 0 -957 425 99 20 248 408 90 0 530 -958 241 362 10 2410 2570 90 0 182 -959 207 289 -20 2997 3157 90 567 0 -960 264 365 -10 1255 1415 90 746 0 -961 102 289 -10 1242 1402 90 37 0 -962 233 346 -20 2711 2871 90 764 0 -963 78 141 30 0 3621 90 0 151 -964 196 348 10 1094 1254 90 0 300 -965 216 92 -10 2382 2542 90 219 0 -966 444 309 -30 2425 2585 90 835 0 -967 313 263 20 466 626 90 0 660 -968 211 198 30 2660 2820 90 0 447 -969 314 436 -30 2101 2261 90 858 0 -970 217 189 20 0 3755 90 0 525 -971 197 178 -20 1058 1218 90 420 0 -972 60 497 -30 0 3513 90 703 0 -973 206 312 40 2000 2160 90 0 671 -974 197 351 -20 1277 1437 90 28 0 -975 305 233 -10 3041 3201 90 328 0 -976 297 250 30 0 3777 90 0 486 -977 71 348 -10 3055 3215 90 234 0 -978 11 269 10 1110 1270 90 0 950 -979 247 447 10 3120 3280 90 0 584 -980 386 213 -20 1996 2156 90 946 0 -981 292 434 10 755 915 90 0 448 -982 436 301 20 1373 1533 90 0 492 -983 145 221 -20 0 3716 90 553 0 -984 224 96 -20 2098 2258 90 575 0 -985 59 128 20 1496 1656 90 0 933 -986 489 150 50 1798 1958 90 0 179 -987 152 225 -10 994 1154 90 285 0 -988 426 85 10 0 3583 90 0 370 -989 415 73 -20 1495 1655 90 516 0 -990 440 70 10 2371 2531 90 0 661 -991 320 476 -20 0 3588 90 364 0 -992 57 132 -30 1312 1472 90 484 0 -993 405 311 30 0 3658 90 0 411 -994 109 250 10 1540 1700 90 0 627 -995 428 314 -30 992 1152 90 320 0 -996 40 288 -30 1793 1953 90 7 0 -997 175 282 10 0 3743 90 0 945 -998 298 456 30 2332 2492 90 0 845 -999 208 101 10 0 3670 90 0 641 -1000 342 52 10 0 3606 90 0 331 -1001 396 4 -10 0 3538 90 727 0 -1002 432 105 -10 3432 3592 90 588 0 -1003 328 216 -10 0 3739 90 368 0 -1004 62 301 -20 3400 3560 90 626 0 -1005 151 462 -10 1402 1562 90 250 0 -1006 308 82 -30 0 3647 90 899 0 -1007 418 300 -10 611 771 90 322 0 -1008 113 289 -10 0 3682 90 50 0 -1009 272 243 -30 0 3801 90 280 0 -1010 226 86 -10 2595 2755 90 761 0 -1011 149 183 -20 3108 3268 90 21 0 -1012 252 347 -10 2911 3071 90 15 0 -1013 124 247 -20 3095 3255 90 930 0 -1014 201 307 -10 0 3749 90 194 0 -1015 274 248 -20 0 3800 90 387 0 -1016 76 287 -20 1814 1974 90 860 0 diff --git a/jsprit-instances/instances/lilim/1000/LC2103.txt b/jsprit-instances/instances/lilim/1000/LC2103.txt deleted file mode 100644 index 732c2719e..000000000 --- a/jsprit-instances/instances/lilim/1000/LC2103.txt +++ /dev/null @@ -1,1018 +0,0 @@ -250 700 1 -0 250 250 0 0 3914 0 0 0 -1 212 101 -20 0 3671 90 684 0 -2 266 231 -20 0 3800 90 302 0 -3 89 284 20 1436 1596 90 0 828 -4 430 298 10 0 3638 90 0 286 -5 435 77 20 0 3571 90 0 579 -6 25 293 20 2964 3124 90 0 522 -7 43 269 30 687 847 90 0 109 -8 216 117 -20 0 3687 90 808 0 -9 294 437 30 661 821 90 0 227 -10 79 479 30 998 1158 90 0 707 -11 365 18 -10 0 3566 90 70 0 -12 225 125 20 127 287 90 0 712 -13 448 103 -10 0 3578 90 699 0 -14 143 266 10 402 562 90 0 862 -15 252 347 10 2911 3071 90 0 676 -16 403 390 -10 2560 2720 90 679 0 -17 67 153 20 0 3617 90 0 721 -18 90 168 20 3080 3240 90 0 505 -19 302 235 -20 0 3770 90 724 0 -20 259 355 -20 1917 2077 90 374 0 -21 149 183 -10 3108 3268 90 183 0 -22 19 297 -10 2282 2442 90 978 0 -23 209 358 30 1477 1637 90 0 521 -24 56 388 20 0 3586 90 0 750 -25 115 269 -10 2956 3116 90 880 0 -26 377 356 -20 0 3659 90 669 0 -27 113 229 -20 1123 1283 90 881 0 -28 205 343 -20 902 1062 90 170 0 -29 48 137 20 0 3593 90 0 135 -30 467 157 -10 0 3588 90 495 0 -31 220 394 10 2783 2943 90 0 577 -32 436 54 20 0 3554 90 0 681 -33 54 357 -20 0 3601 90 71 0 -34 456 154 -10 0 3597 90 48 0 -35 216 307 -10 0 3758 90 919 0 -36 280 224 -10 2226 2386 90 486 0 -37 90 270 -10 565 725 90 944 0 -38 166 452 20 0 3606 90 0 95 -39 17 283 20 0 3589 90 0 304 -40 196 192 30 0 3745 90 0 168 -41 94 275 10 469 629 90 0 656 -42 292 445 -40 0 3625 90 927 0 -43 329 471 -20 2783 2943 90 364 0 -44 326 57 20 1364 1524 90 0 295 -45 95 466 10 0 3559 90 0 809 -46 429 282 -10 3018 3178 90 498 0 -47 229 364 -20 0 3709 90 890 0 -48 457 160 10 0 3599 90 0 34 -49 452 154 30 332 492 90 0 410 -50 113 289 -30 0 3682 90 806 0 -51 67 387 10 2376 2536 90 0 470 -52 368 17 -20 2021 2181 90 912 0 -53 341 367 -30 0 3676 90 93 0 -54 410 364 -30 1842 2002 90 512 0 -55 80 281 10 0 3652 90 0 945 -56 321 224 -20 2106 2266 90 417 0 -57 73 395 20 1223 1383 90 0 340 -58 259 76 -30 0 3650 90 704 0 -59 121 203 10 0 3687 90 0 897 -60 118 256 -20 0 3692 90 666 0 -61 236 361 -30 0 3713 90 187 0 -62 78 371 20 220 380 90 0 644 -63 301 53 20 969 1129 90 0 846 -64 382 197 -40 0 3682 90 654 0 -65 491 160 20 1989 2149 90 0 791 -66 453 164 -20 0 3604 90 396 0 -67 277 371 30 595 755 90 0 403 -68 272 212 -10 2330 2490 90 271 0 -69 386 218 -10 1901 2061 90 723 0 -70 353 32 10 0 3583 90 0 11 -71 59 389 20 1698 1858 90 0 33 -72 414 62 10 0 3575 90 0 883 -73 278 357 10 212 372 90 0 751 -74 101 179 -20 2412 2572 90 382 0 -75 396 234 -30 0 3678 90 192 0 -76 74 390 20 797 957 90 0 167 -77 332 55 30 211 371 90 0 685 -78 272 365 30 0 3707 90 0 651 -79 418 355 -20 2037 2197 90 475 0 -80 216 380 -20 2300 2460 90 312 0 -81 440 173 -20 3282 3442 90 439 0 -82 89 358 20 0 3631 90 0 609 -83 66 491 20 0 3521 90 0 263 -84 317 234 -20 2479 2639 90 119 0 -85 439 297 -20 2043 2203 90 982 0 -86 394 367 30 380 540 90 0 169 -87 58 364 10 0 3601 90 0 802 -88 290 75 20 191 351 90 0 592 -89 346 344 -10 3212 3372 90 541 0 -90 131 269 -40 0 3704 90 642 0 -91 236 96 -20 1604 1764 90 172 0 -92 29 282 10 1410 1570 90 0 193 -93 418 385 30 0 3609 90 0 53 -94 148 225 40 613 773 90 0 629 -95 166 464 -20 0 3595 90 38 0 -96 266 373 10 0 3700 90 0 314 -97 201 273 30 54 214 90 0 115 -98 255 245 10 7 167 90 0 356 -99 220 379 -10 0 3692 90 913 0 -100 85 317 30 0 3646 90 0 705 -101 125 264 -10 2855 3015 90 859 0 -102 131 253 -10 0 3705 90 425 0 -103 184 188 -20 1260 1420 90 635 0 -104 128 209 20 0 3696 90 0 593 -105 373 364 20 0 3657 90 0 246 -106 389 342 10 1145 1305 90 0 854 -107 420 20 30 575 735 90 0 990 -108 132 218 10 136 296 90 0 306 -109 32 256 -30 901 1061 90 7 0 -110 406 339 20 295 455 90 0 569 -111 191 397 -20 0 3666 90 673 0 -112 72 341 10 0 3625 90 0 552 -113 35 308 -30 3072 3232 90 568 0 -114 169 360 20 2172 2332 90 0 239 -115 222 381 -30 0 3691 90 97 0 -116 96 292 -20 862 1022 90 180 0 -117 311 496 10 0 3571 90 0 366 -118 220 384 -30 2683 2843 90 836 0 -119 259 243 20 22 182 90 0 84 -120 349 476 -10 0 3578 90 672 0 -121 63 159 20 1009 1169 90 0 787 -122 112 243 -10 0 3686 90 850 0 -123 448 302 20 2327 2487 90 0 492 -124 343 27 20 0 3583 90 0 918 -125 67 485 -30 2166 2326 90 753 0 -126 220 359 30 1424 1584 90 0 519 -127 147 435 -20 2111 2271 90 856 0 -128 317 235 -20 2570 2730 90 778 0 -129 43 355 20 0 3592 90 0 358 -130 368 340 10 461 621 90 0 792 -131 450 72 10 0 3557 90 0 588 -132 400 364 30 570 730 90 0 697 -133 355 480 -10 0 3572 90 178 0 -134 450 153 20 533 693 90 0 468 -135 126 188 -20 0 3686 90 29 0 -136 380 223 10 1614 1774 90 0 402 -137 71 453 -20 685 845 90 822 0 -138 54 287 20 209 369 90 0 212 -139 420 168 -10 3393 3553 90 450 0 -140 219 89 -10 2692 2852 90 641 0 -141 189 327 10 420 580 90 0 769 -142 191 309 10 1430 1590 90 0 648 -143 301 67 40 0 3635 90 0 546 -144 484 161 -30 1696 1856 90 824 0 -145 77 483 -10 0 3534 90 288 0 -146 241 375 10 0 3699 90 0 764 -147 428 64 20 1201 1361 90 0 392 -148 403 361 10 1452 1612 90 0 347 -149 257 336 -20 0 3738 90 582 0 -150 131 241 10 3378 3538 90 0 285 -151 63 166 -20 0 3619 90 643 0 -152 71 368 -20 0 3610 90 307 0 -153 272 228 -10 2033 2193 90 560 0 -154 25 290 30 0 3596 90 0 784 -155 441 157 10 0 3612 90 0 485 -156 13 266 -10 0 3587 90 606 0 -157 251 376 10 3186 3346 0 0 1012 -158 61 170 -30 0 3619 90 493 0 -159 386 357 -20 1433 1593 90 722 0 -160 95 475 -10 0 3551 90 799 0 -161 90 298 -10 2104 2264 90 229 0 -162 71 388 -10 0 3598 90 241 0 -163 383 246 20 0 3691 90 0 174 -164 352 38 10 0 3589 90 0 1000 -165 395 1 30 0 3536 90 0 259 -166 120 210 20 1282 1442 90 0 597 -167 46 383 -20 0 3581 90 76 0 -168 202 198 -30 0 3754 90 40 0 -169 358 365 -30 2326 2486 90 86 0 -170 191 352 20 0 3707 90 0 28 -171 470 152 30 0 3584 90 0 372 -172 228 124 20 141 301 90 0 91 -173 402 230 -10 0 3671 90 796 0 -174 323 229 -20 0 3749 90 163 0 -175 331 486 10 0 3575 90 0 887 -176 112 208 -30 1601 1761 90 586 0 -177 172 435 30 0 3624 90 0 222 -178 326 498 10 1021 1181 90 0 133 -179 460 183 10 0 3604 90 0 793 -180 95 279 20 0 3667 90 0 116 -181 76 456 30 780 940 90 0 956 -182 242 350 -30 0 3724 90 900 0 -183 152 196 10 212 372 90 0 21 -184 268 351 10 0 3722 90 0 218 -185 360 356 10 2733 2893 90 0 916 -186 39 296 -20 1983 2143 90 996 0 -187 262 368 30 1162 1322 90 0 61 -188 204 90 -10 1094 1254 90 720 0 -189 149 273 -10 212 372 90 949 0 -190 446 86 -20 3056 3216 90 726 0 -191 139 269 20 1728 1888 90 0 548 -192 483 170 30 0 3578 90 0 75 -193 39 278 -10 1601 1761 90 92 0 -194 201 307 -20 0 3749 90 567 0 -195 395 378 10 1636 1796 90 0 825 -196 139 262 30 1450 1610 90 0 742 -197 176 447 20 311 471 90 0 433 -198 67 380 -20 0 3600 90 462 0 -199 35 358 -20 0 3584 90 665 0 -200 294 455 -30 2426 2586 90 998 0 -201 351 33 20 0 3585 90 0 319 -202 216 316 -10 2319 2479 90 911 0 -203 261 96 40 0 3670 90 0 837 -204 238 57 -30 0 3631 90 437 0 -205 383 18 20 1643 1803 90 0 331 -206 152 460 10 0 3593 90 0 250 -207 94 479 -10 0 3547 90 972 0 -208 337 453 30 0 3604 90 0 279 -209 135 460 -30 0 3585 90 892 0 -210 260 104 20 157 317 90 0 838 -211 337 63 -20 0 3618 90 896 0 -212 32 247 -20 802 962 90 138 0 -213 394 205 10 0 3674 90 0 813 -214 95 294 10 0 3663 90 0 716 -215 253 241 -10 2835 2995 90 733 0 -216 223 90 30 2787 2947 90 0 287 -217 64 473 10 0 3534 90 0 703 -218 275 431 -10 0 3642 90 184 0 -219 261 84 10 0 3658 90 0 351 -220 176 296 -30 1230 1390 90 613 0 -221 361 349 -10 3016 3176 90 436 0 -222 168 433 -30 3156 3316 90 177 0 -223 394 10 40 0 3545 90 0 706 -224 308 60 20 776 936 90 0 898 -225 94 456 20 0 3566 90 0 584 -226 73 484 20 0 3531 90 0 845 -227 277 434 -30 1427 1587 90 9 0 -228 119 232 -20 1939 2099 90 424 0 -229 78 375 10 0 3612 90 0 161 -230 366 346 -10 0 3674 90 509 0 -231 125 181 20 0 3682 90 0 506 -232 69 493 -20 1977 2137 90 664 0 -233 432 80 40 908 1068 90 0 853 -234 72 391 10 0 3597 90 0 719 -235 85 486 -30 0 3537 90 760 0 -236 204 371 30 0 3695 90 0 348 -237 173 328 -20 2481 2641 90 390 0 -238 280 423 -30 0 3649 90 305 0 -239 200 327 -20 3150 3310 90 114 0 -240 241 98 -10 0 3672 90 406 0 -241 96 356 10 186 346 90 0 162 -242 332 491 -30 1211 1371 90 820 0 -243 81 283 10 1624 1784 90 0 378 -244 373 22 10 0 3565 90 0 443 -245 255 371 -20 2209 2369 90 282 0 -246 358 359 -20 0 3671 90 105 0 -247 216 93 10 0 3664 90 0 688 -248 73 360 -40 0 3616 90 317 0 -249 305 212 20 0 3758 0 0 1001 -250 151 462 -10 1402 1562 90 206 0 -251 47 389 -10 1102 1262 90 718 0 -252 155 198 30 118 278 90 0 405 -253 152 457 10 0 3595 90 0 371 -254 329 48 -20 1555 1715 90 531 0 -255 88 394 -30 0 3608 90 398 0 -256 153 295 -40 3382 3542 90 459 0 -257 81 373 10 590 750 90 0 961 -258 163 453 10 0 3604 90 0 444 -259 378 25 -30 2408 2568 90 165 0 -260 401 385 -10 0 3622 90 303 0 -261 184 340 -10 2768 2928 90 494 0 -262 402 362 -20 0 3636 90 689 0 -263 70 482 -20 2351 2511 90 83 0 -264 357 445 -30 0 3602 90 840 0 -265 212 71 20 0 3642 90 0 814 -266 231 81 -30 2403 2563 90 663 0 -267 379 208 10 835 995 90 0 384 -268 236 95 30 0 3669 90 0 803 -269 386 344 20 0 3659 90 0 385 -270 189 200 -30 1989 2149 90 421 0 -271 296 253 10 834 994 90 0 68 -272 73 303 -10 0 3640 90 561 0 -273 30 162 -30 0 3588 90 605 0 -274 230 95 -20 1899 2059 90 917 0 -275 57 131 10 0 3598 90 0 955 -276 379 245 -10 2773 2933 90 543 0 -277 107 221 -30 0 3679 90 431 0 -278 154 458 -20 0 3595 90 951 0 -279 290 417 -30 0 3653 90 208 0 -280 272 243 -10 0 3801 90 529 0 -281 94 130 10 0 3628 90 0 553 -282 222 356 20 1608 1768 90 0 245 -283 243 108 -20 3061 3221 90 936 0 -284 224 93 -20 2191 2351 90 291 0 -285 155 242 -10 0 3729 90 150 0 -286 440 302 -10 0 3628 90 4 0 -287 221 102 -30 2858 3018 90 216 0 -288 52 484 10 0 3518 90 0 145 -289 111 244 -10 2229 2389 90 875 0 -290 132 273 10 2203 2363 90 0 866 -291 228 186 20 269 429 90 0 284 -292 221 374 -20 0 3697 90 511 0 -293 406 286 -10 3314 3474 90 714 0 -294 390 9 30 1263 1423 90 0 381 -295 335 52 -20 0 3609 90 44 0 -296 189 368 20 144 304 90 0 542 -297 397 40 40 2491 2651 90 0 621 -298 408 305 10 0 3657 90 0 670 -299 156 434 10 0 3618 90 0 386 -300 180 335 -10 0 3714 90 746 0 -301 327 483 20 2098 2258 90 0 460 -302 363 62 20 0 3605 90 0 2 -303 375 342 10 939 1099 90 0 260 -304 16 280 -20 0 3589 90 39 0 -305 277 431 30 0 3641 90 0 238 -306 110 241 -10 0 3684 90 108 0 -307 48 385 20 1008 1168 90 0 152 -308 152 260 10 0 3726 0 0 1013 -309 255 120 10 130 290 90 0 738 -310 214 382 30 0 3688 90 0 731 -311 414 384 10 0 3613 90 0 805 -312 232 378 20 2194 2354 90 0 80 -313 80 141 -10 494 654 90 422 0 -314 188 330 -10 0 3723 90 96 0 -315 157 192 -20 3210 3370 90 383 0 -316 101 237 -20 1831 1991 90 337 0 -317 74 360 40 2856 3016 90 0 248 -318 267 260 20 0 3805 90 0 362 -319 378 46 -20 0 3584 90 201 0 -320 420 311 -30 893 1053 90 589 0 -321 384 217 -30 1809 1969 90 717 0 -322 418 300 -30 611 771 90 835 0 -323 356 77 -10 2249 2409 90 534 0 -324 253 244 -30 0 3818 90 345 0 -325 323 258 10 0 3751 90 0 573 -326 293 454 -20 0 3616 90 847 0 -327 231 97 20 0 3670 90 0 752 -328 316 234 10 2661 2821 90 0 675 -329 207 196 20 2565 2725 90 0 708 -330 321 228 30 0 3750 90 0 902 -331 382 17 -20 1734 1894 90 205 0 -332 206 326 -20 0 3737 90 526 0 -333 198 284 -30 0 3762 90 367 0 -334 137 186 -20 2912 3072 90 683 0 -335 229 396 -10 2882 3042 90 964 0 -336 268 235 -20 1842 2002 90 387 0 -337 95 243 20 0 3669 90 0 316 -338 297 430 20 378 538 90 0 851 -339 393 368 -30 0 3639 90 566 0 -340 66 391 -20 0 3593 90 57 0 -341 189 339 -30 2863 3023 90 342 0 -342 280 351 30 116 276 90 0 341 -343 241 77 30 1225 1385 90 0 454 -344 134 265 -10 2666 2826 90 795 0 -345 420 95 30 345 505 90 0 324 -346 111 279 30 141 301 90 0 373 -347 367 358 -10 2133 2293 90 148 0 -348 239 373 -30 1905 2065 90 236 0 -349 384 235 -20 0 3690 90 980 0 -350 284 360 -20 0 3709 90 653 0 -351 325 75 -10 2370 2530 90 219 0 -352 279 369 10 0 3702 90 0 827 -353 340 449 -20 0 3606 90 419 0 -354 275 448 10 0 3625 90 0 979 -355 447 88 -30 2963 3123 90 365 0 -356 314 279 -10 270 430 90 98 0 -357 434 377 -10 0 3601 90 359 0 -358 67 377 -20 0 3602 90 129 0 -359 370 353 10 746 906 90 0 357 -360 57 367 -20 2169 2329 90 754 0 -361 332 486 20 1912 2072 90 0 558 -362 386 361 -20 1527 1687 90 318 0 -363 55 282 40 305 465 90 0 632 -364 317 467 20 0 3597 90 0 43 -365 335 54 30 1853 2013 90 0 355 -366 348 466 -10 0 3587 90 117 0 -367 132 314 30 0 3690 90 0 333 -368 328 216 10 0 3739 90 0 745 -369 416 48 -20 1880 2040 90 989 0 -370 370 55 10 2886 3046 0 0 1003 -371 149 434 -10 0 3615 90 253 0 -372 466 169 -30 2502 2662 90 171 0 -373 141 267 -30 0 3714 90 346 0 -374 258 350 20 1822 1982 90 0 20 -375 428 312 -30 0 3636 90 993 0 -376 211 188 10 0 3751 0 0 1010 -377 50 343 -30 0 3604 90 467 0 -378 107 311 -10 2813 2973 90 243 0 -379 178 441 20 0 3620 90 0 572 -380 232 85 10 2309 2469 90 0 761 -381 391 23 -30 0 3557 90 294 0 -382 137 227 20 0 3709 90 0 74 -383 161 203 20 100 260 90 0 315 -384 363 212 -10 3274 3434 90 267 0 -385 384 346 -20 1331 1491 90 269 0 -386 166 434 -10 2965 3125 90 299 0 -387 274 248 20 0 3800 90 0 336 -388 156 421 30 0 3629 90 0 728 -389 346 211 10 0 3721 90 0 819 -390 265 358 20 1352 1512 90 0 237 -391 96 407 20 0 3605 90 0 841 -392 443 70 -20 2464 2624 90 147 0 -393 125 212 -30 0 3694 90 587 0 -394 361 337 50 363 523 90 0 446 -395 322 78 -20 2464 2624 90 732 0 -396 481 156 20 1600 1760 90 0 66 -397 188 293 30 0 3749 90 0 781 -398 76 408 30 0 3589 90 0 255 -399 130 304 -10 3175 3335 90 812 0 -400 378 363 -20 0 3654 90 507 0 -401 185 301 20 1330 1490 90 0 671 -402 385 235 -10 2581 2741 90 136 0 -403 261 350 -30 0 3724 90 67 0 -404 389 33 -10 0 3567 90 416 0 -405 151 214 -30 511 671 90 252 0 -406 265 94 10 258 418 90 0 240 -407 65 164 -10 2595 2755 90 480 0 -408 293 81 10 174 334 90 0 749 -409 363 55 -20 2983 3143 90 465 0 -410 465 176 -30 0 3597 90 49 0 -411 428 298 -10 1654 1814 90 870 0 -412 75 379 -20 0 3607 90 426 0 -413 404 378 -20 0 3624 90 580 0 -414 203 203 -30 0 3758 90 461 0 -415 259 88 20 0 3662 90 0 843 -416 362 17 10 0 3566 90 0 404 -417 320 258 20 564 724 90 0 56 -418 59 358 20 2358 2518 90 0 947 -419 316 453 20 224 384 90 0 353 -420 225 192 20 74 234 90 0 539 -421 140 206 30 0 3706 90 0 270 -422 83 151 10 0 3630 90 0 313 -423 366 196 -20 0 3697 90 871 0 -424 108 245 20 0 3682 90 0 228 -425 129 267 10 2480 2640 90 0 102 -426 57 379 20 907 1067 90 0 412 -427 329 56 -30 1457 1617 90 861 0 -428 213 363 -20 0 3706 90 974 0 -429 76 391 30 0 3601 90 0 915 -430 330 259 30 1231 1391 90 0 603 -431 136 217 30 0 3706 90 0 277 -432 165 333 20 0 3706 90 0 829 -433 160 431 -20 0 3622 90 197 0 -434 338 489 -20 1308 1468 90 730 0 -435 335 64 -10 0 3620 90 693 0 -436 412 361 10 1748 1908 90 0 221 -437 259 90 30 0 3664 90 0 204 -438 265 77 20 0 3651 0 0 1008 -439 460 173 20 2887 3047 90 0 81 -440 83 301 -20 0 3650 90 786 0 -441 201 331 -20 0 3730 90 668 0 -442 118 214 -20 0 3688 90 538 0 -443 395 30 -10 2796 2956 90 244 0 -444 125 444 -10 1997 2157 90 258 0 -445 283 248 -10 0 3791 90 767 0 -446 391 334 -50 1047 1207 90 394 0 -447 212 215 -30 3160 3320 90 968 0 -448 276 428 -20 1048 1208 90 810 0 -449 96 152 20 0 3642 90 0 484 -450 425 85 10 0 3584 90 0 139 -451 336 7 10 0 3567 90 0 910 -452 196 219 -10 3054 3214 90 528 0 -453 210 94 -10 997 1157 90 999 0 -454 310 81 -30 0 3645 90 343 0 -455 341 37 20 434 594 90 0 678 -456 344 478 -30 2296 2456 90 991 0 -457 406 37 40 275 435 90 0 953 -458 69 346 -10 0 3620 90 698 0 -459 80 376 40 407 567 90 0 256 -460 314 449 -20 0 3615 90 301 0 -461 209 201 30 2753 2913 90 0 414 -462 88 379 20 689 849 90 0 198 -463 352 500 30 1505 1665 90 0 826 -464 65 357 -10 0 3611 90 657 0 -465 345 15 20 0 3571 90 0 409 -466 125 245 -20 3002 3162 90 696 0 -467 52 369 30 2073 2233 90 0 377 -468 449 140 -20 730 890 90 134 0 -469 430 310 30 0 3635 0 0 1007 -470 109 325 -10 0 3665 90 51 0 -471 446 139 -10 0 3599 90 988 0 -472 229 214 20 41 201 90 0 637 -473 197 301 10 0 3751 90 0 872 -474 146 245 -10 0 3720 90 994 0 -475 401 368 20 664 824 90 0 79 -476 116 259 -30 2613 2773 90 777 0 -477 374 55 30 2792 2952 90 0 759 -478 249 251 -20 3036 3196 90 804 0 -479 325 490 10 0 3573 90 0 874 -480 59 159 10 0 3613 90 0 407 -481 186 177 20 1361 1521 90 0 736 -482 319 229 -10 0 3752 90 591 0 -483 26 269 30 0 3600 90 0 928 -484 53 139 -20 0 3598 90 449 0 -485 471 154 -10 0 3584 90 155 0 -486 301 247 10 0 3773 90 0 36 -487 388 220 -20 0 3683 90 729 0 -488 235 81 20 0 3655 90 0 773 -489 347 479 -20 2389 2549 90 735 0 -490 367 59 -10 0 3601 90 952 0 -491 261 370 30 1069 1229 90 0 816 -492 441 287 -20 0 3630 90 123 0 -493 44 153 30 0 3597 90 0 158 -494 263 351 10 1545 1705 90 0 261 -495 444 157 10 215 375 90 0 30 -496 374 17 -20 0 3561 90 576 0 -497 448 295 -30 0 3621 90 520 0 -498 446 297 10 2232 2392 90 0 46 -499 347 40 -20 0 3593 90 655 0 -500 318 493 10 825 985 90 0 549 -501 399 352 10 1260 1420 90 0 800 -502 51 364 -20 1887 2047 90 763 0 -503 250 217 -30 2534 2694 90 976 0 -504 107 225 30 440 600 90 0 563 -505 173 208 -20 0 3737 90 18 0 -506 204 189 -20 0 3748 90 231 0 -507 399 379 20 2960 3120 90 0 400 -508 79 346 10 0 3628 90 0 906 -509 360 338 10 272 432 90 0 230 -510 390 17 -10 0 3553 90 727 0 -511 207 337 20 0 3727 90 0 292 -512 409 361 30 0 3631 90 0 54 -513 206 377 20 559 719 90 0 807 -514 429 294 -30 0 3640 90 931 0 -515 375 31 -10 2185 2345 90 876 0 -516 426 80 -30 0 3580 90 518 0 -517 74 374 20 0 3609 90 0 734 -518 408 20 30 0 3545 90 0 516 -519 239 369 -30 1811 1971 90 126 0 -520 420 308 30 709 869 90 0 497 -521 254 357 -30 0 3717 90 23 0 -522 53 297 -20 0 3622 90 6 0 -523 434 382 -10 0 3598 90 537 0 -524 204 171 20 0 3733 90 0 984 -525 173 169 -10 1558 1718 90 623 0 -526 190 332 20 0 3723 90 0 332 -527 274 231 30 0 3794 90 0 633 -528 207 194 10 0 3754 90 0 452 -529 315 232 10 0 3757 90 0 280 -530 425 87 20 444 604 90 0 863 -531 312 64 20 582 742 90 0 254 -532 129 244 30 2908 3068 90 0 842 -533 278 230 -30 0 3790 90 789 0 -534 351 75 10 0 3622 90 0 323 -535 185 293 10 0 3747 90 0 755 -536 364 364 20 0 3663 90 0 702 -537 432 369 10 0 3607 90 0 523 -538 128 249 20 0 3702 90 0 442 -539 221 179 -20 369 529 90 420 0 -540 194 296 20 0 3752 90 0 973 -541 413 350 10 0 3633 90 0 89 -542 214 372 -20 0 3697 90 296 0 -543 379 229 10 1045 1205 90 0 276 -544 91 298 -10 2013 2173 90 595 0 -545 226 120 30 0 3692 90 0 788 -546 344 46 -40 1660 1820 90 143 0 -547 238 84 10 1634 1794 90 0 779 -548 138 276 -20 1915 2075 90 191 0 -549 346 487 -10 1808 1968 90 500 0 -550 95 160 10 0 3645 90 0 914 -551 103 266 30 1062 1222 90 0 604 -552 98 286 -10 0 3668 90 112 0 -553 77 172 -10 2976 3136 90 281 0 -554 147 199 30 308 468 90 0 599 -555 210 98 10 0 3667 90 0 920 -556 428 292 -30 0 3642 90 611 0 -557 121 236 -20 2034 2194 90 855 0 -558 336 479 -20 0 3580 90 361 0 -559 203 369 -20 841 1001 90 596 0 -560 296 232 10 1268 1428 90 0 153 -561 87 369 10 201 361 90 0 272 -562 247 88 30 1924 2084 90 0 617 -563 104 246 -30 1353 1513 90 504 0 -564 67 302 -20 2493 2653 90 839 0 -565 114 296 -20 0 3681 90 626 0 -566 394 356 30 0 3646 90 0 339 -567 192 306 20 1523 1683 90 0 194 -568 16 285 30 2492 2652 90 0 113 -569 419 310 -20 0 3645 90 110 0 -570 389 221 10 0 3683 0 0 1011 -571 129 264 20 0 3703 90 0 740 -572 172 483 -20 904 1064 90 379 0 -573 325 251 -10 1425 1585 90 325 0 -574 151 436 -20 2386 2546 90 888 0 -575 263 91 20 0 3665 90 0 869 -576 401 15 20 685 845 90 0 496 -577 253 382 -10 3090 3250 90 31 0 -578 247 89 20 2015 2175 90 0 899 -579 283 229 -20 0 3785 90 5 0 -580 366 341 20 553 713 90 0 413 -581 392 213 20 2092 2252 90 0 934 -582 167 304 20 207 367 90 0 149 -583 477 154 10 1506 1666 90 0 725 -584 234 383 -20 0 3691 90 225 0 -585 199 327 -10 0 3732 90 948 0 -586 140 220 30 0 3710 90 0 176 -587 144 266 30 311 471 90 0 393 -588 432 105 -10 0 3592 90 131 0 -589 368 325 30 139 299 90 0 320 -590 202 386 20 0 3680 90 0 775 -591 325 246 10 1520 1680 90 0 482 -592 430 86 -20 0 3581 90 88 0 -593 200 195 -20 0 3750 90 104 0 -594 440 295 30 2136 2296 90 0 667 -595 77 287 10 1905 2065 90 0 544 -596 187 362 20 0 3696 90 0 559 -597 131 207 -20 0 3698 90 166 0 -598 405 5 20 786 946 90 0 864 -599 125 226 -30 1389 1549 90 554 0 -600 254 335 -30 3013 3173 90 878 0 -601 212 168 20 860 1020 90 0 926 -602 281 279 -20 0 3782 90 649 0 -603 326 241 -30 1615 1775 90 430 0 -604 152 241 -30 0 3726 90 551 0 -605 71 139 30 807 967 90 0 273 -606 46 277 10 589 749 90 0 156 -607 393 13 20 1358 1518 90 0 700 -608 87 454 -10 882 1042 90 877 0 -609 86 359 -20 0 3628 90 82 0 -610 220 192 -30 0 3759 90 638 0 -611 426 279 30 3112 3272 90 0 556 -612 131 267 -40 0 3704 90 923 0 -613 200 297 30 553 713 90 0 220 -614 299 442 -20 1904 2064 90 782 0 -615 265 218 20 2429 2589 0 0 1016 -616 398 231 20 2296 2456 90 0 946 -617 312 74 -30 0 3638 90 562 0 -618 99 307 20 0 3663 90 0 997 -619 22 283 -20 0 3594 90 833 0 -620 67 160 -10 2690 2850 90 992 0 -621 390 42 -40 2588 2748 90 297 0 -622 44 279 10 0 3616 90 0 737 -623 200 182 10 0 3740 90 0 525 -624 458 303 -20 0 3610 90 966 0 -625 298 438 -30 567 727 90 929 0 -626 62 301 20 0 3630 90 0 565 -627 112 251 10 0 3686 90 0 694 -628 184 354 30 0 3701 90 0 783 -629 140 180 -40 0 3694 90 94 0 -630 269 428 -10 1145 1305 90 981 0 -631 123 206 -20 1885 2045 90 983 0 -632 36 284 -40 0 3608 90 363 0 -633 272 233 -30 0 3797 90 527 0 -634 320 231 -10 2384 2544 90 901 0 -635 211 180 20 758 918 90 0 103 -636 114 169 20 2612 2772 90 0 970 -637 245 239 -20 2933 3093 90 472 0 -638 117 204 30 0 3684 90 0 610 -639 316 254 -20 0 3758 90 739 0 -640 169 443 30 500 660 90 0 941 -641 212 96 10 0 3666 90 0 140 -642 119 285 40 0 3689 90 0 90 -643 71 163 20 0 3625 90 0 151 -644 78 361 -20 0 3620 90 62 0 -645 354 219 -30 3375 3535 90 756 0 -646 389 233 -20 0 3684 90 748 0 -647 90 391 10 541 701 90 0 937 -648 209 307 -10 1811 1971 90 142 0 -649 363 351 20 2923 3083 90 0 602 -650 405 47 10 255 415 90 0 885 -651 278 329 -30 0 3741 90 78 0 -652 261 371 20 0 3703 90 0 882 -653 302 470 20 2227 2387 90 0 350 -654 373 205 40 0 3694 90 0 64 -655 381 20 20 1828 1988 90 0 499 -656 90 277 -10 662 822 90 41 0 -657 46 341 10 0 3601 90 0 464 -658 50 138 -10 0 3595 90 677 0 -659 61 437 20 265 425 90 0 758 -660 331 252 -10 0 3743 90 921 0 -661 440 81 -10 0 3570 90 935 0 -662 384 206 20 739 899 90 0 686 -663 232 87 30 0 3661 90 0 266 -664 59 471 20 0 3532 90 0 232 -665 174 304 20 110 270 90 0 199 -666 106 248 20 0 3680 90 0 60 -667 410 287 -30 0 3660 90 594 0 -668 206 313 20 2091 2251 90 0 441 -669 412 367 20 960 1120 90 0 26 -670 412 300 -10 515 675 90 298 0 -671 206 295 -20 2809 2969 90 401 0 -672 329 459 10 0 3601 90 0 120 -673 177 436 20 199 359 90 0 111 -674 266 264 30 0 3803 0 0 1006 -675 308 235 -10 3135 3295 90 328 0 -676 260 330 -10 3203 3363 90 15 0 -677 49 136 10 1705 1865 90 0 658 -678 356 28 -20 1000 1160 90 455 0 -679 428 384 10 0 3602 90 0 16 -680 220 362 20 1331 1491 90 0 962 -681 437 61 -20 0 3559 90 32 0 -682 365 360 20 0 3665 90 0 939 -683 107 168 20 0 3660 90 0 334 -684 220 177 20 0 3746 90 0 1 -685 347 21 -30 1386 1546 90 77 0 -686 293 245 -20 0 3781 90 662 0 -687 267 436 -30 3007 3167 90 858 0 -688 216 96 -10 0 3667 90 247 0 -689 383 351 20 167 327 90 0 262 -690 289 240 20 0 3784 0 0 1015 -691 129 185 -20 2814 2974 90 893 0 -692 291 450 -20 2705 2865 90 744 0 -693 387 21 10 1548 1708 90 0 435 -694 116 255 -10 0 3690 90 627 0 -695 50 368 30 0 3592 0 0 1005 -696 121 249 20 0 3695 90 0 466 -697 404 346 -30 0 3643 90 132 0 -698 77 360 10 0 3619 90 0 458 -699 447 102 10 0 3578 90 0 13 -700 366 16 -20 0 3563 90 607 0 -701 348 16 -20 1780 1940 90 894 0 -702 353 346 -20 0 3684 90 536 0 -703 54 485 -10 1773 1933 90 217 0 -704 319 77 30 0 3638 90 0 58 -705 83 282 -30 1532 1692 90 100 0 -706 384 24 -40 2601 2761 90 223 0 -707 52 469 -30 1387 1547 90 10 0 -708 199 200 -20 2945 3105 90 329 0 -709 273 234 -10 0 3796 90 942 0 -710 16 281 -20 0 3588 90 938 0 -711 151 442 -20 0 3608 90 857 0 -712 223 114 -20 332 492 90 12 0 -713 191 308 -20 0 3742 90 865 0 -714 448 297 10 0 3621 90 0 293 -715 386 28 20 2507 2667 90 0 849 -716 106 295 -10 0 3674 90 214 0 -717 387 224 30 1517 1677 90 0 321 -718 96 377 10 0 3625 90 0 251 -719 86 361 -10 3347 3507 90 234 0 -720 211 107 10 531 691 90 0 188 -721 43 125 -20 1603 1763 90 17 0 -722 369 351 20 0 3668 90 0 159 -723 388 228 10 1235 1395 90 0 69 -724 325 228 20 1810 1970 90 0 19 -725 490 159 -10 1897 2057 90 583 0 -726 420 78 20 0 3583 90 0 190 -727 396 4 10 0 3538 90 0 510 -728 222 317 -30 0 3752 90 388 0 -729 389 198 20 543 703 90 0 487 -730 322 454 20 0 3608 90 0 434 -731 241 391 -30 2985 3145 90 310 0 -732 256 117 20 0 3691 90 0 395 -733 298 255 10 0 3776 90 0 215 -734 74 363 -20 0 3615 90 517 0 -735 345 496 20 0 3561 90 0 489 -736 167 169 -20 1654 1814 90 481 0 -737 23 306 -10 2182 2342 90 622 0 -738 317 62 -10 0 3625 90 309 0 -739 319 257 20 0 3755 90 0 639 -740 129 255 -20 0 3703 90 571 0 -741 59 377 -20 2088 2248 90 895 0 -742 138 272 -30 1821 1981 90 196 0 -743 317 251 30 940 1100 90 0 975 -744 279 436 20 0 3636 90 0 692 -745 371 207 -10 241 401 90 368 0 -746 263 372 10 886 1046 90 0 300 -747 50 347 10 0 3602 90 0 873 -748 275 236 20 0 3796 90 0 646 -749 334 47 -10 331 491 90 408 0 -750 50 383 -20 1889 2049 90 24 0 -751 170 338 -10 2284 2444 90 73 0 -752 245 109 -20 0 3683 90 327 0 -753 69 475 30 1189 1349 90 0 125 -754 54 372 20 1991 2151 90 0 360 -755 198 334 -10 2203 2363 90 535 0 -756 380 228 30 0 3693 90 0 645 -757 425 118 10 219 379 90 0 830 -758 80 398 -20 0 3599 90 659 0 -759 366 57 -30 3076 3236 90 477 0 -760 67 463 30 584 744 90 0 235 -761 226 86 -10 2595 2755 90 380 0 -762 59 480 -20 1583 1743 90 801 0 -763 40 378 20 0 3579 90 0 502 -764 250 367 -10 2113 2273 90 146 0 -765 157 436 -20 0 3617 90 780 0 -766 463 161 -10 2403 2563 90 908 0 -767 266 250 10 409 569 90 0 445 -768 51 162 -30 2213 2373 90 963 0 -769 194 353 -10 0 3707 90 141 0 -770 383 41 -20 2685 2845 90 909 0 -771 247 82 -20 0 3656 90 924 0 -772 457 142 20 829 989 90 0 818 -773 244 94 -20 1795 1955 90 488 0 -774 441 63 -30 0 3557 90 785 0 -775 244 371 -20 2310 2470 90 590 0 -776 174 444 10 0 3616 90 0 904 -777 94 247 30 853 1013 90 0 476 -778 320 225 20 0 3750 90 0 128 -779 316 80 -10 0 3642 90 547 0 -780 155 447 20 2672 2832 90 0 765 -781 211 308 -30 0 3755 90 397 0 -782 297 442 20 1812 1972 90 0 614 -783 200 342 -30 997 1157 90 628 0 -784 44 325 -30 3181 3341 90 154 0 -785 438 60 30 0 3557 90 0 774 -786 80 374 20 0 3614 90 0 440 -787 59 163 -20 2311 2471 90 121 0 -788 236 92 -30 2210 2370 90 545 0 -789 414 66 30 1592 1752 90 0 533 -790 34 279 -10 0 3607 90 821 0 -791 475 156 -20 0 3581 90 65 0 -792 404 310 -10 0 3659 90 130 0 -793 367 239 -10 0 3707 90 179 0 -794 210 359 -20 1568 1728 90 797 0 -795 133 278 10 0 3704 90 0 344 -796 446 169 10 0 3612 90 0 173 -797 188 356 20 0 3702 90 0 794 -798 312 252 -20 845 1005 90 967 0 -799 69 485 10 0 3528 90 0 160 -800 413 353 -10 1650 1810 90 501 0 -801 54 446 20 0 3547 90 0 762 -802 56 357 -10 0 3603 90 87 0 -803 230 105 -30 0 3678 90 268 0 -804 196 302 20 0 3750 90 0 478 -805 391 373 -10 0 3637 90 311 0 -806 101 295 30 0 3669 90 0 50 -807 234 350 -20 2617 2777 90 513 0 -808 215 108 20 2760 2920 90 0 8 -809 142 457 -10 0 3591 90 45 0 -810 283 425 20 0 3646 90 0 448 -811 77 397 -30 919 1079 90 905 0 -812 105 317 10 0 3665 90 0 399 -813 382 213 -10 1715 1875 90 213 0 -814 213 76 -20 0 3647 90 265 0 -815 417 56 20 0 3569 90 0 957 -816 183 340 -30 0 3712 90 491 0 -817 123 242 -20 3190 3350 90 930 0 -818 475 136 -20 1029 1189 90 772 0 -819 377 246 -10 3054 3214 90 389 0 -820 310 484 30 626 786 90 0 242 -821 47 280 10 403 563 90 0 790 -822 57 456 20 388 548 90 0 137 -823 313 266 20 373 533 90 0 844 -824 475 145 30 0 3576 90 0 144 -825 400 376 -10 0 3629 90 195 0 -826 290 416 -30 0 3654 90 463 0 -827 277 369 -10 0 3702 90 352 0 -828 91 303 -20 0 3657 90 3 0 -829 194 301 -20 0 3749 90 432 0 -830 254 238 -10 0 3812 90 757 0 -831 215 91 -10 0 3662 90 886 0 -832 500 162 20 2088 2248 90 0 954 -833 56 287 20 0 3627 90 0 619 -834 289 452 -10 0 3619 90 969 0 -835 378 326 30 160 320 90 0 322 -836 197 350 30 1186 1346 90 0 118 -837 243 88 -40 1731 1891 90 203 0 -838 250 72 -20 1125 1285 90 210 0 -839 101 290 20 1150 1310 90 0 564 -840 351 480 30 0 3573 90 0 264 -841 67 357 -20 3044 3204 90 391 0 -842 128 240 -30 3285 3445 90 532 0 -843 253 81 -20 0 3655 90 415 0 -844 307 227 -20 2853 3013 90 823 0 -845 233 441 -20 0 3633 90 226 0 -846 311 47 -20 0 3613 90 63 0 -847 292 456 20 0 3614 90 0 326 -848 183 187 -30 0 3733 90 987 0 -849 392 31 -20 2890 3050 90 715 0 -850 103 251 10 0 3677 90 0 122 -851 300 443 -20 1996 2156 90 338 0 -852 420 295 -20 0 3649 90 995 0 -853 427 64 -40 1292 1452 90 233 0 -854 372 354 -10 0 3664 90 106 0 -855 101 263 20 0 3675 90 0 557 -856 141 454 20 1686 1846 90 0 127 -857 146 461 20 1497 1657 90 0 711 -858 298 430 30 469 629 90 0 687 -859 148 270 10 119 279 90 0 101 -860 76 287 20 1814 1974 90 0 925 -861 308 55 30 871 1031 90 0 427 -862 143 257 -10 501 661 90 14 0 -863 393 2 -20 979 1139 90 530 0 -864 385 28 -20 0 3565 90 598 0 -865 204 291 20 0 3763 90 0 713 -866 132 272 -10 0 3704 90 290 0 -867 206 379 -20 0 3688 90 940 0 -868 69 383 10 0 3600 90 0 977 -869 245 96 -20 0 3670 90 575 0 -870 431 301 10 0 3636 90 0 411 -871 448 94 20 0 3572 90 0 423 -872 199 305 -10 0 3749 90 473 0 -873 95 356 -10 3447 3607 90 747 0 -874 328 498 -10 0 3565 90 479 0 -875 108 222 10 0 3680 90 0 289 -876 341 26 10 0 3583 90 0 515 -877 63 454 10 0 3548 90 0 608 -878 222 357 30 0 3714 90 0 600 -879 416 364 -30 0 3623 90 889 0 -880 127 278 10 2106 2266 90 0 25 -881 140 252 20 0 3714 90 0 27 -882 218 298 -20 0 3767 90 652 0 -883 432 87 -10 2858 3018 90 72 0 -884 216 300 30 0 3764 0 0 1014 -885 438 72 -10 1098 1258 90 650 0 -886 184 178 10 1454 1614 90 0 831 -887 345 468 -10 2677 2837 90 175 0 -888 150 435 20 0 3614 90 0 574 -889 395 365 30 0 3639 90 0 879 -890 208 371 20 655 815 90 0 47 -891 190 292 10 745 905 90 0 959 -892 78 479 30 1089 1249 90 0 209 -893 104 198 20 0 3670 90 0 691 -894 346 13 20 1686 1846 90 0 701 -895 47 388 20 1193 1353 90 0 741 -896 315 57 20 0 3621 90 0 211 -897 110 199 -10 0 3675 90 59 0 -898 323 60 -20 0 3621 90 224 0 -899 308 82 -20 0 3647 90 578 0 -900 216 374 30 1035 1195 90 0 182 -901 326 253 10 1039 1199 90 0 634 -902 308 232 -30 2948 3108 90 330 0 -903 118 223 10 339 499 90 0 943 -904 149 444 -10 0 3606 90 776 0 -905 95 395 30 0 3612 90 0 811 -906 117 319 -10 0 3675 90 508 0 -907 262 352 -10 0 3722 90 960 0 -908 468 135 10 932 1092 90 0 766 -909 351 31 20 813 973 90 0 770 -910 361 15 -10 2118 2278 90 451 0 -911 195 300 10 0 3750 90 0 202 -912 397 27 20 0 3557 90 0 52 -913 179 311 10 0 3731 90 0 99 -914 77 133 -10 709 869 90 550 0 -915 66 397 -30 0 3589 90 429 0 -916 366 352 -10 2830 2990 90 185 0 -917 221 87 20 1403 1563 90 0 274 -918 347 23 -20 0 3578 90 124 0 -919 176 358 10 2075 2235 90 0 35 -920 229 78 -10 2496 2656 90 555 0 -921 272 246 10 218 378 90 0 660 -922 293 67 20 0 3637 90 0 932 -923 140 265 40 1543 1703 90 0 612 -924 238 83 20 0 3657 90 0 771 -925 136 296 -20 0 3702 90 860 0 -926 218 98 -20 2002 2162 90 601 0 -927 290 440 40 1621 1781 90 0 42 -928 29 302 -30 2085 2245 90 483 0 -929 290 425 30 280 440 90 0 625 -930 124 247 20 0 3698 90 0 817 -931 442 287 30 0 3629 90 0 514 -932 294 64 -20 0 3633 90 922 0 -933 74 165 -20 0 3629 90 985 0 -934 382 245 -20 2959 3119 90 581 0 -935 405 24 10 378 538 90 0 661 -936 211 97 20 812 972 90 0 283 -937 88 390 -10 0 3610 90 647 0 -938 37 295 20 0 3607 90 0 710 -939 359 371 -20 0 3662 90 682 0 -940 186 372 20 0 3687 90 0 867 -941 116 446 -30 1898 2058 90 640 0 -942 293 249 10 0 3781 90 0 709 -943 83 228 -10 0 3656 90 903 0 -944 96 269 10 0 3669 90 0 37 -945 179 284 -10 0 3746 90 55 0 -946 368 219 -20 0 3702 90 616 0 -947 66 359 -20 3157 3317 90 418 0 -948 189 338 10 2954 3114 90 0 585 -949 163 277 10 0 3733 90 0 189 -950 5 296 10 0 3575 0 0 1004 -951 152 478 20 0 3576 90 0 278 -952 366 34 10 2086 2246 90 0 490 -953 429 80 -40 0 3578 90 457 0 -954 464 178 -20 2691 2851 90 832 0 -955 138 196 -10 0 3700 90 275 0 -956 87 481 -30 2733 2893 90 181 0 -957 425 99 -20 0 3593 90 815 0 -958 241 362 10 2410 2570 0 0 1009 -959 207 289 -10 2997 3157 90 891 0 -960 264 365 10 0 3709 90 0 907 -961 102 289 -10 1242 1402 90 257 0 -962 233 346 -20 2711 2871 90 680 0 -963 78 141 30 0 3621 90 0 768 -964 196 348 10 0 3713 90 0 335 -965 216 92 -20 2382 2542 90 971 0 -966 444 309 20 2425 2585 90 0 624 -967 313 263 20 0 3760 90 0 798 -968 211 198 30 2660 2820 90 0 447 -969 314 436 10 2101 2261 90 0 834 -970 217 189 -20 0 3755 90 636 0 -971 197 178 20 0 3735 90 0 965 -972 60 497 10 0 3513 90 0 207 -973 206 312 -20 2000 2160 90 540 0 -974 197 351 20 1277 1437 90 0 428 -975 305 233 -30 3041 3201 90 743 0 -976 297 250 30 0 3777 90 0 503 -977 71 348 -10 3055 3215 90 868 0 -978 11 269 10 1110 1270 90 0 22 -979 247 447 -10 0 3627 90 354 0 -980 386 213 20 1996 2156 90 0 349 -981 292 434 10 755 915 90 0 630 -982 436 301 20 0 3632 90 0 85 -983 145 221 20 0 3716 90 0 631 -984 224 96 -20 0 3668 90 524 0 -985 59 128 20 1496 1656 90 0 933 -986 489 150 50 0 3565 0 0 1002 -987 152 225 30 994 1154 90 0 848 -988 426 85 10 0 3583 90 0 471 -989 415 73 20 1495 1655 90 0 369 -990 440 70 -30 2371 2531 90 107 0 -991 320 476 30 0 3588 90 0 456 -992 57 132 10 1312 1472 90 0 620 -993 405 311 30 0 3658 90 0 375 -994 109 250 10 1540 1700 90 0 474 -995 428 314 20 0 3635 90 0 852 -996 40 288 20 1793 1953 90 0 186 -997 175 282 -20 0 3743 90 618 0 -998 298 456 30 0 3613 90 0 200 -999 208 101 10 0 3670 90 0 453 -1000 342 52 -10 0 3606 90 164 0 -1001 305 212 -20 0 3758 90 249 0 -1002 489 150 -50 0 3565 90 986 0 -1003 370 55 -10 2886 3046 90 370 0 -1004 5 296 -10 0 3575 90 950 0 -1005 50 368 -30 0 3592 90 695 0 -1006 266 264 -30 0 3803 90 674 0 -1007 430 310 -30 0 3635 90 469 0 -1008 265 77 -20 0 3651 90 438 0 -1009 241 362 -10 2410 2570 90 958 0 -1010 211 188 -10 0 3751 90 376 0 -1011 389 221 -10 0 3683 90 570 0 -1012 251 376 -10 3186 3346 90 157 0 -1013 152 260 -10 0 3726 90 308 0 -1014 216 300 -30 0 3764 90 884 0 -1015 289 240 -20 0 3784 90 690 0 -1016 265 218 -20 2429 2589 90 615 0 diff --git a/jsprit-instances/instances/lilim/1000/LC2104.txt b/jsprit-instances/instances/lilim/1000/LC2104.txt deleted file mode 100644 index eca670bb2..000000000 --- a/jsprit-instances/instances/lilim/1000/LC2104.txt +++ /dev/null @@ -1,1020 +0,0 @@ -250 700 1 -0 250 250 0 0 3914 0 0 0 -1 212 101 30 0 3671 90 0 788 -2 266 231 40 0 3800 90 0 119 -3 89 284 -20 1436 1596 90 961 0 -4 430 298 10 0 3638 90 0 714 -5 435 77 -10 0 3571 90 588 0 -6 25 293 20 0 3595 90 0 22 -7 43 269 30 687 847 90 0 176 -8 216 117 10 0 3687 90 0 452 -9 294 437 30 661 821 90 0 847 -10 79 479 30 998 1158 90 0 753 -11 365 18 20 0 3566 90 0 770 -12 225 125 20 127 287 90 0 712 -13 448 103 30 0 3578 90 0 355 -14 143 266 10 0 3716 90 0 373 -15 252 347 -30 0 3727 90 335 0 -16 403 390 -30 0 3617 90 54 0 -17 67 153 20 0 3617 90 0 538 -18 90 168 20 3080 3240 90 0 405 -19 302 235 -30 0 3770 90 579 0 -20 259 355 20 1917 2077 90 0 649 -21 149 183 -10 3108 3268 90 563 0 -22 19 297 -20 0 3589 90 6 0 -23 209 358 -20 1477 1637 90 80 0 -24 56 388 20 0 3586 90 0 358 -25 115 269 10 0 3688 90 0 180 -26 377 356 10 0 3659 90 0 359 -27 113 229 -20 0 3686 90 442 0 -28 205 343 20 902 1062 90 0 974 -29 48 137 20 0 3593 90 0 658 -30 467 157 -20 0 3588 90 818 0 -31 220 394 10 0 3677 90 0 245 -32 436 54 20 0 3554 90 0 681 -33 54 357 10 0 3601 90 0 129 -34 456 154 -10 0 3597 90 155 0 -35 216 307 -10 0 3758 90 103 0 -36 280 224 -20 0 3785 90 302 0 -37 90 270 10 565 725 90 0 997 -38 166 452 20 0 3606 90 0 572 -39 17 283 20 0 3589 90 0 710 -40 196 192 -20 0 3745 90 736 0 -41 94 275 10 469 629 90 0 855 -42 292 445 10 0 3625 90 0 927 -43 329 471 -10 0 3590 90 120 0 -44 326 57 -30 0 3617 90 499 0 -45 95 466 -20 0 3559 90 263 0 -46 429 282 -10 3018 3178 90 271 0 -47 229 364 -10 0 3709 90 542 0 -48 457 160 -10 0 3599 90 583 0 -49 452 154 30 332 492 90 0 766 -50 113 289 10 0 3682 90 0 564 -51 67 387 -40 0 3596 90 459 0 -52 368 17 20 2021 2181 90 0 910 -53 341 367 -10 0 3676 90 746 0 -54 410 364 30 1842 2002 90 0 16 -55 80 281 10 0 3652 90 0 705 -56 321 224 30 0 3749 90 0 690 -57 73 395 20 1223 1383 90 0 741 -58 259 76 10 0 3650 90 0 562 -59 121 203 10 0 3687 0 0 1012 -60 118 256 -20 0 3692 90 694 0 -61 236 361 -30 0 3713 90 854 0 -62 78 371 -10 0 3614 90 234 0 -63 301 53 20 0 3621 90 0 846 -64 382 197 20 0 3682 90 0 389 -65 491 160 20 0 3567 90 0 171 -66 453 164 10 0 3604 90 0 954 -67 277 371 -50 595 755 90 394 0 -68 272 212 -20 0 3781 90 922 0 -69 386 218 -10 1901 2061 90 136 0 -70 353 32 10 0 3583 90 0 477 -71 59 389 20 0 3588 90 0 644 -72 414 62 10 0 3575 90 0 785 -73 278 357 -20 0 3714 90 385 0 -74 101 179 20 2412 2572 90 0 183 -75 396 234 20 0 3678 90 0 976 -76 74 390 20 797 957 90 0 251 -77 332 55 30 211 371 90 0 490 -78 272 365 30 0 3707 90 0 347 -79 418 355 -30 2037 2197 90 132 0 -80 216 380 20 0 3690 90 0 23 -81 440 173 -20 3282 3442 90 396 0 -82 89 358 -20 0 3631 90 418 0 -83 66 491 -20 0 3521 90 664 0 -84 317 234 10 2479 2639 90 0 902 -85 439 297 -20 0 3630 90 624 0 -86 394 367 30 380 540 90 0 148 -87 58 364 10 0 3601 90 0 609 -88 290 75 20 191 351 90 0 932 -89 346 344 -10 0 3690 90 96 0 -90 131 269 10 0 3704 90 0 97 -91 236 96 20 1604 1764 90 0 971 -92 29 282 -10 1410 1570 90 950 0 -93 418 385 -30 0 3609 90 523 0 -94 148 225 40 613 773 90 0 329 -95 166 464 10 0 3595 90 0 278 -96 266 373 10 0 3700 90 0 89 -97 201 273 -10 0 3770 90 90 0 -98 255 245 10 0 3817 90 0 224 -99 220 379 -20 0 3692 90 282 0 -100 85 317 -20 0 3646 90 440 0 -101 125 264 20 0 3699 90 0 880 -102 131 253 -20 0 3705 90 476 0 -103 184 188 10 1260 1420 90 0 35 -104 128 209 -10 0 3696 90 480 0 -105 373 364 -10 0 3657 90 436 0 -106 389 342 -20 1145 1305 90 670 0 -107 420 20 30 575 735 90 0 899 -108 132 218 10 136 296 90 0 431 -109 32 256 -20 0 3606 90 199 0 -110 406 339 20 295 455 90 0 566 -111 191 397 -30 0 3666 90 900 0 -112 72 341 -10 0 3625 90 502 0 -113 35 308 -10 3072 3232 90 802 0 -114 169 360 -10 2172 2332 90 141 0 -115 222 381 20 0 3691 90 0 577 -116 96 292 10 0 3665 90 0 552 -117 311 496 -20 0 3571 90 419 0 -118 220 384 -10 0 3687 90 184 0 -119 259 243 -40 0 3813 90 2 0 -120 349 476 10 0 3578 90 0 43 -121 63 159 20 0 3617 0 0 1006 -122 112 243 20 0 3686 90 0 930 -123 448 302 20 2327 2487 90 0 497 -124 343 27 -30 0 3583 90 165 0 -125 67 485 40 2166 2326 90 0 911 -126 220 359 30 1424 1584 90 0 428 -127 147 435 -20 2111 2271 90 197 0 -128 317 235 20 0 3756 90 0 581 -129 43 355 -10 0 3592 90 33 0 -130 368 340 -10 461 621 90 509 0 -131 450 72 10 0 3557 90 0 516 -132 400 364 30 0 3636 90 0 79 -133 355 480 20 0 3572 90 0 353 -134 450 153 20 533 693 90 0 410 -135 126 188 -30 0 3686 90 955 0 -136 380 223 10 0 3692 90 0 69 -137 71 453 -20 685 845 90 822 0 -138 54 287 20 209 369 90 0 897 -139 420 168 10 3393 3553 0 0 1003 -140 219 89 20 0 3661 90 0 635 -141 189 327 10 0 3726 90 0 114 -142 191 309 10 0 3741 0 0 1017 -143 301 67 -20 0 3635 90 617 0 -144 484 161 -10 0 3574 90 908 0 -145 77 483 -20 0 3534 90 232 0 -146 241 375 -20 0 3699 90 722 0 -147 428 64 -10 0 3567 90 757 0 -148 403 361 -30 0 3635 90 86 0 -149 257 336 -30 0 3738 90 519 0 -150 131 241 10 3378 3538 90 0 474 -151 63 166 30 0 3619 90 0 696 -152 71 368 -10 0 3610 90 647 0 -153 272 228 10 2033 2193 90 0 748 -154 25 290 30 0 3596 90 0 156 -155 441 157 10 0 3612 90 0 34 -156 13 266 -30 0 3587 90 154 0 -157 251 376 -10 0 3698 90 182 0 -158 61 170 30 0 3619 90 0 166 -159 386 357 20 1433 1593 90 0 260 -160 95 475 -30 0 3551 90 235 0 -161 90 298 10 2104 2264 90 0 399 -162 71 388 20 0 3598 90 0 167 -163 383 246 20 0 3691 90 0 667 -164 352 38 10 0 3589 90 0 211 -165 395 1 30 0 3536 90 0 124 -166 120 210 -30 0 3688 90 158 0 -167 46 383 -20 0 3581 90 162 0 -168 202 198 30 0 3754 90 0 882 -169 358 365 -10 0 3667 90 939 0 -170 191 352 -10 0 3707 90 574 0 -171 470 152 -20 0 3584 90 65 0 -172 228 124 20 141 301 90 0 720 -173 402 230 10 0 3671 90 0 934 -174 323 229 -10 0 3749 90 686 0 -175 331 486 10 0 3575 90 0 887 -176 112 208 -30 0 3680 90 7 0 -177 172 435 30 0 3624 90 0 222 -178 326 498 10 0 3565 90 0 242 -179 460 183 -20 0 3604 90 832 0 -180 95 279 -10 0 3667 90 25 0 -181 76 456 -20 0 3555 90 540 0 -182 242 350 10 0 3724 90 0 157 -183 152 196 -20 0 3713 90 74 0 -184 268 351 10 0 3722 90 0 118 -185 360 356 10 0 3672 90 0 775 -186 39 296 -20 1983 2143 90 790 0 -187 262 368 30 1162 1322 90 0 682 -188 204 90 -20 1094 1254 90 420 0 -189 149 273 20 212 372 90 0 272 -190 446 86 10 0 3569 90 0 988 -191 139 269 -20 0 3712 90 571 0 -192 483 170 30 0 3578 90 0 485 -193 39 278 -10 1601 1761 90 304 0 -194 201 307 -20 0 3749 90 401 0 -195 395 378 -40 0 3631 90 825 0 -196 139 262 30 0 3713 90 0 859 -197 176 447 20 311 471 90 0 127 -198 67 380 -30 0 3600 90 398 0 -199 35 358 20 0 3584 90 0 109 -200 294 455 -30 0 3615 90 929 0 -201 351 33 20 0 3585 90 0 427 -202 216 316 -20 0 3750 90 983 0 -203 261 96 40 0 3670 90 0 415 -204 238 57 30 0 3631 90 0 547 -205 383 18 20 1643 1803 90 0 496 -206 152 460 -10 0 3593 90 776 0 -207 94 479 20 0 3547 90 0 865 -208 337 453 30 0 3604 90 0 350 -209 135 460 -20 0 3585 90 673 0 -210 260 104 20 157 317 90 0 838 -211 337 63 -10 0 3618 90 164 0 -212 32 247 -10 0 3606 90 632 0 -213 394 205 -20 0 3674 90 662 0 -214 95 294 -10 0 3663 90 795 0 -215 253 241 -20 2835 2995 90 837 0 -216 223 90 -10 0 3662 90 555 0 -217 64 473 10 0 3534 90 0 956 -218 275 431 -30 0 3642 90 305 0 -219 261 84 10 0 3658 90 0 843 -220 176 296 -30 1230 1390 90 836 0 -221 361 349 -20 3016 3176 90 390 0 -222 168 433 -30 0 3624 90 177 0 -223 394 10 40 0 3545 90 0 381 -224 308 60 -10 776 936 90 98 0 -225 94 456 20 0 3566 0 0 1001 -226 73 484 -30 0 3531 90 703 0 -227 277 434 -20 0 3639 90 744 0 -228 119 232 -20 1939 2099 90 629 0 -229 78 375 10 0 3612 90 0 255 -230 366 346 -20 0 3674 90 689 0 -231 125 181 -20 0 3682 90 337 0 -232 69 493 20 0 3521 90 0 145 -233 432 80 40 908 1068 90 0 989 -234 72 391 10 0 3597 90 0 62 -235 85 486 30 0 3537 90 0 160 -236 204 371 -20 0 3695 90 680 0 -237 173 328 -30 0 3715 90 905 0 -238 280 423 10 0 3649 90 0 301 -239 200 327 -30 3150 3310 90 314 0 -240 241 98 -20 0 3672 90 773 0 -241 96 356 10 186 346 90 0 464 -242 332 491 -10 1211 1371 90 178 0 -243 81 283 10 1624 1784 90 0 828 -244 373 22 10 0 3565 90 0 451 -245 255 371 -10 0 3703 90 31 0 -246 358 359 -10 0 3671 90 303 0 -247 216 93 -20 0 3664 90 539 0 -248 73 360 20 0 3616 90 0 257 -249 305 212 -10 0 3758 90 796 0 -250 151 462 10 0 3591 90 0 857 -251 47 389 -20 0 3578 90 76 0 -252 155 198 -20 0 3716 90 833 0 -253 152 457 10 0 3595 90 0 941 -254 329 48 10 0 3608 90 0 700 -255 88 394 -10 0 3608 90 229 0 -256 153 295 -20 3382 3542 90 470 0 -257 81 373 -20 0 3615 90 248 0 -258 163 453 10 0 3604 90 0 951 -259 378 25 -20 0 3566 90 331 0 -260 401 385 -20 0 3622 90 159 0 -261 184 340 10 0 3713 90 0 585 -262 402 362 -30 0 3636 90 835 0 -263 70 482 20 2351 2511 90 0 45 -264 357 445 -20 0 3602 90 361 0 -265 212 71 -10 0 3642 90 999 0 -266 231 81 -30 0 3654 90 268 0 -267 379 208 10 835 995 90 0 756 -268 236 95 30 0 3669 90 0 266 -269 386 344 -10 0 3659 90 356 0 -270 189 200 10 1989 2149 90 0 968 -271 296 253 10 0 3778 90 0 46 -272 73 303 -20 0 3640 90 189 0 -273 30 162 -30 0 3588 90 493 0 -274 230 95 -20 1899 2059 90 814 0 -275 57 131 -10 0 3598 90 708 0 -276 379 245 10 0 3695 90 0 616 -277 107 221 -10 0 3679 90 850 0 -278 154 458 -10 0 3595 90 95 0 -279 290 417 10 0 3653 90 0 614 -280 272 243 30 0 3801 90 0 633 -281 94 130 10 0 3628 90 0 421 -282 222 356 20 0 3715 90 0 99 -283 243 108 -30 0 3682 90 437 0 -284 224 93 -20 2191 2351 90 601 0 -285 155 242 -10 0 3729 90 842 0 -286 440 302 20 0 3628 90 0 492 -287 221 102 20 0 3674 90 0 803 -288 52 484 10 0 3518 90 0 799 -289 111 244 -10 0 3685 90 903 0 -290 132 273 10 0 3704 90 0 862 -291 228 186 20 0 3757 90 0 684 -292 221 374 30 0 3697 90 0 794 -293 406 286 -10 0 3664 90 942 0 -294 390 9 30 1263 1423 90 0 607 -295 335 52 20 0 3609 90 0 323 -296 189 368 -20 0 3692 90 940 0 -297 397 40 -30 0 3568 90 518 0 -298 408 305 10 0 3657 90 0 966 -299 156 434 10 0 3618 90 0 781 -300 180 335 20 0 3714 90 0 816 -301 327 483 -10 2098 2258 90 238 0 -302 363 62 20 0 3605 90 0 36 -303 375 342 10 939 1099 90 0 246 -304 16 280 10 0 3589 90 0 193 -305 277 431 30 0 3641 90 0 218 -306 110 241 20 0 3684 90 0 315 -307 48 385 20 0 3582 90 0 841 -308 152 260 10 0 3726 90 0 923 -309 255 120 -30 0 3694 90 771 0 -310 214 382 -20 0 3688 90 962 0 -311 414 384 -10 0 3613 90 679 0 -312 232 378 -20 0 3695 90 764 0 -313 80 141 -10 494 654 90 550 0 -314 188 330 30 0 3723 90 0 239 -315 157 192 -20 3210 3370 90 306 0 -316 101 237 -20 1831 1991 90 666 0 -317 74 360 40 2856 3016 90 0 698 -318 267 260 20 0 3805 90 0 322 -319 378 46 -20 0 3584 90 598 0 -320 420 311 30 0 3644 90 0 993 -321 384 217 -30 1809 1969 90 717 0 -322 418 300 -20 611 771 90 318 0 -323 356 77 -20 2249 2409 90 295 0 -324 253 244 -30 0 3818 90 830 0 -325 323 258 10 0 3751 0 0 1009 -326 293 454 -30 0 3616 90 998 0 -327 231 97 20 0 3670 90 0 524 -328 316 234 10 0 3757 90 0 675 -329 207 196 -40 2565 2725 90 94 0 -330 321 228 -10 0 3750 90 336 0 -331 382 17 20 1734 1894 90 0 259 -332 206 326 -20 0 3737 90 888 0 -333 198 284 10 0 3762 0 0 1005 -334 137 186 -20 2912 3072 90 424 0 -335 229 396 30 2882 3042 90 0 15 -336 268 235 10 1842 2002 90 0 330 -337 95 243 20 0 3669 90 0 231 -338 297 430 20 378 538 90 0 981 -339 393 368 10 0 3639 90 0 879 -340 66 391 -40 0 3593 90 608 0 -341 189 339 -20 2863 3023 90 668 0 -342 280 351 -20 0 3719 90 456 0 -343 241 77 -20 1225 1385 90 575 0 -344 134 265 -10 2666 2826 90 548 0 -345 420 95 30 345 505 90 0 885 -346 111 279 30 141 301 90 0 868 -347 367 358 -30 0 3665 90 78 0 -348 239 373 10 0 3701 90 0 731 -349 384 235 -20 0 3690 90 646 0 -350 284 360 -30 0 3709 90 208 0 -351 325 75 -10 0 3634 90 1000 0 -352 279 369 10 0 3702 90 0 536 -353 340 449 -20 0 3606 90 133 0 -354 275 448 -30 0 3625 90 826 0 -355 447 88 -30 2963 3123 90 13 0 -356 314 279 10 270 430 90 0 269 -357 434 377 10 0 3601 90 0 507 -358 67 377 -20 0 3602 90 24 0 -359 370 353 -10 746 906 90 26 0 -360 57 367 20 0 3599 90 0 947 -361 332 486 20 1912 2072 90 0 264 -362 386 361 -30 1527 1687 90 512 0 -363 55 282 40 305 465 90 0 821 -364 317 467 -20 0 3597 90 730 0 -365 335 54 -20 1853 2013 90 909 0 -366 348 466 -30 0 3587 90 434 0 -367 132 314 -10 0 3690 90 873 0 -368 328 216 -30 0 3739 90 384 0 -369 416 48 -20 0 3563 90 726 0 -370 370 55 10 0 3596 90 0 759 -371 149 434 30 0 3615 90 0 628 -372 466 169 30 0 3594 90 0 986 -373 141 267 -10 0 3714 90 14 0 -374 258 350 -10 1822 1982 90 403 0 -375 428 312 10 0 3636 90 0 469 -376 211 188 10 0 3751 90 0 970 -377 50 343 -20 0 3604 90 784 0 -378 107 311 -30 2813 2973 90 806 0 -379 178 441 20 0 3620 90 0 904 -380 232 85 -40 0 3659 90 503 0 -381 391 23 -40 0 3557 90 223 0 -382 137 227 20 0 3709 90 0 987 -383 161 203 20 0 3724 90 0 505 -384 363 212 30 3274 3434 90 0 368 -385 384 346 20 0 3660 90 0 73 -386 166 434 40 2965 3125 90 0 596 -387 274 248 20 0 3800 90 0 724 -388 156 421 -20 0 3629 90 765 0 -389 346 211 -20 0 3721 90 64 0 -390 265 358 20 1352 1512 90 0 221 -391 96 407 20 0 3605 90 0 877 -392 443 70 20 2464 2624 90 0 530 -393 125 212 -10 0 3694 90 933 0 -394 361 337 50 363 523 90 0 67 -395 322 78 -10 2464 2624 90 898 0 -396 481 156 20 0 3575 90 0 81 -397 188 293 30 0 3749 90 0 755 -398 76 408 30 0 3589 90 0 198 -399 130 304 -10 0 3693 90 161 0 -400 378 363 30 0 3654 90 0 958 -401 185 301 20 0 3742 90 0 194 -402 385 235 -20 2581 2741 90 967 0 -403 261 350 10 0 3724 90 0 374 -404 389 33 -10 0 3567 90 706 0 -405 151 214 -20 0 3719 90 18 0 -406 265 94 10 0 3668 90 0 478 -407 65 164 20 0 3620 90 0 627 -408 293 81 -20 0 3650 90 531 0 -409 363 55 10 0 3599 90 0 576 -410 465 176 -20 0 3597 90 134 0 -411 428 298 30 1654 1814 90 0 514 -412 75 379 30 0 3607 90 0 763 -413 404 378 10 0 3624 90 0 805 -414 203 203 10 0 3758 90 0 992 -415 259 88 -40 0 3662 90 203 0 -416 362 17 10 0 3566 90 0 864 -417 320 258 20 564 724 90 0 591 -418 59 358 20 0 3605 90 0 82 -419 316 453 20 224 384 90 0 117 -420 225 192 20 0 3761 90 0 188 -421 140 206 -10 0 3706 90 281 0 -422 83 151 10 0 3630 90 0 553 -423 366 196 -10 0 3697 90 543 0 -424 108 245 20 0 3682 90 0 334 -425 129 267 -10 2480 2640 90 944 0 -426 57 379 20 0 3592 90 0 786 -427 329 56 -20 1457 1617 90 201 0 -428 213 363 -30 0 3706 90 126 0 -429 76 391 30 0 3601 90 0 719 -430 330 259 -20 0 3744 90 603 0 -431 136 217 -10 0 3706 90 108 0 -432 165 333 -40 0 3706 90 734 0 -433 160 431 -20 0 3622 90 856 0 -434 338 489 30 0 3570 90 0 366 -435 335 64 -10 0 3620 90 952 0 -436 412 361 10 0 3628 90 0 105 -437 259 90 30 0 3664 90 0 283 -438 265 77 20 0 3651 90 0 578 -439 460 173 -20 0 3601 90 725 0 -440 83 301 20 0 3650 90 0 100 -441 201 331 -20 0 3730 90 780 0 -442 118 214 20 0 3688 90 0 27 -443 395 30 -20 2796 2956 90 912 0 -444 125 444 10 1997 2157 90 0 711 -445 283 248 30 0 3791 90 0 733 -446 391 334 20 0 3660 90 0 594 -447 212 215 20 3160 3320 90 0 637 -448 276 428 20 1048 1208 90 0 979 -449 96 152 20 0 3642 90 0 484 -450 425 85 10 0 3584 0 0 1008 -451 336 7 -10 0 3567 90 244 0 -452 196 219 -10 3054 3214 90 8 0 -453 210 94 -30 0 3663 90 545 0 -454 310 81 -20 0 3645 90 849 0 -455 341 37 20 434 594 90 0 876 -456 344 478 20 2296 2456 90 0 342 -457 406 37 40 0 3560 90 0 510 -458 69 346 -10 0 3620 90 508 0 -459 80 376 40 407 567 90 0 51 -460 314 449 30 0 3615 90 0 874 -461 209 201 30 0 3761 90 0 914 -462 88 379 -30 0 3617 90 937 0 -463 352 500 -20 1505 1665 90 735 0 -464 65 357 -10 0 3611 90 241 0 -465 345 15 20 0 3571 90 0 709 -466 125 245 20 3002 3162 90 0 817 -467 52 369 30 0 3593 90 0 695 -468 449 140 -10 730 890 90 495 0 -469 430 310 -10 0 3635 90 375 0 -470 109 325 20 0 3665 90 0 256 -471 446 139 20 0 3599 90 0 772 -472 229 214 -20 0 3783 90 610 0 -473 197 301 10 0 3751 90 0 613 -474 146 245 -10 0 3720 90 150 0 -475 401 368 -10 0 3633 90 697 0 -476 116 259 20 0 3690 90 0 102 -477 374 55 -10 2792 2952 90 70 0 -478 249 251 -10 3036 3196 90 406 0 -479 325 490 10 0 3573 90 0 840 -480 59 159 10 0 3613 90 0 104 -481 186 177 20 0 3727 90 0 525 -482 319 229 -10 0 3752 90 560 0 -483 26 269 30 0 3600 90 0 943 -484 53 139 -20 0 3598 90 449 0 -485 471 154 -30 0 3584 90 192 0 -486 301 247 10 0 3773 90 0 813 -487 388 220 -10 0 3683 90 723 0 -488 235 81 -20 0 3655 90 936 0 -489 347 479 -10 0 3576 90 549 0 -490 367 59 -30 0 3601 90 77 0 -491 261 370 30 1069 1229 90 0 907 -492 441 287 -20 0 3630 90 286 0 -493 44 153 30 0 3597 90 0 273 -494 263 351 -20 1545 1705 90 652 0 -495 444 157 10 0 3609 90 0 468 -496 374 17 -20 0 3561 90 205 0 -497 448 295 -20 0 3621 90 123 0 -498 446 297 -30 0 3623 90 520 0 -499 347 40 30 0 3593 90 0 44 -500 318 493 10 825 985 90 0 672 -501 399 352 10 1260 1420 90 0 889 -502 51 364 10 0 3595 90 0 112 -503 250 217 40 0 3791 90 0 380 -504 107 225 30 0 3679 0 0 1016 -505 173 208 -20 0 3737 90 383 0 -506 204 189 -20 0 3748 90 965 0 -507 399 379 -10 0 3627 90 357 0 -508 79 346 10 0 3628 90 0 458 -509 360 338 10 272 432 90 0 130 -510 390 17 -40 0 3553 90 457 0 -511 207 337 -10 0 3727 90 964 0 -512 409 361 30 0 3631 90 0 362 -513 206 377 -10 0 3690 90 559 0 -514 429 294 -30 0 3640 90 411 0 -515 375 31 -10 2185 2345 90 693 0 -516 426 80 -10 0 3580 90 131 0 -517 74 374 20 0 3609 90 0 750 -518 408 20 30 0 3545 90 0 297 -519 239 369 30 1811 1971 90 0 149 -520 420 308 30 0 3645 90 0 498 -521 254 357 -10 0 3717 90 584 0 -522 53 297 30 0 3622 90 0 568 -523 434 382 30 0 3598 90 0 93 -524 204 171 -20 0 3733 90 327 0 -525 173 169 -20 0 3713 90 481 0 -526 190 332 20 0 3723 90 0 973 -527 274 231 -20 0 3794 90 678 0 -528 207 194 10 0 3754 90 0 600 -529 315 232 -20 0 3757 90 778 0 -530 425 87 -20 0 3585 90 392 0 -531 312 64 20 0 3628 90 0 408 -532 129 244 -30 2908 3068 90 963 0 -533 278 230 -10 0 3790 90 921 0 -534 351 75 -30 0 3622 90 861 0 -535 185 293 -10 0 3747 90 812 0 -536 364 364 -10 0 3663 90 352 0 -537 432 369 -10 0 3607 90 541 0 -538 128 249 -20 0 3702 90 17 0 -539 221 179 20 369 529 90 0 247 -540 194 296 20 0 3752 90 0 181 -541 413 350 10 0 3633 90 0 537 -542 214 372 10 0 3697 90 0 47 -543 379 229 10 1045 1205 90 0 423 -544 91 298 -20 0 3658 90 860 0 -545 226 120 30 0 3692 90 0 453 -546 344 46 30 0 3600 90 0 704 -547 238 84 -30 1634 1794 90 204 0 -548 138 276 10 1915 2075 90 0 344 -549 346 487 10 0 3569 90 0 489 -550 95 160 10 0 3645 90 0 313 -551 103 266 -30 0 3677 90 656 0 -552 98 286 -10 0 3668 90 116 0 -553 77 172 -10 0 3635 90 422 0 -554 147 199 30 308 468 90 0 597 -555 210 98 10 0 3667 90 0 216 -556 428 292 -30 0 3642 90 931 0 -557 121 236 10 0 3695 90 0 994 -558 336 479 -30 0 3580 90 991 0 -559 203 369 10 0 3697 90 0 513 -560 296 232 10 0 3775 90 0 482 -561 87 369 10 201 361 90 0 758 -562 247 88 -10 0 3662 90 58 0 -563 104 246 10 0 3678 90 0 21 -564 67 302 -10 0 3634 90 50 0 -565 114 296 40 0 3681 90 0 839 -566 394 356 -20 0 3646 90 110 0 -567 192 306 -10 0 3744 90 948 0 -568 16 285 -30 0 3588 90 522 0 -569 419 310 10 0 3645 90 0 852 -570 389 221 10 0 3683 90 0 745 -571 129 264 20 0 3703 90 0 191 -572 172 483 -20 0 3579 90 38 0 -573 325 251 20 0 3749 90 0 901 -574 151 436 10 0 3614 90 0 170 -575 263 91 20 0 3665 90 0 343 -576 401 15 -10 0 3545 90 409 0 -577 253 382 -20 3090 3250 90 115 0 -578 247 89 -20 0 3663 90 438 0 -579 283 229 30 0 3785 90 0 19 -580 366 341 -30 0 3677 90 589 0 -581 392 213 -20 2092 2252 90 128 0 -582 167 304 -20 207 367 90 665 0 -583 477 154 10 1506 1666 90 0 48 -584 234 383 10 0 3691 90 0 521 -585 199 327 -10 0 3732 90 261 0 -586 140 220 30 0 3710 90 0 848 -587 144 266 30 0 3717 90 0 866 -588 432 105 10 0 3592 90 0 5 -589 368 325 30 139 299 90 0 580 -590 202 386 20 0 3680 90 0 797 -591 325 246 -20 1520 1680 90 417 0 -592 430 86 20 0 3581 90 0 853 -593 200 195 20 0 3750 90 0 728 -594 440 295 -20 0 3629 90 446 0 -595 77 287 10 0 3648 90 0 925 -596 187 362 -40 0 3696 90 386 0 -597 131 207 -30 0 3698 90 554 0 -598 405 5 20 786 946 90 0 319 -599 125 226 -30 1389 1549 90 777 0 -600 254 335 -10 3013 3173 90 528 0 -601 212 168 20 860 1020 90 0 284 -602 281 279 -30 0 3782 90 827 0 -603 326 241 20 0 3748 90 0 430 -604 152 241 -30 0 3726 90 638 0 -605 71 139 30 0 3614 90 0 631 -606 46 277 -10 0 3619 90 622 0 -607 393 13 -30 0 3548 90 294 0 -608 87 454 40 882 1042 90 0 340 -609 86 359 -10 0 3628 90 87 0 -610 220 192 20 0 3759 90 0 472 -611 426 279 -20 3112 3272 90 819 0 -612 131 267 -20 0 3704 90 742 0 -613 200 297 -10 0 3756 90 473 0 -614 299 442 -10 0 3626 90 279 0 -615 265 218 -20 2429 2589 90 752 0 -616 398 231 -10 0 3675 90 276 0 -617 312 74 20 0 3638 90 0 143 -618 99 307 -40 0 3663 90 642 0 -619 22 283 -20 0 3594 90 938 0 -620 67 160 -20 2690 2850 90 985 0 -621 390 42 -30 2588 2748 90 918 0 -622 44 279 10 0 3616 90 0 606 -623 200 182 -10 0 3740 90 761 0 -624 458 303 20 0 3610 90 0 85 -625 298 438 10 567 727 90 0 630 -626 62 301 -20 0 3630 90 716 0 -627 112 251 -20 0 3686 90 407 0 -628 184 354 -30 0 3701 90 371 0 -629 140 180 20 0 3694 90 0 228 -630 269 428 -10 0 3645 90 625 0 -631 123 206 -30 0 3690 90 605 0 -632 36 284 10 0 3608 90 0 212 -633 272 233 -30 0 3797 90 280 0 -634 320 231 20 0 3752 90 0 729 -635 211 180 -20 0 3744 90 140 0 -636 114 169 20 0 3666 90 0 893 -637 245 239 -20 0 3812 90 447 0 -638 117 204 30 0 3684 90 0 604 -639 316 254 20 0 3758 90 0 798 -640 169 443 30 500 660 90 0 809 -641 212 96 10 0 3666 90 0 926 -642 119 285 40 0 3689 90 0 618 -643 71 163 -20 0 3625 90 683 0 -644 78 361 -20 0 3620 90 71 0 -645 354 219 10 0 3716 90 0 654 -646 389 233 20 0 3684 90 0 349 -647 90 391 10 541 701 90 0 152 -648 209 307 10 1811 1971 90 0 751 -649 363 351 -20 2923 3083 90 20 0 -650 405 47 -10 0 3569 90 935 0 -651 278 329 -30 0 3741 90 820 0 -652 261 371 20 0 3703 90 0 494 -653 302 470 20 2227 2387 90 0 692 -654 373 205 -10 0 3694 90 645 0 -655 381 20 20 1828 1988 0 0 1013 -656 90 277 30 662 822 90 0 551 -657 46 341 10 0 3601 90 0 737 -658 50 138 -20 0 3595 90 29 0 -659 61 437 20 0 3559 90 0 760 -660 331 252 10 0 3743 90 0 793 -661 440 81 20 0 3570 90 0 953 -662 384 206 20 739 899 90 0 213 -663 232 87 -20 0 3661 90 924 0 -664 59 471 20 0 3532 90 0 83 -665 174 304 20 0 3731 90 0 582 -666 106 248 20 0 3680 90 0 316 -667 410 287 -20 0 3660 90 163 0 -668 206 313 20 0 3748 90 0 341 -669 412 367 20 960 1120 90 0 800 -670 412 300 20 515 675 90 0 106 -671 206 295 -20 2809 2969 90 959 0 -672 329 459 -10 0 3601 90 500 0 -673 177 436 20 0 3625 90 0 209 -674 266 264 -10 0 3803 90 916 0 -675 308 235 -10 3135 3295 90 328 0 -676 260 330 40 3203 3363 90 0 884 -677 49 136 -30 0 3593 90 721 0 -678 356 28 20 0 3578 90 0 527 -679 428 384 10 0 3602 90 0 311 -680 220 362 20 0 3709 90 0 236 -681 437 61 -20 0 3559 90 32 0 -682 365 360 -30 0 3665 90 187 0 -683 107 168 20 0 3660 90 0 643 -684 220 177 -20 0 3746 90 291 0 -685 347 21 20 1386 1546 90 0 894 -686 293 245 10 0 3781 90 0 174 -687 267 436 30 0 3638 90 0 845 -688 216 96 -30 0 3667 90 831 0 -689 383 351 20 167 327 90 0 230 -690 289 240 -30 0 3784 90 56 0 -691 129 185 -10 2814 2974 90 875 0 -692 291 450 -20 2705 2865 90 653 0 -693 387 21 10 0 3558 90 0 515 -694 116 255 20 0 3690 90 0 60 -695 50 368 -30 0 3592 90 467 0 -696 121 249 -30 0 3695 90 151 0 -697 404 346 10 0 3643 90 0 475 -698 77 360 -40 0 3619 90 317 0 -699 447 102 10 0 3578 90 0 774 -700 366 16 -10 0 3563 90 254 0 -701 348 16 -30 0 3571 90 863 0 -702 353 346 -10 0 3684 90 960 0 -703 54 485 30 0 3518 90 0 226 -704 319 77 -30 0 3638 90 546 0 -705 83 282 -10 0 3654 90 55 0 -706 384 24 10 2601 2761 90 0 404 -707 52 469 -30 0 3529 90 892 0 -708 199 200 10 0 3753 90 0 275 -709 273 234 -20 0 3796 90 465 0 -710 16 281 -20 0 3588 90 39 0 -711 151 442 -10 0 3608 90 444 0 -712 223 114 -20 332 492 90 12 0 -713 191 308 20 0 3742 90 0 804 -714 448 297 -10 0 3621 90 4 0 -715 386 28 20 2507 2667 0 0 1002 -716 106 295 20 0 3674 90 0 626 -717 387 224 30 0 3685 90 0 321 -718 96 377 10 0 3625 0 0 1010 -719 86 361 -30 3347 3507 90 429 0 -720 211 107 -20 531 691 90 172 0 -721 43 125 30 1603 1763 90 0 677 -722 369 351 20 0 3668 90 0 146 -723 388 228 10 0 3685 90 0 487 -724 325 228 -20 0 3746 90 387 0 -725 490 159 20 1897 2057 90 0 439 -726 420 78 20 0 3583 90 0 369 -727 396 4 -20 0 3538 90 749 0 -728 222 317 -20 0 3752 90 593 0 -729 389 198 -20 0 3676 90 634 0 -730 322 454 20 0 3608 90 0 364 -731 241 391 -10 2985 3145 90 348 0 -732 256 117 20 0 3691 90 0 869 -733 298 255 -30 0 3776 90 445 0 -734 74 363 40 0 3615 90 0 432 -735 345 496 20 0 3561 90 0 463 -736 167 169 20 1654 1814 90 0 40 -737 23 306 -10 0 3591 90 657 0 -738 317 62 20 0 3625 90 0 896 -739 319 257 -10 0 3755 90 767 0 -740 129 255 10 0 3703 90 0 949 -741 59 377 -20 2088 2248 90 57 0 -742 138 272 20 1821 1981 90 0 612 -743 317 251 -20 0 3757 90 823 0 -744 279 436 20 0 3636 90 0 227 -745 371 207 -10 0 3696 90 570 0 -746 263 372 10 886 1046 90 0 53 -747 50 347 -20 0 3602 90 996 0 -748 275 236 -10 0 3796 90 153 0 -749 334 47 20 0 3605 90 0 727 -750 50 383 -20 0 3584 90 517 0 -751 170 338 -10 2284 2444 90 648 0 -752 245 109 20 0 3683 90 0 615 -753 69 475 -30 1189 1349 90 10 0 -754 54 372 -10 0 3594 90 915 0 -755 198 334 -30 0 3726 90 397 0 -756 380 228 -10 0 3693 90 267 0 -757 425 118 10 219 379 90 0 147 -758 80 398 -10 0 3599 90 561 0 -759 366 57 -10 0 3599 90 370 0 -760 67 463 -20 0 3544 90 659 0 -761 226 86 10 0 3659 90 0 623 -762 59 480 10 1583 1743 90 0 829 -763 40 378 -30 0 3579 90 412 0 -764 250 367 20 2113 2273 90 0 312 -765 157 436 20 0 3617 90 0 388 -766 463 161 -30 0 3594 90 49 0 -767 266 250 10 0 3808 90 0 739 -768 51 162 20 0 3607 90 0 787 -769 194 353 20 0 3707 0 0 1011 -770 383 41 -20 2685 2845 90 11 0 -771 247 82 30 0 3656 90 0 309 -772 457 142 -20 0 3591 90 471 0 -773 244 94 20 1795 1955 90 0 240 -774 441 63 -10 0 3557 90 699 0 -775 244 371 -10 0 3703 90 185 0 -776 174 444 10 0 3616 90 0 206 -777 94 247 30 853 1013 90 0 599 -778 320 225 20 0 3750 90 0 529 -779 316 80 30 0 3642 0 0 1007 -780 155 447 20 2672 2832 90 0 441 -781 211 308 -10 0 3755 90 299 0 -782 297 442 20 0 3627 90 0 851 -783 200 342 -10 0 3720 90 913 0 -784 44 325 20 0 3605 90 0 377 -785 438 60 -10 0 3557 90 72 0 -786 80 374 -20 0 3614 90 426 0 -787 59 163 -20 0 3615 90 768 0 -788 236 92 -30 2210 2370 90 1 0 -789 414 66 -20 1592 1752 90 957 0 -790 34 279 20 0 3607 90 0 186 -791 475 156 -30 0 3581 90 824 0 -792 404 310 20 0 3659 90 0 870 -793 367 239 -10 0 3707 90 660 0 -794 210 359 -30 1568 1728 90 292 0 -795 133 278 10 0 3704 90 0 214 -796 446 169 10 0 3612 90 0 249 -797 188 356 -20 0 3702 90 590 0 -798 312 252 -20 0 3762 90 639 0 -799 69 485 -10 0 3528 90 288 0 -800 413 353 -20 0 3632 90 669 0 -801 54 446 20 0 3547 90 0 972 -802 56 357 10 0 3603 90 0 113 -803 230 105 -20 0 3678 90 287 0 -804 196 302 -20 0 3750 90 713 0 -805 391 373 -10 0 3637 90 413 0 -806 101 295 30 0 3669 90 0 378 -807 234 350 10 0 3723 90 0 878 -808 215 108 20 2760 2920 0 0 1015 -809 142 457 -30 0 3591 90 640 0 -810 283 425 20 0 3646 90 0 834 -811 77 397 10 919 1079 90 0 895 -812 105 317 10 0 3665 90 0 535 -813 382 213 -10 1715 1875 90 486 0 -814 213 76 20 0 3647 90 0 274 -815 417 56 -10 0 3569 90 883 0 -816 183 340 -20 0 3712 90 300 0 -817 123 242 -20 3190 3350 90 466 0 -818 475 136 20 0 3572 90 0 30 -819 377 246 20 0 3697 90 0 611 -820 310 484 30 0 3583 90 0 651 -821 47 280 -40 403 563 90 363 0 -822 57 456 20 0 3542 90 0 137 -823 313 266 20 373 533 90 0 743 -824 475 145 30 0 3576 90 0 791 -825 400 376 40 0 3629 90 0 195 -826 290 416 30 0 3654 90 0 354 -827 277 369 30 0 3702 90 0 602 -828 91 303 -10 0 3657 90 243 0 -829 194 301 -10 0 3749 90 762 0 -830 254 238 30 0 3812 90 0 324 -831 215 91 30 0 3662 90 0 688 -832 500 162 20 2088 2248 90 0 179 -833 56 287 20 0 3627 90 0 252 -834 289 452 -20 0 3619 90 810 0 -835 378 326 30 160 320 90 0 262 -836 197 350 30 1186 1346 90 0 220 -837 243 88 20 0 3662 90 0 215 -838 250 72 -20 1125 1285 90 210 0 -839 101 290 -40 0 3670 90 565 0 -840 351 480 -10 0 3573 90 479 0 -841 67 357 -20 0 3613 90 307 0 -842 128 240 10 0 3702 90 0 285 -843 253 81 -10 0 3655 90 219 0 -844 307 227 -20 0 3763 90 975 0 -845 233 441 -30 0 3633 90 687 0 -846 311 47 -20 0 3613 90 63 0 -847 292 456 -30 0 3614 90 9 0 -848 183 187 -30 0 3733 90 586 0 -849 392 31 20 0 3563 90 0 454 -850 103 251 10 0 3677 90 0 277 -851 300 443 -20 1996 2156 90 782 0 -852 420 295 -10 0 3649 90 569 0 -853 427 64 -20 1292 1452 90 592 0 -854 372 354 30 0 3664 90 0 61 -855 101 263 -10 0 3675 90 41 0 -856 141 454 20 0 3593 90 0 433 -857 146 461 -10 1497 1657 90 250 0 -858 298 430 30 469 629 90 0 969 -859 148 270 -30 0 3721 90 196 0 -860 76 287 20 0 3647 90 0 544 -861 308 55 30 0 3621 90 0 534 -862 143 257 -10 0 3717 90 290 0 -863 393 2 30 979 1139 90 0 701 -864 385 28 -10 0 3565 90 416 0 -865 204 291 -20 0 3763 90 207 0 -866 132 272 -30 0 3704 90 587 0 -867 206 379 -20 0 3688 90 890 0 -868 69 383 -30 0 3600 90 346 0 -869 245 96 -20 0 3670 90 732 0 -870 431 301 -20 0 3636 90 792 0 -871 448 94 -10 0 3572 90 990 0 -872 199 305 30 0 3749 90 0 919 -873 95 356 10 3447 3607 90 0 367 -874 328 498 -30 0 3565 90 460 0 -875 108 222 10 0 3680 90 0 691 -876 341 26 -20 0 3583 90 455 0 -877 63 454 -20 0 3548 90 391 0 -878 222 357 -10 0 3714 90 807 0 -879 416 364 -10 0 3623 90 339 0 -880 127 278 -20 2106 2266 90 101 0 -881 140 252 20 0 3714 90 0 945 -882 218 298 -30 0 3767 90 168 0 -883 432 87 10 0 3580 90 0 815 -884 216 300 -40 0 3764 90 676 0 -885 438 72 -30 0 3566 90 345 0 -886 184 178 10 1454 1614 0 0 1018 -887 345 468 -10 2677 2837 90 175 0 -888 150 435 20 0 3614 90 0 332 -889 395 365 -10 0 3639 90 501 0 -890 208 371 20 0 3696 90 0 867 -891 190 292 -10 0 3751 90 906 0 -892 78 479 30 1089 1249 90 0 707 -893 104 198 -20 0 3670 90 636 0 -894 346 13 -20 1686 1846 90 685 0 -895 47 388 -10 1193 1353 90 811 0 -896 315 57 -20 0 3621 90 738 0 -897 110 199 -20 0 3675 90 138 0 -898 323 60 10 0 3621 90 0 395 -899 308 82 -30 0 3647 90 107 0 -900 216 374 30 0 3696 90 0 111 -901 326 253 -20 0 3748 90 573 0 -902 308 232 -10 0 3764 90 84 0 -903 118 223 10 0 3690 90 0 289 -904 149 444 -20 0 3606 90 379 0 -905 95 395 30 0 3612 90 0 237 -906 117 319 10 0 3675 90 0 891 -907 262 352 -30 0 3722 90 491 0 -908 468 135 10 932 1092 90 0 144 -909 351 31 20 813 973 90 0 365 -910 361 15 -20 2118 2278 90 52 0 -911 195 300 -40 0 3750 90 125 0 -912 397 27 20 0 3557 90 0 443 -913 179 311 10 0 3731 90 0 783 -914 77 133 -30 0 3616 90 461 0 -915 66 397 10 0 3589 90 0 754 -916 366 352 10 0 3670 90 0 674 -917 221 87 20 0 3659 90 0 984 -918 347 23 30 0 3578 90 0 621 -919 176 358 -30 0 3694 90 872 0 -920 229 78 20 2496 2656 0 0 1014 -921 272 246 10 218 378 90 0 533 -922 293 67 20 0 3637 90 0 68 -923 140 265 -10 0 3713 90 308 0 -924 238 83 20 0 3657 90 0 663 -925 136 296 -10 0 3702 90 595 0 -926 218 98 -10 0 3669 90 641 0 -927 290 440 -10 0 3630 90 42 0 -928 29 302 -10 0 3597 90 978 0 -929 290 425 30 280 440 90 0 200 -930 124 247 -20 0 3698 90 122 0 -931 442 287 30 0 3629 90 0 556 -932 294 64 -20 0 3633 90 88 0 -933 74 165 10 0 3629 90 0 393 -934 382 245 -10 2959 3119 90 173 0 -935 405 24 10 0 3550 90 0 650 -936 211 97 20 0 3667 90 0 488 -937 88 390 30 0 3610 90 0 462 -938 37 295 20 0 3607 90 0 619 -939 359 371 10 0 3662 90 0 169 -940 186 372 20 0 3687 90 0 296 -941 116 446 -10 1898 2058 90 253 0 -942 293 249 10 0 3781 90 0 293 -943 83 228 -30 0 3656 90 483 0 -944 96 269 10 0 3669 90 0 425 -945 179 284 -20 0 3746 90 881 0 -946 368 219 -20 0 3702 90 980 0 -947 66 359 -20 3157 3317 90 360 0 -948 189 338 10 2954 3114 90 0 567 -949 163 277 -10 0 3733 90 740 0 -950 5 296 10 0 3575 90 0 92 -951 152 478 -10 0 3576 90 258 0 -952 366 34 10 2086 2246 90 0 435 -953 429 80 -20 0 3578 90 661 0 -954 464 178 -10 0 3599 90 66 0 -955 138 196 30 0 3700 90 0 135 -956 87 481 -10 0 3542 90 217 0 -957 425 99 20 0 3593 90 0 789 -958 241 362 -30 0 3712 90 400 0 -959 207 289 20 0 3766 90 0 671 -960 264 365 10 0 3709 90 0 702 -961 102 289 20 1242 1402 90 0 3 -962 233 346 20 0 3727 90 0 310 -963 78 141 30 0 3621 90 0 532 -964 196 348 10 0 3713 90 0 511 -965 216 92 20 2382 2542 90 0 506 -966 444 309 -10 2425 2585 90 298 0 -967 313 263 20 0 3760 90 0 402 -968 211 198 -10 2660 2820 90 270 0 -969 314 436 -30 2101 2261 90 858 0 -970 217 189 -10 0 3755 90 376 0 -971 197 178 -20 0 3735 90 91 0 -972 60 497 -20 0 3513 90 801 0 -973 206 312 -20 2000 2160 90 526 0 -974 197 351 -20 0 3710 90 28 0 -975 305 233 20 3041 3201 90 0 844 -976 297 250 -20 0 3777 90 75 0 -977 71 348 10 3055 3215 0 0 1004 -978 11 269 10 0 3585 90 0 928 -979 247 447 -20 0 3627 90 448 0 -980 386 213 20 1996 2156 90 0 946 -981 292 434 -20 755 915 90 338 0 -982 436 301 -20 0 3632 90 995 0 -983 145 221 20 0 3716 90 0 202 -984 224 96 -20 0 3668 90 917 0 -985 59 128 20 0 3598 90 0 620 -986 489 150 -30 0 3565 90 372 0 -987 152 225 -20 994 1154 90 382 0 -988 426 85 -10 0 3583 90 190 0 -989 415 73 -40 1495 1655 90 233 0 -990 440 70 10 2371 2531 90 0 871 -991 320 476 30 0 3588 90 0 558 -992 57 132 -10 1312 1472 90 414 0 -993 405 311 -30 0 3658 90 320 0 -994 109 250 -10 1540 1700 90 557 0 -995 428 314 20 0 3635 90 0 982 -996 40 288 20 1793 1953 90 0 747 -997 175 282 -10 0 3743 90 37 0 -998 298 456 30 0 3613 90 0 326 -999 208 101 10 0 3670 90 0 265 -1000 342 52 10 0 3606 90 0 351 -1001 94 456 -20 0 3566 90 225 0 -1002 386 28 -20 2507 2667 90 715 0 -1003 420 168 -10 3393 3553 90 139 0 -1004 71 348 -10 3055 3215 90 977 0 -1005 198 284 -10 0 3762 90 333 0 -1006 63 159 -20 0 3617 90 121 0 -1007 316 80 -30 0 3642 90 779 0 -1008 425 85 -10 0 3584 90 450 0 -1009 323 258 -10 0 3751 90 325 0 -1010 96 377 -10 0 3625 90 718 0 -1011 194 353 -20 0 3707 90 769 0 -1012 121 203 -10 0 3687 90 59 0 -1013 381 20 -20 1828 1988 90 655 0 -1014 229 78 -20 2496 2656 90 920 0 -1015 215 108 -20 2760 2920 90 808 0 -1016 107 225 -30 0 3679 90 504 0 -1017 191 309 -10 0 3741 90 142 0 -1018 184 178 -10 1454 1614 90 886 0 diff --git a/jsprit-instances/instances/lilim/1000/LC2105.txt b/jsprit-instances/instances/lilim/1000/LC2105.txt deleted file mode 100644 index c317c76a4..000000000 --- a/jsprit-instances/instances/lilim/1000/LC2105.txt +++ /dev/null @@ -1,1016 +0,0 @@ -250 700 1 -0 250 250 0 0 3914 0 0 0 -1 212 101 -10 2582 2902 90 720 0 -2 266 231 40 1856 2176 90 0 68 -3 89 284 20 1356 1676 90 0 55 -4 430 298 10 1482 1802 90 0 492 -5 435 77 20 922 1242 90 0 726 -6 25 293 -20 2884 3204 90 833 0 -7 43 269 30 607 927 90 0 938 -8 216 117 10 349 669 90 0 555 -9 294 437 30 581 901 90 0 200 -10 79 479 30 918 1238 90 0 753 -11 365 18 -20 2133 2453 90 531 0 -12 225 125 20 127 447 90 0 936 -13 448 103 -20 3258 3578 90 871 0 -14 143 266 10 322 642 90 0 270 -15 252 347 -10 2831 3151 90 47 0 -16 403 390 -20 2480 2800 90 475 0 -17 67 153 -10 832 1152 90 550 0 -18 90 168 -20 3000 3320 90 553 0 -19 302 235 -20 963 1283 90 602 0 -20 259 355 -10 1837 2157 90 403 0 -21 149 183 20 3028 3348 90 0 315 -22 19 297 -20 2202 2522 90 186 0 -23 209 358 30 1397 1717 90 0 794 -24 56 388 -10 1711 2031 90 718 0 -25 115 269 -10 2876 3196 90 290 0 -26 377 356 -30 1766 2086 90 400 0 -27 113 229 30 1043 1363 90 0 373 -28 205 343 20 822 1142 90 0 114 -29 48 137 -20 1717 2037 90 449 0 -30 467 157 20 2227 2547 90 0 179 -31 220 394 -30 2703 3023 90 61 0 -32 436 54 -20 1911 2231 90 815 0 -33 54 357 10 1616 1936 90 0 868 -34 456 154 -10 227 547 90 495 0 -35 216 307 -10 2436 2756 90 648 0 -36 280 224 -20 2146 2466 90 748 0 -37 90 270 10 485 805 90 0 839 -38 166 452 20 519 839 90 0 127 -39 17 283 -30 2504 2824 90 568 0 -40 196 192 30 2010 2330 90 0 968 -41 94 275 -10 389 709 90 859 0 -42 292 445 -10 1636 1956 90 279 0 -43 329 471 -20 2703 3023 90 874 0 -44 326 57 20 1284 1604 90 0 700 -45 95 466 -20 2944 3264 90 713 0 -46 429 282 -10 2938 3258 90 714 0 -47 229 364 10 2432 2752 90 0 15 -48 457 160 10 2911 3231 90 0 796 -49 452 154 30 252 572 90 0 66 -50 113 289 10 142 462 90 0 961 -51 67 387 -20 2296 2616 90 307 0 -52 368 17 -30 1941 2261 90 861 0 -53 341 367 30 2450 2770 90 0 221 -54 410 364 -40 1762 2082 90 825 0 -55 80 281 -20 1637 1957 90 3 0 -56 321 224 -20 2026 2346 90 798 0 -57 73 395 -20 1143 1463 90 391 0 -58 259 76 10 848 1168 90 0 266 -59 121 203 -30 1712 2032 90 431 0 -60 118 256 -10 2439 2759 90 228 0 -61 236 361 30 1633 1953 90 0 31 -62 78 371 20 210 530 90 0 198 -63 301 53 20 889 1209 90 0 849 -64 382 197 20 560 880 90 0 756 -65 491 160 -30 1909 2229 90 171 0 -66 453 164 -30 3006 3326 90 49 0 -67 277 371 30 515 835 90 0 652 -68 272 212 -40 2250 2570 90 2 0 -69 386 218 20 1821 2141 90 0 581 -70 353 32 10 825 1145 90 0 435 -71 59 389 -30 1618 1938 90 905 0 -72 414 62 -20 1606 1926 90 147 0 -73 278 357 10 132 452 90 0 746 -74 101 179 20 2332 2652 90 0 629 -75 396 234 -10 2310 2630 90 136 0 -76 74 390 20 717 1037 90 0 358 -77 332 55 30 211 531 90 0 201 -78 272 365 30 613 933 90 0 494 -79 418 355 -20 1957 2277 90 110 0 -80 216 380 -20 2220 2540 90 513 0 -81 440 173 10 3202 3522 90 0 139 -82 89 358 20 3311 3631 90 0 873 -83 66 491 -20 1990 2310 90 707 0 -84 317 234 10 2399 2719 90 0 328 -85 439 297 30 1963 2283 90 0 624 -86 394 367 30 300 620 90 0 669 -87 58 364 -20 2182 2502 90 665 0 -88 290 75 20 179 499 90 0 143 -89 346 344 -10 3132 3452 90 805 0 -90 131 269 10 2308 2628 90 0 425 -91 236 96 -20 1524 1844 90 917 0 -92 29 282 -30 1330 1650 90 483 0 -93 418 385 30 2677 2997 90 0 260 -94 148 225 40 533 853 90 0 893 -95 166 464 10 714 1034 90 0 572 -96 266 373 -30 713 1033 90 827 0 -97 201 273 30 54 374 90 0 644 -98 255 245 10 7 327 90 0 767 -99 220 379 -10 2314 2634 90 542 0 -100 85 317 -20 2527 2847 90 440 0 -101 125 264 -10 2775 3095 90 880 0 -102 131 253 -20 2729 3049 90 306 0 -103 184 188 -20 1180 1500 90 970 0 -104 128 209 20 1013 1333 90 0 875 -105 373 364 20 3090 3410 90 0 702 -106 389 342 10 1065 1385 90 0 682 -107 420 20 30 495 815 90 0 205 -108 132 218 10 122 442 90 0 795 -109 32 256 -10 821 1141 90 606 0 -110 406 339 20 215 535 90 0 79 -111 191 397 20 183 503 90 0 904 -112 72 341 -20 2786 3106 90 162 0 -113 35 308 30 2992 3312 90 0 784 -114 169 360 -20 2092 2412 90 28 0 -115 222 381 -30 2509 2829 90 310 0 -116 96 292 10 782 1102 90 0 544 -117 311 496 -20 648 968 90 730 0 -118 220 384 10 2603 2923 90 0 676 -119 259 243 20 11 331 90 0 690 -120 349 476 -10 2403 2723 90 175 0 -121 63 159 20 929 1249 90 0 985 -122 112 243 20 2241 2561 90 0 740 -123 448 302 -30 2247 2567 90 594 0 -124 343 27 -30 1116 1436 90 499 0 -125 67 485 40 2086 2406 90 0 609 -126 220 359 30 1344 1664 90 0 348 -127 147 435 -20 2031 2351 90 38 0 -128 317 235 -20 2490 2810 90 603 0 -129 43 355 -40 1515 1835 90 459 0 -130 368 340 10 381 701 90 0 195 -131 450 72 -20 2481 2801 90 530 0 -132 400 364 -10 490 810 90 339 0 -133 355 480 -10 1536 1856 90 479 0 -134 450 153 20 453 773 90 0 986 -135 126 188 -30 2018 2338 90 955 0 -136 380 223 10 1534 1854 90 0 75 -137 71 453 20 605 925 90 0 429 -138 54 287 20 199 519 90 0 632 -139 420 168 -10 3313 3633 90 81 0 -140 219 89 -20 2612 2932 90 210 0 -141 189 327 10 340 660 90 0 314 -142 191 309 10 1350 1670 90 0 478 -143 301 67 -20 400 720 90 88 0 -144 484 161 -20 1616 1936 90 485 0 -145 77 483 20 2459 2779 90 0 207 -146 241 375 -30 1918 2238 90 428 0 -147 428 64 20 1121 1441 90 0 72 -148 403 361 -30 1372 1692 90 512 0 -149 257 336 -30 3026 3346 90 731 0 -150 131 241 -10 3298 3618 90 994 0 -151 63 166 -10 2422 2742 90 183 0 -152 71 368 20 3177 3497 90 0 698 -153 272 228 10 1953 2273 90 0 830 -154 25 290 -10 2791 3111 90 304 0 -155 441 157 10 353 673 90 0 824 -156 13 266 -10 1124 1444 90 978 0 -157 251 376 -10 3106 3426 90 584 0 -158 61 170 30 2328 2648 90 0 407 -159 386 357 20 1353 1673 90 0 246 -160 95 475 20 2845 3165 0 0 1001 -161 90 298 10 2024 2344 90 0 925 -162 71 388 20 1425 1745 90 0 112 -163 383 246 -10 2788 3108 90 402 0 -164 352 38 10 546 866 90 0 701 -165 395 1 -30 807 1127 90 518 0 -166 120 210 -10 1202 1522 90 405 0 -167 46 383 30 1208 1528 90 0 517 -168 202 198 -20 2198 2518 90 291 0 -169 358 365 -30 2246 2566 90 362 0 -170 191 352 20 117 437 90 0 900 -171 470 152 30 1146 1466 90 0 65 -172 228 124 20 127 447 90 0 712 -173 402 230 -20 2122 2442 90 813 0 -174 323 229 10 1638 1958 90 0 975 -175 331 486 10 1923 2243 90 0 120 -176 112 208 10 1521 1841 90 0 631 -177 172 435 30 2981 3301 0 0 1006 -178 326 498 -20 941 1261 90 364 0 -179 460 183 -20 2707 3027 90 30 0 -180 95 279 20 295 615 90 0 705 -181 76 456 30 700 1020 90 0 608 -182 242 350 -20 2731 3051 90 775 0 -183 152 196 10 132 452 90 0 151 -184 268 351 10 1370 1690 90 0 764 -185 360 356 10 2653 2973 90 0 649 -186 39 296 20 1903 2223 90 0 22 -187 262 368 30 1082 1402 90 0 521 -188 204 90 20 1014 1334 90 0 965 -189 149 273 20 132 452 90 0 860 -190 446 86 10 2976 3296 90 0 699 -191 139 269 20 1648 1968 90 0 866 -192 483 170 -10 2117 2437 90 583 0 -193 39 278 -10 1521 1841 90 214 0 -194 201 307 -10 1633 1953 90 333 0 -195 395 378 -10 1556 1876 90 130 0 -196 139 262 -30 1370 1690 90 504 0 -197 176 447 -20 231 551 90 379 0 -198 67 380 -20 2199 2519 90 62 0 -199 35 358 20 1417 1737 90 0 734 -200 294 455 -30 2346 2666 90 9 0 -201 351 33 -30 641 961 90 77 0 -202 216 316 -20 2239 2559 90 755 0 -203 261 96 40 367 687 90 0 219 -204 238 57 30 1256 1576 90 0 547 -205 383 18 -30 1563 1883 90 107 0 -206 152 460 -20 1230 1550 90 951 0 -207 94 479 -20 2750 3070 90 145 0 -208 337 453 -10 2905 3225 90 672 0 -209 135 460 -20 1705 2025 90 278 0 -210 260 104 20 146 466 90 0 140 -211 337 63 -10 1965 2285 90 1000 0 -212 32 247 20 722 1042 90 0 790 -213 394 205 10 365 685 90 0 543 -214 95 294 10 690 1010 90 0 193 -215 253 241 20 2755 3075 90 0 324 -216 223 90 -10 2707 3027 90 380 0 -217 64 473 -30 1204 1524 90 760 0 -218 275 431 -10 1162 1482 90 981 0 -219 261 84 -40 654 974 90 203 0 -220 176 296 -10 1150 1470 90 997 0 -221 361 349 -30 2936 3256 90 53 0 -222 168 433 -10 3076 3396 90 250 0 -223 394 10 40 1089 1409 90 0 759 -224 308 60 20 696 1016 90 0 427 -225 94 456 20 3044 3364 90 0 719 -226 73 484 20 2365 2685 90 0 235 -227 277 434 -30 1347 1667 90 858 0 -228 119 232 10 1859 2179 90 0 60 -229 78 375 10 234 554 90 0 802 -230 366 346 20 568 888 90 0 939 -231 125 181 -20 2638 2958 90 683 0 -232 69 493 20 1897 2217 90 0 263 -233 432 80 40 828 1148 90 0 853 -234 72 391 10 1332 1652 90 0 377 -235 85 486 -20 2558 2878 90 226 0 -236 204 371 30 669 989 90 0 559 -237 173 328 10 2401 2721 90 0 332 -238 280 423 10 871 1191 90 0 927 -239 200 327 30 3070 3390 0 0 1008 -240 241 98 -20 2907 3227 90 327 0 -241 96 356 10 186 506 90 0 502 -242 332 491 30 1131 1451 90 0 463 -243 81 283 10 1544 1864 90 0 564 -244 373 22 -20 2232 2552 90 922 0 -245 255 371 -10 2129 2449 90 960 0 -246 358 359 -20 2559 2879 90 159 0 -247 216 93 10 2393 2713 90 0 808 -248 73 360 -20 2867 3187 90 426 0 -249 305 212 20 1076 1396 90 0 709 -250 151 462 10 1322 1642 90 0 222 -251 47 389 30 1022 1342 90 0 841 -252 155 198 30 108 428 90 0 452 -253 152 457 10 1137 1457 90 0 371 -254 329 48 10 1475 1795 90 0 443 -255 88 394 10 647 967 90 0 758 -256 153 295 -10 3302 3622 90 906 0 -257 81 373 10 510 830 90 0 855 -258 163 453 -20 613 933 90 673 0 -259 378 25 10 2328 2648 90 0 706 -260 401 385 -30 2784 3104 90 93 0 -261 184 340 10 2688 3008 90 0 585 -262 402 362 -30 1281 1601 90 566 0 -263 70 482 -20 2271 2591 90 232 0 -264 357 445 -10 3107 3427 90 353 0 -265 212 71 20 1124 1444 90 0 773 -266 231 81 -10 2323 2643 90 58 0 -267 379 208 10 755 1075 90 0 723 -268 236 95 30 2037 2357 90 0 274 -269 386 344 20 1159 1479 90 0 536 -270 189 200 -10 1909 2229 90 14 0 -271 296 253 10 754 1074 90 0 579 -272 73 303 -30 2317 2637 90 552 0 -273 30 162 -10 2022 2342 90 914 0 -274 230 95 -30 1819 2139 90 268 0 -275 57 131 10 1323 1643 90 0 933 -276 379 245 -30 2693 3013 90 717 0 -277 107 221 40 454 774 90 0 777 -278 154 458 20 1045 1365 90 0 209 -279 290 417 10 171 491 90 0 42 -280 272 243 30 45 365 90 0 387 -281 94 130 10 521 841 90 0 484 -282 222 356 20 1528 1848 90 0 519 -283 243 108 -20 2981 3301 90 838 0 -284 224 93 20 2111 2431 90 0 803 -285 155 242 -10 806 1126 90 308 0 -286 440 302 20 1199 1519 90 0 667 -287 221 102 -20 2778 3098 90 453 0 -288 52 484 -10 1601 1921 90 877 0 -289 111 244 -10 2149 2469 90 563 0 -290 132 273 10 2123 2443 90 0 25 -291 228 186 20 189 509 90 0 168 -292 221 374 -20 1050 1370 90 296 0 -293 406 286 10 3234 3554 90 0 976 -294 390 9 -30 1183 1503 90 863 0 -295 335 52 20 1681 2001 90 0 323 -296 189 368 20 132 452 90 0 292 -297 397 40 -10 2411 2731 90 496 0 -298 408 305 -20 339 659 90 792 0 -299 156 434 -20 2785 3105 90 780 0 -300 180 335 -20 2501 2821 90 797 0 -301 327 483 -10 2018 2338 90 500 0 -302 363 62 -10 3184 3504 90 952 0 -303 375 342 -50 859 1179 90 394 0 -304 16 280 10 2687 3007 90 0 154 -305 277 431 30 1254 1574 90 0 969 -306 110 241 20 2056 2376 90 0 102 -307 48 385 20 928 1248 90 0 51 -308 152 260 10 98 418 90 0 285 -309 255 120 10 130 450 90 0 575 -310 214 382 30 2411 2731 90 0 115 -311 414 384 -20 2582 2902 90 689 0 -312 232 378 -10 2114 2434 90 867 0 -313 80 141 -30 414 734 90 963 0 -314 188 330 -10 433 753 90 141 0 -315 157 192 -20 3130 3450 90 21 0 -316 101 237 -10 1751 2071 90 850 0 -317 74 360 -30 2776 3096 90 695 0 -318 267 260 20 429 749 90 0 336 -319 378 46 30 3010 3330 90 0 409 -320 420 311 -10 813 1133 90 322 0 -321 384 217 20 1729 2049 90 0 616 -322 418 300 10 531 851 90 0 320 -323 356 77 -20 2169 2489 90 295 0 -324 253 244 -20 2662 2982 90 215 0 -325 323 258 10 1248 1568 90 0 573 -326 293 454 -30 2531 2851 90 342 0 -327 231 97 20 2807 3127 90 0 240 -328 316 234 -10 2581 2901 90 84 0 -329 207 196 -20 2485 2805 90 971 0 -330 321 228 -10 2120 2440 90 368 0 -331 382 17 -30 1654 1974 90 510 0 -332 206 326 -10 3166 3486 90 237 0 -333 198 284 10 62 382 90 0 194 -334 137 186 -20 2832 3152 90 691 0 -335 229 396 30 2802 3122 90 0 577 -336 268 235 -20 1762 2082 90 318 0 -337 95 243 20 679 999 90 0 923 -338 297 430 20 298 618 90 0 614 -339 393 368 10 392 712 90 0 132 -340 66 391 20 1521 1841 90 0 657 -341 189 339 -20 2783 3103 90 526 0 -342 280 351 30 105 425 90 0 326 -343 241 77 -20 1145 1465 90 415 0 -344 134 265 -10 2586 2906 90 612 0 -345 420 95 30 265 585 90 0 774 -346 111 279 30 141 461 90 0 363 -347 367 358 -30 2053 2373 90 854 0 -348 239 373 -30 1825 2145 90 126 0 -349 384 235 20 2592 2912 90 0 819 -350 284 360 30 229 549 90 0 845 -351 325 75 -30 2290 2610 90 365 0 -352 279 369 10 422 742 90 0 491 -353 340 449 10 3000 3320 90 0 264 -354 275 448 -30 2822 3142 90 929 0 -355 447 88 -20 2883 3203 90 661 0 -356 314 279 10 190 510 90 0 823 -357 434 377 -10 2265 2585 90 413 0 -358 67 377 -20 2106 2426 90 76 0 -359 370 353 10 666 986 90 0 501 -360 57 367 -30 2089 2409 90 398 0 -361 332 486 20 1832 2152 90 0 887 -362 386 361 30 1447 1767 90 0 169 -363 55 282 -30 225 545 90 346 0 -364 317 467 20 344 664 90 0 178 -365 335 54 30 1773 2093 90 0 351 -366 348 466 -20 2503 2823 90 735 0 -367 132 314 -10 3134 3454 90 508 0 -368 328 216 10 1832 2152 90 0 330 -369 416 48 10 1800 2120 90 0 785 -370 370 55 -10 2806 3126 90 727 0 -371 149 434 -10 2123 2443 90 253 0 -372 466 169 -20 2422 2742 90 832 0 -373 141 267 -30 1555 1875 90 27 0 -374 258 350 -10 1742 2062 90 651 0 -375 428 312 10 1004 1324 90 0 982 -376 211 188 10 580 900 90 0 637 -377 50 343 -10 2674 2994 90 234 0 -378 107 311 40 2733 3053 90 0 399 -379 178 441 20 204 524 90 0 197 -380 232 85 10 2229 2549 90 0 216 -381 391 23 -20 2618 2938 90 910 0 -382 137 227 20 115 435 90 0 548 -383 161 203 20 100 420 90 0 897 -384 363 212 -10 3194 3514 90 389 0 -385 384 346 -30 1251 1571 90 589 0 -386 166 434 40 2885 3205 90 0 433 -387 274 248 -30 230 550 90 280 0 -388 156 421 -20 3275 3595 90 856 0 -389 346 211 10 103 423 90 0 384 -390 265 358 20 1272 1592 90 0 962 -391 96 407 20 354 674 90 0 57 -392 443 70 -30 2384 2704 90 789 0 -393 125 212 -30 1107 1427 90 421 0 -394 361 337 50 283 603 90 0 303 -395 322 78 20 2384 2704 0 0 1007 -396 481 156 -10 1520 1840 90 908 0 -397 188 293 -30 757 1077 90 613 0 -398 76 408 30 940 1260 90 0 360 -399 130 304 -40 3095 3415 90 378 0 -400 378 363 30 1669 1989 90 0 26 -401 185 301 20 1250 1570 90 0 882 -402 385 235 10 2501 2821 90 0 163 -403 261 350 10 1649 1969 90 0 20 -404 389 33 -10 2903 3223 90 416 0 -405 151 214 10 431 751 90 0 166 -406 265 94 10 178 498 90 0 437 -407 65 164 -30 2515 2835 90 158 0 -408 293 81 10 174 494 90 0 898 -409 363 55 -30 2903 3223 90 319 0 -410 465 176 -40 2519 2839 90 791 0 -411 428 298 -10 1574 1894 90 569 0 -412 75 379 -10 2487 2807 90 811 0 -413 404 378 10 777 1097 90 0 357 -414 203 203 10 2770 3090 90 0 447 -415 259 88 20 465 785 90 0 343 -416 362 17 10 1804 2124 90 0 404 -417 320 258 20 484 804 90 0 902 -418 59 358 -10 2278 2598 90 915 0 -419 316 453 20 213 533 90 0 558 -420 225 192 20 63 383 90 0 539 -421 140 206 30 328 648 90 0 393 -422 83 151 10 220 540 90 0 787 -423 366 196 10 127 447 90 0 980 -424 108 245 -10 1650 1970 90 647 0 -425 129 267 -10 2400 2720 90 90 0 -426 57 379 20 827 1147 90 0 248 -427 329 56 -20 1377 1697 90 224 0 -428 213 363 30 1154 1474 90 0 146 -429 76 391 -20 1238 1558 90 137 0 -430 330 259 30 1151 1471 90 0 591 -431 136 217 30 818 1138 90 0 59 -432 165 333 -20 2301 2621 90 804 0 -433 160 431 -40 3174 3494 90 386 0 -434 338 489 -30 1228 1548 90 460 0 -435 335 64 -10 1873 2193 90 70 0 -436 412 361 10 1668 1988 90 0 679 -437 259 90 -10 557 877 90 406 0 -438 265 77 20 752 1072 90 0 924 -439 460 173 -20 2807 3127 90 471 0 -440 83 301 20 2217 2537 90 0 100 -441 201 331 20 627 947 90 0 511 -442 118 214 20 160 480 90 0 742 -443 395 30 -10 2716 3036 90 254 0 -444 125 444 10 1917 2237 90 0 711 -445 283 248 30 33 353 90 0 724 -446 391 334 -10 967 1287 90 509 0 -447 212 215 -10 3080 3400 90 414 0 -448 276 428 20 968 1288 90 0 687 -449 96 152 20 182 502 90 0 29 -450 425 85 -10 456 776 90 757 0 -451 336 7 10 1504 1824 90 0 454 -452 196 219 -30 2974 3294 90 252 0 -453 210 94 20 917 1237 90 0 287 -454 310 81 -10 2766 3086 90 451 0 -455 341 37 20 354 674 90 0 894 -456 344 478 20 2216 2536 0 0 1003 -457 406 37 40 264 584 90 0 912 -458 69 346 -10 2882 3202 90 464 0 -459 80 376 40 327 647 90 0 129 -460 314 449 30 209 529 90 0 434 -461 209 201 -10 2673 2993 90 623 0 -462 88 379 -10 609 929 90 561 0 -463 352 500 -30 1425 1745 90 242 0 -464 65 357 10 2374 2694 90 0 458 -465 345 15 -20 1402 1722 90 678 0 -466 125 245 -30 2922 3242 90 532 0 -467 52 369 30 1993 2313 90 0 747 -468 449 140 20 650 970 90 0 818 -469 430 310 -30 1096 1416 90 835 0 -470 109 325 -10 2928 3248 90 977 0 -471 446 139 20 557 877 90 0 439 -472 229 214 20 41 361 90 0 601 -473 197 301 10 103 423 90 0 913 -474 146 245 20 616 936 90 0 505 -475 401 368 20 584 904 90 0 16 -476 116 259 -20 2533 2853 90 696 0 -477 374 55 -20 2712 3032 90 607 0 -478 249 251 -10 2956 3276 90 142 0 -479 325 490 10 843 1163 90 0 133 -480 59 159 10 1023 1343 90 0 768 -481 186 177 20 1281 1601 90 0 528 -482 319 229 -20 2212 2532 90 778 0 -483 26 269 30 925 1245 90 0 92 -484 53 139 -10 1134 1454 90 281 0 -485 471 154 20 1239 1559 90 0 144 -486 301 247 10 3158 3478 90 0 686 -487 388 220 20 1343 1663 90 0 646 -488 235 81 20 1370 1690 90 0 837 -489 347 479 -30 2309 2629 90 991 0 -490 367 59 -20 3089 3409 90 621 0 -491 261 370 -10 989 1309 90 352 0 -492 441 287 -10 2835 3155 90 4 0 -493 44 153 30 1915 2235 90 0 643 -494 263 351 -30 1465 1785 90 78 0 -495 444 157 10 215 535 90 0 34 -496 374 17 10 1845 2165 90 0 297 -497 448 295 -10 2644 2964 90 556 0 -498 446 297 -30 2152 2472 90 993 0 -499 347 40 30 450 770 90 0 124 -500 318 493 10 745 1065 90 0 301 -501 399 352 -10 1180 1500 90 359 0 -502 51 364 -10 1807 2127 90 241 0 -503 250 217 -20 2454 2774 90 615 0 -504 107 225 30 360 680 90 0 196 -505 173 208 -20 1801 2121 90 474 0 -506 204 189 -20 2298 2618 90 736 0 -507 399 379 -10 2880 3200 90 541 0 -508 79 346 10 3070 3390 90 0 367 -509 360 338 10 192 512 90 0 446 -510 390 17 30 1373 1693 90 0 331 -511 207 337 -20 725 1045 90 441 0 -512 409 361 30 977 1297 90 0 148 -513 206 377 20 479 799 90 0 80 -514 429 294 10 1863 2183 90 0 966 -515 375 31 -20 2105 2425 90 598 0 -516 426 80 -10 642 962 90 988 0 -517 74 374 -30 2582 2902 90 167 0 -518 408 20 30 393 713 90 0 165 -519 239 369 -20 1731 2051 90 282 0 -520 420 308 30 629 949 90 0 931 -521 254 357 -30 1932 2252 90 187 0 -522 53 297 30 3220 3540 0 0 1005 -523 434 382 -10 2170 2490 90 800 0 -524 204 171 -20 878 1198 90 684 0 -525 173 169 10 1478 1798 90 0 593 -526 190 332 20 526 846 90 0 341 -527 274 231 -10 2046 2366 90 633 0 -528 207 194 -20 2393 2713 90 481 0 -529 315 232 10 2673 2993 90 0 675 -530 425 87 20 364 684 90 0 131 -531 312 64 20 502 822 90 0 11 -532 129 244 30 2828 3148 90 0 466 -533 278 230 -10 1386 1706 90 921 0 -534 351 75 10 2074 2394 90 0 617 -535 185 293 -20 850 1170 90 540 0 -536 364 364 -20 2150 2470 90 269 0 -537 432 369 10 2067 2387 0 0 1009 -538 128 249 -20 1263 1583 90 694 0 -539 221 179 -20 289 609 90 420 0 -540 194 296 20 570 890 90 0 535 -541 413 350 10 1477 1797 90 0 507 -542 214 372 10 863 1183 90 0 99 -543 379 229 -10 965 1285 90 213 0 -544 91 298 -10 1933 2253 90 116 0 -545 226 120 30 155 475 90 0 869 -546 344 46 30 1580 1900 0 0 1004 -547 238 84 -30 1554 1874 90 204 0 -548 138 276 -20 1835 2155 90 382 0 -549 346 487 -30 1728 2048 90 826 0 -550 95 160 10 179 499 90 0 17 -551 103 266 -20 982 1302 90 786 0 -552 98 286 30 1257 1577 90 0 272 -553 77 172 20 2896 3216 90 0 18 -554 147 199 30 228 548 90 0 983 -555 210 98 -10 641 961 90 8 0 -556 428 292 10 1771 2091 90 0 497 -557 121 236 -10 1954 2274 90 944 0 -558 336 479 -20 2118 2438 90 419 0 -559 203 369 -30 761 1081 90 236 0 -560 296 232 -30 1188 1508 90 674 0 -561 87 369 10 201 521 90 0 462 -562 247 88 -30 1844 2164 90 771 0 -563 104 246 10 1273 1593 90 0 289 -564 67 302 -10 2413 2733 90 243 0 -565 114 296 40 179 499 90 0 656 -566 394 356 30 178 498 90 0 262 -567 192 306 20 1443 1763 90 0 671 -568 16 285 30 2412 2732 90 0 39 -569 419 310 10 722 1042 90 0 411 -570 389 221 -20 1252 1572 90 662 0 -571 129 264 -20 2681 3001 90 599 0 -572 172 483 -10 824 1144 90 95 0 -573 325 251 -10 1345 1665 90 325 0 -574 151 436 -20 2306 2626 90 888 0 -575 263 91 -10 272 592 90 309 0 -576 401 15 -10 605 925 90 650 0 -577 253 382 -30 3010 3330 90 335 0 -578 247 89 20 1935 2255 90 0 920 -579 283 229 -10 1291 1611 90 271 0 -580 366 341 20 473 793 90 0 697 -581 392 213 -20 2012 2332 90 69 0 -582 167 304 20 127 447 90 0 937 -583 477 154 10 1426 1746 90 0 192 -584 234 383 10 2019 2339 90 0 157 -585 199 327 -10 2979 3299 90 261 0 -586 140 220 30 723 1043 90 0 636 -587 144 266 30 231 551 90 0 862 -588 432 105 10 3272 3592 0 0 1002 -589 368 325 30 139 459 90 0 385 -590 202 386 20 289 609 90 0 680 -591 325 246 -30 1440 1760 90 430 0 -592 430 86 -20 2686 3006 90 989 0 -593 200 195 -10 2105 2425 90 525 0 -594 440 295 30 2056 2376 90 0 123 -595 77 287 10 1825 2145 90 0 618 -596 187 362 -20 1706 2026 90 940 0 -597 131 207 20 919 1239 90 0 638 -598 405 5 20 706 1026 90 0 515 -599 125 226 20 1309 1629 90 0 571 -600 254 335 -10 2933 3253 90 807 0 -601 212 168 -20 780 1100 90 472 0 -602 281 279 20 634 954 90 0 19 -603 326 241 20 1535 1855 90 0 128 -604 152 241 20 713 1033 90 0 708 -605 71 139 30 727 1047 90 0 721 -606 46 277 10 509 829 90 0 109 -607 393 13 20 1278 1598 90 0 477 -608 87 454 -30 802 1122 90 181 0 -609 86 359 -40 3175 3495 90 125 0 -610 220 192 20 89 409 90 0 635 -611 426 279 30 3032 3352 0 0 1010 -612 131 267 10 2492 2812 90 0 344 -613 200 297 30 473 793 90 0 397 -614 299 442 -20 1824 2144 90 338 0 -615 265 218 20 2349 2669 90 0 503 -616 398 231 -20 2216 2536 90 321 0 -617 312 74 -10 2669 2989 90 534 0 -618 99 307 -10 2634 2954 90 595 0 -619 22 283 -10 1233 1553 90 622 0 -620 67 160 -10 2610 2930 90 992 0 -621 390 42 20 2508 2828 90 0 490 -622 44 279 10 416 736 90 0 619 -623 200 182 10 1073 1393 90 0 461 -624 458 303 -30 2451 2771 90 85 0 -625 298 438 10 487 807 90 0 692 -626 62 301 20 3310 3630 90 0 949 -627 112 251 -20 1553 1873 90 666 0 -628 184 354 -20 1896 2216 90 769 0 -629 140 180 -20 2929 3249 90 74 0 -630 269 428 20 1065 1385 90 0 744 -631 123 206 -10 1805 2125 90 176 0 -632 36 284 -20 1618 1938 90 138 0 -633 272 233 10 1667 1987 90 0 527 -634 320 231 20 2304 2624 90 0 844 -635 211 180 -20 678 998 90 610 0 -636 114 169 -30 2532 2852 90 586 0 -637 245 239 -10 2853 3173 90 376 0 -638 117 204 -20 1618 1938 90 597 0 -639 316 254 -20 670 990 90 967 0 -640 169 443 -10 420 740 90 776 0 -641 212 96 10 824 1144 90 0 814 -642 119 285 40 2983 3303 0 0 1013 -643 71 163 -30 2705 3025 90 493 0 -644 78 361 -30 3300 3620 90 97 0 -645 354 219 10 3295 3615 0 0 1014 -646 389 233 -20 2407 2727 90 487 0 -647 90 391 10 461 781 90 0 424 -648 209 307 10 1731 2051 90 0 35 -649 363 351 -10 2843 3163 90 185 0 -650 405 47 10 255 575 90 0 576 -651 278 329 10 83 403 90 0 374 -652 261 371 -30 898 1218 90 67 0 -653 302 470 20 2147 2467 90 0 979 -654 373 205 40 254 574 90 0 946 -655 381 20 -10 1748 2068 90 693 0 -656 90 277 -40 582 902 90 565 0 -657 46 341 -20 2579 2899 90 340 0 -658 50 138 -10 1809 2129 90 677 0 -659 61 437 20 265 585 90 0 972 -660 331 252 -30 1054 1374 90 743 0 -661 440 81 20 2585 2905 90 0 355 -662 384 206 20 659 979 90 0 570 -663 232 87 30 1424 1744 90 0 831 -664 59 471 20 1404 1724 90 0 762 -665 174 304 20 93 413 90 0 87 -666 106 248 20 1366 1686 90 0 627 -667 410 287 -20 3140 3460 90 286 0 -668 206 313 -30 2011 2331 90 945 0 -669 412 367 -30 880 1200 90 86 0 -670 412 300 20 435 755 90 0 995 -671 206 295 -20 2729 3049 90 567 0 -672 329 459 10 2805 3125 90 0 208 -673 177 436 20 199 519 90 0 258 -674 266 264 30 523 843 90 0 560 -675 308 235 -10 3055 3375 90 529 0 -676 260 330 -10 3123 3443 90 118 0 -677 49 136 10 1625 1945 90 0 658 -678 356 28 20 920 1240 90 0 465 -679 428 384 -10 2364 2684 90 436 0 -680 220 362 -20 1251 1571 90 590 0 -681 437 61 -20 2008 2328 90 953 0 -682 365 360 -10 1960 2280 90 106 0 -683 107 168 20 2435 2755 90 0 231 -684 220 177 20 381 701 90 0 524 -685 347 21 20 1306 1626 90 0 899 -686 293 245 -10 3350 3670 90 486 0 -687 267 436 -20 2927 3247 90 448 0 -688 216 96 -40 2486 2806 90 984 0 -689 383 351 20 167 487 90 0 311 -690 289 240 -20 859 1179 90 119 0 -691 129 185 20 2734 3054 90 0 334 -692 291 450 -10 2625 2945 90 625 0 -693 387 21 10 1468 1788 90 0 655 -694 116 255 20 1159 1479 90 0 538 -695 50 368 30 1901 2221 90 0 317 -696 121 249 20 2341 2661 90 0 476 -697 404 346 -20 1083 1403 90 580 0 -698 77 360 -20 3277 3597 90 152 0 -699 447 102 -10 3172 3492 90 190 0 -700 366 16 -20 1898 2218 90 44 0 -701 348 16 -10 1700 2020 90 164 0 -702 353 346 -20 3034 3354 90 105 0 -703 54 485 30 1693 2013 90 0 956 -704 319 77 -20 2478 2798 90 749 0 -705 83 282 -20 1452 1772 90 180 0 -706 384 24 -10 2521 2841 90 259 0 -707 52 469 20 1307 1627 90 0 83 -708 199 200 -20 2865 3185 90 604 0 -709 273 234 -20 1576 1896 90 249 0 -710 16 281 -20 2596 2916 90 928 0 -711 151 442 -10 2402 2722 90 444 0 -712 223 114 -20 252 572 90 172 0 -713 191 308 20 82 402 90 0 45 -714 448 297 10 2552 2872 90 0 46 -715 386 28 -10 2427 2747 90 864 0 -716 106 295 20 973 1293 90 0 806 -717 387 224 30 1437 1757 90 0 276 -718 96 377 10 199 519 90 0 24 -719 86 361 -20 3267 3587 90 225 0 -720 211 107 10 451 771 90 0 1 -721 43 125 -30 1523 1843 90 605 0 -722 369 351 20 758 1078 90 0 916 -723 388 228 -10 1155 1475 90 267 0 -724 325 228 -30 1730 2050 90 445 0 -725 490 159 20 1817 2137 90 0 766 -726 420 78 -20 1318 1638 90 5 0 -727 396 4 10 993 1313 90 0 370 -728 222 317 30 2335 2655 90 0 884 -729 389 198 -10 463 783 90 745 0 -730 322 454 20 240 560 90 0 117 -731 241 391 30 2905 3225 90 0 149 -732 256 117 -20 3087 3407 90 752 0 -733 298 255 -10 71 391 90 942 0 -734 74 363 -20 2683 3003 90 199 0 -735 345 496 20 1327 1647 90 0 366 -736 167 169 20 1574 1894 90 0 506 -737 23 306 20 2102 2422 90 0 950 -738 317 62 -10 597 917 90 932 0 -739 319 257 20 576 896 90 0 901 -740 129 255 -20 2636 2956 90 122 0 -741 59 377 -20 2008 2328 90 895 0 -742 138 272 -20 1741 2061 90 442 0 -743 317 251 30 860 1180 90 0 660 -744 279 436 -20 1439 1759 90 630 0 -745 371 207 10 161 481 90 0 729 -746 263 372 -10 806 1126 90 73 0 -747 50 347 -30 2482 2802 90 467 0 -748 275 236 20 1483 1803 90 0 36 -749 334 47 20 251 571 90 0 704 -750 50 383 10 1809 2129 90 0 754 -751 170 338 -30 2204 2524 90 829 0 -752 245 109 20 3009 3329 90 0 732 -753 69 475 -30 1109 1429 90 10 0 -754 54 372 -10 1911 2231 90 750 0 -755 198 334 20 2123 2443 90 0 202 -756 380 228 -20 1057 1377 90 64 0 -757 425 118 10 219 539 90 0 450 -758 80 398 -10 746 1066 90 255 0 -759 366 57 -40 2996 3316 90 223 0 -760 67 463 30 504 824 90 0 217 -761 226 86 10 2515 2835 0 0 1011 -762 59 480 -20 1503 1823 90 664 0 -763 40 378 20 1306 1626 90 0 947 -764 250 367 -10 2033 2353 90 184 0 -765 157 436 -20 2693 3013 90 941 0 -766 463 161 -20 2323 2643 90 725 0 -767 266 250 -10 329 649 90 98 0 -768 51 162 -10 2133 2453 90 480 0 -769 194 353 20 1291 1611 90 0 628 -770 383 41 -10 2605 2925 90 935 0 -771 247 82 30 1748 2068 90 0 562 -772 457 142 20 749 1069 90 0 954 -773 244 94 -20 1715 2035 90 265 0 -774 441 63 -30 2194 2514 90 345 0 -775 244 371 20 2230 2550 90 0 182 -776 174 444 10 325 645 90 0 640 -777 94 247 -40 773 1093 90 277 0 -778 320 225 20 1934 2254 90 0 482 -779 316 80 -10 2572 2892 90 876 0 -780 155 447 20 2592 2912 90 0 299 -781 211 308 30 1823 2143 90 0 973 -782 297 442 20 1732 2052 90 0 998 -783 200 342 10 917 1237 90 0 964 -784 44 325 -30 3101 3421 90 113 0 -785 438 60 -10 2100 2420 90 369 0 -786 80 374 20 419 739 90 0 551 -787 59 163 -10 2231 2551 90 422 0 -788 236 92 -10 2130 2450 90 843 0 -789 414 66 30 1512 1832 90 0 392 -790 34 279 -20 1426 1746 90 212 0 -791 475 156 40 1333 1653 90 0 410 -792 404 310 20 165 485 90 0 298 -793 367 239 -20 3076 3396 90 934 0 -794 210 359 -30 1488 1808 90 23 0 -795 133 278 -10 1930 2250 90 108 0 -796 446 169 -10 3105 3425 90 48 0 -797 188 356 20 1802 2122 90 0 300 -798 312 252 20 765 1085 90 0 56 -799 69 485 -30 2178 2498 90 892 0 -800 413 353 10 1570 1890 90 0 523 -801 54 446 20 277 597 90 0 822 -802 56 357 -10 1708 2028 90 229 0 -803 230 105 -20 2878 3198 90 284 0 -804 196 302 20 194 514 90 0 432 -805 391 373 10 2980 3300 90 0 89 -806 101 295 -20 878 1198 90 716 0 -807 234 350 10 2537 2857 90 0 600 -808 215 108 -10 2680 3000 90 247 0 -809 142 457 -20 1513 1833 90 857 0 -810 283 425 20 778 1098 90 0 851 -811 77 397 10 839 1159 90 0 412 -812 105 317 -20 2829 3149 90 828 0 -813 382 213 20 1635 1955 90 0 173 -814 213 76 -10 1220 1540 90 641 0 -815 417 56 20 1702 2022 90 0 32 -816 183 340 -20 2597 2917 90 974 0 -817 123 242 -20 3110 3430 90 930 0 -818 475 136 -20 949 1269 90 468 0 -819 377 246 -20 2974 3294 90 349 0 -820 310 484 30 546 866 90 0 840 -821 47 280 10 323 643 90 0 996 -822 57 456 -20 308 628 90 801 0 -823 313 266 -10 293 613 90 356 0 -824 475 145 -10 1048 1368 90 155 0 -825 400 376 40 682 1002 90 0 54 -826 290 416 30 170 490 90 0 549 -827 277 369 30 330 650 90 0 96 -828 91 303 20 2119 2439 90 0 812 -829 194 301 30 286 606 90 0 751 -830 254 238 -10 2566 2886 90 153 0 -831 215 91 -30 2210 2530 90 663 0 -832 500 162 20 2008 2328 90 0 372 -833 56 287 20 197 517 90 0 6 -834 289 452 -20 2718 3038 90 847 0 -835 378 326 30 148 468 90 0 469 -836 197 350 30 1106 1426 90 0 919 -837 243 88 -20 1651 1971 90 488 0 -838 250 72 20 1045 1365 90 0 283 -839 101 290 -10 1070 1390 90 37 0 -840 351 480 -30 1630 1950 90 820 0 -841 67 357 -30 2964 3284 90 251 0 -842 128 240 10 3205 3525 0 0 1012 -843 253 81 10 946 1266 90 0 788 -844 307 227 -20 2773 3093 90 634 0 -845 233 441 -30 3145 3465 90 350 0 -846 311 47 10 990 1310 90 0 896 -847 292 456 20 2438 2758 90 0 834 -848 183 187 -10 1688 2008 90 886 0 -849 392 31 -20 2810 3130 90 63 0 -850 103 251 10 1178 1498 90 0 316 -851 300 443 -20 1916 2236 90 810 0 -852 420 295 -10 1672 1992 90 870 0 -853 427 64 -40 1212 1532 90 233 0 -854 372 354 30 1861 2181 90 0 347 -855 101 263 -10 1076 1396 90 257 0 -856 141 454 20 1606 1926 90 0 388 -857 146 461 20 1417 1737 90 0 809 -858 298 430 30 389 709 90 0 227 -859 148 270 10 103 423 90 0 41 -860 76 287 -20 1734 2054 90 189 0 -861 308 55 30 791 1111 90 0 52 -862 143 257 -30 421 741 90 587 0 -863 393 2 30 899 1219 90 0 294 -864 385 28 10 2206 2526 90 0 715 -865 204 291 20 2823 3143 90 0 959 -866 132 272 -20 2214 2534 90 191 0 -867 206 379 10 387 707 90 0 312 -868 69 383 -10 2390 2710 90 33 0 -869 245 96 -30 1623 1943 90 545 0 -870 431 301 10 1388 1708 90 0 852 -871 448 94 20 3074 3394 90 0 13 -872 199 305 -10 1540 1860 90 891 0 -873 95 356 -20 3317 3637 90 82 0 -874 328 498 20 1033 1353 90 0 43 -875 108 222 -20 1417 1737 90 104 0 -876 341 26 10 1208 1528 90 0 779 -877 63 454 10 404 724 90 0 288 -878 222 357 -20 1437 1757 90 890 0 -879 416 364 -30 1858 2178 90 889 0 -880 127 278 10 2026 2346 90 0 101 -881 140 252 20 517 837 90 0 987 -882 218 298 -20 2626 2946 90 401 0 -883 432 87 -10 2778 3098 90 885 0 -884 216 300 -30 2533 2853 90 728 0 -885 438 72 10 1018 1338 90 0 883 -886 184 178 10 1374 1694 90 0 848 -887 345 468 -20 2597 2917 90 361 0 -888 150 435 20 2215 2535 90 0 574 -889 395 365 30 208 528 90 0 879 -890 208 371 20 575 895 90 0 878 -891 190 292 10 665 985 90 0 872 -892 78 479 30 1009 1329 90 0 799 -893 104 198 -40 2223 2543 90 94 0 -894 346 13 -20 1606 1926 90 455 0 -895 47 388 20 1113 1433 90 0 741 -896 315 57 -10 1091 1411 90 846 0 -897 110 199 -20 2127 2447 90 383 0 -898 323 60 -10 1190 1510 90 408 0 -899 308 82 -20 2859 3179 90 685 0 -900 216 374 -20 955 1275 90 170 0 -901 326 253 -20 959 1279 90 739 0 -902 308 232 -20 2868 3188 90 417 0 -903 118 223 10 259 579 90 0 943 -904 149 444 -20 2495 2815 90 111 0 -905 95 395 30 252 572 90 0 71 -906 117 319 10 3028 3348 90 0 256 -907 262 352 10 1556 1876 90 0 958 -908 468 135 10 852 1172 90 0 396 -909 351 31 20 733 1053 90 0 918 -910 361 15 20 2038 2358 90 0 381 -911 195 300 10 378 698 90 0 948 -912 397 27 -40 2308 2628 90 457 0 -913 179 311 -10 231 551 90 473 0 -914 77 133 10 629 949 90 0 273 -915 66 397 10 1045 1365 90 0 418 -916 366 352 -20 2750 3070 90 722 0 -917 221 87 20 1323 1643 90 0 91 -918 347 23 -20 1020 1340 90 909 0 -919 176 358 -30 1995 2315 90 836 0 -920 229 78 -20 2416 2736 90 578 0 -921 272 246 10 138 458 90 0 533 -922 293 67 20 210 530 90 0 244 -923 140 265 -20 1463 1783 90 337 0 -924 238 83 -20 1463 1783 90 438 0 -925 136 296 -10 3195 3515 90 161 0 -926 218 98 -10 1922 2242 90 999 0 -927 290 440 -10 1541 1861 90 238 0 -928 29 302 20 2005 2325 90 0 710 -929 290 425 30 200 520 90 0 354 -930 124 247 20 3015 3335 90 0 817 -931 442 287 -30 2744 3064 90 520 0 -932 294 64 10 303 623 90 0 738 -933 74 165 -10 2798 3118 90 275 0 -934 382 245 20 2879 3199 90 0 793 -935 405 24 10 298 618 90 0 770 -936 211 97 -20 732 1052 90 12 0 -937 88 390 -20 553 873 90 582 0 -938 37 295 -30 1811 2131 90 7 0 -939 359 371 -20 2342 2662 90 230 0 -940 186 372 20 1605 1925 90 0 596 -941 116 446 20 1818 2138 90 0 765 -942 293 249 10 43 363 90 0 733 -943 83 228 -10 569 889 90 903 0 -944 96 269 10 885 1205 90 0 557 -945 179 284 30 951 1271 90 0 668 -946 368 219 -40 860 1180 90 654 0 -947 66 359 -20 3077 3397 90 763 0 -948 189 338 -10 2874 3194 90 911 0 -949 163 277 -20 3412 3732 90 626 0 -950 5 296 -20 2306 2626 90 737 0 -951 152 478 20 935 1255 90 0 206 -952 366 34 10 2006 2326 90 0 302 -953 429 80 20 735 1055 90 0 681 -954 464 178 -20 2611 2931 90 772 0 -955 138 196 30 1913 2233 90 0 135 -956 87 481 -30 2653 2973 90 703 0 -957 425 99 20 231 551 90 0 990 -958 241 362 -10 2330 2650 90 907 0 -959 207 289 -20 2917 3237 90 865 0 -960 264 365 10 1175 1495 90 0 245 -961 102 289 -10 1162 1482 90 50 0 -962 233 346 -20 2631 2951 90 390 0 -963 78 141 30 322 642 90 0 313 -964 196 348 -10 1014 1334 90 783 0 -965 216 92 -20 2302 2622 90 188 0 -966 444 309 -10 2345 2665 90 514 0 -967 313 263 20 386 706 90 0 639 -968 211 198 -30 2580 2900 90 40 0 -969 314 436 -30 2021 2341 90 305 0 -970 217 189 20 484 804 90 0 103 -971 197 178 20 978 1298 90 0 329 -972 60 497 -20 1797 2117 90 659 0 -973 206 312 -30 1920 2240 90 781 0 -974 197 351 20 1197 1517 90 0 816 -975 305 233 -10 2961 3281 90 174 0 -976 297 250 -10 3253 3573 90 293 0 -977 71 348 10 2975 3295 90 0 470 -978 11 269 10 1030 1350 90 0 156 -979 247 447 -20 3040 3360 90 653 0 -980 386 213 -10 1916 2236 90 423 0 -981 292 434 10 675 995 90 0 218 -982 436 301 -10 1293 1613 90 375 0 -983 145 221 -30 628 948 90 554 0 -984 224 96 40 2018 2338 90 0 688 -985 59 128 -20 1416 1736 90 121 0 -986 489 150 -20 1718 2038 90 134 0 -987 152 225 -20 914 1234 90 881 0 -988 426 85 10 547 867 90 0 516 -989 415 73 20 1415 1735 90 0 592 -990 440 70 -20 2291 2611 90 957 0 -991 320 476 30 443 763 90 0 489 -992 57 132 10 1232 1552 90 0 620 -993 405 311 30 166 486 90 0 498 -994 109 250 10 1460 1780 90 0 150 -995 428 314 -20 912 1232 90 670 0 -996 40 288 -10 1713 2033 90 821 0 -997 175 282 10 1046 1366 90 0 220 -998 298 456 -20 2252 2572 90 782 0 -999 208 101 10 547 867 90 0 926 -1000 342 52 10 218 538 90 0 211 -1001 95 475 -20 2845 3165 90 160 0 -1002 432 105 -10 3272 3592 90 588 0 -1003 344 478 -20 2216 2536 90 456 0 -1004 344 46 -30 1580 1900 90 546 0 -1005 53 297 -30 3220 3540 90 522 0 -1006 172 435 -30 2981 3301 90 177 0 -1007 322 78 -20 2384 2704 90 395 0 -1008 200 327 -30 3070 3390 90 239 0 -1009 432 369 -10 2067 2387 90 537 0 -1010 426 279 -30 3032 3352 90 611 0 -1011 226 86 -10 2515 2835 90 761 0 -1012 128 240 -10 3205 3525 90 842 0 -1013 119 285 -40 2983 3303 90 642 0 -1014 354 219 -10 3295 3615 90 645 0 diff --git a/jsprit-instances/instances/lilim/1000/LC2106.txt b/jsprit-instances/instances/lilim/1000/LC2106.txt deleted file mode 100644 index d5e7968fb..000000000 --- a/jsprit-instances/instances/lilim/1000/LC2106.txt +++ /dev/null @@ -1,1020 +0,0 @@ -250 700 1 -0 250 250 0 0 3914 0 0 0 -1 212 101 -20 2549 2934 90 936 0 -2 266 231 -30 1815 2218 90 743 0 -3 89 284 20 1301 1730 90 0 705 -4 430 298 10 1388 1895 90 0 667 -5 435 77 20 891 1274 90 0 681 -6 25 293 -20 2773 3314 90 22 0 -7 43 269 30 558 977 90 0 186 -8 216 117 10 259 760 90 0 453 -9 294 437 -20 494 989 90 338 0 -10 79 479 30 780 1375 90 0 753 -11 365 18 20 2048 2538 90 0 770 -12 225 125 20 127 757 90 0 869 -13 448 103 -10 2964 3578 90 699 0 -14 143 266 10 297 668 90 0 828 -15 252 347 -30 2796 3187 90 67 0 -16 403 390 -10 2376 2903 90 311 0 -17 67 153 20 674 1309 90 0 484 -18 90 168 20 2934 3386 90 0 629 -19 302 235 20 902 1344 90 0 633 -20 259 355 -10 1768 2226 90 184 0 -21 149 183 -10 2903 3473 90 550 0 -22 19 297 20 2087 2637 90 0 6 -23 209 358 30 1360 1753 90 0 973 -24 56 388 -20 1637 2105 90 76 0 -25 115 269 -10 2800 3273 90 289 0 -26 377 356 -20 1747 2104 90 159 0 -27 113 229 -30 958 1447 90 777 0 -28 205 343 -20 696 1267 90 602 0 -29 48 137 20 1598 2156 90 0 787 -30 467 157 -10 2130 2645 90 144 0 -31 220 394 -30 2634 3092 90 519 0 -32 436 54 20 1733 2409 90 0 190 -33 54 357 -20 1525 2028 90 129 0 -34 456 154 10 227 725 90 0 49 -35 216 307 -20 2380 2812 90 567 0 -36 280 224 10 2049 2562 90 0 215 -37 90 270 10 353 938 90 0 627 -38 166 452 -20 425 934 90 379 0 -39 17 283 -20 2391 2936 90 138 0 -40 196 192 -10 1914 2425 90 376 0 -41 94 275 10 286 811 90 0 122 -42 292 445 10 1557 2036 90 0 614 -43 329 471 30 2583 3142 90 0 672 -44 326 57 -20 1216 1672 90 738 0 -45 95 466 -20 2842 3365 90 232 0 -46 429 282 -20 2859 3337 90 286 0 -47 229 364 -10 2405 2778 90 403 0 -48 457 160 10 2855 3286 90 0 384 -49 452 154 -10 223 701 90 34 0 -50 113 289 10 142 459 90 0 557 -51 67 387 -20 2219 2692 90 57 0 -52 368 17 -10 1903 2299 90 935 0 -53 341 367 -30 2322 2899 90 347 0 -54 410 364 30 1685 2159 90 0 357 -55 80 281 10 1602 1992 90 0 161 -56 321 224 -10 1924 2447 90 901 0 -57 73 395 20 1051 1555 90 0 51 -58 259 76 10 784 1232 90 0 488 -59 121 203 10 1634 2109 90 0 897 -60 118 256 10 2296 2901 90 0 642 -61 236 361 -20 1564 2022 90 713 0 -62 78 371 -10 210 692 90 561 0 -63 301 53 20 826 1271 90 0 704 -64 382 197 20 520 921 90 0 267 -65 491 160 20 1839 2298 90 0 81 -66 453 164 10 2861 3471 90 0 796 -67 277 371 30 354 997 90 0 15 -68 272 212 -10 2098 2723 90 709 0 -69 386 218 20 1785 2177 90 0 980 -70 353 32 10 694 1277 90 0 909 -71 59 389 20 1487 2069 90 0 517 -72 414 62 -20 1524 2008 90 957 0 -73 278 357 10 110 608 90 0 187 -74 101 179 -20 2261 2723 90 597 0 -75 396 234 -10 2118 2821 90 723 0 -76 74 390 20 592 1163 90 0 24 -77 332 55 30 211 797 90 0 201 -78 272 365 30 508 1037 90 0 775 -79 418 355 -10 1909 2325 90 800 0 -80 216 380 20 2094 2667 90 0 118 -81 440 173 -20 3101 3619 90 65 0 -82 89 358 -10 3140 3631 90 508 0 -83 66 491 20 1898 2403 90 0 956 -84 317 234 -30 2372 2746 90 330 0 -85 439 297 -30 1862 2384 90 411 0 -86 394 367 30 197 723 90 0 132 -87 58 364 -20 1994 2690 90 462 0 -88 290 75 20 179 690 90 0 295 -89 346 344 10 3043 3541 0 0 1011 -90 131 269 -20 2222 2714 90 401 0 -91 236 96 20 1412 1955 90 0 808 -92 29 282 10 1196 1784 90 0 632 -93 418 385 -20 2586 3088 90 879 0 -94 148 225 -30 501 885 90 554 0 -95 166 464 10 587 1161 90 0 809 -96 266 373 -30 566 1180 90 350 0 -97 201 273 30 54 690 90 0 220 -98 255 245 10 7 329 90 0 224 -99 220 379 -10 2307 2642 90 146 0 -100 85 317 30 2513 2860 90 0 812 -101 125 264 -20 2588 3283 90 666 0 -102 131 253 -20 2529 3248 90 344 0 -103 184 188 -20 1168 1512 90 610 0 -104 128 209 20 850 1496 90 0 393 -105 373 364 -10 2942 3558 90 679 0 -106 389 342 -10 984 1466 90 298 0 -107 420 20 30 383 927 90 0 165 -108 132 218 10 122 650 90 0 850 -109 32 256 -10 730 1231 90 606 0 -110 406 339 20 179 630 90 0 269 -111 191 397 20 158 673 90 0 197 -112 72 341 10 2720 3172 90 0 873 -113 35 308 -10 2908 3396 90 622 0 -114 169 360 20 1993 2512 90 0 332 -115 222 381 -10 2473 2866 90 584 0 -116 96 292 10 668 1217 90 0 961 -117 311 496 -20 549 1066 90 419 0 -118 220 384 -20 2523 3003 90 80 0 -119 259 243 20 11 505 90 0 223 -120 349 476 -20 2267 2860 90 361 0 -121 63 159 20 961 1216 90 0 985 -122 112 243 -10 2101 2701 90 41 0 -123 448 302 -20 2164 2650 90 670 0 -124 343 27 -10 983 1569 90 164 0 -125 67 485 40 1938 2555 90 0 388 -126 220 359 30 1247 1761 90 0 676 -127 147 435 10 1961 2421 90 0 299 -128 317 235 -10 2414 2886 90 482 0 -129 43 355 20 1388 1963 90 0 33 -130 368 340 10 245 836 90 0 778 -131 450 72 -30 2437 2845 90 853 0 -132 400 364 -30 440 859 90 86 0 -133 355 480 20 1512 1880 90 0 558 -134 450 153 20 298 927 90 0 725 -135 126 188 -30 1918 2437 90 638 0 -136 380 223 -30 1483 1906 90 717 0 -137 71 453 -20 504 1025 90 822 0 -138 54 287 20 199 617 90 0 39 -139 420 168 -50 2983 3636 90 986 0 -140 219 89 20 2530 3014 90 0 752 -141 189 327 -20 253 746 90 804 0 -142 191 309 10 1233 1788 90 0 865 -143 301 67 40 348 773 90 0 323 -144 484 161 10 1482 2071 90 0 30 -145 77 483 -10 2389 2849 90 288 0 -146 241 375 10 1810 2347 90 0 99 -147 428 64 -10 1014 1548 90 757 0 -148 403 361 -10 1323 1742 90 356 0 -149 257 336 -30 2930 3442 90 335 0 -150 131 241 -30 2953 3705 90 866 0 -151 63 166 -30 2338 2826 90 421 0 -152 71 368 -40 3051 3610 90 317 0 -153 272 228 10 1895 2330 90 0 615 -154 25 290 30 2710 3192 90 0 949 -155 441 157 10 259 766 90 0 375 -156 13 266 20 1034 1533 90 0 790 -157 251 376 -10 2972 3561 90 238 0 -158 61 170 30 2225 2750 90 0 683 -159 386 357 20 1285 1740 90 0 26 -160 95 475 -20 2797 3213 90 226 0 -161 90 298 -10 1929 2438 90 55 0 -162 71 388 20 1353 1816 90 0 248 -163 383 246 -20 2627 3268 90 646 0 -164 352 38 10 374 1037 90 0 124 -165 395 1 -30 726 1208 90 107 0 -166 120 210 -10 1084 1640 90 405 0 -167 46 383 30 1090 1647 90 0 199 -168 202 198 30 2137 2579 90 0 506 -169 358 365 -10 2134 2677 90 501 0 -170 191 352 20 117 742 90 0 590 -171 470 152 -20 1010 1603 90 468 0 -172 228 124 20 127 646 90 0 188 -173 402 230 -20 2111 2453 90 581 0 -174 323 229 -10 1560 2036 90 303 0 -175 331 486 10 1745 2421 90 0 887 -176 112 208 10 1404 1959 0 0 1017 -177 172 435 -20 2947 3336 90 780 0 -178 326 498 10 862 1340 0 0 1003 -179 460 183 -30 2596 3139 90 766 0 -180 95 279 20 181 728 90 0 806 -181 76 456 30 574 1147 90 0 664 -182 242 350 -10 2595 3187 90 807 0 -183 152 196 10 111 704 90 0 313 -184 268 351 10 1255 1805 90 0 20 -185 360 356 -20 2538 3088 90 246 0 -186 39 296 -30 1899 2228 90 7 0 -187 262 368 -10 967 1517 90 73 0 -188 204 90 -20 956 1392 90 172 0 -189 149 273 -10 103 485 90 308 0 -190 446 86 -20 2838 3433 90 32 0 -191 139 269 20 1577 2039 90 0 740 -192 483 170 30 2073 2481 90 0 954 -193 39 278 10 1430 1933 90 0 938 -194 201 307 10 1550 2036 90 0 882 -195 395 378 -30 1449 1983 90 993 0 -196 139 262 -10 1369 1691 90 997 0 -197 176 447 -20 210 645 90 111 0 -198 67 380 -10 2037 2680 90 750 0 -199 35 358 -30 1322 1831 90 167 0 -200 294 455 30 2331 2682 90 0 577 -201 351 33 -30 517 1085 90 77 0 -202 216 316 20 2139 2659 90 0 884 -203 261 96 40 361 694 90 0 663 -204 238 57 -20 1112 1720 90 838 0 -205 383 18 -10 1452 1993 90 727 0 -206 152 460 10 1141 1639 90 0 433 -207 94 479 -30 2652 3168 90 703 0 -208 337 453 -30 2844 3286 90 840 0 -209 135 460 10 1634 2096 90 0 941 -210 260 104 20 146 669 90 0 575 -211 337 63 -30 1933 2317 90 546 0 -212 32 247 20 651 1112 90 0 304 -213 394 205 -10 274 776 90 745 0 -214 95 294 10 556 1144 90 0 696 -215 253 241 -10 2646 3184 90 36 0 -216 223 90 30 2535 3199 90 0 240 -217 64 473 -30 1079 1649 90 892 0 -218 275 431 -10 963 1680 90 625 0 -219 261 84 10 464 1164 90 0 761 -220 176 296 -30 1057 1563 90 97 0 -221 361 349 -10 2902 3290 90 916 0 -222 168 433 -20 3009 3462 90 765 0 -223 394 10 -20 1050 1448 90 119 0 -224 308 60 -10 609 1104 90 98 0 -225 94 456 -30 3054 3353 90 235 0 -226 73 484 20 2344 2707 90 0 160 -227 277 434 -20 1282 1732 90 810 0 -228 119 232 -40 1720 2318 90 565 0 -229 78 375 10 212 867 90 0 747 -230 366 346 20 472 983 90 0 325 -231 125 181 20 2499 3098 90 0 691 -232 69 493 20 1802 2311 90 0 45 -233 432 80 -20 746 1231 90 530 0 -234 72 391 -10 1181 1803 90 255 0 -235 85 486 30 2468 2967 90 0 225 -236 204 371 -20 565 1093 90 513 0 -237 173 328 -10 2267 2855 90 271 0 -238 280 423 10 754 1308 90 0 157 -239 200 327 -20 2936 3524 90 300 0 -240 241 98 -30 2822 3312 90 216 0 -241 96 356 10 186 707 90 0 695 -242 332 491 -20 1177 1405 90 364 0 -243 81 283 10 1447 1961 90 0 470 -244 373 22 -30 2121 2664 90 510 0 -245 255 371 40 2017 2562 90 0 600 -246 358 359 20 2501 2937 90 0 185 -247 216 93 -10 2470 2636 90 788 0 -248 73 360 -20 2857 3197 90 162 0 -249 305 212 20 991 1480 90 0 830 -250 151 462 10 1290 1675 90 0 386 -251 47 389 -20 918 1446 90 426 0 -252 155 198 30 108 681 90 0 893 -253 152 457 -30 1028 1566 90 572 0 -254 329 48 -10 1333 1937 90 408 0 -255 88 394 10 560 1054 90 0 234 -256 153 295 -40 3211 3713 90 378 0 -257 81 373 10 421 919 90 0 467 -258 163 453 10 616 929 90 0 444 -259 378 25 -30 2227 2750 90 294 0 -260 401 385 -10 2697 3191 90 339 0 -261 184 340 -10 2646 3049 90 816 0 -262 402 362 -20 1158 1723 90 446 0 -263 70 482 -20 2143 2719 90 391 0 -264 357 445 -20 3079 3455 90 366 0 -265 212 71 -10 1043 1525 90 555 0 -266 231 81 30 2188 2777 90 0 283 -267 379 208 -20 656 1173 90 64 0 -268 236 95 30 1991 2403 90 0 984 -269 386 344 -20 1101 1536 90 110 0 -270 189 200 -20 1738 2400 90 943 0 -271 296 253 10 724 1105 90 0 237 -272 73 303 -20 2258 2697 90 694 0 -273 30 162 -10 1909 2454 90 914 0 -274 230 95 20 1742 2216 0 0 1016 -275 57 131 10 1291 1675 90 0 677 -276 379 245 10 2626 3080 0 0 1018 -277 107 221 -10 284 945 90 903 0 -278 154 458 20 972 1438 90 0 711 -279 290 417 10 171 668 90 0 969 -280 272 243 30 23 642 90 0 402 -281 94 130 10 448 914 0 0 1012 -282 222 356 20 1411 1964 90 0 878 -283 243 108 -30 2897 3384 90 266 0 -284 224 93 20 2019 2523 90 0 831 -285 155 242 10 666 1266 90 0 538 -286 440 302 20 1114 1604 90 0 46 -287 221 102 -30 2727 3149 90 562 0 -288 52 484 10 1592 1931 90 0 145 -289 111 244 10 2089 2530 90 0 25 -290 132 273 -30 2036 2530 90 613 0 -291 228 186 20 119 580 90 0 971 -292 221 374 30 878 1543 90 0 668 -293 406 286 -30 3039 3664 90 520 0 -294 390 9 30 1053 1632 90 0 259 -295 335 52 -20 1587 2095 90 88 0 -296 189 368 20 132 605 90 0 872 -297 397 40 -10 2303 2838 90 451 0 -298 408 305 10 248 750 90 0 106 -299 156 434 -10 2608 3283 90 127 0 -300 180 335 20 2395 2926 90 0 239 -301 327 483 20 1936 2421 90 0 489 -302 363 62 -10 3048 3605 90 490 0 -303 375 342 10 742 1296 90 0 174 -304 16 280 -20 2594 3100 90 212 0 -305 277 431 -20 1174 1653 90 448 0 -306 110 241 -20 1953 2479 90 316 0 -307 48 385 -40 783 1394 90 459 0 -308 152 260 10 98 475 90 0 189 -309 255 120 10 130 591 90 0 771 -310 214 382 30 2351 2791 0 0 1014 -311 414 384 10 2527 2957 90 0 16 -312 232 378 -10 2024 2525 90 348 0 -313 80 141 -10 340 807 90 183 0 -314 188 330 30 386 801 90 0 441 -315 157 192 -20 3049 3532 90 643 0 -316 101 237 20 1700 2122 90 0 306 -317 74 360 40 2660 3212 90 0 152 -318 267 260 20 385 793 90 0 755 -319 378 46 -20 2896 3445 90 621 0 -320 420 311 -10 660 1286 90 322 0 -321 384 217 20 1615 2163 90 0 349 -322 418 300 10 473 909 90 0 320 -323 356 77 -40 2026 2633 90 143 0 -324 253 244 -10 2501 3142 90 733 0 -325 323 258 -20 1160 1657 90 230 0 -326 293 454 20 2394 2987 90 0 979 -327 231 97 -10 2743 3192 90 803 0 -328 316 234 -20 2544 2938 90 634 0 -329 207 196 -20 2309 2982 90 472 0 -330 321 228 30 2046 2514 90 0 84 -331 382 17 -20 1616 2012 90 576 0 -332 206 326 -20 3119 3533 90 114 0 -333 198 284 10 62 632 90 0 540 -334 137 186 10 2688 3297 0 0 1008 -335 229 396 30 2666 3258 90 0 149 -336 268 235 -30 1648 2195 90 579 0 -337 95 243 20 603 1074 90 0 563 -338 297 430 20 250 667 90 0 9 -339 393 368 10 317 787 90 0 260 -340 66 391 -10 1469 1892 90 811 0 -341 189 339 -20 2726 3160 90 769 0 -342 280 351 30 105 565 90 0 491 -343 241 77 30 987 1623 90 0 380 -344 134 265 20 2441 3050 90 0 102 -345 420 95 30 230 634 90 0 988 -346 111 279 -20 141 662 90 582 0 -347 367 358 30 2009 2417 90 0 53 -348 239 373 10 1747 2223 90 0 312 -349 384 235 -20 2449 3055 90 321 0 -350 284 360 30 115 726 90 0 96 -351 325 75 -20 2212 2689 90 531 0 -352 279 369 10 312 853 90 0 958 -353 340 449 -20 2926 3394 90 874 0 -354 275 448 -20 2796 3168 90 847 0 -355 447 88 20 2754 3332 0 0 1002 -356 314 279 10 113 586 90 0 148 -357 434 377 -30 2115 2736 90 54 0 -358 67 377 -30 1952 2579 90 398 0 -359 370 353 10 586 1065 90 0 902 -360 57 367 -20 1898 2600 90 763 0 -361 332 486 20 1681 2304 90 0 120 -362 386 361 30 1389 1824 90 0 854 -363 55 282 40 293 477 90 0 821 -364 317 467 20 269 738 90 0 242 -365 335 54 -10 1675 2192 90 932 0 -366 348 466 20 2389 2937 90 0 264 -367 132 314 -10 3127 3460 90 944 0 -368 328 216 -20 1756 2228 90 603 0 -369 416 48 10 1727 2193 90 0 774 -370 370 55 -20 2691 3241 90 515 0 -371 149 434 30 1999 2568 90 0 888 -372 466 169 30 2268 2896 90 0 410 -373 141 267 10 1419 2011 90 0 880 -374 258 350 -20 1663 2140 90 390 0 -375 428 312 -10 882 1445 90 155 0 -376 211 188 10 461 1019 90 0 40 -377 50 343 10 2524 3143 90 0 609 -378 107 311 40 2609 3176 90 0 256 -379 178 441 20 204 815 90 0 38 -380 232 85 -30 2129 2649 90 343 0 -381 391 23 -20 2470 3086 90 607 0 -382 137 227 20 115 770 90 0 551 -383 161 203 20 100 507 90 0 636 -384 363 212 -10 3103 3605 90 48 0 -385 384 346 20 1183 1639 0 0 1010 -386 166 434 -10 2813 3278 90 250 0 -387 274 248 -10 154 626 90 921 0 -388 156 421 -40 3224 3629 90 125 0 -389 346 211 10 103 432 90 0 487 -390 265 358 20 1271 1593 90 0 374 -391 96 407 20 237 791 90 0 263 -392 443 70 20 2322 2767 90 0 592 -393 125 212 -20 911 1623 90 104 0 -394 361 337 50 167 718 90 0 660 -395 322 78 20 2246 2842 90 0 779 -396 481 156 20 1392 1969 0 0 1004 -397 188 293 30 756 1078 90 0 945 -398 76 408 30 849 1352 90 0 358 -399 130 304 -10 2998 3512 90 906 0 -400 378 363 30 1516 2141 90 0 649 -401 185 301 20 1128 1693 90 0 90 -402 385 235 -30 2402 2920 90 280 0 -403 261 350 10 1562 2056 90 0 47 -404 389 33 -20 2830 3296 90 849 0 -405 151 214 10 278 905 90 0 166 -406 265 94 10 156 708 90 0 547 -407 65 164 -30 2361 2990 90 605 0 -408 293 81 10 174 676 90 0 254 -409 363 55 10 2909 3216 0 0 1005 -410 465 176 -30 2333 3024 90 372 0 -411 428 298 30 1481 1987 90 0 85 -412 75 379 30 2402 2893 90 0 698 -413 404 378 -20 718 1156 90 689 0 -414 203 203 -30 2675 3185 90 955 0 -415 259 88 20 385 865 90 0 843 -416 362 17 -20 1759 2169 90 749 0 -417 320 258 20 394 894 90 0 739 -418 59 358 -20 2137 2739 90 754 0 -419 316 453 20 213 672 90 0 117 -420 225 192 20 63 669 90 0 601 -421 140 206 30 232 743 90 0 151 -422 83 151 -20 194 686 90 449 0 -423 366 196 10 127 631 90 0 662 -424 108 245 -30 1584 2037 90 552 0 -425 129 267 10 2299 2822 90 0 930 -426 57 379 20 774 1201 90 0 251 -427 329 56 20 1259 1816 90 0 454 -428 213 363 -10 1035 1594 90 542 0 -429 76 391 -10 1093 1702 90 718 0 -430 330 259 30 974 1648 90 0 724 -431 136 217 30 756 1200 90 0 452 -432 165 333 -20 2120 2802 90 690 0 -433 160 431 -10 3067 3601 90 206 0 -434 338 489 -10 1164 1611 90 500 0 -435 335 64 -30 1752 2314 90 861 0 -436 412 361 10 1585 2072 90 0 805 -437 259 90 30 433 1001 90 0 438 -438 265 77 -30 628 1196 90 437 0 -439 460 173 20 2723 3211 90 0 645 -440 83 301 20 2086 2668 90 0 564 -441 201 331 -30 493 1080 90 314 0 -442 118 214 20 136 592 90 0 504 -443 395 30 -10 2687 3066 90 496 0 -444 125 444 -10 1836 2318 90 258 0 -445 283 248 30 33 376 90 0 748 -446 391 334 20 873 1380 90 0 262 -447 212 215 -30 3093 3387 90 505 0 -448 276 428 20 959 1297 90 0 305 -449 96 152 20 182 655 90 0 422 -450 425 85 10 427 806 90 0 990 -451 336 7 10 1446 1883 90 0 297 -452 196 219 -30 2836 3431 90 431 0 -453 210 94 -10 811 1342 90 8 0 -454 310 81 -20 2688 3165 90 427 0 -455 341 37 20 342 685 90 0 678 -456 344 478 -30 2092 2661 90 820 0 -457 406 37 40 264 700 90 0 518 -458 69 346 -10 2744 3339 90 657 0 -459 80 376 40 243 730 90 0 307 -460 314 449 -30 209 739 90 826 0 -461 209 201 -10 2586 3081 90 528 0 -462 88 379 20 450 1089 90 0 87 -463 352 500 -20 1366 1804 90 735 0 -464 65 357 -10 2236 2832 90 502 0 -465 345 15 20 1264 1860 90 0 701 -466 125 245 20 2858 3307 90 0 817 -467 52 369 -10 1884 2423 90 257 0 -468 449 140 20 543 1078 90 0 171 -469 430 310 30 1020 1493 90 0 982 -470 109 325 -10 2847 3329 90 243 0 -471 446 139 20 414 1021 90 0 818 -472 229 214 20 41 617 90 0 329 -473 197 301 10 73 550 90 0 511 -474 146 245 -30 466 1087 90 587 0 -475 401 368 20 452 1036 90 0 512 -476 116 259 -20 2421 2965 90 716 0 -477 374 55 -20 2537 3206 90 685 0 -478 249 251 -30 2933 3298 90 728 0 -479 325 490 -20 746 1260 90 730 0 -480 59 159 10 947 1419 90 0 992 -481 186 177 20 1203 1680 90 0 503 -482 319 229 10 2126 2618 90 0 128 -483 26 269 30 865 1305 90 0 619 -484 53 139 -20 1017 1571 90 17 0 -485 471 154 20 1170 1628 90 0 583 -486 301 247 -20 3059 3578 90 793 0 -487 388 220 -10 1277 1729 90 389 0 -488 235 81 -10 1343 1717 90 58 0 -489 347 479 -20 2153 2785 90 301 0 -490 367 59 10 3039 3459 90 0 302 -491 261 370 -30 976 1323 90 342 0 -492 441 287 40 2652 3339 90 0 611 -493 44 153 -20 1884 2266 90 658 0 -494 263 351 -10 1409 1840 90 960 0 -495 444 157 10 215 515 90 0 908 -496 374 17 10 1734 2276 90 0 443 -497 448 295 10 2501 3107 90 0 931 -498 446 297 -10 2084 2539 90 852 0 -499 347 40 -10 333 888 90 1000 0 -500 318 493 10 721 1090 90 0 434 -501 399 352 10 1094 1587 90 0 169 -502 51 364 10 1700 2234 90 0 464 -503 250 217 -20 2435 2794 90 481 0 -504 107 225 -20 265 775 90 442 0 -505 173 208 30 1669 2254 90 0 447 -506 204 189 -30 2147 2769 90 168 0 -507 399 379 -10 2786 3293 90 537 0 -508 79 346 10 2990 3470 90 0 82 -509 360 338 10 140 618 90 0 580 -510 390 17 30 1226 1839 90 0 244 -511 207 337 -10 605 1165 90 473 0 -512 409 361 -20 907 1366 90 475 0 -513 206 377 20 366 911 90 0 236 -514 429 294 10 1760 2286 0 0 1009 -515 375 31 20 2060 2471 90 0 370 -516 426 80 20 602 1003 90 0 953 -517 74 374 -20 2534 2950 90 71 0 -518 408 20 -40 282 825 90 457 0 -519 239 369 30 1613 2169 90 0 31 -520 420 308 30 644 934 90 0 293 -521 254 357 20 1901 2284 90 0 962 -522 53 297 -10 3203 3558 90 978 0 -523 434 382 -10 2123 2537 90 541 0 -524 204 171 20 789 1288 90 0 886 -525 173 169 -20 1471 1805 90 970 0 -526 190 332 -10 387 985 90 911 0 -527 274 231 -10 1841 2572 90 560 0 -528 207 194 10 2250 2856 90 0 461 -529 315 232 10 2580 3086 90 0 975 -530 425 87 20 247 802 90 0 233 -531 312 64 20 368 956 90 0 351 -532 129 244 -10 2794 3183 90 612 0 -533 278 230 -20 1218 1874 90 823 0 -534 351 75 -10 2051 2417 90 898 0 -535 185 293 -10 697 1323 90 891 0 -536 364 364 -20 2011 2609 90 792 0 -537 432 369 10 1922 2532 90 0 507 -538 128 249 -10 1100 1746 90 285 0 -539 221 179 20 153 745 90 0 635 -540 194 296 -10 490 970 90 333 0 -541 413 350 10 1361 1913 90 0 523 -542 214 372 10 657 1389 90 0 428 -543 379 229 10 862 1389 90 0 813 -544 91 298 -10 1854 2332 90 862 0 -545 226 120 30 132 692 90 0 720 -546 344 46 30 1473 2008 90 0 211 -547 238 84 -10 1380 2049 90 406 0 -548 138 276 -20 1734 2256 90 742 0 -549 346 487 -30 1623 2153 90 991 0 -550 95 160 10 179 704 90 0 21 -551 103 266 -20 1035 1250 90 382 0 -552 98 286 30 1202 1632 90 0 424 -553 77 172 -20 2884 3227 90 768 0 -554 147 199 30 126 649 90 0 94 -555 210 98 10 493 1108 90 0 265 -556 428 292 -20 1657 2205 90 995 0 -557 121 236 -10 1912 2316 90 50 0 -558 336 479 -20 1979 2578 90 133 0 -559 203 369 10 652 1190 90 0 794 -560 296 232 10 1109 1586 90 0 527 -561 87 369 10 201 839 90 0 62 -562 247 88 30 1765 2242 90 0 287 -563 104 246 -20 1113 1753 90 337 0 -564 67 302 -20 2329 2817 90 440 0 -565 114 296 40 143 623 90 0 228 -566 394 356 -30 178 628 90 589 0 -567 192 306 20 1364 1843 90 0 35 -568 16 285 -20 2277 2866 90 833 0 -569 419 310 10 572 1192 90 0 714 -570 389 221 -20 1240 1583 90 729 0 -571 129 264 20 2587 3095 90 0 842 -572 172 483 30 793 1175 90 0 253 -573 325 251 20 1241 1769 90 0 844 -574 151 436 10 2250 2682 90 0 904 -575 263 91 -20 188 676 90 210 0 -576 401 15 20 634 897 90 0 331 -577 253 382 -30 2946 3394 90 200 0 -578 247 89 -20 1894 2295 90 924 0 -579 283 229 30 1218 1684 90 0 336 -580 366 341 -10 362 903 90 509 0 -581 392 213 20 1900 2445 90 0 173 -582 167 304 20 99 701 90 0 346 -583 477 154 -20 1359 1812 90 485 0 -584 234 383 10 1965 2393 90 0 115 -585 199 327 -20 2922 3355 90 940 0 -586 140 220 -30 668 1098 90 987 0 -587 144 266 30 141 641 90 0 474 -588 432 105 -20 3152 3592 90 661 0 -589 368 325 30 139 661 90 0 566 -590 202 386 -20 228 670 90 170 0 -591 325 246 -20 1280 1921 90 722 0 -592 430 86 -20 2586 3107 90 392 0 -593 200 195 -10 1948 2581 90 623 0 -594 440 295 30 1976 2455 90 0 976 -595 77 287 -20 1668 2301 90 860 0 -596 187 362 20 1556 2176 90 0 628 -597 131 207 20 967 1191 90 0 74 -598 405 5 20 617 1115 90 0 706 -599 125 226 -20 1204 1734 90 855 0 -600 254 335 -40 2854 3333 90 245 0 -601 212 168 -20 697 1182 90 420 0 -602 281 279 20 592 996 90 0 28 -603 326 241 20 1472 1919 90 0 368 -604 152 241 -10 648 1099 90 859 0 -605 71 139 30 721 1053 90 0 407 -606 46 277 10 463 874 90 0 109 -607 393 13 20 1208 1667 90 0 381 -608 87 454 40 744 1179 90 0 799 -609 86 359 -10 3067 3603 90 377 0 -610 220 192 20 65 645 90 0 103 -611 426 279 -40 2979 3405 90 492 0 -612 131 267 10 2470 2834 90 0 532 -613 200 297 30 395 872 90 0 290 -614 299 442 -10 1791 2178 90 42 0 -615 265 218 -10 2284 2735 90 153 0 -616 398 231 -20 2147 2605 90 946 0 -617 312 74 20 2610 3049 90 0 899 -618 99 307 -20 2602 2985 90 881 0 -619 22 283 -30 1089 1697 90 483 0 -620 67 160 10 2530 3010 90 0 933 -621 390 42 20 2437 2900 90 0 319 -622 44 279 10 409 744 90 0 113 -623 200 182 10 938 1528 90 0 593 -624 458 303 -40 2452 2770 90 654 0 -625 298 438 10 491 803 90 0 218 -626 62 301 20 3152 3630 0 0 1006 -627 112 251 -10 1461 1964 90 37 0 -628 184 354 -20 1793 2319 90 596 0 -629 140 180 -20 2884 3293 90 18 0 -630 269 428 20 986 1463 90 0 998 -631 123 206 -20 1720 2211 90 983 0 -632 36 284 -10 1484 2072 90 92 0 -633 272 233 -20 1602 2053 90 19 0 -634 320 231 20 2214 2714 90 0 328 -635 211 180 -20 569 1107 90 539 0 -636 114 169 -20 2519 2866 90 383 0 -637 245 239 -20 2758 3269 90 773 0 -638 117 204 30 1481 2075 90 0 135 -639 316 254 -10 558 1102 90 942 0 -640 169 443 30 328 832 90 0 951 -641 212 96 -10 734 1233 90 999 0 -642 119 285 -10 2897 3388 90 60 0 -643 71 163 20 2663 3067 90 0 315 -644 78 361 -20 3169 3620 90 947 0 -645 354 219 -20 3198 3712 90 439 0 -646 389 233 20 2350 2783 90 0 163 -647 90 391 -30 383 859 90 905 0 -648 209 307 10 1634 2149 90 0 781 -649 363 351 -30 2754 3253 90 400 0 -650 405 47 10 255 919 90 0 863 -651 278 329 10 83 605 90 0 907 -652 261 371 -30 881 1236 90 827 0 -653 302 470 20 2051 2564 90 0 834 -654 373 205 40 130 708 90 0 624 -655 381 20 -10 1736 2079 90 693 0 -656 90 277 -20 475 1009 90 665 0 -657 46 341 10 2541 2938 90 0 458 -658 50 138 20 1660 2277 90 0 493 -659 61 437 20 265 630 90 0 760 -660 331 252 -50 1008 1420 90 394 0 -661 440 81 20 2494 2995 90 0 588 -662 384 206 -10 562 1077 90 423 0 -663 232 87 -40 1318 1850 90 203 0 -664 59 471 -30 1347 1781 90 181 0 -665 174 304 20 93 482 90 0 656 -666 106 248 20 1243 1809 90 0 101 -667 410 287 -10 3095 3505 90 4 0 -668 206 313 -30 1966 2376 90 292 0 -669 412 367 20 809 1271 90 0 702 -670 412 300 20 385 805 90 0 123 -671 206 295 10 2657 3120 90 0 959 -672 329 459 -30 2653 3276 90 43 0 -673 177 436 20 199 699 90 0 857 -674 266 264 30 421 945 90 0 767 -675 308 235 10 2928 3502 0 0 1013 -676 260 330 -30 3075 3491 90 126 0 -677 49 136 -10 1509 2061 90 275 0 -678 356 28 -20 872 1288 90 455 0 -679 428 384 10 2253 2795 90 0 105 -680 220 362 -20 1225 1597 90 890 0 -681 437 61 -20 1900 2436 90 5 0 -682 365 360 20 1850 2390 90 0 939 -683 107 168 -30 2334 2855 90 158 0 -684 220 177 20 268 815 90 0 968 -685 347 21 20 1345 1588 90 0 477 -686 293 245 -20 3298 3722 90 819 0 -687 267 436 30 2805 3368 90 0 845 -688 216 96 -20 2429 2863 90 712 0 -689 383 351 20 167 796 90 0 413 -690 289 240 20 762 1276 90 0 432 -691 129 185 -20 2692 3095 90 231 0 -692 291 450 -40 2515 3055 90 927 0 -693 387 21 10 1425 1830 90 0 655 -694 116 255 20 1029 1609 90 0 272 -695 50 368 -10 1856 2267 90 241 0 -696 121 249 -10 2270 2733 90 214 0 -697 404 346 -40 1005 1480 90 825 0 -698 77 360 -30 3155 3619 90 412 0 -699 447 102 10 2943 3578 90 0 13 -700 366 16 20 1738 2377 90 0 952 -701 348 16 -20 1616 2104 90 465 0 -702 353 346 -20 2875 3514 90 669 0 -703 54 485 30 1521 2185 90 0 207 -704 319 77 -20 2455 2820 90 63 0 -705 83 282 -20 1323 1902 90 3 0 -706 384 24 -20 2461 2901 90 598 0 -707 52 469 -20 1208 1725 90 801 0 -708 199 200 -10 2842 3207 90 875 0 -709 273 234 10 1430 2041 90 0 68 -710 16 281 -20 2534 2979 90 928 0 -711 151 442 -20 2276 2848 90 278 0 -712 223 114 20 176 647 90 0 688 -713 191 308 20 82 549 90 0 61 -714 448 297 -10 2546 2878 90 569 0 -715 386 28 -20 2308 2865 90 912 0 -716 106 295 20 888 1378 90 0 476 -717 387 224 30 1369 1825 90 0 136 -718 96 377 10 199 664 90 0 429 -719 86 361 20 3096 3626 0 0 1007 -720 211 107 -30 405 816 90 545 0 -721 43 125 -30 1474 1892 90 963 0 -722 369 351 20 753 1084 90 0 591 -723 388 228 10 1091 1538 90 0 75 -724 325 228 -30 1647 2134 90 430 0 -725 490 159 -20 1732 2222 90 134 0 -726 420 78 20 1189 1766 90 0 785 -727 396 4 10 849 1457 90 0 205 -728 222 317 30 2214 2775 90 0 478 -729 389 198 20 349 898 90 0 570 -730 322 454 20 216 708 90 0 479 -731 241 391 -30 2869 3262 90 829 0 -732 256 117 -20 2985 3508 90 896 0 -733 298 255 10 48 724 90 0 324 -734 74 363 -10 2651 3035 90 758 0 -735 345 496 20 1170 1804 90 0 463 -736 167 169 20 1464 2003 90 0 848 -737 23 306 20 2019 2506 90 0 950 -738 317 62 20 502 1012 90 0 44 -739 319 257 -20 527 944 90 417 0 -740 129 255 -20 2593 2999 90 191 0 -741 59 377 20 1946 2390 90 0 868 -742 138 272 20 1652 2149 90 0 548 -743 317 251 30 792 1248 90 0 2 -744 279 436 -10 1423 1776 90 981 0 -745 371 207 10 128 642 90 0 213 -746 263 372 10 770 1162 90 0 764 -747 50 347 -10 2433 2852 90 229 0 -748 275 236 -30 1357 1929 90 445 0 -749 334 47 20 219 638 90 0 416 -750 50 383 10 1655 2282 90 0 198 -751 170 338 -10 2151 2578 90 783 0 -752 245 109 -20 2897 3441 90 140 0 -753 69 475 -30 1041 1496 90 10 0 -754 54 372 20 1775 2367 90 0 418 -755 198 334 -20 1985 2581 90 318 0 -756 380 228 30 925 1508 90 0 934 -757 425 118 10 219 705 90 0 147 -758 80 398 10 698 1114 90 0 734 -759 366 57 -10 2924 3388 90 864 0 -760 67 463 -20 339 989 90 659 0 -761 226 86 -10 2450 2900 90 219 0 -762 59 480 -10 1435 1892 90 877 0 -763 40 378 20 1230 1703 90 0 360 -764 250 367 -10 1917 2468 90 746 0 -765 157 436 20 2593 3112 90 0 222 -766 463 161 30 2220 2747 90 0 179 -767 266 250 -30 321 657 90 674 0 -768 51 162 20 2003 2582 90 0 553 -769 194 353 20 1193 1709 90 0 341 -770 383 41 -20 2541 2990 90 11 0 -771 247 82 -10 1656 2160 90 309 0 -772 457 142 20 670 1148 90 0 791 -773 244 94 20 1697 2054 90 0 637 -774 441 63 -10 2104 2605 90 369 0 -775 244 371 -30 2080 2700 90 78 0 -776 174 444 10 263 706 90 0 856 -777 94 247 30 669 1196 90 0 27 -778 320 225 -10 1879 2309 90 130 0 -779 316 80 -20 2469 2994 90 395 0 -780 155 447 20 2555 2948 90 0 177 -781 211 308 -10 1696 2271 90 648 0 -782 297 442 20 1625 2159 90 0 851 -783 200 342 10 869 1284 90 0 751 -784 44 325 -20 2968 3553 90 996 0 -785 438 60 -20 1990 2530 90 726 0 -786 80 374 20 264 893 90 0 802 -787 59 163 -20 2191 2591 90 29 0 -788 236 92 10 2008 2573 90 0 247 -789 414 66 -10 1440 1904 90 885 0 -790 34 279 -20 1285 1888 90 156 0 -791 475 156 -20 1181 1806 90 772 0 -792 404 310 20 165 666 90 0 536 -793 367 239 20 2983 3490 90 0 486 -794 210 359 -10 1384 1912 90 559 0 -795 133 278 -40 1856 2324 90 923 0 -796 446 169 -10 3054 3475 90 66 0 -797 188 356 20 1587 2337 90 0 948 -798 312 252 -20 690 1159 90 967 0 -799 69 485 -40 2107 2569 90 608 0 -800 413 353 10 1516 1945 90 0 79 -801 54 446 20 277 559 90 0 707 -802 56 357 -20 1637 2099 90 786 0 -803 230 105 10 2762 3313 90 0 327 -804 196 302 20 113 594 90 0 141 -805 391 373 -10 2851 3428 90 436 0 -806 101 295 -20 788 1289 90 180 0 -807 234 350 10 2525 2869 90 0 182 -808 215 108 -20 2671 3008 90 91 0 -809 142 457 -10 1402 1943 90 95 0 -810 283 425 20 655 1221 90 0 227 -811 77 397 10 729 1269 90 0 340 -812 105 317 -30 2749 3229 90 100 0 -813 382 213 -10 1598 1992 90 543 0 -814 213 76 20 1093 1666 90 0 917 -815 417 56 20 1654 2070 90 0 883 -816 183 340 10 2525 2988 90 0 261 -817 123 242 -20 2963 3577 90 466 0 -818 475 136 -20 907 1311 90 471 0 -819 377 246 20 2890 3379 90 0 686 -820 310 484 30 449 962 90 0 456 -821 47 280 -40 249 717 90 363 0 -822 57 456 20 282 805 90 0 137 -823 313 266 20 258 647 90 0 533 -824 475 145 30 965 1450 90 0 832 -825 400 376 40 541 1143 90 0 697 -826 290 416 30 170 877 90 0 460 -827 277 369 30 256 725 90 0 652 -828 91 303 -10 2017 2540 90 14 0 -829 194 301 30 249 643 90 0 731 -830 254 238 -20 2376 3076 90 249 0 -831 215 91 -20 2074 2667 90 284 0 -832 500 162 -30 1905 2431 90 824 0 -833 56 287 20 197 679 90 0 568 -834 289 452 -20 2632 3124 90 653 0 -835 378 326 30 148 691 90 0 889 -836 197 350 30 1037 1496 90 0 974 -837 243 88 20 1515 2106 90 0 920 -838 250 72 20 946 1465 90 0 204 -839 101 290 20 1005 1456 90 0 994 -840 351 480 30 1482 2098 90 0 208 -841 67 357 -10 2887 3362 90 915 0 -842 128 240 -20 3138 3593 90 571 0 -843 253 81 -20 798 1413 90 415 0 -844 307 227 -20 2688 3178 90 573 0 -845 233 441 -30 3024 3586 90 687 0 -846 311 47 -20 894 1406 90 922 0 -847 292 456 20 2305 2891 90 0 354 -848 183 187 -20 1568 2128 90 736 0 -849 392 31 20 2741 3199 90 0 404 -850 103 251 -10 1104 1572 90 108 0 -851 300 443 -20 1835 2317 90 782 0 -852 420 295 10 1547 2117 90 0 498 -853 427 64 30 1129 1615 90 0 131 -854 372 354 -30 1803 2238 90 362 0 -855 101 263 20 1038 1434 90 0 599 -856 141 454 -10 1497 2035 90 776 0 -857 146 461 -20 1389 1765 90 673 0 -858 298 430 -30 362 737 90 929 0 -859 148 270 10 103 609 90 0 604 -860 76 287 20 1710 2078 90 0 595 -861 308 55 30 711 1192 90 0 435 -862 143 257 10 360 802 90 0 544 -863 393 2 -10 871 1247 90 650 0 -864 385 28 10 2091 2641 90 0 759 -865 204 291 -10 2733 3234 90 142 0 -866 132 272 30 2181 2567 90 0 150 -867 206 379 10 317 777 90 0 900 -868 69 383 -20 2308 2793 90 741 0 -869 245 96 -20 1561 2004 90 12 0 -870 431 301 10 1316 1781 90 0 966 -871 448 94 -20 3014 3454 90 989 0 -872 199 305 -20 1356 2044 90 296 0 -873 95 356 -10 3122 3637 90 112 0 -874 328 498 20 967 1419 90 0 353 -875 108 222 10 1305 1849 90 0 708 -876 341 26 10 1096 1640 90 0 918 -877 63 454 10 278 851 90 0 762 -878 222 357 -20 1406 1788 90 282 0 -879 416 364 20 1750 2285 90 0 93 -880 127 278 -10 1969 2404 90 373 0 -881 140 252 20 353 1001 90 0 618 -882 218 298 -10 2482 3091 90 194 0 -883 432 87 -20 2650 3226 90 815 0 -884 216 300 -20 2461 2926 90 202 0 -885 438 72 10 962 1395 90 0 789 -886 184 178 -20 1286 1782 90 524 0 -887 345 468 -10 2530 2984 90 175 0 -888 150 435 -30 2081 2668 90 371 0 -889 395 365 -30 185 722 90 835 0 -890 208 371 20 540 929 90 0 680 -891 190 292 10 559 1092 90 0 535 -892 78 479 30 926 1412 90 0 217 -893 104 198 -30 2166 2601 90 252 0 -894 346 13 20 1431 2102 90 0 910 -895 47 388 20 981 1566 90 0 977 -896 315 57 20 971 1532 90 0 732 -897 110 199 -10 2113 2462 90 59 0 -898 323 60 10 1102 1598 90 0 534 -899 308 82 -20 2764 3274 90 617 0 -900 216 374 -10 900 1330 90 867 0 -901 326 253 10 820 1417 90 0 56 -902 308 232 -10 2788 3267 90 359 0 -903 118 223 10 217 621 90 0 277 -904 149 444 -10 2445 2864 90 574 0 -905 95 395 30 212 717 90 0 647 -906 117 319 10 2922 3454 90 0 399 -907 262 352 -10 1435 1998 90 651 0 -908 468 135 -10 830 1193 90 495 0 -909 351 31 -10 652 1133 90 70 0 -910 361 15 -20 1980 2416 90 894 0 -911 195 300 10 256 820 90 0 526 -912 397 27 20 2209 2727 90 0 715 -913 179 311 10 118 665 90 0 937 -914 77 133 10 503 1074 90 0 273 -915 66 397 10 895 1516 90 0 841 -916 366 352 10 2667 3152 90 0 221 -917 221 87 -20 1206 1761 90 814 0 -918 347 23 -10 942 1419 90 876 0 -919 176 358 -10 1934 2377 90 964 0 -920 229 78 -20 2373 2780 90 837 0 -921 272 246 10 22 606 90 0 387 -922 293 67 20 187 651 90 0 846 -923 140 265 40 1313 1933 90 0 795 -924 238 83 20 1388 1858 90 0 578 -925 136 296 30 3097 3612 0 0 1015 -926 218 98 30 1837 2327 90 0 965 -927 290 440 40 1370 2033 90 0 692 -928 29 302 20 1991 2339 90 0 710 -929 290 425 30 179 770 90 0 858 -930 124 247 -10 2878 3471 90 425 0 -931 442 287 -10 2648 3160 90 497 0 -932 294 64 10 191 769 90 0 365 -933 74 165 -10 2733 3184 90 620 0 -934 382 245 -30 2811 3266 90 756 0 -935 405 24 10 274 923 90 0 52 -936 211 97 20 683 1101 90 0 1 -937 88 390 -10 478 948 90 913 0 -938 37 295 -10 1705 2238 90 193 0 -939 359 371 -20 2311 2692 90 682 0 -940 186 372 20 1538 1993 90 0 585 -941 116 446 -10 1688 2269 90 209 0 -942 293 249 10 43 505 90 0 639 -943 83 228 20 475 984 90 0 270 -944 96 269 10 715 1375 90 0 367 -945 179 284 -30 890 1332 90 397 0 -946 368 219 20 793 1248 90 0 616 -947 66 359 20 2939 3535 90 0 644 -948 189 338 -20 2765 3303 90 797 0 -949 163 277 -30 3282 3733 90 154 0 -950 5 296 -20 2319 2613 90 737 0 -951 152 478 -30 872 1317 90 640 0 -952 366 34 -20 1910 2421 90 700 0 -953 429 80 -20 583 1208 90 516 0 -954 464 178 -30 2477 3065 90 192 0 -955 138 196 30 1926 2220 90 0 414 -956 87 481 -20 2595 3032 90 83 0 -957 425 99 20 231 769 90 0 72 -958 241 362 -10 2306 2674 90 352 0 -959 207 289 -10 2771 3383 90 671 0 -960 264 365 10 1009 1661 90 0 494 -961 102 289 -10 1062 1582 90 116 0 -962 233 346 -20 2550 3031 90 521 0 -963 78 141 30 203 791 90 0 721 -964 196 348 10 948 1400 90 0 919 -965 216 92 -30 2165 2759 90 926 0 -966 444 309 -10 2189 2821 90 870 0 -967 313 263 20 320 772 90 0 798 -968 211 198 -20 2507 2972 90 684 0 -969 314 436 -10 1951 2411 90 279 0 -970 217 189 20 419 869 90 0 525 -971 197 178 -20 874 1402 90 291 0 -972 60 497 10 1677 2236 0 0 1001 -973 206 312 -30 1790 2370 90 23 0 -974 197 351 -30 1119 1596 90 836 0 -975 305 233 -10 2899 3342 90 529 0 -976 297 250 -30 2978 3777 90 594 0 -977 71 348 -20 2904 3365 90 895 0 -978 11 269 10 924 1457 90 0 522 -979 247 447 -20 3024 3375 90 326 0 -980 386 213 -20 1685 2467 90 69 0 -981 292 434 10 591 1079 90 0 744 -982 436 301 -30 1095 1811 90 469 0 -983 145 221 20 517 1058 90 0 631 -984 224 96 -30 1892 2464 90 268 0 -985 59 128 -20 1288 1865 90 121 0 -986 489 150 50 1640 2116 90 0 139 -987 152 225 30 794 1353 90 0 586 -988 426 85 -30 461 954 90 345 0 -989 415 73 20 1358 1792 90 0 871 -990 440 70 -10 2169 2734 90 450 0 -991 320 476 30 438 769 90 0 549 -992 57 132 -10 1127 1656 90 480 0 -993 405 311 30 166 745 90 0 195 -994 109 250 -20 1374 1865 90 839 0 -995 428 314 20 801 1343 90 0 556 -996 40 288 20 1679 2068 90 0 784 -997 175 282 10 952 1459 90 0 196 -998 298 456 -20 2202 2622 90 630 0 -999 208 101 10 467 947 90 0 641 -1000 342 52 10 218 660 90 0 499 -1001 60 497 -10 1677 2236 90 972 0 -1002 447 88 -20 2754 3332 90 355 0 -1003 326 498 -10 862 1340 90 178 0 -1004 481 156 -20 1392 1969 90 396 0 -1005 363 55 -10 2909 3216 90 409 0 -1006 62 301 -20 3152 3630 90 626 0 -1007 86 361 -20 3096 3626 90 719 0 -1008 137 186 -10 2688 3297 90 334 0 -1009 429 294 -10 1760 2286 90 514 0 -1010 384 346 -20 1183 1639 90 385 0 -1011 346 344 -10 3043 3541 90 89 0 -1012 94 130 -10 448 914 90 281 0 -1013 308 235 -10 2928 3502 90 675 0 -1014 214 382 -30 2351 2791 90 310 0 -1015 136 296 -30 3097 3612 90 925 0 -1016 230 95 -20 1742 2216 90 274 0 -1017 112 208 -10 1404 1959 90 176 0 -1018 379 245 -10 2626 3080 90 276 0 diff --git a/jsprit-instances/instances/lilim/1000/LC2107.txt b/jsprit-instances/instances/lilim/1000/LC2107.txt deleted file mode 100644 index e76b7332c..000000000 --- a/jsprit-instances/instances/lilim/1000/LC2107.txt +++ /dev/null @@ -1,1020 +0,0 @@ -250 700 1 -0 250 250 0 0 3914 0 0 0 -1 212 101 -10 2507 2976 90 688 0 -2 266 231 -10 1617 2416 90 560 0 -3 89 284 -20 1109 1922 90 961 0 -4 430 298 10 1179 2104 90 0 594 -5 435 77 20 822 1343 90 0 815 -6 25 293 -20 2667 3420 90 833 0 -7 43 269 30 362 1173 90 0 22 -8 216 117 10 201 817 90 0 999 -9 294 437 -20 474 1008 90 338 0 -10 79 479 -20 707 1448 90 801 0 -11 365 18 -20 2036 2551 90 685 0 -12 225 125 20 127 1025 90 0 720 -13 448 103 30 3190 3578 0 0 1007 -14 143 266 10 108 868 90 0 716 -15 252 347 10 2465 3517 90 0 600 -16 403 390 -30 2146 3133 90 566 0 -17 67 153 20 653 1330 90 0 992 -18 90 168 -10 3003 3317 90 933 0 -19 302 235 20 901 1345 90 0 249 -20 259 355 20 1811 2183 90 0 521 -21 149 183 -30 2911 3466 90 963 0 -22 19 297 -30 2188 2536 90 7 0 -23 209 358 30 1088 2025 90 0 974 -24 56 388 -20 1435 2307 90 162 0 -25 115 269 -20 2988 3085 90 618 0 -26 377 356 10 1319 2533 90 0 53 -27 113 229 30 802 1603 90 0 425 -28 205 343 20 572 1392 90 0 441 -29 48 137 -30 1429 2324 90 313 0 -30 467 157 -30 2134 2640 90 192 0 -31 220 394 -10 2514 3211 90 206 0 -32 436 54 -40 1867 2276 90 233 0 -33 54 357 -30 1428 2125 90 937 0 -34 456 154 10 227 1087 90 0 772 -35 216 307 20 2160 3032 90 0 882 -36 280 224 -30 1943 2669 90 527 0 -37 90 270 -20 617 674 90 189 0 -38 166 452 20 305 1054 90 0 253 -39 17 283 -30 2193 3134 90 568 0 -40 196 192 -10 1894 2445 90 623 0 -41 94 275 10 173 924 90 0 656 -42 292 445 10 1639 1954 90 0 979 -43 329 471 -10 2700 3026 90 489 0 -44 326 57 20 1061 1826 90 0 365 -45 95 466 -10 2567 3559 90 956 0 -46 429 282 20 2906 3290 90 0 293 -47 229 364 -20 2283 2901 90 764 0 -48 457 160 -30 2577 3564 90 766 0 -49 452 154 30 223 1033 90 0 65 -50 113 289 10 142 690 90 0 806 -51 67 387 -30 2145 2767 90 398 0 -52 368 17 -20 1814 2389 90 678 0 -53 341 367 -10 2083 3138 90 26 0 -54 410 364 30 1524 2319 90 0 221 -55 80 281 10 1355 2238 90 0 272 -56 321 224 -10 1843 2529 90 325 0 -57 73 395 20 917 1688 90 0 698 -58 259 76 -20 654 1362 90 438 0 -59 121 203 10 1712 2031 90 0 231 -60 118 256 -10 2154 3044 90 627 0 -61 236 361 -20 1723 1863 90 590 0 -62 78 371 20 210 1033 90 0 459 -63 301 53 20 917 1181 90 0 204 -64 382 197 20 203 1238 90 0 583 -65 491 160 -30 1808 2330 90 49 0 -66 453 164 -20 2842 3490 90 410 0 -67 277 371 30 325 1025 90 0 907 -68 272 212 20 2198 2622 90 0 615 -69 386 218 20 1642 2320 90 0 163 -70 353 32 10 795 1175 90 0 295 -71 59 389 20 1232 2323 90 0 358 -72 414 62 10 1470 2061 90 0 392 -73 278 357 10 110 645 90 0 807 -74 101 179 20 2011 2974 90 0 636 -75 396 234 -10 1875 3065 90 570 0 -76 74 390 -20 424 1330 90 786 0 -77 332 55 -10 211 640 90 98 0 -78 272 365 30 446 1099 90 0 96 -79 418 355 -10 1864 2371 90 541 0 -80 216 380 -30 2345 2415 90 97 0 -81 440 173 -10 2658 3619 90 213 0 -82 89 358 -10 2905 3631 90 502 0 -83 66 491 -30 1642 2658 90 905 0 -84 317 234 10 2150 2967 90 0 128 -85 439 297 30 1785 2462 90 0 931 -86 394 367 -30 303 617 90 889 0 -87 58 364 -30 2026 2659 90 945 0 -88 290 75 20 179 413 90 0 861 -89 346 344 -20 2917 3667 90 649 0 -90 131 269 -30 2231 2705 90 196 0 -91 236 96 -20 1612 1756 90 869 0 -92 29 282 10 1269 1712 90 0 186 -93 418 385 -30 2687 2987 90 132 0 -94 148 225 40 105 1306 90 0 191 -95 166 464 10 431 1317 90 0 711 -96 266 373 -30 737 1008 90 78 0 -97 201 273 30 54 913 90 0 80 -98 255 245 10 7 787 90 0 77 -99 220 379 -30 2158 2790 90 878 0 -100 85 317 -10 2133 3241 90 308 0 -101 125 264 -40 2776 3095 90 565 0 -102 131 253 -20 2347 3430 90 424 0 -103 184 188 -20 1001 1679 90 635 0 -104 128 209 20 696 1650 90 0 683 -105 373 364 -30 2717 3657 90 523 0 -106 389 342 -20 718 1732 90 446 0 -107 420 20 30 430 880 90 0 319 -108 132 218 10 122 1194 90 0 599 -109 32 256 10 635 1327 90 0 978 -110 406 339 20 179 796 90 0 976 -111 191 397 20 158 774 90 0 513 -112 72 341 -20 2693 3199 90 604 0 -113 35 308 -20 2683 3602 90 212 0 -114 169 360 -30 2056 2448 90 628 0 -115 222 381 20 2320 3019 90 0 335 -116 96 292 10 389 1496 90 0 552 -117 311 496 -30 432 1183 90 460 0 -118 220 384 -30 2502 3024 90 519 0 -119 259 243 20 11 518 90 0 745 -120 349 476 10 2402 2724 90 0 672 -121 63 159 20 1051 1126 90 0 620 -122 112 243 -10 2215 2586 90 850 0 -123 448 302 -10 2025 2789 90 322 0 -124 343 27 -20 1183 1369 90 953 0 -125 67 485 40 1768 2725 90 0 263 -126 220 359 -10 1331 1678 90 913 0 -127 147 435 -20 1855 2527 90 951 0 -128 317 235 -10 2310 2989 90 84 0 -129 43 355 20 1454 1896 90 0 508 -130 368 340 -30 296 785 90 589 0 -131 450 72 -20 2562 2721 90 726 0 -132 400 364 30 574 725 90 0 93 -133 355 480 -20 1545 1846 90 735 0 -134 450 153 -10 372 854 90 155 0 -135 126 188 -10 1672 2683 90 550 0 -136 380 223 10 1265 2124 90 0 723 -137 71 453 -10 639 890 90 718 0 -138 54 287 20 199 1177 90 0 363 -139 420 168 -50 2900 3636 90 986 0 -140 219 89 -10 2564 2981 90 761 0 -141 189 327 10 98 958 90 0 919 -142 191 309 10 1265 1755 90 0 202 -143 301 67 40 189 1042 90 0 531 -144 484 161 -20 1350 2203 90 832 0 -145 77 483 -20 2577 2661 90 822 0 -146 241 375 -20 1808 2349 90 680 0 -147 428 64 20 1124 1438 90 0 989 -148 403 361 -20 1190 1875 90 475 0 -149 257 336 -30 2802 3570 90 731 0 -150 131 241 -20 2739 3705 90 694 0 -151 63 166 30 2349 2816 0 0 1010 -152 71 368 -20 3239 3435 90 517 0 -153 272 228 -10 1832 2394 90 709 0 -154 25 290 -10 2406 3495 90 193 0 -155 441 157 10 212 850 90 0 134 -156 13 266 20 821 1747 90 0 790 -157 251 376 -30 2901 3631 90 998 0 -158 61 170 -10 1990 2985 90 273 0 -159 386 357 20 1118 1907 90 0 185 -160 95 475 -10 2654 3355 90 877 0 -161 90 298 10 1967 2401 90 0 470 -162 71 388 20 1200 1970 90 0 24 -163 383 246 -20 2377 3518 90 69 0 -164 352 38 10 563 848 90 0 546 -165 395 1 -40 912 1021 90 457 0 -166 120 210 -20 975 1749 90 442 0 -167 46 383 -20 1043 1693 90 307 0 -168 202 198 -20 1736 2980 90 684 0 -169 358 365 -30 1946 2866 90 854 0 -170 191 352 20 117 582 90 0 676 -171 470 152 -20 1088 1525 90 729 0 -172 228 124 20 127 883 90 0 555 -173 402 230 -20 2148 2415 90 946 0 -174 323 229 10 1544 2052 90 0 482 -175 331 486 10 1559 2607 90 0 558 -176 112 208 -20 1494 1868 90 597 0 -177 172 435 -20 2648 3624 90 222 0 -178 326 498 -30 773 1429 90 991 0 -179 460 183 10 2720 3015 90 0 384 -180 95 279 20 182 727 90 0 944 -181 76 456 30 342 1379 90 0 248 -182 242 350 -20 2392 3389 90 765 0 -183 152 196 -30 122 462 90 252 0 -184 268 351 10 926 2133 90 0 245 -185 360 356 -20 2642 2983 90 159 0 -186 39 296 -10 1600 2526 90 92 0 -187 262 368 -10 1184 1299 90 651 0 -188 204 90 20 827 1521 90 0 920 -189 149 273 20 103 731 90 0 37 -190 446 86 -10 2922 3350 90 883 0 -191 139 269 -40 1442 2174 90 94 0 -192 483 170 30 1897 2656 90 0 30 -193 39 278 10 1474 1889 90 0 154 -194 201 307 10 1467 2119 90 0 478 -195 395 378 -10 1501 1931 90 359 0 -196 139 262 30 1145 1915 90 0 90 -197 176 447 20 210 1241 90 0 258 -198 67 380 20 2183 2534 90 0 644 -199 35 358 -10 1097 2056 90 257 0 -200 294 455 -10 2402 2611 90 279 0 -201 351 33 20 324 1277 90 0 254 -202 216 316 -10 2148 2649 90 142 0 -203 261 96 -10 254 801 90 309 0 -204 238 57 -20 1104 1728 90 63 0 -205 383 18 -40 1151 2294 90 223 0 -206 152 460 10 885 1894 90 0 31 -207 94 479 -30 2430 3390 90 703 0 -208 337 453 -30 2947 3183 90 463 0 -209 135 460 -30 1738 1992 90 572 0 -210 260 104 20 146 1220 90 0 984 -211 337 63 -10 1825 2426 90 898 0 -212 32 247 20 489 1274 90 0 113 -213 394 205 10 331 718 90 0 81 -214 95 294 -30 705 996 90 587 0 -215 253 241 -20 2514 3316 90 427 0 -216 223 90 -10 2646 3087 90 380 0 -217 64 473 10 840 1889 90 0 972 -218 275 431 10 849 1794 90 0 630 -219 261 84 10 503 1124 90 0 773 -220 176 296 20 1027 1592 90 0 418 -221 361 349 -30 2598 3594 90 54 0 -222 168 433 20 2923 3548 90 0 177 -223 394 10 40 792 1705 90 0 205 -224 308 60 20 363 1349 90 0 732 -225 94 456 -20 2864 3544 90 664 0 -226 73 484 -10 2226 2825 90 799 0 -227 277 434 -20 1043 1971 90 448 0 -228 119 232 -30 1536 2502 90 431 0 -229 78 375 10 273 516 90 0 462 -230 366 346 20 591 864 90 0 269 -231 125 181 -10 2351 3245 90 59 0 -232 69 493 20 1562 2552 90 0 433 -233 432 80 40 613 1363 90 0 32 -234 72 391 -20 1096 1888 90 391 0 -235 85 486 -10 2275 3161 90 762 0 -236 204 371 -20 509 1148 90 526 0 -237 173 328 10 2218 2904 90 0 332 -238 280 423 -30 741 1322 90 929 0 -239 200 327 -10 2620 3733 90 585 0 -240 241 98 -10 2998 3136 90 788 0 -241 96 356 -20 186 579 90 582 0 -242 332 491 -10 1014 1568 90 500 0 -243 81 283 -10 1373 2035 90 705 0 -244 373 22 -20 2036 2748 90 331 0 -245 255 371 -10 2076 2503 90 184 0 -246 358 359 -30 2273 3165 90 362 0 -247 216 93 -30 2082 3023 90 437 0 -248 73 360 -30 2711 3344 90 181 0 -249 305 212 -20 938 1533 90 19 0 -250 151 462 -10 1043 1921 90 776 0 -251 47 389 30 1054 1310 90 0 977 -252 155 198 30 108 332 90 0 183 -253 152 457 -20 971 1623 90 38 0 -254 329 48 -20 1327 1943 90 201 0 -255 88 394 10 723 891 90 0 841 -256 153 295 -10 3398 3526 90 657 0 -257 81 373 10 520 820 90 0 199 -258 163 453 -20 296 1249 90 197 0 -259 378 25 -20 2086 2890 90 910 0 -260 401 385 -30 2674 3214 90 512 0 -261 184 340 -20 2500 3195 90 751 0 -262 402 362 -20 1005 1876 90 669 0 -263 70 482 -40 2298 2564 90 125 0 -264 357 445 -10 3082 3452 90 549 0 -265 212 71 -10 1044 1524 90 641 0 -266 231 81 30 2153 2812 90 0 808 -267 379 208 10 851 978 90 0 486 -268 236 95 -10 1944 2451 90 408 0 -269 386 344 -20 1210 1427 90 230 0 -270 189 200 10 1486 2653 90 0 593 -271 296 253 -30 662 1167 90 674 0 -272 73 303 -10 2036 2919 90 55 0 -273 30 162 10 2001 2363 90 0 158 -274 230 95 -10 1578 2380 90 406 0 -275 57 131 -30 1165 1800 90 605 0 -276 379 245 -20 2734 2972 90 616 0 -277 107 221 40 145 1242 90 0 452 -278 154 458 20 903 1507 90 0 444 -279 290 417 10 171 725 90 0 200 -280 272 243 30 23 626 90 0 921 -281 94 130 10 651 712 90 0 985 -282 222 356 20 1494 1882 90 0 584 -283 243 108 -10 2869 3412 90 932 0 -284 224 93 -20 2055 2486 90 415 0 -285 155 242 10 891 1041 90 0 906 -286 440 302 -10 693 2026 90 298 0 -287 221 102 20 2392 3484 90 0 803 -288 52 484 -20 1284 2238 90 659 0 -289 111 244 10 1955 2663 90 0 930 -290 132 273 10 2103 2464 0 0 1018 -291 228 186 20 67 717 90 0 917 -292 221 374 -20 796 1625 90 296 0 -293 406 286 -20 3157 3631 90 46 0 -294 390 9 30 770 1916 90 0 912 -295 335 52 -10 1435 2248 90 70 0 -296 189 368 20 132 1109 90 0 292 -297 397 40 -10 2249 2893 90 381 0 -298 408 305 10 167 1044 90 0 286 -299 156 434 -10 2845 3046 90 809 0 -300 180 335 20 2023 3299 90 0 341 -301 327 483 20 1855 2501 0 0 1005 -302 363 62 -10 2533 3605 90 370 0 -303 375 342 -50 715 1323 90 394 0 -304 16 280 -10 2515 3179 90 821 0 -305 277 431 30 1053 1774 90 0 687 -306 110 241 -30 1967 2464 90 551 0 -307 48 385 20 963 1214 90 0 167 -308 152 260 10 98 588 90 0 100 -309 255 120 10 130 1051 90 0 203 -310 214 382 30 2265 2878 90 0 958 -311 414 384 10 2497 2988 90 0 805 -312 232 378 -10 1737 2811 90 867 0 -313 80 141 30 356 792 90 0 29 -314 188 330 -20 565 621 90 804 0 -315 157 192 -20 2830 3715 90 893 0 -316 101 237 20 1739 2082 90 0 557 -317 74 360 -30 2595 3278 90 412 0 -318 267 260 20 37 1141 90 0 602 -319 378 46 -30 3101 3240 90 107 0 -320 420 311 30 769 1177 90 0 514 -321 384 217 -10 1638 2140 90 543 0 -322 418 300 10 590 792 90 0 123 -323 356 77 20 2312 2347 90 0 454 -324 253 244 -30 2698 2946 90 579 0 -325 323 258 10 1095 1721 90 0 56 -326 293 454 20 2653 2729 90 0 692 -327 231 97 -30 2408 3527 90 562 0 -328 316 234 -20 2309 3173 90 634 0 -329 207 196 -10 2521 2769 90 506 0 -330 321 228 -20 1917 2643 90 724 0 -331 382 17 20 1624 2004 90 0 244 -332 206 326 -10 3271 3381 90 237 0 -333 198 284 10 62 603 90 0 829 -334 137 186 -30 2840 3145 90 955 0 -335 229 396 -20 2681 3244 90 115 0 -336 268 235 -20 1558 2286 90 748 0 -337 95 243 20 698 980 90 0 897 -338 297 430 20 196 721 90 0 9 -339 393 368 10 185 1462 90 0 501 -340 66 391 -10 1344 2017 90 647 0 -341 189 339 -20 2423 3463 90 300 0 -342 280 351 30 105 952 90 0 744 -343 241 77 -20 915 1696 90 922 0 -344 134 265 -10 2493 2998 90 875 0 -345 420 95 30 230 1162 90 0 576 -346 111 279 30 141 866 90 0 994 -347 367 358 30 1937 2489 90 0 939 -348 239 373 -10 1321 2650 90 542 0 -349 384 235 -40 2669 2836 90 654 0 -350 284 360 30 214 564 0 0 1012 -351 325 75 -10 2162 2738 90 435 0 -352 279 369 10 229 935 90 0 827 -353 340 449 -10 2418 3606 90 479 0 -354 275 448 10 2743 3221 90 0 845 -355 447 88 -10 2453 3569 90 990 0 -356 314 279 10 70 1003 90 0 573 -357 434 377 -10 2132 2719 90 697 0 -358 67 377 -20 2008 2523 90 71 0 -359 370 353 10 717 934 90 0 195 -360 57 367 20 1890 2607 0 0 1003 -361 332 486 20 1754 2231 90 0 887 -362 386 361 30 1139 2075 90 0 246 -363 55 282 -20 289 480 90 138 0 -364 317 467 -30 227 1237 90 858 0 -365 335 54 -20 1621 2245 90 44 0 -366 348 466 -30 2360 2967 90 840 0 -367 132 314 -10 2679 3690 90 873 0 -368 328 216 -20 1688 2296 90 798 0 -369 416 48 10 1630 2290 90 0 774 -370 370 55 10 2370 3562 90 0 302 -371 149 434 -30 2041 2526 90 640 0 -372 466 169 30 2443 2720 90 0 439 -373 141 267 -30 1327 2103 90 586 0 -374 258 350 -20 1688 2116 90 652 0 -375 428 312 10 939 1388 90 0 498 -376 211 188 -20 301 1179 90 472 0 -377 50 343 -10 2570 3097 90 535 0 -378 107 311 -20 2603 3183 90 860 0 -379 178 441 20 204 551 90 0 888 -380 232 85 10 2324 2453 90 0 216 -381 391 23 10 2325 3232 90 0 297 -382 137 227 20 115 291 90 0 631 -383 161 203 20 100 898 90 0 421 -384 363 212 -10 2911 3705 90 179 0 -385 384 346 -20 964 1858 90 580 0 -386 166 434 -20 2956 3134 90 941 0 -387 274 248 20 274 507 90 0 686 -388 156 421 30 2797 3629 0 0 1001 -389 346 211 10 103 834 90 0 717 -390 265 358 20 1156 1709 90 0 403 -391 96 407 20 313 715 90 0 234 -392 443 70 -10 2469 2619 90 72 0 -393 125 212 -30 1162 1371 90 504 0 -394 361 337 50 141 1011 90 0 303 -395 322 78 -10 2300 2788 90 534 0 -396 481 156 -10 1244 2116 90 942 0 -397 188 293 30 482 1353 90 0 540 -398 76 408 30 640 1561 90 0 51 -399 130 304 -20 3045 3465 90 401 0 -400 378 363 30 1621 2036 90 0 536 -401 185 301 20 1210 1611 90 0 399 -402 385 235 -20 2408 2914 90 581 0 -403 261 350 -20 1387 2231 90 390 0 -404 389 33 -20 3038 3088 90 715 0 -405 151 214 10 402 781 90 0 742 -406 265 94 10 192 485 90 0 274 -407 65 164 -20 2276 3074 90 658 0 -408 293 81 10 174 318 90 0 268 -409 363 55 -20 2681 3445 90 849 0 -410 465 176 20 2652 2705 90 0 66 -411 428 298 -20 1356 2111 90 982 0 -412 75 379 30 2217 3078 90 0 317 -413 404 378 10 718 1155 90 0 800 -414 203 203 -20 2579 3281 90 539 0 -415 259 88 20 162 1090 90 0 284 -416 362 17 -30 1535 2392 90 918 0 -417 320 258 20 509 780 90 0 743 -418 59 358 -20 2381 2496 90 220 0 -419 316 453 20 213 1055 90 0 434 -420 225 192 20 63 720 90 0 505 -421 140 206 -20 409 566 90 383 0 -422 83 151 10 194 1265 90 0 493 -423 366 196 10 127 906 90 0 468 -424 108 245 20 1459 2162 90 0 102 -425 129 267 -30 2342 2778 90 27 0 -426 57 379 20 560 1415 90 0 464 -427 329 56 20 1311 1763 90 0 215 -428 213 363 30 954 1674 90 0 836 -429 76 391 -10 1076 1719 90 811 0 -430 330 259 -20 834 1788 90 967 0 -431 136 217 30 678 1278 90 0 228 -432 165 333 -20 2339 2583 90 713 0 -433 160 431 -20 3006 3622 90 232 0 -434 338 489 -20 1168 1607 90 419 0 -435 335 64 10 1740 2326 90 0 351 -436 412 361 10 1554 2103 90 0 916 -437 259 90 30 239 1195 90 0 247 -438 265 77 20 739 1085 90 0 58 -439 460 173 -30 2694 3241 90 372 0 -440 83 301 20 2148 2606 90 0 571 -441 201 331 -20 311 1263 90 28 0 -442 118 214 20 136 566 90 0 166 -443 395 30 -20 2459 3293 90 515 0 -444 125 444 -20 1667 2488 90 278 0 -445 283 248 30 33 448 90 0 824 -446 391 334 20 885 1368 90 0 106 -447 212 215 -30 3177 3303 90 968 0 -448 276 428 20 1007 1248 90 0 227 -449 96 152 20 182 789 90 0 643 -450 425 85 10 353 880 90 0 465 -451 336 7 10 1509 1820 90 0 700 -452 196 219 -40 2864 3404 90 277 0 -453 210 94 -30 676 1478 90 545 0 -454 310 81 -20 2501 3352 90 323 0 -455 341 37 20 231 1079 90 0 617 -456 344 478 -30 2002 2751 90 820 0 -457 406 37 40 264 1247 90 0 165 -458 69 346 -20 2786 3297 90 763 0 -459 80 376 -20 211 1467 90 62 0 -460 314 449 30 209 1063 90 0 117 -461 209 201 -20 2292 3375 90 610 0 -462 88 379 -10 603 936 90 229 0 -463 352 500 30 1282 1889 90 0 208 -464 65 357 -20 2087 2981 90 426 0 -465 345 15 -10 1178 1946 90 450 0 -466 125 245 -10 2907 3258 90 563 0 -467 52 369 30 1482 2824 90 0 947 -468 449 140 -10 539 1082 90 423 0 -469 430 310 30 666 1846 90 0 556 -470 109 325 -10 2987 3190 90 161 0 -471 446 139 20 292 1143 90 0 957 -472 229 214 20 41 767 90 0 376 -473 197 301 10 146 380 90 0 794 -474 146 245 20 464 1089 90 0 880 -475 401 368 20 316 1171 90 0 148 -476 116 259 -20 2493 2893 90 666 0 -477 374 55 -20 2785 2958 90 621 0 -478 249 251 -10 2717 3515 90 194 0 -479 325 490 10 771 1236 90 0 353 -480 59 159 10 789 1577 90 0 787 -481 186 177 -20 1264 1618 90 601 0 -482 319 229 -10 2038 2707 90 174 0 -483 26 269 30 828 1342 90 0 619 -484 53 139 -10 1093 1494 90 914 0 -485 471 154 20 1123 1675 90 0 791 -486 301 247 -10 2797 3773 90 267 0 -487 388 220 20 1161 1845 90 0 813 -488 235 81 -20 1081 1978 90 712 0 -489 347 479 10 2278 2661 90 0 43 -490 367 59 -20 3045 3453 90 655 0 -491 261 370 -10 1019 1279 90 746 0 -492 441 287 -10 2850 3140 90 497 0 -493 44 153 -10 1746 2405 90 422 0 -494 263 351 -10 1571 1679 90 960 0 -495 444 157 10 215 1022 90 0 885 -496 374 17 -10 1406 2604 90 988 0 -497 448 295 10 2533 3075 90 0 492 -498 446 297 -10 1991 2633 90 375 0 -499 347 40 -10 231 1089 90 1000 0 -500 318 493 10 643 1167 90 0 242 -501 399 352 -10 897 1783 90 339 0 -502 51 364 10 1390 2545 90 0 82 -503 250 217 -30 2237 2991 90 831 0 -504 107 225 30 228 813 90 0 393 -505 173 208 -20 1942 1981 90 420 0 -506 204 189 10 2409 2507 90 0 329 -507 399 379 -10 2562 3518 90 537 0 -508 79 346 -20 3062 3398 90 129 0 -509 360 338 10 140 920 90 0 702 -510 390 17 -30 1086 1979 90 518 0 -511 207 337 20 97 1687 90 0 567 -512 409 361 30 661 1612 90 0 260 -513 206 377 -20 134 1290 90 111 0 -514 429 294 -30 1878 2167 90 320 0 -515 375 31 20 2136 2395 90 0 443 -516 426 80 20 426 1178 90 0 876 -517 74 374 20 2716 2768 90 0 152 -518 408 20 30 495 612 90 0 510 -519 239 369 30 1521 2261 90 0 118 -520 420 308 -20 569 1009 90 792 0 -521 254 357 -20 1545 2639 90 20 0 -522 53 297 -20 3289 3471 90 996 0 -523 434 382 30 1930 2730 90 0 105 -524 204 171 -20 799 1278 90 970 0 -525 173 169 10 1276 2000 90 0 528 -526 190 332 20 314 1057 90 0 236 -527 274 231 30 1816 2596 90 0 36 -528 207 194 -10 2068 3039 90 525 0 -529 315 232 -20 2421 3246 90 639 0 -530 425 87 20 239 1115 90 0 864 -531 312 64 -40 246 1078 90 143 0 -532 129 244 -20 2767 3210 90 855 0 -533 278 230 10 1456 1637 0 0 1009 -534 351 75 10 1696 2772 90 0 395 -535 185 293 10 614 1406 90 0 377 -536 364 364 -30 2298 2321 90 400 0 -537 432 369 10 1880 2574 90 0 507 -538 128 249 20 1285 1561 0 0 1017 -539 221 179 20 227 671 90 0 414 -540 194 296 -30 348 1111 90 397 0 -541 413 350 10 1209 2066 90 0 79 -542 214 372 10 574 1472 90 0 348 -543 379 229 10 1030 1220 90 0 321 -544 91 298 -10 1598 2587 90 997 0 -545 226 120 30 132 838 90 0 453 -546 344 46 -10 1458 2022 90 164 0 -547 238 84 -20 1406 2023 90 936 0 -548 138 276 10 1485 2505 90 0 812 -549 346 487 10 1397 2379 90 0 264 -550 95 160 10 179 419 90 0 135 -551 103 266 30 968 1316 90 0 306 -552 98 286 -10 1183 1651 90 116 0 -553 77 172 -30 2730 3382 90 721 0 -554 147 199 30 228 548 90 0 987 -555 210 98 -20 503 1099 90 172 0 -556 428 292 -30 1892 1970 90 469 0 -557 121 236 -20 1829 2399 90 316 0 -558 336 479 -10 2220 2337 90 175 0 -559 203 369 10 624 1218 90 0 948 -560 296 232 10 1030 1666 90 0 2 -561 87 369 10 201 785 90 0 868 -562 247 88 30 1662 2346 90 0 327 -563 104 246 10 973 1893 90 0 466 -564 67 302 30 2257 2889 90 0 642 -565 114 296 40 143 1067 90 0 101 -566 394 356 30 178 813 90 0 16 -567 192 306 -20 1546 1660 90 511 0 -568 16 285 30 2298 2845 90 0 39 -569 419 310 -20 599 1165 90 670 0 -570 389 221 10 1045 1778 90 0 75 -571 129 264 -20 2317 3366 90 440 0 -572 172 483 30 627 1340 90 0 209 -573 325 251 -10 1309 1702 90 356 0 -574 151 436 10 1984 2948 90 0 904 -575 263 91 20 159 934 90 0 843 -576 401 15 -30 503 1027 90 345 0 -577 253 382 -20 2611 3692 90 834 0 -578 247 89 -20 1985 2205 90 738 0 -579 283 229 30 1069 1833 90 0 324 -580 366 341 20 311 955 90 0 385 -581 392 213 20 2014 2331 90 0 402 -582 167 304 20 99 1020 90 0 241 -583 477 154 -20 1545 1626 90 64 0 -584 234 383 -20 1946 2411 90 282 0 -585 199 327 10 3096 3182 90 0 239 -586 140 220 30 633 1133 90 0 373 -587 144 266 30 119 664 90 0 214 -588 432 105 -10 2534 3592 90 757 0 -589 368 325 30 139 690 90 0 130 -590 202 386 20 144 1324 90 0 61 -591 325 246 10 1441 1760 90 0 778 -592 430 86 20 2452 3241 90 0 871 -593 200 195 -10 2136 2393 90 270 0 -594 440 295 -10 1890 2541 90 4 0 -595 77 287 10 1449 2521 90 0 828 -596 187 362 -30 1662 2069 90 613 0 -597 131 207 20 663 1495 90 0 176 -598 405 5 20 556 1175 90 0 863 -599 125 226 -10 1157 1781 90 108 0 -600 254 335 -10 2688 3498 90 15 0 -601 212 168 20 649 1231 90 0 481 -602 281 279 -20 559 1030 90 318 0 -603 326 241 -20 1357 2034 90 739 0 -604 152 241 20 549 1197 90 0 112 -605 71 139 30 338 1437 90 0 275 -606 46 277 -10 434 904 90 622 0 -607 393 13 20 1103 1772 90 0 693 -608 87 454 40 565 1358 90 0 734 -609 86 359 -10 2759 3628 90 758 0 -610 220 192 20 65 780 90 0 461 -611 426 279 30 2777 3608 90 0 667 -612 131 267 -30 2514 2791 90 866 0 -613 200 297 30 68 1308 90 0 596 -614 299 442 -10 1647 2322 90 625 0 -615 265 218 -20 2428 2590 90 68 0 -616 398 231 20 1898 2854 90 0 276 -617 312 74 -20 2800 2858 90 455 0 -618 99 307 20 2656 2931 90 0 25 -619 22 283 -30 1197 1590 90 483 0 -620 67 160 -20 2640 2899 90 121 0 -621 390 42 20 2435 2901 90 0 477 -622 44 279 10 368 785 90 0 606 -623 200 182 10 837 1630 90 0 40 -624 458 303 -20 2315 2906 90 966 0 -625 298 438 10 453 841 90 0 614 -626 62 301 20 3016 3630 0 0 1008 -627 112 251 10 1476 1950 90 0 60 -628 184 354 30 1833 2279 90 0 114 -629 140 180 20 2929 3249 90 0 708 -630 269 428 -10 561 1889 90 218 0 -631 123 206 -20 1688 2242 90 382 0 -632 36 284 10 1606 1950 90 0 928 -633 272 233 10 1531 2123 90 0 830 -634 320 231 20 2332 2596 90 0 328 -635 211 180 20 662 1013 90 0 103 -636 114 169 -20 2279 3106 90 74 0 -637 245 239 -20 2708 3319 90 924 0 -638 117 204 -30 1335 2221 90 777 0 -639 316 254 20 385 1275 90 0 529 -640 169 443 30 293 867 90 0 371 -641 212 96 10 784 1184 90 0 265 -642 119 285 -30 2677 3609 90 564 0 -643 71 163 -20 2781 2948 90 449 0 -644 78 361 -20 3011 3620 90 198 0 -645 354 219 -20 2736 3716 90 819 0 -646 389 233 -30 2142 2991 90 756 0 -647 90 391 10 331 911 90 0 340 -648 209 307 10 1615 2167 90 0 781 -649 363 351 20 2555 3452 90 0 89 -650 405 47 10 255 847 90 0 935 -651 278 329 10 83 935 90 0 187 -652 261 371 20 679 1437 90 0 374 -653 302 470 -10 1971 2643 90 851 0 -654 373 205 40 211 616 90 0 349 -655 381 20 20 1655 2161 90 0 490 -656 90 277 -10 471 1013 90 41 0 -657 46 341 10 2342 3136 90 0 256 -658 50 138 20 1596 2342 90 0 407 -659 61 437 20 265 1177 90 0 288 -660 331 252 10 1195 1233 90 0 901 -661 440 81 20 2397 3093 90 0 699 -662 384 206 20 375 1263 90 0 793 -663 232 87 -20 1362 1807 90 814 0 -664 59 471 20 946 2183 90 0 225 -665 174 304 20 93 597 90 0 900 -666 106 248 20 1073 1980 90 0 476 -667 410 287 -30 2773 3660 90 611 0 -668 206 313 -30 1726 2616 90 872 0 -669 412 367 20 765 1315 90 0 262 -670 412 300 20 174 1016 90 0 569 -671 206 295 -10 2802 2975 90 891 0 -672 329 459 -10 2744 3185 90 120 0 -673 177 436 20 199 1084 90 0 857 -674 266 264 30 332 1034 90 0 271 -675 308 235 -30 2999 3431 90 844 0 -676 260 330 -20 2971 3595 90 170 0 -677 49 136 10 1476 2094 90 0 768 -678 356 28 20 954 1207 90 0 52 -679 428 384 -20 2208 2841 90 879 0 -680 220 362 20 1025 1797 90 0 146 -681 437 61 -30 1713 2624 90 789 0 -682 365 360 20 1708 2533 0 0 1013 -683 107 168 -20 2159 3031 90 104 0 -684 220 177 20 78 1366 90 0 168 -685 347 21 20 998 1935 90 0 11 -686 293 245 -20 3365 3654 90 387 0 -687 267 436 -30 2924 3249 90 305 0 -688 216 96 10 2368 2924 90 0 1 -689 383 351 20 167 809 90 0 825 -690 289 240 -10 751 1287 90 733 0 -691 129 185 20 2837 2951 0 0 1016 -692 291 450 -20 2641 2929 90 326 0 -693 387 21 -20 1230 2025 90 607 0 -694 116 255 20 1171 1468 90 0 150 -695 50 368 -20 1648 2474 90 895 0 -696 121 249 20 2466 2537 90 0 817 -697 404 346 10 950 1536 90 0 357 -698 77 360 -20 2959 3619 90 57 0 -699 447 102 -20 2954 3578 90 661 0 -700 366 16 -10 1655 2461 90 451 0 -701 348 16 -20 1399 2320 90 894 0 -702 353 346 -10 2990 3398 90 509 0 -703 54 485 30 1643 2063 90 0 207 -704 319 77 -20 2215 3061 90 749 0 -705 83 282 10 1095 2129 90 0 243 -706 384 24 10 1962 3400 90 0 759 -707 52 469 -30 1167 1766 90 753 0 -708 199 200 -20 2584 3465 90 629 0 -709 273 234 10 1600 1872 90 0 153 -710 16 281 -20 2406 3107 90 737 0 -711 151 442 -10 1971 3153 90 95 0 -712 223 114 20 231 593 90 0 488 -713 191 308 20 82 723 90 0 432 -714 448 297 -10 2272 3153 90 870 0 -715 386 28 20 1892 3282 90 0 404 -716 106 295 -10 785 1481 90 14 0 -717 387 224 -10 1263 1931 90 389 0 -718 96 377 10 199 754 90 0 137 -719 86 361 -10 3024 3626 90 915 0 -720 211 107 -20 167 1055 90 12 0 -721 43 125 30 1387 1979 90 0 553 -722 369 351 -30 664 1172 90 835 0 -723 388 228 -10 892 1738 90 136 0 -724 325 228 20 1337 2443 90 0 330 -725 490 159 -10 1954 2000 90 908 0 -726 420 78 20 1148 1808 90 0 131 -727 396 4 10 827 1478 90 0 952 -728 222 317 -40 2381 2609 90 973 0 -729 389 198 20 449 798 90 0 171 -730 322 454 20 216 698 90 0 874 -731 241 391 30 2878 3253 90 0 149 -732 256 117 -20 2929 3565 90 224 0 -733 298 255 10 48 847 90 0 690 -734 74 363 -40 2798 2888 90 608 0 -735 345 496 20 963 2012 90 0 133 -736 167 169 20 1388 2079 90 0 848 -737 23 306 20 1723 2801 90 0 710 -738 317 62 20 372 1142 90 0 578 -739 319 257 20 69 1469 90 0 603 -740 129 255 10 2402 3190 90 0 842 -741 59 377 20 1815 2520 90 0 754 -742 138 272 -10 1680 2121 90 405 0 -743 317 251 -20 618 1421 90 417 0 -744 279 436 -30 1543 1656 90 342 0 -745 371 207 -20 128 891 90 119 0 -746 263 372 10 784 1149 90 0 491 -747 50 347 -10 2423 2861 90 795 0 -748 275 236 20 1514 1772 90 0 336 -749 334 47 20 219 1330 90 0 704 -750 50 383 -10 1702 2236 90 802 0 -751 170 338 20 2126 2603 90 0 261 -752 245 109 -10 2861 3477 90 846 0 -753 69 475 30 1121 1416 90 0 707 -754 54 372 -20 1486 2656 90 741 0 -755 198 334 -10 1971 2596 90 911 0 -756 380 228 30 1041 1393 90 0 646 -757 425 118 10 219 844 90 0 588 -758 80 398 10 406 1407 90 0 609 -759 366 57 -10 2883 3430 90 706 0 -760 67 463 30 496 832 90 0 892 -761 226 86 10 2297 3052 90 0 140 -762 59 480 10 1560 1766 90 0 235 -763 40 378 20 1019 1914 90 0 458 -764 250 367 20 1937 2449 90 0 47 -765 157 436 20 2677 3029 90 0 182 -766 463 161 30 2109 2857 90 0 48 -767 266 250 10 151 827 90 0 823 -768 51 162 -10 1915 2671 90 677 0 -769 194 353 -20 1059 1842 90 890 0 -770 383 41 20 2314 3216 0 0 1002 -771 247 82 30 1630 2185 0 0 1014 -772 457 142 -10 750 1068 90 34 0 -773 244 94 -10 1554 2197 90 219 0 -774 441 63 -10 2066 2643 90 369 0 -775 244 371 20 1943 2837 90 0 962 -776 174 444 10 208 875 90 0 250 -777 94 247 30 719 1146 90 0 638 -778 320 225 -10 1718 2471 90 591 0 -779 316 80 30 2531 2932 90 0 899 -780 155 447 -20 2585 2918 90 856 0 -781 211 308 -10 1741 2226 90 648 0 -782 297 442 20 1473 2312 0 0 1004 -783 200 342 10 579 1574 90 0 884 -784 44 325 -20 2974 3547 90 938 0 -785 438 60 -30 1967 2552 90 853 0 -786 80 374 20 210 1043 90 0 76 -787 59 163 -10 2014 2768 90 480 0 -788 236 92 10 1905 2676 90 0 240 -789 414 66 30 1327 2016 90 0 681 -790 34 279 -20 1415 1758 90 156 0 -791 475 156 -20 1260 1727 90 485 0 -792 404 310 20 165 1030 90 0 520 -793 367 239 -20 2765 3707 90 662 0 -794 210 359 -10 1112 2184 90 473 0 -795 133 278 10 1718 2463 90 0 747 -796 446 169 10 2680 3612 0 0 1006 -797 188 356 -10 1942 1981 90 964 0 -798 312 252 20 668 1181 90 0 368 -799 69 485 10 2254 2422 90 0 226 -800 413 353 -10 1299 2161 90 413 0 -801 54 446 20 277 1173 90 0 10 -802 56 357 10 1705 2032 90 0 750 -803 230 105 -20 2708 3367 90 287 0 -804 196 302 20 242 466 90 0 314 -805 391 373 -10 2680 3600 90 311 0 -806 101 295 -10 868 1208 90 50 0 -807 234 350 -10 2554 2839 90 73 0 -808 215 108 -30 2597 3082 90 266 0 -809 142 457 10 1293 2052 90 0 299 -810 283 425 20 408 1468 90 0 969 -811 77 397 10 440 1558 90 0 429 -812 105 317 -10 2647 3331 90 548 0 -813 382 213 -20 1391 2199 90 487 0 -814 213 76 20 1171 1589 90 0 663 -815 417 56 -20 1485 2239 90 5 0 -816 183 340 -20 2469 3044 90 940 0 -817 123 242 -20 3163 3376 90 696 0 -818 475 136 20 666 1551 90 0 954 -819 377 246 20 2846 3423 90 0 645 -820 310 484 30 327 1084 90 0 456 -821 47 280 10 205 1155 90 0 304 -822 57 456 20 282 1202 90 0 145 -823 313 266 -10 339 566 90 767 0 -824 475 145 -30 798 1618 90 445 0 -825 400 376 -20 723 962 90 689 0 -826 290 416 30 170 712 90 0 847 -827 277 369 -10 437 543 90 352 0 -828 91 303 -10 1946 2612 90 595 0 -829 194 301 -10 75 1016 90 333 0 -830 254 238 -10 2565 2887 90 633 0 -831 215 91 30 2112 2628 90 0 503 -832 500 162 20 1838 2499 90 0 144 -833 56 287 20 197 858 90 0 6 -834 289 452 20 2460 3295 90 0 577 -835 378 326 30 148 506 90 0 722 -836 197 350 -30 874 1659 90 428 0 -837 243 88 -20 1561 2060 90 838 0 -838 250 72 20 1064 1346 90 0 837 -839 101 290 20 861 1599 0 0 1015 -840 351 480 30 1423 2157 90 0 366 -841 67 357 -10 2727 3521 90 255 0 -842 128 240 -10 3064 3666 90 740 0 -843 253 81 -20 853 1358 90 575 0 -844 307 227 30 2523 3343 90 0 675 -845 233 441 -10 2748 3633 90 354 0 -846 311 47 10 791 1510 90 0 752 -847 292 456 -30 2529 2668 90 826 0 -848 183 187 -20 1639 2057 90 736 0 -849 392 31 20 2930 3010 90 0 409 -850 103 251 10 905 1771 90 0 122 -851 300 443 10 1570 2581 90 0 653 -852 420 295 10 1530 2135 0 0 1011 -853 427 64 30 1132 1612 90 0 785 -854 372 354 30 1543 2498 90 0 169 -855 101 263 20 851 1621 90 0 532 -856 141 454 20 1653 1879 90 0 780 -857 146 461 -20 1534 1620 90 673 0 -858 298 430 30 186 1329 90 0 364 -859 148 270 10 103 358 90 0 950 -860 76 287 20 1512 2276 90 0 378 -861 308 55 -20 689 1214 90 88 0 -862 143 257 10 304 858 90 0 881 -863 393 2 -20 527 1591 90 598 0 -864 385 28 -20 1933 2799 90 530 0 -865 204 291 20 2776 3190 90 0 959 -866 132 272 30 2026 2722 90 0 612 -867 206 379 10 234 860 90 0 312 -868 69 383 -10 2272 2828 90 561 0 -869 245 96 20 1560 2006 90 0 91 -870 431 301 10 1444 1653 90 0 714 -871 448 94 -20 2902 3566 90 592 0 -872 199 305 30 1403 1997 90 0 668 -873 95 356 10 3124 3637 90 0 367 -874 328 498 -20 780 1607 90 730 0 -875 108 222 10 1347 1806 90 0 344 -876 341 26 -20 1249 1487 90 516 0 -877 63 454 10 276 1531 90 0 160 -878 222 357 30 1234 1959 90 0 99 -879 416 364 20 1867 2169 90 0 679 -880 127 278 -20 1723 2650 90 474 0 -881 140 252 -10 653 700 90 862 0 -882 218 298 -20 2498 3074 90 35 0 -883 432 87 10 2784 3092 90 0 190 -884 216 300 -10 2285 3102 90 783 0 -885 438 72 -10 1121 1235 90 495 0 -886 184 178 -20 1171 1897 90 971 0 -887 345 468 -20 2514 3000 90 361 0 -888 150 435 -20 2055 2695 90 379 0 -889 395 365 30 185 690 90 0 86 -890 208 371 20 360 1109 90 0 769 -891 190 292 10 362 1289 90 0 671 -892 78 479 -30 865 1473 90 760 0 -893 104 198 20 2137 2630 90 0 315 -894 346 13 20 1291 2241 90 0 701 -895 47 388 20 788 1759 90 0 695 -896 315 57 -20 1014 1488 90 909 0 -897 110 199 -20 2007 2568 90 337 0 -898 323 60 10 955 1745 90 0 211 -899 308 82 -30 2832 3205 90 779 0 -900 216 374 -20 826 1405 90 665 0 -901 326 253 -10 832 1406 90 660 0 -902 308 232 30 2615 3440 90 0 975 -903 118 223 10 134 841 90 0 943 -904 149 444 -10 2463 2846 90 574 0 -905 95 395 30 212 1071 90 0 83 -906 117 319 -10 2641 3675 90 285 0 -907 262 352 -30 1085 2347 90 67 0 -908 468 135 10 996 1027 90 0 725 -909 351 31 20 859 927 90 0 896 -910 361 15 20 1975 2422 90 0 259 -911 195 300 10 385 691 90 0 755 -912 397 27 -30 2224 2712 90 294 0 -913 179 311 10 175 607 90 0 126 -914 77 133 10 388 1189 90 0 484 -915 66 397 10 1068 1342 90 0 719 -916 366 352 -10 2229 3591 90 436 0 -917 221 87 -20 1215 1751 90 291 0 -918 347 23 30 740 1620 90 0 416 -919 176 358 -10 1742 2569 90 141 0 -920 229 78 -20 2340 2813 90 188 0 -921 272 246 -30 22 781 90 280 0 -922 293 67 20 187 1446 90 0 343 -923 140 265 -20 1176 2070 90 983 0 -924 238 83 20 1381 1865 90 0 637 -925 136 296 30 2421 3702 90 0 949 -926 218 98 -20 1668 2496 90 965 0 -927 290 440 -10 1362 2040 90 981 0 -928 29 302 -10 1949 2382 90 632 0 -929 290 425 30 190 530 90 0 238 -930 124 247 -10 3086 3264 90 289 0 -931 442 287 -30 2488 3321 90 85 0 -932 294 64 10 423 503 90 0 283 -933 74 165 10 2683 3234 90 0 18 -934 382 245 -20 2436 3642 90 980 0 -935 405 24 -10 274 727 90 650 0 -936 211 97 20 668 1116 90 0 547 -937 88 390 30 358 1069 90 0 33 -938 37 295 20 1460 2482 90 0 784 -939 359 371 -30 2258 2746 90 347 0 -940 186 372 20 1444 2087 90 0 816 -941 116 446 20 1655 2302 90 0 386 -942 293 249 10 43 457 90 0 396 -943 83 228 -10 175 1283 90 903 0 -944 96 269 -20 786 1303 90 180 0 -945 179 284 30 643 1579 90 0 87 -946 368 219 20 588 1452 90 0 173 -947 66 359 -30 2910 3563 90 467 0 -948 189 338 -10 2794 3274 90 559 0 -949 163 277 -30 2920 3733 90 925 0 -950 5 296 -10 2283 2650 90 859 0 -951 152 478 20 991 1198 90 0 127 -952 366 34 -10 2042 2289 90 727 0 -953 429 80 20 523 1267 90 0 124 -954 464 178 -20 2404 3137 90 818 0 -955 138 196 30 1887 2259 90 0 334 -956 87 481 10 2466 3161 90 0 45 -957 425 99 -20 231 1005 90 471 0 -958 241 362 -30 1921 3059 90 310 0 -959 207 289 -20 2787 3367 90 865 0 -960 264 365 10 1323 1348 90 0 494 -961 102 289 20 815 1829 90 0 3 -962 233 346 -20 2478 3103 90 775 0 -963 78 141 30 364 600 90 0 21 -964 196 348 10 680 1669 90 0 797 -965 216 92 20 2042 2881 90 0 926 -966 444 309 20 2302 2709 90 0 624 -967 313 263 20 388 703 90 0 430 -968 211 198 30 2319 3161 90 0 447 -969 314 436 -20 1723 2640 90 810 0 -970 217 189 20 357 930 90 0 524 -971 197 178 20 824 1453 90 0 886 -972 60 497 -10 1698 2216 90 217 0 -973 206 312 40 1726 2434 90 0 728 -974 197 351 -30 1086 1628 90 23 0 -975 305 233 -30 3002 3240 90 902 0 -976 297 250 -20 3080 3746 90 110 0 -977 71 348 -30 2976 3294 90 251 0 -978 11 269 -10 882 1498 90 109 0 -979 247 447 -10 3081 3319 90 42 0 -980 386 213 20 1707 2445 90 0 934 -981 292 434 10 454 1217 90 0 927 -982 436 301 20 941 1965 90 0 411 -983 145 221 20 373 1202 90 0 923 -984 224 96 -20 1915 2441 90 210 0 -985 59 128 -10 1390 1762 90 281 0 -986 489 150 50 1476 2280 90 0 139 -987 152 225 -30 766 1382 90 554 0 -988 426 85 10 314 1100 90 0 496 -989 415 73 -20 1315 1834 90 147 0 -990 440 70 10 2165 2738 90 0 355 -991 320 476 30 491 716 90 0 178 -992 57 132 -20 1240 1543 90 17 0 -993 405 311 30 169 344 90 0 995 -994 109 250 -30 1449 1791 90 346 0 -995 428 314 -30 880 1264 90 993 0 -996 40 288 20 1548 2198 90 0 522 -997 175 282 10 602 1809 90 0 544 -998 298 456 30 2137 2687 90 0 157 -999 208 101 -10 257 1157 90 8 0 -1000 342 52 10 218 877 90 0 499 -1001 156 421 -30 2797 3629 90 388 0 -1002 383 41 -20 2314 3216 90 770 0 -1003 57 367 -20 1890 2607 90 360 0 -1004 297 442 -20 1473 2312 90 782 0 -1005 327 483 -20 1855 2501 90 301 0 -1006 446 169 -10 2680 3612 90 796 0 -1007 448 103 -30 3190 3578 90 13 0 -1008 62 301 -20 3016 3630 90 626 0 -1009 278 230 -10 1456 1637 90 533 0 -1010 63 166 -30 2349 2816 90 151 0 -1011 420 295 -10 1530 2135 90 852 0 -1012 284 360 -30 214 564 90 350 0 -1013 365 360 -20 1708 2533 90 682 0 -1014 247 82 -30 1630 2185 90 771 0 -1015 101 290 -20 861 1599 90 839 0 -1016 129 185 -20 2837 2951 90 691 0 -1017 128 249 -20 1285 1561 90 538 0 -1018 132 273 -10 2103 2464 90 290 0 diff --git a/jsprit-instances/instances/lilim/1000/LC2108.txt b/jsprit-instances/instances/lilim/1000/LC2108.txt deleted file mode 100644 index 74b073ee1..000000000 --- a/jsprit-instances/instances/lilim/1000/LC2108.txt +++ /dev/null @@ -1,1016 +0,0 @@ -250 700 1 -0 250 250 0 0 3914 0 0 0 -1 212 101 -20 2422 3062 90 575 0 -2 266 231 -10 1696 2336 90 336 0 -3 89 284 20 1196 1836 90 0 860 -4 430 298 10 1322 1962 90 0 556 -5 435 77 -20 762 1402 90 530 0 -6 25 293 -10 2724 3364 90 710 0 -7 43 269 30 447 1087 90 0 483 -8 216 117 10 189 829 90 0 814 -9 294 437 30 421 1061 90 0 238 -10 79 479 -20 758 1398 90 822 0 -11 365 18 20 1973 2613 90 0 409 -12 225 125 20 127 767 90 0 641 -13 448 103 -10 2938 3578 90 699 0 -14 143 266 10 162 802 90 0 114 -15 252 347 10 2671 3311 90 0 149 -16 403 390 10 2320 2960 90 0 89 -17 67 153 -10 672 1312 90 422 0 -18 90 168 -30 2840 3480 90 151 0 -19 302 235 -10 803 1443 90 767 0 -20 259 355 -10 1677 2317 90 96 0 -21 149 183 -20 2868 3508 90 629 0 -22 19 297 20 2042 2682 90 0 522 -23 209 358 -20 1237 1877 90 540 0 -24 56 388 20 1551 2191 90 0 418 -25 115 269 -10 2716 3356 90 623 0 -26 377 356 10 1606 2246 90 0 616 -27 113 229 30 883 1523 90 0 740 -28 205 343 20 662 1302 90 0 680 -29 48 137 20 1557 2197 90 0 768 -30 467 157 -20 2067 2707 90 468 0 -31 220 394 10 2543 3183 90 0 676 -32 436 54 20 1751 2391 90 0 190 -33 54 357 10 1456 2096 90 0 868 -34 456 154 10 227 867 90 0 986 -35 216 307 -20 2276 2916 90 567 0 -36 280 224 -30 1986 2626 90 579 0 -37 90 270 10 325 965 90 0 806 -38 166 452 20 359 999 90 0 444 -39 17 283 -10 2344 2984 90 109 0 -40 196 192 -20 1850 2490 90 68 0 -41 94 275 10 229 869 90 0 595 -42 292 445 -20 1476 2116 90 744 0 -43 329 471 30 2543 3183 90 0 208 -44 326 57 20 1124 1764 90 0 899 -45 95 466 -10 2784 3424 90 288 0 -46 429 282 20 2778 3418 90 0 611 -47 229 364 10 2272 2912 90 0 335 -48 457 160 -20 2751 3391 90 772 0 -49 452 154 -10 223 863 90 495 0 -50 113 289 10 142 782 90 0 272 -51 67 387 -30 2136 2776 90 467 0 -52 368 17 -10 1781 2421 90 416 0 -53 341 367 -30 2290 2930 90 491 0 -54 410 364 30 1602 2242 90 0 436 -55 80 281 -20 1477 2117 90 180 0 -56 321 224 -20 1866 2506 90 487 0 -57 73 395 20 983 1623 90 0 698 -58 259 76 10 688 1328 90 0 843 -59 121 203 -20 1552 2192 90 694 0 -60 118 256 -20 2279 2919 90 539 0 -61 236 361 -10 1473 2113 90 559 0 -62 78 371 -10 210 850 90 241 0 -63 301 53 20 729 1369 90 0 211 -64 382 197 20 400 1040 90 0 778 -65 491 160 -10 1749 2389 90 583 0 -66 453 164 -10 2846 3486 90 155 0 -67 277 371 30 355 995 90 0 746 -68 272 212 20 2090 2730 90 0 40 -69 386 218 -30 1661 2301 90 717 0 -70 353 32 10 665 1305 90 0 678 -71 59 389 20 1458 2098 90 0 977 -72 414 62 -30 1446 2086 90 789 0 -73 278 357 10 110 750 90 0 169 -74 101 179 -30 2172 2812 90 777 0 -75 396 234 -20 2150 2790 90 230 0 -76 74 390 -20 557 1197 90 786 0 -77 332 55 30 211 851 90 0 700 -78 272 365 30 453 1093 90 0 939 -79 418 355 -10 1797 2437 90 697 0 -80 216 380 -30 2060 2700 90 97 0 -81 440 173 -10 2979 3619 90 954 0 -82 89 358 -10 2991 3631 90 464 0 -83 66 491 20 1830 2470 90 0 160 -84 317 234 10 2239 2879 90 0 128 -85 439 297 -10 1803 2443 90 852 0 -86 394 367 30 185 825 90 0 825 -87 58 364 10 2022 2662 90 0 508 -88 290 75 20 179 819 90 0 896 -89 346 344 -10 2972 3612 90 16 0 -90 131 269 10 2148 2788 90 0 466 -91 236 96 20 1364 2004 90 0 752 -92 29 282 10 1170 1810 90 0 996 -93 418 385 30 2517 3157 0 0 1008 -94 148 225 -30 373 1013 90 431 0 -95 166 464 -20 554 1194 90 111 0 -96 266 373 10 553 1193 90 0 20 -97 201 273 30 54 694 90 0 80 -98 255 245 10 7 647 90 0 224 -99 220 379 10 2154 2794 90 0 118 -100 85 317 30 2367 3007 90 0 618 -101 125 264 -20 2615 3255 90 601 0 -102 131 253 -10 2569 3209 90 290 0 -103 184 188 -20 1020 1660 90 684 0 -104 128 209 20 853 1493 90 0 373 -105 373 364 20 2930 3570 90 0 702 -106 389 342 -20 905 1545 90 446 0 -107 420 20 30 335 975 90 0 863 -108 132 218 10 122 762 90 0 850 -109 32 256 10 661 1301 90 0 39 -110 406 339 20 179 819 90 0 995 -111 191 397 20 158 798 90 0 95 -112 72 341 -10 2626 3266 90 257 0 -113 35 308 -20 2832 3472 90 737 0 -114 169 360 -10 1932 2572 90 14 0 -115 222 381 -20 2349 2989 90 441 0 -116 96 292 10 622 1262 90 0 564 -117 311 496 -20 488 1128 90 419 0 -118 220 384 -10 2443 3083 90 99 0 -119 259 243 20 11 651 90 0 912 -120 349 476 10 2243 2883 90 0 558 -121 63 159 -30 769 1409 90 313 0 -122 112 243 -10 2081 2721 90 228 0 -123 448 302 20 2087 2727 90 0 492 -124 343 27 20 956 1596 90 0 918 -125 67 485 40 1926 2566 90 0 799 -126 220 359 -10 1184 1824 90 333 0 -127 147 435 10 1871 2511 90 0 904 -128 317 235 -10 2330 2970 90 84 0 -129 43 355 20 1355 1995 90 0 734 -130 368 340 10 221 861 90 0 359 -131 450 72 -20 2321 2961 90 815 0 -132 400 364 30 330 970 90 0 805 -133 355 480 20 1376 2016 90 0 326 -134 450 153 20 293 933 90 0 471 -135 126 188 -10 1858 2498 90 563 0 -136 380 223 -10 1374 2014 90 213 0 -137 71 453 20 445 1085 90 0 207 -138 54 287 20 199 839 90 0 928 -139 420 168 -30 2996 3636 90 192 0 -140 219 89 20 2452 3092 90 0 287 -141 189 327 10 180 820 90 0 432 -142 191 309 -20 1190 1830 90 881 0 -143 301 67 -10 240 880 90 408 0 -144 484 161 10 1456 2096 0 0 1004 -145 77 483 20 2299 2939 90 0 235 -146 241 375 -10 1758 2398 90 348 0 -147 428 64 -10 961 1601 90 885 0 -148 403 361 -10 1212 1852 90 339 0 -149 257 336 -10 2866 3506 90 15 0 -150 131 241 -20 3065 3705 90 571 0 -151 63 166 30 2262 2902 90 0 18 -152 71 368 20 2970 3610 90 0 719 -153 272 228 -20 1793 2433 90 798 0 -154 25 290 30 2631 3271 0 0 1005 -155 441 157 10 212 852 90 0 66 -156 13 266 20 964 1604 90 0 784 -157 251 376 -20 2946 3586 90 653 0 -158 61 170 -20 2168 2808 90 985 0 -159 386 357 20 1193 1833 90 0 675 -160 95 475 -20 2685 3325 90 83 0 -161 90 298 10 1864 2504 90 0 399 -162 71 388 -30 1265 1905 90 429 0 -163 383 246 -10 2628 3268 90 402 0 -164 352 38 10 386 1026 90 0 864 -165 395 1 30 647 1287 90 0 607 -166 120 210 -30 1042 1682 90 421 0 -167 46 383 30 1048 1688 90 0 657 -168 202 198 -10 2038 2678 90 174 0 -169 358 365 -10 2086 2726 90 73 0 -170 191 352 20 117 757 90 0 807 -171 470 152 30 986 1626 90 0 179 -172 228 124 20 127 767 90 0 720 -173 402 230 -30 1962 2602 90 362 0 -174 323 229 10 1478 2118 90 0 168 -175 331 486 10 1763 2403 90 0 672 -176 112 208 10 1361 2001 90 0 231 -177 172 435 -20 2821 3461 90 765 0 -178 326 498 -30 781 1421 90 820 0 -179 460 183 -30 2547 3187 90 171 0 -180 95 279 20 157 797 90 0 55 -181 76 456 30 540 1180 90 0 263 -182 242 350 -30 2571 3211 90 731 0 -183 152 196 -20 111 751 90 610 0 -184 268 351 -30 1210 1850 90 342 0 -185 360 356 -20 2493 3133 90 246 0 -186 39 296 -10 1743 2383 90 632 0 -187 262 368 30 922 1562 90 0 960 -188 204 90 20 854 1494 90 0 274 -189 149 273 20 103 743 90 0 913 -190 446 86 -20 2816 3456 90 32 0 -191 139 269 -40 1488 2128 90 923 0 -192 483 170 30 1957 2597 90 0 139 -193 39 278 10 1361 2001 90 0 938 -194 201 307 10 1473 2113 90 0 781 -195 395 378 -30 1396 2036 90 889 0 -196 139 262 30 1210 1850 90 0 866 -197 176 447 20 210 850 90 0 258 -198 67 380 -30 2039 2679 90 251 0 -199 35 358 -30 1257 1897 90 905 0 -200 294 455 -10 2186 2826 90 614 0 -201 351 33 20 481 1121 90 0 685 -202 216 316 -10 2079 2719 90 997 0 -203 261 96 40 207 847 90 0 924 -204 238 57 -10 1096 1736 90 309 0 -205 383 18 -10 1403 2043 90 693 0 -206 152 460 -30 1070 1710 90 572 0 -207 94 479 -20 2590 3230 90 137 0 -208 337 453 -30 2745 3385 90 43 0 -209 135 460 -20 1545 2185 90 857 0 -210 260 104 20 146 786 90 0 547 -211 337 63 -20 1805 2445 90 63 0 -212 32 247 -10 562 1202 90 606 0 -213 394 205 10 205 845 90 0 136 -214 95 294 10 530 1170 90 0 243 -215 253 241 -30 2595 3235 90 743 0 -216 223 90 -30 2547 3187 90 562 0 -217 64 473 10 1044 1684 90 0 232 -218 275 431 -30 1002 1642 90 858 0 -219 261 84 10 494 1134 90 0 788 -220 176 296 -30 990 1630 90 945 0 -221 361 349 -30 2776 3416 90 347 0 -222 168 433 -20 2916 3556 90 941 0 -223 394 10 40 929 1569 90 0 496 -224 308 60 -10 536 1176 90 98 0 -225 94 456 -20 2884 3524 90 226 0 -226 73 484 20 2205 2845 90 0 225 -227 277 434 20 1187 1827 90 0 969 -228 119 232 10 1699 2339 90 0 122 -229 78 375 10 212 852 90 0 747 -230 366 346 20 408 1048 90 0 75 -231 125 181 -10 2478 3118 90 176 0 -232 69 493 -10 1737 2377 90 217 0 -233 432 80 -20 668 1308 90 957 0 -234 72 391 -10 1172 1812 90 811 0 -235 85 486 -20 2398 3038 90 145 0 -236 204 371 -20 509 1149 90 713 0 -237 173 328 10 2241 2881 90 0 959 -238 280 423 -30 711 1351 90 9 0 -239 200 327 -20 2910 3550 90 755 0 -240 241 98 -40 2747 3387 90 984 0 -241 96 356 10 186 826 90 0 62 -242 332 491 30 971 1611 90 0 834 -243 81 283 -10 1384 2024 90 214 0 -244 373 22 -30 2072 2712 90 510 0 -245 255 371 40 1969 2609 90 0 958 -246 358 359 20 2399 3039 90 0 185 -247 216 93 10 2233 2873 90 0 803 -248 73 360 20 2707 3347 90 0 317 -249 305 212 20 916 1556 90 0 690 -250 151 462 10 1162 1802 90 0 253 -251 47 389 30 862 1502 90 0 198 -252 155 198 30 108 748 90 0 599 -253 152 457 -10 977 1617 90 250 0 -254 329 48 10 1315 1955 90 0 295 -255 88 394 10 487 1127 90 0 517 -256 153 295 20 3078 3718 0 0 1010 -257 81 373 10 350 990 90 0 112 -258 163 453 -20 453 1093 90 197 0 -259 378 25 10 2168 2808 90 0 849 -260 401 385 -10 2624 3264 90 311 0 -261 184 340 10 2528 3168 90 0 865 -262 402 362 -30 1121 1761 90 512 0 -263 70 482 -30 2111 2751 90 181 0 -264 357 445 -10 2947 3587 90 353 0 -265 212 71 -10 964 1604 90 999 0 -266 231 81 30 2163 2803 90 0 688 -267 379 208 10 595 1235 90 0 543 -268 236 95 -20 1877 2517 90 869 0 -269 386 344 20 999 1639 90 0 349 -270 189 200 10 1749 2389 90 0 696 -271 296 253 10 594 1234 90 0 709 -272 73 303 -10 2157 2797 90 50 0 -273 30 162 -10 1862 2502 90 281 0 -274 230 95 -20 1659 2299 90 188 0 -275 57 131 10 1163 1803 90 0 484 -276 379 245 10 2533 3173 90 0 645 -277 107 221 40 294 934 90 0 504 -278 154 458 20 885 1525 0 0 1006 -279 290 417 -30 171 811 90 826 0 -280 272 243 30 23 663 90 0 946 -281 94 130 10 361 1001 90 0 273 -282 222 356 -30 1368 2008 90 397 0 -283 243 108 -30 2821 3461 90 831 0 -284 224 93 20 1951 2591 90 0 637 -285 155 242 -20 646 1286 90 983 0 -286 440 302 20 1039 1679 90 0 293 -287 221 102 -20 2618 3258 90 140 0 -288 52 484 10 1441 2081 90 0 45 -289 111 244 -20 1989 2629 90 971 0 -290 132 273 10 1963 2603 90 0 102 -291 228 186 20 67 707 90 0 376 -292 221 374 -10 890 1530 90 542 0 -293 406 286 -20 3024 3664 90 286 0 -294 390 9 30 1023 1663 90 0 331 -295 335 52 -10 1521 2161 90 254 0 -296 189 368 -30 132 772 90 829 0 -297 397 40 -20 2251 2891 90 443 0 -298 408 305 -10 179 819 90 356 0 -299 156 434 -20 2625 3265 90 888 0 -300 180 335 -30 2341 2981 90 628 0 -301 327 483 20 1858 2498 90 0 687 -302 363 62 -10 2965 3605 90 381 0 -303 375 342 -20 699 1339 90 823 0 -304 16 280 -30 2527 3167 90 619 0 -305 277 431 -20 1094 1734 90 448 0 -306 110 241 -20 1896 2536 90 424 0 -307 48 385 20 768 1408 90 0 609 -308 152 260 10 98 738 90 0 382 -309 255 120 10 130 770 90 0 204 -310 214 382 -10 2251 2891 90 891 0 -311 414 384 10 2422 3062 90 0 260 -312 232 378 20 1954 2594 90 0 728 -313 80 141 30 254 894 90 0 121 -314 188 330 -10 273 913 90 859 0 -315 157 192 -10 2970 3610 90 620 0 -316 101 237 20 1591 2231 90 0 638 -317 74 360 -20 2616 3256 90 248 0 -318 267 260 20 269 909 90 0 724 -319 378 46 -20 2850 3490 90 770 0 -320 420 311 -30 653 1293 90 993 0 -321 384 217 20 1569 2209 90 0 975 -322 418 300 10 371 1011 90 0 714 -323 356 77 -20 2009 2649 90 427 0 -324 253 244 -10 2502 3142 90 533 0 -325 323 258 10 1088 1728 90 0 660 -326 293 454 -20 2371 3011 90 133 0 -327 231 97 -20 2647 3287 90 773 0 -328 316 234 -20 2421 3061 90 581 0 -329 207 196 -40 2325 2965 90 503 0 -330 321 228 30 1960 2600 90 0 634 -331 382 17 -30 1494 2134 90 294 0 -332 206 326 -10 3006 3646 90 809 0 -333 198 284 10 62 702 90 0 126 -334 137 186 -20 2672 3312 90 666 0 -335 229 396 -10 2642 3282 90 47 0 -336 268 235 10 1602 2242 90 0 2 -337 95 243 20 519 1159 90 0 855 -338 297 430 -30 186 826 90 929 0 -339 393 368 10 232 872 90 0 148 -340 66 391 -10 1361 2001 90 750 0 -341 189 339 -10 2623 3263 90 816 0 -342 280 351 30 105 745 90 0 184 -343 241 77 30 985 1625 90 0 578 -344 134 265 20 2426 3066 90 0 532 -345 420 95 30 230 870 90 0 516 -346 111 279 30 141 781 90 0 367 -347 367 358 30 1893 2533 90 0 221 -348 239 373 10 1665 2305 90 0 146 -349 384 235 -20 2432 3072 90 269 0 -350 284 360 30 115 755 90 0 998 -351 325 75 30 2130 2770 0 0 1009 -352 279 369 -10 262 902 90 651 0 -353 340 449 10 2840 3480 90 0 264 -354 275 448 10 2662 3302 90 0 577 -355 447 88 -20 2723 3363 90 592 0 -356 314 279 10 70 710 90 0 298 -357 434 377 -10 2105 2745 90 501 0 -358 67 377 -20 1946 2586 90 895 0 -359 370 353 -10 506 1146 90 130 0 -360 57 367 -30 1929 2569 90 937 0 -361 332 486 20 1672 2312 90 0 366 -362 386 361 30 1287 1927 90 0 173 -363 55 282 40 197 837 90 0 622 -364 317 467 20 227 867 90 0 489 -365 335 54 -30 1613 2253 90 861 0 -366 348 466 -20 2343 2983 90 361 0 -367 132 314 -30 2974 3614 90 346 0 -368 328 216 -10 1672 2312 90 591 0 -369 416 48 -10 1640 2280 90 757 0 -370 370 55 -20 2646 3286 90 465 0 -371 149 434 30 1963 2603 90 0 780 -372 466 169 30 2262 2902 90 0 410 -373 141 267 -20 1395 2035 90 104 0 -374 258 350 20 1582 2222 90 0 649 -375 428 312 -10 844 1484 90 569 0 -376 211 188 -20 420 1060 90 291 0 -377 50 343 -20 2514 3154 90 763 0 -378 107 311 40 2573 3213 90 0 812 -379 178 441 -20 204 844 90 673 0 -380 232 85 10 2069 2709 90 0 761 -381 391 23 10 2458 3098 90 0 302 -382 137 227 -10 115 755 90 308 0 -383 161 203 -20 100 740 90 472 0 -384 363 212 -20 3034 3674 90 439 0 -385 384 346 -20 1091 1731 90 722 0 -386 166 434 -20 2725 3365 90 711 0 -387 274 248 20 70 710 90 0 639 -388 156 421 -10 2989 3629 90 877 0 -389 346 211 10 103 743 90 0 662 -390 265 358 -20 1112 1752 90 652 0 -391 96 407 20 219 859 90 0 892 -392 443 70 -10 2224 2864 90 990 0 -393 125 212 10 947 1587 90 0 742 -394 361 337 50 141 781 90 0 854 -395 322 78 -10 2224 2864 90 534 0 -396 481 156 20 1360 2000 90 0 725 -397 188 293 30 597 1237 90 0 282 -398 76 408 30 780 1420 90 0 695 -399 130 304 -10 2935 3575 90 161 0 -400 378 363 30 1509 2149 90 0 976 -401 185 301 20 1090 1730 90 0 884 -402 385 235 10 2341 2981 90 0 163 -403 261 350 10 1489 2129 90 0 521 -404 389 33 -20 2743 3383 90 910 0 -405 151 214 10 271 911 90 0 795 -406 265 94 10 156 796 90 0 808 -407 65 164 -20 2355 2995 90 787 0 -408 293 81 10 174 814 90 0 143 -409 363 55 -20 2743 3383 90 11 0 -410 465 176 -30 2359 2999 90 372 0 -411 428 298 -20 1414 2054 90 792 0 -412 75 379 -10 2327 2967 90 502 0 -413 404 378 10 617 1257 90 0 800 -414 203 203 -10 2610 3250 90 528 0 -415 259 88 20 305 945 90 0 838 -416 362 17 10 1644 2284 90 0 52 -417 320 258 20 324 964 90 0 615 -418 59 358 -20 2118 2758 90 24 0 -419 316 453 20 213 853 90 0 117 -420 225 192 20 63 703 90 0 627 -421 140 206 30 168 808 90 0 166 -422 83 151 10 194 834 90 0 17 -423 366 196 10 127 767 90 0 745 -424 108 245 20 1490 2130 90 0 306 -425 129 267 10 2240 2880 90 0 612 -426 57 379 20 667 1307 90 0 947 -427 329 56 20 1217 1857 90 0 323 -428 213 363 -10 994 1634 90 535 0 -429 76 391 30 1078 1718 90 0 162 -430 330 259 -20 991 1631 90 739 0 -431 136 217 30 658 1298 90 0 94 -432 165 333 -10 2141 2781 90 141 0 -433 160 431 -10 2982 3622 90 574 0 -434 338 489 -30 1068 1708 90 460 0 -435 335 64 -10 1713 2353 90 898 0 -436 412 361 -30 1508 2148 90 54 0 -437 259 90 30 397 1037 90 0 438 -438 265 77 -30 592 1232 90 437 0 -439 460 173 20 2647 3287 90 0 384 -440 83 301 20 2057 2697 90 0 906 -441 201 331 20 467 1107 90 0 115 -442 118 214 20 136 776 90 0 875 -443 395 30 20 2556 3196 90 0 297 -444 125 444 -20 1757 2397 90 38 0 -445 283 248 30 33 673 0 0 1014 -446 391 334 20 807 1447 90 0 106 -447 212 215 -20 2920 3560 90 573 0 -448 276 428 20 808 1448 90 0 305 -449 96 152 20 182 822 90 0 933 -450 425 85 10 296 936 90 0 871 -451 336 7 -10 1344 1984 90 1000 0 -452 196 219 -10 2814 3454 90 994 0 -453 210 94 20 757 1397 90 0 917 -454 310 81 -30 2606 3246 90 704 0 -455 341 37 -20 231 871 90 749 0 -456 344 478 -10 2056 2696 90 549 0 -457 406 37 40 264 904 90 0 477 -458 69 346 10 2722 3362 0 0 1007 -459 80 376 -10 211 851 90 561 0 -460 314 449 30 209 849 90 0 434 -461 209 201 30 2513 3153 90 0 708 -462 88 379 20 449 1089 90 0 841 -463 352 500 -20 1265 1905 90 730 0 -464 65 357 10 2214 2854 90 0 82 -465 345 15 20 1242 1882 90 0 370 -466 125 245 -10 2762 3402 90 90 0 -467 52 369 30 1833 2473 90 0 51 -468 449 140 20 490 1130 90 0 30 -469 430 310 30 936 1576 90 0 966 -470 109 325 -40 2768 3408 90 565 0 -471 446 139 -20 397 1037 90 134 0 -472 229 214 20 41 681 90 0 383 -473 197 301 10 73 713 90 0 590 -474 146 245 20 456 1096 90 0 973 -475 401 368 -30 424 1064 90 566 0 -476 116 259 -20 2373 3013 90 481 0 -477 374 55 -40 2552 3192 90 457 0 -478 249 251 20 2796 3436 0 0 1011 -479 325 490 10 683 1323 90 0 692 -480 59 159 10 863 1503 90 0 493 -481 186 177 20 1121 1761 90 0 476 -482 319 229 10 2052 2692 90 0 844 -483 26 269 -30 765 1405 90 7 0 -484 53 139 -10 974 1614 90 275 0 -485 471 154 20 1079 1719 90 0 796 -486 301 247 -20 2998 3638 90 646 0 -487 388 220 20 1183 1823 90 0 56 -488 235 81 20 1210 1850 90 0 771 -489 347 479 -20 2149 2789 90 364 0 -490 367 59 -10 2929 3569 90 650 0 -491 261 370 30 829 1469 90 0 53 -492 441 287 -20 2675 3315 90 123 0 -493 44 153 -10 1755 2395 90 480 0 -494 263 351 10 1305 1945 90 0 907 -495 444 157 10 215 855 90 0 49 -496 374 17 -40 1685 2325 90 223 0 -497 448 295 -10 2484 3124 90 498 0 -498 446 297 10 1992 2632 90 0 497 -499 347 40 30 290 930 90 0 909 -500 318 493 10 585 1225 90 0 874 -501 399 352 10 1020 1660 90 0 357 -502 51 364 10 1647 2287 90 0 412 -503 250 217 40 2294 2934 90 0 329 -504 107 225 -40 200 840 90 277 0 -505 173 208 -10 1641 2281 90 886 0 -506 204 189 -20 2138 2778 90 593 0 -507 399 379 -10 2720 3360 90 537 0 -508 79 346 -10 2910 3550 90 87 0 -509 360 338 10 140 780 90 0 580 -510 390 17 30 1213 1853 90 0 244 -511 207 337 -10 565 1205 90 911 0 -512 409 361 30 817 1457 90 0 262 -513 206 377 20 319 959 90 0 962 -514 429 294 -30 1703 2343 90 520 0 -515 375 31 20 1945 2585 0 0 1002 -516 426 80 -30 482 1122 90 345 0 -517 74 374 -10 2422 3062 90 255 0 -518 408 20 30 279 919 90 0 935 -519 239 369 -20 1571 2211 90 890 0 -520 420 308 30 469 1109 90 0 514 -521 254 357 -10 1772 2412 90 403 0 -522 53 297 -20 2982 3622 90 22 0 -523 434 382 -10 2010 2650 90 541 0 -524 204 171 -20 718 1358 90 635 0 -525 173 169 10 1318 1958 90 0 557 -526 190 332 20 366 1006 90 0 585 -527 274 231 30 1886 2526 90 0 830 -528 207 194 10 2233 2873 90 0 414 -529 315 232 10 2513 3153 90 0 686 -530 425 87 20 239 879 90 0 5 -531 312 64 -10 342 982 90 932 0 -532 129 244 -20 2668 3308 90 344 0 -533 278 230 10 1226 1866 90 0 324 -534 351 75 10 1914 2554 90 0 395 -535 185 293 10 690 1330 90 0 428 -536 364 364 -20 1990 2630 90 682 0 -537 432 369 10 1907 2547 90 0 507 -538 128 249 20 1103 1743 90 0 548 -539 221 179 20 129 769 90 0 60 -540 194 296 20 410 1050 90 0 23 -541 413 350 10 1317 1957 90 0 523 -542 214 372 10 703 1343 90 0 292 -543 379 229 -10 805 1445 90 267 0 -544 91 298 -10 1773 2413 90 705 0 -545 226 120 30 132 772 90 0 555 -546 344 46 -20 1420 2060 90 738 0 -547 238 84 -20 1394 2034 90 210 0 -548 138 276 -20 1675 2315 90 538 0 -549 346 487 10 1568 2208 90 0 456 -550 95 160 10 179 819 90 0 658 -551 103 266 30 822 1462 90 0 893 -552 98 286 30 1097 1737 90 0 828 -553 77 172 -30 2736 3376 90 721 0 -554 147 199 30 114 754 90 0 597 -555 210 98 -30 481 1121 90 545 0 -556 428 292 -10 1611 2251 90 4 0 -557 121 236 -10 1794 2434 90 525 0 -558 336 479 -10 1958 2598 90 120 0 -559 203 369 10 601 1241 90 0 61 -560 296 232 -10 1028 1668 90 942 0 -561 87 369 10 201 841 90 0 459 -562 247 88 30 1684 2324 90 0 216 -563 104 246 10 1113 1753 90 0 135 -564 67 302 -10 2253 2893 90 116 0 -565 114 296 40 143 783 90 0 470 -566 394 356 30 178 818 90 0 475 -567 192 306 20 1283 1923 90 0 35 -568 16 285 -10 2252 2892 90 978 0 -569 419 310 10 562 1202 90 0 375 -570 389 221 10 1092 1732 90 0 980 -571 129 264 20 2521 3161 90 0 150 -572 172 483 30 664 1304 90 0 206 -573 325 251 20 1185 1825 90 0 447 -574 151 436 10 2146 2786 90 0 433 -575 263 91 20 159 799 90 0 1 -576 401 15 20 445 1085 90 0 598 -577 253 382 -10 2850 3490 90 354 0 -578 247 89 -30 1775 2415 90 343 0 -579 283 229 30 1131 1771 90 0 36 -580 366 341 -10 313 953 90 509 0 -581 392 213 20 1852 2492 90 0 328 -582 167 304 20 99 739 90 0 754 -583 477 154 10 1266 1906 90 0 65 -584 234 383 10 1859 2499 90 0 775 -585 199 327 -20 2819 3459 90 526 0 -586 140 220 30 563 1203 90 0 987 -587 144 266 30 107 747 90 0 964 -588 432 105 -30 2952 3592 90 853 0 -589 368 325 30 139 779 90 0 934 -590 202 386 -10 144 784 90 473 0 -591 325 246 10 1280 1920 90 0 368 -592 430 86 20 2526 3166 90 0 355 -593 200 195 20 1945 2585 90 0 506 -594 440 295 30 1896 2536 90 0 624 -595 77 287 -10 1665 2305 90 41 0 -596 187 362 20 1546 2186 90 0 751 -597 131 207 -30 759 1399 90 554 0 -598 405 5 -20 546 1186 90 576 0 -599 125 226 -30 1149 1789 90 252 0 -600 254 335 -10 2773 3413 90 794 0 -601 212 168 20 620 1260 90 0 101 -602 281 279 20 474 1114 90 0 901 -603 326 241 20 1375 2015 90 0 968 -604 152 241 20 553 1193 90 0 872 -605 71 139 -30 567 1207 90 963 0 -606 46 277 10 349 989 90 0 212 -607 393 13 -30 1118 1758 90 165 0 -608 87 454 -20 642 1282 90 659 0 -609 86 359 -20 2988 3628 90 307 0 -610 220 192 20 65 705 90 0 183 -611 426 279 -20 2872 3512 90 46 0 -612 131 267 -10 2332 2972 90 425 0 -613 200 297 30 313 953 90 0 878 -614 299 442 10 1664 2304 90 0 200 -615 265 218 -20 2189 2829 90 417 0 -616 398 231 -10 2056 2696 90 26 0 -617 312 74 -30 2509 3149 90 779 0 -618 99 307 -30 2474 3114 90 100 0 -619 22 283 30 1073 1713 90 0 304 -620 67 160 10 2450 3090 90 0 315 -621 390 42 -10 2348 2988 90 706 0 -622 44 279 -40 256 896 90 363 0 -623 200 182 10 913 1553 90 0 25 -624 458 303 -30 2291 2931 90 594 0 -625 298 438 10 327 967 90 0 927 -626 62 301 20 2990 3630 90 0 925 -627 112 251 -20 1393 2033 90 420 0 -628 184 354 30 1736 2376 90 0 300 -629 140 180 20 2769 3409 90 0 21 -630 269 428 -10 905 1545 90 981 0 -631 123 206 10 1645 2285 0 0 1012 -632 36 284 10 1458 2098 90 0 186 -633 272 233 -20 1507 2147 90 748 0 -634 320 231 -30 2144 2784 90 330 0 -635 211 180 20 518 1158 90 0 524 -636 114 169 -10 2372 3012 90 897 0 -637 245 239 -20 2693 3333 90 284 0 -638 117 204 -20 1458 2098 90 316 0 -639 316 254 -20 510 1150 90 387 0 -640 169 443 -10 260 900 90 776 0 -641 212 96 -20 664 1304 90 12 0 -642 119 285 -20 2823 3463 90 848 0 -643 71 163 -10 2545 3185 90 914 0 -644 78 361 10 2980 3620 90 0 873 -645 354 219 -10 3076 3716 90 276 0 -646 389 233 20 2247 2887 90 0 486 -647 90 391 10 301 941 90 0 915 -648 209 307 10 1571 2211 90 0 882 -649 363 351 -20 2683 3323 90 374 0 -650 405 47 10 255 895 90 0 490 -651 278 329 10 83 723 90 0 352 -652 261 371 20 738 1378 90 0 390 -653 302 470 20 1987 2627 90 0 157 -654 373 205 40 130 770 90 0 902 -655 381 20 -10 1588 2228 90 727 0 -656 90 277 30 422 1062 90 0 839 -657 46 341 -30 2419 3059 90 167 0 -658 50 138 -10 1649 2289 90 550 0 -659 61 437 20 265 905 90 0 608 -660 331 252 -10 894 1534 90 325 0 -661 440 81 20 2425 3065 0 0 1003 -662 384 206 -10 499 1139 90 389 0 -663 232 87 -20 1264 1904 90 712 0 -664 59 471 20 1244 1884 90 0 703 -665 174 304 20 93 733 90 0 769 -666 106 248 20 1206 1846 90 0 334 -667 410 287 -10 2980 3620 90 870 0 -668 206 313 -10 1851 2491 90 862 0 -669 412 367 20 720 1360 90 0 879 -670 412 300 -30 275 915 90 835 0 -671 206 295 -10 2569 3209 90 948 0 -672 329 459 -10 2645 3285 90 175 0 -673 177 436 20 199 839 90 0 379 -674 266 264 30 363 1003 90 0 967 -675 308 235 -20 2895 3535 90 159 0 -676 260 330 -10 2963 3603 90 31 0 -677 49 136 -10 1465 2105 90 992 0 -678 356 28 -10 760 1400 90 70 0 -679 428 384 -20 2204 2844 90 689 0 -680 220 362 -20 1091 1731 90 28 0 -681 437 61 -20 1848 2488 90 989 0 -682 365 360 20 1800 2440 90 0 536 -683 107 168 -30 2275 2915 90 955 0 -684 220 177 20 221 861 90 0 103 -685 347 21 -20 1146 1786 90 201 0 -686 293 245 -10 3141 3781 90 529 0 -687 267 436 -20 2767 3407 90 301 0 -688 216 96 -30 2326 2966 90 266 0 -689 383 351 20 167 807 90 0 679 -690 289 240 -20 699 1339 90 249 0 -691 129 185 -10 2574 3214 90 903 0 -692 291 450 -10 2465 3105 90 479 0 -693 387 21 10 1308 1948 90 0 205 -694 116 255 20 999 1639 90 0 59 -695 50 368 -30 1741 2381 90 398 0 -696 121 249 -10 2181 2821 90 270 0 -697 404 346 10 923 1563 90 0 79 -698 77 360 -20 2979 3619 90 57 0 -699 447 102 10 2938 3578 90 0 13 -700 366 16 -30 1738 2378 90 77 0 -701 348 16 30 1540 2180 90 0 952 -702 353 346 -20 2874 3514 90 105 0 -703 54 485 -20 1533 2173 90 664 0 -704 319 77 30 2318 2958 90 0 454 -705 83 282 10 1292 1932 90 0 544 -706 384 24 10 2361 3001 90 0 621 -707 52 469 -30 1147 1787 90 753 0 -708 199 200 -30 2705 3345 90 461 0 -709 273 234 -10 1416 2056 90 271 0 -710 16 281 10 2436 3076 90 0 6 -711 151 442 20 2242 2882 90 0 386 -712 223 114 20 138 778 90 0 663 -713 191 308 20 82 722 90 0 236 -714 448 297 -10 2392 3032 90 322 0 -715 386 28 20 2267 2907 90 0 759 -716 106 295 20 813 1453 90 0 961 -717 387 224 30 1277 1917 90 0 69 -718 96 377 10 199 839 90 0 741 -719 86 361 -20 2986 3626 90 152 0 -720 211 107 -20 291 931 90 172 0 -721 43 125 30 1363 2003 90 0 553 -722 369 351 20 598 1238 90 0 385 -723 388 228 -30 995 1635 90 756 0 -724 325 228 -20 1570 2210 90 318 0 -725 490 159 -20 1657 2297 90 396 0 -726 420 78 20 1158 1798 90 0 774 -727 396 4 10 833 1473 90 0 655 -728 222 317 -20 2175 2815 90 312 0 -729 389 198 20 303 943 90 0 813 -730 322 454 20 216 856 90 0 463 -731 241 391 30 2745 3385 90 0 182 -732 256 117 -30 2927 3567 90 926 0 -733 298 255 -10 48 688 90 921 0 -734 74 363 -20 2523 3163 90 129 0 -735 345 496 20 1167 1807 90 0 887 -736 167 169 -20 1414 2054 90 970 0 -737 23 306 20 1942 2582 90 0 113 -738 317 62 20 437 1077 90 0 546 -739 319 257 20 416 1056 90 0 430 -740 129 255 -30 2476 3116 90 27 0 -741 59 377 -10 1848 2488 90 718 0 -742 138 272 -10 1581 2221 90 393 0 -743 317 251 30 700 1340 90 0 215 -744 279 436 20 1279 1919 90 0 42 -745 371 207 -10 128 768 90 423 0 -746 263 372 -30 646 1286 90 67 0 -747 50 347 -10 2322 2962 90 229 0 -748 275 236 20 1323 1963 90 0 633 -749 334 47 20 219 859 90 0 455 -750 50 383 10 1649 2289 90 0 340 -751 170 338 -20 2044 2684 90 596 0 -752 245 109 -20 2849 3489 90 91 0 -753 69 475 30 949 1589 90 0 707 -754 54 372 -20 1751 2391 90 582 0 -755 198 334 20 1963 2603 90 0 239 -756 380 228 30 897 1537 90 0 723 -757 425 118 10 219 859 90 0 369 -758 80 398 10 586 1226 90 0 802 -759 366 57 -20 2836 3476 90 715 0 -760 67 463 30 344 984 90 0 972 -761 226 86 -10 2355 2995 90 380 0 -762 59 480 -20 1343 1983 90 801 0 -763 40 378 20 1146 1786 90 0 377 -764 250 367 -10 1873 2513 90 867 0 -765 157 436 20 2533 3173 90 0 177 -766 463 161 -10 2163 2803 90 908 0 -767 266 250 10 169 809 90 0 19 -768 51 162 -20 1973 2613 90 29 0 -769 194 353 -20 1131 1771 90 665 0 -770 383 41 20 2445 3085 90 0 319 -771 247 82 -20 1588 2228 90 488 0 -772 457 142 20 589 1229 90 0 48 -773 244 94 20 1555 2195 90 0 327 -774 441 63 -20 2034 2674 90 726 0 -775 244 371 -10 2070 2710 90 584 0 -776 174 444 10 208 848 90 0 640 -777 94 247 30 613 1253 90 0 74 -778 320 225 -20 1774 2414 90 64 0 -779 316 80 30 2412 3052 90 0 617 -780 155 447 -30 2432 3072 90 371 0 -781 211 308 -10 1663 2303 90 194 0 -782 297 442 -20 1572 2212 90 810 0 -783 200 342 10 757 1397 90 0 919 -784 44 325 -20 2941 3581 90 156 0 -785 438 60 -20 1940 2580 90 953 0 -786 80 374 20 259 899 90 0 76 -787 59 163 20 2071 2711 90 0 407 -788 236 92 -10 1970 2610 90 219 0 -789 414 66 30 1352 1992 90 0 72 -790 34 279 20 1266 1906 90 0 950 -791 475 156 -30 1173 1813 90 824 0 -792 404 310 20 165 805 90 0 411 -793 367 239 -20 2916 3556 90 819 0 -794 210 359 10 1328 1968 90 0 600 -795 133 278 -10 1770 2410 90 405 0 -796 446 169 -20 2945 3585 90 485 0 -797 188 356 -30 1642 2282 90 836 0 -798 312 252 20 605 1245 90 0 153 -799 69 485 -40 2018 2658 90 125 0 -800 413 353 -10 1410 2050 90 413 0 -801 54 446 20 277 917 90 0 762 -802 56 357 -10 1548 2188 90 758 0 -803 230 105 -10 2718 3358 90 247 0 -804 196 302 20 74 714 90 0 900 -805 391 373 -30 2820 3460 90 132 0 -806 101 295 -10 718 1358 90 37 0 -807 234 350 -20 2377 3017 90 170 0 -808 215 108 -10 2520 3160 90 406 0 -809 142 457 10 1353 1993 90 0 332 -810 283 425 20 618 1258 90 0 782 -811 77 397 10 679 1319 90 0 234 -812 105 317 -40 2669 3309 90 378 0 -813 382 213 -20 1475 2115 90 729 0 -814 213 76 -10 1060 1700 90 8 0 -815 417 56 20 1542 2182 90 0 131 -816 183 340 10 2437 3077 90 0 341 -817 123 242 -20 2950 3590 90 930 0 -818 475 136 20 789 1429 90 0 832 -819 377 246 20 2814 3454 90 0 793 -820 310 484 30 386 1026 90 0 178 -821 47 280 -20 205 845 90 833 0 -822 57 456 20 282 922 90 0 10 -823 313 266 20 133 773 90 0 303 -824 475 145 30 888 1528 90 0 791 -825 400 376 -30 522 1162 90 86 0 -826 290 416 30 170 810 90 0 279 -827 277 369 30 170 810 90 0 916 -828 91 303 -30 1959 2599 90 552 0 -829 194 301 30 126 766 90 0 296 -830 254 238 -30 2406 3046 90 527 0 -831 215 91 30 2050 2690 90 0 283 -832 500 162 -20 1848 2488 90 818 0 -833 56 287 20 197 837 90 0 821 -834 289 452 -30 2558 3198 90 242 0 -835 378 326 30 148 788 90 0 670 -836 197 350 30 946 1586 90 0 797 -837 243 88 20 1491 2131 90 0 920 -838 250 72 -20 885 1525 90 415 0 -839 101 290 -30 910 1550 90 656 0 -840 351 480 -30 1470 2110 90 991 0 -841 67 357 -20 2804 3444 90 462 0 -842 128 240 -10 3045 3685 90 880 0 -843 253 81 -10 786 1426 90 58 0 -844 307 227 -10 2613 3253 90 482 0 -845 233 441 -20 2985 3625 90 847 0 -846 311 47 -20 830 1470 90 922 0 -847 292 456 20 2278 2918 90 0 845 -848 183 187 20 1528 2168 90 0 642 -849 392 31 -10 2650 3290 90 259 0 -850 103 251 -10 1018 1658 90 108 0 -851 300 443 10 1756 2396 90 0 979 -852 420 295 10 1512 2152 90 0 85 -853 427 64 30 1052 1692 90 0 588 -854 372 354 -50 1701 2341 90 394 0 -855 101 263 -20 916 1556 90 337 0 -856 141 454 -20 1446 2086 90 951 0 -857 146 461 20 1257 1897 90 0 209 -858 298 430 30 229 869 90 0 218 -859 148 270 10 103 743 90 0 314 -860 76 287 -20 1574 2214 90 3 0 -861 308 55 30 631 1271 90 0 365 -862 143 257 10 261 901 90 0 668 -863 393 2 -30 739 1379 90 107 0 -864 385 28 -10 2046 2686 90 164 0 -865 204 291 -10 2663 3303 90 261 0 -866 132 272 -30 2054 2694 90 196 0 -867 206 379 10 227 867 90 0 764 -868 69 383 -10 2230 2870 90 33 0 -869 245 96 20 1463 2103 90 0 268 -870 431 301 10 1228 1868 90 0 667 -871 448 94 -10 2914 3554 90 450 0 -872 199 305 -20 1380 2020 90 604 0 -873 95 356 -10 2997 3637 90 644 0 -874 328 498 -10 873 1513 90 500 0 -875 108 222 -20 1257 1897 90 442 0 -876 341 26 10 1048 1688 90 0 894 -877 63 454 10 276 916 90 0 388 -878 222 357 -30 1277 1917 90 613 0 -879 416 364 -20 1698 2338 90 669 0 -880 127 278 10 1866 2506 90 0 842 -881 140 252 20 357 997 90 0 142 -882 218 298 -10 2466 3106 90 648 0 -883 432 87 -10 2618 3258 90 988 0 -884 216 300 -20 2373 3013 90 401 0 -885 438 72 10 858 1498 90 0 147 -886 184 178 10 1214 1854 90 0 505 -887 345 468 -20 2437 3077 90 735 0 -888 150 435 20 2055 2695 90 0 299 -889 395 365 30 185 825 90 0 195 -890 208 371 20 415 1055 90 0 519 -891 190 292 10 505 1145 90 0 310 -892 78 479 -20 849 1489 90 391 0 -893 104 198 -30 2063 2703 90 551 0 -894 346 13 -10 1446 2086 90 876 0 -895 47 388 20 953 1593 90 0 358 -896 315 57 -20 931 1571 90 88 0 -897 110 199 10 1967 2607 90 0 636 -898 323 60 10 1030 1670 90 0 435 -899 308 82 -20 2699 3339 90 44 0 -900 216 374 -20 795 1435 90 804 0 -901 326 253 -20 799 1439 90 602 0 -902 308 232 -40 2708 3348 90 654 0 -903 118 223 10 134 774 90 0 691 -904 149 444 -10 2335 2975 90 127 0 -905 95 395 30 212 852 90 0 199 -906 117 319 -20 2868 3508 90 440 0 -907 262 352 -10 1396 2036 90 494 0 -908 468 135 10 692 1332 90 0 766 -909 351 31 -30 573 1213 90 499 0 -910 361 15 20 1878 2518 90 0 404 -911 195 300 10 218 858 90 0 511 -912 397 27 -20 2148 2788 90 119 0 -913 179 311 -20 93 733 90 189 0 -914 77 133 10 469 1109 90 0 643 -915 66 397 -10 885 1525 90 647 0 -916 366 352 -30 2590 3230 90 827 0 -917 221 87 -20 1163 1803 90 453 0 -918 347 23 -20 860 1500 90 124 0 -919 176 358 -10 1835 2475 90 783 0 -920 229 78 -20 2256 2896 90 837 0 -921 272 246 10 22 662 90 0 733 -922 293 67 20 187 827 90 0 846 -923 140 265 40 1303 1943 90 0 191 -924 238 83 -40 1303 1943 90 203 0 -925 136 296 -20 3035 3675 90 626 0 -926 218 98 30 1762 2402 90 0 732 -927 290 440 -10 1381 2021 90 625 0 -928 29 302 -20 1845 2485 90 138 0 -929 290 425 30 179 819 90 0 338 -930 124 247 20 2855 3495 90 0 817 -931 442 287 -20 2584 3224 90 982 0 -932 294 64 10 191 831 90 0 531 -933 74 165 -20 2638 3278 90 449 0 -934 382 245 -30 2719 3359 90 589 0 -935 405 24 -30 274 914 90 518 0 -936 211 97 20 572 1212 90 0 965 -937 88 390 30 393 1033 90 0 360 -938 37 295 -10 1651 2291 90 193 0 -939 359 371 -30 2182 2822 90 78 0 -940 186 372 -20 1445 2085 90 974 0 -941 116 446 20 1658 2298 90 0 222 -942 293 249 10 43 683 90 0 560 -943 83 228 20 409 1049 90 0 944 -944 96 269 -20 725 1365 90 943 0 -945 179 284 30 791 1431 90 0 220 -946 368 219 -30 700 1340 90 280 0 -947 66 359 -20 2917 3557 90 426 0 -948 189 338 10 2714 3354 90 0 671 -949 163 277 10 3093 3733 0 0 1013 -950 5 296 -20 2146 2786 90 790 0 -951 152 478 20 775 1415 90 0 856 -952 366 34 -30 1846 2486 90 701 0 -953 429 80 20 575 1215 90 0 785 -954 464 178 10 2451 3091 90 0 81 -955 138 196 30 1753 2393 90 0 683 -956 87 481 10 2493 3133 0 0 1001 -957 425 99 20 231 871 90 0 233 -958 241 362 -40 2170 2810 90 245 0 -959 207 289 -10 2757 3397 90 237 0 -960 264 365 -30 1015 1655 90 187 0 -961 102 289 -20 1002 1642 90 716 0 -962 233 346 -20 2471 3111 90 513 0 -963 78 141 30 203 843 90 0 605 -964 196 348 -30 854 1494 90 587 0 -965 216 92 -20 2142 2782 90 936 0 -966 444 309 -30 2185 2825 90 469 0 -967 313 263 -30 226 866 90 674 0 -968 211 198 -20 2420 3060 90 603 0 -969 314 436 -20 1861 2501 90 227 0 -970 217 189 20 324 964 90 0 736 -971 197 178 20 818 1458 90 0 289 -972 60 497 -30 1637 2277 90 760 0 -973 206 312 -20 1760 2400 90 474 0 -974 197 351 20 1037 1677 90 0 940 -975 305 233 -20 2801 3441 90 321 0 -976 297 250 -30 3093 3733 90 400 0 -977 71 348 -20 2815 3455 90 71 0 -978 11 269 10 870 1510 90 0 568 -979 247 447 -10 2880 3520 90 851 0 -980 386 213 -10 1756 2396 90 570 0 -981 292 434 10 515 1155 90 0 630 -982 436 301 20 1133 1773 90 0 931 -983 145 221 20 468 1108 90 0 285 -984 224 96 40 1858 2498 90 0 240 -985 59 128 20 1256 1896 90 0 158 -986 489 150 -10 1558 2198 90 34 0 -987 152 225 -30 754 1394 90 586 0 -988 426 85 10 387 1027 90 0 883 -989 415 73 20 1255 1895 90 0 681 -990 440 70 10 2131 2771 90 0 392 -991 320 476 30 283 923 90 0 840 -992 57 132 10 1072 1712 90 0 677 -993 405 311 30 166 806 90 0 320 -994 109 250 10 1300 1940 90 0 452 -995 428 314 -20 752 1392 90 110 0 -996 40 288 -10 1553 2193 90 92 0 -997 175 282 10 886 1526 90 0 202 -998 298 456 -30 2092 2732 90 350 0 -999 208 101 10 387 1027 90 0 265 -1000 342 52 10 218 858 90 0 451 -1001 87 481 -10 2493 3133 90 956 0 -1002 375 31 -20 1945 2585 90 515 0 -1003 440 81 -20 2425 3065 90 661 0 -1004 484 161 -10 1456 2096 90 144 0 -1005 25 290 -30 2631 3271 90 154 0 -1006 154 458 -20 885 1525 90 278 0 -1007 69 346 -10 2722 3362 90 458 0 -1008 418 385 -30 2517 3157 90 93 0 -1009 325 75 -30 2130 2770 90 351 0 -1010 153 295 -20 3078 3718 90 256 0 -1011 249 251 -20 2796 3436 90 478 0 -1012 123 206 -10 1645 2285 90 631 0 -1013 163 277 -10 3093 3733 90 949 0 -1014 283 248 -30 33 673 90 445 0 diff --git a/jsprit-instances/instances/lilim/1000/LC2109.txt b/jsprit-instances/instances/lilim/1000/LC2109.txt deleted file mode 100644 index 458cb64a7..000000000 --- a/jsprit-instances/instances/lilim/1000/LC2109.txt +++ /dev/null @@ -1,1024 +0,0 @@ -250 700 1 -0 250 250 0 0 3914 0 0 0 -1 212 101 -10 2528 2955 90 788 0 -2 266 231 -30 1254 2779 90 527 0 -3 89 284 20 1341 1691 90 0 977 -4 430 298 -10 1219 2065 90 322 0 -5 435 77 -40 1065 1100 90 233 0 -6 25 293 20 2807 3281 90 0 784 -7 43 269 -10 567 968 90 606 0 -8 216 117 -20 311 707 90 539 0 -9 294 437 30 192 1518 90 0 227 -10 79 479 30 645 1510 90 0 664 -11 365 18 20 1588 2999 90 0 52 -12 225 125 20 127 697 90 0 453 -13 448 103 -10 2474 3578 90 190 0 -14 143 266 -20 126 839 90 189 0 -15 252 347 10 2543 3439 0 0 1010 -16 403 390 -10 1923 3356 90 311 0 -17 67 153 -30 500 1483 90 963 0 -18 90 168 -20 2762 3558 90 407 0 -19 302 235 20 610 1636 90 0 324 -20 259 355 -10 1096 2898 90 403 0 -21 149 183 -30 2528 3703 90 484 0 -22 19 297 -10 1721 3004 90 193 0 -23 209 358 30 1271 1842 90 0 584 -24 56 388 20 957 2784 90 0 741 -25 115 269 -20 2699 3374 90 191 0 -26 377 356 10 1534 2317 90 0 854 -27 113 229 -10 305 2100 90 393 0 -28 205 343 20 862 1102 90 0 194 -29 48 137 20 1467 2286 90 0 493 -30 467 157 20 1889 2886 90 0 372 -31 220 394 10 2611 3114 90 0 731 -32 436 54 -30 1547 2595 90 853 0 -33 54 357 10 1378 2175 90 0 199 -34 456 154 10 227 864 90 0 772 -35 216 307 -20 2072 3120 90 513 0 -36 280 224 -20 2082 2530 90 64 0 -37 90 270 -10 383 907 90 862 0 -38 166 452 20 364 995 90 0 951 -39 17 283 -20 2075 3253 90 212 0 -40 196 192 -20 1749 2591 90 971 0 -41 94 275 -20 333 765 90 855 0 -42 292 445 10 1620 1972 90 0 969 -43 329 471 -10 2513 3213 90 178 0 -44 326 57 20 983 1904 90 0 514 -45 95 466 10 2901 3307 90 0 388 -46 429 282 -30 2118 3643 90 320 0 -47 229 364 10 1915 3268 90 0 671 -48 457 160 -10 2015 3599 90 495 0 -49 452 154 30 299 525 90 0 179 -50 113 289 -30 142 993 90 587 0 -51 67 387 10 2330 2581 90 0 517 -52 368 17 -20 1905 2297 90 11 0 -53 341 367 30 2338 2883 90 0 649 -54 410 364 -10 1221 2622 90 339 0 -55 80 281 10 1459 2134 90 0 860 -56 321 224 -20 1690 2682 90 387 0 -57 73 395 20 719 1886 90 0 904 -58 259 76 10 513 1502 90 0 771 -59 121 203 -20 1392 2351 90 597 0 -60 118 256 10 2181 3017 90 0 740 -61 236 361 -30 1322 2263 90 613 0 -62 78 371 20 210 1804 90 0 470 -63 301 53 -20 925 1172 90 415 0 -64 382 197 20 353 1088 90 0 36 -65 491 160 -20 1970 2168 90 396 0 -66 453 164 -20 2298 3604 90 410 0 -67 277 371 30 284 1067 90 0 746 -68 272 212 20 1819 3002 90 0 615 -69 386 218 -10 1638 2324 90 389 0 -70 353 32 10 657 1313 90 0 465 -71 59 389 20 1469 2087 90 0 644 -72 414 62 10 1392 2140 90 0 871 -73 278 357 10 110 633 90 0 521 -74 101 179 -20 2045 2940 90 135 0 -75 396 234 20 1636 3304 90 0 349 -76 74 390 -10 262 1492 90 255 0 -77 332 55 30 211 1699 90 0 686 -78 272 365 30 180 1366 90 0 494 -79 418 355 -10 1931 2303 90 541 0 -80 216 380 -20 2313 2447 90 596 0 -81 440 173 -20 2388 3619 90 468 0 -82 89 358 -10 3272 3631 90 750 0 -83 66 491 -20 1700 2600 90 801 0 -84 317 234 -10 2334 2784 90 733 0 -85 439 297 -30 1765 2482 90 993 0 -86 394 367 30 223 697 90 0 413 -87 58 364 10 2165 2519 90 0 377 -88 290 75 20 179 998 90 0 427 -89 346 344 -20 2922 3661 90 260 0 -90 131 269 -10 1971 2965 90 891 0 -91 236 96 -20 1423 1945 90 917 0 -92 29 282 -10 1054 1927 90 821 0 -93 418 385 -30 2552 3122 90 132 0 -94 148 225 40 369 1017 90 0 968 -95 166 464 -30 606 1141 90 640 0 -96 266 373 10 258 1487 90 0 775 -97 201 273 30 54 490 90 0 895 -98 255 245 10 7 1158 90 0 499 -99 220 379 -10 2295 2653 90 253 0 -100 85 317 -10 2543 2831 90 243 0 -101 125 264 20 2490 3380 0 0 1019 -102 131 253 -20 2621 3157 90 442 0 -103 184 188 -20 638 2043 90 604 0 -104 128 209 -20 1167 1178 90 383 0 -105 373 364 -20 2915 3586 90 507 0 -106 389 342 10 604 1846 90 0 246 -107 420 20 30 286 1620 90 0 165 -108 132 218 10 122 1422 90 0 150 -109 32 256 10 434 1527 90 0 632 -110 406 339 20 179 578 90 0 512 -111 191 397 20 158 1293 90 0 628 -112 72 341 10 2413 3478 90 0 508 -113 35 308 30 2932 3372 90 0 626 -114 169 360 20 1733 2771 90 0 239 -115 222 381 20 2208 3130 90 0 157 -116 96 292 10 460 1424 90 0 695 -117 311 496 10 320 1296 90 0 489 -118 220 384 10 2374 3152 90 0 577 -119 259 243 20 11 818 90 0 727 -120 349 476 -20 2398 2729 90 874 0 -121 63 159 20 637 1541 90 0 992 -122 112 243 -10 1863 2938 90 228 0 -123 448 302 -20 1545 3269 90 966 0 -124 343 27 -20 1008 1545 90 201 0 -125 67 485 -10 1567 2926 90 972 0 -126 220 359 30 979 2029 90 0 794 -127 147 435 -10 1500 2883 90 758 0 -128 317 235 -10 2339 2961 90 325 0 -129 43 355 -20 556 2794 90 961 0 -130 368 340 10 148 1013 90 0 939 -131 450 72 -30 1990 3293 90 785 0 -132 400 364 30 188 1547 90 0 93 -133 355 480 20 1097 2294 90 0 366 -134 450 153 20 222 1104 90 0 954 -135 126 188 20 1691 2665 90 0 74 -136 380 223 10 1308 2081 90 0 487 -137 71 453 20 550 979 90 0 703 -138 54 287 -20 199 1464 90 833 0 -139 420 168 -10 2472 3636 90 796 0 -140 219 89 20 2368 3177 90 0 965 -141 189 327 10 98 1791 90 0 751 -142 191 309 10 1181 1839 90 0 300 -143 301 67 40 399 721 90 0 738 -144 484 161 10 1404 2148 90 0 975 -145 77 483 20 2433 2805 90 0 225 -146 241 375 -10 1546 2610 90 542 0 -147 428 64 -10 910 1651 90 757 0 -148 403 361 -40 1011 2053 90 825 0 -149 257 336 10 2778 3594 90 0 676 -150 131 241 -10 2539 3705 90 108 0 -151 63 166 -20 2271 2893 90 449 0 -152 71 368 -30 3083 3592 90 251 0 -153 272 228 -10 1595 2630 90 709 0 -154 25 290 -10 2335 3566 90 950 0 -155 441 157 10 212 1343 0 0 1004 -156 13 266 20 941 1626 90 0 737 -157 251 376 -20 2928 3605 90 115 0 -158 61 170 -20 2336 2640 90 658 0 -159 386 357 -10 1255 1770 90 303 0 -160 95 475 -20 2315 3551 90 207 0 -161 90 298 10 1393 2974 90 0 564 -162 71 388 20 896 2274 0 0 1016 -163 383 246 -20 2583 3312 90 531 0 -164 352 38 10 235 1588 90 0 244 -165 395 1 -30 628 1305 90 107 0 -166 120 210 -10 1041 1684 90 183 0 -167 46 383 -20 1022 1714 90 307 0 -168 202 198 30 1768 2949 90 0 708 -169 358 365 30 1821 2990 90 0 221 -170 191 352 20 117 1000 90 0 519 -171 470 152 30 857 1756 90 0 791 -172 228 124 20 127 408 90 0 265 -173 402 230 -10 1988 2575 90 898 0 -174 323 229 10 1432 2163 90 0 675 -175 331 486 -30 1640 2526 90 242 0 -176 112 208 -20 992 2371 90 599 0 -177 172 435 -10 2782 3501 90 209 0 -178 326 498 10 468 1735 90 0 43 -179 460 183 -30 2829 2905 90 49 0 -180 95 279 -20 157 1285 90 881 0 -181 76 456 -20 622 1099 90 659 0 -182 242 350 -20 2221 3560 90 845 0 -183 152 196 10 160 425 90 0 166 -184 268 351 10 1210 1850 90 0 245 -185 360 356 -20 2691 2934 90 580 0 -186 39 296 20 1541 2586 90 0 938 -187 262 368 30 968 1516 0 0 1021 -188 204 90 20 429 1918 90 0 752 -189 149 273 20 120 465 90 0 14 -190 446 86 10 2690 3569 90 0 13 -191 139 269 20 1382 2234 90 0 25 -192 483 170 -20 1956 2598 90 471 0 -193 39 278 10 1153 2209 90 0 22 -194 201 307 -20 1387 2199 90 28 0 -195 395 378 10 1187 2244 90 0 879 -196 139 262 -10 1142 1918 90 333 0 -197 176 447 20 210 1282 90 0 857 -198 67 380 20 1824 2893 90 0 734 -199 35 358 -10 1226 1928 90 33 0 -200 294 455 -10 2094 2919 90 279 0 -201 351 33 20 386 1216 90 0 124 -202 216 316 -30 2074 2724 90 292 0 -203 261 96 40 154 1370 90 0 295 -204 238 57 30 1148 1684 90 0 562 -205 383 18 -30 1618 1828 90 518 0 -206 152 460 -10 1169 1610 90 250 0 -207 94 479 20 2889 2932 90 0 160 -208 337 453 30 2475 3604 0 0 1003 -209 135 460 10 1447 2282 90 0 177 -210 260 104 20 146 1186 90 0 876 -211 337 63 -10 1827 2424 90 254 0 -212 32 247 20 600 1163 90 0 39 -213 394 205 10 150 1106 90 0 543 -214 95 294 10 398 1302 90 0 657 -215 253 241 -20 2383 3447 90 395 0 -216 223 90 -30 2382 3351 90 266 0 -217 64 473 10 822 1907 90 0 762 -218 275 431 10 638 2006 90 0 305 -219 261 84 -10 731 897 90 309 0 -220 176 296 20 953 1667 90 0 742 -221 361 349 -30 2994 3197 90 169 0 -222 168 433 -20 2635 3624 90 780 0 -223 394 10 -20 481 2016 90 598 0 -224 308 60 20 198 1651 90 0 852 -225 94 456 -20 2361 3566 90 145 0 -226 73 484 -30 2419 2632 90 760 0 -227 277 434 -30 1256 1757 90 9 0 -228 119 232 10 1833 2205 90 0 122 -229 78 375 -20 212 1453 90 786 0 -230 366 346 20 194 1262 90 0 269 -231 125 181 -30 2290 3306 90 431 0 -232 69 493 20 1532 2582 90 0 263 -233 432 80 40 454 1523 90 0 5 -234 72 391 10 908 2075 90 0 412 -235 85 486 30 2338 3097 90 0 956 -236 204 371 -10 374 1283 90 867 0 -237 173 328 10 2284 2837 90 0 948 -238 280 423 10 769 1293 90 0 600 -239 200 327 -20 2469 3733 90 114 0 -240 241 98 20 2842 3293 90 0 283 -241 96 356 10 186 781 90 0 257 -242 332 491 30 750 1832 90 0 175 -243 81 283 10 1260 2148 90 0 100 -244 373 22 -10 1931 2853 90 164 0 -245 255 371 -10 1701 2877 90 184 0 -246 358 359 -10 2353 3086 90 106 0 -247 216 93 -20 2191 2914 90 284 0 -248 73 360 -40 2521 3533 90 565 0 -249 305 212 -20 1205 1267 90 690 0 -250 151 462 10 1096 1869 90 0 206 -251 47 389 30 902 1463 90 0 152 -252 155 198 30 108 613 90 0 875 -253 152 457 10 746 1847 90 0 99 -254 329 48 10 1432 1839 90 0 211 -255 88 394 10 325 1289 90 0 76 -256 153 295 -10 2460 3718 90 544 0 -257 81 373 -10 232 1108 90 241 0 -258 163 453 10 494 1051 90 0 310 -259 378 25 -10 1822 3155 90 451 0 -260 401 385 20 2449 3438 90 0 89 -261 184 340 -20 2599 3096 90 432 0 -262 402 362 -30 1170 1712 90 889 0 -263 70 482 -20 1801 3061 90 232 0 -264 357 445 -10 2696 3602 90 549 0 -265 212 71 -20 882 1686 90 172 0 -266 231 81 30 1975 2990 90 0 216 -267 379 208 10 558 1271 90 0 662 -268 236 95 -10 1666 2728 90 641 0 -269 386 344 -20 948 1689 90 230 0 -270 189 200 -10 1543 2595 90 886 0 -271 296 253 10 375 1453 90 0 639 -272 73 303 10 2198 2757 90 0 458 -273 30 162 -10 1775 2589 90 422 0 -274 230 95 -10 1618 2340 90 720 0 -275 57 131 -10 766 2199 90 480 0 -276 379 245 -10 2454 3252 90 402 0 -277 107 221 -20 179 1050 90 382 0 -278 154 458 -20 786 1623 90 379 0 -279 290 417 10 171 998 90 0 200 -280 272 243 30 23 423 90 0 503 -281 94 130 10 279 1083 90 0 605 -282 222 356 -20 1625 1751 90 890 0 -283 243 108 -20 2818 3463 90 240 0 -284 224 93 20 2095 2447 90 0 247 -285 155 242 10 540 1392 90 0 506 -286 440 302 20 780 1939 90 0 498 -287 221 102 20 2914 2963 0 0 1017 -288 52 484 -20 1378 2145 90 707 0 -289 111 244 -20 2073 2545 90 424 0 -290 132 273 -10 1758 2808 90 473 0 -291 228 186 20 67 913 90 0 555 -292 221 374 30 809 1612 90 0 202 -293 406 286 -10 2551 3664 90 569 0 -294 390 9 30 1113 1573 90 0 655 -295 335 52 -40 1218 2465 90 203 0 -296 189 368 20 132 1330 90 0 428 -297 397 40 -10 2099 3042 90 381 0 -298 408 305 10 167 1607 90 0 520 -299 156 434 -10 2500 3390 90 574 0 -300 180 335 -10 1967 3355 90 142 0 -301 327 483 20 1742 2615 90 0 672 -302 363 62 -10 2384 3605 90 693 0 -303 375 342 10 845 1192 90 0 159 -304 16 280 10 2720 2974 90 0 399 -305 277 431 -10 1218 1610 90 218 0 -306 110 241 -10 2123 2309 90 627 0 -307 48 385 20 587 1590 90 0 167 -308 152 260 10 98 461 90 0 944 -309 255 120 10 130 1078 90 0 219 -310 214 382 -10 2259 2884 90 258 0 -311 414 384 10 2453 3032 90 0 16 -312 232 378 20 1839 2709 90 0 478 -313 80 141 30 201 1240 90 0 914 -314 188 330 -20 101 1324 90 441 0 -315 157 192 -20 2659 3715 90 629 0 -316 101 237 -10 1508 2314 90 850 0 -317 74 360 -30 2556 3316 90 552 0 -318 267 260 20 445 733 90 0 579 -319 378 46 -10 2322 3584 90 864 0 -320 420 311 30 452 1494 90 0 46 -321 384 217 -40 1680 2098 90 654 0 -322 418 300 10 175 1340 90 0 4 -323 356 77 -10 2189 2469 90 534 0 -324 253 244 -20 2314 3329 90 19 0 -325 323 258 10 1131 1685 90 0 128 -326 293 454 -10 2247 3134 90 625 0 -327 231 97 -40 2487 3448 90 984 0 -328 316 234 -20 2255 3228 90 603 0 -329 207 196 20 2298 2992 90 0 461 -330 321 228 30 1754 2805 90 0 529 -331 382 17 -10 1336 2293 90 935 0 -332 206 326 -40 2569 3737 90 386 0 -333 198 284 10 62 1139 90 0 196 -334 137 186 10 2772 3213 90 0 452 -335 229 396 -20 1722 3677 90 940 0 -336 268 235 -20 1416 2428 90 602 0 -337 95 243 20 160 1517 90 0 994 -338 297 430 -30 186 1143 90 826 0 -339 393 368 10 185 1396 90 0 54 -340 66 391 20 1003 2359 90 0 868 -341 189 339 50 2397 3488 90 0 585 -342 280 351 30 105 1263 90 0 807 -343 241 77 30 904 1706 90 0 831 -344 134 265 -10 2541 2950 90 997 0 -345 420 95 30 230 706 90 0 530 -346 111 279 30 141 607 90 0 806 -347 367 358 30 1823 2603 90 0 682 -348 239 373 10 1548 2422 90 0 865 -349 384 235 -20 2472 3033 90 75 0 -350 284 360 30 115 854 90 0 652 -351 325 75 30 2004 2896 90 0 899 -352 279 369 10 561 603 90 0 764 -353 340 449 -10 2296 3606 90 887 0 -354 275 448 -30 2784 3181 90 998 0 -355 447 88 -20 2828 3258 90 815 0 -356 314 279 10 70 742 90 0 931 -357 434 377 -20 2003 2847 90 475 0 -358 67 377 -40 1455 3076 90 459 0 -359 370 353 10 520 1131 90 0 702 -360 57 367 20 1700 2798 90 0 747 -361 332 486 20 1862 2122 90 0 840 -362 386 361 -10 972 2241 90 697 0 -363 55 282 40 197 1069 90 0 622 -364 317 467 20 227 893 90 0 820 -365 335 54 -10 1505 2361 90 406 0 -366 348 466 -20 1945 3382 90 133 0 -367 132 314 -10 2307 3690 90 812 0 -368 328 216 -20 1285 2699 90 980 0 -369 416 48 -20 1545 2376 90 726 0 -370 370 55 10 2911 3021 90 0 759 -371 149 434 -10 1832 2735 90 718 0 -372 466 169 -20 2125 3039 90 30 0 -373 141 267 -10 1288 2141 90 911 0 -374 258 350 -10 918 2886 90 960 0 -375 428 312 -20 662 1666 90 792 0 -376 211 188 10 341 1139 90 0 635 -377 50 343 -10 2260 3408 90 87 0 -378 107 311 -30 2808 2977 90 656 0 -379 178 441 20 204 1559 90 0 278 -380 232 85 10 1993 2784 0 0 1014 -381 391 23 10 2200 3356 90 0 297 -382 137 227 20 115 953 90 0 277 -383 161 203 20 100 1008 90 0 104 -384 363 212 30 3130 3577 90 0 486 -385 384 346 -50 1185 1637 90 394 0 -386 166 434 40 2354 3622 90 0 332 -387 274 248 20 24 1128 90 0 56 -388 156 421 -10 3369 3501 90 45 0 -389 346 211 10 103 940 90 0 69 -390 265 358 20 848 2016 90 0 884 -391 96 407 20 219 1030 90 0 888 -392 443 70 -10 2121 2968 90 988 0 -393 125 212 10 711 1823 90 0 27 -394 361 337 50 141 1661 90 0 385 -395 322 78 20 2054 3034 90 0 215 -396 481 156 20 1213 2148 90 0 65 -397 188 293 -30 590 1245 90 829 0 -398 76 408 30 685 1516 90 0 809 -399 130 304 -10 1886 3693 90 304 0 -400 378 363 30 1400 2258 90 0 536 -401 185 301 -20 1394 1426 90 713 0 -402 385 235 10 2035 3288 90 0 276 -403 261 350 10 1609 2008 90 0 20 -404 389 33 20 2157 3567 90 0 490 -405 151 214 10 221 962 90 0 414 -406 265 94 10 156 610 90 0 365 -407 65 164 20 2083 3268 90 0 18 -408 293 81 10 174 930 90 0 922 -409 363 55 -20 2968 3157 90 912 0 -410 465 176 20 2234 3124 90 0 66 -411 428 298 -10 1187 2280 90 870 0 -412 75 379 -10 1718 3577 90 234 0 -413 404 378 -30 661 1213 90 86 0 -414 203 203 -10 2440 3419 90 405 0 -415 259 88 20 296 955 90 0 63 -416 362 17 -20 1536 2391 90 749 0 -417 320 258 -20 70 1855 90 739 0 -418 59 358 20 1962 2915 90 0 947 -419 316 453 20 213 798 90 0 730 -420 225 192 20 63 1146 90 0 578 -421 140 206 30 118 1002 90 0 586 -422 83 151 10 194 1288 90 0 273 -423 366 196 10 127 351 90 0 717 -424 108 245 20 1601 2020 90 0 289 -425 129 267 -10 1866 3254 90 880 0 -426 57 379 20 726 1249 90 0 609 -427 329 56 -20 1095 1980 90 88 0 -428 213 363 -20 1088 1541 90 296 0 -429 76 391 -30 1154 1641 90 905 0 -430 330 259 30 640 1983 90 0 660 -431 136 217 30 457 1499 90 0 231 -432 165 333 20 2054 2868 90 0 261 -433 160 431 -10 3089 3578 90 811 0 -434 338 489 30 931 1844 90 0 456 -435 335 64 10 1316 2751 90 0 793 -436 412 361 10 1526 2130 90 0 537 -437 259 90 30 491 943 90 0 846 -438 265 77 20 830 994 90 0 861 -439 460 173 -30 1996 3601 90 824 0 -440 83 301 20 1929 2825 90 0 618 -441 201 331 20 94 1508 90 0 314 -442 118 214 20 136 1320 90 0 102 -443 395 30 -10 2579 3174 90 650 0 -444 125 444 -10 1451 2704 90 913 0 -445 283 248 30 33 563 90 0 743 -446 391 334 -30 358 1895 90 835 0 -447 212 215 -20 2762 3718 90 481 0 -448 276 428 20 635 1621 90 0 834 -449 96 152 20 182 1146 90 0 151 -450 425 85 -20 240 1237 90 957 0 -451 336 7 10 1573 1755 90 0 259 -452 196 219 -10 2781 3486 90 334 0 -453 210 94 -20 831 1323 90 12 0 -454 310 81 -20 2692 3161 90 575 0 -455 341 37 20 231 1483 90 0 678 -456 344 478 -30 2284 2468 90 434 0 -457 406 37 40 264 1378 90 0 510 -458 69 346 -10 2575 3508 90 272 0 -459 80 376 40 211 1741 90 0 358 -460 314 449 30 209 545 90 0 929 -461 209 201 -20 2425 3241 90 329 0 -462 88 379 20 655 884 90 0 763 -463 352 500 30 1406 1765 90 0 558 -464 65 357 -20 1707 3362 90 754 0 -465 345 15 -10 1276 1849 90 70 0 -466 125 245 20 2870 3294 0 0 1009 -467 52 369 30 2065 2242 90 0 802 -468 449 140 20 264 1356 90 0 81 -469 430 310 30 748 1765 90 0 714 -470 109 325 -20 2575 3602 90 62 0 -471 446 139 20 312 1123 90 0 192 -472 229 214 20 41 52 90 0 610 -473 197 301 10 73 1620 90 0 290 -474 146 245 20 104 1508 90 0 903 -475 401 368 20 301 1186 90 0 357 -476 116 259 -30 2221 3165 90 504 0 -477 374 55 -20 2453 3290 90 576 0 -478 249 251 -20 2856 3375 90 312 0 -479 325 490 -10 290 1717 90 500 0 -480 59 159 10 931 1435 90 0 275 -481 186 177 20 1043 1839 90 0 447 -482 319 229 10 2166 2579 90 0 634 -483 26 269 30 815 1356 90 0 522 -484 53 139 30 907 1681 90 0 21 -485 471 154 20 860 1938 90 0 766 -486 301 247 -30 2860 3773 90 384 0 -487 388 220 -10 1164 1842 90 136 0 -488 235 81 -30 987 2072 90 545 0 -489 347 479 -10 2240 2698 90 117 0 -490 367 59 -20 1945 3601 90 404 0 -491 261 370 30 578 1721 90 0 882 -492 441 287 40 2292 3630 90 0 976 -493 44 153 -20 1902 2248 90 29 0 -494 263 351 -30 994 2255 90 78 0 -495 444 157 10 215 576 90 0 48 -496 374 17 -30 1532 2479 90 918 0 -497 448 295 10 2413 3196 90 0 667 -498 446 297 -20 2113 2511 90 286 0 -499 347 40 -10 231 1334 90 98 0 -500 318 493 10 358 1452 90 0 479 -501 399 352 -30 1167 1514 90 566 0 -502 51 364 -20 1334 2601 90 716 0 -503 250 217 -30 2099 3129 90 280 0 -504 107 225 30 203 838 90 0 476 -505 173 208 -30 1585 2337 90 987 0 -506 204 189 -10 2222 2694 90 285 0 -507 399 379 20 2421 3627 90 0 105 -508 79 346 -10 2560 3628 90 112 0 -509 360 338 10 243 461 90 0 722 -510 390 17 -40 1406 1659 90 457 0 -511 207 337 20 681 1089 90 0 964 -512 409 361 -20 870 1403 90 110 0 -513 206 377 20 134 1356 90 0 35 -514 429 294 -20 1479 2566 90 44 0 -515 375 31 20 1466 3064 90 0 849 -516 426 80 20 244 1637 90 0 990 -517 74 374 -10 2479 3005 90 51 0 -518 408 20 30 279 1422 90 0 205 -519 239 369 -20 1496 2286 90 170 0 -520 420 308 -10 586 993 90 298 0 -521 254 357 -10 1562 2623 90 73 0 -522 53 297 -30 1986 3622 90 483 0 -523 434 382 30 1832 2829 90 0 679 -524 204 171 20 661 1415 90 0 761 -525 173 169 10 1172 2104 90 0 528 -526 190 332 20 514 857 90 0 755 -527 274 231 30 1750 2662 90 0 2 -528 207 194 -10 2003 3103 90 525 0 -529 315 232 -30 2406 3261 90 330 0 -530 425 87 -30 239 971 90 345 0 -531 312 64 20 274 1049 90 0 163 -532 129 244 -10 2395 3581 90 842 0 -533 278 230 -30 1163 1930 90 674 0 -534 351 75 10 2079 2389 90 0 323 -535 185 293 10 601 1419 90 0 795 -536 364 364 -30 1844 2775 90 400 0 -537 432 369 -10 1632 2821 90 436 0 -538 128 249 20 1083 1763 90 0 557 -539 221 179 20 163 735 90 0 8 -540 194 296 20 72 1830 90 0 923 -541 413 350 10 1171 2104 90 0 79 -542 214 372 10 986 1060 90 0 146 -543 379 229 -10 707 1543 90 213 0 -544 91 298 10 1926 2260 90 0 256 -545 226 120 30 132 1157 90 0 488 -546 344 46 30 1277 2203 90 0 704 -547 238 84 -20 1481 1947 90 924 0 -548 138 276 10 1614 2376 90 0 642 -549 346 487 10 1340 2437 90 0 264 -550 95 160 10 179 763 90 0 553 -551 103 266 30 630 1654 90 0 828 -552 98 286 30 1107 1727 90 0 317 -553 77 172 -10 2585 3526 90 550 0 -554 147 199 30 114 1531 90 0 983 -555 210 98 -20 256 1345 90 291 0 -556 428 292 10 1662 2199 0 0 1008 -557 121 236 -20 1576 2651 90 538 0 -558 336 479 -30 2079 2477 90 463 0 -559 203 369 -20 325 1517 90 590 0 -560 296 232 10 1146 1549 90 0 633 -561 87 369 -20 201 497 90 582 0 -562 247 88 -30 1411 2596 90 204 0 -563 104 246 10 1054 1812 90 0 666 -564 67 302 -10 2292 2854 90 161 0 -565 114 296 40 143 1192 90 0 248 -566 394 356 30 178 1252 90 0 501 -567 192 306 -10 1043 2163 90 651 0 -568 16 285 -20 2146 2998 90 928 0 -569 419 310 10 184 1579 90 0 293 -570 389 221 -10 1148 1675 90 745 0 -571 129 264 -20 2286 3396 90 665 0 -572 172 483 -20 677 1291 90 673 0 -573 325 251 -10 1015 1996 90 942 0 -574 151 436 10 1982 2951 90 0 299 -575 263 91 20 159 805 90 0 454 -576 401 15 20 363 1168 90 0 477 -577 253 382 -10 2672 3669 90 118 0 -578 247 89 -20 1862 2328 90 420 0 -579 283 229 -20 816 2087 90 318 0 -580 366 341 20 369 896 90 0 185 -581 392 213 -30 1945 2400 90 756 0 -582 167 304 20 99 814 90 0 561 -583 477 154 10 1010 2162 90 0 832 -584 234 383 -30 1876 2482 90 23 0 -585 199 327 -50 2828 3450 90 341 0 -586 140 220 -30 625 1141 90 421 0 -587 144 266 30 107 1069 90 0 50 -588 432 105 10 3469 3590 0 0 1002 -589 368 325 30 139 1635 90 0 669 -590 202 386 20 246 651 90 0 559 -591 325 246 -10 1091 2109 90 901 0 -592 430 86 -20 2217 3476 90 661 0 -593 200 195 -20 1559 2971 90 736 0 -594 440 295 -20 1561 2871 90 624 0 -595 77 287 10 1520 2450 0 0 1012 -596 187 362 20 1520 2211 90 0 80 -597 131 207 20 543 1616 90 0 59 -598 405 5 20 608 1123 90 0 223 -599 125 226 20 1408 1530 90 0 176 -600 254 335 -10 2833 3354 90 238 0 -601 212 168 20 504 1375 90 0 712 -602 281 279 20 505 1084 90 0 336 -603 326 241 20 1276 2115 90 0 328 -604 152 241 20 389 1357 90 0 103 -605 71 139 -10 371 1403 90 281 0 -606 46 277 10 405 933 90 0 7 -607 393 13 -30 745 2130 90 863 0 -608 87 454 40 709 1215 90 0 753 -609 86 359 -20 2635 3628 90 426 0 -610 220 192 -20 65 1095 90 472 0 -611 426 279 30 2750 3635 0 0 1013 -612 131 267 -30 2224 3080 90 866 0 -613 200 297 30 68 1232 90 0 61 -614 299 442 -20 1775 2194 90 744 0 -615 265 218 -20 2301 2718 90 68 0 -616 398 231 -10 1913 2840 90 723 0 -617 312 74 -10 2355 3304 90 932 0 -618 99 307 -20 2277 3311 90 440 0 -619 22 283 30 1236 1550 90 0 790 -620 67 160 10 2688 2852 90 0 643 -621 390 42 20 2126 3210 0 0 1006 -622 44 279 -40 208 1040 90 363 0 -623 200 182 -20 1042 1424 90 848 0 -624 458 303 20 2189 3032 90 0 594 -625 298 438 10 194 1126 90 0 326 -626 62 301 -30 2935 3630 90 113 0 -627 112 251 10 1274 2151 90 0 306 -628 184 354 -20 1432 2681 90 111 0 -629 140 180 20 2410 3694 90 0 315 -630 269 428 20 626 1823 90 0 927 -631 123 206 10 1456 2475 0 0 1022 -632 36 284 -10 1471 2084 90 109 0 -633 272 233 -10 1454 2201 90 560 0 -634 320 231 -10 1839 3090 90 482 0 -635 211 180 -10 371 1304 90 376 0 -636 114 169 -20 2107 3277 90 787 0 -637 245 239 -20 2397 3629 90 920 0 -638 117 204 30 1453 2103 90 0 683 -639 316 254 -10 618 1043 90 271 0 -640 169 443 30 461 699 90 0 95 -641 212 96 10 476 1492 90 0 268 -642 119 285 -10 2862 3424 90 548 0 -643 71 163 -10 2551 3179 90 620 0 -644 78 361 -20 2651 3620 90 71 0 -645 354 219 -20 3390 3519 90 819 0 -646 389 233 20 2039 3095 90 0 934 -647 90 391 10 213 1224 0 0 1005 -648 209 307 -30 1276 2506 90 872 0 -649 363 351 -30 2479 3527 90 53 0 -650 405 47 10 255 1038 90 0 443 -651 278 329 10 83 1205 90 0 567 -652 261 371 -30 592 1524 90 350 0 -653 302 470 20 1603 3011 90 0 847 -654 373 205 40 130 1466 90 0 321 -655 381 20 -30 1433 2382 90 294 0 -656 90 277 30 234 1251 90 0 378 -657 46 341 -10 2386 3093 90 214 0 -658 50 138 20 1876 2061 90 0 158 -659 61 437 20 265 1330 90 0 181 -660 331 252 -30 871 1556 90 430 0 -661 440 81 20 2277 3212 90 0 592 -662 384 206 -10 141 1631 90 267 0 -663 232 87 30 932 2236 90 0 837 -664 59 471 -30 1311 1817 90 10 0 -665 174 304 20 93 1013 90 0 571 -666 106 248 -10 901 2151 90 563 0 -667 410 287 -10 2200 3660 90 497 0 -668 206 313 -10 1812 2529 90 783 0 -669 412 367 -30 607 1473 90 589 0 -670 412 300 20 169 2097 90 0 995 -671 206 295 -10 2387 3391 90 47 0 -672 329 459 -20 2837 3092 90 301 0 -673 177 436 20 199 458 90 0 572 -674 266 264 30 335 1030 90 0 533 -675 308 235 -10 2917 3513 90 174 0 -676 260 330 -10 3041 3525 90 149 0 -677 49 136 10 1418 2152 90 0 768 -678 356 28 -20 354 1807 90 455 0 -679 428 384 -30 2209 2840 90 523 0 -680 220 362 -30 961 1861 90 900 0 -681 437 61 20 1523 2814 90 0 774 -682 365 360 -30 1509 2732 90 347 0 -683 107 168 -30 2398 2791 90 638 0 -684 220 177 20 78 1039 90 0 999 -685 347 21 20 956 1977 90 0 706 -686 293 245 -30 3021 3781 90 77 0 -687 267 436 -10 2940 3234 90 851 0 -688 216 96 10 2400 2892 90 0 732 -689 383 351 20 167 1003 90 0 916 -690 289 240 20 687 1350 90 0 249 -691 129 185 -30 2514 3273 90 955 0 -692 291 450 -10 2248 3322 90 981 0 -693 387 21 10 1197 2058 90 0 302 -694 116 255 20 779 1860 90 0 817 -695 50 368 -10 1690 2433 90 116 0 -696 121 249 20 2309 2694 90 0 930 -697 404 346 10 740 1745 90 0 362 -698 77 360 -10 2863 3619 90 841 0 -699 447 102 -20 2590 3578 90 989 0 -700 366 16 20 1823 2292 0 0 1001 -701 348 16 30 1497 2223 90 0 910 -702 353 346 -10 2985 3403 90 359 0 -703 54 485 -20 1693 2014 90 137 0 -704 319 77 -30 2601 2675 90 546 0 -705 83 282 10 1147 2078 90 0 906 -706 384 24 -20 2011 3351 90 685 0 -707 52 469 20 1105 1829 90 0 288 -708 199 200 -30 2573 3477 90 168 0 -709 273 234 10 1623 1849 90 0 153 -710 16 281 -10 2586 2926 90 978 0 -711 151 442 -10 2054 3071 90 915 0 -712 223 114 -20 138 1246 90 601 0 -713 191 308 20 82 1031 90 0 401 -714 448 297 -30 2134 3291 90 469 0 -715 386 28 20 1573 3564 90 0 770 -716 106 295 20 459 1807 90 0 502 -717 387 224 -10 863 2332 90 423 0 -718 96 377 10 199 926 90 0 371 -719 86 361 20 3081 3626 90 0 873 -720 211 107 10 163 1059 90 0 274 -721 43 125 -20 1289 2076 90 985 0 -722 369 351 -10 248 1589 90 509 0 -723 388 228 10 905 1724 90 0 616 -724 325 228 20 1472 2309 0 0 1018 -725 490 159 -20 1552 2402 90 818 0 -726 420 78 20 1053 1903 90 0 369 -727 396 4 -20 1055 1251 90 119 0 -728 222 317 30 2076 2914 90 0 959 -729 389 198 20 148 1176 90 0 946 -730 322 454 -20 216 1228 90 419 0 -731 241 391 -10 2807 3324 90 31 0 -732 256 117 -10 2825 3669 90 688 0 -733 298 255 10 48 923 90 0 84 -734 74 363 -20 2460 3226 90 198 0 -735 345 496 -30 1246 1729 90 991 0 -736 167 169 20 1235 2232 90 0 593 -737 23 306 -20 1743 2782 90 156 0 -738 317 62 -40 255 1260 90 143 0 -739 319 257 20 424 1047 90 0 417 -740 129 255 -10 2448 3145 90 60 0 -741 59 377 -20 1899 2436 90 24 0 -742 138 272 -20 1267 2535 90 220 0 -743 317 251 -30 681 1358 90 445 0 -744 279 436 20 1478 1720 90 0 614 -745 371 207 10 128 648 90 0 570 -746 263 372 -30 491 1441 90 67 0 -747 50 347 -20 2261 3023 90 360 0 -748 275 236 -10 1361 1924 90 767 0 -749 334 47 20 219 1207 90 0 416 -750 50 383 10 1732 2206 90 0 82 -751 170 338 -10 2064 2664 90 141 0 -752 245 109 -20 2964 3374 90 188 0 -753 69 475 -40 757 1781 90 608 0 -754 54 372 20 1023 3118 90 0 464 -755 198 334 -20 1622 2944 90 526 0 -756 380 228 30 567 1867 90 0 581 -757 425 118 10 219 342 90 0 147 -758 80 398 10 533 1279 90 0 127 -759 366 57 -10 2957 3355 90 370 0 -760 67 463 30 570 757 90 0 226 -761 226 86 -20 2291 3059 90 524 0 -762 59 480 -10 1302 2024 90 217 0 -763 40 378 -20 1170 1762 90 462 0 -764 250 367 -10 1740 2645 90 352 0 -765 157 436 -20 2138 3568 90 856 0 -766 463 161 -20 2005 2961 90 485 0 -767 266 250 10 181 796 90 0 748 -768 51 162 -10 1791 2794 90 677 0 -769 194 353 20 1216 1686 90 0 919 -770 383 41 -20 2116 3415 90 715 0 -771 247 82 -10 1368 2448 90 58 0 -772 457 142 -10 233 1632 90 34 0 -773 244 94 -20 1767 1983 90 869 0 -774 441 63 -20 1632 3076 90 681 0 -775 244 371 -10 1813 2967 90 96 0 -776 174 444 10 208 784 90 0 797 -777 94 247 -20 585 1280 90 943 0 -778 320 225 20 1257 2931 90 0 844 -779 316 80 30 2254 3209 90 0 830 -780 155 447 20 2447 3056 90 0 222 -781 211 308 -30 1369 2597 90 836 0 -782 297 442 20 1411 2374 90 0 979 -783 200 342 10 797 1356 90 0 668 -784 44 325 -20 3241 3280 90 6 0 -785 438 60 30 2095 2424 90 0 131 -786 80 374 20 279 878 90 0 229 -787 59 163 20 2249 2532 90 0 636 -788 236 92 10 2034 2546 90 0 1 -789 414 66 30 1368 1976 90 0 883 -790 34 279 -30 1481 1691 90 619 0 -791 475 156 -30 1404 1582 90 171 0 -792 404 310 20 165 1321 90 0 375 -793 367 239 -10 2628 3707 90 435 0 -794 210 359 -30 1191 2106 90 126 0 -795 133 278 -10 1538 2642 90 535 0 -796 446 169 10 2920 3609 90 0 139 -797 188 356 -10 1333 2590 90 776 0 -798 312 252 20 393 1456 90 0 902 -799 69 485 -30 2300 2377 90 892 0 -800 413 353 10 1176 2285 90 0 805 -801 54 446 20 343 391 90 0 83 -802 56 357 -30 1128 2608 90 467 0 -803 230 105 -10 2692 3384 90 843 0 -804 196 302 20 74 832 90 0 949 -805 391 373 -10 2695 3585 90 800 0 -806 101 295 -30 543 1534 90 346 0 -807 234 350 -30 2302 3092 90 342 0 -808 215 108 -30 2068 3612 90 926 0 -809 142 457 -30 1252 2094 90 398 0 -810 283 425 -30 567 1308 90 858 0 -811 77 397 10 446 1552 90 0 433 -812 105 317 10 2718 3260 90 0 367 -813 382 213 -20 1450 2140 90 896 0 -814 213 76 -20 996 1763 90 936 0 -815 417 56 20 1172 2553 90 0 355 -816 183 340 -40 1978 3535 90 973 0 -817 123 242 -20 2296 3697 90 694 0 -818 475 136 20 739 1479 90 0 725 -819 377 246 20 2316 3697 90 0 645 -820 310 484 -20 480 931 90 364 0 -821 47 280 10 341 624 90 0 92 -822 57 456 20 282 724 90 0 877 -823 313 266 20 68 838 90 0 982 -824 475 145 30 759 1657 90 0 439 -825 400 376 40 475 1210 90 0 148 -826 290 416 30 170 588 90 0 338 -827 277 369 30 264 716 90 0 962 -828 91 303 -30 1857 2701 90 551 0 -829 194 301 30 110 782 90 0 397 -830 254 238 -30 1703 3748 90 779 0 -831 215 91 -30 1699 3042 90 343 0 -832 500 162 -10 1756 2581 90 583 0 -833 56 287 20 197 1381 90 0 138 -834 289 452 -20 2254 3501 90 448 0 -835 378 326 30 148 1110 90 0 446 -836 197 350 30 1122 1411 90 0 781 -837 243 88 -30 1509 2112 90 663 0 -838 250 72 -20 967 1444 90 970 0 -839 101 290 -10 999 1462 90 859 0 -840 351 480 -20 1171 2408 90 361 0 -841 67 357 10 2418 3613 90 0 698 -842 128 240 10 3148 3582 90 0 532 -843 253 81 10 529 1682 90 0 803 -844 307 227 -20 2504 3361 90 778 0 -845 233 441 20 2468 3633 90 0 182 -846 311 47 -30 712 1589 90 437 0 -847 292 456 -20 2155 3041 90 653 0 -848 183 187 20 1054 2642 90 0 623 -849 392 31 -20 2515 3425 90 515 0 -850 103 251 10 1077 1599 90 0 316 -851 300 443 10 1886 2266 90 0 687 -852 420 295 -20 1478 2187 90 224 0 -853 427 64 30 1154 1589 90 0 32 -854 372 354 -10 1825 2216 90 26 0 -855 101 263 20 458 2013 90 0 41 -856 141 454 20 1465 2068 90 0 765 -857 146 461 -20 1128 2027 90 197 0 -858 298 430 30 186 1377 90 0 810 -859 148 270 10 103 328 90 0 839 -860 76 287 -10 1469 2319 90 55 0 -861 308 55 -20 382 1520 90 438 0 -862 143 257 10 107 1834 90 0 37 -863 393 2 30 424 1693 90 0 607 -864 385 28 10 1609 3123 90 0 319 -865 204 291 -10 2750 3217 90 348 0 -866 132 272 30 1676 3072 90 0 612 -867 206 379 10 136 1309 90 0 236 -868 69 383 -20 2406 2695 90 340 0 -869 245 96 20 1321 2245 90 0 773 -870 431 301 10 1081 2016 90 0 411 -871 448 94 -10 2970 3498 90 72 0 -872 199 305 30 1106 2294 90 0 648 -873 95 356 -20 3340 3637 90 719 0 -874 328 498 20 786 1601 90 0 120 -875 108 222 -30 1320 1834 90 252 0 -876 341 26 -20 880 1857 90 210 0 -877 63 454 -20 276 915 90 822 0 -878 222 357 30 981 2212 0 0 1020 -879 416 364 -10 1470 2565 90 195 0 -880 127 278 10 1902 2470 90 0 425 -881 140 252 20 110 1243 90 0 180 -882 218 298 -30 2319 3253 90 491 0 -883 432 87 -30 2402 3475 90 789 0 -884 216 300 -20 2249 3137 90 390 0 -885 438 72 -20 765 1592 90 953 0 -886 184 178 10 1178 1890 90 0 270 -887 345 468 10 2597 2916 90 0 353 -888 150 435 -20 2148 2602 90 391 0 -889 395 365 30 185 1571 90 0 262 -890 208 371 20 135 1335 90 0 282 -891 190 292 10 415 1236 90 0 90 -892 78 479 30 671 1666 90 0 799 -893 104 198 -10 1922 2844 90 897 0 -894 346 13 20 1245 2288 90 0 952 -895 47 388 -30 1015 1532 90 97 0 -896 315 57 20 863 1639 90 0 813 -897 110 199 10 1672 2902 90 0 893 -898 323 60 10 827 1872 90 0 173 -899 308 82 -30 2605 3433 90 351 0 -900 216 374 30 128 2131 90 0 680 -901 326 253 10 928 1309 90 0 591 -902 308 232 -20 2884 3171 90 798 0 -903 118 223 -20 134 1382 90 474 0 -904 149 444 -20 2066 3244 90 57 0 -905 95 395 30 212 988 90 0 429 -906 117 319 -10 2885 3492 90 705 0 -907 262 352 10 1106 2327 90 0 958 -908 468 135 10 695 1328 90 0 986 -909 351 31 -10 584 1202 90 1000 0 -910 361 15 -30 1810 2587 90 701 0 -911 195 300 10 208 867 90 0 373 -912 397 27 20 1861 3075 90 0 409 -913 179 311 10 93 788 90 0 444 -914 77 133 -30 208 1578 90 313 0 -915 66 397 10 847 1563 90 0 711 -916 366 352 -20 2461 3358 90 689 0 -917 221 87 20 1182 1784 90 0 91 -918 347 23 30 1108 1252 90 0 496 -919 176 358 -20 1742 2569 90 769 0 -920 229 78 20 1765 3388 90 0 637 -921 272 246 10 89 507 90 0 967 -922 293 67 -10 187 1432 90 408 0 -923 140 265 -20 957 2288 90 540 0 -924 238 83 20 1082 2165 90 0 547 -925 136 296 -30 2988 3702 90 945 0 -926 218 98 30 1435 2729 90 0 808 -927 290 440 -20 895 2508 90 630 0 -928 29 302 20 1523 2808 90 0 568 -929 290 425 -30 179 1381 90 460 0 -930 124 247 -20 2175 3698 90 696 0 -931 442 287 -10 2360 3448 90 356 0 -932 294 64 10 191 1579 90 0 617 -933 74 165 10 2620 3296 0 0 1011 -934 382 245 -20 2781 3297 90 646 0 -935 405 24 10 274 904 90 0 331 -936 211 97 20 526 1258 90 0 814 -937 88 390 30 214 1248 90 0 941 -938 37 295 -20 1361 2581 90 186 0 -939 359 371 -10 2163 2841 90 130 0 -940 186 372 20 1328 2203 90 0 335 -941 116 446 -30 1381 2575 90 937 0 -942 293 249 10 43 533 90 0 573 -943 83 228 20 466 993 90 0 777 -944 96 269 -10 341 1748 90 308 0 -945 179 284 30 919 1304 90 0 925 -946 368 219 -20 652 1388 90 729 0 -947 66 359 -20 3020 3454 90 418 0 -948 189 338 -10 2389 3679 90 237 0 -949 163 277 -20 2784 3733 90 804 0 -950 5 296 10 2207 2726 90 0 154 -951 152 478 -20 712 1478 90 38 0 -952 366 34 -20 1649 2683 90 894 0 -953 429 80 20 659 1132 90 0 885 -954 464 178 -20 2562 2980 90 134 0 -955 138 196 30 1763 2384 90 0 691 -956 87 481 -30 2105 3522 90 235 0 -957 425 99 20 231 935 90 0 450 -958 241 362 -10 2284 2695 90 907 0 -959 207 289 -30 2895 3259 90 728 0 -960 264 365 10 943 1727 90 0 374 -961 102 289 20 725 1918 90 0 129 -962 233 346 -30 2170 3411 90 827 0 -963 78 141 30 452 512 90 0 17 -964 196 348 -20 800 1548 90 511 0 -965 216 92 -20 1884 3039 90 140 0 -966 444 309 20 2004 3006 90 0 123 -967 313 263 -10 64 1044 90 921 0 -968 211 198 -40 2312 3167 90 94 0 -969 314 436 -10 1552 2810 90 42 0 -970 217 189 20 253 1034 90 0 838 -971 197 178 20 543 1733 90 0 40 -972 60 497 10 1698 2215 90 0 125 -973 206 312 40 1748 2412 90 0 816 -974 197 351 20 378 2337 0 0 1015 -975 305 233 -10 2564 3678 90 144 0 -976 297 250 -40 3048 3777 90 492 0 -977 71 348 -20 2628 3620 90 3 0 -978 11 269 10 850 1531 90 0 710 -979 247 447 -20 2880 3519 90 782 0 -980 386 213 20 1497 2656 90 0 368 -981 292 434 10 722 949 90 0 692 -982 436 301 -20 785 2122 90 823 0 -983 145 221 -30 434 1141 90 554 0 -984 224 96 40 1980 2376 90 0 327 -985 59 128 20 948 2205 90 0 721 -986 489 150 -10 1449 2307 90 908 0 -987 152 225 30 445 1702 90 0 505 -988 426 85 10 263 1152 90 0 392 -989 415 73 20 1339 1811 90 0 699 -990 440 70 -20 1525 3378 90 516 0 -991 320 476 30 338 869 90 0 735 -992 57 132 -20 1096 1688 90 121 0 -993 405 311 30 166 1060 90 0 85 -994 109 250 -20 1142 2098 90 337 0 -995 428 314 -20 502 1642 90 670 0 -996 40 288 20 1363 2383 0 0 1007 -997 175 282 10 761 1651 90 0 344 -998 298 456 30 2152 2671 90 0 354 -999 208 101 -20 154 1436 90 684 0 -1000 342 52 10 218 613 90 0 909 -1001 366 16 -20 1823 2292 90 700 0 -1002 432 105 -10 3469 3590 90 588 0 -1003 337 453 -30 2475 3604 90 208 0 -1004 441 157 -10 212 1343 90 155 0 -1005 90 391 -10 213 1224 90 647 0 -1006 390 42 -20 2126 3210 90 621 0 -1007 40 288 -20 1363 2383 90 996 0 -1008 428 292 -10 1662 2199 90 556 0 -1009 125 245 -20 2870 3294 90 466 0 -1010 252 347 -10 2543 3439 90 15 0 -1011 74 165 -10 2620 3296 90 933 0 -1012 77 287 -10 1520 2450 90 595 0 -1013 426 279 -30 2750 3635 90 611 0 -1014 232 85 -10 1993 2784 90 380 0 -1015 197 351 -20 378 2337 90 974 0 -1016 71 388 -20 896 2274 90 162 0 -1017 221 102 -20 2914 2963 90 287 0 -1018 325 228 -20 1472 2309 90 724 0 -1019 125 264 -20 2490 3380 90 101 0 -1020 222 357 -30 981 2212 90 878 0 -1021 262 368 -30 968 1516 90 187 0 -1022 123 206 -10 1456 2475 90 631 0 diff --git a/jsprit-instances/instances/lilim/1000/LR1101.txt b/jsprit-instances/instances/lilim/1000/LR1101.txt deleted file mode 100644 index 3d42abe45..000000000 --- a/jsprit-instances/instances/lilim/1000/LR1101.txt +++ /dev/null @@ -1,1056 +0,0 @@ -250 200 1 -0 250 250 0 0 1925 0 0 0 -1 171 34 -3 1153 1163 10 240 0 -2 67 190 -34 1183 1193 10 248 0 -3 80 400 10 1456 1466 10 0 860 -4 439 237 -2 949 959 10 169 0 -5 377 385 6 876 886 10 0 996 -6 449 428 -28 1257 1267 10 219 0 -7 342 481 -15 1450 1460 10 700 0 -8 466 149 16 1196 1206 0 0 1013 -9 83 290 -12 618 628 10 964 0 -10 251 63 14 997 1007 10 0 362 -11 328 491 -7 688 698 10 440 0 -12 260 472 33 1046 1056 10 0 662 -13 290 145 5 1292 1302 10 0 845 -14 266 221 9 33 43 10 0 434 -15 164 320 -21 1105 1115 10 45 0 -16 52 412 -22 1416 1426 10 243 0 -17 485 104 -17 804 814 10 268 0 -18 144 331 -29 941 951 10 585 0 -19 387 394 -29 1108 1118 10 130 0 -20 472 57 17 1305 1315 10 0 809 -21 343 276 15 96 106 10 0 714 -22 104 349 20 1019 1029 10 0 423 -23 28 467 -11 1353 1363 10 808 0 -24 91 427 -46 893 903 10 496 0 -25 429 476 23 583 593 10 0 228 -26 210 276 5 47 57 10 0 721 -27 58 39 12 1173 1183 10 0 144 -28 273 300 30 55 65 10 0 523 -29 41 232 16 215 225 10 0 657 -30 25 53 -8 1030 1040 10 364 0 -31 52 18 -16 867 877 10 275 0 -32 27 444 -13 1090 1100 10 886 0 -33 178 72 -19 767 777 10 930 0 -34 406 460 -28 729 739 10 334 0 -35 250 328 24 259 269 0 0 1004 -36 492 34 5 821 831 10 0 989 -37 412 100 1 523 533 10 0 359 -38 233 87 18 263 273 10 0 126 -39 60 5 -4 1054 1064 10 491 0 -40 406 408 -13 1466 1476 10 469 0 -41 245 42 24 557 567 10 0 643 -42 166 345 -36 1140 1150 10 690 0 -43 440 294 -10 970 980 10 215 0 -44 370 382 -13 894 904 10 705 0 -45 32 319 21 411 421 10 0 15 -46 480 136 22 256 266 10 0 974 -47 371 163 21 838 848 0 0 1041 -48 0 188 26 942 952 10 0 382 -49 438 5 18 559 569 10 0 221 -50 132 477 25 337 347 10 0 369 -51 203 211 -11 1316 1326 10 157 0 -52 2 264 -19 665 675 10 493 0 -53 231 167 15 85 95 10 0 189 -54 423 221 9 268 278 0 0 1021 -55 459 53 -9 1132 1142 10 193 0 -56 386 154 -28 1111 1121 10 351 0 -57 130 494 -11 769 779 10 80 0 -58 31 175 -18 257 267 10 140 0 -59 69 423 32 812 822 10 0 479 -60 352 241 5 802 812 10 0 787 -61 261 201 -26 1524 1534 10 645 0 -62 59 276 -18 902 912 10 719 0 -63 146 188 6 1245 1255 0 0 1040 -64 451 62 5 292 302 10 0 288 -65 299 285 -9 1264 1274 10 848 0 -66 142 372 18 162 172 10 0 251 -67 440 201 29 903 913 10 0 887 -68 219 210 14 50 60 10 0 165 -69 64 198 -11 1098 1108 10 824 0 -70 390 249 21 592 602 0 0 1008 -71 9 101 16 676 686 10 0 801 -72 424 288 -12 1067 1077 10 939 0 -73 77 372 19 211 221 10 0 717 -74 298 264 36 50 60 10 0 877 -75 405 454 -7 1313 1323 10 943 0 -76 407 35 -22 1298 1308 10 317 0 -77 225 369 38 121 131 10 0 150 -78 347 459 -15 489 499 10 790 0 -79 117 178 -23 1127 1137 10 807 0 -80 132 479 11 257 267 10 0 57 -81 201 66 -13 1177 1187 10 137 0 -82 245 176 -33 1245 1255 10 185 0 -83 470 138 -12 1399 1409 10 195 0 -84 115 296 -20 1539 1549 10 681 0 -85 348 476 -21 1207 1217 10 907 0 -86 43 210 20 210 220 10 0 336 -87 327 139 -24 1267 1277 10 864 0 -88 49 353 -13 1456 1466 10 698 0 -89 356 256 19 106 116 10 0 916 -90 335 99 -17 1228 1238 10 153 0 -91 363 34 19 282 292 10 0 576 -92 33 278 -16 1497 1507 10 836 0 -93 366 288 -19 694 704 10 741 0 -94 452 172 -7 618 628 10 725 0 -95 86 189 21 237 247 10 0 298 -96 262 369 -10 139 149 10 710 0 -97 218 403 -18 1329 1339 10 171 0 -98 218 12 3 554 564 10 0 227 -99 228 399 14 596 606 10 0 925 -100 492 188 33 725 735 10 0 109 -101 267 174 -28 1628 1638 10 965 0 -102 274 441 12 705 715 10 0 413 -103 210 113 28 700 710 10 0 632 -104 370 262 -13 1109 1119 10 827 0 -105 303 186 -11 1364 1374 10 987 0 -106 241 180 13 1705 1715 0 0 1042 -107 100 85 -22 361 371 10 515 0 -108 350 199 -12 1211 1221 10 510 0 -109 500 228 -33 792 802 10 100 0 -110 251 238 27 12 22 0 0 1022 -111 114 102 21 517 527 10 0 443 -112 345 146 -15 1449 1459 10 584 0 -113 21 146 -23 497 507 10 731 0 -114 330 147 -30 858 868 10 508 0 -115 476 61 36 459 469 10 0 561 -116 386 245 16 489 499 10 0 941 -117 201 278 13 56 66 10 0 404 -118 421 499 -25 1355 1365 10 550 0 -119 426 231 24 1038 1048 0 0 1023 -120 105 137 32 462 472 10 0 393 -121 64 437 11 928 938 10 0 224 -122 181 260 23 69 79 10 0 770 -123 413 391 8 227 237 10 0 578 -124 370 493 -10 581 591 10 879 0 -125 447 267 19 990 1000 10 0 861 -126 232 101 -18 356 366 10 38 0 -127 371 332 -36 540 550 10 223 0 -128 447 383 17 237 247 10 0 949 -129 325 147 -20 1197 1207 10 471 0 -130 489 437 29 717 727 10 0 19 -131 415 95 -30 1187 1197 10 467 0 -132 331 356 13 722 732 10 0 142 -133 374 346 27 431 441 10 0 794 -134 108 37 -2 559 569 10 573 0 -135 5 224 19 1065 1075 10 0 231 -136 93 413 17 226 236 10 0 961 -137 210 29 13 1061 1071 10 0 81 -138 136 265 12 114 124 10 0 884 -139 409 155 19 185 195 10 0 818 -140 111 178 18 156 166 10 0 58 -141 291 251 20 41 51 10 0 292 -142 322 290 -13 1489 1499 10 132 0 -143 57 183 -18 1110 1120 10 258 0 -144 181 185 -12 1624 1634 10 27 0 -145 7 382 -14 780 790 10 640 0 -146 425 448 9 804 814 10 0 722 -147 174 41 -14 1313 1323 10 338 0 -148 161 276 8 143 153 10 0 753 -149 398 49 21 802 812 0 0 1011 -150 210 379 -38 719 729 10 77 0 -151 60 231 -15 1036 1046 10 337 0 -152 453 360 13 230 240 10 0 512 -153 367 97 17 998 1008 10 0 90 -154 488 3 3 411 421 10 0 314 -155 44 115 24 246 256 10 0 534 -156 48 293 -22 286 296 10 160 0 -157 64 135 11 878 888 10 0 51 -158 65 62 -31 986 996 10 979 0 -159 404 207 -33 921 931 10 463 0 -160 68 303 22 231 241 10 0 156 -161 263 418 25 288 298 10 0 522 -162 147 30 -23 1119 1129 10 795 0 -163 384 149 18 1207 1217 0 0 1053 -164 340 416 36 331 341 10 0 374 -165 271 128 -14 356 366 10 68 0 -166 89 358 -26 1257 1267 10 858 0 -167 20 480 -30 580 590 10 677 0 -168 488 173 25 1220 1230 0 0 1005 -169 439 156 2 536 546 10 0 4 -170 389 156 -37 726 736 10 679 0 -171 111 392 18 1179 1189 10 0 97 -172 267 162 -20 1459 1469 10 854 0 -173 248 176 -14 1411 1421 10 281 0 -174 413 476 -33 1189 1199 10 912 0 -175 352 481 15 1295 1305 10 0 391 -176 264 135 1 889 899 10 0 821 -177 29 462 -5 1320 1330 10 284 0 -178 148 462 10 737 747 10 0 321 -179 44 140 -22 878 888 10 896 0 -180 414 378 23 505 515 10 0 559 -181 392 95 16 776 786 10 0 871 -182 216 341 19 664 674 10 0 239 -183 211 411 -11 1157 1167 10 900 0 -184 317 45 -11 668 678 10 368 0 -185 178 150 33 642 652 10 0 82 -186 428 302 27 1026 1036 10 0 810 -187 450 45 -20 514 524 10 684 0 -188 453 318 30 384 394 10 0 678 -189 186 135 -15 728 738 10 53 0 -190 11 403 18 353 363 10 0 504 -191 433 447 -26 804 814 10 727 0 -192 272 420 7 1396 1406 10 0 626 -193 429 59 9 469 479 10 0 55 -194 200 27 -12 535 545 10 403 0 -195 498 171 12 1266 1276 10 0 83 -196 487 320 -15 868 878 10 347 0 -197 45 166 -15 1023 1033 10 446 0 -198 490 276 33 248 258 10 0 269 -199 126 391 19 283 293 10 0 373 -200 92 18 8 1134 1144 0 0 1033 -201 293 228 19 48 58 10 0 756 -202 343 205 -15 777 787 10 218 0 -203 182 480 -12 375 385 10 462 0 -204 385 285 -21 878 888 10 712 0 -205 44 344 -22 1089 1099 10 367 0 -206 170 347 15 446 456 10 0 853 -207 457 492 7 518 528 10 0 310 -208 124 448 6 379 389 10 0 880 -209 398 210 31 153 163 10 0 454 -210 75 118 -16 419 429 10 361 0 -211 105 474 27 481 491 0 0 1019 -212 134 211 35 130 140 10 0 265 -213 211 248 26 39 49 0 0 1038 -214 212 186 -35 1732 1742 10 488 0 -215 492 335 10 838 848 10 0 43 -216 497 483 12 363 373 10 0 969 -217 440 436 18 902 912 10 0 828 -218 311 203 15 733 743 10 0 202 -219 491 369 28 740 750 10 0 6 -220 67 378 26 480 490 10 0 390 -221 383 17 -18 950 960 10 49 0 -222 7 82 25 422 432 10 0 552 -223 342 319 36 115 125 10 0 127 -224 78 406 -11 970 980 10 121 0 -225 103 123 -27 500 510 10 433 0 -226 241 38 -5 542 552 10 447 0 -227 224 3 -3 700 710 10 98 0 -228 436 467 -23 746 756 10 25 0 -229 438 488 18 337 347 10 0 437 -230 351 60 15 220 230 10 0 642 -231 13 214 -19 1364 1374 10 135 0 -232 429 67 16 742 752 10 0 952 -233 498 456 27 1416 1426 10 0 730 -234 135 400 -17 309 319 10 718 0 -235 215 293 13 55 65 10 0 312 -236 354 416 10 689 699 10 0 485 -237 294 421 -29 1585 1595 10 272 0 -238 208 445 22 1342 1352 10 0 619 -239 230 320 -19 1202 1212 10 182 0 -240 157 38 3 1058 1068 10 0 1 -241 441 100 31 883 893 10 0 711 -242 61 170 -7 1016 1026 10 492 0 -243 79 467 22 361 371 10 0 16 -244 365 190 -12 1487 1497 10 732 0 -245 282 1 -27 1052 1062 10 675 0 -246 124 111 15 799 809 10 0 976 -247 247 219 17 31 41 10 0 339 -248 28 180 34 396 406 10 0 2 -249 167 488 17 260 270 10 0 779 -250 442 289 25 201 211 10 0 568 -251 136 430 -18 720 730 10 66 0 -252 38 15 3 1101 1111 10 0 354 -253 246 314 -24 1455 1465 10 548 0 -254 176 200 17 578 588 10 0 290 -255 337 232 -16 1581 1591 10 506 0 -256 257 133 -15 872 882 10 948 0 -257 295 247 -24 1313 1323 10 967 0 -258 39 162 18 575 585 10 0 143 -259 79 257 26 963 973 10 0 525 -260 236 126 23 124 134 10 0 303 -261 259 498 -8 1085 1095 10 425 0 -262 180 162 -17 183 193 10 673 0 -263 53 466 9 345 355 10 0 418 -264 167 291 27 1644 1654 0 0 1024 -265 89 185 -35 610 620 10 212 0 -266 487 446 -23 1350 1360 10 594 0 -267 308 199 -13 1518 1528 10 984 0 -268 481 84 17 516 526 10 0 17 -269 495 227 -33 354 364 10 198 0 -270 397 57 17 1486 1496 0 0 1035 -271 372 39 -11 734 744 10 587 0 -272 278 450 29 1385 1395 10 0 237 -273 292 32 14 239 249 0 0 1007 -274 90 496 13 1405 1415 10 0 919 -275 68 53 16 749 759 10 0 31 -276 371 423 10 211 221 0 0 1044 -277 273 149 14 1513 1523 0 0 1017 -278 297 283 -26 1359 1369 10 407 0 -279 120 37 -27 785 795 10 448 0 -280 371 488 10 593 603 10 0 749 -281 206 174 14 810 820 10 0 173 -282 174 347 3 1025 1035 10 0 461 -283 330 281 -11 1340 1350 10 405 0 -284 67 451 5 1226 1236 10 0 177 -285 27 464 -18 1301 1311 10 375 0 -286 361 178 -27 982 992 10 575 0 -287 463 406 -25 867 877 10 995 0 -288 456 157 -5 1465 1475 10 64 0 -289 153 244 5 118 128 0 0 1052 -290 153 192 -17 876 886 10 254 0 -291 352 63 6 1188 1198 10 0 823 -292 371 71 -20 297 307 10 141 0 -293 163 472 9 663 673 0 0 1027 -294 448 495 40 394 404 0 0 1051 -295 282 10 -2 1272 1282 10 329 0 -296 66 163 -35 405 415 10 377 0 -297 314 205 -32 1537 1547 10 613 0 -298 83 169 -21 787 797 10 95 0 -299 221 291 9 56 66 10 0 384 -300 374 116 9 597 607 10 0 661 -301 418 269 3 1215 1225 10 0 530 -302 178 302 -22 897 907 10 517 0 -303 250 57 -23 758 768 10 260 0 -304 475 352 -13 320 330 10 872 0 -305 1 252 5 285 295 10 0 331 -306 286 356 30 111 121 10 0 451 -307 65 82 13 750 760 10 0 528 -308 154 392 9 171 181 10 0 408 -309 196 56 -21 619 629 10 819 0 -310 366 390 -7 1328 1338 10 207 0 -311 436 25 -23 1292 1302 10 892 0 -312 67 352 -13 383 393 10 235 0 -313 173 182 25 102 112 10 0 857 -314 390 34 -3 1070 1080 10 154 0 -315 18 225 -19 701 711 10 341 0 -316 57 43 15 1033 1043 10 0 895 -317 388 44 22 1141 1151 10 0 76 -318 269 112 -23 1273 1283 10 785 0 -319 374 260 -14 1781 1791 10 372 0 -320 291 213 23 1268 1278 0 0 1001 -321 178 420 -10 1081 1091 10 178 0 -322 389 255 15 795 805 10 0 743 -323 134 194 -17 1662 1672 10 940 0 -324 93 490 -18 389 399 10 582 0 -325 64 294 12 1111 1121 10 0 586 -326 493 111 26 551 561 10 0 406 -327 150 484 16 635 645 10 0 837 -328 235 316 -18 666 676 10 697 0 -329 239 15 2 614 624 10 0 295 -330 193 138 -23 671 681 10 606 0 -331 40 278 -5 1114 1124 10 305 0 -332 307 52 23 930 940 10 0 646 -333 161 416 -24 1021 1031 10 738 0 -334 381 457 28 481 491 10 0 34 -335 55 318 13 322 332 10 0 959 -336 80 279 -20 1168 1178 10 86 0 -337 48 162 15 227 237 10 0 151 -338 91 27 14 1192 1202 10 0 147 -339 288 70 -17 189 199 10 247 0 -340 177 404 -23 1272 1282 10 708 0 -341 10 237 19 626 636 10 0 315 -342 493 493 -4 866 876 10 822 0 -343 440 292 -18 950 960 10 906 0 -344 349 76 -10 1041 1051 10 494 0 -345 47 208 30 236 246 0 0 1020 -346 283 454 14 1275 1285 10 0 450 -347 486 324 15 780 790 10 0 196 -348 392 87 23 1193 1203 0 0 1009 -349 122 422 3 1467 1477 0 0 1047 -350 37 281 17 503 513 10 0 685 -351 413 127 28 841 851 10 0 56 -352 222 499 7 855 865 10 0 567 -353 211 446 -13 1133 1143 10 992 0 -354 30 7 -3 1199 1209 10 252 0 -355 398 341 -10 949 959 10 903 0 -356 26 67 15 1327 1337 10 0 603 -357 461 186 -29 1522 1532 10 602 0 -358 313 391 -34 160 170 10 656 0 -359 471 94 -1 1009 1019 10 37 0 -360 341 72 -5 815 825 10 652 0 -361 130 186 16 141 151 10 0 210 -362 257 57 -14 1236 1246 10 10 0 -363 94 344 26 692 702 0 0 1049 -364 6 53 8 597 607 10 0 30 -365 146 376 -22 244 254 10 489 0 -366 244 13 -18 1023 1033 10 507 0 -367 29 336 22 342 352 10 0 205 -368 306 42 11 487 497 10 0 184 -369 177 486 -25 1607 1617 10 50 0 -370 489 338 17 1407 1417 0 0 1032 -371 179 318 2 1131 1141 10 0 455 -372 344 203 14 177 187 10 0 319 -373 149 341 -19 414 424 10 199 0 -374 307 412 -36 414 424 10 164 0 -375 68 450 18 643 653 10 0 285 -376 420 80 24 1107 1117 10 0 633 -377 144 220 35 110 120 10 0 296 -378 497 54 -9 988 998 10 936 0 -379 80 458 30 381 391 10 0 762 -380 84 377 10 936 946 10 0 430 -381 332 382 -23 1020 1030 10 772 0 -382 6 196 -26 1213 1223 10 48 0 -383 104 28 -24 1483 1493 10 942 0 -384 224 320 -9 1294 1304 10 299 0 -385 87 3 13 1443 1453 0 0 1025 -386 149 214 7 492 502 10 0 449 -387 98 29 -14 1057 1067 10 791 0 -388 135 30 -26 484 494 10 702 0 -389 287 397 12 574 584 10 0 526 -390 107 374 -26 924 934 10 220 0 -391 355 485 -15 1489 1499 10 175 0 -392 51 286 -16 1469 1479 10 733 0 -393 49 118 -32 1081 1091 10 120 0 -394 159 226 16 94 104 10 0 829 -395 185 431 15 397 407 10 0 539 -396 262 92 25 640 650 10 0 917 -397 475 198 -31 845 855 10 736 0 -398 142 30 -14 1256 1266 10 441 0 -399 481 207 34 866 876 10 0 422 -400 174 122 -33 603 613 10 947 0 -401 35 263 27 280 290 0 0 1054 -402 24 71 -11 356 366 10 410 0 -403 173 65 12 458 468 10 0 194 -404 91 326 -13 973 983 10 117 0 -405 470 417 11 747 757 10 0 283 -406 397 153 -26 892 902 10 326 0 -407 295 283 26 903 913 10 0 278 -408 174 376 -9 1429 1439 10 308 0 -409 38 190 23 295 305 10 0 902 -410 16 68 11 296 306 10 0 402 -411 179 286 8 351 361 10 0 844 -412 244 422 -14 548 558 10 873 0 -413 250 441 -12 766 776 10 102 0 -414 497 18 10 1140 1150 0 0 1018 -415 195 111 -2 1008 1018 10 599 0 -416 26 221 -10 1006 1016 10 616 0 -417 442 5 -9 330 340 10 486 0 -418 44 496 -9 412 422 10 263 0 -419 448 404 -25 609 619 10 579 0 -420 471 427 -20 826 836 10 950 0 -421 460 424 -15 1465 1475 10 531 0 -422 461 195 -34 1405 1415 10 399 0 -423 146 313 -20 1205 1215 10 22 0 -424 19 273 -16 1027 1037 10 637 0 -425 245 461 8 659 669 10 0 261 -426 69 266 -29 768 778 10 863 0 -427 191 84 -13 877 887 10 724 0 -428 68 160 -26 1146 1156 10 588 0 -429 212 47 20 811 821 10 0 674 -430 80 337 -10 1129 1139 10 380 0 -431 412 478 -21 970 980 10 835 0 -432 225 488 28 646 656 10 0 850 -433 105 140 27 182 192 10 0 225 -434 389 43 -9 406 416 10 14 0 -435 177 156 25 177 187 10 0 800 -436 179 497 -13 1421 1431 10 670 0 -437 377 432 -18 841 851 10 229 0 -438 497 296 14 623 633 10 0 734 -439 152 476 45 533 543 10 0 688 -440 277 428 7 500 510 10 0 11 -441 64 5 14 1139 1149 10 0 398 -442 44 311 -7 417 427 10 544 0 -443 165 59 -21 953 963 10 111 0 -444 261 138 -12 628 638 10 971 0 -445 268 351 7 1685 1695 0 0 1010 -446 48 150 15 665 675 10 0 197 -447 215 79 5 234 244 10 0 226 -448 109 56 27 239 249 10 0 279 -449 171 188 -7 631 641 10 386 0 -450 284 457 -14 1509 1519 10 346 0 -451 274 442 -30 1076 1086 10 306 0 -452 33 286 -25 1556 1566 10 885 0 -453 112 433 29 245 255 10 0 476 -454 423 170 -31 523 533 10 209 0 -455 213 283 -2 1481 1491 10 371 0 -456 240 34 -30 1570 1580 10 780 0 -457 283 438 3 241 251 10 0 972 -458 324 99 10 348 358 10 0 847 -459 259 301 25 109 119 10 0 751 -460 189 402 -18 546 556 10 901 0 -461 215 282 -3 1450 1460 10 282 0 -462 166 440 12 207 217 10 0 203 -463 374 232 33 125 135 10 0 159 -464 339 113 -19 771 781 10 914 0 -465 335 46 18 1352 1362 10 0 889 -466 313 493 -12 1203 1213 10 817 0 -467 432 66 30 1081 1091 10 0 131 -468 76 462 18 966 976 10 0 768 -469 397 477 13 1226 1236 10 0 40 -470 196 489 -4 1040 1050 10 545 0 -471 354 156 20 842 852 10 0 129 -472 171 24 11 1393 1403 10 0 993 -473 187 73 18 302 312 10 0 761 -474 243 408 -13 1444 1454 10 856 0 -475 421 387 -14 811 821 10 929 0 -476 141 426 -29 541 551 10 453 0 -477 415 118 19 227 237 10 0 793 -478 240 255 -16 1621 1631 10 898 0 -479 162 388 -32 1136 1146 10 59 0 -480 413 493 -10 1228 1238 10 951 0 -481 69 414 -22 1273 1283 10 816 0 -482 273 70 36 629 639 10 0 962 -483 142 14 18 845 855 10 0 514 -484 185 434 -9 584 594 10 905 0 -485 360 294 -10 1428 1438 10 236 0 -486 265 240 9 18 28 10 0 417 -487 280 245 21 30 40 10 0 621 -488 87 51 35 524 534 10 0 214 -489 195 273 22 59 69 10 0 365 -490 422 498 -19 702 712 10 920 0 -491 95 64 4 776 786 10 0 39 -492 63 155 7 975 985 10 0 242 -493 24 259 19 380 390 10 0 52 -494 376 92 10 1001 1011 10 0 344 -495 83 300 -15 510 520 10 820 0 -496 72 477 46 288 298 10 0 24 -497 380 194 3 724 734 10 0 639 -498 72 227 -23 574 584 10 755 0 -499 238 123 -18 791 801 10 842 0 -500 188 119 44 985 995 10 0 980 -501 229 322 11 1670 1680 0 0 1014 -502 150 68 -28 433 443 10 680 0 -503 67 24 -16 1028 1038 10 813 0 -504 63 420 -18 530 540 10 190 0 -505 339 144 -33 1109 1119 10 686 0 -506 454 201 16 1315 1325 10 0 255 -507 158 24 18 621 631 10 0 366 -508 365 119 30 392 402 10 0 114 -509 440 284 25 862 872 10 0 716 -510 417 212 12 920 930 10 0 108 -511 404 439 3 249 259 10 0 760 -512 472 248 -13 844 854 10 152 0 -513 235 108 -31 1090 1100 10 623 0 -514 174 67 -18 1270 1280 10 483 0 -515 132 151 22 154 164 10 0 107 -516 217 207 -1 1392 1402 10 638 0 -517 162 306 22 129 139 10 0 302 -518 48 366 29 753 763 0 0 1012 -519 209 68 -30 1578 1588 10 628 0 -520 94 497 31 792 802 10 0 693 -521 110 122 -19 1519 1529 10 855 0 -522 274 403 -25 897 907 10 161 0 -523 421 386 -30 834 844 10 28 0 -524 399 175 13 757 767 10 0 826 -525 56 268 -26 1074 1084 10 259 0 -526 322 406 -12 839 849 10 389 0 -527 244 277 18 1311 1321 0 0 1034 -528 105 181 -13 1541 1551 10 307 0 -529 30 97 23 1220 1230 10 0 665 -530 359 246 -3 1433 1443 10 301 0 -531 498 457 15 923 933 10 0 421 -532 190 267 -21 1764 1774 10 547 0 -533 334 481 -19 340 350 10 763 0 -534 18 24 -24 638 648 10 155 0 -535 482 104 19 817 827 10 0 592 -536 460 328 13 229 239 10 0 554 -537 320 211 16 1003 1013 10 0 541 -538 494 165 -14 614 624 10 960 0 -539 167 445 -15 1422 1432 10 395 0 -540 340 291 22 480 490 10 0 713 -541 272 234 -16 1600 1610 10 537 0 -542 325 56 -12 806 816 10 692 0 -543 71 304 -20 699 709 10 804 0 -544 87 311 7 174 184 10 0 442 -545 207 487 4 699 709 10 0 470 -546 332 5 14 1043 1053 10 0 968 -547 161 275 21 1357 1367 10 0 532 -548 268 458 24 533 543 10 0 253 -549 175 352 -23 1675 1685 10 769 0 -550 398 476 25 428 438 10 0 118 -551 51 360 -12 1155 1165 10 737 0 -552 21 70 -25 781 791 10 222 0 -553 80 251 -13 314 324 10 629 0 -554 457 280 -13 1010 1020 10 536 0 -555 423 315 -24 190 200 10 986 0 -556 66 88 2 840 850 10 0 715 -557 479 387 13 407 417 10 0 894 -558 436 123 40 225 235 10 0 668 -559 286 244 -23 1294 1304 10 180 0 -560 449 190 -25 1150 1160 10 988 0 -561 456 113 -36 1237 1247 10 115 0 -562 480 152 26 1032 1042 10 0 648 -563 100 266 -4 480 490 10 748 0 -564 343 34 7 735 745 10 0 766 -565 374 306 -14 1004 1014 10 728 0 -566 13 465 31 784 794 10 0 571 -567 230 487 -7 1140 1150 10 352 0 -568 442 153 -25 1199 1209 10 250 0 -569 240 362 -4 1424 1434 10 982 0 -570 433 319 11 1386 1396 0 0 1029 -571 0 422 -31 831 841 10 566 0 -572 297 131 -32 1175 1185 10 927 0 -573 71 12 2 303 313 10 0 134 -574 44 440 -23 799 809 10 597 0 -575 447 184 27 434 444 10 0 286 -576 341 59 -19 800 810 10 91 0 -577 132 32 -12 794 804 10 683 0 -578 411 396 -8 930 940 10 123 0 -579 450 416 25 587 597 10 0 419 -580 323 34 -30 1325 1335 10 620 0 -581 244 368 -33 424 434 10 704 0 -582 90 477 18 277 287 10 0 324 -583 34 169 11 494 504 0 0 1045 -584 351 128 15 1263 1273 10 0 112 -585 71 282 29 652 662 10 0 18 -586 157 269 -12 1586 1596 10 325 0 -587 392 1 11 615 625 10 0 271 -588 39 153 26 808 818 10 0 428 -589 306 229 -13 1330 1340 10 973 0 -590 415 253 21 377 387 10 0 831 -591 92 76 -17 1149 1159 10 627 0 -592 437 98 -19 1124 1134 10 535 0 -593 12 367 -21 336 346 10 838 0 -594 448 414 23 1233 1243 10 0 266 -595 128 113 -37 373 383 10 655 0 -596 43 360 2 845 855 10 0 664 -597 102 422 23 236 246 10 0 574 -598 480 131 -32 698 708 10 953 0 -599 210 81 2 409 419 10 0 415 -600 432 2 20 477 487 10 0 660 -601 396 83 -26 1596 1606 10 752 0 -602 489 159 29 1438 1448 10 0 357 -603 56 75 -15 1448 1458 10 356 0 -604 66 31 -11 1058 1068 10 786 0 -605 460 117 14 530 540 10 0 735 -606 175 239 23 75 85 10 0 330 -607 217 333 -21 421 431 10 775 0 -608 62 375 16 359 369 10 0 956 -609 82 183 -8 1112 1122 10 966 0 -610 248 214 -20 1489 1499 10 634 0 -611 385 239 21 796 806 10 0 745 -612 371 315 -17 1176 1186 10 849 0 -613 333 163 32 1250 1260 10 0 297 -614 100 66 -22 1410 1420 10 798 0 -615 311 422 -9 998 1008 10 799 0 -616 153 235 10 98 108 10 0 416 -617 168 109 -7 214 224 10 667 0 -618 284 319 -23 827 837 10 811 0 -619 195 464 -22 1551 1561 10 238 0 -620 382 9 30 282 292 10 0 580 -621 325 210 -21 943 953 10 487 0 -622 366 334 5 420 430 10 0 672 -623 200 78 31 1003 1013 10 0 513 -624 351 5 -31 506 516 10 650 0 -625 197 202 -22 1214 1224 10 788 0 -626 270 337 -7 1793 1803 10 192 0 -627 125 65 17 798 808 10 0 591 -628 120 17 30 289 299 10 0 519 -629 84 255 13 292 302 10 0 553 -630 222 331 10 550 560 0 0 1039 -631 332 459 35 379 389 0 0 1028 -632 226 175 -28 1704 1714 10 103 0 -633 404 140 -24 1269 1279 10 376 0 -634 223 178 20 1146 1156 10 0 610 -635 330 308 24 1180 1190 10 0 694 -636 140 108 29 1081 1091 10 0 866 -637 34 239 16 229 239 10 0 424 -638 94 192 1 1090 1100 10 0 516 -639 458 213 -3 1138 1148 10 497 0 -640 13 314 14 254 264 10 0 145 -641 202 391 30 634 644 10 0 834 -642 339 41 -15 466 476 10 230 0 -643 224 56 -24 1196 1206 10 41 0 -644 345 431 12 355 365 10 0 852 -645 292 104 26 314 324 10 0 61 -646 318 99 -23 1223 1233 10 332 0 -647 46 248 9 824 834 10 0 985 -648 482 184 -26 1117 1127 10 562 0 -649 411 379 -12 1203 1213 10 899 0 -650 293 174 31 87 97 10 0 624 -651 169 305 21 172 182 10 0 937 -652 394 47 5 323 333 10 0 360 -653 323 29 7 1147 1157 0 0 1006 -654 65 343 -35 217 227 10 932 0 -655 158 179 37 116 126 10 0 595 -656 299 353 34 114 124 10 0 358 -657 9 233 -16 316 326 10 29 0 -658 330 138 18 1120 1130 0 0 1048 -659 48 412 -36 1042 1052 10 843 0 -660 385 17 -20 819 829 10 600 0 -661 382 110 -9 1122 1132 10 300 0 -662 336 493 -33 1503 1513 10 12 0 -663 181 441 25 552 562 10 0 840 -664 162 301 -2 1623 1633 10 596 0 -665 1 101 -23 1267 1277 10 529 0 -666 80 117 -28 834 844 10 703 0 -667 210 219 7 50 60 10 0 617 -668 404 59 -40 923 933 10 558 0 -669 288 439 16 283 293 10 0 776 -670 149 458 13 1174 1184 10 0 436 -671 257 391 -21 1643 1653 10 893 0 -672 405 349 -5 532 542 10 622 0 -673 191 215 17 68 78 10 0 262 -674 231 29 -20 1236 1246 10 429 0 -675 253 50 27 236 246 10 0 245 -676 441 177 -8 1011 1021 10 839 0 -677 5 445 30 321 331 10 0 167 -678 463 253 -30 1057 1067 10 188 0 -679 435 180 37 235 245 10 0 170 -680 198 85 28 273 283 10 0 502 -681 59 388 20 673 683 10 0 84 -682 373 418 -23 1269 1279 10 933 0 -683 142 80 12 502 512 10 0 577 -684 441 7 20 402 412 10 0 187 -685 33 268 -17 706 716 10 350 0 -686 355 174 33 725 735 10 0 505 -687 228 260 -12 1616 1626 10 915 0 -688 114 460 -45 1096 1106 10 439 0 -689 337 41 8 1012 1022 10 0 767 -690 154 374 36 947 957 10 0 42 -691 235 13 27 369 379 10 0 784 -692 303 78 12 179 189 10 0 542 -693 103 464 -31 1283 1293 10 520 0 -694 325 311 -24 1332 1342 10 635 0 -695 306 235 25 57 67 10 0 876 -696 382 360 26 188 198 10 0 814 -697 235 288 18 40 50 10 0 328 -698 0 356 13 1096 1106 10 0 88 -699 178 135 -32 1524 1534 10 781 0 -700 226 423 15 207 217 10 0 7 -701 15 11 -15 962 972 10 999 0 -702 144 35 26 239 249 10 0 388 -703 176 199 28 89 99 10 0 666 -704 247 306 33 56 66 10 0 581 -705 396 417 13 820 830 10 0 44 -706 289 220 19 49 59 10 0 773 -707 23 235 43 1033 1043 0 0 1015 -708 137 377 23 169 179 10 0 340 -709 400 71 17 1382 1392 0 0 1016 -710 261 359 10 109 119 10 0 96 -711 438 127 -31 951 961 10 241 0 -712 318 280 21 74 84 10 0 204 -713 333 293 -22 627 637 10 540 0 -714 436 295 -15 538 548 10 21 0 -715 62 94 -2 961 971 10 556 0 -716 495 355 -25 1253 1263 10 509 0 -717 13 394 -19 383 393 10 73 0 -718 172 292 17 102 112 10 0 234 -719 14 232 18 315 325 10 0 62 -720 437 90 12 595 605 0 0 1046 -721 214 274 -5 1379 1389 10 26 0 -722 420 383 -9 992 1002 10 146 0 -723 120 261 5 803 813 10 0 792 -724 179 75 13 750 760 10 0 427 -725 484 224 7 310 320 10 0 94 -726 214 245 8 36 46 0 0 1003 -727 395 474 26 397 407 10 0 191 -728 368 311 14 936 946 10 0 565 -729 199 203 20 1467 1477 10 0 796 -730 485 428 -27 1500 1510 10 233 0 -731 86 199 23 288 298 10 0 113 -732 447 272 12 394 404 10 0 244 -733 40 304 16 1155 1165 10 0 392 -734 475 267 -14 790 800 10 438 0 -735 482 141 -14 1021 1031 10 605 0 -736 489 274 31 544 554 10 0 397 -737 26 342 12 331 341 10 0 551 -738 139 438 24 224 234 10 0 333 -739 12 358 -23 1234 1244 10 742 0 -740 125 61 26 622 632 10 0 747 -741 360 284 19 677 687 10 0 93 -742 29 358 23 621 631 10 0 739 -743 285 247 -15 1285 1295 10 322 0 -744 248 386 22 388 398 10 0 851 -745 415 207 -21 910 920 10 611 0 -746 130 247 17 120 130 10 0 934 -747 172 66 -26 1313 1323 10 740 0 -748 92 259 4 409 419 10 0 563 -749 379 486 -10 682 692 10 280 0 -750 452 484 26 1288 1298 0 0 1002 -751 268 288 -25 1277 1287 10 459 0 -752 349 43 26 229 239 10 0 601 -753 225 269 -8 1281 1291 10 148 0 -754 50 383 20 270 280 10 0 859 -755 110 251 23 508 518 10 0 498 -756 461 182 -19 639 649 10 201 0 -757 255 487 -17 408 418 10 897 0 -758 133 202 -1 471 481 10 1000 0 -759 34 329 -21 1053 1063 10 777 0 -760 368 452 -3 680 690 10 511 0 -761 242 106 -18 1278 1288 10 473 0 -762 171 303 -30 1599 1609 10 379 0 -763 329 456 19 259 269 10 0 533 -764 490 286 -16 532 542 10 910 0 -765 61 214 4 352 362 10 0 867 -766 365 74 -7 858 868 10 564 0 -767 321 149 -8 1435 1445 10 689 0 -768 84 453 -18 1233 1243 10 468 0 -769 26 442 23 1354 1364 10 0 549 -770 180 283 -23 754 764 10 122 0 -771 394 322 12 1035 1045 10 0 957 -772 348 348 23 945 955 10 0 381 -773 309 161 -19 593 603 10 706 0 -774 385 58 24 415 425 10 0 778 -775 228 287 21 43 53 10 0 607 -776 312 453 -16 560 570 10 669 0 -777 35 344 21 873 883 10 0 759 -778 393 98 -24 763 773 10 774 0 -779 208 488 -17 488 498 10 249 0 -780 235 33 30 1347 1357 10 0 456 -781 140 137 32 580 590 10 0 699 -782 405 187 -27 1261 1271 10 812 0 -783 330 371 -26 569 579 10 983 0 -784 265 0 -27 906 916 10 691 0 -785 295 89 23 752 762 10 0 318 -786 3 23 11 401 411 10 0 604 -787 363 225 -5 866 876 10 60 0 -788 148 208 22 536 546 10 0 625 -789 466 362 -4 1162 1172 10 881 0 -790 267 290 15 43 53 10 0 78 -791 98 2 14 602 612 10 0 387 -792 131 246 -5 842 852 10 723 0 -793 418 75 -19 458 468 10 477 0 -794 366 260 -27 1530 1540 10 133 0 -795 138 28 23 1107 1117 10 0 162 -796 209 212 -20 1538 1548 10 729 0 -797 443 167 17 553 563 10 0 883 -798 156 65 22 1047 1057 10 0 614 -799 279 355 9 176 186 10 0 615 -800 206 172 -25 798 808 10 435 0 -801 32 94 -16 940 950 10 71 0 -802 301 239 31 52 62 10 0 978 -803 471 368 19 438 448 10 0 922 -804 133 273 20 119 129 10 0 543 -805 253 74 20 1360 1370 0 0 1026 -806 470 405 17 936 946 0 0 1050 -807 77 172 23 796 806 10 0 79 -808 77 465 11 275 285 10 0 23 -809 466 96 -17 1393 1403 10 20 0 -810 402 277 -27 1448 1458 10 186 0 -811 267 374 23 611 621 10 0 618 -812 450 194 27 635 645 10 0 782 -813 89 65 16 730 740 10 0 503 -814 429 389 -26 434 444 10 696 0 -815 202 28 22 944 954 0 0 1031 -816 46 389 22 267 277 10 0 481 -817 246 407 12 322 332 10 0 466 -818 452 110 -19 350 360 10 139 0 -819 213 185 21 74 84 10 0 309 -820 134 276 15 143 153 10 0 495 -821 262 97 -1 957 967 10 176 0 -822 469 489 4 565 575 10 0 342 -823 364 71 -6 1358 1368 10 291 0 -824 68 240 11 804 814 10 0 69 -825 494 468 31 362 372 10 0 998 -826 439 222 -13 990 1000 10 524 0 -827 386 225 13 929 939 10 0 104 -828 434 359 -18 1402 1412 10 217 0 -829 103 177 -16 636 646 10 394 0 -830 89 322 21 1031 1041 10 0 945 -831 307 249 -21 1387 1397 10 590 0 -832 30 155 -19 1290 1300 10 990 0 -833 401 314 -12 986 996 10 862 0 -834 217 357 -30 1430 1440 10 641 0 -835 373 421 21 247 257 10 0 431 -836 5 281 16 1382 1392 10 0 92 -837 173 474 -16 1295 1305 10 327 0 -838 36 301 21 219 229 10 0 593 -839 429 169 8 913 923 10 0 676 -840 195 450 -25 1496 1506 10 663 0 -841 95 382 -26 241 251 10 944 0 -842 225 121 18 743 753 10 0 499 -843 10 407 36 444 454 10 0 659 -844 221 269 -8 1275 1285 10 411 0 -845 264 180 -5 1691 1701 10 13 0 -846 168 59 6 376 386 10 0 997 -847 281 96 -10 1136 1146 10 458 0 -848 387 349 9 169 179 10 0 65 -849 398 329 17 167 177 10 0 612 -850 239 486 -28 1492 1502 10 432 0 -851 237 420 -22 1344 1354 10 744 0 -852 346 354 -12 827 837 10 644 0 -853 172 314 -15 555 565 10 206 0 -854 233 230 20 26 36 10 0 172 -855 79 80 19 1392 1402 10 0 521 -856 243 402 13 415 425 10 0 474 -857 117 110 -25 989 999 10 313 0 -858 66 314 26 194 204 10 0 166 -859 58 391 -20 892 902 10 754 0 -860 142 360 -10 1542 1552 10 3 0 -861 492 326 -19 1214 1224 10 125 0 -862 381 328 12 727 737 10 0 833 -863 62 236 29 568 578 10 0 426 -864 344 70 24 1156 1166 10 0 87 -865 151 81 -32 1568 1578 10 938 0 -866 240 240 -29 1710 1720 10 636 0 -867 46 163 -4 936 946 10 765 0 -868 455 168 21 877 887 10 0 975 -869 428 202 -18 914 924 10 911 0 -870 432 199 -14 649 659 10 928 0 -871 391 112 -16 1010 1020 10 181 0 -872 451 305 13 208 218 10 0 304 -873 214 311 14 70 80 10 0 412 -874 465 367 -9 1037 1047 10 954 0 -875 164 473 26 306 316 10 0 946 -876 364 173 -25 190 200 10 695 0 -877 274 261 -36 1717 1727 10 74 0 -878 133 455 25 818 828 10 0 909 -879 351 481 10 332 342 10 0 124 -880 115 395 -6 825 835 10 208 0 -881 297 304 4 71 81 10 0 789 -882 7 194 29 961 971 0 0 1043 -883 409 255 -17 1532 1542 10 797 0 -884 87 213 -12 636 646 10 138 0 -885 60 246 25 190 200 10 0 452 -886 3 471 13 721 731 10 0 32 -887 418 251 -29 1207 1217 10 67 0 -888 153 362 7 1171 1181 0 0 1030 -889 323 77 -18 1415 1425 10 465 0 -890 143 158 12 148 158 10 0 963 -891 351 148 30 471 481 10 0 921 -892 426 38 23 619 629 10 0 311 -893 226 316 21 70 80 10 0 671 -894 347 192 -13 1498 1508 10 557 0 -895 102 6 -15 1468 1478 10 316 0 -896 41 120 22 706 716 10 0 179 -897 247 443 17 340 350 10 0 757 -898 218 271 16 1584 1594 10 0 478 -899 376 385 12 184 194 10 0 649 -900 241 402 11 1035 1045 10 0 183 -901 213 399 18 244 254 10 0 460 -902 32 191 -23 596 606 10 409 0 -903 441 374 10 233 243 10 0 355 -904 376 113 -13 524 534 10 931 0 -905 215 434 9 203 213 10 0 484 -906 499 316 18 632 642 10 0 343 -907 318 497 21 864 874 10 0 85 -908 256 441 34 191 201 10 0 913 -909 174 397 -25 1255 1265 10 878 0 -910 468 360 16 284 294 10 0 764 -911 287 256 18 37 47 10 0 869 -912 448 397 33 876 886 10 0 174 -913 352 487 -34 912 922 10 908 0 -914 253 118 19 557 567 10 0 464 -915 159 299 12 1026 1036 10 0 687 -916 351 233 -19 1433 1443 10 89 0 -917 268 113 -25 690 700 10 396 0 -918 164 332 -27 1290 1300 10 958 0 -919 88 484 -13 1501 1511 10 274 0 -920 360 488 19 326 336 10 0 490 -921 343 166 -30 886 896 10 891 0 -922 497 266 -19 758 768 10 803 0 -923 138 406 -7 1226 1236 10 977 0 -924 420 224 10 439 449 10 0 991 -925 231 410 -14 1246 1256 10 99 0 -926 199 438 3 1370 1380 10 0 981 -927 219 215 32 46 56 10 0 572 -928 365 274 14 117 127 10 0 870 -929 481 454 14 330 340 10 0 475 -930 187 61 19 555 565 10 0 33 -931 372 97 13 224 234 10 0 904 -932 187 263 35 64 74 10 0 654 -933 371 427 23 968 978 10 0 682 -934 74 215 -17 239 249 10 746 0 -935 375 145 12 939 949 10 0 955 -936 365 28 9 278 288 10 0 378 -937 118 314 -21 348 358 10 651 0 -938 60 29 32 1373 1383 10 0 865 -939 478 300 12 900 910 10 0 72 -940 33 152 17 1330 1340 10 0 323 -941 347 184 -16 1089 1099 10 116 0 -942 94 40 24 1078 1088 10 0 383 -943 290 328 7 154 164 10 0 75 -944 96 346 26 195 205 10 0 841 -945 97 288 -21 1294 1304 10 830 0 -946 176 470 -26 557 567 10 875 0 -947 206 97 33 458 468 10 0 400 -948 210 133 15 699 709 10 0 256 -949 489 457 -17 326 336 10 128 0 -950 418 399 20 448 458 10 0 420 -951 392 491 10 1143 1153 10 0 480 -952 437 19 -16 1024 1034 10 232 0 -953 495 83 32 451 461 10 0 598 -954 468 352 9 778 788 10 0 874 -955 390 120 -12 1014 1024 10 935 0 -956 80 357 -16 540 550 10 608 0 -957 394 310 -12 1109 1119 10 771 0 -958 61 441 27 554 564 10 0 918 -959 52 303 -13 451 461 10 335 0 -960 391 202 14 148 158 10 0 538 -961 36 451 -17 899 909 10 136 0 -962 276 84 -36 691 701 10 482 0 -963 130 140 -12 204 214 10 890 0 -964 16 287 12 281 291 10 0 9 -965 292 136 28 791 801 10 0 101 -966 53 204 8 1065 1075 10 0 609 -967 359 287 24 115 125 10 0 257 -968 309 29 -14 1304 1314 10 546 0 -969 473 491 -12 423 433 10 216 0 -970 273 255 18 1502 1512 0 0 1037 -971 263 153 12 422 432 10 0 444 -972 328 458 -3 778 788 10 457 0 -973 401 164 13 631 641 10 0 589 -974 480 119 -22 638 648 10 46 0 -975 488 96 -21 1076 1086 10 868 0 -976 149 98 -15 1175 1185 10 246 0 -977 49 437 7 437 447 10 0 923 -978 440 77 -31 923 933 10 802 0 -979 43 135 31 236 246 10 0 158 -980 188 151 -44 1307 1317 10 500 0 -981 175 422 -3 1456 1466 10 926 0 -982 48 437 4 814 824 10 0 569 -983 334 403 26 174 184 10 0 783 -984 372 115 13 374 384 10 0 267 -985 111 192 -9 1209 1219 10 647 0 -986 357 290 24 114 124 10 0 555 -987 331 134 11 1134 1144 10 0 105 -988 495 199 25 347 357 10 0 560 -989 441 60 -5 1469 1479 10 36 0 -990 51 89 19 1218 1228 10 0 832 -991 452 206 -10 502 512 10 924 0 -992 195 386 13 146 156 10 0 353 -993 172 24 -11 1462 1472 10 472 0 -994 408 318 15 653 663 0 0 1036 -995 410 399 25 244 254 10 0 287 -996 413 345 -6 1228 1238 10 5 0 -997 215 129 -6 1129 1139 10 846 0 -998 380 350 -31 876 886 10 825 0 -999 19 38 15 857 867 10 0 701 -1000 166 247 1 84 94 10 0 758 -1001 291 213 -23 1268 1278 10 320 0 -1002 452 484 -26 1288 1298 10 750 0 -1003 214 245 -8 36 46 10 726 0 -1004 250 328 -24 259 269 10 35 0 -1005 488 173 -25 1220 1230 10 168 0 -1006 323 29 -7 1147 1157 10 653 0 -1007 292 32 -14 239 249 10 273 0 -1008 390 249 -21 592 602 10 70 0 -1009 392 87 -23 1193 1203 10 348 0 -1010 268 351 -7 1685 1695 10 445 0 -1011 398 49 -21 802 812 10 149 0 -1012 48 366 -29 753 763 10 518 0 -1013 466 149 -16 1196 1206 10 8 0 -1014 229 322 -11 1670 1680 10 501 0 -1015 23 235 -43 1033 1043 10 707 0 -1016 400 71 -17 1382 1392 10 709 0 -1017 273 149 -14 1513 1523 10 277 0 -1018 497 18 -10 1140 1150 10 414 0 -1019 105 474 -27 481 491 10 211 0 -1020 47 208 -30 236 246 10 345 0 -1021 423 221 -9 268 278 10 54 0 -1022 251 238 -27 12 22 10 110 0 -1023 426 231 -24 1038 1048 10 119 0 -1024 167 291 -27 1644 1654 10 264 0 -1025 87 3 -13 1443 1453 10 385 0 -1026 253 74 -20 1360 1370 10 805 0 -1027 163 472 -9 663 673 10 293 0 -1028 332 459 -35 379 389 10 631 0 -1029 433 319 -11 1386 1396 10 570 0 -1030 153 362 -7 1171 1181 10 888 0 -1031 202 28 -22 944 954 10 815 0 -1032 489 338 -17 1407 1417 10 370 0 -1033 92 18 -8 1134 1144 10 200 0 -1034 244 277 -18 1311 1321 10 527 0 -1035 397 57 -17 1486 1496 10 270 0 -1036 408 318 -15 653 663 10 994 0 -1037 273 255 -18 1502 1512 10 970 0 -1038 211 248 -26 39 49 10 213 0 -1039 222 331 -10 550 560 10 630 0 -1040 146 188 -6 1245 1255 10 63 0 -1041 371 163 -21 838 848 10 47 0 -1042 241 180 -13 1705 1715 10 106 0 -1043 7 194 -29 961 971 10 882 0 -1044 371 423 -10 211 221 10 276 0 -1045 34 169 -11 494 504 10 583 0 -1046 437 90 -12 595 605 10 720 0 -1047 122 422 -3 1467 1477 10 349 0 -1048 330 138 -18 1120 1130 10 658 0 -1049 94 344 -26 692 702 10 363 0 -1050 470 405 -17 936 946 10 806 0 -1051 448 495 -40 394 404 10 294 0 -1052 153 244 -5 118 128 10 289 0 -1053 384 149 -18 1207 1217 10 163 0 -1054 35 263 -27 280 290 10 401 0 diff --git a/jsprit-instances/instances/lilim/1000/LR11010.txt b/jsprit-instances/instances/lilim/1000/LR11010.txt deleted file mode 100644 index c18ef2aed..000000000 --- a/jsprit-instances/instances/lilim/1000/LR11010.txt +++ /dev/null @@ -1,1040 +0,0 @@ -250 200 1 -0 250 250 0 0 1925 0 0 0 -1 171 34 -3 1101 1215 10 240 0 -2 67 190 -32 1104 1272 10 151 0 -3 80 400 -32 1425 1497 10 418 0 -4 439 237 -29 881 1026 10 67 0 -5 377 385 -12 804 958 10 899 0 -6 449 428 -20 1193 1331 10 191 0 -7 342 481 -15 1407 1503 10 175 0 -8 466 149 -19 1157 1246 10 538 0 -9 83 290 -26 573 673 10 495 0 -10 251 63 14 923 1081 10 0 362 -11 328 491 -25 609 777 10 550 0 -12 260 472 -3 988 1113 10 457 0 -13 290 145 5 1263 1331 10 0 101 -14 266 221 9 33 123 10 0 541 -15 164 320 -36 1070 1150 10 690 0 -16 52 412 -16 1371 1471 10 859 0 -17 485 104 21 759 859 10 0 975 -18 144 331 -26 882 1011 10 220 0 -19 387 394 -25 1044 1182 10 649 0 -20 472 57 -10 1253 1366 10 414 0 -21 343 276 15 96 204 10 0 967 -22 104 349 20 943 1106 0 0 1034 -23 28 467 34 1301 1415 10 0 177 -24 91 427 -27 840 956 10 958 0 -25 429 476 23 525 651 10 0 480 -26 210 276 5 47 149 10 0 769 -27 58 39 -28 1113 1242 10 31 0 -28 273 300 30 55 183 10 0 459 -29 41 232 -4 209 338 10 765 0 -30 25 53 -11 974 1096 10 402 0 -31 52 18 28 835 909 10 0 27 -32 27 444 -18 1032 1158 10 190 0 -33 178 72 23 698 846 10 0 214 -34 406 460 2 698 771 10 0 682 -35 250 328 24 199 328 10 0 856 -36 492 34 -9 798 853 10 193 0 -37 412 100 1 478 579 10 0 241 -38 233 87 18 198 338 10 0 724 -39 60 5 18 999 1118 10 0 383 -40 406 408 -28 1411 1532 10 334 0 -41 245 42 24 523 602 10 0 81 -42 166 345 -11 1092 1197 10 479 0 -43 440 294 -7 892 1059 10 725 0 -44 370 382 -23 859 938 10 578 0 -45 32 319 21 345 486 10 0 739 -46 480 136 -14 256 404 10 818 0 -47 371 163 21 781 905 10 0 56 -48 0 188 -11 860 1035 10 583 0 -49 438 5 18 490 638 10 0 131 -50 132 477 25 264 421 10 0 211 -51 203 211 20 1239 1404 10 0 625 -52 2 264 40 586 754 10 0 92 -53 231 167 15 85 245 10 0 415 -54 423 221 9 200 347 10 0 94 -55 459 53 20 1082 1193 10 0 311 -56 386 154 -21 1053 1179 10 47 0 -57 130 494 -9 692 855 10 308 0 -58 31 175 24 231 314 0 0 1013 -59 69 423 32 754 881 10 0 768 -60 352 241 5 728 886 0 0 1035 -61 261 201 -19 1482 1575 10 318 0 -62 59 276 -12 844 970 10 426 0 -63 146 188 -28 1189 1311 10 829 0 -64 451 62 -15 275 403 10 230 0 -65 299 285 -24 1208 1330 10 635 0 -66 142 372 18 162 316 10 0 898 -67 440 201 29 840 975 10 0 4 -68 219 210 14 50 156 10 0 800 -69 64 198 10 1044 1162 0 0 1027 -70 390 249 21 529 665 10 0 887 -71 9 101 16 605 758 10 0 556 -72 424 288 -24 1025 1119 10 343 0 -73 77 372 19 211 311 10 0 681 -74 298 264 36 50 163 10 0 694 -75 405 454 11 1281 1354 0 0 1006 -76 407 35 11 1243 1363 10 0 989 -77 225 369 38 121 248 10 0 663 -78 347 459 -21 433 556 10 835 0 -79 117 178 -23 1079 1186 10 807 0 -80 132 479 -9 257 354 10 299 0 -81 201 66 -24 1108 1256 10 41 0 -82 245 176 -19 1174 1325 10 914 0 -83 470 138 -12 1365 1443 10 195 0 -84 115 296 -22 1472 1615 10 945 0 -85 348 476 -35 1136 1288 10 631 0 -86 43 210 20 210 305 10 0 452 -87 327 139 13 1211 1333 10 0 767 -88 49 353 -12 1421 1501 10 205 0 -89 356 256 19 106 198 10 0 322 -90 335 99 -14 1138 1329 10 464 0 -91 363 34 19 243 372 10 0 270 -92 33 278 -40 1456 1549 10 52 0 -93 366 288 29 634 764 10 0 204 -94 452 172 -9 551 696 10 54 0 -95 86 189 21 195 288 10 0 985 -96 262 369 15 119 286 10 0 522 -97 218 403 15 1294 1374 10 0 834 -98 218 12 3 492 625 10 0 784 -99 228 399 14 547 656 10 0 527 -100 492 188 33 669 792 10 0 512 -101 267 174 -5 1570 1697 10 13 0 -102 274 441 -24 639 781 10 548 0 -103 210 113 -25 640 770 10 435 0 -104 370 262 -24 1078 1151 10 986 0 -105 303 186 -35 1302 1436 10 646 0 -106 241 180 -23 1616 1803 10 632 0 -107 100 85 14 333 399 10 0 225 -108 350 199 -32 1142 1291 10 613 0 -109 500 228 -37 728 866 10 679 0 -110 251 238 27 12 113 10 0 706 -111 114 102 21 454 591 10 0 400 -112 345 146 -18 1387 1521 10 658 0 -113 21 146 21 441 562 10 0 242 -114 330 147 -30 832 895 10 891 0 -115 476 61 -24 395 532 10 187 0 -116 386 245 16 434 553 10 0 883 -117 201 278 13 56 211 10 0 651 -118 421 499 -26 1301 1419 10 727 0 -119 426 231 24 970 1117 10 0 506 -120 105 137 -18 445 489 10 140 0 -121 64 437 -7 900 966 10 977 0 -122 181 260 23 69 210 10 0 753 -123 413 391 8 215 351 10 0 814 -124 370 493 22 533 640 10 0 749 -125 447 267 -14 911 1078 10 438 0 -126 232 101 24 290 432 10 0 785 -127 371 332 -36 484 605 10 223 0 -128 447 383 -10 237 359 10 903 0 -129 325 147 -15 1158 1245 10 344 0 -130 489 437 29 673 770 10 0 217 -131 415 95 -18 1157 1226 10 49 0 -132 331 356 -8 646 807 10 852 0 -133 374 346 27 378 494 10 0 672 -134 108 37 23 486 642 0 0 1009 -135 5 224 -19 1027 1112 10 341 0 -136 93 413 17 226 334 10 0 688 -137 210 29 -20 1013 1118 10 429 0 -138 136 265 12 114 220 10 0 748 -139 409 155 19 185 365 0 0 1036 -140 111 178 18 156 298 10 0 120 -141 291 251 20 41 173 10 0 831 -142 322 290 23 1440 1547 10 0 970 -143 57 183 -22 1049 1182 10 197 0 -144 181 185 -13 1580 1678 10 290 0 -145 7 382 -12 721 849 10 964 0 -146 425 448 9 763 856 10 0 421 -147 174 41 -12 1263 1374 10 403 0 -148 161 276 8 92 211 10 0 543 -149 398 49 21 743 870 10 0 709 -150 210 379 -14 653 794 10 412 0 -151 60 231 32 997 1085 10 0 2 -152 453 360 13 230 397 10 0 557 -153 367 97 -13 950 1056 10 668 0 -154 488 3 -20 352 480 10 684 0 -155 44 115 -31 246 407 10 979 0 -156 48 293 22 234 347 10 0 737 -157 64 135 -22 820 947 10 595 0 -158 65 62 -10 936 1047 10 617 0 -159 404 207 6 862 989 10 0 639 -160 68 303 -7 189 323 10 544 0 -161 263 418 25 242 345 10 0 272 -162 147 30 -23 1055 1192 10 795 0 -163 384 149 -12 1145 1279 10 935 0 -164 340 416 -26 300 372 10 983 0 -165 271 128 12 284 437 10 0 458 -166 89 358 -13 1183 1341 10 698 0 -167 20 480 25 505 666 10 0 886 -168 488 173 25 1169 1282 10 0 602 -169 439 156 2 470 611 10 0 244 -170 389 156 -13 711 750 10 973 0 -171 111 392 -11 1140 1229 10 880 0 -172 267 162 -25 1399 1529 10 572 0 -173 248 176 -1 1344 1488 10 847 0 -174 413 476 -7 1135 1254 10 431 0 -175 352 481 15 1213 1387 10 0 7 -176 264 135 -19 848 940 10 256 0 -177 29 462 -34 1279 1370 10 23 0 -178 148 462 10 658 826 10 0 474 -179 44 140 -13 829 938 10 307 0 -180 414 378 23 467 552 10 0 381 -181 392 95 -13 715 847 10 984 0 -182 216 341 -25 594 744 10 581 0 -183 211 411 15 1116 1208 10 0 253 -184 317 45 -24 589 757 10 339 0 -185 178 150 33 589 704 10 0 948 -186 428 302 -33 989 1072 10 198 0 -187 450 45 24 456 581 10 0 115 -188 453 318 30 333 444 10 0 570 -189 186 135 24 671 795 10 0 842 -190 11 403 18 301 415 10 0 32 -191 433 447 20 779 840 10 0 6 -192 272 420 -34 1367 1435 10 908 0 -193 429 59 9 423 525 10 0 36 -194 200 27 22 458 621 10 0 993 -195 498 171 12 1196 1347 10 0 83 -196 487 320 -28 811 935 10 219 0 -197 45 166 22 960 1096 10 0 143 -198 490 276 33 241 390 10 0 186 -199 126 391 19 233 343 10 0 923 -200 92 18 8 1072 1206 10 0 895 -201 293 228 -21 48 201 10 487 0 -202 343 205 26 716 848 10 0 267 -203 182 480 -15 302 458 10 395 0 -204 385 285 -29 822 944 10 93 0 -205 44 344 12 1033 1155 10 0 88 -206 170 347 15 389 513 10 0 664 -207 457 492 7 450 596 10 0 266 -208 124 448 6 308 459 10 0 263 -209 398 210 31 153 293 10 0 756 -210 75 118 21 366 483 10 0 528 -211 105 474 -25 434 538 10 50 0 -212 134 211 -35 122 255 10 377 0 -213 211 248 26 39 154 10 0 302 -214 212 186 -23 1687 1787 10 33 0 -215 492 335 -13 800 886 10 872 0 -216 497 483 -31 339 450 10 825 0 -217 440 436 -29 826 988 10 130 0 -218 311 203 15 672 804 10 0 621 -219 491 369 28 706 784 10 0 196 -220 67 378 26 409 561 10 0 18 -221 383 17 -9 913 997 10 936 0 -222 7 82 25 368 486 10 0 855 -223 342 319 36 115 241 10 0 127 -224 78 406 15 903 1048 10 0 481 -225 103 123 -14 435 574 10 107 0 -226 241 38 16 468 625 10 0 514 -227 224 3 -27 640 771 10 691 0 -228 436 467 12 700 802 10 0 490 -229 438 488 18 303 402 10 0 294 -230 351 60 15 215 354 10 0 64 -231 13 214 -29 1292 1446 10 882 0 -232 429 67 16 676 818 10 0 711 -233 498 456 -13 1352 1489 10 949 0 -234 135 400 20 220 407 10 0 461 -235 215 293 13 55 147 10 0 423 -236 354 416 10 618 771 10 0 615 -237 294 421 -23 1515 1666 10 933 0 -238 208 445 22 1265 1429 10 0 926 -239 230 320 8 1141 1274 0 0 1030 -240 157 38 3 1016 1109 10 0 1 -241 441 100 -1 833 944 10 37 0 -242 61 170 -21 959 1082 10 113 0 -243 79 467 22 294 438 10 0 408 -244 365 190 -2 1451 1534 10 169 0 -245 282 1 -27 1012 1103 10 675 0 -246 124 111 15 737 871 10 0 323 -247 247 219 17 31 155 10 0 599 -248 28 180 34 342 459 10 0 382 -249 167 488 17 252 358 10 0 327 -250 442 289 25 195 313 10 0 714 -251 136 430 14 663 788 10 0 333 -252 38 15 -15 1041 1172 10 999 0 -253 246 314 -15 1394 1527 10 183 0 -254 176 200 -7 531 635 10 667 0 -255 337 232 -14 1526 1645 10 960 0 -256 257 133 19 802 952 10 0 176 -257 295 247 -31 1258 1378 10 802 0 -258 39 162 -6 518 642 10 296 0 -259 79 257 26 916 1021 10 0 687 -260 236 126 23 124 201 10 0 917 -261 259 498 -7 1035 1144 10 352 0 -262 180 162 9 112 302 0 0 1038 -263 53 466 -6 294 407 10 208 0 -264 167 291 27 1601 1697 0 0 1020 -265 89 185 -16 576 653 10 394 0 -266 487 446 -7 1309 1401 10 207 0 -267 308 199 -26 1455 1592 10 202 0 -268 481 84 17 447 595 10 0 974 -269 495 227 20 308 409 10 0 734 -270 397 57 -19 1439 1543 10 91 0 -271 372 39 10 645 832 10 0 465 -272 278 450 -25 1335 1445 10 161 0 -273 292 32 14 222 326 10 0 368 -274 90 496 13 1356 1465 10 0 369 -275 68 53 16 685 823 10 0 942 -276 371 423 10 211 349 10 0 437 -277 273 149 -28 1461 1575 10 965 0 -278 297 283 -17 1324 1404 10 618 0 -279 120 37 -6 700 881 10 846 0 -280 371 488 10 546 649 10 0 951 -281 206 174 14 779 850 10 0 634 -282 174 347 -21 958 1101 10 775 0 -283 330 281 -22 1300 1390 10 540 0 -284 67 451 5 1185 1276 10 0 693 -285 27 464 -31 1258 1354 10 566 0 -286 361 178 5 931 1044 10 0 941 -287 463 406 -17 771 973 10 806 0 -288 456 157 -14 1412 1528 10 605 0 -289 153 244 5 97 254 10 0 885 -290 153 192 13 821 940 10 0 144 -291 352 63 -27 1132 1254 10 576 0 -292 371 71 21 267 336 10 0 720 -293 163 472 -14 626 710 10 946 0 -294 448 495 -18 327 471 10 229 0 -295 282 10 -2 1200 1354 10 329 0 -296 66 163 6 351 469 10 0 258 -297 314 205 -18 1464 1619 10 894 0 -298 83 169 -22 722 862 10 788 0 -299 221 291 9 50 172 10 0 80 -300 374 116 9 561 643 10 0 494 -301 418 269 3 1170 1270 10 0 810 -302 178 302 -26 818 986 10 213 0 -303 250 57 26 735 791 10 0 805 -304 475 352 33 263 386 10 0 954 -305 1 252 5 249 345 10 0 424 -306 286 356 30 111 231 10 0 900 -307 65 82 13 680 829 10 0 179 -308 154 392 9 171 248 10 0 57 -309 196 56 -5 586 663 10 447 0 -310 366 390 -29 1286 1380 10 523 0 -311 436 25 -20 1247 1348 10 55 0 -312 67 352 -26 315 462 10 944 0 -313 173 182 25 102 209 0 0 1016 -314 390 34 -40 1038 1112 10 660 0 -315 18 225 -8 633 780 10 726 0 -316 57 43 15 966 1111 10 0 441 -317 388 44 -30 1089 1203 10 620 0 -318 269 112 19 1189 1367 10 0 61 -319 374 260 -13 1668 1791 10 827 0 -320 291 213 -10 1202 1343 10 589 0 -321 178 420 -19 1034 1139 10 841 0 -322 389 255 -19 741 860 10 89 0 -323 134 194 -15 1607 1727 10 246 0 -324 93 490 2 369 420 10 0 919 -325 64 294 12 1054 1179 0 0 1024 -326 493 111 26 494 619 10 0 359 -327 150 484 -17 567 713 10 249 0 -328 235 316 2 598 744 10 0 877 -329 239 15 2 549 689 10 0 295 -330 193 138 30 632 720 10 0 499 -331 40 278 -17 1065 1174 10 350 0 -332 307 52 -13 885 986 10 542 0 -333 161 416 -14 971 1081 10 251 0 -334 381 457 28 439 532 10 0 40 -335 55 318 13 303 350 10 0 959 -336 80 279 -15 1134 1212 10 820 0 -337 48 162 15 220 335 10 0 588 -338 91 27 -10 1151 1242 10 503 0 -339 288 70 24 183 345 10 0 184 -340 177 404 -18 1189 1366 10 468 0 -341 10 237 19 569 693 10 0 135 -342 493 493 -3 815 928 10 511 0 -343 440 292 24 872 1038 10 0 72 -344 349 76 15 993 1098 10 0 129 -345 47 208 30 207 372 10 0 637 -346 283 454 -6 1216 1345 10 776 0 -347 486 324 15 743 826 10 0 861 -348 392 87 23 1120 1275 10 0 823 -349 122 422 3 1404 1539 0 0 1005 -350 37 281 17 451 566 10 0 331 -351 413 127 28 791 900 10 0 955 -352 222 499 7 785 935 10 0 261 -353 211 446 15 1068 1208 10 0 851 -354 30 7 -15 1161 1247 10 701 0 -355 398 341 33 889 1019 10 0 833 -356 26 67 -15 1277 1387 10 552 0 -357 461 186 -26 1481 1573 10 422 0 -358 313 391 5 154 238 10 0 526 -359 471 94 -26 954 1074 10 326 0 -360 341 72 -12 781 858 10 692 0 -361 130 186 16 136 199 10 0 699 -362 257 57 -14 1186 1295 10 10 0 -363 94 344 -22 640 754 10 489 0 -364 6 53 8 547 657 10 0 385 -365 146 376 8 166 332 10 0 476 -366 244 13 24 965 1091 10 0 747 -367 29 336 -27 297 397 10 401 0 -368 306 42 -14 428 556 10 273 0 -369 177 486 -13 1551 1668 10 274 0 -370 489 338 -13 1355 1470 10 536 0 -371 179 318 2 1093 1179 10 0 455 -372 344 203 14 113 251 10 0 686 -373 149 341 6 365 472 10 0 549 -374 307 412 -7 339 499 10 440 0 -375 68 450 -19 604 692 10 504 0 -376 420 80 -11 1017 1206 10 587 0 -377 144 220 35 110 221 10 0 212 -378 497 54 -11 915 1071 10 793 0 -379 80 458 30 347 424 10 0 909 -380 84 377 -38 844 1038 10 654 0 -381 332 382 -23 936 1115 10 180 0 -382 6 196 -34 1160 1277 10 248 0 -383 104 28 -18 1450 1526 10 39 0 -384 224 320 -23 1223 1375 10 811 0 -385 87 3 -8 1392 1504 10 364 0 -386 149 214 7 421 573 10 0 758 -387 98 29 -16 1003 1121 10 813 0 -388 135 30 12 385 593 10 0 577 -389 287 397 -34 512 646 10 656 0 -390 107 374 8 861 997 10 0 915 -391 355 485 -27 1450 1539 10 913 0 -392 51 286 -16 1401 1546 10 733 0 -393 49 118 3 1027 1145 0 0 1004 -394 159 226 16 94 195 10 0 265 -395 185 431 15 356 448 10 0 203 -396 262 92 25 566 725 10 0 482 -397 475 198 20 805 895 10 0 399 -398 142 30 -18 1165 1356 10 483 0 -399 481 207 -20 793 950 10 397 0 -400 174 122 -21 540 676 10 111 0 -401 35 263 27 235 336 10 0 367 -402 24 71 11 298 424 10 0 30 -403 173 65 12 445 482 10 0 147 -404 91 326 -26 902 1055 10 937 0 -405 470 417 11 696 808 10 0 420 -406 397 153 -27 832 962 10 454 0 -407 295 283 -26 832 985 10 607 0 -408 174 376 -22 1332 1537 10 243 0 -409 38 190 23 245 354 10 0 902 -410 16 68 11 296 430 10 0 786 -411 179 286 8 290 422 0 0 1026 -412 244 422 14 492 614 10 0 150 -413 250 441 5 694 848 10 0 451 -414 497 18 10 1077 1213 10 0 20 -415 195 111 -15 973 1053 10 53 0 -416 26 221 -31 947 1075 10 657 0 -417 442 5 -5 311 406 10 652 0 -418 44 496 32 364 470 10 0 3 -419 448 404 15 549 678 10 0 579 -420 471 427 -11 748 915 10 405 0 -421 460 424 -9 1393 1546 10 146 0 -422 461 195 26 1336 1485 10 0 357 -423 146 313 -13 1151 1269 10 235 0 -424 19 273 -5 959 1105 10 305 0 -425 245 461 -19 628 701 10 757 0 -426 69 266 12 738 809 10 0 62 -427 191 84 13 815 950 10 0 980 -428 68 160 21 1090 1212 10 0 609 -429 212 47 20 761 871 10 0 137 -430 80 337 -21 1071 1198 10 830 0 -431 412 478 7 905 1045 10 0 174 -432 225 488 -15 590 712 10 700 0 -433 105 140 27 182 305 10 0 857 -434 389 43 -13 370 451 10 931 0 -435 177 156 25 130 234 10 0 103 -436 179 497 1 1381 1471 10 0 619 -437 377 432 -10 787 906 10 276 0 -438 497 296 14 571 685 10 0 125 -439 152 476 -26 486 590 10 875 0 -440 277 428 7 449 562 10 0 374 -441 64 5 -15 1098 1190 10 316 0 -442 44 311 27 378 466 0 0 1019 -443 165 59 -17 909 1007 10 627 0 -444 261 138 -12 574 692 10 971 0 -445 268 351 7 1664 1717 0 0 1018 -446 48 150 15 618 723 0 0 1014 -447 215 79 5 196 282 10 0 309 -448 109 56 27 239 341 10 0 491 -449 171 188 -28 563 708 10 703 0 -450 284 457 -20 1447 1581 10 662 0 -451 274 442 -5 992 1171 10 413 0 -452 33 286 -20 1513 1609 10 86 0 -453 112 433 29 229 358 10 0 520 -454 423 170 27 463 593 10 0 406 -455 213 283 -2 1421 1550 10 371 0 -456 240 34 -14 1517 1632 10 674 0 -457 283 438 3 215 278 10 0 12 -458 324 99 -12 316 390 10 165 0 -459 259 301 -30 52 175 10 28 0 -460 189 402 10 506 596 10 0 484 -461 215 282 -20 1391 1520 10 234 0 -462 166 440 -21 207 354 10 893 0 -463 374 232 33 125 240 10 0 676 -464 339 113 14 707 845 10 0 90 -465 335 46 -10 1276 1437 10 271 0 -466 313 493 -21 1141 1276 10 907 0 -467 432 66 -15 1016 1157 10 952 0 -468 76 462 18 925 1017 10 0 340 -469 397 477 -10 1169 1292 10 879 0 -470 196 489 -33 986 1105 10 704 0 -471 354 156 20 783 911 10 0 505 -472 171 24 -26 1324 1473 10 702 0 -473 187 73 18 219 396 10 0 930 -474 243 408 -10 1387 1510 10 178 0 -475 421 387 15 752 880 10 0 722 -476 141 426 -8 483 609 10 365 0 -477 415 118 19 211 289 10 0 598 -478 240 255 -7 1580 1672 10 539 0 -479 162 388 11 1069 1213 10 0 42 -480 413 493 -23 1185 1281 10 25 0 -481 69 414 -15 1237 1320 10 224 0 -482 273 70 -25 563 706 10 396 0 -483 142 14 18 764 936 10 0 398 -484 185 434 -10 537 640 10 460 0 -485 360 294 -33 1354 1512 10 912 0 -486 265 240 9 18 114 10 0 743 -487 280 245 21 30 155 10 0 201 -488 87 51 35 493 565 10 0 614 -489 195 273 22 59 127 10 0 363 -490 422 498 -12 646 768 10 228 0 -491 95 64 -27 733 829 10 448 0 -492 63 155 7 915 1044 10 0 529 -493 24 259 19 306 465 10 0 836 -494 376 92 -9 966 1046 10 300 0 -495 83 300 26 454 575 10 0 9 -496 72 477 46 288 405 10 0 582 -497 380 194 -13 658 799 10 524 0 -498 72 227 25 534 624 10 0 638 -499 238 123 -30 737 856 10 330 0 -500 188 119 -32 921 1059 10 781 0 -501 229 322 11 1628 1723 0 0 1031 -502 150 68 -12 395 481 10 890 0 -503 67 24 10 978 1088 10 0 338 -504 63 420 19 487 583 10 0 375 -505 339 144 -20 1058 1169 10 471 0 -506 454 201 -24 1286 1353 10 119 0 -507 158 24 -28 569 684 10 680 0 -508 365 119 30 351 442 10 0 778 -509 440 284 -25 805 928 10 922 0 -510 417 212 -18 885 965 10 745 0 -511 404 439 3 243 381 10 0 342 -512 472 248 -33 776 923 10 100 0 -513 235 108 -17 1040 1150 10 821 0 -514 174 67 -16 1233 1317 10 226 0 -515 132 151 22 154 332 10 0 963 -516 217 207 26 1328 1466 10 0 796 -517 162 306 22 104 222 10 0 956 -518 48 366 29 675 841 10 0 777 -519 209 68 27 1533 1633 0 0 1017 -520 94 497 -29 734 860 10 453 0 -521 110 122 -24 1464 1584 10 666 0 -522 274 403 -15 828 976 10 96 0 -523 421 386 29 764 915 10 0 310 -524 399 175 13 715 808 10 0 497 -525 56 268 -29 1032 1125 10 585 0 -526 322 406 -5 803 886 10 358 0 -527 244 277 -14 1252 1380 10 99 0 -528 105 181 -21 1473 1620 10 210 0 -529 30 97 -7 1168 1283 10 492 0 -530 359 246 -14 1338 1538 10 928 0 -531 498 457 15 871 985 10 0 730 -532 190 267 -31 1734 1804 10 586 0 -533 334 481 32 258 432 10 0 920 -534 18 24 32 588 698 10 0 604 -535 482 104 -32 787 857 10 953 0 -536 460 328 13 224 353 10 0 370 -537 320 211 -35 967 1048 10 787 0 -538 494 165 19 553 685 10 0 8 -539 167 445 7 1356 1499 10 0 478 -540 340 291 22 429 542 10 0 283 -541 272 234 -9 1581 1630 10 14 0 -542 325 56 13 771 851 10 0 332 -543 71 304 -8 633 776 10 148 0 -544 87 311 7 174 277 10 0 160 -545 207 487 4 597 812 10 0 850 -546 332 5 -24 993 1103 10 774 0 -547 161 275 -9 1311 1413 10 647 0 -548 268 458 24 522 554 10 0 102 -549 175 352 -6 1624 1736 10 373 0 -550 398 476 25 391 475 10 0 11 -551 51 360 -1 1101 1219 10 1000 0 -552 21 70 15 744 829 10 0 356 -553 80 251 -17 274 363 10 746 0 -554 457 280 -18 946 1084 10 906 0 -555 423 315 12 184 318 10 0 764 -556 66 88 -16 756 933 10 71 0 -557 479 387 -13 408 417 10 152 0 -558 436 123 40 225 312 0 0 1033 -559 286 244 -25 1229 1369 10 695 0 -560 449 190 -7 1120 1190 10 870 0 -561 456 113 17 1200 1284 10 0 568 -562 480 152 -14 978 1095 10 735 0 -563 100 266 -13 421 548 10 629 0 -564 343 34 7 686 793 10 0 889 -565 374 306 4 931 1087 10 0 612 -566 13 465 31 745 833 10 0 285 -567 230 487 -22 1096 1193 10 779 0 -568 442 153 -17 1113 1294 10 561 0 -569 240 362 23 1342 1516 0 0 1023 -570 433 319 -30 1316 1467 10 188 0 -571 0 422 8 757 915 0 0 1029 -572 297 131 25 1132 1229 10 0 172 -573 71 12 -30 297 437 10 628 0 -574 44 440 -30 752 855 10 677 0 -575 447 184 -31 366 513 10 991 0 -576 341 59 27 743 866 10 0 291 -577 132 32 -12 744 855 10 388 0 -578 411 396 23 862 1009 10 0 44 -579 450 416 -15 504 680 10 419 0 -580 323 34 -6 1276 1384 10 642 0 -581 244 368 25 352 507 10 0 182 -582 90 477 -46 277 462 10 496 0 -583 34 169 11 467 532 10 0 48 -584 351 128 -24 1199 1337 10 661 0 -585 71 282 29 609 705 10 0 525 -586 157 269 31 1520 1663 10 0 532 -587 392 1 11 555 685 10 0 376 -588 39 153 -15 743 882 10 337 0 -589 306 229 10 1269 1402 10 0 320 -590 415 253 21 287 476 10 0 957 -591 92 76 4 1076 1231 10 0 603 -592 437 98 -14 1041 1216 10 978 0 -593 12 367 27 289 393 10 0 759 -594 448 414 -1 1194 1282 10 783 0 -595 128 113 22 333 423 10 0 157 -596 43 360 -23 797 904 10 742 0 -597 102 422 23 226 324 10 0 808 -598 480 131 -19 648 758 10 477 0 -599 210 81 -17 321 508 10 247 0 -600 432 2 20 427 536 10 0 892 -601 396 83 -26 1517 1685 10 752 0 -602 489 159 -25 1371 1514 10 168 0 -603 56 75 -4 1385 1521 10 591 0 -604 66 31 -32 1001 1126 10 534 0 -605 460 117 14 484 586 10 0 288 -606 175 239 23 75 157 10 0 824 -607 217 333 26 346 507 10 0 407 -608 62 375 16 308 420 10 0 754 -609 82 183 -21 1020 1214 10 428 0 -610 248 214 -20 1436 1552 10 729 0 -611 385 239 -18 752 850 10 911 0 -612 371 315 -4 1113 1249 10 565 0 -613 333 163 32 1166 1344 10 0 108 -614 100 66 -35 1339 1490 10 488 0 -615 311 422 -10 933 1072 10 236 0 -616 153 235 10 98 190 10 0 884 -617 168 109 10 170 268 10 0 158 -618 284 319 17 774 890 10 0 278 -619 195 464 -1 1492 1620 10 436 0 -620 382 9 30 274 397 10 0 317 -621 325 210 -15 891 1005 10 218 0 -622 366 334 5 365 486 10 0 998 -623 200 78 -33 972 1043 10 947 0 -624 351 5 12 455 567 10 0 968 -625 197 202 -20 1161 1277 10 51 0 -626 270 337 -12 1652 1826 10 817 0 -627 125 65 17 728 878 10 0 443 -628 120 17 30 266 377 10 0 573 -629 84 255 13 252 341 10 0 563 -630 222 331 -15 488 621 10 790 0 -631 332 459 35 318 449 10 0 85 -632 226 175 23 1656 1761 10 0 106 -633 404 140 -24 1203 1344 10 871 0 -634 223 178 -14 1090 1212 10 281 0 -635 330 308 24 1145 1225 10 0 65 -636 140 108 -22 1022 1151 10 798 0 -637 34 239 -30 216 305 10 345 0 -638 94 192 -25 1038 1152 10 498 0 -639 458 213 -6 1069 1217 10 159 0 -640 13 314 -21 245 338 10 838 0 -641 202 391 -22 579 698 10 744 0 -642 339 41 6 413 528 10 0 580 -643 224 56 -22 1122 1280 10 815 0 -644 345 431 -9 275 445 10 799 0 -645 292 104 26 276 361 10 0 766 -646 318 99 35 1151 1305 10 0 105 -647 46 248 9 784 873 10 0 547 -648 482 184 14 1079 1165 0 0 1011 -649 411 379 25 1138 1279 10 0 19 -650 293 174 31 87 187 10 0 773 -651 169 305 -13 119 235 10 117 0 -652 394 47 5 248 425 10 0 417 -653 323 29 -8 1113 1191 10 689 0 -654 65 343 38 207 309 10 0 380 -655 158 179 -17 116 210 10 673 0 -656 299 353 34 114 211 10 0 389 -657 9 233 31 257 386 10 0 416 -658 330 138 18 1085 1165 10 0 112 -659 48 412 -17 996 1098 10 718 0 -660 385 17 40 735 913 10 0 314 -661 382 110 24 1101 1153 10 0 584 -662 336 493 20 1435 1580 10 0 450 -663 181 441 -38 496 618 10 77 0 -664 162 301 -15 1585 1672 10 206 0 -665 1 101 -14 1207 1337 10 801 0 -666 80 117 24 789 890 10 0 521 -667 210 219 7 50 153 10 0 254 -668 404 59 13 889 967 10 0 153 -669 288 439 16 237 340 10 0 897 -670 149 458 -13 1116 1242 10 992 0 -671 257 391 -10 1585 1711 10 710 0 -672 405 349 -27 463 612 10 133 0 -673 191 215 17 68 158 10 0 655 -674 231 29 14 1214 1269 10 0 456 -675 253 50 27 200 301 10 0 245 -676 441 177 -33 950 1082 10 463 0 -677 5 445 30 313 417 10 0 574 -678 463 253 -25 1017 1107 10 988 0 -679 435 180 37 197 327 10 0 109 -680 198 85 28 200 355 10 0 507 -681 59 388 -19 653 703 10 73 0 -682 373 418 -2 1203 1345 10 34 0 -683 142 80 12 461 553 10 0 740 -684 441 7 20 356 458 10 0 154 -685 33 268 -26 647 774 10 858 0 -686 355 174 -14 673 787 10 372 0 -687 228 260 -26 1562 1680 10 259 0 -688 114 460 -17 1032 1169 10 136 0 -689 337 41 8 960 1074 10 0 653 -690 154 374 36 873 1030 10 0 15 -691 235 13 27 311 436 10 0 227 -692 303 78 12 179 272 10 0 360 -693 103 464 -5 1236 1339 10 284 0 -694 325 311 -36 1289 1386 10 74 0 -695 306 235 25 57 140 10 0 559 -696 382 360 -17 171 323 10 849 0 -697 235 288 18 40 115 10 0 873 -698 0 356 13 1025 1177 10 0 166 -699 178 135 -16 1477 1581 10 361 0 -700 226 423 15 174 308 10 0 432 -701 15 11 15 899 1035 10 0 354 -702 144 35 26 239 385 10 0 472 -703 176 199 28 89 201 10 0 449 -704 247 306 33 56 200 10 0 470 -705 396 417 13 776 875 0 0 1008 -706 289 220 -27 49 147 10 110 0 -707 23 235 -18 982 1095 10 719 0 -708 137 377 23 169 274 10 0 888 -709 400 71 -21 1342 1433 10 149 0 -710 261 359 10 109 272 10 0 671 -711 438 127 -16 901 1011 10 232 0 -712 318 280 21 74 193 10 0 713 -713 333 293 -21 562 703 10 712 0 -714 436 295 -25 482 604 10 250 0 -715 62 94 16 911 1020 10 0 990 -716 495 355 3 1192 1325 10 0 828 -717 13 394 15 321 455 10 0 843 -718 172 292 17 88 158 10 0 659 -719 14 232 18 236 442 10 0 707 -720 437 90 -21 542 657 10 292 0 -721 214 274 -19 1330 1438 10 918 0 -722 420 383 -15 925 1068 10 475 0 -723 120 261 5 758 858 10 0 792 -724 179 75 -18 684 826 10 38 0 -725 484 224 7 242 388 10 0 43 -726 214 245 8 36 177 10 0 315 -727 395 474 26 333 471 10 0 118 -728 368 311 14 885 997 10 0 751 -729 199 203 20 1410 1535 10 0 610 -730 485 428 -15 1443 1567 10 531 0 -731 86 199 23 221 365 10 0 966 -732 447 272 12 349 449 10 0 736 -733 40 304 16 1119 1200 10 0 392 -734 475 267 -20 741 849 10 269 0 -735 482 141 14 979 1073 10 0 562 -736 489 274 -12 496 601 10 732 0 -737 26 342 -22 281 390 10 156 0 -738 139 438 24 218 335 10 0 981 -739 12 358 -21 1160 1318 10 45 0 -740 125 61 -12 584 670 10 683 0 -741 360 284 19 617 746 10 0 916 -742 29 358 23 530 722 10 0 596 -743 285 247 -9 1235 1344 10 486 0 -744 248 386 22 337 449 10 0 641 -745 415 207 18 862 968 10 0 510 -746 130 247 17 120 218 10 0 553 -747 172 66 -24 1260 1376 10 366 0 -748 92 259 -12 361 467 10 138 0 -749 379 486 -22 631 742 10 124 0 -750 452 484 26 1239 1348 0 0 1003 -751 268 288 -14 1204 1360 10 728 0 -752 349 43 26 229 318 10 0 601 -753 225 269 -23 1255 1317 10 122 0 -754 50 383 -16 240 391 10 608 0 -755 110 251 -20 444 582 10 804 0 -756 461 182 -31 589 699 10 209 0 -757 255 487 19 380 446 10 0 425 -758 133 202 -7 420 531 10 386 0 -759 34 329 -27 1009 1107 10 593 0 -760 368 452 -4 621 748 10 881 0 -761 242 106 -20 1218 1348 10 962 0 -762 171 303 18 1501 1708 10 0 866 -763 329 456 19 220 334 10 0 972 -764 490 286 -12 495 579 10 555 0 -765 61 214 4 270 443 10 0 29 -766 365 74 -26 788 939 10 645 0 -767 321 149 -13 1364 1515 10 87 0 -768 84 453 -32 1194 1281 10 59 0 -769 26 442 -5 1290 1428 10 26 0 -770 180 283 23 664 854 10 0 844 -771 394 322 12 978 1101 10 0 996 -772 348 348 -12 893 1006 10 862 0 -773 309 161 -31 560 637 10 650 0 -774 385 58 24 344 496 10 0 546 -775 228 287 21 43 177 10 0 282 -776 312 453 6 534 595 10 0 346 -777 35 344 -29 804 952 10 518 0 -778 393 98 -30 710 826 10 508 0 -779 208 488 22 404 581 10 0 567 -780 235 33 30 1265 1439 0 0 1010 -781 140 137 32 511 659 10 0 500 -782 405 187 -8 1196 1335 10 839 0 -783 330 371 1 518 630 10 0 594 -784 265 0 -3 839 984 10 98 0 -785 295 89 -24 708 806 10 126 0 -786 3 23 -11 348 464 10 410 0 -787 363 225 35 789 952 10 0 537 -788 148 208 22 485 598 10 0 298 -789 466 362 -16 1105 1230 10 910 0 -790 267 290 15 43 172 10 0 630 -791 98 2 14 542 672 10 0 938 -792 131 246 -5 793 902 10 723 0 -793 418 75 11 395 530 10 0 378 -794 366 260 -15 1474 1596 10 994 0 -795 138 28 23 1048 1176 10 0 162 -796 209 212 -26 1489 1597 10 516 0 -797 443 167 -10 503 613 10 924 0 -798 156 65 22 966 1138 10 0 636 -799 279 355 9 119 244 10 0 644 -800 206 172 -14 738 867 10 68 0 -801 32 94 14 862 1028 10 0 665 -802 301 239 31 52 214 10 0 257 -803 471 368 19 385 502 10 0 874 -804 133 273 20 119 260 10 0 755 -805 253 74 -26 1285 1446 10 303 0 -806 470 405 17 869 1012 10 0 287 -807 77 172 23 745 856 10 0 79 -808 77 465 -23 275 330 10 597 0 -809 466 96 22 1316 1481 0 0 1022 -810 402 277 -3 1376 1530 10 301 0 -811 267 374 23 540 692 10 0 384 -812 450 194 27 586 693 10 0 868 -813 89 65 16 669 801 10 0 387 -814 429 389 -8 382 496 10 123 0 -815 202 28 22 903 995 10 0 643 -816 46 389 22 246 376 10 0 860 -817 246 407 12 264 389 10 0 626 -818 452 110 14 315 395 10 0 46 -819 213 185 21 74 184 10 0 997 -820 134 276 15 118 240 10 0 336 -821 262 97 17 913 1011 10 0 513 -822 469 489 4 484 656 0 0 1001 -823 364 71 -23 1300 1427 10 348 0 -824 68 240 -23 731 887 10 606 0 -825 494 468 31 327 443 10 0 216 -826 439 222 -24 932 1058 10 869 0 -827 386 225 13 859 1009 10 0 319 -828 434 359 -3 1352 1462 10 716 0 -829 103 177 28 592 691 10 0 63 -830 89 322 21 978 1093 10 0 430 -831 307 249 -20 1359 1425 10 141 0 -832 30 155 -17 1237 1353 10 940 0 -833 401 314 -33 930 1052 10 355 0 -834 217 357 -15 1388 1481 10 97 0 -835 373 421 21 210 351 10 0 78 -836 5 281 -19 1305 1468 10 493 0 -837 173 474 14 1216 1384 10 0 840 -838 36 301 21 219 376 10 0 640 -839 429 169 8 848 988 10 0 782 -840 195 450 -14 1434 1567 10 837 0 -841 95 382 19 203 305 10 0 321 -842 225 121 -24 726 770 10 189 0 -843 10 407 -15 363 535 10 717 0 -844 221 269 -23 1204 1356 10 770 0 -845 264 180 33 1652 1739 0 0 1032 -846 168 59 6 320 442 10 0 279 -847 281 96 1 1073 1208 10 0 173 -848 387 349 9 169 252 10 0 995 -849 398 329 17 167 263 10 0 696 -850 239 486 -4 1407 1588 10 545 0 -851 237 420 -15 1295 1403 10 353 0 -852 346 354 8 773 892 10 0 132 -853 172 314 -35 499 621 10 932 0 -854 233 230 20 26 134 10 0 927 -855 79 80 -25 1351 1444 10 222 0 -856 243 402 -24 359 481 10 35 0 -857 117 110 -27 933 1055 10 433 0 -858 66 314 26 194 300 10 0 685 -859 58 391 16 819 975 10 0 16 -860 142 360 -22 1483 1610 10 816 0 -861 492 326 -15 1135 1304 10 347 0 -862 381 328 12 668 796 10 0 772 -863 62 236 -10 519 626 10 934 0 -864 344 70 24 1116 1205 0 0 1021 -865 151 81 -4 1498 1647 10 976 0 -866 240 240 -18 1629 1800 10 762 0 -867 46 163 -22 877 1005 10 896 0 -868 455 168 -27 808 956 10 812 0 -869 428 202 24 879 958 10 0 826 -870 432 199 7 610 698 10 0 560 -871 391 112 24 965 1065 10 0 633 -872 451 305 13 208 346 10 0 215 -873 214 311 -18 70 158 10 697 0 -874 465 367 -19 970 1113 10 803 0 -875 164 473 26 255 368 10 0 439 -876 364 173 30 137 278 10 0 921 -877 274 261 -2 1692 1752 10 328 0 -878 133 455 25 759 886 0 0 1007 -879 351 481 10 300 373 10 0 469 -880 115 395 11 756 904 10 0 171 -881 297 304 4 71 181 10 0 760 -882 7 194 29 882 1050 10 0 231 -883 409 255 -16 1491 1584 10 116 0 -884 87 213 -10 603 679 10 616 0 -885 60 246 -5 190 307 10 289 0 -886 3 471 -25 652 799 10 167 0 -887 418 251 -21 1173 1250 10 70 0 -888 153 362 -23 1112 1240 10 708 0 -889 323 77 -7 1356 1484 10 564 0 -890 143 158 12 141 286 10 0 502 -891 351 148 30 419 534 10 0 114 -892 426 38 -20 572 675 10 600 0 -893 226 316 21 70 197 10 0 462 -894 347 192 18 1435 1571 10 0 297 -895 102 6 -8 1423 1524 10 200 0 -896 41 120 22 625 796 10 0 867 -897 247 443 -16 309 381 10 669 0 -898 218 271 -18 1513 1665 10 66 0 -899 376 385 12 184 260 10 0 5 -900 241 402 -30 987 1092 10 306 0 -901 213 399 18 169 328 0 0 1037 -902 32 191 -23 539 663 10 409 0 -903 441 374 10 227 344 10 0 128 -904 376 113 8 475 583 0 0 1025 -905 215 434 9 187 286 0 0 1015 -906 499 316 18 576 697 10 0 554 -907 318 497 21 790 948 10 0 466 -908 256 441 34 191 313 10 0 192 -909 174 397 -30 1203 1317 10 379 0 -910 468 360 16 244 361 10 0 789 -911 287 256 18 37 185 10 0 611 -912 448 397 33 813 949 10 0 485 -913 352 487 27 858 975 10 0 391 -914 253 118 19 485 640 10 0 82 -915 159 299 -8 984 1077 10 390 0 -916 351 233 -19 1354 1522 10 741 0 -917 268 113 -23 623 767 10 260 0 -918 164 332 19 1269 1321 10 0 721 -919 88 484 -2 1454 1558 10 324 0 -920 360 488 -32 290 372 10 533 0 -921 343 166 -30 823 959 10 876 0 -922 497 266 25 703 823 10 0 509 -923 138 406 -19 1181 1281 10 199 0 -924 420 224 10 374 514 10 0 797 -925 231 410 -7 1192 1311 10 943 0 -926 199 438 -22 1295 1455 10 238 0 -927 219 215 -20 46 164 10 854 0 -928 365 274 14 117 223 10 0 530 -929 481 454 14 308 380 10 0 969 -930 187 61 -18 501 618 10 473 0 -931 372 97 13 195 335 10 0 434 -932 187 263 35 64 151 10 0 853 -933 371 427 23 899 1047 10 0 237 -934 74 215 10 191 297 10 0 863 -935 375 145 12 891 997 10 0 163 -936 365 28 9 250 383 10 0 221 -937 118 314 26 297 409 10 0 404 -938 60 29 -14 1319 1437 10 791 0 -939 478 300 12 829 981 0 0 1012 -940 33 152 17 1254 1416 10 0 832 -941 347 184 -5 1015 1172 10 286 0 -942 94 40 -16 1010 1156 10 275 0 -943 290 328 7 94 224 10 0 925 -944 96 346 26 181 305 10 0 312 -945 97 288 22 1239 1360 10 0 84 -946 176 470 14 512 612 10 0 293 -947 206 97 33 395 531 10 0 623 -948 210 133 -33 637 770 10 185 0 -949 489 457 13 316 465 10 0 233 -950 418 399 20 382 523 0 0 1002 -951 392 491 -10 1077 1218 10 280 0 -952 437 19 15 991 1066 10 0 467 -953 495 83 32 397 515 10 0 535 -954 468 352 -33 733 834 10 304 0 -955 390 120 -28 951 1088 10 351 0 -956 80 357 -22 495 596 10 517 0 -957 394 310 -21 1066 1161 10 590 0 -958 61 441 27 514 604 10 0 24 -959 52 303 -13 395 518 10 335 0 -960 391 202 14 148 256 10 0 255 -961 36 451 -4 866 942 10 982 0 -962 276 84 20 624 769 10 0 761 -963 130 140 -22 162 318 10 515 0 -964 16 287 12 236 376 10 0 145 -965 292 136 28 722 870 10 0 277 -966 53 204 -23 1028 1112 10 731 0 -967 359 287 -15 115 266 10 21 0 -968 309 29 -12 1236 1382 10 624 0 -969 473 491 -14 382 474 10 929 0 -970 273 255 -23 1425 1590 10 142 0 -971 263 153 12 368 487 10 0 444 -972 328 458 -19 747 819 10 763 0 -973 401 164 13 579 693 10 0 170 -974 480 119 -17 552 734 10 268 0 -975 488 96 -21 1022 1141 10 17 0 -976 149 98 4 1101 1260 10 0 865 -977 49 437 7 351 534 10 0 121 -978 440 77 14 877 979 10 0 592 -979 43 135 31 236 344 10 0 155 -980 188 151 -13 1255 1369 10 427 0 -981 175 422 -24 1390 1533 10 738 0 -982 48 437 4 728 909 10 0 961 -983 334 403 26 174 283 10 0 164 -984 372 115 13 315 443 10 0 181 -985 111 192 -21 1152 1277 10 95 0 -986 357 290 24 114 246 10 0 104 -987 331 134 11 1059 1219 0 0 1028 -988 495 199 25 317 387 10 0 678 -989 441 60 -11 1426 1521 10 76 0 -990 51 89 -16 1156 1291 10 715 0 -991 452 206 31 457 558 10 0 575 -992 195 386 13 146 268 10 0 670 -993 172 24 -22 1416 1519 10 194 0 -994 408 318 15 600 716 10 0 794 -995 410 399 -9 218 342 10 848 0 -996 413 345 -12 1178 1288 10 771 0 -997 215 129 -21 1076 1192 10 819 0 -998 380 350 -5 796 967 10 622 0 -999 19 38 15 786 939 10 0 252 -1000 166 247 1 84 158 10 0 551 -1001 469 489 -4 484 656 10 822 0 -1002 418 399 -20 382 523 10 950 0 -1003 452 484 -26 1239 1348 10 750 0 -1004 49 118 -3 1027 1145 10 393 0 -1005 122 422 -3 1404 1539 10 349 0 -1006 405 454 -11 1281 1354 10 75 0 -1007 133 455 -25 759 886 10 878 0 -1008 396 417 -13 776 875 10 705 0 -1009 108 37 -23 486 642 10 134 0 -1010 235 33 -30 1265 1439 10 780 0 -1011 482 184 -14 1079 1165 10 648 0 -1012 478 300 -12 829 981 10 939 0 -1013 31 175 -24 231 314 10 58 0 -1014 48 150 -15 618 723 10 446 0 -1015 215 434 -9 187 286 10 905 0 -1016 173 182 -25 102 209 10 313 0 -1017 209 68 -27 1533 1633 10 519 0 -1018 268 351 -7 1664 1717 10 445 0 -1019 44 311 -27 378 466 10 442 0 -1020 167 291 -27 1601 1697 10 264 0 -1021 344 70 -24 1116 1205 10 864 0 -1022 466 96 -22 1316 1481 10 809 0 -1023 240 362 -23 1342 1516 10 569 0 -1024 64 294 -12 1054 1179 10 325 0 -1025 376 113 -8 475 583 10 904 0 -1026 179 286 -8 290 422 10 411 0 -1027 64 198 -10 1044 1162 10 69 0 -1028 331 134 -11 1059 1219 10 987 0 -1029 0 422 -8 757 915 10 571 0 -1030 230 320 -8 1141 1274 10 239 0 -1031 229 322 -11 1628 1723 10 501 0 -1032 264 180 -33 1652 1739 10 845 0 -1033 436 123 -40 225 312 10 558 0 -1034 104 349 -20 943 1106 10 22 0 -1035 352 241 -5 728 886 10 60 0 -1036 409 155 -19 185 365 10 139 0 -1037 213 399 -18 169 328 10 901 0 -1038 180 162 -9 112 302 10 262 0 diff --git a/jsprit-instances/instances/lilim/1000/LR1102.txt b/jsprit-instances/instances/lilim/1000/LR1102.txt deleted file mode 100644 index 1c4f1337c..000000000 --- a/jsprit-instances/instances/lilim/1000/LR1102.txt +++ /dev/null @@ -1,1042 +0,0 @@ -250 200 1 -0 250 250 0 0 1925 0 0 0 -1 171 34 -3 1153 1163 10 240 0 -2 67 190 -14 1183 1193 10 553 0 -3 80 400 -15 1456 1466 10 717 0 -4 439 237 11 949 959 10 0 125 -5 377 385 -23 876 886 10 933 0 -6 449 428 25 1257 1267 10 0 421 -7 342 481 18 1450 1460 10 0 920 -8 466 149 -5 1196 1206 10 598 0 -9 83 290 14 0 1744 10 0 586 -10 251 63 14 997 1007 10 0 780 -11 328 491 21 0 1662 10 0 466 -12 260 472 -33 0 1693 10 261 0 -13 290 145 -28 1292 1302 10 965 0 -14 266 221 9 33 43 10 0 668 -15 164 320 -23 1105 1115 10 122 0 -16 52 412 -16 0 1660 10 859 0 -17 485 104 -31 804 814 10 241 0 -18 144 331 -36 941 951 10 690 0 -19 387 394 -23 1108 1118 10 287 0 -20 472 57 17 1305 1315 10 0 477 -21 343 276 15 96 106 10 0 255 -22 104 349 -26 1019 1029 10 220 0 -23 28 467 34 1353 1363 10 0 961 -24 91 427 -32 893 903 10 59 0 -25 429 476 -26 0 1627 10 727 0 -26 210 276 5 47 57 10 0 190 -27 58 39 -25 0 1630 10 604 0 -28 273 300 30 55 65 10 0 995 -29 41 232 16 215 225 10 0 719 -30 25 53 -15 1030 1040 10 999 0 -31 52 18 -11 867 877 10 786 0 -32 27 444 22 1090 1100 10 0 177 -33 178 72 -13 767 777 10 724 0 -34 406 460 -13 729 739 10 469 0 -35 250 328 24 259 269 10 0 374 -36 492 34 5 821 831 10 0 414 -37 412 100 1 523 533 10 0 378 -38 233 87 18 263 273 10 0 400 -39 60 5 -8 1054 1064 10 364 0 -40 406 408 -13 1466 1476 10 705 0 -41 245 42 24 557 567 10 0 444 -42 166 345 -8 1140 1150 10 365 0 -43 440 294 -25 970 980 10 922 0 -44 370 382 -28 894 904 10 334 0 -45 32 319 -21 411 421 10 838 0 -46 480 136 -20 0 1659 10 141 0 -47 371 163 -26 838 848 10 202 0 -48 0 188 26 942 952 10 0 231 -49 438 5 18 559 569 10 0 221 -50 132 477 25 337 347 10 0 476 -51 203 211 -16 1316 1326 10 361 0 -52 2 264 -27 0 1667 10 401 0 -53 231 167 15 0 1830 10 0 632 -54 423 221 9 268 278 10 0 988 -55 459 53 -19 0 1628 10 706 0 -56 386 154 31 1111 1121 10 0 244 -57 130 494 -45 769 779 10 439 0 -58 31 175 24 0 1684 10 0 258 -59 69 423 32 812 822 10 0 24 -60 352 241 -14 802 812 10 127 0 -61 261 201 -22 1524 1534 10 815 0 -62 59 276 11 902 912 10 0 525 -63 146 188 -21 1245 1255 10 210 0 -64 451 62 5 292 302 10 0 633 -65 299 285 -4 1264 1274 10 881 0 -66 142 372 18 162 172 10 0 206 -67 440 201 29 903 913 10 0 530 -68 219 210 14 50 60 10 0 415 -69 64 198 -28 1098 1108 10 416 0 -70 390 249 -16 592 602 10 116 0 -71 9 101 -15 676 686 10 337 0 -72 424 288 -7 1067 1077 10 734 0 -73 77 372 19 211 221 10 0 816 -74 298 264 36 50 60 10 0 713 -75 405 454 -25 0 1659 10 550 0 -76 407 35 -16 0 1649 10 417 0 -77 225 369 38 121 131 10 0 581 -78 347 459 -9 489 499 10 799 0 -79 117 178 -23 1127 1137 10 606 0 -80 132 479 11 257 267 10 0 453 -81 201 66 14 1177 1187 10 0 247 -82 245 176 -1 0 1841 10 176 0 -83 470 138 -17 1399 1409 10 561 0 -84 115 296 -10 1539 1549 10 331 0 -85 348 476 -20 1207 1217 10 437 0 -86 43 210 20 210 220 10 0 248 -87 327 139 -28 1267 1277 10 114 0 -88 49 353 -7 1456 1466 10 739 0 -89 356 256 19 106 116 10 0 883 -90 335 99 -6 1228 1238 10 291 0 -91 363 34 19 282 292 10 0 793 -92 33 278 18 1497 1507 10 0 452 -93 366 288 29 694 704 10 0 970 -94 452 172 -15 618 628 10 230 0 -95 86 189 21 237 247 10 0 528 -96 262 369 15 0 1796 10 0 132 -97 218 403 -18 0 1759 10 468 0 -98 218 12 3 554 564 10 0 362 -99 228 399 -13 0 1765 10 992 0 -100 492 188 -31 725 735 10 991 0 -101 267 174 34 1628 1638 10 0 845 -102 274 441 12 705 715 10 0 272 -103 210 113 28 700 710 10 0 947 -104 370 262 -3 1109 1119 10 301 0 -105 303 186 10 1364 1374 0 0 1006 -106 241 180 -28 1705 1715 10 761 0 -107 100 85 14 361 371 10 0 993 -108 350 199 -21 1211 1221 10 868 0 -109 500 228 8 0 1665 10 0 648 -110 251 238 27 12 22 10 0 260 -111 114 102 -17 517 527 10 963 0 -112 345 146 27 0 1775 10 0 987 -113 21 146 21 497 507 10 0 895 -114 330 147 28 858 868 10 0 87 -115 476 61 36 459 469 10 0 558 -116 386 245 16 489 499 10 0 70 -117 201 278 13 56 66 10 0 681 -118 421 499 -22 1355 1365 10 124 0 -119 426 231 -13 1038 1048 10 756 0 -120 105 137 32 462 472 10 0 666 -121 64 437 11 928 938 10 0 539 -122 181 260 23 0 1846 10 0 15 -123 413 391 -10 0 1700 10 276 0 -124 370 493 22 581 591 10 0 118 -125 447 267 -11 990 1000 10 4 0 -126 232 101 24 356 366 10 0 281 -127 371 332 14 540 550 10 0 60 -128 447 383 -15 0 1678 10 531 0 -129 325 147 -19 1197 1207 10 201 0 -130 489 437 -17 717 727 10 849 0 -131 415 95 -13 1187 1197 10 524 0 -132 331 356 -15 722 732 10 96 0 -133 374 346 27 0 1759 10 0 833 -134 108 37 23 559 569 10 0 443 -135 5 224 -23 0 1669 10 409 0 -136 93 413 17 226 236 10 0 677 -137 210 29 -15 0 1691 10 309 0 -138 136 265 12 114 124 10 0 205 -139 409 155 19 0 1730 10 0 359 -140 111 178 18 156 166 10 0 701 -141 291 251 20 41 51 10 0 46 -142 322 290 -13 0 1833 10 557 0 -143 57 183 -35 0 1711 10 377 0 -144 181 185 -14 1624 1634 10 521 0 -145 7 382 27 780 790 10 0 659 -146 425 448 9 804 814 10 0 174 -147 174 41 -25 0 1693 10 435 0 -148 161 276 8 143 153 10 0 755 -149 398 49 -20 802 812 10 600 0 -150 210 379 12 719 729 10 0 408 -151 60 231 -5 1036 1046 10 902 0 -152 453 360 13 230 240 10 0 579 -153 367 97 -16 998 1008 10 181 0 -154 488 3 3 411 421 10 0 952 -155 44 115 24 246 256 10 0 614 -156 48 293 22 286 296 10 0 392 -157 64 135 -27 0 1697 10 433 0 -158 65 62 15 0 1652 10 0 801 -159 404 207 -31 0 1756 10 209 0 -160 68 303 -25 0 1726 10 959 0 -161 263 418 25 288 298 10 0 440 -162 147 30 26 1119 1129 0 0 1012 -163 384 149 18 1207 1217 0 0 1026 -164 340 416 36 331 341 10 0 310 -165 271 128 12 356 366 10 0 914 -166 89 358 -13 1257 1267 10 335 0 -167 20 480 25 0 1590 0 0 1010 -168 488 173 -20 1220 1230 10 269 0 -169 439 156 -7 0 1704 10 974 0 -170 389 156 27 726 736 0 0 1033 -171 111 392 18 0 1717 10 0 923 -172 267 162 -26 1459 1469 10 752 0 -173 248 176 -17 1411 1421 10 821 0 -174 413 476 -9 1189 1199 10 146 0 -175 352 481 15 1295 1305 10 0 391 -176 264 135 1 889 899 10 0 82 -177 29 462 -22 1320 1330 10 32 0 -178 148 462 10 737 747 10 0 474 -179 44 140 11 878 888 10 0 638 -180 414 378 23 505 515 10 0 954 -181 392 95 16 776 786 10 0 153 -182 216 341 19 664 674 10 0 239 -183 211 411 -3 0 1750 10 926 0 -184 317 45 8 0 1700 0 0 1005 -185 178 150 -21 642 652 10 699 0 -186 428 302 -21 1026 1036 10 835 0 -187 450 45 24 514 524 10 0 311 -188 453 318 -16 384 394 10 910 0 -189 186 135 24 0 1784 0 0 1029 -190 11 403 -5 353 363 10 26 0 -191 433 447 -5 804 814 10 490 0 -192 272 420 -19 1396 1406 10 763 0 -193 429 59 -21 0 1654 10 989 0 -194 200 27 -21 535 545 10 819 0 -195 498 171 -25 1266 1276 10 250 0 -196 487 320 -14 868 878 10 438 0 -197 45 166 -8 1023 1033 10 867 0 -198 490 276 33 248 258 10 0 736 -199 126 391 19 283 293 0 0 1039 -200 92 18 8 1134 1144 10 0 519 -201 293 228 19 48 58 10 0 129 -202 343 205 26 777 787 10 0 47 -203 182 480 -20 0 1676 10 369 0 -204 385 285 13 878 888 10 0 794 -205 44 344 -12 1089 1099 10 138 0 -206 170 347 -18 0 1790 10 66 0 -207 457 492 -40 0 1597 10 294 0 -208 124 448 6 379 389 10 0 880 -209 398 210 31 153 163 10 0 159 -210 75 118 21 419 429 10 0 63 -211 105 474 -18 481 491 10 582 0 -212 134 211 35 130 140 10 0 426 -213 211 248 26 39 49 10 0 547 -214 212 186 -12 1732 1742 10 513 0 -215 492 335 -12 0 1659 10 939 0 -216 497 483 -12 363 373 10 899 0 -217 440 436 -3 902 912 10 511 0 -218 311 203 15 733 743 10 0 613 -219 491 369 -13 0 1647 10 872 0 -220 67 378 26 480 490 10 0 22 -221 383 17 -18 950 960 10 49 0 -222 7 82 25 422 432 10 0 393 -223 342 319 36 115 125 10 0 672 -224 78 406 15 970 980 10 0 455 -225 103 123 8 500 510 10 0 591 -226 241 38 -26 0 1703 10 303 0 -227 224 3 -18 700 710 10 245 0 -228 436 467 -4 746 756 10 822 0 -229 438 488 18 337 347 10 0 722 -230 351 60 15 0 1700 10 0 94 -231 13 214 -26 1364 1374 10 48 0 -232 429 67 -21 742 752 10 292 0 -233 498 456 27 1416 1426 10 0 806 -234 135 400 20 0 1726 10 0 888 -235 215 293 13 55 65 0 0 1023 -236 354 416 -7 0 1720 10 431 0 -237 294 421 -16 1585 1595 10 669 0 -238 208 445 22 1342 1352 0 0 1015 -239 230 320 -19 1202 1212 10 182 0 -240 157 38 3 1058 1068 10 0 1 -241 441 100 31 0 1673 10 0 17 -242 61 170 20 1016 1026 10 0 609 -243 79 467 22 361 371 10 0 375 -244 365 190 -31 1487 1497 10 56 0 -245 282 1 18 0 1664 10 0 227 -246 124 111 15 0 1728 0 0 1024 -247 247 219 -14 0 1884 10 81 0 -248 28 180 -20 396 406 10 86 0 -249 167 488 17 260 270 10 0 875 -250 442 289 25 201 211 10 0 195 -251 136 430 -24 720 730 10 738 0 -252 38 15 3 0 1599 10 0 938 -253 246 314 -21 1455 1465 10 651 0 -254 176 200 17 578 588 10 0 290 -255 337 232 -15 1581 1591 10 21 0 -256 257 133 -32 872 882 10 781 0 -257 295 247 12 1313 1323 0 0 1001 -258 39 162 -24 575 585 10 58 0 -259 79 257 -11 963 973 10 824 0 -260 236 126 -27 0 1791 10 110 0 -261 259 498 33 1085 1095 10 0 12 -262 180 162 9 0 1803 10 0 502 -263 53 466 9 345 355 10 0 769 -264 167 291 -12 1644 1654 10 915 0 -265 89 185 -6 610 620 10 296 0 -266 487 446 9 1350 1360 10 0 730 -267 308 199 -15 1518 1528 10 584 0 -268 481 84 17 516 526 10 0 953 -269 495 227 20 0 1669 10 0 168 -270 397 57 17 1486 1496 10 0 368 -271 372 39 -23 734 744 10 892 0 -272 278 450 -12 1385 1395 10 102 0 -273 292 32 14 239 249 10 0 295 -274 90 496 -22 1405 1415 10 693 0 -275 68 53 -10 749 759 10 503 0 -276 371 423 10 211 221 10 0 123 -277 273 149 -21 1513 1523 10 917 0 -278 297 283 -26 0 1858 10 407 0 -279 120 37 -30 0 1666 10 628 0 -280 371 488 -35 0 1649 10 631 0 -281 206 174 -24 810 820 10 126 0 -282 174 347 -6 1025 1035 10 373 0 -283 330 281 -25 1340 1350 10 649 0 -284 67 451 -4 1226 1236 10 982 0 -285 27 464 -8 1301 1311 10 571 0 -286 361 178 5 0 1783 10 0 955 -287 463 406 23 867 877 10 0 19 -288 456 157 -19 1465 1475 10 535 0 -289 153 244 5 118 128 10 0 583 -290 153 192 -17 876 886 10 254 0 -291 352 63 6 1188 1198 10 0 90 -292 371 71 21 297 307 10 0 232 -293 163 472 -14 663 673 10 925 0 -294 448 495 40 394 404 10 0 207 -295 282 10 -14 0 1673 10 273 0 -296 66 163 6 405 415 10 0 265 -297 314 205 -23 1537 1547 10 676 0 -298 83 169 -2 0 1730 10 556 0 -299 221 291 9 56 66 10 0 429 -300 374 116 9 597 607 10 0 864 -301 418 269 3 0 1746 10 0 104 -302 178 302 -9 897 907 10 853 0 -303 250 57 26 758 768 10 0 226 -304 475 352 33 0 1668 10 0 714 -305 1 252 -10 0 1666 10 616 0 -306 286 356 -33 0 1804 10 704 0 -307 65 82 -35 750 760 10 488 0 -308 154 392 9 171 181 10 0 850 -309 196 56 15 0 1714 10 0 137 -310 366 390 -36 0 1734 10 164 0 -311 436 25 -24 1292 1302 10 187 0 -312 67 352 20 383 393 10 0 430 -313 173 182 25 102 112 10 0 499 -314 390 34 7 1070 1080 10 0 774 -315 18 225 -30 701 711 10 345 0 -316 57 43 -14 0 1632 10 791 0 -317 388 44 -21 1141 1151 10 434 0 -318 269 112 19 1273 1283 0 0 1031 -319 374 260 -15 1781 1791 10 994 0 -320 291 213 23 1268 1278 10 0 541 -321 178 420 -16 1081 1091 10 327 0 -322 389 255 15 795 805 10 0 827 -323 134 194 -23 1662 1672 10 807 0 -324 93 490 2 389 399 10 0 878 -325 64 294 12 1111 1121 10 0 945 -326 493 111 26 551 561 10 0 497 -327 150 484 16 635 645 10 0 321 -328 235 316 -10 666 676 10 630 0 -329 239 15 2 0 1680 10 0 366 -330 193 138 30 671 681 10 0 842 -331 40 278 10 1114 1124 10 0 84 -332 307 52 -12 930 940 10 624 0 -333 161 416 25 0 1727 10 0 981 -334 381 457 28 481 491 10 0 44 -335 55 318 13 322 332 10 0 166 -336 80 279 19 0 1743 10 0 687 -337 48 162 15 227 237 10 0 71 -338 91 27 -11 1192 1202 10 410 0 -339 288 70 -12 189 199 10 971 0 -340 177 404 17 1272 1282 10 0 501 -341 10 237 19 626 636 10 0 707 -342 493 493 20 866 876 10 0 862 -343 440 292 -25 950 960 10 509 0 -344 349 76 -21 1041 1051 10 487 0 -345 47 208 30 236 246 10 0 315 -346 283 454 -10 0 1709 10 710 0 -347 486 324 15 0 1668 10 0 370 -348 392 87 -31 0 1699 10 802 0 -349 122 422 -31 1467 1477 10 566 0 -350 37 281 -26 503 513 10 858 0 -351 413 127 28 841 851 10 0 467 -352 222 499 -25 855 865 10 663 0 -353 211 446 -14 1133 1143 10 946 0 -354 30 7 -15 1199 1209 10 552 0 -355 398 341 -15 949 959 10 998 0 -356 26 67 -22 1327 1337 10 515 0 -357 461 186 -10 0 1695 10 924 0 -358 313 391 -6 0 1761 10 776 0 -359 471 94 -19 1009 1019 10 139 0 -360 341 72 -36 815 825 10 889 0 -361 130 186 16 141 151 10 0 51 -362 257 57 -3 1236 1246 10 98 0 -363 94 344 -13 0 1733 10 551 0 -364 6 53 8 0 1602 10 0 39 -365 146 376 8 244 254 10 0 42 -366 244 13 -2 1023 1033 10 329 0 -367 29 336 -12 342 352 10 737 0 -368 306 42 -17 0 1700 10 270 0 -369 177 486 20 0 1668 10 0 203 -370 489 338 -15 1407 1417 10 347 0 -371 179 318 -5 1131 1141 10 563 0 -372 344 203 14 177 187 10 0 592 -373 149 341 6 414 424 10 0 282 -374 307 412 -24 414 424 10 35 0 -375 68 450 -22 643 653 10 243 0 -376 420 80 -2 0 1675 10 560 0 -377 144 220 35 110 120 10 0 143 -378 497 54 -1 988 998 10 37 0 -379 80 458 30 381 391 10 0 837 -380 84 377 10 0 1706 10 0 843 -381 332 382 2 1020 1030 10 0 751 -382 6 196 -26 1213 1223 10 588 0 -383 104 28 -14 1483 1493 10 441 0 -384 224 320 -26 1294 1304 10 607 0 -385 87 3 13 0 1620 0 0 1002 -386 149 214 -8 0 1808 10 966 0 -387 98 29 14 0 1647 10 0 599 -388 135 30 12 484 494 10 0 795 -389 287 397 -20 574 584 10 626 0 -390 107 374 8 924 934 10 0 860 -391 355 485 -15 1489 1499 10 175 0 -392 51 286 -22 1469 1479 10 156 0 -393 49 118 -25 1081 1091 10 222 0 -394 159 226 16 94 104 10 0 884 -395 185 431 15 397 407 10 0 567 -396 262 92 25 640 650 10 0 456 -397 475 198 -12 0 1685 10 732 0 -398 142 30 -13 1256 1266 10 857 0 -399 481 207 -16 866 876 10 506 0 -400 174 122 -18 603 613 10 38 0 -401 35 263 27 280 290 10 0 52 -402 24 71 11 356 366 10 0 534 -403 173 65 12 458 468 0 0 1036 -404 91 326 -14 0 1739 10 640 0 -405 470 417 -10 747 757 10 903 0 -406 397 153 -13 892 902 10 973 0 -407 295 283 26 0 1860 10 0 278 -408 174 376 -12 0 1768 10 150 0 -409 38 190 23 295 305 10 0 135 -410 16 68 11 0 1619 10 0 338 -411 179 286 -36 351 361 10 532 0 -412 244 422 14 548 558 10 0 671 -413 250 441 -12 766 776 10 817 0 -414 497 18 -5 1140 1150 10 36 0 -415 195 111 -14 1008 1018 10 68 0 -416 26 221 28 1006 1016 10 0 69 -417 442 5 16 330 340 10 0 76 -418 44 496 32 412 422 10 0 549 -419 448 404 15 0 1665 10 0 578 -420 471 427 8 826 836 10 0 682 -421 460 424 -25 1465 1475 10 6 0 -422 461 195 -17 1405 1415 10 554 0 -423 146 313 22 0 1794 10 0 937 -424 19 273 -18 1027 1037 10 685 0 -425 245 461 -18 659 669 10 901 0 -426 69 266 -35 768 778 10 212 0 -427 191 84 -15 877 887 10 514 0 -428 68 160 -31 0 1712 10 979 0 -429 212 47 -9 811 821 10 299 0 -430 80 337 -20 0 1725 10 312 0 -431 412 478 7 0 1636 10 0 236 -432 225 488 28 646 656 10 0 900 -433 105 140 27 0 1733 10 0 157 -434 389 43 21 0 1666 10 0 317 -435 177 156 25 177 187 10 0 147 -436 179 497 -23 1421 1431 10 470 0 -437 377 432 20 841 851 10 0 85 -438 497 296 14 623 633 10 0 196 -439 152 476 45 533 543 10 0 57 -440 277 428 -25 500 510 10 161 0 -441 64 5 14 1139 1149 10 0 383 -442 44 311 -16 0 1701 10 733 0 -443 165 59 -23 953 963 10 134 0 -444 261 138 -24 0 1803 10 41 0 -445 268 351 -29 0 1813 10 615 0 -446 48 150 -8 0 1690 10 726 0 -447 215 79 -31 0 1741 10 623 0 -448 109 56 27 239 249 10 0 573 -449 171 188 -28 631 641 10 703 0 -450 284 457 -3 0 1706 10 457 0 -451 274 442 -21 0 1722 10 893 0 -452 33 286 -18 1556 1566 10 92 0 -453 112 433 -11 0 1686 10 80 0 -454 423 170 -25 523 533 10 695 0 -455 213 283 -15 0 1866 10 224 0 -456 240 34 -25 1570 1580 10 396 0 -457 283 438 3 241 251 10 0 450 -458 324 99 -26 348 358 10 645 0 -459 259 301 25 109 119 10 0 526 -460 189 402 -12 0 1752 10 462 0 -461 215 282 21 1450 1460 10 0 478 -462 166 440 12 207 217 10 0 460 -463 374 232 33 125 135 10 0 512 -464 339 113 -18 771 781 10 767 0 -465 335 46 18 0 1694 10 0 572 -466 313 493 -21 1203 1213 10 11 0 -467 432 66 -28 1081 1091 10 351 0 -468 76 462 18 966 976 10 0 97 -469 397 477 13 0 1645 10 0 34 -470 196 489 23 1040 1050 10 0 436 -471 354 156 20 842 852 10 0 621 -472 171 24 -17 1393 1403 10 673 0 -473 187 73 -28 302 312 10 680 0 -474 243 408 -10 1444 1454 10 178 0 -475 421 387 15 811 821 0 0 1028 -476 141 426 -25 541 551 10 50 0 -477 415 118 -17 0 1704 10 20 0 -478 240 255 -21 1621 1631 10 461 0 -479 162 388 11 1136 1146 10 0 909 -480 413 493 -22 1228 1238 10 749 0 -481 69 414 6 1273 1283 10 0 841 -482 273 70 36 629 639 10 0 785 -483 142 14 18 845 855 0 0 1022 -484 185 434 9 0 1720 10 0 545 -485 360 294 9 0 1797 10 0 559 -486 265 240 9 18 28 10 0 711 -487 280 245 21 30 40 10 0 344 -488 87 51 35 524 534 10 0 307 -489 195 273 22 59 69 10 0 585 -490 422 498 5 702 712 10 0 191 -491 95 64 -16 776 786 10 813 0 -492 63 155 -9 0 1706 10 832 0 -493 24 259 19 0 1689 0 0 1025 -494 376 92 10 0 1713 0 0 1018 -495 83 300 -17 510 520 10 718 0 -496 72 477 46 288 298 10 0 504 -497 380 194 -26 0 1774 10 326 0 -498 72 227 25 574 584 10 0 844 -499 238 123 -25 791 801 10 313 0 -500 188 119 44 985 995 10 0 634 -501 229 322 -17 0 1840 10 340 0 -502 150 68 -9 0 1708 10 262 0 -503 67 24 10 0 1625 10 0 275 -504 63 420 -46 0 1663 10 496 0 -505 339 144 13 1109 1119 10 0 658 -506 454 201 16 0 1706 10 0 399 -507 158 24 18 621 631 10 0 747 -508 365 119 -13 392 402 10 984 0 -509 440 284 25 862 872 10 0 343 -510 417 212 -27 920 930 10 812 0 -511 404 439 3 249 259 10 0 217 -512 472 248 -33 0 1693 10 463 0 -513 235 108 12 0 1773 10 0 214 -514 174 67 15 0 1717 10 0 427 -515 132 151 22 154 164 10 0 356 -516 217 207 -28 1392 1402 10 829 0 -517 162 306 22 129 139 10 0 723 -518 48 366 -20 753 763 10 754 0 -519 209 68 -8 1578 1588 10 200 0 -520 94 497 -11 792 802 10 808 0 -521 110 122 14 1519 1529 10 0 144 -522 274 403 -13 897 907 10 856 0 -523 421 386 -18 834 844 10 814 0 -524 399 175 13 757 767 10 0 131 -525 56 268 -11 1074 1084 10 62 0 -526 322 406 -25 839 849 10 459 0 -527 244 277 18 1311 1321 0 0 1013 -528 105 181 -21 1541 1551 10 95 0 -529 30 97 23 1220 1230 10 0 665 -530 359 246 -29 0 1806 10 67 0 -531 498 457 15 0 1592 10 0 128 -532 190 267 36 0 1853 10 0 411 -533 334 481 -17 340 350 10 618 0 -534 18 24 -11 638 648 10 402 0 -535 482 104 19 817 827 10 0 288 -536 460 328 13 229 239 0 0 1007 -537 320 211 16 1003 1013 0 0 1037 -538 494 165 19 0 1657 10 0 735 -539 167 445 -11 0 1704 10 121 0 -540 340 291 22 480 490 10 0 787 -541 272 234 -23 1600 1610 10 320 0 -542 325 56 13 806 816 10 0 580 -543 71 304 19 699 709 10 0 830 -544 87 311 7 0 1741 10 0 956 -545 207 487 -9 699 709 10 484 0 -546 332 5 -20 1043 1053 10 684 0 -547 161 275 -26 0 1823 10 213 0 -548 268 458 24 533 543 10 0 790 -549 175 352 -32 0 1789 10 418 0 -550 398 476 25 0 1645 10 0 75 -551 51 360 13 1155 1165 10 0 363 -552 21 70 15 781 791 10 0 354 -553 80 251 14 314 324 10 0 2 -554 457 280 17 1010 1020 10 0 422 -555 423 315 -11 0 1731 10 570 0 -556 66 88 2 840 850 10 0 298 -557 479 387 13 407 417 10 0 142 -558 436 123 -36 0 1690 10 115 0 -559 286 244 -9 1294 1304 10 485 0 -560 449 190 2 1150 1160 10 0 376 -561 456 113 17 1237 1247 10 0 83 -562 480 152 -29 0 1665 10 602 0 -563 100 266 5 480 490 10 0 371 -564 343 34 7 735 745 10 0 766 -565 374 306 -14 1004 1014 10 728 0 -566 13 465 31 784 794 10 0 349 -567 230 487 -15 1140 1150 10 395 0 -568 442 153 -24 1199 1209 10 869 0 -569 240 362 -22 0 1803 10 744 0 -570 433 319 11 0 1720 10 0 555 -571 0 422 8 831 841 10 0 285 -572 297 131 -18 1175 1185 10 465 0 -573 71 12 -27 303 313 10 448 0 -574 44 440 24 0 1635 0 0 1038 -575 447 184 27 434 444 0 0 1003 -576 341 59 27 800 810 0 0 1011 -577 132 32 18 794 804 10 0 798 -578 411 396 -15 930 940 10 419 0 -579 450 416 -13 587 597 10 152 0 -580 323 34 -13 0 1687 10 542 0 -581 244 368 -38 424 434 10 77 0 -582 90 477 18 277 287 10 0 211 -583 34 169 -5 494 504 10 289 0 -584 351 128 15 1263 1273 10 0 267 -585 71 282 -22 0 1734 10 489 0 -586 157 269 -14 1586 1596 10 9 0 -587 392 1 11 615 625 10 0 847 -588 39 153 26 808 818 10 0 382 -589 306 229 -33 1330 1340 10 686 0 -590 415 253 21 377 387 10 0 941 -591 92 76 -8 1149 1159 10 225 0 -592 437 98 -14 1124 1134 10 372 0 -593 12 367 27 336 346 10 0 759 -594 448 414 -33 1233 1243 10 912 0 -595 128 113 -7 373 383 10 667 0 -596 43 360 -23 0 1681 10 742 0 -597 102 422 23 236 246 10 0 670 -598 480 131 5 698 708 10 0 8 -599 210 81 -14 0 1742 10 387 0 -600 432 2 20 0 1608 10 0 149 -601 396 83 -22 1596 1606 10 809 0 -602 489 159 29 0 1660 10 0 562 -603 56 75 -19 0 1654 10 990 0 -604 66 31 25 0 1629 10 0 27 -605 460 117 -31 530 540 10 650 0 -606 175 239 23 75 85 10 0 79 -607 217 333 26 421 431 10 0 384 -608 62 375 -38 359 369 10 654 0 -609 82 183 -20 1112 1122 10 242 0 -610 248 214 -29 1489 1499 10 800 0 -611 385 239 21 796 806 10 0 870 -612 371 315 -16 1176 1186 10 760 0 -613 333 163 -15 0 1795 10 218 0 -614 100 66 -24 0 1678 10 155 0 -615 311 422 29 0 1733 10 0 445 -616 153 235 10 98 108 10 0 305 -617 168 109 10 214 224 10 0 997 -618 284 319 17 0 1839 10 0 533 -619 195 464 -14 0 1695 10 688 0 -620 382 9 30 282 292 10 0 653 -621 325 210 -20 943 953 10 471 0 -622 366 334 5 420 430 10 0 957 -623 200 78 31 1003 1013 10 0 447 -624 351 5 12 506 516 10 0 332 -625 197 202 29 1214 1224 10 0 796 -626 270 337 20 0 1826 10 0 389 -627 125 65 17 798 808 10 0 636 -628 120 17 30 289 299 10 0 279 -629 84 255 13 292 302 10 0 731 -630 222 331 10 550 560 10 0 328 -631 332 459 35 379 389 10 0 280 -632 226 175 -15 1704 1714 10 53 0 -633 404 140 -5 1269 1279 10 64 0 -634 223 178 -44 1146 1156 10 500 0 -635 330 308 24 1180 1190 0 0 1017 -636 140 108 -17 1081 1091 10 627 0 -637 34 239 16 0 1699 10 0 647 -638 94 192 -11 1090 1100 10 179 0 -639 458 213 -23 1138 1148 10 678 0 -640 13 314 14 254 264 10 0 404 -641 202 391 30 0 1767 10 0 908 -642 339 41 -9 466 476 10 936 0 -643 224 56 13 1196 1206 10 0 674 -644 345 431 -26 355 365 10 983 0 -645 292 104 26 314 324 10 0 458 -646 318 99 -23 1223 1233 10 773 0 -647 46 248 -16 824 834 10 637 0 -648 482 184 -8 0 1674 10 109 0 -649 411 379 25 0 1709 10 0 283 -650 293 174 31 87 97 10 0 605 -651 169 305 21 172 182 10 0 253 -652 394 47 5 323 333 10 0 839 -653 323 29 -30 1147 1157 10 620 0 -654 65 343 38 217 227 10 0 608 -655 158 179 37 0 1799 0 0 1016 -656 299 353 -23 0 1801 10 811 0 -657 9 233 31 316 326 0 0 1035 -658 330 138 -13 0 1778 10 505 0 -659 48 412 -27 1042 1052 10 145 0 -660 385 17 40 819 829 10 0 968 -661 382 110 -24 1122 1132 10 871 0 -662 336 493 20 0 1658 10 0 907 -663 181 441 25 552 562 10 0 352 -664 162 301 -26 1623 1633 10 944 0 -665 1 101 -23 1267 1277 10 529 0 -666 80 117 -32 834 844 10 120 0 -667 210 219 7 50 60 10 0 595 -668 404 59 -9 923 933 10 14 0 -669 288 439 16 0 1723 10 0 237 -670 149 458 -23 0 1684 10 597 0 -671 257 391 -14 1643 1653 10 412 0 -672 405 349 -36 532 542 10 223 0 -673 191 215 17 68 78 10 0 472 -674 231 29 -13 1236 1246 10 643 0 -675 253 50 -20 236 246 10 805 0 -676 441 177 23 1011 1021 10 0 297 -677 5 445 -17 321 331 10 136 0 -678 463 253 23 1057 1067 10 0 639 -679 435 180 37 235 245 10 0 797 -680 198 85 28 273 283 10 0 473 -681 59 388 -13 673 683 10 117 0 -682 373 418 -8 1269 1279 10 420 0 -683 142 80 -26 0 1714 10 740 0 -684 441 7 20 402 412 10 0 546 -685 33 268 18 706 716 10 0 424 -686 355 174 33 0 1786 10 0 589 -687 228 260 -19 1616 1626 10 336 0 -688 114 460 14 0 1665 10 0 619 -689 337 41 -12 1012 1022 10 692 0 -690 154 374 36 0 1759 10 0 18 -691 235 13 -10 369 379 10 784 0 -692 303 78 12 179 189 10 0 689 -693 103 464 22 1283 1293 10 0 274 -694 325 311 22 1332 1342 10 0 877 -695 306 235 25 57 67 10 0 454 -696 382 360 26 188 198 10 0 828 -697 235 288 18 40 50 10 0 779 -698 0 356 -21 0 1644 10 777 0 -699 178 135 21 0 1780 10 0 185 -700 226 423 15 207 217 10 0 897 -701 15 11 -18 962 972 10 140 0 -702 144 35 26 239 249 10 0 980 -703 176 199 28 89 99 10 0 449 -704 247 306 33 56 66 10 0 306 -705 396 417 13 0 1694 10 0 40 -706 289 220 19 49 59 10 0 55 -707 23 235 -19 1033 1043 10 341 0 -708 137 377 23 169 179 10 0 958 -709 400 71 17 1382 1392 10 0 962 -710 261 359 10 109 119 10 0 346 -711 438 127 -9 951 961 10 486 0 -712 318 280 -12 0 1841 10 771 0 -713 333 293 -36 627 637 10 74 0 -714 436 295 -33 538 548 10 304 0 -715 62 94 16 0 1671 10 0 940 -716 495 355 -19 1253 1263 10 861 0 -717 13 394 15 383 393 10 0 3 -718 172 292 17 0 1827 10 0 495 -719 14 232 -16 0 1679 10 29 0 -720 437 90 -13 595 605 10 931 0 -721 214 274 24 0 1872 0 0 1009 -722 420 383 -18 992 1002 10 229 0 -723 120 261 -22 803 813 10 517 0 -724 179 75 13 750 760 10 0 33 -725 484 224 -14 310 320 10 928 0 -726 214 245 8 36 46 10 0 446 -727 395 474 26 397 407 10 0 25 -728 368 311 14 936 946 10 0 565 -729 199 203 20 1467 1477 10 0 866 -730 485 428 -9 1500 1510 10 266 0 -731 86 199 -13 0 1744 10 629 0 -732 447 272 12 394 404 10 0 397 -733 40 304 16 1155 1165 10 0 442 -734 475 267 7 790 800 10 0 72 -735 482 141 -19 1021 1031 10 538 0 -736 489 274 -33 544 554 10 198 0 -737 26 342 12 331 341 10 0 367 -738 139 438 24 0 1697 10 0 251 -739 12 358 7 1234 1244 10 0 88 -740 125 61 26 622 632 10 0 683 -741 360 284 -24 0 1800 10 967 0 -742 29 358 23 621 631 10 0 596 -743 285 247 -14 0 1880 10 873 0 -744 248 386 22 388 398 10 0 569 -745 415 207 18 910 920 10 0 916 -746 130 247 17 120 130 0 0 1019 -747 172 66 -18 1313 1323 10 507 0 -748 92 259 4 409 419 10 0 792 -749 379 486 22 682 692 10 0 480 -750 452 484 26 0 1606 10 0 848 -751 268 288 -2 1277 1287 10 381 0 -752 349 43 26 229 239 10 0 172 -753 225 269 -35 0 1884 10 932 0 -754 50 383 20 270 280 10 0 518 -755 110 251 -8 508 518 10 148 0 -756 461 182 13 639 649 10 0 119 -757 255 487 19 408 418 10 0 840 -758 133 202 -22 471 481 10 788 0 -759 34 329 -27 1053 1063 10 593 0 -760 368 452 16 680 690 10 0 612 -761 242 106 28 1278 1288 10 0 106 -762 171 303 18 0 1820 10 0 770 -763 329 456 19 0 1695 10 0 192 -764 490 286 29 0 1673 10 0 906 -765 61 214 -29 0 1723 10 882 0 -766 365 74 -7 858 868 10 564 0 -767 321 149 18 0 1792 10 0 464 -768 84 453 -7 0 1653 10 977 0 -769 26 442 -9 1354 1364 10 263 0 -770 180 283 -18 754 764 10 762 0 -771 394 322 12 1035 1045 10 0 712 -772 348 348 -21 945 955 10 775 0 -773 309 161 23 593 603 10 0 646 -774 385 58 -7 0 1681 10 314 0 -775 228 287 21 43 53 10 0 772 -776 312 453 6 560 570 10 0 358 -777 35 344 21 873 883 10 0 698 -778 393 98 -8 763 773 10 904 0 -779 208 488 -18 488 498 10 697 0 -780 235 33 -14 1347 1357 10 10 0 -781 140 137 32 580 590 10 0 256 -782 405 187 -12 1261 1271 10 935 0 -783 330 371 -10 0 1770 10 951 0 -784 265 0 10 0 1665 10 0 691 -785 295 89 -36 752 762 10 482 0 -786 3 23 11 0 1580 10 0 31 -787 363 225 -22 866 876 10 540 0 -788 148 208 22 0 1805 10 0 758 -789 466 362 -24 0 1672 10 986 0 -790 267 290 -24 0 1872 10 548 0 -791 98 2 14 602 612 10 0 316 -792 131 246 -4 842 852 10 748 0 -793 418 75 -19 458 468 10 91 0 -794 366 260 -13 1530 1540 10 204 0 -795 138 28 -12 1107 1117 10 388 0 -796 209 212 -29 0 1860 10 625 0 -797 443 167 -37 553 563 10 679 0 -798 156 65 -18 1047 1057 10 577 0 -799 279 355 9 176 186 10 0 78 -800 206 172 29 798 808 10 0 610 -801 32 94 -15 940 950 10 158 0 -802 301 239 31 52 62 10 0 348 -803 471 368 -14 0 1665 10 874 0 -804 133 273 20 119 129 10 0 820 -805 253 74 20 0 1739 10 0 675 -806 470 405 -27 0 1646 10 233 0 -807 77 172 23 796 806 10 0 323 -808 77 465 11 275 285 10 0 520 -809 466 96 22 1393 1403 10 0 601 -810 402 277 5 1448 1458 0 0 1014 -811 267 374 23 611 621 10 0 656 -812 450 194 27 635 645 10 0 510 -813 89 65 16 730 740 10 0 491 -814 429 389 18 434 444 10 0 523 -815 202 28 22 0 1688 10 0 61 -816 46 389 -19 0 1669 10 73 0 -817 246 407 12 322 332 10 0 413 -818 452 110 14 0 1670 10 0 823 -819 213 185 21 74 84 10 0 194 -820 134 276 -20 143 153 10 804 0 -821 262 97 17 957 967 10 0 173 -822 469 489 4 565 575 10 0 228 -823 364 71 -14 1358 1368 10 818 0 -824 68 240 11 804 814 10 0 259 -825 494 468 -13 362 372 10 949 0 -826 439 222 22 990 1000 0 0 1030 -827 386 225 -15 929 939 10 322 0 -828 434 359 -26 1402 1412 10 696 0 -829 103 177 28 636 646 10 0 516 -830 89 322 -19 1031 1041 10 543 0 -831 307 249 -21 1387 1397 10 887 0 -832 30 155 9 1290 1300 10 0 492 -833 401 314 -27 986 996 10 133 0 -834 217 357 23 1430 1440 10 0 898 -835 373 421 21 247 257 10 0 186 -836 5 281 16 1382 1392 10 0 964 -837 173 474 -30 1295 1305 10 379 0 -838 36 301 21 219 229 10 0 45 -839 429 169 -5 913 923 10 652 0 -840 195 450 -19 0 1708 10 757 0 -841 95 382 -6 0 1712 10 481 0 -842 225 121 -30 0 1784 10 330 0 -843 10 407 -10 444 454 10 380 0 -844 221 269 -25 1275 1285 10 498 0 -845 264 180 -34 1691 1701 10 101 0 -846 168 59 6 376 386 10 0 930 -847 281 96 -11 0 1758 10 587 0 -848 387 349 -26 0 1746 10 750 0 -849 398 329 17 167 177 10 0 130 -850 239 486 -9 1492 1502 10 308 0 -851 237 420 15 1344 1354 0 0 1020 -852 346 354 8 0 1774 0 0 1032 -853 172 314 9 555 565 10 0 302 -854 233 230 20 26 36 10 0 927 -855 79 80 19 1392 1402 0 0 1008 -856 243 402 13 415 425 10 0 522 -857 117 110 13 0 1722 10 0 398 -858 66 314 26 194 204 10 0 350 -859 58 391 16 892 902 10 0 16 -860 142 360 -8 1542 1552 10 390 0 -861 492 326 19 1214 1224 10 0 716 -862 381 328 -20 0 1763 10 342 0 -863 62 236 -25 568 578 10 885 0 -864 344 70 -9 1156 1166 10 300 0 -865 151 81 -4 1568 1578 10 976 0 -866 240 240 -20 1710 1720 10 729 0 -867 46 163 8 936 946 10 0 197 -868 455 168 21 877 887 10 0 108 -869 428 202 24 914 924 10 0 568 -870 432 199 -21 0 1726 10 611 0 -871 391 112 24 1010 1020 10 0 661 -872 451 305 13 208 218 10 0 219 -873 214 311 14 70 80 10 0 743 -874 465 367 14 0 1671 10 0 803 -875 164 473 -17 306 316 10 249 0 -876 364 173 30 190 200 10 0 921 -877 274 261 -22 1717 1727 10 694 0 -878 133 455 -2 818 828 10 324 0 -879 351 481 -7 332 342 10 943 0 -880 115 395 -6 825 835 10 208 0 -881 297 304 4 71 81 10 0 65 -882 7 194 29 0 1666 10 0 765 -883 409 255 -19 0 1756 10 89 0 -884 87 213 -16 636 646 10 394 0 -885 60 246 25 0 1725 10 0 863 -886 3 471 13 0 1584 0 0 1004 -887 418 251 21 1207 1217 10 0 831 -888 153 362 -20 0 1767 10 234 0 -889 323 77 36 0 1728 10 0 360 -890 143 158 12 148 158 10 0 948 -891 351 148 -18 471 481 10 911 0 -892 426 38 23 619 629 10 0 271 -893 226 316 21 70 80 10 0 451 -894 347 192 -14 1498 1508 10 978 0 -895 102 6 -21 1468 1478 10 113 0 -896 41 120 22 706 716 10 0 985 -897 247 443 -15 340 350 10 700 0 -898 218 271 -23 1584 1594 10 834 0 -899 376 385 12 184 194 10 0 216 -900 241 402 -28 0 1763 10 432 0 -901 213 399 18 244 254 10 0 425 -902 32 191 5 596 606 10 0 151 -903 441 374 10 233 243 10 0 405 -904 376 113 8 0 1729 10 0 778 -905 215 434 -5 0 1728 10 919 0 -906 499 316 -29 0 1658 10 764 0 -907 318 497 -20 0 1659 10 662 0 -908 256 441 -30 0 1724 10 641 0 -909 174 397 -11 1255 1265 10 479 0 -910 468 360 16 284 294 10 0 188 -911 287 256 18 37 47 10 0 891 -912 448 397 33 876 886 10 0 594 -913 352 487 -17 912 922 10 972 0 -914 253 118 -12 557 567 10 165 0 -915 159 299 12 1026 1036 10 0 264 -916 351 233 -18 1433 1443 10 745 0 -917 268 113 21 0 1777 10 0 277 -918 164 332 19 1290 1300 0 0 1021 -919 88 484 5 0 1631 10 0 905 -920 360 488 -18 0 1653 10 7 0 -921 343 166 -30 886 896 10 876 0 -922 497 266 25 758 768 10 0 43 -923 138 406 -18 1226 1236 10 171 0 -924 420 224 10 439 449 10 0 357 -925 231 410 14 0 1754 10 0 293 -926 199 438 3 0 1721 10 0 183 -927 219 215 -20 0 1869 10 854 0 -928 365 274 14 117 127 10 0 725 -929 481 454 -23 0 1607 10 969 0 -930 187 61 -6 555 565 10 846 0 -931 372 97 13 224 234 10 0 720 -932 187 263 35 64 74 10 0 753 -933 371 427 23 0 1701 10 0 5 -934 74 215 -1 239 249 10 1000 0 -935 375 145 12 939 949 10 0 782 -936 365 28 9 278 288 10 0 642 -937 118 314 -22 348 358 10 423 0 -938 60 29 -3 1373 1383 10 252 0 -939 478 300 12 0 1682 10 0 215 -940 33 152 -16 1330 1340 10 715 0 -941 347 184 -21 1089 1099 10 590 0 -942 94 40 24 1078 1088 0 0 1034 -943 290 328 7 154 164 10 0 879 -944 96 346 26 0 1734 10 0 664 -945 97 288 -12 1294 1304 10 325 0 -946 176 470 14 557 567 10 0 353 -947 206 97 -28 0 1756 10 103 0 -948 210 133 -12 699 709 10 890 0 -949 489 457 13 0 1599 10 0 825 -950 418 399 20 448 458 10 0 996 -951 392 491 10 0 1636 10 0 783 -952 437 19 -3 1024 1034 10 154 0 -953 495 83 -17 0 1619 10 268 0 -954 468 352 -23 778 788 10 180 0 -955 390 120 -5 1014 1024 10 286 0 -956 80 357 -7 540 550 10 544 0 -957 394 310 -5 0 1759 10 622 0 -958 61 441 -23 554 564 10 708 0 -959 52 303 25 451 461 10 0 160 -960 391 202 14 0 1767 0 0 1040 -961 36 451 -34 0 1622 10 23 0 -962 276 84 -17 0 1747 10 709 0 -963 130 140 17 204 214 10 0 111 -964 16 287 -16 0 1679 10 836 0 -965 292 136 28 791 801 10 0 13 -966 53 204 8 1065 1075 10 0 386 -967 359 287 24 0 1800 10 0 741 -968 309 29 -40 1304 1314 10 660 0 -969 473 491 23 0 1587 10 0 929 -970 273 255 -29 1502 1512 10 93 0 -971 263 153 12 0 1818 10 0 339 -972 328 458 17 778 788 10 0 913 -973 401 164 13 0 1742 10 0 406 -974 480 119 7 638 648 10 0 169 -975 488 96 22 1076 1086 0 0 1027 -976 149 98 4 1175 1185 10 0 865 -977 49 437 7 437 447 10 0 768 -978 440 77 14 0 1659 10 0 894 -979 43 135 31 236 246 10 0 428 -980 188 151 -26 1307 1317 10 702 0 -981 175 422 -25 1456 1466 10 333 0 -982 48 437 4 814 824 10 0 284 -983 334 403 26 174 184 10 0 644 -984 372 115 13 374 384 10 0 508 -985 111 192 -22 1209 1219 10 896 0 -986 357 290 24 114 124 10 0 789 -987 331 134 -27 1134 1144 10 112 0 -988 495 199 -9 347 357 10 54 0 -989 441 60 21 1469 1479 10 0 193 -990 51 89 19 1218 1228 10 0 603 -991 452 206 31 502 512 10 0 100 -992 195 386 13 146 156 10 0 99 -993 172 24 -14 1462 1472 10 107 0 -994 408 318 15 0 1743 10 0 319 -995 410 399 -30 244 254 10 28 0 -996 413 345 -20 1228 1238 10 950 0 -997 215 129 -10 1129 1139 10 617 0 -998 380 350 15 876 886 10 0 355 -999 19 38 15 857 867 10 0 30 -1000 166 247 1 84 94 10 0 934 -1001 295 247 -12 1313 1323 10 257 0 -1002 87 3 -13 0 1620 10 385 0 -1003 447 184 -27 434 444 10 575 0 -1004 3 471 -13 0 1584 10 886 0 -1005 317 45 -8 0 1700 10 184 0 -1006 303 186 -10 1364 1374 10 105 0 -1007 460 328 -13 229 239 10 536 0 -1008 79 80 -19 1392 1402 10 855 0 -1009 214 274 -24 0 1872 10 721 0 -1010 20 480 -25 0 1590 10 167 0 -1011 341 59 -27 800 810 10 576 0 -1012 147 30 -26 1119 1129 10 162 0 -1013 244 277 -18 1311 1321 10 527 0 -1014 402 277 -5 1448 1458 10 810 0 -1015 208 445 -22 1342 1352 10 238 0 -1016 158 179 -37 0 1799 10 655 0 -1017 330 308 -24 1180 1190 10 635 0 -1018 376 92 -10 0 1713 10 494 0 -1019 130 247 -17 120 130 10 746 0 -1020 237 420 -15 1344 1354 10 851 0 -1021 164 332 -19 1290 1300 10 918 0 -1022 142 14 -18 845 855 10 483 0 -1023 215 293 -13 55 65 10 235 0 -1024 124 111 -15 0 1728 10 246 0 -1025 24 259 -19 0 1689 10 493 0 -1026 384 149 -18 1207 1217 10 163 0 -1027 488 96 -22 1076 1086 10 975 0 -1028 421 387 -15 811 821 10 475 0 -1029 186 135 -24 0 1784 10 189 0 -1030 439 222 -22 990 1000 10 826 0 -1031 269 112 -19 1273 1283 10 318 0 -1032 346 354 -8 0 1774 10 852 0 -1033 389 156 -27 726 736 10 170 0 -1034 94 40 -24 1078 1088 10 942 0 -1035 9 233 -31 316 326 10 657 0 -1036 173 65 -12 458 468 10 403 0 -1037 320 211 -16 1003 1013 10 537 0 -1038 44 440 -24 0 1635 10 574 0 -1039 126 391 -19 283 293 10 199 0 -1040 391 202 -14 0 1767 10 960 0 diff --git a/jsprit-instances/instances/lilim/1000/LR1103.txt b/jsprit-instances/instances/lilim/1000/LR1103.txt deleted file mode 100644 index 78ea548ba..000000000 --- a/jsprit-instances/instances/lilim/1000/LR1103.txt +++ /dev/null @@ -1,1048 +0,0 @@ -250 200 1 -0 250 250 0 0 1925 0 0 0 -1 171 34 21 1153 1163 10 0 815 -2 67 190 -15 1183 1193 10 337 0 -3 80 400 -6 0 1689 10 481 0 -4 439 237 -29 949 959 10 67 0 -5 377 385 -23 876 886 10 310 0 -6 449 428 -12 1257 1267 10 228 0 -7 342 481 -35 1450 1460 10 631 0 -8 466 149 16 1196 1206 10 0 153 -9 83 290 -5 0 1744 10 289 0 -10 251 63 -19 997 1007 10 930 0 -11 328 491 -3 0 1662 10 457 0 -12 260 472 -5 0 1693 10 413 0 -13 290 145 -15 1292 1302 10 309 0 -14 266 221 9 0 1882 10 0 406 -15 164 320 -6 1105 1115 10 373 0 -16 52 412 22 0 1660 10 0 504 -17 485 104 21 804 814 10 0 378 -18 144 331 -13 0 1782 10 117 0 -19 387 394 8 0 1717 10 0 825 -20 472 57 -14 0 1621 10 818 0 -21 343 276 -29 0 1819 10 93 0 -22 104 349 20 0 1739 10 0 166 -23 28 467 -22 1353 1363 10 243 0 -24 91 427 -46 893 903 10 496 0 -25 429 476 23 0 1627 10 0 34 -26 210 276 -20 0 1868 10 312 0 -27 58 39 -35 0 1630 10 488 0 -28 273 300 30 55 65 10 0 790 -29 41 232 16 0 1706 10 0 315 -30 25 53 23 1030 1040 10 0 246 -31 52 18 -32 867 877 10 534 0 -32 27 444 -4 1090 1100 10 982 0 -33 178 72 23 767 777 10 0 980 -34 406 460 -23 729 739 10 25 0 -35 250 328 24 259 269 10 0 704 -36 492 34 -8 0 1591 10 839 0 -37 412 100 -13 0 1695 10 204 0 -38 233 87 18 0 1752 10 0 513 -39 60 5 18 1054 1064 10 0 385 -40 406 408 15 0 1693 10 0 381 -41 245 42 24 557 567 10 0 821 -42 166 345 -22 1140 1150 10 489 0 -43 440 294 -12 970 980 10 732 0 -44 370 382 11 894 904 10 0 862 -45 32 319 -13 411 421 10 335 0 -46 480 136 22 0 1659 10 0 131 -47 371 163 -30 838 848 10 876 0 -48 0 188 26 0 1658 10 0 231 -49 438 5 -26 0 1607 10 326 0 -50 132 477 -11 337 347 10 80 0 -51 203 211 20 0 1854 10 0 449 -52 2 264 40 0 1667 10 0 836 -53 231 167 15 0 1830 10 0 106 -54 423 221 9 0 1740 10 0 831 -55 459 53 20 0 1628 10 0 778 -56 386 154 -16 1111 1121 10 181 0 -57 130 494 6 0 1644 10 0 779 -58 31 175 -10 0 1684 10 616 0 -59 69 423 -27 812 822 10 958 0 -60 352 241 5 802 812 10 0 735 -61 261 201 -12 1524 1534 10 165 0 -62 59 276 11 902 912 10 0 687 -63 146 188 -19 1245 1255 10 528 0 -64 451 62 5 0 1640 10 0 668 -65 299 285 -23 1264 1274 10 142 0 -66 142 372 18 0 1753 10 0 549 -67 440 201 29 903 913 10 0 4 -68 219 210 14 50 60 10 0 144 -69 64 198 -18 0 1722 10 140 0 -70 390 249 21 592 602 10 0 787 -71 9 101 16 676 686 10 0 552 -72 424 288 -10 1067 1077 10 924 0 -73 77 372 19 211 221 10 0 843 -74 298 264 36 50 60 10 0 712 -75 405 454 -23 0 1659 10 118 0 -76 407 35 -2 0 1649 10 169 0 -77 225 369 38 0 1794 10 0 253 -78 347 459 25 489 499 10 0 907 -79 117 178 28 0 1764 10 0 788 -80 132 479 11 257 267 10 0 50 -81 201 66 -22 0 1725 10 798 0 -82 245 176 20 0 1841 10 0 785 -83 470 138 -13 1399 1409 10 756 0 -84 115 296 -28 1539 1549 10 430 0 -85 348 476 -17 1207 1217 10 522 0 -86 43 210 20 210 220 10 0 416 -87 327 139 -10 1267 1277 10 271 0 -88 49 353 -12 1456 1466 10 205 0 -89 356 256 19 106 116 10 0 678 -90 335 99 25 0 1742 10 0 221 -91 363 34 19 282 292 10 0 624 -92 33 278 -5 0 1697 10 305 0 -93 366 288 29 694 704 10 0 21 -94 452 172 9 0 1699 10 0 676 -95 86 189 -23 237 247 10 731 0 -96 262 369 -6 0 1796 10 776 0 -97 218 403 15 0 1759 10 0 900 -98 218 12 3 0 1675 0 0 1022 -99 228 399 14 0 1765 10 0 501 -100 492 188 33 0 1666 10 0 168 -101 267 174 -23 1628 1638 10 773 0 -102 274 441 12 0 1723 10 0 237 -103 210 113 -33 700 710 10 947 0 -104 370 262 -19 1109 1119 10 139 0 -105 303 186 -13 1364 1374 10 505 0 -106 241 180 -15 1705 1715 10 53 0 -107 100 85 -2 0 1693 10 556 0 -108 350 199 21 0 1803 10 0 297 -109 500 228 8 0 1665 10 0 922 -110 251 238 -26 0 1903 10 407 0 -111 114 102 -19 0 1715 10 855 0 -112 345 146 -20 0 1775 10 854 0 -113 21 146 -6 497 507 10 296 0 -114 330 147 -15 858 868 10 218 0 -115 476 61 -2 0 1621 10 711 0 -116 386 245 -15 0 1779 10 322 0 -117 201 278 13 0 1859 10 0 18 -118 421 499 23 0 1613 10 0 75 -119 426 231 -14 1038 1048 10 928 0 -120 105 137 -22 462 472 10 515 0 -121 64 437 11 928 938 10 0 284 -122 181 260 -27 0 1846 10 264 0 -123 413 391 -23 0 1700 10 969 0 -124 370 493 -10 581 591 10 391 0 -125 447 267 19 990 1000 10 0 554 -126 232 101 -19 0 1765 10 610 0 -127 371 332 14 540 550 10 0 771 -128 447 383 -17 0 1678 10 806 0 -129 325 147 14 0 1788 10 0 767 -130 489 437 29 717 727 10 0 233 -131 415 95 -22 1187 1197 10 46 0 -132 331 356 -16 0 1782 10 760 0 -133 374 346 27 0 1759 10 0 649 -134 108 37 -28 559 569 10 279 0 -135 5 224 -29 0 1669 10 882 0 -136 93 413 17 226 236 10 0 738 -137 210 29 -23 0 1691 10 795 0 -138 136 265 -12 0 1801 10 426 0 -139 409 155 19 0 1730 10 0 104 -140 111 178 18 156 166 10 0 69 -141 291 251 20 41 51 10 0 319 -142 322 290 23 0 1833 10 0 65 -143 57 183 -17 0 1711 10 940 0 -144 181 185 -14 0 1821 10 68 0 -145 7 382 -26 780 790 10 858 0 -146 425 448 9 804 814 10 0 912 -147 174 41 -26 0 1693 10 702 0 -148 161 276 8 143 153 10 0 585 -149 398 49 21 0 1666 10 0 314 -150 210 379 -15 719 729 10 851 0 -151 60 231 32 0 1725 10 0 748 -152 453 360 13 230 240 10 0 750 -153 367 97 -16 0 1723 10 8 0 -154 488 3 -32 0 1572 10 953 0 -155 44 115 24 246 256 10 0 338 -156 48 293 -18 0 1709 10 719 0 -157 64 135 11 0 1697 10 0 492 -158 65 62 15 0 1652 10 0 472 -159 404 207 6 0 1756 10 0 357 -160 68 303 -7 0 1726 10 544 0 -161 263 418 25 288 298 10 0 425 -162 147 30 -18 1119 1129 10 483 0 -163 384 149 18 0 1748 10 0 935 -164 340 416 36 0 1727 10 0 682 -165 271 128 12 0 1792 10 0 61 -166 89 358 -20 0 1722 10 22 0 -167 20 480 25 0 1590 0 0 1005 -168 488 173 -33 0 1665 10 100 0 -169 439 156 2 0 1704 10 0 76 -170 389 156 27 726 736 10 0 658 -171 111 392 -9 0 1717 10 308 0 -172 267 162 -19 1459 1469 10 318 0 -173 248 176 32 0 1841 10 0 761 -174 413 476 -10 1189 1199 10 951 0 -175 352 481 -22 1295 1305 10 749 0 -176 264 135 1 0 1800 10 0 987 -177 29 462 17 1320 1330 10 0 282 -178 148 462 -23 737 747 10 476 0 -179 44 140 -26 878 888 10 588 0 -180 414 378 23 505 515 10 0 485 -181 392 95 16 776 786 10 0 56 -182 216 341 -26 664 674 10 607 0 -183 211 411 -31 0 1750 10 203 0 -184 317 45 8 0 1700 10 0 660 -185 178 150 -26 642 652 10 516 0 -186 428 302 -24 1026 1036 10 343 0 -187 450 45 -14 0 1629 10 372 0 -188 453 318 30 0 1701 10 0 219 -189 186 135 -37 0 1784 10 655 0 -190 11 403 18 353 363 10 0 717 -191 433 447 -7 804 814 10 207 0 -192 272 420 7 1396 1406 10 0 671 -193 429 59 -21 0 1654 10 989 0 -194 200 27 22 535 545 10 0 864 -195 498 171 -14 0 1655 10 648 0 -196 487 320 21 868 878 10 0 565 -197 45 166 -15 1023 1033 10 446 0 -198 490 276 -21 0 1674 10 590 0 -199 126 391 19 0 1728 10 0 909 -200 92 18 8 0 1635 10 0 976 -201 293 228 19 0 1867 10 0 267 -202 343 205 26 0 1812 10 0 679 -203 182 480 31 0 1676 10 0 183 -204 385 285 13 878 888 10 0 37 -205 44 344 12 1089 1099 10 0 88 -206 170 347 15 0 1790 10 0 384 -207 457 492 7 0 1597 10 0 191 -208 124 448 6 379 389 10 0 251 -209 398 210 -13 0 1762 10 827 0 -210 75 118 21 419 429 10 0 275 -211 105 474 -19 481 491 10 768 0 -212 134 211 -23 130 140 10 606 0 -213 211 248 26 39 49 10 0 547 -214 212 186 11 1732 1742 0 0 1020 -215 492 335 -13 0 1659 10 872 0 -216 497 483 12 363 373 10 0 822 -217 440 436 -18 0 1650 10 814 0 -218 311 203 15 733 743 10 0 114 -219 491 369 -30 0 1647 10 188 0 -220 67 378 -13 480 490 10 235 0 -221 383 17 -25 950 960 10 90 0 -222 7 82 25 422 432 10 0 857 -223 342 319 -20 0 1800 10 996 0 -224 78 406 -15 970 980 10 961 0 -225 103 123 8 500 510 10 0 428 -226 241 38 -30 0 1703 10 780 0 -227 224 3 -27 700 710 10 691 0 -228 436 467 12 746 756 10 0 6 -229 438 488 -25 0 1612 10 550 0 -230 351 60 -18 0 1700 10 842 0 -231 13 214 -26 1364 1374 10 48 0 -232 429 67 -11 742 752 10 793 0 -233 498 456 -29 0 1593 10 130 0 -234 135 400 20 0 1726 10 0 479 -235 215 293 13 55 65 10 0 220 -236 354 416 10 0 1720 10 0 852 -237 294 421 -12 1585 1595 10 102 0 -238 208 445 22 0 1716 10 0 484 -239 230 320 -25 1202 1212 10 878 0 -240 157 38 -24 0 1684 10 942 0 -241 441 100 31 0 1673 10 0 720 -242 61 170 20 1016 1026 10 0 807 -243 79 467 22 361 371 10 0 23 -244 365 190 -14 1487 1497 10 605 0 -245 282 1 18 0 1664 10 0 366 -246 124 111 -23 0 1728 10 30 0 -247 247 219 17 0 1884 0 0 1011 -248 28 180 -18 0 1683 10 884 0 -249 167 488 17 260 270 10 0 436 -250 442 289 25 0 1720 10 0 810 -251 136 430 -6 0 1702 10 208 0 -252 38 15 3 0 1599 10 0 354 -253 246 314 -38 1455 1465 10 77 0 -254 176 200 17 578 588 10 0 796 -255 337 232 -12 1581 1591 10 510 0 -256 257 133 -13 0 1798 10 580 0 -257 295 247 12 1313 1323 0 0 1015 -258 39 162 18 575 585 10 0 867 -259 79 257 -26 963 973 10 495 0 -260 236 126 -24 0 1791 10 499 0 -261 259 498 -14 1085 1095 10 412 0 -262 180 162 -13 0 1803 10 307 0 -263 53 466 9 345 355 10 0 574 -264 167 291 27 1644 1654 10 0 122 -265 89 185 16 610 620 10 0 386 -266 487 446 -10 0 1608 10 903 0 -267 308 199 -19 0 1838 10 201 0 -268 481 84 -24 516 526 10 376 0 -269 495 227 -7 0 1669 10 725 0 -270 397 57 -12 0 1673 10 692 0 -271 372 39 10 0 1672 10 0 87 -272 278 450 29 1385 1395 0 0 1029 -273 292 32 -1 239 249 10 847 0 -274 90 496 13 0 1622 10 0 693 -275 68 53 -21 749 759 10 210 0 -276 371 423 10 0 1704 0 0 1030 -277 273 149 14 0 1812 10 0 360 -278 297 283 28 0 1858 0 0 1037 -279 120 37 28 0 1666 10 0 134 -280 371 488 -10 0 1649 10 879 0 -281 206 174 -32 0 1828 10 781 0 -282 174 347 -17 0 1792 10 177 0 -283 330 281 -3 1340 1350 10 301 0 -284 67 451 -11 1226 1236 10 121 0 -285 27 464 -31 0 1606 10 520 0 -286 361 178 -30 0 1783 10 891 0 -287 463 406 -13 867 877 10 949 0 -288 456 157 -30 0 1689 10 508 0 -289 153 244 5 118 128 10 0 9 -290 153 192 -27 0 1802 10 433 0 -291 352 63 -21 1188 1198 10 434 0 -292 371 71 21 0 1699 10 0 311 -293 163 472 9 663 673 10 0 432 -294 448 495 -4 394 404 10 881 0 -295 282 10 30 0 1673 10 0 784 -296 66 163 6 405 415 10 0 113 -297 314 205 -21 1537 1547 10 108 0 -298 83 169 21 0 1730 10 0 393 -299 221 291 -11 0 1865 10 880 0 -300 374 116 9 597 607 10 0 351 -301 418 269 3 0 1746 10 0 283 -302 178 302 -8 897 907 10 411 0 -303 250 57 26 0 1722 10 0 805 -304 475 352 33 0 1668 10 0 555 -305 1 252 5 0 1666 10 0 92 -306 286 356 30 0 1804 10 0 355 -307 65 82 13 750 760 10 0 262 -308 154 392 9 171 181 10 0 171 -309 196 56 15 0 1714 10 0 13 -310 366 390 23 0 1734 10 0 5 -311 436 25 -21 1292 1302 10 292 0 -312 67 352 20 0 1706 10 0 26 -313 173 182 25 102 112 10 0 829 -314 390 34 -21 1070 1080 10 149 0 -315 18 225 -16 0 1682 10 29 0 -316 57 43 -14 0 1632 10 521 0 -317 388 44 22 1141 1151 10 0 984 -318 269 112 19 1273 1283 10 0 172 -319 374 260 -20 0 1791 10 141 0 -320 291 213 -16 1268 1278 10 537 0 -321 178 420 -29 1081 1091 10 453 0 -322 389 255 15 795 805 10 0 116 -323 134 194 -1 1662 1672 10 638 0 -324 93 490 -18 389 399 10 582 0 -325 64 294 -25 0 1724 10 959 0 -326 493 111 26 551 561 10 0 49 -327 150 484 16 0 1661 10 0 352 -328 235 316 2 666 676 0 0 1003 -329 239 15 2 0 1680 10 0 542 -330 193 138 30 0 1790 10 0 643 -331 40 278 10 0 1704 10 0 964 -332 307 52 23 0 1709 10 0 689 -333 161 416 -7 0 1727 10 977 0 -334 381 457 -7 481 491 10 943 0 -335 55 318 13 322 332 10 0 45 -336 80 279 -28 0 1743 10 525 0 -337 48 162 15 227 237 10 0 2 -338 91 27 -24 1192 1202 10 155 0 -339 288 70 24 189 199 10 0 674 -340 177 404 17 0 1745 10 0 408 -341 10 237 19 626 636 10 0 392 -342 493 493 20 866 876 0 0 1041 -343 440 292 24 950 960 10 0 186 -344 349 76 -28 1041 1051 10 965 0 -345 47 208 30 236 246 10 0 409 -346 283 454 -32 0 1709 10 533 0 -347 486 324 -14 0 1668 10 438 0 -348 392 87 -30 0 1699 10 359 0 -349 122 422 -13 1467 1477 10 886 0 -350 37 281 -27 503 513 10 442 0 -351 413 127 -9 841 851 10 300 0 -352 222 499 -16 855 865 10 327 0 -353 211 446 15 0 1716 10 0 460 -354 30 7 -3 1199 1209 10 252 0 -355 398 341 -30 949 959 10 306 0 -356 26 67 15 1327 1337 0 0 1001 -357 461 186 -6 0 1695 10 159 0 -358 313 391 5 0 1761 10 0 920 -359 471 94 30 0 1645 10 0 348 -360 341 72 -14 815 825 10 277 0 -361 130 186 -17 141 151 10 673 0 -362 257 57 18 0 1722 10 0 396 -363 94 344 -26 0 1733 10 944 0 -364 6 53 -11 0 1602 10 786 0 -365 146 376 -36 244 254 10 690 0 -366 244 13 -18 1023 1033 10 245 0 -367 29 336 -13 0 1678 10 698 0 -368 306 42 11 0 1700 10 0 962 -369 177 486 -14 0 1668 10 837 0 -370 489 338 -19 1407 1417 10 861 0 -371 179 318 -32 1131 1141 10 418 0 -372 344 203 14 177 187 10 0 187 -373 149 341 6 414 424 10 0 15 -374 307 412 -29 0 1744 10 615 0 -375 68 450 18 643 653 10 0 769 -376 420 80 24 0 1675 10 0 268 -377 144 220 -16 0 1805 10 394 0 -378 497 54 -21 988 998 10 17 0 -379 80 458 -23 381 391 10 597 0 -380 84 377 -22 0 1706 10 517 0 -381 332 382 -15 1020 1030 10 40 0 -382 6 196 20 1213 1223 0 0 1046 -383 104 28 8 0 1650 10 0 740 -384 224 320 -15 1294 1304 10 206 0 -385 87 3 -18 0 1620 10 39 0 -386 149 214 -16 0 1808 10 265 0 -387 98 29 -22 0 1647 10 896 0 -388 135 30 -18 0 1667 10 577 0 -389 287 397 12 574 584 10 0 526 -390 107 374 -20 924 934 10 681 0 -391 355 485 10 0 1658 10 0 124 -392 51 286 -19 1469 1479 10 341 0 -393 49 118 -21 0 1675 10 298 0 -394 159 226 16 94 104 10 0 377 -395 185 431 -16 0 1723 10 840 0 -396 262 92 -18 0 1757 10 362 0 -397 475 198 -33 0 1685 10 463 0 -398 142 30 32 0 1670 10 0 993 -399 481 207 34 0 1681 10 0 506 -400 174 122 14 603 613 10 0 502 -401 35 263 27 280 290 10 0 593 -402 24 71 11 356 366 10 0 990 -403 173 65 12 458 468 10 0 429 -404 91 326 4 0 1739 10 0 596 -405 470 417 -8 747 757 10 420 0 -406 397 153 -9 892 902 10 14 0 -407 295 283 26 0 1860 10 0 110 -408 174 376 -17 0 1768 10 340 0 -409 38 190 -30 0 1695 10 345 0 -410 16 68 -10 0 1619 10 503 0 -411 179 286 8 0 1836 10 0 302 -412 244 422 14 548 558 10 0 261 -413 250 441 5 0 1724 10 0 12 -414 497 18 -22 0 1577 10 975 0 -415 195 111 -7 1008 1018 10 667 0 -416 26 221 -20 1006 1016 10 86 0 -417 442 5 -31 330 340 10 650 0 -418 44 496 32 0 1595 10 0 371 -419 448 404 -25 0 1665 10 579 0 -420 471 427 8 0 1632 10 0 405 -421 460 424 11 1465 1475 10 0 594 -422 461 195 -25 0 1697 10 988 0 -423 146 313 22 0 1794 10 0 937 -424 19 273 25 1027 1037 0 0 1032 -425 245 461 -25 659 669 10 161 0 -426 69 266 12 0 1734 10 0 138 -427 191 84 -13 877 887 10 724 0 -428 68 160 -8 0 1712 10 225 0 -429 212 47 -12 811 821 10 403 0 -430 80 337 28 0 1725 10 0 84 -431 412 478 -21 0 1636 10 835 0 -432 225 488 -9 0 1676 10 293 0 -433 105 140 27 0 1733 10 0 290 -434 389 43 21 0 1666 10 0 291 -435 177 156 -32 0 1796 10 927 0 -436 179 497 -17 1421 1431 10 249 0 -437 377 432 -26 841 851 10 983 0 -438 497 296 14 623 633 10 0 347 -439 152 476 45 533 543 10 0 545 -440 277 428 -9 500 510 10 799 0 -441 64 5 -25 1139 1149 10 604 0 -442 44 311 27 0 1701 10 0 350 -443 165 59 27 953 963 10 0 747 -444 261 138 1 0 1803 0 0 1035 -445 268 351 -15 0 1813 10 474 0 -446 48 150 15 0 1690 10 0 197 -447 215 79 5 0 1741 0 0 1036 -448 109 56 27 239 249 10 0 701 -449 171 188 -20 631 641 10 51 0 -450 284 457 -20 0 1706 10 626 0 -451 274 442 17 0 1722 10 0 656 -452 33 286 -25 0 1696 10 885 0 -453 112 433 29 0 1686 10 0 321 -454 423 170 -9 523 533 10 486 0 -455 213 283 -21 0 1866 10 461 0 -456 240 34 28 0 1699 0 0 1024 -457 283 438 3 241 251 10 0 11 -458 324 99 -18 0 1747 10 473 0 -459 259 301 25 0 1864 10 0 751 -460 189 402 -15 0 1752 10 353 0 -461 215 282 21 1450 1460 10 0 455 -462 166 440 -13 0 1708 10 670 0 -463 374 232 33 125 135 10 0 397 -464 339 113 14 0 1752 0 0 1027 -465 335 46 -2 0 1694 10 599 0 -466 313 493 -17 1203 1213 10 972 0 -467 432 66 -14 0 1657 10 978 0 -468 76 462 -23 966 976 10 708 0 -469 397 477 13 0 1645 10 0 511 -470 196 489 -14 1040 1050 10 946 0 -471 354 156 20 0 1775 10 0 706 -472 171 24 -15 1393 1403 10 158 0 -473 187 73 18 302 312 10 0 458 -474 243 408 15 0 1757 10 0 445 -475 421 387 -26 0 1696 10 696 0 -476 141 426 23 541 551 10 0 178 -477 415 118 -25 0 1704 10 695 0 -478 240 255 -14 1621 1631 10 844 0 -479 162 388 -20 1136 1146 10 234 0 -480 413 493 26 0 1623 10 0 705 -481 69 414 6 1273 1283 10 0 3 -482 273 70 -27 629 639 10 675 0 -483 142 14 18 845 855 10 0 162 -484 185 434 -22 0 1720 10 238 0 -485 360 294 -23 0 1797 10 180 0 -486 265 240 9 18 28 10 0 454 -487 280 245 21 30 40 10 0 530 -488 87 51 35 0 1658 10 0 27 -489 195 273 22 59 69 10 0 42 -490 422 498 -26 702 712 10 727 0 -491 95 64 -33 776 786 10 758 0 -492 63 155 -11 0 1706 10 157 0 -493 24 259 -23 0 1689 10 755 0 -494 376 92 10 0 1713 0 0 1007 -495 83 300 26 510 520 10 0 259 -496 72 477 46 288 298 10 0 24 -497 380 194 3 0 1774 0 0 1023 -498 72 227 25 0 1736 10 0 824 -499 238 123 24 791 801 10 0 260 -500 188 119 -17 985 995 10 627 0 -501 229 322 -14 0 1840 10 99 0 -502 150 68 -14 0 1708 10 400 0 -503 67 24 10 0 1625 10 0 410 -504 63 420 -22 0 1663 10 16 0 -505 339 144 13 1109 1119 10 0 105 -506 454 201 -34 0 1706 10 399 0 -507 158 24 18 0 1671 10 0 846 -508 365 119 30 392 402 10 0 288 -509 440 284 25 862 872 10 0 714 -510 417 212 12 920 930 10 0 255 -511 404 439 -13 0 1672 10 469 0 -512 472 248 -23 0 1693 10 883 0 -513 235 108 -18 0 1773 10 38 0 -514 174 67 -10 0 1717 10 617 0 -515 132 151 22 154 164 10 0 120 -516 217 207 26 0 1861 10 0 185 -517 162 306 22 129 139 10 0 380 -518 48 366 29 0 1683 10 0 551 -519 209 68 27 0 1729 0 0 1028 -520 94 497 31 0 1623 10 0 285 -521 110 122 14 0 1726 10 0 316 -522 274 403 17 0 1761 10 0 85 -523 421 386 29 834 844 10 0 957 -524 399 175 13 757 767 10 0 921 -525 56 268 28 1074 1084 10 0 336 -526 322 406 -12 0 1744 10 389 0 -527 244 277 -30 1311 1321 10 641 0 -528 105 181 19 0 1755 10 0 63 -529 30 97 -9 1220 1230 10 832 0 -530 359 246 -21 0 1806 10 487 0 -531 498 457 -12 0 1592 10 899 0 -532 190 267 36 0 1853 10 0 770 -533 334 481 32 0 1670 10 0 346 -534 18 24 32 638 648 10 0 31 -535 482 104 -2 0 1641 10 560 0 -536 460 328 13 0 1691 10 0 716 -537 320 211 16 1003 1013 10 0 320 -538 494 165 19 0 1657 10 0 602 -539 167 445 7 0 1704 10 0 619 -540 340 291 22 480 490 10 0 741 -541 272 234 26 1600 1610 0 0 1043 -542 325 56 -2 806 816 10 329 0 -543 71 304 19 699 709 10 0 586 -544 87 311 7 0 1741 10 0 160 -545 207 487 -45 0 1675 10 439 0 -546 332 5 -7 1043 1053 10 564 0 -547 161 275 -26 0 1823 10 213 0 -548 268 458 24 533 543 10 0 834 -549 175 352 -18 0 1789 10 66 0 -550 398 476 25 0 1645 10 0 229 -551 51 360 -29 1155 1165 10 518 0 -552 21 70 -16 781 791 10 71 0 -553 80 251 14 314 324 10 0 723 -554 457 280 -19 1010 1020 10 125 0 -555 423 315 -33 0 1731 10 304 0 -556 66 88 2 0 1670 10 0 107 -557 479 387 13 0 1649 0 0 1006 -558 436 123 40 0 1690 10 0 868 -559 286 244 -13 1294 1304 10 743 0 -560 449 190 2 1150 1160 10 0 535 -561 456 113 -13 1237 1247 10 973 0 -562 480 152 26 0 1665 10 0 592 -563 100 266 5 480 490 0 0 1042 -564 343 34 7 0 1680 10 0 546 -565 374 306 -21 1004 1014 10 196 0 -566 13 465 -5 784 794 10 919 0 -567 230 487 20 1140 1150 0 0 1013 -568 442 153 29 0 1700 10 0 575 -569 240 362 -21 0 1803 10 893 0 -570 433 319 -29 0 1720 10 764 0 -571 0 422 8 831 841 0 0 1016 -572 297 131 25 0 1788 10 0 645 -573 71 12 2 303 313 10 0 999 -574 44 440 -9 0 1635 10 263 0 -575 447 184 -29 0 1708 10 568 0 -576 341 59 -36 800 810 10 889 0 -577 132 32 18 794 804 10 0 388 -578 411 396 -20 0 1698 10 950 0 -579 450 416 25 0 1656 10 0 419 -580 323 34 13 0 1687 10 0 256 -581 244 368 25 424 434 10 0 630 -582 90 477 18 277 287 10 0 324 -583 34 169 11 494 504 10 0 902 -584 351 128 15 0 1757 10 0 598 -585 71 282 -8 0 1734 10 148 0 -586 157 269 -19 1586 1596 10 543 0 -587 392 1 11 615 625 10 0 620 -588 39 153 26 808 818 10 0 179 -589 306 229 -32 1330 1340 10 613 0 -590 415 253 21 377 387 10 0 198 -591 92 76 4 1149 1159 10 0 683 -592 437 98 -26 1124 1134 10 562 0 -593 12 367 -27 0 1650 10 401 0 -594 448 414 -11 0 1658 10 421 0 -595 128 113 -12 373 383 10 890 0 -596 43 360 -4 0 1681 10 404 0 -597 102 422 23 236 246 10 0 379 -598 480 131 -15 698 708 10 584 0 -599 210 81 2 0 1742 10 0 465 -600 432 2 -7 0 1608 10 974 0 -601 396 83 -22 1596 1606 10 809 0 -602 489 159 -19 0 1660 10 538 0 -603 56 75 24 0 1654 10 0 801 -604 66 31 25 0 1629 10 0 441 -605 460 117 14 530 540 10 0 244 -606 175 239 23 75 85 10 0 212 -607 217 333 26 0 1826 10 0 182 -608 62 375 16 359 369 10 0 956 -609 82 183 -24 1112 1122 10 666 0 -610 248 214 19 0 1879 10 0 126 -611 385 239 -31 796 806 10 802 0 -612 371 315 18 0 1778 10 0 722 -613 333 163 32 0 1795 10 0 589 -614 100 66 -8 0 1678 10 726 0 -615 311 422 29 0 1733 10 0 374 -616 153 235 10 98 108 10 0 58 -617 168 109 10 0 1752 10 0 514 -618 284 319 17 0 1839 10 0 783 -619 195 464 -7 0 1695 10 539 0 -620 382 9 -11 0 1641 10 587 0 -621 325 210 -15 0 1830 10 941 0 -622 366 334 5 420 430 10 0 803 -623 200 78 31 0 1736 10 0 632 -624 351 5 -19 506 516 10 91 0 -625 197 202 29 1214 1224 0 0 1021 -626 270 337 20 0 1826 10 0 450 -627 125 65 17 798 808 10 0 500 -628 120 17 -21 289 299 10 699 0 -629 84 255 -10 0 1749 10 934 0 -630 222 331 -25 550 560 10 581 0 -631 332 459 35 379 389 10 0 7 -632 226 175 -31 1704 1714 10 623 0 -633 404 140 -7 1269 1279 10 870 0 -634 223 178 -29 1146 1156 10 800 0 -635 330 308 -18 1180 1190 10 911 0 -636 140 108 -17 0 1736 10 963 0 -637 34 239 -9 0 1699 10 647 0 -638 94 192 1 1090 1100 10 0 323 -639 458 213 22 1138 1148 10 0 661 -640 13 314 14 0 1670 10 0 739 -641 202 391 30 0 1767 10 0 527 -642 339 41 6 466 476 10 0 914 -643 224 56 -30 1196 1206 10 330 0 -644 345 431 12 355 365 10 0 933 -645 292 104 -25 314 324 10 572 0 -646 318 99 -21 1223 1233 10 917 0 -647 46 248 9 824 834 10 0 637 -648 482 184 14 0 1674 10 0 195 -649 411 379 -27 0 1709 10 133 0 -650 293 174 31 87 97 10 0 417 -651 169 305 -18 172 182 10 762 0 -652 394 47 5 323 333 10 0 709 -653 323 29 -26 1147 1157 10 752 0 -654 65 343 38 217 227 10 0 759 -655 158 179 37 0 1799 10 0 189 -656 299 353 -17 0 1801 10 451 0 -657 9 233 31 0 1674 10 0 765 -658 330 138 -27 0 1778 10 170 0 -659 48 412 7 1042 1052 10 0 888 -660 385 17 -8 819 829 10 184 0 -661 382 110 -22 0 1723 10 639 0 -662 336 493 -16 0 1658 10 669 0 -663 181 441 -3 552 562 10 850 0 -664 162 301 -23 1623 1633 10 742 0 -665 1 101 -16 1267 1277 10 715 0 -666 80 117 24 834 844 10 0 609 -667 210 219 7 50 60 10 0 415 -668 404 59 -5 923 933 10 64 0 -669 288 439 16 0 1723 10 0 662 -670 149 458 13 0 1684 10 0 462 -671 257 391 -7 1643 1653 10 192 0 -672 405 349 15 532 542 10 0 998 -673 191 215 17 68 78 10 0 361 -674 231 29 -24 1236 1246 10 339 0 -675 253 50 27 236 246 10 0 482 -676 441 177 -9 1011 1021 10 94 0 -677 5 445 -11 0 1602 10 808 0 -678 463 253 -19 0 1702 10 89 0 -679 435 180 -26 235 245 10 202 0 -680 198 85 28 273 283 10 0 997 -681 59 388 20 673 683 10 0 390 -682 373 418 -36 1269 1279 10 164 0 -683 142 80 -4 0 1714 10 591 0 -684 441 7 20 402 412 10 0 766 -685 33 268 -21 706 716 10 838 0 -686 355 174 33 0 1786 0 0 1031 -687 228 260 -11 1616 1626 10 62 0 -688 114 460 14 0 1665 10 0 923 -689 337 41 -23 1012 1022 10 332 0 -690 154 374 36 0 1759 10 0 365 -691 235 13 27 369 379 10 0 227 -692 303 78 12 179 189 10 0 270 -693 103 464 -13 0 1656 10 274 0 -694 325 311 -27 0 1819 10 713 0 -695 306 235 25 57 67 10 0 477 -696 382 360 26 188 198 10 0 475 -697 235 288 18 0 1875 0 0 1002 -698 0 356 13 0 1644 10 0 367 -699 178 135 21 0 1780 10 0 628 -700 226 423 15 207 217 10 0 897 -701 15 11 -27 962 972 10 448 0 -702 144 35 26 239 249 10 0 147 -703 176 199 28 0 1826 10 0 729 -704 247 306 -24 0 1859 10 35 0 -705 396 417 -26 0 1694 10 480 0 -706 289 220 -20 0 1866 10 471 0 -707 23 235 43 1033 1043 10 0 733 -708 137 377 23 169 179 10 0 468 -709 400 71 -5 0 1682 10 652 0 -710 261 359 10 0 1806 0 0 1034 -711 438 127 2 951 961 10 0 115 -712 318 280 -36 0 1841 10 74 0 -713 333 293 27 627 637 10 0 694 -714 436 295 -25 0 1724 10 509 0 -715 62 94 16 0 1671 10 0 665 -716 495 355 -13 1253 1263 10 536 0 -717 13 394 -18 383 393 10 190 0 -718 172 292 17 0 1827 0 0 1038 -719 14 232 18 0 1679 10 0 156 -720 437 90 -31 0 1669 10 241 0 -721 214 274 -21 0 1872 10 775 0 -722 420 383 -18 0 1700 10 612 0 -723 120 261 -14 803 813 10 553 0 -724 179 75 13 750 760 10 0 427 -725 484 224 7 310 320 10 0 269 -726 214 245 8 36 46 10 0 614 -727 395 474 26 397 407 10 0 490 -728 368 311 14 0 1783 10 0 833 -729 199 203 -28 1467 1477 10 703 0 -730 485 428 -14 1500 1510 10 929 0 -731 86 199 23 0 1744 10 0 95 -732 447 272 12 394 404 10 0 43 -733 40 304 -43 1155 1165 10 707 0 -734 475 267 -22 790 800 10 826 0 -735 482 141 -5 1021 1031 10 60 0 -736 489 274 31 544 554 10 0 939 -737 26 342 12 331 341 10 0 841 -738 139 438 -17 0 1697 10 136 0 -739 12 358 -14 1234 1244 10 640 0 -740 125 61 -8 0 1689 10 383 0 -741 360 284 -22 0 1800 10 540 0 -742 29 358 23 621 631 10 0 664 -743 285 247 13 0 1880 10 0 559 -744 248 386 -18 0 1779 10 901 0 -745 415 207 18 910 920 10 0 782 -746 130 247 17 0 1795 10 0 1000 -747 172 66 -27 1313 1323 10 443 0 -748 92 259 -32 409 419 10 151 0 -749 379 486 22 682 692 10 0 175 -750 452 484 -13 0 1606 10 152 0 -751 268 288 -25 0 1873 10 459 0 -752 349 43 26 229 239 10 0 653 -753 225 269 -16 0 1884 10 898 0 -754 50 383 20 270 280 10 0 859 -755 110 251 23 508 518 10 0 493 -756 461 182 13 0 1694 10 0 83 -757 255 487 19 0 1678 10 0 981 -758 133 202 33 471 481 10 0 491 -759 34 329 -38 1053 1063 10 654 0 -760 368 452 16 680 690 10 0 132 -761 242 106 -32 1278 1288 10 173 0 -762 171 303 18 0 1820 10 0 651 -763 329 456 -27 0 1695 10 913 0 -764 490 286 29 0 1673 10 0 570 -765 61 214 -31 0 1723 10 657 0 -766 365 74 -20 0 1705 10 684 0 -767 321 149 -14 0 1792 10 129 0 -768 84 453 19 0 1653 10 0 211 -769 26 442 -18 0 1620 10 375 0 -770 180 283 -36 754 764 10 532 0 -771 394 322 -14 1035 1045 10 127 0 -772 348 348 -9 945 955 10 848 0 -773 309 161 23 0 1809 10 0 101 -774 385 58 -9 0 1681 10 936 0 -775 228 287 21 43 53 10 0 721 -776 312 453 6 560 570 10 0 96 -777 35 344 21 873 883 0 0 1004 -778 393 98 -20 0 1707 10 55 0 -779 208 488 -6 0 1674 10 57 0 -780 235 33 30 1347 1357 10 0 226 -781 140 137 32 580 590 10 0 281 -782 405 187 -18 1261 1271 10 745 0 -783 330 371 -17 0 1770 10 618 0 -784 265 0 -30 0 1665 10 295 0 -785 295 89 -20 752 762 10 82 0 -786 3 23 11 0 1580 10 0 364 -787 363 225 -21 866 876 10 70 0 -788 148 208 -28 0 1805 10 79 0 -789 466 362 -14 0 1672 10 874 0 -790 267 290 -30 0 1872 10 28 0 -791 98 2 -31 0 1625 10 979 0 -792 131 246 -29 842 852 10 863 0 -793 418 75 11 0 1673 10 0 232 -794 366 260 -17 1530 1540 10 797 0 -795 138 28 23 1107 1117 10 0 137 -796 209 212 -17 0 1860 10 254 0 -797 443 167 17 553 563 10 0 794 -798 156 65 22 1047 1057 10 0 81 -799 279 355 9 176 186 10 0 440 -800 206 172 29 798 808 10 0 634 -801 32 94 -24 940 950 10 603 0 -802 301 239 31 52 62 10 0 611 -803 471 368 -5 0 1665 10 622 0 -804 133 273 20 0 1796 0 0 1044 -805 253 74 -26 0 1739 10 303 0 -806 470 405 17 0 1646 10 0 128 -807 77 172 -20 0 1726 10 242 0 -808 77 465 11 275 285 10 0 677 -809 466 96 22 1393 1403 10 0 601 -810 402 277 -25 0 1761 10 250 0 -811 267 374 -12 611 621 10 817 0 -812 450 194 27 635 645 0 0 1040 -813 89 65 16 0 1670 10 0 865 -814 429 389 18 434 444 10 0 217 -815 202 28 -21 0 1688 10 1 0 -816 46 389 22 0 1669 10 0 860 -817 246 407 12 0 1758 10 0 811 -818 452 110 14 0 1670 10 0 20 -819 213 185 21 74 84 10 0 948 -820 134 276 15 0 1797 0 0 1010 -821 262 97 -24 957 967 10 41 0 -822 469 489 -12 565 575 10 216 0 -823 364 71 5 0 1703 0 0 1009 -824 68 240 -25 804 814 10 498 0 -825 494 468 -8 362 372 10 19 0 -826 439 222 22 0 1724 10 0 734 -827 386 225 13 929 939 10 0 209 -828 434 359 -25 1402 1412 10 995 0 -829 103 177 -25 636 646 10 313 0 -830 89 322 21 1031 1041 10 0 945 -831 307 249 -9 1387 1397 10 54 0 -832 30 155 9 0 1676 10 0 529 -833 401 314 -14 986 996 10 728 0 -834 217 357 -24 1430 1440 10 548 0 -835 373 421 21 247 257 10 0 431 -836 5 281 -40 1382 1392 10 52 0 -837 173 474 14 0 1679 10 0 369 -838 36 301 21 219 229 10 0 685 -839 429 169 8 0 1719 10 0 36 -840 195 450 16 0 1708 10 0 395 -841 95 382 -12 0 1712 10 737 0 -842 225 121 18 0 1784 10 0 230 -843 10 407 -19 444 454 10 73 0 -844 221 269 14 0 1881 10 0 478 -845 264 180 33 1691 1701 0 0 1018 -846 168 59 -18 0 1708 10 507 0 -847 281 96 1 0 1758 10 0 273 -848 387 349 9 0 1746 10 0 772 -849 398 329 -16 0 1748 10 910 0 -850 239 486 3 0 1679 10 0 663 -851 237 420 15 0 1745 10 0 150 -852 346 354 -10 0 1774 10 236 0 -853 172 314 9 555 565 10 0 918 -854 233 230 20 26 36 10 0 112 -855 79 80 19 1392 1402 10 0 111 -856 243 402 -13 0 1763 10 992 0 -857 117 110 -25 0 1722 10 222 0 -858 66 314 26 194 204 10 0 145 -859 58 391 -20 0 1677 10 754 0 -860 142 360 -22 1542 1552 10 816 0 -861 492 326 19 1214 1224 10 0 370 -862 381 328 -11 0 1763 10 44 0 -863 62 236 29 0 1727 10 0 792 -864 344 70 -22 0 1712 10 194 0 -865 151 81 -16 1568 1578 10 813 0 -866 240 240 35 1710 1720 0 0 1026 -867 46 163 -18 0 1694 10 258 0 -868 455 168 -40 877 887 10 558 0 -869 428 202 -14 914 924 10 960 0 -870 432 199 7 0 1726 10 0 633 -871 391 112 -24 1010 1020 10 955 0 -872 451 305 13 208 218 10 0 215 -873 214 311 14 70 80 10 0 908 -874 465 367 14 0 1671 10 0 789 -875 164 473 26 306 316 10 0 905 -876 364 173 30 190 200 10 0 47 -877 274 261 20 1717 1727 0 0 1008 -878 133 455 25 818 828 10 0 239 -879 351 481 10 332 342 10 0 280 -880 115 395 11 825 835 10 0 299 -881 297 304 4 0 1844 10 0 294 -882 7 194 29 0 1666 10 0 135 -883 409 255 23 0 1756 10 0 512 -884 87 213 18 0 1748 10 0 248 -885 60 246 25 0 1725 10 0 452 -886 3 471 13 0 1584 10 0 349 -887 418 251 21 0 1747 10 0 904 -888 153 362 -7 0 1767 10 659 0 -889 323 77 36 0 1728 10 0 576 -890 143 158 12 0 1774 10 0 595 -891 351 148 30 471 481 10 0 286 -892 426 38 23 619 629 10 0 952 -893 226 316 21 70 80 10 0 569 -894 347 192 -21 1498 1508 10 916 0 -895 102 6 -32 1468 1478 10 938 0 -896 41 120 22 706 716 10 0 387 -897 247 443 -15 340 350 10 700 0 -898 218 271 16 0 1877 10 0 753 -899 376 385 12 184 194 10 0 531 -900 241 402 -15 0 1763 10 97 0 -901 213 399 18 244 254 10 0 744 -902 32 191 -11 596 606 10 583 0 -903 441 374 10 233 243 10 0 266 -904 376 113 -21 0 1729 10 887 0 -905 215 434 -26 0 1728 10 875 0 -906 499 316 18 0 1658 10 0 954 -907 318 497 -25 0 1659 10 78 0 -908 256 441 -14 0 1724 10 873 0 -909 174 397 -19 1255 1265 10 199 0 -910 468 360 16 0 1671 10 0 849 -911 287 256 18 37 47 10 0 635 -912 448 397 -9 876 886 10 146 0 -913 352 487 27 912 922 10 0 763 -914 253 118 -6 0 1783 10 642 0 -915 159 299 12 0 1812 0 0 1025 -916 351 233 21 0 1813 10 0 894 -917 268 113 21 0 1777 10 0 646 -918 164 332 -9 0 1797 10 853 0 -919 88 484 5 0 1631 10 0 566 -920 360 488 -5 0 1653 10 358 0 -921 343 166 -13 886 896 10 524 0 -922 497 266 -8 758 768 10 109 0 -923 138 406 -14 1226 1236 10 688 0 -924 420 224 10 0 1744 10 0 72 -925 231 410 14 0 1754 0 0 1039 -926 199 438 3 0 1721 0 0 1017 -927 219 215 32 0 1869 10 0 435 -928 365 274 14 117 127 10 0 119 -929 481 454 14 0 1607 10 0 730 -930 187 61 19 555 565 10 0 10 -931 372 97 13 224 234 0 0 1033 -932 187 263 35 64 74 0 0 1045 -933 371 427 -12 0 1701 10 644 0 -934 74 215 10 239 249 10 0 629 -935 375 145 -18 939 949 10 163 0 -936 365 28 9 278 288 10 0 774 -937 118 314 -22 348 358 10 423 0 -938 60 29 32 1373 1383 10 0 895 -939 478 300 -31 0 1682 10 736 0 -940 33 152 17 0 1677 10 0 143 -941 347 184 15 1089 1099 10 0 621 -942 94 40 24 1078 1088 10 0 240 -943 290 328 7 154 164 10 0 334 -944 96 346 26 0 1734 10 0 363 -945 97 288 -21 0 1758 10 830 0 -946 176 470 14 557 567 10 0 470 -947 206 97 33 0 1756 10 0 103 -948 210 133 -21 0 1792 10 819 0 -949 489 457 13 0 1599 10 0 287 -950 418 399 20 448 458 10 0 578 -951 392 491 10 0 1636 10 0 174 -952 437 19 -23 1024 1034 10 892 0 -953 495 83 32 0 1619 10 0 154 -954 468 352 -18 0 1675 10 906 0 -955 390 120 24 0 1724 10 0 871 -956 80 357 -16 0 1715 10 608 0 -957 394 310 -29 0 1759 10 523 0 -958 61 441 27 554 564 10 0 59 -959 52 303 25 0 1711 10 0 325 -960 391 202 14 0 1767 10 0 869 -961 36 451 15 0 1622 10 0 224 -962 276 84 -11 0 1747 10 368 0 -963 130 140 17 204 214 10 0 636 -964 16 287 -10 0 1679 10 331 0 -965 292 136 28 0 1794 10 0 344 -966 53 204 8 0 1713 0 0 1012 -967 359 287 24 0 1800 10 0 970 -968 309 29 11 1304 1314 10 0 971 -969 473 491 23 0 1587 10 0 123 -970 273 255 -24 0 1892 10 967 0 -971 263 153 -11 0 1818 10 968 0 -972 328 458 17 778 788 10 0 466 -973 401 164 13 0 1742 10 0 561 -974 480 119 7 0 1651 10 0 600 -975 488 96 22 0 1632 10 0 414 -976 149 98 -8 0 1733 10 200 0 -977 49 437 7 437 447 10 0 333 -978 440 77 14 0 1659 10 0 467 -979 43 135 31 236 246 10 0 791 -980 188 151 -23 1307 1317 10 33 0 -981 175 422 -19 1456 1466 10 757 0 -982 48 437 4 814 824 10 0 32 -983 334 403 26 0 1741 10 0 437 -984 372 115 -22 0 1734 10 317 0 -985 111 192 11 1209 1219 0 0 1014 -986 357 290 24 114 124 10 0 994 -987 331 134 -1 0 1774 10 176 0 -988 495 199 25 347 357 10 0 422 -989 441 60 21 1469 1479 10 0 193 -990 51 89 -11 1218 1228 10 402 0 -991 452 206 31 502 512 0 0 1019 -992 195 386 13 146 156 10 0 856 -993 172 24 -32 1462 1472 10 398 0 -994 408 318 -24 0 1743 10 986 0 -995 410 399 25 244 254 10 0 828 -996 413 345 20 1228 1238 10 0 223 -997 215 129 -28 0 1790 10 680 0 -998 380 350 -15 876 886 10 672 0 -999 19 38 -2 0 1602 10 573 0 -1000 166 247 -17 0 1831 10 746 0 -1001 26 67 -15 1327 1337 10 356 0 -1002 235 288 -18 0 1875 10 697 0 -1003 235 316 -2 666 676 10 328 0 -1004 35 344 -21 873 883 10 777 0 -1005 20 480 -25 0 1590 10 167 0 -1006 479 387 -13 0 1649 10 557 0 -1007 376 92 -10 0 1713 10 494 0 -1008 274 261 -20 1717 1727 10 877 0 -1009 364 71 -5 0 1703 10 823 0 -1010 134 276 -15 0 1797 10 820 0 -1011 247 219 -17 0 1884 10 247 0 -1012 53 204 -8 0 1713 10 966 0 -1013 230 487 -20 1140 1150 10 567 0 -1014 111 192 -11 1209 1219 10 985 0 -1015 295 247 -12 1313 1323 10 257 0 -1016 0 422 -8 831 841 10 571 0 -1017 199 438 -3 0 1721 10 926 0 -1018 264 180 -33 1691 1701 10 845 0 -1019 452 206 -31 502 512 10 991 0 -1020 212 186 -11 1732 1742 10 214 0 -1021 197 202 -29 1214 1224 10 625 0 -1022 218 12 -3 0 1675 10 98 0 -1023 380 194 -3 0 1774 10 497 0 -1024 240 34 -28 0 1699 10 456 0 -1025 159 299 -12 0 1812 10 915 0 -1026 240 240 -35 1710 1720 10 866 0 -1027 339 113 -14 0 1752 10 464 0 -1028 209 68 -27 0 1729 10 519 0 -1029 278 450 -29 1385 1395 10 272 0 -1030 371 423 -10 0 1704 10 276 0 -1031 355 174 -33 0 1786 10 686 0 -1032 19 273 -25 1027 1037 10 424 0 -1033 372 97 -13 224 234 10 931 0 -1034 261 359 -10 0 1806 10 710 0 -1035 261 138 -1 0 1803 10 444 0 -1036 215 79 -5 0 1741 10 447 0 -1037 297 283 -28 0 1858 10 278 0 -1038 172 292 -17 0 1827 10 718 0 -1039 231 410 -14 0 1754 10 925 0 -1040 450 194 -27 635 645 10 812 0 -1041 493 493 -20 866 876 10 342 0 -1042 100 266 -5 480 490 10 563 0 -1043 272 234 -26 1600 1610 10 541 0 -1044 133 273 -20 0 1796 10 804 0 -1045 187 263 -35 64 74 10 932 0 -1046 6 196 -20 1213 1223 10 382 0 diff --git a/jsprit-instances/instances/lilim/1000/LR1104.txt b/jsprit-instances/instances/lilim/1000/LR1104.txt deleted file mode 100644 index e0b9ba55e..000000000 --- a/jsprit-instances/instances/lilim/1000/LR1104.txt +++ /dev/null @@ -1,1040 +0,0 @@ -250 200 1 -0 250 250 0 0 1925 0 0 0 -1 171 34 21 0 1686 10 0 519 -2 67 190 25 0 1723 10 0 242 -3 80 400 -20 0 1689 10 681 0 -4 439 237 11 949 959 10 0 119 -5 377 385 -20 0 1730 10 950 0 -6 449 428 25 1257 1267 10 0 421 -7 342 481 18 0 1667 10 0 85 -8 466 149 -22 1196 1206 10 46 0 -9 83 290 -5 0 1744 10 563 0 -10 251 63 14 997 1007 10 0 165 -11 328 491 -33 0 1662 10 261 0 -12 260 472 33 0 1693 10 0 466 -13 290 145 -18 0 1803 10 767 0 -14 266 221 -15 0 1882 10 344 0 -15 164 320 -29 0 1805 10 518 0 -16 52 412 22 0 1660 10 0 224 -17 485 104 21 804 814 10 0 598 -18 144 331 -22 0 1782 10 517 0 -19 387 394 8 0 1717 10 0 75 -20 472 57 17 0 1621 10 0 378 -21 343 276 -16 0 1819 10 43 0 -22 104 349 -22 0 1739 10 423 0 -23 28 467 -23 1353 1363 10 769 0 -24 91 427 14 893 903 10 0 121 -25 429 476 -23 0 1627 10 772 0 -26 210 276 5 0 1868 10 0 608 -27 58 39 -15 0 1630 10 316 0 -28 273 300 30 0 1860 10 0 389 -29 41 232 16 0 1706 10 0 401 -30 25 53 -33 0 1616 10 758 0 -31 52 18 28 0 1610 10 0 666 -32 27 444 -17 0 1620 10 136 0 -33 178 72 -15 0 1723 10 948 0 -34 406 460 2 0 1654 10 0 146 -35 250 328 -23 0 1837 10 569 0 -36 492 34 -1 0 1591 10 37 0 -37 412 100 1 0 1695 10 0 36 -38 233 87 -44 0 1752 10 500 0 -39 60 5 -21 1054 1064 10 210 0 -40 406 408 -23 0 1693 10 933 0 -41 245 42 -28 0 1707 10 456 0 -42 166 345 14 0 1789 10 0 66 -43 440 294 16 0 1720 10 0 21 -44 370 382 -25 894 904 10 995 0 -45 32 319 21 0 1687 10 0 737 -46 480 136 22 0 1659 10 0 8 -47 371 163 -31 838 848 10 56 0 -48 0 188 -10 0 1658 10 69 0 -49 438 5 18 0 1607 10 0 311 -50 132 477 -26 337 347 10 875 0 -51 203 211 -20 0 1854 10 729 0 -52 2 264 -30 0 1667 10 345 0 -53 231 167 -23 0 1830 10 632 0 -54 423 221 9 0 1740 0 0 1002 -55 459 53 -9 0 1628 10 936 0 -56 386 154 31 0 1749 10 0 47 -57 130 494 6 0 1644 10 0 327 -58 31 175 24 0 1684 10 0 71 -59 69 423 -23 0 1665 10 597 0 -60 352 241 5 802 812 10 0 422 -61 261 201 15 1524 1534 0 0 1032 -62 59 276 -22 902 912 10 160 0 -63 146 188 -16 1245 1255 10 265 0 -64 451 62 5 0 1640 10 0 154 -65 299 285 -24 1264 1274 10 635 0 -66 142 372 -14 0 1753 10 42 0 -67 440 201 29 903 913 10 0 924 -68 219 210 14 50 60 10 0 516 -69 64 198 10 0 1722 10 0 48 -70 390 249 21 592 602 10 0 301 -71 9 101 -24 676 686 10 58 0 -72 424 288 13 0 1737 10 0 872 -73 77 372 19 0 1704 10 0 220 -74 298 264 36 50 60 10 0 722 -75 405 454 -8 0 1659 10 19 0 -76 407 35 -7 0 1649 10 564 0 -77 225 369 -23 0 1794 10 834 0 -78 347 459 25 0 1685 10 0 972 -79 117 178 -17 0 1764 10 609 0 -80 132 479 11 257 267 10 0 436 -81 201 66 -31 0 1725 10 623 0 -82 245 176 20 0 1841 10 0 110 -83 470 138 16 0 1669 0 0 1025 -84 115 296 24 0 1773 10 0 156 -85 348 476 -18 0 1669 10 7 0 -86 43 210 20 210 220 10 0 719 -87 327 139 -30 0 1780 10 891 0 -88 49 353 15 0 1690 10 0 697 -89 356 256 -23 0 1809 10 794 0 -90 335 99 -5 0 1742 10 823 0 -91 363 34 19 282 292 10 0 580 -92 33 278 -12 0 1697 10 964 0 -93 366 288 29 0 1793 10 0 540 -94 452 172 9 0 1699 10 0 960 -95 86 189 21 0 1741 10 0 829 -96 262 369 -23 0 1796 10 811 0 -97 218 403 -14 0 1759 10 99 0 -98 218 12 -1 0 1675 10 847 0 -99 228 399 14 0 1765 10 0 97 -100 492 188 33 0 1666 10 0 397 -101 267 174 -25 1628 1638 10 572 0 -102 274 441 12 0 1723 10 0 451 -103 210 113 28 0 1773 10 0 842 -104 370 262 15 0 1795 10 0 906 -105 303 186 -24 1364 1374 10 661 0 -106 241 180 -12 1705 1715 10 971 0 -107 100 85 -22 0 1693 10 595 0 -108 350 199 21 0 1803 10 0 297 -109 500 228 8 0 1665 10 0 512 -110 251 238 -20 0 1903 10 82 0 -111 114 102 -13 0 1715 10 857 0 -112 345 146 -20 0 1775 10 471 0 -113 21 146 -11 497 507 10 179 0 -114 330 147 28 858 868 0 0 1029 -115 476 61 36 0 1621 10 0 417 -116 386 245 -18 0 1779 10 745 0 -117 201 278 -26 0 1859 10 937 0 -118 421 499 -10 0 1613 10 391 0 -119 426 231 -11 1038 1048 10 4 0 -120 105 137 -27 0 1732 10 433 0 -121 64 437 -14 0 1652 10 24 0 -122 181 260 23 0 1846 10 0 498 -123 413 391 -13 0 1700 10 132 0 -124 370 493 22 0 1644 10 0 550 -125 447 267 -23 990 1000 10 678 0 -126 232 101 -33 0 1765 10 947 0 -127 371 332 14 540 550 10 0 407 -128 447 383 -18 0 1678 10 814 0 -129 325 147 -9 0 1788 10 486 0 -130 489 437 -26 717 727 10 696 0 -131 415 95 15 0 1689 10 0 978 -132 331 356 13 0 1782 10 0 123 -133 374 346 27 0 1759 10 0 355 -134 108 37 -8 0 1660 10 200 0 -135 5 224 19 0 1669 10 0 765 -136 93 413 17 226 236 10 0 32 -137 210 29 -22 0 1691 10 194 0 -138 136 265 12 0 1801 10 0 350 -139 409 155 -18 0 1730 10 163 0 -140 111 178 -19 0 1759 10 528 0 -141 291 251 20 41 51 10 0 196 -142 322 290 23 0 1833 10 0 278 -143 57 183 15 0 1711 10 0 807 -144 181 185 -33 0 1821 10 185 0 -145 7 382 27 0 1639 10 0 190 -146 425 448 -2 0 1651 10 34 0 -147 174 41 15 0 1693 10 0 309 -148 161 276 8 143 153 10 0 264 -149 398 49 -7 0 1666 10 314 0 -150 210 379 12 0 1780 10 0 663 -151 60 231 -29 0 1725 10 863 0 -152 453 360 -10 0 1685 10 957 0 -153 367 97 17 0 1723 10 0 774 -154 488 3 -5 0 1572 10 64 0 -155 44 115 24 246 256 10 0 715 -156 48 293 -24 0 1709 10 84 0 -157 64 135 -8 0 1697 10 665 0 -158 65 62 -16 0 1652 10 361 0 -159 404 207 6 0 1756 10 0 679 -160 68 303 22 0 1726 10 0 62 -161 263 418 25 288 298 10 0 522 -162 147 30 26 0 1673 10 0 483 -163 384 149 18 0 1748 10 0 139 -164 340 416 -9 0 1727 10 799 0 -165 271 128 -14 0 1792 10 10 0 -166 89 358 23 0 1722 10 0 859 -167 20 480 25 0 1590 10 0 371 -168 488 173 25 0 1665 10 0 868 -169 439 156 2 0 1704 10 0 839 -170 389 156 27 726 736 10 0 941 -171 111 392 18 0 1717 0 0 1037 -172 267 162 6 0 1826 10 0 295 -173 248 176 -21 0 1841 10 819 0 -174 413 476 -10 0 1637 10 280 0 -175 352 481 15 0 1663 10 0 783 -176 264 135 1 0 1800 10 0 962 -177 29 462 -5 1320 1330 10 284 0 -178 148 462 10 737 747 10 0 545 -179 44 140 11 0 1682 10 0 113 -180 414 378 23 505 515 10 0 983 -181 392 95 16 0 1705 0 0 1008 -182 216 341 -3 0 1818 10 926 0 -183 211 411 -15 0 1750 10 395 0 -184 317 45 8 0 1700 10 0 368 -185 178 150 33 0 1792 10 0 144 -186 428 302 -11 1026 1036 10 714 0 -187 450 45 -23 0 1629 10 892 0 -188 453 318 30 0 1701 10 0 536 -189 186 135 24 0 1784 10 0 435 -190 11 403 -27 353 363 10 145 0 -191 433 447 -5 804 814 10 490 0 -192 272 420 -24 1396 1406 10 548 0 -193 429 59 -16 0 1654 10 232 0 -194 200 27 22 0 1687 10 0 137 -195 498 171 -27 0 1655 10 812 0 -196 487 320 -20 868 878 10 141 0 -197 45 166 -18 1023 1033 10 884 0 -198 490 276 -5 0 1674 10 810 0 -199 126 391 19 0 1728 10 0 390 -200 92 18 8 0 1635 10 0 134 -201 293 228 19 0 1867 10 0 454 -202 343 205 26 0 1812 10 0 372 -203 182 480 -9 0 1676 10 293 0 -204 385 285 -12 0 1776 10 939 0 -205 44 344 12 0 1689 10 0 367 -206 170 347 -23 0 1790 10 476 0 -207 457 492 7 0 1597 10 0 929 -208 124 448 -24 0 1681 10 738 0 -209 398 210 31 0 1762 10 0 831 -210 75 118 21 419 429 10 0 39 -211 105 474 -8 0 1649 10 408 0 -212 134 211 35 130 140 10 0 515 -213 211 248 26 39 49 10 0 616 -214 212 186 11 0 1841 10 0 634 -215 492 335 10 0 1659 10 0 994 -216 497 483 12 363 373 10 0 405 -217 440 436 18 0 1650 10 0 594 -218 311 203 15 0 1838 10 0 706 -219 491 369 28 0 1647 10 0 716 -220 67 378 -19 0 1692 10 73 0 -221 383 17 15 0 1647 10 0 620 -222 7 82 -7 422 432 10 492 0 -223 342 319 -18 0 1800 10 612 0 -224 78 406 -22 970 980 10 16 0 -225 103 123 -9 0 1721 10 262 0 -226 241 38 16 0 1703 10 0 675 -227 224 3 -27 700 710 10 691 0 -228 436 467 12 0 1630 10 0 912 -229 438 488 18 0 1612 10 0 294 -230 351 60 15 0 1700 10 0 642 -231 13 214 -29 1364 1374 10 882 0 -232 429 67 16 742 752 10 0 193 -233 498 456 27 0 1593 10 0 579 -234 135 400 -25 0 1726 10 878 0 -235 215 293 13 0 1860 10 0 721 -236 354 416 -16 0 1720 10 760 0 -237 294 421 -16 1585 1595 10 669 0 -238 208 445 -15 0 1716 10 353 0 -239 230 320 -11 1202 1212 10 501 0 -240 157 38 3 0 1684 10 0 942 -241 441 100 -21 0 1673 10 989 0 -242 61 170 -25 0 1710 10 2 0 -243 79 467 -46 361 371 10 496 0 -244 365 190 -2 1487 1497 10 560 0 -245 282 1 18 0 1664 10 0 674 -246 124 111 15 0 1728 10 0 813 -247 247 219 -23 0 1884 10 260 0 -248 28 180 34 0 1683 10 0 832 -249 167 488 17 260 270 10 0 462 -250 442 289 25 0 1720 10 0 343 -251 136 430 -14 0 1702 10 873 0 -252 38 15 3 0 1599 10 0 556 -253 246 314 -33 1455 1465 10 704 0 -254 176 200 17 578 588 10 0 703 -255 337 232 2 0 1827 10 0 538 -256 257 133 19 0 1798 10 0 499 -257 295 247 -16 1313 1323 10 506 0 -258 39 162 18 575 585 10 0 337 -259 79 257 -26 0 1744 10 495 0 -260 236 126 23 0 1791 10 0 247 -261 259 498 33 1085 1095 10 0 11 -262 180 162 9 0 1803 10 0 225 -263 53 466 -11 0 1623 10 880 0 -264 167 291 -8 0 1823 10 148 0 -265 89 185 16 610 620 10 0 63 -266 487 446 -4 0 1608 10 822 0 -267 308 199 -13 0 1838 10 505 0 -268 481 84 17 0 1631 10 0 975 -269 495 227 20 0 1669 0 0 1003 -270 397 57 -5 0 1673 10 652 0 -271 372 39 -14 0 1672 10 464 0 -272 278 450 -3 0 1714 10 457 0 -273 292 32 14 239 249 10 0 784 -274 90 496 13 0 1622 10 0 582 -275 68 53 16 749 759 10 0 786 -276 371 423 10 0 1704 10 0 705 -277 273 149 -23 0 1812 10 332 0 -278 297 283 -23 0 1858 10 142 0 -279 120 37 28 0 1666 10 0 976 -280 371 488 10 0 1649 10 0 174 -281 206 174 14 0 1828 10 0 800 -282 174 347 -22 0 1792 10 693 0 -283 330 281 -9 1340 1350 10 485 0 -284 67 451 5 0 1644 10 0 177 -285 27 464 -18 0 1606 10 375 0 -286 361 178 -11 0 1783 10 587 0 -287 463 406 23 867 877 10 0 419 -288 456 157 -14 0 1689 10 735 0 -289 153 244 5 0 1818 10 0 755 -290 153 192 -12 0 1802 10 890 0 -291 352 63 -9 0 1702 10 360 0 -292 371 71 -13 0 1699 10 931 0 -293 163 472 9 0 1677 10 0 203 -294 448 495 -18 0 1600 10 229 0 -295 282 10 -6 0 1673 10 172 0 -296 66 163 6 0 1712 10 0 638 -297 314 205 -21 0 1837 10 108 0 -298 83 169 21 0 1730 10 0 323 -299 221 291 -21 0 1865 10 775 0 -300 374 116 -31 597 607 10 650 0 -301 418 269 -21 0 1746 10 70 0 -302 178 302 -22 0 1827 10 489 0 -303 250 57 26 0 1722 10 0 362 -304 475 352 -17 0 1668 10 806 0 -305 1 252 -19 0 1666 10 341 0 -306 286 356 -34 0 1804 10 656 0 -307 65 82 -19 0 1666 10 990 0 -308 154 392 -3 0 1744 10 349 0 -309 196 56 -15 0 1714 10 147 0 -310 366 390 -29 0 1734 10 523 0 -311 436 25 -18 1292 1302 10 49 0 -312 67 352 20 0 1706 10 0 915 -313 173 182 -37 0 1813 10 655 0 -314 390 34 7 1070 1080 10 0 149 -315 18 225 -28 0 1682 10 416 0 -316 57 43 15 0 1632 10 0 27 -317 388 44 22 0 1668 10 0 668 -318 269 112 19 1273 1283 10 0 914 -319 374 260 -7 0 1791 10 725 0 -320 291 213 -18 1268 1278 10 911 0 -321 178 420 -9 1081 1091 10 484 0 -322 389 255 -34 0 1776 10 399 0 -323 134 194 -21 1662 1672 10 298 0 -324 93 490 -19 0 1629 10 768 0 -325 64 294 12 0 1724 10 0 1000 -326 493 111 -14 0 1636 10 605 0 -327 150 484 -6 0 1661 10 57 0 -328 235 316 2 666 676 10 0 909 -329 239 15 2 0 1680 10 0 643 -330 193 138 30 0 1790 10 0 699 -331 40 278 10 0 1704 10 0 586 -332 307 52 23 0 1709 10 0 277 -333 161 416 -24 0 1727 10 981 0 -334 381 457 -10 0 1671 10 951 0 -335 55 318 13 322 332 10 0 336 -336 80 279 -13 0 1743 10 335 0 -337 48 162 -18 0 1695 10 258 0 -338 91 27 14 1192 1202 10 0 387 -339 288 70 -17 0 1732 10 821 0 -340 177 404 -30 0 1745 10 641 0 -341 10 237 19 0 1675 10 0 305 -342 493 493 -26 866 876 10 750 0 -343 440 292 -25 950 960 10 250 0 -344 349 76 15 1041 1051 10 0 14 -345 47 208 30 0 1708 10 0 52 -346 283 454 -13 0 1709 10 856 0 -347 486 324 15 0 1668 10 0 861 -348 392 87 23 0 1699 10 0 709 -349 122 422 3 0 1701 10 0 308 -350 37 281 -12 0 1700 10 138 0 -351 413 127 28 0 1711 10 0 359 -352 222 499 7 0 1665 10 0 850 -353 211 446 15 0 1716 10 0 238 -354 30 7 23 1199 1209 10 0 999 -355 398 341 -27 0 1742 10 133 0 -356 26 67 15 0 1626 10 0 410 -357 461 186 16 0 1695 10 0 648 -358 313 391 -17 0 1761 10 526 0 -359 471 94 -28 0 1645 10 351 0 -360 341 72 9 0 1716 10 0 291 -361 130 186 16 141 151 10 0 158 -362 257 57 -26 0 1722 10 303 0 -363 94 344 26 0 1733 10 0 654 -364 6 53 -11 0 1602 10 402 0 -365 146 376 -7 244 254 10 888 0 -366 244 13 24 0 1678 10 0 761 -367 29 336 -12 0 1678 10 205 0 -368 306 42 -8 0 1700 10 184 0 -369 177 486 20 0 1668 10 0 946 -370 489 338 17 1407 1417 10 0 903 -371 179 318 -25 0 1817 10 167 0 -372 344 203 -26 0 1810 10 202 0 -373 149 341 6 414 424 10 0 418 -374 307 412 8 0 1744 0 0 1014 -375 68 450 18 0 1645 10 0 285 -376 420 80 24 0 1675 10 0 720 -377 144 220 35 0 1805 10 0 963 -378 497 54 -17 988 998 10 20 0 -379 80 458 30 381 391 10 0 958 -380 84 377 10 0 1706 10 0 596 -381 332 382 -32 1020 1030 10 533 0 -382 6 196 -10 0 1666 10 934 0 -383 104 28 8 0 1650 0 0 1026 -384 224 320 36 1294 1304 10 0 607 -385 87 3 13 0 1620 10 0 895 -386 149 214 7 0 1808 10 0 409 -387 98 29 -14 0 1647 10 338 0 -388 135 30 12 0 1667 10 0 577 -389 287 397 -30 574 584 10 28 0 -390 107 374 -19 924 934 10 199 0 -391 355 485 10 0 1658 10 0 118 -392 51 286 14 1469 1479 10 0 585 -393 49 118 3 0 1675 10 0 552 -394 159 226 16 94 104 10 0 657 -395 185 431 15 0 1723 10 0 183 -396 262 92 -36 0 1757 10 482 0 -397 475 198 -33 0 1685 10 100 0 -398 142 30 32 0 1670 0 0 1021 -399 481 207 34 0 1681 10 0 322 -400 174 122 -27 0 1767 10 443 0 -401 35 263 -16 0 1700 10 29 0 -402 24 71 11 356 366 10 0 364 -403 173 65 12 458 468 10 0 599 -404 91 326 -2 0 1739 10 759 0 -405 470 417 -12 0 1639 10 216 0 -406 397 153 -40 0 1739 10 558 0 -407 295 283 -14 0 1860 10 127 0 -408 174 376 8 0 1768 10 0 211 -409 38 190 -7 0 1695 10 386 0 -410 16 68 -15 0 1619 10 356 0 -411 179 286 8 0 1836 10 0 687 -412 244 422 -18 0 1743 10 901 0 -413 250 441 -11 0 1724 10 900 0 -414 497 18 10 0 1577 10 0 684 -415 195 111 -7 1008 1018 10 980 0 -416 26 221 28 1006 1016 10 0 315 -417 442 5 -36 0 1604 10 115 0 -418 44 496 -6 0 1595 10 373 0 -419 448 404 -23 0 1665 10 287 0 -420 471 427 8 0 1632 0 0 1011 -421 460 424 -25 1465 1475 10 6 0 -422 461 195 -5 0 1697 10 60 0 -423 146 313 22 0 1794 10 0 22 -424 19 273 25 0 1683 10 0 792 -425 245 461 8 659 669 10 0 907 -426 69 266 12 0 1734 10 0 452 -427 191 84 13 877 887 10 0 683 -428 68 160 21 0 1712 10 0 867 -429 212 47 20 811 821 10 0 780 -430 80 337 28 0 1725 0 0 1027 -431 412 478 -26 0 1636 10 480 0 -432 225 488 -13 0 1676 10 670 0 -433 105 140 27 0 1733 10 0 120 -434 389 43 21 0 1666 10 0 793 -435 177 156 -24 0 1796 10 189 0 -436 179 497 -11 0 1658 10 80 0 -437 377 432 20 841 851 10 0 682 -438 497 296 14 0 1664 0 0 1028 -439 152 476 45 0 1669 10 0 837 -440 277 428 -34 500 510 10 908 0 -441 64 5 -10 0 1608 10 503 0 -442 44 311 27 0 1701 10 0 945 -443 165 59 27 0 1706 10 0 400 -444 261 138 1 0 1803 10 0 917 -445 268 351 -17 0 1813 10 897 0 -446 48 150 15 0 1690 10 0 588 -447 215 79 -19 0 1741 10 930 0 -448 109 56 -32 0 1676 10 781 0 -449 171 188 30 631 641 10 0 667 -450 284 457 17 0 1706 0 0 1016 -451 274 442 -12 0 1722 10 102 0 -452 33 286 -12 0 1696 10 426 0 -453 112 433 -7 0 1686 10 977 0 -454 423 170 -19 0 1725 10 201 0 -455 213 283 14 0 1866 0 0 1020 -456 240 34 28 0 1699 10 0 41 -457 283 438 3 241 251 10 0 272 -458 324 99 10 0 1747 10 0 576 -459 259 301 25 0 1864 10 0 790 -460 189 402 10 0 1752 10 0 779 -461 215 282 -16 0 1868 10 664 0 -462 166 440 -17 0 1708 10 249 0 -463 374 232 33 125 135 10 0 611 -464 339 113 14 0 1752 10 0 271 -465 335 46 18 0 1694 10 0 542 -466 313 493 -33 0 1664 10 12 0 -467 432 66 -28 0 1657 10 921 0 -468 76 462 18 966 976 10 0 808 -469 397 477 13 0 1645 10 0 727 -470 196 489 23 0 1670 10 0 567 -471 354 156 20 0 1775 10 0 112 -472 171 24 -23 1393 1403 10 795 0 -473 187 73 18 302 312 10 0 514 -474 243 408 -15 0 1757 10 851 0 -475 421 387 -21 0 1696 10 835 0 -476 141 426 23 541 551 10 0 206 -477 415 118 19 0 1704 10 0 974 -478 240 255 33 0 1904 10 0 479 -479 162 388 -33 1136 1146 10 478 0 -480 413 493 26 0 1623 10 0 431 -481 69 414 6 1273 1283 10 0 841 -482 273 70 36 629 639 10 0 396 -483 142 14 -26 0 1656 10 162 0 -484 185 434 9 0 1720 10 0 321 -485 360 294 9 0 1797 10 0 283 -486 265 240 9 18 28 10 0 129 -487 280 245 21 30 40 10 0 741 -488 87 51 -4 0 1658 10 591 0 -489 195 273 22 59 69 10 0 302 -490 422 498 5 702 712 10 0 191 -491 95 64 -32 0 1673 10 938 0 -492 63 155 7 0 1706 10 0 222 -493 24 259 19 0 1689 10 0 647 -494 376 92 10 0 1713 10 0 601 -495 83 300 26 510 520 10 0 259 -496 72 477 46 288 298 10 0 243 -497 380 194 3 0 1774 0 0 1024 -498 72 227 -23 0 1736 10 122 0 -499 238 123 -19 0 1788 10 256 0 -500 188 119 44 0 1771 10 0 38 -501 229 322 11 0 1840 10 0 239 -502 150 68 23 0 1708 10 0 617 -503 67 24 10 0 1625 10 0 441 -504 63 420 -4 0 1663 10 982 0 -505 339 144 13 1109 1119 10 0 267 -506 454 201 16 0 1706 10 0 257 -507 158 24 18 0 1671 10 0 993 -508 365 119 30 392 402 10 0 904 -509 440 284 -23 862 872 10 883 0 -510 417 212 12 920 930 10 0 743 -511 404 439 -12 0 1672 10 899 0 -512 472 248 -8 0 1693 10 109 0 -513 235 108 12 0 1773 0 0 1006 -514 174 67 -18 0 1717 10 473 0 -515 132 151 -35 0 1761 10 212 0 -516 217 207 -14 0 1861 10 68 0 -517 162 306 22 0 1811 10 0 18 -518 48 366 29 0 1683 10 0 15 -519 209 68 -21 0 1729 10 1 0 -520 94 497 31 0 1623 10 0 919 -521 110 122 14 0 1726 0 0 1035 -522 274 403 -25 0 1761 10 161 0 -523 421 386 29 834 844 10 0 310 -524 399 175 -15 757 767 10 621 0 -525 56 268 28 1074 1084 10 0 629 -526 322 406 17 0 1744 10 0 358 -527 244 277 18 0 1888 10 0 877 -528 105 181 19 0 1755 10 0 140 -529 30 97 -11 0 1648 10 985 0 -530 359 246 18 0 1806 10 0 916 -531 498 457 15 0 1592 0 0 1019 -532 190 267 -21 0 1853 10 547 0 -533 334 481 32 0 1670 10 0 381 -534 18 24 -15 0 1592 10 701 0 -535 482 104 -22 0 1641 10 809 0 -536 460 328 -30 0 1691 10 188 0 -537 320 211 16 1003 1013 10 0 541 -538 494 165 -2 0 1657 10 255 0 -539 167 445 -13 0 1704 10 992 0 -540 340 291 -29 480 490 10 93 0 -541 272 234 -16 0 1888 10 537 0 -542 325 56 -18 0 1708 10 465 0 -543 71 304 -15 0 1729 10 820 0 -544 87 311 7 0 1741 10 0 858 -545 207 487 -10 0 1675 10 178 0 -546 332 5 14 1043 1053 10 0 653 -547 161 275 21 0 1823 10 0 532 -548 268 458 24 0 1707 10 0 192 -549 175 352 12 0 1789 0 0 1036 -550 398 476 -22 0 1645 10 124 0 -551 51 360 -23 0 1688 10 708 0 -552 21 70 -3 781 791 10 393 0 -553 80 251 14 0 1745 10 0 788 -554 457 280 17 0 1706 10 0 764 -555 423 315 -25 0 1731 10 833 0 -556 66 88 -3 0 1670 10 252 0 -557 479 387 13 0 1649 10 0 954 -558 436 123 40 0 1690 10 0 406 -559 286 244 31 0 1879 10 0 695 -560 449 190 2 1150 1160 10 0 244 -561 456 113 -14 1237 1247 10 818 0 -562 480 152 -13 0 1665 10 756 0 -563 100 266 5 0 1765 10 0 9 -564 343 34 7 0 1680 10 0 76 -565 374 306 -11 1004 1014 10 570 0 -566 13 465 31 784 794 0 0 1010 -567 230 487 -23 0 1678 10 470 0 -568 442 153 -13 0 1700 10 973 0 -569 240 362 23 0 1803 10 0 35 -570 433 319 11 0 1720 10 0 565 -571 0 422 -36 831 841 10 843 0 -572 297 131 25 0 1788 10 0 101 -573 71 12 -19 0 1618 10 855 0 -574 44 440 -15 0 1635 10 961 0 -575 447 184 27 0 1708 0 0 1001 -576 341 59 -10 800 810 10 458 0 -577 132 32 -12 794 804 10 388 0 -578 411 396 -4 0 1698 10 881 0 -579 450 416 -27 0 1656 10 233 0 -580 323 34 -19 0 1687 10 91 0 -581 244 368 25 424 434 10 0 817 -582 90 477 -13 0 1638 10 274 0 -583 34 169 11 494 504 10 0 940 -584 351 128 15 0 1757 10 0 984 -585 71 282 -14 0 1734 10 392 0 -586 157 269 -10 0 1821 10 331 0 -587 392 1 11 615 625 10 0 286 -588 39 153 -15 0 1683 10 446 0 -589 306 229 -7 0 1856 10 870 0 -590 415 253 -14 377 387 10 928 0 -591 92 76 4 0 1680 10 0 488 -592 437 98 -12 0 1675 10 935 0 -593 12 367 27 0 1650 10 0 742 -594 448 414 -18 0 1658 10 217 0 -595 128 113 22 373 383 10 0 107 -596 43 360 -10 0 1681 10 380 0 -597 102 422 23 236 246 10 0 59 -598 480 131 -21 0 1657 10 17 0 -599 210 81 -12 0 1742 10 403 0 -600 432 2 20 0 1608 10 0 952 -601 396 83 -10 0 1694 10 494 0 -602 489 159 29 0 1660 0 0 1005 -603 56 75 24 0 1654 10 0 604 -604 66 31 -24 0 1629 10 603 0 -605 460 117 14 530 540 10 0 326 -606 175 239 23 75 85 10 0 731 -607 217 333 -36 0 1826 10 384 0 -608 62 375 -5 0 1690 10 26 0 -609 82 183 17 0 1735 10 0 79 -610 248 214 19 0 1879 0 0 1033 -611 385 239 -33 796 806 10 463 0 -612 371 315 18 0 1778 10 0 223 -613 333 163 32 0 1795 0 0 1034 -614 100 66 15 0 1678 0 0 1007 -615 311 422 29 0 1733 0 0 1013 -616 153 235 -26 0 1817 10 213 0 -617 168 109 -23 0 1752 10 502 0 -618 284 319 17 0 1839 10 0 943 -619 195 464 20 0 1695 10 0 840 -620 382 9 -15 0 1641 10 221 0 -621 325 210 15 0 1830 10 0 524 -622 366 334 5 420 430 10 0 849 -623 200 78 31 0 1736 10 0 81 -624 351 5 -12 506 516 10 692 0 -625 197 202 29 1214 1224 10 0 796 -626 270 337 -10 0 1826 10 710 0 -627 125 65 17 798 808 10 0 740 -628 120 17 30 0 1649 10 0 846 -629 84 255 -28 0 1749 10 525 0 -630 222 331 -9 0 1830 10 905 0 -631 332 459 -19 379 389 10 763 0 -632 226 175 23 0 1837 10 0 53 -633 404 140 -2 1269 1279 10 711 0 -634 223 178 -11 1146 1156 10 214 0 -635 330 308 24 1180 1190 10 0 65 -636 140 108 29 0 1736 10 0 702 -637 34 239 16 0 1699 10 0 707 -638 94 192 -6 0 1749 10 296 0 -639 458 213 -25 1138 1148 10 988 0 -640 13 314 14 0 1670 10 0 698 -641 202 391 30 0 1767 10 0 340 -642 339 41 -15 466 476 10 230 0 -643 224 56 -2 0 1720 10 329 0 -644 345 431 12 355 365 10 0 749 -645 292 104 -36 0 1764 10 889 0 -646 318 99 35 1223 1233 0 0 1030 -647 46 248 -19 0 1711 10 493 0 -648 482 184 -16 0 1674 10 357 0 -649 411 379 25 0 1709 0 0 1018 -650 293 174 31 87 97 10 0 300 -651 169 305 21 172 182 10 0 844 -652 394 47 5 0 1667 10 0 270 -653 323 29 -14 1147 1157 10 546 0 -654 65 343 -26 0 1708 10 363 0 -655 158 179 37 0 1799 10 0 313 -656 299 353 34 0 1801 10 0 306 -657 9 233 -16 0 1674 10 394 0 -658 330 138 -33 0 1778 10 686 0 -659 48 412 7 1042 1052 10 0 860 -660 385 17 40 0 1646 10 0 968 -661 382 110 24 0 1723 10 0 105 -662 336 493 -19 0 1658 10 757 0 -663 181 441 -12 0 1712 10 150 0 -664 162 301 16 1623 1633 10 0 461 -665 1 101 8 1267 1277 10 0 157 -666 80 117 -28 0 1700 10 31 0 -667 210 219 -30 0 1865 10 449 0 -668 404 59 -22 0 1670 10 317 0 -669 288 439 16 0 1723 10 0 237 -670 149 458 13 0 1684 10 0 432 -671 257 391 -14 1643 1653 10 925 0 -672 405 349 15 532 542 10 0 712 -673 191 215 17 68 78 10 0 866 -674 231 29 -18 1236 1246 10 245 0 -675 253 50 -16 0 1715 10 226 0 -676 441 177 -17 1011 1021 10 797 0 -677 5 445 30 0 1602 10 0 886 -678 463 253 23 0 1702 10 0 125 -679 435 180 -6 0 1718 10 159 0 -680 198 85 -17 273 283 10 997 0 -681 59 388 20 673 683 10 0 3 -682 373 418 -20 1269 1279 10 437 0 -683 142 80 -13 0 1714 10 427 0 -684 441 7 -10 0 1606 10 414 0 -685 33 268 -16 706 716 10 836 0 -686 355 174 33 0 1786 10 0 658 -687 228 260 -8 0 1891 10 411 0 -688 114 460 14 0 1665 10 0 923 -689 337 41 8 0 1689 10 0 953 -690 154 374 -19 0 1759 10 918 0 -691 235 13 27 0 1678 10 0 227 -692 303 78 12 179 189 10 0 624 -693 103 464 22 0 1656 10 0 282 -694 325 311 22 0 1819 10 0 986 -695 306 235 -31 0 1858 10 559 0 -696 382 360 26 188 198 10 0 130 -697 235 288 -15 0 1875 10 88 0 -698 0 356 -14 0 1644 10 640 0 -699 178 135 -30 0 1780 10 330 0 -700 226 423 -21 207 217 10 893 0 -701 15 11 15 0 1580 10 0 534 -702 144 35 -29 0 1676 10 636 0 -703 176 199 -17 0 1826 10 254 0 -704 247 306 33 0 1859 10 0 253 -705 396 417 -10 0 1694 10 276 0 -706 289 220 -15 0 1866 10 218 0 -707 23 235 -16 0 1688 10 637 0 -708 137 377 23 169 179 10 0 551 -709 400 71 -23 0 1682 10 348 0 -710 261 359 10 0 1806 10 0 626 -711 438 127 2 0 1691 10 0 633 -712 318 280 -15 0 1841 10 672 0 -713 333 293 -24 0 1822 10 967 0 -714 436 295 11 0 1724 10 0 186 -715 62 94 -24 0 1671 10 155 0 -716 495 355 -28 1253 1263 10 219 0 -717 13 394 15 0 1638 0 0 1004 -718 172 292 17 0 1827 10 0 770 -719 14 232 -20 0 1679 10 86 0 -720 437 90 -24 0 1669 10 376 0 -721 214 274 -13 0 1872 10 235 0 -722 420 383 -36 0 1700 10 74 0 -723 120 261 5 0 1785 10 0 824 -724 179 75 13 0 1727 10 0 798 -725 484 224 7 0 1680 10 0 319 -726 214 245 -17 0 1879 10 746 0 -727 395 474 -13 0 1649 10 469 0 -728 368 311 14 0 1783 10 0 862 -729 199 203 20 0 1846 10 0 51 -730 485 428 -31 1500 1510 10 825 0 -731 86 199 -23 0 1744 10 606 0 -732 447 272 12 0 1717 10 0 736 -733 40 304 -21 1155 1165 10 838 0 -734 475 267 7 0 1690 10 0 922 -735 482 141 14 1021 1031 10 0 288 -736 489 274 -12 544 554 10 732 0 -737 26 342 -21 0 1673 10 45 0 -738 139 438 24 0 1697 10 0 208 -739 12 358 7 1234 1244 0 0 1015 -740 125 61 -17 0 1689 10 627 0 -741 360 284 -21 0 1800 10 487 0 -742 29 358 -27 0 1670 10 593 0 -743 285 247 -12 0 1880 10 510 0 -744 248 386 22 0 1779 0 0 1023 -745 415 207 18 0 1745 10 0 116 -746 130 247 17 0 1795 10 0 726 -747 172 66 -14 1313 1323 10 791 0 -748 92 259 4 409 419 10 0 885 -749 379 486 -12 0 1647 10 644 0 -750 452 484 26 0 1606 10 0 342 -751 268 288 26 0 1873 10 0 970 -752 349 43 -23 0 1686 10 773 0 -753 225 269 30 0 1884 10 0 853 -754 50 383 -1 270 280 10 956 0 -755 110 251 -5 508 518 10 289 0 -756 461 182 13 0 1694 10 0 562 -757 255 487 19 0 1678 10 0 662 -758 133 202 33 0 1789 10 0 30 -759 34 329 2 1053 1063 10 0 404 -760 368 452 16 0 1682 10 0 236 -761 242 106 -24 0 1771 10 366 0 -762 171 303 18 0 1820 10 0 898 -763 329 456 19 0 1695 10 0 631 -764 490 286 -17 0 1673 10 554 0 -765 61 214 -19 0 1723 10 135 0 -766 365 74 24 0 1705 10 0 778 -767 321 149 18 0 1792 10 0 13 -768 84 453 19 0 1653 10 0 324 -769 26 442 23 0 1620 10 0 23 -770 180 283 -17 0 1838 10 718 0 -771 394 322 12 1035 1045 0 0 1012 -772 348 348 23 0 1777 10 0 25 -773 309 161 23 0 1809 10 0 752 -774 385 58 -17 0 1681 10 153 0 -775 228 287 21 43 53 10 0 299 -776 312 453 6 560 570 10 0 913 -777 35 344 -21 873 883 10 830 0 -778 393 98 -24 0 1707 10 766 0 -779 208 488 -10 0 1674 10 460 0 -780 235 33 -20 0 1698 10 429 0 -781 140 137 32 0 1758 10 0 448 -782 405 187 -18 1261 1271 10 894 0 -783 330 371 -15 0 1770 10 175 0 -784 265 0 -14 0 1665 10 273 0 -785 295 89 -24 0 1748 10 864 0 -786 3 23 -16 0 1580 10 275 0 -787 363 225 -31 0 1800 10 802 0 -788 148 208 -14 0 1805 10 553 0 -789 466 362 15 0 1672 10 0 996 -790 267 290 -25 0 1872 10 459 0 -791 98 2 14 0 1625 10 0 747 -792 131 246 -25 842 852 10 424 0 -793 418 75 -21 0 1673 10 434 0 -794 366 260 23 0 1799 10 0 89 -795 138 28 23 1107 1117 10 0 472 -796 209 212 -29 0 1860 10 625 0 -797 443 167 17 553 563 10 0 676 -798 156 65 -13 1047 1057 10 724 0 -799 279 355 9 0 1807 10 0 164 -800 206 172 -14 798 808 10 281 0 -801 32 94 14 940 950 0 0 1009 -802 301 239 31 52 62 10 0 787 -803 471 368 -16 0 1665 10 910 0 -804 133 273 -25 0 1796 10 959 0 -805 253 74 -22 0 1739 10 815 0 -806 470 405 17 0 1646 10 0 304 -807 77 172 -15 0 1726 10 143 0 -808 77 465 -18 0 1640 10 468 0 -809 466 96 22 1393 1403 10 0 535 -810 402 277 5 0 1761 10 0 198 -811 267 374 23 611 621 10 0 96 -812 450 194 27 635 645 10 0 195 -813 89 65 -15 0 1670 10 246 0 -814 429 389 18 434 444 10 0 128 -815 202 28 22 0 1688 10 0 805 -816 46 389 -26 0 1669 10 944 0 -817 246 407 -25 0 1758 10 581 0 -818 452 110 14 0 1670 10 0 561 -819 213 185 21 0 1841 10 0 173 -820 134 276 15 0 1797 10 0 543 -821 262 97 17 957 967 10 0 339 -822 469 489 4 0 1591 10 0 266 -823 364 71 5 0 1703 10 0 90 -824 68 240 -5 804 814 10 723 0 -825 494 468 31 0 1588 10 0 730 -826 439 222 -21 0 1724 10 887 0 -827 386 225 -31 0 1777 10 991 0 -828 434 359 -14 0 1702 10 874 0 -829 103 177 -21 0 1751 10 95 0 -830 89 322 21 0 1739 10 0 777 -831 307 249 -31 1387 1397 10 209 0 -832 30 155 -34 0 1676 10 248 0 -833 401 314 25 986 996 10 0 555 -834 217 357 23 1430 1440 10 0 77 -835 373 421 21 0 1705 10 0 475 -836 5 281 16 0 1669 10 0 685 -837 173 474 -45 0 1679 10 439 0 -838 36 301 21 0 1696 10 0 733 -839 429 169 -2 0 1719 10 169 0 -840 195 450 -20 0 1708 10 619 0 -841 95 382 -6 0 1712 10 481 0 -842 225 121 -28 0 1784 10 103 0 -843 10 407 36 444 454 10 0 571 -844 221 269 -21 0 1881 10 651 0 -845 264 180 -28 0 1844 10 965 0 -846 168 59 -30 0 1708 10 628 0 -847 281 96 1 0 1758 10 0 98 -848 387 349 -15 0 1746 10 998 0 -849 398 329 -5 0 1748 10 622 0 -850 239 486 -7 0 1679 10 352 0 -851 237 420 15 0 1745 10 0 474 -852 346 354 8 0 1774 0 0 1022 -853 172 314 -30 0 1815 10 753 0 -854 233 230 -32 0 1889 10 927 0 -855 79 80 19 0 1674 10 0 573 -856 243 402 13 0 1763 10 0 346 -857 117 110 13 0 1722 10 0 111 -858 66 314 -7 0 1721 10 544 0 -859 58 391 -23 0 1677 10 166 0 -860 142 360 -7 0 1761 10 659 0 -861 492 326 -15 0 1662 10 347 0 -862 381 328 -14 0 1763 10 728 0 -863 62 236 29 0 1727 10 0 151 -864 344 70 24 0 1712 10 0 785 -865 151 81 28 0 1720 0 0 1017 -866 240 240 -17 0 1901 10 673 0 -867 46 163 -21 0 1694 10 428 0 -868 455 168 -25 877 887 10 168 0 -869 428 202 -30 914 924 10 876 0 -870 432 199 7 0 1726 10 0 589 -871 391 112 -11 1010 1020 10 987 0 -872 451 305 -13 0 1707 10 72 0 -873 214 311 14 70 80 10 0 251 -874 465 367 14 0 1671 10 0 828 -875 164 473 26 0 1676 10 0 50 -876 364 173 30 0 1778 10 0 869 -877 274 261 -18 1717 1727 10 527 0 -878 133 455 25 0 1679 10 0 234 -879 351 481 10 332 342 10 0 920 -880 115 395 11 825 835 10 0 263 -881 297 304 4 0 1844 10 0 578 -882 7 194 29 0 1666 10 0 231 -883 409 255 23 0 1756 10 0 509 -884 87 213 18 0 1748 10 0 197 -885 60 246 -4 0 1725 10 748 0 -886 3 471 -30 0 1584 10 677 0 -887 418 251 21 0 1747 10 0 826 -888 153 362 7 0 1767 10 0 365 -889 323 77 36 0 1728 10 0 645 -890 143 158 12 0 1774 10 0 290 -891 351 148 30 471 481 10 0 87 -892 426 38 23 0 1640 10 0 187 -893 226 316 21 70 80 10 0 700 -894 347 192 18 0 1802 10 0 782 -895 102 6 -13 0 1630 10 385 0 -896 41 120 -31 0 1669 10 979 0 -897 247 443 17 340 350 10 0 445 -898 218 271 -18 0 1877 10 762 0 -899 376 385 12 184 194 10 0 511 -900 241 402 11 0 1763 10 0 413 -901 213 399 18 0 1762 10 0 412 -902 32 191 -8 596 606 10 966 0 -903 441 374 -17 0 1688 10 370 0 -904 376 113 -30 0 1729 10 508 0 -905 215 434 9 0 1728 10 0 630 -906 499 316 -15 0 1658 10 104 0 -907 318 497 -8 0 1659 10 425 0 -908 256 441 34 0 1724 10 0 440 -909 174 397 -2 1255 1265 10 328 0 -910 468 360 16 0 1671 10 0 803 -911 287 256 18 0 1878 10 0 320 -912 448 397 -12 0 1669 10 228 0 -913 352 487 -6 0 1657 10 776 0 -914 253 118 -19 0 1783 10 318 0 -915 159 299 -20 0 1812 10 312 0 -916 351 233 -18 0 1813 10 530 0 -917 268 113 -1 0 1777 10 444 0 -918 164 332 19 0 1797 10 0 690 -919 88 484 -31 0 1631 10 520 0 -920 360 488 -10 0 1653 10 879 0 -921 343 166 28 0 1790 10 0 467 -922 497 266 -7 758 768 10 734 0 -923 138 406 -14 1226 1236 10 688 0 -924 420 224 -29 0 1744 10 67 0 -925 231 410 14 0 1754 10 0 671 -926 199 438 3 0 1721 10 0 182 -927 219 215 32 0 1869 10 0 854 -928 365 274 14 117 127 10 0 590 -929 481 454 -7 0 1607 10 207 0 -930 187 61 19 0 1716 10 0 447 -931 372 97 13 0 1720 10 0 292 -932 187 263 35 64 74 0 0 1031 -933 371 427 23 0 1701 10 0 40 -934 74 215 10 239 249 10 0 382 -935 375 145 12 939 949 10 0 592 -936 365 28 9 278 288 10 0 55 -937 118 314 26 0 1769 10 0 117 -938 60 29 32 1373 1383 10 0 491 -939 478 300 12 0 1682 10 0 204 -940 33 152 -11 0 1677 10 583 0 -941 347 184 -27 1089 1099 10 170 0 -942 94 40 -3 1078 1088 10 240 0 -943 290 328 -17 154 164 10 618 0 -944 96 346 26 0 1734 10 0 816 -945 97 288 -27 0 1758 10 442 0 -946 176 470 -20 557 567 10 369 0 -947 206 97 33 0 1756 10 0 126 -948 210 133 15 0 1792 10 0 33 -949 489 457 -23 0 1599 10 969 0 -950 418 399 20 0 1691 10 0 5 -951 392 491 10 0 1636 10 0 334 -952 437 19 -20 0 1618 10 600 0 -953 495 83 -8 0 1619 10 689 0 -954 468 352 -13 0 1675 10 557 0 -955 390 120 24 0 1724 0 0 1038 -956 80 357 1 0 1715 10 0 754 -957 394 310 10 0 1759 10 0 152 -958 61 441 -30 554 564 10 379 0 -959 52 303 25 0 1711 10 0 804 -960 391 202 -9 0 1767 10 94 0 -961 36 451 15 0 1622 10 0 574 -962 276 84 -1 0 1747 10 176 0 -963 130 140 -35 0 1753 10 377 0 -964 16 287 12 0 1679 10 0 92 -965 292 136 28 0 1794 10 0 845 -966 53 204 8 0 1713 10 0 902 -967 359 287 24 0 1800 10 0 713 -968 309 29 -40 1304 1314 10 660 0 -969 473 491 23 0 1587 10 0 949 -970 273 255 -26 0 1892 10 751 0 -971 263 153 12 0 1818 10 0 106 -972 328 458 -25 778 788 10 78 0 -973 401 164 13 0 1742 10 0 568 -974 480 119 -19 0 1651 10 477 0 -975 488 96 -17 0 1632 10 268 0 -976 149 98 -28 0 1733 10 279 0 -977 49 437 7 0 1641 10 0 453 -978 440 77 -15 0 1659 10 131 0 -979 43 135 31 0 1679 10 0 896 -980 188 151 7 0 1799 10 0 415 -981 175 422 24 0 1728 10 0 333 -982 48 437 4 814 824 10 0 504 -983 334 403 -23 0 1741 10 180 0 -984 372 115 -15 0 1734 10 584 0 -985 111 192 11 0 1765 10 0 529 -986 357 290 -22 0 1801 10 694 0 -987 331 134 11 0 1774 10 0 871 -988 495 199 25 0 1665 10 0 639 -989 441 60 21 1469 1479 10 0 241 -990 51 89 19 1218 1228 10 0 307 -991 452 206 31 502 512 10 0 827 -992 195 386 13 146 156 10 0 539 -993 172 24 -18 1462 1472 10 507 0 -994 408 318 -10 0 1743 10 215 0 -995 410 399 25 244 254 10 0 44 -996 413 345 -15 0 1727 10 789 0 -997 215 129 17 0 1790 10 0 680 -998 380 350 15 0 1751 10 0 848 -999 19 38 -23 0 1602 10 354 0 -1000 166 247 -12 0 1831 10 325 0 -1001 447 184 -27 0 1708 10 575 0 -1002 423 221 -9 0 1740 10 54 0 -1003 495 227 -20 0 1669 10 269 0 -1004 13 394 -15 0 1638 10 717 0 -1005 489 159 -29 0 1660 10 602 0 -1006 235 108 -12 0 1773 10 513 0 -1007 100 66 -15 0 1678 10 614 0 -1008 392 95 -16 0 1705 10 181 0 -1009 32 94 -14 940 950 10 801 0 -1010 13 465 -31 784 794 10 566 0 -1011 471 427 -8 0 1632 10 420 0 -1012 394 322 -12 1035 1045 10 771 0 -1013 311 422 -29 0 1733 10 615 0 -1014 307 412 -8 0 1744 10 374 0 -1015 12 358 -7 1234 1244 10 739 0 -1016 284 457 -17 0 1706 10 450 0 -1017 151 81 -28 0 1720 10 865 0 -1018 411 379 -25 0 1709 10 649 0 -1019 498 457 -15 0 1592 10 531 0 -1020 213 283 -14 0 1866 10 455 0 -1021 142 30 -32 0 1670 10 398 0 -1022 346 354 -8 0 1774 10 852 0 -1023 248 386 -22 0 1779 10 744 0 -1024 380 194 -3 0 1774 10 497 0 -1025 470 138 -16 0 1669 10 83 0 -1026 104 28 -8 0 1650 10 383 0 -1027 80 337 -28 0 1725 10 430 0 -1028 497 296 -14 0 1664 10 438 0 -1029 330 147 -28 858 868 10 114 0 -1030 318 99 -35 1223 1233 10 646 0 -1031 187 263 -35 64 74 10 932 0 -1032 261 201 -15 1524 1534 10 61 0 -1033 248 214 -19 0 1879 10 610 0 -1034 333 163 -32 0 1795 10 613 0 -1035 110 122 -14 0 1726 10 521 0 -1036 175 352 -12 0 1789 10 549 0 -1037 111 392 -18 0 1717 10 171 0 -1038 390 120 -24 0 1724 10 955 0 diff --git a/jsprit-instances/instances/lilim/1000/LR1105.txt b/jsprit-instances/instances/lilim/1000/LR1105.txt deleted file mode 100644 index c8f20a8f8..000000000 --- a/jsprit-instances/instances/lilim/1000/LR1105.txt +++ /dev/null @@ -1,1050 +0,0 @@ -250 200 1 -0 250 250 0 0 1925 0 0 0 -1 171 34 21 1143 1173 10 0 519 -2 67 190 25 1173 1203 0 0 1030 -3 80 400 -15 1446 1476 10 224 0 -4 439 237 -27 939 969 10 713 0 -5 377 385 6 866 896 10 0 261 -6 449 428 -17 1247 1277 10 806 0 -7 342 481 -15 1440 1470 10 175 0 -8 466 149 16 1186 1216 10 0 602 -9 83 290 14 608 638 10 0 543 -10 251 63 -26 987 1017 10 303 0 -11 328 491 21 678 708 10 0 450 -12 260 472 -19 1036 1066 10 757 0 -13 290 145 -24 1282 1312 10 864 0 -14 266 221 9 33 63 10 0 240 -15 164 320 -15 1095 1125 10 820 0 -16 52 412 22 1406 1436 0 0 1008 -17 485 104 -30 794 824 10 620 0 -18 144 331 13 931 961 10 0 282 -19 387 394 -15 1098 1128 10 475 0 -20 472 57 -10 1295 1325 10 414 0 -21 343 276 15 96 126 10 0 986 -22 104 349 -1 1009 1039 10 956 0 -23 28 467 34 1343 1373 10 0 919 -24 91 427 -19 883 913 10 73 0 -25 429 476 23 573 603 10 0 228 -26 210 276 5 47 77 10 0 167 -27 58 39 12 1163 1193 10 0 832 -28 273 300 30 55 85 10 0 306 -29 41 232 16 209 239 10 0 382 -30 25 53 -28 1020 1050 10 829 0 -31 52 18 28 857 887 10 0 503 -32 27 444 -6 1080 1110 10 208 0 -33 178 72 -12 757 787 10 403 0 -34 406 460 -4 719 749 10 822 0 -35 250 328 24 249 279 10 0 132 -36 492 34 -7 811 841 10 974 0 -37 412 100 -5 513 543 10 652 0 -38 233 87 18 253 283 10 0 396 -39 60 5 -15 1044 1074 10 316 0 -40 406 408 -7 1456 1486 10 943 0 -41 245 42 24 547 577 0 0 1005 -42 166 345 -21 1130 1160 10 45 0 -43 440 294 -12 960 990 10 732 0 -44 370 382 -25 884 914 10 550 0 -45 32 319 21 401 431 10 0 42 -46 480 136 22 256 286 10 0 809 -47 371 163 21 828 858 0 0 1039 -48 0 188 26 932 962 10 0 882 -49 438 5 -20 549 579 10 600 0 -50 132 477 25 327 357 10 0 327 -51 203 211 20 1306 1336 10 0 729 -52 2 264 40 655 685 10 0 424 -53 231 167 15 85 115 10 0 962 -54 423 221 9 258 288 10 0 870 -55 459 53 -21 1122 1152 10 434 0 -56 386 154 -13 1101 1131 10 973 0 -57 130 494 6 759 789 10 0 369 -58 31 175 24 247 277 10 0 69 -59 69 423 32 802 832 10 0 481 -60 352 241 -21 792 822 10 712 0 -61 261 201 -28 1514 1544 10 103 0 -62 59 276 11 892 922 10 0 84 -63 146 188 6 1235 1265 0 0 1003 -64 451 62 5 282 312 10 0 149 -65 299 285 -13 1254 1284 10 72 0 -66 142 372 18 162 192 10 0 234 -67 440 201 -27 893 923 10 812 0 -68 219 210 14 50 80 10 0 610 -69 64 198 -24 1088 1118 10 58 0 -70 390 249 21 582 612 10 0 935 -71 9 101 16 666 696 10 0 895 -72 424 288 13 1057 1087 10 0 65 -73 77 372 19 211 241 10 0 24 -74 298 264 36 50 80 10 0 671 -75 405 454 -20 1303 1333 10 437 0 -76 407 35 -16 1288 1318 10 417 0 -77 225 369 38 121 151 10 0 817 -78 347 459 25 479 509 10 0 760 -79 117 178 28 1117 1147 10 0 144 -80 132 479 -21 257 287 10 893 0 -81 201 66 -21 1167 1197 10 819 0 -82 245 176 -20 1235 1265 10 634 0 -83 470 138 16 1389 1419 10 0 288 -84 115 296 -11 1529 1559 10 62 0 -85 348 476 19 1197 1227 10 0 391 -86 43 210 -17 210 240 10 673 0 -87 327 139 13 1257 1287 10 0 267 -88 49 353 -26 1446 1476 10 944 0 -89 356 256 19 106 136 10 0 406 -90 335 99 25 1218 1248 10 0 767 -91 363 34 19 272 302 10 0 271 -92 33 278 -16 1487 1517 10 836 0 -93 366 288 29 684 714 10 0 204 -94 452 172 9 608 638 10 0 589 -95 86 189 21 227 257 10 0 210 -96 262 369 15 129 159 10 0 413 -97 218 403 -14 1319 1349 10 925 0 -98 218 12 -2 544 574 10 599 0 -99 228 399 14 586 616 10 0 690 -100 492 188 33 715 745 10 0 195 -101 267 174 -35 1618 1648 10 646 0 -102 274 441 -10 695 725 10 710 0 -103 210 113 28 690 720 10 0 61 -104 370 262 15 1099 1129 0 0 1036 -105 303 186 -24 1354 1384 10 955 0 -106 241 180 13 1695 1725 0 0 1023 -107 100 85 -22 351 381 10 515 0 -108 350 199 -15 1201 1231 10 941 0 -109 500 228 8 782 812 10 0 512 -110 251 238 27 12 42 10 0 172 -111 114 102 21 507 537 0 0 1021 -112 345 146 -16 1439 1469 10 592 0 -113 21 146 -18 487 517 10 140 0 -114 330 147 28 848 878 10 0 987 -115 476 61 36 449 479 10 0 181 -116 386 245 16 479 509 10 0 497 -117 201 278 13 56 86 10 0 518 -118 421 499 -23 1345 1375 10 933 0 -119 426 231 24 1028 1058 10 0 887 -120 105 137 -7 452 482 10 667 0 -121 64 437 -18 918 948 10 375 0 -122 181 260 23 69 99 10 0 553 -123 413 391 -36 217 247 10 223 0 -124 370 493 22 571 601 10 0 662 -125 447 267 -25 980 1010 10 250 0 -126 232 101 24 346 376 10 0 482 -127 371 332 14 530 560 10 0 994 -128 447 383 17 237 267 10 0 828 -129 325 147 -31 1187 1217 10 802 0 -130 489 437 -23 707 737 10 969 0 -131 415 95 -20 1177 1207 10 471 0 -132 331 356 -24 712 742 10 35 0 -133 374 346 27 421 451 10 0 355 -134 108 37 -12 549 579 10 890 0 -135 5 224 -43 1055 1085 10 707 0 -136 93 413 17 226 256 10 0 808 -137 210 29 -23 1051 1081 10 502 0 -138 136 265 12 114 144 10 0 918 -139 409 155 19 185 215 10 0 778 -140 111 178 18 156 186 10 0 113 -141 291 251 20 41 71 10 0 378 -142 322 290 -18 1479 1509 10 814 0 -143 57 183 15 1100 1130 10 0 985 -144 181 185 -28 1614 1644 10 79 0 -145 7 382 -22 770 800 10 816 0 -146 425 448 -3 794 824 10 511 0 -147 174 41 15 1303 1333 10 0 993 -148 161 276 8 133 163 10 0 937 -149 398 49 -5 792 822 10 64 0 -150 210 379 12 709 739 10 0 408 -151 60 231 32 1026 1056 0 0 1029 -152 453 360 13 230 260 10 0 862 -153 367 97 -3 988 1018 10 154 0 -154 488 3 3 401 431 10 0 153 -155 44 115 24 246 276 10 0 252 -156 48 293 22 276 306 10 0 853 -157 64 135 -17 868 898 10 254 0 -158 65 62 -17 976 1006 10 627 0 -159 404 207 -40 911 941 10 558 0 -160 68 303 22 221 251 10 0 844 -161 263 418 25 278 308 10 0 451 -162 147 30 -24 1109 1139 10 189 0 -163 384 149 -21 1197 1227 10 590 0 -164 340 416 36 321 351 10 0 334 -165 271 128 12 346 376 10 0 917 -166 89 358 -16 1247 1277 10 608 0 -167 20 480 -5 570 600 10 26 0 -168 488 173 -31 1210 1240 10 209 0 -169 439 156 2 526 556 10 0 735 -170 389 156 27 716 746 10 0 613 -171 111 392 -19 1169 1199 10 199 0 -172 267 162 -27 1449 1479 10 110 0 -173 248 176 -14 1401 1431 10 281 0 -174 413 476 -7 1179 1209 10 431 0 -175 352 481 15 1285 1315 10 0 7 -176 264 135 -24 879 909 10 499 0 -177 29 462 17 1310 1340 0 0 1038 -178 148 462 10 727 757 10 0 762 -179 44 140 -31 868 898 10 979 0 -180 414 378 -26 495 525 10 696 0 -181 392 95 -36 766 796 10 115 0 -182 216 341 -9 654 684 10 905 0 -183 211 411 15 1147 1177 10 0 851 -184 317 45 8 658 688 10 0 564 -185 178 150 33 632 662 10 0 500 -186 428 302 -12 1016 1046 10 939 0 -187 450 45 24 504 534 10 0 766 -188 453 318 30 374 404 10 0 370 -189 186 135 24 718 748 10 0 162 -190 11 403 18 343 373 10 0 843 -191 433 447 20 794 824 0 0 1015 -192 272 420 -8 1386 1416 10 425 0 -193 429 59 9 459 489 10 0 232 -194 200 27 22 525 555 10 0 366 -195 498 171 -33 1256 1286 10 100 0 -196 487 320 -17 858 888 10 849 0 -197 45 166 -16 1013 1043 10 361 0 -198 490 276 33 241 271 10 0 244 -199 126 391 19 273 303 10 0 171 -200 92 18 8 1124 1154 10 0 383 -201 293 228 19 48 78 10 0 372 -202 343 205 -15 767 797 10 218 0 -203 182 480 31 365 395 10 0 539 -204 385 285 -29 868 898 10 93 0 -205 44 344 -2 1079 1109 10 759 0 -206 170 347 -21 436 466 10 651 0 -207 457 492 7 508 538 10 0 996 -208 124 448 6 369 399 10 0 32 -209 398 210 31 153 183 10 0 168 -210 75 118 -21 409 439 10 95 0 -211 105 474 -2 471 501 10 324 0 -212 134 211 35 122 152 10 0 740 -213 211 248 26 39 69 10 0 337 -214 212 186 -31 1722 1752 10 623 0 -215 492 335 -19 828 858 10 803 0 -216 497 483 12 353 383 10 0 490 -217 440 436 -31 892 922 10 825 0 -218 311 203 15 723 753 10 0 202 -219 491 369 -13 730 760 10 557 0 -220 67 378 -19 470 500 10 841 0 -221 383 17 15 940 970 10 0 317 -222 7 82 25 412 442 10 0 354 -223 342 319 36 115 145 10 0 123 -224 78 406 15 960 990 10 0 3 -225 103 123 -37 490 520 10 655 0 -226 241 38 -27 532 562 10 691 0 -227 224 3 -5 690 720 10 447 0 -228 436 467 -23 736 766 10 25 0 -229 438 488 -12 327 357 10 899 0 -230 351 60 15 215 245 10 0 823 -231 13 214 -11 1354 1384 10 824 0 -232 429 67 -9 732 762 10 193 0 -233 498 456 27 1406 1436 10 0 730 -234 135 400 -18 299 329 10 66 0 -235 215 293 13 55 85 10 0 878 -236 354 416 10 679 709 10 0 705 -237 294 421 -21 1575 1605 10 907 0 -238 208 445 22 1332 1362 10 0 926 -239 230 320 -10 1192 1222 10 630 0 -240 157 38 -9 1048 1078 10 14 0 -241 441 100 -21 873 903 10 292 0 -242 61 170 20 1006 1036 10 0 638 -243 79 467 22 351 381 10 0 574 -244 365 190 -33 1477 1507 10 198 0 -245 282 1 18 1042 1072 10 0 295 -246 124 111 15 789 819 10 0 636 -247 247 219 17 31 61 10 0 914 -248 28 180 -23 386 416 10 409 0 -249 167 488 -13 252 282 10 992 0 -250 442 289 25 195 225 10 0 125 -251 136 430 14 710 740 10 0 321 -252 38 15 -24 1091 1121 10 155 0 -253 246 314 -36 1445 1475 10 384 0 -254 176 200 17 568 598 10 0 157 -255 337 232 -14 1571 1601 10 648 0 -256 257 133 -18 862 892 10 842 0 -257 295 247 -26 1303 1333 10 983 0 -258 39 162 18 565 595 0 0 1010 -259 79 257 -18 953 983 10 884 0 -260 236 126 23 124 154 10 0 675 -261 259 498 -6 1075 1105 10 5 0 -262 180 162 9 173 203 10 0 435 -263 53 466 9 335 365 10 0 688 -264 167 291 27 1634 1664 10 0 532 -265 89 185 -35 600 630 10 377 0 -266 487 446 -9 1340 1370 10 954 0 -267 308 199 -13 1508 1538 10 87 0 -268 481 84 17 506 536 10 0 598 -269 495 227 -7 344 374 10 725 0 -270 397 57 -24 1476 1506 10 774 0 -271 372 39 -19 724 754 10 91 0 -272 278 450 -24 1375 1405 10 548 0 -273 292 32 14 229 259 10 0 576 -274 90 496 -18 1395 1425 10 468 0 -275 68 53 16 739 769 10 0 491 -276 371 423 10 211 241 10 0 743 -277 273 149 -18 1503 1533 10 362 0 -278 297 283 -17 1349 1379 10 618 0 -279 120 37 28 775 805 10 0 865 -280 371 488 10 583 613 10 0 913 -281 206 174 14 800 830 10 0 173 -282 174 347 -13 1015 1045 10 18 0 -283 330 281 14 1330 1360 10 0 916 -284 67 451 5 1216 1246 10 0 349 -285 27 464 -24 1291 1321 10 738 0 -286 361 178 -27 972 1002 10 575 0 -287 463 406 -14 857 887 10 929 0 -288 456 157 -16 1455 1485 10 83 0 -289 153 244 5 108 138 10 0 493 -290 153 192 -30 866 896 10 449 0 -291 352 63 6 1178 1208 10 0 845 -292 371 71 21 287 317 10 0 241 -293 163 472 -14 653 683 10 946 0 -294 448 495 -4 384 414 10 881 0 -295 282 10 -18 1262 1292 10 245 0 -296 66 163 6 395 425 10 0 393 -297 314 205 -18 1527 1557 10 894 0 -298 83 169 -28 777 807 10 703 0 -299 221 291 9 50 80 10 0 770 -300 374 116 9 587 617 10 0 464 -301 418 269 3 1205 1235 0 0 1004 -302 178 302 19 887 917 10 0 664 -303 250 57 26 748 778 10 0 10 -304 475 352 -16 310 340 10 910 0 -305 1 252 5 275 305 10 0 315 -306 286 356 -30 111 141 10 28 0 -307 65 82 13 740 770 10 0 666 -308 154 392 9 171 201 10 0 582 -309 196 56 -22 609 639 10 595 0 -310 366 390 23 1318 1348 0 0 1034 -311 436 25 19 1282 1312 10 0 989 -312 67 352 20 373 403 10 0 859 -313 173 182 -20 102 132 10 854 0 -314 390 34 -40 1060 1090 10 660 0 -315 18 225 -5 691 721 10 305 0 -316 57 43 15 1023 1053 10 0 39 -317 388 44 -15 1131 1161 10 221 0 -318 269 112 -1 1263 1293 10 847 0 -319 374 260 -16 1761 1791 10 357 0 -320 291 213 -25 1258 1288 10 572 0 -321 178 420 -14 1071 1101 10 251 0 -322 389 255 15 785 815 10 0 510 -323 134 194 -11 1652 1682 10 583 0 -324 93 490 2 379 409 10 0 211 -325 64 294 12 1101 1131 10 0 945 -326 493 111 -32 541 571 10 953 0 -327 150 484 -25 625 655 10 50 0 -328 235 316 2 656 686 10 0 478 -329 239 15 2 604 634 10 0 780 -330 193 138 30 661 691 10 0 415 -331 40 278 -14 1104 1134 10 640 0 -332 307 52 -13 920 950 10 542 0 -333 161 416 -23 1011 1041 10 708 0 -334 381 457 -36 471 501 10 164 0 -335 55 318 13 312 342 10 0 423 -336 80 279 -26 1158 1188 10 495 0 -337 48 162 -26 220 250 10 213 0 -338 91 27 14 1182 1212 0 0 1007 -339 288 70 -12 183 213 10 692 0 -340 177 404 17 1262 1292 10 0 549 -341 10 237 -27 616 646 10 401 0 -342 493 493 20 856 886 10 0 649 -343 440 292 24 940 970 10 0 570 -344 349 76 -26 1031 1061 10 645 0 -345 47 208 30 226 256 10 0 525 -346 283 454 14 1265 1295 10 0 626 -347 486 324 -29 770 800 10 764 0 -348 392 87 23 1183 1213 10 0 584 -349 122 422 -5 1457 1487 10 284 0 -350 37 281 -21 493 523 10 838 0 -351 413 127 -27 831 861 10 454 0 -352 222 499 7 845 875 10 0 353 -353 211 446 -7 1123 1153 10 352 0 -354 30 7 -25 1189 1219 10 222 0 -355 398 341 -27 939 969 10 133 0 -356 26 67 -8 1317 1347 10 665 0 -357 461 186 16 1512 1542 10 0 319 -358 313 391 5 154 184 10 0 749 -359 471 94 -19 999 1029 10 535 0 -360 341 72 -10 805 835 10 458 0 -361 130 186 16 136 166 10 0 197 -362 257 57 18 1226 1256 10 0 277 -363 94 344 -12 682 712 10 737 0 -364 6 53 8 587 617 10 0 591 -365 146 376 8 234 264 10 0 981 -366 244 13 -22 1013 1043 10 194 0 -367 29 336 -38 332 362 10 654 0 -368 306 42 11 477 507 10 0 546 -369 177 486 -6 1597 1627 10 57 0 -370 489 338 -30 1397 1427 10 188 0 -371 179 318 2 1121 1151 10 0 527 -372 344 203 -19 167 197 10 201 0 -373 149 341 6 404 434 10 0 479 -374 307 412 8 404 434 10 0 615 -375 68 450 18 633 663 10 0 121 -376 420 80 -19 1097 1127 10 706 0 -377 144 220 35 110 140 10 0 265 -378 497 54 -20 978 1008 10 141 0 -379 80 458 30 371 401 10 0 769 -380 84 377 10 926 956 10 0 830 -381 332 382 -17 1010 1040 10 526 0 -382 6 196 -16 1203 1233 10 29 0 -383 104 28 -8 1473 1503 10 200 0 -384 224 320 36 1284 1314 10 0 253 -385 87 3 -15 1433 1463 10 552 0 -386 149 214 7 482 512 10 0 796 -387 98 29 -18 1047 1077 10 577 0 -388 135 30 -30 474 504 10 628 0 -389 287 397 12 564 594 10 0 850 -390 107 374 8 914 944 10 0 430 -391 355 485 -19 1479 1509 10 85 0 -392 51 286 -12 1459 1489 10 426 0 -393 49 118 -6 1071 1101 10 296 0 -394 159 226 16 94 124 10 0 758 -395 185 431 -18 387 417 10 901 0 -396 262 92 -18 630 660 10 38 0 -397 475 198 20 835 865 10 0 868 -398 142 30 -23 1246 1276 10 795 0 -399 481 207 -33 856 886 10 463 0 -400 174 122 14 593 623 10 0 514 -401 35 263 27 270 300 10 0 341 -402 24 71 11 346 376 10 0 614 -403 173 65 12 448 478 10 0 33 -404 91 326 -11 963 993 10 880 0 -405 470 417 11 737 767 10 0 420 -406 397 153 -19 882 912 10 89 0 -407 295 283 -13 893 923 10 856 0 -408 174 376 -12 1419 1449 10 150 0 -409 38 190 23 285 315 10 0 248 -410 16 68 11 296 326 10 0 855 -411 179 286 -21 341 371 10 775 0 -412 244 422 14 538 568 10 0 569 -413 250 441 -15 756 786 10 96 0 -414 497 18 10 1130 1160 10 0 20 -415 195 111 -30 998 1028 10 330 0 -416 26 221 -1 996 1026 10 1000 0 -417 442 5 16 320 350 10 0 76 -418 44 496 32 402 432 10 0 693 -419 448 404 15 599 629 10 0 523 -420 471 427 -11 816 846 10 405 0 -421 460 424 11 1455 1485 0 0 1019 -422 461 195 -19 1395 1425 10 538 0 -423 146 313 -13 1195 1225 10 335 0 -424 19 273 -40 1017 1047 10 52 0 -425 245 461 8 649 679 10 0 192 -426 69 266 12 758 788 10 0 392 -427 191 84 13 867 897 10 0 747 -428 68 160 -35 1136 1166 10 488 0 -429 212 47 -19 801 831 10 930 0 -430 80 337 -8 1119 1149 10 390 0 -431 412 478 7 960 990 10 0 174 -432 225 488 -9 636 666 10 484 0 -433 105 140 27 182 212 10 0 857 -434 389 43 21 396 426 10 0 55 -435 177 156 -9 167 197 10 262 0 -436 179 497 -14 1411 1441 10 837 0 -437 377 432 20 831 861 10 0 75 -438 497 296 -13 613 643 10 536 0 -439 152 476 -12 523 553 10 462 0 -440 277 428 -3 490 520 10 457 0 -441 64 5 -15 1129 1159 10 999 0 -442 44 311 27 407 437 10 0 959 -443 165 59 27 943 973 10 0 980 -444 261 138 -12 618 648 10 971 0 -445 268 351 7 1675 1705 0 0 1044 -446 48 150 15 655 685 10 0 529 -447 215 79 5 224 254 10 0 227 -448 109 56 27 239 269 10 0 791 -449 171 188 30 621 651 10 0 290 -450 284 457 -21 1499 1529 10 11 0 -451 274 442 -25 1066 1096 10 161 0 -452 33 286 -17 1546 1576 10 746 0 -453 112 433 -23 235 265 10 597 0 -454 423 170 27 513 543 10 0 351 -455 213 283 14 1471 1501 0 0 1020 -456 240 34 -14 1560 1590 10 674 0 -457 283 438 3 231 261 10 0 440 -458 324 99 10 338 368 10 0 360 -459 259 301 25 99 129 10 0 581 -460 189 402 10 536 566 10 0 641 -461 215 282 21 1440 1470 0 0 1025 -462 166 440 12 207 237 10 0 439 -463 374 232 33 125 155 10 0 399 -464 339 113 -9 761 791 10 300 0 -465 335 46 -8 1342 1372 10 689 0 -466 313 493 -1 1193 1223 10 783 0 -467 432 66 -12 1071 1101 10 720 0 -468 76 462 18 956 986 10 0 274 -469 397 477 13 1216 1246 0 0 1024 -470 196 489 23 1030 1060 10 0 501 -471 354 156 20 832 862 10 0 131 -472 171 24 -15 1383 1413 10 948 0 -473 187 73 -32 292 322 10 927 0 -474 243 408 -23 1434 1464 10 476 0 -475 421 387 15 801 831 10 0 19 -476 141 426 23 531 561 10 0 474 -477 415 118 19 217 247 10 0 892 -478 240 255 -2 1611 1641 10 328 0 -479 162 388 -6 1126 1156 10 373 0 -480 413 493 26 1218 1248 10 0 750 -481 69 414 -32 1263 1293 10 59 0 -482 273 70 -24 619 649 10 126 0 -483 142 14 18 835 865 0 0 1017 -484 185 434 9 574 604 10 0 432 -485 360 294 -25 1418 1448 10 995 0 -486 265 240 9 18 48 10 0 494 -487 280 245 21 30 60 10 0 876 -488 87 51 35 514 544 10 0 428 -489 195 273 22 59 89 10 0 504 -490 422 498 -12 692 722 10 216 0 -491 95 64 -16 766 796 10 275 0 -492 63 155 -23 965 995 10 807 0 -493 24 259 -5 370 400 10 289 0 -494 376 92 -9 991 1021 10 486 0 -495 83 300 26 500 530 10 0 336 -496 72 477 46 288 318 0 0 1042 -497 380 194 -16 714 744 10 116 0 -498 72 227 -4 564 594 10 765 0 -499 238 123 24 781 811 10 0 176 -500 188 119 -33 975 1005 10 185 0 -501 229 322 -23 1660 1690 10 470 0 -502 150 68 23 423 453 10 0 137 -503 67 24 -28 1018 1048 10 31 0 -504 63 420 -22 520 550 10 489 0 -505 339 144 -28 1099 1129 10 965 0 -506 454 201 16 1305 1335 0 0 1012 -507 158 24 18 611 641 10 0 805 -508 365 119 -13 382 412 10 984 0 -509 440 284 -7 852 882 10 734 0 -510 417 212 -15 910 940 10 322 0 -511 404 439 3 243 273 10 0 146 -512 472 248 -8 834 864 10 109 0 -513 235 108 12 1080 1110 10 0 761 -514 174 67 -14 1260 1290 10 400 0 -515 132 151 22 154 184 10 0 107 -516 217 207 -4 1382 1412 10 976 0 -517 162 306 22 119 149 10 0 596 -518 48 366 -13 743 773 10 117 0 -519 209 68 -21 1568 1598 10 1 0 -520 94 497 31 782 812 10 0 768 -521 110 122 -24 1509 1539 10 603 0 -522 274 403 17 887 917 10 0 900 -523 421 386 -15 824 854 10 419 0 -524 399 175 13 747 777 10 0 568 -525 56 268 -30 1064 1094 10 345 0 -526 322 406 17 829 859 10 0 381 -527 244 277 -2 1301 1331 10 371 0 -528 105 181 19 1531 1561 0 0 1035 -529 30 97 -15 1210 1240 10 446 0 -530 359 246 -23 1423 1453 10 811 0 -531 498 457 15 913 943 0 0 1026 -532 190 267 -27 1754 1784 10 264 0 -533 334 481 -34 330 360 10 656 0 -534 18 24 -11 628 658 10 786 0 -535 482 104 19 807 837 10 0 359 -536 460 328 13 224 254 10 0 438 -537 320 211 -15 993 1023 10 621 0 -538 494 165 19 604 634 10 0 422 -539 167 445 -31 1412 1442 10 203 0 -540 340 291 22 470 500 10 0 541 -541 272 234 -22 1590 1620 10 540 0 -542 325 56 13 796 826 10 0 332 -543 71 304 -14 689 719 10 9 0 -544 87 311 7 174 204 10 0 721 -545 207 487 -25 689 719 10 663 0 -546 332 5 -11 1033 1063 10 368 0 -547 161 275 -29 1347 1377 10 585 0 -548 268 458 24 523 553 10 0 272 -549 175 352 -17 1665 1695 10 340 0 -550 398 476 25 418 448 10 0 44 -551 51 360 -21 1145 1175 10 777 0 -552 21 70 15 771 801 10 0 385 -553 80 251 -23 304 334 10 122 0 -554 457 280 -13 1000 1030 10 872 0 -555 423 315 12 184 214 10 0 906 -556 66 88 2 830 860 10 0 715 -557 479 387 13 397 427 10 0 219 -558 436 123 40 225 255 10 0 159 -559 286 244 -15 1284 1314 10 790 0 -560 449 190 -31 1140 1170 10 736 0 -561 456 113 -8 1227 1257 10 839 0 -562 480 152 -2 1022 1052 10 711 0 -563 100 266 5 470 500 10 0 888 -564 343 34 -8 725 755 10 184 0 -565 374 306 -20 994 1024 10 950 0 -566 13 465 31 774 804 10 0 659 -567 230 487 -34 1130 1160 10 908 0 -568 442 153 -13 1189 1219 10 524 0 -569 240 362 -14 1414 1444 10 412 0 -570 433 319 -24 1376 1406 10 343 0 -571 0 422 -15 821 851 10 717 0 -572 297 131 25 1165 1195 10 0 320 -573 71 12 2 297 327 10 0 813 -574 44 440 -22 789 819 10 243 0 -575 447 184 27 424 454 10 0 286 -576 341 59 -14 790 820 10 273 0 -577 132 32 18 784 814 10 0 387 -578 411 396 23 920 950 10 0 682 -579 450 416 -9 577 607 10 848 0 -580 323 34 -7 1315 1345 10 653 0 -581 244 368 -25 414 444 10 459 0 -582 90 477 -9 277 307 10 308 0 -583 34 169 11 484 514 10 0 323 -584 351 128 -23 1253 1283 10 348 0 -585 71 282 29 642 672 10 0 547 -586 157 269 -16 1576 1606 10 733 0 -587 392 1 -20 605 635 10 684 0 -588 39 153 26 798 828 10 0 867 -589 306 229 -9 1320 1350 10 94 0 -590 415 253 21 367 397 10 0 163 -591 92 76 -8 1139 1169 10 364 0 -592 437 98 16 1114 1144 10 0 112 -593 12 367 27 326 356 10 0 698 -594 448 414 -15 1223 1253 10 789 0 -595 128 113 22 363 393 10 0 309 -596 43 360 -22 835 865 10 517 0 -597 102 422 23 226 256 10 0 453 -598 480 131 -17 688 718 10 268 0 -599 210 81 2 399 429 10 0 98 -600 432 2 20 467 497 10 0 49 -601 396 83 -13 1586 1616 10 668 0 -602 489 159 -16 1428 1458 10 8 0 -603 56 75 24 1438 1468 10 0 521 -604 66 31 25 1048 1078 10 0 942 -605 460 117 14 520 550 10 0 827 -606 175 239 23 75 105 10 0 788 -607 217 333 -33 411 441 10 704 0 -608 62 375 16 349 379 10 0 166 -609 82 183 -16 1102 1132 10 637 0 -610 248 214 -14 1479 1509 10 68 0 -611 385 239 21 786 816 10 0 745 -612 371 315 -15 1166 1196 10 998 0 -613 333 163 -27 1240 1270 10 170 0 -614 100 66 -11 1400 1430 10 402 0 -615 311 422 -8 988 1018 10 374 0 -616 153 235 10 98 128 0 0 1032 -617 168 109 10 204 234 10 0 846 -618 284 319 17 817 847 10 0 278 -619 195 464 20 1541 1571 0 0 1006 -620 382 9 30 274 304 10 0 17 -621 325 210 15 933 963 10 0 537 -622 366 334 5 410 440 10 0 833 -623 200 78 31 993 1023 10 0 214 -624 351 5 -6 496 526 10 642 0 -625 197 202 -8 1204 1234 10 726 0 -626 270 337 -14 1783 1813 10 346 0 -627 125 65 17 788 818 10 0 158 -628 120 17 30 279 309 10 0 388 -629 84 255 13 282 312 10 0 755 -630 222 331 10 540 570 10 0 239 -631 332 459 -19 369 399 10 763 0 -632 226 175 -17 1694 1724 10 997 0 -633 404 140 -22 1259 1289 10 975 0 -634 223 178 20 1136 1166 10 0 82 -635 330 308 24 1170 1200 0 0 1011 -636 140 108 -15 1071 1101 10 246 0 -637 34 239 16 219 249 10 0 609 -638 94 192 -20 1080 1110 10 242 0 -639 458 213 -18 1128 1158 10 911 0 -640 13 314 14 245 275 10 0 331 -641 202 391 -10 624 654 10 460 0 -642 339 41 6 456 486 10 0 624 -643 224 56 13 1186 1216 10 0 889 -644 345 431 12 345 375 10 0 951 -645 292 104 26 304 334 10 0 344 -646 318 99 35 1213 1243 10 0 101 -647 46 248 9 814 844 0 0 1027 -648 482 184 14 1107 1137 10 0 255 -649 411 379 -20 1193 1223 10 342 0 -650 293 174 31 87 117 10 0 936 -651 169 305 21 162 192 10 0 206 -652 394 47 5 313 343 10 0 37 -653 323 29 7 1137 1167 10 0 580 -654 65 343 38 207 237 10 0 367 -655 158 179 37 116 146 10 0 225 -656 299 353 34 114 144 10 0 533 -657 9 233 31 306 336 10 0 719 -658 330 138 18 1110 1140 0 0 1014 -659 48 412 -31 1032 1062 10 566 0 -660 385 17 40 809 839 10 0 314 -661 382 110 -24 1112 1142 10 871 0 -662 336 493 -22 1493 1523 10 124 0 -663 181 441 25 542 572 10 0 545 -664 162 301 -19 1613 1643 10 302 0 -665 1 101 8 1257 1287 10 0 356 -666 80 117 -13 824 854 10 307 0 -667 210 219 7 50 80 10 0 120 -668 404 59 13 913 943 10 0 601 -669 288 439 16 273 303 10 0 727 -670 149 458 -26 1164 1194 10 875 0 -671 257 391 -36 1633 1663 10 74 0 -672 405 349 -21 522 552 10 835 0 -673 191 215 17 68 98 10 0 86 -674 231 29 14 1226 1256 10 0 456 -675 253 50 -23 226 256 10 260 0 -676 441 177 -23 1001 1031 10 773 0 -677 5 445 30 313 343 10 0 977 -678 463 253 -25 1047 1077 10 922 0 -679 435 180 37 225 255 10 0 756 -680 198 85 28 263 293 10 0 947 -681 59 388 -26 663 693 10 858 0 -682 373 418 -23 1259 1289 10 578 0 -683 142 80 -17 492 522 10 963 0 -684 441 7 20 392 422 10 0 587 -685 33 268 -12 696 726 10 964 0 -686 355 174 33 715 745 10 0 921 -687 228 260 12 1606 1636 0 0 1041 -688 114 460 -9 1086 1116 10 263 0 -689 337 41 8 1002 1032 10 0 465 -690 154 374 -14 937 967 10 99 0 -691 235 13 27 359 389 10 0 226 -692 303 78 12 179 209 10 0 339 -693 103 464 -32 1273 1303 10 418 0 -694 325 311 -14 1322 1352 10 728 0 -695 306 235 25 57 87 10 0 904 -696 382 360 26 178 208 10 0 180 -697 235 288 18 40 70 10 0 915 -698 0 356 -27 1086 1116 10 593 0 -699 178 135 -32 1514 1544 10 781 0 -700 226 423 15 197 227 10 0 877 -701 15 11 15 952 982 10 0 938 -702 144 35 26 239 269 10 0 815 -703 176 199 28 89 119 10 0 298 -704 247 306 33 56 86 10 0 607 -705 396 417 -10 810 840 10 236 0 -706 289 220 19 49 79 10 0 376 -707 23 235 43 1023 1053 10 0 135 -708 137 377 23 169 199 10 0 333 -709 400 71 -13 1372 1402 10 931 0 -710 261 359 10 109 139 10 0 102 -711 438 127 2 941 971 10 0 562 -712 318 280 21 74 104 10 0 60 -713 333 293 27 617 647 10 0 4 -714 436 295 11 528 558 10 0 810 -715 62 94 -2 951 981 10 556 0 -716 495 355 -19 1243 1273 10 861 0 -717 13 394 15 373 403 10 0 571 -718 172 292 17 92 122 10 0 754 -719 14 232 -31 305 335 10 657 0 -720 437 90 12 585 615 10 0 467 -721 214 274 -7 1369 1399 10 544 0 -722 420 383 27 982 1012 0 0 1022 -723 120 261 -4 793 823 10 748 0 -724 179 75 13 740 770 10 0 798 -725 484 224 7 300 330 10 0 269 -726 214 245 8 36 66 10 0 625 -727 395 474 -16 387 417 10 669 0 -728 368 311 14 926 956 10 0 694 -729 199 203 -20 1457 1487 10 51 0 -730 485 428 -27 1490 1520 10 233 0 -731 86 199 23 278 308 0 0 1013 -732 447 272 12 384 414 10 0 43 -733 40 304 16 1145 1175 10 0 586 -734 475 267 7 780 810 10 0 509 -735 482 141 -2 1011 1041 10 169 0 -736 489 274 31 534 564 10 0 560 -737 26 342 12 321 351 10 0 363 -738 139 438 24 218 248 10 0 285 -739 12 358 -23 1224 1254 10 742 0 -740 125 61 -35 612 642 10 212 0 -741 360 284 19 667 697 10 0 787 -742 29 358 23 611 641 10 0 739 -743 285 247 -10 1275 1305 10 276 0 -744 248 386 22 378 408 10 0 834 -745 415 207 -21 900 930 10 611 0 -746 130 247 17 120 150 10 0 452 -747 172 66 -13 1303 1333 10 427 0 -748 92 259 4 399 429 10 0 723 -749 379 486 -5 672 702 10 358 0 -750 452 484 -26 1278 1308 10 480 0 -751 268 288 26 1267 1297 0 0 1018 -752 349 43 26 229 259 10 0 952 -753 225 269 30 1271 1301 0 0 1009 -754 50 383 -17 260 290 10 718 0 -755 110 251 -13 498 528 10 629 0 -756 461 182 -37 629 659 10 679 0 -757 255 487 19 398 428 10 0 12 -758 133 202 -16 461 491 10 394 0 -759 34 329 2 1043 1073 10 0 205 -760 368 452 -25 670 700 10 78 0 -761 242 106 -12 1268 1298 10 513 0 -762 171 303 -10 1589 1619 10 178 0 -763 329 456 19 249 279 10 0 631 -764 490 286 29 522 552 10 0 347 -765 61 214 4 342 372 10 0 498 -766 365 74 -24 848 878 10 187 0 -767 321 149 -25 1425 1455 10 90 0 -768 84 453 -31 1223 1253 10 520 0 -769 26 442 -30 1344 1374 10 379 0 -770 180 283 -9 744 774 10 299 0 -771 394 322 12 1025 1055 10 0 957 -772 348 348 -8 935 965 10 852 0 -773 309 161 23 583 613 10 0 676 -774 385 58 24 405 435 10 0 270 -775 228 287 21 43 73 10 0 411 -776 312 453 6 550 580 10 0 972 -777 35 344 21 863 893 10 0 551 -778 393 98 -19 753 783 10 139 0 -779 208 488 -14 478 508 10 873 0 -780 235 33 -2 1337 1367 10 329 0 -781 140 137 32 570 600 10 0 699 -782 405 187 34 1251 1281 10 0 794 -783 330 371 1 559 589 10 0 466 -784 265 0 10 896 926 0 0 1002 -785 295 89 23 742 772 10 0 821 -786 3 23 11 391 421 10 0 534 -787 363 225 -19 856 886 10 741 0 -788 148 208 -23 526 556 10 606 0 -789 466 362 15 1152 1182 10 0 594 -790 267 290 15 43 73 10 0 559 -791 98 2 -27 592 622 10 448 0 -792 131 246 17 832 862 10 0 898 -793 418 75 11 448 478 10 0 978 -794 366 260 -34 1520 1550 10 782 0 -795 138 28 23 1097 1127 10 0 398 -796 209 212 -7 1528 1558 10 386 0 -797 443 167 -25 543 573 10 988 0 -798 156 65 -13 1037 1067 10 724 0 -799 279 355 9 166 196 10 0 897 -800 206 172 29 788 818 10 0 866 -801 32 94 14 930 960 10 0 990 -802 301 239 31 52 82 10 0 129 -803 471 368 19 428 458 10 0 215 -804 133 273 -35 119 149 10 932 0 -805 253 74 -18 1350 1380 10 507 0 -806 470 405 17 926 956 10 0 6 -807 77 172 23 786 816 10 0 492 -808 77 465 -17 275 305 10 136 0 -809 466 96 -22 1383 1413 10 46 0 -810 402 277 -11 1438 1468 10 714 0 -811 267 374 23 601 631 10 0 530 -812 450 194 27 625 655 10 0 67 -813 89 65 -2 720 750 10 573 0 -814 429 389 18 424 454 10 0 142 -815 202 28 -26 934 964 10 702 0 -816 46 389 22 257 287 10 0 145 -817 246 407 -38 312 342 10 77 0 -818 452 110 14 340 370 10 0 831 -819 213 185 21 74 104 10 0 81 -820 134 276 15 133 163 10 0 15 -821 262 97 -23 947 977 10 785 0 -822 469 489 4 555 585 10 0 34 -823 364 71 -15 1348 1378 10 230 0 -824 68 240 11 794 824 10 0 231 -825 494 468 31 352 382 10 0 217 -826 439 222 22 980 1010 10 0 883 -827 386 225 -14 919 949 10 605 0 -828 434 359 -17 1392 1422 10 128 0 -829 103 177 28 626 656 10 0 30 -830 89 322 -10 1021 1051 10 380 0 -831 307 249 -14 1377 1407 10 818 0 -832 30 155 -12 1280 1310 10 27 0 -833 401 314 -5 976 1006 10 622 0 -834 217 357 -22 1420 1450 10 744 0 -835 373 421 21 237 267 10 0 672 -836 5 281 16 1372 1402 10 0 92 -837 173 474 14 1285 1315 10 0 436 -838 36 301 21 219 249 10 0 350 -839 429 169 8 903 933 10 0 561 -840 195 450 16 1486 1516 0 0 1047 -841 95 382 19 231 261 10 0 220 -842 225 121 18 733 763 10 0 256 -843 10 407 -18 434 464 10 190 0 -844 221 269 -22 1265 1295 10 160 0 -845 264 180 -6 1681 1711 10 291 0 -846 168 59 -10 366 396 10 617 0 -847 281 96 1 1126 1156 10 0 318 -848 387 349 9 169 199 10 0 579 -849 398 329 17 167 197 10 0 196 -850 239 486 -12 1482 1512 10 389 0 -851 237 420 -15 1334 1364 10 183 0 -852 346 354 8 817 847 10 0 772 -853 172 314 -22 545 575 10 156 0 -854 233 230 20 26 56 10 0 313 -855 79 80 -11 1382 1412 10 410 0 -856 243 402 13 405 435 10 0 407 -857 117 110 -27 979 1009 10 433 0 -858 66 314 26 194 224 10 0 681 -859 58 391 -20 882 912 10 312 0 -860 142 360 20 1532 1562 0 0 1016 -861 492 326 19 1204 1234 10 0 716 -862 381 328 -13 717 747 10 152 0 -863 62 236 -25 558 588 10 885 0 -864 344 70 24 1146 1176 10 0 13 -865 151 81 -28 1558 1588 10 279 0 -866 240 240 -29 1700 1730 10 800 0 -867 46 163 -26 926 956 10 588 0 -868 455 168 -20 867 897 10 397 0 -869 428 202 -31 904 934 10 991 0 -870 432 199 -9 639 669 10 54 0 -871 391 112 24 1000 1030 10 0 661 -872 451 305 13 208 238 10 0 554 -873 214 311 14 70 100 10 0 779 -874 465 367 -33 1027 1057 10 912 0 -875 164 473 26 296 326 10 0 670 -876 364 173 -21 180 210 10 487 0 -877 274 261 -15 1707 1737 10 700 0 -878 133 455 -13 808 838 10 235 0 -879 351 481 10 322 352 10 0 920 -880 115 395 11 815 845 10 0 404 -881 297 304 4 71 101 10 0 294 -882 7 194 -26 951 981 10 48 0 -883 409 255 -22 1522 1552 10 826 0 -884 87 213 18 626 656 10 0 259 -885 60 246 25 190 220 10 0 863 -886 3 471 13 711 741 10 0 961 -887 418 251 -24 1197 1227 10 119 0 -888 153 362 -5 1161 1191 10 563 0 -889 323 77 -13 1405 1435 10 643 0 -890 143 158 12 141 171 10 0 134 -891 351 148 30 461 491 0 0 1048 -892 426 38 -19 609 639 10 477 0 -893 226 316 21 70 100 10 0 80 -894 347 192 18 1488 1518 10 0 297 -895 102 6 -16 1458 1488 10 71 0 -896 41 120 -10 696 726 10 934 0 -897 247 443 -9 330 360 10 799 0 -898 218 271 -17 1574 1604 10 792 0 -899 376 385 12 184 214 10 0 229 -900 241 402 -17 1025 1055 10 522 0 -901 213 399 18 234 264 10 0 395 -902 32 191 5 586 616 10 0 966 -903 441 374 10 227 257 10 0 949 -904 376 113 -25 514 544 10 695 0 -905 215 434 9 193 223 10 0 182 -906 499 316 -12 622 652 10 555 0 -907 318 497 21 854 884 10 0 237 -908 256 441 34 191 221 10 0 567 -909 174 397 32 1245 1275 0 0 1031 -910 468 360 16 274 304 10 0 304 -911 287 256 18 37 67 10 0 639 -912 448 397 33 866 896 10 0 874 -913 352 487 -10 902 932 10 280 0 -914 253 118 -17 547 577 10 247 0 -915 159 299 -18 1016 1046 10 697 0 -916 351 233 -14 1423 1453 10 283 0 -917 268 113 -12 680 710 10 165 0 -918 164 332 -12 1280 1310 10 138 0 -919 88 484 -34 1491 1521 10 23 0 -920 360 488 -10 316 346 10 879 0 -921 343 166 -33 876 906 10 686 0 -922 497 266 25 748 778 10 0 678 -923 138 406 8 1216 1246 0 0 1046 -924 420 224 10 429 459 0 0 1037 -925 231 410 14 1236 1266 10 0 97 -926 199 438 -22 1360 1390 10 238 0 -927 219 215 32 46 76 10 0 473 -928 365 274 14 117 147 0 0 1033 -929 481 454 14 320 350 10 0 287 -930 187 61 19 545 575 10 0 429 -931 372 97 13 214 244 10 0 709 -932 187 263 35 64 94 10 0 804 -933 371 427 23 958 988 10 0 118 -934 74 215 10 229 259 10 0 896 -935 375 145 -21 929 959 10 70 0 -936 365 28 -31 268 298 10 650 0 -937 118 314 -8 338 368 10 148 0 -938 60 29 -15 1363 1393 10 701 0 -939 478 300 12 890 920 10 0 186 -940 33 152 17 1320 1350 0 0 1045 -941 347 184 15 1079 1109 10 0 108 -942 94 40 -25 1068 1098 10 604 0 -943 290 328 7 144 174 10 0 40 -944 96 346 26 185 215 10 0 88 -945 97 288 -12 1284 1314 10 325 0 -946 176 470 14 547 577 10 0 293 -947 206 97 -28 448 478 10 680 0 -948 210 133 15 689 719 10 0 472 -949 489 457 -10 316 346 10 903 0 -950 418 399 20 438 468 10 0 565 -951 392 491 -12 1133 1163 10 644 0 -952 437 19 -26 1014 1044 10 752 0 -953 495 83 32 441 471 10 0 326 -954 468 352 9 768 798 10 0 266 -955 390 120 24 1004 1034 10 0 105 -956 80 357 1 530 560 10 0 22 -957 394 310 -12 1099 1129 10 771 0 -958 61 441 27 544 574 10 0 982 -959 52 303 -27 441 471 10 442 0 -960 391 202 14 148 178 0 0 1043 -961 36 451 -13 889 919 10 886 0 -962 276 84 -15 681 711 10 53 0 -963 130 140 17 194 224 10 0 683 -964 16 287 12 271 301 10 0 685 -965 292 136 28 781 811 10 0 505 -966 53 204 -5 1055 1085 10 902 0 -967 359 287 24 115 145 0 0 1028 -968 309 29 11 1294 1324 0 0 1001 -969 473 491 23 413 443 10 0 130 -970 273 255 18 1492 1522 0 0 1040 -971 263 153 12 412 442 10 0 444 -972 328 458 -6 768 798 10 776 0 -973 401 164 13 621 651 10 0 56 -974 480 119 7 628 658 10 0 36 -975 488 96 22 1066 1096 10 0 633 -976 149 98 4 1165 1195 10 0 516 -977 49 437 -30 427 457 10 677 0 -978 440 77 -11 913 943 10 793 0 -979 43 135 31 236 266 10 0 179 -980 188 151 -27 1297 1327 10 443 0 -981 175 422 -8 1446 1476 10 365 0 -982 48 437 -27 804 834 10 958 0 -983 334 403 26 174 204 10 0 257 -984 372 115 13 364 394 10 0 508 -985 111 192 -15 1199 1229 10 143 0 -986 357 290 -15 114 144 10 21 0 -987 331 134 -28 1124 1154 10 114 0 -988 495 199 25 337 367 10 0 797 -989 441 60 -19 1459 1489 10 311 0 -990 51 89 -14 1208 1238 10 801 0 -991 452 206 31 492 522 10 0 869 -992 195 386 13 146 176 10 0 249 -993 172 24 -15 1452 1482 10 147 0 -994 408 318 -14 643 673 10 127 0 -995 410 399 25 234 264 10 0 485 -996 413 345 -7 1218 1248 10 207 0 -997 215 129 17 1119 1149 10 0 632 -998 380 350 15 866 896 10 0 612 -999 19 38 15 847 877 10 0 441 -1000 166 247 1 84 114 10 0 416 -1001 309 29 -11 1294 1324 10 968 0 -1002 265 0 -10 896 926 10 784 0 -1003 146 188 -6 1235 1265 10 63 0 -1004 418 269 -3 1205 1235 10 301 0 -1005 245 42 -24 547 577 10 41 0 -1006 195 464 -20 1541 1571 10 619 0 -1007 91 27 -14 1182 1212 10 338 0 -1008 52 412 -22 1406 1436 10 16 0 -1009 225 269 -30 1271 1301 10 753 0 -1010 39 162 -18 565 595 10 258 0 -1011 330 308 -24 1170 1200 10 635 0 -1012 454 201 -16 1305 1335 10 506 0 -1013 86 199 -23 278 308 10 731 0 -1014 330 138 -18 1110 1140 10 658 0 -1015 433 447 -20 794 824 10 191 0 -1016 142 360 -20 1532 1562 10 860 0 -1017 142 14 -18 835 865 10 483 0 -1018 268 288 -26 1267 1297 10 751 0 -1019 460 424 -11 1455 1485 10 421 0 -1020 213 283 -14 1471 1501 10 455 0 -1021 114 102 -21 507 537 10 111 0 -1022 420 383 -27 982 1012 10 722 0 -1023 241 180 -13 1695 1725 10 106 0 -1024 397 477 -13 1216 1246 10 469 0 -1025 215 282 -21 1440 1470 10 461 0 -1026 498 457 -15 913 943 10 531 0 -1027 46 248 -9 814 844 10 647 0 -1028 359 287 -24 115 145 10 967 0 -1029 60 231 -32 1026 1056 10 151 0 -1030 67 190 -25 1173 1203 10 2 0 -1031 174 397 -32 1245 1275 10 909 0 -1032 153 235 -10 98 128 10 616 0 -1033 365 274 -14 117 147 10 928 0 -1034 366 390 -23 1318 1348 10 310 0 -1035 105 181 -19 1531 1561 10 528 0 -1036 370 262 -15 1099 1129 10 104 0 -1037 420 224 -10 429 459 10 924 0 -1038 29 462 -17 1310 1340 10 177 0 -1039 371 163 -21 828 858 10 47 0 -1040 273 255 -18 1492 1522 10 970 0 -1041 228 260 -12 1606 1636 10 687 0 -1042 72 477 -46 288 318 10 496 0 -1043 391 202 -14 148 178 10 960 0 -1044 268 351 -7 1675 1705 10 445 0 -1045 33 152 -17 1320 1350 10 940 0 -1046 138 406 -8 1216 1246 10 923 0 -1047 195 450 -16 1486 1516 10 840 0 -1048 351 148 -30 461 491 10 891 0 diff --git a/jsprit-instances/instances/lilim/1000/LR1106.txt b/jsprit-instances/instances/lilim/1000/LR1106.txt deleted file mode 100644 index 31e54a52d..000000000 --- a/jsprit-instances/instances/lilim/1000/LR1106.txt +++ /dev/null @@ -1,1050 +0,0 @@ -250 200 1 -0 250 250 0 0 1925 0 0 0 -1 171 34 -3 1143 1173 10 240 0 -2 67 190 -10 1173 1203 10 69 0 -3 80 400 -6 1446 1476 10 481 0 -4 439 237 11 939 969 10 0 826 -5 377 385 -15 866 896 10 672 0 -6 449 428 -18 1247 1277 10 217 0 -7 342 481 -15 1440 1470 10 175 0 -8 466 149 16 1186 1216 10 0 288 -9 83 290 14 0 1744 10 0 84 -10 251 63 14 987 1017 10 0 761 -11 328 491 21 0 1662 10 0 920 -12 260 472 33 0 1693 10 0 192 -13 290 145 -35 1282 1312 10 646 0 -14 266 221 9 33 63 10 0 458 -15 164 320 -12 1095 1125 10 915 0 -16 52 412 -22 0 1660 10 32 0 -17 485 104 -9 794 824 10 193 0 -18 144 331 -22 931 961 10 423 0 -19 387 394 -23 1098 1128 10 578 0 -20 472 57 -11 1295 1325 10 76 0 -21 343 276 15 96 126 10 0 127 -22 104 349 -15 1009 1039 10 206 0 -23 28 467 34 1343 1373 10 0 961 -24 91 427 14 883 913 10 0 166 -25 429 476 23 0 1627 10 0 431 -26 210 276 5 47 77 10 0 544 -27 58 39 -7 0 1630 10 667 0 -28 273 300 30 55 85 10 0 943 -29 41 232 16 209 239 10 0 885 -30 25 53 -11 1020 1050 10 410 0 -31 52 18 -30 857 887 10 628 0 -32 27 444 22 1080 1110 10 0 16 -33 178 72 -15 757 787 10 53 0 -34 406 460 2 719 749 10 0 191 -35 250 328 24 249 279 10 0 527 -36 492 34 5 811 841 10 0 904 -37 412 100 1 513 543 10 0 541 -38 233 87 18 253 283 10 0 691 -39 60 5 18 1044 1074 10 0 441 -40 406 408 -1 1456 1486 10 783 0 -41 245 42 24 547 577 10 0 362 -42 166 345 14 1130 1160 10 0 918 -43 440 294 -11 960 990 10 714 0 -44 370 382 -26 884 914 10 696 0 -45 32 319 -13 401 431 10 335 0 -46 480 136 22 0 1659 10 0 648 -47 371 163 -9 828 858 10 486 0 -48 0 188 -7 932 962 10 386 0 -49 438 5 18 549 579 10 0 270 -50 132 477 25 327 357 10 0 238 -51 203 211 -15 1306 1336 10 948 0 -52 2 264 -18 0 1667 10 685 0 -53 231 167 15 0 1830 10 0 33 -54 423 221 9 258 288 10 0 991 -55 459 53 -3 0 1628 10 154 0 -56 386 154 -16 1101 1131 10 116 0 -57 130 494 -23 759 789 10 476 0 -58 31 175 24 0 1684 10 0 307 -59 69 423 -18 802 832 10 171 0 -60 352 241 -31 792 822 10 802 0 -61 261 201 -6 1514 1544 10 172 0 -62 59 276 11 892 922 0 0 1024 -63 146 188 -23 1235 1265 10 731 0 -64 451 62 5 282 312 10 0 975 -65 299 285 -22 1254 1284 10 540 0 -66 142 372 18 162 192 10 0 264 -67 440 201 -12 893 923 10 939 0 -68 219 210 14 50 80 10 0 573 -69 64 198 10 1088 1118 10 0 2 -70 390 249 21 582 612 10 0 322 -71 9 101 -11 666 696 10 402 0 -72 424 288 13 1057 1087 10 0 257 -73 77 372 19 211 241 10 0 681 -74 298 264 36 50 80 10 0 713 -75 405 454 11 0 1659 10 0 174 -76 407 35 11 0 1649 10 0 20 -77 225 369 38 121 151 10 0 413 -78 347 459 25 479 509 10 0 682 -79 117 178 -20 1117 1147 10 242 0 -80 132 479 11 257 287 10 0 208 -81 201 66 -31 1167 1197 10 623 0 -82 245 176 20 0 1841 0 0 1036 -83 470 138 -2 1389 1419 10 711 0 -84 115 296 -14 1529 1559 10 9 0 -85 348 476 -3 1197 1227 10 511 0 -86 43 210 -4 210 240 10 765 0 -87 327 139 -23 1257 1287 10 332 0 -88 49 353 -27 1446 1476 10 593 0 -89 356 256 19 106 136 10 0 463 -90 335 99 25 1218 1248 10 0 105 -91 363 34 19 272 302 10 0 477 -92 33 278 -27 1487 1517 10 401 0 -93 366 288 29 684 714 10 0 967 -94 452 172 9 608 638 10 0 869 -95 86 189 21 227 257 10 0 829 -96 262 369 -15 0 1796 10 97 0 -97 218 403 15 0 1759 10 0 96 -98 218 12 3 544 574 10 0 366 -99 228 399 14 0 1765 10 0 897 -100 492 188 33 715 745 10 0 168 -101 267 174 -28 1618 1648 10 965 0 -102 274 441 -22 695 725 10 744 0 -103 210 113 28 690 720 10 0 427 -104 370 262 15 1099 1129 0 0 1033 -105 303 186 -25 1354 1384 10 90 0 -106 241 180 13 1695 1725 0 0 1039 -107 100 85 14 351 381 10 0 200 -108 350 199 -18 1201 1231 10 745 0 -109 500 228 8 0 1665 0 0 1035 -110 251 238 27 12 42 10 0 798 -111 114 102 -32 507 537 10 120 0 -112 345 146 -24 0 1775 10 766 0 -113 21 146 -15 487 517 10 337 0 -114 330 147 -13 848 878 10 984 0 -115 476 61 -20 449 479 10 600 0 -116 386 245 16 479 509 10 0 56 -117 201 278 13 56 86 10 0 350 -118 421 499 23 1345 1375 10 0 550 -119 426 231 24 1028 1058 10 0 810 -120 105 137 32 452 482 10 0 111 -121 64 437 -23 918 948 10 597 0 -122 181 260 23 0 1846 10 0 820 -123 413 391 8 0 1700 10 0 180 -124 370 493 -13 571 601 10 705 0 -125 447 267 19 980 1010 10 0 861 -126 232 101 -2 346 376 10 599 0 -127 371 332 -15 530 560 10 21 0 -128 447 383 -13 0 1678 10 557 0 -129 325 147 14 1187 1217 0 0 1042 -130 489 437 29 707 737 10 0 266 -131 415 95 15 1177 1207 10 0 286 -132 331 356 13 712 742 10 0 594 -133 374 346 27 0 1759 10 0 833 -134 108 37 23 549 579 10 0 385 -135 5 224 -21 0 1669 10 231 0 -136 93 413 17 226 256 10 0 944 -137 210 29 -30 0 1691 10 295 0 -138 136 265 12 114 144 10 0 426 -139 409 155 19 0 1730 10 0 244 -140 111 178 18 156 186 10 0 393 -141 291 251 -18 41 71 10 911 0 -142 322 290 23 0 1833 10 0 848 -143 57 183 15 0 1711 0 0 1037 -144 181 185 -19 1614 1644 10 930 0 -145 7 382 27 770 800 10 0 404 -146 425 448 -10 794 824 10 280 0 -147 174 41 -10 0 1693 10 617 0 -148 161 276 -22 133 163 10 489 0 -149 398 49 21 792 822 10 0 376 -150 210 379 -30 709 739 10 306 0 -151 60 231 -30 1026 1056 10 345 0 -152 453 360 -17 230 260 10 849 0 -153 367 97 17 988 1018 10 0 584 -154 488 3 3 401 431 10 0 55 -155 44 115 24 246 276 10 0 999 -156 48 293 22 276 306 10 0 733 -157 64 135 -14 0 1697 10 801 0 -158 65 62 -16 0 1652 10 715 0 -159 404 207 6 0 1756 10 0 924 -160 68 303 22 0 1726 10 0 585 -161 263 418 -21 278 308 10 893 0 -162 147 30 -23 1109 1139 10 795 0 -163 384 149 -16 1197 1227 10 181 0 -164 340 416 36 321 351 10 0 236 -165 271 128 -12 346 376 10 971 0 -166 89 358 -14 1247 1277 10 24 0 -167 20 480 -30 0 1590 10 677 0 -168 488 173 -33 1210 1240 10 100 0 -169 439 156 -27 0 1704 10 812 0 -170 389 156 -30 716 746 10 891 0 -171 111 392 18 0 1717 10 0 59 -172 267 162 6 1449 1479 10 0 61 -173 248 176 -19 1401 1431 10 318 0 -174 413 476 -11 1179 1209 10 75 0 -175 352 481 15 1285 1315 10 0 7 -176 264 135 -19 879 909 10 256 0 -177 29 462 -21 1310 1340 10 285 0 -178 148 462 10 727 757 10 0 670 -179 44 140 11 868 898 10 0 985 -180 414 378 -8 495 525 10 123 0 -181 392 95 16 766 796 10 0 163 -182 216 341 -29 654 684 10 615 0 -183 211 411 15 0 1750 0 0 1016 -184 317 45 -24 0 1700 10 339 0 -185 178 150 33 632 662 10 0 634 -186 428 302 -24 1016 1046 10 343 0 -187 450 45 24 504 534 10 0 592 -188 453 318 30 374 404 10 0 509 -189 186 135 24 0 1784 10 0 214 -190 11 403 18 343 373 10 0 843 -191 433 447 -2 794 824 10 34 0 -192 272 420 -33 1386 1416 10 12 0 -193 429 59 9 0 1654 10 0 17 -194 200 27 22 525 555 0 0 1018 -195 498 171 -20 1256 1286 10 269 0 -196 487 320 21 858 888 10 0 570 -197 45 166 -11 1013 1043 10 583 0 -198 490 276 33 241 271 10 0 678 -199 126 391 19 273 303 10 0 830 -200 92 18 -14 1124 1154 10 107 0 -201 293 228 19 48 78 10 0 320 -202 343 205 26 767 797 10 0 970 -203 182 480 31 0 1676 10 0 671 -204 385 285 13 868 898 10 0 728 -205 44 344 -2 1079 1109 10 759 0 -206 170 347 15 0 1790 10 0 22 -207 457 492 7 0 1597 0 0 1001 -208 124 448 -11 369 399 10 80 0 -209 398 210 31 153 183 10 0 973 -210 75 118 21 409 439 10 0 521 -211 105 474 27 471 501 10 0 293 -212 134 211 -16 122 152 10 394 0 -213 211 248 26 39 69 10 0 673 -214 212 186 -24 1722 1752 10 189 0 -215 492 335 -25 0 1659 10 250 0 -216 497 483 12 353 383 10 0 822 -217 440 436 18 892 922 10 0 6 -218 311 203 15 723 753 10 0 743 -219 491 369 -3 0 1647 10 716 0 -220 67 378 -20 470 500 10 312 0 -221 383 17 15 940 970 10 0 314 -222 7 82 25 412 442 10 0 364 -223 342 319 36 115 145 10 0 772 -224 78 406 -19 960 990 10 504 0 -225 103 123 -18 490 520 10 796 0 -226 241 38 -12 0 1703 10 513 0 -227 224 3 -17 690 720 10 247 0 -228 436 467 -10 736 766 10 879 0 -229 438 488 18 327 357 10 0 294 -230 351 60 15 0 1700 10 0 955 -231 13 214 21 1354 1384 10 0 135 -232 429 67 16 732 762 10 0 241 -233 498 456 -10 1406 1436 10 903 0 -234 135 400 -14 0 1726 10 251 0 -235 215 293 13 55 85 10 0 566 -236 354 416 -36 0 1720 10 164 0 -237 294 421 -13 1575 1605 10 856 0 -238 208 445 -25 1332 1362 10 50 0 -239 230 320 -14 1192 1222 10 412 0 -240 157 38 3 1048 1078 10 0 1 -241 441 100 -16 0 1673 10 232 0 -242 61 170 20 1006 1036 10 0 79 -243 79 467 -11 351 381 10 808 0 -244 365 190 -19 1477 1507 10 139 0 -245 282 1 18 0 1664 10 0 815 -246 124 111 15 0 1728 10 0 603 -247 247 219 17 0 1884 10 0 227 -248 28 180 34 386 416 10 0 382 -249 167 488 17 252 282 10 0 460 -250 442 289 25 195 225 10 0 215 -251 136 430 14 710 740 10 0 234 -252 38 15 -10 0 1599 10 503 0 -253 246 314 -35 1445 1475 10 932 0 -254 176 200 17 568 598 10 0 927 -255 337 232 -16 1571 1601 10 357 0 -256 257 133 19 862 892 10 0 176 -257 295 247 -13 1303 1333 10 72 0 -258 39 162 -10 565 595 10 934 0 -259 79 257 -14 953 983 10 553 0 -260 236 126 23 0 1791 10 0 680 -261 259 498 -11 1075 1105 10 900 0 -262 180 162 9 0 1803 10 0 435 -263 53 466 9 335 365 0 0 1004 -264 167 291 -18 1634 1664 10 66 0 -265 89 185 16 600 630 10 0 832 -266 487 446 -29 1340 1370 10 130 0 -267 308 199 -32 1508 1538 10 613 0 -268 481 84 17 506 536 10 0 974 -269 495 227 20 0 1669 10 0 195 -270 397 57 -18 1476 1506 10 49 0 -271 372 39 10 724 754 10 0 668 -272 278 450 -20 1375 1405 10 466 0 -273 292 32 14 229 259 10 0 329 -274 90 496 13 1395 1425 10 0 688 -275 68 53 16 739 769 0 0 1011 -276 371 423 10 211 241 10 0 287 -277 273 149 14 1503 1533 10 0 845 -278 297 283 28 0 1858 0 0 1032 -279 120 37 28 0 1666 10 0 791 -280 371 488 10 0 1649 10 0 146 -281 206 174 14 800 830 10 0 516 -282 174 347 -19 1015 1045 10 302 0 -283 330 281 14 1330 1360 10 0 831 -284 67 451 5 1216 1246 10 0 664 -285 27 464 21 1291 1321 10 0 177 -286 361 178 -15 0 1783 10 131 0 -287 463 406 -10 857 887 10 276 0 -288 456 157 -16 1455 1485 10 8 0 -289 153 244 5 108 138 10 0 657 -290 153 192 -30 866 896 10 449 0 -291 352 63 -22 1178 1208 10 317 0 -292 371 71 -13 287 317 10 931 0 -293 163 472 -27 653 683 10 211 0 -294 448 495 -18 384 414 10 229 0 -295 282 10 30 0 1673 10 0 137 -296 66 163 6 395 425 10 0 588 -297 314 205 -20 1527 1557 10 471 0 -298 83 169 21 0 1730 10 0 529 -299 221 291 9 50 80 10 0 762 -300 374 116 -30 587 617 10 876 0 -301 418 269 3 0 1746 0 0 1023 -302 178 302 19 887 917 10 0 282 -303 250 57 -20 748 778 10 805 0 -304 475 352 33 0 1668 0 0 1014 -305 1 252 -12 0 1666 10 964 0 -306 286 356 30 0 1804 10 0 150 -307 65 82 -24 740 770 10 58 0 -308 154 392 9 171 201 10 0 738 -309 196 56 15 0 1714 10 0 636 -310 366 390 -23 0 1734 10 933 0 -311 436 25 -15 1282 1312 10 952 0 -312 67 352 20 373 403 10 0 220 -313 173 182 25 102 132 10 0 433 -314 390 34 -15 1060 1090 10 221 0 -315 18 225 8 691 721 10 0 707 -316 57 43 -22 0 1632 10 595 0 -317 388 44 22 1131 1161 10 0 291 -318 269 112 19 1263 1293 10 0 173 -319 374 260 -7 1761 1791 10 734 0 -320 291 213 -19 1258 1288 10 201 0 -321 178 420 -9 1071 1101 10 484 0 -322 389 255 -21 785 815 10 70 0 -323 134 194 -8 1652 1682 10 665 0 -324 93 490 -5 379 409 10 919 0 -325 64 294 -29 1101 1131 10 863 0 -326 493 111 26 541 571 10 0 598 -327 150 484 16 625 655 10 0 878 -328 235 316 -10 656 686 10 630 0 -329 239 15 -14 0 1680 10 273 0 -330 193 138 30 661 691 0 0 1006 -331 40 278 10 1104 1134 10 0 392 -332 307 52 23 920 950 10 0 87 -333 161 416 25 0 1727 10 0 981 -334 381 457 28 471 501 10 0 913 -335 55 318 13 312 342 10 0 45 -336 80 279 -27 0 1743 10 442 0 -337 48 162 15 220 250 10 0 113 -338 91 27 14 1182 1212 10 0 383 -339 288 70 24 183 213 10 0 184 -340 177 404 17 1262 1292 0 0 1045 -341 10 237 19 616 646 10 0 416 -342 493 493 20 856 886 10 0 750 -343 440 292 24 940 970 10 0 186 -344 349 76 15 1031 1061 10 0 864 -345 47 208 30 226 256 10 0 151 -346 283 454 14 0 1709 10 0 450 -347 486 324 -19 0 1668 10 803 0 -348 392 87 23 0 1699 10 0 406 -349 122 422 -18 1457 1487 10 468 0 -350 37 281 -13 493 523 10 117 0 -351 413 127 28 831 861 10 0 935 -352 222 499 7 845 875 10 0 470 -353 211 446 -15 1123 1153 10 700 0 -354 30 7 -15 1189 1219 10 701 0 -355 398 341 -15 939 969 10 998 0 -356 26 67 -11 1317 1347 10 786 0 -357 461 186 16 0 1695 10 0 255 -358 313 391 5 0 1761 10 0 727 -359 471 94 30 999 1029 10 0 562 -360 341 72 -27 805 835 10 576 0 -361 130 186 16 136 166 10 0 492 -362 257 57 -24 1226 1256 10 41 0 -363 94 344 26 0 1733 10 0 659 -364 6 53 -25 0 1602 10 222 0 -365 146 376 8 234 264 10 0 390 -366 244 13 -3 1013 1043 10 98 0 -367 29 336 -26 332 362 10 858 0 -368 306 42 -6 0 1700 10 642 0 -369 177 486 -3 0 1668 10 926 0 -370 489 338 -9 1397 1427 10 954 0 -371 179 318 2 1121 1151 10 0 384 -372 344 203 14 167 197 10 0 921 -373 149 341 6 404 434 10 0 479 -374 307 412 8 404 434 10 0 389 -375 68 450 18 633 663 10 0 816 -376 420 80 -21 0 1675 10 149 0 -377 144 220 35 110 140 10 0 729 -378 497 54 14 978 1008 10 0 414 -379 80 458 30 371 401 10 0 574 -380 84 377 10 0 1706 10 0 754 -381 332 382 -35 1010 1040 10 631 0 -382 6 196 -34 1203 1233 10 248 0 -383 104 28 -14 1473 1503 10 338 0 -384 224 320 -2 1284 1314 10 371 0 -385 87 3 -23 0 1620 10 134 0 -386 149 214 7 0 1808 10 0 48 -387 98 29 -4 0 1647 10 491 0 -388 135 30 12 474 504 10 0 483 -389 287 397 -8 564 594 10 374 0 -390 107 374 -8 914 944 10 365 0 -391 355 485 -20 1479 1509 10 662 0 -392 51 286 -10 1459 1489 10 331 0 -393 49 118 -18 1071 1101 10 140 0 -394 159 226 16 94 124 10 0 212 -395 185 431 -7 387 417 10 539 0 -396 262 92 25 630 660 10 0 821 -397 475 198 -29 0 1685 10 602 0 -398 142 30 32 1246 1276 0 0 1040 -399 481 207 -21 856 886 10 590 0 -400 174 122 14 593 623 10 0 500 -401 35 263 27 270 300 10 0 92 -402 24 71 11 346 376 10 0 71 -403 173 65 -15 448 478 10 514 0 -404 91 326 -27 0 1739 10 145 0 -405 470 417 11 737 767 10 0 421 -406 397 153 -23 882 912 10 348 0 -407 295 283 26 0 1860 10 0 877 -408 174 376 8 0 1768 10 0 693 -409 38 190 23 285 315 10 0 902 -410 16 68 11 0 1619 10 0 30 -411 179 286 -36 341 371 10 532 0 -412 244 422 14 538 568 10 0 239 -413 250 441 -38 756 786 10 77 0 -414 497 18 -14 1130 1160 10 378 0 -415 195 111 -27 998 1028 10 443 0 -416 26 221 -19 996 1026 10 341 0 -417 442 5 16 320 350 10 0 978 -418 44 496 -18 402 432 10 582 0 -419 448 404 15 0 1665 10 0 579 -420 471 427 -12 816 846 10 862 0 -421 460 424 -11 1455 1485 10 405 0 -422 461 195 -11 1395 1425 10 512 0 -423 146 313 22 0 1794 10 0 18 -424 19 273 25 1017 1047 10 0 836 -425 245 461 -24 649 679 10 548 0 -426 69 266 -12 758 788 10 138 0 -427 191 84 -28 867 897 10 103 0 -428 68 160 -24 0 1712 10 666 0 -429 212 47 -18 801 831 10 473 0 -430 80 337 28 0 1725 0 0 1038 -431 412 478 -23 0 1636 10 25 0 -432 225 488 -18 636 666 10 901 0 -433 105 140 -25 0 1733 10 313 0 -434 389 43 21 0 1666 10 0 823 -435 177 156 -9 167 197 10 262 0 -436 179 497 1 1411 1441 10 0 451 -437 377 432 -16 831 861 10 760 0 -438 497 296 14 613 643 10 0 922 -439 152 476 -13 523 553 10 992 0 -440 277 428 7 490 520 0 0 1034 -441 64 5 -18 1129 1159 10 39 0 -442 44 311 27 0 1701 10 0 336 -443 165 59 27 943 973 10 0 415 -444 261 138 -21 0 1803 10 917 0 -445 268 351 -20 0 1813 10 626 0 -446 48 150 15 0 1690 10 0 966 -447 215 79 -13 0 1741 10 724 0 -448 109 56 27 239 269 10 0 534 -449 171 188 30 621 651 10 0 290 -450 284 457 -14 0 1706 10 346 0 -451 274 442 -1 0 1722 10 436 0 -452 33 286 -19 1546 1576 10 493 0 -453 112 433 29 0 1686 10 0 860 -454 423 170 27 513 543 10 0 568 -455 213 283 -19 0 1866 10 841 0 -456 240 34 -30 1560 1590 10 780 0 -457 283 438 3 231 261 10 0 763 -458 324 99 -9 338 368 10 14 0 -459 259 301 25 99 129 10 0 972 -460 189 402 -17 0 1752 10 249 0 -461 215 282 21 1440 1470 10 0 721 -462 166 440 12 207 237 10 0 619 -463 374 232 -19 125 155 10 89 0 -464 339 113 14 761 791 10 0 767 -465 335 46 18 0 1694 10 0 542 -466 313 493 20 1193 1223 10 0 272 -467 432 66 -12 1071 1101 10 720 0 -468 76 462 18 956 986 10 0 349 -469 397 477 13 0 1645 0 0 1017 -470 196 489 -7 1030 1060 10 352 0 -471 354 156 20 832 862 10 0 297 -472 171 24 11 1383 1413 10 0 993 -473 187 73 18 292 322 10 0 429 -474 243 408 -15 1434 1464 10 851 0 -475 421 387 -4 801 831 10 881 0 -476 141 426 23 531 561 10 0 57 -477 415 118 -19 0 1704 10 91 0 -478 240 255 -23 1611 1641 10 770 0 -479 162 388 -6 1126 1156 10 373 0 -480 413 493 26 1218 1248 10 0 951 -481 69 414 6 1263 1293 10 0 3 -482 273 70 -27 619 649 10 675 0 -483 142 14 -12 835 865 10 388 0 -484 185 434 9 0 1720 10 0 321 -485 360 294 -29 0 1797 10 523 0 -486 265 240 9 18 48 10 0 47 -487 280 245 21 30 60 10 0 530 -488 87 51 -15 514 544 10 614 0 -489 195 273 22 59 89 10 0 148 -490 422 498 -31 692 722 10 825 0 -491 95 64 4 766 796 10 0 387 -492 63 155 -16 0 1706 10 361 0 -493 24 259 19 0 1689 10 0 452 -494 376 92 -30 0 1713 10 620 0 -495 83 300 -38 500 530 10 654 0 -496 72 477 46 288 318 10 0 520 -497 380 194 -40 0 1774 10 558 0 -498 72 227 25 564 594 10 0 525 -499 238 123 -20 781 811 10 854 0 -500 188 119 -14 975 1005 10 400 0 -501 229 322 11 0 1840 10 0 790 -502 150 68 23 0 1708 10 0 577 -503 67 24 10 0 1625 10 0 252 -504 63 420 19 0 1663 10 0 224 -505 339 144 13 1099 1129 10 0 658 -506 454 201 -25 0 1706 10 988 0 -507 158 24 -10 611 641 10 784 0 -508 365 119 30 382 412 10 0 987 -509 440 284 -30 852 882 10 188 0 -510 417 212 12 910 940 10 0 589 -511 404 439 3 243 273 10 0 85 -512 472 248 11 0 1693 10 0 422 -513 235 108 12 0 1773 10 0 226 -514 174 67 15 0 1717 10 0 403 -515 132 151 22 154 184 10 0 740 -516 217 207 -14 1382 1412 10 281 0 -517 162 306 22 119 149 10 0 651 -518 48 366 29 743 773 10 0 777 -519 209 68 -13 1568 1598 10 643 0 -520 94 497 -46 782 812 10 496 0 -521 110 122 -21 1509 1539 10 210 0 -522 274 403 -30 887 917 10 641 0 -523 421 386 29 824 854 10 0 485 -524 399 175 13 747 777 10 0 941 -525 56 268 -25 1064 1094 10 498 0 -526 322 406 17 829 859 10 0 656 -527 244 277 -24 1301 1331 10 35 0 -528 105 181 -17 1531 1561 10 940 0 -529 30 97 -21 1210 1240 10 298 0 -530 359 246 -21 0 1806 10 487 0 -531 498 457 15 0 1592 10 0 969 -532 190 267 36 0 1853 10 0 411 -533 334 481 32 330 360 10 0 776 -534 18 24 -27 628 658 10 448 0 -535 482 104 19 807 837 10 0 809 -536 460 328 -13 224 254 10 872 0 -537 320 211 -15 993 1023 10 621 0 -538 494 165 -14 0 1657 10 605 0 -539 167 445 7 0 1704 10 0 395 -540 340 291 22 470 500 10 0 65 -541 272 234 -1 1590 1620 10 37 0 -542 325 56 -18 796 826 10 465 0 -543 71 304 -25 689 719 10 959 0 -544 87 311 -5 0 1741 10 26 0 -545 207 487 -22 689 719 10 779 0 -546 332 5 14 1033 1063 10 0 580 -547 161 275 21 0 1823 10 0 844 -548 268 458 24 523 553 10 0 425 -549 175 352 -19 0 1789 10 768 0 -550 398 476 -23 0 1645 10 118 0 -551 51 360 -21 1145 1175 10 838 0 -552 21 70 -31 771 801 10 979 0 -553 80 251 14 304 334 10 0 259 -554 457 280 17 1000 1030 10 0 906 -555 423 315 -12 0 1731 10 771 0 -556 66 88 -22 830 860 10 896 0 -557 479 387 13 397 427 10 0 128 -558 436 123 40 0 1690 10 0 497 -559 286 244 -19 1284 1314 10 706 0 -560 449 190 -22 1140 1170 10 639 0 -561 456 113 -11 1227 1257 10 793 0 -562 480 152 -30 0 1665 10 359 0 -563 100 266 -20 470 500 10 804 0 -564 343 34 -12 725 755 10 692 0 -565 374 306 4 994 1024 10 0 612 -566 13 465 -13 774 804 10 235 0 -567 230 487 20 1130 1160 10 0 908 -568 442 153 -27 1189 1219 10 454 0 -569 240 362 -14 0 1803 10 925 0 -570 433 319 -21 0 1720 10 196 0 -571 0 422 8 821 851 10 0 739 -572 297 131 -23 1165 1195 10 773 0 -573 71 12 -14 297 327 10 68 0 -574 44 440 -30 0 1635 10 379 0 -575 447 184 -14 424 454 10 960 0 -576 341 59 27 790 820 10 0 360 -577 132 32 -23 784 814 10 502 0 -578 411 396 23 920 950 10 0 19 -579 450 416 -15 577 607 10 419 0 -580 323 34 -14 0 1687 10 546 0 -581 244 368 -10 414 444 10 710 0 -582 90 477 18 277 307 10 0 418 -583 34 169 11 484 514 10 0 197 -584 351 128 -17 1253 1283 10 153 0 -585 71 282 -22 0 1734 10 160 0 -586 157 269 -22 1576 1606 10 945 0 -587 392 1 11 605 635 0 0 1007 -588 39 153 -6 798 828 10 296 0 -589 306 229 -12 1320 1350 10 510 0 -590 415 253 21 367 397 10 0 399 -591 92 76 4 1139 1169 10 0 857 -592 437 98 -24 1114 1144 10 187 0 -593 12 367 27 326 356 10 0 88 -594 448 414 -13 1223 1253 10 132 0 -595 128 113 22 363 393 10 0 316 -596 43 360 -23 0 1681 10 742 0 -597 102 422 23 226 256 10 0 121 -598 480 131 -26 688 718 10 326 0 -599 210 81 2 0 1742 10 0 126 -600 432 2 20 0 1608 10 0 115 -601 396 83 -17 1586 1616 10 709 0 -602 489 159 29 0 1660 10 0 397 -603 56 75 -15 0 1654 10 246 0 -604 66 31 25 0 1629 10 0 855 -605 460 117 14 520 550 10 0 538 -606 175 239 23 75 105 10 0 884 -607 217 333 -18 411 441 10 697 0 -608 62 375 16 349 379 10 0 859 -609 82 183 -8 1102 1132 10 867 0 -610 248 214 -20 1479 1509 10 962 0 -611 385 239 21 786 816 10 0 686 -612 371 315 -4 1166 1196 10 565 0 -613 333 163 32 0 1795 10 0 267 -614 100 66 15 0 1678 10 0 488 -615 311 422 29 0 1733 10 0 182 -616 153 235 10 98 128 10 0 807 -617 168 109 10 204 234 10 0 147 -618 284 319 -16 0 1839 10 669 0 -619 195 464 -12 0 1695 10 462 0 -620 382 9 30 274 304 10 0 494 -621 325 210 15 933 963 10 0 537 -622 366 334 5 410 440 10 0 635 -623 200 78 31 993 1023 10 0 81 -624 351 5 12 496 526 10 0 660 -625 197 202 -22 1204 1234 10 788 0 -626 270 337 20 0 1826 10 0 445 -627 125 65 17 788 818 10 0 976 -628 120 17 30 279 309 10 0 31 -629 84 255 13 282 312 10 0 748 -630 222 331 10 540 570 10 0 328 -631 332 459 35 369 399 10 0 381 -632 226 175 -37 1694 1724 10 655 0 -633 404 140 -24 1259 1289 10 871 0 -634 223 178 -33 1136 1166 10 185 0 -635 330 308 -5 1170 1200 10 622 0 -636 140 108 -15 1071 1101 10 309 0 -637 34 239 -29 0 1699 10 882 0 -638 94 192 -33 1080 1110 10 758 0 -639 458 213 22 1128 1158 10 0 560 -640 13 314 14 245 275 10 0 737 -641 202 391 30 0 1767 10 0 522 -642 339 41 6 456 486 10 0 368 -643 224 56 13 1186 1216 10 0 519 -644 345 431 -26 345 375 10 983 0 -645 292 104 26 304 334 0 0 1027 -646 318 99 35 1213 1243 10 0 13 -647 46 248 -11 814 844 10 824 0 -648 482 184 -22 0 1674 10 46 0 -649 411 379 25 0 1709 10 0 828 -650 293 174 31 87 117 10 0 661 -651 169 305 -22 162 192 10 517 0 -652 394 47 -24 313 343 10 774 0 -653 323 29 7 1137 1167 0 0 1015 -654 65 343 38 207 237 10 0 495 -655 158 179 37 0 1799 10 0 632 -656 299 353 -17 0 1801 10 526 0 -657 9 233 -5 306 336 10 289 0 -658 330 138 -13 0 1778 10 505 0 -659 48 412 -26 1032 1062 10 363 0 -660 385 17 -12 809 839 10 624 0 -661 382 110 -31 1112 1142 10 650 0 -662 336 493 20 0 1658 10 0 391 -663 181 441 -16 542 572 10 840 0 -664 162 301 -5 1613 1643 10 284 0 -665 1 101 8 1257 1287 10 0 323 -666 80 117 24 824 854 10 0 428 -667 210 219 7 50 80 10 0 27 -668 404 59 -10 913 943 10 271 0 -669 288 439 16 0 1723 10 0 618 -670 149 458 -10 0 1684 10 178 0 -671 257 391 -31 1633 1663 10 203 0 -672 405 349 15 522 552 10 0 5 -673 191 215 -26 68 98 10 213 0 -674 231 29 14 1226 1256 0 0 1025 -675 253 50 27 226 256 10 0 482 -676 441 177 23 1001 1031 0 0 1030 -677 5 445 30 313 343 10 0 167 -678 463 253 -33 1047 1077 10 198 0 -679 435 180 37 225 255 10 0 782 -680 198 85 -23 263 293 10 260 0 -681 59 388 -19 663 693 10 73 0 -682 373 418 -25 1259 1289 10 78 0 -683 142 80 -3 0 1714 10 895 0 -684 441 7 -26 392 422 10 752 0 -685 33 268 18 696 726 10 0 52 -686 355 174 -21 0 1786 10 611 0 -687 228 260 -36 1606 1636 10 690 0 -688 114 460 -13 0 1665 10 274 0 -689 337 41 8 1002 1032 10 0 968 -690 154 374 36 0 1759 10 0 687 -691 235 13 -18 359 389 10 38 0 -692 303 78 12 179 209 10 0 564 -693 103 464 -8 1273 1303 10 408 0 -694 325 311 22 1322 1352 0 0 1005 -695 306 235 25 57 87 10 0 827 -696 382 360 26 178 208 10 0 44 -697 235 288 18 40 70 10 0 607 -698 0 356 -15 0 1644 10 717 0 -699 178 135 -28 0 1780 10 865 0 -700 226 423 15 197 227 10 0 353 -701 15 11 15 952 982 10 0 354 -702 144 35 26 239 269 10 0 747 -703 176 199 28 89 119 10 0 781 -704 247 306 33 56 86 10 0 751 -705 396 417 13 0 1694 10 0 124 -706 289 220 19 49 79 10 0 559 -707 23 235 -8 1023 1053 10 315 0 -708 137 377 23 169 199 10 0 880 -709 400 71 17 1372 1402 10 0 601 -710 261 359 10 109 139 10 0 581 -711 438 127 2 941 971 10 0 83 -712 318 280 21 0 1841 0 0 1009 -713 333 293 -36 617 647 10 74 0 -714 436 295 11 528 558 10 0 43 -715 62 94 16 0 1671 10 0 158 -716 495 355 3 1243 1273 10 0 219 -717 13 394 15 373 403 10 0 698 -718 172 292 17 0 1827 10 0 937 -719 14 232 18 0 1679 0 0 1020 -720 437 90 12 585 615 10 0 467 -721 214 274 -21 0 1872 10 461 0 -722 420 383 27 982 1012 10 0 996 -723 120 261 -23 793 823 10 755 0 -724 179 75 13 740 770 10 0 447 -725 484 224 7 300 330 10 0 870 -726 214 245 8 36 66 10 0 1000 -727 395 474 -5 387 417 10 358 0 -728 368 311 -13 926 956 10 204 0 -729 199 203 -35 1457 1487 10 377 0 -730 485 428 22 1490 1520 0 0 1003 -731 86 199 23 0 1744 10 0 63 -732 447 272 -14 384 414 10 928 0 -733 40 304 -22 1145 1175 10 156 0 -734 475 267 7 780 810 10 0 319 -735 482 141 -21 1011 1041 10 868 0 -736 489 274 31 534 564 10 0 883 -737 26 342 -14 321 351 10 640 0 -738 139 438 -9 0 1697 10 308 0 -739 12 358 -8 1224 1254 10 571 0 -740 125 61 -22 612 642 10 515 0 -741 360 284 -24 0 1800 10 986 0 -742 29 358 23 611 641 10 0 596 -743 285 247 -15 0 1880 10 218 0 -744 248 386 22 378 408 10 0 102 -745 415 207 18 900 930 10 0 108 -746 130 247 17 120 150 10 0 792 -747 172 66 -26 1303 1333 10 702 0 -748 92 259 -13 399 429 10 629 0 -749 379 486 22 672 702 0 0 1013 -750 452 484 -20 0 1606 10 342 0 -751 268 288 -33 1267 1297 10 704 0 -752 349 43 26 229 259 10 0 684 -753 225 269 30 0 1884 0 0 1031 -754 50 383 -10 260 290 10 380 0 -755 110 251 23 498 528 10 0 723 -756 461 182 -17 629 659 10 797 0 -757 255 487 -12 398 428 10 817 0 -758 133 202 33 461 491 10 0 638 -759 34 329 2 1043 1073 10 0 205 -760 368 452 16 670 700 10 0 437 -761 242 106 -14 1268 1298 10 10 0 -762 171 303 -9 0 1820 10 299 0 -763 329 456 -3 0 1695 10 457 0 -764 490 286 29 0 1673 10 0 887 -765 61 214 4 0 1723 10 0 86 -766 365 74 24 848 878 10 0 112 -767 321 149 -14 0 1792 10 464 0 -768 84 453 19 0 1653 10 0 549 -769 26 442 -4 1344 1374 10 982 0 -770 180 283 23 744 774 10 0 478 -771 394 322 12 1025 1055 10 0 555 -772 348 348 -36 935 965 10 223 0 -773 309 161 23 583 613 10 0 572 -774 385 58 24 0 1681 10 0 652 -775 228 287 21 43 73 10 0 853 -776 312 453 -32 550 580 10 533 0 -777 35 344 -29 863 893 10 518 0 -778 393 98 13 753 783 0 0 1028 -779 208 488 22 478 508 10 0 545 -780 235 33 30 1337 1367 10 0 456 -781 140 137 -28 570 600 10 703 0 -782 405 187 -37 1251 1281 10 679 0 -783 330 371 1 0 1770 10 0 40 -784 265 0 10 0 1665 10 0 507 -785 295 89 23 742 772 10 0 889 -786 3 23 11 0 1580 10 0 356 -787 363 225 35 856 886 10 0 916 -788 148 208 22 0 1805 10 0 625 -789 466 362 15 0 1672 10 0 910 -790 267 290 -11 0 1872 10 501 0 -791 98 2 -28 592 622 10 279 0 -792 131 246 -17 832 862 10 746 0 -793 418 75 11 448 478 10 0 561 -794 366 260 23 1520 1550 0 0 1048 -795 138 28 23 1097 1127 10 0 162 -796 209 212 18 0 1860 10 0 225 -797 443 167 17 543 573 10 0 756 -798 156 65 -27 1037 1067 10 110 0 -799 279 355 9 166 196 0 0 1041 -800 206 172 29 788 818 10 0 866 -801 32 94 14 930 960 10 0 157 -802 301 239 31 52 82 10 0 60 -803 471 368 19 0 1665 10 0 347 -804 133 273 20 119 149 10 0 563 -805 253 74 20 0 1739 10 0 303 -806 470 405 -14 0 1646 10 874 0 -807 77 172 -10 786 816 10 616 0 -808 77 465 11 275 305 10 0 243 -809 466 96 -19 1383 1413 10 535 0 -810 402 277 -24 1438 1468 10 119 0 -811 267 374 23 601 631 10 0 834 -812 450 194 27 625 655 10 0 169 -813 89 65 16 720 750 10 0 942 -814 429 389 -21 424 454 10 835 0 -815 202 28 -18 0 1688 10 245 0 -816 46 389 -18 0 1669 10 375 0 -817 246 407 12 312 342 10 0 757 -818 452 110 -32 0 1670 10 953 0 -819 213 185 21 74 104 10 0 846 -820 134 276 -23 133 163 10 122 0 -821 262 97 -25 947 977 10 396 0 -822 469 489 -12 555 585 10 216 0 -823 364 71 -21 1348 1378 10 434 0 -824 68 240 11 794 824 10 0 647 -825 494 468 31 352 382 10 0 490 -826 439 222 -11 980 1010 10 4 0 -827 386 225 -25 919 949 10 695 0 -828 434 359 -25 1392 1422 10 649 0 -829 103 177 -21 626 656 10 95 0 -830 89 322 -19 1021 1051 10 199 0 -831 307 249 -14 1377 1407 10 283 0 -832 30 155 -16 1280 1310 10 265 0 -833 401 314 -27 976 1006 10 133 0 -834 217 357 -23 1420 1450 10 811 0 -835 373 421 21 237 267 10 0 814 -836 5 281 -25 1372 1402 10 424 0 -837 173 474 -14 1285 1315 10 946 0 -838 36 301 21 219 249 10 0 551 -839 429 169 8 903 933 10 0 894 -840 195 450 16 0 1708 10 0 663 -841 95 382 19 0 1712 10 0 455 -842 225 121 18 0 1784 0 0 1010 -843 10 407 -18 434 464 10 190 0 -844 221 269 -21 1265 1295 10 547 0 -845 264 180 -14 1681 1711 10 277 0 -846 168 59 -21 366 396 10 819 0 -847 281 96 1 0 1758 10 0 980 -848 387 349 -23 0 1746 10 142 0 -849 398 329 17 167 197 10 0 152 -850 239 486 3 1482 1512 0 0 1047 -851 237 420 15 1334 1364 10 0 474 -852 346 354 8 0 1774 10 0 899 -853 172 314 -21 545 575 10 775 0 -854 233 230 20 26 56 10 0 499 -855 79 80 -25 1382 1412 10 604 0 -856 243 402 13 405 435 10 0 237 -857 117 110 -4 0 1722 10 591 0 -858 66 314 26 194 224 10 0 367 -859 58 391 -16 882 912 10 608 0 -860 142 360 -29 1532 1562 10 453 0 -861 492 326 -19 1204 1234 10 125 0 -862 381 328 12 0 1763 10 0 420 -863 62 236 29 558 588 10 0 325 -864 344 70 -15 1146 1176 10 344 0 -865 151 81 28 1558 1588 10 0 699 -866 240 240 -29 1700 1730 10 800 0 -867 46 163 8 926 956 10 0 609 -868 455 168 21 867 897 10 0 735 -869 428 202 -9 904 934 10 94 0 -870 432 199 -7 0 1726 10 725 0 -871 391 112 24 1000 1030 10 0 633 -872 451 305 13 208 238 10 0 536 -873 214 311 14 70 100 0 0 1022 -874 465 367 14 0 1671 10 0 806 -875 164 473 26 296 326 0 0 1019 -876 364 173 30 180 210 10 0 300 -877 274 261 -26 1707 1737 10 407 0 -878 133 455 -16 808 838 10 327 0 -879 351 481 10 322 352 10 0 228 -880 115 395 -23 815 845 10 708 0 -881 297 304 4 71 101 10 0 475 -882 7 194 29 0 1666 10 0 637 -883 409 255 -31 0 1756 10 736 0 -884 87 213 -23 626 656 10 606 0 -885 60 246 -16 0 1725 10 29 0 -886 3 471 13 0 1584 0 0 1012 -887 418 251 -29 1197 1227 10 764 0 -888 153 362 7 0 1767 10 0 909 -889 323 77 -23 0 1728 10 785 0 -890 143 158 12 141 171 10 0 963 -891 351 148 30 461 491 10 0 170 -892 426 38 -9 609 639 10 936 0 -893 226 316 21 70 100 10 0 161 -894 347 192 -8 1488 1518 10 839 0 -895 102 6 3 1458 1488 10 0 683 -896 41 120 22 696 726 10 0 556 -897 247 443 -14 330 360 10 99 0 -898 218 271 -8 1574 1604 10 923 0 -899 376 385 -8 184 214 10 852 0 -900 241 402 11 0 1763 10 0 261 -901 213 399 18 234 264 10 0 432 -902 32 191 -23 586 616 10 409 0 -903 441 374 10 227 257 10 0 233 -904 376 113 -5 0 1729 10 36 0 -905 215 434 9 0 1728 0 0 1043 -906 499 316 -17 0 1658 10 554 0 -907 318 497 21 0 1659 0 0 1044 -908 256 441 -20 0 1724 10 567 0 -909 174 397 -7 1245 1275 10 888 0 -910 468 360 -15 274 304 10 789 0 -911 287 256 18 37 67 10 0 141 -912 448 397 33 866 896 0 0 1026 -913 352 487 -28 902 932 10 334 0 -914 253 118 -33 547 577 10 947 0 -915 159 299 12 1016 1046 10 0 15 -916 351 233 -35 1423 1453 10 787 0 -917 268 113 21 0 1777 10 0 444 -918 164 332 -14 1280 1310 10 42 0 -919 88 484 5 0 1631 10 0 324 -920 360 488 -21 0 1653 10 11 0 -921 343 166 -14 876 906 10 372 0 -922 497 266 -14 748 778 10 438 0 -923 138 406 8 1216 1246 10 0 898 -924 420 224 -6 429 459 10 159 0 -925 231 410 14 0 1754 10 0 569 -926 199 438 3 0 1721 10 0 369 -927 219 215 -17 0 1869 10 254 0 -928 365 274 14 117 147 10 0 732 -929 481 454 -13 0 1607 10 949 0 -930 187 61 19 545 575 10 0 144 -931 372 97 13 214 244 10 0 292 -932 187 263 35 64 94 10 0 253 -933 371 427 23 0 1701 10 0 310 -934 74 215 10 229 259 10 0 258 -935 375 145 -28 929 959 10 351 0 -936 365 28 9 268 298 10 0 892 -937 118 314 -17 338 368 10 718 0 -938 60 29 32 1363 1393 0 0 1046 -939 478 300 12 0 1682 10 0 67 -940 33 152 17 1320 1350 10 0 528 -941 347 184 -13 1079 1109 10 524 0 -942 94 40 -16 1068 1098 10 813 0 -943 290 328 -30 144 174 10 28 0 -944 96 346 -17 0 1734 10 136 0 -945 97 288 22 1284 1314 10 0 586 -946 176 470 14 547 577 10 0 837 -947 206 97 33 0 1756 10 0 914 -948 210 133 15 689 719 10 0 51 -949 489 457 13 0 1599 10 0 929 -950 418 399 -25 438 468 10 995 0 -951 392 491 -26 0 1636 10 480 0 -952 437 19 15 1014 1044 10 0 311 -953 495 83 32 0 1619 10 0 818 -954 468 352 9 768 798 10 0 370 -955 390 120 -15 1004 1034 10 230 0 -956 80 357 1 530 560 0 0 1021 -957 394 310 -15 0 1759 10 994 0 -958 61 441 -7 544 574 10 977 0 -959 52 303 25 441 471 10 0 543 -960 391 202 14 0 1767 10 0 575 -961 36 451 -34 0 1622 10 23 0 -962 276 84 20 0 1747 10 0 610 -963 130 140 -12 194 224 10 890 0 -964 16 287 12 0 1679 10 0 305 -965 292 136 28 781 811 10 0 101 -966 53 204 -15 1055 1085 10 446 0 -967 359 287 -29 0 1800 10 93 0 -968 309 29 -8 1294 1324 10 689 0 -969 473 491 -15 0 1587 10 531 0 -970 273 255 -26 1492 1522 10 202 0 -971 263 153 12 0 1818 10 0 165 -972 328 458 -25 768 798 10 459 0 -973 401 164 -31 0 1742 10 209 0 -974 480 119 -17 628 658 10 268 0 -975 488 96 -5 1066 1096 10 64 0 -976 149 98 -17 1165 1195 10 627 0 -977 49 437 7 427 457 10 0 958 -978 440 77 -16 0 1659 10 417 0 -979 43 135 31 236 266 10 0 552 -980 188 151 -1 1297 1327 10 847 0 -981 175 422 -25 1446 1476 10 333 0 -982 48 437 4 804 834 10 0 769 -983 334 403 26 174 204 10 0 644 -984 372 115 13 364 394 10 0 114 -985 111 192 -11 1199 1229 10 179 0 -986 357 290 24 114 144 10 0 741 -987 331 134 -30 1124 1154 10 508 0 -988 495 199 25 337 367 10 0 506 -989 441 60 21 1459 1489 0 0 1002 -990 51 89 19 1208 1238 0 0 1008 -991 452 206 -9 492 522 10 54 0 -992 195 386 13 146 176 10 0 439 -993 172 24 -11 1452 1482 10 472 0 -994 408 318 15 0 1743 10 0 957 -995 410 399 25 234 264 10 0 950 -996 413 345 -27 1218 1248 10 722 0 -997 215 129 17 1119 1149 0 0 1029 -998 380 350 15 866 896 10 0 355 -999 19 38 -24 847 877 10 155 0 -1000 166 247 -8 84 114 10 726 0 -1001 457 492 -7 0 1597 10 207 0 -1002 441 60 -21 1459 1489 10 989 0 -1003 485 428 -22 1490 1520 10 730 0 -1004 53 466 -9 335 365 10 263 0 -1005 325 311 -22 1322 1352 10 694 0 -1006 193 138 -30 661 691 10 330 0 -1007 392 1 -11 605 635 10 587 0 -1008 51 89 -19 1208 1238 10 990 0 -1009 318 280 -21 0 1841 10 712 0 -1010 225 121 -18 0 1784 10 842 0 -1011 68 53 -16 739 769 10 275 0 -1012 3 471 -13 0 1584 10 886 0 -1013 379 486 -22 672 702 10 749 0 -1014 475 352 -33 0 1668 10 304 0 -1015 323 29 -7 1137 1167 10 653 0 -1016 211 411 -15 0 1750 10 183 0 -1017 397 477 -13 0 1645 10 469 0 -1018 200 27 -22 525 555 10 194 0 -1019 164 473 -26 296 326 10 875 0 -1020 14 232 -18 0 1679 10 719 0 -1021 80 357 -1 530 560 10 956 0 -1022 214 311 -14 70 100 10 873 0 -1023 418 269 -3 0 1746 10 301 0 -1024 59 276 -11 892 922 10 62 0 -1025 231 29 -14 1226 1256 10 674 0 -1026 448 397 -33 866 896 10 912 0 -1027 292 104 -26 304 334 10 645 0 -1028 393 98 -13 753 783 10 778 0 -1029 215 129 -17 1119 1149 10 997 0 -1030 441 177 -23 1001 1031 10 676 0 -1031 225 269 -30 0 1884 10 753 0 -1032 297 283 -28 0 1858 10 278 0 -1033 370 262 -15 1099 1129 10 104 0 -1034 277 428 -7 490 520 10 440 0 -1035 500 228 -8 0 1665 10 109 0 -1036 245 176 -20 0 1841 10 82 0 -1037 57 183 -15 0 1711 10 143 0 -1038 80 337 -28 0 1725 10 430 0 -1039 241 180 -13 1695 1725 10 106 0 -1040 142 30 -32 1246 1276 10 398 0 -1041 279 355 -9 166 196 10 799 0 -1042 325 147 -14 1187 1217 10 129 0 -1043 215 434 -9 0 1728 10 905 0 -1044 318 497 -21 0 1659 10 907 0 -1045 177 404 -17 1262 1292 10 340 0 -1046 60 29 -32 1363 1393 10 938 0 -1047 239 486 -3 1482 1512 10 850 0 -1048 366 260 -23 1520 1550 10 794 0 diff --git a/jsprit-instances/instances/lilim/1000/LR1107.txt b/jsprit-instances/instances/lilim/1000/LR1107.txt deleted file mode 100644 index ea0ea9b21..000000000 --- a/jsprit-instances/instances/lilim/1000/LR1107.txt +++ /dev/null @@ -1,1048 +0,0 @@ -250 200 1 -0 250 250 0 0 1925 0 0 0 -1 171 34 21 1143 1173 10 0 456 -2 67 190 -21 1173 1203 10 428 0 -3 80 400 10 0 1689 10 0 42 -4 439 237 -14 939 969 10 928 0 -5 377 385 -23 866 896 10 310 0 -6 449 428 -18 1247 1277 10 217 0 -7 342 481 18 1440 1470 10 0 358 -8 466 149 -8 1186 1216 10 839 0 -9 83 290 14 0 1744 10 0 325 -10 251 63 -18 987 1017 10 362 0 -11 328 491 -12 0 1662 10 817 0 -12 260 472 -33 0 1693 10 261 0 -13 290 145 -25 1282 1312 10 90 0 -14 266 221 9 0 1882 10 0 181 -15 164 320 12 1095 1125 10 0 527 -16 52 412 -17 0 1660 10 136 0 -17 485 104 21 794 824 10 0 46 -18 144 331 13 0 1782 10 0 302 -19 387 394 8 0 1717 10 0 852 -20 472 57 -14 0 1621 10 378 0 -21 343 276 15 0 1819 10 0 621 -22 104 349 20 0 1739 10 0 234 -23 28 467 -17 1343 1373 10 177 0 -24 91 427 -13 883 913 10 274 0 -25 429 476 -7 0 1627 10 207 0 -26 210 276 -36 0 1868 10 532 0 -27 58 39 12 0 1630 10 0 999 -28 273 300 30 55 85 10 0 253 -29 41 232 -19 0 1706 10 135 0 -30 25 53 -11 1020 1050 10 402 0 -31 52 18 28 857 887 10 0 938 -32 27 444 -36 1080 1110 10 843 0 -33 178 72 -28 757 787 10 680 0 -34 406 460 2 719 749 10 0 191 -35 250 328 24 249 279 10 0 851 -36 492 34 -18 0 1591 10 49 0 -37 412 100 -21 0 1695 10 149 0 -38 233 87 18 0 1752 10 0 427 -39 60 5 -8 1044 1074 10 225 0 -40 406 408 15 0 1693 10 0 881 -41 245 42 24 547 577 10 0 106 -42 166 345 -10 1130 1160 10 3 0 -43 440 294 -15 960 990 10 322 0 -44 370 382 11 884 914 10 0 772 -45 32 319 21 401 431 10 0 739 -46 480 136 -21 0 1659 10 17 0 -47 371 163 21 828 858 10 0 139 -48 0 188 26 0 1658 10 0 382 -49 438 5 18 0 1607 10 0 36 -50 132 477 25 327 357 10 0 878 -51 203 211 -22 0 1854 10 788 0 -52 2 264 -19 0 1667 10 493 0 -53 231 167 -44 0 1830 10 500 0 -54 423 221 -21 0 1740 10 590 0 -55 459 53 20 0 1628 10 0 64 -56 386 154 31 1101 1131 10 0 633 -57 130 494 -14 0 1644 10 873 0 -58 31 175 24 0 1684 10 0 583 -59 69 423 32 802 832 10 0 224 -60 352 241 -18 792 822 10 530 0 -61 261 201 -28 1514 1544 10 965 0 -62 59 276 11 892 922 10 0 442 -63 146 188 -25 1235 1265 10 498 0 -64 451 62 -20 0 1640 10 55 0 -65 299 285 -24 1254 1284 10 635 0 -66 142 372 -31 0 1753 10 520 0 -67 440 201 29 893 923 10 0 869 -68 219 210 14 50 80 10 0 997 -69 64 198 10 0 1722 10 0 966 -70 390 249 -20 582 612 10 141 0 -71 9 101 -3 666 696 10 393 0 -72 424 288 -14 1057 1087 10 438 0 -73 77 372 19 211 241 10 0 841 -74 298 264 36 50 80 10 0 994 -75 405 454 11 0 1659 10 0 132 -76 407 35 11 0 1649 10 0 417 -77 225 369 38 0 1794 10 0 522 -78 347 459 -12 479 509 10 644 0 -79 117 178 28 0 1764 10 0 528 -80 132 479 -13 257 287 10 670 0 -81 201 66 14 0 1725 10 0 147 -82 245 176 -26 0 1841 10 516 0 -83 470 138 16 1389 1419 10 0 168 -84 115 296 -22 1529 1559 10 945 0 -85 348 476 -7 1197 1227 10 445 0 -86 43 210 20 210 240 10 0 345 -87 327 139 -18 1257 1287 10 658 0 -88 49 353 15 1446 1476 10 0 312 -89 356 256 19 106 136 10 0 883 -90 335 99 25 0 1742 10 0 13 -91 363 34 19 272 302 10 0 936 -92 33 278 -25 0 1697 10 424 0 -93 366 288 -24 684 714 10 986 0 -94 452 172 9 0 1699 10 0 568 -95 86 189 21 227 257 10 0 731 -96 262 369 15 0 1796 0 0 1036 -97 218 403 -20 0 1759 10 619 0 -98 218 12 3 0 1675 10 0 303 -99 228 399 -21 0 1765 10 893 0 -100 492 188 33 0 1666 0 0 1012 -101 267 174 -25 1618 1648 10 396 0 -102 274 441 -29 0 1723 10 272 0 -103 210 113 -24 690 720 10 339 0 -104 370 262 -13 1099 1129 10 204 0 -105 303 186 -32 1354 1384 10 613 0 -106 241 180 -24 1695 1725 10 41 0 -107 100 85 14 0 1693 10 0 857 -108 350 199 21 0 1803 0 0 1046 -109 500 228 -12 0 1665 10 732 0 -110 251 238 27 0 1903 0 0 1016 -111 114 102 -19 0 1715 10 990 0 -112 345 146 27 0 1775 0 0 1040 -113 21 146 21 487 517 10 0 446 -114 330 147 -23 848 878 10 773 0 -115 476 61 36 0 1621 10 0 720 -116 386 245 16 0 1779 10 0 278 -117 201 278 -23 0 1859 10 770 0 -118 421 499 -18 0 1613 10 229 0 -119 426 231 24 1028 1058 10 0 826 -120 105 137 32 452 482 10 0 980 -121 64 437 11 918 948 10 0 659 -122 181 260 -23 0 1846 10 606 0 -123 413 391 8 0 1700 10 0 405 -124 370 493 -32 571 601 10 533 0 -125 447 267 19 980 1010 10 0 554 -126 232 101 -19 0 1765 10 256 0 -127 371 332 -17 530 560 10 618 0 -128 447 383 -5 0 1678 10 622 0 -129 325 147 14 0 1788 10 0 267 -130 489 437 -9 707 737 10 266 0 -131 415 95 -9 1177 1207 10 300 0 -132 331 356 -11 0 1782 10 75 0 -133 374 346 27 0 1759 10 0 833 -134 108 37 23 549 579 10 0 279 -135 5 224 19 0 1669 10 0 29 -136 93 413 17 226 256 10 0 16 -137 210 29 -22 0 1691 10 194 0 -138 136 265 -5 0 1801 10 289 0 -139 409 155 -21 0 1730 10 47 0 -140 111 178 18 156 186 10 0 748 -141 291 251 20 41 71 10 0 70 -142 322 290 -18 0 1833 10 814 0 -143 57 183 -15 0 1711 10 337 0 -144 181 185 19 0 1821 10 0 800 -145 7 382 -14 770 800 10 640 0 -146 425 448 -23 794 824 10 578 0 -147 174 41 -14 0 1693 10 81 0 -148 161 276 8 133 163 0 0 1008 -149 398 49 21 0 1666 10 0 37 -150 210 379 12 709 739 10 0 641 -151 60 231 -23 0 1725 10 409 0 -152 453 360 13 230 260 10 0 954 -153 367 97 17 0 1723 10 0 931 -154 488 3 -20 0 1572 10 684 0 -155 44 115 24 246 276 10 0 603 -156 48 293 22 0 1709 10 0 336 -157 64 135 11 0 1697 10 0 867 -158 65 62 15 0 1652 10 0 275 -159 404 207 -12 0 1756 10 510 0 -160 68 303 -35 0 1726 10 932 0 -161 263 418 25 278 308 10 0 776 -162 147 30 26 1109 1139 10 0 993 -163 384 149 18 0 1748 0 0 1020 -164 340 416 36 0 1727 10 0 972 -165 271 128 12 0 1792 10 0 172 -166 89 358 23 0 1722 10 0 681 -167 20 480 -6 0 1590 10 208 0 -168 488 173 -16 0 1665 10 83 0 -169 439 156 2 0 1704 10 0 195 -170 389 156 -26 716 746 10 202 0 -171 111 392 18 0 1717 10 0 888 -172 267 162 -12 1449 1479 10 165 0 -173 248 176 32 0 1841 10 0 845 -174 413 476 34 1179 1209 10 0 682 -175 352 481 -10 1285 1315 10 391 0 -176 264 135 -1 0 1800 10 444 0 -177 29 462 17 1310 1340 10 0 23 -178 148 462 10 727 757 0 0 1014 -179 44 140 11 868 898 10 0 638 -180 414 378 23 495 525 10 0 806 -181 392 95 -9 766 796 10 14 0 -182 216 341 19 654 684 10 0 340 -183 211 411 15 0 1750 10 0 905 -184 317 45 -11 0 1700 10 368 0 -185 178 150 33 632 662 10 0 634 -186 428 302 27 1016 1046 10 0 485 -187 450 45 -17 0 1629 10 709 0 -188 453 318 30 0 1701 10 0 370 -189 186 135 24 0 1784 0 0 1002 -190 11 403 -7 343 373 10 544 0 -191 433 447 -2 794 824 10 34 0 -192 272 420 -3 1386 1416 10 850 0 -193 429 59 -8 0 1654 10 904 0 -194 200 27 22 525 555 10 0 137 -195 498 171 -2 0 1655 10 169 0 -196 487 320 21 858 888 10 0 219 -197 45 166 -18 1013 1043 10 258 0 -198 490 276 33 0 1674 10 0 512 -199 126 391 -26 0 1728 10 937 0 -200 92 18 8 0 1635 0 0 1013 -201 293 228 19 0 1867 10 0 257 -202 343 205 26 0 1812 10 0 170 -203 182 480 -12 0 1676 10 462 0 -204 385 285 13 868 898 10 0 104 -205 44 344 12 1079 1109 10 0 664 -206 170 347 -8 0 1790 10 923 0 -207 457 492 7 0 1597 10 0 25 -208 124 448 6 369 399 10 0 167 -209 398 210 31 0 1762 10 0 812 -210 75 118 21 409 439 10 0 556 -211 105 474 -5 471 501 10 919 0 -212 134 211 35 122 152 10 0 323 -213 211 248 26 39 69 10 0 721 -214 212 186 -27 1722 1752 10 448 0 -215 492 335 -19 0 1659 10 861 0 -216 497 483 -31 353 383 10 825 0 -217 440 436 18 0 1650 10 0 6 -218 311 203 15 723 753 10 0 970 -219 491 369 -21 0 1647 10 196 0 -220 67 378 26 470 500 10 0 380 -221 383 17 -30 940 970 10 620 0 -222 7 82 25 412 442 10 0 552 -223 342 319 36 0 1800 10 0 283 -224 78 406 -32 960 990 10 59 0 -225 103 123 8 490 520 10 0 39 -226 241 38 -14 0 1703 10 674 0 -227 224 3 -18 690 720 10 245 0 -228 436 467 -25 736 766 10 995 0 -229 438 488 18 0 1612 10 0 118 -230 351 60 -12 0 1700 10 624 0 -231 13 214 -10 1354 1384 10 616 0 -232 429 67 16 732 762 10 0 592 -233 498 456 27 0 1593 10 0 822 -234 135 400 -20 0 1726 10 22 0 -235 215 293 13 55 85 10 0 504 -236 354 416 -25 0 1720 10 550 0 -237 294 421 -19 1575 1605 10 763 0 -238 208 445 22 0 1716 10 0 840 -239 230 320 8 1192 1222 10 0 704 -240 157 38 3 0 1684 10 0 702 -241 441 100 -14 0 1673 10 978 0 -242 61 170 -23 1006 1036 10 807 0 -243 79 467 22 351 381 10 0 379 -244 365 190 -13 1477 1507 10 524 0 -245 282 1 18 0 1664 10 0 227 -246 124 111 15 0 1728 10 0 521 -247 247 219 -19 0 1884 10 610 0 -248 28 180 -21 0 1683 10 298 0 -249 167 488 -20 252 282 10 369 0 -250 442 289 -7 0 1720 10 734 0 -251 136 430 -22 0 1702 10 517 0 -252 38 15 3 0 1599 10 0 410 -253 246 314 -30 1445 1475 10 28 0 -254 176 200 -17 568 598 10 673 0 -255 337 232 -10 1571 1601 10 924 0 -256 257 133 19 0 1798 10 0 126 -257 295 247 -19 1303 1333 10 201 0 -258 39 162 18 565 595 10 0 197 -259 79 257 -11 953 983 10 824 0 -260 236 126 23 0 1791 10 0 914 -261 259 498 33 1075 1105 10 0 12 -262 180 162 9 0 1803 10 0 435 -263 53 466 9 335 365 10 0 418 -264 167 291 -12 1634 1664 10 737 0 -265 89 185 -6 600 630 10 296 0 -266 487 446 9 0 1608 10 0 130 -267 308 199 -14 0 1838 10 129 0 -268 481 84 17 506 536 10 0 974 -269 495 227 20 0 1669 10 0 922 -270 397 57 17 0 1673 10 0 414 -271 372 39 10 0 1672 10 0 564 -272 278 450 29 1375 1405 10 0 102 -273 292 32 14 229 259 10 0 691 -274 90 496 13 0 1622 10 0 24 -275 68 53 -15 739 769 10 158 0 -276 371 423 10 0 1704 10 0 783 -277 273 149 -12 0 1812 10 971 0 -278 297 283 -16 0 1858 10 116 0 -279 120 37 -23 0 1666 10 134 0 -280 371 488 -22 0 1649 10 749 0 -281 206 174 -27 0 1828 10 433 0 -282 174 347 3 0 1792 10 0 808 -283 330 281 -36 1330 1360 10 223 0 -284 67 451 -18 1216 1246 10 375 0 -285 27 464 -8 0 1606 10 365 0 -286 361 178 -9 0 1783 10 486 0 -287 463 406 -9 857 887 10 848 0 -288 456 157 -17 0 1689 10 797 0 -289 153 244 5 108 138 10 0 138 -290 153 192 -28 0 1802 10 829 0 -291 352 63 6 1178 1208 10 0 465 -292 371 71 -23 0 1699 10 348 0 -293 163 472 9 653 683 10 0 545 -294 448 495 40 384 414 10 0 490 -295 282 10 30 0 1673 10 0 780 -296 66 163 6 395 425 10 0 265 -297 314 205 -14 1527 1557 10 372 0 -298 83 169 21 0 1730 10 0 248 -299 221 291 -2 0 1865 10 371 0 -300 374 116 9 587 617 10 0 131 -301 418 269 3 0 1746 10 0 736 -302 178 302 -13 887 917 10 18 0 -303 250 57 -3 0 1722 10 98 0 -304 475 352 33 0 1668 10 0 347 -305 1 252 -27 0 1666 10 401 0 -306 286 356 -9 0 1804 10 799 0 -307 65 82 13 740 770 10 0 492 -308 154 392 9 171 201 10 0 582 -309 196 56 15 0 1714 10 0 815 -310 366 390 23 0 1734 10 0 5 -311 436 25 -15 1282 1312 10 952 0 -312 67 352 -15 0 1706 10 88 0 -313 173 182 -7 102 132 10 667 0 -314 390 34 7 1060 1090 10 0 317 -315 18 225 8 0 1682 10 0 1000 -316 57 43 15 0 1632 10 0 701 -317 388 44 -7 1131 1161 10 314 0 -318 269 112 -24 1263 1293 10 499 0 -319 374 260 27 0 1791 0 0 1004 -320 291 213 -15 1258 1288 10 941 0 -321 178 420 18 1071 1101 10 0 460 -322 389 255 15 785 815 10 0 43 -323 134 194 -35 1652 1682 10 212 0 -324 93 490 -14 379 409 10 688 0 -325 64 294 -14 0 1724 10 9 0 -326 493 111 26 541 571 10 0 975 -327 150 484 16 0 1661 10 0 479 -328 235 316 -26 656 686 10 751 0 -329 239 15 2 0 1680 10 0 366 -330 193 138 -21 0 1790 10 819 0 -331 40 278 -18 0 1704 10 685 0 -332 307 52 -11 0 1709 10 968 0 -333 161 416 25 0 1727 10 0 946 -334 381 457 -21 471 501 10 835 0 -335 55 318 13 312 342 10 0 363 -336 80 279 -22 0 1743 10 156 0 -337 48 162 15 220 250 10 0 143 -338 91 27 -4 1182 1212 10 491 0 -339 288 70 24 183 213 10 0 103 -340 177 404 -19 0 1745 10 182 0 -341 10 237 19 616 646 10 0 637 -342 493 493 20 856 886 10 0 750 -343 440 292 -25 940 970 10 509 0 -344 349 76 15 1031 1061 10 0 823 -345 47 208 -20 226 256 10 86 0 -346 283 454 -8 0 1709 10 425 0 -347 486 324 -33 0 1668 10 304 0 -348 392 87 23 0 1699 10 0 292 -349 122 422 -23 1457 1487 10 597 0 -350 37 281 17 493 523 10 0 585 -351 413 127 28 831 861 10 0 584 -352 222 499 7 845 875 10 0 432 -353 211 446 -18 0 1716 10 901 0 -354 30 7 -10 1189 1219 10 503 0 -355 398 341 33 939 969 10 0 771 -356 26 67 -8 1317 1347 10 364 0 -357 461 186 16 0 1695 10 0 756 -358 313 391 -18 0 1761 10 7 0 -359 471 94 30 0 1645 10 0 535 -360 341 72 9 805 835 10 0 458 -361 130 186 16 136 166 10 0 553 -362 257 57 18 0 1722 10 0 10 -363 94 344 -13 0 1733 10 335 0 -364 6 53 8 0 1602 10 0 356 -365 146 376 8 234 264 10 0 285 -366 244 13 -2 1013 1043 10 329 0 -367 29 336 22 0 1678 10 0 518 -368 306 42 11 0 1700 10 0 184 -369 177 486 20 0 1668 10 0 249 -370 489 338 -30 1397 1427 10 188 0 -371 179 318 2 1121 1151 10 0 299 -372 344 203 14 167 197 10 0 297 -373 149 341 -21 404 434 10 651 0 -374 307 412 -15 0 1744 10 790 0 -375 68 450 18 633 663 10 0 284 -376 420 80 -30 0 1675 10 467 0 -377 144 220 35 0 1805 0 0 1030 -378 497 54 14 978 1008 10 0 20 -379 80 458 -22 371 401 10 243 0 -380 84 377 -26 0 1706 10 220 0 -381 332 382 -13 1010 1040 10 469 0 -382 6 196 -26 1203 1233 10 48 0 -383 104 28 -14 0 1650 10 387 0 -384 224 320 -25 1284 1314 10 459 0 -385 87 3 13 0 1620 0 0 1003 -386 149 214 7 0 1808 10 0 609 -387 98 29 14 0 1647 10 0 383 -388 135 30 12 0 1667 10 0 628 -389 287 397 -20 564 594 10 626 0 -390 107 374 -16 914 944 10 608 0 -391 355 485 10 0 1658 10 0 175 -392 51 286 -28 1459 1489 10 525 0 -393 49 118 3 0 1675 10 0 71 -394 159 226 16 94 124 0 0 1042 -395 185 431 15 0 1723 10 0 981 -396 262 92 25 0 1757 10 0 101 -397 475 198 -7 0 1685 10 725 0 -398 142 30 -6 0 1670 10 846 0 -399 481 207 34 0 1681 10 0 422 -400 174 122 -21 593 623 10 699 0 -401 35 263 27 270 300 10 0 305 -402 24 71 11 346 376 10 0 30 -403 173 65 12 448 478 0 0 1034 -404 91 326 -21 0 1739 10 777 0 -405 470 417 -8 737 767 10 123 0 -406 397 153 -30 882 912 10 876 0 -407 295 283 -14 0 1860 10 728 0 -408 174 376 8 0 1768 0 0 1006 -409 38 190 23 0 1695 10 0 151 -410 16 68 -3 0 1619 10 252 0 -411 179 286 8 0 1836 10 0 762 -412 244 422 -14 538 568 10 925 0 -413 250 441 -15 0 1724 10 700 0 -414 497 18 -17 0 1577 10 270 0 -415 195 111 -13 998 1028 10 724 0 -416 26 221 28 996 1026 10 0 882 -417 442 5 -11 320 350 10 76 0 -418 44 496 -9 0 1595 10 263 0 -419 448 404 15 0 1665 10 0 849 -420 471 427 -10 0 1632 10 903 0 -421 460 424 -20 1455 1485 10 950 0 -422 461 195 -34 0 1697 10 399 0 -423 146 313 22 0 1794 10 0 859 -424 19 273 25 1017 1047 10 0 92 -425 245 461 8 649 679 10 0 346 -426 69 266 -25 0 1734 10 885 0 -427 191 84 -18 867 897 10 38 0 -428 68 160 21 0 1712 10 0 2 -429 212 47 -18 801 831 10 473 0 -430 80 337 28 0 1725 10 0 596 -431 412 478 -26 0 1636 10 480 0 -432 225 488 -7 0 1676 10 352 0 -433 105 140 27 0 1733 10 0 281 -434 389 43 -26 0 1666 10 752 0 -435 177 156 -9 0 1796 10 262 0 -436 179 497 -7 1411 1441 10 539 0 -437 377 432 -10 831 861 10 951 0 -438 497 296 14 613 643 10 0 72 -439 152 476 45 523 553 10 0 738 -440 277 428 7 490 520 10 0 669 -441 64 5 14 1129 1159 10 0 976 -442 44 311 -11 0 1701 10 62 0 -443 165 59 -12 943 973 10 683 0 -444 261 138 1 0 1803 10 0 176 -445 268 351 7 0 1813 10 0 85 -446 48 150 -21 0 1690 10 113 0 -447 215 79 5 0 1741 10 0 599 -448 109 56 27 239 269 10 0 214 -449 171 188 -37 621 651 10 655 0 -450 284 457 17 0 1706 10 0 451 -451 274 442 -17 0 1722 10 450 0 -452 33 286 11 0 1696 10 0 742 -453 112 433 -23 0 1686 10 708 0 -454 423 170 27 513 543 10 0 973 -455 213 283 14 0 1866 10 0 461 -456 240 34 -21 0 1699 10 1 0 -457 283 438 3 231 261 10 0 920 -458 324 99 -9 0 1747 10 360 0 -459 259 301 25 0 1864 10 0 384 -460 189 402 -18 0 1752 10 321 0 -461 215 282 -14 1440 1470 10 455 0 -462 166 440 12 0 1708 10 0 203 -463 374 232 -21 125 155 10 916 0 -464 339 113 -24 0 1752 10 766 0 -465 335 46 -6 0 1694 10 291 0 -466 313 493 -22 1193 1223 10 744 0 -467 432 66 30 0 1657 10 0 376 -468 76 462 -19 956 986 10 768 0 -469 397 477 13 0 1645 10 0 381 -470 196 489 23 1030 1060 10 0 926 -471 354 156 20 0 1775 10 0 505 -472 171 24 -18 1383 1413 10 577 0 -473 187 73 18 292 322 10 0 429 -474 243 408 15 0 1757 10 0 900 -475 421 387 15 0 1696 10 0 862 -476 141 426 23 531 561 10 0 860 -477 415 118 -11 0 1704 10 987 0 -478 240 255 -14 1611 1641 10 844 0 -479 162 388 -16 1126 1156 10 327 0 -480 413 493 26 0 1623 10 0 431 -481 69 414 6 1263 1293 0 0 1005 -482 273 70 -20 619 649 10 962 0 -483 142 14 18 835 865 10 0 795 -484 185 434 -25 0 1720 10 663 0 -485 360 294 -27 0 1797 10 186 0 -486 265 240 9 18 48 10 0 286 -487 280 245 21 30 60 10 0 743 -488 87 51 35 0 1658 10 0 942 -489 195 273 22 59 89 10 0 718 -490 422 498 -40 692 722 10 294 0 -491 95 64 4 766 796 10 0 338 -492 63 155 -13 0 1706 10 307 0 -493 24 259 19 0 1689 10 0 52 -494 376 92 10 0 1713 10 0 871 -495 83 300 26 500 530 10 0 543 -496 72 477 46 288 318 10 0 958 -497 380 194 3 0 1774 0 0 1031 -498 72 227 25 0 1736 10 0 63 -499 238 123 24 781 811 10 0 318 -500 188 119 44 975 1005 10 0 53 -501 229 322 -23 0 1840 10 834 0 -502 150 68 23 0 1708 10 0 514 -503 67 24 10 0 1625 10 0 354 -504 63 420 -13 0 1663 10 235 0 -505 339 144 -20 1099 1129 10 471 0 -506 454 201 -31 0 1706 10 991 0 -507 158 24 18 0 1671 0 0 1035 -508 365 119 30 382 412 10 0 778 -509 440 284 25 852 882 10 0 343 -510 417 212 12 910 940 10 0 159 -511 404 439 -13 0 1672 10 705 0 -512 472 248 -33 0 1693 10 198 0 -513 235 108 12 0 1773 10 0 930 -514 174 67 -23 0 1717 10 502 0 -515 132 151 22 154 184 10 0 666 -516 217 207 26 0 1861 10 0 82 -517 162 306 22 119 149 10 0 251 -518 48 366 -22 0 1683 10 367 0 -519 209 68 27 0 1729 10 0 947 -520 94 497 31 0 1623 10 0 66 -521 110 122 -15 0 1726 10 246 0 -522 274 403 -38 0 1761 10 77 0 -523 421 386 -25 824 854 10 649 0 -524 399 175 13 747 777 10 0 244 -525 56 268 28 1064 1094 10 0 392 -526 322 406 17 0 1744 10 0 983 -527 244 277 -12 1301 1331 10 15 0 -528 105 181 -28 0 1755 10 79 0 -529 30 97 23 1210 1240 0 0 1007 -530 359 246 18 0 1806 10 0 60 -531 498 457 15 0 1592 10 0 969 -532 190 267 36 0 1853 10 0 26 -533 334 481 32 0 1670 10 0 124 -534 18 24 32 628 658 10 0 786 -535 482 104 -30 0 1641 10 359 0 -536 460 328 -11 0 1691 10 570 0 -537 320 211 16 993 1023 10 0 541 -538 494 165 -14 0 1657 10 735 0 -539 167 445 7 0 1704 10 0 436 -540 340 291 22 470 500 10 0 713 -541 272 234 -16 1590 1620 10 537 0 -542 325 56 13 796 826 0 0 1037 -543 71 304 -26 689 719 10 495 0 -544 87 311 7 0 1741 10 0 190 -545 207 487 -9 0 1675 10 293 0 -546 332 5 -24 1033 1063 10 774 0 -547 161 275 21 0 1823 0 0 1044 -548 268 458 -34 523 553 10 908 0 -549 175 352 12 0 1789 10 0 690 -550 398 476 25 0 1645 10 0 236 -551 51 360 13 1145 1175 10 0 944 -552 21 70 -25 771 801 10 222 0 -553 80 251 -16 304 334 10 361 0 -554 457 280 -19 1000 1030 10 125 0 -555 423 315 -11 0 1731 10 714 0 -556 66 88 -21 0 1670 10 210 0 -557 479 387 -22 0 1649 10 730 0 -558 436 123 40 0 1690 10 0 818 -559 286 244 -31 1284 1314 10 802 0 -560 449 190 2 1140 1170 0 0 1017 -561 456 113 -14 1227 1257 10 605 0 -562 480 152 -5 0 1665 10 598 0 -563 100 266 5 470 500 10 0 723 -564 343 34 -10 0 1680 10 271 0 -565 374 306 -15 994 1024 10 998 0 -566 13 465 31 774 804 10 0 886 -567 230 487 -22 1130 1160 10 779 0 -568 442 153 -9 0 1700 10 94 0 -569 240 362 23 0 1803 10 0 671 -570 433 319 11 0 1720 10 0 536 -571 0 422 -13 821 851 10 698 0 -572 297 131 -35 0 1788 10 646 0 -573 71 12 2 297 327 10 0 604 -574 44 440 -23 0 1635 10 769 0 -575 447 184 -23 0 1708 10 676 0 -576 341 59 -36 790 820 10 889 0 -577 132 32 18 784 814 10 0 472 -578 411 396 23 0 1698 10 0 146 -579 450 416 25 0 1656 10 0 929 -580 323 34 13 0 1687 0 0 1011 -581 244 368 25 414 444 10 0 856 -582 90 477 -9 277 307 10 308 0 -583 34 169 -24 484 514 10 58 0 -584 351 128 -28 0 1757 10 351 0 -585 71 282 -17 0 1734 10 350 0 -586 157 269 -8 1576 1606 10 726 0 -587 392 1 11 605 635 10 0 660 -588 39 153 26 798 828 0 0 1022 -589 306 229 -14 1320 1350 10 960 0 -590 415 253 21 367 397 10 0 54 -591 92 76 4 1139 1169 10 0 617 -592 437 98 -16 1114 1144 10 232 0 -593 12 367 27 0 1650 10 0 717 -594 448 414 23 0 1658 10 0 949 -595 128 113 -29 363 393 10 636 0 -596 43 360 -28 0 1681 10 430 0 -597 102 422 23 226 256 10 0 349 -598 480 131 5 688 718 10 0 562 -599 210 81 -5 0 1742 10 447 0 -600 432 2 20 0 1608 10 0 892 -601 396 83 -24 1586 1616 10 661 0 -602 489 159 29 0 1660 10 0 648 -603 56 75 -24 0 1654 10 155 0 -604 66 31 -2 0 1629 10 573 0 -605 460 117 14 520 550 10 0 561 -606 175 239 23 75 105 10 0 122 -607 217 333 -10 0 1826 10 630 0 -608 62 375 16 349 379 10 0 390 -609 82 183 -7 1102 1132 10 386 0 -610 248 214 19 0 1879 10 0 247 -611 385 239 21 786 816 10 0 712 -612 371 315 -34 0 1778 10 656 0 -613 333 163 32 0 1795 10 0 105 -614 100 66 15 0 1678 10 0 813 -615 311 422 -35 0 1733 10 631 0 -616 153 235 10 98 128 10 0 231 -617 168 109 -4 0 1752 10 591 0 -618 284 319 17 0 1839 10 0 127 -619 195 464 20 0 1695 10 0 97 -620 382 9 30 0 1641 10 0 221 -621 325 210 -15 0 1830 10 21 0 -622 366 334 5 410 440 10 0 128 -623 200 78 -13 0 1736 10 643 0 -624 351 5 12 496 526 10 0 230 -625 197 202 -28 1204 1234 10 703 0 -626 270 337 20 0 1826 10 0 389 -627 125 65 -26 788 818 10 740 0 -628 120 17 -12 279 309 10 388 0 -629 84 255 -10 0 1749 10 934 0 -630 222 331 10 540 570 10 0 607 -631 332 459 35 369 399 10 0 615 -632 226 175 23 1694 1724 0 0 1009 -633 404 140 -31 1259 1289 10 56 0 -634 223 178 -33 1136 1166 10 185 0 -635 330 308 24 1170 1200 10 0 65 -636 140 108 29 0 1736 10 0 595 -637 34 239 -19 0 1699 10 341 0 -638 94 192 -11 1080 1110 10 179 0 -639 458 213 -21 1128 1158 10 887 0 -640 13 314 14 0 1670 10 0 145 -641 202 391 -12 0 1767 10 150 0 -642 339 41 6 456 486 10 0 689 -643 224 56 13 1186 1216 10 0 623 -644 345 431 12 345 375 10 0 78 -645 292 104 26 304 334 10 0 785 -646 318 99 35 1213 1243 10 0 572 -647 46 248 9 814 844 10 0 959 -648 482 184 -29 0 1674 10 602 0 -649 411 379 25 0 1709 10 0 523 -650 293 174 31 87 117 0 0 1023 -651 169 305 21 162 192 10 0 373 -652 394 47 5 313 343 10 0 653 -653 323 29 -5 1137 1167 10 652 0 -654 65 343 38 207 237 0 0 1021 -655 158 179 37 0 1799 10 0 449 -656 299 353 34 0 1801 10 0 612 -657 9 233 31 0 1674 10 0 707 -658 330 138 18 0 1778 10 0 87 -659 48 412 -11 1032 1062 10 121 0 -660 385 17 -11 809 839 10 587 0 -661 382 110 24 0 1723 10 0 601 -662 336 493 -21 0 1658 10 907 0 -663 181 441 25 542 572 10 0 484 -664 162 301 -12 1613 1643 10 205 0 -665 1 101 8 1257 1287 10 0 940 -666 80 117 -22 824 854 10 515 0 -667 210 219 7 50 80 10 0 313 -668 404 59 13 913 943 10 0 793 -669 288 439 -7 0 1723 10 440 0 -670 149 458 13 0 1684 10 0 80 -671 257 391 -23 1633 1663 10 569 0 -672 405 349 15 522 552 0 0 1028 -673 191 215 17 68 98 10 0 254 -674 231 29 14 1226 1256 10 0 226 -675 253 50 27 226 256 0 0 1039 -676 441 177 23 1001 1031 10 0 575 -677 5 445 -15 0 1602 10 961 0 -678 463 253 -13 0 1702 10 872 0 -679 435 180 37 225 255 10 0 868 -680 198 85 28 263 293 10 0 33 -681 59 388 -23 663 693 10 166 0 -682 373 418 -34 1259 1289 10 174 0 -683 142 80 12 0 1714 10 0 443 -684 441 7 20 392 422 10 0 154 -685 33 268 18 696 726 10 0 331 -686 355 174 33 0 1786 10 0 891 -687 228 260 12 1606 1636 10 0 866 -688 114 460 14 0 1665 10 0 324 -689 337 41 -6 1002 1032 10 642 0 -690 154 374 -12 0 1759 10 549 0 -691 235 13 -14 359 389 10 273 0 -692 303 78 12 179 209 10 0 864 -693 103 464 22 0 1656 0 0 1027 -694 325 311 22 0 1819 10 0 899 -695 306 235 25 57 87 0 0 1024 -696 382 360 26 178 208 10 0 831 -697 235 288 18 0 1875 10 0 909 -698 0 356 13 0 1644 10 0 571 -699 178 135 21 0 1780 10 0 400 -700 226 423 15 197 227 10 0 413 -701 15 11 -15 952 982 10 316 0 -702 144 35 -3 239 269 10 240 0 -703 176 199 28 0 1826 10 0 625 -704 247 306 -8 0 1859 10 239 0 -705 396 417 13 0 1694 10 0 511 -706 289 220 -35 0 1866 10 787 0 -707 23 235 -31 1023 1053 10 657 0 -708 137 377 23 169 199 10 0 453 -709 400 71 17 0 1682 10 0 187 -710 261 359 -26 0 1806 10 875 0 -711 438 127 -32 941 971 10 953 0 -712 318 280 -21 0 1841 10 611 0 -713 333 293 -22 617 647 10 540 0 -714 436 295 11 0 1724 10 0 555 -715 62 94 16 0 1671 10 0 855 -716 495 355 -16 1243 1273 10 910 0 -717 13 394 -27 373 403 10 593 0 -718 172 292 -22 0 1827 10 489 0 -719 14 232 -4 0 1679 10 765 0 -720 437 90 -36 0 1669 10 115 0 -721 214 274 -26 0 1872 10 213 0 -722 420 383 27 0 1700 10 0 828 -723 120 261 -5 793 823 10 563 0 -724 179 75 13 740 770 10 0 415 -725 484 224 7 300 330 10 0 397 -726 214 245 8 36 66 10 0 586 -727 395 474 26 387 417 10 0 760 -728 368 311 14 0 1783 10 0 407 -729 199 203 20 1457 1487 10 0 796 -730 485 428 22 1490 1520 10 0 557 -731 86 199 -21 0 1744 10 95 0 -732 447 272 12 384 414 10 0 109 -733 40 304 -23 1145 1175 10 755 0 -734 475 267 7 780 810 10 0 250 -735 482 141 14 1011 1041 10 0 538 -736 489 274 -3 534 564 10 301 0 -737 26 342 12 321 351 10 0 264 -738 139 438 -45 0 1697 10 439 0 -739 12 358 -21 1224 1254 10 45 0 -740 125 61 26 0 1689 10 0 627 -741 360 284 -24 0 1800 10 967 0 -742 29 358 -11 611 641 10 452 0 -743 285 247 -21 0 1880 10 487 0 -744 248 386 22 0 1779 10 0 466 -745 415 207 18 900 930 10 0 782 -746 130 247 17 0 1795 10 0 804 -747 172 66 -22 1303 1333 10 798 0 -748 92 259 -18 399 429 10 140 0 -749 379 486 22 672 702 10 0 280 -750 452 484 -20 0 1606 10 342 0 -751 268 288 26 0 1873 10 0 328 -752 349 43 26 229 259 10 0 434 -753 225 269 -21 0 1884 10 775 0 -754 50 383 20 260 290 0 0 1015 -755 110 251 23 498 528 10 0 733 -756 461 182 -16 0 1694 10 357 0 -757 255 487 -17 0 1678 10 897 0 -758 133 202 33 461 491 10 0 985 -759 34 329 -12 1043 1073 10 915 0 -760 368 452 -26 670 700 10 727 0 -761 242 106 -18 1268 1298 10 842 0 -762 171 303 -8 0 1820 10 411 0 -763 329 456 19 0 1695 10 0 237 -764 490 286 -12 0 1673 10 939 0 -765 61 214 4 0 1723 10 0 719 -766 365 74 24 0 1705 10 0 464 -767 321 149 18 0 1792 10 0 921 -768 84 453 19 0 1653 10 0 468 -769 26 442 23 0 1620 10 0 574 -770 180 283 23 744 774 10 0 117 -771 394 322 -33 1025 1055 10 355 0 -772 348 348 -11 935 965 10 44 0 -773 309 161 23 0 1809 10 0 114 -774 385 58 24 0 1681 10 0 546 -775 228 287 21 43 73 10 0 753 -776 312 453 -25 550 580 10 161 0 -777 35 344 21 863 893 10 0 404 -778 393 98 -30 0 1707 10 508 0 -779 208 488 22 0 1674 10 0 567 -780 235 33 -30 1337 1367 10 295 0 -781 140 137 32 570 600 0 0 1019 -782 405 187 -18 1251 1281 10 745 0 -783 330 371 -10 0 1770 10 276 0 -784 265 0 -1 0 1665 10 847 0 -785 295 89 -26 742 772 10 645 0 -786 3 23 -32 0 1580 10 534 0 -787 363 225 35 856 886 10 0 706 -788 148 208 22 0 1805 10 0 51 -789 466 362 15 0 1672 10 0 906 -790 267 290 15 0 1872 10 0 374 -791 98 2 14 0 1625 10 0 895 -792 131 246 17 832 862 10 0 820 -793 418 75 -13 0 1673 10 668 0 -794 366 260 -18 1520 1550 10 911 0 -795 138 28 -18 1097 1127 10 483 0 -796 209 212 -20 0 1860 10 729 0 -797 443 167 17 543 573 10 0 288 -798 156 65 22 1037 1067 10 0 747 -799 279 355 9 166 196 10 0 306 -800 206 172 -19 788 818 10 144 0 -801 32 94 -31 930 960 10 979 0 -802 301 239 31 52 82 10 0 559 -803 471 368 19 0 1665 10 0 874 -804 133 273 -17 0 1796 10 746 0 -805 253 74 20 0 1739 0 0 1041 -806 470 405 -23 0 1646 10 180 0 -807 77 172 23 0 1726 10 0 242 -808 77 465 -3 275 305 10 282 0 -809 466 96 22 1383 1413 0 0 1010 -810 402 277 5 0 1761 0 0 1045 -811 267 374 23 601 631 0 0 1026 -812 450 194 -31 625 655 10 209 0 -813 89 65 -15 0 1670 10 614 0 -814 429 389 18 424 454 10 0 142 -815 202 28 -15 0 1688 10 309 0 -816 46 389 -7 0 1669 10 977 0 -817 246 407 12 0 1758 10 0 11 -818 452 110 -40 0 1670 10 558 0 -819 213 185 21 74 104 10 0 330 -820 134 276 -17 0 1797 10 792 0 -821 262 97 17 947 977 10 0 917 -822 469 489 -27 555 585 10 233 0 -823 364 71 -15 0 1703 10 344 0 -824 68 240 11 794 824 10 0 259 -825 494 468 31 352 382 10 0 216 -826 439 222 -24 0 1724 10 119 0 -827 386 225 13 919 949 0 0 1033 -828 434 359 -27 1392 1422 10 722 0 -829 103 177 28 626 656 10 0 290 -830 89 322 -26 1021 1051 10 858 0 -831 307 249 -26 1377 1407 10 696 0 -832 30 155 -22 0 1676 10 896 0 -833 401 314 -27 976 1006 10 133 0 -834 217 357 23 1420 1450 10 0 501 -835 373 421 21 237 267 10 0 334 -836 5 281 16 1372 1402 0 0 1018 -837 173 474 -13 0 1679 10 992 0 -838 36 301 21 219 249 10 0 964 -839 429 169 8 0 1719 10 0 8 -840 195 450 -22 0 1708 10 238 0 -841 95 382 -19 0 1712 10 73 0 -842 225 121 18 0 1784 10 0 761 -843 10 407 36 434 464 10 0 32 -844 221 269 14 0 1881 10 0 478 -845 264 180 -32 1681 1711 10 173 0 -846 168 59 6 0 1708 10 0 398 -847 281 96 1 0 1758 10 0 784 -848 387 349 9 0 1746 10 0 287 -849 398 329 -15 0 1748 10 419 0 -850 239 486 3 0 1679 10 0 192 -851 237 420 -24 0 1745 10 35 0 -852 346 354 -8 0 1774 10 19 0 -853 172 314 -19 545 575 10 918 0 -854 233 230 20 26 56 10 0 927 -855 79 80 -16 1382 1412 10 715 0 -856 243 402 -25 0 1763 10 581 0 -857 117 110 -14 0 1722 10 107 0 -858 66 314 26 194 224 10 0 830 -859 58 391 -22 0 1677 10 423 0 -860 142 360 -23 1532 1562 10 476 0 -861 492 326 19 1204 1234 10 0 215 -862 381 328 -15 0 1763 10 475 0 -863 62 236 -5 0 1727 10 902 0 -864 344 70 -12 0 1712 10 692 0 -865 151 81 28 1558 1588 10 0 948 -866 240 240 -12 1700 1730 10 687 0 -867 46 163 -11 0 1694 10 157 0 -868 455 168 -37 867 897 10 679 0 -869 428 202 -29 904 934 10 67 0 -870 432 199 -25 0 1726 10 988 0 -871 391 112 -10 1000 1030 10 494 0 -872 451 305 13 208 238 10 0 678 -873 214 311 14 70 100 10 0 57 -874 465 367 -19 0 1671 10 803 0 -875 164 473 26 296 326 10 0 710 -876 364 173 30 180 210 10 0 406 -877 274 261 -7 1707 1737 10 943 0 -878 133 455 -25 808 838 10 50 0 -879 351 481 10 322 352 10 0 913 -880 115 395 11 815 845 0 0 1043 -881 297 304 -15 0 1844 10 40 0 -882 7 194 -28 0 1666 10 416 0 -883 409 255 -19 0 1756 10 89 0 -884 87 213 18 0 1748 0 0 1029 -885 60 246 25 0 1725 10 0 426 -886 3 471 -31 0 1584 10 566 0 -887 418 251 21 0 1747 10 0 639 -888 153 362 -18 0 1767 10 171 0 -889 323 77 36 0 1728 10 0 576 -890 143 158 12 0 1774 10 0 963 -891 351 148 -33 461 491 10 686 0 -892 426 38 -20 609 639 10 600 0 -893 226 316 21 70 100 10 0 99 -894 347 192 -12 1488 1518 10 935 0 -895 102 6 -14 1458 1488 10 791 0 -896 41 120 22 696 726 10 0 832 -897 247 443 17 330 360 10 0 757 -898 218 271 16 0 1877 0 0 1025 -899 376 385 -22 184 214 10 694 0 -900 241 402 -15 0 1763 10 474 0 -901 213 399 18 234 264 10 0 353 -902 32 191 5 586 616 10 0 863 -903 441 374 10 227 257 10 0 420 -904 376 113 8 0 1729 10 0 193 -905 215 434 -15 0 1728 10 183 0 -906 499 316 -15 0 1658 10 789 0 -907 318 497 21 0 1659 10 0 662 -908 256 441 34 0 1724 10 0 548 -909 174 397 -18 1245 1275 10 697 0 -910 468 360 16 0 1671 10 0 716 -911 287 256 18 37 67 10 0 794 -912 448 397 33 866 896 10 0 996 -913 352 487 -10 902 932 10 879 0 -914 253 118 -23 0 1783 10 260 0 -915 159 299 12 0 1812 10 0 759 -916 351 233 21 0 1813 10 0 463 -917 268 113 -17 0 1777 10 821 0 -918 164 332 19 0 1797 10 0 853 -919 88 484 5 0 1631 10 0 211 -920 360 488 -3 0 1653 10 457 0 -921 343 166 -18 876 906 10 767 0 -922 497 266 -20 748 778 10 269 0 -923 138 406 8 1216 1246 10 0 206 -924 420 224 10 0 1744 10 0 255 -925 231 410 14 0 1754 10 0 412 -926 199 438 -23 0 1721 10 470 0 -927 219 215 -20 0 1869 10 854 0 -928 365 274 14 117 147 10 0 4 -929 481 454 -25 0 1607 10 579 0 -930 187 61 -12 545 575 10 513 0 -931 372 97 -17 214 244 10 153 0 -932 187 263 35 64 94 10 0 160 -933 371 427 23 0 1701 0 0 1038 -934 74 215 10 229 259 10 0 629 -935 375 145 12 929 959 10 0 894 -936 365 28 -19 268 298 10 91 0 -937 118 314 26 338 368 10 0 199 -938 60 29 -28 1363 1393 10 31 0 -939 478 300 12 0 1682 10 0 764 -940 33 152 -8 0 1677 10 665 0 -941 347 184 15 1079 1109 10 0 320 -942 94 40 -35 1068 1098 10 488 0 -943 290 328 7 144 174 10 0 877 -944 96 346 -13 0 1734 10 551 0 -945 97 288 22 0 1758 10 0 84 -946 176 470 -25 547 577 10 333 0 -947 206 97 -27 0 1756 10 519 0 -948 210 133 -28 0 1792 10 865 0 -949 489 457 -23 0 1599 10 594 0 -950 418 399 20 438 468 10 0 421 -951 392 491 10 0 1636 10 0 437 -952 437 19 15 1014 1044 10 0 311 -953 495 83 32 0 1619 10 0 711 -954 468 352 -13 0 1675 10 152 0 -955 390 120 24 0 1724 10 0 984 -956 80 357 -4 0 1715 10 982 0 -957 394 310 10 0 1759 0 0 1032 -958 61 441 -46 544 574 10 496 0 -959 52 303 -9 0 1711 10 647 0 -960 391 202 14 0 1767 10 0 589 -961 36 451 15 0 1622 10 0 677 -962 276 84 20 0 1747 10 0 482 -963 130 140 -12 194 224 10 890 0 -964 16 287 -21 0 1679 10 838 0 -965 292 136 28 0 1794 10 0 61 -966 53 204 -10 0 1713 10 69 0 -967 359 287 24 0 1800 10 0 741 -968 309 29 11 1294 1324 10 0 332 -969 473 491 -15 0 1587 10 531 0 -970 273 255 -15 0 1892 10 218 0 -971 263 153 12 0 1818 10 0 277 -972 328 458 -36 768 798 10 164 0 -973 401 164 -27 0 1742 10 454 0 -974 480 119 -17 0 1651 10 268 0 -975 488 96 -26 0 1632 10 326 0 -976 149 98 -14 0 1733 10 441 0 -977 49 437 7 427 457 10 0 816 -978 440 77 14 0 1659 10 0 241 -979 43 135 31 236 266 10 0 801 -980 188 151 -32 1297 1327 10 120 0 -981 175 422 -15 1446 1476 10 395 0 -982 48 437 4 804 834 10 0 956 -983 334 403 -17 0 1741 10 526 0 -984 372 115 -24 0 1734 10 955 0 -985 111 192 -33 1199 1229 10 758 0 -986 357 290 24 114 144 10 0 93 -987 331 134 11 0 1774 10 0 477 -988 495 199 25 337 367 10 0 870 -989 441 60 21 1459 1489 0 0 1001 -990 51 89 19 1208 1238 10 0 111 -991 452 206 31 492 522 10 0 506 -992 195 386 13 146 176 10 0 837 -993 172 24 -26 1452 1482 10 162 0 -994 408 318 -36 0 1743 10 74 0 -995 410 399 25 234 264 10 0 228 -996 413 345 -33 1218 1248 10 912 0 -997 215 129 -14 0 1790 10 68 0 -998 380 350 15 866 896 10 0 565 -999 19 38 -12 0 1602 10 27 0 -1000 166 247 -8 0 1831 10 315 0 -1001 441 60 -21 1459 1489 10 989 0 -1002 186 135 -24 0 1784 10 189 0 -1003 87 3 -13 0 1620 10 385 0 -1004 374 260 -27 0 1791 10 319 0 -1005 69 414 -6 1263 1293 10 481 0 -1006 174 376 -8 0 1768 10 408 0 -1007 30 97 -23 1210 1240 10 529 0 -1008 161 276 -8 133 163 10 148 0 -1009 226 175 -23 1694 1724 10 632 0 -1010 466 96 -22 1383 1413 10 809 0 -1011 323 34 -13 0 1687 10 580 0 -1012 492 188 -33 0 1666 10 100 0 -1013 92 18 -8 0 1635 10 200 0 -1014 148 462 -10 727 757 10 178 0 -1015 50 383 -20 260 290 10 754 0 -1016 251 238 -27 0 1903 10 110 0 -1017 449 190 -2 1140 1170 10 560 0 -1018 5 281 -16 1372 1402 10 836 0 -1019 140 137 -32 570 600 10 781 0 -1020 384 149 -18 0 1748 10 163 0 -1021 65 343 -38 207 237 10 654 0 -1022 39 153 -26 798 828 10 588 0 -1023 293 174 -31 87 117 10 650 0 -1024 306 235 -25 57 87 10 695 0 -1025 218 271 -16 0 1877 10 898 0 -1026 267 374 -23 601 631 10 811 0 -1027 103 464 -22 0 1656 10 693 0 -1028 405 349 -15 522 552 10 672 0 -1029 87 213 -18 0 1748 10 884 0 -1030 144 220 -35 0 1805 10 377 0 -1031 380 194 -3 0 1774 10 497 0 -1032 394 310 -10 0 1759 10 957 0 -1033 386 225 -13 919 949 10 827 0 -1034 173 65 -12 448 478 10 403 0 -1035 158 24 -18 0 1671 10 507 0 -1036 262 369 -15 0 1796 10 96 0 -1037 325 56 -13 796 826 10 542 0 -1038 371 427 -23 0 1701 10 933 0 -1039 253 50 -27 226 256 10 675 0 -1040 345 146 -27 0 1775 10 112 0 -1041 253 74 -20 0 1739 10 805 0 -1042 159 226 -16 94 124 10 394 0 -1043 115 395 -11 815 845 10 880 0 -1044 161 275 -21 0 1823 10 547 0 -1045 402 277 -5 0 1761 10 810 0 -1046 350 199 -21 0 1803 10 108 0 diff --git a/jsprit-instances/instances/lilim/1000/LR1108.txt b/jsprit-instances/instances/lilim/1000/LR1108.txt deleted file mode 100644 index 63ecf58dd..000000000 --- a/jsprit-instances/instances/lilim/1000/LR1108.txt +++ /dev/null @@ -1,1048 +0,0 @@ -250 200 1 -0 250 250 0 0 1925 0 0 0 -1 171 34 -3 0 1686 10 240 0 -2 67 190 -3 0 1723 10 393 0 -3 80 400 10 0 1689 10 0 841 -4 439 237 11 939 969 10 0 530 -5 377 385 6 0 1730 10 0 828 -6 449 428 25 1247 1277 10 0 996 -7 342 481 18 0 1667 10 0 11 -8 466 149 16 1186 1216 0 0 1016 -9 83 290 -26 0 1744 10 363 0 -10 251 63 -19 987 1017 10 256 0 -11 328 491 -18 0 1662 10 7 0 -12 260 472 33 0 1693 10 0 466 -13 290 145 5 0 1803 0 0 1025 -14 266 221 -28 0 1882 10 278 0 -15 164 320 12 0 1805 10 0 853 -16 52 412 22 0 1660 0 0 1039 -17 485 104 21 794 824 10 0 735 -18 144 331 -29 0 1782 10 518 0 -19 387 394 8 0 1717 10 0 903 -20 472 57 -7 0 1621 10 314 0 -21 343 276 -14 0 1819 10 127 0 -22 104 349 20 0 1739 10 0 543 -23 28 467 -21 1343 1373 10 285 0 -24 91 427 -12 883 913 10 737 0 -25 429 476 23 0 1627 10 0 196 -26 210 276 -35 0 1868 10 932 0 -27 58 39 -26 0 1630 10 588 0 -28 273 300 30 0 1860 10 0 527 -29 41 232 -18 0 1706 10 719 0 -30 25 53 23 0 1616 10 0 31 -31 52 18 -23 0 1610 10 30 0 -32 27 444 22 0 1620 0 0 1012 -33 178 72 -18 0 1723 10 473 0 -34 406 460 -7 0 1654 10 943 0 -35 250 328 24 0 1837 10 0 384 -36 492 34 5 0 1591 10 0 154 -37 412 100 1 0 1695 10 0 467 -38 233 87 18 0 1752 10 0 623 -39 60 5 18 1044 1074 10 0 354 -40 406 408 15 0 1693 10 0 998 -41 245 42 24 0 1707 10 0 226 -42 166 345 14 0 1789 10 0 206 -43 440 294 -9 0 1720 10 848 0 -44 370 382 -18 884 914 10 814 0 -45 32 319 -8 0 1687 10 148 0 -46 480 136 -40 0 1659 10 558 0 -47 371 163 -33 828 858 10 686 0 -48 0 188 26 0 1658 10 0 882 -49 438 5 18 0 1607 0 0 1015 -50 132 477 25 327 357 10 0 208 -51 203 211 20 0 1854 10 0 729 -52 2 264 -8 0 1667 10 315 0 -53 231 167 -19 0 1830 10 914 0 -54 423 221 9 0 1740 10 0 991 -55 459 53 -21 0 1628 10 989 0 -56 386 154 31 0 1749 10 0 505 -57 130 494 6 0 1644 10 0 375 -58 31 175 24 0 1684 0 0 1041 -59 69 423 32 0 1665 0 0 1018 -60 352 241 5 792 822 10 0 414 -61 261 201 -26 1514 1544 10 541 0 -62 59 276 11 892 922 10 0 525 -63 146 188 -13 1235 1265 10 290 0 -64 451 62 -6 0 1640 10 291 0 -65 299 285 -27 1254 1284 10 133 0 -66 142 372 -18 0 1753 10 762 0 -67 440 201 29 893 923 0 0 1020 -68 219 210 14 50 80 10 0 400 -69 64 198 10 0 1722 10 0 583 -70 390 249 21 582 612 10 0 787 -71 9 101 -11 666 696 10 402 0 -72 424 288 13 0 1737 10 0 116 -73 77 372 -16 0 1704 10 608 0 -74 298 264 36 50 80 10 0 297 -75 405 454 11 0 1659 10 0 174 -76 407 35 11 0 1649 10 0 434 -77 225 369 -24 0 1794 10 981 0 -78 347 459 -6 0 1685 10 776 0 -79 117 178 -32 0 1764 10 781 0 -80 132 479 -25 257 287 10 333 0 -81 201 66 -27 0 1725 10 691 0 -82 245 176 20 0 1841 10 0 106 -83 470 138 -2 0 1669 10 560 0 -84 115 296 -15 0 1773 10 820 0 -85 348 476 19 0 1669 10 0 175 -86 43 210 -8 210 240 10 966 0 -87 327 139 -18 0 1780 10 658 0 -88 49 353 15 0 1690 10 0 551 -89 356 256 -7 0 1809 10 725 0 -90 335 99 25 0 1742 10 0 348 -91 363 34 19 272 302 10 0 524 -92 33 278 18 0 1697 10 0 452 -93 366 288 -23 0 1793 10 142 0 -94 452 172 9 0 1699 10 0 406 -95 86 189 -17 0 1741 10 673 0 -96 262 369 15 0 1796 10 0 851 -97 218 403 15 0 1759 10 0 925 -98 218 12 3 0 1675 10 0 429 -99 228 399 14 0 1765 0 0 1027 -100 492 188 -25 0 1666 10 988 0 -101 267 174 -28 1618 1648 10 921 0 -102 274 441 12 0 1723 10 0 374 -103 210 113 28 0 1773 10 0 948 -104 370 262 -23 0 1795 10 794 0 -105 303 186 -21 1354 1384 10 712 0 -106 241 180 -20 1695 1725 10 82 0 -107 100 85 14 0 1693 10 0 614 -108 350 199 21 0 1803 10 0 172 -109 500 228 -16 0 1665 10 506 0 -110 251 238 -12 0 1903 10 257 0 -111 114 102 -15 0 1715 10 246 0 -112 345 146 -18 0 1775 10 970 0 -113 21 146 -31 487 517 10 979 0 -114 330 147 -14 848 878 10 129 0 -115 476 61 36 0 1621 10 0 378 -116 386 245 -13 0 1779 10 72 0 -117 201 278 -36 0 1859 10 532 0 -118 421 499 23 0 1613 10 0 490 -119 426 231 -22 1028 1058 10 826 0 -120 105 137 32 0 1732 10 0 298 -121 64 437 -2 0 1652 10 324 0 -122 181 260 -18 0 1846 10 140 0 -123 413 391 -10 0 1700 10 276 0 -124 370 493 22 0 1644 0 0 1021 -125 447 267 -12 980 1010 10 732 0 -126 232 101 24 0 1765 10 0 680 -127 371 332 14 530 560 10 0 21 -128 447 383 -4 0 1678 10 881 0 -129 325 147 14 0 1788 10 0 114 -130 489 437 29 707 737 10 0 730 -131 415 95 -13 0 1689 10 931 0 -132 331 356 -8 0 1782 10 852 0 -133 374 346 27 0 1759 10 0 65 -134 108 37 -13 0 1660 10 857 0 -135 5 224 -20 0 1669 10 382 0 -136 93 413 17 226 256 10 0 224 -137 210 29 -17 0 1691 10 821 0 -138 136 265 12 0 1801 10 0 804 -139 409 155 -18 0 1730 10 767 0 -140 111 178 18 0 1759 10 0 122 -141 291 251 20 41 71 10 0 471 -142 322 290 23 0 1833 10 0 93 -143 57 183 -16 0 1711 10 715 0 -144 181 185 19 0 1821 10 0 800 -145 7 382 -12 0 1639 10 915 0 -146 425 448 9 0 1651 10 0 217 -147 174 41 -17 0 1693 10 993 0 -148 161 276 8 133 163 10 0 45 -149 398 49 21 0 1666 10 0 193 -150 210 379 -12 0 1780 10 549 0 -151 60 231 -10 0 1725 10 616 0 -152 453 360 -14 0 1685 10 874 0 -153 367 97 -14 0 1723 10 464 0 -154 488 3 -5 0 1572 10 36 0 -155 44 115 24 246 276 10 0 990 -156 48 293 -5 0 1709 10 289 0 -157 64 135 11 0 1697 0 0 1008 -158 65 62 15 0 1652 10 0 275 -159 404 207 -33 0 1756 10 463 0 -160 68 303 22 0 1726 10 0 367 -161 263 418 25 278 308 10 0 413 -162 147 30 -10 0 1673 10 617 0 -163 384 149 -30 0 1748 10 876 0 -164 340 416 36 0 1727 10 0 280 -165 271 128 12 0 1792 10 0 889 -166 89 358 -16 0 1722 10 859 0 -167 20 480 -46 0 1590 10 496 0 -168 488 173 25 0 1665 10 0 195 -169 439 156 -26 0 1704 10 562 0 -170 389 156 27 716 746 0 0 1011 -171 111 392 -20 0 1717 10 754 0 -172 267 162 -21 0 1826 10 108 0 -173 248 176 -33 0 1841 10 845 0 -174 413 476 -11 0 1637 10 75 0 -175 352 481 -19 0 1663 10 85 0 -176 264 135 -8 0 1800 10 184 0 -177 29 462 17 1310 1340 10 0 371 -178 148 462 10 727 757 10 0 840 -179 44 140 -7 0 1682 10 386 0 -180 414 378 -25 495 525 10 649 0 -181 392 95 16 0 1705 10 0 592 -182 216 341 -23 0 1818 10 569 0 -183 211 411 -30 0 1750 10 641 0 -184 317 45 8 0 1700 10 0 176 -185 178 150 -30 0 1792 10 330 0 -186 428 302 27 1016 1046 0 0 1002 -187 450 45 -25 0 1629 10 572 0 -188 453 318 30 0 1701 10 0 714 -189 186 135 24 0 1784 10 0 435 -190 11 403 18 343 373 10 0 769 -191 433 447 20 794 824 10 0 912 -192 272 420 -8 1386 1416 10 425 0 -193 429 59 -21 0 1654 10 149 0 -194 200 27 22 0 1687 10 0 865 -195 498 171 -25 0 1655 10 168 0 -196 487 320 -23 858 888 10 25 0 -197 45 166 22 1013 1043 10 0 337 -198 490 276 33 0 1674 10 0 301 -199 126 391 -7 0 1728 10 888 0 -200 92 18 -27 0 1635 10 448 0 -201 293 228 -31 0 1867 10 559 0 -202 343 205 -10 0 1812 10 589 0 -203 182 480 -7 0 1676 10 539 0 -204 385 285 13 0 1776 10 0 887 -205 44 344 -2 0 1689 10 759 0 -206 170 347 -14 0 1790 10 42 0 -207 457 492 -10 0 1597 10 951 0 -208 124 448 -25 0 1681 10 50 0 -209 398 210 31 0 1762 10 0 397 -210 75 118 -14 409 439 10 521 0 -211 105 474 27 0 1649 10 0 379 -212 134 211 35 122 152 10 0 625 -213 211 248 26 39 69 10 0 640 -214 212 186 11 0 1841 10 0 573 -215 492 335 10 0 1659 10 0 906 -216 497 483 -14 353 383 10 929 0 -217 440 436 -9 0 1650 10 146 0 -218 311 203 15 0 1838 10 0 935 -219 491 369 -12 0 1647 10 228 0 -220 67 378 -25 0 1692 10 878 0 -221 383 17 15 0 1647 10 0 624 -222 7 82 25 412 442 10 0 665 -223 342 319 36 0 1800 10 0 862 -224 78 406 -17 960 990 10 136 0 -225 103 123 -16 0 1721 10 361 0 -226 241 38 -24 0 1703 10 41 0 -227 224 3 -30 690 720 10 295 0 -228 436 467 12 0 1630 10 0 219 -229 438 488 18 0 1612 10 0 861 -230 351 60 15 0 1700 10 0 652 -231 13 214 -5 1354 1384 10 902 0 -232 429 67 -13 732 762 10 984 0 -233 498 456 27 0 1593 10 0 722 -234 135 400 -8 0 1726 10 365 0 -235 215 293 13 0 1860 10 0 336 -236 354 416 -19 0 1720 10 920 0 -237 294 421 -24 1575 1605 10 548 0 -238 208 445 -14 0 1716 10 251 0 -239 230 320 8 1192 1222 10 0 630 -240 157 38 3 0 1684 10 0 1 -241 441 100 31 0 1673 10 0 809 -242 61 170 -13 0 1710 10 307 0 -243 79 467 -23 351 381 10 708 0 -244 365 190 -28 1477 1507 10 351 0 -245 282 1 -11 0 1664 10 968 0 -246 124 111 15 0 1728 10 0 111 -247 247 219 -13 0 1884 10 743 0 -248 28 180 34 0 1683 10 0 258 -249 167 488 17 252 282 10 0 439 -250 442 289 25 0 1720 10 0 343 -251 136 430 14 0 1702 10 0 238 -252 38 15 3 0 1599 10 0 999 -253 246 314 -15 1445 1475 10 790 0 -254 176 200 -35 568 598 10 377 0 -255 337 232 -31 0 1827 10 802 0 -256 257 133 19 0 1798 10 0 10 -257 295 247 12 1303 1333 10 0 110 -258 39 162 -34 565 595 10 248 0 -259 79 257 -12 0 1744 10 426 0 -260 236 126 -24 0 1791 10 499 0 -261 259 498 -14 1075 1105 10 946 0 -262 180 162 -22 0 1803 10 815 0 -263 53 466 -11 0 1623 10 808 0 -264 167 291 27 0 1823 10 0 770 -265 89 185 16 600 630 10 0 895 -266 487 446 -31 0 1608 10 825 0 -267 308 199 -18 0 1838 10 911 0 -268 481 84 -22 0 1631 10 975 0 -269 495 227 -26 0 1669 10 422 0 -270 397 57 17 0 1673 10 0 668 -271 372 39 10 0 1672 0 0 1033 -272 278 450 29 0 1714 10 0 760 -273 292 32 14 229 259 10 0 427 -274 90 496 -31 0 1622 10 520 0 -275 68 53 -15 739 769 10 158 0 -276 371 423 10 0 1704 10 0 123 -277 273 149 -5 0 1812 10 286 0 -278 297 283 28 0 1858 10 0 14 -279 120 37 28 0 1666 10 0 388 -280 371 488 -36 0 1649 10 164 0 -281 206 174 14 0 1828 0 0 1038 -282 174 347 3 0 1792 10 0 474 -283 330 281 -30 1330 1360 10 306 0 -284 67 451 -31 0 1644 10 566 0 -285 27 464 21 0 1606 10 0 23 -286 361 178 5 0 1783 10 0 277 -287 463 406 23 857 887 10 0 806 -288 456 157 -19 0 1689 10 477 0 -289 153 244 5 0 1818 10 0 156 -290 153 192 13 0 1802 10 0 63 -291 352 63 6 0 1702 10 0 64 -292 371 71 21 0 1699 10 0 778 -293 163 472 -8 0 1677 10 923 0 -294 448 495 40 0 1600 10 0 511 -295 282 10 30 0 1673 10 0 227 -296 66 163 -23 0 1712 10 606 0 -297 314 205 -36 0 1837 10 74 0 -298 83 169 -32 0 1730 10 120 0 -299 221 291 -21 0 1865 10 461 0 -300 374 116 9 587 617 10 0 793 -301 418 269 -33 0 1746 10 198 0 -302 178 302 19 0 1827 10 0 373 -303 250 57 26 0 1722 10 0 675 -304 475 352 -3 0 1668 10 716 0 -305 1 252 5 0 1666 10 0 964 -306 286 356 30 0 1804 10 0 283 -307 65 82 13 0 1666 10 0 242 -308 154 392 9 0 1744 10 0 875 -309 196 56 -24 0 1714 10 366 0 -310 366 390 -15 0 1734 10 475 0 -311 436 25 -11 1282 1312 10 587 0 -312 67 352 -38 0 1706 10 654 0 -313 173 182 -7 0 1813 10 667 0 -314 390 34 7 1060 1090 10 0 20 -315 18 225 8 0 1682 10 0 52 -316 57 43 15 0 1632 10 0 791 -317 388 44 -9 0 1668 10 360 0 -318 269 112 19 1263 1293 10 0 917 -319 374 260 27 0 1791 10 0 611 -320 291 213 -9 1258 1288 10 486 0 -321 178 420 18 1071 1101 10 0 834 -322 389 255 15 0 1776 0 0 1032 -323 134 194 19 1652 1682 0 0 1013 -324 93 490 2 0 1629 10 0 121 -325 64 294 -28 0 1724 10 430 0 -326 493 111 26 0 1636 0 0 1028 -327 150 484 -21 0 1661 10 893 0 -328 235 316 -25 656 686 10 581 0 -329 239 15 2 0 1680 10 0 842 -330 193 138 30 0 1790 10 0 185 -331 40 278 -25 0 1704 10 498 0 -332 307 52 23 0 1709 10 0 642 -333 161 416 25 0 1727 10 0 80 -334 381 457 28 0 1671 10 0 391 -335 55 318 13 312 342 10 0 858 -336 80 279 -13 0 1743 10 235 0 -337 48 162 -22 0 1695 10 197 0 -338 91 27 -24 1182 1212 10 942 0 -339 288 70 -12 0 1732 10 971 0 -340 177 404 17 0 1745 10 0 408 -341 10 237 -28 0 1675 10 416 0 -342 493 493 -5 856 886 10 358 0 -343 440 292 -25 940 970 10 250 0 -344 349 76 -11 1031 1061 10 368 0 -345 47 208 30 0 1708 10 0 401 -346 283 454 14 0 1709 10 0 983 -347 486 324 -12 0 1668 10 771 0 -348 392 87 -25 0 1699 10 90 0 -349 122 422 -22 0 1701 10 693 0 -350 37 281 17 0 1700 10 0 959 -351 413 127 28 0 1711 10 0 244 -352 222 499 -22 0 1665 10 779 0 -353 211 446 -12 0 1716 10 462 0 -354 30 7 -18 1189 1219 10 39 0 -355 398 341 33 0 1742 10 0 523 -356 26 67 -22 0 1626 10 896 0 -357 461 186 -13 0 1695 10 827 0 -358 313 391 5 0 1761 10 0 342 -359 471 94 30 0 1645 10 0 818 -360 341 72 9 0 1716 10 0 317 -361 130 186 16 136 166 10 0 225 -362 257 57 -25 0 1722 10 396 0 -363 94 344 26 0 1733 10 0 9 -364 6 53 -15 0 1602 10 701 0 -365 146 376 8 234 264 10 0 234 -366 244 13 24 0 1678 10 0 309 -367 29 336 -22 0 1678 10 160 0 -368 306 42 11 0 1700 10 0 344 -369 177 486 20 0 1668 10 0 436 -370 489 338 17 1397 1427 10 0 954 -371 179 318 -17 0 1817 10 177 0 -372 344 203 14 0 1810 10 0 894 -373 149 341 -19 404 434 10 302 0 -374 307 412 -12 0 1744 10 102 0 -375 68 450 -6 0 1645 10 57 0 -376 420 80 24 0 1675 10 0 720 -377 144 220 35 0 1805 10 0 254 -378 497 54 -36 978 1008 10 115 0 -379 80 458 -27 371 401 10 211 0 -380 84 377 -19 0 1706 10 768 0 -381 332 382 2 1010 1040 10 0 407 -382 6 196 20 0 1666 10 0 135 -383 104 28 8 0 1650 10 0 683 -384 224 320 -24 1284 1314 10 35 0 -385 87 3 13 0 1620 10 0 628 -386 149 214 7 0 1808 10 0 179 -387 98 29 -19 0 1647 10 855 0 -388 135 30 -28 0 1667 10 279 0 -389 287 397 -10 564 594 10 710 0 -390 107 374 8 914 944 0 0 1045 -391 355 485 -28 0 1658 10 334 0 -392 51 286 14 1459 1489 10 0 585 -393 49 118 3 0 1675 10 0 2 -394 159 226 16 94 124 10 0 788 -395 185 431 -23 0 1723 10 811 0 -396 262 92 25 0 1757 10 0 362 -397 475 198 -31 0 1685 10 209 0 -398 142 30 32 0 1670 10 0 483 -399 481 207 34 0 1681 10 0 648 -400 174 122 -14 0 1767 10 68 0 -401 35 263 -30 0 1700 10 345 0 -402 24 71 11 346 376 10 0 71 -403 173 65 -13 448 478 10 724 0 -404 91 326 4 0 1739 10 0 553 -405 470 417 11 0 1639 10 0 420 -406 397 153 -9 0 1739 10 94 0 -407 295 283 -2 0 1860 10 381 0 -408 174 376 -17 0 1768 10 340 0 -409 38 190 23 0 1695 10 0 985 -410 16 68 11 0 1619 10 0 556 -411 179 286 -22 0 1836 10 489 0 -412 244 422 -12 0 1743 10 817 0 -413 250 441 -25 0 1724 10 161 0 -414 497 18 -5 0 1577 10 60 0 -415 195 111 -44 998 1028 10 500 0 -416 26 221 28 996 1026 10 0 341 -417 442 5 -32 0 1604 10 953 0 -418 44 496 -5 0 1595 10 919 0 -419 448 404 -23 0 1665 10 772 0 -420 471 427 -11 0 1632 10 405 0 -421 460 424 11 1455 1485 10 0 594 -422 461 195 26 0 1697 10 0 269 -423 146 313 -22 0 1794 10 945 0 -424 19 273 25 0 1683 0 0 1010 -425 245 461 8 649 679 10 0 192 -426 69 266 12 0 1734 10 0 259 -427 191 84 -14 867 897 10 273 0 -428 68 160 21 0 1712 10 0 884 -429 212 47 -3 801 831 10 98 0 -430 80 337 28 0 1725 10 0 325 -431 412 478 -26 0 1636 10 696 0 -432 225 488 -4 0 1676 10 545 0 -433 105 140 -22 0 1733 10 515 0 -434 389 43 -11 0 1666 10 76 0 -435 177 156 -24 0 1796 10 189 0 -436 179 497 -20 0 1658 10 369 0 -437 377 432 -23 831 861 10 933 0 -438 497 296 14 0 1664 10 0 831 -439 152 476 -17 0 1669 10 249 0 -440 277 428 7 490 520 10 0 850 -441 64 5 14 0 1608 0 0 1004 -442 44 311 27 0 1701 10 0 777 -443 165 59 27 0 1706 10 0 930 -444 261 138 1 0 1803 0 0 1023 -445 268 351 7 0 1813 10 0 908 -446 48 150 15 0 1690 10 0 832 -447 215 79 -14 0 1741 10 674 0 -448 109 56 27 0 1676 10 0 200 -449 171 188 30 621 651 10 0 927 -450 284 457 -29 0 1706 10 615 0 -451 274 442 -17 0 1722 10 897 0 -452 33 286 -18 0 1696 10 92 0 -453 112 433 29 0 1686 10 0 481 -454 423 170 -37 0 1725 10 679 0 -455 213 283 14 0 1866 0 0 1036 -456 240 34 28 0 1699 10 0 997 -457 283 438 3 231 261 10 0 972 -458 324 99 -23 0 1747 10 785 0 -459 259 301 25 0 1864 0 0 1034 -460 189 402 10 0 1752 10 0 688 -461 215 282 21 0 1868 10 0 299 -462 166 440 12 0 1708 10 0 353 -463 374 232 33 125 155 10 0 159 -464 339 113 14 0 1752 10 0 153 -465 335 46 18 0 1694 10 0 752 -466 313 493 -33 0 1664 10 12 0 -467 432 66 -1 0 1657 10 37 0 -468 76 462 -14 956 986 10 873 0 -469 397 477 -26 0 1645 10 480 0 -470 196 489 23 0 1670 10 0 567 -471 354 156 -20 0 1775 10 141 0 -472 171 24 11 1383 1413 10 0 599 -473 187 73 18 292 322 10 0 33 -474 243 408 -3 0 1757 10 282 0 -475 421 387 15 0 1696 10 0 310 -476 141 426 23 531 561 10 0 670 -477 415 118 19 0 1704 10 0 288 -478 240 255 -33 0 1904 10 704 0 -479 162 388 -19 1126 1156 10 918 0 -480 413 493 26 0 1623 10 0 469 -481 69 414 -29 1263 1293 10 453 0 -482 273 70 -12 619 649 10 513 0 -483 142 14 -32 0 1656 10 398 0 -484 185 434 -9 0 1720 10 905 0 -485 360 294 9 0 1797 10 0 509 -486 265 240 9 18 48 10 0 320 -487 280 245 21 30 60 10 0 610 -488 87 51 35 0 1658 10 0 976 -489 195 273 22 59 89 10 0 411 -490 422 498 -23 692 722 10 118 0 -491 95 64 4 0 1673 10 0 591 -492 63 155 7 0 1706 10 0 638 -493 24 259 -16 0 1689 10 836 0 -494 376 92 10 0 1713 10 0 601 -495 83 300 -31 500 530 10 586 0 -496 72 477 46 288 318 10 0 167 -497 380 194 -2 0 1774 10 711 0 -498 72 227 25 0 1736 10 0 331 -499 238 123 24 0 1788 10 0 260 -500 188 119 44 0 1771 10 0 415 -501 229 322 11 0 1840 10 0 697 -502 150 68 23 0 1708 10 0 636 -503 67 24 10 0 1625 10 0 813 -504 63 420 19 0 1663 10 0 681 -505 339 144 -31 1099 1129 10 56 0 -506 454 201 16 0 1706 10 0 109 -507 158 24 -18 0 1671 10 577 0 -508 365 119 30 382 412 10 0 973 -509 440 284 -9 852 882 10 485 0 -510 417 212 12 910 940 10 0 639 -511 404 439 -40 0 1672 10 294 0 -512 472 248 11 0 1693 10 0 939 -513 235 108 12 0 1773 10 0 482 -514 174 67 15 0 1717 10 0 798 -515 132 151 22 0 1761 10 0 433 -516 217 207 26 0 1861 0 0 1005 -517 162 306 22 0 1811 10 0 718 -518 48 366 29 0 1683 10 0 18 -519 209 68 -28 0 1729 10 761 0 -520 94 497 31 0 1623 10 0 274 -521 110 122 14 0 1726 10 0 210 -522 274 403 17 0 1761 10 0 926 -523 421 386 -33 824 854 10 355 0 -524 399 175 -19 747 777 10 91 0 -525 56 268 -11 1064 1094 10 62 0 -526 322 406 -19 0 1744 10 757 0 -527 244 277 -30 0 1888 10 28 0 -528 105 181 -28 0 1755 10 829 0 -529 30 97 23 0 1648 10 0 604 -530 359 246 -11 0 1806 10 4 0 -531 498 457 -13 0 1592 10 949 0 -532 190 267 36 0 1853 10 0 117 -533 334 481 32 0 1670 10 0 907 -534 18 24 -11 0 1592 10 786 0 -535 482 104 19 0 1641 10 0 974 -536 460 328 -15 0 1691 10 994 0 -537 320 211 -25 993 1023 10 695 0 -538 494 165 19 0 1657 10 0 602 -539 167 445 7 0 1704 10 0 203 -540 340 291 22 470 500 0 0 1043 -541 272 234 26 0 1888 10 0 61 -542 325 56 13 0 1708 10 0 689 -543 71 304 -20 0 1729 10 22 0 -544 87 311 7 0 1741 10 0 629 -545 207 487 4 0 1675 10 0 432 -546 332 5 14 1033 1063 10 0 580 -547 161 275 21 0 1823 10 0 664 -548 268 458 24 0 1707 10 0 237 -549 175 352 12 0 1789 10 0 150 -550 398 476 25 0 1645 10 0 727 -551 51 360 -15 0 1688 10 88 0 -552 21 70 15 771 801 10 0 938 -553 80 251 -4 0 1745 10 404 0 -554 457 280 -23 0 1706 10 678 0 -555 423 315 -5 0 1731 10 622 0 -556 66 88 -11 0 1670 10 410 0 -557 479 387 -1 0 1649 10 783 0 -558 436 123 40 0 1690 10 0 46 -559 286 244 31 0 1879 10 0 201 -560 449 190 2 1140 1170 10 0 83 -561 456 113 17 1227 1257 10 0 600 -562 480 152 26 0 1665 10 0 169 -563 100 266 5 0 1765 10 0 956 -564 343 34 7 0 1680 10 0 660 -565 374 306 4 994 1024 10 0 789 -566 13 465 31 774 804 10 0 284 -567 230 487 -23 0 1678 10 470 0 -568 442 153 -14 0 1700 10 605 0 -569 240 362 23 0 1803 10 0 182 -570 433 319 -15 0 1720 10 672 0 -571 0 422 -18 821 851 10 582 0 -572 297 131 25 0 1788 10 0 187 -573 71 12 -11 0 1618 10 214 0 -574 44 440 24 0 1635 10 0 977 -575 447 184 -27 0 1708 10 812 0 -576 341 59 27 790 820 0 0 1022 -577 132 32 18 784 814 10 0 507 -578 411 396 -13 0 1698 10 705 0 -579 450 416 -12 0 1656 10 899 0 -580 323 34 -14 0 1687 10 546 0 -581 244 368 25 414 444 10 0 328 -582 90 477 18 0 1638 10 0 571 -583 34 169 -10 484 514 10 69 0 -584 351 128 15 0 1757 10 0 955 -585 71 282 -14 0 1734 10 392 0 -586 157 269 31 0 1821 10 0 495 -587 392 1 11 605 635 10 0 311 -588 39 153 26 0 1683 10 0 27 -589 306 229 10 0 1856 10 0 202 -590 415 253 21 367 397 10 0 764 -591 92 76 -4 0 1680 10 491 0 -592 437 98 -16 0 1675 10 181 0 -593 12 367 -21 0 1650 10 838 0 -594 448 414 -11 0 1658 10 421 0 -595 128 113 22 363 393 10 0 740 -596 43 360 -7 0 1681 10 739 0 -597 102 422 23 226 256 10 0 958 -598 480 131 5 0 1657 0 0 1046 -599 210 81 -11 0 1742 10 472 0 -600 432 2 -17 0 1608 10 561 0 -601 396 83 -10 0 1694 10 494 0 -602 489 159 -19 0 1660 10 538 0 -603 56 75 -14 0 1654 10 801 0 -604 66 31 -23 0 1629 10 529 0 -605 460 117 14 520 550 10 0 568 -606 175 239 23 75 105 10 0 296 -607 217 333 -17 0 1826 10 618 0 -608 62 375 16 0 1690 10 0 73 -609 82 183 17 0 1735 10 0 731 -610 248 214 -21 0 1879 10 487 0 -611 385 239 -27 786 816 10 319 0 -612 371 315 18 0 1778 10 0 833 -613 333 163 32 0 1795 0 0 1006 -614 100 66 -14 0 1678 10 107 0 -615 311 422 29 0 1733 10 0 450 -616 153 235 10 0 1817 10 0 151 -617 168 109 10 0 1752 10 0 162 -618 284 319 17 0 1839 10 0 607 -619 195 464 -15 0 1695 10 700 0 -620 382 9 -12 0 1641 10 692 0 -621 325 210 15 0 1830 10 0 941 -622 366 334 5 410 440 10 0 555 -623 200 78 -18 0 1736 10 38 0 -624 351 5 -15 496 526 10 221 0 -625 197 202 -35 1204 1234 10 212 0 -626 270 337 20 0 1826 10 0 799 -627 125 65 17 788 818 0 0 1009 -628 120 17 -13 0 1649 10 385 0 -629 84 255 -7 0 1749 10 544 0 -630 222 331 -8 0 1830 10 239 0 -631 332 459 -19 369 399 10 763 0 -632 226 175 23 0 1837 10 0 819 -633 404 140 -23 1259 1289 10 773 0 -634 223 178 20 1136 1166 10 0 963 -635 330 308 24 1170 1200 10 0 713 -636 140 108 -23 0 1736 10 502 0 -637 34 239 16 0 1699 10 0 685 -638 94 192 -7 0 1749 10 492 0 -639 458 213 -12 1128 1158 10 510 0 -640 13 314 -26 0 1670 10 213 0 -641 202 391 30 0 1767 10 0 183 -642 339 41 -23 456 486 10 332 0 -643 224 56 -30 0 1720 10 780 0 -644 345 431 12 345 375 0 0 1003 -645 292 104 -11 0 1764 10 987 0 -646 318 99 -20 1213 1243 10 805 0 -647 46 248 -43 0 1711 10 707 0 -648 482 184 -34 0 1674 10 399 0 -649 411 379 25 0 1709 10 0 180 -650 293 174 31 87 117 10 0 766 -651 169 305 21 162 192 10 0 909 -652 394 47 -15 0 1667 10 230 0 -653 323 29 -9 1137 1167 10 936 0 -654 65 343 38 0 1708 10 0 312 -655 158 179 37 0 1799 10 0 890 -656 299 353 34 0 1801 0 0 1031 -657 9 233 31 0 1674 10 0 1000 -658 330 138 18 0 1778 10 0 87 -659 48 412 -13 1032 1062 10 886 0 -660 385 17 -7 0 1646 10 564 0 -661 382 110 -5 0 1723 10 823 0 -662 336 493 20 0 1658 0 0 1017 -663 181 441 25 0 1712 10 0 880 -664 162 301 -21 1613 1643 10 547 0 -665 1 101 -25 1257 1287 10 222 0 -666 80 117 24 0 1700 0 0 1030 -667 210 219 7 0 1865 10 0 313 -668 404 59 -17 0 1670 10 270 0 -669 288 439 16 0 1723 0 0 1044 -670 149 458 -23 0 1684 10 476 0 -671 257 391 -24 1633 1663 10 738 0 -672 405 349 15 522 552 10 0 570 -673 191 215 17 68 98 10 0 95 -674 231 29 14 1226 1256 10 0 447 -675 253 50 -26 0 1715 10 303 0 -676 441 177 -21 1001 1031 10 868 0 -677 5 445 -22 0 1602 10 816 0 -678 463 253 23 0 1702 10 0 554 -679 435 180 37 0 1718 10 0 454 -680 198 85 -24 263 293 10 126 0 -681 59 388 -19 663 693 10 504 0 -682 373 418 -25 1259 1289 10 995 0 -683 142 80 -8 0 1714 10 383 0 -684 441 7 20 0 1606 10 0 952 -685 33 268 -16 696 726 10 637 0 -686 355 174 33 0 1786 10 0 47 -687 228 260 -24 0 1891 10 721 0 -688 114 460 -10 0 1665 10 460 0 -689 337 41 -13 0 1689 10 542 0 -690 154 374 -20 0 1759 10 860 0 -691 235 13 27 0 1678 10 0 81 -692 303 78 12 179 209 10 0 620 -693 103 464 22 0 1656 10 0 349 -694 325 311 22 0 1819 10 0 877 -695 306 235 25 0 1858 10 0 537 -696 382 360 26 178 208 10 0 431 -697 235 288 -11 0 1875 10 501 0 -698 0 356 13 0 1644 10 0 742 -699 178 135 21 0 1780 10 0 758 -700 226 423 15 197 227 10 0 619 -701 15 11 15 0 1580 10 0 364 -702 144 35 -7 0 1676 10 980 0 -703 176 199 28 0 1826 10 0 796 -704 247 306 33 0 1859 10 0 478 -705 396 417 13 0 1694 10 0 578 -706 289 220 19 0 1866 10 0 854 -707 23 235 43 0 1688 10 0 647 -708 137 377 23 169 199 10 0 243 -709 400 71 17 0 1682 10 0 839 -710 261 359 10 0 1806 10 0 389 -711 438 127 2 0 1691 10 0 497 -712 318 280 21 0 1841 10 0 105 -713 333 293 -24 0 1822 10 635 0 -714 436 295 -30 0 1724 10 188 0 -715 62 94 16 0 1671 10 0 143 -716 495 355 3 1243 1273 10 0 304 -717 13 394 15 0 1638 10 0 843 -718 172 292 -22 0 1827 10 517 0 -719 14 232 18 0 1679 10 0 29 -720 437 90 -24 0 1669 10 376 0 -721 214 274 24 0 1872 10 0 687 -722 420 383 -27 0 1700 10 233 0 -723 120 261 -23 0 1785 10 755 0 -724 179 75 13 0 1727 10 0 403 -725 484 224 7 0 1680 10 0 89 -726 214 245 8 0 1879 0 0 1024 -727 395 474 -25 0 1649 10 550 0 -728 368 311 14 0 1783 0 0 1007 -729 199 203 -20 0 1846 10 51 0 -730 485 428 -29 1490 1520 10 130 0 -731 86 199 -17 0 1744 10 609 0 -732 447 272 12 0 1717 10 0 125 -733 40 304 -25 1145 1175 10 885 0 -734 475 267 -31 0 1690 10 736 0 -735 482 141 -21 1011 1041 10 17 0 -736 489 274 31 534 564 10 0 734 -737 26 342 12 0 1673 10 0 24 -738 139 438 24 0 1697 10 0 671 -739 12 358 7 1224 1254 10 0 596 -740 125 61 -22 0 1689 10 595 0 -741 360 284 -14 0 1800 10 928 0 -742 29 358 -13 0 1670 10 698 0 -743 285 247 13 0 1880 10 0 247 -744 248 386 -18 0 1779 10 901 0 -745 415 207 -21 0 1745 10 916 0 -746 130 247 -17 0 1795 10 792 0 -747 172 66 18 1303 1333 10 0 947 -748 92 259 4 399 429 0 0 1026 -749 379 486 22 0 1647 10 0 822 -750 452 484 -23 0 1606 10 969 0 -751 268 288 26 0 1873 10 0 753 -752 349 43 -18 0 1686 10 465 0 -753 225 269 -26 0 1884 10 751 0 -754 50 383 20 260 290 10 0 171 -755 110 251 23 498 528 10 0 723 -756 461 182 13 0 1694 10 0 960 -757 255 487 19 0 1678 10 0 526 -758 133 202 -21 0 1789 10 699 0 -759 34 329 2 1043 1073 10 0 205 -760 368 452 -29 0 1682 10 272 0 -761 242 106 28 0 1771 10 0 519 -762 171 303 18 0 1820 10 0 66 -763 329 456 19 0 1695 10 0 631 -764 490 286 -21 0 1673 10 590 0 -765 61 214 -10 0 1723 10 934 0 -766 365 74 -31 0 1705 10 650 0 -767 321 149 18 0 1792 10 0 139 -768 84 453 19 0 1653 10 0 380 -769 26 442 -18 0 1620 10 190 0 -770 180 283 -27 0 1838 10 264 0 -771 394 322 12 1025 1055 10 0 347 -772 348 348 23 0 1777 10 0 419 -773 309 161 23 0 1809 10 0 633 -774 385 58 24 0 1681 10 0 797 -775 228 287 21 43 73 10 0 992 -776 312 453 6 550 580 10 0 78 -777 35 344 -27 863 893 10 442 0 -778 393 98 -21 0 1707 10 292 0 -779 208 488 22 0 1674 10 0 352 -780 235 33 30 0 1698 10 0 643 -781 140 137 32 0 1758 10 0 79 -782 405 187 -24 1251 1281 10 869 0 -783 330 371 1 0 1770 10 0 557 -784 265 0 10 0 1665 0 0 1037 -785 295 89 23 0 1748 10 0 458 -786 3 23 11 0 1580 10 0 534 -787 363 225 -21 0 1800 10 70 0 -788 148 208 -16 0 1805 10 394 0 -789 466 362 -4 0 1672 10 565 0 -790 267 290 15 0 1872 10 0 253 -791 98 2 -15 0 1625 10 316 0 -792 131 246 17 832 862 10 0 746 -793 418 75 -9 0 1673 10 300 0 -794 366 260 23 0 1799 10 0 104 -795 138 28 23 1097 1127 10 0 846 -796 209 212 -28 0 1860 10 703 0 -797 443 167 -24 543 573 10 774 0 -798 156 65 -15 1037 1067 10 514 0 -799 279 355 -20 0 1807 10 626 0 -800 206 172 -19 788 818 10 144 0 -801 32 94 14 930 960 10 0 603 -802 301 239 31 52 82 10 0 255 -803 471 368 -16 0 1665 10 910 0 -804 133 273 -12 0 1796 10 138 0 -805 253 74 20 0 1739 10 0 646 -806 470 405 -23 0 1646 10 287 0 -807 77 172 -8 0 1726 10 867 0 -808 77 465 11 0 1640 10 0 263 -809 466 96 -31 1383 1413 10 241 0 -810 402 277 -24 0 1761 10 986 0 -811 267 374 23 601 631 10 0 395 -812 450 194 27 625 655 10 0 575 -813 89 65 -10 0 1670 10 503 0 -814 429 389 18 424 454 10 0 44 -815 202 28 22 0 1688 10 0 262 -816 46 389 22 0 1669 10 0 677 -817 246 407 12 0 1758 10 0 412 -818 452 110 -30 0 1670 10 359 0 -819 213 185 -23 0 1841 10 632 0 -820 134 276 15 0 1797 10 0 84 -821 262 97 17 947 977 10 0 137 -822 469 489 -22 0 1591 10 749 0 -823 364 71 5 0 1703 10 0 661 -824 68 240 -29 794 824 10 863 0 -825 494 468 31 0 1588 10 0 266 -826 439 222 22 0 1724 10 0 119 -827 386 225 13 0 1777 10 0 357 -828 434 359 -6 0 1702 10 5 0 -829 103 177 28 0 1751 10 0 528 -830 89 322 -26 0 1739 10 944 0 -831 307 249 -14 1377 1407 10 438 0 -832 30 155 -15 0 1676 10 446 0 -833 401 314 -18 976 1006 10 612 0 -834 217 357 -18 1420 1450 10 321 0 -835 373 421 21 0 1705 10 0 950 -836 5 281 16 0 1669 10 0 493 -837 173 474 14 0 1679 0 0 1001 -838 36 301 21 0 1696 10 0 593 -839 429 169 -17 0 1719 10 709 0 -840 195 450 -10 0 1708 10 178 0 -841 95 382 -10 0 1712 10 3 0 -842 225 121 -2 0 1784 10 329 0 -843 10 407 -15 434 464 10 717 0 -844 221 269 -35 0 1881 10 866 0 -845 264 180 33 0 1844 10 0 173 -846 168 59 -23 0 1708 10 795 0 -847 281 96 1 0 1758 10 0 965 -848 387 349 9 0 1746 10 0 43 -849 398 329 17 0 1748 10 0 957 -850 239 486 -7 0 1679 10 440 0 -851 237 420 -15 0 1745 10 96 0 -852 346 354 8 0 1774 10 0 132 -853 172 314 -12 0 1815 10 15 0 -854 233 230 -19 0 1889 10 706 0 -855 79 80 19 0 1674 10 0 387 -856 243 402 -11 0 1763 10 900 0 -857 117 110 13 0 1722 10 0 134 -858 66 314 -13 0 1721 10 335 0 -859 58 391 16 0 1677 10 0 166 -860 142 360 20 0 1761 10 0 690 -861 492 326 -18 0 1662 10 229 0 -862 381 328 -36 0 1763 10 223 0 -863 62 236 29 0 1727 10 0 824 -864 344 70 24 0 1712 10 0 892 -865 151 81 -22 0 1720 10 194 0 -866 240 240 35 0 1901 10 0 844 -867 46 163 8 0 1694 10 0 807 -868 455 168 21 867 897 10 0 676 -869 428 202 24 904 934 10 0 782 -870 432 199 7 0 1726 10 0 924 -871 391 112 24 1000 1030 10 0 904 -872 451 305 13 0 1707 0 0 1019 -873 214 311 14 70 100 10 0 468 -874 465 367 14 0 1671 10 0 152 -875 164 473 -9 0 1676 10 308 0 -876 364 173 30 0 1778 10 0 163 -877 274 261 -22 1707 1737 10 694 0 -878 133 455 25 0 1679 10 0 220 -879 351 481 10 322 352 10 0 913 -880 115 395 -25 815 845 10 663 0 -881 297 304 4 0 1844 10 0 128 -882 7 194 -26 0 1666 10 48 0 -883 409 255 -24 0 1756 10 967 0 -884 87 213 -21 0 1748 10 428 0 -885 60 246 25 0 1725 10 0 733 -886 3 471 13 0 1584 10 0 659 -887 418 251 -13 0 1747 10 204 0 -888 153 362 7 0 1767 10 0 199 -889 323 77 -12 0 1728 10 165 0 -890 143 158 -37 0 1774 10 655 0 -891 351 148 30 461 491 10 0 978 -892 426 38 -24 0 1640 10 864 0 -893 226 316 21 70 100 10 0 327 -894 347 192 -14 0 1802 10 372 0 -895 102 6 -16 0 1630 10 265 0 -896 41 120 22 0 1669 10 0 356 -897 247 443 17 330 360 10 0 451 -898 218 271 16 0 1877 0 0 1014 -899 376 385 12 184 214 10 0 579 -900 241 402 11 0 1763 10 0 856 -901 213 399 18 0 1762 10 0 744 -902 32 191 5 586 616 10 0 231 -903 441 374 -8 0 1688 10 19 0 -904 376 113 -24 0 1729 10 871 0 -905 215 434 9 0 1728 10 0 484 -906 499 316 -10 0 1658 10 215 0 -907 318 497 -32 0 1659 10 533 0 -908 256 441 -7 0 1724 10 445 0 -909 174 397 -21 1245 1275 10 651 0 -910 468 360 16 0 1671 10 0 803 -911 287 256 18 0 1878 10 0 267 -912 448 397 -20 0 1669 10 191 0 -913 352 487 -10 0 1657 10 879 0 -914 253 118 19 0 1783 10 0 53 -915 159 299 12 0 1812 10 0 145 -916 351 233 21 0 1813 10 0 745 -917 268 113 -19 0 1777 10 318 0 -918 164 332 19 0 1797 10 0 479 -919 88 484 5 0 1631 10 0 418 -920 360 488 19 0 1653 10 0 236 -921 343 166 28 0 1790 10 0 101 -922 497 266 25 748 778 0 0 1035 -923 138 406 8 1216 1246 10 0 293 -924 420 224 -7 0 1744 10 870 0 -925 231 410 -15 0 1754 10 97 0 -926 199 438 -17 0 1721 10 522 0 -927 219 215 -30 0 1869 10 449 0 -928 365 274 14 117 147 10 0 741 -929 481 454 14 0 1607 10 0 216 -930 187 61 -27 0 1716 10 443 0 -931 372 97 13 0 1720 10 0 131 -932 187 263 35 64 94 10 0 26 -933 371 427 23 0 1701 10 0 437 -934 74 215 10 229 259 10 0 765 -935 375 145 -15 929 959 10 218 0 -936 365 28 9 268 298 10 0 653 -937 118 314 26 0 1769 0 0 1029 -938 60 29 -15 1363 1393 10 552 0 -939 478 300 -11 0 1682 10 512 0 -940 33 152 17 0 1677 0 0 1042 -941 347 184 -15 1079 1109 10 621 0 -942 94 40 24 1068 1098 10 0 338 -943 290 328 7 144 174 10 0 34 -944 96 346 26 0 1734 10 0 830 -945 97 288 22 0 1758 10 0 423 -946 176 470 14 547 577 10 0 261 -947 206 97 -18 0 1756 10 747 0 -948 210 133 -28 0 1792 10 103 0 -949 489 457 13 0 1599 10 0 531 -950 418 399 -21 0 1691 10 835 0 -951 392 491 10 0 1636 10 0 207 -952 437 19 -20 0 1618 10 684 0 -953 495 83 32 0 1619 10 0 417 -954 468 352 -17 0 1675 10 370 0 -955 390 120 -15 0 1724 10 584 0 -956 80 357 -5 0 1715 10 563 0 -957 394 310 -17 0 1759 10 849 0 -958 61 441 -23 544 574 10 597 0 -959 52 303 -17 0 1711 10 350 0 -960 391 202 -13 0 1767 10 756 0 -961 36 451 15 0 1622 10 0 982 -962 276 84 20 0 1747 0 0 1040 -963 130 140 -20 0 1753 10 634 0 -964 16 287 -5 0 1679 10 305 0 -965 292 136 -1 0 1794 10 847 0 -966 53 204 8 0 1713 10 0 86 -967 359 287 24 0 1800 10 0 883 -968 309 29 11 1294 1324 10 0 245 -969 473 491 23 0 1587 10 0 750 -970 273 255 18 0 1892 10 0 112 -971 263 153 12 0 1818 10 0 339 -972 328 458 -3 768 798 10 457 0 -973 401 164 -30 0 1742 10 508 0 -974 480 119 -19 0 1651 10 535 0 -975 488 96 22 0 1632 10 0 268 -976 149 98 -35 0 1733 10 488 0 -977 49 437 -24 0 1641 10 574 0 -978 440 77 -30 0 1659 10 891 0 -979 43 135 31 0 1679 10 0 113 -980 188 151 7 0 1799 10 0 702 -981 175 422 24 0 1728 10 0 77 -982 48 437 -15 804 834 10 961 0 -983 334 403 -14 0 1741 10 346 0 -984 372 115 13 0 1734 10 0 232 -985 111 192 -23 0 1765 10 409 0 -986 357 290 24 0 1801 10 0 810 -987 331 134 11 0 1774 10 0 645 -988 495 199 25 0 1665 10 0 100 -989 441 60 21 1459 1489 10 0 55 -990 51 89 -24 1208 1238 10 155 0 -991 452 206 -9 492 522 10 54 0 -992 195 386 -21 146 176 10 775 0 -993 172 24 17 1452 1482 10 0 147 -994 408 318 15 0 1743 10 0 536 -995 410 399 25 234 264 10 0 682 -996 413 345 -25 0 1727 10 6 0 -997 215 129 -28 0 1790 10 456 0 -998 380 350 -15 0 1751 10 40 0 -999 19 38 -3 0 1602 10 252 0 -1000 166 247 -31 0 1831 10 657 0 -1001 173 474 -14 0 1679 10 837 0 -1002 428 302 -27 1016 1046 10 186 0 -1003 345 431 -12 345 375 10 644 0 -1004 64 5 -14 0 1608 10 441 0 -1005 217 207 -26 0 1861 10 516 0 -1006 333 163 -32 0 1795 10 613 0 -1007 368 311 -14 0 1783 10 728 0 -1008 64 135 -11 0 1697 10 157 0 -1009 125 65 -17 788 818 10 627 0 -1010 19 273 -25 0 1683 10 424 0 -1011 389 156 -27 716 746 10 170 0 -1012 27 444 -22 0 1620 10 32 0 -1013 134 194 -19 1652 1682 10 323 0 -1014 218 271 -16 0 1877 10 898 0 -1015 438 5 -18 0 1607 10 49 0 -1016 466 149 -16 1186 1216 10 8 0 -1017 336 493 -20 0 1658 10 662 0 -1018 69 423 -32 0 1665 10 59 0 -1019 451 305 -13 0 1707 10 872 0 -1020 440 201 -29 893 923 10 67 0 -1021 370 493 -22 0 1644 10 124 0 -1022 341 59 -27 790 820 10 576 0 -1023 261 138 -1 0 1803 10 444 0 -1024 214 245 -8 0 1879 10 726 0 -1025 290 145 -5 0 1803 10 13 0 -1026 92 259 -4 399 429 10 748 0 -1027 228 399 -14 0 1765 10 99 0 -1028 493 111 -26 0 1636 10 326 0 -1029 118 314 -26 0 1769 10 937 0 -1030 80 117 -24 0 1700 10 666 0 -1031 299 353 -34 0 1801 10 656 0 -1032 389 255 -15 0 1776 10 322 0 -1033 372 39 -10 0 1672 10 271 0 -1034 259 301 -25 0 1864 10 459 0 -1035 497 266 -25 748 778 10 922 0 -1036 213 283 -14 0 1866 10 455 0 -1037 265 0 -10 0 1665 10 784 0 -1038 206 174 -14 0 1828 10 281 0 -1039 52 412 -22 0 1660 10 16 0 -1040 276 84 -20 0 1747 10 962 0 -1041 31 175 -24 0 1684 10 58 0 -1042 33 152 -17 0 1677 10 940 0 -1043 340 291 -22 470 500 10 540 0 -1044 288 439 -16 0 1723 10 669 0 -1045 107 374 -8 914 944 10 390 0 -1046 480 131 -5 0 1657 10 598 0 diff --git a/jsprit-instances/instances/lilim/1000/LR1109.txt b/jsprit-instances/instances/lilim/1000/LR1109.txt deleted file mode 100644 index feed3129f..000000000 --- a/jsprit-instances/instances/lilim/1000/LR1109.txt +++ /dev/null @@ -1,1048 +0,0 @@ -250 200 1 -0 250 250 0 0 1925 0 0 0 -1 171 34 -18 1092 1224 10 507 0 -2 67 190 -15 1158 1219 10 143 0 -3 80 400 -18 1440 1483 10 190 0 -4 439 237 -7 935 973 10 870 0 -5 377 385 6 838 924 10 0 772 -6 449 428 25 1246 1277 10 0 421 -7 342 481 18 1421 1489 10 0 662 -8 466 149 -26 1196 1206 10 562 0 -9 83 290 -27 576 670 10 442 0 -10 251 63 -15 980 1024 10 309 0 -11 328 491 21 673 714 0 0 1016 -12 260 472 -8 1027 1074 10 425 0 -13 290 145 5 1273 1321 10 0 173 -14 266 221 9 33 107 10 0 892 -15 164 320 12 1084 1136 10 0 371 -16 52 412 -15 1388 1453 10 961 0 -17 485 104 -36 765 854 10 115 0 -18 144 331 -15 915 977 10 206 0 -19 387 394 -25 1069 1157 10 579 0 -20 472 57 -3 1290 1330 10 154 0 -21 343 276 15 96 172 10 0 741 -22 104 349 20 988 1061 10 0 430 -23 28 467 34 1316 1399 10 0 285 -24 91 427 -19 855 940 10 504 0 -25 429 476 23 559 618 10 0 118 -26 210 276 5 47 126 10 0 199 -27 58 39 -25 1152 1203 10 604 0 -28 273 300 30 55 110 10 0 783 -29 41 232 16 209 282 10 0 135 -30 25 53 23 996 1074 10 0 338 -31 52 18 28 859 885 10 0 603 -32 27 444 22 1058 1132 10 0 769 -33 178 72 -33 744 799 10 947 0 -34 406 460 -19 700 768 10 920 0 -35 250 328 24 232 296 10 0 384 -36 492 34 -16 805 847 10 232 0 -37 412 100 1 510 546 10 0 131 -38 233 87 18 261 275 10 0 172 -39 60 5 -16 1023 1094 10 275 0 -40 406 408 -16 1439 1503 10 760 0 -41 245 42 -28 534 590 10 680 0 -42 166 345 14 1120 1169 10 0 586 -43 440 294 16 945 1006 10 0 186 -44 370 382 -12 859 938 10 862 0 -45 32 319 -12 386 446 10 964 0 -46 480 136 22 256 358 0 0 1011 -47 371 163 21 822 863 0 0 1010 -48 0 188 -29 915 980 10 882 0 -49 438 5 -20 521 608 10 684 0 -50 132 477 -12 315 369 10 462 0 -51 203 211 -17 1278 1364 10 792 0 -52 2 264 -27 633 706 10 401 0 -53 231 167 15 85 162 10 0 260 -54 423 221 9 239 308 10 0 575 -55 459 53 -16 1105 1169 10 417 0 -56 386 154 31 1078 1153 10 0 163 -57 130 494 6 730 817 10 0 539 -58 31 175 24 238 286 10 0 296 -59 69 423 -16 786 848 10 608 0 -60 352 241 5 790 824 10 0 787 -61 261 201 -32 1500 1558 10 613 0 -62 59 276 -13 865 950 10 335 0 -63 146 188 6 1225 1274 0 0 1037 -64 451 62 5 275 323 10 0 467 -65 299 285 -30 1256 1282 10 306 0 -66 142 372 18 162 245 10 0 777 -67 440 201 29 890 926 10 0 119 -68 219 210 14 50 144 10 0 645 -69 64 198 -20 1073 1134 10 804 0 -70 390 249 21 572 621 10 0 827 -71 9 101 16 642 721 10 0 529 -72 424 288 -25 1049 1095 10 250 0 -73 77 372 19 211 270 10 0 518 -74 298 264 -20 50 84 10 141 0 -75 405 454 -20 1276 1359 10 191 0 -76 407 35 -19 1278 1329 10 311 0 -77 225 369 38 121 217 10 0 992 -78 347 459 -12 470 519 10 644 0 -79 117 178 28 1096 1168 10 0 516 -80 132 479 11 257 302 10 0 496 -81 201 66 14 1167 1197 10 0 643 -82 245 176 -25 1214 1285 10 435 0 -83 470 138 -14 1380 1428 10 605 0 -84 115 296 -4 1509 1578 10 404 0 -85 348 476 -28 1178 1246 10 334 0 -86 43 210 -1 210 274 10 1000 0 -87 327 139 -18 1237 1307 10 658 0 -88 49 353 -23 1416 1507 10 742 0 -89 356 256 19 106 183 10 0 530 -90 335 99 -6 1207 1260 10 291 0 -91 363 34 19 266 309 10 0 936 -92 33 278 -16 1471 1533 10 836 0 -93 366 288 -21 675 722 10 712 0 -94 452 172 9 594 653 10 0 735 -95 86 189 21 209 275 10 0 609 -96 262 369 15 120 168 10 0 457 -97 218 403 -15 1320 1349 10 790 0 -98 218 12 3 514 604 10 0 144 -99 228 399 -25 553 649 10 581 0 -100 492 188 -19 706 754 10 538 0 -101 267 174 -12 1580 1687 10 971 0 -102 274 441 12 682 738 10 0 900 -103 210 113 -6 677 733 10 846 0 -104 370 262 -13 1069 1159 10 204 0 -105 303 186 10 1333 1406 0 0 1039 -106 241 180 13 1688 1731 10 0 632 -107 100 85 14 338 394 10 0 865 -108 350 199 21 1203 1230 10 0 894 -109 500 228 -25 758 836 10 988 0 -110 251 238 27 12 72 10 0 129 -111 114 102 21 499 546 10 0 747 -112 345 146 -9 1422 1485 10 360 0 -113 21 146 21 478 526 10 0 867 -114 330 147 -23 850 876 10 773 0 -115 476 61 36 433 495 10 0 17 -116 386 245 16 487 501 10 0 322 -117 201 278 13 56 137 10 0 479 -118 421 499 -23 1321 1400 10 25 0 -119 426 231 -29 1020 1066 10 67 0 -120 105 137 32 434 500 10 0 715 -121 64 437 11 914 953 0 0 1008 -122 181 260 -26 69 127 10 213 0 -123 413 391 8 215 280 10 0 355 -124 370 493 22 563 610 10 0 391 -125 447 267 19 961 1029 0 0 1019 -126 232 101 24 333 389 10 0 303 -127 371 332 -5 487 602 10 622 0 -128 447 383 17 237 319 10 0 814 -129 325 147 -27 1177 1226 10 110 0 -130 489 437 29 690 753 10 0 682 -131 415 95 -1 1184 1199 10 37 0 -132 331 356 13 696 757 10 0 834 -133 374 346 -36 403 469 10 223 0 -134 108 37 23 521 608 10 0 162 -135 5 224 -16 1038 1102 10 29 0 -136 93 413 -23 226 283 10 597 0 -137 210 29 -18 1032 1100 10 483 0 -138 136 265 12 114 177 10 0 748 -139 409 155 -9 185 218 10 486 0 -140 111 178 -16 156 205 10 361 0 -141 291 251 20 41 138 10 0 74 -142 322 290 -14 1447 1541 10 283 0 -143 57 183 15 1088 1143 10 0 2 -144 181 185 -3 1584 1674 10 98 0 -145 7 382 -21 741 829 10 838 0 -146 425 448 -10 792 827 10 280 0 -147 174 41 -26 1292 1345 10 702 0 -148 161 276 8 123 173 10 0 820 -149 398 49 21 778 835 0 0 1028 -150 210 379 -22 693 755 10 744 0 -151 60 231 32 1001 1080 10 0 966 -152 453 360 13 230 327 10 0 304 -153 367 97 -10 977 1029 10 458 0 -154 488 3 3 385 447 10 0 20 -155 44 115 24 246 338 10 0 222 -156 48 293 -26 264 318 10 858 0 -157 64 135 11 850 917 10 0 492 -158 65 62 15 961 1021 10 0 316 -159 404 207 -31 886 966 10 209 0 -160 68 303 22 200 272 10 0 350 -161 263 418 25 261 326 10 0 484 -162 147 30 -23 1095 1153 10 134 0 -163 384 149 -31 1187 1238 10 56 0 -164 340 416 -5 315 357 10 358 0 -165 271 128 12 331 391 10 0 842 -166 89 358 -19 1230 1295 10 841 0 -167 20 480 -11 551 620 10 808 0 -168 488 173 -34 1202 1248 10 399 0 -169 439 156 2 512 570 10 0 711 -170 389 156 27 700 762 10 0 955 -171 111 392 -8 1146 1222 10 390 0 -172 267 162 -18 1441 1488 10 38 0 -173 248 176 -5 1372 1461 10 13 0 -174 413 476 -26 1167 1222 10 727 0 -175 352 481 -27 1280 1319 10 913 0 -176 264 135 -19 866 922 10 256 0 -177 29 462 17 1293 1357 10 0 919 -178 148 462 10 718 766 10 0 923 -179 44 140 -15 843 923 10 446 0 -180 414 378 -17 490 530 10 849 0 -181 392 95 -19 747 816 10 477 0 -182 216 341 19 639 699 10 0 328 -183 211 411 -17 1135 1189 10 897 0 -184 317 45 8 624 722 10 0 576 -185 178 150 33 621 673 10 0 800 -186 428 302 -16 993 1069 10 43 0 -187 450 45 24 503 535 10 0 709 -188 453 318 30 347 431 10 0 833 -189 186 135 24 709 756 10 0 634 -190 11 403 18 334 382 10 0 3 -191 433 447 20 785 834 10 0 75 -192 272 420 -35 1377 1425 10 631 0 -193 429 59 -11 441 507 10 793 0 -194 200 27 22 477 602 0 0 1002 -195 498 171 12 1265 1278 10 0 357 -196 487 320 21 854 892 10 0 861 -197 45 166 22 999 1057 10 0 832 -198 490 276 33 241 269 10 0 906 -199 126 391 -5 257 319 10 26 0 -200 92 18 -15 1122 1156 10 999 0 -201 293 228 19 48 85 10 0 686 -202 343 205 -21 748 817 10 487 0 -203 182 480 31 328 431 10 0 779 -204 385 285 13 863 903 10 0 104 -205 44 344 12 1073 1116 10 0 551 -206 170 347 15 414 487 10 0 18 -207 457 492 7 512 535 10 0 730 -208 124 448 6 377 391 10 0 321 -209 398 210 31 153 204 10 0 159 -210 75 118 21 399 449 10 0 636 -211 105 474 -18 449 523 10 582 0 -212 134 211 -17 122 180 10 673 0 -213 211 248 26 39 108 10 0 122 -214 212 186 -27 1718 1756 10 448 0 -215 492 335 -15 812 875 10 347 0 -216 497 483 -14 340 397 10 929 0 -217 440 436 18 876 937 10 0 310 -218 311 203 15 691 785 10 0 537 -219 491 369 -16 718 771 10 910 0 -220 67 378 -20 461 509 10 312 0 -221 383 17 -26 925 986 10 752 0 -222 7 82 -24 407 446 10 155 0 -223 342 319 36 115 198 10 0 133 -224 78 406 -29 959 992 10 453 0 -225 103 123 8 453 556 10 0 556 -226 241 38 16 518 576 10 0 227 -227 224 3 -16 670 740 10 226 0 -228 436 467 -25 711 792 10 550 0 -229 438 488 18 326 358 10 0 294 -230 351 60 15 215 275 10 0 314 -231 13 214 -8 1359 1379 10 315 0 -232 429 67 16 712 782 10 0 36 -233 498 456 -15 1384 1458 10 531 0 -234 135 400 20 257 371 10 0 664 -235 215 293 13 55 114 10 0 607 -236 354 416 10 655 733 10 0 578 -237 294 421 -29 1545 1635 10 272 0 -238 208 445 22 1290 1404 10 0 840 -239 230 320 -10 1192 1223 10 630 0 -240 157 38 -2 1046 1080 10 573 0 -241 441 100 31 861 915 10 0 348 -242 61 170 -23 983 1058 10 731 0 -243 79 467 22 351 382 10 0 274 -244 365 190 -3 1467 1517 10 497 0 -245 282 1 -12 1034 1080 10 692 0 -246 124 111 15 775 834 10 0 443 -247 247 219 17 31 65 0 0 1046 -248 28 180 34 360 441 10 0 902 -249 167 488 17 252 306 10 0 837 -250 442 289 25 195 280 10 0 72 -251 136 430 -24 679 771 10 738 0 -252 38 15 3 1076 1136 10 0 354 -253 246 314 36 1441 1480 10 0 478 -254 176 200 17 544 621 10 0 449 -255 337 232 2 1549 1622 0 0 1023 -256 257 133 19 847 908 10 0 176 -257 295 247 12 1293 1343 10 0 743 -258 39 162 18 544 616 0 0 1015 -259 79 257 -29 943 994 10 863 0 -260 236 126 -15 124 187 10 53 0 -261 259 498 -34 1060 1120 10 908 0 -262 180 162 -37 164 213 10 655 0 -263 53 466 9 322 379 10 0 566 -264 167 291 -6 1605 1694 10 373 0 -265 89 185 16 582 648 10 0 298 -266 487 446 -4 1314 1396 10 822 0 -267 308 199 -13 1498 1549 10 778 0 -268 481 84 17 492 549 10 0 326 -269 495 227 20 321 397 10 0 939 -270 397 57 -14 1469 1512 10 378 0 -271 372 39 10 709 768 10 0 661 -272 278 450 29 1358 1421 10 0 237 -273 292 32 14 230 259 10 0 542 -274 90 496 -22 1361 1459 10 243 0 -275 68 53 16 750 757 10 0 39 -276 371 423 10 211 265 10 0 594 -277 273 149 -1 1500 1536 10 444 0 -278 297 283 -26 1311 1418 10 407 0 -279 120 37 -14 755 825 10 791 0 -280 371 488 10 570 625 10 0 146 -281 206 174 -30 765 864 10 330 0 -282 174 347 -22 986 1073 10 517 0 -283 330 281 14 1315 1375 10 0 142 -284 67 451 -18 1214 1247 10 468 0 -285 27 464 -34 1272 1340 10 23 0 -286 361 178 -12 974 1000 10 935 0 -287 463 406 23 839 905 10 0 420 -288 456 157 -40 1434 1507 10 558 0 -289 153 244 5 103 143 0 0 1022 -290 153 192 13 860 902 10 0 898 -291 352 63 6 1174 1212 10 0 90 -292 371 71 21 287 317 10 0 564 -293 163 472 9 649 688 10 0 670 -294 448 495 -18 396 402 10 229 0 -295 282 10 -11 1250 1304 10 368 0 -296 66 163 -24 383 438 10 58 0 -297 314 205 -6 1508 1576 10 642 0 -298 83 169 -16 767 816 10 265 0 -299 221 291 9 50 111 0 0 1044 -300 374 116 9 563 642 10 0 864 -301 418 269 -11 1208 1231 10 714 0 -302 178 302 -8 858 945 10 411 0 -303 250 57 -24 718 809 10 126 0 -304 475 352 -13 294 355 10 152 0 -305 1 252 5 250 331 10 0 409 -306 286 356 30 111 148 10 0 65 -307 65 82 13 742 768 10 0 938 -308 154 392 9 171 230 10 0 333 -309 196 56 15 581 668 10 0 10 -310 366 390 -18 1291 1375 10 217 0 -311 436 25 19 1257 1338 10 0 76 -312 67 352 20 373 403 10 0 220 -313 173 182 25 102 206 10 0 997 -314 390 34 -15 1040 1110 10 230 0 -315 18 225 8 683 730 10 0 231 -316 57 43 -15 1007 1070 10 158 0 -317 388 44 -40 1094 1198 10 660 0 -318 269 112 -18 1239 1317 10 362 0 -319 374 260 -12 1727 1791 10 510 0 -320 291 213 -21 1252 1294 10 917 0 -321 178 420 -6 1042 1130 10 208 0 -322 389 255 -16 780 821 10 116 0 -323 134 194 -19 1658 1675 10 528 0 -324 93 490 2 360 429 10 0 520 -325 64 294 -25 1096 1137 10 959 0 -326 493 111 -17 521 591 10 268 0 -327 150 484 -26 592 689 10 875 0 -328 235 316 -19 642 699 10 182 0 -329 239 15 2 587 650 10 0 674 -330 193 138 30 640 712 10 0 281 -331 40 278 -28 1084 1154 10 416 0 -332 307 52 -24 908 962 10 339 0 -333 161 416 -9 993 1059 10 308 0 -334 381 457 28 445 526 10 0 85 -335 55 318 13 283 370 10 0 62 -336 80 279 -16 1137 1209 10 733 0 -337 48 162 15 220 300 0 0 1017 -338 91 27 -23 1167 1226 10 30 0 -339 288 70 24 183 254 10 0 332 -340 177 404 -10 1240 1315 10 380 0 -341 10 237 -19 596 667 10 493 0 -342 493 493 -13 841 902 10 949 0 -343 440 292 -12 926 985 10 555 0 -344 349 76 15 1018 1073 10 0 584 -345 47 208 30 220 263 10 0 765 -346 283 454 -32 1244 1317 10 533 0 -347 486 324 15 748 821 10 0 215 -348 392 87 -31 1166 1230 10 241 0 -349 122 422 -4 1445 1498 10 982 0 -350 37 281 -22 458 559 10 160 0 -351 413 127 28 824 867 10 0 871 -352 222 499 7 838 882 10 0 850 -353 211 446 15 1114 1162 0 0 1034 -354 30 7 -3 1181 1226 10 252 0 -355 398 341 -8 925 984 10 123 0 -356 26 67 -10 1311 1352 10 503 0 -357 461 186 -12 1497 1557 10 195 0 -358 313 391 5 154 212 10 0 164 -359 471 94 -12 999 1029 10 720 0 -360 341 72 9 815 825 10 0 112 -361 130 186 16 136 199 10 0 140 -362 257 57 18 1222 1259 10 0 318 -363 94 344 -26 675 720 10 937 0 -364 6 53 8 566 638 0 0 1001 -365 146 376 8 220 279 10 0 690 -366 244 13 24 991 1066 10 0 780 -367 29 336 22 305 389 10 0 737 -368 306 42 11 487 497 10 0 295 -369 177 486 -4 1590 1634 10 545 0 -370 489 338 -15 1387 1437 10 789 0 -371 179 318 -12 1117 1155 10 15 0 -372 344 203 14 156 208 10 0 891 -373 149 341 6 377 461 10 0 264 -374 307 412 8 406 432 10 0 389 -375 68 450 18 620 676 10 0 574 -376 420 80 -13 1088 1135 10 668 0 -377 144 220 35 110 158 10 0 934 -378 497 54 14 962 1025 10 0 270 -379 80 458 30 349 422 0 0 1006 -380 84 377 10 911 972 10 0 340 -381 332 382 -7 1001 1049 10 943 0 -382 6 196 -11 1168 1269 10 583 0 -383 104 28 -13 1463 1513 10 385 0 -384 224 320 -24 1265 1333 10 35 0 -385 87 3 13 1424 1473 10 0 383 -386 149 214 7 452 542 10 0 625 -387 98 29 14 1021 1102 10 0 441 -388 135 30 12 469 510 10 0 591 -389 287 397 -8 557 601 10 374 0 -390 107 374 8 896 962 10 0 171 -391 355 485 -22 1463 1525 10 124 0 -392 51 286 -43 1455 1493 10 707 0 -393 49 118 -14 1070 1102 10 801 0 -394 159 226 -32 94 168 10 927 0 -395 185 431 -9 356 448 10 905 0 -396 262 92 25 624 666 10 0 482 -397 475 198 20 813 887 10 0 648 -398 142 30 -18 1234 1287 10 577 0 -399 481 207 34 843 899 10 0 168 -400 174 122 14 578 639 10 0 500 -401 35 263 27 245 326 10 0 52 -402 24 71 11 341 381 10 0 534 -403 173 65 -5 431 495 10 447 0 -404 91 326 4 942 1014 10 0 84 -405 470 417 11 725 778 10 0 933 -406 397 153 29 879 916 10 0 941 -407 295 283 26 893 924 10 0 278 -408 174 376 -14 1417 1452 10 946 0 -409 38 190 -5 261 339 10 305 0 -410 16 68 11 296 380 10 0 942 -411 179 286 8 330 382 10 0 302 -412 244 422 14 534 571 10 0 641 -413 250 441 5 741 801 10 0 925 -414 497 18 -13 1124 1166 10 931 0 -415 195 111 15 982 1045 0 0 1033 -416 26 221 28 980 1042 10 0 331 -417 442 5 16 311 364 10 0 55 -418 44 496 32 376 458 10 0 886 -419 448 404 -9 566 661 10 848 0 -420 471 427 -23 789 874 10 287 0 -421 460 424 -25 1433 1506 10 6 0 -422 461 195 -23 1380 1440 10 678 0 -423 146 313 22 1164 1256 10 0 762 -424 19 273 -9 1012 1052 10 647 0 -425 245 461 8 614 714 10 0 12 -426 69 266 12 742 805 10 0 428 -427 191 84 -19 863 902 10 930 0 -428 68 160 -12 1132 1169 10 426 0 -429 212 47 20 781 851 10 0 513 -430 80 337 -20 1126 1142 10 22 0 -431 412 478 7 943 1006 10 0 750 -432 225 488 28 638 664 10 0 567 -433 105 140 27 182 225 10 0 521 -434 389 43 -5 392 430 10 652 0 -435 177 156 25 140 225 10 0 82 -436 179 497 -23 1405 1447 10 470 0 -437 377 432 20 815 877 10 0 705 -438 497 296 14 593 662 10 0 810 -439 152 476 45 513 563 10 0 878 -440 277 428 7 473 537 10 0 474 -441 64 5 -14 1116 1171 10 387 0 -442 44 311 27 404 440 10 0 9 -443 165 59 -15 910 1006 10 246 0 -444 261 138 1 599 667 10 0 277 -445 268 351 -10 1646 1735 10 710 0 -446 48 150 15 631 710 10 0 179 -447 215 79 5 218 259 10 0 403 -448 109 56 27 239 286 10 0 214 -449 171 188 -17 585 687 10 254 0 -450 284 457 -20 1473 1555 10 466 0 -451 274 442 -26 1064 1098 10 983 0 -452 33 286 -16 1535 1587 10 637 0 -453 112 433 29 229 285 10 0 224 -454 423 170 27 490 566 10 0 973 -455 213 283 14 1477 1495 10 0 532 -456 240 34 28 1554 1595 0 0 1018 -457 283 438 -15 218 275 10 96 0 -458 324 99 10 318 388 10 0 153 -459 259 301 -21 98 129 10 775 0 -460 189 402 10 508 595 10 0 926 -461 215 282 21 1417 1494 0 0 1043 -462 166 440 12 207 267 10 0 50 -463 374 232 33 125 167 10 0 782 -464 339 113 -8 752 800 10 904 0 -465 335 46 -12 1322 1391 10 624 0 -466 313 493 20 1190 1227 10 0 450 -467 432 66 -5 1059 1114 10 64 0 -468 76 462 18 930 1011 10 0 284 -469 397 477 -10 1195 1266 10 951 0 -470 196 489 23 1037 1053 10 0 436 -471 354 156 -30 820 875 10 876 0 -472 171 24 11 1384 1412 10 0 519 -473 187 73 18 268 346 10 0 683 -474 243 408 -7 1406 1492 10 440 0 -475 421 387 15 806 827 10 0 649 -476 141 426 23 529 563 10 0 860 -477 415 118 19 211 271 10 0 181 -478 240 255 -36 1607 1644 10 253 0 -479 162 388 -13 1119 1164 10 117 0 -480 413 493 -3 1210 1256 10 511 0 -481 69 414 6 1242 1314 0 0 1013 -482 273 70 -25 606 662 10 396 0 -483 142 14 18 827 873 10 0 137 -484 185 434 -25 563 615 10 161 0 -485 360 294 -4 1398 1468 10 565 0 -486 265 240 9 18 59 10 0 139 -487 280 245 21 30 69 10 0 202 -488 87 51 -12 506 552 10 890 0 -489 195 273 22 59 105 10 0 721 -490 422 498 -4 680 735 10 881 0 -491 95 64 4 761 800 10 0 855 -492 63 155 -11 945 1014 10 157 0 -493 24 259 19 356 415 10 0 341 -494 376 92 -24 981 1030 10 766 0 -495 83 300 26 487 542 10 0 945 -496 72 477 -11 288 368 10 80 0 -497 380 194 3 692 765 10 0 244 -498 72 227 -23 565 593 10 606 0 -499 238 123 24 779 813 10 0 559 -500 188 119 -14 950 1029 10 400 0 -501 229 322 -34 1628 1722 10 656 0 -502 150 68 23 402 474 10 0 699 -503 67 24 10 999 1067 10 0 356 -504 63 420 19 501 569 10 0 24 -505 339 144 13 1079 1148 10 0 767 -506 454 201 -11 1306 1334 10 512 0 -507 158 24 18 593 660 10 0 1 -508 365 119 30 376 417 10 0 984 -509 440 284 -25 812 921 10 922 0 -510 417 212 12 908 943 10 0 319 -511 404 439 3 247 261 10 0 480 -512 472 248 11 818 881 10 0 506 -513 235 108 -20 1066 1124 10 429 0 -514 174 67 -22 1248 1301 10 515 0 -515 132 151 22 154 182 10 0 514 -516 217 207 -28 1361 1433 10 79 0 -517 162 306 22 104 165 10 0 282 -518 48 366 -19 731 786 10 73 0 -519 209 68 -11 1572 1595 10 472 0 -520 94 497 -2 765 829 10 324 0 -521 110 122 -27 1490 1558 10 433 0 -522 274 403 17 885 919 10 0 851 -523 421 386 -26 807 872 10 696 0 -524 399 175 -37 753 770 10 679 0 -525 56 268 28 1058 1100 0 0 1042 -526 322 406 -18 799 890 10 911 0 -527 244 277 18 1291 1341 0 0 1045 -528 105 181 19 1527 1565 10 0 323 -529 30 97 -16 1214 1237 10 71 0 -530 359 246 -19 1404 1472 10 89 0 -531 498 457 15 891 965 10 0 233 -532 190 267 -14 1743 1794 10 455 0 -533 334 481 32 311 379 10 0 346 -534 18 24 -11 621 666 10 402 0 -535 482 104 19 790 854 10 0 975 -536 460 328 -24 224 302 10 986 0 -537 320 211 -15 977 1038 10 218 0 -538 494 165 19 587 651 10 0 100 -539 167 445 -6 1393 1461 10 57 0 -540 340 291 22 475 496 10 0 713 -541 272 234 26 1570 1640 0 0 1035 -542 325 56 -14 783 840 10 273 0 -543 71 304 19 680 729 10 0 759 -544 87 311 7 174 209 10 0 685 -545 207 487 4 655 753 10 0 369 -546 332 5 14 1021 1075 10 0 968 -547 161 275 -9 1343 1380 10 853 0 -548 268 458 -19 501 575 10 757 0 -549 175 352 12 1643 1717 0 0 1020 -550 398 476 25 399 468 10 0 228 -551 51 360 -12 1135 1184 10 205 0 -552 21 70 15 760 813 10 0 990 -553 80 251 14 283 355 10 0 729 -554 457 280 17 1002 1027 10 0 639 -555 423 315 12 184 216 10 0 343 -556 66 88 -8 818 872 10 225 0 -557 479 387 13 378 447 10 0 716 -558 436 123 40 225 295 10 0 288 -559 286 244 -24 1287 1311 10 499 0 -560 449 190 -18 1130 1179 10 745 0 -561 456 113 17 1213 1272 10 0 602 -562 480 152 26 1006 1067 10 0 8 -563 100 266 5 445 525 10 0 585 -564 343 34 -21 706 773 10 292 0 -565 374 306 4 987 1031 10 0 485 -566 13 465 -9 755 823 10 263 0 -567 230 487 -28 1114 1176 10 432 0 -568 442 153 29 1176 1231 10 0 633 -569 240 362 -8 1397 1461 10 852 0 -570 433 319 -20 1354 1428 10 996 0 -571 0 422 -30 808 864 10 677 0 -572 297 131 -17 1160 1201 10 821 0 -573 71 12 2 297 351 10 0 240 -574 44 440 -18 766 841 10 375 0 -575 447 184 -9 413 465 10 54 0 -576 341 59 -8 775 835 10 184 0 -577 132 32 18 771 827 10 0 398 -578 411 396 -10 917 953 10 236 0 -579 450 416 25 562 621 10 0 19 -580 323 34 -24 1296 1363 10 774 0 -581 244 368 25 395 463 10 0 99 -582 90 477 18 277 347 10 0 211 -583 34 169 11 460 538 10 0 382 -584 351 128 -15 1231 1305 10 344 0 -585 71 282 -5 614 700 10 563 0 -586 157 269 -14 1573 1610 10 42 0 -587 392 1 11 579 661 10 0 823 -588 39 153 -22 775 850 10 896 0 -589 306 229 -31 1314 1357 10 802 0 -590 415 253 21 342 422 10 0 611 -591 92 76 -12 1138 1170 10 388 0 -592 437 98 -14 1106 1152 10 978 0 -593 12 367 27 302 380 10 0 596 -594 448 414 -10 1198 1278 10 276 0 -595 128 113 -17 343 413 10 963 0 -596 43 360 -27 826 874 10 593 0 -597 102 422 23 226 307 10 0 136 -598 480 131 -32 647 758 10 953 0 -599 210 81 2 381 447 10 0 784 -600 432 2 20 452 512 10 0 601 -601 396 83 -20 1585 1617 10 600 0 -602 489 159 -17 1420 1466 10 561 0 -603 56 75 -28 1436 1469 10 31 0 -604 66 31 25 1018 1108 10 0 27 -605 460 117 14 501 569 10 0 83 -606 175 239 23 75 134 10 0 498 -607 217 333 -13 398 454 10 235 0 -608 62 375 16 335 392 10 0 59 -609 82 183 -21 1080 1153 10 95 0 -610 248 214 -28 1465 1523 10 703 0 -611 385 239 -21 783 818 10 590 0 -612 371 315 -10 1141 1220 10 957 0 -613 333 163 32 1225 1286 10 0 61 -614 100 66 -16 1389 1441 10 813 0 -615 311 422 29 964 1041 10 0 671 -616 153 235 -35 98 164 10 932 0 -617 168 109 10 194 244 10 0 993 -618 284 319 17 785 878 0 0 1036 -619 195 464 -18 1514 1598 10 901 0 -620 382 9 30 274 329 0 0 1007 -621 325 210 -25 901 996 10 695 0 -622 366 334 5 389 461 10 0 127 -623 200 78 -13 978 1038 10 724 0 -624 351 5 12 488 534 10 0 465 -625 197 202 -7 1172 1265 10 386 0 -626 270 337 -16 1777 1818 10 669 0 -627 125 65 17 757 849 10 0 798 -628 120 17 30 284 305 10 0 795 -629 84 255 -17 255 339 10 746 0 -630 222 331 10 518 592 10 0 239 -631 332 459 35 349 419 10 0 192 -632 226 175 -13 1669 1748 10 106 0 -633 404 140 -29 1224 1323 10 568 0 -634 223 178 -24 1145 1157 10 189 0 -635 330 308 24 1150 1220 10 0 694 -636 140 108 -21 1057 1116 10 210 0 -637 34 239 16 216 257 10 0 452 -638 94 192 -28 1052 1138 10 829 0 -639 458 213 -17 1114 1173 10 554 0 -640 13 314 14 245 313 10 0 698 -641 202 391 -14 612 665 10 412 0 -642 339 41 6 445 496 10 0 297 -643 224 56 -14 1167 1235 10 81 0 -644 345 431 12 310 410 10 0 78 -645 292 104 -14 280 357 10 68 0 -646 318 99 -28 1184 1271 10 965 0 -647 46 248 9 812 846 10 0 424 -648 482 184 -20 1082 1161 10 397 0 -649 411 379 -15 1185 1232 10 475 0 -650 293 174 31 87 134 10 0 987 -651 169 305 21 149 204 10 0 888 -652 394 47 5 298 357 10 0 434 -653 323 29 -8 1139 1165 10 689 0 -654 65 343 -26 207 262 10 944 0 -655 158 179 37 116 201 10 0 262 -656 299 353 34 114 179 10 0 501 -657 9 233 -18 298 344 10 719 0 -658 330 138 18 1093 1156 10 0 87 -659 48 412 -20 1024 1071 10 681 0 -660 385 17 40 810 838 10 0 317 -661 382 110 -10 1089 1165 10 271 0 -662 336 493 -18 1470 1545 10 7 0 -663 181 441 -15 530 584 10 700 0 -664 162 301 -20 1587 1669 10 234 0 -665 1 101 8 1246 1299 0 0 1004 -666 80 117 24 824 855 10 0 857 -667 210 219 7 50 92 10 0 758 -668 404 59 13 905 951 10 0 376 -669 288 439 16 270 307 10 0 626 -670 149 458 -9 1153 1204 10 293 0 -671 257 391 -29 1637 1659 10 615 0 -672 405 349 -20 492 582 10 950 0 -673 191 215 17 68 160 10 0 212 -674 231 29 -2 1215 1268 10 329 0 -675 253 50 27 216 266 10 0 761 -676 441 177 23 996 1037 10 0 883 -677 5 445 30 313 359 10 0 571 -678 463 253 23 1024 1101 10 0 422 -679 435 180 37 219 260 10 0 524 -680 198 85 28 266 290 10 0 41 -681 59 388 20 645 710 10 0 659 -682 373 418 -29 1236 1312 10 130 0 -683 142 80 -18 462 552 10 473 0 -684 441 7 20 380 433 10 0 49 -685 33 268 -7 681 740 10 544 0 -686 355 174 -19 720 741 10 201 0 -687 228 260 12 1587 1654 10 0 866 -688 114 460 14 1079 1123 0 0 1009 -689 337 41 8 978 1056 10 0 653 -690 154 374 -8 930 973 10 365 0 -691 235 13 27 349 399 10 0 980 -692 303 78 12 179 194 10 0 245 -693 103 464 -27 1263 1312 10 958 0 -694 325 311 -24 1312 1363 10 635 0 -695 306 235 25 57 101 10 0 621 -696 382 360 26 171 224 10 0 523 -697 235 288 18 40 114 10 0 751 -698 0 356 -14 1090 1112 10 640 0 -699 178 135 -23 1509 1548 10 502 0 -700 226 423 15 174 279 10 0 663 -701 15 11 -11 942 992 10 786 0 -702 144 35 26 239 324 10 0 147 -703 176 199 28 89 131 10 0 610 -704 247 306 33 56 97 10 0 753 -705 396 417 -20 801 850 10 437 0 -706 289 220 19 49 91 10 0 921 -707 23 235 43 999 1078 10 0 392 -708 137 377 23 169 214 10 0 981 -709 400 71 -24 1337 1437 10 187 0 -710 261 359 10 109 162 10 0 445 -711 438 127 -2 939 973 10 169 0 -712 318 280 21 74 95 10 0 93 -713 333 293 -22 596 668 10 540 0 -714 436 295 11 518 568 10 0 301 -715 62 94 -32 944 988 10 120 0 -716 495 355 -13 1238 1278 10 557 0 -717 13 394 15 352 423 10 0 843 -718 172 292 17 89 124 10 0 918 -719 14 232 18 278 363 10 0 657 -720 437 90 12 573 626 10 0 359 -721 214 274 -22 1361 1407 10 489 0 -722 420 383 27 976 1018 0 0 1021 -723 120 261 5 786 831 0 0 1031 -724 179 75 13 731 779 10 0 623 -725 484 224 7 274 355 10 0 734 -726 214 245 8 36 108 10 0 796 -727 395 474 26 367 436 10 0 174 -728 368 311 -14 903 980 10 928 0 -729 199 203 -14 1440 1505 10 553 0 -730 485 428 -7 1476 1534 10 207 0 -731 86 199 23 260 325 10 0 242 -732 447 272 -24 384 414 10 967 0 -733 40 304 16 1134 1186 10 0 336 -734 475 267 -7 762 828 10 725 0 -735 482 141 -9 992 1060 10 94 0 -736 489 274 31 512 585 10 0 764 -737 26 342 -22 293 378 10 367 0 -738 139 438 24 218 290 10 0 251 -739 12 358 -16 1228 1250 10 859 0 -740 125 61 -32 589 665 10 781 0 -741 360 284 -15 650 714 10 21 0 -742 29 358 23 600 652 10 0 88 -743 285 247 -12 1245 1335 10 257 0 -744 248 386 22 353 433 10 0 150 -745 415 207 18 892 938 10 0 560 -746 130 247 17 120 173 10 0 629 -747 172 66 -21 1291 1344 10 111 0 -748 92 259 -12 376 452 10 138 0 -749 379 486 -10 660 713 10 879 0 -750 452 484 -7 1283 1304 10 431 0 -751 268 288 -18 1244 1319 10 697 0 -752 349 43 26 229 289 10 0 221 -753 225 269 -33 1266 1305 10 704 0 -754 50 383 20 241 309 10 0 977 -755 110 251 -25 482 544 10 885 0 -756 461 182 -17 598 689 10 797 0 -757 255 487 19 384 441 10 0 548 -758 133 202 -7 448 503 10 667 0 -759 34 329 -19 1032 1085 10 543 0 -760 368 452 16 653 716 10 0 40 -761 242 106 -27 1270 1297 10 675 0 -762 171 303 -22 1581 1627 10 423 0 -763 329 456 19 224 305 10 0 907 -764 490 286 -31 510 565 10 736 0 -765 61 214 -30 321 392 10 345 0 -766 365 74 24 836 890 10 0 494 -767 321 149 -13 1421 1459 10 505 0 -768 84 453 -22 1199 1277 10 816 0 -769 26 442 -22 1330 1388 10 32 0 -770 180 283 23 734 784 10 0 915 -771 394 322 12 1009 1071 10 0 828 -772 348 348 -6 920 980 10 5 0 -773 309 161 23 578 619 10 0 114 -774 385 58 24 390 450 10 0 580 -775 228 287 21 43 103 10 0 459 -776 312 453 6 543 586 10 0 972 -777 35 344 -18 857 900 10 66 0 -778 393 98 13 757 778 10 0 267 -779 208 488 -31 446 539 10 203 0 -780 235 33 -24 1327 1377 10 366 0 -781 140 137 32 547 622 10 0 740 -782 405 187 -33 1226 1306 10 463 0 -783 330 371 -30 545 603 10 28 0 -784 265 0 -2 876 947 10 599 0 -785 295 89 -21 710 804 10 819 0 -786 3 23 11 380 432 10 0 701 -787 363 225 -5 840 901 10 60 0 -788 148 208 22 527 556 10 0 844 -789 466 362 15 1150 1185 10 0 370 -790 267 290 15 43 112 10 0 97 -791 98 2 14 566 647 10 0 279 -792 131 246 17 828 866 10 0 51 -793 418 75 11 432 494 10 0 193 -794 366 260 23 1511 1559 0 0 1030 -795 138 28 -30 1069 1154 10 628 0 -796 209 212 -8 1523 1563 10 726 0 -797 443 167 17 525 591 10 0 756 -798 156 65 -17 1035 1069 10 627 0 -799 279 355 9 141 221 10 0 811 -800 206 172 -33 781 825 10 185 0 -801 32 94 14 924 966 10 0 393 -802 301 239 31 52 93 10 0 589 -803 471 368 19 425 461 10 0 954 -804 133 273 20 119 203 10 0 69 -805 253 74 20 1342 1389 0 0 1027 -806 470 405 17 908 973 10 0 874 -807 77 172 -18 793 808 10 884 0 -808 77 465 11 275 334 10 0 167 -809 466 96 22 1367 1430 0 0 1005 -810 402 277 -14 1438 1468 10 438 0 -811 267 374 -9 585 646 10 799 0 -812 450 194 27 617 662 10 0 869 -813 89 65 16 688 782 10 0 614 -814 429 389 -17 414 464 10 128 0 -815 202 28 22 926 973 0 0 1012 -816 46 389 22 246 296 10 0 768 -817 246 407 12 291 363 10 0 856 -818 452 110 14 314 396 10 0 974 -819 213 185 21 74 185 10 0 785 -820 134 276 -8 118 211 10 148 0 -821 262 97 17 933 992 10 0 572 -822 469 489 4 528 613 10 0 266 -823 364 71 -11 1321 1405 10 587 0 -824 68 240 11 789 829 0 0 1041 -825 494 468 31 327 418 10 0 969 -826 439 222 -14 962 1028 10 960 0 -827 386 225 -21 905 962 10 70 0 -828 434 359 -12 1369 1445 10 771 0 -829 103 177 28 601 682 10 0 638 -830 89 322 -1 999 1072 10 956 0 -831 307 249 10 1360 1423 10 0 877 -832 30 155 -22 1265 1326 10 197 0 -833 401 314 -30 972 1011 10 188 0 -834 217 357 -13 1410 1459 10 132 0 -835 373 421 -12 226 278 10 899 0 -836 5 281 16 1379 1394 10 0 92 -837 173 474 -17 1254 1345 10 249 0 -838 36 301 21 219 276 10 0 145 -839 429 169 -21 888 947 10 868 0 -840 195 450 -22 1469 1533 10 238 0 -841 95 382 19 211 282 10 0 166 -842 225 121 -12 726 770 10 165 0 -843 10 407 -15 421 477 10 717 0 -844 221 269 -22 1248 1313 10 788 0 -845 264 180 33 1675 1716 0 0 1025 -846 168 59 6 375 387 10 0 103 -847 281 96 -19 1109 1172 10 914 0 -848 387 349 9 169 243 10 0 419 -849 398 329 17 167 239 10 0 180 -850 239 486 -7 1449 1545 10 352 0 -851 237 420 -17 1299 1400 10 522 0 -852 346 354 8 794 871 10 0 569 -853 172 314 9 535 585 10 0 547 -854 233 230 20 26 100 10 0 962 -855 79 80 -4 1370 1424 10 491 0 -856 243 402 -12 393 448 10 817 0 -857 117 110 -24 956 1031 10 666 0 -858 66 314 26 194 235 10 0 156 -859 58 391 16 860 935 10 0 739 -860 142 360 -23 1504 1590 10 476 0 -861 492 326 -21 1189 1250 10 196 0 -862 381 328 12 713 752 10 0 44 -863 62 236 29 540 605 10 0 259 -864 344 70 -9 1113 1209 10 300 0 -865 151 81 -14 1538 1607 10 107 0 -866 240 240 -12 1688 1741 10 687 0 -867 46 163 -21 922 961 10 113 0 -868 455 168 21 854 909 10 0 839 -869 428 202 -27 894 944 10 812 0 -870 432 199 7 638 669 10 0 4 -871 391 112 -28 996 1035 10 351 0 -872 451 305 13 208 287 10 0 994 -873 214 311 14 70 96 10 0 893 -874 465 367 -17 994 1089 10 806 0 -875 164 473 26 286 337 10 0 327 -876 364 173 30 160 231 10 0 471 -877 274 261 -10 1700 1743 10 831 0 -878 133 455 -45 790 856 10 439 0 -879 351 481 10 317 357 10 0 749 -880 115 395 11 788 872 10 0 909 -881 297 304 4 71 163 10 0 490 -882 7 194 29 928 1004 10 0 48 -883 409 255 -23 1489 1586 10 676 0 -884 87 213 18 614 667 10 0 807 -885 60 246 25 190 268 10 0 755 -886 3 471 -32 716 736 10 418 0 -887 418 251 21 1190 1234 0 0 1038 -888 153 362 -21 1136 1217 10 651 0 -889 323 77 36 1404 1437 0 0 1014 -890 143 158 12 141 171 10 0 488 -891 351 148 -14 445 508 10 372 0 -892 426 38 -9 611 636 10 14 0 -893 226 316 -14 70 171 10 873 0 -894 347 192 -21 1480 1527 10 108 0 -895 102 6 3 1437 1510 0 0 1003 -896 41 120 22 684 737 10 0 588 -897 247 443 17 319 372 10 0 183 -898 218 271 -13 1556 1621 10 290 0 -899 376 385 12 184 250 10 0 835 -900 241 402 -12 998 1081 10 102 0 -901 213 399 18 210 287 10 0 619 -902 32 191 -34 592 611 10 248 0 -903 441 374 10 227 259 10 0 912 -904 376 113 8 498 561 10 0 464 -905 215 434 9 187 246 10 0 395 -906 499 316 -33 613 660 10 198 0 -907 318 497 -19 847 890 10 763 0 -908 256 441 34 191 260 10 0 261 -909 174 397 -11 1222 1297 10 880 0 -910 468 360 16 267 311 10 0 219 -911 287 256 18 37 135 10 0 526 -912 448 397 -10 850 912 10 903 0 -913 352 487 27 876 958 10 0 175 -914 253 118 19 541 584 10 0 847 -915 159 299 -23 1002 1060 10 770 0 -916 351 233 21 1409 1466 10 0 970 -917 268 113 21 666 723 10 0 320 -918 164 332 -17 1264 1325 10 718 0 -919 88 484 -17 1475 1536 10 177 0 -920 360 488 19 325 336 10 0 34 -921 343 166 -19 874 908 10 706 0 -922 497 266 25 750 776 10 0 509 -923 138 406 -10 1195 1267 10 178 0 -924 420 224 10 405 483 10 0 991 -925 231 410 -5 1224 1278 10 413 0 -926 199 438 -10 1344 1406 10 460 0 -927 219 215 32 46 120 10 0 394 -928 365 274 14 117 201 10 0 728 -929 481 454 14 308 377 10 0 216 -930 187 61 19 526 593 10 0 427 -931 372 97 13 197 261 10 0 414 -932 187 263 35 64 79 10 0 616 -933 371 427 -11 948 999 10 405 0 -934 74 215 -35 218 269 10 377 0 -935 375 145 12 912 977 10 0 286 -936 365 28 -19 256 310 10 91 0 -937 118 314 26 333 373 10 0 363 -938 60 29 -13 1340 1416 10 307 0 -939 478 300 -20 865 944 10 269 0 -940 33 152 -31 1299 1371 10 979 0 -941 347 184 -29 1064 1124 10 406 0 -942 94 40 -11 1032 1134 10 410 0 -943 290 328 7 135 182 10 0 381 -944 96 346 26 181 266 10 0 654 -945 97 288 -26 1274 1325 10 495 0 -946 176 470 14 523 600 10 0 408 -947 206 97 33 428 499 10 0 33 -948 210 133 15 673 734 0 0 1040 -949 489 457 13 316 352 10 0 342 -950 418 399 20 431 475 10 0 672 -951 392 491 10 1116 1180 10 0 469 -952 437 19 15 999 1059 10 0 989 -953 495 83 32 424 488 10 0 598 -954 468 352 -19 763 804 10 803 0 -955 390 120 -27 992 1046 10 170 0 -956 80 357 1 529 562 10 0 830 -957 394 310 10 1092 1136 10 0 612 -958 61 441 27 553 564 10 0 693 -959 52 303 25 444 469 10 0 325 -960 391 202 14 148 191 10 0 826 -961 36 451 15 874 933 10 0 16 -962 276 84 -20 668 725 10 854 0 -963 130 140 17 177 241 10 0 595 -964 16 287 12 258 314 10 0 45 -965 292 136 28 777 814 10 0 646 -966 53 204 -32 1032 1108 10 151 0 -967 359 287 24 115 174 10 0 732 -968 309 29 -14 1275 1342 10 546 0 -969 473 491 -31 389 467 10 825 0 -970 273 255 -21 1462 1553 10 916 0 -971 263 153 12 402 453 10 0 101 -972 328 458 -6 762 804 10 776 0 -973 401 164 -27 610 662 10 454 0 -974 480 119 -14 608 678 10 818 0 -975 488 96 -19 1035 1127 10 535 0 -976 149 98 4 1147 1213 0 0 1026 -977 49 437 -20 427 457 10 754 0 -978 440 77 14 895 961 10 0 592 -979 43 135 31 236 315 10 0 940 -980 188 151 -27 1270 1353 10 691 0 -981 175 422 -23 1434 1489 10 708 0 -982 48 437 4 782 855 10 0 349 -983 334 403 26 174 217 10 0 451 -984 372 115 -30 359 399 10 508 0 -985 111 192 11 1176 1253 0 0 1029 -986 357 290 24 114 194 10 0 536 -987 331 134 -31 1107 1170 10 650 0 -988 495 199 25 317 386 10 0 109 -989 441 60 -15 1439 1508 10 952 0 -990 51 89 -15 1189 1257 10 552 0 -991 452 206 -10 488 526 10 924 0 -992 195 386 -38 146 198 10 77 0 -993 172 24 -10 1445 1490 10 617 0 -994 408 318 -13 613 703 10 872 0 -995 410 399 25 218 279 0 0 1024 -996 413 345 20 1196 1270 10 0 570 -997 215 129 -25 1081 1186 10 313 0 -998 380 350 15 854 908 0 0 1032 -999 19 38 15 824 901 10 0 200 -1000 166 247 1 84 129 10 0 86 -1001 6 53 -8 566 638 10 364 0 -1002 200 27 -22 477 602 10 194 0 -1003 102 6 -3 1437 1510 10 895 0 -1004 1 101 -8 1246 1299 10 665 0 -1005 466 96 -22 1367 1430 10 809 0 -1006 80 458 -30 349 422 10 379 0 -1007 382 9 -30 274 329 10 620 0 -1008 64 437 -11 914 953 10 121 0 -1009 114 460 -14 1079 1123 10 688 0 -1010 371 163 -21 822 863 10 47 0 -1011 480 136 -22 256 358 10 46 0 -1012 202 28 -22 926 973 10 815 0 -1013 69 414 -6 1242 1314 10 481 0 -1014 323 77 -36 1404 1437 10 889 0 -1015 39 162 -18 544 616 10 258 0 -1016 328 491 -21 673 714 10 11 0 -1017 48 162 -15 220 300 10 337 0 -1018 240 34 -28 1554 1595 10 456 0 -1019 447 267 -19 961 1029 10 125 0 -1020 175 352 -12 1643 1717 10 549 0 -1021 420 383 -27 976 1018 10 722 0 -1022 153 244 -5 103 143 10 289 0 -1023 337 232 -2 1549 1622 10 255 0 -1024 410 399 -25 218 279 10 995 0 -1025 264 180 -33 1675 1716 10 845 0 -1026 149 98 -4 1147 1213 10 976 0 -1027 253 74 -20 1342 1389 10 805 0 -1028 398 49 -21 778 835 10 149 0 -1029 111 192 -11 1176 1253 10 985 0 -1030 366 260 -23 1511 1559 10 794 0 -1031 120 261 -5 786 831 10 723 0 -1032 380 350 -15 854 908 10 998 0 -1033 195 111 -15 982 1045 10 415 0 -1034 211 446 -15 1114 1162 10 353 0 -1035 272 234 -26 1570 1640 10 541 0 -1036 284 319 -17 785 878 10 618 0 -1037 146 188 -6 1225 1274 10 63 0 -1038 418 251 -21 1190 1234 10 887 0 -1039 303 186 -10 1333 1406 10 105 0 -1040 210 133 -15 673 734 10 948 0 -1041 68 240 -11 789 829 10 824 0 -1042 56 268 -28 1058 1100 10 525 0 -1043 215 282 -21 1417 1494 10 461 0 -1044 221 291 -9 50 111 10 299 0 -1045 244 277 -18 1291 1341 10 527 0 -1046 247 219 -17 31 65 10 247 0 diff --git a/jsprit-instances/instances/lilim/1000/LR2101.txt b/jsprit-instances/instances/lilim/1000/LR2101.txt deleted file mode 100644 index 400d839d6..000000000 --- a/jsprit-instances/instances/lilim/1000/LR2101.txt +++ /dev/null @@ -1,1008 +0,0 @@ -250 1000 1 -0 250 250 0 0 7697 0 0 0 -1 228 399 -6 2329 2482 10 766 0 -2 325 56 13 3181 3311 10 0 582 -3 290 145 5 5130 5242 10 0 415 -4 340 291 22 1893 1991 10 0 839 -5 370 382 11 3538 3653 10 0 372 -6 273 255 -9 5968 6088 10 287 0 -7 36 301 21 811 949 10 0 668 -8 117 178 28 4484 4574 10 0 302 -9 295 283 26 3538 3728 10 0 66 -10 57 43 -25 4088 4219 10 932 0 -11 436 123 -33 835 966 10 809 0 -12 48 162 15 825 1033 10 0 524 -13 222 499 7 3400 3483 10 0 560 -14 376 92 -17 3959 4086 10 534 0 -15 437 90 12 2364 2435 10 0 885 -16 3 23 -27 1550 1702 10 970 0 -17 94 40 -11 4278 4387 10 62 0 -18 398 476 -17 1676 1789 10 33 0 -19 307 249 10 5511 5622 0 0 1003 -20 179 286 8 1380 1469 10 0 224 -21 0 356 13 4346 4464 10 0 822 -22 143 158 12 562 659 10 0 696 -23 413 476 34 4729 4823 10 0 580 -24 371 488 -10 2285 2497 10 760 0 -25 415 118 19 886 966 10 0 188 -26 440 77 -26 3649 3775 10 877 0 -27 261 201 -27 6060 6172 10 597 0 -28 490 286 29 2073 2224 10 0 529 -29 309 161 23 2287 2499 10 0 32 -30 39 162 -20 2269 2373 10 469 0 -31 361 178 5 3903 3996 10 0 299 -32 261 138 -23 2491 2575 10 29 0 -33 447 383 17 889 1013 10 0 18 -34 346 354 8 3260 3399 10 0 664 -35 461 195 -15 5597 5683 10 690 0 -36 187 263 35 191 324 10 0 39 -37 130 247 17 423 538 10 0 562 -38 328 491 -13 2702 2845 10 61 0 -39 161 276 -35 476 711 10 36 0 -40 365 74 24 3379 3529 10 0 557 -41 168 109 -9 810 944 10 986 0 -42 111 192 11 4809 4907 10 0 414 -43 87 213 18 2483 2642 10 0 845 -44 45 166 -16 4063 4164 10 611 0 -45 62 94 16 3822 3903 10 0 595 -46 348 476 19 4762 4932 10 0 87 -47 64 437 -29 3686 3779 10 492 0 -48 56 75 -21 5711 5910 10 966 0 -49 24 259 19 1490 1591 10 0 180 -50 295 247 -27 5212 5335 10 929 0 -51 6 53 8 2355 2460 10 0 504 -52 15 11 15 3796 3938 10 0 634 -53 179 497 -20 5633 5775 10 640 0 -54 67 352 20 1514 1592 10 0 699 -55 317 45 -16 2629 2757 10 985 0 -56 40 278 10 4466 4490 10 0 506 -57 33 278 -26 5910 6108 10 417 0 -58 322 290 -6 5920 6031 10 999 0 -59 159 226 16 314 439 10 0 279 -60 208 445 -15 5314 5465 10 858 0 -61 453 360 13 858 990 10 0 38 -62 34 169 11 1948 2048 10 0 17 -63 436 25 -12 5113 5266 10 631 0 -64 393 98 13 3013 3127 10 0 720 -65 466 96 -30 5547 5639 10 948 0 -66 366 390 -26 5266 5400 10 9 0 -67 303 78 12 656 784 10 0 74 -68 374 116 9 2357 2461 10 0 586 -69 424 288 -31 4261 4318 10 584 0 -70 191 84 -6 3472 3584 10 473 0 -71 59 276 -27 3548 3711 10 811 0 -72 215 293 13 128 315 10 0 569 -73 343 276 15 321 451 10 0 893 -74 488 173 -12 4836 4966 10 67 0 -75 452 110 14 1339 1504 10 0 215 -76 153 244 5 460 523 10 0 108 -77 176 200 17 2266 2394 10 0 711 -78 498 171 -20 5048 5123 10 538 0 -79 492 188 -9 2904 2939 10 871 0 -80 177 156 25 639 818 10 0 114 -81 398 49 21 3167 3288 10 0 324 -82 497 296 14 2495 2525 10 0 555 -83 276 84 -22 2696 2874 10 84 0 -84 128 113 22 1424 1597 10 0 83 -85 422 498 5 2801 2856 10 0 821 -86 460 424 -15 5786 5970 10 897 0 -87 246 314 -19 5773 5910 10 46 0 -88 0 422 8 3300 3388 10 0 465 -89 166 247 1 291 382 10 0 788 -90 311 422 -34 3970 4053 10 250 0 -91 392 95 -13 3060 3189 10 792 0 -92 460 117 -3 2083 2196 10 274 0 -93 28 467 -22 5381 5480 10 916 0 -94 375 145 -3 3719 3836 10 152 0 -95 240 255 -30 6404 6604 10 452 0 -96 440 436 -4 3549 3706 10 493 0 -97 454 201 -34 5218 5342 10 969 0 -98 407 35 -29 5177 5250 10 379 0 -99 420 383 27 3932 4044 10 0 945 -100 264 180 -16 6720 6845 10 886 0 -101 440 294 -15 3836 3966 10 621 0 -102 500 228 8 3137 3237 10 0 998 -103 144 331 -14 3709 3860 10 890 0 -104 98 2 -21 2361 2493 10 805 0 -105 461 186 -8 6054 6165 10 862 0 -106 68 450 18 2505 2675 10 0 729 -107 153 192 13 3457 3588 10 0 544 -108 34 239 -5 896 975 10 76 0 -109 465 367 -15 4087 4248 10 927 0 -110 208 488 -23 1934 2007 10 377 0 -111 93 413 -19 849 961 10 456 0 -112 371 332 14 2144 2213 10 0 753 -113 231 167 15 246 435 10 0 374 -114 179 75 -25 2982 3057 10 80 0 -115 196 489 -12 4135 4226 10 936 0 -116 280 245 21 85 158 10 0 739 -117 108 37 -14 2192 2323 10 381 0 -118 1 101 -15 5021 5158 10 883 0 -119 420 80 -22 4372 4522 10 496 0 -120 38 190 23 1138 1261 10 0 143 -121 470 405 17 3694 3832 10 0 819 -122 448 397 -20 3482 3563 10 791 0 -123 471 427 -15 3256 3395 10 509 0 -124 146 376 8 928 1066 10 0 687 -125 12 358 -29 4891 5024 10 955 0 -126 175 422 -21 5771 5920 10 996 0 -127 297 131 25 4640 4803 10 0 230 -128 457 492 7 2041 2143 10 0 982 -129 69 423 32 3236 3304 10 0 979 -130 97 288 -4 5142 5251 10 799 0 -131 172 314 -6 2169 2314 10 244 0 -132 170 347 15 1764 1842 10 0 606 -133 103 123 8 1966 2072 10 0 485 -134 154 374 36 3746 3870 10 0 671 -135 318 497 -15 3428 3522 10 879 0 -136 330 147 28 3383 3525 10 0 990 -137 241 180 -14 6789 6887 10 366 0 -138 174 67 -31 5018 5180 10 915 0 -139 235 288 18 83 244 10 0 764 -140 94 192 1 4319 4444 10 0 394 -141 232 101 -18 1405 1483 10 446 0 -142 28 180 -18 1551 1653 10 345 0 -143 64 135 -23 3495 3571 10 120 0 -144 174 376 -21 5671 5804 10 593 0 -145 293 174 31 279 420 10 0 685 -146 218 12 -24 2204 2268 10 457 0 -147 110 122 -14 6000 6190 10 407 0 -148 459 53 20 4505 4592 10 0 444 -149 173 474 14 5150 5250 10 0 848 -150 135 400 20 1189 1319 10 0 498 -151 497 266 25 2996 3104 10 0 773 -152 380 194 3 2872 2956 10 0 94 -153 495 227 20 1389 1482 10 0 680 -154 268 351 -20 6698 6822 10 954 0 -155 213 399 18 941 1051 10 0 183 -156 448 414 -4 4924 4978 10 725 0 -157 327 139 -20 5021 5158 10 971 0 -158 151 81 -17 6262 6321 10 507 0 -159 425 448 9 3152 3324 10 0 956 -160 92 259 4 1585 1731 10 0 992 -161 59 388 -10 2650 2772 10 203 0 -162 468 360 16 1104 1208 10 0 434 -163 332 459 35 1479 1591 10 0 281 -164 469 489 -23 2211 2353 10 817 0 -165 248 176 -36 5579 5753 10 695 0 -166 174 41 -4 5216 5331 10 841 0 -167 343 205 -13 3081 3178 10 761 0 -168 154 392 9 635 737 10 0 194 -169 92 18 8 4466 4648 10 0 461 -170 250 328 24 1001 1108 10 0 795 -171 88 484 -19 5963 6082 10 495 0 -172 360 488 19 1252 1393 10 0 752 -173 156 65 -23 4143 4275 10 824 0 -174 18 225 8 2757 2893 10 0 721 -175 152 476 -27 2112 2188 10 771 0 -176 176 470 -36 2181 2312 10 635 0 -177 195 450 -7 5946 6061 10 997 0 -178 466 149 -15 4761 4848 10 256 0 -179 221 269 -3 5064 5179 10 716 0 -180 105 137 -19 1799 1940 10 49 0 -181 284 319 -13 3270 3384 10 567 0 -182 41 120 22 2791 2897 10 0 911 -183 263 418 -18 1117 1230 10 155 0 -184 218 271 16 6280 6429 10 0 411 -185 365 119 30 1482 1692 10 0 369 -186 89 322 -5 4099 4186 10 556 0 -187 180 283 -25 2963 3107 10 813 0 -188 385 17 -19 3186 3404 10 25 0 -189 401 314 -16 3875 4057 10 694 0 -190 245 176 -21 4943 5055 10 926 0 -191 251 238 27 12 119 10 0 207 -192 139 438 24 865 966 10 0 246 -193 236 126 23 400 598 10 0 718 -194 61 441 -9 2201 2268 10 168 0 -195 405 454 -13 5178 5365 10 359 0 -196 111 392 -6 4693 4780 10 638 0 -197 373 421 21 939 1080 10 0 392 -198 247 443 -9 1302 1461 10 849 0 -199 322 406 -19 3294 3460 10 517 0 -200 412 478 7 3851 3946 10 0 247 -201 374 346 -30 1700 1788 10 251 0 -202 122 422 -23 5871 5904 10 566 0 -203 261 359 10 401 476 10 0 161 -204 173 182 25 383 438 10 0 789 -205 398 341 -23 3775 3858 10 707 0 -206 413 127 -2 3326 3439 10 253 0 -207 325 311 -27 5290 5409 10 191 0 -208 80 357 1 2093 2271 10 0 790 -209 67 378 26 1875 2008 10 0 804 -210 216 341 -26 2613 2738 10 337 0 -211 498 457 15 3692 3733 10 0 213 -212 44 344 12 4325 4431 10 0 290 -213 352 481 -15 5136 5261 10 211 0 -214 237 420 -32 5311 5483 10 271 0 -215 389 43 -14 1564 1721 10 75 0 -216 292 136 28 3126 3239 10 0 679 -217 426 38 -24 2439 2551 10 432 0 -218 245 461 8 2635 2680 10 0 226 -219 415 253 21 1457 1595 10 0 248 -220 298 264 36 147 253 10 0 825 -221 307 412 8 1635 1714 10 0 874 -222 53 204 -26 4206 4354 10 278 0 -223 480 152 26 4028 4265 10 0 245 -224 262 97 -8 3785 3912 10 20 0 -225 83 169 -18 3115 3218 10 629 0 -226 377 432 -8 3343 3429 10 218 0 -227 390 249 21 2323 2451 10 0 952 -228 132 479 11 997 1063 10 0 914 -229 359 246 -25 5725 5777 10 380 0 -230 314 205 -25 6086 6249 10 127 0 -231 124 448 6 1430 1638 10 0 660 -232 0 188 -16 3709 3867 10 561 0 -233 343 166 -13 3512 3616 10 975 0 -234 482 141 14 4028 4178 10 0 478 -235 162 306 22 494 580 10 0 282 -236 24 71 -30 1394 1494 10 601 0 -237 188 119 -18 3903 4016 10 901 0 -238 100 85 14 1422 1506 10 0 528 -239 103 177 28 2494 2637 10 0 814 -240 26 67 15 5274 5380 10 0 981 -241 164 332 -5 5107 5250 10 317 0 -242 385 285 13 3478 3586 10 0 961 -243 209 68 -15 6266 6398 10 922 0 -244 149 341 6 1599 1753 10 0 131 -245 415 95 -26 4708 4825 10 223 0 -246 167 488 -24 972 1148 10 192 0 -247 413 493 -7 4894 4971 10 200 0 -248 439 222 -21 3929 4028 10 219 0 -249 150 484 16 2498 2623 10 0 260 -250 299 353 34 393 519 10 0 90 -251 273 300 30 153 288 10 0 201 -252 402 277 5 5771 5856 10 0 950 -253 239 15 2 2416 2534 10 0 206 -254 363 225 35 3426 3541 10 0 727 -255 65 343 -21 802 976 10 284 0 -256 351 60 15 850 952 10 0 178 -257 60 246 25 704 816 10 0 815 -258 144 35 26 891 1027 10 0 939 -259 463 253 -22 4171 4325 10 908 0 -260 332 382 -16 4037 4167 10 249 0 -261 408 318 15 2558 2707 10 0 520 -262 452 206 31 1958 2099 10 0 600 -263 471 368 19 1718 1827 10 0 270 -264 93 490 2 1527 1626 10 0 646 -265 241 402 11 4090 4229 10 0 572 -266 60 231 -13 4124 4203 10 703 0 -267 172 66 18 5225 5318 10 0 746 -268 404 207 -25 3634 3771 10 420 0 -269 286 356 30 354 542 10 0 355 -270 489 338 -19 5551 5746 10 263 0 -271 334 481 32 1323 1440 10 0 214 -272 26 442 23 5402 5470 10 0 426 -273 226 175 -23 6798 6871 10 326 0 -274 488 3 3 1625 1700 10 0 92 -275 178 150 33 2548 2625 10 0 526 -276 371 423 10 810 878 10 0 780 -277 5 224 19 4242 4316 10 0 689 -278 94 344 26 2746 2832 10 0 222 -279 153 235 -16 324 462 10 59 0 -280 12 367 27 1282 1444 10 0 575 -281 217 357 -35 5671 5808 10 163 0 -282 255 487 -22 1556 1747 10 235 0 -283 149 214 7 1911 2066 10 0 656 -284 169 305 21 663 752 10 0 255 -285 487 446 -33 5360 5482 10 837 0 -286 267 374 23 2425 2501 10 0 869 -287 360 294 9 5669 5793 10 0 6 -288 185 431 -29 1561 1656 10 833 0 -289 325 210 -18 3717 3870 10 536 0 -290 175 352 -12 6652 6789 10 212 0 -291 76 462 18 3813 3955 10 0 735 -292 19 273 -7 4035 4218 10 649 0 -293 72 227 25 2258 2373 10 0 748 -294 213 283 -24 5885 6002 10 320 0 -295 130 140 17 783 889 10 0 706 -296 274 442 17 4301 4350 10 0 333 -297 337 41 -7 4018 4121 10 977 0 -298 372 39 10 2886 3022 10 0 684 -299 269 112 -5 5041 5180 10 31 0 -300 224 56 13 4747 4865 10 0 723 -301 340 416 -5 1293 1396 10 872 0 -302 13 214 -28 5428 5520 10 8 0 -303 230 320 -19 4770 4887 10 530 0 -304 6 196 -19 4772 4973 10 698 0 -305 87 3 13 5728 5856 10 0 581 -306 133 202 -21 1827 1978 10 666 0 -307 235 316 -13 2616 2751 10 946 0 -308 435 180 -14 896 1020 10 639 0 -309 173 65 -27 1768 1940 10 831 0 -310 245 42 24 2203 2295 10 0 669 -311 384 149 -1 4777 4920 10 373 0 -312 51 286 14 5831 5960 10 0 329 -313 267 290 15 111 236 10 0 747 -314 453 318 30 1489 1621 10 0 836 -315 189 402 10 2149 2259 10 0 882 -316 210 276 5 138 243 10 0 865 -317 120 261 5 3154 3312 10 0 241 -318 35 263 27 1087 1194 10 0 387 -319 429 59 9 1827 1964 10 0 923 -320 330 308 24 4687 4797 10 0 294 -321 58 391 -23 3528 3651 10 867 0 -322 260 472 -28 4143 4265 10 758 0 -323 217 333 26 1633 1776 10 0 437 -324 335 46 -21 5400 5453 10 81 0 -325 198 85 28 1032 1189 10 0 860 -326 138 28 23 4362 4530 10 0 273 -327 29 336 22 1319 1454 10 0 875 -328 200 27 22 2109 2209 10 0 643 -329 157 269 -14 6317 6414 10 312 0 -330 177 404 17 5074 5143 10 0 787 -331 202 28 22 3733 3860 10 0 683 -332 366 334 -3 1650 1751 10 489 0 -333 149 458 -17 4634 4796 10 296 0 -334 481 454 -9 1278 1406 10 677 0 -335 377 385 -13 3486 3564 10 484 0 -336 217 207 -29 5538 5642 10 775 0 -337 96 346 26 765 836 10 0 210 -338 224 320 -14 5187 5202 10 596 0 -339 206 97 -20 1785 1920 10 350 0 -340 438 127 2 3785 3862 10 0 590 -341 494 468 -25 1417 1523 10 968 0 -342 494 165 19 2401 2553 10 0 642 -343 5 281 -17 5478 5615 10 463 0 -344 441 60 21 5835 5954 10 0 430 -345 14 232 18 1187 1374 10 0 142 -346 288 439 16 1121 1187 10 0 442 -347 420 224 10 1704 1848 10 0 749 -348 267 162 6 5800 5913 10 0 743 -349 195 273 22 156 320 0 0 1006 -350 233 230 20 26 199 10 0 339 -351 382 360 -36 696 849 10 436 0 -352 406 460 2 2868 3006 10 0 715 -353 499 316 18 2472 2623 10 0 479 -354 246 407 12 1235 1377 10 0 949 -355 283 454 -30 5107 5134 10 269 0 -356 426 231 24 4102 4245 10 0 730 -357 432 2 -19 1848 2004 10 412 0 -358 404 439 -25 964 1067 10 880 0 -359 397 477 13 4853 4993 10 0 195 -360 44 140 -2 3464 3602 10 579 0 -361 330 138 -13 4493 4504 10 675 0 -362 39 153 -6 3203 3299 10 433 0 -363 397 153 29 3507 3673 10 0 622 -364 226 316 21 234 328 10 0 892 -365 354 156 20 3322 3458 10 0 712 -366 201 66 14 4671 4784 10 0 137 -367 389 156 -10 2851 2993 10 598 0 -368 134 211 35 458 626 10 0 912 -369 386 154 -30 4415 4513 10 185 0 -370 335 99 25 4913 4955 10 0 390 -371 356 256 19 337 513 10 0 829 -372 240 362 -11 5665 5765 10 5 0 -373 412 100 1 2066 2161 10 0 311 -374 394 322 -15 4111 4207 10 113 0 -375 48 150 15 2642 2718 10 0 626 -376 225 121 18 2924 3063 10 0 422 -377 102 422 23 892 1038 10 0 110 -378 339 41 -14 1793 1973 10 793 0 -379 440 201 29 3603 3658 10 0 98 -380 411 379 25 4781 4886 10 0 229 -381 219 210 14 152 252 10 0 117 -382 250 441 5 3026 3140 10 0 468 -383 210 29 -24 4213 4314 10 763 0 -384 178 302 19 3553 3659 10 0 702 -385 148 208 -28 2095 2237 10 782 0 -386 225 369 38 432 541 10 0 393 -387 16 287 -27 1102 1185 10 318 0 -388 450 416 -20 2281 2453 10 904 0 -389 287 397 -17 2262 2373 10 806 0 -390 285 247 -25 5063 5256 10 370 0 -391 351 481 10 1284 1410 10 0 785 -392 243 408 -21 5720 5870 10 197 0 -393 137 377 -38 619 740 10 386 0 -394 33 152 -1 5278 5403 10 140 0 -395 68 303 22 904 987 10 0 740 -396 456 113 -25 4922 5015 10 704 0 -397 134 276 -12 538 648 10 983 0 -398 26 221 -31 4016 4076 10 440 0 -399 79 257 26 3803 3942 10 0 980 -400 181 185 -7 6436 6594 10 963 0 -401 104 349 20 4058 4135 10 0 734 -402 267 174 -29 6470 6596 10 441 0 -403 475 267 7 3124 3232 10 0 751 -404 385 239 21 3130 3274 10 0 797 -405 95 382 -18 929 1041 10 678 0 -406 67 190 -26 4722 4785 10 705 0 -407 32 94 14 3707 3854 10 0 147 -408 401 164 13 2523 2568 10 0 508 -409 376 113 -26 2083 2150 10 828 0 -410 409 255 23 6084 6215 10 0 519 -411 228 260 -16 6450 6514 10 184 0 -412 363 34 19 1097 1202 10 0 357 -413 274 441 12 2762 2915 10 0 959 -414 146 188 -11 4960 5039 10 42 0 -415 212 186 -5 6893 6999 10 3 0 -416 432 66 -5 4270 4419 10 676 0 -417 83 300 26 1987 2131 10 0 57 -418 51 89 -16 4833 4953 10 628 0 -419 379 486 -23 2679 2815 10 592 0 -420 440 284 25 3394 3540 10 0 268 -421 175 239 23 256 351 10 0 609 -422 282 1 -18 4184 4276 10 376 0 -423 268 113 21 2734 2823 10 0 937 -424 480 131 5 2740 2881 10 0 856 -425 429 67 16 2938 3040 10 0 888 -426 162 301 -23 6423 6601 10 272 0 -427 281 96 1 4532 4594 10 0 589 -428 495 199 -25 1363 1451 10 513 0 -429 372 115 -9 1463 1567 10 898 0 -430 396 83 -21 6362 6449 10 344 0 -431 239 486 3 5949 6028 10 0 801 -432 288 70 24 724 829 10 0 217 -433 66 163 6 1566 1718 10 0 362 -434 470 417 -16 2961 3053 10 162 0 -435 226 423 15 832 863 10 0 603 -436 342 319 36 419 502 10 0 351 -437 174 122 -26 2376 2491 10 323 0 -438 49 353 15 5810 5879 10 0 973 -439 448 495 -12 1519 1669 10 554 0 -440 13 465 31 3116 3193 10 0 398 -441 489 159 29 5723 5818 10 0 402 -442 311 203 -16 2892 3008 10 346 0 -443 480 119 -32 2515 2632 10 708 0 -444 442 153 -20 4765 4865 10 148 0 -445 148 462 -23 2906 3028 10 732 0 -446 233 87 18 966 1174 10 0 141 -447 323 34 -20 5244 5394 10 559 0 -448 84 377 -5 3699 3831 10 466 0 -449 292 32 14 888 1066 10 0 632 -450 418 75 11 1807 1896 10 0 894 -451 451 305 -14 779 889 10 594 0 -452 225 269 30 5082 5205 10 0 95 -453 272 420 -17 5515 5691 10 681 0 -454 318 280 21 254 340 10 0 840 -455 250 57 26 2995 3110 10 0 574 -456 77 372 19 788 905 10 0 111 -457 385 58 24 1661 1697 10 0 146 -458 44 496 -9 1594 1740 10 924 0 -459 460 328 -17 872 1001 10 846 0 -460 67 24 -21 4083 4184 10 925 0 -461 91 27 -8 4699 4874 10 169 0 -462 360 284 19 2660 2792 10 0 965 -463 82 183 17 4444 4490 10 0 343 -464 153 362 -26 4647 4762 10 616 0 -465 52 412 -8 5608 5758 10 88 0 -466 32 191 5 2344 2465 10 0 448 -467 325 147 -22 4777 4836 10 957 0 -468 328 458 -5 3099 3164 10 382 0 -469 133 273 20 419 535 10 0 30 -470 147 30 -18 4424 4565 10 672 0 -471 131 246 17 3348 3429 10 0 607 -472 433 319 -24 5509 5621 10 852 0 -473 168 59 6 1482 1566 10 0 70 -474 218 403 -15 5305 5368 10 989 0 -475 295 89 -35 2983 3072 10 816 0 -476 118 314 -33 1315 1505 10 984 0 -477 251 63 -14 3981 4039 10 943 0 -478 388 44 -14 4519 4647 10 234 0 -479 381 328 -18 2868 2990 10 353 0 -480 132 32 18 3138 3257 10 0 518 -481 334 403 26 620 776 10 0 494 -482 83 290 -15 2421 2560 10 653 0 -483 411 396 23 3667 3814 10 0 974 -484 243 402 13 1632 1729 10 0 335 -485 52 18 -8 3438 3537 10 133 0 -486 265 0 -24 3570 3718 10 608 0 -487 268 288 -4 5075 5181 10 709 0 -488 476 61 -5 1780 1930 10 673 0 -489 283 438 3 939 1032 10 0 332 -490 191 215 17 211 338 10 0 497 -491 253 50 27 921 1005 10 0 738 -492 71 282 29 2583 2670 10 0 47 -493 297 304 4 227 345 10 0 96 -494 244 368 -26 1648 1785 10 481 0 -495 80 279 19 4586 4795 10 0 171 -496 488 96 22 4264 4386 10 0 119 -497 142 30 -17 5002 5085 10 490 0 -498 68 240 -20 3176 3300 10 150 0 -499 193 138 30 2639 2768 10 0 525 -500 451 62 5 1139 1240 10 0 878 -501 138 406 -14 4892 4956 10 827 0 -502 306 42 -30 1944 1989 10 512 0 -503 247 219 17 81 169 10 0 873 -504 98 29 -8 4209 4284 10 51 0 -505 102 6 -3 5820 5968 10 918 0 -506 142 360 -10 6124 6252 10 56 0 -507 172 24 17 5814 5924 10 0 158 -508 352 241 -13 3178 3280 10 408 0 -509 486 324 15 3109 3168 10 0 123 -510 133 455 -4 3222 3362 10 657 0 -511 440 292 24 3776 3864 10 0 577 -512 364 173 30 700 862 10 0 502 -513 442 289 25 744 903 10 0 428 -514 48 412 7 4156 4220 10 0 762 -515 344 70 24 4542 4743 10 0 844 -516 78 406 -21 3818 3986 10 807 0 -517 329 456 19 1008 1104 10 0 199 -518 157 38 -18 4186 4316 10 480 0 -519 374 260 -23 7081 7238 10 410 0 -520 297 283 -15 5386 5529 10 261 0 -521 210 113 28 2778 2864 10 0 781 -522 215 434 -14 752 909 10 583 0 -523 262 92 -10 2507 2657 10 778 0 -524 140 108 -15 4280 4409 10 12 0 -525 235 108 -30 4307 4449 10 499 0 -526 210 133 -33 2767 2862 10 275 0 -527 25 53 -15 4088 4193 10 868 0 -528 339 113 -14 3050 3154 10 238 0 -529 394 310 -29 4410 4498 10 28 0 -530 126 391 19 1099 1203 10 0 303 -531 343 34 7 2882 3036 10 0 552 -532 354 416 -28 2719 2836 10 641 0 -533 202 391 -24 2497 2611 10 843 0 -534 367 97 17 3968 4055 10 0 14 -535 188 151 -1 5223 5270 10 605 0 -536 111 178 18 593 659 10 0 289 -537 456 157 -21 5788 5972 10 742 0 -538 441 7 20 1563 1690 10 0 78 -539 270 337 -10 7160 7222 10 759 0 -540 323 29 7 4533 4687 10 0 838 -541 200 78 -15 3981 4080 10 842 0 -542 330 281 14 5336 5427 10 0 881 -543 438 488 -13 1304 1433 10 573 0 -544 161 416 -13 4036 4173 10 107 0 -545 30 97 23 4851 4951 10 0 995 -546 273 70 36 2458 2617 10 0 942 -547 214 245 8 97 193 10 0 851 -548 221 291 9 184 305 10 0 876 -549 79 467 22 1400 1531 10 0 633 -550 423 315 12 706 855 10 0 615 -551 395 474 -12 1545 1670 10 564 0 -552 481 207 -7 3447 3521 10 531 0 -553 199 203 -20 5851 5928 10 994 0 -554 497 483 12 1407 1541 10 0 439 -555 449 428 -14 4966 5129 10 82 0 -556 100 266 5 1897 1981 10 0 186 -557 214 274 -24 5490 5583 10 40 0 -558 16 68 11 1105 1267 10 0 697 -559 475 198 20 3335 3466 10 0 447 -560 371 427 -7 3811 3974 10 13 0 -561 62 375 16 1410 1500 10 0 232 -562 163 472 -17 2611 2736 10 37 0 -563 13 314 14 985 1086 10 0 859 -564 376 385 12 640 837 10 0 551 -565 231 29 -18 4896 5035 10 701 0 -566 89 358 23 4950 5147 10 0 202 -567 331 356 13 2859 2956 10 0 181 -568 365 190 22 5897 6043 10 0 779 -569 256 441 -13 722 807 10 72 0 -570 120 37 -10 3087 3236 10 619 0 -571 349 43 26 855 980 10 0 717 -572 230 487 -11 4552 4605 10 265 0 -573 489 457 13 1264 1386 10 0 543 -574 341 72 -26 3243 3315 10 455 0 -575 181 441 -27 2177 2278 10 280 0 -576 306 229 10 5287 5396 10 0 830 -577 492 326 -24 4863 4890 10 511 0 -578 347 459 25 1931 2024 10 0 714 -579 66 88 2 3302 3455 10 0 360 -580 272 234 -34 6353 6489 10 23 0 -581 134 194 -13 6631 6703 10 305 0 -582 320 211 -13 3985 4076 10 2 0 -583 214 311 14 225 341 10 0 522 -584 489 274 31 2132 2258 10 0 69 -585 231 410 -30 4917 5095 10 754 0 -586 432 199 -9 2551 2678 10 68 0 -587 29 358 23 2425 2581 10 0 655 -588 62 236 -17 2238 2345 10 835 0 -589 333 163 -1 4973 5068 10 427 0 -590 364 71 -2 5374 5533 10 340 0 -591 125 65 -2 3170 3257 10 648 0 -592 429 476 23 2314 2392 10 0 419 -593 161 275 21 5370 5524 10 0 144 -594 365 274 14 395 545 10 0 451 -595 117 110 -16 3898 4052 10 45 0 -596 166 345 14 4517 4642 10 0 338 -597 345 146 27 5727 5905 10 0 27 -598 324 99 10 1368 1455 10 0 367 -599 72 477 -12 1061 1246 10 832 0 -600 487 320 -31 3448 3534 10 262 0 -601 120 17 30 1117 1235 10 0 236 -602 1 252 5 1103 1218 10 0 1000 -603 303 186 -15 5422 5531 10 435 0 -604 428 302 -11 4064 4183 10 726 0 -605 264 135 1 3525 3630 10 0 535 -606 223 178 -15 4566 4645 10 132 0 -607 174 347 -17 4047 4191 10 471 0 -608 238 123 24 3144 3225 10 0 486 -609 187 61 -23 2155 2325 10 421 0 -610 52 303 25 1750 1899 10 0 941 -611 89 185 16 2401 2517 10 0 44 -612 341 59 -23 3156 3282 10 991 0 -613 89 65 16 2863 3019 10 0 774 -614 495 355 -23 4981 5084 10 958 0 -615 368 452 -12 2673 2806 10 550 0 -616 164 473 26 1149 1340 10 0 464 -617 171 34 -26 4579 4685 10 663 0 -618 114 460 14 4371 4437 10 0 895 -619 224 3 10 2774 2869 10 0 570 -620 472 57 -24 5178 5301 10 630 0 -621 448 404 15 2407 2505 10 0 101 -622 390 120 -29 4036 4117 10 363 0 -623 386 225 13 3654 3815 10 0 733 -624 301 239 31 169 248 10 0 803 -625 115 296 -10 6112 6239 10 665 0 -626 69 266 -15 2997 3190 10 375 0 -627 115 395 -22 3274 3368 10 910 0 -628 68 53 16 2941 3088 10 0 418 -629 33 268 18 2751 2936 10 0 225 -630 450 45 24 2005 2144 10 0 620 -631 351 5 12 1997 2091 10 0 63 -632 351 148 -14 1838 1971 10 449 0 -633 80 458 -22 1515 1569 10 549 0 -634 60 5 -15 4166 4304 10 52 0 -635 10 407 36 1758 1838 10 0 176 -636 497 18 -14 4520 4641 10 659 0 -637 437 98 -21 4480 4549 10 769 0 -638 130 494 6 3036 3154 10 0 196 -639 391 202 14 517 674 10 0 308 -640 43 210 20 805 881 10 0 53 -641 381 457 28 1895 1991 10 0 532 -642 449 190 -19 4533 4707 10 342 0 -643 429 169 -22 3607 3735 10 328 0 -644 105 140 27 678 779 10 0 866 -645 282 10 30 5031 5181 10 0 962 -646 20 480 -2 2297 2385 10 264 0 -647 61 170 -23 4010 4156 10 938 0 -648 210 81 2 1566 1746 10 0 591 -649 87 311 7 609 784 10 0 292 -650 309 29 11 5161 5310 0 0 1002 -651 397 57 -7 5876 6052 10 724 0 -652 337 232 -23 6266 6418 10 935 0 -653 262 369 15 513 641 10 0 482 -654 41 232 16 846 917 10 0 736 -655 69 414 -23 5007 5220 10 587 0 -656 149 98 -7 4664 4777 10 283 0 -657 207 487 4 2767 2868 10 0 510 -658 366 260 -9 6048 6234 10 940 0 -659 497 54 14 3918 4027 10 0 636 -660 210 379 -6 2834 2957 10 231 0 -661 437 19 -19 4047 4185 10 853 0 -662 181 260 23 219 338 10 0 767 -663 125 61 26 2460 2554 10 0 617 -664 368 311 -8 3709 3820 10 34 0 -665 80 400 10 5772 5918 10 0 625 -666 75 118 21 1629 1763 10 0 306 -667 171 303 -5 6334 6501 10 768 0 -668 80 251 -21 1215 1334 10 7 0 -669 455 168 -24 3501 3554 10 310 0 -670 215 129 -19 4479 4589 10 913 0 -671 179 318 -36 4519 4567 10 134 0 -672 187 73 18 1154 1303 10 0 470 -673 394 47 5 1223 1401 10 0 488 -674 31 175 -37 1021 1071 10 934 0 -675 339 144 13 4424 4487 10 0 361 -676 492 34 5 3242 3362 10 0 416 -677 387 349 9 627 726 10 0 334 -678 142 372 18 605 699 10 0 405 -679 291 213 -28 5018 5163 10 216 0 -680 421 387 -20 3211 3318 10 153 0 -681 274 403 17 3526 3693 10 0 453 -682 434 359 -29 5585 5673 10 864 0 -683 257 57 -22 4913 5015 10 331 0 -684 428 202 -10 3627 3723 10 298 0 -685 355 174 -31 2847 2996 10 145 0 -686 46 389 22 1034 1140 10 0 889 -687 44 440 -8 3131 3298 10 124 0 -688 491 369 -29 2891 3065 10 755 0 -689 33 286 -19 6225 6263 10 277 0 -690 351 128 15 5010 5136 10 0 35 -691 485 428 -10 5977 6062 10 713 0 -692 273 149 -15 5987 6154 10 744 0 -693 447 184 -31 1699 1816 10 798 0 -694 386 245 16 1954 1998 10 0 189 -695 323 77 36 5590 5771 10 0 165 -696 21 70 -12 3065 3224 10 22 0 -697 9 101 -11 2678 2771 10 558 0 -698 71 304 19 2745 2888 10 0 304 -699 43 360 -20 3339 3463 10 54 0 -700 396 417 -13 3261 3340 10 972 0 -701 158 24 18 2419 2590 10 0 565 -702 164 320 -19 4355 4523 10 384 0 -703 195 386 13 508 666 10 0 266 -704 306 235 25 172 291 10 0 396 -705 66 314 26 723 835 10 0 406 -706 95 64 -17 3083 3164 10 295 0 -707 348 348 23 3705 3893 10 0 205 -708 495 83 32 1734 1912 10 0 443 -709 61 214 4 1309 1545 10 0 487 -710 240 240 -29 6820 6897 10 947 0 -711 140 137 -17 2276 2401 10 77 0 -712 242 106 -20 5097 5171 10 365 0 -713 392 491 10 4542 4641 10 0 691 -714 342 481 -25 5769 5871 10 578 0 -715 478 300 -2 3589 3648 10 352 0 -716 299 285 3 4991 5160 10 0 179 -717 481 84 -26 2011 2154 10 571 0 -718 271 128 -23 1378 1507 10 193 0 -719 484 224 -24 1204 1312 10 917 0 -720 441 177 -13 4022 4107 10 64 0 -721 46 163 -8 3734 3795 10 174 0 -722 493 493 -8 3457 3515 10 988 0 -723 253 74 -13 5375 5546 10 300 0 -724 390 34 7 4201 4401 10 0 651 -725 374 306 4 3992 4081 10 0 156 -726 436 295 11 2136 2211 10 0 604 -727 371 315 -35 4679 4767 10 254 0 -728 27 464 21 5135 5313 10 0 907 -729 3 471 -18 2828 2979 10 106 0 -730 418 269 -24 4835 4924 10 356 0 -731 90 477 18 1086 1136 10 0 920 -732 141 426 23 2110 2261 10 0 445 -733 418 251 -13 4770 4925 10 623 0 -734 57 183 -20 4375 4548 10 401 0 -735 29 462 -18 5256 5340 10 291 0 -736 55 318 -16 1250 1365 10 654 0 -737 18 24 32 2551 2596 10 0 909 -738 263 153 -27 1628 1791 10 491 0 -739 289 220 -21 145 248 10 116 0 -740 84 255 -22 1096 1280 10 395 0 -741 159 299 12 4067 4178 10 0 896 -742 485 104 21 3162 3314 10 0 537 -743 178 135 -6 6044 6187 10 348 0 -744 389 255 15 3143 3259 10 0 692 -745 457 280 -2 4013 4105 10 770 0 -746 171 24 -18 5575 5612 10 267 0 -747 330 371 -15 2213 2375 10 313 0 -748 10 237 -25 2463 2588 10 293 0 -749 458 213 -10 4509 4637 10 347 0 -750 257 391 -12 6547 6637 10 863 0 -751 482 184 -7 4437 4538 10 403 0 -752 222 331 -19 2158 2279 10 172 0 -753 332 5 -14 4110 4272 10 112 0 -754 47 208 30 924 1007 10 0 585 -755 489 437 29 2809 2965 10 0 688 -756 165 59 -32 3762 3901 10 951 0 -757 211 446 -27 4460 4647 10 902 0 -758 225 488 28 2540 2664 10 0 322 -759 355 485 10 5887 6066 10 0 539 -760 441 374 10 873 1034 10 0 24 -761 399 175 13 3020 3076 10 0 167 -762 103 464 -7 5092 5211 10 514 0 -763 244 13 24 4068 4156 10 0 383 -764 51 360 -18 4565 4712 10 139 0 -765 44 115 -22 944 1027 10 826 0 -766 312 453 6 2180 2337 10 0 1 -767 64 198 -23 4346 4482 10 662 0 -768 67 451 5 4875 4969 10 0 667 -769 371 71 21 1116 1298 10 0 637 -770 439 156 2 2101 2225 10 0 745 -771 105 474 27 1883 2003 10 0 175 -772 366 288 29 2747 2843 10 0 903 -773 415 207 -25 3588 3731 10 151 0 -774 58 39 -16 4615 4808 10 613 0 -775 197 202 29 4784 4966 10 0 336 -776 442 5 16 1262 1421 10 0 800 -777 71 12 -7 1177 1286 10 818 0 -778 74 215 10 871 1080 10 0 523 -779 347 192 -22 5930 6096 10 568 0 -780 178 420 -10 4290 4401 10 276 0 -781 186 135 -28 2849 3012 10 521 0 -782 176 199 28 302 416 10 0 385 -783 438 5 -30 2201 2311 10 847 0 -784 150 68 -16 1710 1793 10 899 0 -785 185 434 -10 2326 2383 10 391 0 -786 215 79 5 860 1048 10 0 808 -787 177 486 -17 6397 6501 10 330 0 -788 49 437 -1 1698 1842 10 89 0 -789 100 66 -25 5543 5775 10 204 0 -790 35 344 -1 3418 3607 10 208 0 -791 433 447 20 3179 3294 10 0 122 -792 372 97 13 838 992 10 0 91 -793 344 203 14 708 751 10 0 378 -794 423 170 -12 2022 2203 10 812 0 -795 171 188 -24 2481 2604 10 170 0 -796 64 5 14 4493 4658 10 0 891 -797 371 163 -21 3328 3414 10 404 0 -798 398 210 31 606 621 10 0 693 -799 48 437 4 3166 3384 10 0 130 -800 392 1 -16 2419 2543 10 776 0 -801 195 464 -3 6160 6291 10 431 0 -802 211 248 26 69 243 10 0 930 -803 293 228 -31 133 253 10 624 0 -804 23 235 -26 4086 4220 10 209 0 -805 213 185 21 233 366 10 0 104 -806 172 292 17 370 485 10 0 389 -807 228 287 21 97 248 10 0 516 -808 387 394 -5 4357 4544 10 786 0 -809 374 232 33 457 546 10 0 11 -810 48 366 29 2966 3098 10 0 933 -811 44 311 27 1631 1749 10 0 71 -812 447 272 12 1559 1631 10 0 794 -813 132 477 25 1310 1429 10 0 187 -814 80 117 -28 3328 3385 10 239 0 -815 11 403 -25 1416 1448 10 257 0 -816 144 220 35 365 517 10 0 475 -817 473 491 23 1654 1772 10 0 164 -818 210 219 7 134 271 10 0 777 -819 452 484 -17 5136 5212 10 121 0 -820 365 28 -9 1100 1165 10 850 0 -821 498 456 -5 5611 5757 10 85 0 -822 84 453 -13 4911 4993 10 21 0 -823 91 427 14 3548 3633 10 0 857 -824 178 72 23 3035 3139 10 0 173 -825 409 155 -36 675 807 10 220 0 -826 132 151 22 516 716 10 0 765 -827 136 430 14 2828 2973 10 0 501 -828 292 104 26 1227 1324 10 0 409 -829 443 167 -19 2211 2254 10 371 0 -830 321 149 -10 5683 5834 10 576 0 -831 235 13 27 1412 1578 10 0 309 -832 166 440 12 772 890 10 0 599 -833 112 433 29 946 1055 10 0 288 -834 452 172 -18 2443 2542 10 993 0 -835 37 281 17 1940 2125 10 0 588 -836 414 378 -30 1961 2117 10 314 0 -837 475 352 33 1231 1367 10 0 285 -838 400 71 -7 5522 5574 10 540 0 -839 286 244 -22 5150 5242 10 4 0 -840 429 389 -21 1700 1812 10 454 0 -841 92 76 4 4598 4634 10 0 166 -842 124 111 15 3160 3275 10 0 541 -843 268 458 24 2100 2204 10 0 533 -844 352 63 -24 4718 4827 10 515 0 -845 49 118 -18 4297 4394 10 43 0 -846 398 329 17 646 697 10 0 459 -847 382 9 30 1118 1176 10 0 783 -848 229 322 -14 6635 6767 10 149 0 -849 279 355 9 695 756 10 0 198 -850 266 221 9 80 185 10 0 820 -851 142 80 -8 1980 2076 10 547 0 -852 359 287 24 396 524 10 0 472 -853 482 104 19 3240 3339 10 0 661 -854 284 457 17 6018 6090 10 0 964 -855 64 294 12 4402 4528 10 0 919 -856 404 59 -5 3656 3768 10 424 0 -857 68 160 -14 4579 4628 10 823 0 -858 211 411 15 4631 4662 10 0 60 -859 30 155 -14 5129 5235 10 563 0 -860 240 34 -28 6247 6349 10 325 0 -861 107 374 -40 3642 3792 10 931 0 -862 404 140 8 5063 5126 10 0 105 -863 436 467 12 2950 3059 10 0 750 -864 421 386 29 3310 3404 10 0 682 -865 182 480 -5 1457 1581 10 316 0 -866 9 233 -27 1227 1343 10 644 0 -867 110 251 23 2007 2095 10 0 321 -868 19 38 15 3376 3521 10 0 527 -869 46 248 -23 3237 3394 10 286 0 -870 308 199 14 5986 6201 0 0 1005 -871 423 221 9 1022 1164 10 0 79 -872 313 391 5 600 716 10 0 301 -873 413 345 -17 4872 4993 10 503 0 -874 278 450 -8 5504 5615 10 221 0 -875 94 497 -22 3132 3246 10 327 0 -876 7 382 -9 3053 3231 10 548 0 -877 493 111 26 2162 2286 10 0 26 -878 392 87 -5 4730 4851 10 500 0 -879 13 394 15 1470 1630 10 0 135 -880 259 301 25 383 528 10 0 358 -881 351 233 -14 5692 5811 10 542 0 -882 313 493 -10 4784 4880 10 315 0 -883 65 62 15 3883 4048 10 0 118 -884 417 212 -11 3665 3736 10 928 0 -885 450 194 -12 2495 2623 10 15 0 -886 470 138 16 5531 5704 10 0 100 -887 190 267 36 7024 7126 0 0 1004 -888 248 214 -16 5955 5999 10 425 0 -889 50 383 -22 1056 1145 10 686 0 -890 244 422 14 2134 2288 10 0 103 -891 60 29 -14 5461 5560 10 796 0 -892 5 445 -21 1230 1377 10 364 0 -893 490 276 -15 961 1061 10 73 0 -894 441 100 -11 3496 3611 10 450 0 -895 162 388 -14 4545 4584 10 618 0 -896 244 277 -12 5204 5326 10 741 0 -897 406 408 15 5799 5971 10 0 86 -898 265 240 9 21 123 10 0 429 -899 130 186 16 513 656 10 0 784 -900 382 110 -20 4427 4592 10 921 0 -901 142 14 18 3349 3452 10 0 237 -902 352 487 27 3600 3735 10 0 757 -903 307 52 -29 3703 3781 10 772 0 -904 418 399 20 1739 1882 10 0 388 -905 196 56 -12 2398 2597 10 960 0 -906 66 31 25 4214 4293 10 0 967 -907 90 496 -21 5617 5665 10 728 0 -908 480 136 22 937 1116 10 0 259 -909 65 82 -32 2966 3071 10 737 0 -910 48 293 22 1120 1208 10 0 627 -911 105 181 -22 6144 6225 10 182 0 -912 215 282 -35 5764 5879 10 368 0 -913 257 133 19 3418 3600 10 0 670 -914 77 465 -11 1029 1179 10 228 0 -915 43 135 31 882 1013 10 0 138 -916 27 444 22 4290 4472 10 0 93 -917 357 290 24 359 554 10 0 719 -918 38 15 3 4314 4535 10 0 505 -919 80 337 -12 4483 4590 10 855 0 -920 36 451 -18 3538 3692 10 731 0 -921 291 251 20 129 200 10 0 900 -922 195 111 15 3991 4114 10 0 243 -923 383 17 -9 3765 3879 10 319 0 -924 53 466 9 1332 1468 10 0 458 -925 114 102 21 2058 2121 10 0 460 -926 350 199 21 4787 4945 10 0 190 -927 405 349 15 2084 2215 10 0 109 -928 472 248 11 3363 3432 10 0 884 -929 333 293 27 2494 2563 10 0 50 -930 174 397 -26 4978 5099 10 802 0 -931 2 264 40 2617 2739 10 0 861 -932 7 82 25 1643 1770 10 0 10 -933 34 329 -29 4172 4292 10 810 0 -934 158 179 37 373 557 10 0 674 -935 421 499 23 5363 5519 10 0 652 -936 345 431 12 1372 1507 10 0 115 -937 370 262 -21 4371 4545 10 423 0 -938 77 172 23 3160 3244 10 0 647 -939 87 51 -26 2052 2181 10 258 0 -940 468 352 9 3031 3235 10 0 658 -941 63 420 -25 2071 2206 10 610 0 -942 347 184 -36 4316 4433 10 546 0 -943 206 174 14 3201 3318 10 0 477 -944 209 212 18 6142 6200 0 0 1001 -945 466 362 -27 4595 4744 10 99 0 -946 201 278 13 170 282 10 0 307 -947 206 172 29 3131 3293 10 0 710 -948 471 94 30 3994 4117 10 0 65 -949 331 134 -12 4479 4631 10 354 0 -950 274 261 -5 6817 6959 10 252 0 -951 219 215 32 116 259 10 0 756 -952 349 76 -21 4121 4244 10 227 0 -953 86 189 21 906 1028 10 0 987 -954 336 493 20 5960 6103 10 0 154 -955 7 194 29 3784 3947 10 0 125 -956 492 335 -9 3316 3430 10 159 0 -957 248 386 22 1510 1636 10 0 467 -958 463 406 23 3439 3540 10 0 614 -959 199 438 -12 5429 5575 10 413 0 -960 135 30 12 1883 2032 10 0 905 -961 447 267 -13 3910 4046 10 242 0 -962 235 33 -30 5315 5501 10 645 0 -963 63 155 7 3856 3981 10 0 400 -964 294 421 -17 6292 6431 10 854 0 -965 318 99 -19 4854 4969 10 462 0 -966 21 146 21 1941 2073 10 0 48 -967 30 7 -25 4734 4895 10 906 0 -968 410 399 25 983 1007 10 0 341 -969 405 187 34 4994 5131 10 0 97 -970 109 56 27 905 1013 10 0 16 -971 212 47 20 3234 3295 10 0 157 -972 479 387 13 1620 1680 10 0 700 -973 167 291 -15 6546 6649 10 438 0 -974 259 498 -23 4294 4425 10 483 0 -975 461 182 13 2540 2612 10 0 233 -976 277 428 7 1931 2112 10 0 978 -977 290 328 7 555 714 10 0 297 -978 146 313 -7 4793 4890 10 976 0 -979 40 304 -32 4559 4718 10 129 0 -980 56 268 -26 4268 4364 10 399 0 -981 104 28 -15 5877 6027 10 240 0 -982 370 493 -7 2283 2407 10 128 0 -983 136 265 12 390 530 10 0 397 -984 247 306 33 182 266 10 0 476 -985 241 38 16 2127 2246 10 0 55 -986 180 162 9 653 855 10 0 41 -987 253 118 -21 2191 2307 10 953 0 -988 413 391 8 876 981 10 0 722 -989 380 350 15 3462 3589 10 0 474 -990 391 112 -28 4039 4084 10 136 0 -991 86 199 23 1114 1228 10 0 612 -992 91 326 -4 3868 3958 10 160 0 -993 287 256 18 61 239 10 0 834 -994 203 211 20 5241 5330 10 0 553 -995 79 80 -23 5527 5650 10 545 0 -996 32 319 21 1621 1703 10 0 126 -997 167 445 7 5656 5761 10 0 177 -998 439 237 -8 3811 3817 10 102 0 -999 373 418 6 5034 5161 10 0 58 -1000 26 342 -5 1298 1390 10 602 0 -1001 209 212 -18 6142 6200 10 944 0 -1002 309 29 -11 5161 5310 10 650 0 -1003 307 249 -10 5511 5622 10 19 0 -1004 190 267 -36 7024 7126 10 887 0 -1005 308 199 -14 5986 6201 10 870 0 -1006 195 273 -22 156 320 10 349 0 diff --git a/jsprit-instances/instances/lilim/1000/LR21010.txt b/jsprit-instances/instances/lilim/1000/LR21010.txt deleted file mode 100644 index c2c8d11bd..000000000 --- a/jsprit-instances/instances/lilim/1000/LR21010.txt +++ /dev/null @@ -1,1006 +0,0 @@ -250 1000 1 -0 250 250 0 0 7697 0 0 0 -1 228 399 14 2152 2659 10 0 747 -2 325 56 13 3028 3463 10 0 948 -3 290 145 -24 4953 5419 10 781 0 -4 340 291 -13 1697 2187 10 61 0 -5 370 382 -21 3388 3802 10 364 0 -6 273 255 -27 5782 6275 10 693 0 -7 36 301 21 652 1108 10 0 938 -8 117 178 -21 4282 4776 10 225 0 -9 295 283 -17 3373 3894 10 33 0 -10 57 43 -15 3926 4381 10 883 0 -11 436 123 40 665 1136 10 0 702 -12 48 162 15 690 1168 10 0 789 -13 222 499 -45 3163 3720 10 175 0 -14 376 92 -24 3794 4251 10 990 0 -15 437 90 -9 2115 2684 10 68 0 -16 3 23 11 1432 1819 10 0 147 -17 94 40 24 4124 4541 10 0 463 -18 398 476 -23 1470 1994 10 817 0 -19 307 249 -3 5329 5803 10 730 0 -20 179 286 8 1144 1705 10 0 476 -21 0 356 13 4168 4642 10 0 426 -22 143 158 12 387 833 10 0 644 -23 413 476 -19 4578 4975 10 517 0 -24 371 488 -22 2138 2643 10 982 0 -25 415 118 19 650 1202 10 0 253 -26 440 77 14 3453 3971 10 0 724 -27 261 201 15 5895 6337 0 0 1003 -28 490 286 29 1912 2385 10 0 353 -29 309 161 23 2160 2627 10 0 520 -30 39 162 -11 2052 2589 10 62 0 -31 361 178 -12 3733 4167 10 309 0 -32 261 138 1 2279 2788 10 0 922 -33 447 383 17 696 1206 10 0 9 -34 346 354 8 3075 3584 10 0 664 -35 461 195 -23 5408 5873 10 720 0 -36 187 263 35 70 445 10 0 610 -37 130 247 17 264 697 10 0 754 -38 328 491 21 2544 3002 10 0 322 -39 161 276 8 375 813 10 0 910 -40 365 74 -9 3230 3677 10 574 0 -41 168 109 10 589 1166 10 0 473 -42 111 192 11 4624 5091 10 0 414 -43 87 213 -12 2338 2787 10 983 0 -44 45 166 22 3837 4389 10 0 859 -45 62 94 16 3641 4084 10 0 918 -46 348 476 19 4583 5110 10 0 854 -47 64 437 -2 3540 3925 10 307 0 -48 56 75 -15 5580 6041 10 696 0 -49 24 259 -18 1294 1786 10 345 0 -50 295 247 -31 5070 5478 10 541 0 -51 6 53 8 2183 2633 10 0 407 -52 15 11 -31 3649 4084 10 915 0 -53 179 497 -10 5493 5916 10 203 0 -54 67 352 -15 1310 1795 10 879 0 -55 317 45 -11 2484 2902 10 502 0 -56 40 278 10 4260 4695 10 0 667 -57 33 278 -26 5812 6205 10 209 0 -58 322 290 -18 5735 6216 10 229 0 -59 159 226 16 164 589 10 0 953 -60 208 445 22 5169 5610 10 0 907 -61 453 360 13 696 1152 10 0 4 -62 34 169 11 1703 2293 10 0 30 -63 436 25 -5 4963 5415 10 500 0 -64 393 98 13 2801 3339 10 0 695 -65 466 96 -9 5385 5800 10 871 0 -66 366 390 23 5102 5563 10 0 390 -67 303 78 12 488 951 10 0 432 -68 374 116 9 2124 2694 10 0 15 -69 424 288 13 4049 4530 10 0 577 -70 191 84 13 3278 3778 10 0 605 -71 59 276 -32 3378 3881 10 180 0 -72 215 293 13 55 517 10 0 90 -73 343 276 15 96 690 10 0 513 -74 488 173 -7 4623 5178 10 403 0 -75 452 110 14 1187 1656 10 0 659 -76 153 244 5 277 705 10 0 257 -77 176 200 -22 2005 2656 10 385 0 -78 498 171 12 4856 5316 10 0 568 -79 492 188 33 2660 3183 10 0 102 -80 177 156 25 478 979 10 0 289 -81 398 49 21 2953 3501 10 0 636 -82 497 296 14 2294 2726 10 0 242 -83 276 84 -23 2540 3030 10 193 0 -84 128 113 22 1261 1761 10 0 591 -85 422 498 -10 2546 3110 10 276 0 -86 460 424 -27 5618 6139 10 821 0 -87 246 314 -23 5596 6086 10 115 0 -88 0 422 -6 3106 3583 10 231 0 -89 166 247 1 139 533 10 0 765 -90 311 422 -13 3774 4249 10 72 0 -91 392 95 16 2866 3384 10 0 223 -92 460 117 -13 1928 2351 10 429 0 -93 28 467 -29 5161 5699 10 833 0 -94 375 145 -14 3489 4066 10 528 0 -95 240 255 -11 6294 6713 10 689 0 -96 440 436 -21 3405 3850 10 197 0 -97 454 201 16 5063 5497 10 0 652 -98 407 35 11 4968 5459 10 0 838 -99 420 383 -8 3750 4226 10 123 0 -100 264 180 -32 6521 7044 10 165 0 -101 440 294 -15 3660 4142 10 680 0 -102 500 228 -33 2948 3427 10 79 0 -103 144 331 -14 3539 4031 10 827 0 -104 98 2 -2 2175 2678 10 777 0 -105 461 186 -24 5874 6344 10 356 0 -106 68 450 18 2355 2826 10 0 762 -107 153 192 -24 3205 3840 10 457 0 -108 34 239 16 721 1150 10 0 236 -109 465 367 -17 3893 4441 10 121 0 -110 208 488 22 1700 2240 10 0 135 -111 93 413 -19 650 1160 10 405 0 -112 371 332 14 1906 2450 10 0 937 -113 231 167 15 97 584 10 0 339 -114 179 75 -27 2798 3241 10 831 0 -115 196 489 23 3918 4443 10 0 87 -116 280 245 21 30 420 10 0 856 -117 108 37 23 2020 2495 10 0 746 -118 1 101 8 4885 5293 10 0 240 -119 420 80 -10 4205 4689 10 298 0 -120 38 190 -26 978 1421 10 802 0 -121 470 405 17 3528 3998 10 0 109 -122 448 397 -29 3296 3748 10 755 0 -123 471 427 8 3059 3592 10 0 99 -124 146 376 8 782 1213 10 0 530 -125 12 358 -25 4692 5222 10 292 0 -126 175 422 -33 5612 6079 10 984 0 -127 297 131 25 4494 4949 10 0 743 -128 457 492 7 1933 2251 10 0 958 -129 69 423 -22 3006 3534 10 957 0 -130 97 288 -3 4940 5453 10 607 0 -131 172 314 9 2036 2447 10 0 780 -132 170 347 15 1526 2081 10 0 210 -133 103 123 8 1783 2255 10 0 869 -134 154 374 -10 3520 4095 10 445 0 -135 318 497 -22 3245 3706 10 110 0 -136 330 147 28 3250 3658 10 0 234 -137 241 180 -23 6611 7066 10 273 0 -138 174 67 -18 4935 5262 10 361 0 -139 235 288 18 40 437 10 0 766 -140 94 192 -15 4112 4650 10 397 0 -141 232 101 24 1237 1652 10 0 179 -142 28 180 34 1329 1876 10 0 174 -143 64 135 -12 3224 3841 10 387 0 -144 174 376 -11 5536 5939 10 895 0 -145 293 174 -9 165 534 10 850 0 -146 218 12 -14 1961 2511 10 793 0 -147 110 122 -11 5900 6290 10 16 0 -148 459 53 -20 4296 4801 10 357 0 -149 173 474 -33 4921 5479 10 974 0 -150 135 400 20 962 1546 10 0 757 -151 497 266 -2 2832 3268 10 770 0 -152 380 194 3 2684 3145 10 0 926 -153 495 227 20 1212 1660 10 0 441 -154 268 351 -26 6516 7004 10 964 0 -155 213 399 -34 725 1267 10 250 0 -156 448 414 23 4731 5170 10 0 935 -157 327 139 13 4858 5320 10 0 324 -158 151 81 -32 6039 6544 10 951 0 -159 425 448 9 2992 3484 10 0 819 -160 92 259 -35 1449 1866 10 368 0 -161 59 388 -18 2428 2995 10 815 0 -162 468 360 16 919 1394 10 0 707 -163 332 459 -16 1306 1764 10 346 0 -164 469 489 -26 2096 2468 10 481 0 -165 248 176 32 5414 5918 10 0 100 -166 174 41 -23 4993 5555 10 867 0 -167 343 205 26 2847 3412 10 0 969 -168 154 392 9 445 926 10 0 771 -169 92 18 -2 4307 4806 10 579 0 -170 250 328 -14 837 1272 10 583 0 -171 88 484 -15 5794 6251 10 474 0 -172 360 488 19 1084 1560 10 0 221 -173 156 65 22 3979 4439 10 0 326 -174 18 225 -34 2612 3039 10 142 0 -175 152 476 45 1854 2447 10 0 13 -176 176 470 -9 1976 2518 10 562 0 -177 195 450 16 5766 6242 10 0 801 -178 466 149 -2 4575 5033 10 642 0 -179 221 269 -24 4883 5361 10 141 0 -180 105 137 32 1551 2187 10 0 71 -181 284 319 17 3165 3489 10 0 189 -182 41 120 -20 2615 3073 10 640 0 -183 263 418 25 999 1348 10 0 301 -184 218 271 -18 6117 6593 10 672 0 -185 365 119 30 1342 1832 10 0 443 -186 89 322 21 3889 4396 10 0 338 -187 180 283 -10 2765 3305 10 752 0 -188 385 17 -36 3089 3501 10 488 0 -189 401 314 -17 3711 4221 10 181 0 -190 245 176 20 4737 5261 10 0 896 -191 251 238 27 12 486 10 0 828 -192 139 438 -18 706 1125 10 678 0 -193 236 126 23 239 759 10 0 83 -194 61 441 -26 1971 2498 10 616 0 -195 405 454 -23 5099 5445 10 483 0 -196 111 392 18 4467 5005 10 0 566 -197 373 421 21 761 1258 10 0 96 -198 247 443 17 1121 1642 10 0 282 -199 322 406 17 3194 3560 10 0 260 -200 412 478 -12 3680 4118 10 389 0 -201 374 346 -8 1474 2015 10 988 0 -202 122 422 -16 5614 6160 10 249 0 -203 261 359 10 231 645 10 0 53 -204 173 182 25 170 652 10 0 492 -205 398 341 33 3584 4050 10 0 207 -206 413 127 28 3136 3630 10 0 952 -207 325 311 -33 5147 5552 10 205 0 -208 80 357 -26 1914 2450 10 337 0 -209 67 378 26 1713 2171 10 0 57 -210 216 341 -15 2473 2879 10 132 0 -211 498 457 -23 3497 3928 10 592 0 -212 44 344 -22 4131 4625 10 327 0 -213 352 481 15 4983 5415 10 0 355 -214 237 420 -13 5142 5652 10 567 0 -215 389 43 -19 1398 1887 10 803 0 -216 292 136 28 2926 3438 10 0 422 -217 426 38 -24 2236 2753 10 630 0 -218 245 461 8 2394 2920 10 0 468 -219 415 253 -12 1280 1773 10 550 0 -220 298 264 36 50 490 10 0 846 -221 307 412 -19 1435 1914 10 172 0 -222 53 204 8 3964 4595 10 0 400 -223 480 152 -16 3902 4390 10 91 0 -224 262 97 17 3651 4046 10 0 617 -225 83 169 21 2898 3435 10 0 8 -226 377 432 20 3160 3611 10 0 681 -227 390 249 -33 2161 2613 10 893 0 -228 132 479 11 834 1227 10 0 549 -229 359 246 18 5517 5986 10 0 58 -230 314 205 -14 5894 6440 10 870 0 -231 124 448 6 1267 1801 10 0 88 -232 0 188 -40 3537 4040 10 931 0 -233 343 166 28 3282 3845 10 0 534 -234 482 141 -28 3907 4299 10 136 0 -235 162 306 22 356 717 10 0 811 -236 24 71 -16 1203 1685 10 108 0 -237 188 119 44 3762 4157 10 0 487 -238 100 85 14 1276 1652 10 0 582 -239 103 177 -22 2292 2840 10 395 0 -240 26 67 -8 5078 5576 10 118 0 -241 164 332 -20 4960 5397 10 572 0 -242 385 285 -14 3263 3801 10 82 0 -243 209 68 -17 6100 6565 10 507 0 -244 149 341 6 1451 1901 10 0 516 -245 415 95 -16 4488 5046 10 637 0 -246 167 488 -13 854 1266 10 703 0 -247 413 493 -20 4693 5172 10 791 0 -248 439 222 22 3765 4192 10 0 779 -249 150 484 16 2365 2756 10 0 202 -250 299 353 34 251 661 10 0 155 -251 273 300 30 55 479 10 0 872 -252 402 277 -19 5595 6033 10 961 0 -253 239 15 -19 2233 2718 10 25 0 -254 363 225 35 3249 3718 10 0 745 -255 65 343 38 608 1171 10 0 979 -256 351 60 15 582 1220 10 0 985 -257 60 246 -5 454 1066 10 76 0 -258 144 35 26 750 1167 10 0 427 -259 463 253 23 4006 4491 10 0 945 -260 332 382 -17 3942 4262 10 199 0 -261 408 318 15 2342 2922 10 0 388 -262 452 206 31 1774 2283 10 0 715 -263 471 368 19 1556 1989 10 0 927 -264 93 490 2 1350 1803 10 0 799 -265 241 402 11 3930 4389 10 0 997 -266 60 231 -5 3944 4383 10 466 0 -267 172 66 -13 4990 5552 10 300 0 -268 404 207 -29 3452 3952 10 864 0 -269 286 356 30 211 685 10 0 575 -270 489 338 -13 5372 5926 10 451 0 -271 334 481 32 1131 1633 10 0 615 -272 26 442 -7 5253 5619 10 788 0 -273 226 175 23 6612 7057 10 0 137 -274 488 3 -37 1395 1929 10 308 0 -275 178 150 33 2329 2844 10 0 499 -276 371 423 10 550 1138 10 0 85 -277 5 224 -19 4022 4535 10 698 0 -278 94 344 26 2548 3030 10 0 764 -279 153 235 10 144 641 10 0 697 -280 12 367 27 1161 1564 10 0 561 -281 217 357 -8 5488 5991 10 303 0 -282 255 487 -17 1377 1926 10 198 0 -283 149 214 7 1785 2191 10 0 608 -284 169 305 21 479 935 10 0 889 -285 487 446 -12 5194 5648 10 554 0 -286 267 374 23 2274 2652 10 0 713 -287 360 294 -18 5511 5950 10 311 0 -288 185 431 15 1389 1827 10 0 544 -289 325 210 -25 3542 4045 10 80 0 -290 175 352 -14 6500 6941 10 618 0 -291 76 462 -13 3652 4116 10 484 0 -292 19 273 25 3877 4376 10 0 125 -293 72 227 -20 2114 2516 10 469 0 -294 213 283 14 5692 6196 10 0 912 -295 130 140 -28 563 1109 10 782 0 -296 274 442 17 4079 4572 10 0 959 -297 337 41 -27 3816 4322 10 367 0 -298 372 39 10 2714 3194 10 0 119 -299 269 112 -16 4812 5409 10 899 0 -300 224 56 13 4542 5069 10 0 267 -301 340 416 -25 1095 1594 10 183 0 -302 13 214 21 5242 5707 10 0 394 -303 230 320 8 4538 5118 10 0 281 -304 6 196 -21 4641 5104 10 666 0 -305 87 3 13 5572 6012 10 0 995 -306 133 202 -4 1634 2170 10 709 0 -307 235 316 2 2417 2950 10 0 47 -308 435 180 37 660 1256 10 0 274 -309 173 65 12 1592 2116 10 0 31 -310 245 42 -21 2067 2432 10 769 0 -311 384 149 18 4544 5153 10 0 287 -312 51 286 14 5653 6138 10 0 625 -313 267 290 15 43 482 10 0 555 -314 453 318 30 1307 1802 10 0 904 -315 189 402 10 1967 2441 10 0 359 -316 210 276 5 47 405 10 0 1000 -317 120 261 5 3038 3429 10 0 329 -318 35 263 -23 878 1404 10 991 0 -319 429 59 9 1681 2109 10 0 651 -320 330 308 24 4508 4976 10 0 733 -321 58 391 -21 3313 3866 10 996 0 -322 260 472 -21 3981 4427 10 38 0 -323 217 333 26 1459 1950 10 0 501 -324 335 46 -13 5203 5651 10 157 0 -325 198 85 28 906 1315 10 0 987 -326 138 28 -22 4208 4684 10 173 0 -327 29 336 22 1199 1574 10 0 212 -328 200 27 22 1935 2383 10 0 521 -329 157 269 -5 6139 6591 10 317 0 -330 177 404 17 4873 5345 10 0 930 -331 202 28 22 3523 4071 10 0 348 -332 366 334 5 1453 1949 10 0 529 -333 149 458 13 4488 4943 10 0 372 -334 481 454 14 1077 1607 10 0 863 -335 377 385 -13 3309 3740 10 700 0 -336 217 207 -29 5382 5797 10 775 0 -337 96 346 26 566 1036 10 0 208 -338 224 320 -21 4951 5439 10 186 0 -339 206 97 -15 1567 2137 10 113 0 -340 438 127 -31 3617 4031 10 894 0 -341 494 468 31 1270 1669 10 0 551 -342 494 165 19 2277 2678 10 0 486 -343 5 281 -21 5384 5709 10 790 0 -344 441 60 -15 5629 6161 10 923 0 -345 14 232 18 1046 1515 10 0 49 -346 288 439 16 937 1370 10 0 163 -347 420 224 10 1509 2042 10 0 614 -348 267 162 -22 5682 6031 10 331 0 -349 195 273 22 59 470 10 0 660 -350 233 230 20 26 513 10 0 609 -351 382 360 -36 562 982 10 436 0 -352 406 460 2 2662 3211 10 0 380 -353 499 316 -29 2255 2840 10 28 0 -354 246 407 12 1077 1536 10 0 954 -355 283 454 -15 4878 5363 10 213 0 -356 426 231 24 3992 4356 10 0 105 -357 432 2 20 1656 2197 10 0 148 -358 404 439 3 745 1286 10 0 543 -359 397 477 -10 4693 5153 10 315 0 -360 44 140 11 3242 3825 10 0 470 -361 330 138 18 4241 4756 10 0 138 -362 39 153 26 3022 3480 10 0 814 -363 397 153 29 3379 3800 10 0 622 -364 226 316 21 70 560 10 0 5 -365 354 156 -10 3152 3627 10 598 0 -366 201 66 -27 4480 4974 10 756 0 -367 389 156 27 2704 3141 10 0 297 -368 134 211 35 335 748 10 0 160 -369 386 154 -14 4221 4706 10 753 0 -370 335 99 -24 4699 5168 10 515 0 -371 356 256 19 214 635 10 0 834 -372 240 362 -13 5513 5917 10 333 0 -373 412 100 1 1944 2283 10 0 478 -374 394 322 -15 3878 4441 10 989 0 -375 48 150 15 2427 2934 10 0 498 -376 225 121 -14 2734 3254 10 437 0 -377 102 422 23 729 1201 10 0 731 -378 339 41 6 1623 2142 10 0 526 -379 440 201 29 3386 3874 10 0 537 -380 411 379 -2 4573 5093 10 352 0 -381 219 210 14 50 591 10 0 601 -382 250 441 -31 2856 3310 10 865 0 -383 210 29 -30 4023 4503 10 795 0 -384 178 302 19 3417 3796 10 0 593 -385 148 208 22 1951 2381 10 0 77 -386 225 369 38 185 788 10 0 732 -387 16 287 12 922 1364 10 0 143 -388 450 416 -15 2115 2620 10 261 0 -389 287 397 12 2077 2558 10 0 200 -390 285 247 -23 4952 5367 10 66 0 -391 351 481 10 1083 1612 10 0 874 -392 243 408 15 5530 6060 10 0 539 -393 137 377 -12 412 948 10 832 0 -394 33 152 -21 5083 5597 10 302 0 -395 68 303 22 726 1165 10 0 239 -396 456 113 -24 4691 5246 10 684 0 -397 134 276 15 316 869 10 0 140 -398 26 221 -18 3787 4304 10 629 0 -399 79 257 26 3613 4132 10 0 767 -400 181 185 -8 6231 6799 10 222 0 -401 104 349 -25 3857 4336 10 510 0 -402 267 174 -5 6296 6770 10 602 0 -403 475 267 7 2958 3399 10 0 74 -404 385 239 21 2915 3489 10 0 511 -405 95 382 19 715 1254 10 0 111 -406 67 190 -14 4494 5012 10 504 0 -407 32 94 -8 3519 4043 10 51 0 -408 401 164 13 2334 2756 10 0 475 -409 376 113 -30 1895 2339 10 632 0 -410 409 255 -11 5871 6428 10 998 0 -411 228 260 -19 6253 6712 10 495 0 -412 363 34 -26 938 1361 10 571 0 -413 274 441 12 2593 3083 10 0 585 -414 146 188 -11 4814 5186 10 42 0 -415 212 186 -20 6721 7172 10 647 0 -416 432 66 -19 4113 4577 10 853 0 -417 83 300 26 1832 2285 10 0 857 -418 51 89 19 4652 5133 10 0 891 -419 379 486 -25 2578 2916 10 578 0 -420 440 284 -12 3170 3763 10 479 0 -421 175 239 23 82 524 10 0 556 -422 282 1 -28 4003 4457 10 216 0 -423 268 113 21 2580 2977 10 0 679 -424 480 131 5 2517 3104 10 0 975 -425 429 67 -11 2748 3229 10 450 0 -426 162 301 -13 6255 6770 10 21 0 -427 281 96 -26 4296 4831 10 258 0 -428 495 199 25 1231 1583 10 0 829 -429 372 115 13 1229 1801 10 0 92 -430 396 83 -22 6210 6602 10 908 0 -431 239 486 3 5694 6282 10 0 848 -432 288 70 -12 521 1032 10 67 0 -433 66 163 6 1429 1855 10 0 804 -434 470 417 11 2762 3253 10 0 722 -435 226 423 -25 608 1088 10 880 0 -436 342 319 36 274 647 10 0 351 -437 174 122 14 2231 2635 10 0 376 -438 49 353 -2 5554 6135 10 933 0 -439 448 495 40 1356 1833 10 0 808 -440 13 465 -9 2931 3377 10 924 0 -441 489 159 -20 5528 6013 10 153 0 -442 311 203 -26 2666 3235 10 877 0 -443 480 119 -30 2342 2806 10 185 0 -444 442 153 -11 4574 5055 10 928 0 -445 148 462 10 2759 3175 10 0 134 -446 233 87 18 852 1289 10 0 718 -447 323 34 13 5098 5540 10 0 597 -448 84 377 -11 3535 3996 10 627 0 -449 292 32 14 755 1199 10 0 619 -450 418 75 11 1545 2159 10 0 425 -451 451 305 13 607 1060 10 0 270 -452 225 269 30 4912 5374 10 0 557 -453 272 420 -9 5361 5846 10 548 0 -454 318 280 21 104 491 10 0 594 -455 250 57 26 2824 3281 10 0 525 -456 77 372 -17 670 1024 10 806 0 -457 385 58 24 1471 1888 10 0 107 -458 44 496 -11 1434 1901 10 914 0 -459 460 328 -4 701 1172 10 493 0 -460 67 24 -4 3945 4323 10 706 0 -461 91 27 -23 4508 5066 10 967 0 -462 360 284 19 2479 2973 10 0 929 -463 82 183 -24 4138 4796 10 17 0 -464 153 362 -14 4452 4958 10 596 0 -465 52 412 -21 5478 5889 10 728 0 -466 32 191 5 2154 2655 10 0 266 -467 325 147 -15 4576 5038 10 690 0 -468 328 458 -8 2856 3406 10 218 0 -469 133 273 20 215 739 10 0 293 -470 147 30 -11 4220 4770 10 360 0 -471 131 246 -29 3110 3667 10 947 0 -472 433 319 11 5359 5771 0 0 1002 -473 168 59 -10 1273 1775 10 41 0 -474 218 403 15 5086 5588 10 0 171 -475 295 89 -13 2786 3269 10 408 0 -476 118 314 -8 1209 1611 10 20 0 -477 251 63 -14 3744 4276 10 668 0 -478 388 44 -1 4374 4793 10 373 0 -479 381 328 12 2677 3181 10 0 420 -480 132 32 18 2931 3464 10 0 913 -481 334 403 26 468 929 10 0 164 -482 83 290 14 2248 2733 10 0 524 -483 411 396 23 3505 3976 10 0 195 -484 243 402 13 1430 1931 10 0 291 -485 52 18 -16 3264 3711 10 654 0 -486 265 0 -19 3410 3879 10 342 0 -487 268 288 -44 4880 5376 10 237 0 -488 476 61 36 1610 2099 10 0 188 -489 283 438 3 756 1215 10 0 843 -490 191 215 17 69 480 10 0 955 -491 253 50 27 739 1187 10 0 943 -492 71 282 -25 2378 2875 10 204 0 -493 297 304 4 71 591 10 0 459 -494 244 368 25 1517 1916 10 0 992 -495 80 279 19 4416 4966 10 0 411 -496 488 96 22 4112 4537 10 0 580 -497 142 30 -12 4826 5261 10 851 0 -498 68 240 -15 3017 3459 10 375 0 -499 193 138 -33 2439 2968 10 275 0 -500 451 62 5 975 1403 10 0 63 -501 138 406 -26 4720 5127 10 323 0 -502 306 42 11 1780 2153 10 0 55 -503 247 219 17 31 469 10 0 648 -504 98 29 14 4007 4486 10 0 406 -505 102 6 -15 5676 6111 10 868 0 -506 142 360 -25 5956 6420 10 646 0 -507 172 24 17 5638 6100 10 0 243 -508 352 241 5 2999 3459 10 0 884 -509 486 324 15 2911 3365 10 0 751 -510 133 455 25 3085 3499 10 0 401 -511 440 292 -21 3592 4049 10 404 0 -512 364 173 30 521 1040 10 0 671 -513 442 289 -15 611 1037 10 73 0 -514 48 412 -24 3933 4444 10 687 0 -515 344 70 24 4385 4901 10 0 370 -516 78 406 -6 3682 4122 10 244 0 -517 329 456 19 794 1318 10 0 23 -518 157 38 -7 4024 4478 10 649 0 -519 374 260 -18 6964 7355 10 773 0 -520 297 283 -23 5220 5696 10 29 0 -521 210 113 -22 2551 3091 10 328 0 -522 215 434 -9 594 1067 10 849 0 -523 262 92 -5 2359 2804 10 786 0 -524 140 108 -14 4120 4570 10 482 0 -525 235 108 -26 4155 4602 10 455 0 -526 210 133 -6 2607 3021 10 378 0 -527 25 53 23 3829 4452 10 0 774 -528 339 113 14 2795 3410 10 0 94 -529 394 310 -5 4217 4691 10 332 0 -530 126 391 -8 889 1412 10 124 0 -531 343 34 -12 2731 3187 10 631 0 -532 354 416 -7 2565 2990 10 976 0 -533 202 391 30 2309 2800 10 0 560 -534 367 97 -28 3786 4237 10 233 0 -535 188 151 7 4997 5497 10 0 710 -536 111 178 -8 358 894 10 547 0 -537 456 157 -29 5617 6143 10 379 0 -538 441 7 20 1364 1888 10 0 620 -539 270 337 -15 6954 7428 10 392 0 -540 323 29 -7 4347 4873 10 586 0 -541 200 78 31 3810 4252 10 0 50 -542 330 281 -9 5117 5647 10 677 0 -543 438 488 -3 1114 1624 10 358 0 -544 161 416 -15 3853 4357 10 288 0 -545 30 97 -24 4658 5144 10 674 0 -546 273 70 36 2304 2771 10 0 971 -547 214 245 8 36 515 10 0 536 -548 221 291 9 50 688 10 0 453 -549 79 467 -11 1231 1701 10 228 0 -550 423 315 12 523 1038 10 0 219 -551 395 474 -31 1341 1875 10 341 0 -552 481 207 -10 3142 3827 10 956 0 -553 199 203 20 5616 6163 10 0 944 -554 497 483 12 1238 1710 10 0 285 -555 449 428 -15 4843 5251 10 313 0 -556 100 266 -23 1695 2182 10 421 0 -557 214 274 -30 5335 5737 10 452 0 -558 16 68 11 940 1432 10 0 932 -559 475 198 -20 3113 3689 10 921 0 -560 371 427 -30 3661 4124 10 533 0 -561 62 375 -27 1185 1724 10 280 0 -562 163 472 9 2415 2933 10 0 176 -563 13 314 14 838 1233 10 0 611 -564 376 385 12 499 978 10 0 772 -565 231 29 -24 4762 5169 10 763 0 -566 89 358 -18 4794 5304 10 196 0 -567 331 356 13 2664 3150 10 0 214 -568 365 190 -12 5694 6245 10 78 0 -569 256 441 34 542 987 10 0 657 -570 120 37 28 2899 3424 10 0 949 -571 349 43 26 637 1199 10 0 412 -572 230 487 20 4351 4806 10 0 241 -573 489 457 13 1091 1559 10 0 641 -574 341 72 9 3042 3517 10 0 40 -575 181 441 -30 1901 2553 10 269 0 -576 306 229 10 5108 5575 10 0 716 -577 492 326 -13 4684 5069 10 69 0 -578 347 459 25 1760 2195 10 0 419 -579 66 88 2 3159 3598 10 0 169 -580 272 234 -22 6200 6643 10 496 0 -581 134 194 -19 6417 6916 10 911 0 -582 320 211 -14 3781 4279 10 238 0 -583 214 311 14 70 572 10 0 170 -584 489 274 -24 1923 2467 10 917 0 -585 231 410 -12 4742 5269 10 413 0 -586 432 199 7 2347 2881 10 0 540 -587 29 358 23 2241 2764 10 0 699 -588 62 236 -17 2020 2564 10 835 0 -589 333 163 -21 4774 5267 10 797 0 -590 364 71 -12 5190 5718 10 738 0 -591 125 65 -22 2989 3438 10 84 0 -592 429 476 23 2151 2556 10 0 211 -593 161 275 -19 5228 5666 10 384 0 -594 365 274 -21 193 747 10 454 0 -595 117 110 13 3762 4189 0 0 1004 -596 166 345 14 4338 4821 10 0 464 -597 345 146 -13 5598 6033 10 447 0 -598 324 99 10 1139 1684 10 0 365 -599 72 477 -25 965 1343 10 813 0 -600 487 320 21 3288 3694 10 0 669 -601 120 17 -14 947 1406 10 381 0 -602 1 252 5 869 1453 10 0 402 -603 303 186 -18 5177 5776 10 830 0 -604 428 302 27 3857 4391 10 0 682 -605 264 135 -13 3373 3782 10 70 0 -606 223 178 -17 4391 4820 10 670 0 -607 174 347 3 3896 4341 10 0 130 -608 238 123 -7 2966 3403 10 283 0 -609 187 61 -20 2028 2451 10 350 0 -610 52 303 -35 1567 2083 10 36 0 -611 89 185 -14 2200 2718 10 563 0 -612 341 59 27 3010 3429 10 0 844 -613 89 65 -32 2690 3193 10 737 0 -614 495 355 -10 4743 5322 10 347 0 -615 368 452 -32 2448 3032 10 271 0 -616 164 473 26 994 1495 10 0 194 -617 171 34 -17 4395 4870 10 224 0 -618 114 460 14 4076 4731 10 0 290 -619 224 3 -14 2627 3017 10 449 0 -620 472 57 -20 4984 5495 10 538 0 -621 448 404 -16 2200 2711 10 694 0 -622 390 120 -29 3822 4332 10 363 0 -623 386 225 -12 3484 3985 10 812 0 -624 301 239 31 52 582 10 0 798 -625 115 296 -14 5930 6421 10 312 0 -626 69 266 12 2828 3359 10 0 721 -627 115 395 11 3111 3530 10 0 448 -628 68 53 16 2830 3200 10 0 796 -629 33 268 18 2595 3091 10 0 398 -630 450 45 24 1850 2298 10 0 217 -631 351 5 12 1836 2252 10 0 531 -632 351 148 30 1626 2183 10 0 409 -633 80 458 30 1367 1717 10 0 665 -634 60 5 18 3992 4477 10 0 906 -635 10 407 36 1517 2079 10 0 810 -636 497 18 -21 4331 4830 10 81 0 -637 437 98 16 4224 4806 10 0 245 -638 130 494 6 2810 3381 10 0 861 -639 391 202 -25 385 806 10 704 0 -640 43 210 20 620 1066 10 0 182 -641 381 457 -13 1736 2149 10 573 0 -642 449 190 2 4432 4807 10 0 178 -643 429 169 8 3390 3952 10 0 749 -644 105 140 -12 490 966 10 22 0 -645 282 10 -11 4885 5328 10 650 0 -646 20 480 25 2087 2595 10 0 506 -647 61 170 20 3840 4326 10 0 415 -648 210 81 -17 1427 1885 10 503 0 -649 87 311 7 435 958 10 0 518 -650 309 29 11 4968 5504 10 0 645 -651 397 57 -9 5689 6238 10 319 0 -652 337 232 -16 6052 6632 10 97 0 -653 262 369 15 364 790 10 0 758 -654 41 232 16 639 1124 10 0 485 -655 69 414 -30 4903 5324 10 892 0 -656 149 98 4 4514 4927 10 0 860 -657 207 487 -34 2570 3064 10 569 0 -658 366 260 -24 5872 6409 10 900 0 -659 497 54 -14 3712 4233 10 75 0 -660 210 379 -22 2734 3056 10 349 0 -661 437 19 -11 3917 4314 10 800 0 -662 181 260 23 69 570 10 0 842 -663 125 61 26 2298 2717 10 0 901 -664 368 311 -8 3494 4034 10 34 0 -665 80 400 -30 5625 6066 10 633 0 -666 75 118 21 1439 1953 10 0 304 -667 171 303 -10 6171 6663 10 56 0 -668 80 251 14 1029 1519 10 0 477 -669 455 168 -21 3350 3705 10 600 0 -670 215 129 17 4252 4816 10 0 606 -671 179 318 -30 4276 4809 10 512 0 -672 187 73 18 967 1490 10 0 184 -673 394 47 -9 1089 1535 10 898 0 -674 31 175 24 795 1298 10 0 545 -675 339 144 -21 4247 4665 10 925 0 -676 492 34 -21 3026 3579 10 742 0 -677 387 349 9 434 918 10 0 542 -678 142 372 18 408 896 10 0 192 -679 291 213 -21 4815 5366 10 423 0 -680 421 387 15 3072 3457 10 0 101 -681 274 403 -20 3356 3863 10 226 0 -682 434 359 -27 5416 5842 10 604 0 -683 257 57 -15 4748 5179 10 942 0 -684 428 202 24 3458 3893 10 0 396 -685 355 174 33 2674 3169 10 0 903 -686 46 389 22 914 1260 10 0 736 -687 44 440 24 2974 3456 10 0 514 -688 491 369 -7 2753 3204 10 719 0 -689 33 286 11 6032 6456 10 0 95 -690 351 128 15 4837 5308 10 0 467 -691 485 428 -6 5730 6309 10 999 0 -692 273 149 -31 5728 6414 10 866 0 -693 447 184 27 1490 2025 10 0 6 -694 386 245 16 1718 2233 10 0 621 -695 323 77 -13 5451 5909 10 64 0 -696 21 70 15 2881 3409 10 0 48 -697 9 101 -10 2492 2957 10 279 0 -698 71 304 19 2548 3085 10 0 277 -699 43 360 -23 3173 3629 10 587 0 -700 396 417 13 3009 3592 10 0 335 -701 158 24 18 2236 2773 10 0 824 -702 164 320 -40 4201 4677 10 11 0 -703 195 386 13 310 863 10 0 246 -704 306 235 25 57 454 10 0 639 -705 66 314 26 605 953 10 0 845 -706 95 64 4 2886 3362 10 0 460 -707 348 348 -16 3521 4077 10 162 0 -708 495 83 32 1555 2091 10 0 783 -709 61 214 4 1195 1659 10 0 306 -710 240 240 -7 6641 7076 10 535 0 -711 140 137 -7 2048 2630 10 818 0 -712 242 106 -10 4922 5346 10 778 0 -713 392 491 -23 4364 4818 10 286 0 -714 342 481 -10 5599 6042 10 759 0 -715 478 300 -31 3393 3844 10 262 0 -716 299 285 -10 4829 5321 10 576 0 -717 481 84 -16 1875 2289 10 776 0 -718 271 128 -18 1193 1692 10 446 0 -719 484 224 7 1009 1507 10 0 688 -720 441 177 23 3808 4322 10 0 35 -721 46 163 -12 3514 4014 10 626 0 -722 493 493 -11 3219 3753 10 434 0 -723 253 74 -30 5222 5699 10 962 0 -724 390 34 -14 4015 4588 10 26 0 -725 374 306 4 3807 4266 10 0 873 -726 436 295 -18 1905 2442 10 993 0 -727 371 315 -25 4450 4997 10 968 0 -728 27 464 21 4997 5452 10 0 465 -729 3 471 13 2628 3178 10 0 768 -730 418 269 3 4705 5053 10 0 19 -731 90 477 -23 883 1338 10 377 0 -732 141 426 -38 1929 2442 10 386 0 -733 418 251 -24 4607 5087 10 320 0 -734 57 183 -7 4202 4721 10 963 0 -735 29 462 -19 5080 5516 10 941 0 -736 55 318 -22 1056 1559 10 686 0 -737 18 24 32 2330 2816 10 0 613 -738 263 153 12 1446 1973 10 0 590 -739 289 220 19 49 548 10 0 792 -740 84 255 -35 897 1478 10 816 0 -741 159 299 12 3860 4384 10 0 887 -742 485 104 21 2973 3503 10 0 676 -743 178 135 -25 5878 6353 10 127 0 -744 389 255 -24 2909 3492 10 852 0 -745 457 280 -35 3834 4284 10 254 0 -746 171 24 -23 5356 5831 10 117 0 -747 330 371 -14 2056 2532 10 1 0 -748 10 237 -37 2268 2784 10 934 0 -749 458 213 -8 4360 4786 10 643 0 -750 257 391 -20 6317 6867 10 787 0 -751 482 184 -15 4217 4758 10 509 0 -752 222 331 10 1983 2453 10 0 187 -753 332 5 14 3911 4472 10 0 369 -754 47 208 -17 708 1223 10 37 0 -755 489 437 29 2644 3131 10 0 122 -756 165 59 27 3560 4102 10 0 366 -757 211 446 -20 4310 4798 10 150 0 -758 225 488 -15 2340 2865 10 653 0 -759 355 485 10 5747 6206 10 0 714 -760 441 374 10 691 1216 10 0 837 -761 399 175 13 2775 3320 10 0 881 -762 103 464 -18 4958 5345 10 106 0 -763 244 13 24 3883 4342 10 0 565 -764 51 360 -26 4345 4932 10 278 0 -765 44 115 -1 720 1250 10 89 0 -766 312 453 -18 2044 2474 10 139 0 -767 64 198 -26 4208 4620 10 399 0 -768 67 451 -13 4690 5155 10 729 0 -769 371 71 21 974 1440 10 0 310 -770 439 156 2 1819 2507 10 0 151 -771 105 474 -9 1617 2268 10 168 0 -772 366 288 -12 2575 3015 10 564 0 -773 415 207 18 3423 3896 10 0 519 -774 58 39 -23 4430 4993 10 527 0 -775 197 202 29 4609 5141 10 0 336 -776 442 5 16 1122 1561 10 0 717 -777 71 12 2 1013 1451 10 0 104 -778 74 215 10 754 1197 10 0 712 -779 347 192 -22 5738 6287 10 248 0 -780 178 420 -9 4161 4530 10 131 0 -781 186 135 24 2695 3167 10 0 3 -782 176 199 28 89 691 10 0 295 -783 438 5 -32 1996 2517 10 708 0 -784 150 68 -21 1539 1963 10 805 0 -785 185 434 -7 2141 2568 10 977 0 -786 215 79 5 694 1214 10 0 523 -787 177 486 20 6192 6705 10 0 750 -788 49 437 7 1528 2012 10 0 272 -789 100 66 -15 5429 5888 10 12 0 -790 35 344 21 3297 3728 10 0 343 -791 433 447 20 3020 3453 10 0 247 -792 372 97 -19 625 1204 10 739 0 -793 344 203 14 475 984 10 0 146 -794 423 170 27 1907 2317 10 0 940 -795 171 188 30 2333 2751 10 0 383 -796 64 5 -16 4379 4772 10 628 0 -797 371 163 21 3122 3621 10 0 589 -798 398 210 -31 390 837 10 624 0 -799 48 437 -2 2975 3574 10 264 0 -800 392 1 11 2304 2657 10 0 661 -801 195 464 -16 6044 6406 10 177 0 -802 211 248 26 39 540 10 0 120 -803 293 228 19 48 559 10 0 215 -804 23 235 -6 3926 4380 10 433 0 -805 213 185 21 74 583 10 0 784 -806 172 292 17 190 665 10 0 456 -807 228 287 21 43 491 10 0 882 -808 387 394 -40 4212 4689 10 439 0 -809 374 232 33 241 762 10 0 886 -810 48 366 -36 2724 3341 10 635 0 -811 44 311 -22 1448 1932 10 235 0 -812 447 272 12 1312 1878 10 0 623 -813 132 477 25 1153 1586 10 0 599 -814 80 117 -26 3093 3620 10 362 0 -815 11 403 18 1207 1657 10 0 161 -816 144 220 35 166 716 10 0 740 -817 473 491 23 1476 1950 10 0 18 -818 210 219 7 50 539 10 0 711 -819 452 484 -9 4992 5356 10 159 0 -820 365 28 9 885 1381 10 0 905 -821 498 456 27 5494 5874 10 0 86 -822 84 453 -22 4745 5159 10 916 0 -823 91 427 -31 3360 3820 10 875 0 -824 178 72 -18 2829 3346 10 701 0 -825 409 155 19 438 1044 10 0 847 -826 132 151 22 433 800 10 0 966 -827 136 430 14 2696 3105 10 0 103 -828 292 104 -27 1033 1518 10 191 0 -829 443 167 -25 2015 2450 10 428 0 -830 321 149 18 5472 6045 10 0 603 -831 235 13 27 1215 1774 10 0 114 -832 166 440 12 634 1028 10 0 393 -833 112 433 29 712 1288 10 0 93 -834 452 172 -19 2262 2723 10 371 0 -835 37 281 17 1789 2276 10 0 588 -836 414 378 -18 1809 2270 10 840 0 -837 475 352 -10 1031 1568 10 760 0 -838 400 71 -11 5305 5792 10 98 0 -839 286 244 -13 4933 5459 10 972 0 -840 429 389 18 1522 1991 10 0 836 -841 92 76 4 4410 4822 10 0 994 -842 124 111 -23 2999 3436 10 662 0 -843 268 458 -3 1893 2411 10 489 0 -844 352 63 -27 4539 5007 10 612 0 -845 49 118 -26 4134 4557 10 705 0 -846 398 329 -36 406 937 10 220 0 -847 382 9 -19 884 1411 10 825 0 -848 229 322 -3 6448 6955 10 431 0 -849 279 355 9 528 922 10 0 522 -850 266 221 9 33 561 10 0 145 -851 142 80 12 1803 2253 10 0 497 -852 359 287 24 166 755 10 0 744 -853 482 104 19 3050 3529 10 0 416 -854 284 457 -19 5835 6274 10 46 0 -855 64 294 -28 4252 4677 10 980 0 -856 404 59 -21 3503 3920 10 116 0 -857 68 160 -26 4317 4889 10 417 0 -858 211 411 -27 4437 4856 10 902 0 -859 30 155 -22 4951 5413 10 44 0 -860 240 34 -4 6042 6555 10 656 0 -861 107 374 -6 3477 3958 10 638 0 -862 404 140 -23 4825 5364 10 878 0 -863 436 467 -14 2768 3240 10 334 0 -864 421 386 29 3082 3632 10 0 268 -865 182 480 31 1261 1778 10 0 382 -866 9 233 31 1041 1528 10 0 692 -867 110 251 23 1759 2342 10 0 166 -868 19 38 15 3195 3702 10 0 505 -869 46 248 -8 3060 3571 10 133 0 -870 308 199 14 5818 6368 10 0 230 -871 423 221 9 884 1303 10 0 65 -872 313 391 -30 416 901 10 251 0 -873 413 345 -4 4691 5173 10 725 0 -874 278 450 -10 5371 5749 10 391 0 -875 94 497 31 2921 3457 10 0 823 -876 7 382 27 2909 3374 10 0 920 -877 493 111 26 1977 2472 10 0 442 -878 392 87 23 4485 5096 10 0 862 -879 13 394 15 1277 1823 10 0 54 -880 259 301 25 178 732 10 0 435 -881 351 233 -13 5493 6010 10 761 0 -882 313 493 -21 4587 5077 10 807 0 -883 65 62 15 3728 4203 10 0 10 -884 417 212 -5 3553 3848 10 508 0 -885 450 194 27 2318 2799 10 0 950 -886 470 138 -33 5324 5912 10 809 0 -887 190 267 -12 6871 7278 10 741 0 -888 248 214 -35 5720 6234 10 965 0 -889 50 383 -21 861 1340 10 284 0 -890 244 422 -12 1985 2436 10 936 0 -891 60 29 -19 5272 5750 10 418 0 -892 5 445 30 1085 1522 10 0 655 -893 490 276 33 773 1249 10 0 227 -894 441 100 31 3312 3796 10 0 340 -895 162 388 11 4302 4826 10 0 144 -896 244 277 -20 5023 5507 10 190 0 -897 406 408 15 5609 6160 0 0 1001 -898 265 240 9 18 520 10 0 673 -899 130 186 16 353 817 10 0 299 -900 382 110 24 4260 4759 10 0 658 -901 142 14 -26 3212 3590 10 663 0 -902 352 487 27 3510 3824 10 0 858 -903 307 52 -33 3467 4017 10 685 0 -904 418 399 -30 1622 1999 10 314 0 -905 196 56 -9 2274 2722 10 820 0 -906 66 31 -18 4043 4464 10 634 0 -907 90 496 -22 5354 5929 10 60 0 -908 480 136 22 788 1266 10 0 430 -909 65 82 13 2847 3190 10 0 981 -910 48 293 -8 893 1435 10 39 0 -911 105 181 19 5947 6423 10 0 581 -912 215 282 -14 5568 6075 10 294 0 -913 257 133 -18 3306 3712 10 480 0 -914 77 465 11 874 1333 10 0 458 -915 43 135 31 693 1202 10 0 52 -916 27 444 22 4192 4571 10 0 822 -917 357 290 24 251 663 10 0 584 -918 38 15 -16 4148 4701 10 45 0 -919 80 337 28 4329 4745 10 0 978 -920 36 451 -27 3375 3856 10 876 0 -921 291 251 20 41 469 10 0 559 -922 195 111 -1 3820 4285 10 32 0 -923 383 17 15 3596 4047 10 0 344 -924 53 466 9 1135 1666 10 0 440 -925 114 102 21 1870 2309 10 0 675 -926 350 199 -3 4662 5070 10 152 0 -927 405 349 -19 1938 2360 10 263 0 -928 472 248 11 3159 3636 10 0 444 -929 333 293 -19 2335 2722 10 462 0 -930 174 397 -17 4786 5291 10 330 0 -931 2 264 40 2403 2954 10 0 232 -932 7 82 -11 1421 1991 10 558 0 -933 34 329 2 4010 4454 10 0 438 -934 158 179 37 225 705 10 0 748 -935 421 499 -23 5198 5684 10 156 0 -936 345 431 12 1208 1671 10 0 890 -937 370 262 -14 4227 4688 10 112 0 -938 77 172 -21 2962 3442 10 7 0 -939 87 51 -9 1873 2361 10 986 0 -940 468 352 -27 2880 3385 10 794 0 -941 63 420 19 1875 2401 10 0 735 -942 347 184 15 4132 4618 10 0 683 -943 206 174 -27 3033 3485 10 491 0 -944 209 212 -20 5932 6410 10 553 0 -945 466 362 -23 4456 4883 10 259 0 -946 201 278 13 56 624 10 0 973 -947 206 172 29 2978 3446 10 0 471 -948 471 94 -13 3841 4270 10 2 0 -949 331 134 -28 4317 4793 10 570 0 -950 274 261 -27 6653 7122 10 885 0 -951 219 215 32 46 466 10 0 158 -952 349 76 -28 3991 4374 10 206 0 -953 86 189 -16 713 1221 10 59 0 -954 336 493 -12 5753 6310 10 354 0 -955 7 194 -17 3625 4105 10 490 0 -956 492 335 10 3071 3675 10 0 552 -957 248 386 22 1390 1756 10 0 129 -958 463 406 -7 3259 3719 10 128 0 -959 199 438 -17 5261 5743 10 296 0 -960 135 30 -27 1709 2206 10 970 0 -961 447 267 19 3724 4233 10 0 252 -962 235 33 30 5194 5621 10 0 723 -963 63 155 7 3663 4174 10 0 734 -964 294 421 26 6127 6596 10 0 154 -965 318 99 35 4662 5161 10 0 888 -966 21 146 -22 1779 2235 10 826 0 -967 30 7 23 4570 5059 10 0 461 -968 410 399 25 787 1204 10 0 727 -969 405 187 -26 4851 5274 10 167 0 -970 109 56 27 733 1186 10 0 960 -971 212 47 -36 2994 3535 10 546 0 -972 479 387 13 1358 1942 10 0 839 -973 167 291 -13 6300 6894 10 946 0 -974 259 498 33 4121 4598 10 0 149 -975 461 182 -5 2291 2861 10 424 0 -976 277 428 7 1889 2154 10 0 532 -977 290 328 7 404 866 10 0 785 -978 146 313 -28 4627 5055 10 919 0 -979 40 304 -38 4372 4906 10 255 0 -980 56 268 28 4077 4555 10 0 855 -981 104 28 -13 5696 6207 10 909 0 -982 370 493 22 2110 2580 10 0 24 -983 136 265 12 232 688 10 0 43 -984 247 306 33 56 447 10 0 126 -985 241 38 -15 1984 2389 10 256 0 -986 180 162 9 498 1010 10 0 939 -987 253 118 -28 1994 2505 10 325 0 -988 413 391 8 639 1218 10 0 201 -989 380 350 15 3263 3789 10 0 374 -990 391 112 24 3837 4285 10 0 14 -991 86 199 23 906 1436 10 0 318 -992 91 326 -25 3695 4130 10 494 0 -993 287 256 18 37 474 10 0 726 -994 203 211 -4 5053 5518 10 841 0 -995 79 80 -13 5377 5799 10 305 0 -996 32 319 21 1469 1855 10 0 321 -997 167 445 -11 5437 5980 10 265 0 -998 439 237 11 3557 4071 10 0 410 -999 373 418 6 4845 5351 10 0 691 -1000 26 342 -5 1075 1613 10 316 0 -1001 406 408 -15 5609 6160 10 897 0 -1002 433 319 -11 5359 5771 10 472 0 -1003 261 201 -15 5895 6337 10 27 0 -1004 117 110 -13 3762 4189 10 595 0 diff --git a/jsprit-instances/instances/lilim/1000/LR2102.txt b/jsprit-instances/instances/lilim/1000/LR2102.txt deleted file mode 100644 index 4cc5539d3..000000000 --- a/jsprit-instances/instances/lilim/1000/LR2102.txt +++ /dev/null @@ -1,1010 +0,0 @@ -250 1000 1 -0 250 250 0 0 7697 0 0 0 -1 228 399 14 2329 2482 10 0 681 -2 325 56 13 3181 3311 10 0 40 -3 290 145 -8 5130 5242 10 643 0 -4 340 291 -12 1893 1991 10 884 0 -5 370 382 -21 0 7509 10 38 0 -6 273 255 18 0 7664 10 0 760 -7 36 301 21 811 949 10 0 471 -8 117 178 28 4484 4574 10 0 656 -9 295 283 -23 3538 3728 10 286 0 -10 57 43 -15 4088 4219 10 883 0 -11 436 123 -9 835 966 10 898 0 -12 48 162 15 825 1033 10 0 628 -13 222 499 7 0 7437 0 0 1001 -14 376 92 10 3959 4086 10 0 324 -15 437 90 12 2364 2435 10 0 268 -16 3 23 -8 1550 1702 10 547 0 -17 94 40 -11 4278 4387 10 558 0 -18 398 476 25 1676 1789 10 0 641 -19 307 249 -2 0 7630 10 253 0 -20 179 286 8 1380 1469 10 0 572 -21 0 356 -38 4346 4464 10 255 0 -22 143 158 12 562 659 10 0 644 -23 413 476 -12 4729 4823 10 354 0 -24 371 488 10 2285 2497 10 0 413 -25 415 118 -11 0 7476 10 800 0 -26 440 77 -16 3649 3775 10 91 0 -27 261 201 -16 6060 6172 10 637 0 -28 490 286 29 2073 2224 10 0 725 -29 309 161 -11 2287 2499 10 71 0 -30 39 162 18 2269 2373 10 0 470 -31 361 178 -13 3903 3996 10 447 0 -32 261 138 1 0 7575 10 0 84 -33 447 383 17 889 1013 10 0 334 -34 346 354 8 3260 3399 10 0 205 -35 461 195 -21 5597 5683 10 926 0 -36 187 263 -21 0 7623 10 186 0 -37 130 247 -26 423 538 10 802 0 -38 328 491 21 2702 2845 10 0 5 -39 161 276 8 476 711 10 0 546 -40 365 74 -13 3379 3529 10 2 0 -41 168 109 10 810 944 10 0 672 -42 111 192 -9 0 7537 10 859 0 -43 87 213 -10 0 7520 10 279 0 -44 45 166 22 0 7466 10 0 925 -45 62 94 16 3822 3903 10 0 240 -46 348 476 -17 4762 4932 10 296 0 -47 64 437 11 0 7424 10 0 272 -48 56 75 -19 5711 5910 10 418 0 -49 24 259 19 1490 1591 10 0 375 -50 295 247 -25 5212 5335 10 370 0 -51 6 53 -25 2355 2460 10 932 0 -52 15 11 -14 0 7352 10 238 0 -53 179 497 -30 0 7430 10 269 0 -54 67 352 20 1514 1592 10 0 811 -55 317 45 -15 2629 2757 10 132 0 -56 40 278 -15 0 7476 10 438 0 -57 33 278 18 5910 6108 10 0 662 -58 322 290 -29 0 7605 10 755 0 -59 159 226 16 314 439 10 0 934 -60 208 445 -25 5314 5465 10 510 0 -61 453 360 -13 858 990 10 451 0 -62 34 169 11 1948 2048 10 0 473 -63 436 25 -14 5113 5266 10 659 0 -64 393 98 13 3013 3127 10 0 620 -65 466 96 22 5547 5639 10 0 870 -66 366 390 -25 5266 5400 10 380 0 -67 303 78 12 656 784 10 0 776 -68 374 116 -20 0 7505 10 469 0 -69 424 288 -23 4261 4318 10 259 0 -70 191 84 -23 3472 3584 10 120 0 -71 59 276 11 0 7495 10 0 29 -72 215 293 13 128 315 10 0 387 -73 343 276 15 321 451 10 0 594 -74 488 173 -29 4836 4966 10 363 0 -75 452 110 14 1339 1504 10 0 152 -76 153 244 5 460 523 10 0 754 -77 176 200 17 2266 2394 10 0 521 -78 498 171 12 5048 5123 10 0 886 -79 492 188 -23 2904 2939 10 475 0 -80 177 156 -9 639 818 10 986 0 -81 398 49 21 3167 3288 10 0 369 -82 497 296 -37 2495 2525 10 308 0 -83 276 84 -3 0 7519 10 146 0 -84 128 113 -1 0 7504 10 32 0 -85 422 498 5 2801 2856 10 0 226 -86 460 424 -9 5786 5970 10 285 0 -87 246 314 36 5773 5910 0 0 1007 -88 0 422 -11 3300 3388 10 914 0 -89 166 247 1 291 382 10 0 666 -90 311 422 29 3970 4053 10 0 95 -91 392 95 16 3060 3189 10 0 26 -92 460 117 -11 2083 2196 10 650 0 -93 28 467 34 0 7377 10 0 920 -94 375 145 12 3719 3836 10 0 441 -95 240 255 -29 6404 6604 10 90 0 -96 440 436 18 3549 3706 10 0 560 -97 454 201 -22 5218 5342 10 328 0 -98 407 35 -24 5177 5250 10 119 0 -99 420 383 27 3932 4044 10 0 207 -100 264 180 -11 6720 6845 10 450 0 -101 440 294 -18 3836 3966 10 353 0 -102 500 228 -5 3137 3237 10 673 0 -103 144 331 -23 3709 3860 10 587 0 -104 98 2 14 2361 2493 10 0 570 -105 461 186 16 0 7467 10 0 568 -106 68 450 -38 0 7417 10 386 0 -107 153 192 13 0 7574 10 0 710 -108 34 239 16 896 975 10 0 857 -109 465 367 14 4087 4248 10 0 229 -110 208 488 22 1934 2007 10 0 355 -111 93 413 17 849 961 10 0 228 -112 371 332 14 0 7541 10 0 442 -113 231 167 15 246 435 10 0 455 -114 179 75 13 2982 3057 10 0 922 -115 196 489 23 4135 4226 10 0 241 -116 280 245 21 85 158 10 0 783 -117 108 37 23 2192 2323 10 0 166 -118 1 101 -20 5021 5158 10 304 0 -119 420 80 24 0 7447 10 0 98 -120 38 190 23 1138 1261 10 0 70 -121 470 405 17 3694 3832 10 0 359 -122 448 397 33 0 7441 10 0 439 -123 471 427 8 3256 3395 10 0 722 -124 146 376 8 928 1066 10 0 318 -125 12 358 -26 4891 5024 10 278 0 -126 175 422 24 5771 5920 10 0 997 -127 297 131 25 4640 4803 10 0 730 -128 457 492 -23 2041 2143 10 156 0 -129 69 423 32 3236 3304 10 0 627 -130 97 288 -33 5142 5251 10 322 0 -131 172 314 9 0 7587 10 0 702 -132 170 347 15 1764 1842 10 0 55 -133 103 123 -6 1966 2072 10 433 0 -134 154 374 -31 3746 3870 10 865 0 -135 318 497 21 0 7431 10 0 691 -136 330 147 -21 3383 3525 10 215 0 -137 241 180 -23 6789 6887 10 273 0 -138 174 67 -30 5018 5180 10 645 0 -139 235 288 18 83 244 10 0 734 -140 94 192 -32 0 7521 10 711 0 -141 232 101 -24 1405 1483 10 608 0 -142 28 180 34 1551 1653 10 0 674 -143 64 135 -22 3495 3571 10 182 0 -144 174 376 -25 0 7540 10 575 0 -145 293 174 31 279 420 10 0 717 -146 218 12 3 2204 2268 10 0 83 -147 110 122 14 0 7498 10 0 860 -148 459 53 -7 4505 4592 10 531 0 -149 173 474 14 5150 5250 10 0 453 -150 135 400 -9 1189 1319 10 168 0 -151 497 266 -20 2996 3104 10 538 0 -152 380 194 -14 2872 2956 10 75 0 -153 495 227 20 1389 1482 10 0 590 -154 268 351 7 6698 6822 10 0 539 -155 213 399 18 941 1051 10 0 732 -156 448 414 23 0 7430 10 0 128 -157 327 139 -18 5021 5158 10 361 0 -158 151 81 28 0 7492 10 0 743 -159 425 448 -36 3152 3324 10 301 0 -160 92 259 4 1585 1731 10 0 933 -161 59 388 20 2650 2772 10 0 861 -162 468 360 16 0 7443 10 0 727 -163 332 459 35 1479 1591 10 0 863 -164 469 489 4 2211 2353 10 0 419 -165 248 176 -24 5579 5753 10 781 0 -166 174 41 -23 0 7465 10 117 0 -167 343 205 26 3081 3178 10 0 733 -168 154 392 9 0 7516 10 0 150 -169 92 18 8 4466 4648 10 0 967 -170 250 328 -24 0 7609 10 511 0 -171 88 484 -25 0 7403 10 646 0 -172 360 488 -12 1252 1393 10 564 0 -173 156 65 22 4143 4275 10 0 497 -174 18 225 8 2757 2893 10 0 317 -175 152 476 45 2112 2188 10 0 827 -176 176 470 -13 2181 2312 10 484 0 -177 195 450 -4 5946 6061 10 657 0 -178 466 149 -28 4761 4848 10 206 0 -179 221 269 14 5064 5179 10 0 338 -180 105 137 -5 1799 1940 10 786 0 -181 284 319 17 3270 3384 10 0 849 -182 41 120 22 2791 2897 10 0 143 -183 263 418 -6 1117 1230 10 766 0 -184 218 271 -24 6280 6429 10 557 0 -185 365 119 -21 0 7513 10 742 0 -186 89 322 21 4099 4186 10 0 36 -187 180 283 -22 2963 3107 10 549 0 -188 385 17 40 3186 3404 10 0 233 -189 401 314 -23 3875 4057 10 836 0 -190 245 176 -27 4943 5055 10 756 0 -191 251 238 27 12 119 10 0 503 -192 139 438 24 865 966 10 0 440 -193 236 126 23 400 598 10 0 987 -194 61 441 -23 2201 2268 10 377 0 -195 405 454 -20 0 7431 10 791 0 -196 111 392 18 4693 4780 10 0 757 -197 373 421 -10 939 1080 10 276 0 -198 247 443 17 0 7494 10 0 445 -199 322 406 -19 0 7516 10 517 0 -200 412 478 -23 3851 3946 10 958 0 -201 374 346 -15 0 7531 10 897 0 -202 122 422 -27 5871 5904 10 876 0 -203 261 359 10 401 476 10 0 569 -204 173 182 25 383 438 10 0 970 -205 398 341 -8 3775 3858 10 34 0 -206 413 127 28 3326 3439 10 0 178 -207 325 311 -27 5290 5409 10 99 0 -208 80 357 1 2093 2271 10 0 741 -209 67 378 -28 0 7464 10 919 0 -210 216 341 19 0 7590 10 0 372 -211 498 457 -26 0 7364 10 819 0 -212 44 344 -7 0 7461 10 283 0 -213 352 481 -23 5136 5261 10 817 0 -214 237 420 -25 0 7517 10 813 0 -215 389 43 21 1564 1721 10 0 136 -216 292 136 -21 3126 3239 10 805 0 -217 426 38 23 0 7412 10 0 675 -218 245 461 8 0 7476 10 0 875 -219 415 253 21 1457 1595 10 0 332 -220 298 264 36 147 253 10 0 513 -221 307 412 8 1635 1714 10 0 747 -222 53 204 -26 4206 4354 10 399 0 -223 480 152 -14 4028 4265 10 234 0 -224 262 97 17 3785 3912 10 0 412 -225 83 169 21 3115 3218 10 0 258 -226 377 432 -5 0 7466 10 85 0 -227 390 249 21 0 7547 10 0 577 -228 132 479 -17 997 1063 10 111 0 -229 359 246 -14 5725 5777 10 109 0 -230 314 205 -18 6086 6249 10 779 0 -231 124 448 6 1430 1638 10 0 735 -232 0 188 -19 0 7430 10 495 0 -233 343 166 -40 3512 3616 10 188 0 -234 482 141 14 4028 4178 10 0 223 -235 162 306 22 494 580 10 0 337 -236 24 71 11 1394 1494 10 0 613 -237 188 119 44 3903 4016 10 0 670 -238 100 85 14 1422 1506 10 0 52 -239 103 177 28 2494 2637 10 0 362 -240 26 67 -16 5274 5380 10 45 0 -241 164 332 -23 5107 5250 10 115 0 -242 385 285 -24 3478 3586 10 852 0 -243 209 68 -7 6266 6398 10 963 0 -244 149 341 6 1599 1753 10 0 894 -245 415 95 15 4708 4825 10 0 830 -246 167 488 -33 972 1148 10 974 0 -247 413 493 26 4894 4971 10 0 935 -248 439 222 -11 3929 4028 10 998 0 -249 150 484 16 2498 2623 10 0 265 -250 299 353 34 0 7573 10 0 596 -251 273 300 30 153 288 10 0 858 -252 402 277 5 5771 5856 10 0 519 -253 239 15 2 0 7452 10 0 19 -254 363 225 35 3426 3541 10 0 937 -255 65 343 38 802 976 10 0 21 -256 351 60 -17 0 7472 10 534 0 -257 60 246 25 704 816 10 0 905 -258 144 35 -21 0 7448 10 225 0 -259 463 253 23 4171 4325 10 0 69 -260 332 382 -5 4037 4167 10 872 0 -261 408 318 15 2558 2707 10 0 809 -262 452 206 31 1958 2099 10 0 829 -263 471 368 -4 1718 1827 10 493 0 -264 93 490 -25 1527 1626 10 880 0 -265 241 402 -16 4090 4229 10 249 0 -266 60 231 -28 4124 4203 10 398 0 -267 172 66 -29 5225 5318 10 588 0 -268 404 207 -12 3634 3771 10 15 0 -269 286 356 30 354 542 10 0 53 -270 489 338 17 5551 5746 10 0 472 -271 334 481 32 1323 1440 10 0 551 -272 26 442 -11 0 7392 10 47 0 -273 226 175 23 6798 6871 10 0 137 -274 488 3 -26 1625 1700 10 571 0 -275 178 150 33 0 7564 10 0 339 -276 371 423 10 810 878 10 0 197 -277 5 224 19 0 7441 10 0 955 -278 94 344 26 2746 2832 10 0 125 -279 153 235 10 324 462 10 0 43 -280 12 367 27 1282 1444 10 0 980 -281 217 357 23 0 7576 10 0 801 -282 255 487 -5 1556 1747 10 316 0 -283 149 214 7 0 7580 10 0 212 -284 169 305 21 0 7590 10 0 667 -285 487 446 9 5360 5482 10 0 86 -286 267 374 23 2425 2501 10 0 9 -287 360 294 9 0 7569 10 0 772 -288 185 431 15 1561 1656 10 0 464 -289 325 210 15 3717 3870 10 0 723 -290 175 352 -25 6652 6789 10 544 0 -291 76 462 -18 3813 3955 10 345 0 -292 19 273 25 0 7455 10 0 629 -293 72 227 -23 2258 2373 10 991 0 -294 213 283 14 5885 6002 10 0 411 -295 130 140 17 783 889 10 0 504 -296 274 442 17 4301 4350 10 0 46 -297 337 41 -18 4018 4121 10 446 0 -298 372 39 -24 2886 3022 10 432 0 -299 269 112 19 5041 5180 10 0 348 -300 224 56 -18 0 7492 10 683 0 -301 340 416 36 1293 1396 10 0 159 -302 13 214 21 5428 5520 10 0 640 -303 230 320 -31 4770 4887 10 584 0 -304 6 196 20 4772 4973 10 0 118 -305 87 3 -14 5728 5856 10 461 0 -306 133 202 33 1827 1978 10 0 851 -307 235 316 -30 2616 2751 10 533 0 -308 435 180 37 0 7490 10 0 82 -309 173 65 -20 1768 1940 10 971 0 -310 245 42 -23 2203 2295 10 784 0 -311 384 149 18 0 7520 10 0 751 -312 51 286 -15 5831 5960 10 435 0 -313 267 290 15 111 236 10 0 785 -314 453 318 -20 1489 1621 10 921 0 -315 189 402 -26 2149 2259 10 616 0 -316 210 276 5 138 243 10 0 282 -317 120 261 -8 3154 3312 10 174 0 -318 35 263 -8 0 7472 10 124 0 -319 429 59 9 1827 1964 10 0 403 -320 330 308 -21 4687 4797 10 600 0 -321 58 391 16 3528 3651 10 0 506 -322 260 472 33 4143 4265 10 0 130 -323 217 333 26 0 7598 10 0 603 -324 335 46 -10 5400 5453 10 14 0 -325 198 85 28 1032 1189 10 0 631 -326 138 28 -15 4362 4530 10 842 0 -327 29 336 22 1319 1454 10 0 804 -328 200 27 22 0 7459 10 0 97 -329 157 269 -19 6317 6414 10 698 0 -330 177 404 17 0 7517 10 0 397 -331 202 28 -21 3733 3860 10 966 0 -332 366 334 -21 1650 1751 10 219 0 -333 149 458 13 0 7456 10 0 474 -334 481 454 -17 1278 1406 10 33 0 -335 377 385 -18 3486 3564 10 543 0 -336 217 207 -10 5538 5642 10 767 0 -337 96 346 -22 765 836 10 235 0 -338 224 320 -14 5187 5202 10 179 0 -339 206 97 -33 1785 1920 10 275 0 -340 438 127 -24 3785 3862 10 457 0 -341 494 468 -13 1417 1523 10 459 0 -342 494 165 -9 2401 2553 10 820 0 -343 5 281 16 0 7441 10 0 437 -344 441 60 -36 0 7418 10 488 0 -345 14 232 18 1187 1374 10 0 291 -346 288 439 16 1121 1187 10 0 615 -347 420 224 10 1704 1848 10 0 724 -348 267 162 -19 0 7598 10 299 0 -349 195 273 22 156 320 10 0 752 -350 233 230 -26 0 7661 10 663 0 -351 382 360 26 696 849 10 0 988 -352 406 460 -7 2868 3006 10 976 0 -353 499 316 18 2472 2623 10 0 101 -354 246 407 12 1235 1377 10 0 23 -355 283 454 -22 5107 5134 10 110 0 -356 426 231 -17 4102 4245 10 745 0 -357 432 2 -26 1848 2004 10 828 0 -358 404 439 3 964 1067 10 0 509 -359 397 477 -17 4853 4993 10 121 0 -360 44 140 -5 3464 3602 10 466 0 -361 330 138 18 4493 4504 10 0 157 -362 39 153 -28 3203 3299 10 239 0 -363 397 153 29 3507 3673 10 0 74 -364 226 316 21 234 328 10 0 599 -365 354 156 20 3322 3458 10 0 444 -366 201 66 14 0 7497 10 0 379 -367 389 156 27 2851 2993 10 0 900 -368 134 211 35 458 626 10 0 814 -369 386 154 -21 0 7521 10 81 0 -370 335 99 25 4913 4955 10 0 50 -371 356 256 19 337 513 10 0 682 -372 240 362 -19 0 7575 10 210 0 -373 412 100 1 2066 2161 10 0 877 -374 394 322 12 4111 4207 10 0 664 -375 48 150 -19 2642 2718 10 49 0 -376 225 121 -31 0 7556 10 541 0 -377 102 422 23 0 7461 10 0 194 -378 339 41 6 0 7460 10 0 839 -379 440 201 -14 0 7491 10 366 0 -380 411 379 25 4781 4886 10 0 66 -381 219 210 14 152 252 10 0 586 -382 250 441 5 0 7496 10 0 465 -383 210 29 -10 4213 4314 10 486 0 -384 178 302 19 3553 3659 10 0 448 -385 148 208 22 0 7577 10 0 477 -386 225 369 38 432 541 10 0 106 -387 16 287 -13 0 7451 10 72 0 -388 450 416 -13 2281 2453 10 972 0 -389 287 397 -12 2262 2373 10 936 0 -390 285 247 -18 0 7652 10 422 0 -391 351 481 -36 1284 1410 10 436 0 -392 243 408 -12 5720 5870 10 660 0 -393 137 377 23 0 7518 0 0 1002 -394 33 152 -17 5278 5403 10 806 0 -395 68 303 22 904 987 10 0 416 -396 456 113 -19 4922 5015 10 803 0 -397 134 276 -17 0 7569 10 330 0 -398 26 221 28 4016 4076 10 0 266 -399 79 257 26 3803 3942 10 0 222 -400 181 185 -19 6436 6594 10 995 0 -401 104 349 20 4058 4135 10 0 992 -402 267 174 -14 6470 6596 10 692 0 -403 475 267 -9 3124 3232 10 319 0 -404 385 239 -5 3130 3274 10 508 0 -405 95 382 19 929 1041 10 0 417 -406 67 190 25 4722 4785 10 0 697 -407 32 94 -28 3707 3854 10 485 0 -408 401 164 13 0 7514 10 0 597 -409 376 113 -22 0 7501 10 910 0 -410 409 255 -16 0 7528 10 694 0 -411 228 260 -14 6450 6514 10 294 0 -412 363 34 -17 0 7444 10 224 0 -413 274 441 -10 2762 2915 10 24 0 -414 146 188 -19 0 7566 10 581 0 -415 212 186 -3 6893 6999 10 505 0 -416 432 66 -22 0 7429 10 395 0 -417 83 300 -19 1987 2131 10 405 0 -418 51 89 19 4833 4953 10 0 48 -419 379 486 -4 2679 2815 10 164 0 -420 440 284 -21 0 7494 10 454 0 -421 175 239 23 256 351 10 0 891 -422 282 1 18 4184 4276 10 0 390 -423 268 113 21 2734 2823 10 0 844 -424 480 131 -14 2740 2881 10 449 0 -425 429 67 16 2938 3040 10 0 430 -426 162 301 -15 6423 6601 10 879 0 -427 281 96 -24 4532 4594 10 763 0 -428 495 199 25 0 7437 10 0 834 -429 372 115 13 0 7506 10 0 632 -430 396 83 -16 6362 6449 10 425 0 -431 239 486 3 0 7451 10 0 758 -432 288 70 24 0 7504 10 0 298 -433 66 163 6 1566 1718 10 0 133 -434 470 417 -10 0 7411 10 713 0 -435 226 423 15 832 863 10 0 312 -436 342 319 36 419 502 10 0 391 -437 174 122 -16 2376 2491 10 343 0 -438 49 353 15 5810 5879 10 0 56 -439 448 495 -33 0 7372 10 122 0 -440 13 465 -24 3116 3193 10 192 0 -441 489 159 -12 5723 5818 10 94 0 -442 311 203 -14 2892 3008 10 112 0 -443 480 119 7 2515 2632 10 0 773 -444 442 153 -20 4765 4865 10 365 0 -445 148 462 -17 2906 3028 10 198 0 -446 233 87 18 966 1174 10 0 297 -447 323 34 13 0 7459 10 0 31 -448 84 377 -19 3699 3831 10 384 0 -449 292 32 14 888 1066 10 0 424 -450 418 75 11 1807 1896 10 0 100 -451 451 305 13 779 889 10 0 61 -452 225 269 -4 5082 5205 10 706 0 -453 272 420 -14 5515 5691 10 149 0 -454 318 280 21 254 340 10 0 420 -455 250 57 -15 0 7494 10 113 0 -456 77 372 19 0 7476 10 0 655 -457 385 58 24 1661 1697 10 0 340 -458 44 496 -13 1594 1740 10 703 0 -459 460 328 13 872 1001 10 0 341 -460 67 24 -23 4083 4184 10 527 0 -461 91 27 14 4699 4874 10 0 305 -462 360 284 -27 2660 2792 10 929 0 -463 82 183 17 4444 4490 10 0 841 -464 153 362 -15 4647 4762 10 288 0 -465 52 412 -5 5608 5758 10 382 0 -466 32 191 5 2344 2465 10 0 360 -467 325 147 14 0 7560 0 0 1006 -468 328 458 17 0 7465 10 0 821 -469 133 273 20 419 535 10 0 68 -470 147 30 -18 4424 4565 10 30 0 -471 131 246 -21 3348 3429 10 7 0 -472 433 319 -17 5509 5621 10 270 0 -473 168 59 -11 0 7480 10 62 0 -474 218 403 -13 5305 5368 10 333 0 -475 295 89 23 0 7520 10 0 79 -476 118 314 -13 1315 1505 10 740 0 -477 251 63 -22 3981 4039 10 385 0 -478 388 44 22 4519 4647 10 0 589 -479 381 328 12 0 7535 10 0 677 -480 132 32 -15 0 7440 10 789 0 -481 334 403 26 620 776 10 0 532 -482 83 290 14 2421 2560 0 0 1003 -483 411 396 -7 3667 3814 10 977 0 -484 243 402 13 0 7535 10 0 176 -485 52 18 28 3438 3537 10 0 407 -486 265 0 10 3570 3718 10 0 383 -487 268 288 -10 5075 5181 10 956 0 -488 476 61 36 1780 1930 10 0 344 -489 283 438 3 939 1032 10 0 978 -490 191 215 -32 211 338 10 951 0 -491 253 50 27 921 1005 10 0 753 -492 71 282 -18 2583 2670 10 815 0 -493 297 304 4 227 345 10 0 263 -494 244 368 25 0 7569 10 0 562 -495 80 279 19 4586 4795 10 0 232 -496 488 96 22 4264 4386 10 0 636 -497 142 30 -22 0 7442 10 173 0 -498 68 240 -5 3176 3300 10 556 0 -499 193 138 30 0 7562 10 0 545 -500 451 62 5 0 7412 10 0 798 -501 138 406 -13 4892 4956 10 946 0 -502 306 42 11 1944 1989 10 0 969 -503 247 219 -27 0 7656 10 191 0 -504 98 29 -17 4209 4284 10 295 0 -505 102 6 3 5820 5968 10 0 415 -506 142 360 -16 6124 6252 10 321 0 -507 172 24 -3 5814 5924 10 518 0 -508 352 241 5 3178 3280 10 0 404 -509 486 324 -3 3109 3168 10 358 0 -510 133 455 25 3222 3362 10 0 60 -511 440 292 24 3776 3864 10 0 170 -512 364 173 30 700 862 10 0 825 -513 442 289 -36 744 903 10 220 0 -514 48 412 7 0 7429 10 0 916 -515 344 70 24 4542 4743 10 0 690 -516 78 406 -19 3818 3986 10 748 0 -517 329 456 19 1008 1104 10 0 199 -518 157 38 3 4186 4316 10 0 507 -519 374 260 -5 0 7563 10 252 0 -520 297 283 -9 0 7630 10 940 0 -521 210 113 -17 2778 2864 10 77 0 -522 215 434 9 752 909 10 0 665 -523 262 92 25 2507 2657 10 0 853 -524 140 108 29 0 7508 10 0 525 -525 235 108 -29 4307 4449 10 524 0 -526 210 133 -23 2767 2862 10 867 0 -527 25 53 23 4088 4193 10 0 460 -528 339 113 14 3050 3154 10 0 695 -529 394 310 -27 4410 4498 10 604 0 -530 126 391 -22 0 7500 10 957 0 -531 343 34 7 2882 3036 10 0 148 -532 354 416 -26 2719 2836 10 481 0 -533 202 391 30 2497 2611 10 0 307 -534 367 97 17 0 7495 10 0 256 -535 188 151 7 5223 5270 10 0 553 -536 111 178 18 593 659 10 0 709 -537 456 157 -24 5788 5972 10 630 0 -538 441 7 20 1563 1690 10 0 151 -539 270 337 -7 7160 7222 10 154 0 -540 323 29 -28 4533 4687 10 712 0 -541 200 78 31 3981 4080 10 0 376 -542 330 281 14 5336 5427 10 0 881 -543 438 488 18 1304 1433 10 0 335 -544 161 416 25 0 7499 10 0 290 -545 30 97 -30 4851 4951 10 499 0 -546 273 70 -8 2458 2617 10 39 0 -547 214 245 8 0 7651 10 0 16 -548 221 291 -21 184 305 10 807 0 -549 79 467 22 1400 1531 10 0 187 -550 423 315 12 0 7503 10 0 837 -551 395 474 -32 1545 1670 10 271 0 -552 481 207 34 3447 3521 10 0 669 -553 199 203 -7 0 7618 10 535 0 -554 497 483 12 1407 1541 10 0 592 -555 449 428 25 4966 5129 10 0 999 -556 100 266 5 0 7537 10 0 498 -557 214 274 24 5490 5583 10 0 184 -558 16 68 11 0 7391 10 0 17 -559 475 198 20 3335 3466 10 0 949 -560 371 427 -18 3811 3974 10 96 0 -561 62 375 16 1410 1500 10 0 610 -562 163 472 -25 2611 2736 10 494 0 -563 13 314 14 985 1086 10 0 602 -564 376 385 12 640 837 10 0 172 -565 231 29 -31 4896 5035 10 915 0 -566 89 358 -27 4950 5147 10 973 0 -567 331 356 -25 0 7554 10 578 0 -568 365 190 -16 5897 6043 10 105 0 -569 256 441 -10 722 807 10 203 0 -570 120 37 -14 0 7438 10 104 0 -571 349 43 26 855 980 10 0 274 -572 230 487 -8 0 7450 10 20 0 -573 489 457 -18 0 7371 10 993 0 -574 341 72 9 3243 3315 10 0 944 -575 181 441 25 2177 2278 10 0 144 -576 306 229 -25 0 7628 10 704 0 -577 492 326 -21 4863 4890 10 227 0 -578 347 459 25 1931 2024 10 0 567 -579 66 88 -16 3302 3455 10 611 0 -580 272 234 -27 6353 6489 10 693 0 -581 134 194 19 6631 6703 10 0 414 -582 320 211 -19 0 7607 10 739 0 -583 214 311 14 225 341 10 0 736 -584 489 274 31 2132 2258 10 0 303 -585 231 410 -3 0 7526 10 607 0 -586 432 199 -14 0 7498 10 381 0 -587 29 358 23 2425 2581 10 0 103 -588 62 236 29 2238 2345 10 0 267 -589 333 163 -22 4973 5068 10 478 0 -590 364 71 -20 5374 5533 10 153 0 -591 125 65 -8 3170 3257 10 981 0 -592 429 476 -12 2314 2392 10 554 0 -593 161 275 -11 5370 5524 10 895 0 -594 365 274 -15 395 545 10 73 0 -595 117 110 -18 3898 4052 10 701 0 -596 166 345 -34 4517 4642 10 250 0 -597 345 146 -13 5727 5905 10 408 0 -598 324 99 -31 1368 1455 10 624 0 -599 72 477 -21 0 7399 10 364 0 -600 487 320 21 3448 3534 10 0 320 -601 120 17 -35 0 7421 10 939 0 -602 1 252 -14 1103 1218 10 563 0 -603 303 186 -26 0 7604 10 323 0 -604 428 302 27 0 7502 10 0 529 -605 264 135 1 3525 3630 0 0 1008 -606 223 178 20 0 7611 10 0 679 -607 174 347 3 4047 4191 10 0 585 -608 238 123 24 0 7560 10 0 141 -609 187 61 19 2155 2325 10 0 913 -610 52 303 -16 1750 1899 10 561 0 -611 89 185 16 2401 2517 10 0 579 -612 341 59 -2 3156 3282 10 770 0 -613 89 65 -11 2863 3019 10 236 0 -614 495 355 3 4981 5084 10 0 759 -615 368 452 -16 2673 2806 10 346 0 -616 164 473 26 1149 1340 10 0 315 -617 171 34 -23 4579 4685 10 938 0 -618 114 460 -3 4371 4437 10 959 0 -619 224 3 -16 2774 2869 10 985 0 -620 472 57 -13 0 7393 10 64 0 -621 448 404 -18 2407 2505 10 840 0 -622 390 120 -27 4036 4117 10 885 0 -623 386 225 -32 3654 3815 10 708 0 -624 301 239 31 169 248 10 0 598 -625 115 296 -16 6112 6239 10 979 0 -626 69 266 -21 2997 3190 10 996 0 -627 115 395 -32 3274 3368 10 129 0 -628 68 53 -15 0 7419 10 12 0 -629 33 268 -25 2751 2936 10 292 0 -630 450 45 24 2005 2144 10 0 537 -631 351 5 -28 1997 2091 10 325 0 -632 351 148 -13 0 7544 10 429 0 -633 80 458 -15 1515 1569 10 653 0 -634 60 5 18 4166 4304 10 0 796 -635 10 407 -7 1758 1838 10 788 0 -636 497 18 -22 4520 4641 10 496 0 -637 437 98 16 4480 4549 10 0 27 -638 130 494 6 3036 3154 10 0 930 -639 391 202 14 517 674 10 0 871 -640 43 210 -21 0 7477 10 302 0 -641 381 457 -25 1895 1991 10 18 0 -642 449 190 -23 4533 4707 10 720 0 -643 429 169 8 3607 3735 10 0 3 -644 105 140 -12 678 779 10 22 0 -645 282 10 30 5031 5181 10 0 138 -646 20 480 25 2297 2385 10 0 171 -647 61 170 20 4010 4156 10 0 962 -648 210 81 2 0 7514 10 0 965 -649 87 311 7 0 7513 10 0 799 -650 309 29 11 0 7459 10 0 92 -651 397 57 17 5876 6052 10 0 878 -652 337 232 -20 6266 6418 10 873 0 -653 262 369 15 513 641 10 0 633 -654 41 232 -11 0 7478 10 689 0 -655 69 414 -19 5007 5220 10 456 0 -656 149 98 -28 4664 4777 10 8 0 -657 207 487 4 0 7447 10 0 177 -658 366 260 -27 0 7571 10 831 0 -659 497 54 14 3918 4027 10 0 63 -660 210 379 12 0 7552 10 0 392 -661 437 19 -15 4047 4185 10 923 0 -662 181 260 -18 0 7618 10 57 0 -663 125 61 26 2460 2554 10 0 350 -664 368 311 -12 0 7555 10 374 0 -665 80 400 -9 5772 5918 10 522 0 -666 75 118 -1 1629 1763 10 89 0 -667 171 303 -21 6334 6501 10 284 0 -668 80 251 14 1215 1334 10 0 795 -669 455 168 -34 3501 3554 10 552 0 -670 215 129 -44 4479 4589 10 237 0 -671 179 318 2 0 7589 10 0 889 -672 187 73 -10 1154 1303 10 41 0 -673 394 47 5 1223 1401 10 0 102 -674 31 175 -34 0 7456 10 142 0 -675 339 144 -23 0 7549 10 217 0 -676 492 34 -26 3242 3362 10 705 0 -677 387 349 -12 0 7518 10 479 0 -678 142 372 -29 0 7525 10 833 0 -679 291 213 -20 5018 5163 10 606 0 -680 421 387 15 0 7468 10 0 854 -681 274 403 -14 3526 3693 10 1 0 -682 434 359 -19 5585 5673 10 371 0 -683 257 57 18 4913 5015 10 0 300 -684 428 202 -13 3627 3723 10 975 0 -685 355 174 33 2847 2996 10 0 761 -686 46 389 -12 0 7441 10 1000 0 -687 44 440 -18 0 7407 10 731 0 -688 491 369 28 2891 3065 10 0 715 -689 33 286 11 0 7468 10 0 654 -690 351 128 -24 5010 5136 10 515 0 -691 485 428 -21 5977 6062 10 135 0 -692 273 149 14 5987 6154 10 0 402 -693 447 184 27 0 7480 10 0 580 -694 386 245 16 0 7551 10 0 410 -695 323 77 -14 5590 5771 10 528 0 -696 21 70 15 3065 3224 10 0 868 -697 9 101 -25 0 7404 10 406 0 -698 71 304 19 2745 2888 10 0 329 -699 43 360 2 3339 3463 10 0 810 -700 396 417 13 0 7466 10 0 714 -701 158 24 18 2419 2590 10 0 595 -702 164 320 -9 0 7577 10 131 0 -703 195 386 13 508 666 10 0 458 -704 306 235 25 172 291 10 0 576 -705 66 314 26 723 835 10 0 676 -706 95 64 4 3083 3164 10 0 452 -707 348 348 -15 0 7549 10 989 0 -708 495 83 32 1734 1912 10 0 623 -709 61 214 -18 1309 1545 10 536 0 -710 240 240 -13 6820 6897 10 107 0 -711 140 137 32 2276 2401 10 0 140 -712 242 106 28 0 7543 10 0 540 -713 392 491 10 4542 4641 10 0 434 -714 342 481 -13 5769 5871 10 700 0 -715 478 300 -28 3589 3648 10 688 0 -716 299 285 -17 4991 5160 10 846 0 -717 481 84 -31 2011 2154 10 145 0 -718 271 128 12 1378 1507 10 0 952 -719 484 224 7 0 7452 10 0 928 -720 441 177 23 4022 4107 10 0 642 -721 46 163 8 3734 3795 10 0 746 -722 493 493 -8 3457 3515 10 123 0 -723 253 74 -15 5375 5546 10 289 0 -724 390 34 -10 4201 4401 10 347 0 -725 374 306 -29 3992 4081 10 28 0 -726 436 295 -20 2136 2211 10 904 0 -727 371 315 -16 4679 4767 10 162 0 -728 27 464 21 0 7378 10 0 907 -729 3 471 13 2828 2979 10 0 822 -730 418 269 -25 0 7518 10 127 0 -731 90 477 18 0 7410 10 0 687 -732 141 426 -18 2110 2261 10 155 0 -733 418 251 -26 4770 4925 10 167 0 -734 57 183 -18 4375 4548 10 139 0 -735 29 462 -6 5256 5340 10 231 0 -736 55 318 -14 1250 1365 10 583 0 -737 18 24 -25 2551 2596 10 906 0 -738 263 153 12 1628 1791 10 0 782 -739 289 220 19 145 248 10 0 582 -740 84 255 13 1096 1280 10 0 476 -741 159 299 -1 0 7584 10 208 0 -742 485 104 21 3162 3314 10 0 185 -743 178 135 -28 6044 6187 10 158 0 -744 389 255 -24 0 7548 10 917 0 -745 457 280 17 4013 4105 10 0 356 -746 171 24 -8 0 7448 10 721 0 -747 330 371 -8 2213 2375 10 221 0 -748 10 237 19 0 7447 10 0 516 -749 458 213 -27 0 7476 10 794 0 -750 257 391 22 6547 6637 0 0 1004 -751 482 184 -18 4437 4538 10 311 0 -752 222 331 -22 2158 2279 10 349 0 -753 332 5 -27 4110 4272 10 491 0 -754 47 208 -5 924 1007 10 76 0 -755 489 437 29 0 7384 10 0 58 -756 165 59 27 3762 3901 10 0 190 -757 211 446 -18 0 7488 10 196 0 -758 225 488 -3 0 7448 10 431 0 -759 355 485 -3 5887 6066 10 614 0 -760 441 374 -18 873 1034 10 6 0 -761 399 175 -33 3020 3076 10 685 0 -762 103 464 -9 0 7428 10 924 0 -763 244 13 24 4068 4156 10 0 427 -764 51 360 13 0 7460 10 0 855 -765 44 115 24 944 1027 10 0 909 -766 312 453 6 0 7475 10 0 183 -767 64 198 10 4346 4482 10 0 336 -768 67 451 -33 0 7416 10 984 0 -769 371 71 -14 0 7471 10 793 0 -770 439 156 2 2101 2225 10 0 612 -771 105 474 27 1883 2003 10 0 887 -772 366 288 -9 0 7565 10 287 0 -773 415 207 -7 3588 3731 10 443 0 -774 58 39 -3 4615 4808 10 918 0 -775 197 202 -23 4784 4966 10 824 0 -776 442 5 -12 1262 1421 10 67 0 -777 71 12 -22 1177 1286 10 826 0 -778 74 215 -21 0 7508 10 953 0 -779 347 192 18 5930 6096 10 0 230 -780 178 420 18 4290 4401 10 0 912 -781 186 135 24 0 7556 10 0 165 -782 176 199 -12 0 7598 10 738 0 -783 438 5 -21 2201 2311 10 116 0 -784 150 68 23 1710 1793 10 0 310 -785 185 434 -15 2326 2383 10 313 0 -786 215 79 5 860 1048 10 0 180 -787 177 486 -24 6397 6501 10 843 0 -788 49 437 7 1698 1842 10 0 635 -789 100 66 15 5543 5775 10 0 480 -790 35 344 -30 3418 3607 10 892 0 -791 433 447 20 3179 3294 10 0 195 -792 372 97 -24 0 7492 10 990 0 -793 344 203 14 708 751 10 0 769 -794 423 170 27 2022 2203 10 0 749 -795 171 188 -14 2481 2604 10 668 0 -796 64 5 -18 4493 4658 10 634 0 -797 371 163 21 3328 3414 0 0 1005 -798 398 210 -5 0 7534 10 500 0 -799 48 437 -7 0 7412 10 649 0 -800 392 1 11 2419 2543 10 0 25 -801 195 464 -23 0 7467 10 281 0 -802 211 248 26 69 243 10 0 37 -803 293 228 19 133 253 10 0 396 -804 23 235 -22 4086 4220 10 327 0 -805 213 185 21 0 7613 10 0 216 -806 172 292 17 370 485 10 0 394 -807 228 287 21 97 248 10 0 548 -808 387 394 8 0 7489 10 0 896 -809 374 232 -15 0 7562 10 261 0 -810 48 366 -2 0 7455 10 699 0 -811 44 311 -20 1631 1749 10 54 0 -812 447 272 12 0 7489 10 0 864 -813 132 477 25 0 7432 10 0 214 -814 80 117 -35 3328 3385 10 368 0 -815 11 403 18 1416 1448 10 0 492 -816 144 220 35 0 7577 10 0 823 -817 473 491 23 1654 1772 10 0 213 -818 210 219 -31 0 7637 10 866 0 -819 452 484 26 5136 5212 10 0 211 -820 365 28 9 0 7437 10 0 342 -821 498 456 -17 5611 5757 10 468 0 -822 84 453 -13 4911 4993 10 729 0 -823 91 427 -35 3548 3633 10 816 0 -824 178 72 23 3035 3139 10 0 775 -825 409 155 -30 675 807 10 512 0 -826 132 151 22 0 7533 10 0 777 -827 136 430 -45 2828 2973 10 175 0 -828 292 104 26 1227 1324 10 0 357 -829 443 167 -31 2211 2254 10 262 0 -830 321 149 -15 5683 5834 10 245 0 -831 235 13 27 1412 1578 10 0 658 -832 166 440 12 772 890 10 0 941 -833 112 433 29 946 1055 10 0 678 -834 452 172 -25 0 7471 10 428 0 -835 37 281 17 1940 2125 10 0 845 -836 414 378 23 1961 2117 10 0 189 -837 475 352 -12 0 7440 10 550 0 -838 400 71 -12 5522 5574 10 983 0 -839 286 244 -6 5150 5242 10 378 0 -840 429 389 18 1700 1812 10 0 621 -841 92 76 -17 4598 4634 10 463 0 -842 124 111 15 0 7500 10 0 326 -843 268 458 24 0 7479 10 0 787 -844 352 63 -21 4718 4827 10 423 0 -845 49 118 -17 0 7447 10 835 0 -846 398 329 17 646 697 10 0 716 -847 382 9 -9 1118 1176 10 850 0 -848 229 322 -29 6635 6767 10 874 0 -849 279 355 -17 0 7579 10 181 0 -850 266 221 9 80 185 10 0 847 -851 142 80 -33 1980 2076 10 306 0 -852 359 287 24 0 7572 10 0 242 -853 482 104 -25 0 7413 10 523 0 -854 284 457 -15 6018 6090 10 680 0 -855 64 294 -13 4402 4528 10 764 0 -856 404 59 -30 0 7442 10 948 0 -857 68 160 -16 0 7484 10 108 0 -858 211 411 -30 4631 4662 10 251 0 -859 30 155 9 5129 5235 10 0 42 -860 240 34 -14 6247 6349 10 147 0 -861 107 374 -20 3642 3792 10 161 0 -862 404 140 -23 5063 5126 10 903 0 -863 436 467 -35 2950 3059 10 163 0 -864 421 386 -12 0 7469 10 812 0 -865 182 480 31 0 7448 10 0 134 -866 9 233 31 1227 1343 10 0 818 -867 110 251 23 2007 2095 10 0 526 -868 19 38 -15 3376 3521 10 696 0 -869 46 248 -40 3237 3394 10 931 0 -870 308 199 -22 5986 6201 10 65 0 -871 423 221 -14 1022 1164 10 639 0 -872 313 391 5 600 716 10 0 260 -873 413 345 20 4872 4993 10 0 652 -874 278 450 29 5504 5615 10 0 848 -875 94 497 -8 3132 3246 10 218 0 -876 7 382 27 3053 3231 10 0 202 -877 493 111 -1 2162 2286 10 373 0 -878 392 87 -17 0 7471 10 651 0 -879 13 394 15 0 7410 10 0 426 -880 259 301 25 383 528 10 0 264 -881 351 233 -14 5692 5811 10 542 0 -882 313 493 20 0 7436 10 0 950 -883 65 62 15 3883 4048 10 0 10 -884 417 212 12 0 7516 10 0 4 -885 450 194 27 2495 2623 10 0 622 -886 470 138 -12 5531 5704 10 78 0 -887 190 267 -27 7024 7126 10 771 0 -888 248 214 -20 5955 5999 10 994 0 -889 50 383 -2 1056 1145 10 671 0 -890 244 422 14 2134 2288 10 0 982 -891 60 29 -23 0 7396 10 421 0 -892 5 445 30 1230 1377 10 0 790 -893 490 276 -25 0 7446 10 968 0 -894 441 100 -6 0 7445 10 244 0 -895 162 388 11 4545 4584 10 0 593 -896 244 277 -8 5204 5326 10 808 0 -897 406 408 15 5799 5971 10 0 201 -898 265 240 9 21 123 10 0 11 -899 130 186 16 513 656 10 0 911 -900 382 110 -27 4427 4592 10 367 0 -901 142 14 -12 3349 3452 10 960 0 -902 352 487 -19 0 7429 10 961 0 -903 307 52 23 3703 3781 10 0 862 -904 418 399 20 1739 1882 10 0 726 -905 196 56 -25 2398 2597 10 257 0 -906 66 31 25 0 7401 10 0 737 -907 90 496 -21 5617 5665 10 728 0 -908 480 136 22 0 7431 10 0 942 -909 65 82 -24 2966 3071 10 765 0 -910 48 293 22 1120 1208 10 0 409 -911 105 181 -16 0 7527 10 899 0 -912 215 282 -18 5764 5879 10 780 0 -913 257 133 -19 3418 3600 10 609 0 -914 77 465 11 1029 1179 10 0 88 -915 43 135 31 0 7451 10 0 565 -916 27 444 -7 4290 4472 10 514 0 -917 357 290 24 0 7573 10 0 744 -918 38 15 3 0 7371 10 0 774 -919 80 337 28 4483 4590 10 0 209 -920 36 451 -34 3538 3692 10 93 0 -921 291 251 20 129 200 10 0 314 -922 195 111 -13 3991 4114 10 114 0 -923 383 17 15 3765 3879 10 0 661 -924 53 466 9 1332 1468 10 0 762 -925 114 102 -22 2058 2121 10 44 0 -926 350 199 21 4787 4945 10 0 35 -927 405 349 15 0 7504 10 0 945 -928 472 248 -7 0 7465 10 719 0 -929 333 293 27 2494 2563 10 0 462 -930 174 397 -6 4978 5099 10 638 0 -931 2 264 40 2617 2739 10 0 869 -932 7 82 25 1643 1770 10 0 51 -933 34 329 -4 4172 4292 10 160 0 -934 158 179 -16 373 557 10 59 0 -935 421 499 -26 5363 5519 10 247 0 -936 345 431 12 0 7483 10 0 389 -937 370 262 -35 4371 4545 10 254 0 -938 77 172 23 0 7498 10 0 617 -939 87 51 35 0 7430 10 0 601 -940 468 352 9 3031 3235 10 0 520 -941 63 420 -12 2071 2206 10 832 0 -942 347 184 -22 4316 4433 10 908 0 -943 206 174 -29 3201 3318 10 947 0 -944 209 212 -9 6142 6200 10 574 0 -945 466 362 -15 4595 4744 10 927 0 -946 201 278 13 170 282 10 0 501 -947 206 172 29 3131 3293 10 0 943 -948 471 94 30 3994 4117 10 0 856 -949 331 134 -20 4479 4631 10 559 0 -950 274 261 -20 6817 6959 10 882 0 -951 219 215 32 116 259 10 0 490 -952 349 76 -12 4121 4244 10 718 0 -953 86 189 21 906 1028 10 0 778 -954 336 493 20 5960 6103 10 0 964 -955 7 194 -19 3784 3947 10 277 0 -956 492 335 10 3316 3430 10 0 487 -957 248 386 22 1510 1636 10 0 530 -958 463 406 23 0 7423 10 0 200 -959 199 438 3 0 7493 10 0 618 -960 135 30 12 0 7439 10 0 901 -961 447 267 19 3910 4046 10 0 902 -962 235 33 -20 0 7470 10 647 0 -963 63 155 7 3856 3981 10 0 243 -964 294 421 -20 6292 6431 10 954 0 -965 318 99 -2 4854 4969 10 648 0 -966 21 146 21 1941 2073 10 0 331 -967 30 7 -8 4734 4895 10 169 0 -968 410 399 25 983 1007 10 0 893 -969 405 187 -11 4994 5131 10 502 0 -970 109 56 -25 905 1013 10 204 0 -971 212 47 20 0 7481 10 0 309 -972 479 387 13 1620 1680 10 0 388 -973 167 291 27 0 7595 10 0 566 -974 259 498 33 0 7439 10 0 246 -975 461 182 13 2540 2612 10 0 684 -976 277 428 7 1931 2112 10 0 352 -977 290 328 7 555 714 10 0 483 -978 146 313 -3 4793 4890 10 489 0 -979 40 304 16 4559 4718 10 0 625 -980 56 268 -27 4268 4364 10 280 0 -981 104 28 8 0 7422 10 0 591 -982 370 493 -14 0 7416 10 890 0 -983 136 265 12 390 530 10 0 838 -984 247 306 33 182 266 10 0 768 -985 241 38 16 2127 2246 10 0 619 -986 180 162 9 653 855 10 0 80 -987 253 118 -23 2191 2307 10 193 0 -988 413 391 -26 876 981 10 351 0 -989 380 350 15 3462 3589 10 0 707 -990 391 112 24 4039 4084 10 0 792 -991 86 199 23 1114 1228 10 0 293 -992 91 326 -20 0 7511 10 401 0 -993 287 256 18 61 239 10 0 573 -994 203 211 20 5241 5330 10 0 888 -995 79 80 19 5527 5650 10 0 400 -996 32 319 21 1621 1703 10 0 626 -997 167 445 -24 0 7476 10 126 0 -998 439 237 11 3811 3817 10 0 248 -999 373 418 -25 5034 5161 10 555 0 -1000 26 342 12 1298 1390 10 0 686 -1001 222 499 -7 0 7437 10 13 0 -1002 137 377 -23 0 7518 10 393 0 -1003 83 290 -14 2421 2560 10 482 0 -1004 257 391 -22 6547 6637 10 750 0 -1005 371 163 -21 3328 3414 10 797 0 -1006 325 147 -14 0 7560 10 467 0 -1007 246 314 -36 5773 5910 10 87 0 -1008 264 135 -1 3525 3630 10 605 0 diff --git a/jsprit-instances/instances/lilim/1000/LR2103.txt b/jsprit-instances/instances/lilim/1000/LR2103.txt deleted file mode 100644 index 86a2b627e..000000000 --- a/jsprit-instances/instances/lilim/1000/LR2103.txt +++ /dev/null @@ -1,1012 +0,0 @@ -250 1000 1 -0 250 250 0 0 7697 0 0 0 -1 228 399 14 2329 2482 10 0 144 -2 325 56 -31 0 7480 10 145 0 -3 290 145 5 5130 5242 10 0 191 -4 340 291 -14 1893 1991 10 542 0 -5 370 382 -26 0 7509 10 819 0 -6 273 255 18 0 7664 10 0 664 -7 36 301 21 0 7468 10 0 996 -8 117 178 -15 4484 4574 10 138 0 -9 295 283 26 3538 3728 10 0 895 -10 57 43 15 0 7404 10 0 909 -11 436 123 40 835 966 10 0 409 -12 48 162 15 0 7467 10 0 795 -13 222 499 7 0 7437 10 0 843 -14 376 92 -10 0 7485 10 636 0 -15 437 90 12 0 7441 10 0 344 -16 3 23 11 1550 1702 10 0 796 -17 94 40 -14 4278 4387 10 407 0 -18 398 476 -7 0 7417 10 128 0 -19 307 249 10 0 7630 10 0 452 -20 179 286 8 1380 1469 10 0 544 -21 0 356 13 0 7416 0 0 1010 -22 143 158 12 0 7546 10 0 497 -23 413 476 34 4729 4823 10 0 195 -24 371 488 10 2285 2497 10 0 352 -25 415 118 19 0 7476 10 0 429 -26 440 77 14 0 7431 10 0 620 -27 261 201 -20 6060 6172 10 537 0 -28 490 286 29 2073 2224 10 0 727 -29 309 161 23 2287 2499 10 0 761 -30 39 162 -10 0 7459 10 778 0 -31 361 178 -17 3903 3996 10 490 0 -32 261 138 1 0 7575 10 0 369 -33 447 383 17 889 1013 10 0 750 -34 346 354 -16 3260 3399 10 615 0 -35 461 195 -34 0 7469 10 969 0 -36 187 263 -15 0 7623 10 696 0 -37 130 247 17 0 7567 10 0 384 -38 328 491 -7 2702 2845 10 453 0 -39 161 276 -36 476 711 10 887 0 -40 365 74 24 3379 3529 10 0 763 -41 168 109 10 810 944 10 0 558 -42 111 192 -12 0 7537 10 774 0 -43 87 213 18 0 7520 10 0 647 -44 45 166 22 0 7466 10 0 990 -45 62 94 -15 0 7443 10 240 0 -46 348 476 19 0 7441 10 0 982 -47 64 437 11 0 7424 10 0 291 -48 56 75 24 0 7426 10 0 789 -49 24 259 -21 0 7461 10 857 0 -50 295 247 -24 5212 5335 10 141 0 -51 6 53 -32 0 7374 10 891 0 -52 15 11 -9 0 7352 10 986 0 -53 179 497 1 0 7430 10 0 474 -54 67 352 20 1514 1592 10 0 587 -55 317 45 8 0 7472 10 0 692 -56 40 278 -15 0 7476 10 734 0 -57 33 278 -7 5910 6108 10 963 0 -58 322 290 -22 0 7605 10 331 0 -59 159 226 16 314 439 10 0 466 -60 208 445 22 0 7488 10 0 187 -61 453 360 13 858 990 10 0 189 -62 34 169 -16 0 7457 10 611 0 -63 436 25 19 5113 5266 10 0 675 -64 393 98 -10 3013 3127 10 298 0 -65 466 96 -10 0 7422 10 576 0 -66 366 390 23 5266 5400 10 0 927 -67 303 78 -23 0 7508 10 475 0 -68 374 116 -21 0 7505 10 742 0 -69 424 288 -15 0 7509 10 214 0 -70 191 84 -23 0 7511 10 193 0 -71 59 276 11 0 7495 10 0 979 -72 215 293 13 128 315 10 0 192 -73 343 276 15 321 451 10 0 893 -74 488 173 -15 4836 4966 10 245 0 -75 452 110 14 0 7442 10 0 862 -76 153 244 -10 0 7590 10 767 0 -77 176 200 17 2266 2394 10 0 165 -78 498 171 12 0 7427 10 0 838 -79 492 188 -13 2904 2939 10 975 0 -80 177 156 -19 0 7568 10 913 0 -81 398 49 -16 3167 3288 10 91 0 -82 497 296 -11 0 7436 10 928 0 -83 276 84 20 0 7519 10 0 670 -84 128 113 -20 0 7504 10 553 0 -85 422 498 5 0 7386 10 0 358 -86 460 424 -25 5786 5970 10 555 0 -87 246 314 -13 5773 5910 10 484 0 -88 0 422 -16 3300 3388 10 108 0 -89 166 247 1 291 382 10 0 387 -90 311 422 29 0 7505 10 0 374 -91 392 95 16 3060 3189 10 0 81 -92 460 117 -34 0 7439 10 552 0 -93 28 467 -20 0 7377 10 469 0 -94 375 145 12 3719 3836 10 0 432 -95 240 255 33 6404 6604 0 0 1005 -96 440 436 -17 3549 3706 10 468 0 -97 454 201 -16 5218 5342 10 178 0 -98 407 35 -9 0 7421 10 898 0 -99 420 383 27 0 7472 10 0 749 -100 264 180 33 0 7616 10 0 215 -101 440 294 -24 3836 3966 10 852 0 -102 500 228 8 3137 3237 10 0 223 -103 144 331 13 3709 3860 10 0 294 -104 98 2 -18 2361 2493 10 901 0 -105 461 186 16 0 7467 10 0 669 -106 68 450 -15 0 7417 10 516 0 -107 153 192 13 0 7574 10 0 414 -108 34 239 16 896 975 10 0 88 -109 465 367 14 4087 4248 10 0 691 -110 208 488 22 1934 2007 10 0 896 -111 93 413 -5 849 961 10 316 0 -112 371 332 14 0 7541 10 0 410 -113 231 167 15 246 435 10 0 784 -114 179 75 13 2982 3057 10 0 295 -115 196 489 -11 4135 4226 10 914 0 -116 280 245 -44 0 7657 10 237 0 -117 108 37 23 0 7432 10 0 485 -118 1 101 -27 5021 5158 10 970 0 -119 420 80 -11 0 7447 10 650 0 -120 38 190 23 0 7467 10 0 239 -121 470 405 17 3694 3832 10 0 560 -122 448 397 -18 0 7441 10 840 0 -123 471 427 -13 0 7404 10 972 0 -124 146 376 8 928 1066 10 0 131 -125 12 358 7 4891 5024 10 0 329 -126 175 422 -17 5771 5920 10 330 0 -127 297 131 -18 4640 4803 10 345 0 -128 457 492 7 0 7369 10 0 18 -129 69 423 32 0 7437 10 0 209 -130 97 288 -13 5142 5251 10 736 0 -131 172 314 -8 0 7587 10 124 0 -132 170 347 15 1764 1842 10 0 150 -133 103 123 8 1966 2072 10 0 792 -134 154 374 36 0 7531 10 0 698 -135 318 497 21 0 7431 10 0 539 -136 330 147 28 3383 3525 10 0 534 -137 241 180 13 6789 6887 10 0 273 -138 174 67 15 0 7489 10 0 8 -139 235 288 -9 0 7647 10 522 0 -140 94 192 -33 0 7521 10 306 0 -141 232 101 24 1405 1483 10 0 50 -142 28 180 34 1551 1653 10 0 348 -143 64 135 11 3495 3571 10 0 628 -144 174 376 -14 0 7540 10 1 0 -145 293 174 31 279 420 10 0 2 -146 218 12 3 2204 2268 10 0 782 -147 110 122 -31 0 7498 10 866 0 -148 459 53 20 0 7400 10 0 274 -149 173 474 -14 0 7451 10 823 0 -150 135 400 -15 0 7498 10 132 0 -151 497 266 25 2996 3104 10 0 715 -152 380 194 3 0 7546 10 0 487 -153 495 227 -10 0 7441 10 347 0 -154 268 351 -10 6698 6822 10 759 0 -155 213 399 18 941 1051 10 0 572 -156 448 414 -15 0 7430 10 211 0 -157 327 139 -24 5021 5158 10 674 0 -158 151 81 28 0 7492 10 0 652 -159 425 448 9 3152 3324 10 0 200 -160 92 259 4 0 7529 10 0 689 -161 59 388 -19 2650 2772 10 495 0 -162 468 360 -14 0 7443 10 334 0 -163 332 459 -7 0 7463 10 977 0 -164 469 489 -15 2211 2353 10 313 0 -165 248 176 -17 5579 5753 10 77 0 -166 174 41 -13 0 7465 10 383 0 -167 343 205 26 3081 3178 10 0 744 -168 154 392 -7 0 7516 10 464 0 -169 92 18 8 0 7407 10 0 225 -170 250 328 -10 0 7609 10 315 0 -171 88 484 5 0 7403 10 0 627 -172 360 488 19 1252 1393 10 0 359 -173 156 65 22 4143 4275 10 0 581 -174 18 225 -28 2757 2893 10 398 0 -175 152 476 45 2112 2188 10 0 333 -176 176 470 -12 0 7455 10 702 0 -177 195 450 -13 5946 6061 10 946 0 -178 466 149 16 4761 4848 10 0 97 -179 221 269 -16 0 7653 10 184 0 -180 105 137 32 0 7504 10 0 504 -181 284 319 -21 3270 3384 10 284 0 -182 41 120 -3 2791 2897 10 845 0 -183 263 418 -22 0 7519 10 957 0 -184 218 271 16 6280 6429 10 0 179 -185 365 119 -19 0 7513 10 342 0 -186 89 322 -2 4099 4186 10 307 0 -187 180 283 -22 2963 3107 10 60 0 -188 385 17 40 3186 3404 10 0 571 -189 401 314 -13 3875 4057 10 61 0 -190 245 176 20 4943 5055 10 0 881 -191 251 238 -5 0 7675 10 3 0 -192 139 438 -13 865 966 10 72 0 -193 236 126 23 400 598 10 0 70 -194 61 441 27 2201 2268 10 0 764 -195 405 454 -34 0 7431 10 23 0 -196 111 392 -12 4693 4780 10 741 0 -197 373 421 -26 939 1080 10 481 0 -198 247 443 -8 0 7494 10 218 0 -199 322 406 17 0 7516 10 0 532 -200 412 478 -9 3851 3946 10 159 0 -201 374 346 -15 0 7531 10 680 0 -202 122 422 3 0 7473 10 0 833 -203 261 359 -14 0 7578 10 355 0 -204 173 182 25 383 438 10 0 934 -205 398 341 33 0 7514 10 0 459 -206 413 127 -18 0 7483 10 311 0 -207 325 311 -27 5290 5409 10 243 0 -208 80 357 -26 2093 2271 10 802 0 -209 67 378 -32 0 7464 10 129 0 -210 216 341 19 0 7590 10 0 660 -211 498 457 15 0 7364 10 0 156 -212 44 344 12 0 7461 10 0 980 -213 352 481 15 5136 5261 10 0 954 -214 237 420 15 0 7517 10 0 69 -215 389 43 -33 0 7438 10 100 0 -216 292 136 28 0 7566 10 0 299 -217 426 38 23 0 7412 10 0 800 -218 245 461 8 0 7476 10 0 198 -219 415 253 -8 0 7522 10 221 0 -220 298 264 36 147 253 10 0 254 -221 307 412 8 0 7516 10 0 219 -222 53 204 8 4206 4354 10 0 318 -223 480 152 -8 0 7437 10 102 0 -224 262 97 17 0 7534 10 0 546 -225 83 169 -8 0 7502 10 169 0 -226 377 432 20 0 7466 10 0 389 -227 390 249 -33 0 7547 10 809 0 -228 132 479 11 997 1063 10 0 827 -229 359 246 -33 5725 5777 10 339 0 -230 314 205 -15 6086 6249 10 289 0 -231 124 448 6 0 7453 10 0 974 -232 0 188 -29 0 7430 10 955 0 -233 343 166 28 3512 3616 10 0 949 -234 482 141 -19 4028 4178 10 853 0 -235 162 306 22 494 580 10 0 323 -236 24 71 11 1394 1494 10 0 868 -237 188 119 44 3903 4016 10 0 116 -238 100 85 14 0 7465 10 0 400 -239 103 177 -23 2494 2637 10 120 0 -240 26 67 15 0 7398 10 0 45 -241 164 332 -5 5107 5250 10 317 0 -242 385 285 -27 3478 3586 10 519 0 -243 209 68 27 0 7501 10 0 207 -244 149 341 6 0 7552 10 0 596 -245 415 95 15 4708 4825 10 0 74 -246 167 488 -9 972 1148 10 548 0 -247 413 493 -23 4894 4971 10 817 0 -248 439 222 -21 3929 4028 10 454 0 -249 150 484 -22 2498 2623 10 762 0 -250 299 353 -30 0 7573 10 251 0 -251 273 300 30 153 288 10 0 250 -252 402 277 5 5771 5856 10 0 658 -253 239 15 2 0 7452 10 0 366 -254 363 225 -36 3426 3541 10 220 0 -255 65 343 38 802 976 10 0 635 -256 351 60 15 0 7472 10 0 402 -257 60 246 25 704 816 10 0 699 -258 144 35 26 0 7448 10 0 595 -259 463 253 -10 4171 4325 10 956 0 -260 332 382 2 4037 4167 10 0 479 -261 408 318 15 2558 2707 10 0 582 -262 452 206 31 1958 2099 10 0 885 -263 471 368 19 1718 1827 10 0 621 -264 93 490 2 1527 1626 10 0 377 -265 241 402 11 0 7535 10 0 585 -266 60 231 -35 0 7497 10 368 0 -267 172 66 -2 0 7488 10 648 0 -268 404 207 -21 3634 3771 10 404 0 -269 286 356 30 354 542 10 0 529 -270 489 338 -23 5551 5746 10 707 0 -271 334 481 -3 1323 1440 10 489 0 -272 26 442 -31 0 7392 10 440 0 -273 226 175 -13 6798 6871 10 137 0 -274 488 3 -20 0 7344 10 148 0 -275 178 150 -24 0 7564 10 310 0 -276 371 423 10 810 878 10 0 551 -277 5 224 -9 0 7441 10 869 0 -278 94 344 -12 2746 2832 10 354 0 -279 153 235 10 324 462 10 0 740 -280 12 367 -40 1282 1444 10 931 0 -281 217 357 23 0 7576 10 0 616 -282 255 487 -33 0 7450 10 984 0 -283 149 214 -35 0 7580 10 816 0 -284 169 305 21 0 7590 10 0 181 -285 487 446 9 5360 5482 10 0 950 -286 267 374 -27 0 7562 10 902 0 -287 360 294 9 0 7569 10 0 604 -288 185 431 15 0 7495 10 0 865 -289 325 210 15 0 7602 10 0 230 -290 175 352 -17 6652 6789 10 806 0 -291 76 462 -11 3813 3955 10 47 0 -292 19 273 25 0 7455 10 0 686 -293 72 227 25 2258 2373 10 0 588 -294 213 283 -13 0 7638 10 103 0 -295 130 140 -13 0 7525 10 114 0 -296 274 442 -10 4301 4350 10 445 0 -297 337 41 -5 0 7461 10 590 0 -298 372 39 10 2886 3022 10 0 64 -299 269 112 -28 0 7548 10 216 0 -300 224 56 13 0 7492 10 0 499 -301 340 416 36 1293 1396 10 0 332 -302 13 214 -25 5428 5520 10 406 0 -303 230 320 -28 4770 4887 10 758 0 -304 6 196 -23 4772 4973 10 867 0 -305 87 3 13 0 7392 10 0 634 -306 133 202 33 1827 1978 10 0 140 -307 235 316 2 2616 2751 10 0 186 -308 435 180 37 0 7490 10 0 340 -309 173 65 12 1768 1940 10 0 922 -310 245 42 24 2203 2295 10 0 275 -311 384 149 18 0 7520 10 0 206 -312 51 286 14 0 7485 10 0 662 -313 267 290 15 111 236 10 0 164 -314 453 318 -14 1489 1621 10 594 0 -315 189 402 10 0 7524 10 0 170 -316 210 276 5 138 243 10 0 111 -317 120 261 5 3154 3312 10 0 241 -318 35 263 -8 0 7472 10 222 0 -319 429 59 9 1827 1964 10 0 425 -320 330 308 24 0 7589 0 0 1008 -321 58 391 -22 3528 3651 10 349 0 -322 260 472 -25 4143 4265 10 813 0 -323 217 333 -22 0 7598 10 235 0 -324 335 46 18 5400 5453 10 0 350 -325 198 85 28 1032 1189 10 0 805 -326 138 28 23 4362 4530 10 0 491 -327 29 336 22 0 7450 10 0 1000 -328 200 27 -19 0 7459 10 609 0 -329 157 269 -7 0 7593 10 125 0 -330 177 404 17 0 7517 10 0 126 -331 202 28 22 3733 3860 10 0 58 -332 366 334 -36 0 7544 10 301 0 -333 149 458 -45 0 7456 10 175 0 -334 481 454 14 1278 1406 10 0 162 -335 377 385 -6 3486 3564 10 766 0 -336 217 207 26 0 7633 10 0 381 -337 96 346 26 765 836 10 0 506 -338 224 320 -7 5187 5202 10 976 0 -339 206 97 33 1785 1920 10 0 229 -340 438 127 -37 0 7463 10 308 0 -341 494 468 -12 1417 1523 10 554 0 -342 494 165 19 2401 2553 10 0 185 -343 5 281 16 0 7441 10 0 910 -344 441 60 -12 0 7418 10 15 0 -345 14 232 18 0 7451 10 0 127 -346 288 439 16 1121 1187 10 0 730 -347 420 224 10 1704 1848 10 0 153 -348 267 162 -34 0 7598 10 142 0 -349 195 273 22 156 320 10 0 321 -350 233 230 -18 0 7661 10 324 0 -351 382 360 26 696 849 10 0 688 -352 406 460 -10 2868 3006 10 24 0 -353 499 316 18 0 7430 10 0 577 -354 246 407 12 1235 1377 10 0 278 -355 283 454 14 0 7481 10 0 203 -356 426 231 24 4102 4245 10 0 557 -357 432 2 20 1848 2004 10 0 515 -358 404 439 -5 0 7444 10 85 0 -359 397 477 -19 0 7417 10 172 0 -360 44 140 11 3464 3602 10 0 786 -361 330 138 18 0 7550 10 0 971 -362 39 153 -18 0 7455 10 480 0 -363 397 153 -16 3507 3673 10 899 0 -364 226 316 21 234 328 10 0 780 -365 354 156 -6 0 7547 10 433 0 -366 201 66 -2 0 7497 10 253 0 -367 389 156 27 2851 2993 10 0 528 -368 134 211 35 458 626 10 0 266 -369 386 154 -1 0 7521 10 32 0 -370 335 99 25 0 7514 10 0 415 -371 356 256 -21 0 7581 10 733 0 -372 240 362 23 0 7575 0 0 1006 -373 412 100 -13 0 7467 10 390 0 -374 394 322 -29 4111 4207 10 90 0 -375 48 150 -4 0 7462 10 706 0 -376 225 121 -30 0 7556 10 962 0 -377 102 422 -2 0 7461 10 264 0 -378 339 41 -11 0 7460 10 450 0 -379 440 201 -29 0 7491 10 444 0 -380 411 379 25 4781 4886 10 0 854 -381 219 210 -26 0 7637 10 336 0 -382 250 441 5 0 7496 10 0 757 -383 210 29 13 4213 4314 10 0 166 -384 178 302 -17 3553 3659 10 37 0 -385 148 208 22 0 7577 10 0 654 -386 225 369 38 432 541 10 0 533 -387 16 287 -1 0 7451 10 89 0 -388 450 416 -8 2281 2453 10 988 0 -389 287 397 -20 0 7536 10 226 0 -390 285 247 13 0 7652 10 0 373 -391 351 481 10 1284 1410 10 0 863 -392 243 408 -9 5720 5870 10 562 0 -393 137 377 23 0 7518 10 0 752 -394 33 152 17 5278 5403 0 0 1001 -395 68 303 22 904 987 10 0 889 -396 456 113 17 4922 5015 10 0 568 -397 134 276 -29 0 7569 10 492 0 -398 26 221 28 0 7462 10 0 174 -399 79 257 26 3803 3942 10 0 463 -400 181 185 -14 6436 6594 10 238 0 -401 104 349 -19 4058 4135 10 405 0 -402 267 174 -15 6470 6596 10 256 0 -403 475 267 -13 0 7462 10 573 0 -404 385 239 21 3130 3274 10 0 268 -405 95 382 19 929 1041 10 0 401 -406 67 190 25 0 7495 10 0 302 -407 32 94 14 3707 3854 10 0 17 -408 401 164 -27 0 7514 10 693 0 -409 376 113 -40 0 7501 10 11 0 -410 409 255 -14 0 7528 10 112 0 -411 228 260 -25 6450 6514 10 646 0 -412 363 34 19 0 7444 10 0 769 -413 274 441 -27 0 7495 10 771 0 -414 146 188 -13 0 7566 10 107 0 -415 212 186 -25 6893 6999 10 370 0 -416 432 66 30 0 7429 10 0 531 -417 83 300 26 1987 2131 10 0 876 -418 51 89 -16 0 7432 10 613 0 -419 379 486 22 2679 2815 10 0 935 -420 440 284 -25 0 7494 10 513 0 -421 175 239 23 0 7612 10 0 710 -422 282 1 -14 4184 4276 10 753 0 -423 268 113 21 2734 2823 10 0 574 -424 480 131 5 0 7429 10 0 430 -425 429 67 -9 2938 3040 10 319 0 -426 162 301 -31 6423 6601 10 875 0 -427 281 96 -21 4532 4594 10 953 0 -428 495 199 25 0 7437 10 0 779 -429 372 115 -19 0 7506 10 25 0 -430 396 83 -5 6362 6449 10 424 0 -431 239 486 3 0 7451 10 0 703 -432 288 70 -12 0 7504 10 94 0 -433 66 163 6 1566 1718 10 0 365 -434 470 417 11 0 7411 10 0 945 -435 226 423 15 832 863 10 0 550 -436 342 319 -27 0 7572 10 821 0 -437 174 122 -10 0 7539 10 619 0 -438 49 353 -32 5810 5879 10 458 0 -439 448 495 -12 0 7372 10 936 0 -440 13 465 31 0 7368 10 0 272 -441 489 159 -25 5723 5818 10 704 0 -442 311 203 -19 2892 3008 10 462 0 -443 480 119 -21 2515 2632 10 797 0 -444 442 153 29 4765 4865 10 0 379 -445 148 462 10 2906 3028 10 0 296 -446 233 87 18 966 1174 10 0 746 -447 323 34 -13 0 7459 10 856 0 -448 84 377 -11 3699 3831 10 848 0 -449 292 32 14 888 1066 10 0 597 -450 418 75 11 1807 1896 10 0 378 -451 451 305 -15 0 7479 10 653 0 -452 225 269 -10 5082 5205 10 19 0 -453 272 420 7 0 7516 10 0 38 -454 318 280 21 254 340 10 0 248 -455 250 57 26 0 7494 10 0 781 -456 77 372 -16 0 7476 10 561 0 -457 385 58 24 1661 1697 0 0 1003 -458 44 496 32 0 7367 10 0 438 -459 460 328 -33 872 1001 10 205 0 -460 67 24 10 0 7397 10 0 570 -461 91 27 -25 4699 4874 10 906 0 -462 360 284 19 2660 2792 10 0 442 -463 82 183 -26 4444 4490 10 399 0 -464 153 362 7 4647 4762 10 0 168 -465 52 412 -9 5608 5758 10 924 0 -466 32 191 -16 2344 2465 10 59 0 -467 325 147 -19 0 7560 10 803 0 -468 328 458 17 0 7465 10 0 96 -469 133 273 20 419 535 10 0 93 -470 147 30 26 4424 4565 10 0 905 -471 131 246 -9 3348 3429 10 785 0 -472 433 319 -15 5509 5621 10 937 0 -473 168 59 6 0 7480 10 0 524 -474 218 403 -1 5305 5368 10 53 0 -475 295 89 23 0 7520 10 0 67 -476 118 314 26 1315 1505 10 0 501 -477 251 63 14 3981 4039 10 0 521 -478 388 44 -1 4519 4647 10 605 0 -479 381 328 -2 0 7535 10 260 0 -480 132 32 18 0 7440 10 0 362 -481 334 403 26 620 776 10 0 197 -482 83 290 -5 0 7516 10 602 0 -483 411 396 23 3667 3814 10 0 713 -484 243 402 13 0 7535 10 0 87 -485 52 18 -23 0 7382 10 117 0 -486 265 0 -24 0 7437 10 765 0 -487 268 288 -3 5075 5181 10 152 0 -488 476 61 -5 1780 1930 10 500 0 -489 283 438 3 939 1032 10 0 271 -490 191 215 17 211 338 10 0 31 -491 253 50 -23 0 7487 10 326 0 -492 71 282 29 0 7506 10 0 397 -493 297 304 4 227 345 10 0 958 -494 244 368 -6 0 7569 10 638 0 -495 80 279 19 0 7515 10 0 161 -496 488 96 22 4264 4386 10 0 651 -497 142 30 -12 0 7442 10 22 0 -498 68 240 -43 3176 3300 10 804 0 -499 193 138 -13 0 7562 10 300 0 -500 451 62 5 0 7412 10 0 488 -501 138 406 -26 4892 4956 10 476 0 -502 306 42 11 1944 1989 10 0 985 -503 247 219 -32 0 7656 10 589 0 -504 98 29 -32 4209 4284 10 180 0 -505 102 6 -21 0 7402 10 743 0 -506 142 360 -26 0 7533 10 337 0 -507 172 24 -27 5814 5924 10 612 0 -508 352 241 5 3178 3280 10 0 745 -509 486 324 15 0 7440 10 0 739 -510 133 455 25 0 7451 10 0 732 -511 440 292 24 3776 3864 10 0 725 -512 364 173 30 700 862 10 0 948 -513 442 289 25 0 7492 10 0 420 -514 48 412 -18 0 7429 10 815 0 -515 344 70 -20 4542 4743 10 357 0 -516 78 406 15 3818 3986 10 0 106 -517 329 456 19 1008 1104 10 0 641 -518 157 38 -18 0 7456 10 701 0 -519 374 260 27 0 7563 10 0 242 -520 297 283 -29 0 7630 10 864 0 -521 210 113 -14 0 7545 10 477 0 -522 215 434 9 0 7500 10 0 139 -523 262 92 -10 2507 2657 10 598 0 -524 140 108 -6 0 7508 10 473 0 -525 235 108 -33 4307 4449 10 685 0 -526 210 133 -27 0 7564 10 831 0 -527 25 53 -8 4088 4193 10 981 0 -528 339 113 -27 3050 3154 10 367 0 -529 394 310 -30 4410 4498 10 269 0 -530 126 391 19 0 7500 10 0 787 -531 343 34 -30 2882 3036 10 416 0 -532 354 416 -17 2719 2836 10 199 0 -533 202 391 -38 2497 2611 10 386 0 -534 367 97 -28 0 7495 10 136 0 -535 188 151 -28 0 7571 10 860 0 -536 111 178 18 593 659 10 0 947 -537 456 157 20 5788 5972 10 0 27 -538 441 7 20 0 7378 10 0 632 -539 270 337 -21 0 7598 10 135 0 -540 323 29 7 4533 4687 10 0 695 -541 200 78 31 0 7508 10 0 775 -542 330 281 14 0 7602 10 0 4 -543 438 488 18 1304 1433 10 0 592 -544 161 416 -8 0 7499 10 20 0 -545 30 97 23 4851 4951 10 0 593 -546 273 70 -17 2458 2617 10 224 0 -547 214 245 8 0 7651 10 0 754 -548 221 291 9 184 305 10 0 246 -549 79 467 22 1400 1531 10 0 731 -550 423 315 -15 0 7503 10 435 0 -551 395 474 -10 0 7421 10 276 0 -552 481 207 34 3447 3521 10 0 92 -553 199 203 20 0 7618 10 0 84 -554 497 483 12 1407 1541 10 0 341 -555 449 428 25 4966 5129 10 0 86 -556 100 266 -12 0 7537 10 626 0 -557 214 274 -24 5490 5583 10 356 0 -558 16 68 -10 0 7391 10 41 0 -559 475 198 -2 3335 3466 10 642 0 -560 371 427 -17 3811 3974 10 121 0 -561 62 375 16 1410 1500 10 0 456 -562 163 472 9 2611 2736 10 0 392 -563 13 314 14 0 7442 10 0 625 -564 376 385 12 0 7503 10 0 682 -565 231 29 14 4896 5035 10 0 994 -566 89 358 -7 4950 5147 10 649 0 -567 331 356 -20 0 7554 10 791 0 -568 365 190 -17 5897 6043 10 396 0 -569 256 441 34 0 7496 10 0 959 -570 120 37 -10 0 7438 10 460 0 -571 349 43 -40 0 7458 10 188 0 -572 230 487 -18 0 7450 10 155 0 -573 489 457 13 0 7371 10 0 403 -574 341 72 -21 3243 3315 10 423 0 -575 181 441 -18 0 7484 10 678 0 -576 306 229 10 0 7628 10 0 65 -577 492 326 -18 4863 4890 10 353 0 -578 347 459 25 0 7457 10 0 747 -579 66 88 -30 0 7442 10 601 0 -580 272 234 -15 6353 6489 10 989 0 -581 134 194 -22 0 7559 10 173 0 -582 320 211 -15 0 7607 10 261 0 -583 214 311 14 0 7617 10 0 978 -584 489 274 31 2132 2258 10 0 677 -585 231 410 -11 0 7526 10 265 0 -586 432 199 -23 0 7498 10 720 0 -587 29 358 -20 2425 2581 10 54 0 -588 62 236 -25 2238 2345 10 293 0 -589 333 163 32 4973 5068 10 0 503 -590 364 71 5 0 7475 10 0 297 -591 125 65 17 0 7464 10 0 697 -592 429 476 -18 2314 2392 10 543 0 -593 161 275 -23 5370 5524 10 545 0 -594 365 274 14 395 545 10 0 314 -595 117 110 -26 0 7494 10 258 0 -596 166 345 -6 4517 4642 10 244 0 -597 345 146 -14 5727 5905 10 449 0 -598 324 99 10 1368 1455 10 0 523 -599 72 477 -21 0 7399 10 728 0 -600 487 320 21 0 7440 0 0 1002 -601 120 17 30 0 7421 10 0 579 -602 1 252 5 1103 1218 10 0 482 -603 303 186 -18 0 7604 10 830 0 -604 428 302 -9 0 7502 10 287 0 -605 264 135 1 0 7572 10 0 478 -606 223 178 -6 0 7611 10 844 0 -607 174 347 3 0 7564 10 0 919 -608 238 123 24 0 7560 10 0 663 -609 187 61 19 2155 2325 10 0 328 -610 52 303 -15 0 7483 10 879 0 -611 89 185 16 2401 2517 10 0 62 -612 341 59 27 3156 3282 10 0 507 -613 89 65 16 2863 3019 10 0 418 -614 495 355 -9 4981 5084 10 940 0 -615 368 452 16 2673 2806 10 0 34 -616 164 473 -23 1149 1340 10 281 0 -617 171 34 21 4579 4685 10 0 944 -618 114 460 14 0 7437 10 0 997 -619 224 3 10 0 7439 10 0 437 -620 472 57 -14 0 7393 10 26 0 -621 448 404 -19 2407 2505 10 263 0 -622 390 120 -8 0 7496 10 721 0 -623 386 225 13 0 7549 10 0 773 -624 301 239 31 169 248 10 0 794 -625 115 296 -14 6112 6239 10 563 0 -626 69 266 12 0 7506 10 0 556 -627 115 395 -5 3274 3368 10 171 0 -628 68 53 -11 0 7419 10 143 0 -629 33 268 -23 0 7470 10 938 0 -630 450 45 24 2005 2144 10 0 708 -631 351 5 -5 0 7422 10 673 0 -632 351 148 -20 0 7544 10 538 0 -633 80 458 30 1515 1569 10 0 858 -634 60 5 -13 4166 4304 10 305 0 -635 10 407 -38 1758 1838 10 255 0 -636 497 18 10 4520 4641 10 0 14 -637 437 98 -17 4480 4549 10 829 0 -638 130 494 6 3036 3154 10 0 494 -639 391 202 14 0 7539 10 0 912 -640 43 210 20 0 7477 10 0 748 -641 381 457 -19 0 7443 10 517 0 -642 449 190 2 0 7480 10 0 559 -643 429 169 8 3607 3735 10 0 886 -644 105 140 27 678 779 10 0 814 -645 282 10 -15 5031 5181 10 883 0 -646 20 480 25 2297 2385 10 0 411 -647 61 170 -18 0 7482 10 43 0 -648 210 81 2 0 7514 10 0 267 -649 87 311 7 0 7513 10 0 566 -650 309 29 11 0 7459 10 0 119 -651 397 57 -22 5876 6052 10 496 0 -652 337 232 -28 6266 6418 10 158 0 -653 262 369 15 513 641 10 0 451 -654 41 232 -22 0 7478 10 385 0 -655 69 414 -19 5007 5220 10 822 0 -656 149 98 -22 0 7505 10 826 0 -657 207 487 4 0 7447 10 0 890 -658 366 260 -5 0 7571 10 252 0 -659 497 54 14 0 7372 10 0 676 -660 210 379 -19 0 7552 10 210 0 -661 437 19 -16 0 7390 10 776 0 -662 181 260 -14 0 7618 10 312 0 -663 125 61 -24 2460 2554 10 608 0 -664 368 311 -18 0 7555 10 6 0 -665 80 400 -19 5772 5918 10 941 0 -666 75 118 21 0 7468 10 0 723 -667 171 303 18 0 7592 10 0 992 -668 80 251 14 1215 1334 10 0 943 -669 455 168 -16 3501 3554 10 105 0 -670 215 129 -20 4479 4589 10 83 0 -671 179 318 -27 0 7589 10 973 0 -672 187 73 -21 0 7500 10 925 0 -673 394 47 5 1223 1401 10 0 631 -674 31 175 24 0 7456 10 0 157 -675 339 144 -19 0 7549 10 63 0 -676 492 34 -14 0 7363 10 659 0 -677 387 349 -31 0 7518 10 584 0 -678 142 372 18 0 7525 10 0 575 -679 291 213 -12 5018 5163 10 851 0 -680 421 387 15 0 7468 10 0 201 -681 274 403 -29 0 7533 10 874 0 -682 434 359 -12 5585 5673 10 564 0 -683 257 57 -15 0 7494 10 842 0 -684 428 202 24 0 7503 10 0 870 -685 355 174 33 2847 2996 10 0 525 -686 46 389 -25 0 7441 10 292 0 -687 44 440 -26 0 7407 10 705 0 -688 491 369 -26 2891 3065 10 351 0 -689 33 286 -4 0 7468 10 160 0 -690 351 128 15 5010 5136 10 0 888 -691 485 428 -14 0 7393 10 109 0 -692 273 149 -8 0 7584 10 55 0 -693 447 184 27 0 7480 10 0 408 -694 386 245 16 0 7551 10 0 926 -695 323 77 -7 5590 5771 10 540 0 -696 21 70 15 3065 3224 10 0 36 -697 9 101 -17 0 7404 10 591 0 -698 71 304 -36 2745 2888 10 134 0 -699 43 360 -25 3339 3463 10 257 0 -700 396 417 -20 0 7466 10 722 0 -701 158 24 18 2419 2590 10 0 518 -702 164 320 12 0 7577 10 0 176 -703 195 386 -3 0 7541 10 431 0 -704 306 235 25 172 291 10 0 441 -705 66 314 26 723 835 10 0 687 -706 95 64 4 3083 3164 10 0 375 -707 348 348 23 0 7549 10 0 270 -708 495 83 -24 0 7391 10 630 0 -709 61 214 4 1309 1545 10 0 952 -710 240 240 -23 6820 6897 10 421 0 -711 140 137 -23 2276 2401 10 991 0 -712 242 106 28 0 7543 10 0 987 -713 392 491 -23 4542 4641 10 483 0 -714 342 481 18 5769 5871 10 0 882 -715 478 300 -25 3589 3648 10 151 0 -716 299 285 -12 4991 5160 10 812 0 -717 481 84 17 0 7403 10 0 877 -718 271 128 12 0 7564 10 0 923 -719 484 224 7 0 7452 10 0 751 -720 441 177 23 4022 4107 10 0 586 -721 46 163 8 0 7466 10 0 622 -722 493 493 20 3457 3515 10 0 700 -723 253 74 -21 5375 5546 10 666 0 -724 390 34 -23 4201 4401 10 878 0 -725 374 306 -24 3992 4081 10 511 0 -726 436 295 11 0 7496 10 0 880 -727 371 315 -29 4679 4767 10 28 0 -728 27 464 21 0 7378 10 0 599 -729 3 471 -7 0 7356 10 788 0 -730 418 269 -16 0 7518 10 346 0 -731 90 477 -22 0 7410 10 549 0 -732 141 426 -25 0 7480 10 510 0 -733 418 251 21 4770 4925 10 0 371 -734 57 183 15 4375 4548 10 0 56 -735 29 462 -12 0 7381 10 983 0 -736 55 318 13 1250 1365 10 0 130 -737 18 24 -12 2551 2596 10 960 0 -738 263 153 12 0 7590 10 0 847 -739 289 220 -15 0 7638 10 509 0 -740 84 255 -10 0 7521 10 279 0 -741 159 299 12 0 7584 10 0 196 -742 485 104 21 0 7411 10 0 68 -743 178 135 21 0 7552 10 0 505 -744 389 255 -26 0 7548 10 167 0 -745 457 280 -5 4013 4105 10 508 0 -746 171 24 -18 0 7448 10 446 0 -747 330 371 -25 0 7542 10 578 0 -748 10 237 -20 0 7447 10 640 0 -749 458 213 -27 0 7476 10 99 0 -750 257 391 -17 6547 6637 10 33 0 -751 482 184 -7 4437 4538 10 719 0 -752 222 331 -23 2158 2279 10 393 0 -753 332 5 14 4110 4272 10 0 422 -754 47 208 -8 0 7480 10 547 0 -755 489 437 -23 0 7384 10 836 0 -756 165 59 27 3762 3901 0 0 1004 -757 211 446 -5 0 7488 10 382 0 -758 225 488 28 0 7448 10 0 303 -759 355 485 10 5887 6066 10 0 154 -760 441 374 10 873 1034 10 0 999 -761 399 175 -23 3020 3076 10 29 0 -762 103 464 22 0 7428 10 0 249 -763 244 13 -24 4068 4156 10 40 0 -764 51 360 -27 0 7460 10 194 0 -765 44 115 24 944 1027 10 0 486 -766 312 453 6 0 7475 10 0 335 -767 64 198 10 4346 4482 10 0 76 -768 67 451 -22 0 7416 10 916 0 -769 371 71 -19 0 7471 10 412 0 -770 439 156 2 2101 2225 10 0 834 -771 105 474 27 0 7421 10 0 413 -772 366 288 29 0 7565 10 0 942 -773 415 207 -13 3588 3731 10 623 0 -774 58 39 12 4615 4808 10 0 42 -775 197 202 -31 4784 4966 10 541 0 -776 442 5 16 0 7376 10 0 661 -777 71 12 -32 1177 1286 10 951 0 -778 74 215 10 0 7508 10 0 30 -779 347 192 -25 5930 6096 10 428 0 -780 178 420 -21 0 7503 10 364 0 -781 186 135 -26 0 7556 10 455 0 -782 176 199 -3 0 7598 10 146 0 -783 438 5 -14 0 7379 10 793 0 -784 150 68 -15 0 7480 10 113 0 -785 185 434 9 2326 2383 10 0 471 -786 215 79 -11 0 7513 10 360 0 -787 177 486 -19 6397 6501 10 530 0 -788 49 437 7 1698 1842 10 0 729 -789 100 66 -24 0 7450 10 48 0 -790 35 344 -27 3418 3607 10 811 0 -791 433 447 20 3179 3294 10 0 567 -792 372 97 -8 0 7492 10 133 0 -793 344 203 14 708 751 10 0 783 -794 423 170 -31 2022 2203 10 624 0 -795 171 188 -15 2481 2604 10 12 0 -796 64 5 -11 0 7380 10 16 0 -797 371 163 21 0 7538 10 0 443 -798 398 210 -27 0 7534 10 929 0 -799 48 437 -30 0 7412 10 892 0 -800 392 1 -23 2419 2543 10 217 0 -801 195 464 20 0 7467 0 0 1009 -802 211 248 26 0 7648 10 0 208 -803 293 228 19 133 253 10 0 467 -804 23 235 43 0 7460 10 0 498 -805 213 185 -28 0 7613 10 325 0 -806 172 292 17 370 485 10 0 290 -807 228 287 21 97 248 10 0 832 -808 387 394 -15 0 7489 10 897 0 -809 374 232 33 0 7562 10 0 227 -810 48 366 -12 0 7455 10 855 0 -811 44 311 27 1631 1749 10 0 790 -812 447 272 12 0 7489 10 0 716 -813 132 477 25 0 7432 10 0 322 -814 80 117 -27 0 7472 10 644 0 -815 11 403 18 1416 1448 10 0 514 -816 144 220 35 0 7577 10 0 283 -817 473 491 23 0 7359 10 0 247 -818 210 219 -31 0 7637 10 915 0 -819 452 484 26 5136 5212 10 0 5 -820 365 28 -26 0 7437 10 828 0 -821 498 456 27 5611 5757 10 0 436 -822 84 453 19 4911 4993 10 0 655 -823 91 427 14 3548 3633 10 0 149 -824 178 72 23 3035 3139 10 0 839 -825 409 155 19 0 7502 10 0 900 -826 132 151 22 0 7533 10 0 656 -827 136 430 -11 2828 2973 10 228 0 -828 292 104 26 0 7536 10 0 820 -829 443 167 17 2211 2254 10 0 637 -830 321 149 18 0 7564 10 0 603 -831 235 13 27 0 7450 10 0 526 -832 166 440 -21 772 890 10 807 0 -833 112 433 -3 0 7458 10 202 0 -834 452 172 -2 0 7471 10 770 0 -835 37 281 -2 1940 2125 10 933 0 -836 414 378 23 1961 2117 10 0 755 -837 475 352 -25 0 7440 10 968 0 -838 400 71 -12 0 7454 10 78 0 -839 286 244 -23 5150 5242 10 824 0 -840 429 389 18 1700 1812 10 0 122 -841 92 76 -25 4598 4634 10 932 0 -842 124 111 15 0 7500 10 0 683 -843 268 458 -7 0 7479 10 13 0 -844 352 63 6 4718 4827 10 0 606 -845 49 118 3 0 7447 10 0 182 -846 398 329 17 646 697 10 0 964 -847 382 9 -12 1118 1176 10 738 0 -848 229 322 11 0 7612 10 0 448 -849 279 355 9 0 7579 10 0 873 -850 266 221 9 0 7654 10 0 903 -851 142 80 12 1980 2076 10 0 679 -852 359 287 24 0 7572 10 0 101 -853 482 104 19 0 7413 10 0 234 -854 284 457 -25 6018 6090 10 380 0 -855 64 294 12 4402 4528 10 0 810 -856 404 59 13 0 7442 10 0 447 -857 68 160 21 0 7484 10 0 49 -858 211 411 -30 4631 4662 10 633 0 -859 30 155 -19 5129 5235 10 995 0 -860 240 34 28 6247 6349 10 0 535 -861 107 374 8 3642 3792 10 0 930 -862 404 140 -14 5063 5126 10 75 0 -863 436 467 -10 0 7402 10 391 0 -864 421 386 29 0 7469 10 0 520 -865 182 480 -15 0 7448 10 288 0 -866 9 233 31 1227 1343 10 0 147 -867 110 251 23 2007 2095 10 0 304 -868 19 38 -11 3376 3521 10 236 0 -869 46 248 9 3237 3394 10 0 277 -870 308 199 -24 5986 6201 10 684 0 -871 423 221 9 1022 1164 0 0 1007 -872 313 391 5 600 716 10 0 904 -873 413 345 -9 4872 4993 10 849 0 -874 278 450 29 0 7486 10 0 681 -875 94 497 31 3132 3246 10 0 426 -876 7 382 -26 3053 3231 10 417 0 -877 493 111 -17 2162 2286 10 717 0 -878 392 87 23 0 7471 10 0 724 -879 13 394 15 0 7410 10 0 610 -880 259 301 -11 0 7636 10 726 0 -881 351 233 -20 5692 5811 10 190 0 -882 313 493 -18 0 7436 10 714 0 -883 65 62 15 3883 4048 10 0 645 -884 417 212 -18 0 7516 10 993 0 -885 450 194 -31 2495 2623 10 262 0 -886 470 138 -8 0 7441 10 643 0 -887 190 267 36 0 7625 10 0 39 -888 248 214 -15 5955 5999 10 690 0 -889 50 383 -22 1056 1145 10 395 0 -890 244 422 -4 2134 2288 10 657 0 -891 60 29 32 0 7396 10 0 51 -892 5 445 30 1230 1377 10 0 799 -893 490 276 -15 0 7446 10 73 0 -894 441 100 31 0 7445 10 0 908 -895 162 388 -26 0 7524 10 9 0 -896 244 277 -22 5204 5326 10 110 0 -897 406 408 15 5799 5971 10 0 808 -898 265 240 9 21 123 10 0 98 -899 130 186 16 513 656 10 0 363 -900 382 110 -19 4427 4592 10 825 0 -901 142 14 18 0 7428 10 0 104 -902 352 487 27 0 7429 10 0 286 -903 307 52 -9 3703 3781 10 850 0 -904 418 399 -5 0 7463 10 872 0 -905 196 56 -26 0 7486 10 470 0 -906 66 31 25 0 7401 10 0 461 -907 90 496 13 0 7394 10 0 920 -908 480 136 -31 0 7431 10 894 0 -909 65 82 -15 2966 3071 10 10 0 -910 48 293 -16 0 7481 10 343 0 -911 105 181 19 0 7527 10 0 965 -912 215 282 -14 5764 5879 10 639 0 -913 257 133 19 0 7570 10 0 80 -914 77 465 11 0 7412 10 0 115 -915 43 135 31 0 7451 10 0 818 -916 27 444 22 4290 4472 10 0 768 -917 357 290 -20 0 7573 10 921 0 -918 38 15 3 0 7371 10 0 966 -919 80 337 -3 4483 4590 10 607 0 -920 36 451 -13 3538 3692 10 907 0 -921 291 251 20 129 200 10 0 917 -922 195 111 -12 3991 4114 10 309 0 -923 383 17 -12 3765 3879 10 718 0 -924 53 466 9 0 7395 10 0 465 -925 114 102 21 0 7487 10 0 672 -926 350 199 -16 4787 4945 10 694 0 -927 405 349 -23 0 7504 10 66 0 -928 472 248 11 0 7465 10 0 82 -929 333 293 27 2494 2563 10 0 798 -930 174 397 -8 4978 5099 10 861 0 -931 2 264 40 0 7439 10 0 280 -932 7 82 25 1643 1770 10 0 841 -933 34 329 2 0 7458 10 0 835 -934 158 179 -25 0 7571 10 204 0 -935 421 499 -22 5363 5519 10 419 0 -936 345 431 12 0 7483 10 0 439 -937 370 262 15 4371 4545 10 0 472 -938 77 172 23 0 7498 10 0 629 -939 87 51 35 0 7430 10 0 967 -940 468 352 9 3031 3235 10 0 614 -941 63 420 19 2071 2206 10 0 665 -942 347 184 -29 4316 4433 10 772 0 -943 206 174 -14 3201 3318 10 668 0 -944 209 212 -21 6142 6200 10 617 0 -945 466 362 -11 0 7444 10 434 0 -946 201 278 13 170 282 10 0 177 -947 206 172 -18 3131 3293 10 536 0 -948 471 94 -30 0 7417 10 512 0 -949 331 134 -28 4479 4631 10 233 0 -950 274 261 -9 0 7661 10 285 0 -951 219 215 32 0 7641 10 0 777 -952 349 76 -4 4121 4244 10 709 0 -953 86 189 21 906 1028 10 0 427 -954 336 493 -15 5960 6103 10 213 0 -955 7 194 29 3784 3947 10 0 232 -956 492 335 10 3316 3430 10 0 259 -957 248 386 22 0 7551 10 0 183 -958 463 406 -4 0 7423 10 493 0 -959 199 438 -34 0 7493 10 569 0 -960 135 30 12 0 7439 10 0 737 -961 447 267 -11 0 7490 10 998 0 -962 235 33 30 0 7470 10 0 376 -963 63 155 7 0 7478 10 0 57 -964 294 421 -17 6292 6431 10 846 0 -965 318 99 -19 4854 4969 10 911 0 -966 21 146 -3 0 7436 10 918 0 -967 30 7 -35 4734 4895 10 939 0 -968 410 399 25 983 1007 10 0 837 -969 405 187 34 4994 5131 10 0 35 -970 109 56 27 0 7448 10 0 118 -971 212 47 -18 0 7481 10 361 0 -972 479 387 13 0 7421 10 0 123 -973 167 291 27 0 7595 10 0 671 -974 259 498 -6 0 7439 10 231 0 -975 461 182 13 2540 2612 10 0 79 -976 277 428 7 1931 2112 10 0 338 -977 290 328 7 555 714 10 0 163 -978 146 313 -14 4793 4890 10 583 0 -979 40 304 -11 4559 4718 10 71 0 -980 56 268 -12 4268 4364 10 212 0 -981 104 28 8 0 7422 10 0 527 -982 370 493 -19 0 7416 10 46 0 -983 136 265 12 390 530 10 0 735 -984 247 306 33 182 266 10 0 282 -985 241 38 -11 2127 2246 10 502 0 -986 180 162 9 653 855 10 0 52 -987 253 118 -28 2191 2307 10 712 0 -988 413 391 8 876 981 10 0 388 -989 380 350 15 3462 3589 10 0 580 -990 391 112 -22 4039 4084 10 44 0 -991 86 199 23 1114 1228 10 0 711 -992 91 326 -18 0 7511 10 667 0 -993 287 256 18 61 239 10 0 884 -994 203 211 -14 0 7626 10 565 0 -995 79 80 19 0 7446 10 0 859 -996 32 319 -21 1621 1703 10 7 0 -997 167 445 -14 0 7476 10 618 0 -998 439 237 11 3811 3817 10 0 961 -999 373 418 -10 5034 5161 10 760 0 -1000 26 342 -22 1298 1390 10 327 0 -1001 33 152 -17 5278 5403 10 394 0 -1002 487 320 -21 0 7440 10 600 0 -1003 385 58 -24 1661 1697 10 457 0 -1004 165 59 -27 3762 3901 10 756 0 -1005 240 255 -33 6404 6604 10 95 0 -1006 240 362 -23 0 7575 10 372 0 -1007 423 221 -9 1022 1164 10 871 0 -1008 330 308 -24 0 7589 10 320 0 -1009 195 464 -20 0 7467 10 801 0 -1010 0 356 -13 0 7416 10 21 0 diff --git a/jsprit-instances/instances/lilim/1000/LR2104.txt b/jsprit-instances/instances/lilim/1000/LR2104.txt deleted file mode 100644 index 772db4865..000000000 --- a/jsprit-instances/instances/lilim/1000/LR2104.txt +++ /dev/null @@ -1,1010 +0,0 @@ -250 1000 1 -0 250 250 0 0 7697 0 0 0 -1 228 399 14 0 7537 10 0 420 -2 325 56 -9 0 7480 10 986 0 -3 290 145 5 0 7575 10 0 348 -4 340 291 22 1893 1991 10 0 725 -5 370 382 -23 0 7509 10 410 0 -6 273 255 18 0 7664 10 0 917 -7 36 301 -14 0 7468 10 563 0 -8 117 178 -11 4484 4574 10 360 0 -9 295 283 -27 3538 3728 10 929 0 -10 57 43 -14 0 7404 10 26 0 -11 436 123 40 0 7462 10 0 715 -12 48 162 -35 0 7467 10 368 0 -13 222 499 7 0 7437 10 0 231 -14 376 92 10 0 7485 10 0 838 -15 437 90 12 0 7441 10 0 253 -16 3 23 11 1550 1702 10 0 613 -17 94 40 -4 0 7426 10 706 0 -18 398 476 -14 0 7417 10 75 0 -19 307 249 -18 0 7630 10 229 0 -20 179 286 8 1380 1469 10 0 294 -21 0 356 13 0 7416 10 0 47 -22 143 158 12 0 7546 10 0 709 -23 413 476 -8 4729 4823 10 862 0 -24 371 488 10 2285 2497 10 0 791 -25 415 118 19 0 7476 10 0 850 -26 440 77 14 0 7431 10 0 10 -27 261 201 -25 6060 6172 10 370 0 -28 490 286 29 0 7445 10 0 592 -29 309 161 23 2287 2499 10 0 91 -30 39 162 18 0 7459 10 0 343 -31 361 178 -19 0 7555 10 530 0 -32 261 138 1 0 7575 10 0 845 -33 447 383 -14 889 1013 10 82 0 -34 346 354 -8 3260 3399 10 988 0 -35 461 195 26 0 7469 10 0 829 -36 187 263 35 0 7623 0 0 1004 -37 130 247 17 0 7567 10 0 767 -38 328 491 -12 2702 2845 10 94 0 -39 161 276 -21 0 7595 10 593 0 -40 365 74 -5 3379 3529 10 590 0 -41 168 109 10 0 7524 10 0 302 -42 111 192 -17 0 7537 10 591 0 -43 87 213 -23 0 7520 10 991 0 -44 45 166 22 0 7466 10 0 292 -45 62 94 -28 0 7443 10 860 0 -46 348 476 19 0 7441 10 0 164 -47 64 437 -13 0 7424 10 21 0 -48 56 75 24 0 7426 10 0 579 -49 24 259 19 0 7461 10 0 497 -50 295 247 -24 0 7642 10 852 0 -51 6 53 8 0 7374 10 0 939 -52 15 11 15 0 7352 10 0 868 -53 179 497 -28 0 7430 10 758 0 -54 67 352 -24 0 7478 10 814 0 -55 317 45 8 0 7472 10 0 297 -56 40 278 -9 0 7476 10 522 0 -57 33 278 18 0 7469 10 0 103 -58 322 290 23 0 7605 10 0 404 -59 159 226 16 314 439 10 0 932 -60 208 445 22 0 7488 10 0 610 -61 453 360 13 858 990 10 0 419 -62 34 169 11 0 7457 10 0 602 -63 436 25 19 0 7396 10 0 357 -64 393 98 13 3013 3127 10 0 127 -65 466 96 -22 0 7422 10 496 0 -66 366 390 -23 5266 5400 10 259 0 -67 303 78 -15 0 7508 10 922 0 -68 374 116 9 0 7505 10 0 830 -69 424 288 -13 0 7509 10 682 0 -70 191 84 -21 0 7511 10 617 0 -71 59 276 -9 0 7495 10 869 0 -72 215 293 13 128 315 10 0 405 -73 343 276 15 321 451 10 0 528 -74 488 173 -19 4836 4966 10 853 0 -75 452 110 14 0 7442 10 0 18 -76 153 244 -21 0 7590 10 805 0 -77 176 200 -20 2266 2394 10 553 0 -78 498 171 12 0 7427 10 0 79 -79 492 188 -12 2904 2939 10 78 0 -80 177 156 25 0 7568 10 0 903 -81 398 49 21 0 7438 10 0 488 -82 497 296 14 0 7436 10 0 33 -83 276 84 20 0 7519 10 0 995 -84 128 113 22 0 7504 10 0 394 -85 422 498 5 0 7386 10 0 621 -86 460 424 -29 0 7415 10 755 0 -87 246 314 -21 5773 5910 10 284 0 -88 0 422 -15 0 7384 10 879 0 -89 166 247 1 291 382 10 0 674 -90 311 422 29 0 7505 10 0 614 -91 392 95 -23 0 7477 10 29 0 -92 460 117 14 0 7439 10 0 247 -93 28 467 34 0 7377 10 0 290 -94 375 145 12 0 7524 10 0 38 -95 240 255 -12 0 7676 10 702 0 -96 440 436 18 3549 3706 10 0 881 -97 454 201 -22 0 7478 10 248 0 -98 407 35 11 0 7421 10 0 328 -99 420 383 27 0 7472 10 0 745 -100 264 180 -15 0 7616 10 952 0 -101 440 294 -15 0 7492 10 680 0 -102 500 228 -12 3137 3237 10 884 0 -103 144 331 -18 0 7554 10 57 0 -104 98 2 -8 2361 2493 10 169 0 -105 461 186 16 0 7467 10 0 245 -106 68 450 18 0 7417 10 0 548 -107 153 192 -33 0 7574 10 306 0 -108 34 239 16 896 975 10 0 521 -109 465 367 -15 0 7443 10 509 0 -110 208 488 -7 0 7446 10 976 0 -111 93 413 17 0 7461 10 0 132 -112 371 332 -7 0 7541 10 977 0 -113 231 167 -27 246 435 10 191 0 -114 179 75 13 2982 3057 10 0 981 -115 196 489 23 4135 4226 10 0 780 -116 280 245 21 0 7657 10 0 568 -117 108 37 23 0 7432 10 0 666 -118 1 101 8 0 7397 10 0 628 -119 420 80 24 0 7447 10 0 777 -120 38 190 -17 0 7467 10 490 0 -121 470 405 -25 3694 3832 10 968 0 -122 448 397 -10 0 7441 10 713 0 -123 471 427 -31 0 7404 10 341 0 -124 146 376 8 0 7524 10 0 627 -125 12 358 -12 0 7426 10 212 0 -126 175 422 24 0 7500 0 0 1002 -127 297 131 -13 4640 4803 10 64 0 -128 457 492 7 0 7369 10 0 817 -129 69 423 -12 0 7437 10 1000 0 -130 97 288 22 0 7530 10 0 273 -131 172 314 9 0 7587 10 0 557 -132 170 347 -17 0 7562 10 111 0 -133 103 123 8 0 7493 10 0 741 -134 154 374 36 0 7531 10 0 448 -135 318 497 -14 0 7431 10 355 0 -136 330 147 -14 3383 3525 10 542 0 -137 241 180 13 0 7617 10 0 710 -138 174 67 15 0 7489 10 0 158 -139 235 288 -2 0 7647 10 307 0 -140 94 192 -26 0 7521 10 362 0 -141 232 101 -28 0 7537 10 712 0 -142 28 180 -6 0 7455 10 433 0 -143 64 135 -23 3495 3571 10 784 0 -144 174 376 -22 0 7540 10 750 0 -145 293 174 -16 0 7600 10 178 0 -146 218 12 -6 0 7447 10 378 0 -147 110 122 -31 0 7498 10 541 0 -148 459 53 20 0 7400 10 0 751 -149 173 474 14 0 7451 10 0 177 -150 135 400 -38 0 7498 10 255 0 -151 497 266 25 0 7440 10 0 195 -152 380 194 3 0 7546 10 0 669 -153 495 227 20 0 7441 10 0 893 -154 268 351 7 0 7585 10 0 532 -155 213 399 -1 0 7534 10 208 0 -156 448 414 23 0 7430 10 0 956 -157 327 139 -20 5021 5158 10 365 0 -158 151 81 -15 0 7492 10 138 0 -159 425 448 -32 3152 3324 10 271 0 -160 92 259 4 0 7529 10 0 399 -161 59 388 20 2650 2772 10 0 278 -162 468 360 -17 0 7443 10 270 0 -163 332 459 35 0 7463 10 0 935 -164 469 489 -19 0 7363 10 46 0 -165 248 176 32 0 7613 10 0 446 -166 174 41 15 0 7465 10 0 764 -167 343 205 -15 0 7584 10 744 0 -168 154 392 -22 0 7516 10 957 0 -169 92 18 8 0 7407 10 0 104 -170 250 328 24 0 7609 10 0 895 -171 88 484 -17 0 7403 10 246 0 -172 360 488 -17 1252 1393 10 396 0 -173 156 65 -19 4143 4275 10 913 0 -174 18 225 -21 0 7454 10 225 0 -175 152 476 45 2112 2188 10 0 801 -176 176 470 14 0 7455 10 0 813 -177 195 450 -14 0 7480 10 149 0 -178 466 149 16 0 7449 10 0 145 -179 221 269 -11 0 7653 10 498 0 -180 105 137 -16 0 7504 10 899 0 -181 284 319 17 3270 3384 10 0 384 -182 41 120 -18 2791 2897 10 267 0 -183 263 418 25 0 7519 10 0 314 -184 218 271 -22 0 7649 10 978 0 -185 365 119 -27 0 7513 10 794 0 -186 89 322 -13 0 7511 10 736 0 -187 180 283 -14 0 7610 10 504 0 -188 385 17 40 3186 3404 10 0 418 -189 401 314 -29 3875 4057 10 864 0 -190 245 176 20 4943 5055 10 0 336 -191 251 238 27 0 7675 10 0 113 -192 139 438 24 0 7469 10 0 689 -193 236 126 23 0 7563 10 0 670 -194 61 441 27 2201 2268 10 0 646 -195 405 454 -25 0 7431 10 151 0 -196 111 392 -14 0 7489 10 823 0 -197 373 421 21 0 7477 10 0 999 -198 247 443 17 0 7494 10 0 322 -199 322 406 17 0 7516 10 0 550 -200 412 478 -11 3851 3946 10 434 0 -201 374 346 -25 0 7531 10 380 0 -202 122 422 -14 0 7473 10 827 0 -203 261 359 10 0 7578 10 0 757 -204 173 182 25 383 438 10 0 283 -205 398 341 -9 0 7514 10 677 0 -206 413 127 28 0 7483 10 0 467 -207 325 311 -17 5290 5409 10 846 0 -208 80 357 1 2093 2271 10 0 155 -209 67 378 26 0 7464 0 0 1006 -210 216 341 -13 0 7590 10 703 0 -211 498 457 15 0 7364 10 0 945 -212 44 344 12 0 7461 10 0 125 -213 352 481 15 5136 5261 10 0 766 -214 237 420 15 0 7517 10 0 954 -215 389 43 21 0 7438 10 0 344 -216 292 136 -24 0 7566 10 990 0 -217 426 38 -5 0 7412 10 673 0 -218 245 461 -15 0 7476 10 653 0 -219 415 253 21 0 7522 10 0 529 -220 298 264 36 147 253 10 0 462 -221 307 412 8 0 7516 10 0 351 -222 53 204 -25 0 7485 10 406 0 -223 480 152 26 0 7437 10 0 537 -224 262 97 17 0 7534 10 0 299 -225 83 169 21 0 7502 10 0 174 -226 377 432 -10 0 7466 10 760 0 -227 390 249 21 0 7547 10 0 442 -228 132 479 11 997 1063 10 0 501 -229 359 246 18 0 7578 10 0 19 -230 314 205 -13 6086 6249 10 408 0 -231 124 448 -7 0 7453 10 13 0 -232 0 188 26 0 7430 10 0 883 -233 343 166 -33 3512 3616 10 685 0 -234 482 141 14 4028 4178 10 0 429 -235 162 306 22 494 580 10 0 323 -236 24 71 -24 0 7399 10 457 0 -237 188 119 44 0 7543 10 0 648 -238 100 85 -15 0 7465 10 696 0 -239 103 177 -22 2494 2637 10 826 0 -240 26 67 -28 0 7398 10 485 0 -241 164 332 19 0 7569 0 0 1008 -242 385 285 -9 3478 3586 10 287 0 -243 209 68 27 0 7501 10 0 477 -244 149 341 -29 0 7552 10 833 0 -245 415 95 -16 0 7461 10 105 0 -246 167 488 17 972 1148 10 0 171 -247 413 493 -14 4894 4971 10 92 0 -248 439 222 22 0 7496 10 0 97 -249 150 484 -19 0 7433 10 282 0 -250 299 353 -30 0 7573 10 251 0 -251 273 300 30 0 7632 10 0 250 -252 402 277 -11 0 7533 10 726 0 -253 239 15 -12 0 7452 10 15 0 -254 363 225 -21 3426 3541 10 454 0 -255 65 343 38 0 7480 10 0 150 -256 351 60 15 0 7472 10 0 828 -257 60 246 -22 0 7497 10 395 0 -258 144 35 -19 0 7448 10 609 0 -259 463 253 23 4171 4325 10 0 66 -260 332 382 2 0 7532 10 0 261 -261 408 318 -2 0 7515 10 260 0 -262 452 206 31 0 7481 10 0 825 -263 471 368 19 0 7437 10 0 927 -264 93 490 2 1527 1626 10 0 638 -265 241 402 11 0 7535 10 0 451 -266 60 231 -20 0 7497 10 994 0 -267 172 66 18 0 7488 10 0 182 -268 404 207 -14 0 7528 10 639 0 -269 286 356 30 354 542 10 0 808 -270 489 338 17 5551 5746 10 0 162 -271 334 481 32 0 7442 10 0 159 -272 26 442 -9 0 7392 10 924 0 -273 226 175 -22 0 7609 10 130 0 -274 488 3 3 0 7344 10 0 948 -275 178 150 33 0 7564 10 0 515 -276 371 423 10 0 7476 10 0 511 -277 5 224 19 0 7441 10 0 304 -278 94 344 -20 2746 2832 10 161 0 -279 153 235 10 0 7589 10 0 983 -280 12 367 27 1282 1444 10 0 914 -281 217 357 23 0 7576 10 0 807 -282 255 487 19 0 7450 10 0 249 -283 149 214 -25 0 7580 10 204 0 -284 169 305 21 0 7590 10 0 87 -285 487 446 -40 0 7380 10 439 0 -286 267 374 23 0 7562 10 0 327 -287 360 294 9 0 7569 10 0 242 -288 185 431 -25 0 7495 10 494 0 -289 325 210 -16 0 7602 10 582 0 -290 175 352 -34 6652 6789 10 93 0 -291 76 462 18 0 7413 10 0 599 -292 19 273 -22 0 7455 10 44 0 -293 72 227 -37 0 7508 10 934 0 -294 213 283 -8 0 7638 10 20 0 -295 130 140 -6 0 7525 10 414 0 -296 274 442 17 0 7494 10 0 377 -297 337 41 -8 0 7461 10 55 0 -298 372 39 10 0 7444 10 0 416 -299 269 112 -17 0 7548 10 224 0 -300 224 56 13 0 7492 10 0 449 -301 340 416 36 1293 1396 10 0 604 -302 13 214 -10 5428 5520 10 41 0 -303 230 320 -14 4770 4887 10 583 0 -304 6 196 -19 0 7438 10 277 0 -305 87 3 -3 0 7392 10 505 0 -306 133 202 33 0 7561 10 0 107 -307 235 316 2 2616 2751 10 0 139 -308 435 180 37 0 7490 10 0 761 -309 173 65 -1 1768 1940 10 605 0 -310 245 42 24 2203 2295 10 0 324 -311 384 149 -23 0 7520 10 658 0 -312 51 286 -5 0 7485 10 317 0 -313 267 290 15 111 236 10 0 573 -314 453 318 -25 0 7473 10 183 0 -315 189 402 -16 0 7524 10 561 0 -316 210 276 5 0 7640 10 0 452 -317 120 261 5 3154 3312 10 0 312 -318 35 263 -22 0 7472 10 686 0 -319 429 59 9 1827 1964 10 0 571 -320 330 308 24 0 7589 10 0 950 -321 58 391 16 3528 3651 10 0 693 -322 260 472 -17 4143 4265 10 198 0 -323 217 333 -22 0 7598 10 235 0 -324 335 46 -24 0 7466 10 310 0 -325 198 85 -12 1032 1189 10 525 0 -326 138 28 23 4362 4530 10 0 470 -327 29 336 -23 0 7450 10 286 0 -328 200 27 -11 0 7459 10 98 0 -329 157 269 -21 0 7593 10 857 0 -330 177 404 17 0 7517 10 0 739 -331 202 28 22 0 7460 10 0 634 -332 366 334 5 0 7544 10 0 436 -333 149 458 -17 0 7456 10 854 0 -334 481 454 14 0 7379 10 0 691 -335 377 385 6 3486 3564 10 0 513 -336 217 207 -20 0 7633 10 190 0 -337 96 346 -12 0 7506 10 413 0 -338 224 320 36 5187 5202 10 0 364 -339 206 97 33 1785 1920 10 0 502 -340 438 127 2 0 7463 10 0 428 -341 494 468 31 1417 1523 10 0 123 -342 494 165 19 2401 2553 10 0 770 -343 5 281 -18 0 7441 10 30 0 -344 441 60 -21 0 7418 10 215 0 -345 14 232 18 0 7451 10 0 966 -346 288 439 -3 0 7495 10 489 0 -347 420 224 10 0 7516 10 0 444 -348 267 162 -5 0 7598 10 3 0 -349 195 273 22 156 320 10 0 660 -350 233 230 -14 0 7661 10 943 0 -351 382 360 -8 0 7516 10 221 0 -352 406 460 -10 2868 3006 10 391 0 -353 499 316 -22 0 7430 10 982 0 -354 246 407 12 0 7530 10 0 910 -355 283 454 14 0 7481 10 0 135 -356 426 231 -9 4102 4245 10 849 0 -357 432 2 -19 1848 2004 10 63 0 -358 404 439 -13 0 7444 10 700 0 -359 397 477 13 0 7417 10 0 615 -360 44 140 11 3464 3602 10 0 8 -361 330 138 -15 0 7550 10 937 0 -362 39 153 26 0 7455 10 0 140 -363 397 153 -19 3507 3673 10 803 0 -364 226 316 -36 0 7617 10 338 0 -365 354 156 20 0 7547 10 0 157 -366 201 66 -23 0 7497 10 824 0 -367 389 156 -30 2851 2993 10 512 0 -368 134 211 35 458 626 10 0 12 -369 386 154 -20 0 7521 10 921 0 -370 335 99 25 0 7514 10 0 27 -371 356 256 19 0 7581 10 0 694 -372 240 362 23 0 7575 10 0 843 -373 412 100 -16 0 7467 10 886 0 -374 394 322 -23 0 7527 10 483 0 -375 48 150 -4 0 7462 10 841 0 -376 225 121 18 0 7556 10 0 526 -377 102 422 -17 0 7461 10 296 0 -378 339 41 6 0 7460 10 0 146 -379 440 201 -9 0 7491 10 871 0 -380 411 379 25 0 7481 10 0 201 -381 219 210 -28 0 7637 10 782 0 -382 250 441 -20 0 7496 10 882 0 -383 210 29 13 0 7463 10 0 906 -384 178 302 -17 3553 3659 10 181 0 -385 148 208 -20 0 7577 10 469 0 -386 225 369 -26 0 7566 10 802 0 -387 16 287 12 0 7451 10 0 931 -388 450 416 -12 2281 2453 10 554 0 -389 287 397 12 0 7536 10 0 577 -390 285 247 13 0 7652 10 0 519 -391 351 481 10 1284 1410 10 0 352 -392 243 408 -32 5720 5870 10 930 0 -393 137 377 23 0 7518 10 0 566 -394 33 152 -22 5278 5403 10 84 0 -395 68 303 22 904 987 10 0 257 -396 456 113 17 0 7440 10 0 172 -397 134 276 15 0 7569 10 0 951 -398 26 221 28 0 7462 10 0 980 -399 79 257 -4 3803 3942 10 160 0 -400 181 185 -23 0 7593 10 421 0 -401 104 349 20 4058 4135 10 0 872 -402 267 174 -35 0 7610 10 965 0 -403 475 267 7 0 7462 10 0 873 -404 385 239 -23 3130 3274 10 58 0 -405 95 382 -13 929 1041 10 72 0 -406 67 190 25 0 7495 10 0 222 -407 32 94 -43 3707 3854 10 804 0 -408 401 164 13 0 7514 10 0 230 -409 376 113 -18 0 7501 10 773 0 -410 409 255 23 0 7528 10 0 5 -411 228 260 12 6450 6514 0 0 1005 -412 363 34 19 0 7444 10 0 447 -413 274 441 12 0 7495 10 0 337 -414 146 188 6 0 7566 10 0 295 -415 212 186 -17 0 7613 10 503 0 -416 432 66 -10 0 7429 10 298 0 -417 83 300 26 1987 2131 10 0 482 -418 51 89 -40 0 7432 10 188 0 -419 379 486 -13 0 7419 10 61 0 -420 440 284 -14 0 7494 10 1 0 -421 175 239 23 0 7612 10 0 400 -422 282 1 -10 4184 4276 10 486 0 -423 268 113 -26 0 7549 10 455 0 -424 480 131 -17 0 7429 10 717 0 -425 429 67 16 0 7432 10 0 901 -426 162 301 16 0 7586 10 0 533 -427 281 96 -7 0 7530 10 535 0 -428 495 199 -2 0 7437 10 340 0 -429 372 115 -14 0 7506 10 234 0 -430 396 83 -7 6362 6449 10 719 0 -431 239 486 3 0 7451 10 0 575 -432 288 70 24 0 7504 10 0 765 -433 66 163 6 0 7484 10 0 142 -434 470 417 11 0 7411 10 0 200 -435 226 423 15 0 7513 10 0 889 -436 342 319 -5 0 7572 10 332 0 -437 174 122 14 0 7539 10 0 723 -438 49 353 15 5810 5879 10 0 919 -439 448 495 40 0 7372 10 0 285 -440 13 465 -4 0 7368 10 992 0 -441 489 159 -20 5723 5818 10 538 0 -442 311 203 -21 0 7610 10 227 0 -443 480 119 -18 0 7423 10 783 0 -444 442 153 -10 4765 4865 10 347 0 -445 148 462 -12 2906 3028 10 832 0 -446 233 87 -32 966 1174 10 165 0 -447 323 34 -19 0 7459 10 412 0 -448 84 377 -36 3699 3831 10 134 0 -449 292 32 -13 0 7465 10 300 0 -450 418 75 -17 1807 1896 10 534 0 -451 451 305 -11 0 7479 10 265 0 -452 225 269 -5 0 7656 10 316 0 -453 272 420 7 0 7516 10 0 961 -454 318 280 21 254 340 10 0 254 -455 250 57 26 0 7494 10 0 423 -456 77 372 19 0 7476 10 0 474 -457 385 58 24 1661 1697 10 0 236 -458 44 496 -30 0 7367 10 892 0 -459 460 328 -31 0 7463 10 584 0 -460 67 24 10 0 7397 10 0 842 -461 91 27 14 0 7414 10 0 663 -462 360 284 -36 2660 2792 10 220 0 -463 82 183 -23 4444 4490 10 938 0 -464 153 362 -6 0 7539 10 655 0 -465 52 412 22 0 7432 10 0 876 -466 32 191 -27 2344 2465 10 644 0 -467 325 147 -28 0 7560 10 206 0 -468 328 458 -19 0 7465 10 517 0 -469 133 273 20 419 535 10 0 385 -470 147 30 -23 4424 4565 10 326 0 -471 131 246 17 0 7568 10 0 611 -472 433 319 -28 5509 5621 10 641 0 -473 168 59 6 0 7480 10 0 963 -474 218 403 -19 0 7531 10 456 0 -475 295 89 -16 0 7520 10 985 0 -476 118 314 -35 0 7541 10 816 0 -477 251 63 -27 3981 4039 10 243 0 -478 388 44 22 0 7440 10 0 661 -479 381 328 -15 0 7535 10 989 0 -480 132 32 18 0 7440 10 0 672 -481 334 403 26 620 776 10 0 840 -482 83 290 -26 0 7516 10 417 0 -483 411 396 23 0 7470 10 0 374 -484 243 402 13 0 7535 10 0 585 -485 52 18 28 0 7382 10 0 240 -486 265 0 10 0 7437 10 0 422 -487 268 288 26 0 7645 10 0 560 -488 476 61 -21 0 7393 10 81 0 -489 283 438 3 0 7497 10 0 346 -490 191 215 17 211 338 10 0 120 -491 253 50 27 0 7487 10 0 962 -492 71 282 29 0 7506 10 0 979 -493 297 304 -33 0 7616 10 837 0 -494 244 368 25 0 7569 10 0 288 -495 80 279 -27 0 7515 10 811 0 -496 488 96 22 0 7404 10 0 65 -497 142 30 -19 0 7442 10 49 0 -498 68 240 11 3176 3300 10 0 179 -499 193 138 30 0 7562 10 0 781 -500 451 62 5 0 7412 10 0 620 -501 138 406 -11 4892 4956 10 228 0 -502 306 42 -33 0 7472 10 339 0 -503 247 219 17 0 7656 10 0 415 -504 98 29 14 4209 4284 10 0 187 -505 102 6 3 0 7402 10 0 305 -506 142 360 -19 0 7533 10 822 0 -507 172 24 17 5814 5924 10 0 558 -508 352 241 5 3178 3280 10 0 520 -509 486 324 15 0 7440 10 0 109 -510 133 455 -20 0 7451 10 572 0 -511 440 292 -10 0 7493 10 276 0 -512 364 173 30 700 862 10 0 367 -513 442 289 -6 0 7492 10 335 0 -514 48 412 -36 0 7429 10 635 0 -515 344 70 -33 4542 4743 10 275 0 -516 78 406 -24 3818 3986 10 687 0 -517 329 456 19 0 7467 10 0 468 -518 157 38 -28 0 7456 10 570 0 -519 374 260 -13 0 7563 10 390 0 -520 297 283 -5 0 7630 10 508 0 -521 210 113 -16 0 7545 10 108 0 -522 215 434 9 0 7500 10 0 56 -523 262 92 -21 2507 2657 10 743 0 -524 140 108 29 0 7508 10 0 545 -525 235 108 12 0 7545 10 0 325 -526 210 133 -18 0 7564 10 376 0 -527 25 53 -32 4088 4193 10 737 0 -528 339 113 -15 0 7524 10 73 0 -529 394 310 -21 4410 4498 10 219 0 -530 126 391 19 0 7500 10 0 31 -531 343 34 7 0 7452 10 0 695 -532 354 416 -7 2719 2836 10 154 0 -533 202 391 -16 2497 2611 10 426 0 -534 367 97 17 0 7495 10 0 450 -535 188 151 7 0 7571 10 0 427 -536 111 178 -12 0 7531 10 851 0 -537 456 157 -26 5788 5972 10 223 0 -538 441 7 20 0 7378 10 0 441 -539 270 337 20 0 7598 10 0 928 -540 323 29 7 4533 4687 10 0 650 -541 200 78 31 0 7508 10 0 147 -542 330 281 14 0 7602 10 0 136 -543 438 488 18 1304 1433 10 0 972 -544 161 416 -9 0 7499 10 785 0 -545 30 97 -29 4851 4951 10 524 0 -546 273 70 36 0 7506 10 0 953 -547 214 245 8 0 7651 10 0 887 -548 221 291 -18 0 7637 10 106 0 -549 79 467 -29 1400 1531 10 874 0 -550 423 315 -17 0 7503 10 199 0 -551 395 474 26 0 7421 0 0 1001 -552 481 207 34 0 7453 10 0 586 -553 199 203 20 0 7618 10 0 77 -554 497 483 12 1407 1541 10 0 388 -555 449 428 25 4966 5129 10 0 730 -556 100 266 -15 0 7537 10 734 0 -557 214 274 -9 5490 5583 10 131 0 -558 16 68 -17 0 7391 10 507 0 -559 475 198 -22 3335 3466 10 749 0 -560 371 427 -26 0 7473 10 487 0 -561 62 375 16 1410 1500 10 0 315 -562 163 472 9 0 7449 10 0 618 -563 13 314 14 0 7442 10 0 7 -564 376 385 -12 0 7503 10 936 0 -565 231 29 14 4896 5035 10 0 701 -566 89 358 -23 4950 5147 10 393 0 -567 331 356 -1 0 7554 10 747 0 -568 365 190 -21 0 7558 10 116 0 -569 256 441 -18 0 7496 10 714 0 -570 120 37 28 0 7438 10 0 518 -571 349 43 -9 0 7458 10 319 0 -572 230 487 20 0 7450 10 0 510 -573 489 457 -15 0 7371 10 313 0 -574 341 72 9 3243 3315 10 0 598 -575 181 441 -3 0 7484 10 431 0 -576 306 229 10 0 7628 10 0 834 -577 492 326 -12 4863 4890 10 389 0 -578 347 459 25 0 7457 10 0 958 -579 66 88 -24 0 7442 10 48 0 -580 272 234 -9 0 7660 10 898 0 -581 134 194 19 0 7559 10 0 711 -582 320 211 16 0 7607 10 0 289 -583 214 311 14 0 7617 10 0 303 -584 489 274 31 0 7447 10 0 459 -585 231 410 -13 0 7526 10 484 0 -586 432 199 -34 0 7498 10 552 0 -587 29 358 -13 0 7442 10 946 0 -588 62 236 -20 2238 2345 10 606 0 -589 333 163 -11 4973 5068 10 949 0 -590 364 71 5 0 7475 10 0 40 -591 125 65 17 0 7464 10 0 42 -592 429 476 -29 2314 2392 10 28 0 -593 161 275 21 5370 5524 10 0 39 -594 365 274 -31 395 545 10 839 0 -595 117 110 -15 0 7494 10 923 0 -596 166 345 -26 0 7561 10 705 0 -597 345 146 -21 5727 5905 10 797 0 -598 324 99 -9 0 7519 10 574 0 -599 72 477 -18 0 7399 10 291 0 -600 487 320 -10 0 7440 10 759 0 -601 120 17 30 0 7421 10 0 925 -602 1 252 -11 0 7438 10 62 0 -603 303 186 10 0 7604 10 0 637 -604 428 302 -36 0 7502 10 301 0 -605 264 135 1 0 7572 10 0 309 -606 223 178 20 0 7611 10 0 588 -607 174 347 3 0 7564 10 0 720 -608 238 123 -19 0 7560 10 987 0 -609 187 61 19 2155 2325 10 0 258 -610 52 303 -22 0 7483 10 60 0 -611 89 185 -17 0 7514 10 471 0 -612 341 59 -24 0 7476 10 763 0 -613 89 65 -11 2863 3019 10 16 0 -614 495 355 -29 0 7421 10 90 0 -615 368 452 -13 2673 2806 10 359 0 -616 164 473 -17 1149 1340 10 681 0 -617 171 34 21 0 7458 10 0 70 -618 114 460 -9 0 7437 10 562 0 -619 224 3 10 0 7439 10 0 918 -620 472 57 -5 0 7393 10 500 0 -621 448 404 -5 2407 2505 10 85 0 -622 390 120 -13 0 7496 10 623 0 -623 386 225 13 0 7549 10 0 622 -624 301 239 -14 0 7635 10 664 0 -625 115 296 -4 6112 6239 10 656 0 -626 69 266 12 0 7506 10 0 944 -627 115 395 -8 3274 3368 10 124 0 -628 68 53 -8 0 7419 10 118 0 -629 33 268 18 0 7470 10 0 671 -630 450 45 -30 2005 2144 10 632 0 -631 351 5 -18 0 7422 10 683 0 -632 351 148 30 0 7544 10 0 630 -633 80 458 -18 0 7419 10 815 0 -634 60 5 -22 0 7377 10 331 0 -635 10 407 36 1758 1838 10 0 514 -636 497 18 -11 0 7349 10 800 0 -637 437 98 -10 0 7447 10 603 0 -638 130 494 -2 0 7416 10 264 0 -639 391 202 14 0 7539 10 0 268 -640 43 210 20 0 7477 10 0 668 -641 381 457 28 0 7443 10 0 472 -642 449 190 2 0 7480 10 0 942 -643 429 169 8 3607 3735 10 0 878 -644 105 140 27 0 7505 10 0 466 -645 282 10 -7 0 7445 10 724 0 -646 20 480 -27 0 7362 10 194 0 -647 61 170 -23 0 7482 10 867 0 -648 210 81 -44 0 7514 10 237 0 -649 87 311 -10 0 7513 10 778 0 -650 309 29 -7 0 7459 10 540 0 -651 397 57 -13 0 7445 10 792 0 -652 337 232 -12 6266 6418 10 863 0 -653 262 369 15 0 7568 10 0 218 -654 41 232 -5 0 7478 10 786 0 -655 69 414 6 5007 5220 10 0 464 -656 149 98 4 0 7505 10 0 625 -657 207 487 4 0 7447 10 0 731 -658 366 260 23 0 7571 10 0 311 -659 497 54 14 0 7372 10 0 708 -660 210 379 -22 0 7552 10 349 0 -661 437 19 -22 0 7390 10 478 0 -662 181 260 -27 0 7618 10 756 0 -663 125 61 -14 2460 2554 10 461 0 -664 368 311 14 0 7555 10 0 624 -665 80 400 -5 5772 5918 10 768 0 -666 75 118 -23 0 7468 10 117 0 -667 171 303 18 0 7592 10 0 752 -668 80 251 -20 0 7517 10 640 0 -669 455 168 -3 0 7467 10 152 0 -670 215 129 -23 0 7562 10 193 0 -671 179 318 -18 0 7589 10 629 0 -672 187 73 -18 0 7500 10 480 0 -673 394 47 5 0 7439 10 0 217 -674 31 175 -1 0 7456 10 89 0 -675 339 144 13 0 7549 10 0 746 -676 492 34 5 0 7363 10 0 742 -677 387 349 9 0 7518 10 0 205 -678 142 372 18 0 7525 10 0 698 -679 291 213 -21 5018 5163 10 926 0 -680 421 387 15 0 7468 10 0 101 -681 274 403 17 0 7533 10 0 616 -682 434 359 13 0 7474 10 0 69 -683 257 57 18 0 7494 10 0 631 -684 428 202 -25 0 7503 10 704 0 -685 355 174 33 0 7558 10 0 233 -686 46 389 22 0 7441 10 0 318 -687 44 440 24 0 7407 10 0 516 -688 491 369 28 2891 3065 10 0 940 -689 33 286 -24 0 7468 10 192 0 -690 351 128 15 0 7529 10 0 796 -691 485 428 -14 0 7393 10 334 0 -692 273 149 -21 0 7584 10 769 0 -693 447 184 -16 0 7480 10 321 0 -694 386 245 -19 0 7551 10 371 0 -695 323 77 -7 5590 5771 10 531 0 -696 21 70 15 0 7396 10 0 238 -697 9 101 -29 0 7404 10 955 0 -698 71 304 -18 2745 2888 10 678 0 -699 43 360 2 0 7453 10 0 835 -700 396 417 13 0 7466 10 0 358 -701 158 24 -14 0 7443 10 565 0 -702 164 320 12 0 7577 10 0 95 -703 195 386 13 0 7541 10 0 210 -704 306 235 25 172 291 10 0 684 -705 66 314 26 0 7493 10 0 596 -706 95 64 4 3083 3164 10 0 17 -707 348 348 -23 0 7549 10 836 0 -708 495 83 -14 0 7391 10 659 0 -709 61 214 -12 0 7495 10 22 0 -710 240 240 -13 6820 6897 10 137 0 -711 140 137 -19 2276 2401 10 581 0 -712 242 106 28 0 7543 10 0 141 -713 392 491 10 0 7408 10 0 122 -714 342 481 18 5769 5871 10 0 569 -715 478 300 -40 0 7454 10 11 0 -716 299 285 -33 4991 5160 10 809 0 -717 481 84 17 0 7403 10 0 424 -718 271 128 12 0 7564 10 0 971 -719 484 224 7 0 7452 10 0 430 -720 441 177 -3 0 7483 10 607 0 -721 46 163 8 0 7466 10 0 748 -722 493 493 -27 0 7344 10 902 0 -723 253 74 -14 0 7511 10 437 0 -724 390 34 7 0 7430 10 0 645 -725 374 306 -22 0 7551 10 4 0 -726 436 295 11 0 7496 10 0 252 -727 371 315 -29 0 7550 10 772 0 -728 27 464 -13 0 7378 10 729 0 -729 3 471 13 0 7356 10 0 728 -730 418 269 -25 0 7518 10 555 0 -731 90 477 -4 0 7410 10 657 0 -732 141 426 23 0 7480 10 0 933 -733 418 251 -11 0 7519 10 998 0 -734 57 183 15 0 7483 10 0 556 -735 29 462 -31 0 7381 10 875 0 -736 55 318 13 0 7481 10 0 186 -737 18 24 32 2551 2596 10 0 527 -738 263 153 12 0 7590 10 0 789 -739 289 220 -17 0 7638 10 330 0 -740 84 255 -30 0 7521 10 754 0 -741 159 299 -8 0 7584 10 133 0 -742 485 104 -5 0 7411 10 676 0 -743 178 135 21 0 7552 10 0 523 -744 389 255 15 0 7548 10 0 167 -745 457 280 -27 4013 4105 10 99 0 -746 171 24 -13 0 7448 10 675 0 -747 330 371 1 0 7542 10 0 567 -748 10 237 -8 0 7447 10 721 0 -749 458 213 22 0 7476 10 0 559 -750 257 391 22 0 7546 10 0 144 -751 482 184 -20 4437 4538 10 148 0 -752 222 331 -18 2158 2279 10 667 0 -753 332 5 14 4110 4272 0 0 1007 -754 47 208 30 0 7480 10 0 740 -755 489 437 29 0 7384 10 0 86 -756 165 59 27 0 7478 10 0 662 -757 211 446 -10 0 7488 10 203 0 -758 225 488 28 0 7448 10 0 53 -759 355 485 10 0 7430 10 0 600 -760 441 374 10 873 1034 10 0 226 -761 399 175 -37 0 7521 10 308 0 -762 103 464 22 0 7428 10 0 896 -763 244 13 24 4068 4156 10 0 612 -764 51 360 -15 0 7460 10 166 0 -765 44 115 -24 0 7441 10 432 0 -766 312 453 -15 0 7475 10 213 0 -767 64 198 -17 0 7494 10 37 0 -768 67 451 5 0 7416 10 0 665 -769 371 71 21 0 7471 10 0 692 -770 439 156 -19 0 7476 10 342 0 -771 105 474 27 0 7421 10 0 920 -772 366 288 29 0 7565 10 0 727 -773 415 207 18 3588 3731 10 0 409 -774 58 39 -31 0 7402 10 894 0 -775 197 202 29 0 7616 10 0 996 -776 442 5 -30 0 7376 10 847 0 -777 71 12 -24 0 7390 10 119 0 -778 74 215 10 0 7508 10 0 649 -779 347 192 -22 5930 6096 10 908 0 -780 178 420 -23 0 7503 10 115 0 -781 186 135 -30 0 7556 10 499 0 -782 176 199 28 0 7598 10 0 381 -783 438 5 18 0 7379 10 0 443 -784 150 68 23 0 7480 10 0 143 -785 185 434 9 0 7492 10 0 544 -786 215 79 5 0 7513 10 0 654 -787 177 486 -31 6397 6501 10 865 0 -788 49 437 7 1698 1842 10 0 799 -789 100 66 -12 0 7450 10 738 0 -790 35 344 21 0 7453 10 0 907 -791 433 447 -10 3179 3294 10 24 0 -792 372 97 13 0 7492 10 0 651 -793 344 203 -18 0 7582 10 993 0 -794 423 170 27 2022 2203 10 0 185 -795 171 188 30 2481 2604 10 0 947 -796 64 5 -15 0 7380 10 690 0 -797 371 163 21 0 7538 10 0 597 -798 398 210 31 0 7534 10 0 969 -799 48 437 -7 0 7412 10 788 0 -800 392 1 11 0 7401 10 0 636 -801 195 464 -45 0 7467 10 175 0 -802 211 248 26 0 7648 10 0 386 -803 293 228 19 133 253 10 0 363 -804 23 235 43 0 7460 10 0 407 -805 213 185 21 0 7613 10 0 76 -806 172 292 17 370 485 10 0 912 -807 228 287 -23 0 7644 10 281 0 -808 387 394 -30 0 7489 10 269 0 -809 374 232 33 0 7562 10 0 716 -810 48 366 29 0 7455 10 0 973 -811 44 311 27 1631 1749 10 0 495 -812 447 272 12 0 7489 10 0 885 -813 132 477 -14 0 7432 10 176 0 -814 80 117 24 0 7472 10 0 54 -815 11 403 18 1416 1448 10 0 633 -816 144 220 35 0 7577 10 0 476 -817 473 491 -7 0 7359 10 128 0 -818 210 219 7 0 7637 0 0 1003 -819 452 484 26 0 7378 10 0 821 -820 365 28 9 0 7437 10 0 831 -821 498 456 -26 0 7365 10 819 0 -822 84 453 19 4911 4993 10 0 506 -823 91 427 14 0 7450 10 0 196 -824 178 72 23 3035 3139 10 0 366 -825 409 155 -31 0 7502 10 262 0 -826 132 151 22 0 7533 10 0 239 -827 136 430 14 0 7474 10 0 202 -828 292 104 -15 0 7536 10 256 0 -829 443 167 -26 0 7477 10 35 0 -830 321 149 -9 0 7564 10 68 0 -831 235 13 -9 0 7450 10 820 0 -832 166 440 12 772 890 10 0 445 -833 112 433 29 0 7458 10 0 244 -834 452 172 -10 0 7471 10 576 0 -835 37 281 -2 0 7472 10 699 0 -836 414 378 23 1961 2117 10 0 707 -837 475 352 33 0 7440 10 0 493 -838 400 71 -10 0 7454 10 14 0 -839 286 244 31 0 7651 10 0 594 -840 429 389 -26 1700 1812 10 481 0 -841 92 76 4 0 7452 10 0 375 -842 124 111 -10 0 7500 10 460 0 -843 268 458 -23 0 7479 10 372 0 -844 352 63 6 4718 4827 10 0 888 -845 49 118 -1 0 7447 10 32 0 -846 398 329 17 0 7520 10 0 207 -847 382 9 30 1118 1176 10 0 776 -848 229 322 11 0 7612 10 0 880 -849 279 355 9 0 7579 10 0 356 -850 266 221 -19 0 7654 10 25 0 -851 142 80 12 0 7486 10 0 536 -852 359 287 24 0 7572 10 0 50 -853 482 104 19 0 7413 10 0 74 -854 284 457 17 6018 6090 10 0 333 -855 64 294 -9 0 7496 10 859 0 -856 404 59 13 0 7442 10 0 891 -857 68 160 21 0 7484 10 0 329 -858 211 411 -14 4631 4662 10 890 0 -859 30 155 9 5129 5235 10 0 855 -860 240 34 28 0 7471 10 0 45 -861 107 374 8 0 7498 10 0 964 -862 404 140 8 0 7498 10 0 23 -863 436 467 12 0 7402 10 0 652 -864 421 386 29 0 7469 10 0 189 -865 182 480 31 0 7448 10 0 787 -866 9 233 31 1227 1343 10 0 909 -867 110 251 23 2007 2095 10 0 647 -868 19 38 -15 0 7374 10 52 0 -869 46 248 9 0 7483 10 0 71 -870 308 199 14 0 7610 10 0 877 -871 423 221 9 0 7512 10 0 379 -872 313 391 -20 0 7533 10 401 0 -873 413 345 -7 4872 4993 10 403 0 -874 278 450 29 0 7486 10 0 549 -875 94 497 31 0 7395 10 0 735 -876 7 382 -22 3053 3231 10 465 0 -877 493 111 -14 2162 2286 10 870 0 -878 392 87 -8 0 7471 10 643 0 -879 13 394 15 0 7410 10 0 88 -880 259 301 -11 0 7636 10 848 0 -881 351 233 -18 5692 5811 10 96 0 -882 313 493 20 0 7436 10 0 382 -883 65 62 -26 0 7424 10 232 0 -884 417 212 12 0 7516 10 0 102 -885 450 194 -12 0 7480 10 812 0 -886 470 138 16 0 7441 10 0 373 -887 190 267 -8 0 7625 10 547 0 -888 248 214 -6 5955 5999 10 844 0 -889 50 383 -15 0 7447 10 435 0 -890 244 422 14 2134 2288 10 0 858 -891 60 29 -13 0 7396 10 856 0 -892 5 445 30 0 7374 10 0 458 -893 490 276 -20 0 7446 10 153 0 -894 441 100 31 0 7445 10 0 774 -895 162 388 -24 0 7524 10 170 0 -896 244 277 -22 5204 5326 10 762 0 -897 406 408 -20 0 7465 10 904 0 -898 265 240 9 21 123 10 0 580 -899 130 186 16 513 656 10 0 180 -900 382 110 -13 0 7495 10 975 0 -901 142 14 -16 0 7428 10 425 0 -902 352 487 27 0 7429 10 0 722 -903 307 52 -25 3703 3781 10 80 0 -904 418 399 20 0 7463 10 0 897 -905 196 56 15 0 7486 10 0 915 -906 66 31 -13 0 7401 10 383 0 -907 90 496 -21 0 7394 10 790 0 -908 480 136 22 0 7431 10 0 779 -909 65 82 -31 2966 3071 10 866 0 -910 48 293 -12 0 7481 10 354 0 -911 105 181 -27 0 7527 10 970 0 -912 215 282 -17 0 7640 10 806 0 -913 257 133 19 0 7570 10 0 173 -914 77 465 -27 0 7412 10 280 0 -915 43 135 -15 0 7451 10 905 0 -916 27 444 22 0 7392 10 0 941 -917 357 290 -18 0 7573 10 6 0 -918 38 15 -10 0 7371 10 619 0 -919 80 337 -15 0 7497 10 438 0 -920 36 451 -27 0 7394 10 771 0 -921 291 251 20 0 7646 10 0 369 -922 195 111 15 0 7538 10 0 67 -923 383 17 15 0 7419 10 0 595 -924 53 466 9 0 7395 10 0 272 -925 114 102 -30 0 7487 10 601 0 -926 350 199 21 4787 4945 10 0 679 -927 405 349 -19 0 7504 10 263 0 -928 472 248 -20 0 7465 10 539 0 -929 333 293 27 2494 2563 10 0 9 -930 174 397 32 4978 5099 10 0 392 -931 2 264 -12 0 7439 10 387 0 -932 7 82 -16 0 7392 10 59 0 -933 34 329 -23 0 7458 10 732 0 -934 158 179 37 0 7571 10 0 293 -935 421 499 -35 0 7385 10 163 0 -936 345 431 12 0 7483 10 0 564 -937 370 262 15 0 7567 10 0 361 -938 77 172 23 0 7498 10 0 463 -939 87 51 -8 0 7430 10 51 0 -940 468 352 -28 0 7447 10 688 0 -941 63 420 -22 0 7435 10 916 0 -942 347 184 -2 0 7570 10 642 0 -943 206 174 14 3201 3318 10 0 350 -944 209 212 -12 6142 6200 10 626 0 -945 466 362 -15 0 7444 10 211 0 -946 201 278 13 170 282 10 0 587 -947 206 172 -30 3131 3293 10 795 0 -948 471 94 -3 0 7417 10 274 0 -949 331 134 11 4479 4631 10 0 589 -950 274 261 -24 0 7661 10 320 0 -951 219 215 -15 0 7641 10 397 0 -952 349 76 15 0 7487 10 0 100 -953 86 189 -36 0 7513 10 546 0 -954 336 493 -15 0 7430 10 214 0 -955 7 194 29 0 7438 10 0 697 -956 492 335 -23 3316 3430 10 156 0 -957 248 386 22 0 7551 10 0 168 -958 463 406 -25 0 7423 10 578 0 -959 199 438 -33 0 7493 10 984 0 -960 135 30 -23 0 7439 10 967 0 -961 447 267 -7 0 7490 10 453 0 -962 235 33 -27 0 7470 10 491 0 -963 63 155 -6 0 7478 10 473 0 -964 294 421 -8 6292 6431 10 861 0 -965 318 99 35 0 7522 10 0 402 -966 21 146 -18 0 7436 10 345 0 -967 30 7 23 4734 4895 10 0 960 -968 410 399 25 983 1007 10 0 121 -969 405 187 -31 0 7520 10 798 0 -970 109 56 27 0 7448 10 0 911 -971 212 47 -12 0 7481 10 718 0 -972 479 387 -18 0 7421 10 543 0 -973 167 291 -29 0 7595 10 810 0 -974 259 498 33 0 7439 10 0 997 -975 461 182 13 2540 2612 10 0 900 -976 277 428 7 0 7507 10 0 110 -977 290 328 7 555 714 10 0 112 -978 146 313 22 4793 4890 10 0 184 -979 40 304 -29 4559 4718 10 492 0 -980 56 268 -28 0 7493 10 398 0 -981 104 28 -13 0 7422 10 114 0 -982 370 493 22 0 7416 10 0 353 -983 136 265 -10 390 530 10 279 0 -984 247 306 33 182 266 10 0 959 -985 241 38 16 2127 2246 10 0 475 -986 180 162 9 653 855 10 0 2 -987 253 118 19 0 7555 10 0 608 -988 413 391 8 0 7472 10 0 34 -989 380 350 15 3462 3589 10 0 479 -990 391 112 24 0 7490 10 0 216 -991 86 199 23 0 7516 10 0 43 -992 91 326 4 0 7511 10 0 440 -993 287 256 18 61 239 10 0 793 -994 203 211 20 0 7626 10 0 266 -995 79 80 -20 0 7446 10 83 0 -996 32 319 -29 1621 1703 10 775 0 -997 167 445 -33 0 7476 10 974 0 -998 439 237 11 0 7498 10 0 733 -999 373 418 -21 0 7479 10 197 0 -1000 26 342 12 0 7445 10 0 129 -1001 395 474 -26 0 7421 10 551 0 -1002 175 422 -24 0 7500 10 126 0 -1003 210 219 -7 0 7637 10 818 0 -1004 187 263 -35 0 7623 10 36 0 -1005 228 260 -12 6450 6514 10 411 0 -1006 67 378 -26 0 7464 10 209 0 -1007 332 5 -14 4110 4272 10 753 0 -1008 164 332 -19 0 7569 10 241 0 diff --git a/jsprit-instances/instances/lilim/1000/LR2105.txt b/jsprit-instances/instances/lilim/1000/LR2105.txt deleted file mode 100644 index 6eaeb21fa..000000000 --- a/jsprit-instances/instances/lilim/1000/LR2105.txt +++ /dev/null @@ -1,1010 +0,0 @@ -250 1000 1 -0 250 250 0 0 7697 0 0 0 -1 228 399 -23 2285 2525 10 286 0 -2 325 56 13 3126 3366 10 0 515 -3 290 145 -12 5066 5306 10 22 0 -4 340 291 22 1822 2062 10 0 529 -5 370 382 -27 3475 3715 10 201 0 -6 273 255 -21 5908 6148 10 733 0 -7 36 301 -12 760 1000 10 983 0 -8 117 178 -24 4409 4649 10 608 0 -9 295 283 -12 3513 3753 10 550 0 -10 57 43 -11 4034 4274 10 16 0 -11 436 123 -19 781 1021 10 825 0 -12 48 162 -24 809 1049 10 674 0 -13 222 499 7 3321 3561 10 0 384 -14 376 92 10 3902 4142 10 0 534 -15 437 90 12 2280 2520 10 0 948 -16 3 23 11 1506 1746 10 0 10 -17 94 40 24 4212 4452 10 0 918 -18 398 476 25 1612 1852 10 0 24 -19 307 249 10 5446 5686 10 0 881 -20 179 286 8 1305 1545 10 0 521 -21 0 356 13 4285 4525 10 0 979 -22 143 158 12 490 730 10 0 3 -23 413 476 -3 4656 4896 10 358 0 -24 371 488 -25 2271 2511 10 18 0 -25 415 118 19 806 1046 10 0 693 -26 440 77 -18 3592 3832 10 446 0 -27 261 201 15 5996 6236 0 0 1005 -28 490 286 -20 2029 2269 10 904 0 -29 309 161 23 2273 2513 10 0 367 -30 39 162 18 2201 2441 10 0 174 -31 361 178 5 3830 4070 10 0 303 -32 261 138 1 2413 2653 10 0 761 -33 447 383 17 831 1071 10 0 101 -34 346 354 -9 3210 3450 10 677 0 -35 461 195 -33 5520 5760 10 79 0 -36 187 263 35 137 377 10 0 955 -37 130 247 17 360 600 10 0 257 -38 328 491 -12 2653 2893 10 936 0 -39 161 276 -23 474 714 10 662 0 -40 365 74 -18 3334 3574 10 672 0 -41 168 109 10 757 997 10 0 84 -42 111 192 11 4738 4978 10 0 679 -43 87 213 -17 2443 2683 10 295 0 -44 45 166 22 3993 4233 10 0 463 -45 62 94 16 3742 3982 10 0 460 -46 348 476 -8 4727 4967 10 221 0 -47 64 437 11 3613 3853 10 0 920 -48 56 75 24 5691 5931 0 0 1001 -49 24 259 19 1420 1660 10 0 557 -50 295 247 -8 5154 5394 10 808 0 -51 6 53 -25 2288 2528 10 932 0 -52 15 11 -10 3747 3987 10 279 0 -53 179 497 1 5584 5824 10 0 177 -54 67 352 20 1433 1673 10 0 980 -55 317 45 8 2573 2813 10 0 565 -56 40 278 -38 4358 4598 10 255 0 -57 33 278 -2 5889 6129 10 699 0 -58 322 290 -15 5856 6096 10 937 0 -59 159 226 16 256 496 10 0 899 -60 208 445 22 5270 5510 10 0 144 -61 453 360 13 804 1044 10 0 840 -62 34 169 -22 1878 2118 10 826 0 -63 436 25 -24 5069 5309 10 119 0 -64 393 98 -30 2950 3190 10 512 0 -65 466 96 -16 5473 5713 10 637 0 -66 366 390 -21 5213 5453 10 116 0 -67 303 78 12 600 840 10 0 841 -68 374 116 -8 2289 2529 10 409 0 -69 424 288 -6 4169 4409 10 335 0 -70 191 84 -23 3408 3648 10 117 0 -71 59 276 11 3510 3750 10 0 266 -72 215 293 13 102 342 10 0 549 -73 343 276 15 266 506 10 0 452 -74 488 173 -22 4781 5021 10 908 0 -75 452 110 14 1301 1541 10 0 742 -76 153 244 5 371 611 10 0 280 -77 176 200 17 2210 2450 10 0 525 -78 498 171 12 4966 5206 10 0 652 -79 492 188 33 2801 3041 10 0 35 -80 177 156 25 609 849 10 0 258 -81 398 49 -16 3107 3347 10 425 0 -82 497 296 -33 2390 2630 10 837 0 -83 276 84 20 2665 2905 10 0 528 -84 128 113 -10 1391 1631 10 41 0 -85 422 498 5 2708 2948 10 0 713 -86 460 424 -23 5758 5998 10 483 0 -87 246 314 -23 5721 5961 10 281 0 -88 0 422 8 3224 3464 10 0 438 -89 166 247 1 216 456 10 0 469 -90 311 422 -25 3892 4132 10 880 0 -91 392 95 16 3005 3245 10 0 216 -92 460 117 -16 2019 2259 10 776 0 -93 28 467 34 5310 5550 10 0 667 -94 375 145 12 3657 3897 10 0 675 -95 240 255 -24 6384 6624 10 192 0 -96 440 436 -13 3508 3748 10 700 0 -97 454 201 -20 5160 5400 10 559 0 -98 407 35 -13 5093 5333 10 792 0 -99 420 383 -9 3868 4108 10 159 0 -100 264 180 -1 6663 6903 10 427 0 -101 440 294 -17 3781 4021 10 33 0 -102 500 228 8 3067 3307 10 0 669 -103 144 331 13 3665 3905 10 0 762 -104 98 2 14 2307 2547 10 0 723 -105 461 186 -13 5989 6229 10 975 0 -106 68 450 -22 2470 2710 10 395 0 -107 153 192 -21 3403 3643 10 925 0 -108 34 239 16 816 1056 10 0 697 -109 465 367 14 4047 4287 10 0 577 -110 208 488 22 1850 2090 10 0 801 -111 93 413 17 785 1025 10 0 646 -112 371 332 -19 2058 2298 10 263 0 -113 231 167 15 221 461 10 0 598 -114 179 75 13 2900 3140 10 0 860 -115 196 489 23 4061 4301 10 0 171 -116 280 245 21 30 270 10 0 66 -117 108 37 23 2138 2378 10 0 70 -118 1 101 -8 4969 5209 10 169 0 -119 420 80 24 4327 4567 10 0 63 -120 38 190 -23 1079 1319 10 991 0 -121 470 405 17 3643 3883 10 0 247 -122 448 397 33 3402 3642 10 0 958 -123 471 427 8 3206 3446 10 0 897 -124 146 376 8 877 1117 10 0 150 -125 12 358 -7 4837 5077 10 649 0 -126 175 422 -6 5726 5966 10 638 0 -127 297 131 -11 4602 4842 10 949 0 -128 457 492 7 1972 2212 10 0 680 -129 69 423 -13 3150 3390 10 729 0 -130 97 288 -23 5076 5316 10 187 0 -131 172 314 9 2122 2362 10 0 947 -132 170 347 15 1683 1923 10 0 752 -133 103 123 -23 1899 2139 10 784 0 -134 154 374 -17 3688 3928 10 198 0 -135 318 497 -3 3355 3595 10 489 0 -136 330 147 28 3334 3574 10 0 467 -137 241 180 -3 6718 6958 10 518 0 -138 174 67 -17 4979 5219 10 471 0 -139 235 288 18 43 283 10 0 865 -140 94 192 -11 4261 4501 10 360 0 -141 232 101 24 1324 1564 10 0 595 -142 28 180 34 1482 1722 10 0 938 -143 64 135 -11 3413 3653 10 498 0 -144 174 376 -22 5617 5857 10 60 0 -145 293 174 -9 229 469 10 850 0 -146 218 12 3 2116 2356 10 0 253 -147 110 122 -23 5975 6215 10 545 0 -148 459 53 -7 4429 4669 10 724 0 -149 173 474 -10 5080 5320 10 445 0 -150 135 400 -8 1134 1374 10 124 0 -151 497 266 -9 2930 3170 10 940 0 -152 380 194 3 2794 3034 10 0 779 -153 495 227 20 1316 1556 10 0 719 -154 268 351 -36 6640 6880 10 301 0 -155 213 399 18 876 1116 10 0 413 -156 448 414 23 4831 5071 10 0 999 -157 327 139 13 4969 5209 10 0 165 -158 151 81 -21 6172 6412 10 617 0 -159 425 448 9 3118 3358 10 0 99 -160 92 259 4 1538 1778 10 0 283 -161 59 388 20 2591 2831 10 0 810 -162 468 360 16 1036 1276 10 0 945 -163 332 459 -34 1415 1655 10 569 0 -164 469 489 -12 2162 2402 10 554 0 -165 248 176 -13 5546 5786 10 157 0 -166 174 41 -14 5154 5394 10 238 0 -167 343 205 26 3009 3249 10 0 289 -168 154 392 9 566 806 10 0 941 -169 92 18 8 4437 4677 10 0 118 -170 250 328 24 935 1175 10 0 175 -171 88 484 -23 5903 6143 10 115 0 -172 360 488 -19 1202 1442 10 517 0 -173 156 65 22 4089 4329 10 0 326 -174 18 225 -18 2705 2945 10 30 0 -175 152 476 -24 2030 2270 10 170 0 -176 176 470 14 2127 2367 10 0 827 -177 195 450 -1 5884 6124 10 53 0 -178 466 149 -17 4684 4924 10 829 0 -179 221 269 -21 5002 5242 10 404 0 -180 105 137 32 1749 1989 10 0 588 -181 284 319 17 3207 3447 10 0 199 -182 41 120 22 2724 2964 10 0 967 -183 263 418 25 1054 1294 10 0 196 -184 218 271 -19 6235 6475 10 495 0 -185 365 119 -5 1467 1707 10 786 0 -186 89 322 -20 4023 4263 10 401 0 -187 180 283 23 2915 3155 10 0 130 -188 385 17 -26 3175 3415 10 877 0 -189 401 314 -26 3846 4086 10 351 0 -190 245 176 20 4879 5119 10 0 994 -191 251 238 27 12 252 10 0 922 -192 139 438 24 796 1036 10 0 95 -193 236 126 23 379 619 10 0 429 -194 61 441 -46 2115 2355 10 599 0 -195 405 454 -14 5152 5392 10 334 0 -196 111 392 -25 4616 4856 10 183 0 -197 373 421 21 890 1130 10 0 341 -198 247 443 17 1261 1501 10 0 134 -199 322 406 -17 3257 3497 10 181 0 -200 412 478 7 3779 4019 10 0 950 -201 374 346 27 1624 1864 10 0 5 -202 122 422 -15 5767 6007 10 757 0 -203 261 359 10 318 558 10 0 653 -204 173 182 25 291 531 10 0 709 -205 398 341 33 3697 3937 10 0 604 -206 413 127 -9 3263 3503 10 574 0 -207 325 311 22 5229 5469 10 0 270 -208 80 357 1 2062 2302 10 0 887 -209 67 378 -13 1822 2062 10 736 0 -210 216 341 -1 2556 2796 10 747 0 -211 498 457 -15 3592 3832 10 621 0 -212 44 344 12 4258 4498 10 0 625 -213 352 481 -20 5079 5319 10 572 0 -214 237 420 -10 5277 5517 10 448 0 -215 389 43 21 1522 1762 10 0 631 -216 292 136 -16 3062 3302 10 91 0 -217 426 38 -17 2375 2615 10 717 0 -218 245 461 8 2537 2777 10 0 848 -219 415 253 21 1406 1646 10 0 658 -220 298 264 36 80 320 10 0 730 -221 307 412 8 1555 1795 10 0 46 -222 53 204 -13 4160 4400 10 740 0 -223 480 152 -5 4026 4266 10 673 0 -224 262 97 -15 3728 3968 10 526 0 -225 83 169 21 3046 3286 10 0 243 -226 377 432 -12 3266 3506 10 479 0 -227 390 249 -24 2267 2507 10 852 0 -228 132 479 11 910 1150 10 0 382 -229 359 246 -14 5631 5871 10 664 0 -230 314 205 -20 6047 6287 10 365 0 -231 124 448 6 1414 1654 10 0 788 -232 0 188 -16 3668 3908 10 561 0 -233 343 166 28 3444 3684 10 0 900 -234 482 141 -18 3983 4223 10 783 0 -235 162 306 22 417 657 10 0 475 -236 24 71 11 1324 1564 10 0 634 -237 188 119 44 3839 4079 10 0 690 -238 100 85 14 1344 1584 10 0 166 -239 103 177 28 2446 2686 10 0 721 -240 26 67 -15 5207 5447 10 696 0 -241 164 332 -23 5059 5299 10 867 0 -242 385 285 13 3412 3652 10 0 884 -243 209 68 -21 6212 6452 10 225 0 -244 149 341 6 1556 1796 10 0 576 -245 415 95 -7 4647 4887 10 531 0 -246 167 488 17 940 1180 10 0 616 -247 413 493 -17 4813 5053 10 121 0 -248 439 222 -31 3858 4098 10 584 0 -249 150 484 -9 2441 2681 10 785 0 -250 299 353 34 336 576 10 0 760 -251 273 300 30 100 340 10 0 849 -252 402 277 -26 5694 5934 10 487 0 -253 239 15 -3 2355 2595 10 146 0 -254 363 225 -15 3363 3603 10 442 0 -255 65 343 38 769 1009 10 0 56 -256 351 60 15 781 1021 10 0 708 -257 60 246 -17 640 880 10 37 0 -258 144 35 -25 839 1079 10 80 0 -259 463 253 -10 4128 4368 10 956 0 -260 332 382 -16 3982 4222 10 346 0 -261 408 318 15 2512 2752 10 0 725 -262 452 206 31 1909 2149 10 0 356 -263 471 368 19 1652 1892 10 0 112 -264 93 490 2 1457 1697 10 0 799 -265 241 402 -23 4039 4279 10 560 0 -266 60 231 -11 4044 4284 10 71 0 -267 172 66 18 5151 5391 10 0 535 -268 404 207 -13 3582 3822 10 623 0 -269 286 356 30 328 568 10 0 481 -270 489 338 -22 5529 5769 10 207 0 -271 334 481 32 1262 1502 10 0 532 -272 26 442 -32 5316 5556 10 458 0 -273 226 175 -19 6715 6955 10 400 0 -274 488 3 -19 1542 1782 10 412 0 -275 178 150 33 2466 2706 10 0 423 -276 371 423 -15 724 964 10 313 0 -277 5 224 19 4159 4399 10 0 593 -278 94 344 26 2669 2909 10 0 399 -279 153 235 10 273 513 10 0 52 -280 12 367 -5 1243 1483 10 76 0 -281 217 357 23 5620 5860 10 0 87 -282 255 487 19 1532 1772 10 0 575 -283 149 214 -4 1868 2108 10 160 0 -284 169 305 -5 587 827 10 316 0 -285 487 446 -12 5301 5541 10 863 0 -286 267 374 23 2343 2583 10 0 1 -287 360 294 -24 5611 5851 10 320 0 -288 185 431 15 1488 1728 10 0 671 -289 325 210 -26 3674 3914 10 167 0 -290 175 352 -31 6600 6840 10 875 0 -291 76 462 18 3764 4004 10 0 465 -292 19 273 -26 4006 4246 10 417 0 -293 72 227 25 2195 2435 10 0 857 -294 213 283 14 5824 6064 10 0 912 -295 130 140 17 716 956 10 0 43 -296 274 442 -16 4205 4445 10 615 0 -297 337 41 -27 3949 4189 10 612 0 -298 372 39 10 2834 3074 10 0 659 -299 269 112 -18 4991 5231 10 480 0 -300 224 56 -35 4686 4926 10 368 0 -301 340 416 36 1224 1464 10 0 154 -302 13 214 21 5354 5594 10 0 581 -303 230 320 -5 4708 4948 10 31 0 -304 6 196 -10 4753 4993 10 778 0 -305 87 3 -15 5672 5912 10 789 0 -306 133 202 33 1782 2022 10 0 626 -307 235 316 2 2563 2803 10 0 930 -308 435 180 -14 838 1078 10 639 0 -309 173 65 12 1734 1974 10 0 939 -310 245 42 24 2129 2369 10 0 609 -311 384 149 -31 4729 4969 10 369 0 -312 51 286 -21 5776 6016 10 790 0 -313 267 290 15 54 294 10 0 276 -314 453 318 30 1435 1675 10 0 694 -315 189 402 10 2084 2324 10 0 681 -316 210 276 5 71 311 10 0 284 -317 120 261 5 3113 3353 10 0 804 -318 35 263 27 1021 1261 10 0 811 -319 429 59 9 1775 2015 10 0 361 -320 330 308 24 4622 4862 10 0 287 -321 58 391 -6 3469 3709 10 766 0 -322 260 472 33 4084 4324 10 0 759 -323 217 333 26 1584 1824 10 0 775 -324 335 46 -11 5307 5547 10 502 0 -325 198 85 28 990 1230 10 0 878 -326 138 28 -22 4326 4566 10 173 0 -327 29 336 22 1266 1506 10 0 835 -328 200 27 -17 2039 2279 10 503 0 -329 157 269 -11 6245 6485 10 689 0 -330 177 404 -7 4989 5229 10 464 0 -331 202 28 -35 3677 3917 10 816 0 -332 366 334 5 1581 1821 10 0 727 -333 149 458 13 4595 4835 10 0 501 -334 481 454 14 1222 1462 10 0 195 -335 377 385 6 3405 3645 10 0 69 -336 217 207 -19 5470 5710 10 530 0 -337 96 346 26 681 921 10 0 482 -338 224 320 -16 5075 5315 10 582 0 -339 206 97 -27 1732 1972 10 491 0 -340 438 127 2 3704 3944 10 0 540 -341 494 468 -21 1350 1590 10 197 0 -342 494 165 -21 2357 2597 10 769 0 -343 5 281 -12 5426 5666 10 855 0 -344 441 60 -9 5775 6015 10 820 0 -345 14 232 18 1160 1400 10 0 996 -346 288 439 16 1034 1274 10 0 260 -347 420 224 -25 1656 1896 10 513 0 -348 267 162 -31 5737 5977 10 894 0 -349 195 273 22 118 358 10 0 913 -350 233 230 20 26 266 10 0 536 -351 382 360 26 652 892 10 0 189 -352 406 460 2 2817 3057 10 0 691 -353 499 316 -25 2427 2667 10 968 0 -354 246 407 12 1186 1426 10 0 544 -355 283 454 14 5000 5240 10 0 453 -356 426 231 -31 4054 4294 10 262 0 -357 432 2 20 1806 2046 10 0 853 -358 404 439 3 895 1135 10 0 23 -359 397 477 -13 4803 5043 10 573 0 -360 44 140 11 3413 3653 10 0 140 -361 330 138 -9 4378 4618 10 319 0 -362 39 153 -19 3131 3371 10 748 0 -363 397 153 29 3470 3710 10 0 622 -364 226 316 21 161 401 10 0 843 -365 354 156 20 3270 3510 10 0 230 -366 201 66 -4 4607 4847 10 656 0 -367 389 156 -23 2802 3042 10 29 0 -368 134 211 35 422 662 10 0 300 -369 386 154 31 4344 4584 10 0 311 -370 335 99 -35 4814 5054 10 965 0 -371 356 256 19 305 545 10 0 885 -372 240 362 -25 5595 5835 10 555 0 -373 412 100 1 1993 2233 10 0 568 -374 394 322 -27 4039 4279 10 929 0 -375 48 150 15 2560 2800 10 0 628 -376 225 121 18 2874 3114 10 0 943 -377 102 422 23 845 1085 10 0 892 -378 339 41 -24 1763 2003 10 457 0 -379 440 201 -7 3510 3750 10 403 0 -380 411 379 -23 4713 4953 10 707 0 -381 219 210 14 82 322 10 0 738 -382 250 441 -11 2963 3203 10 228 0 -383 210 29 -26 4143 4383 10 455 0 -384 178 302 -7 3486 3726 10 13 0 -385 148 208 22 2046 2286 10 0 605 -386 225 369 38 366 606 10 0 660 -387 16 287 -8 1023 1263 10 547 0 -388 450 416 25 2247 2487 10 0 592 -389 287 397 -9 2197 2437 10 522 0 -390 285 247 -6 5039 5279 10 414 0 -391 351 481 10 1227 1467 10 0 882 -392 243 408 15 5675 5915 0 0 1006 -393 137 377 23 560 800 10 0 476 -394 33 152 17 5220 5460 0 0 1007 -395 68 303 22 825 1065 10 0 106 -396 456 113 -20 4849 5089 10 921 0 -397 134 276 15 473 713 10 0 815 -398 26 221 28 3926 4166 10 0 566 -399 79 257 -26 3752 3992 10 278 0 -400 181 185 19 6395 6635 10 0 273 -401 104 349 20 3977 4217 10 0 186 -402 267 174 -14 6413 6653 10 870 0 -403 475 267 7 3058 3298 10 0 379 -404 385 239 21 3082 3322 10 0 179 -405 95 382 -19 865 1105 10 456 0 -406 67 190 25 4633 4873 10 0 911 -407 32 94 -20 3661 3901 10 640 0 -408 401 164 13 2425 2665 10 0 642 -409 376 113 8 1997 2237 10 0 68 -410 409 255 -12 6030 6270 10 812 0 -411 228 260 12 6362 6602 0 0 1002 -412 363 34 19 1029 1269 10 0 274 -413 274 441 -18 2718 2958 10 155 0 -414 146 188 6 4880 5120 10 0 390 -415 212 186 -19 6826 7066 10 995 0 -416 432 66 -5 4225 4465 10 676 0 -417 83 300 26 1939 2179 10 0 292 -418 51 89 19 4773 5013 10 0 981 -419 379 486 22 2627 2867 10 0 964 -420 440 284 25 3347 3587 10 0 511 -421 175 239 23 183 423 10 0 610 -422 282 1 -15 4110 4350 10 923 0 -423 268 113 -33 2659 2899 10 275 0 -424 480 131 -5 2690 2930 10 500 0 -425 429 67 16 2869 3109 10 0 81 -426 162 301 -9 6392 6632 10 924 0 -427 281 96 1 4443 4683 10 0 100 -428 495 199 25 1287 1527 10 0 580 -429 372 115 -23 1395 1635 10 193 0 -430 396 83 -22 6286 6526 10 496 0 -431 239 486 -28 5868 6108 10 641 0 -432 288 70 24 656 896 10 0 570 -433 66 163 -21 1522 1762 10 953 0 -434 470 417 11 2887 3127 10 0 935 -435 226 423 15 728 968 10 0 861 -436 342 319 36 340 580 10 0 716 -437 174 122 -14 2313 2553 10 449 0 -438 49 353 -8 5724 5964 10 88 0 -439 448 495 -23 1474 1714 10 817 0 -440 13 465 31 3034 3274 10 0 973 -441 489 159 29 5651 5891 10 0 537 -442 311 203 15 2830 3070 10 0 254 -443 480 119 -20 2454 2694 10 538 0 -444 442 153 -11 4695 4935 10 928 0 -445 148 462 10 2847 3087 10 0 149 -446 233 87 18 950 1190 10 0 26 -447 323 34 -11 5199 5439 10 650 0 -448 84 377 10 3645 3885 10 0 214 -449 292 32 14 857 1097 10 0 437 -450 418 75 11 1732 1972 10 0 546 -451 451 305 13 714 954 10 0 896 -452 225 269 -15 5023 5263 10 73 0 -453 272 420 -14 5483 5723 10 355 0 -454 318 280 21 177 417 10 0 462 -455 250 57 26 2933 3173 10 0 383 -456 77 372 19 727 967 10 0 405 -457 385 58 24 1559 1799 10 0 378 -458 44 496 32 1547 1787 10 0 272 -459 460 328 13 816 1056 10 0 744 -460 67 24 -16 4014 4254 10 45 0 -461 91 27 -14 4667 4907 10 796 0 -462 360 284 -21 2606 2846 10 454 0 -463 82 183 -22 4347 4587 10 44 0 -464 153 362 7 4585 4825 10 0 330 -465 52 412 -18 5563 5803 10 291 0 -466 32 191 5 2285 2525 10 0 734 -467 325 147 -28 4687 4927 10 136 0 -468 328 458 -26 3011 3251 10 551 0 -469 133 273 -1 357 597 10 89 0 -470 147 30 -26 4375 4615 10 663 0 -471 131 246 17 3268 3508 10 0 138 -472 433 319 -14 5445 5685 10 542 0 -473 168 59 -30 1404 1644 10 601 0 -474 218 403 -12 5217 5457 10 741 0 -475 295 89 -22 2908 3148 10 235 0 -476 118 314 -23 1290 1530 10 393 0 -477 251 63 14 3890 4130 10 0 746 -478 388 44 -12 4463 4703 10 718 0 -479 381 328 12 2809 3049 10 0 226 -480 132 32 18 3078 3318 10 0 299 -481 334 403 -30 578 818 10 269 0 -482 83 290 -26 2370 2610 10 337 0 -483 411 396 23 3621 3861 10 0 86 -484 243 402 -22 1560 1800 10 957 0 -485 52 18 -2 3368 3608 10 579 0 -486 265 0 10 3524 3764 10 0 845 -487 268 288 26 5008 5248 10 0 252 -488 476 61 36 1735 1975 10 0 651 -489 283 438 3 866 1106 10 0 135 -490 191 215 17 154 394 10 0 648 -491 253 50 27 843 1083 10 0 339 -492 71 282 -20 2507 2747 10 889 0 -493 297 304 4 166 406 10 0 836 -494 244 368 25 1596 1836 10 0 823 -495 80 279 19 4571 4811 10 0 184 -496 488 96 22 4205 4445 10 0 430 -497 142 30 -27 4924 5164 10 970 0 -498 68 240 11 3118 3358 10 0 143 -499 193 138 -17 2583 2823 10 806 0 -500 451 62 5 1069 1309 10 0 424 -501 138 406 -13 4804 5044 10 333 0 -502 306 42 11 1847 2087 10 0 324 -503 247 219 17 31 271 10 0 328 -504 98 29 14 4126 4366 10 0 891 -505 102 6 -12 5774 6014 10 774 0 -506 142 360 -13 6068 6308 10 703 0 -507 172 24 -2 5749 5989 10 777 0 -508 352 241 5 3109 3349 10 0 926 -509 486 324 -8 3018 3258 10 988 0 -510 133 455 25 3172 3412 10 0 992 -511 440 292 -25 3700 3940 10 420 0 -512 364 173 30 661 901 10 0 64 -513 442 289 25 704 944 10 0 347 -514 48 412 -9 4068 4308 10 548 0 -515 344 70 -13 4523 4763 10 2 0 -516 78 406 -24 3782 4022 10 687 0 -517 329 456 19 936 1176 10 0 172 -518 157 38 3 4131 4371 10 0 137 -519 374 260 -13 7039 7279 10 682 0 -520 297 283 -15 5338 5578 10 989 0 -521 210 113 -8 2701 2941 10 20 0 -522 215 434 9 710 950 10 0 389 -523 262 92 -19 2462 2702 10 739 0 -524 140 108 -18 4225 4465 10 901 0 -525 235 108 -17 4258 4498 10 77 0 -526 210 133 15 2694 2934 10 0 224 -527 25 53 23 4020 4260 10 0 883 -528 339 113 -20 2982 3222 10 83 0 -529 394 310 -22 4334 4574 10 4 0 -530 126 391 19 1031 1271 10 0 336 -531 343 34 7 2839 3079 10 0 245 -532 354 416 -32 2657 2897 10 271 0 -533 202 391 30 2434 2674 10 0 895 -534 367 97 -10 3892 4132 10 14 0 -535 188 151 -18 5127 5367 10 267 0 -536 111 178 -20 506 746 10 350 0 -537 456 157 -29 5760 6000 10 441 0 -538 441 7 20 1506 1746 10 0 443 -539 270 337 20 7071 7311 0 0 1004 -540 323 29 -2 4490 4730 10 340 0 -541 200 78 -9 3911 4151 10 986 0 -542 330 281 14 5262 5502 10 0 472 -543 438 488 18 1249 1489 10 0 864 -544 161 416 -12 3985 4225 10 354 0 -545 30 97 23 4781 5021 10 0 147 -546 273 70 -11 2417 2657 10 450 0 -547 214 245 8 36 276 10 0 387 -548 221 291 9 124 364 10 0 514 -549 79 467 -13 1346 1586 10 72 0 -550 423 315 12 660 900 10 0 9 -551 395 474 26 1488 1728 10 0 468 -552 481 207 34 3364 3604 10 0 720 -553 199 203 20 5769 6009 0 0 1008 -554 497 483 12 1354 1594 10 0 164 -555 449 428 25 4927 5167 10 0 372 -556 100 266 5 1819 2059 10 0 978 -557 214 274 -19 5416 5656 10 49 0 -558 16 68 -31 1066 1306 10 915 0 -559 475 198 20 3281 3521 10 0 97 -560 371 427 23 3773 4013 10 0 265 -561 62 375 16 1335 1575 10 0 232 -562 163 472 9 2554 2794 10 0 780 -563 13 314 14 915 1155 10 0 876 -564 376 385 12 619 859 10 0 688 -565 231 29 -8 4845 5085 10 55 0 -566 89 358 -28 4929 5169 10 398 0 -567 331 356 -18 2787 3027 10 993 0 -568 365 190 -1 5850 6090 10 373 0 -569 256 441 34 644 884 10 0 163 -570 120 37 -24 3041 3281 10 432 0 -571 349 43 26 798 1038 10 0 847 -572 230 487 20 4458 4698 10 0 213 -573 489 457 13 1205 1445 10 0 359 -574 341 72 9 3159 3399 10 0 206 -575 181 441 -19 2107 2347 10 282 0 -576 306 229 -6 5221 5461 10 244 0 -577 492 326 -14 4756 4996 10 109 0 -578 347 459 25 1858 2098 10 0 982 -579 66 88 2 3259 3499 10 0 485 -580 272 234 -25 6301 6541 10 428 0 -581 134 194 -21 6547 6787 10 302 0 -582 320 211 16 3910 4150 10 0 338 -583 214 311 14 163 403 10 0 633 -584 489 274 31 2075 2315 10 0 248 -585 231 410 -7 4886 5126 10 976 0 -586 432 199 7 2494 2734 10 0 751 -587 29 358 23 2383 2623 10 0 933 -588 62 236 -32 2172 2412 10 180 0 -589 333 163 -9 4901 5141 10 898 0 -590 364 71 5 5334 5574 10 0 695 -591 125 65 -24 3094 3334 10 781 0 -592 429 476 -25 2233 2473 10 388 0 -593 161 275 -19 5327 5567 10 277 0 -594 365 274 -31 350 590 10 624 0 -595 117 110 -24 3855 4095 10 141 0 -596 166 345 -14 4459 4699 10 890 0 -597 345 146 -18 5696 5936 10 683 0 -598 324 99 -15 1292 1532 10 113 0 -599 72 477 46 1034 1274 10 0 194 -600 487 320 -15 3371 3611 10 927 0 -601 120 17 30 1056 1296 10 0 473 -602 1 252 5 1041 1281 10 0 910 -603 303 186 10 5357 5597 10 0 888 -604 428 302 -33 4004 4244 10 205 0 -605 264 135 -22 3458 3698 10 385 0 -606 223 178 -17 4485 4725 10 670 0 -607 174 347 3 3999 4239 10 0 959 -608 238 123 24 3064 3304 10 0 8 -609 187 61 -24 2120 2360 10 310 0 -610 52 303 -23 1705 1945 10 421 0 -611 89 185 -27 2339 2579 10 644 0 -612 341 59 27 3099 3339 10 0 297 -613 89 65 16 2821 3061 10 0 756 -614 495 355 -11 4913 5153 10 726 0 -615 368 452 16 2620 2860 10 0 296 -616 164 473 -17 1125 1365 10 246 0 -617 171 34 21 4512 4752 10 0 158 -618 114 460 14 4284 4524 10 0 907 -619 224 3 10 2702 2942 10 0 824 -620 472 57 -10 5119 5359 10 636 0 -621 448 404 15 2336 2576 10 0 211 -622 390 120 -29 3957 4197 10 363 0 -623 386 225 13 3614 3854 10 0 268 -624 301 239 31 89 329 10 0 594 -625 115 296 -12 6055 6295 10 212 0 -626 69 266 -33 2973 3213 10 306 0 -627 115 395 11 3201 3441 10 0 997 -628 68 53 -15 2895 3135 10 375 0 -629 33 268 -37 2723 2963 10 934 0 -630 450 45 24 1954 2194 10 0 661 -631 351 5 -21 1924 2164 10 215 0 -632 351 148 30 1785 2025 10 0 797 -633 80 458 -14 1422 1662 10 583 0 -634 60 5 -11 4115 4355 10 236 0 -635 10 407 36 1678 1918 10 0 919 -636 497 18 10 4460 4700 10 0 620 -637 437 98 16 4395 4635 10 0 65 -638 130 494 6 2975 3215 10 0 126 -639 391 202 14 476 716 10 0 308 -640 43 210 20 723 963 10 0 407 -641 381 457 28 1823 2063 10 0 431 -642 449 190 -13 4500 4740 10 408 0 -643 429 169 -9 3551 3791 10 834 0 -644 105 140 27 608 848 10 0 611 -645 282 10 -24 4986 5226 10 990 0 -646 20 480 -17 2221 2461 10 111 0 -647 61 170 -21 3963 4203 10 966 0 -648 210 81 -17 1536 1776 10 490 0 -649 87 311 7 576 816 10 0 125 -650 309 29 11 5116 5356 10 0 447 -651 397 57 -36 5844 6084 10 488 0 -652 337 232 -12 6222 6462 10 78 0 -653 262 369 -10 457 697 10 203 0 -654 41 232 16 761 1001 10 0 906 -655 69 414 -28 4993 5233 10 758 0 -656 149 98 4 4600 4840 10 0 366 -657 207 487 -33 2697 2937 10 984 0 -658 366 260 -21 6021 6261 10 219 0 -659 497 54 -10 3852 4092 10 298 0 -660 210 379 -38 2775 3015 10 386 0 -661 437 19 -24 3996 4236 10 630 0 -662 181 260 23 159 399 10 0 39 -663 125 61 26 2387 2627 10 0 470 -664 368 311 14 3644 3884 10 0 229 -665 80 400 -22 5725 5965 10 916 0 -666 75 118 -14 1576 1816 10 668 0 -667 171 303 -34 6297 6537 10 93 0 -668 80 251 14 1154 1394 10 0 666 -669 455 168 -8 3407 3647 10 102 0 -670 215 129 17 4414 4654 10 0 606 -671 179 318 -15 4423 4663 10 288 0 -672 187 73 18 1108 1348 10 0 40 -673 394 47 5 1192 1432 10 0 223 -674 31 175 24 926 1166 10 0 12 -675 339 144 -12 4336 4576 10 94 0 -676 492 34 5 3182 3422 10 0 416 -677 387 349 9 556 796 10 0 34 -678 142 372 18 532 772 10 0 839 -679 291 213 -11 4971 5211 10 42 0 -680 421 387 -7 3145 3385 10 128 0 -681 274 403 -10 3490 3730 10 315 0 -682 434 359 13 5509 5749 10 0 519 -683 257 57 18 4844 5084 10 0 597 -684 428 202 24 3555 3795 10 0 874 -685 355 174 -14 2801 3041 10 793 0 -686 46 389 22 967 1207 10 0 698 -687 44 440 24 3095 3335 10 0 516 -688 491 369 -12 2858 3098 10 564 0 -689 33 286 11 6124 6364 10 0 329 -690 351 128 -44 4953 5193 10 237 0 -691 485 428 -2 5900 6140 10 352 0 -692 273 149 -6 5951 6191 10 844 0 -693 447 184 -19 1638 1878 10 25 0 -694 386 245 -30 1856 2096 10 314 0 -695 323 77 -5 5560 5800 10 590 0 -696 21 70 15 3025 3265 10 0 240 -697 9 101 -16 2604 2844 10 108 0 -698 71 304 -22 2696 2936 10 686 0 -699 43 360 2 3281 3521 10 0 57 -700 396 417 13 3180 3420 10 0 96 -701 158 24 -12 2385 2625 10 851 0 -702 164 320 -25 4319 4559 10 813 0 -703 195 386 13 467 707 10 0 506 -704 306 235 -19 112 352 10 803 0 -705 66 314 26 659 899 10 0 1000 -706 95 64 4 3004 3244 10 0 903 -707 348 348 23 3679 3919 10 0 380 -708 495 83 -15 1703 1943 10 256 0 -709 61 214 -25 1307 1547 10 204 0 -710 240 240 -18 6738 6978 10 944 0 -711 140 137 -19 2219 2459 10 987 0 -712 242 106 -27 5014 5254 10 831 0 -713 392 491 -5 4471 4711 10 85 0 -714 342 481 18 5700 5940 10 0 954 -715 478 300 12 3498 3738 10 0 961 -716 299 285 -36 4955 5195 10 436 0 -717 481 84 17 1962 2202 10 0 217 -718 271 128 12 1322 1562 10 0 478 -719 484 224 -20 1138 1378 10 153 0 -720 441 177 -34 3945 4185 10 552 0 -721 46 163 -28 3644 3884 10 239 0 -722 493 493 -29 3366 3606 10 755 0 -723 253 74 -14 5340 5580 10 104 0 -724 390 34 7 4181 4421 10 0 148 -725 374 306 -15 3916 4156 10 261 0 -726 436 295 11 2053 2293 10 0 614 -727 371 315 -5 4603 4843 10 332 0 -728 27 464 -17 5104 5344 10 735 0 -729 3 471 13 2783 3023 10 0 129 -730 418 269 -36 4759 4999 10 220 0 -731 90 477 -11 991 1231 10 914 0 -732 141 426 23 2066 2306 10 0 768 -733 418 251 21 4727 4967 10 0 6 -734 57 183 -5 4341 4581 10 466 0 -735 29 462 17 5178 5418 10 0 728 -736 55 318 13 1188 1428 10 0 209 -737 18 24 -24 2453 2693 10 765 0 -738 263 153 -14 1590 1830 10 381 0 -739 289 220 19 77 317 10 0 523 -740 84 255 13 1068 1308 10 0 222 -741 159 299 12 4002 4242 10 0 474 -742 485 104 -14 3118 3358 10 75 0 -743 178 135 -30 5995 6235 10 754 0 -744 389 255 -13 3081 3321 10 459 0 -745 457 280 -7 3939 4179 10 977 0 -746 171 24 -14 5474 5714 10 477 0 -747 330 371 1 2174 2414 10 0 210 -748 10 237 19 2406 2646 10 0 362 -749 458 213 22 4453 4693 10 0 886 -750 257 391 -27 6472 6712 10 902 0 -751 482 184 -7 4367 4607 10 586 0 -752 222 331 -15 2098 2338 10 132 0 -753 332 5 14 4071 4311 10 0 830 -754 47 208 30 846 1086 10 0 743 -755 489 437 29 2767 3007 10 0 722 -756 165 59 -16 3711 3951 10 613 0 -757 211 446 15 4434 4674 10 0 202 -758 225 488 28 2482 2722 10 0 655 -759 355 485 -33 5856 6096 10 322 0 -760 441 374 -34 833 1073 10 250 0 -761 399 175 -1 2928 3168 10 32 0 -762 103 464 -13 5032 5272 10 103 0 -763 244 13 -15 3992 4232 10 842 0 -764 51 360 -15 4518 4758 10 879 0 -765 44 115 24 865 1105 10 0 737 -766 312 453 6 2139 2379 10 0 321 -767 64 198 10 4294 4534 10 0 859 -768 67 451 -23 4802 5042 10 732 0 -769 371 71 21 1087 1327 10 0 342 -770 439 156 -33 2043 2283 10 893 0 -771 105 474 -29 1823 2063 10 833 0 -772 366 288 29 2675 2915 10 0 873 -773 415 207 18 3540 3780 10 0 942 -774 58 39 12 4592 4832 10 0 505 -775 197 202 -26 4755 4995 10 323 0 -776 442 5 16 1221 1461 10 0 92 -777 71 12 2 1112 1352 10 0 507 -778 74 215 10 855 1095 10 0 304 -779 347 192 -3 5893 6133 10 152 0 -780 178 420 -9 4225 4465 10 562 0 -781 186 135 24 2811 3051 10 0 591 -782 176 199 -7 239 479 10 818 0 -783 438 5 18 2136 2376 10 0 234 -784 150 68 23 1631 1871 10 0 133 -785 185 434 9 2234 2474 10 0 249 -786 215 79 5 834 1074 10 0 185 -787 177 486 -15 6329 6569 10 858 0 -788 49 437 -6 1650 1890 10 231 0 -789 100 66 15 5539 5779 10 0 305 -790 35 344 21 3392 3632 10 0 312 -791 433 447 -5 3117 3357 10 872 0 -792 372 97 13 795 1035 10 0 98 -793 344 203 14 609 849 10 0 685 -794 423 170 -9 1992 2232 10 871 0 -795 171 188 -13 2422 2662 10 946 0 -796 64 5 14 4456 4696 10 0 461 -797 371 163 -30 3251 3491 10 632 0 -798 398 210 -33 493 733 10 809 0 -799 48 437 -2 3155 3395 10 264 0 -800 392 1 11 2361 2601 10 0 838 -801 195 464 -22 6105 6345 10 110 0 -802 211 248 26 39 279 10 0 866 -803 293 228 19 73 313 10 0 704 -804 23 235 -5 4033 4273 10 317 0 -805 213 185 21 179 419 10 0 960 -806 172 292 17 308 548 10 0 499 -807 228 287 21 52 292 10 0 832 -808 387 394 8 4330 4570 10 0 50 -809 374 232 33 381 621 10 0 798 -810 48 366 -20 2912 3152 10 161 0 -811 44 311 -27 1570 1810 10 318 0 -812 447 272 12 1475 1715 10 0 410 -813 132 477 25 1249 1489 10 0 702 -814 80 117 24 3237 3477 10 0 963 -815 11 403 -15 1312 1552 10 397 0 -816 144 220 35 321 561 10 0 331 -817 473 491 23 1593 1833 10 0 439 -818 210 219 7 82 322 10 0 782 -819 452 484 26 5054 5294 10 0 821 -820 365 28 9 1013 1253 10 0 344 -821 498 456 -26 5564 5804 10 819 0 -822 84 453 19 4832 5072 0 0 1003 -823 91 427 -25 3470 3710 10 494 0 -824 178 72 -10 2967 3207 10 619 0 -825 409 155 19 621 861 10 0 11 -826 132 151 22 496 736 10 0 62 -827 136 430 -14 2781 3021 10 176 0 -828 292 104 26 1156 1396 10 0 985 -829 443 167 17 2113 2353 10 0 178 -830 321 149 -14 5638 5878 10 753 0 -831 235 13 27 1375 1615 10 0 712 -832 166 440 -21 711 951 10 807 0 -833 112 433 29 880 1120 10 0 771 -834 452 172 9 2373 2613 10 0 643 -835 37 281 -22 1913 2153 10 327 0 -836 414 378 -4 1919 2159 10 493 0 -837 475 352 33 1179 1419 10 0 82 -838 400 71 -11 5428 5668 10 800 0 -839 286 244 -18 5076 5316 10 678 0 -840 429 389 -13 1636 1876 10 61 0 -841 92 76 -12 4496 4736 10 67 0 -842 124 111 15 3098 3338 10 0 763 -843 268 458 -21 2032 2272 10 364 0 -844 352 63 6 4653 4893 10 0 692 -845 49 118 -10 4226 4466 10 486 0 -846 398 329 -24 551 791 10 917 0 -847 382 9 -26 1027 1267 10 571 0 -848 229 322 -8 6581 6821 10 218 0 -849 279 355 -30 605 845 10 251 0 -850 266 221 9 33 273 10 0 145 -851 142 80 12 1908 2148 10 0 701 -852 359 287 24 340 580 10 0 227 -853 482 104 -20 3170 3410 10 357 0 -854 284 457 -33 5934 6174 10 974 0 -855 64 294 12 4345 4585 10 0 343 -856 404 59 13 3592 3832 10 0 952 -857 68 160 -25 4483 4723 10 293 0 -858 211 411 15 4526 4766 10 0 787 -859 30 155 -10 5062 5302 10 767 0 -860 240 34 -13 6178 6418 10 114 0 -861 107 374 -15 3597 3837 10 435 0 -862 404 140 8 4975 5215 10 0 969 -863 436 467 12 2884 3124 10 0 285 -864 421 386 -18 3237 3477 10 543 0 -865 182 480 -18 1399 1639 10 139 0 -866 9 233 -26 1165 1405 10 802 0 -867 110 251 23 1931 2171 10 0 241 -868 19 38 -13 3329 3569 10 909 0 -869 46 248 -40 3195 3435 10 931 0 -870 308 199 14 5973 6213 10 0 402 -871 423 221 9 973 1213 10 0 794 -872 313 391 5 538 778 10 0 791 -873 413 345 -29 4812 5052 10 772 0 -874 278 450 -24 5440 5680 10 684 0 -875 94 497 31 3069 3309 10 0 290 -876 7 382 -14 3022 3262 10 563 0 -877 493 111 26 2104 2344 10 0 188 -878 392 87 -28 4671 4911 10 325 0 -879 13 394 15 1430 1670 10 0 764 -880 259 301 25 335 575 10 0 90 -881 351 233 -10 5631 5871 10 19 0 -882 313 493 -10 4712 4952 10 391 0 -883 65 62 -23 3846 4086 10 527 0 -884 417 212 -13 3581 3821 10 242 0 -885 450 194 -19 2439 2679 10 371 0 -886 470 138 -22 5498 5738 10 749 0 -887 190 267 -1 6955 7195 10 208 0 -888 248 214 -10 5857 6097 10 603 0 -889 50 383 20 980 1220 10 0 492 -890 244 422 14 2091 2331 10 0 596 -891 60 29 -14 5391 5631 10 504 0 -892 5 445 -23 1184 1424 10 377 0 -893 490 276 33 891 1131 10 0 770 -894 441 100 31 3434 3674 10 0 348 -895 162 388 -30 4444 4684 10 533 0 -896 244 277 -13 5145 5385 10 451 0 -897 406 408 -8 5765 6005 10 123 0 -898 265 240 9 18 258 10 0 589 -899 130 186 -16 465 705 10 59 0 -900 382 110 -28 4390 4630 10 233 0 -901 142 14 18 3281 3521 10 0 524 -902 352 487 27 3547 3787 10 0 750 -903 307 52 -4 3622 3862 10 706 0 -904 418 399 20 1691 1931 10 0 28 -905 196 56 15 2378 2618 10 0 962 -906 66 31 -16 4134 4374 10 654 0 -907 90 496 -14 5521 5761 10 618 0 -908 480 136 22 907 1147 10 0 74 -909 65 82 13 2898 3138 10 0 868 -910 48 293 -5 1044 1284 10 602 0 -911 105 181 -25 6065 6305 10 406 0 -912 215 282 -14 5702 5942 10 294 0 -913 257 133 -22 3389 3629 10 349 0 -914 77 465 11 984 1224 10 0 731 -915 43 135 31 827 1067 10 0 558 -916 27 444 22 4261 4501 10 0 665 -917 357 290 24 337 577 10 0 846 -918 38 15 -24 4304 4544 10 17 0 -919 80 337 -36 4417 4657 10 635 0 -920 36 451 -11 3495 3735 10 47 0 -921 291 251 20 44 284 10 0 396 -922 195 111 -27 3932 4172 10 191 0 -923 383 17 15 3702 3942 10 0 422 -924 53 466 9 1280 1520 10 0 426 -925 114 102 21 1969 2209 10 0 107 -926 350 199 -5 4746 4986 10 508 0 -927 405 349 15 2029 2269 10 0 600 -928 472 248 11 3278 3518 10 0 444 -929 333 293 27 2408 2648 10 0 374 -930 174 397 -2 4919 5159 10 307 0 -931 2 264 40 2558 2798 10 0 869 -932 7 82 25 1586 1826 10 0 51 -933 34 329 -23 4112 4352 10 587 0 -934 158 179 37 345 585 10 0 629 -935 421 499 -11 5321 5561 10 434 0 -936 345 431 12 1320 1560 10 0 38 -937 370 262 15 4338 4578 10 0 58 -938 77 172 -34 3082 3322 10 142 0 -939 87 51 -12 1997 2237 10 309 0 -940 468 352 9 3013 3253 10 0 151 -941 63 420 -9 2018 2258 10 168 0 -942 347 184 -18 4255 4495 10 773 0 -943 206 174 -18 3139 3379 10 376 0 -944 209 212 18 6051 6291 10 0 710 -945 466 362 -16 4549 4789 10 162 0 -946 201 278 13 106 346 10 0 795 -947 206 172 -9 3092 3332 10 131 0 -948 471 94 -12 3935 4175 10 15 0 -949 331 134 11 4435 4675 10 0 127 -950 274 261 -7 6768 7008 10 200 0 -951 219 215 32 67 307 10 0 971 -952 349 76 -13 4063 4303 10 856 0 -953 86 189 21 847 1087 10 0 433 -954 336 493 -18 5912 6152 10 714 0 -955 7 194 -35 3745 3985 10 36 0 -956 492 335 10 3253 3493 10 0 259 -957 248 386 22 1453 1693 10 0 484 -958 463 406 -33 3369 3609 10 122 0 -959 199 438 -3 5382 5622 10 607 0 -960 135 30 -21 1838 2078 10 805 0 -961 447 267 -12 3858 4098 10 715 0 -962 235 33 -15 5288 5528 10 905 0 -963 63 155 -24 3799 4039 10 814 0 -964 294 421 -22 6242 6482 10 419 0 -965 318 99 35 4791 5031 10 0 370 -966 21 146 21 1887 2127 10 0 647 -967 30 7 -22 4694 4934 10 182 0 -968 410 399 25 875 1115 10 0 353 -969 405 187 -8 4942 5182 10 862 0 -970 109 56 27 839 1079 10 0 497 -971 212 47 -32 3144 3384 10 951 0 -972 479 387 13 1530 1770 10 0 998 -973 167 291 -31 6477 6717 10 440 0 -974 259 498 33 4240 4480 10 0 854 -975 461 182 13 2456 2696 10 0 105 -976 277 428 7 1901 2141 10 0 585 -977 290 328 7 515 755 10 0 745 -978 146 313 -5 4721 4961 10 556 0 -979 40 304 -13 4519 4759 10 21 0 -980 56 268 -20 4196 4436 10 54 0 -981 104 28 -19 5832 6072 10 418 0 -982 370 493 -25 2225 2465 10 578 0 -983 136 265 12 340 580 10 0 7 -984 247 306 33 104 344 10 0 657 -985 241 38 -26 2067 2307 10 828 0 -986 180 162 9 634 874 10 0 541 -987 253 118 19 2129 2369 10 0 711 -988 413 391 8 808 1048 10 0 509 -989 380 350 15 3406 3646 10 0 520 -990 391 112 24 3941 4181 10 0 645 -991 86 199 23 1051 1291 10 0 120 -992 91 326 -25 3793 4033 10 510 0 -993 287 256 18 37 277 10 0 567 -994 203 211 -20 5166 5406 10 190 0 -995 79 80 19 5468 5708 10 0 415 -996 32 319 -18 1542 1782 10 345 0 -997 167 445 -11 5588 5828 10 627 0 -998 439 237 -13 3694 3934 10 972 0 -999 373 418 -23 4978 5218 10 156 0 -1000 26 342 -26 1224 1464 10 705 0 -1001 56 75 -24 5691 5931 10 48 0 -1002 228 260 -12 6362 6602 10 411 0 -1003 84 453 -19 4832 5072 10 822 0 -1004 270 337 -20 7071 7311 10 539 0 -1005 261 201 -15 5996 6236 10 27 0 -1006 243 408 -15 5675 5915 10 392 0 -1007 33 152 -17 5220 5460 10 394 0 -1008 199 203 -20 5769 6009 10 553 0 diff --git a/jsprit-instances/instances/lilim/1000/LR2106.txt b/jsprit-instances/instances/lilim/1000/LR2106.txt deleted file mode 100644 index 1940b5ba4..000000000 --- a/jsprit-instances/instances/lilim/1000/LR2106.txt +++ /dev/null @@ -1,1014 +0,0 @@ -250 1000 1 -0 250 250 0 0 7697 0 0 0 -1 228 399 -1 2285 2525 10 747 0 -2 325 56 -28 3126 3366 10 325 0 -3 290 145 -17 5066 5306 10 670 0 -4 340 291 22 1822 2062 10 0 134 -5 370 382 11 0 7509 10 0 250 -6 273 255 18 0 7664 10 0 61 -7 36 301 21 760 1000 10 0 345 -8 117 178 -28 4409 4649 10 398 0 -9 295 283 -23 3513 3753 10 286 0 -10 57 43 -32 4034 4274 10 737 0 -11 436 123 40 781 1021 10 0 450 -12 48 162 15 809 1049 10 0 925 -13 222 499 7 0 7437 10 0 849 -14 376 92 -31 3902 4142 10 798 0 -15 437 90 -18 2280 2520 10 311 0 -16 3 23 11 1506 1746 10 0 841 -17 94 40 -15 4212 4452 10 883 0 -18 398 476 25 1612 1852 10 0 641 -19 307 249 10 0 7630 10 0 82 -20 179 286 -5 1305 1545 10 316 0 -21 0 356 13 4285 4525 10 0 735 -22 143 158 -9 490 730 10 986 0 -23 413 476 34 4656 4896 10 0 897 -24 371 488 10 2271 2511 10 0 109 -25 415 118 -21 0 7476 10 215 0 -26 440 77 -14 3592 3832 10 449 0 -27 261 201 -18 5996 6236 10 324 0 -28 490 286 29 2029 2269 10 0 542 -29 309 161 23 2273 2513 10 0 167 -30 39 162 18 2201 2441 10 0 595 -31 361 178 -13 3830 4070 10 761 0 -32 261 138 1 0 7575 10 0 477 -33 447 383 17 831 1071 10 0 722 -34 346 354 -19 3210 3450 10 172 0 -35 461 195 -18 5520 5760 10 353 0 -36 187 263 -24 0 7623 10 625 0 -37 130 247 17 360 600 10 0 130 -38 328 491 -21 2653 2893 10 197 0 -39 161 276 8 474 714 10 0 277 -40 365 74 -14 3334 3574 10 366 0 -41 168 109 -17 757 997 10 295 0 -42 111 192 11 0 7537 0 0 1011 -43 87 213 -35 0 7520 10 368 0 -44 45 166 -15 0 7466 10 696 0 -45 62 94 16 3742 3982 10 0 318 -46 348 476 19 4727 4967 10 0 819 -47 64 437 -7 0 7424 10 514 0 -48 56 75 -14 5691 5931 10 461 0 -49 24 259 -31 1420 1660 10 866 0 -50 295 247 -12 5154 5394 10 374 0 -51 6 53 8 2288 2528 10 0 706 -52 15 11 15 0 7352 10 0 887 -53 179 497 1 0 7430 0 0 1004 -54 67 352 20 1433 1673 10 0 611 -55 317 45 -18 2573 2813 10 672 0 -56 40 278 10 0 7476 10 0 689 -57 33 278 -19 5889 6129 10 995 0 -58 322 290 -5 0 7605 10 382 0 -59 159 226 -8 256 496 10 547 0 -60 208 445 -11 5270 5510 10 895 0 -61 453 360 -18 804 1044 10 6 0 -62 34 169 11 1878 2118 10 0 147 -63 436 25 -28 5069 5309 10 158 0 -64 393 98 -20 2950 3190 10 538 0 -65 466 96 -21 5473 5713 10 344 0 -66 366 390 23 5213 5453 10 0 682 -67 303 78 12 600 840 10 0 217 -68 374 116 -35 0 7505 10 254 0 -69 424 288 13 4169 4409 10 0 207 -70 191 84 13 3408 3648 10 0 299 -71 59 276 -12 0 7495 10 855 0 -72 215 293 13 102 342 10 0 111 -73 343 276 15 266 506 10 0 864 -74 488 173 25 4781 5021 10 0 441 -75 452 110 -14 1301 1541 10 793 0 -76 153 244 5 371 611 10 0 255 -77 176 200 17 2210 2450 10 0 913 -78 498 171 -17 4966 5206 10 829 0 -79 492 188 -19 2801 3041 10 825 0 -80 177 156 25 609 849 10 0 460 -81 398 49 -20 3107 3347 10 357 0 -82 497 296 -10 2390 2630 10 19 0 -83 276 84 -12 0 7519 10 631 0 -84 128 113 -23 0 7504 10 938 0 -85 422 498 -23 2708 2948 10 592 0 -86 460 424 -13 5758 5998 10 359 0 -87 246 314 -18 5721 5961 10 896 0 -88 0 422 -30 3224 3464 10 633 0 -89 166 247 1 216 456 10 0 983 -90 311 422 -22 3892 4132 10 957 0 -91 392 95 16 3005 3245 10 0 775 -92 460 117 -5 2019 2259 10 673 0 -93 28 467 34 0 7377 10 0 687 -94 375 145 12 3657 3897 10 0 926 -95 240 255 -14 6384 6624 10 234 0 -96 440 436 -20 3508 3748 10 791 0 -97 454 201 -13 5160 5400 10 408 0 -98 407 35 -15 5093 5333 10 923 0 -99 420 383 -7 3868 4108 10 977 0 -100 264 180 -15 6663 6903 10 526 0 -101 440 294 16 3781 4021 10 0 772 -102 500 228 -25 3067 3307 10 704 0 -103 144 331 13 3665 3905 10 0 168 -104 98 2 14 2307 2547 10 0 651 -105 461 186 -16 0 7467 10 162 0 -106 68 450 -46 0 7417 10 599 0 -107 153 192 -17 0 7574 10 394 0 -108 34 239 -10 816 1056 10 279 0 -109 465 367 -10 4047 4287 10 24 0 -110 208 488 22 1850 2090 10 0 154 -111 93 413 -13 785 1025 10 72 0 -112 371 332 -18 0 7541 10 773 0 -113 231 167 15 221 461 10 0 661 -114 179 75 -19 2900 3140 10 609 0 -115 196 489 23 4061 4301 10 0 997 -116 280 245 21 30 270 10 0 261 -117 108 37 -33 2138 2378 10 339 0 -118 1 101 -17 4969 5209 10 591 0 -119 420 80 24 0 7447 10 0 430 -120 38 190 23 1079 1319 10 0 182 -121 470 405 -8 3643 3883 10 123 0 -122 448 397 33 0 7441 10 0 751 -123 471 427 8 3206 3446 10 0 121 -124 146 376 8 877 1117 10 0 306 -125 12 358 7 4837 5077 0 0 1003 -126 175 422 24 5726 5966 10 0 494 -127 297 131 25 4602 4842 10 0 606 -128 457 492 7 1972 2212 10 0 211 -129 69 423 -31 3150 3390 10 440 0 -130 97 288 -17 5076 5316 10 37 0 -131 172 314 -22 0 7587 10 978 0 -132 170 347 15 1683 1923 10 0 685 -133 103 123 8 1899 2139 10 0 795 -134 154 374 -22 3688 3928 10 4 0 -135 318 497 21 0 7431 0 0 1009 -136 330 147 -26 3334 3574 10 323 0 -137 241 180 13 6718 6958 10 0 503 -138 174 67 15 4979 5219 10 0 275 -139 235 288 18 43 283 10 0 377 -140 94 192 -26 0 7521 10 476 0 -141 232 101 24 1324 1564 10 0 981 -142 28 180 34 1482 1722 10 0 588 -143 64 135 -25 3413 3653 10 293 0 -144 174 376 8 0 7540 10 0 149 -145 293 174 31 229 469 10 0 776 -146 218 12 3 2116 2356 10 0 475 -147 110 122 -11 0 7498 10 62 0 -148 459 53 -14 4429 4669 10 659 0 -149 173 474 -8 5080 5320 10 144 0 -150 135 400 20 1134 1374 10 0 317 -151 497 266 25 2930 3170 10 0 552 -152 380 194 -12 2794 3034 10 741 0 -153 495 227 -21 1316 1556 10 219 0 -154 268 351 -22 6640 6880 10 110 0 -155 213 399 18 876 1116 10 0 332 -156 448 414 -21 0 7430 10 227 0 -157 327 139 -12 4969 5209 10 525 0 -158 151 81 28 0 7492 10 0 63 -159 425 448 -31 3118 3358 10 341 0 -160 92 259 4 1538 1778 10 0 174 -161 59 388 -26 2591 2831 10 417 0 -162 468 360 16 0 7443 10 0 105 -163 332 459 35 1415 1655 10 0 195 -164 469 489 -18 2162 2402 10 543 0 -165 248 176 -24 5546 5786 10 432 0 -166 174 41 -18 0 7465 10 446 0 -167 343 205 -23 3009 3249 10 29 0 -168 154 392 -13 0 7516 10 103 0 -169 92 18 -3 4437 4677 10 518 0 -170 250 328 24 0 7609 10 0 766 -171 88 484 5 0 7403 10 0 728 -172 360 488 19 1202 1442 10 0 34 -173 156 65 -32 4089 4329 10 497 0 -174 18 225 -4 2705 2945 10 160 0 -175 152 476 45 2030 2270 10 0 333 -176 176 470 14 2127 2367 10 0 516 -177 195 450 -10 5884 6124 10 315 0 -178 466 149 -15 4684 4924 10 245 0 -179 221 269 -21 5002 5242 10 805 0 -180 105 137 32 1749 1989 10 0 521 -181 284 319 -4 3207 3447 10 657 0 -182 41 120 -23 2724 2964 10 120 0 -183 263 418 25 1054 1294 10 0 954 -184 218 271 -11 6235 6475 10 949 0 -185 365 119 -28 0 7513 10 570 0 -186 89 322 -12 4023 4263 10 212 0 -187 180 283 23 2915 3155 10 0 284 -188 385 17 40 3175 3415 10 0 838 -189 401 314 25 3846 4086 10 0 380 -190 245 176 -10 4879 5119 10 298 0 -191 251 238 27 12 252 10 0 545 -192 139 438 24 796 1036 10 0 501 -193 236 126 23 379 619 10 0 309 -194 61 441 27 2115 2355 10 0 916 -195 405 454 -35 0 7431 10 163 0 -196 111 392 -31 4616 4856 10 875 0 -197 373 421 21 890 1130 10 0 38 -198 247 443 -19 0 7494 10 282 0 -199 322 406 17 0 7516 10 0 453 -200 412 478 7 3779 4019 10 0 935 -201 374 346 -33 0 7531 10 893 0 -202 122 422 3 5767 6007 10 0 484 -203 261 359 -25 318 558 10 880 0 -204 173 182 25 291 531 10 0 608 -205 398 341 -24 3697 3937 10 511 0 -206 413 127 28 3263 3503 10 0 727 -207 325 311 -13 5229 5469 10 69 0 -208 80 357 -25 2062 2302 10 610 0 -209 67 378 26 0 7464 10 0 955 -210 216 341 19 0 7590 10 0 852 -211 498 457 -7 0 7364 10 128 0 -212 44 344 12 0 7461 10 0 186 -213 352 481 15 5079 5319 10 0 550 -214 237 420 15 0 7517 10 0 662 -215 389 43 21 1522 1762 10 0 25 -216 292 136 -32 3062 3302 10 711 0 -217 426 38 -12 0 7412 10 67 0 -218 245 461 -15 0 7476 10 288 0 -219 415 253 21 1406 1646 10 0 153 -220 298 264 36 80 320 10 0 594 -221 307 412 8 1555 1795 10 0 660 -222 53 204 -17 4160 4400 10 471 0 -223 480 152 -30 4026 4266 10 847 0 -224 262 97 -28 3728 3968 10 712 0 -225 83 169 21 3046 3286 10 0 267 -226 377 432 -22 0 7466 10 982 0 -227 390 249 21 0 7547 10 0 156 -228 132 479 11 910 1150 10 0 762 -229 359 246 -23 5631 5871 10 836 0 -230 314 205 22 6047 6287 10 0 580 -231 124 448 -9 1414 1654 10 548 0 -232 0 188 26 0 7430 10 0 302 -233 343 166 -21 3444 3684 10 404 0 -234 482 141 14 3983 4223 10 0 95 -235 162 306 22 417 657 10 0 626 -236 24 71 -14 1324 1564 10 381 0 -237 188 119 -1 3839 4079 10 605 0 -238 100 85 -19 1344 1584 10 911 0 -239 103 177 28 2446 2686 10 0 804 -240 26 67 -3 5207 5447 10 918 0 -241 164 332 -38 5059 5299 10 386 0 -242 385 285 -19 3412 3652 10 517 0 -243 209 68 -13 6212 6452 10 300 0 -244 149 341 6 1556 1796 10 0 367 -245 415 95 15 4647 4887 10 0 178 -246 167 488 17 940 1180 10 0 618 -247 413 493 -25 4813 5053 10 968 0 -248 439 222 22 3858 4098 10 0 862 -249 150 484 -23 2441 2681 10 732 0 -250 299 353 -11 0 7573 10 5 0 -251 273 300 30 100 340 10 0 468 -252 402 277 -11 5694 5934 10 472 0 -253 239 15 2 0 7452 10 0 774 -254 363 225 35 3363 3603 10 0 68 -255 65 343 -5 769 1009 10 76 0 -256 351 60 -14 0 7472 10 753 0 -257 60 246 25 640 880 10 0 395 -258 144 35 26 0 7448 10 0 422 -259 463 253 -15 4128 4368 10 509 0 -260 332 382 2 3982 4222 10 0 714 -261 408 318 -21 2512 2752 10 116 0 -262 452 206 31 1909 2149 10 0 287 -263 471 368 -27 1652 1892 10 519 0 -264 93 490 -9 1457 1697 10 924 0 -265 241 402 -15 4039 4279 10 435 0 -266 60 231 -19 4044 4284 10 530 0 -267 172 66 -21 5151 5391 10 225 0 -268 404 207 -8 3582 3822 10 643 0 -269 286 356 30 328 568 10 0 959 -270 489 338 -6 5529 5769 10 999 0 -271 334 481 32 1262 1502 10 0 560 -272 26 442 -22 0 7392 10 549 0 -273 226 175 -13 6715 6955 10 305 0 -274 488 3 3 1542 1782 10 0 488 -275 178 150 -15 0 7564 10 138 0 -276 371 423 -12 724 964 10 564 0 -277 5 224 -8 0 7441 10 39 0 -278 94 344 -17 2669 2909 10 835 0 -279 153 235 10 273 513 10 0 108 -280 12 367 -22 1243 1483 10 327 0 -281 217 357 23 0 7576 10 0 596 -282 255 487 19 1532 1772 10 0 198 -283 149 214 7 0 7580 10 0 709 -284 169 305 -23 0 7590 10 187 0 -285 487 446 9 5301 5541 10 0 821 -286 267 374 23 2343 2583 10 0 9 -287 360 294 -31 0 7569 10 262 0 -288 185 431 15 1488 1728 10 0 218 -289 325 210 15 3674 3914 10 0 534 -290 175 352 -20 6600 6840 10 506 0 -291 76 462 -13 3764 4004 10 729 0 -292 19 273 -26 0 7455 10 705 0 -293 72 227 25 2195 2435 10 0 143 -294 213 283 -11 5824 6064 10 800 0 -295 130 140 17 716 956 10 0 41 -296 274 442 -14 4205 4445 10 585 0 -297 337 41 8 3949 4189 10 0 683 -298 372 39 10 2834 3074 10 0 190 -299 269 112 -13 4991 5231 10 70 0 -300 224 56 13 0 7492 10 0 243 -301 340 416 36 1224 1464 10 0 464 -302 13 214 -26 5354 5594 10 232 0 -303 230 320 8 4708 4948 10 0 671 -304 6 196 -15 4753 4993 10 734 0 -305 87 3 13 5672 5912 10 0 273 -306 133 202 -8 1782 2022 10 124 0 -307 235 316 2 2563 2803 10 0 858 -308 435 180 -7 0 7490 10 719 0 -309 173 65 -23 1734 1974 10 193 0 -310 245 42 -6 2129 2369 10 378 0 -311 384 149 18 0 7520 10 0 15 -312 51 286 14 5776 6016 10 0 397 -313 267 290 15 54 294 10 0 335 -314 453 318 -15 1435 1675 10 744 0 -315 189 402 10 2084 2324 10 0 177 -316 210 276 5 71 311 10 0 20 -317 120 261 -20 3113 3353 10 150 0 -318 35 263 -16 0 7472 10 45 0 -319 429 59 9 1775 2015 10 0 416 -320 330 308 -22 4622 4862 10 749 0 -321 58 391 16 3469 3709 10 0 699 -322 260 472 33 4084 4324 10 0 874 -323 217 333 26 0 7598 10 0 136 -324 335 46 18 5307 5547 10 0 27 -325 198 85 28 990 1230 10 0 2 -326 138 28 23 4326 4566 10 0 328 -327 29 336 22 1266 1506 10 0 280 -328 200 27 -23 0 7459 10 326 0 -329 157 269 31 6245 6485 0 0 1002 -330 177 404 17 0 7517 10 0 827 -331 202 28 -2 3677 3917 10 648 0 -332 366 334 -18 1581 1821 10 155 0 -333 149 458 -45 0 7456 10 175 0 -334 481 454 -25 1222 1462 10 513 0 -335 377 385 -15 3405 3645 10 313 0 -336 217 207 -27 5470 5710 10 929 0 -337 96 346 26 681 921 10 0 393 -338 224 320 -28 5075 5315 10 520 0 -339 206 97 33 1732 1972 10 0 117 -340 438 127 -26 3704 3944 10 571 0 -341 494 468 31 1350 1590 10 0 159 -342 494 165 -31 2357 2597 10 894 0 -343 5 281 16 0 7441 10 0 736 -344 441 60 21 0 7418 10 0 65 -345 14 232 -21 1160 1400 10 7 0 -346 288 439 16 1034 1274 10 0 780 -347 420 224 10 1656 1896 10 0 884 -348 267 162 6 0 7598 10 0 502 -349 195 273 22 118 358 10 0 767 -350 233 230 20 0 7661 10 0 666 -351 382 360 26 652 892 10 0 555 -352 406 460 -40 2817 3057 10 439 0 -353 499 316 18 2427 2667 10 0 35 -354 246 407 12 1186 1426 10 0 533 -355 283 454 -17 5000 5240 10 681 0 -356 426 231 -20 4054 4294 10 904 0 -357 432 2 20 1806 2046 10 0 81 -358 404 439 3 895 1135 10 0 808 -359 397 477 13 4803 5043 10 0 86 -360 44 140 11 3413 3653 10 0 781 -361 330 138 -15 4378 4618 10 942 0 -362 39 153 26 3131 3371 10 0 656 -363 397 153 29 3470 3710 10 0 998 -364 226 316 21 161 401 10 0 489 -365 354 156 -15 3270 3510 10 442 0 -366 201 66 14 0 7497 10 0 40 -367 389 156 -6 2802 3042 10 244 0 -368 134 211 35 422 662 10 0 43 -369 386 154 31 0 7521 10 0 508 -370 335 99 -23 4814 5054 10 903 0 -371 356 256 19 305 545 10 0 745 -372 240 362 23 0 7575 10 0 848 -373 412 100 1 1993 2233 10 0 396 -374 394 322 12 4039 4279 10 0 50 -375 48 150 -20 2560 2800 10 640 0 -376 225 121 -16 0 7556 10 899 0 -377 102 422 -18 0 7461 10 139 0 -378 339 41 6 0 7460 10 0 310 -379 440 201 -25 0 7491 10 428 0 -380 411 379 -25 4713 4953 10 189 0 -381 219 210 14 82 322 10 0 236 -382 250 441 5 0 7496 10 0 58 -383 210 29 13 4143 4383 10 0 860 -384 178 302 19 3486 3726 10 0 710 -385 148 208 22 0 7577 10 0 915 -386 225 369 38 366 606 10 0 241 -387 16 287 -30 0 7451 10 754 0 -388 450 416 25 2247 2487 10 0 688 -389 287 397 -7 2197 2437 10 976 0 -390 285 247 13 0 7652 0 0 1010 -391 351 481 10 1227 1467 0 0 1006 -392 243 408 -14 5675 5915 10 890 0 -393 137 377 -26 0 7518 10 337 0 -394 33 152 17 5220 5460 10 0 107 -395 68 303 -25 825 1065 10 257 0 -396 456 113 -1 4849 5089 10 373 0 -397 134 276 -14 0 7569 10 312 0 -398 26 221 28 3926 4166 10 0 8 -399 79 257 -40 3752 3992 10 931 0 -400 181 185 -8 6395 6635 10 721 0 -401 104 349 20 3977 4217 10 0 980 -402 267 174 -14 6413 6653 10 692 0 -403 475 267 -9 3058 3298 10 871 0 -404 385 239 21 3082 3322 10 0 233 -405 95 382 19 865 1105 10 0 654 -406 67 190 -5 4633 4873 10 556 0 -407 32 94 -2 3661 3901 10 777 0 -408 401 164 13 0 7514 10 0 97 -409 376 113 -13 0 7501 10 623 0 -410 409 255 23 0 7528 10 0 956 -411 228 260 -24 6362 6602 10 557 0 -412 363 34 19 0 7444 10 0 620 -413 274 441 -33 2718 2958 10 974 0 -414 146 188 6 0 7566 10 0 536 -415 212 186 -21 6826 7066 10 966 0 -416 432 66 -9 0 7429 10 319 0 -417 83 300 26 1939 2179 10 0 161 -418 51 89 19 4773 5013 10 0 505 -419 379 486 22 2627 2867 10 0 483 -420 440 284 25 0 7494 10 0 927 -421 175 239 23 183 423 10 0 587 -422 282 1 -26 4110 4350 10 258 0 -423 268 113 -15 2659 2899 10 842 0 -424 480 131 5 2690 2930 10 0 496 -425 429 67 -21 2869 3109 10 769 0 -426 162 301 -15 6392 6632 10 438 0 -427 281 96 -32 4443 4683 10 951 0 -428 495 199 25 0 7437 10 0 379 -429 372 115 -16 0 7506 10 694 0 -430 396 83 -24 6286 6526 10 119 0 -431 239 486 -26 0 7451 10 481 0 -432 288 70 24 0 7504 10 0 165 -433 66 163 6 1522 1762 10 0 743 -434 470 417 -3 0 7411 10 730 0 -435 226 423 15 728 968 10 0 265 -436 342 319 36 340 580 10 0 614 -437 174 122 14 2313 2553 10 0 922 -438 49 353 15 5724 5964 10 0 426 -439 448 495 40 0 7372 10 0 352 -440 13 465 31 3034 3274 10 0 129 -441 489 159 -25 5651 5891 10 74 0 -442 311 203 15 2830 3070 10 0 365 -443 480 119 7 2454 2694 10 0 885 -444 442 153 -10 4695 4935 10 636 0 -445 148 462 -11 2847 3087 10 914 0 -446 233 87 18 950 1190 10 0 166 -447 323 34 -11 0 7459 10 650 0 -448 84 377 10 3645 3885 10 0 750 -449 292 32 14 857 1097 10 0 26 -450 418 75 -40 1732 1972 10 11 0 -451 451 305 13 714 954 10 0 459 -452 225 269 -5 5023 5263 10 676 0 -453 272 420 -17 5483 5723 10 199 0 -454 318 280 21 177 417 10 0 713 -455 250 57 -7 0 7494 10 540 0 -456 77 372 19 0 7476 10 0 919 -457 385 58 24 1559 1799 10 0 537 -458 44 496 32 1547 1787 10 0 876 -459 460 328 -13 816 1056 10 451 0 -460 67 24 -25 4014 4254 10 80 0 -461 91 27 14 4667 4907 10 0 48 -462 360 284 -24 2606 2846 10 917 0 -463 82 183 -19 4347 4587 10 748 0 -464 153 362 -36 4585 4825 10 301 0 -465 52 412 22 5563 5803 10 0 665 -466 32 191 -23 2285 2525 10 991 0 -467 325 147 -31 0 7560 10 541 0 -468 328 458 -30 0 7465 10 251 0 -469 133 273 20 357 597 10 0 920 -470 147 30 26 4375 4615 10 0 796 -471 131 246 17 3268 3508 10 0 222 -472 433 319 11 5445 5685 10 0 252 -473 168 59 -18 0 7480 10 480 0 -474 218 403 15 5217 5457 10 0 944 -475 295 89 -3 0 7520 10 146 0 -476 118 314 26 1290 1530 10 0 140 -477 251 63 -1 3890 4130 10 32 0 -478 388 44 -36 4463 4703 10 546 0 -479 381 328 12 0 7535 10 0 837 -480 132 32 18 0 7440 10 0 473 -481 334 403 26 578 818 10 0 431 -482 83 290 14 2370 2610 10 0 667 -483 411 396 -22 3621 3861 10 419 0 -484 243 402 -3 0 7535 10 202 0 -485 52 18 -35 3368 3608 10 939 0 -486 265 0 -12 3524 3764 10 718 0 -487 268 288 -32 5008 5248 10 589 0 -488 476 61 -3 1735 1975 10 274 0 -489 283 438 -21 866 1106 10 364 0 -490 191 215 17 154 394 10 0 668 -491 253 50 -9 843 1083 10 850 0 -492 71 282 29 2507 2747 10 0 698 -493 297 304 4 166 406 10 0 578 -494 244 368 -24 0 7569 10 126 0 -495 80 279 -21 4571 4811 10 790 0 -496 488 96 -5 4205 4445 10 424 0 -497 142 30 32 0 7442 10 0 173 -498 68 240 -18 3118 3358 10 678 0 -499 193 138 30 0 7562 10 0 967 -500 451 62 -27 0 7412 10 794 0 -501 138 406 -24 4804 5044 10 192 0 -502 306 42 -6 1847 2087 10 348 0 -503 247 219 -13 0 7656 10 137 0 -504 98 29 14 4126 4366 10 0 789 -505 102 6 -19 5774 6014 10 418 0 -506 142 360 20 6068 6308 10 0 290 -507 172 24 -25 5749 5989 10 906 0 -508 352 241 -31 3109 3349 10 369 0 -509 486 324 15 3018 3258 10 0 259 -510 133 455 25 3172 3412 10 0 865 -511 440 292 24 3700 3940 10 0 205 -512 364 173 -16 661 901 10 582 0 -513 442 289 25 704 944 10 0 334 -514 48 412 7 0 7429 10 0 47 -515 344 70 24 4523 4763 10 0 965 -516 78 406 -14 3782 4022 10 176 0 -517 329 456 19 936 1176 10 0 242 -518 157 38 3 4131 4371 10 0 169 -519 374 260 27 0 7563 10 0 263 -520 297 283 28 0 7630 10 0 338 -521 210 113 -32 2701 2941 10 180 0 -522 215 434 -33 710 950 10 984 0 -523 262 92 25 2462 2702 10 0 724 -524 140 108 29 0 7508 10 0 535 -525 235 108 12 4258 4498 10 0 157 -526 210 133 15 2694 2934 10 0 100 -527 25 53 -13 4020 4260 10 909 0 -528 339 113 -26 2982 3222 10 663 0 -529 394 310 -7 4334 4574 10 586 0 -530 126 391 19 0 7500 10 0 266 -531 343 34 -12 2839 3079 10 851 0 -532 354 416 -9 2657 2897 10 677 0 -533 202 391 -12 2434 2674 10 354 0 -534 367 97 -15 0 7495 10 289 0 -535 188 151 -29 5127 5367 10 524 0 -536 111 178 -6 506 746 10 414 0 -537 456 157 -24 5760 6000 10 457 0 -538 441 7 20 1506 1746 10 0 64 -539 270 337 -10 7071 7311 10 759 0 -540 323 29 7 4490 4730 10 0 455 -541 200 78 31 3911 4151 10 0 467 -542 330 281 -29 5262 5502 10 28 0 -543 438 488 18 1249 1489 10 0 164 -544 161 416 -14 0 7499 10 583 0 -545 30 97 -27 4781 5021 10 191 0 -546 273 70 36 2417 2657 10 0 478 -547 214 245 8 0 7651 10 0 59 -548 221 291 9 124 364 10 0 231 -549 79 467 22 1346 1586 10 0 272 -550 423 315 -15 0 7503 10 213 0 -551 395 474 26 1488 1728 10 0 707 -552 481 207 -25 3364 3604 10 151 0 -553 199 203 20 0 7618 10 0 765 -554 497 483 -13 1354 1594 10 573 0 -555 449 428 -26 4927 5167 10 351 0 -556 100 266 5 0 7537 10 0 406 -557 214 274 24 5416 5656 10 0 411 -558 16 68 11 0 7391 10 0 628 -559 475 198 -11 3281 3521 10 928 0 -560 371 427 -32 3773 4013 10 271 0 -561 62 375 16 1335 1575 10 0 859 -562 163 472 9 2554 2794 10 0 655 -563 13 314 14 915 1155 10 0 811 -564 376 385 12 619 859 10 0 276 -565 231 29 14 4845 5085 10 0 888 -566 89 358 -16 4929 5169 10 979 0 -567 331 356 -23 0 7554 10 817 0 -568 365 190 -16 5850 6090 10 886 0 -569 256 441 34 644 884 10 0 902 -570 120 37 28 0 7438 10 0 185 -571 349 43 26 798 1038 10 0 340 -572 230 487 -28 0 7450 10 758 0 -573 489 457 13 0 7371 10 0 554 -574 341 72 -20 3159 3399 10 971 0 -575 181 441 -27 2107 2347 10 771 0 -576 306 229 10 0 7628 0 0 1007 -577 492 326 -17 4756 4996 10 846 0 -578 347 459 -4 1858 2098 10 493 0 -579 66 88 -15 3259 3499 10 868 0 -580 272 234 -22 6301 6541 10 230 0 -581 134 194 19 6547 6787 10 0 782 -582 320 211 16 0 7607 10 0 512 -583 214 311 14 163 403 10 0 544 -584 489 274 -14 2075 2315 10 639 0 -585 231 410 14 0 7526 10 0 296 -586 432 199 7 0 7498 10 0 529 -587 29 358 -23 2383 2623 10 421 0 -588 62 236 -34 2172 2412 10 142 0 -589 333 163 32 4901 5141 10 0 487 -590 364 71 5 5334 5574 10 0 695 -591 125 65 17 3094 3334 10 0 118 -592 429 476 23 2233 2473 10 0 85 -593 161 275 21 5327 5567 10 0 818 -594 365 274 -36 350 590 10 220 0 -595 117 110 -18 3855 4095 10 30 0 -596 166 345 -23 4459 4699 10 281 0 -597 345 146 -15 5696 5936 10 690 0 -598 324 99 10 1292 1532 10 0 844 -599 72 477 46 0 7399 10 0 106 -600 487 320 -20 3371 3611 10 921 0 -601 120 17 30 0 7421 10 0 962 -602 1 252 5 1041 1281 10 0 933 -603 303 186 -13 0 7604 10 675 0 -604 428 302 27 0 7502 10 0 937 -605 264 135 1 3458 3698 10 0 237 -606 223 178 -25 0 7611 10 127 0 -607 174 347 3 3999 4239 10 0 930 -608 238 123 -25 0 7560 10 204 0 -609 187 61 19 2120 2360 10 0 114 -610 52 303 25 1705 1945 10 0 208 -611 89 185 -20 2339 2579 10 54 0 -612 341 59 -15 3099 3339 10 905 0 -613 89 65 16 2821 3061 10 0 845 -614 495 355 -36 4913 5153 10 436 0 -615 368 452 16 2620 2860 10 0 700 -616 164 473 26 1125 1365 10 0 822 -617 171 34 21 4512 4752 10 0 697 -618 114 460 -17 4284 4524 10 246 0 -619 224 3 10 2702 2942 10 0 645 -620 472 57 -19 0 7393 10 412 0 -621 448 404 15 2336 2576 10 0 969 -622 390 120 -33 3957 4197 10 809 0 -623 386 225 13 3614 3854 10 0 409 -624 301 239 31 89 329 10 0 684 -625 115 296 24 6055 6295 10 0 36 -626 69 266 -22 2973 3213 10 235 0 -627 115 395 11 3201 3441 10 0 861 -628 68 53 -11 0 7419 10 558 0 -629 33 268 -17 2723 2963 10 806 0 -630 450 45 -17 1954 2194 10 717 0 -631 351 5 12 1924 2164 10 0 83 -632 351 148 -24 0 7544 10 900 0 -633 80 458 30 1422 1662 10 0 88 -634 60 5 -32 4115 4355 10 891 0 -635 10 407 -12 1678 1918 10 1000 0 -636 497 18 10 4460 4700 10 0 444 -637 437 98 -2 4395 4635 10 770 0 -638 130 494 -21 2975 3215 10 807 0 -639 391 202 14 476 716 10 0 584 -640 43 210 20 0 7477 10 0 375 -641 381 457 -25 1823 2063 10 18 0 -642 449 190 -12 4500 4740 10 812 0 -643 429 169 8 3551 3791 10 0 268 -644 105 140 -22 608 848 10 826 0 -645 282 10 -10 4986 5226 10 619 0 -646 20 480 25 2221 2461 10 0 879 -647 61 170 -10 3963 4203 10 778 0 -648 210 81 2 0 7514 10 0 331 -649 87 311 -22 0 7513 10 910 0 -650 309 29 11 0 7459 10 0 447 -651 397 57 -14 5844 6084 10 104 0 -652 337 232 -21 6222 6462 10 881 0 -653 262 369 15 457 697 10 0 872 -654 41 232 -19 0 7478 10 405 0 -655 69 414 -9 4993 5233 10 562 0 -656 149 98 -26 4600 4840 10 362 0 -657 207 487 4 0 7447 10 0 181 -658 366 260 23 0 7571 10 0 950 -659 497 54 14 3852 4092 10 0 148 -660 210 379 -8 0 7552 10 221 0 -661 437 19 -15 3996 4236 10 113 0 -662 181 260 -15 0 7618 10 214 0 -663 125 61 26 2387 2627 10 0 528 -664 368 311 14 0 7555 10 0 945 -665 80 400 -22 5725 5965 10 465 0 -666 75 118 -20 1576 1816 10 350 0 -667 171 303 -14 6297 6537 10 482 0 -668 80 251 -17 1154 1394 10 490 0 -669 455 168 -11 3407 3647 10 726 0 -670 215 129 17 4414 4654 10 0 3 -671 179 318 -8 0 7589 10 303 0 -672 187 73 18 1108 1348 10 0 55 -673 394 47 5 1192 1432 10 0 92 -674 31 175 24 0 7456 10 0 857 -675 339 144 13 0 7549 10 0 603 -676 492 34 5 3182 3422 10 0 452 -677 387 349 9 0 7518 10 0 532 -678 142 372 18 0 7525 10 0 498 -679 291 213 -21 4971 5211 10 797 0 -680 421 387 15 0 7468 10 0 693 -681 274 403 17 3490 3730 10 0 355 -682 434 359 -23 5509 5749 10 66 0 -683 257 57 -8 4844 5084 10 297 0 -684 428 202 -31 3555 3795 10 624 0 -685 355 174 -15 2801 3041 10 132 0 -686 46 389 22 0 7441 10 0 815 -687 44 440 -34 0 7407 10 93 0 -688 491 369 -25 2858 3098 10 388 0 -689 33 286 -10 0 7468 10 56 0 -690 351 128 15 4953 5193 10 0 597 -691 485 428 -29 5900 6140 10 755 0 -692 273 149 14 5951 6191 10 0 402 -693 447 184 -15 0 7480 10 680 0 -694 386 245 16 0 7551 10 0 429 -695 323 77 -5 5560 5800 10 590 0 -696 21 70 15 3025 3265 10 0 44 -697 9 101 -21 0 7404 10 617 0 -698 71 304 -29 2696 2936 10 492 0 -699 43 360 -16 3281 3521 10 321 0 -700 396 417 -16 0 7466 10 615 0 -701 158 24 -27 2385 2625 10 831 0 -702 164 320 12 0 7577 10 0 973 -703 195 386 13 467 707 10 0 785 -704 306 235 25 112 352 10 0 102 -705 66 314 26 659 899 10 0 292 -706 95 64 -8 3004 3244 10 51 0 -707 348 348 -26 0 7549 10 551 0 -708 495 83 32 1703 1943 10 0 877 -709 61 214 -7 1307 1547 10 283 0 -710 240 240 -19 6738 6978 10 384 0 -711 140 137 32 2219 2459 10 0 216 -712 242 106 28 0 7543 10 0 224 -713 392 491 -21 4471 4711 10 454 0 -714 342 481 -2 5700 5940 10 260 0 -715 478 300 -13 3498 3738 10 972 0 -716 299 285 -10 4955 5195 10 752 0 -717 481 84 17 1962 2202 10 0 630 -718 271 128 12 1322 1562 10 0 486 -719 484 224 7 0 7452 10 0 308 -720 441 177 -9 3945 4185 10 820 0 -721 46 163 8 3644 3884 10 0 400 -722 493 493 -17 3366 3606 10 33 0 -723 253 74 20 5340 5580 0 0 1008 -724 390 34 -25 4181 4421 10 523 0 -725 374 306 4 3916 4156 10 0 873 -726 436 295 11 2053 2293 10 0 669 -727 371 315 -28 4603 4843 10 206 0 -728 27 464 -5 0 7378 10 171 0 -729 3 471 13 2783 3023 10 0 291 -730 418 269 3 0 7518 10 0 434 -731 90 477 -25 0 7410 10 813 0 -732 141 426 23 2066 2306 10 0 249 -733 418 251 -19 4727 4967 10 961 0 -734 57 183 15 4341 4581 10 0 304 -735 29 462 -13 5178 5418 10 21 0 -736 55 318 -16 1188 1428 10 343 0 -737 18 24 32 2453 2693 10 0 10 -738 263 153 12 1590 1830 10 0 987 -739 289 220 19 77 317 10 0 856 -740 84 255 13 1068 1308 10 0 814 -741 159 299 12 0 7584 10 0 152 -742 485 104 21 3118 3358 0 0 1005 -743 178 135 -6 5995 6235 10 433 0 -744 389 255 15 0 7548 10 0 314 -745 457 280 -19 3939 4179 10 371 0 -746 171 24 -24 0 7448 10 763 0 -747 330 371 1 2174 2414 10 0 1 -748 10 237 19 0 7447 10 0 463 -749 458 213 22 0 7476 10 0 320 -750 257 391 -10 6472 6712 10 448 0 -751 482 184 -33 4367 4607 10 122 0 -752 222 331 10 2098 2338 10 0 716 -753 332 5 14 4071 4311 10 0 256 -754 47 208 30 846 1086 10 0 387 -755 489 437 29 0 7384 10 0 691 -756 165 59 -23 3711 3951 10 824 0 -757 211 446 -29 0 7488 10 833 0 -758 225 488 28 0 7448 10 0 572 -759 355 485 10 5856 6096 10 0 539 -760 441 374 10 833 1073 10 0 988 -761 399 175 13 2928 3168 10 0 31 -762 103 464 -11 0 7428 10 228 0 -763 244 13 24 3992 4232 10 0 746 -764 51 360 13 0 7460 10 0 889 -765 44 115 -20 865 1105 10 553 0 -766 312 453 -24 0 7475 10 170 0 -767 64 198 -22 4294 4534 10 349 0 -768 67 451 -30 0 7416 10 892 0 -769 371 71 21 0 7471 10 0 425 -770 439 156 2 2043 2283 10 0 637 -771 105 474 27 1823 2063 10 0 575 -772 366 288 -16 0 7565 10 101 0 -773 415 207 18 3540 3780 10 0 112 -774 58 39 -2 4592 4832 10 253 0 -775 197 202 -16 4755 4995 10 91 0 -776 442 5 -31 1221 1461 10 145 0 -777 71 12 2 1112 1352 10 0 407 -778 74 215 10 0 7508 10 0 647 -779 347 192 18 5893 6133 10 0 870 -780 178 420 -16 4225 4465 10 346 0 -781 186 135 -11 0 7556 10 360 0 -782 176 199 -19 0 7598 10 581 0 -783 438 5 18 2136 2376 10 0 834 -784 150 68 -5 1631 1871 10 786 0 -785 185 434 -13 2234 2474 10 703 0 -786 215 79 5 834 1074 10 0 784 -787 177 486 -13 6329 6569 10 907 0 -788 49 437 7 1650 1890 10 0 941 -789 100 66 -14 5539 5779 10 504 0 -790 35 344 21 3392 3632 10 0 495 -791 433 447 20 3117 3357 10 0 96 -792 372 97 -23 0 7492 10 878 0 -793 344 203 14 609 849 10 0 75 -794 423 170 27 1992 2232 10 0 500 -795 171 188 -8 2422 2662 10 133 0 -796 64 5 -26 4456 4696 10 470 0 -797 371 163 21 3251 3491 10 0 679 -798 398 210 31 0 7534 10 0 14 -799 48 437 4 0 7412 10 0 823 -800 392 1 11 2361 2601 10 0 294 -801 195 464 -12 0 7467 10 832 0 -802 211 248 26 39 279 10 0 810 -803 293 228 -9 73 313 10 898 0 -804 23 235 -28 4033 4273 10 239 0 -805 213 185 21 0 7613 10 0 179 -806 172 292 17 308 548 10 0 629 -807 228 287 21 52 292 10 0 638 -808 387 394 -3 0 7489 10 358 0 -809 374 232 33 0 7562 10 0 622 -810 48 366 -26 0 7455 10 802 0 -811 44 311 -14 1570 1810 10 563 0 -812 447 272 12 0 7489 10 0 642 -813 132 477 25 0 7432 10 0 731 -814 80 117 -13 3237 3477 10 740 0 -815 11 403 -22 1312 1552 10 686 0 -816 144 220 35 0 7577 10 0 963 -817 473 491 23 1593 1833 10 0 567 -818 210 219 -21 0 7637 10 593 0 -819 452 484 -19 5054 5294 10 46 0 -820 365 28 9 0 7437 10 0 720 -821 498 456 -9 5564 5804 10 285 0 -822 84 453 -26 4832 5072 10 616 0 -823 91 427 -4 3470 3710 10 799 0 -824 178 72 23 2967 3207 10 0 756 -825 409 155 19 621 861 10 0 79 -826 132 151 22 0 7533 10 0 644 -827 136 430 -17 2781 3021 10 330 0 -828 292 104 26 1156 1396 10 0 985 -829 443 167 17 2113 2353 10 0 78 -830 321 149 18 5638 5878 0 0 1012 -831 235 13 27 1375 1615 10 0 701 -832 166 440 12 711 951 10 0 801 -833 112 433 29 880 1120 10 0 757 -834 452 172 -18 0 7471 10 783 0 -835 37 281 17 1913 2153 10 0 278 -836 414 378 23 1919 2159 10 0 229 -837 475 352 -12 0 7440 10 479 0 -838 400 71 -40 5428 5668 10 188 0 -839 286 244 -15 5076 5316 10 952 0 -840 429 389 18 1636 1876 10 0 940 -841 92 76 -11 4496 4736 10 16 0 -842 124 111 15 0 7500 10 0 423 -843 268 458 24 0 7479 10 0 964 -844 352 63 -10 4653 4893 10 598 0 -845 49 118 -16 0 7447 10 613 0 -846 398 329 17 551 791 10 0 577 -847 382 9 30 1027 1267 10 0 223 -848 229 322 -23 6581 6821 10 372 0 -849 279 355 -7 0 7579 10 13 0 -850 266 221 9 33 273 10 0 491 -851 142 80 12 1908 2148 10 0 531 -852 359 287 -19 0 7572 10 210 0 -853 482 104 -13 0 7413 10 975 0 -854 284 457 -20 5934 6174 10 882 0 -855 64 294 12 4345 4585 10 0 71 -856 404 59 -19 0 7442 10 739 0 -857 68 160 -24 0 7484 10 674 0 -858 211 411 -2 4526 4766 10 307 0 -859 30 155 -16 5062 5302 10 561 0 -860 240 34 -13 6178 6418 10 383 0 -861 107 374 -11 3597 3837 10 627 0 -862 404 140 -22 4975 5215 10 248 0 -863 436 467 12 2884 3124 0 0 1001 -864 421 386 -15 0 7469 10 73 0 -865 182 480 -25 0 7448 10 510 0 -866 9 233 31 1165 1405 10 0 49 -867 110 251 23 1931 2171 10 0 869 -868 19 38 15 3329 3569 10 0 579 -869 46 248 -23 3195 3435 10 867 0 -870 308 199 -18 5973 6213 10 779 0 -871 423 221 9 973 1213 10 0 403 -872 313 391 -15 538 778 10 653 0 -873 413 345 -4 4812 5052 10 725 0 -874 278 450 -33 5440 5680 10 322 0 -875 94 497 31 3069 3309 10 0 196 -876 7 382 -32 3022 3262 10 458 0 -877 493 111 -32 2104 2344 10 708 0 -878 392 87 23 0 7471 10 0 792 -879 13 394 -25 0 7410 10 646 0 -880 259 301 25 335 575 10 0 203 -881 351 233 21 5631 5871 10 0 652 -882 313 493 20 0 7436 10 0 854 -883 65 62 15 3846 4086 10 0 17 -884 417 212 -10 0 7516 10 347 0 -885 450 194 -7 2439 2679 10 443 0 -886 470 138 16 5498 5738 10 0 568 -887 190 267 -15 6955 7195 10 52 0 -888 248 214 -14 5857 6097 10 565 0 -889 50 383 -13 980 1220 10 764 0 -890 244 422 14 2091 2331 10 0 392 -891 60 29 32 0 7396 10 0 634 -892 5 445 30 1184 1424 10 0 768 -893 490 276 33 0 7446 10 0 201 -894 441 100 31 0 7445 10 0 342 -895 162 388 11 4444 4684 10 0 60 -896 244 277 18 5145 5385 10 0 87 -897 406 408 -34 5765 6005 10 23 0 -898 265 240 9 18 258 10 0 803 -899 130 186 16 465 705 10 0 376 -900 382 110 24 4390 4630 10 0 632 -901 142 14 -29 3281 3521 10 947 0 -902 352 487 -34 0 7429 10 569 0 -903 307 52 23 3622 3862 10 0 370 -904 418 399 20 1691 1931 10 0 356 -905 196 56 15 2378 2618 10 0 612 -906 66 31 25 0 7401 10 0 507 -907 90 496 13 5521 5761 10 0 787 -908 480 136 22 0 7431 10 0 948 -909 65 82 13 2898 3138 10 0 527 -910 48 293 22 1044 1284 10 0 649 -911 105 181 19 0 7527 10 0 238 -912 215 282 -20 5702 5942 10 994 0 -913 257 133 -17 3389 3629 10 77 0 -914 77 465 11 984 1224 10 0 445 -915 43 135 -22 0 7451 10 385 0 -916 27 444 -27 4261 4501 10 194 0 -917 357 290 24 0 7573 10 0 462 -918 38 15 3 0 7371 10 0 240 -919 80 337 -19 4417 4657 10 456 0 -920 36 451 -20 3495 3735 10 469 0 -921 291 251 20 44 284 10 0 600 -922 195 111 -14 3932 4172 10 437 0 -923 383 17 15 3702 3942 10 0 98 -924 53 466 9 1280 1520 10 0 264 -925 114 102 -15 1969 2209 10 12 0 -926 350 199 -12 4746 4986 10 94 0 -927 405 349 -25 0 7504 10 420 0 -928 472 248 11 0 7465 10 0 559 -929 333 293 27 2408 2648 10 0 336 -930 174 397 -3 4919 5159 10 607 0 -931 2 264 40 2558 2798 10 0 399 -932 7 82 -27 1586 1826 10 970 0 -933 34 329 -5 4112 4352 10 602 0 -934 158 179 37 345 585 10 0 953 -935 421 499 -7 5321 5561 10 200 0 -936 345 431 12 0 7483 10 0 989 -937 370 262 -27 4338 4578 10 604 0 -938 77 172 23 0 7498 10 0 84 -939 87 51 35 0 7430 10 0 485 -940 468 352 -18 3013 3253 10 840 0 -941 63 420 -7 2018 2258 10 788 0 -942 347 184 15 4255 4495 10 0 361 -943 206 174 14 3139 3379 10 0 960 -944 209 212 -15 6051 6291 10 474 0 -945 466 362 -14 4549 4789 10 664 0 -946 201 278 13 106 346 10 0 990 -947 206 172 29 3092 3332 10 0 901 -948 471 94 -22 3935 4175 10 908 0 -949 331 134 11 4435 4675 10 0 184 -950 274 261 -23 6768 7008 10 658 0 -951 219 215 32 67 307 10 0 427 -952 349 76 15 4063 4303 10 0 839 -953 86 189 -37 847 1087 10 934 0 -954 336 493 -25 5912 6152 10 183 0 -955 7 194 -26 3745 3985 10 209 0 -956 492 335 -23 3253 3493 10 410 0 -957 248 386 22 1453 1693 10 0 90 -958 463 406 -18 0 7423 10 993 0 -959 199 438 -30 0 7493 10 269 0 -960 135 30 -14 0 7439 10 943 0 -961 447 267 19 3858 4098 10 0 733 -962 235 33 -30 0 7470 10 601 0 -963 63 155 -35 3799 4039 10 816 0 -964 294 421 -24 6242 6482 10 843 0 -965 318 99 -24 4791 5031 10 515 0 -966 21 146 21 1887 2127 10 0 415 -967 30 7 -30 4694 4934 10 499 0 -968 410 399 25 875 1115 10 0 247 -969 405 187 -15 4942 5182 10 621 0 -970 109 56 27 839 1079 10 0 932 -971 212 47 20 0 7481 10 0 574 -972 479 387 13 1530 1770 10 0 715 -973 167 291 -12 0 7595 10 702 0 -974 259 498 33 0 7439 10 0 413 -975 461 182 13 2456 2696 10 0 853 -976 277 428 7 1901 2141 10 0 389 -977 290 328 7 515 755 10 0 99 -978 146 313 22 4721 4961 10 0 131 -979 40 304 16 4519 4759 10 0 566 -980 56 268 -20 4196 4436 10 401 0 -981 104 28 -24 0 7422 10 141 0 -982 370 493 22 0 7416 10 0 226 -983 136 265 -1 340 580 10 89 0 -984 247 306 33 104 344 10 0 522 -985 241 38 -26 2067 2307 10 828 0 -986 180 162 9 634 874 10 0 22 -987 253 118 -12 2129 2369 10 738 0 -988 413 391 -10 808 1048 10 760 0 -989 380 350 -12 3406 3646 10 936 0 -990 391 112 -13 3941 4181 10 946 0 -991 86 199 23 1051 1291 10 0 466 -992 91 326 -21 0 7511 10 996 0 -993 287 256 18 37 277 10 0 958 -994 203 211 20 5166 5406 10 0 912 -995 79 80 19 5468 5708 10 0 57 -996 32 319 21 1542 1782 10 0 992 -997 167 445 -23 0 7476 10 115 0 -998 439 237 -29 3694 3934 10 363 0 -999 373 418 6 4978 5218 10 0 270 -1000 26 342 12 1224 1464 10 0 635 -1001 436 467 -12 2884 3124 10 863 0 -1002 157 269 -31 6245 6485 10 329 0 -1003 12 358 -7 4837 5077 10 125 0 -1004 179 497 -1 0 7430 10 53 0 -1005 485 104 -21 3118 3358 10 742 0 -1006 351 481 -10 1227 1467 10 391 0 -1007 306 229 -10 0 7628 10 576 0 -1008 253 74 -20 5340 5580 10 723 0 -1009 318 497 -21 0 7431 10 135 0 -1010 285 247 -13 0 7652 10 390 0 -1011 111 192 -11 0 7537 10 42 0 -1012 321 149 -18 5638 5878 10 830 0 diff --git a/jsprit-instances/instances/lilim/1000/LR2107.txt b/jsprit-instances/instances/lilim/1000/LR2107.txt deleted file mode 100644 index d214e27d2..000000000 --- a/jsprit-instances/instances/lilim/1000/LR2107.txt +++ /dev/null @@ -1,1012 +0,0 @@ -250 1000 1 -0 250 250 0 0 7697 0 0 0 -1 228 399 14 2285 2525 10 0 492 -2 325 56 -13 0 7480 10 595 0 -3 290 145 -1 5066 5306 10 32 0 -4 340 291 22 1822 2062 10 0 261 -5 370 382 -38 0 7509 10 255 0 -6 273 255 18 0 7664 10 0 993 -7 36 301 21 0 7468 0 0 1003 -8 117 178 -26 4409 4649 10 399 0 -9 295 283 26 3513 3753 10 0 896 -10 57 43 -15 0 7404 10 240 0 -11 436 123 40 781 1021 10 0 79 -12 48 162 -13 0 7467 10 909 0 -13 222 499 7 0 7437 10 0 758 -14 376 92 10 0 7485 10 0 229 -15 437 90 -15 0 7441 10 245 0 -16 3 23 11 1506 1746 10 0 48 -17 94 40 -32 4212 4452 10 737 0 -18 398 476 -15 0 7417 10 621 0 -19 307 249 -16 0 7630 10 162 0 -20 179 286 -5 1305 1545 10 316 0 -21 0 356 -2 0 7416 10 579 0 -22 143 158 -1 0 7546 10 140 0 -23 413 476 34 4656 4896 10 0 819 -24 371 488 -6 2271 2511 10 766 0 -25 415 118 -26 0 7476 10 223 0 -26 440 77 -9 0 7431 10 820 0 -27 261 201 -21 5996 6236 10 926 0 -28 490 286 -11 2029 2269 10 928 0 -29 309 161 23 2273 2513 10 0 908 -30 39 162 18 0 7459 10 0 465 -31 361 178 -34 3830 4070 10 552 0 -32 261 138 1 0 7575 10 0 3 -33 447 383 -29 831 1071 10 864 0 -34 346 354 8 3210 3450 10 0 873 -35 461 195 -17 0 7469 10 829 0 -36 187 263 -27 0 7623 10 973 0 -37 130 247 17 0 7567 10 0 734 -38 328 491 21 2653 2893 10 0 135 -39 161 276 -22 474 714 10 349 0 -40 365 74 24 3334 3574 10 0 361 -41 168 109 10 757 997 10 0 844 -42 111 192 11 0 7537 10 0 433 -43 87 213 -8 0 7520 10 547 0 -44 45 166 22 0 7466 10 0 421 -45 62 94 -7 0 7443 10 963 0 -46 348 476 -32 0 7441 10 271 0 -47 64 437 -30 0 7424 10 892 0 -48 56 75 -11 0 7426 10 16 0 -49 24 259 19 0 7461 10 0 77 -50 295 247 -20 5154 5394 10 190 0 -51 6 53 8 0 7374 10 0 628 -52 15 11 15 0 7352 10 0 796 -53 179 497 1 0 7430 10 0 997 -54 67 352 20 1433 1673 10 0 294 -55 317 45 8 0 7472 10 0 324 -56 40 278 -25 0 7476 10 293 0 -57 33 278 18 5889 6129 10 0 556 -58 322 290 23 0 7605 10 0 950 -59 159 226 16 256 496 10 0 160 -60 208 445 -7 0 7488 10 464 0 -61 453 360 13 804 1044 10 0 623 -62 34 169 -15 0 7457 10 696 0 -63 436 25 -14 5069 5309 10 659 0 -64 393 98 13 2950 3190 10 0 969 -65 466 96 -7 0 7422 10 531 0 -66 366 390 -6 5213 5453 10 335 0 -67 303 78 12 0 7508 10 0 619 -68 374 116 -30 0 7505 10 948 0 -69 424 288 -19 0 7509 10 961 0 -70 191 84 13 0 7511 10 0 477 -71 59 276 -13 0 7495 10 72 0 -72 215 293 13 102 342 10 0 71 -73 343 276 15 266 506 10 0 840 -74 488 173 25 4781 5021 10 0 152 -75 452 110 -14 0 7442 10 92 0 -76 153 244 5 0 7590 10 0 944 -77 176 200 -19 2210 2450 10 49 0 -78 498 171 12 0 7427 10 0 363 -79 492 188 -40 2801 3041 10 11 0 -80 177 156 25 0 7568 10 0 422 -81 398 49 21 3107 3347 10 0 769 -82 497 296 14 0 7436 10 0 451 -83 276 84 20 0 7519 10 0 234 -84 128 113 -33 0 7504 10 275 0 -85 422 498 5 0 7386 10 0 691 -86 460 424 -8 5758 5998 10 123 0 -87 246 314 -23 5721 5961 10 707 0 -88 0 422 -20 3224 3464 10 161 0 -89 166 247 1 216 456 10 0 108 -90 311 422 29 0 7505 10 0 372 -91 392 95 -17 3005 3245 10 534 0 -92 460 117 14 0 7439 10 0 75 -93 28 467 34 0 7377 10 0 106 -94 375 145 -20 3657 3897 10 153 0 -95 240 255 -20 6384 6624 10 401 0 -96 440 436 -16 3508 3748 10 615 0 -97 454 201 -13 5160 5400 10 856 0 -98 407 35 -22 0 7421 10 478 0 -99 420 383 27 0 7472 10 0 367 -100 264 180 33 0 7616 10 0 310 -101 440 294 -31 3781 4021 10 262 0 -102 500 228 -9 3067 3307 10 898 0 -103 144 331 -6 3665 3905 10 244 0 -104 98 2 -3 2307 2547 10 146 0 -105 461 186 -27 0 7467 10 794 0 -106 68 450 -34 0 7417 10 93 0 -107 153 192 13 0 7574 10 0 697 -108 34 239 -1 816 1056 10 89 0 -109 465 367 -31 4047 4287 10 584 0 -110 208 488 -18 1850 2090 10 155 0 -111 93 413 17 785 1025 10 0 835 -112 371 332 14 0 7541 10 0 846 -113 231 167 15 221 461 10 0 383 -114 179 75 -4 2900 3140 10 656 0 -115 196 489 23 4061 4301 10 0 431 -116 280 245 21 0 7657 0 0 1009 -117 108 37 -14 0 7432 10 449 0 -118 1 101 -26 4969 5209 10 232 0 -119 420 80 24 0 7447 10 0 243 -120 38 190 -15 0 7467 10 375 0 -121 470 405 -10 3643 3883 10 276 0 -122 448 397 33 0 7441 10 0 940 -123 471 427 8 0 7404 10 0 86 -124 146 376 8 877 1117 10 0 890 -125 12 358 7 4837 5077 10 0 184 -126 175 422 -29 5726 5966 10 874 0 -127 297 131 25 4602 4842 10 0 658 -128 457 492 -20 0 7369 10 722 0 -129 69 423 -18 0 7437 10 731 0 -130 97 288 22 5076 5316 10 0 426 -131 172 314 9 0 7587 10 0 296 -132 170 347 15 1683 1923 10 0 858 -133 103 123 8 1899 2139 10 0 763 -134 154 374 -12 0 7531 10 983 0 -135 318 497 -21 0 7431 10 38 0 -136 330 147 -21 3334 3574 10 227 0 -137 241 180 -6 6718 6958 10 378 0 -138 174 67 15 0 7489 10 0 695 -139 235 288 -15 0 7647 10 474 0 -140 94 192 1 0 7521 10 0 22 -141 232 101 24 1324 1564 10 0 962 -142 28 180 34 1482 1722 10 0 278 -143 64 135 11 3413 3653 10 0 721 -144 174 376 -18 0 7540 10 815 0 -145 293 174 31 229 469 10 0 800 -146 218 12 3 2116 2356 10 0 104 -147 110 122 14 0 7498 10 0 236 -148 459 53 20 0 7400 10 0 631 -149 173 474 -27 0 7451 10 194 0 -150 135 400 -20 0 7498 10 572 0 -151 497 266 25 2930 3170 10 0 614 -152 380 194 -25 0 7546 10 74 0 -153 495 227 20 0 7441 10 0 94 -154 268 351 7 6640 6880 10 0 880 -155 213 399 18 876 1116 10 0 110 -156 448 414 -25 0 7430 10 388 0 -157 327 139 13 4969 5209 10 0 408 -158 151 81 -18 0 7492 10 267 0 -159 425 448 -2 3118 3358 10 352 0 -160 92 259 -16 0 7529 10 59 0 -161 59 388 20 2591 2831 10 0 88 -162 468 360 16 0 7443 10 0 19 -163 332 459 -19 0 7463 10 172 0 -164 469 489 -12 2162 2402 10 554 0 -165 248 176 -14 5546 5786 10 381 0 -166 174 41 15 0 7465 10 0 541 -167 343 205 26 3009 3249 10 0 637 -168 154 392 9 0 7516 10 0 315 -169 92 18 -32 0 7407 10 891 0 -170 250 328 24 0 7609 10 0 790 -171 88 484 5 0 7403 10 0 788 -172 360 488 19 1202 1442 10 0 163 -173 156 65 22 4089 4329 10 0 470 -174 18 225 -19 2705 2945 10 495 0 -175 152 476 45 2030 2270 10 0 575 -176 176 470 -22 0 7455 10 235 0 -177 195 450 -9 5884 6124 10 522 0 -178 466 149 -19 4684 4924 10 853 0 -179 221 269 14 0 7653 10 0 671 -180 105 137 -20 0 7504 10 994 0 -181 284 319 -7 3207 3447 10 453 0 -182 41 120 -18 2724 2964 10 536 0 -183 263 418 25 0 7519 10 0 848 -184 218 271 -7 6235 6475 10 125 0 -185 365 119 -24 0 7513 10 457 0 -186 89 322 -10 4023 4263 10 448 0 -187 180 283 23 2915 3155 10 0 218 -188 385 17 40 3175 3415 10 0 708 -189 401 314 -4 3846 4086 10 725 0 -190 245 176 20 4879 5119 10 0 50 -191 251 238 27 0 7675 10 0 253 -192 139 438 24 796 1036 10 0 561 -193 236 126 23 379 619 10 0 252 -194 61 441 27 2115 2355 10 0 149 -195 405 454 -23 0 7431 10 592 0 -196 111 392 18 4616 4856 10 0 660 -197 373 421 21 890 1130 10 0 358 -198 247 443 17 0 7494 10 0 323 -199 322 406 -15 0 7516 10 397 0 -200 412 478 -10 3779 4019 10 391 0 -201 374 346 27 0 7531 10 0 487 -202 122 422 3 0 7473 10 0 327 -203 261 359 10 0 7578 10 0 585 -204 173 182 25 291 531 10 0 238 -205 398 341 -12 0 7514 10 374 0 -206 413 127 28 0 7483 10 0 770 -207 325 311 -23 5229 5469 10 410 0 -208 80 357 1 2062 2302 10 0 667 -209 67 378 -17 0 7464 10 490 0 -210 216 341 -17 0 7590 10 330 0 -211 498 457 -13 0 7364 10 972 0 -212 44 344 -12 0 7461 10 832 0 -213 352 481 15 5079 5319 10 0 954 -214 237 420 15 0 7517 10 0 757 -215 389 43 21 0 7438 10 0 538 -216 292 136 -30 0 7566 10 645 0 -217 426 38 -30 0 7412 10 416 0 -218 245 461 -23 0 7476 10 187 0 -219 415 253 -27 0 7522 10 519 0 -220 298 264 36 80 320 10 0 263 -221 307 412 8 0 7516 10 0 380 -222 53 204 8 4160 4400 10 0 670 -223 480 152 26 0 7437 10 0 25 -224 262 97 17 0 7534 10 0 598 -225 83 169 21 0 7502 10 0 955 -226 377 432 -27 0 7466 10 902 0 -227 390 249 21 0 7547 10 0 136 -228 132 479 11 910 1150 10 0 417 -229 359 246 -10 5631 5871 10 14 0 -230 314 205 22 6047 6287 10 0 580 -231 124 448 6 0 7453 10 0 686 -232 0 188 26 0 7430 10 0 118 -233 343 166 -9 3444 3684 10 677 0 -234 482 141 -20 3983 4223 10 83 0 -235 162 306 22 417 657 10 0 176 -236 24 71 -14 1324 1564 10 147 0 -237 188 119 -17 3839 4079 10 295 0 -238 100 85 -25 0 7465 10 204 0 -239 103 177 28 2446 2686 10 0 649 -240 26 67 15 0 7398 10 0 10 -241 164 332 -15 5059 5299 10 435 0 -242 385 285 -2 3412 3652 10 307 0 -243 209 68 -24 0 7501 10 119 0 -244 149 341 6 0 7552 10 0 103 -245 415 95 15 4647 4887 10 0 15 -246 167 488 17 940 1180 10 0 827 -247 413 493 -23 4813 5053 10 483 0 -248 439 222 22 3858 4098 10 0 444 -249 150 484 16 2441 2681 10 0 610 -250 299 353 34 0 7573 10 0 359 -251 273 300 30 100 340 10 0 849 -252 402 277 -23 5694 5934 10 193 0 -253 239 15 -27 0 7452 10 191 0 -254 363 225 35 3363 3603 10 0 268 -255 65 343 38 769 1009 10 0 5 -256 351 60 15 0 7472 10 0 923 -257 60 246 25 640 880 10 0 934 -258 144 35 -18 0 7448 10 901 0 -259 463 253 23 4128 4368 10 0 945 -260 332 382 -33 3982 4222 10 837 0 -261 408 318 -22 2512 2752 10 4 0 -262 452 206 31 1909 2149 10 0 101 -263 471 368 -36 1652 1892 10 220 0 -264 93 490 2 1457 1697 10 0 514 -265 241 402 -26 0 7535 10 337 0 -266 60 231 -30 0 7497 10 754 0 -267 172 66 18 0 7488 10 0 158 -268 404 207 -35 3582 3822 10 254 0 -269 286 356 -15 328 568 10 313 0 -270 489 338 -25 5529 5769 10 704 0 -271 334 481 32 1262 1502 10 0 46 -272 26 442 23 0 7392 10 0 583 -273 226 175 -16 6715 6955 10 613 0 -274 488 3 3 0 7344 10 0 603 -275 178 150 33 0 7564 10 0 84 -276 371 423 10 724 964 10 0 121 -277 5 224 -23 0 7441 10 545 0 -278 94 344 -34 2669 2909 10 142 0 -279 153 235 10 273 513 10 0 602 -280 12 367 -13 1243 1483 10 946 0 -281 217 357 -19 0 7576 10 282 0 -282 255 487 19 0 7450 10 0 281 -283 149 214 7 0 7580 10 0 385 -284 169 305 -14 0 7590 10 312 0 -285 487 446 -8 5301 5541 10 808 0 -286 267 374 -17 0 7562 10 854 0 -287 360 294 9 0 7569 10 0 761 -288 185 431 -33 0 7495 10 322 0 -289 325 210 15 0 7602 10 0 443 -290 175 352 -20 6600 6840 10 787 0 -291 76 462 -13 3764 4004 10 736 0 -292 19 273 25 0 7455 10 0 345 -293 72 227 25 2195 2435 10 0 56 -294 213 283 -20 0 7638 10 54 0 -295 130 140 17 0 7525 10 0 237 -296 274 442 -9 4205 4445 10 131 0 -297 337 41 -20 0 7461 10 350 0 -298 372 39 10 2834 3074 10 0 651 -299 269 112 19 0 7548 10 0 441 -300 224 56 13 0 7492 10 0 805 -301 340 416 36 1224 1464 10 0 989 -302 13 214 21 5354 5594 10 0 387 -303 230 320 8 4708 4948 10 0 912 -304 6 196 -19 4753 4993 10 418 0 -305 87 3 -2 0 7392 10 777 0 -306 133 202 -16 1782 2022 10 654 0 -307 235 316 2 2563 2803 10 0 242 -308 435 180 -12 0 7490 10 718 0 -309 173 65 12 1734 1974 10 0 842 -310 245 42 -33 2129 2369 10 100 0 -311 384 149 -27 0 7520 10 693 0 -312 51 286 14 0 7485 10 0 284 -313 267 290 15 54 294 10 0 269 -314 453 318 30 1435 1675 10 0 685 -315 189 402 -9 0 7524 10 168 0 -316 210 276 5 71 311 10 0 20 -317 120 261 -23 3113 3353 10 991 0 -318 35 263 27 0 7472 10 0 767 -319 429 59 9 1775 2015 10 0 724 -320 330 308 -24 0 7589 10 511 0 -321 58 391 16 3469 3709 10 0 593 -322 260 472 33 4084 4324 10 0 288 -323 217 333 -17 0 7598 10 198 0 -324 335 46 -8 5307 5547 10 55 0 -325 198 85 -21 990 1230 10 743 0 -326 138 28 23 4326 4566 10 0 723 -327 29 336 -3 0 7450 10 202 0 -328 200 27 -26 0 7459 10 663 0 -329 157 269 31 0 7593 10 0 976 -330 177 404 17 0 7517 10 0 210 -331 202 28 -25 3677 3917 10 370 0 -332 366 334 5 0 7544 10 0 436 -333 149 458 13 0 7456 10 0 823 -334 481 454 -13 1222 1462 10 700 0 -335 377 385 6 3405 3645 10 0 66 -336 217 207 26 0 7633 10 0 515 -337 96 346 26 681 921 10 0 265 -338 224 320 -2 5075 5315 10 699 0 -339 206 97 33 1732 1972 10 0 711 -340 438 127 -31 0 7463 10 369 0 -341 494 468 31 1350 1590 10 0 555 -342 494 165 -16 2357 2597 10 886 0 -343 5 281 16 0 7441 10 0 689 -344 441 60 -5 0 7418 10 673 0 -345 14 232 -25 0 7451 10 292 0 -346 288 439 16 1034 1274 10 0 517 -347 420 224 10 1656 1896 10 0 749 -348 267 162 6 0 7598 10 0 706 -349 195 273 22 118 358 10 0 39 -350 233 230 20 0 7661 10 0 297 -351 382 360 -14 652 892 10 542 0 -352 406 460 2 2817 3057 10 0 159 -353 499 316 -7 0 7430 10 403 0 -354 246 407 12 1186 1426 10 0 494 -355 283 454 14 0 7481 10 0 750 -356 426 231 -21 4054 4294 10 404 0 -357 432 2 20 1806 2046 10 0 571 -358 404 439 -21 0 7444 10 197 0 -359 397 477 -34 0 7417 10 250 0 -360 44 140 -16 3413 3653 10 899 0 -361 330 138 -24 0 7550 10 40 0 -362 39 153 -21 0 7455 10 857 0 -363 397 153 -12 3470 3710 10 78 0 -364 226 316 21 161 401 10 0 533 -365 354 156 -21 0 7547 10 454 0 -366 201 66 14 0 7497 10 0 535 -367 389 156 -27 2802 3042 10 99 0 -368 134 211 -35 422 662 10 816 0 -369 386 154 31 0 7521 10 0 340 -370 335 99 25 0 7514 10 0 331 -371 356 256 19 0 7581 10 0 600 -372 240 362 -29 0 7575 10 90 0 -373 412 100 1 0 7467 10 0 870 -374 394 322 12 4039 4279 10 0 205 -375 48 150 15 0 7462 10 0 120 -376 225 121 -21 0 7556 10 953 0 -377 102 422 23 0 7461 10 0 566 -378 339 41 6 0 7460 10 0 137 -379 440 201 29 0 7491 0 0 1010 -380 411 379 -8 4713 4953 10 221 0 -381 219 210 14 0 7637 10 0 165 -382 250 441 5 0 7496 10 0 780 -383 210 29 -15 4143 4383 10 113 0 -384 178 302 19 3486 3726 10 0 801 -385 148 208 -7 0 7577 10 283 0 -386 225 369 38 366 606 10 0 785 -387 16 287 -21 0 7451 10 302 0 -388 450 416 25 2247 2487 10 0 156 -389 287 397 12 0 7536 10 0 468 -390 285 247 -14 0 7652 10 668 0 -391 351 481 10 1227 1467 10 0 200 -392 243 408 -11 5675 5915 10 895 0 -393 137 377 -26 0 7518 10 476 0 -394 33 152 -3 5220 5460 10 845 0 -395 68 303 22 825 1065 10 0 703 -396 456 113 17 4849 5089 10 0 779 -397 134 276 15 0 7569 10 0 199 -398 26 221 28 0 7462 10 0 782 -399 79 257 26 3752 3992 10 0 8 -400 181 185 19 6395 6635 10 0 951 -401 104 349 20 3977 4217 10 0 95 -402 267 174 -19 6413 6653 10 911 0 -403 475 267 7 0 7462 10 0 353 -404 385 239 21 3082 3322 10 0 356 -405 95 382 -33 865 1105 10 984 0 -406 67 190 25 0 7495 10 0 499 -407 32 94 -15 3661 3901 10 868 0 -408 401 164 -13 0 7514 10 157 0 -409 376 113 8 0 7501 10 0 675 -410 409 255 23 0 7528 10 0 207 -411 228 260 -8 6362 6602 10 861 0 -412 363 34 19 0 7444 10 0 717 -413 274 441 12 0 7495 10 0 501 -414 146 188 -23 0 7566 10 867 0 -415 212 186 -8 6826 7066 10 981 0 -416 432 66 30 0 7429 10 0 217 -417 83 300 -11 1939 2179 10 228 0 -418 51 89 19 0 7432 10 0 304 -419 379 486 22 2627 2867 10 0 439 -420 440 284 -9 0 7494 10 574 0 -421 175 239 -22 0 7612 10 44 0 -422 282 1 -25 4110 4350 10 80 0 -423 268 113 -36 2659 2899 10 546 0 -424 480 131 -15 0 7429 10 442 0 -425 429 67 -24 2869 3109 10 608 0 -426 162 301 -22 6392 6632 10 130 0 -427 281 96 1 4443 4683 10 0 684 -428 495 199 -27 0 7437 10 885 0 -429 372 115 -10 0 7506 10 636 0 -430 396 83 -30 6286 6526 10 847 0 -431 239 486 -23 0 7451 10 115 0 -432 288 70 24 0 7504 10 0 683 -433 66 163 -11 1522 1762 10 42 0 -434 470 417 11 0 7411 10 0 863 -435 226 423 15 728 968 10 0 241 -436 342 319 -5 0 7572 10 332 0 -437 174 122 14 0 7539 10 0 672 -438 49 353 -21 5724 5964 10 966 0 -439 448 495 -22 0 7372 10 419 0 -440 13 465 -19 0 7368 10 941 0 -441 489 159 -19 5651 5891 10 299 0 -442 311 203 15 2830 3070 10 0 424 -443 480 119 -15 2454 2694 10 289 0 -444 442 153 -22 4695 4935 10 248 0 -445 148 462 -9 2847 3087 10 562 0 -446 233 87 18 950 1190 10 0 862 -447 323 34 -7 0 7459 10 540 0 -448 84 377 10 3645 3885 10 0 186 -449 292 32 14 857 1097 10 0 117 -450 418 75 11 1732 1972 10 0 500 -451 451 305 -14 0 7479 10 82 0 -452 225 269 -10 5023 5263 10 576 0 -453 272 420 7 0 7516 10 0 181 -454 318 280 21 177 417 10 0 365 -455 250 57 -29 0 7494 10 524 0 -456 77 372 -29 0 7476 10 833 0 -457 385 58 24 1559 1799 10 0 185 -458 44 496 32 0 7367 10 0 875 -459 460 328 13 816 1056 10 0 772 -460 67 24 -18 0 7397 10 634 0 -461 91 27 -22 4667 4907 10 826 0 -462 360 284 -24 2606 2846 10 917 0 -463 82 183 17 4347 4587 10 0 913 -464 153 362 7 4585 4825 10 0 60 -465 52 412 -18 5563 5803 10 30 0 -466 32 191 -20 2285 2525 10 647 0 -467 325 147 -21 0 7560 10 797 0 -468 328 458 -12 0 7465 10 389 0 -469 133 273 20 357 597 10 0 678 -470 147 30 -22 4375 4615 10 173 0 -471 131 246 -19 3268 3508 10 698 0 -472 433 319 -13 5445 5685 10 792 0 -473 168 59 -27 0 7480 10 756 0 -474 218 403 15 5217 5457 10 0 139 -475 295 89 23 0 7520 10 0 831 -476 118 314 26 1290 1530 10 0 393 -477 251 63 -13 3890 4130 10 70 0 -478 388 44 22 4463 4703 10 0 98 -479 381 328 12 0 7535 10 0 744 -480 132 32 18 0 7440 10 0 960 -481 334 403 26 578 818 10 0 573 -482 83 290 14 0 7516 10 0 869 -483 411 396 23 3621 3861 10 0 247 -484 243 402 13 0 7535 10 0 564 -485 52 18 -3 0 7382 10 918 0 -486 265 0 10 0 7437 10 0 952 -487 268 288 -27 5008 5248 10 201 0 -488 476 61 36 1735 1975 10 0 620 -489 283 438 3 866 1106 10 0 714 -490 191 215 17 154 394 10 0 209 -491 253 50 -14 0 7487 10 565 0 -492 71 282 -14 0 7506 10 1 0 -493 297 304 4 166 406 10 0 713 -494 244 368 -12 0 7569 10 354 0 -495 80 279 19 0 7515 10 0 174 -496 488 96 -11 4205 4445 10 998 0 -497 142 30 -27 0 7442 10 970 0 -498 68 240 11 3118 3358 0 0 1007 -499 193 138 -25 0 7562 10 406 0 -500 451 62 -11 0 7412 10 450 0 -501 138 406 -12 4804 5044 10 413 0 -502 306 42 11 1847 2087 10 0 789 -503 247 219 -19 0 7656 10 609 0 -504 98 29 14 4126 4366 10 0 905 -505 102 6 -30 0 7402 10 601 0 -506 142 360 20 0 7533 10 0 930 -507 172 24 17 5749 5989 10 0 553 -508 352 241 5 3109 3349 10 0 798 -509 486 324 -10 0 7440 10 956 0 -510 133 455 25 0 7451 10 0 919 -511 440 292 24 3700 3940 10 0 320 -512 364 173 -14 661 901 10 793 0 -513 442 289 25 0 7492 0 0 1001 -514 48 412 -2 0 7429 10 264 0 -515 344 70 -26 4523 4763 10 336 0 -516 78 406 -3 3782 4022 10 959 0 -517 329 456 -16 936 1176 10 346 0 -518 157 38 -18 0 7456 10 701 0 -519 374 260 27 0 7563 10 0 219 -520 297 283 -14 0 7630 10 528 0 -521 210 113 28 0 7545 10 0 606 -522 215 434 9 0 7500 10 0 177 -523 262 92 -1 2462 2702 10 605 0 -524 140 108 29 0 7508 10 0 455 -525 235 108 -5 4258 4498 10 786 0 -526 210 133 -13 0 7564 10 740 0 -527 25 53 23 4020 4260 10 0 883 -528 339 113 14 2982 3222 10 0 520 -529 394 310 -10 4334 4574 10 752 0 -530 126 391 -33 0 7500 10 974 0 -531 343 34 7 2839 3079 10 0 65 -532 354 416 10 2657 2897 10 0 641 -533 202 391 -21 2434 2674 10 364 0 -534 367 97 17 0 7495 10 0 91 -535 188 151 -14 0 7571 10 366 0 -536 111 178 18 506 746 10 0 182 -537 456 157 -12 5760 6000 10 884 0 -538 441 7 -21 0 7378 10 215 0 -539 270 337 20 0 7598 0 0 1006 -540 323 29 7 4490 4730 10 0 447 -541 200 78 -15 0 7508 10 166 0 -542 330 281 14 0 7602 10 0 351 -543 438 488 -15 1249 1489 10 680 0 -544 161 416 -12 0 7499 10 702 0 -545 30 97 23 4781 5021 10 0 277 -546 273 70 36 2417 2657 10 0 423 -547 214 245 8 0 7651 10 0 43 -548 221 291 9 124 364 10 0 865 -549 79 467 22 1346 1586 10 0 771 -550 423 315 -15 0 7503 10 690 0 -551 395 474 26 0 7421 10 0 578 -552 481 207 34 3364 3604 10 0 31 -553 199 203 -17 0 7618 10 507 0 -554 497 483 12 1354 1594 10 0 164 -555 449 428 -31 4927 5167 10 341 0 -556 100 266 -18 0 7537 10 57 0 -557 214 274 -22 5416 5656 10 978 0 -558 16 68 11 0 7391 10 0 906 -559 475 198 -13 3281 3521 10 975 0 -560 371 427 23 3773 4013 10 0 999 -561 62 375 -24 1335 1575 10 192 0 -562 163 472 9 2554 2794 10 0 445 -563 13 314 -24 0 7442 10 765 0 -564 376 385 -13 0 7503 10 484 0 -565 231 29 14 4845 5085 10 0 491 -566 89 358 -23 4929 5169 10 377 0 -567 331 356 -29 0 7554 10 755 0 -568 365 190 -24 5850 6090 10 900 0 -569 256 441 34 0 7496 10 0 607 -570 120 37 28 0 7438 10 0 746 -571 349 43 -20 0 7458 10 357 0 -572 230 487 20 0 7450 10 0 150 -573 489 457 -26 0 7371 10 481 0 -574 341 72 9 3159 3399 10 0 420 -575 181 441 -45 0 7484 10 175 0 -576 306 229 10 0 7628 10 0 452 -577 492 326 19 4756 4996 10 0 927 -578 347 459 -26 0 7457 10 551 0 -579 66 88 2 0 7442 10 0 21 -580 272 234 -22 6301 6541 10 230 0 -581 134 194 -4 0 7559 10 709 0 -582 320 211 16 0 7607 10 0 719 -583 214 311 -23 0 7617 10 272 0 -584 489 274 31 2075 2315 10 0 109 -585 231 410 -10 0 7526 10 203 0 -586 432 199 7 0 7498 10 0 726 -587 29 358 -20 2383 2623 10 889 0 -588 62 236 29 2172 2412 10 0 910 -589 333 163 -2 4901 5141 10 642 0 -590 364 71 5 0 7475 10 0 903 -591 125 65 -16 0 7464 10 985 0 -592 429 476 23 2233 2473 10 0 195 -593 161 275 -16 5327 5567 10 321 0 -594 365 274 14 350 590 0 0 1005 -595 117 110 13 0 7494 10 0 2 -596 166 345 -24 4459 4699 10 843 0 -597 345 146 27 5696 5936 10 0 830 -598 324 99 -17 1292 1532 10 224 0 -599 72 477 -17 0 7399 10 806 0 -600 487 320 -19 0 7440 10 371 0 -601 120 17 30 0 7421 10 0 505 -602 1 252 -10 1041 1281 10 279 0 -603 303 186 -3 0 7604 10 274 0 -604 428 302 -12 0 7502 10 812 0 -605 264 135 1 0 7572 10 0 523 -606 223 178 -28 0 7611 10 521 0 -607 174 347 -34 0 7564 10 569 0 -608 238 123 24 0 7560 10 0 425 -609 187 61 19 2120 2360 10 0 503 -610 52 303 -16 0 7483 10 249 0 -611 89 185 -10 2339 2579 10 778 0 -612 341 59 27 3099 3339 10 0 776 -613 89 65 16 2821 3061 10 0 273 -614 495 355 -25 4913 5153 10 151 0 -615 368 452 16 2620 2860 10 0 96 -616 164 473 26 1125 1365 10 0 741 -617 171 34 -23 4512 4752 10 784 0 -618 114 460 -12 0 7437 10 1000 0 -619 224 3 -12 0 7439 10 67 0 -620 472 57 -36 0 7393 10 488 0 -621 448 404 15 2336 2576 10 0 18 -622 390 120 -26 0 7496 10 877 0 -623 386 225 -13 0 7549 10 61 0 -624 301 239 31 89 329 10 0 871 -625 115 296 -2 6055 6295 10 933 0 -626 69 266 -24 0 7506 10 814 0 -627 115 395 -4 3201 3441 10 657 0 -628 68 53 -8 0 7419 10 51 0 -629 33 268 -23 0 7470 10 938 0 -630 450 45 24 1954 2194 10 0 661 -631 351 5 -20 0 7422 10 148 0 -632 351 148 -14 0 7544 10 664 0 -633 80 458 30 1422 1662 10 0 646 -634 60 5 18 4115 4355 10 0 460 -635 10 407 -15 1678 1918 10 879 0 -636 497 18 10 4460 4700 10 0 429 -637 437 98 -26 4395 4635 10 167 0 -638 130 494 -26 2975 3215 10 705 0 -639 391 202 -23 0 7539 10 836 0 -640 43 210 -26 0 7477 10 802 0 -641 381 457 -10 0 7443 10 532 0 -642 449 190 2 0 7480 10 0 589 -643 429 169 8 3551 3791 10 0 888 -644 105 140 -7 608 848 10 818 0 -645 282 10 30 4986 5226 10 0 216 -646 20 480 -30 2221 2461 10 633 0 -647 61 170 20 0 7482 10 0 466 -648 210 81 -28 0 7514 10 860 0 -649 87 311 -28 0 7513 10 239 0 -650 309 29 -15 0 7459 10 922 0 -651 397 57 -10 5844 6084 10 298 0 -652 337 232 -21 6222 6462 10 881 0 -653 262 369 15 457 697 10 0 813 -654 41 232 16 0 7478 10 0 306 -655 69 414 -22 4993 5233 10 916 0 -656 149 98 4 0 7505 10 0 114 -657 207 487 4 0 7447 10 0 627 -658 366 260 -25 0 7571 10 127 0 -659 497 54 14 0 7372 10 0 63 -660 210 379 -18 0 7552 10 196 0 -661 437 19 -24 0 7390 10 630 0 -662 181 260 -27 0 7618 10 876 0 -663 125 61 26 2387 2627 10 0 328 -664 368 311 14 0 7555 10 0 632 -665 80 400 -21 5725 5965 10 666 0 -666 75 118 21 0 7468 10 0 665 -667 171 303 -1 0 7592 10 208 0 -668 80 251 14 1154 1394 10 0 390 -669 455 168 21 3407 3647 10 0 990 -670 215 129 -8 4414 4654 10 222 0 -671 179 318 -14 0 7589 10 179 0 -672 187 73 -14 0 7500 10 437 0 -673 394 47 5 1192 1432 10 0 344 -674 31 175 -31 0 7456 10 915 0 -675 339 144 -8 0 7549 10 409 0 -676 492 34 5 0 7363 10 0 838 -677 387 349 9 0 7518 10 0 233 -678 142 372 -20 0 7525 10 469 0 -679 291 213 23 4971 5211 10 0 739 -680 421 387 15 0 7468 10 0 543 -681 274 403 -26 0 7533 10 964 0 -682 434 359 -33 5509 5749 10 893 0 -683 257 57 -24 0 7494 10 432 0 -684 428 202 -1 0 7503 10 427 0 -685 355 174 -30 2801 3041 10 314 0 -686 46 389 -6 0 7441 10 231 0 -687 44 440 -11 0 7407 10 914 0 -688 491 369 28 2858 3098 10 0 821 -689 33 286 -16 0 7468 10 343 0 -690 351 128 15 4953 5193 10 0 550 -691 485 428 -5 0 7393 10 85 0 -692 273 149 14 0 7584 10 0 828 -693 447 184 27 0 7480 10 0 311 -694 386 245 -24 0 7551 10 852 0 -695 323 77 -15 5560 5800 10 138 0 -696 21 70 15 3025 3265 10 0 62 -697 9 101 -13 0 7404 10 107 0 -698 71 304 19 2696 2936 10 0 471 -699 43 360 2 3281 3521 10 0 338 -700 396 417 13 0 7466 10 0 334 -701 158 24 18 2385 2625 10 0 518 -702 164 320 12 0 7577 10 0 544 -703 195 386 -22 0 7541 10 395 0 -704 306 235 25 112 352 10 0 270 -705 66 314 26 659 899 10 0 638 -706 95 64 -6 3004 3244 10 348 0 -707 348 348 23 0 7549 10 0 87 -708 495 83 -40 0 7391 10 188 0 -709 61 214 4 1307 1547 10 0 581 -710 240 240 35 6738 6978 0 0 1002 -711 140 137 -33 2219 2459 10 339 0 -712 242 106 -20 0 7543 10 971 0 -713 392 491 -4 4471 4711 10 493 0 -714 342 481 -3 5700 5940 10 489 0 -715 478 300 -33 3498 3738 10 809 0 -716 299 285 -27 4955 5195 10 929 0 -717 481 84 -19 0 7403 10 412 0 -718 271 128 12 0 7564 10 0 308 -719 484 224 -16 0 7452 10 582 0 -720 441 177 -19 3945 4185 10 987 0 -721 46 163 -11 0 7466 10 143 0 -722 493 493 20 3366 3606 10 0 128 -723 253 74 -23 5340 5580 10 326 0 -724 390 34 -9 4181 4421 10 319 0 -725 374 306 4 3916 4156 10 0 189 -726 436 295 -7 0 7496 10 586 0 -727 371 315 -3 4603 4843 10 730 0 -728 27 464 21 0 7378 10 0 907 -729 3 471 -17 0 7356 10 735 0 -730 418 269 3 0 7518 10 0 727 -731 90 477 18 0 7410 10 0 129 -732 141 426 23 0 7480 10 0 855 -733 418 251 -15 4727 4967 10 937 0 -734 57 183 -17 4341 4581 10 37 0 -735 29 462 17 0 7381 10 0 729 -736 55 318 13 1188 1428 10 0 291 -737 18 24 32 2453 2693 10 0 17 -738 263 153 -23 0 7590 10 824 0 -739 289 220 -23 0 7638 10 679 0 -740 84 255 13 0 7521 10 0 526 -741 159 299 -26 0 7584 10 616 0 -742 485 104 21 0 7411 10 0 894 -743 178 135 21 0 7552 10 0 325 -744 389 255 -12 0 7548 10 479 0 -745 457 280 -20 3939 4179 10 921 0 -746 171 24 -28 0 7448 10 570 0 -747 330 371 -15 0 7542 10 897 0 -748 10 237 19 0 7447 10 0 866 -749 458 213 -10 0 7476 10 347 0 -750 257 391 -14 6472 6712 10 355 0 -751 482 184 -18 4367 4607 10 773 0 -752 222 331 10 2098 2338 10 0 529 -753 332 5 14 4071 4311 10 0 783 -754 47 208 30 0 7480 10 0 266 -755 489 437 29 0 7384 10 0 567 -756 165 59 27 3711 3951 10 0 473 -757 211 446 -15 0 7488 10 214 0 -758 225 488 -7 0 7448 10 13 0 -759 355 485 10 5856 6096 10 0 882 -760 441 374 -8 833 1073 10 988 0 -761 399 175 -9 2928 3168 10 287 0 -762 103 464 -5 0 7428 10 768 0 -763 244 13 -8 3992 4232 10 133 0 -764 51 360 13 0 7460 0 0 1008 -765 44 115 24 865 1105 10 0 563 -766 312 453 6 0 7475 10 0 24 -767 64 198 -27 4294 4534 10 318 0 -768 67 451 5 0 7416 10 0 762 -769 371 71 -21 0 7471 10 81 0 -770 439 156 -28 2043 2283 10 206 0 -771 105 474 -22 0 7421 10 549 0 -772 366 288 -13 0 7565 10 459 0 -773 415 207 18 3540 3780 10 0 751 -774 58 39 12 4592 4832 10 0 781 -775 197 202 -43 4755 4995 10 804 0 -776 442 5 -27 0 7376 10 612 0 -777 71 12 2 1112 1352 10 0 305 -778 74 215 10 0 7508 10 0 611 -779 347 192 -17 5893 6133 10 396 0 -780 178 420 -5 0 7503 10 382 0 -781 186 135 -12 0 7556 10 774 0 -782 176 199 -28 0 7598 10 398 0 -783 438 5 -14 0 7379 10 753 0 -784 150 68 23 0 7480 10 0 617 -785 185 434 -38 2234 2474 10 386 0 -786 215 79 5 0 7513 10 0 525 -787 177 486 20 6329 6569 10 0 290 -788 49 437 -5 1650 1890 10 171 0 -789 100 66 -11 0 7450 10 502 0 -790 35 344 -24 3392 3632 10 170 0 -791 433 447 -12 3117 3357 10 936 0 -792 372 97 13 0 7492 10 0 472 -793 344 203 14 609 849 10 0 512 -794 423 170 27 1992 2232 10 0 105 -795 171 188 30 2422 2662 10 0 839 -796 64 5 -15 0 7380 10 52 0 -797 371 163 21 0 7538 10 0 467 -798 398 210 -5 0 7534 10 508 0 -799 48 437 -9 0 7412 10 924 0 -800 392 1 -31 2361 2601 10 145 0 -801 195 464 -19 0 7467 10 384 0 -802 211 248 26 0 7648 10 0 640 -803 293 228 19 73 313 10 0 825 -804 23 235 43 0 7460 10 0 775 -805 213 185 -13 0 7613 10 300 0 -806 172 292 17 308 548 10 0 599 -807 228 287 21 52 292 10 0 810 -808 387 394 8 0 7489 10 0 285 -809 374 232 33 0 7562 10 0 715 -810 48 366 -21 0 7455 10 807 0 -811 44 311 -22 1570 1810 10 957 0 -812 447 272 12 0 7489 10 0 604 -813 132 477 -15 0 7432 10 653 0 -814 80 117 24 0 7472 10 0 626 -815 11 403 18 1312 1552 10 0 144 -816 144 220 35 0 7577 10 0 368 -817 473 491 -22 0 7359 10 982 0 -818 210 219 7 0 7637 10 0 644 -819 452 484 -34 5054 5294 10 23 0 -820 365 28 9 0 7437 10 0 26 -821 498 456 -28 5564 5804 10 688 0 -822 84 453 -15 4832 5072 10 920 0 -823 91 427 -13 3470 3710 10 333 0 -824 178 72 23 2967 3207 10 0 738 -825 409 155 -19 0 7502 10 803 0 -826 132 151 22 0 7533 10 0 461 -827 136 430 -17 2781 3021 10 246 0 -828 292 104 -14 0 7536 10 692 0 -829 443 167 17 2113 2353 10 0 35 -830 321 149 -27 0 7564 10 597 0 -831 235 13 -23 0 7450 10 475 0 -832 166 440 12 711 951 10 0 212 -833 112 433 29 0 7458 10 0 456 -834 452 172 9 0 7471 10 0 942 -835 37 281 -17 1913 2153 10 111 0 -836 414 378 23 1919 2159 10 0 639 -837 475 352 33 0 7440 10 0 260 -838 400 71 -5 0 7454 10 676 0 -839 286 244 -30 5076 5316 10 795 0 -840 429 389 -15 1636 1876 10 73 0 -841 92 76 4 4496 4736 10 0 967 -842 124 111 -12 0 7500 10 309 0 -843 268 458 24 0 7479 10 0 596 -844 352 63 -10 4653 4893 10 41 0 -845 49 118 3 0 7447 10 0 394 -846 398 329 -14 551 791 10 112 0 -847 382 9 30 1027 1267 10 0 430 -848 229 322 -25 0 7612 10 183 0 -849 279 355 -30 0 7579 10 251 0 -850 266 221 9 0 7654 10 0 878 -851 142 80 -9 1908 2148 10 986 0 -852 359 287 24 0 7572 10 0 694 -853 482 104 19 0 7413 10 0 178 -854 284 457 17 5934 6174 10 0 286 -855 64 294 -23 4345 4585 10 732 0 -856 404 59 13 0 7442 10 0 97 -857 68 160 21 0 7484 10 0 362 -858 211 411 -15 4526 4766 10 132 0 -859 30 155 9 5062 5302 10 0 931 -860 240 34 28 6178 6418 10 0 648 -861 107 374 8 3597 3837 10 0 411 -862 404 140 -18 4975 5215 10 446 0 -863 436 467 -11 0 7402 10 434 0 -864 421 386 29 0 7469 10 0 33 -865 182 480 -9 0 7448 10 548 0 -866 9 233 -19 1165 1405 10 748 0 -867 110 251 23 1931 2171 10 0 414 -868 19 38 15 3329 3569 10 0 407 -869 46 248 -14 3195 3435 10 482 0 -870 308 199 -1 5973 6213 10 373 0 -871 423 221 -31 973 1213 10 624 0 -872 313 391 -7 538 778 10 977 0 -873 413 345 -8 4812 5052 10 34 0 -874 278 450 29 0 7486 10 0 126 -875 94 497 -32 3069 3309 10 458 0 -876 7 382 27 3022 3262 10 0 662 -877 493 111 26 2104 2344 10 0 622 -878 392 87 -9 0 7471 10 850 0 -879 13 394 15 0 7410 10 0 635 -880 259 301 -7 0 7636 10 154 0 -881 351 233 21 5631 5871 10 0 652 -882 313 493 -10 0 7436 10 759 0 -883 65 62 -23 3846 4086 10 527 0 -884 417 212 12 0 7516 10 0 537 -885 450 194 27 2439 2679 10 0 428 -886 470 138 16 0 7441 10 0 342 -887 190 267 -21 0 7625 10 996 0 -888 248 214 -8 5857 6097 10 643 0 -889 50 383 20 980 1220 10 0 587 -890 244 422 -8 2091 2331 10 124 0 -891 60 29 32 0 7396 10 0 169 -892 5 445 30 1184 1424 10 0 47 -893 490 276 33 0 7446 10 0 682 -894 441 100 -21 0 7445 10 742 0 -895 162 388 11 0 7524 10 0 392 -896 244 277 -26 5145 5385 10 9 0 -897 406 408 15 5765 6005 10 0 747 -898 265 240 9 18 258 10 0 102 -899 130 186 16 465 705 10 0 360 -900 382 110 24 4390 4630 10 0 568 -901 142 14 18 0 7428 10 0 258 -902 352 487 27 0 7429 10 0 226 -903 307 52 -5 3622 3862 10 590 0 -904 418 399 -23 0 7463 10 958 0 -905 196 56 -14 0 7486 10 504 0 -906 66 31 -11 0 7401 10 558 0 -907 90 496 -21 0 7394 10 728 0 -908 480 136 -23 0 7431 10 29 0 -909 65 82 13 2898 3138 10 0 12 -910 48 293 -29 0 7481 10 588 0 -911 105 181 19 0 7527 10 0 402 -912 215 282 -8 5702 5942 10 303 0 -913 257 133 -17 0 7570 10 463 0 -914 77 465 11 0 7412 10 0 687 -915 43 135 31 0 7451 10 0 674 -916 27 444 22 4261 4501 10 0 655 -917 357 290 24 0 7573 10 0 462 -918 38 15 3 0 7371 10 0 485 -919 80 337 -25 4417 4657 10 510 0 -920 36 451 15 3495 3735 10 0 822 -921 291 251 20 44 284 10 0 745 -922 195 111 15 3932 4172 10 0 650 -923 383 17 -15 3702 3942 10 256 0 -924 53 466 9 0 7395 10 0 799 -925 114 102 21 0 7487 10 0 995 -926 350 199 21 4746 4986 10 0 27 -927 405 349 -19 0 7504 10 577 0 -928 472 248 11 0 7465 10 0 28 -929 333 293 27 2408 2648 10 0 716 -930 174 397 -20 4919 5159 10 506 0 -931 2 264 -9 0 7439 10 859 0 -932 7 82 -35 1586 1826 10 939 0 -933 34 329 2 0 7458 10 0 625 -934 158 179 -25 0 7571 10 257 0 -935 421 499 -25 5321 5561 10 968 0 -936 345 431 12 0 7483 10 0 791 -937 370 262 15 4338 4578 10 0 733 -938 77 172 23 0 7498 10 0 629 -939 87 51 35 0 7430 10 0 932 -940 468 352 -33 3013 3253 10 122 0 -941 63 420 19 2018 2258 10 0 440 -942 347 184 -9 4255 4495 10 834 0 -943 206 174 -29 3139 3379 10 947 0 -944 209 212 -5 6051 6291 10 76 0 -945 466 362 -23 0 7444 10 259 0 -946 201 278 13 106 346 10 0 280 -947 206 172 29 3092 3332 10 0 943 -948 471 94 30 0 7417 10 0 68 -949 331 134 11 4435 4675 10 0 965 -950 274 261 -23 0 7661 10 58 0 -951 219 215 -19 0 7641 10 400 0 -952 349 76 -10 4063 4303 10 486 0 -953 86 189 21 847 1087 10 0 376 -954 336 493 -15 5912 6152 10 213 0 -955 7 194 -21 3745 3985 10 225 0 -956 492 335 10 3253 3493 10 0 509 -957 248 386 22 0 7551 10 0 811 -958 463 406 23 0 7423 10 0 904 -959 199 438 3 0 7493 10 0 516 -960 135 30 -18 0 7439 10 480 0 -961 447 267 19 0 7490 10 0 69 -962 235 33 -24 0 7470 10 141 0 -963 63 155 7 0 7478 10 0 45 -964 294 421 26 6242 6482 10 0 681 -965 318 99 -11 4791 5031 10 949 0 -966 21 146 21 0 7436 10 0 438 -967 30 7 -4 4694 4934 10 841 0 -968 410 399 25 875 1115 10 0 935 -969 405 187 -13 4942 5182 10 64 0 -970 109 56 27 0 7448 10 0 497 -971 212 47 20 0 7481 10 0 712 -972 479 387 13 0 7421 10 0 211 -973 167 291 27 0 7595 10 0 36 -974 259 498 33 0 7439 10 0 530 -975 461 182 13 2456 2696 10 0 559 -976 277 428 -31 1901 2141 10 329 0 -977 290 328 7 515 755 10 0 872 -978 146 313 22 4721 4961 10 0 557 -979 40 304 -4 4519 4759 10 992 0 -980 56 268 28 4196 4436 0 0 1004 -981 104 28 8 0 7422 10 0 415 -982 370 493 22 0 7416 10 0 817 -983 136 265 12 340 580 10 0 134 -984 247 306 33 104 344 10 0 405 -985 241 38 16 2067 2307 10 0 591 -986 180 162 9 634 874 10 0 851 -987 253 118 19 2129 2369 10 0 720 -988 413 391 8 808 1048 10 0 760 -989 380 350 -36 3406 3646 10 301 0 -990 391 112 -21 3941 4181 10 669 0 -991 86 199 23 1051 1291 10 0 317 -992 91 326 4 0 7511 10 0 979 -993 287 256 -18 37 277 10 6 0 -994 203 211 20 0 7626 10 0 180 -995 79 80 -21 0 7446 10 925 0 -996 32 319 21 1542 1782 10 0 887 -997 167 445 -1 0 7476 10 53 0 -998 439 237 11 3694 3934 10 0 496 -999 373 418 -23 4978 5218 10 560 0 -1000 26 342 12 1224 1464 10 0 618 -1001 442 289 -25 0 7492 10 513 0 -1002 240 240 -35 6738 6978 10 710 0 -1003 36 301 -21 0 7468 10 7 0 -1004 56 268 -28 4196 4436 10 980 0 -1005 365 274 -14 350 590 10 594 0 -1006 270 337 -20 0 7598 10 539 0 -1007 68 240 -11 3118 3358 10 498 0 -1008 51 360 -13 0 7460 10 764 0 -1009 280 245 -21 0 7657 10 116 0 -1010 440 201 -29 0 7491 10 379 0 diff --git a/jsprit-instances/instances/lilim/1000/LR2108.txt b/jsprit-instances/instances/lilim/1000/LR2108.txt deleted file mode 100644 index b83f9af75..000000000 --- a/jsprit-instances/instances/lilim/1000/LR2108.txt +++ /dev/null @@ -1,1010 +0,0 @@ -250 1000 1 -0 250 250 0 0 7697 0 0 0 -1 228 399 -17 0 7537 10 199 0 -2 325 56 -13 0 7480 10 300 0 -3 290 145 5 0 7575 10 0 403 -4 340 291 22 1822 2062 10 0 9 -5 370 382 -22 0 7509 10 957 0 -6 273 255 18 0 7664 10 0 421 -7 36 301 -26 0 7468 10 399 0 -8 117 178 28 4409 4649 10 0 721 -9 295 283 -22 3513 3753 10 4 0 -10 57 43 -22 0 7404 10 84 0 -11 436 123 40 0 7462 10 0 926 -12 48 162 -20 0 7467 10 647 0 -13 222 499 -17 0 7437 10 246 0 -14 376 92 10 0 7485 10 0 800 -15 437 90 -1 0 7441 10 373 0 -16 3 23 11 1506 1746 10 0 17 -17 94 40 -11 0 7426 10 16 0 -18 398 476 -11 0 7417 10 195 0 -19 307 249 10 0 7630 10 0 390 -20 179 286 8 1305 1545 10 0 30 -21 0 356 13 0 7416 10 0 294 -22 143 158 12 0 7546 10 0 934 -23 413 476 -10 4656 4896 10 759 0 -24 371 488 10 2271 2511 10 0 453 -25 415 118 19 0 7476 10 0 770 -26 440 77 14 0 7431 10 0 620 -27 261 201 -10 5996 6236 10 636 0 -28 490 286 29 0 7445 10 0 652 -29 309 161 23 2273 2513 10 0 824 -30 39 162 -8 0 7459 10 20 0 -31 361 178 -10 0 7555 10 576 0 -32 261 138 -1 0 7575 10 605 0 -33 447 383 17 831 1071 10 0 355 -34 346 354 8 3210 3450 10 0 725 -35 461 195 26 0 7469 10 0 97 -36 187 263 -23 0 7623 10 187 0 -37 130 247 -33 0 7567 10 275 0 -38 328 491 -25 2653 2893 10 513 0 -39 161 276 -23 0 7595 10 115 0 -40 365 74 24 3334 3574 10 0 695 -41 168 109 10 0 7524 10 0 415 -42 111 192 11 0 7537 10 0 909 -43 87 213 -25 0 7520 10 293 0 -44 45 166 -23 0 7466 10 120 0 -45 62 94 16 0 7443 10 0 460 -46 348 476 19 0 7441 10 0 592 -47 64 437 11 0 7424 10 0 703 -48 56 75 24 0 7426 10 0 104 -49 24 259 19 0 7461 10 0 602 -50 295 247 -7 0 7642 10 586 0 -51 6 53 8 0 7374 10 0 845 -52 15 11 -26 0 7352 10 258 0 -53 179 497 -24 0 7430 10 843 0 -54 67 352 -16 0 7478 10 184 0 -55 317 45 8 0 7472 10 0 457 -56 40 278 -22 0 7476 10 130 0 -57 33 278 18 0 7469 10 0 678 -58 322 290 -12 0 7605 10 354 0 -59 159 226 16 256 496 10 0 383 -60 208 445 -16 0 7488 10 177 0 -61 453 360 13 804 1044 10 0 154 -62 34 169 -10 0 7457 10 767 0 -63 436 25 -30 0 7396 10 847 0 -64 393 98 13 2950 3190 10 0 650 -65 466 96 -14 0 7422 10 92 0 -66 366 390 -20 5213 5453 10 791 0 -67 303 78 -24 0 7508 10 515 0 -68 374 116 9 0 7505 10 0 894 -69 424 288 -21 0 7509 10 600 0 -70 191 84 13 0 7511 10 0 356 -71 59 276 11 0 7495 10 0 910 -72 215 293 13 102 342 10 0 520 -73 343 276 15 266 506 10 0 314 -74 488 173 25 4781 5021 10 0 537 -75 452 110 14 0 7442 10 0 853 -76 153 244 -8 0 7590 10 547 0 -77 176 200 17 2210 2450 10 0 476 -78 498 171 12 0 7427 10 0 428 -79 492 188 -5 2801 3041 10 424 0 -80 177 156 25 0 7568 10 0 283 -81 398 49 21 0 7438 10 0 297 -82 497 296 -31 0 7436 10 584 0 -83 276 84 -22 0 7519 10 331 0 -84 128 113 22 0 7504 10 0 10 -85 422 498 -7 0 7386 10 977 0 -86 460 424 -14 0 7415 10 109 0 -87 246 314 -15 5721 5961 10 392 0 -88 0 422 8 0 7384 10 0 920 -89 166 247 1 216 456 10 0 418 -90 311 422 -25 0 7505 10 578 0 -91 392 95 -14 0 7477 10 477 0 -92 460 117 14 0 7439 10 0 65 -93 28 467 -30 0 7377 10 892 0 -94 375 145 -18 0 7524 10 422 0 -95 240 255 -8 0 7676 10 218 0 -96 440 436 18 3508 3748 10 0 332 -97 454 201 -26 0 7478 10 35 0 -98 407 35 11 0 7421 10 0 216 -99 420 383 27 0 7472 10 0 615 -100 264 180 -9 0 7616 10 319 0 -101 440 294 16 0 7492 10 0 135 -102 500 228 -20 3067 3307 10 153 0 -103 144 331 13 0 7554 10 0 698 -104 98 2 -24 2307 2547 10 48 0 -105 461 186 16 0 7467 10 0 262 -106 68 450 -30 0 7417 10 633 0 -107 153 192 -6 0 7574 10 414 0 -108 34 239 16 816 1056 10 0 686 -109 465 367 14 0 7443 10 0 86 -110 208 488 -5 0 7446 10 382 0 -111 93 413 -10 0 7461 10 665 0 -112 371 332 -15 0 7541 10 211 0 -113 231 167 15 221 461 10 0 455 -114 179 75 13 2900 3140 10 0 922 -115 196 489 23 4061 4301 10 0 39 -116 280 245 -18 0 7657 10 229 0 -117 108 37 23 0 7432 10 0 901 -118 1 101 -17 0 7397 10 490 0 -119 420 80 -36 0 7447 10 546 0 -120 38 190 23 0 7467 10 0 44 -121 470 405 -23 3643 3883 10 707 0 -122 448 397 -13 0 7441 10 700 0 -123 471 427 8 0 7404 10 0 837 -124 146 376 8 0 7524 10 0 244 -125 12 358 7 0 7426 10 0 566 -126 175 422 -27 0 7500 10 973 0 -127 297 131 -3 4602 4842 10 274 0 -128 457 492 7 0 7369 10 0 821 -129 69 423 32 0 7437 10 0 762 -130 97 288 22 0 7530 10 0 56 -131 172 314 -12 0 7587 10 626 0 -132 170 347 15 0 7562 10 0 702 -133 103 123 8 0 7493 10 0 746 -134 154 374 36 0 7531 10 0 930 -135 318 497 -16 0 7431 10 101 0 -136 330 147 -23 3334 3574 10 273 0 -137 241 180 13 0 7617 10 0 608 -138 174 67 -15 0 7489 10 240 0 -139 235 288 -31 0 7647 10 865 0 -140 94 192 1 0 7521 10 0 222 -141 232 101 24 0 7537 10 0 324 -142 28 180 -35 0 7455 10 368 0 -143 64 135 -21 3413 3653 10 925 0 -144 174 376 8 0 7540 10 0 241 -145 293 174 31 0 7600 10 0 949 -146 218 12 -15 0 7447 10 789 0 -147 110 122 14 0 7498 10 0 737 -148 459 53 -16 0 7400 10 425 0 -149 173 474 14 0 7451 10 0 757 -150 135 400 -40 0 7498 10 931 0 -151 497 266 -22 0 7440 10 749 0 -152 380 194 -14 0 7546 10 639 0 -153 495 227 20 0 7441 10 0 102 -154 268 351 -13 0 7585 10 61 0 -155 213 399 18 0 7534 10 0 335 -156 448 414 23 0 7430 10 0 958 -157 327 139 13 4969 5209 10 0 589 -158 151 81 -27 0 7492 10 929 0 -159 425 448 9 3118 3358 10 0 276 -160 92 259 -20 0 7529 10 553 0 -161 59 388 -16 2591 2831 10 426 0 -162 468 360 16 0 7443 10 0 972 -163 332 459 -29 0 7463 10 864 0 -164 469 489 4 0 7363 10 0 341 -165 248 176 -14 0 7613 10 366 0 -166 174 41 15 0 7465 10 0 756 -167 343 205 -22 0 7584 10 568 0 -168 154 392 -13 0 7516 10 333 0 -169 92 18 8 0 7407 10 0 570 -170 250 328 24 0 7609 10 0 653 -171 88 484 -13 0 7403 10 729 0 -172 360 488 -12 1202 1442 10 936 0 -173 156 65 -29 4089 4329 10 524 0 -174 18 225 8 0 7454 10 0 640 -175 152 476 -9 2030 2270 10 522 0 -176 176 470 -14 0 7455 10 585 0 -177 195 450 16 0 7480 10 0 60 -178 466 149 -29 0 7449 10 363 0 -179 221 269 14 0 7653 10 0 417 -180 105 137 -13 0 7504 10 305 0 -181 284 319 -14 3207 3447 10 890 0 -182 41 120 -19 2724 2964 10 581 0 -183 263 418 -8 0 7519 10 221 0 -184 218 271 16 0 7649 10 0 54 -185 365 119 -9 0 7513 10 898 0 -186 89 322 21 0 7511 10 0 452 -187 180 283 23 0 7610 10 0 36 -188 385 17 -36 3175 3415 10 488 0 -189 401 314 -15 3846 4086 10 989 0 -190 245 176 20 4879 5119 10 0 888 -191 251 238 -27 0 7675 10 612 0 -192 139 438 -28 0 7469 10 758 0 -193 236 126 23 0 7563 10 0 886 -194 61 441 27 2115 2355 10 0 516 -195 405 454 11 0 7431 10 0 18 -196 111 392 18 0 7489 10 0 627 -197 373 421 -1 0 7477 10 747 0 -198 247 443 17 0 7494 10 0 501 -199 322 406 17 0 7516 10 0 1 -200 412 478 -30 3779 4019 10 251 0 -201 374 346 27 0 7531 10 0 727 -202 122 422 -27 0 7473 10 876 0 -203 261 359 10 0 7578 10 0 832 -204 173 182 25 291 531 10 0 579 -205 398 341 -20 0 7514 10 904 0 -206 413 127 28 0 7483 10 0 369 -207 325 311 -36 5229 5469 10 436 0 -208 80 357 -16 2062 2302 10 561 0 -209 67 378 26 0 7464 10 0 780 -210 216 341 -31 0 7590 10 875 0 -211 498 457 15 0 7364 10 0 112 -212 44 344 12 0 7461 10 0 811 -213 352 481 -20 5079 5319 10 921 0 -214 237 420 15 0 7517 10 0 950 -215 389 43 21 0 7438 10 0 500 -216 292 136 -11 0 7566 10 98 0 -217 426 38 -17 0 7412 10 838 0 -218 245 461 8 0 7476 10 0 95 -219 415 253 21 0 7522 10 0 733 -220 298 264 36 80 320 10 0 796 -221 307 412 8 0 7516 10 0 183 -222 53 204 -1 0 7485 10 140 0 -223 480 152 -34 0 7437 10 552 0 -224 262 97 17 0 7534 10 0 574 -225 83 169 -17 0 7502 10 591 0 -226 377 432 -23 0 7466 10 935 0 -227 390 249 21 0 7547 10 0 404 -228 132 479 11 910 1150 10 0 569 -229 359 246 18 0 7578 10 0 116 -230 314 205 -18 6047 6287 10 779 0 -231 124 448 -33 0 7453 10 974 0 -232 0 188 -23 0 7430 10 938 0 -233 343 166 28 3444 3684 10 0 812 -234 482 141 -11 3983 4223 10 450 0 -235 162 306 22 417 657 10 0 996 -236 24 71 -15 0 7399 10 868 0 -237 188 119 -6 0 7543 10 473 0 -238 100 85 14 0 7465 10 0 859 -239 103 177 -22 2446 2686 10 349 0 -240 26 67 15 0 7398 10 0 138 -241 164 332 -8 0 7569 10 144 0 -242 385 285 13 3412 3652 10 0 730 -243 209 68 -9 0 7501 10 850 0 -244 149 341 -8 0 7552 10 124 0 -245 415 95 -18 0 7461 10 446 0 -246 167 488 17 940 1180 10 0 13 -247 413 493 26 4813 5053 10 0 641 -248 439 222 22 0 7496 10 0 361 -249 150 484 16 0 7433 10 0 787 -250 299 353 34 0 7573 10 0 301 -251 273 300 30 0 7632 10 0 200 -252 402 277 -2 0 7533 10 648 0 -253 239 15 -3 0 7452 10 518 0 -254 363 225 -19 3363 3603 10 987 0 -255 65 343 -13 0 7480 10 946 0 -256 351 60 15 0 7472 10 0 402 -257 60 246 -11 0 7497 10 498 0 -258 144 35 26 0 7448 10 0 52 -259 463 253 -14 4128 4368 10 943 0 -260 332 382 -30 0 7532 10 269 0 -261 408 318 15 0 7515 10 0 664 -262 452 206 -16 0 7481 10 105 0 -263 471 368 -13 0 7437 10 573 0 -264 93 490 2 1457 1697 10 0 768 -265 241 402 11 0 7535 10 0 435 -266 60 231 32 0 7497 10 0 375 -267 172 66 -17 0 7488 10 507 0 -268 404 207 -17 0 7528 10 670 0 -269 286 356 30 328 568 10 0 260 -270 489 338 -19 5529 5769 10 577 0 -271 334 481 -13 0 7442 10 682 0 -272 26 442 -13 0 7392 10 764 0 -273 226 175 23 0 7609 10 0 136 -274 488 3 3 0 7344 10 0 127 -275 178 150 33 0 7564 10 0 37 -276 371 423 -9 0 7476 10 159 0 -277 5 224 -18 0 7441 10 536 0 -278 94 344 -28 2669 2909 10 919 0 -279 153 235 10 0 7589 10 0 497 -280 12 367 -25 1243 1483 10 292 0 -281 217 357 -30 0 7576 10 533 0 -282 255 487 19 0 7450 10 0 593 -283 149 214 -25 0 7580 10 80 0 -284 169 305 -2 0 7590 10 699 0 -285 487 446 -23 0 7380 10 817 0 -286 267 374 23 0 7562 10 0 539 -287 360 294 -11 0 7569 10 848 0 -288 185 431 -25 0 7495 10 813 0 -289 325 210 15 0 7602 10 0 679 -290 175 352 -7 6600 6840 10 464 0 -291 76 462 18 0 7413 10 0 315 -292 19 273 25 0 7455 10 0 280 -293 72 227 25 0 7508 10 0 43 -294 213 283 -13 0 7638 10 21 0 -295 130 140 -26 0 7525 10 487 0 -296 274 442 17 0 7494 10 0 346 -297 337 41 -21 0 7461 10 81 0 -298 372 39 10 0 7444 10 0 969 -299 269 112 19 0 7548 10 0 738 -300 224 56 13 0 7492 10 0 2 -301 340 416 -34 1224 1464 10 250 0 -302 13 214 -16 5354 5594 10 611 0 -303 230 320 -17 4708 4948 10 471 0 -304 6 196 20 0 7438 10 0 629 -305 87 3 13 0 7392 10 0 180 -306 133 202 33 0 7561 10 0 613 -307 235 316 -23 2563 2803 10 372 0 -308 435 180 37 0 7490 10 0 353 -309 173 65 12 1734 1974 10 0 447 -310 245 42 -18 2129 2369 10 376 0 -311 384 149 18 0 7520 10 0 408 -312 51 286 14 0 7485 10 0 438 -313 267 290 15 54 294 10 0 551 -314 453 318 -15 0 7473 10 73 0 -315 189 402 -18 0 7524 10 291 0 -316 210 276 -21 0 7640 10 790 0 -317 120 261 -19 3113 3353 10 400 0 -318 35 263 -9 0 7472 10 869 0 -319 429 59 9 1775 2015 10 0 100 -320 330 308 -12 0 7589 10 479 0 -321 58 391 16 3469 3709 10 0 377 -322 260 472 -26 4084 4324 10 616 0 -323 217 333 -21 0 7598 10 728 0 -324 335 46 -24 0 7466 10 141 0 -325 198 85 28 990 1230 10 0 769 -326 138 28 23 4326 4566 10 0 994 -327 29 336 22 0 7450 10 0 330 -328 200 27 -24 0 7459 10 765 0 -329 157 269 31 0 7593 10 0 469 -330 177 404 -22 0 7517 10 327 0 -331 202 28 22 0 7460 10 0 83 -332 366 334 -18 0 7544 10 96 0 -333 149 458 13 0 7456 10 0 168 -334 481 454 14 0 7379 10 0 434 -335 377 385 -18 3405 3645 10 155 0 -336 217 207 -25 0 7633 10 932 0 -337 96 346 26 0 7506 10 0 858 -338 224 320 36 5075 5315 10 0 896 -339 206 97 33 1732 1972 10 0 905 -340 438 127 -27 0 7463 10 367 0 -341 494 468 -4 1350 1590 10 164 0 -342 494 165 -22 2357 2597 10 908 0 -343 5 281 -43 0 7441 10 804 0 -344 441 60 -22 0 7418 10 478 0 -345 14 232 -17 0 7451 10 835 0 -346 288 439 -17 0 7495 10 296 0 -347 420 224 10 0 7516 10 0 871 -348 267 162 -6 0 7598 10 844 0 -349 195 273 22 118 358 10 0 239 -350 233 230 20 0 7661 10 0 610 -351 382 360 26 0 7516 10 0 846 -352 406 460 -22 2817 3057 10 982 0 -353 499 316 -37 0 7430 10 308 0 -354 246 407 12 0 7530 10 0 58 -355 283 454 -17 0 7481 10 33 0 -356 426 231 -13 4054 4294 10 70 0 -357 432 2 20 1806 2046 10 0 631 -358 404 439 3 0 7444 10 0 614 -359 397 477 13 0 7417 10 0 560 -360 44 140 -23 3413 3653 10 991 0 -361 330 138 -22 0 7550 10 248 0 -362 39 153 -25 0 7455 10 406 0 -363 397 153 29 3470 3710 10 0 178 -364 226 316 -30 0 7617 10 795 0 -365 354 156 20 0 7547 10 0 580 -366 201 66 14 0 7497 10 0 165 -367 389 156 27 2802 3042 10 0 340 -368 134 211 35 422 662 10 0 142 -369 386 154 -28 0 7521 10 206 0 -370 335 99 25 0 7514 10 0 590 -371 356 256 19 0 7581 10 0 624 -372 240 362 23 0 7575 10 0 307 -373 412 100 1 0 7467 10 0 15 -374 394 322 12 0 7527 10 0 716 -375 48 150 -32 0 7462 10 266 0 -376 225 121 18 0 7556 10 0 310 -377 102 422 -16 0 7461 10 321 0 -378 339 41 -14 0 7460 10 467 0 -379 440 201 -2 0 7491 10 642 0 -380 411 379 -11 0 7481 10 726 0 -381 219 210 -21 0 7637 10 617 0 -382 250 441 5 0 7496 10 0 110 -383 210 29 -16 0 7463 10 59 0 -384 178 302 -16 3486 3726 10 694 0 -385 148 208 -18 0 7577 10 993 0 -386 225 369 -7 0 7566 10 976 0 -387 16 287 -11 0 7451 10 689 0 -388 450 416 25 2247 2487 10 0 555 -389 287 397 -26 0 7536 10 964 0 -390 285 247 -10 0 7652 10 19 0 -391 351 481 -26 1227 1467 10 481 0 -392 243 408 15 5675 5915 10 0 87 -393 137 377 -12 0 7518 10 855 0 -394 33 152 17 5220 5460 10 0 709 -395 68 303 -14 825 1065 10 482 0 -396 456 113 17 0 7440 10 0 717 -397 134 276 -24 0 7569 10 625 0 -398 26 221 28 0 7462 10 0 754 -399 79 257 26 3752 3992 10 0 7 -400 181 185 19 0 7593 10 0 317 -401 104 349 -10 3977 4217 10 448 0 -402 267 174 -15 0 7610 10 256 0 -403 475 267 -5 0 7462 10 3 0 -404 385 239 -21 3082 3322 10 227 0 -405 95 382 -17 865 1105 10 806 0 -406 67 190 25 0 7495 10 0 362 -407 32 94 14 3661 3901 10 0 535 -408 401 164 -18 0 7514 10 311 0 -409 376 113 8 0 7501 10 0 637 -410 409 255 23 0 7528 0 0 1006 -411 228 260 -9 6362 6602 10 562 0 -412 363 34 19 0 7444 10 0 856 -413 274 441 -13 0 7495 10 451 0 -414 146 188 6 0 7566 10 0 107 -415 212 186 -10 0 7613 10 41 0 -416 432 66 -15 0 7429 10 661 0 -417 83 300 -14 1939 2179 10 179 0 -418 51 89 -1 0 7432 10 89 0 -419 379 486 22 0 7419 10 0 713 -420 440 284 25 0 7494 10 0 511 -421 175 239 -18 0 7612 10 6 0 -422 282 1 18 4110 4350 10 0 94 -423 268 113 -4 0 7549 10 706 0 -424 480 131 5 0 7429 10 0 79 -425 429 67 16 0 7432 10 0 148 -426 162 301 16 0 7586 10 0 161 -427 281 96 1 0 7530 10 0 540 -428 495 199 -12 0 7437 10 78 0 -429 372 115 -14 0 7506 10 870 0 -430 396 83 -19 6286 6526 10 609 0 -431 239 486 -33 0 7451 10 984 0 -432 288 70 24 0 7504 10 0 829 -433 66 163 6 0 7484 10 0 463 -434 470 417 -14 0 7411 10 334 0 -435 226 423 -11 0 7513 10 265 0 -436 342 319 36 0 7572 10 0 207 -437 174 122 -35 0 7539 10 939 0 -438 49 353 -14 5724 5964 10 312 0 -439 448 495 40 0 7372 10 0 927 -440 13 465 31 0 7368 10 0 924 -441 489 159 29 5651 5891 10 0 885 -442 311 203 15 0 7610 10 0 739 -443 480 119 7 0 7423 10 0 559 -444 442 153 29 4695 4935 10 0 825 -445 148 462 -3 2847 3087 10 959 0 -446 233 87 18 950 1190 10 0 245 -447 323 34 -12 0 7459 10 309 0 -448 84 377 10 3645 3885 10 0 401 -449 292 32 14 0 7465 10 0 685 -450 418 75 11 1732 1972 10 0 234 -451 451 305 13 0 7479 10 0 413 -452 225 269 -21 0 7656 10 186 0 -453 272 420 -10 0 7516 10 24 0 -454 318 280 21 177 417 10 0 744 -455 250 57 -15 0 7494 10 113 0 -456 77 372 -7 0 7476 10 649 0 -457 385 58 -8 1559 1799 10 55 0 -458 44 496 -4 0 7367 10 992 0 -459 460 328 13 0 7463 10 0 604 -460 67 24 -16 0 7397 10 45 0 -461 91 27 14 0 7414 10 0 883 -462 360 284 19 2606 2846 10 0 944 -463 82 183 -6 4347 4587 10 433 0 -464 153 362 7 0 7539 10 0 290 -465 52 412 -25 0 7432 10 646 0 -466 32 191 5 2285 2525 10 0 470 -467 325 147 14 0 7560 10 0 378 -468 328 458 17 0 7465 10 0 854 -469 133 273 -31 357 597 10 329 0 -470 147 30 -5 4375 4615 10 466 0 -471 131 246 17 0 7568 10 0 303 -472 433 319 -10 5445 5685 10 956 0 -473 168 59 6 0 7480 10 0 237 -474 218 403 15 0 7531 10 0 567 -475 295 89 -15 0 7520 10 690 0 -476 118 314 -17 0 7541 10 77 0 -477 251 63 14 3890 4130 10 0 91 -478 388 44 22 0 7440 10 0 344 -479 381 328 12 0 7535 10 0 320 -480 132 32 18 0 7440 10 0 960 -481 334 403 26 578 818 10 0 391 -482 83 290 14 0 7516 10 0 395 -483 411 396 23 0 7470 10 0 722 -484 243 402 13 0 7535 10 0 572 -485 52 18 -24 0 7382 10 852 0 -486 265 0 -27 0 7437 10 491 0 -487 268 288 26 0 7645 10 0 295 -488 476 61 36 0 7393 10 0 188 -489 283 438 -29 0 7497 10 874 0 -490 191 215 17 154 394 10 0 118 -491 253 50 27 0 7487 10 0 486 -492 71 282 -32 0 7506 10 711 0 -493 297 304 4 0 7616 10 0 554 -494 244 368 -10 0 7569 10 752 0 -495 80 279 19 0 7515 10 0 980 -496 488 96 -30 0 7404 10 632 0 -497 142 30 -10 0 7442 10 279 0 -498 68 240 11 3118 3358 10 0 257 -499 193 138 30 0 7562 10 0 743 -500 451 62 -21 0 7412 10 215 0 -501 138 406 -17 4804 5044 10 198 0 -502 306 42 11 0 7472 10 0 582 -503 247 219 17 0 7656 10 0 643 -504 98 29 14 4126 4366 10 0 710 -505 102 6 3 0 7402 10 0 814 -506 142 360 -14 0 7533 10 827 0 -507 172 24 17 5749 5989 10 0 267 -508 352 241 5 3109 3349 10 0 634 -509 486 324 -25 0 7440 10 704 0 -510 133 455 25 0 7451 10 0 887 -511 440 292 -25 0 7493 10 420 0 -512 364 173 30 661 901 10 0 794 -513 442 289 25 0 7492 10 0 38 -514 48 412 7 0 7429 10 0 801 -515 344 70 24 4523 4763 10 0 67 -516 78 406 -27 3782 4022 10 194 0 -517 329 456 -10 0 7467 10 760 0 -518 157 38 3 0 7456 10 0 253 -519 374 260 27 0 7563 10 0 884 -520 297 283 -13 0 7630 10 72 0 -521 210 113 28 0 7545 10 0 606 -522 215 434 9 0 7500 10 0 175 -523 262 92 25 2462 2702 10 0 792 -524 140 108 29 0 7508 10 0 173 -525 235 108 12 0 7545 10 0 773 -526 210 133 15 0 7564 10 0 675 -527 25 53 -12 4020 4260 10 774 0 -528 339 113 -31 0 7524 10 541 0 -529 394 310 10 4334 4574 10 0 772 -530 126 391 19 0 7500 10 0 544 -531 343 34 -20 0 7452 10 538 0 -532 354 416 10 2657 2897 10 0 766 -533 202 391 30 2434 2674 10 0 281 -534 367 97 17 0 7495 10 0 763 -535 188 151 -14 0 7571 10 407 0 -536 111 178 18 0 7531 10 0 277 -537 456 157 -25 5760 6000 10 74 0 -538 441 7 20 0 7378 10 0 531 -539 270 337 -23 0 7598 10 286 0 -540 323 29 -1 4490 4730 10 427 0 -541 200 78 31 0 7508 10 0 528 -542 330 281 14 0 7602 10 0 666 -543 438 488 18 1249 1489 10 0 819 -544 161 416 -19 0 7499 10 530 0 -545 30 97 -3 4781 5021 10 918 0 -546 273 70 36 0 7506 10 0 119 -547 214 245 8 0 7651 10 0 76 -548 221 291 9 0 7637 10 0 583 -549 79 467 22 1346 1586 10 0 655 -550 423 315 -7 0 7503 10 719 0 -551 395 474 -15 0 7421 10 313 0 -552 481 207 34 0 7453 10 0 223 -553 199 203 20 0 7618 10 0 160 -554 497 483 -4 1354 1594 10 493 0 -555 449 428 -25 4927 5167 10 388 0 -556 100 266 5 0 7537 10 0 671 -557 214 274 -14 5416 5656 10 596 0 -558 16 68 -23 0 7391 10 967 0 -559 475 198 -7 3281 3521 10 443 0 -560 371 427 -13 0 7473 10 359 0 -561 62 375 16 1335 1575 10 0 208 -562 163 472 9 0 7449 10 0 411 -563 13 314 14 0 7442 10 0 587 -564 376 385 -21 0 7503 10 807 0 -565 231 29 -26 4845 5085 10 802 0 -566 89 358 -7 4929 5169 10 125 0 -567 331 356 -15 0 7554 10 474 0 -568 365 190 22 0 7558 10 0 167 -569 256 441 -11 0 7496 10 228 0 -570 120 37 -8 0 7438 10 169 0 -571 349 43 26 0 7458 10 0 793 -572 230 487 -13 0 7450 10 484 0 -573 489 457 13 0 7371 10 0 263 -574 341 72 -17 3159 3399 10 224 0 -575 181 441 25 0 7484 10 0 997 -576 306 229 10 0 7628 10 0 31 -577 492 326 19 4756 4996 10 0 270 -578 347 459 25 0 7457 10 0 90 -579 66 88 -25 0 7442 10 204 0 -580 272 234 -20 0 7660 10 365 0 -581 134 194 19 0 7559 10 0 182 -582 320 211 -11 0 7607 10 502 0 -583 214 311 -9 0 7617 10 548 0 -584 489 274 31 0 7447 10 0 82 -585 231 410 14 0 7526 10 0 176 -586 432 199 7 0 7498 10 0 50 -587 29 358 -14 0 7442 10 563 0 -588 62 236 29 2172 2412 10 0 963 -589 333 163 -13 4901 5141 10 157 0 -590 364 71 -25 0 7475 10 370 0 -591 125 65 17 0 7464 10 0 225 -592 429 476 -19 2233 2473 10 46 0 -593 161 275 -19 5327 5567 10 282 0 -594 365 274 14 350 590 10 0 680 -595 117 110 13 0 7494 0 0 1002 -596 166 345 14 0 7561 10 0 557 -597 345 146 -11 5696 5936 10 998 0 -598 324 99 10 0 7519 10 0 645 -599 72 477 46 0 7399 10 0 618 -600 487 320 21 0 7440 10 0 69 -601 120 17 -23 0 7421 10 784 0 -602 1 252 -19 0 7438 10 49 0 -603 303 186 10 0 7604 10 0 673 -604 428 302 -13 0 7502 10 459 0 -605 264 135 1 0 7572 10 0 32 -606 223 178 -28 0 7611 10 521 0 -607 174 347 -20 0 7564 10 889 0 -608 238 123 -13 0 7560 10 137 0 -609 187 61 19 2120 2360 10 0 430 -610 52 303 -20 0 7483 10 350 0 -611 89 185 16 0 7514 10 0 302 -612 341 59 27 0 7476 10 0 191 -613 89 65 -33 2821 3061 10 306 0 -614 495 355 -3 0 7421 10 358 0 -615 368 452 -27 2620 2860 10 99 0 -616 164 473 26 1125 1365 10 0 322 -617 171 34 21 0 7458 10 0 381 -618 114 460 -46 0 7437 10 599 0 -619 224 3 -31 0 7439 10 915 0 -620 472 57 -14 0 7393 10 26 0 -621 448 404 15 2336 2576 10 0 688 -622 390 120 -16 0 7496 10 985 0 -623 386 225 -31 0 7549 10 798 0 -624 301 239 -19 0 7635 10 371 0 -625 115 296 24 6055 6295 10 0 397 -626 69 266 12 0 7506 10 0 131 -627 115 395 -18 3201 3441 10 196 0 -628 68 53 -32 0 7419 10 891 0 -629 33 268 -20 0 7470 10 304 0 -630 450 45 24 1954 2194 10 0 923 -631 351 5 -20 0 7422 10 357 0 -632 351 148 30 0 7544 10 0 496 -633 80 458 30 0 7419 10 0 106 -634 60 5 -5 0 7377 10 508 0 -635 10 407 -31 1678 1918 10 866 0 -636 497 18 10 0 7349 10 0 27 -637 437 98 -8 0 7447 10 409 0 -638 130 494 -22 0 7416 10 750 0 -639 391 202 14 0 7539 10 0 152 -640 43 210 -8 0 7477 10 174 0 -641 381 457 -26 0 7443 10 247 0 -642 449 190 2 0 7480 10 0 379 -643 429 169 -17 3551 3791 10 503 0 -644 105 140 -2 0 7505 10 777 0 -645 282 10 -10 0 7445 10 598 0 -646 20 480 25 0 7362 10 0 465 -647 61 170 20 0 7482 10 0 12 -648 210 81 2 0 7514 10 0 252 -649 87 311 7 0 7513 10 0 456 -650 309 29 -13 0 7459 10 64 0 -651 397 57 17 0 7445 10 0 676 -652 337 232 -29 6222 6462 10 28 0 -653 262 369 -24 0 7568 10 170 0 -654 41 232 -21 0 7478 10 966 0 -655 69 414 -22 4993 5233 10 549 0 -656 149 98 -22 0 7505 10 826 0 -657 207 487 4 0 7447 0 0 1007 -658 366 260 -15 0 7571 10 937 0 -659 497 54 -18 0 7372 10 783 0 -660 210 379 12 0 7552 10 0 677 -661 437 19 15 0 7390 10 0 416 -662 181 260 23 0 7618 10 0 815 -663 125 61 -10 2387 2627 10 778 0 -664 368 311 -15 0 7555 10 261 0 -665 80 400 10 5725 5965 10 0 111 -666 75 118 -14 0 7468 10 542 0 -667 171 303 -12 0 7592 10 1000 0 -668 80 251 -28 0 7517 10 782 0 -669 455 168 -14 0 7467 10 751 0 -670 215 129 17 0 7562 10 0 268 -671 179 318 -5 0 7589 10 556 0 -672 187 73 18 0 7500 0 0 1005 -673 394 47 -10 0 7439 10 603 0 -674 31 175 -15 0 7456 10 734 0 -675 339 144 -15 0 7549 10 526 0 -676 492 34 -17 0 7363 10 651 0 -677 387 349 -12 0 7518 10 660 0 -678 142 372 -18 0 7525 10 57 0 -679 291 213 -15 4971 5211 10 289 0 -680 421 387 -14 0 7468 10 594 0 -681 274 403 17 0 7533 10 0 880 -682 434 359 13 0 7474 10 0 271 -683 257 57 18 0 7494 10 0 718 -684 428 202 24 0 7503 10 0 809 -685 355 174 -14 0 7558 10 449 0 -686 46 389 -16 0 7441 10 108 0 -687 44 440 -17 0 7407 10 735 0 -688 491 369 -15 2858 3098 10 621 0 -689 33 286 11 0 7468 10 0 387 -690 351 128 15 0 7529 10 0 475 -691 485 428 -25 0 7393 10 968 0 -692 273 149 -14 0 7584 10 753 0 -693 447 184 -9 0 7480 10 834 0 -694 386 245 16 0 7551 10 0 384 -695 323 77 -24 5560 5800 10 40 0 -696 21 70 -16 0 7396 10 697 0 -697 9 101 16 0 7404 10 0 696 -698 71 304 -13 2696 2936 10 103 0 -699 43 360 2 0 7453 10 0 284 -700 396 417 13 0 7466 10 0 122 -701 158 24 -15 0 7443 10 842 0 -702 164 320 -15 0 7577 10 132 0 -703 195 386 -11 0 7541 10 47 0 -704 306 235 25 112 352 10 0 509 -705 66 314 -16 0 7493 10 979 0 -706 95 64 4 3004 3244 10 0 423 -707 348 348 23 0 7549 10 0 121 -708 495 83 32 0 7391 10 0 877 -709 61 214 -17 0 7495 10 394 0 -710 240 240 -14 6738 6978 10 504 0 -711 140 137 32 2219 2459 10 0 492 -712 242 106 28 0 7543 10 0 830 -713 392 491 -22 0 7408 10 419 0 -714 342 481 -20 5700 5940 10 882 0 -715 478 300 12 0 7454 0 0 1004 -716 299 285 -12 4955 5195 10 374 0 -717 481 84 -17 0 7403 10 396 0 -718 271 128 -18 0 7564 10 683 0 -719 484 224 7 0 7452 10 0 550 -720 441 177 -13 0 7483 10 761 0 -721 46 163 -28 0 7466 10 8 0 -722 493 493 -23 0 7344 10 483 0 -723 253 74 20 0 7511 10 0 903 -724 390 34 7 0 7430 10 0 776 -725 374 306 -8 0 7551 10 34 0 -726 436 295 11 0 7496 10 0 380 -727 371 315 -27 0 7550 10 201 0 -728 27 464 21 0 7378 10 0 323 -729 3 471 13 0 7356 10 0 171 -730 418 269 -13 0 7518 10 242 0 -731 90 477 -13 0 7410 10 907 0 -732 141 426 23 0 7480 10 0 741 -733 418 251 -21 0 7519 10 219 0 -734 57 183 15 0 7483 10 0 674 -735 29 462 17 0 7381 10 0 687 -736 55 318 -24 0 7481 10 781 0 -737 18 24 -14 2453 2693 10 147 0 -738 263 153 -19 0 7590 10 299 0 -739 289 220 -15 0 7638 10 442 0 -740 84 255 13 0 7521 10 0 978 -741 159 299 -23 0 7584 10 732 0 -742 485 104 -19 0 7411 10 803 0 -743 178 135 -30 0 7552 10 499 0 -744 389 255 -21 0 7548 10 454 0 -745 457 280 -19 3939 4179 10 913 0 -746 171 24 -8 0 7448 10 133 0 -747 330 371 1 0 7542 10 0 197 -748 10 237 19 0 7447 10 0 823 -749 458 213 22 0 7476 10 0 151 -750 257 391 22 0 7546 10 0 638 -751 482 184 14 4367 4607 10 0 669 -752 222 331 10 2098 2338 10 0 494 -753 332 5 14 4071 4311 10 0 692 -754 47 208 -28 0 7480 10 398 0 -755 489 437 29 0 7384 10 0 873 -756 165 59 -15 0 7478 10 166 0 -757 211 446 -14 0 7488 10 149 0 -758 225 488 28 0 7448 10 0 192 -759 355 485 10 0 7430 10 0 23 -760 441 374 10 833 1073 10 0 517 -761 399 175 13 0 7521 10 0 720 -762 103 464 -32 0 7428 10 129 0 -763 244 13 -17 3992 4232 10 534 0 -764 51 360 13 0 7460 10 0 272 -765 44 115 24 0 7441 10 0 328 -766 312 453 -10 0 7475 10 532 0 -767 64 198 10 0 7494 10 0 62 -768 67 451 -2 0 7416 10 264 0 -769 371 71 -28 0 7471 10 325 0 -770 439 156 -19 0 7476 10 25 0 -771 105 474 -19 0 7421 10 941 0 -772 366 288 -10 0 7565 10 529 0 -773 415 207 -12 3540 3780 10 525 0 -774 58 39 12 0 7402 10 0 527 -775 197 202 29 0 7616 10 0 986 -776 442 5 -7 0 7376 10 724 0 -777 71 12 2 0 7390 10 0 644 -778 74 215 10 0 7508 10 0 663 -779 347 192 18 5893 6133 10 0 230 -780 178 420 -26 0 7503 10 209 0 -781 186 135 24 0 7556 10 0 736 -782 176 199 28 0 7598 10 0 668 -783 438 5 18 0 7379 10 0 659 -784 150 68 23 0 7480 10 0 601 -785 185 434 -4 0 7492 10 799 0 -786 215 79 5 0 7513 10 0 928 -787 177 486 -16 6329 6569 10 249 0 -788 49 437 7 1650 1890 10 0 822 -789 100 66 15 0 7450 10 0 146 -790 35 344 21 0 7453 10 0 316 -791 433 447 20 3117 3357 10 0 66 -792 372 97 -25 0 7492 10 523 0 -793 344 203 -26 0 7582 10 571 0 -794 423 170 -30 1992 2232 10 512 0 -795 171 188 30 2422 2662 10 0 364 -796 64 5 -36 0 7380 10 220 0 -797 371 163 -15 0 7538 10 952 0 -798 398 210 31 0 7534 10 0 623 -799 48 437 4 0 7412 10 0 785 -800 392 1 -10 0 7401 10 14 0 -801 195 464 -7 0 7467 10 514 0 -802 211 248 26 0 7648 10 0 565 -803 293 228 19 73 313 10 0 742 -804 23 235 43 0 7460 10 0 343 -805 213 185 -8 0 7613 10 981 0 -806 172 292 17 308 548 10 0 405 -807 228 287 21 0 7644 10 0 564 -808 387 394 -23 0 7489 10 836 0 -809 374 232 -24 0 7562 10 684 0 -810 48 366 29 0 7455 10 0 933 -811 44 311 -12 1570 1810 10 212 0 -812 447 272 -28 0 7489 10 233 0 -813 132 477 25 0 7432 10 0 288 -814 80 117 -3 0 7472 10 505 0 -815 11 403 -23 1312 1552 10 662 0 -816 144 220 -32 0 7577 10 951 0 -817 473 491 23 0 7359 10 0 285 -818 210 219 7 0 7637 10 0 906 -819 452 484 -18 0 7378 10 543 0 -820 365 28 9 0 7437 10 0 862 -821 498 456 -7 0 7365 10 128 0 -822 84 453 -7 4832 5072 10 788 0 -823 91 427 -19 0 7450 10 748 0 -824 178 72 -23 2967 3207 10 29 0 -825 409 155 -29 0 7502 10 444 0 -826 132 151 22 0 7533 10 0 656 -827 136 430 14 0 7474 10 0 506 -828 292 104 26 0 7536 0 0 1008 -829 443 167 -24 0 7477 10 432 0 -830 321 149 -28 0 7564 10 712 0 -831 235 13 27 0 7450 10 0 860 -832 166 440 -10 711 951 10 203 0 -833 112 433 29 0 7458 10 0 912 -834 452 172 9 0 7471 10 0 693 -835 37 281 17 0 7472 10 0 345 -836 414 378 23 1919 2159 10 0 808 -837 475 352 -8 0 7440 10 123 0 -838 400 71 17 0 7454 10 0 217 -839 286 244 -13 0 7651 10 975 0 -840 429 389 18 1636 1876 10 0 849 -841 92 76 4 0 7452 10 0 970 -842 124 111 15 0 7500 10 0 701 -843 268 458 24 0 7479 10 0 53 -844 352 63 6 4653 4893 10 0 348 -845 49 118 -8 0 7447 10 51 0 -846 398 329 -26 0 7520 10 351 0 -847 382 9 30 1027 1267 10 0 63 -848 229 322 11 0 7612 10 0 287 -849 279 355 -18 0 7579 10 840 0 -850 266 221 9 0 7654 10 0 243 -851 142 80 -24 0 7486 10 917 0 -852 359 287 24 0 7572 10 0 485 -853 482 104 -14 0 7413 10 75 0 -854 284 457 -17 5934 6174 10 468 0 -855 64 294 12 0 7496 10 0 393 -856 404 59 -19 0 7442 10 412 0 -857 68 160 21 0 7484 10 0 911 -858 211 411 -26 4526 4766 10 337 0 -859 30 155 -14 5062 5302 10 238 0 -860 240 34 -27 0 7471 10 831 0 -861 107 374 8 0 7498 10 0 895 -862 404 140 -9 0 7498 10 820 0 -863 436 467 -15 0 7402 10 897 0 -864 421 386 29 0 7469 10 0 163 -865 182 480 31 0 7448 10 0 139 -866 9 233 31 1165 1405 10 0 635 -867 110 251 23 1931 2171 10 0 955 -868 19 38 15 0 7374 10 0 236 -869 46 248 9 0 7483 10 0 318 -870 308 199 14 0 7610 10 0 429 -871 423 221 -10 0 7512 10 347 0 -872 313 391 -6 0 7533 10 999 0 -873 413 345 -29 4812 5052 10 755 0 -874 278 450 29 0 7486 10 0 489 -875 94 497 31 0 7395 10 0 210 -876 7 382 27 3022 3262 10 0 202 -877 493 111 -32 2104 2344 10 708 0 -878 392 87 23 0 7471 10 0 990 -879 13 394 -12 0 7410 10 983 0 -880 259 301 -17 0 7636 10 681 0 -881 351 233 -33 5631 5871 10 893 0 -882 313 493 20 0 7436 10 0 714 -883 65 62 -14 0 7424 10 461 0 -884 417 212 -27 0 7516 10 519 0 -885 450 194 -29 0 7480 10 441 0 -886 470 138 -23 0 7441 10 193 0 -887 190 267 -25 0 7625 10 510 0 -888 248 214 -20 5857 6097 10 190 0 -889 50 383 20 0 7447 10 0 607 -890 244 422 14 2091 2331 10 0 181 -891 60 29 32 0 7396 10 0 628 -892 5 445 30 0 7374 10 0 93 -893 490 276 33 0 7446 10 0 881 -894 441 100 -9 0 7445 10 68 0 -895 162 388 -8 0 7524 10 861 0 -896 244 277 -36 5145 5385 10 338 0 -897 406 408 15 0 7465 10 0 863 -898 265 240 9 18 258 10 0 185 -899 130 186 16 465 705 10 0 953 -900 382 110 24 0 7495 10 0 948 -901 142 14 -23 0 7428 10 117 0 -902 352 487 -20 0 7429 10 954 0 -903 307 52 -20 3622 3862 10 723 0 -904 418 399 20 0 7463 10 0 205 -905 196 56 -33 0 7486 10 339 0 -906 66 31 -7 0 7401 10 818 0 -907 90 496 13 0 7394 10 0 731 -908 480 136 22 0 7431 10 0 342 -909 65 82 -11 2898 3138 10 42 0 -910 48 293 -11 0 7481 10 71 0 -911 105 181 -21 0 7527 10 857 0 -912 215 282 -29 0 7640 10 833 0 -913 257 133 19 0 7570 10 0 745 -914 77 465 -22 0 7412 10 916 0 -915 43 135 31 0 7451 10 0 619 -916 27 444 22 0 7392 10 0 914 -917 357 290 24 0 7573 10 0 851 -918 38 15 3 0 7371 10 0 545 -919 80 337 28 0 7497 10 0 278 -920 36 451 -8 0 7394 10 88 0 -921 291 251 20 0 7646 10 0 213 -922 195 111 -13 0 7538 10 114 0 -923 383 17 -24 0 7419 10 630 0 -924 53 466 -31 0 7395 10 440 0 -925 114 102 21 0 7487 10 0 143 -926 350 199 -40 4746 4986 10 11 0 -927 405 349 -40 0 7504 10 439 0 -928 472 248 -5 0 7465 10 786 0 -929 333 293 27 2408 2648 10 0 158 -930 174 397 -36 4919 5159 10 134 0 -931 2 264 40 0 7439 10 0 150 -932 7 82 25 0 7392 10 0 336 -933 34 329 -29 0 7458 10 810 0 -934 158 179 -12 0 7571 10 22 0 -935 421 499 23 0 7385 10 0 226 -936 345 431 12 0 7483 10 0 172 -937 370 262 15 0 7567 10 0 658 -938 77 172 23 0 7498 10 0 232 -939 87 51 35 0 7430 10 0 437 -940 468 352 -8 0 7447 10 988 0 -941 63 420 19 0 7435 10 0 771 -942 347 184 15 0 7570 0 0 1003 -943 206 174 14 3139 3379 10 0 259 -944 209 212 -19 6051 6291 10 462 0 -945 466 362 15 0 7444 0 0 1001 -946 201 278 13 106 346 10 0 255 -947 206 172 29 3092 3332 10 0 961 -948 471 94 -24 0 7417 10 900 0 -949 331 134 -31 4435 4675 10 145 0 -950 274 261 -15 0 7661 10 214 0 -951 219 215 32 0 7641 10 0 816 -952 349 76 15 0 7487 10 0 797 -953 86 189 -16 0 7513 10 899 0 -954 336 493 20 0 7430 10 0 902 -955 7 194 -23 0 7438 10 867 0 -956 492 335 10 3253 3493 10 0 472 -957 248 386 22 0 7551 10 0 5 -958 463 406 -23 0 7423 10 156 0 -959 199 438 3 0 7493 10 0 445 -960 135 30 -18 0 7439 10 480 0 -961 447 267 -29 0 7490 10 947 0 -962 235 33 -19 0 7470 10 995 0 -963 63 155 -29 0 7478 10 588 0 -964 294 421 26 6242 6482 10 0 389 -965 318 99 -20 0 7522 10 971 0 -966 21 146 21 0 7436 10 0 654 -967 30 7 23 4694 4934 10 0 558 -968 410 399 25 875 1115 10 0 691 -969 405 187 -10 0 7520 10 298 0 -970 109 56 -4 0 7448 10 841 0 -971 212 47 20 0 7481 10 0 965 -972 479 387 -16 0 7421 10 162 0 -973 167 291 27 0 7595 10 0 126 -974 259 498 33 0 7439 10 0 231 -975 461 182 13 2456 2696 10 0 839 -976 277 428 7 0 7507 10 0 386 -977 290 328 7 515 755 10 0 85 -978 146 313 -13 4721 4961 10 740 0 -979 40 304 16 4519 4759 10 0 705 -980 56 268 -19 0 7493 10 495 0 -981 104 28 8 0 7422 10 0 805 -982 370 493 22 0 7416 10 0 352 -983 136 265 12 340 580 10 0 879 -984 247 306 33 104 344 10 0 431 -985 241 38 16 2067 2307 10 0 622 -986 180 162 -29 634 874 10 775 0 -987 253 118 19 0 7555 10 0 254 -988 413 391 8 0 7472 10 0 940 -989 380 350 15 3406 3646 10 0 189 -990 391 112 -23 0 7490 10 878 0 -991 86 199 23 0 7516 10 0 360 -992 91 326 4 0 7511 10 0 458 -993 287 256 18 37 277 10 0 385 -994 203 211 -23 0 7626 10 326 0 -995 79 80 19 0 7446 10 0 962 -996 32 319 -22 1542 1782 10 235 0 -997 167 445 -25 0 7476 10 575 0 -998 439 237 11 0 7498 10 0 597 -999 373 418 6 0 7479 10 0 872 -1000 26 342 12 0 7445 10 0 667 -1001 466 362 -15 0 7444 10 945 0 -1002 117 110 -13 0 7494 10 595 0 -1003 347 184 -15 0 7570 10 942 0 -1004 478 300 -12 0 7454 10 715 0 -1005 187 73 -18 0 7500 10 672 0 -1006 409 255 -23 0 7528 10 410 0 -1007 207 487 -4 0 7447 10 657 0 -1008 292 104 -26 0 7536 10 828 0 diff --git a/jsprit-instances/instances/lilim/1000/LR2109.txt b/jsprit-instances/instances/lilim/1000/LR2109.txt deleted file mode 100644 index 71c814f31..000000000 --- a/jsprit-instances/instances/lilim/1000/LR2109.txt +++ /dev/null @@ -1,1010 +0,0 @@ -250 1000 1 -0 250 250 0 0 7697 0 0 0 -1 228 399 14 2207 2603 10 0 501 -2 325 56 -21 3216 3275 10 116 0 -3 290 145 5 4884 5488 10 0 299 -4 340 291 22 1859 2025 10 0 726 -5 370 382 11 3444 3746 10 0 553 -6 273 255 18 5796 6260 0 0 1007 -7 36 301 21 758 1001 10 0 187 -8 117 178 28 4421 4637 10 0 42 -9 295 283 -23 3476 3791 10 707 0 -10 57 43 15 3935 4373 10 0 147 -11 436 123 40 788 1013 0 0 1004 -12 48 162 15 656 1201 0 0 1005 -13 222 499 7 3075 3807 10 0 930 -14 376 92 10 3896 4149 10 0 580 -15 437 90 -5 2143 2657 10 673 0 -16 3 23 -12 1396 1856 10 22 0 -17 94 40 24 4208 4457 10 0 418 -18 398 476 25 1534 1931 10 0 434 -19 307 249 10 5244 5888 10 0 912 -20 179 286 -26 1102 1747 10 476 0 -21 0 356 -8 4298 4511 10 124 0 -22 143 158 12 355 865 10 0 16 -23 413 476 -29 4656 4896 10 864 0 -24 371 488 10 2207 2575 10 0 560 -25 415 118 19 846 1007 10 0 708 -26 440 77 14 3454 3969 10 0 923 -27 261 201 -1 5941 6291 10 427 0 -28 490 286 29 2019 2279 10 0 320 -29 309 161 23 2064 2722 10 0 605 -30 39 162 -34 2112 2529 10 142 0 -31 361 178 5 3679 4221 10 0 58 -32 261 138 -9 2451 2616 10 850 0 -33 447 383 17 890 1012 10 0 819 -34 346 354 -17 3189 3471 10 199 0 -35 461 195 26 5426 5855 10 0 410 -36 187 263 35 64 470 10 0 638 -37 130 247 17 280 681 10 0 257 -38 328 491 -15 2638 2908 10 288 0 -39 161 276 8 435 752 10 0 954 -40 365 74 24 3287 3621 10 0 900 -41 168 109 -9 733 1021 10 986 0 -42 111 192 -28 4798 4918 10 8 0 -43 87 213 -10 2211 2914 10 279 0 -44 45 166 -6 4018 4209 10 473 0 -45 62 94 16 3590 4134 0 0 1001 -46 348 476 -14 4701 4993 10 827 0 -47 64 437 -32 3591 3875 10 129 0 -48 56 75 -19 5529 6092 10 609 0 -49 24 259 -16 1273 1808 10 108 0 -50 295 247 -23 5102 5446 10 679 0 -51 6 53 8 2207 2608 10 0 763 -52 15 11 -32 3792 3941 10 180 0 -53 179 497 -15 5481 5928 10 375 0 -54 67 352 -19 1388 1717 10 530 0 -55 317 45 -23 2330 3057 10 217 0 -56 40 278 -25 4362 4593 10 813 0 -57 33 278 18 5734 6283 10 0 710 -58 322 290 -5 5658 6294 10 31 0 -59 159 226 16 260 492 10 0 385 -60 208 445 -26 5232 5548 10 802 0 -61 453 360 -25 750 1098 10 968 0 -62 34 169 -6 1787 2209 10 433 0 -63 436 25 19 5038 5340 10 0 838 -64 393 98 13 2772 3368 10 0 724 -65 466 96 -5 5542 5643 10 676 0 -66 366 390 -36 5135 5530 10 301 0 -67 303 78 12 472 967 10 0 491 -68 374 116 9 2338 2479 10 0 844 -69 424 288 -19 4132 4447 10 961 0 -70 191 84 13 3319 3737 10 0 962 -71 59 276 11 3388 3871 10 0 919 -72 215 293 13 55 792 10 0 176 -73 343 276 15 151 622 10 0 586 -74 488 173 -11 4632 5170 10 928 0 -75 452 110 -14 1240 1602 10 639 0 -76 153 244 5 402 581 10 0 588 -77 176 200 17 2261 2400 10 0 143 -78 498 171 -22 4724 5447 10 496 0 -79 492 188 33 2897 2946 10 0 537 -80 177 156 25 581 877 10 0 527 -81 398 49 21 3015 3439 10 0 245 -82 497 296 14 2347 2673 10 0 529 -83 276 84 20 2674 2895 10 0 507 -84 128 113 22 1346 1676 10 0 789 -85 422 498 -7 2597 3059 10 977 0 -86 460 424 -20 5775 5981 10 791 0 -87 246 314 -15 5813 5870 10 757 0 -88 0 422 -30 3311 3378 10 633 0 -89 166 247 1 84 605 10 0 399 -90 311 422 -17 3839 4185 10 296 0 -91 392 95 -17 3039 3210 10 829 0 -92 460 117 14 1916 2363 10 0 148 -93 28 467 -22 5292 5569 10 686 0 -94 375 145 12 3761 3793 10 0 749 -95 240 255 -14 6386 6622 10 437 0 -96 440 436 18 3525 3731 10 0 848 -97 454 201 -24 5210 5349 10 917 0 -98 407 35 -17 5132 5295 10 620 0 -99 420 383 27 3856 4119 10 0 109 -100 264 180 -14 6495 7070 10 565 0 -101 440 294 -27 3572 4230 10 929 0 -102 500 228 -20 2983 3391 10 153 0 -103 144 331 -14 3509 4061 10 482 0 -104 98 2 -14 2227 2626 10 381 0 -105 461 186 -26 5717 6501 10 223 0 -106 68 450 -19 2438 2742 10 405 0 -107 153 192 -5 3370 3676 10 786 0 -108 34 239 16 763 1108 10 0 49 -109 465 367 -27 3937 4398 10 99 0 -110 208 488 -16 1776 2165 10 346 0 -111 93 413 17 678 1133 10 0 616 -112 371 332 14 1951 2405 10 0 285 -113 231 167 15 165 517 10 0 546 -114 179 75 -17 2844 3195 10 503 0 -115 196 489 23 3948 4413 10 0 964 -116 280 245 21 30 369 10 0 2 -117 108 37 -2 1908 2608 10 777 0 -118 1 101 -21 4874 5304 10 925 0 -119 420 80 24 4193 4701 10 0 430 -120 38 190 23 999 1399 10 0 602 -121 470 405 -23 3581 3946 10 836 0 -122 448 397 33 3404 3640 10 0 156 -123 471 427 -9 3110 3542 10 159 0 -124 146 376 8 743 1252 10 0 21 -125 12 358 -25 4714 5201 10 292 0 -126 175 422 -12 5571 6120 10 626 0 -127 297 131 -27 4493 4950 10 604 0 -128 457 492 7 1870 2315 10 0 688 -129 69 423 32 3099 3440 10 0 47 -130 97 288 -12 4980 5412 10 702 0 -131 172 314 -9 2195 2289 10 168 0 -132 170 347 15 1574 2032 10 0 462 -133 103 123 -32 1947 2090 10 951 0 -134 154 374 36 3590 4025 10 0 154 -135 318 497 21 3260 3690 10 0 226 -136 330 147 -19 3272 3636 10 987 0 -137 241 180 -22 6708 6969 10 331 0 -138 174 67 -11 4764 5433 10 502 0 -139 235 288 18 40 451 10 0 356 -140 94 192 1 4279 4484 10 0 414 -141 232 101 24 1283 1606 10 0 185 -142 28 180 34 1382 1822 10 0 30 -143 64 135 -17 3500 3566 10 77 0 -144 174 376 8 5457 6018 10 0 290 -145 293 174 31 159 540 10 0 721 -146 218 12 3 1980 2492 10 0 158 -147 110 122 -15 5849 6342 10 10 0 -148 459 53 -14 4298 4800 10 92 0 -149 173 474 14 5039 5361 10 0 959 -150 135 400 20 1194 1315 10 0 589 -151 497 266 -13 2949 3151 10 459 0 -152 380 194 3 2837 2992 10 0 963 -153 495 227 20 1273 1599 10 0 102 -154 268 351 -36 6518 7003 10 134 0 -155 213 399 18 873 1118 10 0 785 -156 448 414 -33 4668 5234 10 122 0 -157 327 139 13 4937 5241 10 0 597 -158 151 81 -3 6142 6442 10 146 0 -159 425 448 9 2961 3514 10 0 123 -160 92 259 4 1565 1750 10 0 210 -161 59 388 -26 2452 2970 10 337 0 -162 468 360 -12 854 1458 10 564 0 -163 332 459 35 1260 1809 10 0 936 -164 469 489 -3 2115 2448 10 358 0 -165 248 176 -14 5608 5723 10 753 0 -166 174 41 15 5250 5297 10 0 746 -167 343 205 -2 2803 3456 10 648 0 -168 154 392 9 561 811 10 0 131 -169 92 18 -13 4368 4745 10 429 0 -170 250 328 24 843 1266 10 0 957 -171 88 484 5 5888 6158 10 0 202 -172 360 488 -30 1175 1470 10 269 0 -173 156 65 -24 4049 4369 10 310 0 -174 18 225 8 2582 3069 10 0 931 -175 152 476 -29 2058 2242 10 833 0 -176 176 470 -13 2041 2452 10 72 0 -177 195 450 -22 5809 6198 10 762 0 -178 466 149 -17 4524 5085 10 396 0 -179 221 269 14 4718 5525 10 0 184 -180 105 137 32 1624 2114 10 0 52 -181 284 319 17 3125 3529 10 0 338 -182 41 120 22 2759 2928 10 0 909 -183 263 418 25 833 1514 10 0 902 -184 218 271 -14 6219 6490 10 179 0 -185 365 119 -24 1325 1849 10 141 0 -186 89 322 -27 3904 4381 10 318 0 -187 180 283 -21 2886 3183 10 7 0 -188 385 17 -10 3084 3507 10 298 0 -189 401 314 25 3745 4186 10 0 336 -190 245 176 -33 4840 5157 10 685 0 -191 251 238 27 12 330 10 0 325 -192 139 438 -9 811 1021 10 548 0 -193 236 126 23 333 666 10 0 521 -194 61 441 27 2128 2342 10 0 646 -195 405 454 -10 5115 5428 10 760 0 -196 111 392 -15 4647 4825 10 858 0 -197 373 421 21 927 1092 10 0 334 -198 247 443 17 1078 1685 10 0 614 -199 322 406 17 3268 3487 10 0 34 -200 412 478 -25 3754 4044 10 388 0 -201 374 346 27 1632 1856 10 0 332 -202 122 422 -5 5590 6184 10 171 0 -203 261 359 -25 188 688 10 880 0 -204 173 182 25 102 783 10 0 422 -205 398 341 -15 3718 3915 10 989 0 -206 413 127 -25 3339 3426 10 428 0 -207 325 311 22 5174 5524 10 0 520 -208 80 357 -19 2028 2336 10 456 0 -209 67 378 -13 1680 2204 10 946 0 -210 216 341 -4 2380 2972 10 160 0 -211 498 457 15 3444 3981 10 0 787 -212 44 344 -23 3981 4775 10 732 0 -213 352 481 -19 5087 5311 10 384 0 -214 237 420 15 5122 5672 10 0 874 -215 389 43 21 1346 1939 10 0 376 -216 292 136 28 2918 3447 10 0 947 -217 426 38 23 2299 2691 10 0 55 -218 245 461 8 2590 2725 10 0 453 -219 415 253 21 1367 1686 10 0 664 -220 298 264 36 50 597 10 0 809 -221 307 412 -19 1413 1936 10 517 0 -222 53 204 8 4157 4403 10 0 767 -223 480 152 26 3908 4385 10 0 105 -224 262 97 17 3628 4069 10 0 486 -225 83 169 -23 3003 3329 10 938 0 -226 377 432 -21 3277 3494 10 135 0 -227 390 249 21 2081 2693 10 0 303 -228 132 479 -12 830 1231 10 832 0 -229 359 246 -34 5531 5972 10 969 0 -230 314 205 -14 5883 6452 10 467 0 -231 124 448 6 1257 1812 10 0 699 -232 0 188 26 3578 3998 10 0 394 -233 343 166 28 3269 3858 10 0 642 -234 482 141 14 3862 4345 10 0 751 -235 162 306 22 338 735 10 0 815 -236 24 71 11 1170 1719 10 0 480 -237 188 119 44 3621 4298 10 0 452 -238 100 85 14 1250 1678 10 0 701 -239 103 177 28 2448 2683 10 0 362 -240 26 67 -21 5069 5585 10 805 0 -241 164 332 19 5034 5324 10 0 994 -242 385 285 -16 3348 3716 10 561 0 -243 209 68 -3 6076 6589 10 518 0 -244 149 341 6 1541 1811 10 0 779 -245 415 95 -21 4521 5013 10 81 0 -246 167 488 17 987 1133 10 0 329 -247 413 493 -15 4679 5186 10 680 0 -248 439 222 22 3781 4175 10 0 259 -249 150 484 -14 2306 2816 10 890 0 -250 299 353 34 139 774 10 0 573 -251 273 300 30 55 481 10 0 439 -252 402 277 -12 5641 5986 10 554 0 -253 239 15 -16 2380 2571 10 985 0 -254 363 225 35 3189 3778 10 0 733 -255 65 343 38 625 1154 10 0 426 -256 351 60 15 838 963 10 0 416 -257 60 246 -17 641 879 10 37 0 -258 144 35 26 875 1042 10 0 939 -259 463 253 -22 4128 4368 10 248 0 -260 332 382 -12 3879 4325 10 354 0 -261 408 318 15 2432 2833 10 0 681 -262 452 206 -7 1946 2111 10 719 0 -263 471 368 19 1503 2041 10 0 935 -264 93 490 2 1417 1736 10 0 979 -265 241 402 11 4038 4280 10 0 585 -266 60 231 32 4020 4307 10 0 689 -267 172 66 -32 5248 5294 10 497 0 -268 404 207 -5 3543 3861 10 872 0 -269 286 356 30 375 521 10 0 172 -270 489 338 -18 5551 5747 10 773 0 -271 334 481 32 1280 1483 10 0 865 -272 26 442 -20 5082 5790 10 889 0 -273 226 175 -19 6536 7134 10 995 0 -274 488 3 3 1396 1929 10 0 357 -275 178 150 -30 2384 2788 10 795 0 -276 371 423 10 579 1110 10 0 600 -277 5 224 -10 4127 4430 10 778 0 -278 94 344 -26 2660 2917 10 417 0 -279 153 235 10 223 562 10 0 43 -280 12 367 -5 1194 1532 10 316 0 -281 217 357 -15 5623 5857 10 392 0 -282 255 487 19 1388 1915 10 0 419 -283 149 214 7 1888 2088 10 0 781 -284 169 305 21 645 769 10 0 879 -285 487 446 -14 5131 5710 10 112 0 -286 267 374 23 2113 2812 10 0 322 -287 360 294 -21 5621 5841 10 926 0 -288 185 431 15 1405 1811 10 0 38 -289 325 210 -34 3685 3902 10 552 0 -290 175 352 -8 6599 6841 10 144 0 -291 76 462 18 3711 4057 10 0 768 -292 19 273 25 3619 4633 10 0 125 -293 72 227 25 2143 2488 10 0 498 -294 213 283 -15 5734 6154 10 883 0 -295 130 140 -20 510 1163 10 350 0 -296 274 442 17 4044 4607 10 0 90 -297 337 41 8 3837 4301 10 0 878 -298 372 39 10 2809 3099 10 0 188 -299 269 112 -5 4875 5346 10 3 0 -300 224 56 -18 4607 5005 10 901 0 -301 340 416 36 1180 1509 10 0 66 -302 13 214 -25 5261 5687 10 406 0 -303 230 320 -21 4681 4975 10 227 0 -304 6 196 20 4579 5166 10 0 911 -305 87 3 -3 5604 5981 10 505 0 -306 133 202 33 1642 2162 10 0 499 -307 235 316 -21 2538 2828 10 364 0 -308 435 180 37 787 1129 10 0 534 -309 173 65 -27 1596 2112 10 831 0 -310 245 42 24 2109 2390 10 0 173 -311 384 149 18 4663 5035 10 0 888 -312 51 286 -21 5837 5955 10 966 0 -313 267 290 15 43 458 10 0 873 -314 453 318 -9 1415 1695 10 871 0 -315 189 402 10 2114 2295 10 0 372 -316 210 276 5 82 300 10 0 280 -317 120 261 5 3081 3385 10 0 978 -318 35 263 27 949 1333 10 0 186 -319 429 59 9 1707 2084 10 0 612 -320 330 308 -29 4473 5010 10 28 0 -321 58 391 16 3372 3807 10 0 799 -322 260 472 -23 3933 4474 10 286 0 -323 217 333 26 1384 2025 10 0 533 -324 335 46 -14 5331 5522 10 477 0 -325 198 85 -27 875 1346 10 191 0 -326 138 28 -26 4250 4642 10 470 0 -327 29 336 22 1318 1455 10 0 471 -328 200 27 22 2051 2266 10 0 475 -329 157 269 -17 6177 6554 10 246 0 -330 177 404 17 4820 5397 10 0 474 -331 202 28 22 3599 3994 10 0 137 -332 366 334 -27 1370 2031 10 201 0 -333 149 458 13 4646 4785 10 0 655 -334 481 454 -21 1184 1500 10 197 0 -335 377 385 -16 3406 3644 10 694 0 -336 217 207 -25 5222 5958 10 189 0 -337 96 346 26 697 905 10 0 161 -338 224 320 -17 5066 5323 10 181 0 -339 206 97 -24 1757 1947 10 432 0 -340 438 127 -13 3576 4071 10 761 0 -341 494 468 31 1211 1728 10 0 352 -342 494 165 19 2354 2600 10 0 636 -343 5 281 -18 5405 5687 10 345 0 -344 441 60 -30 5660 6130 10 948 0 -345 14 232 18 1057 1504 10 0 343 -346 288 439 16 1020 1287 10 0 110 -347 420 224 10 1470 2082 10 0 567 -348 267 162 -10 5691 6022 10 603 0 -349 195 273 22 62 414 10 0 892 -350 233 230 20 26 422 10 0 295 -351 382 360 26 649 895 10 0 972 -352 406 460 -31 2792 3081 10 341 0 -353 499 316 18 2331 2763 10 0 468 -354 246 407 12 1060 1553 10 0 260 -355 283 454 -12 4949 5291 10 389 0 -356 426 231 -18 3917 4431 10 139 0 -357 432 2 -3 1755 2097 10 274 0 -358 404 439 3 862 1168 10 0 164 -359 397 477 -23 4722 5124 10 958 0 -360 44 140 11 3458 3608 10 0 390 -361 330 138 18 4134 4862 10 0 965 -362 39 153 -28 3008 3494 10 239 0 -363 397 153 -21 3528 3651 10 797 0 -364 226 316 21 183 378 10 0 307 -365 354 156 20 3268 3511 10 0 990 -366 201 66 14 4572 4882 10 0 830 -367 389 156 27 2770 3075 10 0 463 -368 134 211 -35 477 607 10 816 0 -369 386 154 -15 4366 4561 10 937 0 -370 335 99 -15 4736 5131 10 744 0 -371 356 256 19 238 611 10 0 812 -372 240 362 -10 5476 5954 10 315 0 -373 412 100 -5 2053 2174 10 500 0 -374 394 322 -18 4044 4275 10 993 0 -375 48 150 15 2544 2816 10 0 53 -376 225 121 -21 2824 3164 10 215 0 -377 102 422 23 873 1057 10 0 729 -378 339 41 -10 1536 2229 10 598 0 -379 440 201 -7 3434 3827 10 403 0 -380 411 379 25 4599 5068 0 0 1002 -381 219 210 14 50 558 10 0 104 -382 250 441 -12 2729 3436 10 413 0 -383 210 29 -7 4053 4473 10 818 0 -384 178 302 19 3351 3861 10 0 213 -385 148 208 -16 2002 2329 10 59 0 -386 225 369 38 278 694 10 0 508 -387 16 287 12 923 1363 10 0 811 -388 450 416 25 2310 2425 10 0 200 -389 287 397 12 2163 2472 10 0 355 -390 285 247 -11 4996 5322 10 360 0 -391 351 481 10 1260 1434 10 0 578 -392 243 408 15 5589 6001 10 0 281 -393 137 377 23 364 995 10 0 575 -394 33 152 -26 5034 5646 10 232 0 -395 68 303 -20 940 950 10 469 0 -396 456 113 17 4708 5230 10 0 178 -397 134 276 15 390 795 10 0 649 -398 26 221 -16 3845 4246 10 899 0 -399 79 257 -1 3592 4153 10 89 0 -400 181 185 19 6338 6693 0 0 1003 -401 104 349 20 3817 4376 10 0 464 -402 267 174 -36 6442 6623 10 695 0 -403 475 267 7 2950 3407 10 0 379 -404 385 239 21 2980 3425 10 0 511 -405 95 382 19 746 1223 10 0 106 -406 67 190 25 4673 4834 10 0 302 -407 32 94 14 3591 3971 10 0 922 -408 401 164 13 2427 2663 10 0 857 -409 376 113 8 2039 2194 10 0 862 -410 409 255 -26 5941 6358 10 35 0 -411 228 260 -20 6314 6651 10 506 0 -412 363 34 -13 1117 1181 10 792 0 -413 274 441 12 2660 3016 10 0 382 -414 146 188 -1 4895 5105 10 140 0 -415 212 186 -19 6799 7094 10 913 0 -416 432 66 -15 4318 4371 10 256 0 -417 83 300 26 1936 2181 10 0 278 -418 51 89 -24 4664 5122 10 17 0 -419 379 486 -19 2652 2841 10 282 0 -420 440 284 -13 3339 3595 10 703 0 -421 175 239 -8 132 475 10 547 0 -422 282 1 -25 4131 4328 10 204 0 -423 268 113 21 2517 3041 10 0 841 -424 480 131 5 2516 3105 10 0 894 -425 429 67 -2 2850 3128 10 770 0 -426 162 301 -38 6343 6681 10 255 0 -427 281 96 1 4248 4878 10 0 27 -428 495 199 25 1319 1495 10 0 206 -429 372 115 13 1354 1676 10 0 169 -430 396 83 -24 6325 6487 10 119 0 -431 239 486 -22 5913 6063 10 691 0 -432 288 70 24 607 945 10 0 339 -433 66 163 6 1419 1865 10 0 62 -434 470 417 -25 2998 3017 10 18 0 -435 226 423 15 451 1245 10 0 976 -436 342 319 36 260 661 10 0 927 -437 174 122 14 2182 2685 10 0 95 -438 49 353 -27 5756 5932 10 771 0 -439 448 495 -30 1363 1825 10 251 0 -440 13 465 -32 2900 3408 10 458 0 -441 489 159 29 5699 5843 10 0 886 -442 311 203 15 2863 3037 10 0 528 -443 480 119 -16 2460 2688 10 776 0 -444 442 153 29 4640 4990 10 0 881 -445 148 462 10 2776 3159 10 0 861 -446 233 87 18 909 1232 10 0 784 -447 323 34 -16 5209 5430 10 697 0 -448 84 377 10 3510 4021 10 0 780 -449 292 32 14 833 1120 10 0 647 -450 418 75 11 1770 1934 10 0 856 -451 451 305 13 582 1085 10 0 885 -452 225 269 -44 4864 5422 10 237 0 -453 272 420 -8 5502 5705 10 218 0 -454 318 280 21 98 496 10 0 513 -455 250 57 26 2821 3285 10 0 617 -456 77 372 19 653 1040 10 0 208 -457 385 58 -30 1488 1870 10 632 0 -458 44 496 32 1429 1905 10 0 440 -459 460 328 13 855 1018 10 0 151 -460 67 24 -17 3996 4272 10 591 0 -461 91 27 -12 4560 5013 10 718 0 -462 360 284 -15 2604 2849 10 132 0 -463 82 183 -27 4254 4679 10 367 0 -464 153 362 -20 4397 5012 10 401 0 -465 52 412 -36 5351 6016 10 635 0 -466 32 191 -24 2270 2540 10 674 0 -467 325 147 14 4540 5074 10 0 230 -468 328 458 -18 2943 3320 10 353 0 -469 133 273 20 254 699 10 0 395 -470 147 30 26 4300 4689 10 0 326 -471 131 246 -22 3184 3592 10 327 0 -472 433 319 -15 5506 5624 10 942 0 -473 168 59 6 1372 1676 10 0 44 -474 218 403 -17 5087 5586 10 330 0 -475 295 89 -22 2866 3189 10 328 0 -476 118 314 26 1233 1587 10 0 20 -477 251 63 14 3846 4173 10 0 324 -478 388 44 22 4188 4979 0 0 1008 -479 381 328 -31 2726 3132 10 584 0 -480 132 32 -11 3002 3393 10 236 0 -481 334 403 26 329 1067 10 0 543 -482 83 290 14 2236 2744 10 0 103 -483 411 396 23 3628 3853 10 0 577 -484 243 402 13 1554 1807 10 0 494 -485 52 18 28 3308 3668 10 0 967 -486 265 0 -17 3294 3994 10 224 0 -487 268 288 -4 4753 5502 10 725 0 -488 476 61 -19 1646 2064 10 739 0 -489 283 438 3 806 1165 10 0 766 -490 191 215 17 95 453 10 0 581 -491 253 50 -12 831 1094 10 67 0 -492 71 282 -14 2305 2948 10 668 0 -493 297 304 4 71 618 10 0 722 -494 244 368 -13 1581 1852 10 484 0 -495 80 279 -4 4535 4847 10 992 0 -496 488 96 22 4114 4535 10 0 78 -497 142 30 32 4903 5184 10 0 267 -498 68 240 -25 3117 3358 10 293 0 -499 193 138 -33 2321 3086 10 306 0 -500 451 62 5 1054 1324 10 0 373 -501 138 406 -14 4826 5021 10 1 0 -502 306 42 11 1889 2045 10 0 138 -503 247 219 17 31 445 10 0 114 -504 98 29 -16 4212 4281 10 628 0 -505 102 6 3 5764 6024 10 0 305 -506 142 360 20 5914 6462 10 0 411 -507 172 24 -20 5691 6046 10 83 0 -508 352 241 -38 3003 3456 10 386 0 -509 486 324 15 3113 3164 10 0 730 -510 133 455 25 3035 3548 10 0 741 -511 440 292 -21 3648 3993 10 404 0 -512 364 173 -19 707 854 10 803 0 -513 442 289 -21 530 1117 10 454 0 -514 48 412 7 4028 4349 10 0 618 -515 344 70 24 4481 4804 10 0 652 -516 78 406 15 3713 4091 10 0 916 -517 329 456 19 920 1192 10 0 221 -518 157 38 3 4009 4494 10 0 243 -519 374 260 -23 6952 7366 10 658 0 -520 297 283 -22 5268 5647 10 207 0 -521 210 113 -23 2620 3021 10 193 0 -522 215 434 9 770 891 10 0 569 -523 262 92 -18 2421 2742 10 672 0 -524 140 108 -11 4146 4543 10 558 0 -525 235 108 -15 4139 4618 10 526 0 -526 210 133 15 2424 3204 10 0 525 -527 25 53 -25 4091 4190 10 80 0 -528 339 113 -15 3064 3140 10 442 0 -529 394 310 -14 4290 4618 10 82 0 -530 126 391 19 992 1310 10 0 54 -531 343 34 -22 2721 3197 10 908 0 -532 354 416 10 2597 2957 10 0 727 -533 202 391 -26 2243 2866 10 323 0 -534 367 97 -37 3856 4167 10 308 0 -535 188 151 -28 5053 5440 10 712 0 -536 111 178 18 483 769 10 0 709 -537 456 157 -33 5627 6134 10 79 0 -538 441 7 -9 1334 1918 10 820 0 -539 270 337 -22 6973 7410 10 750 0 -540 323 29 -20 4238 4981 10 971 0 -541 200 78 31 3954 4108 10 0 670 -542 330 281 -8 5198 5566 10 808 0 -543 438 488 -26 1140 1598 10 481 0 -544 161 416 -11 3933 4277 10 627 0 -545 30 97 -18 4680 5121 10 634 0 -546 273 70 -15 2294 2780 10 113 0 -547 214 245 8 36 754 10 0 421 -548 221 291 9 58 430 10 0 192 -549 79 467 -46 1320 1612 10 599 0 -550 423 315 12 640 921 10 0 693 -551 395 474 26 1431 1785 10 0 956 -552 481 207 34 3112 3856 10 0 289 -553 199 203 -11 5848 5930 10 5 0 -554 497 483 12 1277 1671 10 0 252 -555 449 428 -18 4832 5263 10 840 0 -556 100 266 5 1700 2178 10 0 823 -557 214 274 -13 5303 5770 10 595 0 -558 16 68 11 1070 1302 10 0 524 -559 475 198 -23 3184 3617 10 592 0 -560 371 427 -10 3634 4152 10 24 0 -561 62 375 16 1316 1594 10 0 242 -562 163 472 -10 2460 2888 10 752 0 -563 13 314 14 861 1210 10 0 997 -564 376 385 12 630 847 10 0 162 -565 231 29 14 4956 4974 10 0 100 -566 89 358 -28 5016 5082 10 980 0 -567 331 356 -10 2666 3148 10 347 0 -568 365 190 22 5762 6178 10 0 870 -569 256 441 -9 613 915 10 522 0 -570 120 37 28 2919 3404 10 0 650 -571 349 43 26 634 1202 10 0 847 -572 230 487 -13 4375 4781 10 740 0 -573 489 457 -34 1252 1399 10 250 0 -574 341 72 9 3025 3533 10 0 903 -575 181 441 -23 2067 2388 10 393 0 -576 306 229 -24 5176 5507 10 814 0 -577 492 326 -23 4625 5127 10 483 0 -578 347 459 -10 1688 2268 10 391 0 -579 66 88 2 3093 3665 10 0 896 -580 272 234 -10 6359 6484 10 14 0 -581 134 194 -17 6481 6852 10 490 0 -582 320 211 -24 3804 4257 10 684 0 -583 214 311 14 70 549 10 0 924 -584 489 274 31 2114 2276 10 0 479 -585 231 410 -11 4836 5176 10 265 0 -586 432 199 -15 2418 2811 10 73 0 -587 29 358 23 2328 2678 10 0 735 -588 62 236 -5 2234 2349 10 76 0 -589 333 163 -20 4769 5273 10 150 0 -590 364 71 -30 5247 5661 10 645 0 -591 125 65 17 3014 3414 10 0 460 -592 429 476 23 2236 2470 10 0 559 -593 161 275 21 5304 5590 10 0 944 -594 365 274 14 166 774 10 0 720 -595 117 110 13 3819 4131 10 0 557 -596 166 345 -17 4568 4591 10 835 0 -597 345 146 -13 5702 5930 10 157 0 -598 324 99 10 1314 1510 10 0 378 -599 72 477 46 900 1408 10 0 549 -600 487 320 -10 3291 3690 10 276 0 -601 120 17 30 876 1477 10 0 906 -602 1 252 -23 929 1393 10 120 0 -603 303 186 10 5209 5744 10 0 348 -604 428 302 27 3907 4341 10 0 127 -605 264 135 -23 3219 3937 10 29 0 -606 223 178 20 4496 4715 10 0 839 -607 174 347 -22 4044 4193 10 910 0 -608 238 123 24 2889 3480 10 0 824 -609 187 61 19 2046 2433 10 0 48 -610 52 303 -12 1640 2009 10 1000 0 -611 89 185 -21 2282 2637 10 996 0 -612 341 59 -9 3117 3322 10 319 0 -613 89 65 16 2758 3125 10 0 656 -614 495 355 -17 4907 5159 10 198 0 -615 368 452 16 2692 2788 10 0 716 -616 164 473 -17 1055 1435 10 111 0 -617 171 34 -26 4373 4892 10 455 0 -618 114 460 -7 4301 4506 10 514 0 -619 224 3 10 2642 3001 10 0 860 -620 472 57 17 5161 5318 10 0 98 -621 448 404 -1 2302 2610 10 747 0 -622 390 120 -24 3855 4298 10 852 0 -623 386 225 -12 3535 3934 10 863 0 -624 301 239 31 52 819 10 0 798 -625 115 296 -2 5934 6417 10 933 0 -626 69 266 12 2858 3328 10 0 126 -627 115 395 11 3160 3482 10 0 544 -628 68 53 16 2851 3178 10 0 504 -629 33 268 18 2750 2936 10 0 869 -630 450 45 24 1988 2160 10 0 794 -631 351 5 -26 1808 2280 10 828 0 -632 351 148 30 1711 2098 10 0 457 -633 80 458 30 1430 1654 10 0 88 -634 60 5 18 3946 4524 10 0 545 -635 10 407 36 1649 1947 10 0 465 -636 497 18 -19 4436 4724 10 342 0 -637 437 98 -15 4309 4720 10 952 0 -638 130 494 -35 2847 3344 10 36 0 -639 391 202 14 304 887 10 0 75 -640 43 210 20 756 931 10 0 955 -641 381 457 28 1650 2236 10 0 950 -642 449 190 -28 4504 4735 10 233 0 -643 429 169 -23 3361 3981 10 817 0 -644 105 140 -37 394 1063 10 934 0 -645 282 10 30 5017 5196 10 0 590 -646 20 480 -27 2134 2548 10 194 0 -647 61 170 -14 3935 4232 10 449 0 -648 210 81 2 1548 1765 10 0 167 -649 87 311 -15 671 721 10 397 0 -650 309 29 -28 5191 5280 10 570 0 -651 397 57 -9 5903 6024 10 898 0 -652 337 232 -24 6227 6458 10 515 0 -653 262 369 -9 517 638 10 849 0 -654 41 232 -21 629 1134 10 953 0 -655 69 414 -13 4835 5392 10 333 0 -656 149 98 -16 4582 4858 10 613 0 -657 207 487 4 2679 2955 10 0 895 -658 366 260 23 5965 6316 10 0 519 -659 497 54 -17 3841 4104 10 717 0 -660 210 379 -12 2640 3150 10 983 0 -661 437 19 -9 3990 4241 10 834 0 -662 181 260 23 69 503 10 0 759 -663 125 61 -21 2316 2698 10 666 0 -664 368 311 -21 3563 3966 10 219 0 -665 80 400 10 5662 6028 10 0 667 -666 75 118 21 1408 1984 10 0 663 -667 171 303 -10 6375 6459 10 665 0 -668 80 251 14 1037 1512 10 0 492 -669 455 168 21 3385 3669 10 0 682 -670 215 129 -31 4302 4766 10 541 0 -671 179 318 -12 4372 4713 10 855 0 -672 187 73 18 1199 1258 10 0 523 -673 394 47 5 1075 1548 10 0 15 -674 31 175 24 832 1260 10 0 466 -675 339 144 13 4168 4743 10 0 949 -676 492 34 5 3006 3598 10 0 65 -677 387 349 9 282 1070 10 0 904 -678 142 372 18 455 848 10 0 914 -679 291 213 23 4908 5274 10 0 50 -680 421 387 15 3120 3409 10 0 247 -681 274 403 -15 3179 4040 10 261 0 -682 434 359 -21 5371 5886 10 669 0 -683 257 57 18 4678 5250 10 0 723 -684 428 202 24 3502 3849 10 0 582 -685 355 174 33 2816 3026 10 0 190 -686 46 389 22 908 1266 10 0 93 -687 44 440 24 2930 3500 10 0 973 -688 491 369 -7 2763 3194 10 128 0 -689 33 286 -32 6235 6253 10 266 0 -690 351 128 -11 4910 5236 10 998 0 -691 485 428 22 5734 6306 10 0 431 -692 273 149 -31 6026 6116 10 915 0 -693 447 184 -12 1658 1857 10 550 0 -694 386 245 16 1959 1993 10 0 335 -695 323 77 36 5468 5892 10 0 402 -696 21 70 15 2968 3321 10 0 796 -697 9 101 16 2497 2952 10 0 447 -698 71 304 19 2563 3070 10 0 714 -699 43 360 -6 3367 3435 10 231 0 -700 396 417 -17 3102 3499 10 846 0 -701 158 24 -14 2322 2688 10 238 0 -702 164 320 12 4241 4636 10 0 130 -703 195 386 13 383 790 10 0 420 -704 306 235 25 146 317 10 0 800 -705 66 314 26 684 875 10 0 736 -706 95 64 -12 2969 3279 10 851 0 -707 348 348 23 3655 3942 10 0 9 -708 495 83 -19 1759 1888 10 25 0 -709 61 214 -18 1210 1643 10 536 0 -710 240 240 -18 6749 6967 10 57 0 -711 140 137 32 1964 2713 10 0 842 -712 242 106 28 4875 5392 10 0 535 -713 392 491 -33 4398 4784 10 837 0 -714 342 481 -19 5793 5848 10 698 0 -715 478 300 -29 3339 3897 10 755 0 -716 299 285 -16 4791 5360 10 615 0 -717 481 84 17 1875 2290 10 0 659 -718 271 128 12 1124 1760 10 0 461 -719 484 224 7 1143 1373 10 0 262 -720 441 177 -14 3780 4350 10 594 0 -721 46 163 -31 3504 4024 10 145 0 -722 493 493 -4 3139 3832 10 493 0 -723 253 74 -18 5305 5616 10 683 0 -724 390 34 -13 4211 4392 10 64 0 -725 374 306 4 3967 4106 10 0 487 -726 436 295 -22 2037 2309 10 4 0 -727 371 315 -10 4659 4787 10 532 0 -728 27 464 -17 4945 5504 10 806 0 -729 3 471 -23 2649 3157 10 377 0 -730 418 269 -15 4771 4987 10 509 0 -731 90 477 18 858 1363 10 0 876 -732 141 426 23 1980 2392 10 0 212 -733 418 251 -35 4564 5131 10 254 0 -734 57 183 -30 4387 4536 10 754 0 -735 29 462 -23 5144 5453 10 587 0 -736 55 318 -26 948 1668 10 705 0 -737 18 24 -22 2375 2771 10 826 0 -738 263 153 12 1455 1965 10 0 943 -739 289 220 19 49 466 10 0 488 -740 84 255 13 1043 1333 10 0 572 -741 159 299 -25 4023 4222 10 510 0 -742 485 104 -14 3066 3409 10 793 0 -743 178 135 -12 6093 6137 10 774 0 -744 389 255 15 3085 3317 10 0 370 -745 457 280 -29 3988 4130 10 772 0 -746 171 24 -15 5447 5740 10 166 0 -747 330 371 1 2102 2486 10 0 621 -748 10 237 -31 2352 2699 10 866 0 -749 458 213 -12 4431 4715 10 94 0 -750 257 391 22 6347 6838 10 0 539 -751 482 184 -14 4289 4686 10 234 0 -752 222 331 10 1892 2545 10 0 562 -753 332 5 14 4113 4270 10 0 165 -754 47 208 30 763 1169 10 0 734 -755 489 437 29 2717 3058 10 0 715 -756 165 59 27 3702 3961 10 0 981 -757 211 446 15 4418 4689 10 0 87 -758 225 488 -33 2375 2829 10 984 0 -759 355 485 -23 5705 6247 10 662 0 -760 441 374 10 714 1192 10 0 195 -761 399 175 13 2892 3204 10 0 340 -762 103 464 22 4953 5350 10 0 177 -763 244 13 -8 4089 4135 10 51 0 -764 51 360 -21 4533 4743 10 790 0 -765 44 115 24 935 1035 10 0 932 -766 312 453 -3 2034 2483 10 489 0 -767 64 198 -8 4198 4630 10 222 0 -768 67 451 -18 4878 4966 10 291 0 -769 371 71 21 1106 1308 10 0 853 -770 439 156 2 2015 2312 10 0 425 -771 105 474 27 1765 2121 10 0 438 -772 366 288 29 2747 2842 10 0 745 -773 415 207 18 3421 3899 10 0 270 -774 58 39 12 4430 4993 10 0 743 -775 197 202 -3 4742 5008 10 845 0 -776 442 5 16 1315 1367 10 0 443 -777 71 12 2 880 1583 10 0 117 -778 74 215 10 823 1127 10 0 277 -779 347 192 -6 5841 6185 10 244 0 -780 178 420 -10 4262 4429 10 448 0 -781 186 135 -7 2883 2978 10 283 0 -782 176 199 28 272 447 10 0 991 -783 438 5 18 1961 2552 10 0 877 -784 150 68 -18 1631 1872 10 446 0 -785 185 434 -18 2179 2529 10 155 0 -786 215 79 5 759 1150 10 0 107 -787 177 486 -15 6360 6538 10 211 0 -788 49 437 7 1427 2112 10 0 810 -789 100 66 -22 5439 5879 10 84 0 -790 35 344 21 3286 3738 10 0 764 -791 433 447 20 3082 3392 10 0 86 -792 372 97 13 729 1101 10 0 412 -793 344 203 14 542 916 10 0 742 -794 423 170 -24 1973 2251 10 630 0 -795 171 188 30 2357 2727 10 0 275 -796 64 5 -15 4318 4833 10 696 0 -797 371 163 21 3193 3550 10 0 363 -798 398 210 -31 338 888 10 624 0 -799 48 437 -16 3056 3493 10 321 0 -800 392 1 -25 2172 2790 10 704 0 -801 195 464 20 5989 6462 0 0 1006 -802 211 248 26 39 414 10 0 60 -803 293 228 19 53 334 10 0 512 -804 23 235 43 4029 4278 10 0 859 -805 213 185 21 113 485 10 0 240 -806 172 292 17 239 616 10 0 728 -807 228 287 21 43 471 10 0 887 -808 387 394 8 4304 4597 10 0 542 -809 374 232 -36 280 722 10 220 0 -810 48 366 -7 2894 3170 10 788 0 -811 44 311 -12 1650 1730 10 387 0 -812 447 272 -19 1463 1728 10 371 0 -813 132 477 25 1136 1602 10 0 56 -814 80 117 24 3237 3476 10 0 576 -815 11 403 -22 1286 1577 10 235 0 -816 144 220 35 279 602 10 0 368 -817 473 491 23 1629 1798 10 0 643 -818 210 219 7 60 345 10 0 383 -819 452 484 -17 4907 5440 10 33 0 -820 365 28 9 1052 1214 10 0 538 -821 498 456 27 5456 5912 10 0 854 -822 84 453 19 4815 5089 10 0 907 -823 91 427 -5 3374 3806 10 556 0 -824 178 72 -24 2840 3335 10 608 0 -825 409 155 -20 565 917 10 921 0 -826 132 151 22 298 934 10 0 737 -827 136 430 14 2667 3134 10 0 46 -828 292 104 26 1160 1392 10 0 631 -829 443 167 17 1993 2472 10 0 91 -830 321 149 -14 5428 6088 10 366 0 -831 235 13 27 1303 1687 10 0 309 -832 166 440 12 625 1036 10 0 228 -833 112 433 29 750 1250 10 0 175 -834 452 172 9 2366 2620 10 0 661 -835 37 281 17 1722 2343 10 0 596 -836 414 378 23 1912 2167 10 0 121 -837 475 352 33 1211 1388 10 0 713 -838 400 71 -19 5475 5621 10 63 0 -839 286 244 -20 5063 5329 10 606 0 -840 429 389 18 1622 1891 10 0 555 -841 92 76 -21 4567 4665 10 423 0 -842 124 111 -32 3185 3250 10 711 0 -843 268 458 24 2050 2254 10 0 945 -844 352 63 -9 4566 4979 10 68 0 -845 49 118 3 4270 4422 10 0 775 -846 398 329 17 577 765 10 0 700 -847 382 9 -26 918 1377 10 571 0 -848 229 322 -18 6461 6942 10 96 0 -849 279 355 9 327 1124 10 0 653 -850 266 221 9 33 443 10 0 32 -851 142 80 12 1874 2183 10 0 706 -852 359 287 24 132 788 10 0 622 -853 482 104 -21 3111 3468 10 769 0 -854 284 457 -27 5775 6333 10 821 0 -855 64 294 12 4182 4748 10 0 671 -856 404 59 -11 3559 3864 10 450 0 -857 68 160 -13 4404 4803 10 408 0 -858 211 411 15 4496 4796 10 0 196 -859 30 155 -43 5044 5320 10 804 0 -860 240 34 -10 6135 6462 10 619 0 -861 107 374 -10 3485 3949 10 445 0 -862 404 140 -8 4972 5217 10 409 0 -863 436 467 12 2869 3140 10 0 623 -864 421 386 29 3190 3525 10 0 23 -865 182 480 -32 1310 1728 10 271 0 -866 9 233 31 1072 1498 10 0 748 -867 110 251 23 1847 2254 10 0 875 -868 19 38 15 3277 3621 10 0 891 -869 46 248 -18 3179 3452 10 629 0 -870 308 199 -22 5953 6233 10 568 0 -871 423 221 9 1020 1167 10 0 314 -872 313 391 5 397 919 10 0 268 -873 413 345 -15 4863 5002 10 313 0 -874 278 450 -15 5345 5774 10 214 0 -875 94 497 -23 2946 3431 10 867 0 -876 7 382 -18 2895 3388 10 731 0 -877 493 111 -18 1970 2479 10 783 0 -878 392 87 -8 4565 5016 10 297 0 -879 13 394 -21 1452 1649 10 284 0 -880 259 301 25 195 716 10 0 203 -881 351 233 -29 5530 5972 10 444 0 -882 313 493 -33 4670 4994 10 974 0 -883 65 62 15 3646 4285 10 0 294 -884 417 212 -9 3547 3855 10 940 0 -885 450 194 -13 2340 2778 10 451 0 -886 470 138 -29 5275 5961 10 441 0 -887 190 267 -21 6849 7300 10 807 0 -888 248 214 -18 5623 6330 10 311 0 -889 50 383 20 865 1335 10 0 272 -890 244 422 14 2013 2409 10 0 249 -891 60 29 -15 5292 5729 10 868 0 -892 5 445 -22 1151 1456 10 349 0 -893 490 276 33 973 1049 10 0 975 -894 441 100 -5 3239 3868 10 424 0 -895 162 388 -4 4374 4754 10 657 0 -896 244 277 -2 5159 5372 10 579 0 -897 406 408 -8 5712 6057 10 988 0 -898 265 240 9 18 429 10 0 651 -899 130 186 16 472 698 10 0 398 -900 382 110 -24 4308 4712 10 40 0 -901 142 14 18 3115 3686 10 0 300 -902 352 487 -25 3300 4034 10 183 0 -903 307 52 -9 3530 3954 10 574 0 -904 418 399 -9 1678 1943 10 677 0 -905 196 56 -12 2369 2626 10 960 0 -906 66 31 -30 4124 4384 10 601 0 -907 90 496 -19 5371 5912 10 822 0 -908 480 136 22 731 1322 10 0 531 -909 65 82 -22 2807 3230 10 182 0 -910 48 293 22 1150 1177 10 0 607 -911 105 181 -20 5981 6388 10 304 0 -912 215 282 -10 5644 5999 10 19 0 -913 257 133 19 3361 3657 10 0 415 -914 77 465 -18 932 1276 10 678 0 -915 43 135 31 629 1266 10 0 692 -916 27 444 -15 4069 4693 10 516 0 -917 357 290 24 150 764 10 0 97 -918 38 15 -27 4195 4654 10 970 0 -919 80 337 -11 4315 4758 10 71 0 -920 36 451 -19 3293 3938 10 941 0 -921 291 251 20 41 662 10 0 825 -922 195 111 -14 3971 4133 10 407 0 -923 383 17 -14 3563 4080 10 26 0 -924 53 466 -14 1186 1615 10 583 0 -925 114 102 21 1849 2330 10 0 118 -926 350 199 21 4761 4970 10 0 287 -927 405 349 -36 2119 2179 10 436 0 -928 472 248 11 2980 3816 10 0 74 -929 333 293 27 2302 2755 10 0 101 -930 174 397 -7 4710 5368 10 13 0 -931 2 264 -8 2551 2806 10 174 0 -932 7 82 -24 1460 1953 10 765 0 -933 34 329 2 4120 4345 10 0 625 -934 158 179 37 442 487 10 0 644 -935 421 499 -19 5226 5657 10 263 0 -936 345 431 -35 1270 1610 10 163 0 -937 370 262 15 4326 4590 10 0 369 -938 77 172 23 2920 3484 10 0 225 -939 87 51 -26 1977 2257 10 258 0 -940 468 352 9 2964 3301 10 0 884 -941 63 420 19 1954 2323 10 0 920 -942 347 184 15 4266 4483 10 0 472 -943 206 174 -12 2947 3571 10 738 0 -944 209 212 -21 5936 6406 10 593 0 -945 466 362 -24 4624 4715 10 843 0 -946 201 278 13 198 253 10 0 209 -947 206 172 -28 2952 3471 10 216 0 -948 471 94 30 3862 4249 10 0 344 -949 331 134 -13 4364 4745 10 675 0 -950 274 261 -28 6843 6933 10 641 0 -951 219 215 32 46 710 10 0 133 -952 349 76 15 4014 4351 10 0 637 -953 86 189 21 798 1136 10 0 654 -954 336 493 -8 6006 6057 10 39 0 -955 7 194 -20 3632 4099 10 640 0 -956 492 335 -26 3249 3497 10 551 0 -957 248 386 -24 1321 1825 10 170 0 -958 463 406 23 3320 3659 10 0 359 -959 199 438 -14 5315 5688 10 149 0 -960 135 30 12 1572 2343 10 0 905 -961 447 267 19 3716 4240 10 0 69 -962 235 33 -13 5322 5494 10 70 0 -963 63 155 -3 3782 4056 10 152 0 -964 294 421 -23 6057 6666 10 115 0 -965 318 99 -18 4654 5168 10 361 0 -966 21 146 21 1772 2242 10 0 312 -967 30 7 -28 4750 4879 10 485 0 -968 410 399 25 722 1268 10 0 61 -969 405 187 34 4814 5311 10 0 229 -970 109 56 27 754 1165 10 0 918 -971 212 47 20 3135 3394 10 0 540 -972 479 387 -26 1522 1778 10 351 0 -973 167 291 -24 6558 6637 10 687 0 -974 259 498 33 4123 4596 10 0 882 -975 461 182 -33 2429 2722 10 893 0 -976 277 428 -15 1876 2167 10 435 0 -977 290 328 7 584 686 10 0 85 -978 146 313 -5 4580 5103 10 317 0 -979 40 304 -2 4389 4888 10 264 0 -980 56 268 28 3936 4695 10 0 566 -981 104 28 -27 5896 6008 10 756 0 -982 370 493 22 2301 2389 10 0 999 -983 136 265 12 357 563 10 0 660 -984 247 306 33 56 778 10 0 758 -985 241 38 16 1789 2584 10 0 253 -986 180 162 9 722 786 10 0 41 -987 253 118 19 2177 2321 10 0 136 -988 413 391 8 902 955 10 0 897 -989 380 350 15 3390 3662 10 0 205 -990 391 112 -20 3958 4165 10 365 0 -991 86 199 -28 873 1470 10 782 0 -992 91 326 4 3470 4355 10 0 495 -993 287 256 18 37 272 10 0 374 -994 203 211 -19 5009 5562 10 241 0 -995 79 80 19 5361 5816 10 0 273 -996 32 319 21 1582 1742 10 0 611 -997 167 445 -14 5515 5902 10 563 0 -998 439 237 11 3700 3928 10 0 690 -999 373 418 -22 4906 5289 10 982 0 -1000 26 342 12 996 1691 10 0 610 -1001 62 94 -16 3590 4134 10 45 0 -1002 411 379 -25 4599 5068 10 380 0 -1003 181 185 -19 6338 6693 10 400 0 -1004 436 123 -40 788 1013 10 11 0 -1005 48 162 -15 656 1201 10 12 0 -1006 195 464 -20 5989 6462 10 801 0 -1007 273 255 -18 5796 6260 10 6 0 -1008 388 44 -22 4188 4979 10 478 0 diff --git a/jsprit-instances/instances/lilim/1000/LRC1101.txt b/jsprit-instances/instances/lilim/1000/LRC1101.txt deleted file mode 100644 index 5a2bb37cc..000000000 --- a/jsprit-instances/instances/lilim/1000/LRC1101.txt +++ /dev/null @@ -1,1056 +0,0 @@ -250 200 1 -0 250 250 0 0 1821 0 0 0 -1 440 436 -29 892 922 10 651 0 -2 214 394 10 231 261 10 0 347 -3 476 483 -30 355 385 10 999 0 -4 352 487 27 902 932 10 0 968 -5 230 197 -20 122 152 10 763 0 -6 175 239 23 75 105 10 0 817 -7 133 202 -20 461 491 10 753 0 -8 328 458 -16 768 798 10 807 0 -9 25 499 10 445 475 0 0 1001 -10 226 423 15 197 227 10 0 141 -11 313 282 20 163 193 10 0 886 -12 60 454 10 347 377 10 0 387 -13 239 486 -31 1482 1512 10 860 0 -14 102 264 10 148 178 10 0 86 -15 408 452 -20 272 302 10 630 0 -16 451 62 5 282 312 10 0 985 -17 203 390 40 159 189 10 0 383 -18 92 233 -10 224 254 10 900 0 -19 7 300 -20 345 375 10 615 0 -20 409 90 -20 258 288 10 814 0 -21 307 108 10 237 267 10 0 429 -22 347 54 10 295 325 0 0 1034 -23 406 87 -10 313 343 10 670 0 -24 371 332 14 530 560 10 0 459 -25 116 466 20 254 284 10 0 328 -26 441 265 40 197 227 10 0 918 -27 130 140 17 194 224 0 0 1025 -28 80 117 24 824 854 10 0 832 -29 421 387 -10 801 831 10 55 0 -30 83 300 -30 500 530 10 414 0 -31 136 52 -10 293 323 10 293 0 -32 18 462 -20 398 428 10 376 0 -33 390 120 -30 1004 1034 10 180 0 -34 188 119 -20 975 1005 10 272 0 -35 467 114 -14 376 406 10 594 0 -36 440 292 -10 940 970 10 522 0 -37 268 400 -20 243 273 10 878 0 -38 391 202 14 148 178 10 0 716 -39 377 432 -5 831 861 10 741 0 -40 80 290 10 197 227 10 0 803 -41 439 15 20 343 373 10 0 337 -42 307 52 -13 920 950 10 129 0 -43 111 192 -12 1199 1229 10 902 0 -44 131 56 -21 256 286 10 864 0 -45 88 286 -20 252 282 10 449 0 -46 69 414 6 1263 1293 10 0 246 -47 41 232 16 209 239 10 0 153 -48 323 77 -20 1405 1435 10 528 0 -49 340 416 -3 321 351 10 710 0 -50 86 199 23 278 308 10 0 772 -51 314 124 20 231 261 10 0 709 -52 375 191 -30 167 197 10 360 0 -53 226 175 -18 1694 1724 10 435 0 -54 242 106 -23 1268 1298 10 663 0 -55 417 417 10 332 362 10 0 29 -56 419 459 -10 316 346 10 582 0 -57 389 11 20 323 353 10 0 322 -58 450 416 25 577 607 10 0 910 -59 246 255 -10 113 143 10 252 0 -60 71 333 10 197 227 10 0 152 -61 105 474 -10 471 501 10 917 0 -62 20 489 -10 383 413 10 606 0 -63 388 331 -30 160 190 10 792 0 -64 92 259 4 399 429 10 0 562 -65 200 261 10 166 196 10 0 610 -66 400 288 30 154 184 10 0 775 -67 299 285 -24 1254 1284 10 224 0 -68 378 199 10 207 237 10 0 677 -69 325 147 -28 1187 1217 10 400 0 -70 421 386 -20 824 854 10 821 0 -71 404 447 20 250 280 10 0 213 -72 412 478 -20 960 990 10 253 0 -73 26 67 -20 1317 1347 10 137 0 -74 358 183 20 234 264 10 0 527 -75 30 302 10 267 297 10 0 513 -76 176 470 14 547 577 10 0 957 -77 96 270 20 162 192 10 0 618 -78 243 408 -10 1434 1464 10 549 0 -79 60 29 -30 1363 1393 10 563 0 -80 34 169 -35 484 514 10 508 0 -81 407 280 10 209 239 10 0 603 -82 277 403 10 175 205 10 0 439 -83 498 456 -10 1406 1436 10 962 0 -84 384 491 -10 348 378 10 164 0 -85 355 174 -30 715 745 10 445 0 -86 97 288 -10 1284 1314 10 14 0 -87 316 284 -30 125 155 10 402 0 -88 334 403 26 174 204 10 0 915 -89 415 223 -25 305 335 10 275 0 -90 230 320 -10 1192 1222 10 507 0 -91 432 199 -31 639 669 10 592 0 -92 92 18 8 1124 1154 10 0 109 -93 273 300 30 55 85 10 0 271 -94 269 112 -24 1263 1293 10 633 0 -95 429 389 -10 424 454 10 431 0 -96 371 71 21 287 317 10 0 620 -97 5 297 -10 331 361 10 382 0 -98 414 378 -13 495 525 10 598 0 -99 38 15 -30 1091 1121 10 914 0 -100 2 295 -20 306 336 10 993 0 -101 237 254 20 83 113 10 0 659 -102 54 445 10 308 338 10 0 785 -103 382 110 -20 1112 1142 10 521 0 -104 438 488 18 327 357 10 0 936 -105 395 331 20 217 247 10 0 338 -106 230 487 -23 1130 1160 10 622 0 -107 249 407 10 174 204 10 0 853 -108 488 26 30 433 463 10 0 820 -109 151 81 -8 1558 1588 10 92 0 -110 483 14 -20 363 393 10 998 0 -111 0 422 8 821 851 10 0 295 -112 429 67 16 732 762 10 0 673 -113 195 464 -5 1541 1571 10 417 0 -114 356 256 19 106 136 10 0 690 -115 264 180 -12 1681 1711 10 796 0 -116 94 235 20 156 186 0 0 1051 -117 474 96 30 271 301 10 0 576 -118 268 52 -30 306 336 10 981 0 -119 44 440 -10 789 819 10 924 0 -120 7 382 27 770 800 10 0 509 -121 459 53 -19 1122 1152 10 778 0 -122 491 25 -20 409 439 10 708 0 -123 439 243 20 314 344 10 0 260 -124 210 185 20 76 106 10 0 346 -125 150 68 23 423 453 10 0 158 -126 201 270 10 52 82 10 0 374 -127 0 188 -18 932 962 10 614 0 -128 103 464 -19 1273 1303 10 140 0 -129 325 56 13 796 826 10 0 42 -130 44 344 -30 1079 1109 10 869 0 -131 418 75 11 448 478 10 0 804 -132 472 57 -10 1295 1325 10 813 0 -133 460 328 13 224 254 10 0 194 -134 89 270 -20 204 234 10 304 0 -135 374 190 20 143 173 10 0 602 -136 463 253 23 1047 1077 10 0 801 -137 97 93 20 240 270 10 0 73 -138 163 472 -20 653 683 10 308 0 -139 29 336 -20 332 362 10 381 0 -140 84 453 19 1223 1253 10 0 128 -141 294 421 -15 1575 1605 10 10 0 -142 343 62 10 357 387 10 0 236 -143 371 193 20 133 163 10 0 806 -144 142 372 -21 162 192 10 451 0 -145 66 88 -20 830 860 10 525 0 -146 395 332 10 206 236 10 0 934 -147 93 413 17 226 256 10 0 880 -148 267 394 10 259 289 10 0 862 -149 249 258 -30 127 157 10 779 0 -150 472 129 10 252 282 10 0 444 -151 87 3 13 1433 1463 0 0 1003 -152 62 326 -10 286 316 10 60 0 -153 212 186 -16 1707 1737 10 47 0 -154 241 402 11 1025 1055 10 0 257 -155 439 266 -14 189 219 10 644 0 -156 79 80 -4 1382 1412 10 526 0 -157 62 453 10 295 325 10 0 703 -158 188 151 -23 1297 1327 10 125 0 -159 386 154 31 1101 1131 0 0 1009 -160 38 301 20 296 326 10 0 569 -161 192 265 -10 124 154 10 647 0 -162 371 192 30 134 164 10 0 379 -163 64 294 12 1101 1131 10 0 842 -164 381 494 10 333 363 10 0 84 -165 437 12 -20 330 360 10 364 0 -166 186 135 -10 718 748 10 859 0 -167 459 10 10 335 365 10 0 829 -168 175 422 -13 1446 1476 10 434 0 -169 274 48 10 211 241 10 0 403 -170 488 173 -20 279 309 10 591 0 -171 398 97 10 212 242 10 0 861 -172 385 17 -10 809 839 10 844 0 -173 180 283 -8 744 774 10 698 0 -174 71 12 2 297 327 10 0 418 -175 343 49 10 265 295 10 0 997 -176 248 251 20 2 32 0 0 1004 -177 7 194 29 951 981 10 0 970 -178 322 290 -27 1479 1509 10 655 0 -179 410 399 25 234 264 10 0 468 -180 398 103 30 278 308 10 0 33 -181 385 285 -20 868 898 10 567 0 -182 179 497 -10 1411 1441 10 847 0 -183 464 13 20 385 415 0 0 1042 -184 492 335 -20 828 858 10 486 0 -185 27 464 21 1291 1321 10 0 972 -186 231 29 -6 1226 1256 10 543 0 -187 157 38 -30 1048 1078 10 743 0 -188 439 268 -15 298 328 10 989 0 -189 149 214 -20 482 512 10 500 0 -190 187 73 18 292 322 10 0 317 -191 429 169 -9 903 933 10 390 0 -192 350 199 -20 1201 1231 10 350 0 -193 60 231 32 1026 1056 10 0 420 -194 448 404 -13 599 629 10 133 0 -195 481 20 20 347 377 10 0 288 -196 436 25 -20 1282 1312 10 231 0 -197 111 459 20 359 389 0 0 1052 -198 389 17 10 366 396 10 0 546 -199 148 208 -10 526 556 10 754 0 -200 475 477 -14 405 435 10 948 0 -201 390 325 30 251 281 10 0 826 -202 346 354 8 817 847 10 0 758 -203 91 266 10 233 263 10 0 427 -204 17 65 -10 327 357 10 881 0 -205 391 112 -10 1000 1030 10 736 0 -206 224 203 20 53 83 10 0 706 -207 426 231 -9 1028 1058 10 471 0 -208 260 472 -20 1036 1066 10 327 0 -209 265 0 10 896 926 10 0 765 -210 391 293 20 226 256 10 0 416 -211 411 421 20 315 345 10 0 662 -212 132 30 -30 326 356 10 457 0 -213 475 480 -20 379 409 10 71 0 -214 286 244 -30 1284 1314 10 850 0 -215 436 237 20 186 216 10 0 912 -216 402 284 30 165 195 10 0 329 -217 287 397 12 564 594 10 0 834 -218 272 420 -12 1386 1416 10 324 0 -219 477 120 10 342 372 10 0 865 -220 145 434 20 233 263 10 0 839 -221 33 286 11 1546 1576 0 0 1030 -222 370 262 15 1099 1129 10 0 269 -223 393 20 -10 391 421 10 282 0 -224 330 308 24 1170 1200 10 0 67 -225 246 398 40 148 178 10 0 330 -226 482 184 -22 1107 1137 10 784 0 -227 451 305 13 208 238 10 0 577 -228 226 316 21 70 100 10 0 465 -229 110 459 -10 348 378 10 585 0 -230 244 250 10 12 42 10 0 991 -231 458 16 20 313 343 10 0 196 -232 390 34 -20 1060 1090 10 377 0 -233 423 214 20 217 247 10 0 958 -234 219 215 32 46 76 10 0 248 -235 326 118 10 152 182 10 0 674 -236 365 74 -10 848 878 10 142 0 -237 331 356 -10 712 742 10 354 0 -238 210 398 10 204 234 10 0 876 -239 403 93 10 341 371 10 0 669 -240 248 404 30 154 184 10 0 487 -241 65 62 -15 976 1006 10 559 0 -242 460 13 20 322 352 10 0 320 -243 0 293 -10 279 309 10 575 0 -244 211 248 26 39 69 10 0 823 -245 484 174 -20 265 295 10 888 0 -246 175 352 -6 1655 1685 10 46 0 -247 455 168 21 867 897 10 0 648 -248 224 191 -32 81 111 10 234 0 -249 439 156 -40 526 556 10 637 0 -250 434 359 -9 1392 1422 10 649 0 -251 118 314 26 338 368 10 0 467 -252 234 246 10 65 95 10 0 59 -253 406 450 20 259 289 10 0 72 -254 75 118 -12 409 439 10 904 0 -255 115 395 -7 815 845 10 980 0 -256 329 456 19 249 279 10 0 680 -257 218 403 -11 1319 1349 10 154 0 -258 149 341 6 404 434 10 0 744 -259 253 74 -14 1350 1380 10 564 0 -260 436 241 -20 327 357 10 123 0 -261 238 203 10 94 124 10 0 413 -262 405 455 40 341 371 10 0 277 -263 485 27 -30 446 476 10 365 0 -264 323 118 20 161 191 10 0 841 -265 330 371 1 559 589 0 0 1018 -266 25 65 -20 376 406 10 943 0 -267 406 96 20 219 249 10 0 969 -268 49 451 20 284 314 10 0 899 -269 307 249 -15 1377 1407 10 222 0 -270 178 135 -16 1514 1544 10 372 0 -271 299 353 -30 114 144 10 93 0 -272 236 213 20 39 69 10 0 34 -273 355 177 20 127 157 10 0 316 -274 394 23 -10 404 434 10 1000 0 -275 306 235 25 57 87 10 0 89 -276 90 477 18 277 307 10 0 752 -277 379 486 -40 672 702 10 262 0 -278 435 16 -30 367 397 10 616 0 -279 8 497 -20 408 438 10 705 0 -280 150 484 -20 625 655 10 746 0 -281 213 399 18 234 264 10 0 448 -282 391 18 10 378 408 10 0 223 -283 111 392 -30 1169 1199 10 975 0 -284 330 281 -20 1330 1360 10 428 0 -285 344 203 14 167 197 10 0 678 -286 91 235 -10 269 299 10 742 0 -287 346 60 -30 321 351 10 787 0 -288 483 27 -20 458 488 10 195 0 -289 382 498 -10 309 339 10 681 0 -290 457 492 -30 508 538 10 702 0 -291 291 213 -11 1258 1288 10 769 0 -292 154 374 -20 937 967 10 335 0 -293 225 196 10 59 89 10 0 31 -294 94 40 24 1068 1098 10 0 895 -295 0 356 -8 1086 1116 10 111 0 -296 297 283 28 1349 1379 0 0 1040 -297 371 423 10 211 241 10 0 939 -298 417 217 30 189 219 10 0 672 -299 500 228 -27 782 812 10 493 0 -300 412 214 10 165 195 10 0 351 -301 442 289 25 195 225 10 0 707 -302 157 269 -10 1576 1606 10 930 0 -303 440 241 -10 301 331 10 573 0 -304 100 266 20 150 180 10 0 134 -305 111 178 18 156 186 10 0 462 -306 91 101 10 298 328 10 0 438 -307 25 307 10 249 279 10 0 496 -308 135 400 20 299 329 10 0 138 -309 58 458 -30 323 353 10 987 0 -310 133 26 -26 312 342 10 373 0 -311 211 386 20 141 171 10 0 657 -312 94 97 20 218 248 10 0 800 -313 30 155 -21 1280 1310 10 510 0 -314 208 184 20 78 108 10 0 388 -315 394 333 20 194 224 10 0 722 -316 355 180 -20 137 167 10 273 0 -317 241 180 -18 1695 1725 10 190 0 -318 21 485 30 338 368 10 0 489 -319 80 251 -10 304 334 10 408 0 -320 476 61 -20 449 479 10 242 0 -321 406 94 10 228 258 10 0 824 -322 364 71 -20 1348 1378 10 57 0 -323 418 221 -10 291 321 10 731 0 -324 274 441 12 695 725 10 0 218 -325 304 97 20 182 212 10 0 699 -326 297 102 10 155 185 10 0 720 -327 250 405 20 162 192 10 0 208 -328 111 463 -20 322 352 10 25 0 -329 408 279 -30 220 250 10 216 0 -330 263 418 -40 278 308 10 225 0 -331 480 119 7 628 658 10 0 561 -332 420 383 -20 982 1012 10 897 0 -333 142 14 -10 835 865 10 621 0 -334 73 328 20 193 223 10 0 645 -335 50 438 20 337 367 10 0 292 -336 441 7 20 392 422 10 0 646 -337 462 14 -20 397 427 10 41 0 -338 360 294 -20 1418 1448 10 105 0 -339 58 39 -10 1163 1193 10 530 0 -340 58 391 16 882 912 10 0 770 -341 410 285 20 193 223 10 0 693 -342 96 97 20 217 247 10 0 688 -343 21 64 20 352 382 10 0 816 -344 238 210 30 134 164 10 0 730 -345 479 121 -30 308 338 10 361 0 -346 200 178 -20 94 124 10 124 0 -347 216 341 -10 654 684 10 2 0 -348 48 437 -10 804 834 10 550 0 -349 200 270 -30 59 89 10 838 0 -350 357 181 20 149 179 10 0 192 -351 476 174 -10 324 354 10 300 0 -352 400 286 10 154 184 10 0 992 -353 351 481 10 322 352 10 0 409 -354 270 400 10 151 181 10 0 237 -355 95 234 -10 163 193 10 395 0 -356 128 113 22 363 393 10 0 789 -357 133 455 25 808 838 10 0 697 -358 16 463 -20 375 405 10 554 0 -359 59 388 -10 663 693 10 586 0 -360 376 190 30 155 185 10 0 52 -361 481 122 30 295 325 10 0 345 -362 266 405 -30 217 247 10 436 0 -363 374 232 33 125 155 10 0 600 -364 398 20 20 273 303 10 0 165 -365 481 26 30 321 351 10 0 263 -366 63 444 -30 380 410 10 782 0 -367 89 290 20 168 198 10 0 811 -368 246 314 -10 1445 1475 10 664 0 -369 40 304 -25 1145 1175 10 907 0 -370 262 369 15 129 159 10 0 974 -371 323 29 -2 1137 1167 10 750 0 -372 89 65 16 720 750 10 0 270 -373 144 35 26 239 269 10 0 310 -374 200 265 -10 152 182 10 126 0 -375 436 264 20 186 216 10 0 764 -376 15 457 20 323 353 10 0 32 -377 397 20 20 280 310 10 0 232 -378 328 491 21 678 708 10 0 463 -379 399 175 -30 747 777 10 162 0 -380 432 2 -9 467 497 10 908 0 -381 63 336 20 266 296 10 0 139 -382 6 296 10 320 350 10 0 97 -383 146 376 -40 234 264 10 17 0 -384 295 247 -20 1303 1333 10 891 0 -385 235 33 -27 1337 1367 10 700 0 -386 233 204 -10 54 84 10 660 0 -387 142 360 -10 1532 1562 10 12 0 -388 177 156 -20 167 197 10 314 0 -389 315 287 30 148 178 10 0 973 -390 452 172 9 608 638 10 0 191 -391 263 153 12 412 442 10 0 406 -392 493 493 -10 856 886 10 848 0 -393 320 283 30 111 141 10 0 524 -394 64 5 14 1129 1159 10 0 555 -395 95 235 10 155 185 10 0 355 -396 203 211 20 1306 1336 0 0 1054 -397 16 497 -30 426 456 10 593 0 -398 348 348 -12 935 965 10 863 0 -399 485 104 -5 794 824 10 977 0 -400 330 147 28 848 878 10 0 69 -401 443 237 20 193 223 10 0 843 -402 316 286 30 137 167 10 0 87 -403 335 46 -10 1342 1372 10 169 0 -404 381 495 20 322 352 10 0 480 -405 364 173 30 180 210 0 0 1002 -406 267 162 -12 1449 1479 10 391 0 -407 214 245 8 36 66 10 0 696 -408 92 234 10 235 265 10 0 319 -409 347 459 -10 479 509 10 353 0 -410 30 7 -15 1189 1219 10 574 0 -411 120 37 -10 775 805 10 916 0 -412 397 153 29 882 912 10 0 595 -413 210 29 -10 1051 1081 10 261 0 -414 87 285 30 241 271 10 0 30 -415 132 32 18 784 814 10 0 423 -416 390 294 -20 237 267 10 210 0 -417 67 451 5 1216 1246 10 0 113 -418 24 68 -2 414 444 10 174 0 -419 146 439 10 259 289 10 0 503 -420 209 212 -32 1528 1558 10 193 0 -421 6 292 10 247 277 10 0 728 -422 18 63 10 339 369 10 0 687 -423 149 98 -18 1165 1195 10 415 0 -424 91 268 10 245 275 10 0 737 -425 103 177 -20 626 656 10 944 0 -426 367 178 -19 180 210 10 727 0 -427 225 269 -10 1271 1301 10 203 0 -428 443 246 20 230 260 10 0 284 -429 306 42 -10 477 507 10 21 0 -430 374 306 -20 994 1024 10 983 0 -431 413 421 10 303 333 10 0 95 -432 470 405 -30 926 956 10 491 0 -433 33 278 -28 1487 1517 10 882 0 -434 149 458 13 1164 1194 10 0 168 -435 257 57 18 1226 1256 10 0 53 -436 272 403 30 190 220 10 0 362 -437 221 291 9 50 80 10 0 996 -438 1 101 -10 1257 1287 10 306 0 -439 332 459 -10 369 399 10 82 0 -440 220 392 -30 258 288 10 855 0 -441 253 50 27 226 256 10 0 852 -442 250 441 -7 756 786 10 475 0 -443 471 484 -20 340 370 10 773 0 -444 480 152 -10 1022 1052 10 150 0 -445 404 83 30 298 328 10 0 85 -446 476 94 20 274 304 10 0 675 -447 458 213 -13 1128 1158 10 890 0 -448 215 395 -18 242 272 10 281 0 -449 85 288 20 182 212 10 0 45 -450 179 75 -23 740 770 10 578 0 -451 228 287 21 43 73 10 0 144 -452 397 18 -20 292 322 10 474 0 -453 238 204 20 105 135 10 0 715 -454 488 3 -10 401 431 10 504 0 -455 407 88 -20 324 354 10 903 0 -456 459 14 20 315 345 10 0 531 -457 120 17 30 279 309 10 0 212 -458 235 316 -10 656 686 10 534 0 -459 370 382 -14 884 914 10 24 0 -460 405 454 -20 1303 1333 10 481 0 -461 17 458 10 433 463 10 0 551 -462 43 135 -18 236 266 10 305 0 -463 318 497 -21 854 884 10 378 0 -464 199 268 20 71 101 10 0 967 -465 111 467 -21 287 317 10 228 0 -466 138 438 -30 287 317 10 867 0 -467 172 314 -26 545 575 10 251 0 -468 494 468 -25 352 382 10 179 0 -469 35 303 20 221 251 10 0 857 -470 341 59 27 790 820 10 0 781 -471 423 221 9 258 288 10 0 207 -472 395 295 -30 211 241 10 960 0 -473 413 417 -17 356 386 10 931 0 -474 339 60 20 211 241 10 0 452 -475 277 428 7 490 520 10 0 442 -476 176 199 28 89 119 10 0 488 -477 265 240 9 18 48 10 0 927 -478 365 190 -18 1477 1507 10 529 0 -479 133 53 -20 279 309 10 733 0 -480 387 488 -20 362 392 10 404 0 -481 385 295 20 142 172 10 0 460 -482 491 369 28 730 760 10 0 831 -483 445 273 -10 258 288 10 492 0 -484 195 273 22 59 89 10 0 822 -485 313 493 20 1193 1223 0 0 1037 -486 495 227 20 344 374 10 0 184 -487 241 403 -30 220 250 10 240 0 -488 30 72 -28 432 462 10 476 0 -489 21 487 -30 350 380 10 318 0 -490 324 99 -30 338 368 10 636 0 -491 453 318 30 374 404 10 0 432 -492 443 272 10 270 300 10 0 483 -493 447 184 27 424 454 10 0 299 -494 366 288 29 684 714 10 0 711 -495 440 284 -10 852 882 10 768 0 -496 13 314 -10 245 275 10 307 0 -497 72 227 25 564 594 10 0 964 -498 377 385 6 866 896 0 0 1048 -499 477 478 20 392 422 10 0 840 -500 204 185 20 163 193 10 0 189 -501 226 191 20 93 123 0 0 1015 -502 330 138 -30 1110 1140 10 612 0 -503 185 434 -10 574 604 10 419 0 -504 483 22 10 334 364 10 0 454 -505 71 282 -10 642 672 10 535 0 -506 60 5 -28 1044 1074 10 942 0 -507 189 402 10 536 566 10 0 90 -508 134 211 35 122 152 10 0 80 -509 146 313 -27 1195 1225 10 120 0 -510 21 146 21 487 517 10 0 313 -511 37 281 17 493 523 0 0 1020 -512 416 417 -20 343 373 10 774 0 -513 44 311 -10 407 437 10 75 0 -514 361 181 20 197 227 0 0 1043 -515 444 242 10 216 246 10 0 718 -516 444 271 10 246 276 10 0 650 -517 359 179 20 162 192 10 0 926 -518 388 334 20 161 191 10 0 685 -519 401 164 -10 621 651 10 965 0 -520 499 316 -29 622 652 10 928 0 -521 399 106 20 302 332 10 0 103 -522 425 215 10 229 259 10 0 36 -523 407 98 -20 218 248 10 579 0 -524 406 460 -30 719 749 10 393 0 -525 88 95 20 270 300 10 0 145 -526 95 64 4 766 796 10 0 156 -527 306 229 -20 1320 1350 10 74 0 -528 273 55 20 196 226 10 0 48 -529 384 149 18 1197 1227 10 0 478 -530 122 35 10 250 280 10 0 339 -531 308 199 -20 1508 1538 10 456 0 -532 390 301 -10 165 195 10 909 0 -533 300 108 10 150 180 10 0 982 -534 267 400 10 232 262 10 0 458 -535 8 300 10 356 386 10 0 505 -536 105 181 19 1531 1561 0 0 1032 -537 398 325 -20 233 263 10 545 0 -538 166 247 1 84 114 10 0 635 -539 140 431 30 211 241 10 0 825 -540 253 118 19 547 577 10 0 565 -541 359 246 18 1423 1453 10 0 795 -542 321 277 10 75 105 0 0 1039 -543 168 59 6 366 396 10 0 186 -544 406 285 20 179 209 10 0 548 -545 391 334 20 181 211 10 0 537 -546 437 19 -10 1014 1044 10 198 0 -547 201 278 13 56 86 10 0 791 -548 435 267 -20 323 353 10 544 0 -549 245 408 10 204 234 10 0 78 -550 16 462 10 386 416 10 0 348 -551 107 374 -10 914 944 10 461 0 -552 477 97 10 283 313 10 0 780 -553 346 57 -30 308 338 10 870 0 -554 14 459 20 336 366 10 0 358 -555 102 6 -14 1458 1488 10 394 0 -556 359 287 24 115 145 10 0 894 -557 297 131 -40 1165 1195 10 884 0 -558 282 1 -30 1042 1072 10 849 0 -559 21 70 15 771 801 10 0 241 -560 440 244 -10 266 296 10 713 0 -561 482 104 -7 807 837 10 331 0 -562 120 261 -4 793 823 10 64 0 -563 125 29 30 283 313 10 0 79 -564 292 32 14 229 259 10 0 259 -565 262 92 -19 630 660 10 540 0 -566 68 160 21 1136 1166 10 0 799 -567 405 276 20 234 264 10 0 181 -568 277 50 10 201 231 10 0 797 -569 32 319 -20 401 431 10 160 0 -570 344 70 -20 1146 1176 10 941 0 -571 481 84 17 506 536 0 0 1011 -572 21 68 20 401 431 0 0 1007 -573 441 244 10 277 307 10 0 303 -574 57 43 15 1023 1053 10 0 410 -575 1 293 10 268 298 10 0 243 -576 481 96 -30 297 327 10 117 0 -577 471 368 -13 428 458 10 227 0 -578 236 126 23 124 154 10 0 450 -579 406 99 20 227 257 10 0 523 -580 303 186 -10 1354 1384 10 767 0 -581 225 369 38 121 151 0 0 1014 -582 412 453 10 297 327 10 0 56 -583 104 349 -18 1009 1039 10 634 0 -584 173 182 25 102 132 10 0 596 -585 111 464 10 311 341 10 0 229 -586 53 440 10 323 353 10 0 359 -587 69 336 20 218 248 10 0 601 -588 359 182 20 209 239 10 0 883 -589 13 459 20 347 377 10 0 858 -590 244 277 -10 1301 1331 10 932 0 -591 484 177 20 252 282 10 0 170 -592 452 206 31 492 522 10 0 91 -593 22 483 30 325 355 10 0 397 -594 452 110 14 340 370 10 0 35 -595 347 192 -29 1488 1518 10 412 0 -596 95 92 -25 253 283 10 584 0 -597 368 311 -20 926 956 10 691 0 -598 479 387 13 397 427 10 0 98 -599 479 169 -20 309 339 10 875 0 -600 497 266 -33 748 778 10 363 0 -601 66 336 -20 253 283 10 587 0 -602 376 195 -20 181 211 10 135 0 -603 401 281 -10 261 291 10 81 0 -604 441 177 -10 1001 1031 10 756 0 -605 231 203 20 67 97 10 0 695 -606 21 488 10 361 391 10 0 62 -607 231 204 -10 150 180 10 760 0 -608 122 422 -10 1457 1487 10 625 0 -609 65 453 30 282 312 10 0 812 -610 206 261 -10 182 212 10 65 0 -611 466 149 -20 1186 1216 10 776 0 -612 313 119 30 216 246 10 0 502 -613 90 274 20 179 209 10 0 641 -614 39 162 18 565 595 10 0 127 -615 35 306 20 229 259 10 0 19 -616 437 15 30 355 385 10 0 278 -617 307 412 8 404 434 0 0 1053 -618 79 291 -20 209 239 10 77 0 -619 64 437 -11 918 948 10 833 0 -620 376 92 -21 991 1021 10 96 0 -621 129 27 10 298 328 10 0 333 -622 196 489 23 1030 1060 10 0 106 -623 51 286 -20 1459 1489 10 830 0 -624 20 488 -10 372 402 10 905 0 -625 13 455 10 313 343 10 0 608 -626 170 347 15 436 466 10 0 745 -627 92 230 20 189 219 10 0 945 -628 117 467 10 254 284 10 0 734 -629 413 217 20 166 196 10 0 725 -630 405 450 20 253 283 10 0 15 -631 394 322 12 1025 1055 0 0 1021 -632 125 61 26 612 642 0 0 1050 -633 238 123 24 781 811 10 0 94 -634 11 403 18 343 373 10 0 583 -635 89 272 -1 192 222 10 538 0 -636 304 102 30 197 227 10 0 490 -637 478 121 40 319 349 10 0 249 -638 408 84 10 284 314 0 0 1012 -639 376 494 30 274 304 10 0 719 -640 20 73 10 290 320 10 0 851 -641 159 299 -20 1016 1046 10 613 0 -642 95 382 19 231 261 10 0 913 -643 352 63 -10 1178 1208 10 990 0 -644 365 274 14 117 147 10 0 155 -645 30 301 -20 278 308 10 334 0 -646 351 5 -20 496 526 10 336 0 -647 197 267 10 109 139 10 0 161 -648 498 171 -21 1256 1286 10 247 0 -649 468 352 9 768 798 10 0 250 -650 418 251 -10 1197 1227 10 516 0 -651 489 437 29 707 737 10 0 1 -652 251 63 14 987 1017 10 0 994 -653 132 55 10 267 297 0 0 1026 -654 281 96 1 1126 1156 0 0 1044 -655 333 293 27 617 647 10 0 178 -656 255 487 19 398 428 10 0 893 -657 207 400 -20 191 221 10 311 0 -658 469 489 -20 555 585 10 949 0 -659 244 254 -20 100 130 10 101 0 -660 233 207 10 46 76 10 0 386 -661 441 60 -20 1459 1489 10 873 0 -662 411 379 -20 1193 1223 10 211 0 -663 178 72 23 757 787 10 0 54 -664 51 447 10 294 324 10 0 368 -665 478 118 20 354 384 0 0 1005 -666 141 426 23 531 561 0 0 1033 -667 295 89 -20 742 772 10 682 0 -668 112 433 -9 235 265 10 984 0 -669 320 211 -10 993 1023 10 239 0 -670 400 103 10 256 286 10 0 23 -671 408 453 -10 283 313 10 771 0 -672 435 180 -30 225 255 10 298 0 -673 432 66 -16 1071 1101 10 112 0 -674 374 116 -10 587 617 10 235 0 -675 478 102 -20 324 354 10 446 0 -676 335 57 30 210 240 10 0 901 -677 385 239 -10 786 816 10 68 0 -678 386 245 -14 479 509 10 285 0 -679 208 396 20 176 206 0 0 1010 -680 380 489 -19 379 409 10 256 0 -681 380 498 10 297 327 10 0 289 -682 440 7 20 314 344 10 0 667 -683 434 245 -20 342 372 10 971 0 -684 90 232 -30 212 242 10 887 0 -685 389 334 -20 169 199 10 518 0 -686 241 205 -17 118 148 10 929 0 -687 18 24 -10 628 658 10 422 0 -688 57 183 -20 1100 1130 10 342 0 -689 59 457 30 334 364 0 0 1016 -690 442 243 -19 289 319 10 114 0 -691 402 281 20 250 280 10 0 597 -692 445 237 10 200 230 0 0 1027 -693 441 273 -20 282 312 10 341 0 -694 31 175 -30 247 277 10 786 0 -695 234 202 -20 80 110 10 605 0 -696 52 303 -8 441 471 10 407 0 -697 167 445 -25 1412 1442 10 357 0 -698 179 286 8 341 371 10 0 173 -699 269 48 -20 281 311 10 325 0 -700 165 59 27 943 973 10 0 385 -701 461 8 -40 369 399 10 809 0 -702 421 415 30 237 267 10 0 290 -703 59 459 -10 311 341 10 157 0 -704 24 492 -9 462 492 10 739 0 -705 55 449 20 278 308 10 0 279 -706 224 192 -20 70 100 10 206 0 -707 444 269 -25 234 264 10 301 0 -708 491 20 20 394 424 10 0 122 -709 313 126 -20 243 273 10 51 0 -710 283 438 3 231 261 10 0 49 -711 352 241 -29 792 822 10 494 0 -712 398 476 -20 418 448 10 986 0 -713 442 247 10 241 271 10 0 560 -714 217 207 26 1382 1412 0 0 1038 -715 233 87 -20 253 283 10 453 0 -716 479 127 -14 270 300 10 38 0 -717 6 53 -24 587 617 10 748 0 -718 478 300 -10 890 920 10 515 0 -719 378 493 -30 282 312 10 639 0 -720 303 78 -10 179 209 10 326 0 -721 344 62 -20 346 376 10 866 0 -722 371 315 -20 1166 1196 10 315 0 -723 200 78 -20 993 1023 10 810 0 -724 413 391 8 217 247 10 0 828 -725 415 216 -20 176 206 10 629 0 -726 397 57 17 1476 1506 0 0 1013 -727 293 228 19 48 78 10 0 426 -728 0 297 -10 293 323 10 421 0 -729 435 20 -20 381 411 10 856 0 -730 195 111 -30 998 1028 10 344 0 -731 417 218 10 278 308 10 0 323 -732 340 54 10 238 268 10 0 751 -733 132 57 20 244 274 10 0 479 -734 210 379 -10 709 739 10 628 0 -735 228 260 12 1606 1636 0 0 1024 -736 399 104 10 290 320 10 0 205 -737 95 277 -10 274 304 10 424 0 -738 360 284 19 667 697 0 0 1047 -739 53 466 9 335 365 10 0 704 -740 112 465 10 299 329 10 0 946 -741 313 391 5 154 184 10 0 39 -742 93 235 10 246 276 10 0 286 -743 125 32 30 259 289 10 0 187 -744 215 282 -6 1440 1470 10 258 0 -745 224 320 -15 1284 1314 10 626 0 -746 134 428 20 308 338 10 0 280 -747 26 490 10 475 505 10 0 766 -748 44 115 24 246 276 10 0 717 -749 438 127 -5 941 971 10 953 0 -750 239 15 2 604 634 10 0 371 -751 342 54 -10 250 280 10 732 0 -752 109 463 -18 334 364 10 276 0 -753 199 187 20 127 157 10 0 7 -754 201 188 10 139 169 10 0 199 -755 399 301 30 194 224 0 0 1046 -756 484 171 10 293 323 10 0 604 -757 272 234 -10 1590 1620 10 889 0 -758 380 350 -8 866 896 10 202 0 -759 140 108 -40 1071 1101 10 885 0 -760 228 199 10 134 164 10 0 607 -761 245 461 -30 649 679 10 906 0 -762 305 107 20 225 255 0 0 1036 -763 231 195 20 109 139 10 0 5 -764 450 265 -20 216 246 10 375 0 -765 273 149 -10 1503 1533 10 209 0 -766 12 358 -10 1224 1254 10 747 0 -767 315 121 10 203 233 10 0 580 -768 420 213 10 204 234 10 0 495 -769 331 134 11 1124 1154 10 0 291 -770 84 377 -16 926 956 10 340 0 -771 320 280 10 85 115 10 0 671 -772 89 185 -23 600 630 10 50 0 -773 472 481 20 327 357 10 0 443 -774 422 420 20 263 293 10 0 512 -775 475 267 -30 780 810 10 66 0 -776 470 125 20 253 283 10 0 611 -777 435 268 10 312 342 0 0 1045 -778 409 155 19 185 215 10 0 121 -779 243 248 30 24 54 10 0 149 -780 488 96 -10 1066 1096 10 552 0 -781 341 72 -27 805 835 10 470 0 -782 58 449 30 363 393 10 0 366 -783 16 460 -20 411 441 10 966 0 -784 480 136 22 256 286 10 0 226 -785 162 388 -10 1126 1156 10 102 0 -786 47 208 30 226 256 10 0 694 -787 324 127 30 143 173 10 0 287 -788 87 96 30 282 312 10 0 921 -789 140 137 -22 570 600 10 356 0 -790 314 205 -20 1527 1557 10 952 0 -791 96 346 -13 185 215 10 547 0 -792 321 280 30 77 107 10 0 63 -793 245 251 10 5 35 10 0 871 -794 436 295 -20 528 558 10 874 0 -795 274 261 -18 1707 1737 10 541 0 -796 271 128 12 346 376 10 0 115 -797 275 45 -10 225 255 10 568 0 -798 422 409 10 234 264 10 0 892 -799 146 188 -21 1235 1265 10 566 0 -800 93 96 -20 225 255 10 312 0 -801 409 255 -23 1522 1552 10 136 0 -802 449 428 25 1247 1277 0 0 1035 -803 90 285 -10 276 306 10 40 0 -804 415 95 -11 1177 1207 10 131 0 -805 88 287 30 263 293 0 0 1049 -806 379 196 -20 194 224 10 143 0 -807 368 452 16 670 700 10 0 8 -808 202 186 20 151 181 10 0 959 -809 435 11 40 302 332 10 0 701 -810 269 46 20 269 299 10 0 723 -811 7 292 -20 246 276 10 367 0 -812 44 496 -30 402 432 10 609 0 -813 478 99 10 311 341 10 0 132 -814 391 99 20 206 236 10 0 20 -815 132 477 -20 327 357 10 837 0 -816 24 65 -20 365 395 10 343 0 -817 130 247 -23 120 150 10 6 0 -818 133 273 20 119 149 10 0 923 -819 347 62 -20 333 363 10 933 0 -820 404 140 -30 1259 1289 10 108 0 -821 416 420 20 290 320 10 0 70 -822 67 335 -22 242 272 10 484 0 -823 92 270 -26 257 287 10 244 0 -824 411 95 -10 243 273 10 321 0 -825 132 479 -30 257 287 10 539 0 -826 366 334 -30 410 440 10 201 0 -827 125 39 -20 245 275 10 947 0 -828 419 422 -8 276 306 10 724 0 -829 460 2 -10 353 383 10 167 0 -830 67 334 20 231 261 10 0 623 -831 448 414 -28 1223 1253 10 482 0 -832 46 163 -24 926 956 10 28 0 -833 77 465 11 275 305 10 0 619 -834 284 319 -12 817 847 10 217 0 -835 102 422 -5 226 256 10 922 0 -836 240 34 28 1560 1590 0 0 1023 -837 141 428 20 208 238 10 0 815 -838 204 269 30 49 79 10 0 349 -839 144 439 -20 271 301 10 220 0 -840 470 417 -20 737 767 10 499 0 -841 404 103 -20 242 272 10 264 0 -842 5 281 -12 1372 1402 10 163 0 -843 487 320 -20 858 888 10 401 0 -844 398 23 10 270 300 10 0 172 -845 90 296 20 166 196 0 0 1029 -846 386 13 10 337 367 0 0 1008 -847 115 465 10 262 292 10 0 182 -848 473 475 10 417 447 10 0 392 -849 275 42 30 238 268 10 0 558 -850 286 356 30 111 141 10 0 214 -851 15 69 -10 296 326 10 640 0 -852 267 44 -27 256 286 10 441 0 -853 243 399 -10 235 265 10 107 0 -854 390 249 -10 582 612 10 954 0 -855 210 391 30 146 176 10 0 440 -856 433 15 20 297 327 10 0 729 -857 24 259 -20 370 400 10 469 0 -858 12 463 -20 361 391 10 589 0 -859 237 213 10 147 177 10 0 166 -860 182 480 31 365 395 10 0 13 -861 409 88 -10 270 300 10 171 0 -862 244 368 -10 414 444 10 148 0 -863 381 328 12 717 747 10 0 398 -864 213 185 21 74 104 10 0 44 -865 482 141 -10 1011 1041 10 219 0 -866 319 124 20 178 208 10 0 721 -867 141 431 30 218 248 10 0 466 -868 198 264 -20 140 170 10 976 0 -869 69 334 30 206 236 10 0 130 -870 299 98 30 167 197 10 0 553 -871 240 250 -10 37 67 10 793 0 -872 199 203 -8 1457 1487 10 879 0 -873 459 17 20 411 441 10 0 661 -874 423 217 20 242 272 10 0 794 -875 477 179 20 237 267 10 0 599 -876 213 397 -10 217 247 10 238 0 -877 405 187 -24 1251 1281 10 956 0 -878 269 402 20 203 233 10 0 37 -879 53 204 8 1055 1085 10 0 872 -880 13 394 -17 373 403 10 147 0 -881 15 68 10 303 333 10 0 204 -882 56 268 28 1064 1094 10 0 433 -883 360 184 -20 221 251 10 588 0 -884 307 102 40 210 240 10 0 557 -885 130 57 40 232 262 10 0 759 -886 250 328 -20 249 279 10 11 0 -887 91 231 30 200 230 10 0 684 -888 479 176 20 240 270 10 0 245 -889 420 224 10 429 459 10 0 757 -890 461 182 13 629 659 10 0 447 -891 418 218 20 267 297 10 0 384 -892 419 418 -10 249 279 10 798 0 -893 336 493 -19 1493 1523 10 656 0 -894 389 300 -24 154 184 10 556 0 -895 92 76 -24 1139 1169 10 294 0 -896 476 102 20 336 366 0 0 1006 -897 418 399 20 438 468 10 0 332 -898 109 56 27 239 269 10 0 935 -899 13 465 -20 774 804 10 268 0 -900 92 232 10 177 207 10 0 18 -901 394 47 -30 313 343 10 676 0 -902 16 287 12 271 301 10 0 43 -903 399 102 20 267 297 10 0 455 -904 143 158 12 141 171 10 0 254 -905 18 484 10 329 359 10 0 624 -906 250 411 30 188 218 10 0 761 -907 19 273 25 1017 1047 10 0 369 -908 365 28 9 268 298 10 0 380 -909 387 297 10 144 174 10 0 532 -910 433 447 -25 794 824 10 58 0 -911 214 274 24 1369 1399 0 0 1017 -912 489 338 -20 1397 1427 10 215 0 -913 130 494 -19 759 789 10 642 0 -914 23 67 30 389 419 10 0 99 -915 374 489 -26 269 299 10 88 0 -916 126 30 10 272 302 10 0 411 -917 112 467 10 276 306 10 0 61 -918 489 274 -40 534 564 10 26 0 -919 61 214 -16 342 372 10 988 0 -920 166 440 12 207 237 0 0 1019 -921 56 75 -30 1438 1468 10 788 0 -922 210 276 5 47 77 10 0 835 -923 80 286 -20 224 254 10 818 0 -924 17 459 10 422 452 10 0 119 -925 66 448 10 270 300 0 0 1028 -926 351 128 -20 1253 1283 10 517 0 -927 352 176 -9 126 156 10 477 0 -928 490 286 29 522 552 10 0 520 -929 247 219 17 31 61 10 0 686 -930 86 268 10 217 247 10 0 302 -931 398 329 17 167 197 10 0 473 -932 272 402 10 160 190 10 0 590 -933 317 123 20 190 220 10 0 819 -934 408 318 -10 643 673 10 146 0 -935 66 31 -27 1048 1078 10 898 0 -936 425 448 -18 794 824 10 104 0 -937 35 304 30 221 251 10 0 995 -938 471 94 30 999 1029 10 0 978 -939 470 473 -10 431 461 10 297 0 -940 224 56 13 1186 1216 0 0 1041 -941 343 47 20 277 307 10 0 570 -942 52 18 28 857 887 10 0 506 -943 16 68 20 314 344 10 0 266 -944 195 185 20 112 142 10 0 425 -945 92 236 -20 258 288 10 627 0 -946 76 462 -10 956 986 10 740 0 -947 124 56 20 231 261 10 0 827 -948 481 454 14 320 350 10 0 200 -949 477 483 20 366 396 10 0 658 -950 481 124 10 283 313 10 0 963 -951 389 156 27 716 746 0 0 1022 -952 384 16 20 351 381 10 0 790 -953 492 34 5 811 841 10 0 749 -954 371 200 10 224 254 10 0 854 -955 153 235 10 98 128 10 0 979 -956 428 202 24 904 934 10 0 877 -957 257 391 -14 1633 1663 10 76 0 -958 421 218 -20 254 284 10 233 0 -959 206 186 -20 188 218 10 808 0 -960 393 301 30 178 208 10 0 472 -961 204 187 30 175 205 0 0 1031 -962 468 475 10 313 343 10 0 83 -963 477 122 -10 330 360 10 950 0 -964 100 66 -25 1400 1430 10 497 0 -965 489 27 10 421 451 10 0 519 -966 12 451 20 311 341 10 0 783 -967 197 270 -20 96 126 10 464 0 -968 311 422 -27 988 1018 10 4 0 -969 489 17 -20 380 410 10 267 0 -970 13 214 -29 1354 1384 10 177 0 -971 440 247 20 253 283 10 0 683 -972 28 467 -21 1343 1373 10 185 0 -973 388 325 -30 263 293 10 389 0 -974 270 401 -15 152 182 10 370 0 -975 5 445 30 313 343 10 0 283 -976 198 271 20 84 114 10 0 868 -977 480 131 5 688 718 10 0 399 -978 437 98 -30 1114 1144 10 938 0 -979 131 246 -10 832 862 10 955 0 -980 49 437 7 427 457 10 0 255 -981 270 49 30 292 322 10 0 118 -982 337 41 -10 1002 1032 10 533 0 -983 318 280 20 97 127 10 0 430 -984 154 392 9 171 201 10 0 668 -985 493 111 -5 541 571 10 16 0 -986 399 450 20 359 389 10 0 712 -987 67 452 30 272 302 10 0 309 -988 34 239 16 219 249 10 0 919 -989 343 276 15 96 126 10 0 188 -990 393 12 10 309 339 10 0 643 -991 236 247 -10 52 82 10 230 0 -992 340 291 -10 470 500 10 352 0 -993 3 292 20 256 286 10 0 100 -994 209 68 -14 1568 1598 10 652 0 -995 18 225 -30 691 721 10 937 0 -996 147 435 -9 245 275 10 437 0 -997 335 99 -10 1218 1248 10 175 0 -998 485 24 20 326 356 10 0 110 -999 470 475 30 314 344 10 0 3 -1000 341 58 10 224 254 10 0 274 -1001 25 499 -10 445 475 10 9 0 -1002 364 173 -30 180 210 10 405 0 -1003 87 3 -13 1433 1463 10 151 0 -1004 248 251 -20 2 32 10 176 0 -1005 478 118 -20 354 384 10 665 0 -1006 476 102 -20 336 366 10 896 0 -1007 21 68 -20 401 431 10 572 0 -1008 386 13 -10 337 367 10 846 0 -1009 386 154 -31 1101 1131 10 159 0 -1010 208 396 -20 176 206 10 679 0 -1011 481 84 -17 506 536 10 571 0 -1012 408 84 -10 284 314 10 638 0 -1013 397 57 -17 1476 1506 10 726 0 -1014 225 369 -38 121 151 10 581 0 -1015 226 191 -20 93 123 10 501 0 -1016 59 457 -30 334 364 10 689 0 -1017 214 274 -24 1369 1399 10 911 0 -1018 330 371 -1 559 589 10 265 0 -1019 166 440 -12 207 237 10 920 0 -1020 37 281 -17 493 523 10 511 0 -1021 394 322 -12 1025 1055 10 631 0 -1022 389 156 -27 716 746 10 951 0 -1023 240 34 -28 1560 1590 10 836 0 -1024 228 260 -12 1606 1636 10 735 0 -1025 130 140 -17 194 224 10 27 0 -1026 132 55 -10 267 297 10 653 0 -1027 445 237 -10 200 230 10 692 0 -1028 66 448 -10 270 300 10 925 0 -1029 90 296 -20 166 196 10 845 0 -1030 33 286 -11 1546 1576 10 221 0 -1031 204 187 -30 175 205 10 961 0 -1032 105 181 -19 1531 1561 10 536 0 -1033 141 426 -23 531 561 10 666 0 -1034 347 54 -10 295 325 10 22 0 -1035 449 428 -25 1247 1277 10 802 0 -1036 305 107 -20 225 255 10 762 0 -1037 313 493 -20 1193 1223 10 485 0 -1038 217 207 -26 1382 1412 10 714 0 -1039 321 277 -10 75 105 10 542 0 -1040 297 283 -28 1349 1379 10 296 0 -1041 224 56 -13 1186 1216 10 940 0 -1042 464 13 -20 385 415 10 183 0 -1043 361 181 -20 197 227 10 514 0 -1044 281 96 -1 1126 1156 10 654 0 -1045 435 268 -10 312 342 10 777 0 -1046 399 301 -30 194 224 10 755 0 -1047 360 284 -19 667 697 10 738 0 -1048 377 385 -6 866 896 10 498 0 -1049 88 287 -30 263 293 10 805 0 -1050 125 61 -26 612 642 10 632 0 -1051 94 235 -20 156 186 10 116 0 -1052 111 459 -20 359 389 10 197 0 -1053 307 412 -8 404 434 10 617 0 -1054 203 211 -20 1306 1336 10 396 0 diff --git a/jsprit-instances/instances/lilim/1000/LRC11010.txt b/jsprit-instances/instances/lilim/1000/LRC11010.txt deleted file mode 100644 index 0c4ddbd18..000000000 --- a/jsprit-instances/instances/lilim/1000/LRC11010.txt +++ /dev/null @@ -1,1046 +0,0 @@ -250 200 1 -0 250 250 0 0 1821 0 0 0 -1 440 436 18 832 982 10 0 802 -2 214 394 10 171 321 10 0 734 -3 476 483 -20 324 474 10 200 0 -4 352 487 -22 842 992 10 277 0 -5 230 197 40 62 212 10 0 248 -6 175 239 -10 75 225 10 374 0 -7 133 202 -22 401 551 10 199 0 -8 328 458 -10 708 858 10 82 0 -9 25 499 -30 385 535 10 318 0 -10 226 423 -20 174 324 10 440 0 -11 313 282 20 103 253 10 0 983 -12 60 454 10 287 437 10 0 157 -13 239 486 -20 1422 1572 10 465 0 -14 102 264 -10 148 298 10 955 0 -15 408 452 -10 256 406 10 297 0 -16 451 62 5 275 425 10 0 365 -17 203 390 -20 147 297 10 311 0 -18 92 233 10 164 314 10 0 614 -19 7 300 30 285 435 10 0 535 -20 409 90 20 225 375 10 0 445 -21 307 108 10 177 327 10 0 325 -22 347 54 10 235 385 10 0 553 -23 406 87 10 253 403 10 0 769 -24 371 332 14 470 620 10 0 826 -25 116 466 -10 254 404 10 847 0 -26 441 265 40 191 341 10 0 215 -27 130 140 17 162 312 10 0 137 -28 80 117 24 764 914 10 0 759 -29 421 387 -17 741 891 10 931 0 -30 83 300 -10 440 590 10 618 0 -31 136 52 10 233 383 10 0 310 -32 18 462 -32 338 488 10 812 0 -33 390 120 -9 944 1094 10 477 0 -34 188 119 -15 915 1065 10 730 0 -35 467 114 10 316 466 10 0 331 -36 440 292 -11 880 1030 10 794 0 -37 268 400 20 183 333 10 0 324 -38 391 202 14 148 298 10 0 390 -39 377 432 -6 771 921 10 498 0 -40 80 290 -30 174 324 10 805 0 -41 439 15 -10 301 451 10 167 0 -42 307 52 -27 860 1010 10 470 0 -43 111 192 -10 1139 1289 10 408 0 -44 131 56 -40 227 377 10 885 0 -45 88 286 10 192 342 10 0 302 -46 69 414 -4 1203 1353 10 348 0 -47 41 232 16 209 359 10 0 688 -48 323 77 -30 1345 1495 10 676 0 -49 340 416 36 261 411 10 0 807 -50 86 199 23 218 368 10 0 145 -51 314 124 20 171 321 10 0 235 -52 375 191 -30 138 288 10 162 0 -53 226 175 23 1583 1733 10 0 317 -54 242 106 28 1208 1358 10 0 765 -55 417 417 10 272 422 10 0 473 -56 419 459 -10 268 418 10 582 0 -57 389 11 -9 276 426 10 908 0 -58 450 416 -15 517 667 10 194 0 -59 246 255 -30 53 203 10 779 0 -60 71 333 -20 197 347 10 845 0 -61 105 474 27 411 561 10 0 697 -62 20 489 -10 331 481 10 624 0 -63 388 331 20 160 310 10 0 758 -64 92 259 -20 339 489 10 160 0 -65 200 261 10 106 256 10 0 868 -66 400 288 30 154 304 10 0 216 -67 299 285 -29 1194 1344 10 70 0 -68 378 199 -10 147 297 10 602 0 -69 325 147 -18 1127 1277 10 502 0 -70 421 386 29 764 914 10 0 67 -71 404 447 20 250 400 10 0 910 -72 412 478 7 900 1050 10 0 460 -73 26 67 -30 1257 1407 10 914 0 -74 358 183 20 174 324 10 0 883 -75 30 302 10 226 376 10 0 382 -76 176 470 -20 487 637 10 996 0 -77 96 270 -20 155 305 10 818 0 -78 243 408 -10 1374 1524 10 549 0 -79 60 29 32 1303 1453 10 0 156 -80 34 169 -20 424 574 10 627 0 -81 407 280 10 159 309 10 0 693 -82 277 403 10 155 305 10 0 8 -83 498 456 27 1339 1489 0 0 1003 -84 384 491 20 288 438 10 0 680 -85 355 174 -11 655 805 10 429 0 -86 97 288 -17 1224 1374 10 817 0 -87 316 284 20 74 224 10 0 224 -88 334 403 26 174 324 10 0 656 -89 415 223 -10 245 395 10 731 0 -90 230 320 -5 1132 1282 10 442 0 -91 432 199 7 579 729 10 0 191 -92 92 18 -32 1064 1214 10 687 0 -93 273 300 -20 55 205 10 659 0 -94 269 112 -23 1203 1353 10 667 0 -95 429 389 18 364 514 10 0 432 -96 371 71 21 227 377 10 0 236 -97 5 297 -20 271 421 10 615 0 -98 414 378 -30 435 585 10 537 0 -99 38 15 3 1031 1181 10 0 151 -100 2 295 -10 252 402 10 421 0 -101 237 254 -10 23 173 10 871 0 -102 54 445 10 276 426 10 0 664 -103 382 110 24 1052 1202 10 0 531 -104 438 488 18 303 453 10 0 290 -105 395 331 -10 166 316 10 973 0 -106 230 487 20 1070 1220 10 0 622 -107 249 407 -15 157 307 10 370 0 -108 488 26 -10 373 523 10 969 0 -109 151 81 -4 1466 1616 10 423 0 -110 483 14 10 331 481 10 0 504 -111 0 422 -20 761 911 10 376 0 -112 429 67 16 672 822 10 0 620 -113 195 464 20 1441 1591 0 0 1016 -114 356 256 19 106 256 10 0 481 -115 264 180 33 1590 1740 0 0 1040 -116 94 235 -10 156 306 10 355 0 -117 474 96 30 271 421 10 0 998 -118 268 52 10 246 396 10 0 568 -119 44 440 24 729 879 10 0 182 -120 7 382 -14 710 860 10 496 0 -121 459 53 20 1062 1212 10 0 132 -122 491 25 -20 349 499 10 288 0 -123 439 243 20 254 404 10 0 573 -124 210 185 20 76 226 10 0 314 -125 150 68 23 363 513 10 0 663 -126 201 270 10 52 202 0 0 1042 -127 0 188 -16 872 1022 10 988 0 -128 103 464 -6 1213 1363 10 913 0 -129 325 56 -10 736 886 10 819 0 -130 44 344 -20 1019 1169 10 381 0 -131 418 75 -10 388 538 10 638 0 -132 472 57 -20 1235 1385 10 121 0 -133 460 328 13 224 374 10 0 577 -134 89 270 -10 162 312 10 424 0 -135 374 190 20 137 287 10 0 360 -136 463 253 -20 987 1137 10 486 0 -137 97 93 -17 219 369 10 27 0 -138 163 472 9 593 743 0 0 1014 -139 29 336 22 272 422 10 0 880 -140 84 453 -18 1163 1313 10 946 0 -141 294 421 -29 1485 1635 10 968 0 -142 343 62 10 297 447 10 0 781 -143 371 193 20 133 283 10 0 806 -144 142 372 18 162 312 0 0 1024 -145 66 88 -23 770 920 10 50 0 -146 395 332 -30 166 316 10 201 0 -147 93 413 17 226 376 10 0 340 -148 267 394 10 199 349 10 0 240 -149 249 258 -20 67 217 10 176 0 -150 472 129 10 252 402 10 0 361 -151 87 3 -3 1366 1516 10 99 0 -152 62 326 -20 226 376 10 334 0 -153 212 186 -18 1587 1737 10 415 0 -154 241 402 -40 965 1115 10 225 0 -155 439 266 10 189 339 0 0 1027 -156 79 80 -32 1322 1472 10 79 0 -157 62 453 -10 276 426 10 12 0 -158 188 151 -10 1237 1387 10 621 0 -159 386 154 -13 1041 1191 10 379 0 -160 38 301 20 236 386 10 0 64 -161 192 265 10 64 214 10 0 872 -162 371 192 30 134 284 10 0 52 -163 64 294 12 1041 1191 0 0 1020 -164 381 494 -10 276 426 10 681 0 -165 437 12 -5 302 452 10 901 0 -166 186 135 24 658 808 10 0 652 -167 459 10 10 318 468 10 0 41 -168 175 422 -20 1386 1536 10 220 0 -169 274 48 10 203 353 10 0 849 -170 488 173 -20 250 400 10 888 0 -171 398 97 10 212 362 10 0 997 -172 385 17 -10 749 899 10 282 0 -173 180 283 23 684 834 10 0 590 -174 71 12 2 297 447 10 0 942 -175 343 49 -12 221 371 10 720 0 -176 248 251 20 2 152 10 0 149 -177 7 194 -19 891 1041 10 857 0 -178 322 290 -23 1419 1569 10 398 0 -179 410 399 25 218 368 10 0 897 -180 398 103 30 218 368 10 0 814 -181 385 285 -10 808 958 10 532 0 -182 179 497 -24 1351 1501 10 119 0 -183 464 13 -20 325 475 10 873 0 -184 492 335 -10 768 918 10 188 0 -185 27 464 -9 1231 1381 10 739 0 -186 231 29 -18 1166 1316 10 558 0 -187 157 38 -18 988 1138 10 333 0 -188 439 268 10 238 388 10 0 184 -189 149 214 7 422 572 10 0 259 -190 187 73 18 232 382 10 0 543 -191 429 169 -7 843 993 10 91 0 -192 350 199 -27 1141 1291 10 951 0 -193 60 231 -14 966 1116 10 319 0 -194 448 404 15 539 689 10 0 58 -195 481 20 -20 325 475 10 231 0 -196 436 25 -20 1222 1372 10 242 0 -197 111 459 -20 299 449 10 837 0 -198 389 17 -10 306 456 10 990 0 -199 148 208 22 466 616 10 0 7 -200 475 477 20 345 495 10 0 3 -201 390 325 30 191 341 10 0 146 -202 346 354 8 757 907 10 0 284 -203 91 266 10 173 323 0 0 1034 -204 17 65 20 297 447 10 0 266 -205 391 112 -20 940 1090 10 903 0 -206 224 203 20 53 203 10 0 391 -207 426 231 -10 968 1118 10 300 0 -208 260 472 -35 976 1126 10 439 0 -209 265 0 -14 836 986 10 564 0 -210 391 293 -10 166 316 10 894 0 -211 411 421 -8 255 405 10 724 0 -212 132 30 20 266 416 10 0 413 -213 475 480 -10 321 471 10 962 0 -214 286 244 -12 1224 1374 10 384 0 -215 436 237 -40 186 336 10 26 0 -216 402 284 -30 155 305 10 66 0 -217 287 397 -10 504 654 10 932 0 -218 272 420 -7 1326 1476 10 475 0 -219 477 120 -30 282 432 10 824 0 -220 145 434 20 211 361 10 0 168 -221 33 286 -30 1442 1592 10 243 0 -222 370 262 15 1039 1189 10 0 541 -223 393 20 -10 331 481 10 846 0 -224 330 308 -20 1110 1260 10 87 0 -225 246 398 40 148 298 10 0 154 -226 482 184 14 1047 1197 10 0 648 -227 451 305 -10 208 358 10 492 0 -228 226 316 21 70 220 10 0 886 -229 110 459 30 288 438 10 0 752 -230 244 250 10 6 156 10 0 991 -231 458 16 20 313 463 10 0 195 -232 390 34 7 1000 1150 10 0 580 -233 423 214 -20 176 326 10 891 0 -234 219 215 32 46 196 10 0 959 -235 326 118 -20 152 302 10 51 0 -236 365 74 -21 788 938 10 96 0 -237 331 356 13 652 802 10 0 597 -238 210 398 -18 153 303 10 281 0 -239 403 93 -10 281 431 10 321 0 -240 248 404 -10 154 304 10 148 0 -241 65 62 15 916 1066 10 0 921 -242 460 13 20 316 466 10 0 196 -243 0 293 30 253 403 10 0 221 -244 211 248 26 39 189 10 0 610 -245 484 174 -10 246 396 10 756 0 -246 175 352 -11 1535 1685 10 785 0 -247 455 168 -31 807 957 10 592 0 -248 224 191 -40 64 214 10 5 0 -249 439 156 -19 466 616 10 778 0 -250 434 359 -10 1332 1482 10 516 0 -251 118 314 -20 278 428 10 976 0 -252 234 246 10 16 166 10 0 547 -253 406 450 20 253 403 10 0 262 -254 75 118 -30 349 499 10 788 0 -255 115 395 -9 755 905 10 984 0 -256 329 456 19 220 370 10 0 378 -257 218 403 -10 1259 1409 10 487 0 -258 149 341 6 344 494 10 0 626 -259 253 74 -7 1290 1440 10 189 0 -260 436 241 -20 267 417 10 971 0 -261 238 203 10 48 198 10 0 344 -262 405 455 -20 281 431 10 253 0 -263 485 27 10 386 536 10 0 965 -264 323 118 -20 150 300 10 933 0 -265 330 371 -22 499 649 10 992 0 -266 25 65 -20 316 466 10 204 0 -267 406 96 -10 219 369 10 523 0 -268 49 451 20 284 434 10 0 366 -269 307 249 -24 1317 1467 10 556 0 -270 178 135 21 1454 1604 0 0 1028 -271 299 353 34 114 264 0 0 1018 -272 236 213 20 39 189 10 0 501 -273 355 177 -20 127 277 10 514 0 -274 394 23 -20 344 494 10 952 0 -275 306 235 25 57 207 10 0 757 -276 90 477 18 277 427 10 0 335 -277 379 486 22 612 762 10 0 4 -278 435 16 10 307 457 10 0 546 -279 8 497 -10 348 498 10 489 0 -280 150 484 16 565 715 10 0 357 -281 213 399 18 174 324 10 0 238 -282 391 18 10 318 468 10 0 172 -283 111 392 18 1109 1259 0 0 1023 -284 330 281 -8 1270 1420 10 202 0 -285 344 203 14 107 257 10 0 405 -286 91 235 10 209 359 10 0 497 -287 346 60 -10 261 411 10 1000 0 -288 483 27 20 398 548 10 0 122 -289 382 498 -30 280 430 10 639 0 -290 457 492 -18 448 598 10 104 0 -291 291 213 -30 1198 1348 10 316 0 -292 154 374 -23 877 1027 10 666 0 -293 225 196 10 59 209 10 0 706 -294 94 40 -16 1008 1158 10 372 0 -295 0 356 13 1026 1176 10 0 766 -296 297 283 -30 1289 1439 10 402 0 -297 371 423 10 211 361 10 0 15 -298 417 217 30 170 320 10 0 801 -299 500 228 8 722 872 10 0 775 -300 412 214 10 165 315 10 0 207 -301 442 289 25 195 345 10 0 338 -302 157 269 -10 1516 1666 10 45 0 -303 440 241 10 241 391 10 0 690 -304 100 266 20 150 300 10 0 414 -305 111 178 -35 156 306 10 508 0 -306 91 101 -20 238 388 10 525 0 -307 25 307 10 232 382 10 0 569 -308 135 400 20 239 389 10 0 770 -309 58 458 10 283 433 10 0 689 -310 133 26 -10 252 402 10 31 0 -311 211 386 20 141 291 10 0 17 -312 94 97 -20 218 368 10 342 0 -313 30 155 -10 1220 1370 10 640 0 -314 208 184 -20 78 228 10 124 0 -315 394 333 20 166 316 10 0 545 -316 355 180 30 126 276 10 0 291 -317 241 180 -23 1591 1741 10 53 0 -318 21 485 30 328 478 10 0 9 -319 80 251 14 244 394 10 0 193 -320 476 61 36 389 539 0 0 1004 -321 406 94 10 220 370 10 0 239 -322 364 71 5 1288 1438 10 0 726 -323 418 221 10 231 381 10 0 677 -324 274 441 -20 635 785 10 37 0 -325 304 97 -10 162 312 10 21 0 -326 297 102 10 155 305 10 0 636 -327 250 405 20 155 305 10 0 853 -328 111 463 20 262 412 10 0 628 -329 408 279 20 160 310 10 0 341 -330 263 418 -20 218 368 10 878 0 -331 480 119 -10 568 718 10 35 0 -332 420 383 27 922 1072 10 0 662 -333 142 14 18 775 925 10 0 187 -334 73 328 20 193 343 10 0 152 -335 50 438 -18 277 427 10 276 0 -336 441 7 -10 332 482 10 452 0 -337 462 14 20 337 487 10 0 454 -338 360 294 -25 1358 1508 10 301 0 -339 58 39 -26 1103 1253 10 632 0 -340 58 391 -17 822 972 10 147 0 -341 410 285 -20 163 313 10 329 0 -342 96 97 20 217 367 10 0 312 -343 21 64 -10 295 445 10 851 0 -344 238 210 -10 74 224 10 261 0 -345 479 121 10 262 412 10 0 784 -346 200 178 -20 87 237 10 500 0 -347 216 341 -10 594 744 10 507 0 -348 48 437 4 744 894 10 0 46 -349 200 270 20 53 203 10 0 509 -350 357 181 -20 127 277 10 588 0 -351 476 174 30 264 414 10 0 599 -352 400 286 10 154 304 10 0 603 -353 351 481 10 262 412 10 0 404 -354 270 400 10 151 301 10 0 957 -355 95 234 10 155 305 10 0 116 -356 128 113 -25 303 453 10 388 0 -357 133 455 -16 748 898 10 280 0 -358 16 463 20 316 466 10 0 972 -359 59 388 -19 603 753 10 642 0 -360 376 190 -20 139 289 10 135 0 -361 481 122 -10 264 414 10 150 0 -362 266 405 20 157 307 10 0 761 -363 374 232 33 125 275 10 0 956 -364 398 20 20 273 423 10 0 844 -365 481 26 -5 321 471 10 16 0 -366 63 444 -20 320 470 10 268 0 -367 89 290 -20 165 315 10 737 0 -368 246 314 -21 1385 1535 10 451 0 -369 40 304 -30 1085 1235 10 937 0 -370 262 369 15 119 269 10 0 107 -371 323 29 7 1077 1227 10 0 403 -372 89 65 16 660 810 10 0 294 -373 144 35 26 239 389 10 0 994 -374 200 265 10 92 242 10 0 6 -375 436 264 20 186 336 10 0 428 -376 15 457 20 313 463 10 0 111 -377 397 20 20 272 422 10 0 682 -378 328 491 -19 618 768 10 256 0 -379 399 175 13 687 837 10 0 159 -380 432 2 -20 407 557 10 856 0 -381 63 336 20 206 356 10 0 130 -382 6 296 -10 260 410 10 75 0 -383 146 376 8 174 324 10 0 387 -384 295 247 12 1243 1393 10 0 214 -385 235 33 -20 1277 1427 10 528 0 -386 233 204 -10 49 199 10 695 0 -387 142 360 -8 1472 1622 10 383 0 -388 177 156 25 119 269 10 0 356 -389 315 287 -30 88 238 10 792 0 -390 452 172 -14 548 698 10 38 0 -391 263 153 -20 352 502 10 206 0 -392 493 493 -20 796 946 10 773 0 -393 320 283 -10 77 227 10 771 0 -394 64 5 -18 1069 1219 10 506 0 -395 95 235 10 155 305 10 0 945 -396 203 211 20 1246 1396 10 0 420 -397 16 497 20 366 516 10 0 747 -398 348 348 23 875 1025 10 0 178 -399 485 104 -10 734 884 10 675 0 -400 330 147 -10 788 938 10 767 0 -401 443 237 20 193 343 10 0 600 -402 316 286 30 77 227 10 0 296 -403 335 46 -7 1282 1432 10 371 0 -404 381 495 -10 277 427 10 353 0 -405 364 173 -14 137 287 10 285 0 -406 267 162 -25 1389 1539 10 584 0 -407 214 245 8 36 186 10 0 993 -408 92 234 10 175 325 10 0 43 -409 347 459 -5 419 569 10 741 0 -410 30 7 -8 1129 1279 10 717 0 -411 120 37 28 715 865 10 0 526 -412 397 153 29 822 972 0 0 1029 -413 210 29 -20 991 1141 10 212 0 -414 87 285 -20 181 331 10 304 0 -415 132 32 18 724 874 10 0 153 -416 390 294 20 177 327 10 0 691 -417 67 451 -7 1156 1306 10 980 0 -418 24 68 -10 354 504 10 816 0 -419 146 439 10 215 365 10 0 860 -420 209 212 -20 1468 1618 10 396 0 -421 6 292 10 247 397 10 0 100 -422 18 63 -10 297 447 10 881 0 -423 149 98 4 1105 1255 10 0 109 -424 91 268 10 185 335 10 0 134 -425 103 177 -16 566 716 10 772 0 -426 367 178 20 137 287 10 0 519 -427 225 269 -30 1211 1361 10 838 0 -428 443 246 -20 193 343 10 375 0 -429 306 42 11 417 567 10 0 85 -430 374 306 -12 934 1084 10 631 0 -431 413 421 10 243 393 0 0 1017 -432 470 405 -18 866 1016 10 95 0 -433 33 278 -8 1427 1577 10 438 0 -434 149 458 -25 1104 1254 10 815 0 -435 257 57 -24 1166 1316 10 633 0 -436 272 403 -20 154 304 10 974 0 -437 221 291 9 50 200 10 0 581 -438 1 101 8 1197 1347 10 0 433 -439 332 459 35 309 459 10 0 208 -440 220 392 20 198 348 10 0 10 -441 253 50 27 200 350 10 0 810 -442 250 441 5 696 846 10 0 90 -443 471 484 10 321 471 10 0 949 -444 480 152 26 962 1112 10 0 611 -445 404 83 -20 238 388 10 20 0 -446 476 94 -10 274 424 10 813 0 -447 458 213 -10 1068 1218 10 768 0 -448 215 395 20 182 332 10 0 657 -449 85 288 20 169 319 10 0 923 -450 179 75 -12 680 830 10 904 0 -451 228 287 21 43 193 10 0 368 -452 397 18 10 274 424 10 0 336 -453 238 204 -17 47 197 10 929 0 -454 488 3 -20 343 493 10 337 0 -455 407 88 -20 264 414 10 861 0 -456 459 14 20 315 465 10 0 829 -457 120 17 -20 266 416 10 479 0 -458 235 316 -20 596 746 10 679 0 -459 370 382 -30 824 974 10 702 0 -460 405 454 -7 1243 1393 10 72 0 -461 17 458 10 373 523 10 0 783 -462 43 135 31 236 386 10 0 488 -463 318 497 21 794 944 10 0 893 -464 199 268 20 54 204 10 0 647 -465 111 467 20 257 407 10 0 13 -466 138 438 20 227 377 10 0 920 -467 172 314 -22 485 635 10 484 0 -468 494 468 -10 327 477 10 671 0 -469 35 303 20 221 371 10 0 513 -470 341 59 27 730 880 10 0 42 -471 423 221 -20 198 348 10 629 0 -472 395 295 -30 151 301 10 960 0 -473 413 417 -10 296 446 10 55 0 -474 339 60 20 209 359 10 0 721 -475 277 428 7 430 580 10 0 218 -476 176 199 -10 89 239 10 754 0 -477 265 240 9 18 168 10 0 33 -478 365 190 22 1417 1567 0 0 1013 -479 133 53 20 229 379 10 0 457 -480 387 488 20 302 452 0 0 1011 -481 385 295 -19 142 292 10 114 0 -482 491 369 28 670 820 10 0 843 -483 445 273 20 198 348 0 0 1005 -484 195 273 22 59 209 10 0 467 -485 313 493 -8 1133 1283 10 617 0 -486 495 227 20 284 434 10 0 136 -487 241 403 10 160 310 10 0 257 -488 30 72 -31 372 522 10 462 0 -489 21 487 10 329 479 10 0 279 -490 324 99 -20 278 428 10 762 0 -491 453 318 30 314 464 10 0 598 -492 443 272 10 210 360 10 0 227 -493 447 184 -37 364 514 10 672 0 -494 366 288 29 624 774 0 0 1041 -495 440 284 -12 792 942 10 718 0 -496 13 314 14 245 395 10 0 120 -497 72 227 -10 504 654 10 286 0 -498 377 385 6 806 956 10 0 39 -499 477 478 -30 332 482 10 999 0 -500 204 185 20 103 253 10 0 346 -501 226 191 -20 63 213 10 272 0 -502 330 138 18 1050 1200 10 0 69 -503 185 434 -30 514 664 10 839 0 -504 483 22 -10 325 475 10 110 0 -505 71 282 -40 582 732 10 803 0 -506 60 5 18 984 1134 10 0 394 -507 189 402 10 476 626 10 0 347 -508 134 211 35 122 272 10 0 305 -509 146 313 -20 1135 1285 10 349 0 -510 21 146 -10 427 577 10 900 0 -511 37 281 -10 433 583 10 684 0 -512 416 417 -20 283 433 10 774 0 -513 44 311 -20 347 497 10 469 0 -514 361 181 20 137 287 10 0 273 -515 444 242 -10 194 344 10 713 0 -516 444 271 10 195 345 10 0 250 -517 359 179 20 130 280 10 0 669 -518 388 334 -20 161 311 10 685 0 -519 401 164 -20 561 711 10 426 0 -520 499 316 -29 562 712 10 928 0 -521 399 106 20 242 392 10 0 841 -522 425 215 10 178 328 10 0 711 -523 407 98 10 218 368 10 0 267 -524 406 460 -25 659 809 10 712 0 -525 88 95 20 224 374 10 0 306 -526 95 64 -28 706 856 10 411 0 -527 306 229 10 1260 1410 0 0 1022 -528 273 55 20 196 346 10 0 385 -529 384 149 -9 1137 1287 10 674 0 -530 122 35 -27 250 400 10 898 0 -531 308 199 -24 1448 1598 10 103 0 -532 390 301 10 149 299 10 0 181 -533 300 108 10 150 300 10 0 941 -534 267 400 -30 172 322 10 850 0 -535 8 300 -30 296 446 10 19 0 -536 105 181 19 1471 1621 0 0 1035 -537 398 325 30 173 323 10 0 98 -538 166 247 1 84 234 10 0 995 -539 140 431 30 211 361 10 0 825 -540 253 118 19 487 637 10 0 557 -541 359 246 -15 1363 1513 10 222 0 -542 321 277 10 75 225 10 0 989 -543 168 59 -18 306 456 10 190 0 -544 406 285 -20 159 309 10 567 0 -545 391 334 -20 164 314 10 315 0 -546 437 19 -10 954 1104 10 278 0 -547 201 278 -10 56 206 10 252 0 -548 435 267 20 263 413 10 0 764 -549 245 408 10 158 308 10 0 78 -550 16 462 10 326 476 10 0 899 -551 107 374 -29 854 1004 10 668 0 -552 477 97 10 273 423 0 0 1010 -553 346 57 -10 248 398 10 22 0 -554 14 459 20 315 465 10 0 589 -555 102 6 3 1376 1526 0 0 1002 -556 359 287 24 115 265 10 0 269 -557 297 131 -19 1105 1255 10 540 0 -558 282 1 18 982 1132 10 0 186 -559 21 70 -24 711 861 10 694 0 -560 440 244 10 206 356 10 0 692 -561 482 104 19 747 897 10 0 780 -562 120 261 5 733 883 10 0 979 -563 125 29 -10 253 403 10 653 0 -564 292 32 14 222 372 10 0 209 -565 262 92 -23 570 720 10 578 0 -566 68 160 -8 1076 1226 10 832 0 -567 405 276 20 174 324 10 0 544 -568 277 50 -10 201 351 10 118 0 -569 32 319 -10 341 491 10 307 0 -570 344 70 -8 1086 1236 10 982 0 -571 481 84 -20 446 596 10 576 0 -572 21 68 20 341 491 10 0 943 -573 441 244 -20 217 367 10 123 0 -574 57 43 15 963 1113 10 0 935 -575 1 293 10 252 402 10 0 842 -576 481 96 20 277 427 10 0 571 -577 471 368 -13 368 518 10 133 0 -578 236 126 23 124 274 10 0 565 -579 406 99 20 217 367 10 0 594 -580 303 186 -7 1294 1444 10 232 0 -581 225 369 -9 121 271 10 437 0 -582 412 453 10 259 409 10 0 56 -583 104 349 -30 949 1099 10 867 0 -584 173 182 25 102 252 10 0 406 -585 111 464 10 255 405 10 0 740 -586 53 440 10 273 423 10 0 705 -587 69 336 -26 200 350 10 791 0 -588 359 182 20 149 299 10 0 350 -589 13 459 -20 315 465 10 554 0 -590 244 277 -23 1241 1391 10 173 0 -591 484 177 -20 245 395 10 875 0 -592 452 206 31 432 582 10 0 247 -593 22 483 30 325 475 10 0 905 -594 452 110 -20 280 430 10 579 0 -595 347 192 18 1428 1578 10 0 790 -596 95 92 20 221 371 10 0 800 -597 368 311 -13 866 1016 10 237 0 -598 479 387 -30 337 487 10 491 0 -599 479 169 -30 249 399 10 351 0 -600 497 266 -20 688 838 10 401 0 -601 66 336 -30 203 353 10 869 0 -602 376 195 10 137 287 10 0 68 -603 401 281 -10 201 351 10 352 0 -604 441 177 -10 941 1091 10 683 0 -605 231 203 -30 50 200 10 686 0 -606 21 488 10 330 480 10 0 704 -607 231 204 20 90 240 0 0 1043 -608 122 422 -20 1397 1547 10 858 0 -609 65 453 -11 274 424 10 833 0 -610 206 261 -26 122 272 10 244 0 -611 466 149 -26 1126 1276 10 444 0 -612 313 119 30 156 306 10 0 870 -613 90 274 20 161 311 10 0 882 -614 39 162 -10 505 655 10 18 0 -615 35 306 20 222 372 10 0 97 -616 437 15 -40 300 450 10 809 0 -617 307 412 8 344 494 10 0 485 -618 79 291 10 175 325 10 0 30 -619 64 437 -10 858 1008 10 917 0 -620 376 92 -16 931 1081 10 112 0 -621 129 27 10 253 403 10 0 158 -622 196 489 -20 970 1120 10 106 0 -623 51 286 -25 1399 1549 10 907 0 -624 20 488 10 330 480 10 0 62 -625 13 455 -20 313 463 10 966 0 -626 170 347 -6 376 526 10 258 0 -627 92 230 20 159 309 10 0 80 -628 117 467 -20 254 404 10 328 0 -629 413 217 20 166 316 10 0 471 -630 405 450 20 253 403 10 0 936 -631 394 322 12 965 1115 10 0 430 -632 125 61 26 552 702 10 0 339 -633 238 123 24 721 871 10 0 435 -634 11 403 18 283 433 10 0 924 -635 89 272 -20 162 312 10 823 0 -636 304 102 -10 157 307 10 326 0 -637 478 121 40 261 411 10 0 716 -638 408 84 10 229 379 10 0 131 -639 376 494 30 274 424 10 0 289 -640 20 73 10 290 440 10 0 313 -641 159 299 -5 956 1106 10 922 0 -642 95 382 19 203 353 10 0 359 -643 352 63 -12 1118 1268 10 646 0 -644 365 274 14 117 267 0 0 1031 -645 30 301 10 225 375 10 0 728 -646 351 5 12 436 586 10 0 643 -647 197 267 -20 55 205 10 464 0 -648 498 171 -14 1196 1346 10 226 0 -649 468 352 9 708 858 0 0 1012 -650 418 251 21 1137 1287 0 0 1033 -651 489 437 -10 647 797 10 939 0 -652 251 63 -24 927 1077 10 166 0 -653 132 55 10 227 377 10 0 563 -654 281 96 -12 1066 1216 10 796 0 -655 333 293 27 557 707 0 0 1039 -656 255 487 -26 338 488 10 88 0 -657 207 400 -20 156 306 10 448 0 -658 469 489 -14 495 645 10 948 0 -659 244 254 20 40 190 10 0 93 -660 233 207 10 46 196 10 0 859 -661 441 60 -20 1392 1542 10 701 0 -662 411 379 -27 1133 1283 10 332 0 -663 178 72 -23 697 847 10 125 0 -664 51 447 -10 280 430 10 102 0 -665 478 118 -10 294 444 10 736 0 -666 141 426 23 471 621 10 0 292 -667 295 89 23 682 832 10 0 94 -668 112 433 29 229 379 10 0 551 -669 320 211 -20 933 1083 10 517 0 -670 400 103 10 210 360 10 0 963 -671 408 453 10 257 407 10 0 468 -672 435 180 37 197 347 10 0 493 -673 432 66 30 1011 1161 10 0 804 -674 374 116 9 527 677 10 0 529 -675 478 102 10 271 421 10 0 399 -676 335 57 30 210 360 10 0 48 -677 385 239 -10 726 876 10 323 0 -678 386 245 -21 419 569 10 854 0 -679 208 396 20 151 301 10 0 458 -680 380 489 -20 319 469 10 84 0 -681 380 498 10 280 430 10 0 164 -682 440 7 -20 308 458 10 377 0 -683 434 245 10 282 432 10 0 604 -684 90 232 10 161 311 10 0 511 -685 389 334 20 162 312 10 0 518 -686 241 205 30 58 208 10 0 605 -687 18 24 32 568 718 10 0 92 -688 57 183 -16 1040 1190 10 47 0 -689 59 457 -10 281 431 10 309 0 -690 442 243 -10 229 379 10 303 0 -691 402 281 -20 190 340 10 416 0 -692 445 237 -10 195 345 10 560 0 -693 441 273 -10 222 372 10 81 0 -694 31 175 24 231 381 10 0 559 -695 234 202 10 50 200 10 0 386 -696 52 303 25 381 531 0 0 1025 -697 167 445 -27 1352 1502 10 61 0 -698 179 286 -30 281 431 10 967 0 -699 269 48 -18 221 371 10 715 0 -700 165 59 27 883 1033 10 0 723 -701 461 8 20 321 471 10 0 661 -702 421 415 30 237 387 10 0 459 -703 59 459 -30 283 433 10 782 0 -704 24 492 -10 402 552 10 606 0 -705 55 449 -10 278 428 10 586 0 -706 224 192 -10 63 213 10 293 0 -707 444 269 -10 194 344 10 777 0 -708 491 20 20 334 484 10 0 953 -709 313 126 10 183 333 10 0 787 -710 283 438 3 190 340 10 0 986 -711 352 241 -10 732 882 10 522 0 -712 398 476 25 358 508 10 0 524 -713 442 247 10 192 342 10 0 515 -714 217 207 26 1322 1472 0 0 1044 -715 233 87 18 193 343 10 0 699 -716 479 127 -40 259 409 10 637 0 -717 6 53 8 527 677 10 0 410 -718 478 300 12 830 980 10 0 495 -719 378 493 -20 274 424 10 915 0 -720 303 78 12 179 329 10 0 175 -721 344 62 -20 286 436 10 474 0 -722 371 315 18 1106 1256 0 0 1038 -723 200 78 -27 933 1083 10 700 0 -724 413 391 8 215 365 10 0 211 -725 415 216 10 168 318 10 0 958 -726 397 57 -5 1416 1566 10 322 0 -727 293 228 19 48 198 10 0 927 -728 0 297 -10 254 404 10 645 0 -729 435 20 20 321 471 0 0 1007 -730 195 111 15 938 1088 10 0 34 -731 417 218 10 218 368 10 0 89 -732 340 54 10 215 365 10 0 751 -733 132 57 -20 226 376 10 947 0 -734 210 379 -10 649 799 10 2 0 -735 228 260 -36 1546 1696 10 745 0 -736 399 104 10 230 380 10 0 665 -737 95 277 20 214 364 10 0 367 -738 360 284 19 607 757 10 0 863 -739 53 466 9 292 442 10 0 185 -740 112 465 -10 255 405 10 585 0 -741 313 391 5 154 304 10 0 409 -742 93 235 10 186 336 10 0 887 -743 125 32 30 251 401 10 0 916 -744 215 282 21 1380 1530 10 0 911 -745 224 320 36 1224 1374 10 0 735 -746 134 428 20 248 398 10 0 835 -747 26 490 -20 415 565 10 397 0 -748 44 115 -30 246 396 10 786 0 -749 438 127 2 881 1031 10 0 926 -750 239 15 -20 544 694 10 797 0 -751 342 54 -10 216 366 10 732 0 -752 109 463 -30 274 424 10 229 0 -753 199 187 20 81 231 0 0 1026 -754 201 188 10 79 229 10 0 476 -755 399 301 -10 157 307 10 909 0 -756 484 171 10 246 396 10 0 245 -757 272 234 -25 1530 1680 10 275 0 -758 380 350 -20 806 956 10 63 0 -759 140 108 -24 1011 1161 10 28 0 -760 228 199 10 74 224 10 0 763 -761 245 461 -20 589 739 10 362 0 -762 305 107 20 165 315 10 0 490 -763 231 195 -10 58 208 10 760 0 -764 450 265 -20 200 350 10 548 0 -765 273 149 -28 1443 1593 10 54 0 -766 12 358 -13 1164 1314 10 295 0 -767 315 121 10 144 294 10 0 400 -768 420 213 10 173 323 10 0 447 -769 331 134 -10 1064 1214 10 23 0 -770 84 377 -20 866 1016 10 308 0 -771 320 280 10 76 226 10 0 393 -772 89 185 16 540 690 10 0 425 -773 472 481 20 320 470 10 0 392 -774 422 420 20 241 391 10 0 512 -775 475 267 -8 720 870 10 299 0 -776 470 125 20 253 403 10 0 985 -777 435 268 10 252 402 10 0 707 -778 409 155 19 185 335 10 0 249 -779 243 248 30 7 157 10 0 59 -780 488 96 -19 1006 1156 10 561 0 -781 341 72 -10 745 895 10 142 0 -782 58 449 30 303 453 10 0 703 -783 16 460 -10 351 501 10 461 0 -784 480 136 -10 256 406 10 345 0 -785 162 388 11 1066 1216 10 0 246 -786 47 208 30 207 357 10 0 748 -787 324 127 -10 143 293 10 709 0 -788 87 96 30 224 374 10 0 254 -789 140 137 32 510 660 0 0 1008 -790 314 205 -18 1467 1617 10 595 0 -791 96 346 26 181 331 10 0 587 -792 321 280 30 77 227 10 0 389 -793 245 251 10 5 155 10 0 834 -794 436 295 11 468 618 10 0 36 -795 274 261 -15 1635 1785 10 934 0 -796 271 128 12 286 436 10 0 654 -797 275 45 20 206 356 10 0 750 -798 422 409 10 234 384 10 0 892 -799 146 188 -10 1175 1325 10 930 0 -800 93 96 -20 219 369 10 596 0 -801 409 255 -30 1462 1612 10 298 0 -802 449 428 -18 1187 1337 10 1 0 -803 90 285 40 216 366 10 0 505 -804 415 95 -30 1117 1267 10 673 0 -805 88 287 30 203 353 10 0 40 -806 379 196 -20 139 289 10 143 0 -807 368 452 -36 610 760 10 49 0 -808 202 186 20 91 241 10 0 944 -809 435 11 40 302 452 10 0 616 -810 269 46 -27 209 359 10 441 0 -811 7 292 -12 246 396 10 902 0 -812 44 496 32 342 492 10 0 32 -813 478 99 10 273 423 10 0 446 -814 391 99 -30 206 356 10 180 0 -815 132 477 25 267 417 10 0 434 -816 24 65 10 305 455 10 0 418 -817 130 247 17 120 270 10 0 86 -818 133 273 20 119 269 10 0 77 -819 347 62 10 273 423 10 0 129 -820 404 140 -5 1199 1349 10 977 0 -821 416 420 20 237 387 10 0 828 -822 67 335 -20 201 351 10 830 0 -823 92 270 20 197 347 10 0 635 -824 411 95 30 223 373 10 0 219 -825 132 479 -30 257 407 10 539 0 -826 366 334 -14 350 500 10 24 0 -827 125 39 20 245 395 0 0 1015 -828 419 422 -20 241 391 10 821 0 -829 460 2 -20 324 474 10 456 0 -830 67 334 20 201 351 10 0 822 -831 448 414 -11 1163 1313 10 840 0 -832 46 163 8 866 1016 10 0 566 -833 77 465 11 275 425 10 0 609 -834 284 319 -10 757 907 10 793 0 -835 102 422 -20 226 376 10 746 0 -836 240 34 28 1445 1595 0 0 1021 -837 141 428 20 208 358 10 0 197 -838 204 269 30 49 199 10 0 427 -839 144 439 30 216 366 10 0 503 -840 470 417 11 677 827 10 0 831 -841 404 103 -20 212 362 10 521 0 -842 5 281 -10 1312 1462 10 575 0 -843 487 320 -28 798 948 10 482 0 -844 398 23 -20 270 420 10 364 0 -845 90 296 20 166 316 10 0 60 -846 386 13 10 277 427 10 0 223 -847 115 465 10 253 403 10 0 25 -848 473 475 10 357 507 0 0 1001 -849 275 42 -10 209 359 10 169 0 -850 286 356 30 111 261 10 0 534 -851 15 69 10 296 446 10 0 343 -852 267 44 20 206 356 10 0 981 -853 243 399 -20 175 325 10 327 0 -854 390 249 21 522 672 10 0 678 -855 210 391 30 146 296 10 0 906 -856 433 15 20 297 447 10 0 380 -857 24 259 19 310 460 10 0 177 -858 12 463 20 319 469 10 0 608 -859 237 213 -10 87 237 10 660 0 -860 182 480 -10 305 455 10 419 0 -861 409 88 20 226 376 10 0 455 -862 244 368 25 354 504 0 0 1030 -863 381 328 -19 657 807 10 738 0 -864 213 185 21 74 224 10 0 961 -865 482 141 -10 951 1101 10 950 0 -866 319 124 20 143 293 0 0 1036 -867 141 431 30 211 361 10 0 583 -868 198 264 -10 80 230 10 65 0 -869 69 334 30 199 349 10 0 601 -870 299 98 -30 159 309 10 612 0 -871 240 250 10 10 160 10 0 101 -872 199 203 -10 1397 1547 10 161 0 -873 459 17 20 351 501 10 0 183 -874 423 217 20 182 332 10 0 889 -875 477 179 20 237 387 10 0 591 -876 213 397 10 157 307 0 0 1037 -877 405 187 -13 1191 1341 10 890 0 -878 269 402 20 153 303 10 0 330 -879 53 204 -4 995 1145 10 919 0 -880 13 394 -22 313 463 10 139 0 -881 15 68 10 297 447 10 0 422 -882 56 268 -20 1004 1154 10 613 0 -883 360 184 -20 161 311 10 74 0 -884 307 102 40 158 308 0 0 1032 -885 130 57 40 227 377 10 0 44 -886 250 328 -21 189 339 10 228 0 -887 91 231 -10 160 310 10 742 0 -888 479 176 20 240 390 10 0 170 -889 420 224 -20 369 519 10 874 0 -890 461 182 13 569 719 10 0 877 -891 418 218 20 207 357 10 0 233 -892 419 418 -10 238 388 10 798 0 -893 336 493 -21 1404 1554 10 463 0 -894 389 300 10 147 297 10 0 210 -895 92 76 4 1079 1229 10 0 964 -896 476 102 20 276 426 10 0 938 -897 418 399 -25 378 528 10 179 0 -898 109 56 27 239 389 10 0 530 -899 13 465 -10 714 864 10 550 0 -900 92 232 10 159 309 10 0 510 -901 394 47 5 253 403 10 0 165 -902 16 287 12 236 386 10 0 811 -903 399 102 20 210 360 10 0 205 -904 143 158 12 141 291 10 0 450 -905 18 484 -30 329 479 10 593 0 -906 250 411 -30 161 311 10 855 0 -907 19 273 25 957 1107 10 0 623 -908 365 28 9 250 400 10 0 57 -909 387 297 10 144 294 10 0 755 -910 433 447 -20 734 884 10 71 0 -911 214 274 -21 1309 1459 10 744 0 -912 489 338 -31 1337 1487 10 918 0 -913 130 494 6 699 849 10 0 128 -914 23 67 30 329 479 10 0 73 -915 374 489 20 269 419 10 0 719 -916 126 30 -30 252 402 10 743 0 -917 112 467 10 257 407 10 0 619 -918 489 274 31 474 624 10 0 912 -919 61 214 4 282 432 10 0 879 -920 166 440 -20 207 357 10 466 0 -921 56 75 -15 1378 1528 10 241 0 -922 210 276 5 47 197 10 0 641 -923 80 286 -20 173 323 10 449 0 -924 17 459 -18 362 512 10 634 0 -925 66 448 -30 270 420 10 987 0 -926 351 128 -2 1193 1343 10 749 0 -927 352 176 -19 126 276 10 727 0 -928 490 286 29 462 612 10 0 520 -929 247 219 17 31 181 10 0 453 -930 86 268 10 164 314 10 0 799 -931 398 329 17 167 317 10 0 29 -932 272 402 10 153 303 10 0 217 -933 317 123 20 143 293 10 0 264 -934 408 318 15 583 733 10 0 795 -935 66 31 -15 988 1138 10 574 0 -936 425 448 -20 734 884 10 630 0 -937 35 304 30 221 371 10 0 369 -938 471 94 -20 939 1089 10 896 0 -939 470 473 10 371 521 10 0 651 -940 224 56 13 1126 1276 0 0 1019 -941 343 47 -10 223 373 10 533 0 -942 52 18 -2 797 947 10 174 0 -943 16 68 -20 296 446 10 572 0 -944 195 185 -20 85 235 10 808 0 -945 92 236 -10 198 348 10 395 0 -946 76 462 18 896 1046 10 0 140 -947 124 56 20 231 381 10 0 733 -948 481 454 14 308 458 10 0 658 -949 477 483 -10 325 475 10 443 0 -950 481 124 10 263 413 10 0 865 -951 389 156 27 656 806 10 0 192 -952 384 16 20 291 441 10 0 274 -953 492 34 -20 751 901 10 708 0 -954 371 200 10 164 314 10 0 978 -955 153 235 10 98 248 10 0 14 -956 428 202 -33 844 994 10 363 0 -957 257 391 -10 1520 1670 10 354 0 -958 421 218 -10 194 344 10 725 0 -959 206 186 -32 128 278 10 234 0 -960 393 301 30 151 301 10 0 472 -961 204 187 -21 115 265 10 864 0 -962 468 475 10 313 463 10 0 213 -963 477 122 -10 270 420 10 670 0 -964 100 66 -4 1340 1490 10 895 0 -965 489 27 -10 361 511 10 263 0 -966 12 451 20 311 461 10 0 625 -967 197 270 30 56 206 10 0 698 -968 311 422 29 928 1078 10 0 141 -969 489 17 10 333 483 10 0 108 -970 13 214 21 1294 1444 0 0 1009 -971 440 247 20 193 343 10 0 260 -972 28 467 -20 1283 1433 10 358 0 -973 388 325 10 203 353 10 0 105 -974 270 401 20 152 302 10 0 436 -975 5 445 30 313 463 0 0 1006 -976 198 271 20 56 206 10 0 251 -977 480 131 5 628 778 10 0 820 -978 437 98 -10 1054 1204 10 954 0 -979 131 246 -5 772 922 10 562 0 -980 49 437 7 367 517 10 0 417 -981 270 49 -20 232 382 10 852 0 -982 337 41 8 942 1092 10 0 570 -983 318 280 -20 74 224 10 11 0 -984 154 392 9 171 321 10 0 255 -985 493 111 -20 481 631 10 776 0 -986 399 450 -3 299 449 10 710 0 -987 67 452 30 272 422 10 0 925 -988 34 239 16 216 366 10 0 127 -989 343 276 -10 96 246 10 542 0 -990 393 12 10 277 427 10 0 198 -991 236 247 -10 14 164 10 230 0 -992 340 291 22 410 560 10 0 265 -993 3 292 -8 250 400 10 407 0 -994 209 68 -26 1475 1625 10 373 0 -995 18 225 -1 631 781 10 538 0 -996 147 435 20 211 361 10 0 76 -997 335 99 -10 1158 1308 10 171 0 -998 485 24 -30 326 476 10 117 0 -999 470 475 30 314 464 10 0 499 -1000 341 58 10 212 362 10 0 287 -1001 473 475 -10 357 507 10 848 0 -1002 102 6 -3 1376 1526 10 555 0 -1003 498 456 -27 1339 1489 10 83 0 -1004 476 61 -36 389 539 10 320 0 -1005 445 273 -20 198 348 10 483 0 -1006 5 445 -30 313 463 10 975 0 -1007 435 20 -20 321 471 10 729 0 -1008 140 137 -32 510 660 10 789 0 -1009 13 214 -21 1294 1444 10 970 0 -1010 477 97 -10 273 423 10 552 0 -1011 387 488 -20 302 452 10 480 0 -1012 468 352 -9 708 858 10 649 0 -1013 365 190 -22 1417 1567 10 478 0 -1014 163 472 -9 593 743 10 138 0 -1015 125 39 -20 245 395 10 827 0 -1016 195 464 -20 1441 1591 10 113 0 -1017 413 421 -10 243 393 10 431 0 -1018 299 353 -34 114 264 10 271 0 -1019 224 56 -13 1126 1276 10 940 0 -1020 64 294 -12 1041 1191 10 163 0 -1021 240 34 -28 1445 1595 10 836 0 -1022 306 229 -10 1260 1410 10 527 0 -1023 111 392 -18 1109 1259 10 283 0 -1024 142 372 -18 162 312 10 144 0 -1025 52 303 -25 381 531 10 696 0 -1026 199 187 -20 81 231 10 753 0 -1027 439 266 -10 189 339 10 155 0 -1028 178 135 -21 1454 1604 10 270 0 -1029 397 153 -29 822 972 10 412 0 -1030 244 368 -25 354 504 10 862 0 -1031 365 274 -14 117 267 10 644 0 -1032 307 102 -40 158 308 10 884 0 -1033 418 251 -21 1137 1287 10 650 0 -1034 91 266 -10 173 323 10 203 0 -1035 105 181 -19 1471 1621 10 536 0 -1036 319 124 -20 143 293 10 866 0 -1037 213 397 -10 157 307 10 876 0 -1038 371 315 -18 1106 1256 10 722 0 -1039 333 293 -27 557 707 10 655 0 -1040 264 180 -33 1590 1740 10 115 0 -1041 366 288 -29 624 774 10 494 0 -1042 201 270 -10 52 202 10 126 0 -1043 231 204 -20 90 240 10 607 0 -1044 217 207 -26 1322 1472 10 714 0 diff --git a/jsprit-instances/instances/lilim/1000/LRC1102.txt b/jsprit-instances/instances/lilim/1000/LRC1102.txt deleted file mode 100644 index f3c9c7df7..000000000 --- a/jsprit-instances/instances/lilim/1000/LRC1102.txt +++ /dev/null @@ -1,1048 +0,0 @@ -250 200 1 -0 250 250 0 0 1821 0 0 0 -1 440 436 18 892 922 0 0 1015 -2 214 394 -10 231 261 10 876 0 -3 476 483 10 0 1487 10 0 392 -4 352 487 27 0 1553 10 0 524 -5 230 197 40 122 152 0 0 1044 -6 175 239 23 75 105 10 0 30 -7 133 202 33 461 491 0 0 1046 -8 328 458 17 0 1589 10 0 353 -9 25 499 -40 0 1476 10 279 0 -10 226 423 -20 0 1637 10 220 0 -11 313 282 20 163 193 10 0 655 -12 60 454 10 347 377 10 0 366 -13 239 486 -30 1482 1512 10 839 0 -14 102 264 10 148 178 10 0 930 -15 408 452 10 0 1555 10 0 582 -16 451 62 5 282 312 10 0 320 -17 203 390 -21 159 189 10 451 0 -18 92 233 -10 0 1653 10 684 0 -19 7 300 -10 345 375 10 811 0 -20 409 90 20 258 288 10 0 580 -21 307 108 10 237 267 10 0 259 -22 347 54 10 295 325 10 0 852 -23 406 87 -10 0 1586 10 455 0 -24 371 332 -30 530 560 10 201 0 -25 116 466 20 254 284 10 0 168 -26 441 265 40 0 1620 10 0 560 -27 130 140 -6 194 224 10 799 0 -28 80 117 24 824 854 10 0 306 -29 421 387 -17 801 831 10 432 0 -30 83 300 -23 500 530 10 6 0 -31 136 52 -10 293 323 10 653 0 -32 18 462 -6 398 428 10 258 0 -33 390 120 24 1004 1034 10 0 926 -34 188 119 -17 975 1005 10 929 0 -35 467 114 10 376 406 10 0 611 -36 440 292 -31 940 970 10 918 0 -37 268 400 -10 243 273 10 534 0 -38 391 202 14 148 178 10 0 493 -39 377 432 -20 831 861 10 630 0 -40 80 290 10 197 227 10 0 367 -41 439 15 -20 343 373 10 474 0 -42 307 52 -10 920 950 10 278 0 -43 111 192 -15 1199 1229 10 688 0 -44 131 56 10 0 1584 10 0 759 -45 88 286 10 0 1646 10 0 803 -46 69 414 -4 1263 1293 10 64 0 -47 41 232 -32 209 239 10 193 0 -48 323 77 36 1405 1435 0 0 1027 -49 340 416 36 321 351 10 0 265 -50 86 199 23 0 1640 0 0 1036 -51 314 124 20 231 261 10 0 103 -52 375 191 30 0 1673 10 0 731 -53 226 175 -7 1694 1724 10 158 0 -54 242 106 -10 1268 1298 10 767 0 -55 417 417 10 332 362 10 0 83 -56 419 459 20 316 346 10 0 986 -57 389 11 20 0 1535 10 0 232 -58 450 416 25 577 607 10 0 651 -59 246 255 10 113 143 10 0 214 -60 71 333 -13 197 227 10 547 0 -61 105 474 -18 471 501 10 144 0 -62 20 489 -10 383 413 10 624 0 -63 388 331 20 160 190 10 0 537 -64 92 259 4 399 429 10 0 46 -65 200 261 10 166 196 10 0 610 -66 400 288 30 154 184 10 0 711 -67 299 285 -17 0 1751 10 931 0 -68 378 199 -20 207 237 10 806 0 -69 325 147 -27 1187 1217 10 951 0 -70 421 386 29 824 854 0 0 1014 -71 404 447 20 250 280 10 0 671 -72 412 478 7 960 990 10 0 712 -73 26 67 -10 1317 1347 10 266 0 -74 358 183 20 234 264 10 0 478 -75 30 302 10 267 297 10 0 645 -76 176 470 -30 0 1579 10 539 0 -77 96 270 20 162 192 10 0 203 -78 243 408 -30 0 1653 10 240 0 -79 60 29 32 0 1520 10 0 313 -80 34 169 11 484 514 10 0 832 -81 407 280 -25 0 1652 10 600 0 -82 277 403 10 175 205 10 0 436 -83 498 456 -10 1406 1436 10 55 0 -84 384 491 -10 348 378 10 164 0 -85 355 174 33 715 745 10 0 557 -86 97 288 -20 1284 1314 10 737 0 -87 316 284 20 125 155 10 0 992 -88 334 403 26 174 204 10 0 910 -89 415 223 20 305 335 10 0 184 -90 230 320 -20 1192 1222 10 679 0 -91 432 199 7 639 669 10 0 956 -92 92 18 -10 1124 1154 10 916 0 -93 273 300 30 55 85 0 0 1042 -94 269 112 -30 1263 1293 10 870 0 -95 429 389 18 424 454 10 0 98 -96 371 71 21 287 317 10 0 400 -97 5 297 -14 0 1562 10 496 0 -98 414 378 -18 495 525 10 95 0 -99 38 15 3 0 1495 10 0 964 -100 2 295 30 306 336 10 0 382 -101 237 254 -10 83 113 10 871 0 -102 54 445 -20 308 338 10 705 0 -103 382 110 -20 0 1619 10 51 0 -104 438 488 18 0 1508 10 0 821 -105 395 331 -20 217 247 10 315 0 -106 230 487 -12 1130 1160 10 920 0 -107 249 407 10 174 204 10 0 549 -108 488 26 30 433 463 10 0 288 -109 151 81 -27 1558 1588 10 700 0 -110 483 14 10 0 1480 10 0 263 -111 0 422 -10 821 851 10 625 0 -112 429 67 -10 732 762 10 321 0 -113 195 464 -1 1541 1571 10 182 0 -114 356 256 19 106 136 10 0 222 -115 264 180 -15 1681 1711 10 730 0 -116 94 235 20 156 186 10 0 319 -117 474 96 30 0 1540 0 0 1009 -118 268 52 -20 306 336 10 528 0 -119 44 440 -34 0 1531 10 972 0 -120 7 382 27 770 800 0 0 1011 -121 459 53 20 0 1524 10 0 454 -122 491 25 -20 409 439 10 998 0 -123 439 243 -20 0 1622 10 375 0 -124 210 185 -10 76 106 10 293 0 -125 150 68 -22 423 453 10 356 0 -126 201 270 10 52 82 10 0 868 -127 0 188 -21 932 962 10 510 0 -128 103 464 -29 1273 1303 10 668 0 -129 325 56 -10 0 1604 10 287 0 -130 44 344 12 1079 1109 10 0 369 -131 418 75 -20 448 478 10 861 0 -132 472 57 17 1295 1325 10 0 361 -133 460 328 13 224 254 10 0 491 -134 89 270 -20 204 234 10 613 0 -135 374 190 20 0 1674 0 0 1024 -136 463 253 -10 1047 1077 10 764 0 -137 97 93 -32 240 270 10 789 0 -138 163 472 9 653 683 0 0 1020 -139 29 336 22 332 362 10 0 163 -140 84 453 -10 0 1549 10 742 0 -141 294 421 -25 1575 1605 10 357 0 -142 343 62 10 357 387 10 0 982 -143 371 193 20 133 163 10 0 529 -144 142 372 18 162 192 10 0 61 -145 66 88 2 830 860 10 0 241 -146 395 332 -18 206 236 10 722 0 -147 93 413 17 226 256 10 0 178 -148 267 394 -20 259 289 10 974 0 -149 249 258 -20 0 1803 10 176 0 -150 472 129 10 252 282 10 0 345 -151 87 3 -10 1433 1463 10 530 0 -152 62 326 20 286 316 10 0 513 -153 212 186 -20 1707 1737 10 212 0 -154 241 402 11 0 1659 10 0 834 -155 439 266 10 189 219 10 0 971 -156 79 80 -20 1382 1412 10 525 0 -157 62 453 10 295 325 10 0 309 -158 188 151 7 1297 1327 10 0 53 -159 386 154 31 1101 1131 0 0 1038 -160 38 301 -20 296 326 10 304 0 -161 192 265 -20 124 154 10 976 0 -162 371 192 30 134 164 10 0 778 -163 64 294 -22 1101 1131 10 139 0 -164 381 494 10 333 363 10 0 84 -165 437 12 20 330 360 10 0 952 -166 186 135 24 0 1680 0 0 1030 -167 459 10 10 335 365 10 0 701 -168 175 422 -20 1446 1476 10 25 0 -169 274 48 10 211 241 10 0 564 -170 488 173 -10 279 309 10 245 0 -171 398 97 10 212 242 10 0 445 -172 385 17 40 809 839 10 0 196 -173 180 283 23 744 774 10 0 911 -174 71 12 2 297 327 10 0 717 -175 343 49 -30 0 1590 10 676 0 -176 248 251 20 2 32 10 0 149 -177 7 194 29 951 981 10 0 497 -178 322 290 -17 1479 1509 10 147 0 -179 410 399 25 234 264 10 0 250 -180 398 103 30 278 308 0 0 1033 -181 385 285 13 0 1672 10 0 603 -182 179 497 1 1411 1441 10 0 113 -183 464 13 -30 0 1492 10 365 0 -184 492 335 -20 828 858 10 89 0 -185 27 464 21 1291 1321 0 0 1007 -186 231 29 14 1226 1256 10 0 836 -187 157 38 -18 1048 1078 10 305 0 -188 439 268 -20 298 328 10 691 0 -189 149 214 7 482 512 10 0 961 -190 187 73 18 292 322 0 0 1045 -191 429 169 -20 903 933 10 446 0 -192 350 199 -31 1201 1231 10 592 0 -193 60 231 32 0 1621 10 0 47 -194 448 404 -20 599 629 10 897 0 -195 481 20 20 347 377 10 0 546 -196 436 25 -40 0 1520 10 172 0 -197 111 459 -10 359 389 10 628 0 -198 389 17 10 366 396 10 0 274 -199 148 208 -20 526 556 10 991 0 -200 475 477 20 0 1492 10 0 948 -201 390 325 30 251 281 10 0 24 -202 346 354 8 817 847 10 0 459 -203 91 266 -20 233 263 10 77 0 -204 17 65 20 327 357 10 0 572 -205 391 112 -10 1000 1030 10 490 0 -206 224 203 20 53 83 10 0 706 -207 426 231 -10 1028 1058 10 303 0 -208 260 472 33 1036 1066 10 0 485 -209 265 0 -10 896 926 10 235 0 -210 391 293 -10 226 256 10 352 0 -211 411 421 -10 315 345 10 892 0 -212 132 30 20 0 1562 10 0 153 -213 475 480 -20 379 409 10 949 0 -214 286 244 -10 1284 1314 10 59 0 -215 436 237 20 186 216 10 0 690 -216 402 284 -29 165 195 10 494 0 -217 287 397 -15 564 594 10 370 0 -218 272 420 7 0 1640 10 0 439 -219 477 120 10 342 372 10 0 648 -220 145 434 20 233 263 10 0 10 -221 33 286 11 1546 1576 0 0 1023 -222 370 262 -19 1099 1129 10 114 0 -223 393 20 -10 391 421 10 452 0 -224 330 308 24 1170 1200 10 0 795 -225 246 398 40 148 178 10 0 862 -226 482 184 -10 1107 1137 10 756 0 -227 451 305 13 208 238 10 0 482 -228 226 316 21 70 100 10 0 745 -229 110 459 30 348 378 10 0 697 -230 244 250 10 12 42 10 0 531 -231 458 16 20 313 343 10 0 456 -232 390 34 -20 1060 1090 10 57 0 -233 423 214 -10 217 247 10 725 0 -234 219 215 32 46 76 10 0 501 -235 326 118 10 152 182 10 0 209 -236 365 74 -30 848 878 10 405 0 -237 331 356 13 712 742 10 0 332 -238 210 398 -31 0 1658 10 860 0 -239 403 93 -30 0 1592 10 673 0 -240 248 404 30 154 184 10 0 78 -241 65 62 -2 976 1006 10 145 0 -242 460 13 20 322 352 10 0 364 -243 0 293 30 279 309 10 0 842 -244 211 248 26 39 69 10 0 823 -245 484 174 10 265 295 10 0 170 -246 175 352 12 0 1685 0 0 1039 -247 455 168 21 0 1591 10 0 595 -248 224 191 20 81 111 10 0 344 -249 439 156 -10 526 556 10 958 0 -250 434 359 -25 0 1598 10 179 0 -251 118 314 -30 338 368 10 805 0 -252 234 246 -30 65 95 10 779 0 -253 406 450 20 259 289 0 0 1016 -254 75 118 21 409 439 10 0 538 -255 115 395 -20 815 845 10 783 0 -256 329 456 -25 249 279 10 330 0 -257 218 403 -5 1319 1349 10 442 0 -258 149 341 6 0 1676 10 0 32 -259 253 74 -10 1350 1380 10 21 0 -260 436 241 -25 327 357 10 275 0 -261 238 203 10 94 124 10 0 994 -262 405 455 40 341 371 10 0 297 -263 485 27 -10 446 476 10 110 0 -264 323 118 20 161 191 10 0 884 -265 330 371 -36 559 589 10 49 0 -266 25 65 10 376 406 10 0 73 -267 406 96 20 219 249 10 0 638 -268 49 451 20 284 314 10 0 606 -269 307 249 -20 1377 1407 10 472 0 -270 178 135 -18 1514 1544 10 415 0 -271 299 353 34 114 144 10 0 662 -272 236 213 20 39 69 10 0 605 -273 355 177 20 0 1684 10 0 470 -274 394 23 -10 404 434 10 198 0 -275 306 235 25 57 87 10 0 260 -276 90 477 18 277 307 10 0 752 -277 379 486 -21 672 702 10 463 0 -278 435 16 10 367 397 10 0 42 -279 8 497 40 408 438 10 0 9 -280 150 484 -11 0 1557 10 825 0 -281 213 399 18 234 264 10 0 440 -282 391 18 -10 0 1540 10 846 0 -283 111 392 -10 1169 1199 10 395 0 -284 330 281 14 1330 1360 10 0 771 -285 344 203 14 0 1706 10 0 588 -286 91 235 -10 269 299 10 408 0 -287 346 60 10 321 351 10 0 129 -288 483 27 -30 458 488 10 108 0 -289 382 498 10 0 1531 10 0 681 -290 457 492 -10 508 538 10 848 0 -291 291 213 23 0 1756 10 0 866 -292 154 374 36 0 1655 10 0 503 -293 225 196 10 0 1752 10 0 124 -294 94 40 -25 0 1550 10 935 0 -295 0 356 -17 1086 1116 10 511 0 -296 297 283 -10 1349 1379 10 853 0 -297 371 423 -40 0 1600 10 262 0 -298 417 217 30 189 219 10 0 678 -299 500 228 -20 782 812 10 401 0 -300 412 214 10 0 1646 0 0 1019 -301 442 289 25 195 225 10 0 483 -302 157 269 -17 1576 1606 10 979 0 -303 440 241 10 301 331 10 0 207 -304 100 266 20 0 1661 10 0 160 -305 111 178 18 156 186 10 0 187 -306 91 101 -24 0 1594 10 28 0 -307 25 307 -20 249 279 10 615 0 -308 135 400 20 299 329 10 0 393 -309 58 458 -10 323 353 10 157 0 -310 133 26 -28 0 1559 10 411 0 -311 211 386 20 0 1670 10 0 368 -312 94 97 20 218 248 10 0 970 -313 30 155 -32 1280 1310 10 79 0 -314 208 184 20 0 1733 10 0 753 -315 394 333 20 194 224 10 0 105 -316 355 180 30 0 1685 10 0 762 -317 241 180 13 0 1741 10 0 715 -318 21 485 30 0 1483 10 0 489 -319 80 251 -20 304 334 10 116 0 -320 476 61 -5 449 479 10 16 0 -321 406 94 10 0 1591 10 0 112 -322 364 71 -20 1348 1378 10 708 0 -323 418 221 -20 291 321 10 874 0 -324 274 441 12 695 725 10 0 968 -325 304 97 20 182 212 10 0 751 -326 297 102 10 155 185 0 0 1026 -327 250 405 20 162 192 10 0 475 -328 111 463 20 0 1557 10 0 585 -329 408 279 -20 0 1651 10 341 0 -330 263 418 25 0 1643 10 0 256 -331 480 119 -30 0 1547 10 938 0 -332 420 383 -13 982 1012 10 237 0 -333 142 14 -10 0 1552 10 621 0 -334 73 328 20 193 223 10 0 340 -335 50 438 20 0 1537 10 0 641 -336 441 7 20 392 422 10 0 371 -337 462 14 -20 397 427 10 682 0 -338 360 294 -24 1418 1448 10 556 0 -339 58 39 12 1163 1193 10 0 423 -340 58 391 -20 882 912 10 334 0 -341 410 285 20 193 223 10 0 329 -342 96 97 -12 217 247 10 904 0 -343 21 64 -28 0 1516 10 942 0 -344 238 210 -20 134 164 10 248 0 -345 479 121 -10 308 338 10 150 0 -346 200 178 20 94 124 10 0 450 -347 216 341 -10 0 1714 10 740 0 -348 48 437 -31 804 834 10 899 0 -349 200 270 20 59 89 10 0 647 -350 357 181 20 149 179 10 0 514 -351 476 174 -20 324 354 10 591 0 -352 400 286 10 154 184 10 0 210 -353 351 481 -17 322 352 10 8 0 -354 270 400 10 0 1660 10 0 878 -355 95 234 10 163 193 10 0 900 -356 128 113 22 363 393 10 0 125 -357 133 455 25 808 838 10 0 141 -358 16 463 20 375 405 10 0 551 -359 59 388 -10 663 693 10 461 0 -360 376 190 -10 155 185 10 602 0 -361 481 122 -17 0 1547 10 132 0 -362 266 405 -10 217 247 10 932 0 -363 374 232 33 125 155 0 0 1028 -364 398 20 -20 0 1538 10 242 0 -365 481 26 30 0 1490 10 0 183 -366 63 444 -10 380 410 10 12 0 -367 89 290 -10 0 1646 10 40 0 -368 246 314 -20 1445 1475 10 311 0 -369 40 304 -12 1145 1175 10 130 0 -370 262 369 15 0 1692 10 0 217 -371 323 29 -20 0 1579 10 336 0 -372 89 65 -20 720 750 10 947 0 -373 144 35 26 239 269 10 0 632 -374 200 265 10 152 182 10 0 458 -375 436 264 20 186 216 10 0 123 -376 15 457 20 323 353 10 0 858 -377 397 20 20 280 310 10 0 990 -378 328 491 21 0 1558 10 0 936 -379 399 175 -14 747 777 10 594 0 -380 432 2 -20 467 497 10 873 0 -381 63 336 -20 266 296 10 587 0 -382 6 296 -30 320 350 10 100 0 -383 146 376 8 234 264 10 0 744 -384 295 247 -20 1303 1333 10 659 0 -385 235 33 -30 1337 1367 10 686 0 -386 233 204 20 54 84 10 0 714 -387 142 360 -20 1532 1562 10 583 0 -388 177 156 25 0 1692 10 0 733 -389 315 287 -30 148 178 10 402 0 -390 452 172 -10 0 1595 10 963 0 -391 263 153 12 412 442 10 0 540 -392 493 493 -10 856 886 10 3 0 -393 320 283 -20 0 1734 10 308 0 -394 64 5 14 1129 1159 10 0 410 -395 95 235 10 155 185 10 0 283 -396 203 211 -20 1306 1336 10 808 0 -397 16 497 20 426 456 0 0 1001 -398 348 348 23 0 1673 10 0 512 -399 485 104 21 794 824 0 0 1010 -400 330 147 -21 0 1681 10 96 0 -401 443 237 20 193 223 10 0 299 -402 316 286 30 137 167 10 0 389 -403 335 46 -10 1342 1372 10 844 0 -404 381 495 -25 322 352 10 409 0 -405 364 173 30 180 210 10 0 236 -406 267 162 -10 1449 1479 10 533 0 -407 214 245 -8 0 1775 10 879 0 -408 92 234 10 235 265 10 0 286 -409 347 459 25 0 1581 10 0 404 -410 30 7 -14 1189 1219 10 394 0 -411 120 37 28 775 805 10 0 310 -412 397 153 -20 882 912 10 891 0 -413 210 29 -18 1051 1081 10 558 0 -414 87 285 -20 241 271 10 449 0 -415 132 32 18 784 814 10 0 270 -416 390 294 -30 237 267 10 792 0 -417 67 451 -7 1216 1246 10 980 0 -418 24 68 -30 0 1521 10 914 0 -419 146 439 -20 259 289 10 996 0 -420 209 212 -20 1528 1558 10 500 0 -421 6 292 10 0 1564 10 0 882 -422 18 63 -10 339 369 10 851 0 -423 149 98 -12 0 1629 10 339 0 -424 91 268 -17 245 275 10 817 0 -425 103 177 28 626 656 10 0 427 -426 367 178 20 180 210 10 0 643 -427 225 269 -28 1271 1301 10 425 0 -428 443 246 20 230 260 10 0 889 -429 306 42 -30 477 507 10 981 0 -430 374 306 -12 0 1675 10 863 0 -431 413 421 10 303 333 10 0 545 -432 470 405 17 0 1542 10 0 29 -433 33 278 -30 1487 1517 10 869 0 -434 149 458 -10 1164 1194 10 917 0 -435 257 57 -20 1226 1256 10 941 0 -436 272 403 -10 190 220 10 82 0 -437 221 291 9 50 80 10 0 466 -438 1 101 -18 0 1521 10 506 0 -439 332 459 -7 369 399 10 218 0 -440 220 392 -18 258 288 10 281 0 -441 253 50 27 226 256 10 0 750 -442 250 441 5 756 786 10 0 257 -443 471 484 10 340 370 10 0 460 -444 480 152 -20 1022 1052 10 888 0 -445 404 83 -10 298 328 10 171 0 -446 476 94 20 0 1537 10 0 191 -447 458 213 -21 1128 1158 10 650 0 -448 215 395 -30 242 272 10 855 0 -449 85 288 20 182 212 10 0 414 -450 179 75 -20 740 770 10 346 0 -451 228 287 21 43 73 10 0 17 -452 397 18 10 292 322 10 0 223 -453 238 204 20 0 1764 10 0 652 -454 488 3 -20 401 431 10 121 0 -455 407 88 10 0 1586 10 0 23 -456 459 14 -20 315 345 10 231 0 -457 120 17 30 0 1545 0 0 1008 -458 235 316 -10 656 686 10 374 0 -459 370 382 -8 884 914 10 202 0 -460 405 454 -10 1303 1333 10 443 0 -461 17 458 10 433 463 10 0 359 -462 43 135 -28 0 1575 10 476 0 -463 318 497 21 0 1555 10 0 277 -464 199 268 -10 71 101 10 793 0 -465 111 467 20 287 317 0 0 1013 -466 138 438 -9 287 317 10 437 0 -467 172 314 9 0 1711 10 0 791 -468 494 468 31 352 382 10 0 939 -469 35 303 -10 221 251 10 618 0 -470 341 59 -20 790 820 10 273 0 -471 423 221 -10 258 288 10 522 0 -472 395 295 20 211 241 10 0 269 -473 413 417 -20 356 386 10 828 0 -474 339 60 20 211 241 10 0 41 -475 277 428 -20 490 520 10 327 0 -476 176 199 28 89 119 10 0 462 -477 265 240 -16 0 1793 10 669 0 -478 365 190 -20 0 1682 10 74 0 -479 133 53 20 0 1582 10 0 743 -480 387 488 20 362 392 10 0 680 -481 385 295 20 0 1669 0 0 1040 -482 491 369 -13 730 760 10 227 0 -483 445 273 -25 258 288 10 301 0 -484 195 273 -12 59 89 10 735 0 -485 313 493 -33 1193 1223 10 208 0 -486 495 227 20 0 1565 0 0 1022 -487 241 403 -38 220 250 10 581 0 -488 30 72 -27 0 1529 10 898 0 -489 21 487 -30 350 380 10 318 0 -490 324 99 10 338 368 10 0 205 -491 453 318 -13 374 404 10 133 0 -492 443 272 -20 270 300 10 707 0 -493 447 184 -14 0 1604 10 38 0 -494 366 288 29 0 1689 10 0 216 -495 440 284 25 852 882 10 0 912 -496 13 314 14 245 275 10 0 97 -497 72 227 -29 0 1632 10 177 0 -498 377 385 -25 0 1626 10 802 0 -499 477 478 -10 392 422 10 962 0 -500 204 185 20 163 193 10 0 420 -501 226 191 -32 0 1748 10 234 0 -502 330 138 -25 0 1674 10 997 0 -503 185 434 -36 574 604 10 292 0 -504 483 22 10 334 364 10 0 965 -505 71 282 -19 0 1630 10 642 0 -506 60 5 18 0 1501 10 0 438 -507 189 402 10 536 566 10 0 657 -508 134 211 35 122 152 10 0 887 -509 146 313 -15 1195 1225 10 626 0 -510 21 146 21 487 517 10 0 127 -511 37 281 17 493 523 10 0 295 -512 416 417 -23 0 1576 10 398 0 -513 44 311 -20 407 437 10 152 0 -514 361 181 -20 197 227 10 350 0 -515 444 242 10 216 246 10 0 541 -516 444 271 10 0 1616 10 0 548 -517 359 179 20 0 1681 10 0 883 -518 388 334 20 0 1650 10 0 598 -519 401 164 -15 621 651 10 989 0 -520 499 316 -19 622 652 10 577 0 -521 399 106 -20 302 332 10 903 0 -522 425 215 10 229 259 10 0 471 -523 407 98 -21 0 1593 10 661 0 -524 406 460 -27 719 749 10 4 0 -525 88 95 20 270 300 10 0 156 -526 95 64 -40 766 796 10 885 0 -527 306 229 -37 1320 1350 10 672 0 -528 273 55 20 196 226 10 0 118 -529 384 149 -20 1197 1227 10 143 0 -530 122 35 10 250 280 10 0 151 -531 308 199 -10 0 1734 10 230 0 -532 390 301 10 165 195 10 0 934 -533 300 108 10 0 1661 10 0 406 -534 267 400 10 232 262 10 0 37 -535 8 300 10 0 1564 10 0 728 -536 105 181 19 0 1651 10 0 694 -537 398 325 -20 233 263 10 63 0 -538 166 247 -21 0 1727 10 254 0 -539 140 431 30 211 241 10 0 76 -540 253 118 -12 547 577 10 391 0 -541 359 246 -10 1423 1453 10 515 0 -542 321 277 10 0 1736 0 0 1035 -543 168 59 6 366 396 10 0 663 -544 406 285 20 0 1652 10 0 649 -545 391 334 -10 0 1647 10 431 0 -546 437 19 -20 1014 1044 10 195 0 -547 201 278 13 56 86 10 0 60 -548 435 267 -10 323 353 10 516 0 -549 245 408 -10 204 234 10 107 0 -550 16 462 -9 0 1496 10 739 0 -551 107 374 -20 914 944 10 358 0 -552 477 97 -17 0 1538 10 571 0 -553 346 57 20 308 338 10 0 570 -554 14 459 20 336 366 10 0 924 -555 102 6 3 0 1526 10 0 559 -556 359 287 24 115 145 10 0 338 -557 297 131 -33 1165 1195 10 85 0 -558 282 1 18 0 1560 10 0 413 -559 21 70 -3 771 801 10 555 0 -560 440 244 -40 266 296 10 26 0 -561 482 104 -16 0 1537 10 978 0 -562 120 261 -20 793 823 10 945 0 -563 125 29 -20 283 313 10 827 0 -564 292 32 -10 0 1589 10 169 0 -565 262 92 25 630 660 10 0 940 -566 68 160 -18 1136 1166 10 614 0 -567 405 276 -7 0 1654 10 775 0 -568 277 50 10 201 231 10 0 699 -569 32 319 21 401 431 10 0 907 -570 344 70 -20 1146 1176 10 553 0 -571 481 84 17 506 536 10 0 552 -572 21 68 -20 401 431 10 204 0 -573 441 244 10 277 307 10 0 683 -574 57 43 15 0 1528 0 0 1005 -575 1 293 -20 268 298 10 993 0 -576 481 96 20 297 327 10 0 985 -577 471 368 19 428 458 10 0 520 -578 236 126 23 124 154 10 0 723 -579 406 99 20 227 257 10 0 824 -580 303 186 -20 1354 1384 10 20 0 -581 225 369 38 121 151 10 0 487 -582 412 453 -10 297 327 10 15 0 -583 104 349 20 1009 1039 10 0 387 -584 173 182 25 102 132 10 0 895 -585 111 464 -20 0 1556 10 328 0 -586 53 440 -10 323 353 10 664 0 -587 69 336 20 218 248 10 0 381 -588 359 182 -14 209 239 10 285 0 -589 13 459 20 347 377 10 0 619 -590 244 277 18 0 1784 0 0 1041 -591 484 177 20 252 282 10 0 351 -592 452 206 31 492 522 10 0 192 -593 22 483 30 325 355 10 0 905 -594 452 110 14 340 370 10 0 379 -595 347 192 -21 1488 1518 10 247 0 -596 95 92 20 0 1590 10 0 921 -597 368 311 -15 0 1679 10 758 0 -598 479 387 -20 397 427 10 518 0 -599 479 169 -20 0 1569 10 875 0 -600 497 266 25 0 1564 10 0 81 -601 66 336 10 253 283 10 0 880 -602 376 195 10 0 1674 10 0 360 -603 401 281 -13 261 291 10 181 0 -604 441 177 23 0 1607 10 0 877 -605 231 203 -20 67 97 10 272 0 -606 21 488 -20 361 391 10 268 0 -607 231 204 -10 150 180 10 660 0 -608 122 422 3 1457 1487 10 0 785 -609 65 453 -10 282 312 10 925 0 -610 206 261 -10 182 212 10 65 0 -611 466 149 -10 1186 1216 10 35 0 -612 313 119 30 216 246 10 0 633 -613 90 274 20 179 209 10 0 134 -614 39 162 18 565 595 10 0 566 -615 35 306 20 229 259 10 0 307 -616 437 15 -10 0 1511 10 969 0 -617 307 412 -5 404 434 10 741 0 -618 79 291 10 0 1636 10 0 469 -619 64 437 -20 918 948 10 589 0 -620 376 92 -14 991 1021 10 765 0 -621 129 27 10 298 328 10 0 333 -622 196 489 23 1030 1060 10 0 710 -623 51 286 -20 0 1609 10 845 0 -624 20 488 10 372 402 10 0 62 -625 13 455 10 0 1498 10 0 111 -626 170 347 15 436 466 10 0 509 -627 92 230 20 0 1652 10 0 772 -628 117 467 10 254 284 10 0 197 -629 413 217 20 0 1645 10 0 677 -630 405 450 20 0 1558 10 0 39 -631 394 322 -30 0 1651 10 960 0 -632 125 61 -26 612 642 10 373 0 -633 238 123 -30 781 811 10 612 0 -634 11 403 18 343 373 10 0 770 -635 89 272 10 0 1649 0 0 1031 -636 304 102 -20 0 1654 10 797 0 -637 478 121 40 319 349 10 0 665 -638 408 84 -20 284 314 10 267 0 -639 376 494 30 274 304 0 0 1012 -640 20 73 10 290 320 10 0 881 -641 159 299 -20 1016 1046 10 335 0 -642 95 382 19 231 261 10 0 505 -643 352 63 -20 1178 1208 10 426 0 -644 365 274 14 117 147 10 0 954 -645 30 301 -10 278 308 10 75 0 -646 351 5 -20 496 526 10 729 0 -647 197 267 -20 109 139 10 349 0 -648 498 171 -10 1256 1286 10 219 0 -649 468 352 -20 768 798 10 544 0 -650 418 251 21 0 1643 10 0 447 -651 489 437 -25 707 737 10 58 0 -652 251 63 -20 0 1624 10 453 0 -653 132 55 10 267 297 10 0 31 -654 281 96 -30 1126 1156 10 849 0 -655 333 293 -20 617 647 10 11 0 -656 255 487 19 0 1574 0 0 1029 -657 207 400 -10 0 1655 10 507 0 -658 469 489 4 555 585 0 0 1002 -659 244 254 20 100 130 10 0 384 -660 233 207 10 46 76 10 0 607 -661 441 60 21 1459 1489 10 0 523 -662 411 379 -34 1193 1223 10 271 0 -663 178 72 -6 757 787 10 543 0 -664 51 447 10 294 324 10 0 586 -665 478 118 -40 354 384 10 637 0 -666 141 426 -20 0 1604 10 837 0 -667 295 89 -12 742 772 10 720 0 -668 112 433 29 235 265 10 0 128 -669 320 211 16 0 1731 10 0 477 -670 400 103 10 0 1601 10 0 781 -671 408 453 -20 283 313 10 71 0 -672 435 180 37 225 255 10 0 527 -673 432 66 30 1071 1101 10 0 239 -674 374 116 -10 587 617 10 736 0 -675 478 102 10 324 354 10 0 780 -676 335 57 30 210 240 10 0 175 -677 385 239 -20 786 816 10 629 0 -678 386 245 -30 479 509 10 298 0 -679 208 396 20 176 206 10 0 90 -680 380 489 -20 379 409 10 480 0 -681 380 498 -10 0 1531 10 289 0 -682 440 7 20 314 344 10 0 337 -683 434 245 -10 342 372 10 573 0 -684 90 232 10 212 242 10 0 18 -685 389 334 20 169 199 10 0 831 -686 241 205 30 118 148 10 0 385 -687 18 24 32 628 658 10 0 816 -688 57 183 15 0 1607 10 0 43 -689 59 457 -11 334 364 10 833 0 -690 442 243 -20 289 319 10 215 0 -691 402 281 20 0 1656 10 0 188 -692 445 237 10 200 230 10 0 713 -693 441 273 20 282 312 10 0 794 -694 31 175 -19 247 277 10 536 0 -695 234 202 10 80 110 10 0 760 -696 52 303 25 441 471 0 0 1018 -697 167 445 -30 1412 1442 10 229 0 -698 179 286 -30 341 371 10 967 0 -699 269 48 -10 281 311 10 568 0 -700 165 59 27 943 973 10 0 109 -701 461 8 -10 369 399 10 167 0 -702 421 415 30 237 267 10 0 774 -703 59 459 20 311 341 10 0 747 -704 24 492 -30 0 1480 10 987 0 -705 55 449 20 278 308 10 0 102 -706 224 192 -20 0 1748 10 206 0 -707 444 269 20 234 264 10 0 492 -708 491 20 20 394 424 10 0 322 -709 313 126 -20 243 273 10 927 0 -710 283 438 -23 0 1621 10 622 0 -711 352 241 -30 792 822 10 66 0 -712 398 476 -7 0 1541 10 72 0 -713 442 247 -10 241 271 10 692 0 -714 217 207 -20 1382 1412 10 386 0 -715 233 87 -13 253 283 10 317 0 -716 479 127 -8 270 300 10 820 0 -717 6 53 -2 587 617 10 174 0 -718 478 300 -10 890 920 10 777 0 -719 378 493 -20 282 312 10 915 0 -720 303 78 12 179 209 10 0 667 -721 344 62 -10 346 376 10 732 0 -722 371 315 18 0 1674 10 0 146 -723 200 78 -23 0 1632 10 578 0 -724 413 391 8 217 247 10 0 840 -725 415 216 10 176 206 10 0 233 -726 397 57 -15 1476 1506 10 804 0 -727 293 228 -22 0 1763 10 790 0 -728 0 297 -10 0 1557 10 535 0 -729 435 20 20 381 411 10 0 646 -730 195 111 15 998 1028 10 0 115 -731 417 218 -30 278 308 10 52 0 -732 340 54 10 238 268 10 0 721 -733 132 57 -25 244 274 10 388 0 -734 210 379 -23 709 739 10 835 0 -735 228 260 12 0 1787 10 0 484 -736 399 104 10 0 1603 10 0 674 -737 95 277 20 274 304 10 0 86 -738 360 284 19 0 1696 10 0 909 -739 53 466 9 335 365 10 0 550 -740 112 465 10 299 329 10 0 347 -741 313 391 5 154 184 10 0 617 -742 93 235 10 246 276 10 0 140 -743 125 32 -20 259 289 10 479 0 -744 215 282 -8 1440 1470 10 383 0 -745 224 320 -21 0 1737 10 228 0 -746 134 428 20 308 338 10 0 761 -747 26 490 -20 475 505 10 703 0 -748 44 115 24 0 1565 10 0 943 -749 438 127 -5 0 1587 10 953 0 -750 239 15 -27 604 634 10 441 0 -751 342 54 -20 250 280 10 325 0 -752 109 463 -18 334 364 10 276 0 -753 199 187 -20 127 157 10 314 0 -754 201 188 10 0 1732 10 0 872 -755 399 301 -10 194 224 10 894 0 -756 484 171 10 293 323 10 0 226 -757 272 234 -10 1590 1620 10 819 0 -758 380 350 15 866 896 10 0 597 -759 140 108 -10 1071 1101 10 44 0 -760 228 199 -10 0 1756 10 695 0 -761 245 461 -20 649 679 10 746 0 -762 305 107 -30 0 1658 10 316 0 -763 231 195 20 109 139 10 0 859 -764 450 265 10 0 1611 10 0 136 -765 273 149 14 0 1708 10 0 620 -766 12 358 -30 1224 1254 10 937 0 -767 315 121 10 203 233 10 0 54 -768 420 213 10 204 234 10 0 854 -769 331 134 11 0 1670 10 0 841 -770 84 377 -18 926 956 10 634 0 -771 320 280 -14 0 1735 10 284 0 -772 89 185 -20 600 630 10 627 0 -773 472 481 -30 327 357 10 999 0 -774 422 420 -30 0 1570 10 702 0 -775 475 267 7 780 810 10 0 567 -776 470 125 20 0 1558 10 0 977 -777 435 268 10 312 342 10 0 718 -778 409 155 -30 185 215 10 162 0 -779 243 248 30 24 54 10 0 252 -780 488 96 -10 1066 1096 10 675 0 -781 341 72 -10 805 835 10 670 0 -782 58 449 -18 363 393 10 946 0 -783 16 460 20 411 441 10 0 255 -784 480 136 22 256 286 10 0 890 -785 162 388 -3 0 1648 10 608 0 -786 47 208 30 226 256 10 0 919 -787 324 127 30 143 173 10 0 810 -788 87 96 -20 282 312 10 800 0 -789 140 137 32 0 1654 10 0 137 -790 314 205 22 1527 1557 10 0 727 -791 96 346 -9 185 215 10 467 0 -792 321 280 30 77 107 10 0 416 -793 245 251 10 5 35 10 0 464 -794 436 295 -20 528 558 10 693 0 -795 274 261 -24 1707 1737 10 224 0 -796 271 128 -20 346 376 10 933 0 -797 275 45 20 225 255 10 0 636 -798 422 409 10 234 264 0 0 1006 -799 146 188 6 0 1690 10 0 27 -800 93 96 20 225 255 10 0 788 -801 409 255 23 0 1652 0 0 1034 -802 449 428 25 0 1545 10 0 498 -803 90 285 -10 276 306 10 45 0 -804 415 95 15 1177 1207 10 0 726 -805 88 287 30 263 293 10 0 251 -806 379 196 20 194 224 10 0 68 -807 368 452 -22 670 700 10 957 0 -808 202 186 20 151 181 10 0 396 -809 435 11 -20 302 332 10 856 0 -810 269 46 -30 0 1607 10 787 0 -811 7 292 10 246 276 10 0 19 -812 44 496 32 0 1491 0 0 1004 -813 478 99 10 311 341 10 0 896 -814 391 99 -5 0 1605 10 901 0 -815 132 477 -30 0 1556 10 867 0 -816 24 65 -32 0 1519 10 687 0 -817 130 247 17 120 150 10 0 424 -818 133 273 20 119 149 10 0 822 -819 347 62 10 0 1600 10 0 757 -820 404 140 8 0 1622 10 0 716 -821 416 420 -18 0 1574 10 104 0 -822 67 335 -20 0 1610 10 818 0 -823 92 270 -26 257 287 10 244 0 -824 411 95 -20 243 273 10 579 0 -825 132 479 11 257 287 10 0 280 -826 366 334 -10 410 440 10 973 0 -827 125 39 20 0 1566 10 0 563 -828 419 422 20 276 306 10 0 473 -829 460 2 20 0 1487 0 0 1003 -830 67 334 -5 231 261 10 922 0 -831 448 414 -20 0 1554 10 685 0 -832 46 163 -11 926 956 10 80 0 -833 77 465 11 275 305 10 0 689 -834 284 319 -11 817 847 10 154 0 -835 102 422 23 226 256 10 0 734 -836 240 34 -14 1560 1590 10 186 0 -837 141 428 20 208 238 10 0 666 -838 204 269 30 49 79 10 0 886 -839 144 439 30 0 1595 10 0 13 -840 470 417 -8 737 767 10 724 0 -841 404 103 -11 242 272 10 769 0 -842 5 281 -30 1372 1402 10 243 0 -843 487 320 21 0 1564 10 0 928 -844 398 23 10 270 300 10 0 403 -845 90 296 20 166 196 10 0 623 -846 386 13 10 337 367 10 0 282 -847 115 465 10 0 1558 10 0 913 -848 473 475 10 417 447 10 0 290 -849 275 42 30 238 268 10 0 654 -850 286 356 -30 0 1700 10 906 0 -851 15 69 10 296 326 10 0 422 -852 267 44 -10 0 1605 10 22 0 -853 243 399 10 235 265 10 0 296 -854 390 249 -10 582 612 10 768 0 -855 210 391 30 146 176 10 0 448 -856 433 15 20 297 327 10 0 809 -857 24 259 -12 0 1585 10 902 0 -858 12 463 -20 361 391 10 376 0 -859 237 213 -20 147 177 10 763 0 -860 182 480 31 0 1572 10 0 238 -861 409 88 20 270 300 10 0 131 -862 244 368 -40 414 444 10 225 0 -863 381 328 12 717 747 10 0 430 -864 213 185 21 0 1737 10 0 944 -865 482 141 -10 0 1555 10 950 0 -866 319 124 -23 178 208 10 291 0 -867 141 431 30 0 1600 10 0 815 -868 198 264 -10 140 170 10 126 0 -869 69 334 30 206 236 10 0 433 -870 299 98 30 0 1652 10 0 94 -871 240 250 10 37 67 10 0 101 -872 199 203 -10 1457 1487 10 754 0 -873 459 17 20 411 441 10 0 380 -874 423 217 20 242 272 10 0 323 -875 477 179 20 0 1574 10 0 599 -876 213 397 10 217 247 10 0 2 -877 405 187 -23 1251 1281 10 604 0 -878 269 402 -10 203 233 10 354 0 -879 53 204 8 1055 1085 10 0 407 -880 13 394 -10 0 1534 10 601 0 -881 15 68 -10 303 333 10 640 0 -882 56 268 -10 1064 1094 10 421 0 -883 360 184 -20 0 1683 10 517 0 -884 307 102 -20 210 240 10 264 0 -885 130 57 40 0 1584 10 0 526 -886 250 328 -30 249 279 10 838 0 -887 91 231 -35 200 230 10 508 0 -888 479 176 20 240 270 10 0 444 -889 420 224 -20 0 1640 10 428 0 -890 461 182 -22 629 659 10 784 0 -891 418 218 20 267 297 10 0 412 -892 419 418 10 249 279 10 0 211 -893 336 493 20 1493 1523 0 0 1021 -894 389 300 10 154 184 10 0 755 -895 92 76 -25 1139 1169 10 584 0 -896 476 102 -10 336 366 10 813 0 -897 418 399 20 0 1587 10 0 194 -898 109 56 27 239 269 10 0 488 -899 13 465 31 774 804 10 0 348 -900 92 232 -10 177 207 10 355 0 -901 394 47 5 313 343 10 0 814 -902 16 287 12 0 1575 10 0 857 -903 399 102 20 267 297 10 0 521 -904 143 158 12 141 171 10 0 342 -905 18 484 -30 329 359 10 593 0 -906 250 411 30 188 218 10 0 850 -907 19 273 -21 1017 1047 10 569 0 -908 365 28 -10 268 298 10 1000 0 -909 387 297 -19 144 174 10 738 0 -910 433 447 -26 794 824 10 88 0 -911 214 274 -23 1369 1399 10 173 0 -912 489 338 -25 1397 1427 10 495 0 -913 130 494 -10 759 789 10 847 0 -914 23 67 30 389 419 10 0 418 -915 374 489 20 269 299 10 0 719 -916 126 30 10 272 302 10 0 92 -917 112 467 10 276 306 10 0 434 -918 489 274 31 534 564 10 0 36 -919 61 214 -30 342 372 10 786 0 -920 166 440 12 207 237 10 0 106 -921 56 75 -20 1438 1468 10 596 0 -922 210 276 5 47 77 10 0 830 -923 80 286 10 0 1638 0 0 1032 -924 17 459 -20 422 452 10 554 0 -925 66 448 10 270 300 10 0 609 -926 351 128 -24 1253 1283 10 33 0 -927 352 176 20 126 156 10 0 709 -928 490 286 -21 522 552 10 843 0 -929 247 219 17 0 1780 10 0 34 -930 86 268 -10 217 247 10 14 0 -931 398 329 17 167 197 10 0 67 -932 272 402 10 160 190 10 0 362 -933 317 123 20 190 220 10 0 796 -934 408 318 -10 643 673 10 532 0 -935 66 31 25 1048 1078 10 0 294 -936 425 448 -21 794 824 10 378 0 -937 35 304 30 0 1590 10 0 766 -938 471 94 30 0 1541 10 0 331 -939 470 473 -31 431 461 10 468 0 -940 224 56 -25 1186 1216 10 565 0 -941 343 47 20 277 307 10 0 435 -942 52 18 28 0 1506 10 0 343 -943 16 68 -24 314 344 10 748 0 -944 195 185 -21 0 1726 10 864 0 -945 92 236 20 258 288 10 0 562 -946 76 462 18 0 1537 10 0 782 -947 124 56 20 231 261 10 0 372 -948 481 454 -20 0 1503 10 200 0 -949 477 483 20 366 396 10 0 213 -950 481 124 10 0 1548 10 0 865 -951 389 156 27 716 746 10 0 69 -952 384 16 -20 0 1542 10 165 0 -953 492 34 5 811 841 10 0 749 -954 371 200 -14 224 254 10 644 0 -955 153 235 -16 0 1713 10 988 0 -956 428 202 -7 904 934 10 91 0 -957 257 391 22 0 1670 10 0 807 -958 421 218 10 254 284 10 0 249 -959 206 186 10 188 218 0 0 1037 -960 393 301 30 0 1660 10 0 631 -961 204 187 -7 0 1733 10 189 0 -962 468 475 10 313 343 10 0 499 -963 477 122 10 330 360 10 0 390 -964 100 66 -3 1400 1430 10 99 0 -965 489 27 -10 421 451 10 504 0 -966 12 451 -30 311 341 10 975 0 -967 197 270 30 96 126 10 0 698 -968 311 422 -12 988 1018 10 324 0 -969 489 17 10 380 410 10 0 616 -970 13 214 -20 1354 1384 10 312 0 -971 440 247 -10 253 283 10 155 0 -972 28 467 34 1343 1373 10 0 119 -973 388 325 10 263 293 10 0 826 -974 270 401 20 152 182 10 0 148 -975 5 445 30 0 1498 10 0 966 -976 198 271 20 0 1755 10 0 161 -977 480 131 -20 688 718 10 776 0 -978 437 98 16 0 1571 10 0 561 -979 131 246 17 832 862 10 0 302 -980 49 437 7 0 1537 10 0 417 -981 270 49 30 292 322 10 0 429 -982 337 41 -10 0 1585 10 142 0 -983 318 280 20 0 1737 0 0 1043 -984 154 392 9 0 1640 0 0 1017 -985 493 111 -20 0 1532 10 576 0 -986 399 450 -20 359 389 10 56 0 -987 67 452 30 0 1539 10 0 704 -988 34 239 16 0 1595 10 0 955 -989 343 276 15 96 126 10 0 519 -990 393 12 -20 309 339 10 377 0 -991 236 247 20 0 1797 10 0 199 -992 340 291 -20 470 500 10 87 0 -993 3 292 20 256 286 10 0 575 -994 209 68 -10 1568 1598 10 261 0 -995 18 225 8 691 721 0 0 1025 -996 147 435 20 245 275 10 0 419 -997 335 99 25 1218 1248 10 0 502 -998 485 24 20 326 356 10 0 122 -999 470 475 30 314 344 10 0 773 -1000 341 58 10 224 254 10 0 908 -1001 16 497 -20 426 456 10 397 0 -1002 469 489 -4 555 585 10 658 0 -1003 460 2 -20 0 1487 10 829 0 -1004 44 496 -32 0 1491 10 812 0 -1005 57 43 -15 0 1528 10 574 0 -1006 422 409 -10 234 264 10 798 0 -1007 27 464 -21 1291 1321 10 185 0 -1008 120 17 -30 0 1545 10 457 0 -1009 474 96 -30 0 1540 10 117 0 -1010 485 104 -21 794 824 10 399 0 -1011 7 382 -27 770 800 10 120 0 -1012 376 494 -30 274 304 10 639 0 -1013 111 467 -20 287 317 10 465 0 -1014 421 386 -29 824 854 10 70 0 -1015 440 436 -18 892 922 10 1 0 -1016 406 450 -20 259 289 10 253 0 -1017 154 392 -9 0 1640 10 984 0 -1018 52 303 -25 441 471 10 696 0 -1019 412 214 -10 0 1646 10 300 0 -1020 163 472 -9 653 683 10 138 0 -1021 336 493 -20 1493 1523 10 893 0 -1022 495 227 -20 0 1565 10 486 0 -1023 33 286 -11 1546 1576 10 221 0 -1024 374 190 -20 0 1674 10 135 0 -1025 18 225 -8 691 721 10 995 0 -1026 297 102 -10 155 185 10 326 0 -1027 323 77 -36 1405 1435 10 48 0 -1028 374 232 -33 125 155 10 363 0 -1029 255 487 -19 0 1574 10 656 0 -1030 186 135 -24 0 1680 10 166 0 -1031 89 272 -10 0 1649 10 635 0 -1032 80 286 -10 0 1638 10 923 0 -1033 398 103 -30 278 308 10 180 0 -1034 409 255 -23 0 1652 10 801 0 -1035 321 277 -10 0 1736 10 542 0 -1036 86 199 -23 0 1640 10 50 0 -1037 206 186 -10 188 218 10 959 0 -1038 386 154 -31 1101 1131 10 159 0 -1039 175 352 -12 0 1685 10 246 0 -1040 385 295 -20 0 1669 10 481 0 -1041 244 277 -18 0 1784 10 590 0 -1042 273 300 -30 55 85 10 93 0 -1043 318 280 -20 0 1737 10 983 0 -1044 230 197 -40 122 152 10 5 0 -1045 187 73 -18 292 322 10 190 0 -1046 133 202 -33 461 491 10 7 0 diff --git a/jsprit-instances/instances/lilim/1000/LRC1103.txt b/jsprit-instances/instances/lilim/1000/LRC1103.txt deleted file mode 100644 index a81128b70..000000000 --- a/jsprit-instances/instances/lilim/1000/LRC1103.txt +++ /dev/null @@ -1,1050 +0,0 @@ -250 200 1 -0 250 250 0 0 1821 0 0 0 -1 440 436 18 0 1546 10 0 202 -2 214 394 -20 231 261 10 311 0 -3 476 483 -10 0 1487 10 962 0 -4 352 487 27 0 1553 0 0 1046 -5 230 197 -20 122 152 10 605 0 -6 175 239 23 0 1736 10 0 302 -7 133 202 33 0 1685 10 0 995 -8 328 458 17 0 1589 10 0 850 -9 25 499 -10 0 1476 10 905 0 -10 226 423 -7 0 1637 10 218 0 -11 313 282 -20 163 193 10 983 0 -12 60 454 10 347 377 10 0 551 -13 239 486 -12 1482 1512 10 324 0 -14 102 264 10 148 178 10 0 43 -15 408 452 -10 0 1555 10 671 0 -16 451 62 5 0 1536 10 0 953 -17 203 390 40 0 1664 10 0 679 -18 92 233 -10 0 1653 10 684 0 -19 7 300 30 345 375 10 0 907 -20 409 90 -20 0 1586 10 267 0 -21 307 108 10 237 267 10 0 557 -22 347 54 -30 0 1593 10 676 0 -23 406 87 10 0 1586 10 0 96 -24 371 332 -5 530 560 10 826 0 -25 116 466 20 254 284 10 0 465 -26 441 265 -23 0 1620 10 801 0 -27 130 140 17 194 224 10 0 898 -28 80 117 -18 824 854 10 305 0 -29 421 387 -20 801 831 10 897 0 -30 83 300 26 500 530 10 0 583 -31 136 52 -10 293 323 10 653 0 -32 18 462 20 398 428 10 0 111 -33 390 120 -17 1004 1034 10 929 0 -34 188 119 44 975 1005 10 0 166 -35 467 114 -10 0 1555 10 219 0 -36 440 292 -10 940 970 10 768 0 -37 268 400 -21 243 273 10 228 0 -38 391 202 14 148 178 10 0 323 -39 377 432 20 0 1590 10 0 262 -40 80 290 10 197 227 10 0 64 -41 439 15 -3 0 1510 10 454 0 -42 307 52 -8 920 950 10 982 0 -43 111 192 -10 1199 1229 10 14 0 -44 131 56 -7 0 1584 10 158 0 -45 88 286 10 0 1646 10 0 307 -46 69 414 -31 1263 1293 10 899 0 -47 41 232 16 0 1602 10 0 497 -48 323 77 -9 1405 1435 10 781 0 -49 340 416 36 321 351 10 0 224 -50 86 199 -8 0 1640 10 407 0 -51 314 124 20 231 261 10 0 956 -52 375 191 30 0 1673 10 0 958 -53 226 175 -14 1694 1724 10 652 0 -54 242 106 -12 0 1667 10 796 0 -55 417 417 -30 0 1575 10 702 0 -56 419 459 20 0 1543 10 0 431 -57 389 11 -20 0 1535 10 941 0 -58 450 416 -25 577 607 10 802 0 -59 246 255 10 0 1805 10 0 149 -60 71 333 10 197 227 10 0 369 -61 105 474 -10 471 501 10 917 0 -62 20 489 -30 383 413 10 593 0 -63 388 331 20 160 190 10 0 201 -64 92 259 -10 399 429 10 40 0 -65 200 261 10 166 196 10 0 610 -66 400 288 30 0 1657 10 0 222 -67 299 285 -20 0 1751 10 499 0 -68 378 199 -20 207 237 10 143 0 -69 325 147 14 0 1684 10 0 633 -70 421 386 29 824 854 10 0 332 -71 404 447 20 0 1561 10 0 253 -72 412 478 7 0 1532 10 0 936 -73 26 67 15 1317 1347 10 0 438 -74 358 183 -30 0 1684 10 405 0 -75 30 302 10 267 297 10 0 496 -76 176 470 -31 0 1579 10 860 0 -77 96 270 -20 162 192 10 818 0 -78 243 408 -40 0 1653 10 225 0 -79 60 29 -3 0 1520 10 99 0 -80 34 169 -21 484 514 10 970 0 -81 407 280 10 0 1652 10 0 567 -82 277 403 10 175 205 10 0 932 -83 498 456 27 1406 1436 10 0 948 -84 384 491 20 348 378 10 0 277 -85 355 174 33 0 1682 10 0 275 -86 97 288 22 0 1654 10 0 923 -87 316 284 -10 125 155 10 542 0 -88 334 403 26 174 204 10 0 398 -89 415 223 20 305 335 10 0 711 -90 230 320 -36 0 1739 10 745 0 -91 432 199 -13 0 1622 10 890 0 -92 92 18 -20 1124 1154 10 596 0 -93 273 300 30 55 85 10 0 657 -94 269 112 19 0 1672 10 0 568 -95 429 389 18 424 454 0 0 1013 -96 371 71 -10 0 1595 10 23 0 -97 5 297 -10 0 1562 10 575 0 -98 414 378 23 495 525 10 0 430 -99 38 15 3 0 1495 10 0 79 -100 2 295 30 0 1559 10 0 993 -101 237 254 -10 83 113 10 230 0 -102 54 445 -10 308 338 10 664 0 -103 382 110 24 0 1619 10 0 824 -104 438 488 18 0 1508 10 0 848 -105 395 331 20 217 247 10 0 631 -106 230 487 -15 1130 1160 10 370 0 -107 249 407 10 174 204 10 0 710 -108 488 26 -20 0 1485 10 288 0 -109 151 81 28 0 1616 10 0 450 -110 483 14 10 0 1480 10 0 708 -111 0 422 -20 821 851 10 32 0 -112 429 67 16 732 762 10 0 670 -113 195 464 20 1541 1571 10 0 734 -114 356 256 19 106 136 10 0 494 -115 264 180 -23 1681 1711 10 667 0 -116 94 235 20 156 186 10 0 945 -117 474 96 30 0 1540 10 0 379 -118 268 52 -30 306 336 10 849 0 -119 44 440 24 0 1531 10 0 461 -120 7 382 27 0 1535 10 0 634 -121 459 53 -9 0 1524 10 908 0 -122 491 25 10 409 439 10 0 965 -123 439 243 -10 0 1622 10 573 0 -124 210 185 -32 76 106 10 234 0 -125 150 68 -26 423 453 10 373 0 -126 201 270 10 52 82 10 0 464 -127 0 188 -30 0 1554 10 786 0 -128 103 464 -15 0 1552 10 880 0 -129 325 56 -20 0 1604 10 553 0 -130 44 344 12 1079 1109 10 0 601 -131 418 75 11 448 478 10 0 444 -132 472 57 -30 1295 1325 10 365 0 -133 460 328 -10 0 1587 10 184 0 -134 89 270 -20 0 1649 10 304 0 -135 374 190 -22 0 1674 10 478 0 -136 463 253 -7 1047 1077 10 775 0 -137 97 93 -22 0 1592 10 356 0 -138 163 472 -30 653 683 10 752 0 -139 29 336 -21 0 1574 10 569 0 -140 84 453 -4 0 1549 10 348 0 -141 294 421 -8 1575 1605 10 617 0 -142 343 62 10 357 387 10 0 533 -143 371 193 20 0 1678 10 0 68 -144 142 372 -36 162 192 10 292 0 -145 66 88 2 0 1566 10 0 914 -146 395 332 10 0 1645 10 0 931 -147 93 413 -20 0 1585 10 268 0 -148 267 394 -10 259 289 10 534 0 -149 249 258 -10 0 1803 10 59 0 -150 472 129 10 0 1559 0 0 1018 -151 87 3 13 1433 1463 10 0 333 -152 62 326 -20 0 1609 10 830 0 -153 212 186 -3 1707 1737 10 187 0 -154 241 402 -10 0 1659 10 487 0 -155 439 266 -20 189 219 10 375 0 -156 79 80 19 0 1570 10 0 555 -157 62 453 10 0 1535 10 0 987 -158 188 151 7 0 1695 10 0 44 -159 386 154 -24 1101 1131 10 205 0 -160 38 301 -10 296 326 10 645 0 -161 192 265 10 0 1752 0 0 1001 -162 371 192 -22 134 164 10 790 0 -163 64 294 -10 1101 1131 10 728 0 -164 381 494 -30 0 1535 10 639 0 -165 437 12 -20 330 360 10 856 0 -166 186 135 -44 0 1680 10 34 0 -167 459 10 -20 0 1493 10 242 0 -168 175 422 -7 1446 1476 10 697 0 -169 274 48 10 0 1608 10 0 810 -170 488 173 -20 0 1561 10 866 0 -171 398 97 -10 0 1599 10 321 0 -172 385 17 -10 809 839 10 198 0 -173 180 283 -8 0 1734 10 698 0 -174 71 12 -28 0 1514 10 942 0 -175 343 49 10 0 1590 10 0 406 -176 248 251 20 2 32 10 0 779 -177 7 194 29 0 1562 0 0 1040 -178 322 290 -18 1479 1509 10 722 0 -179 410 399 25 0 1593 10 0 662 -180 398 103 30 0 1603 10 0 814 -181 385 285 13 0 1672 10 0 992 -182 179 497 -8 0 1554 10 761 0 -183 464 13 -20 0 1492 10 195 0 -184 492 335 10 828 858 10 0 133 -185 27 464 21 0 1502 10 0 258 -186 231 29 -2 1226 1256 10 750 0 -187 157 38 3 1048 1078 10 0 153 -188 439 268 10 298 328 0 0 1014 -189 149 214 -10 482 512 10 618 0 -190 187 73 -31 292 322 10 723 0 -191 429 169 8 0 1615 10 0 541 -192 350 199 -20 1201 1231 10 806 0 -193 60 231 32 0 1621 10 0 538 -194 448 404 -30 599 629 10 537 0 -195 481 20 20 347 377 10 0 183 -196 436 25 19 0 1520 0 0 1005 -197 111 459 20 359 389 0 0 1045 -198 389 17 10 0 1540 10 0 172 -199 148 208 -20 526 556 10 845 0 -200 475 477 -25 0 1492 10 712 0 -201 390 325 -20 0 1653 10 63 0 -202 346 354 -18 0 1670 10 1 0 -203 91 266 10 0 1652 10 0 424 -204 17 65 20 0 1514 10 0 572 -205 391 112 24 1000 1030 10 0 159 -206 224 203 20 0 1758 10 0 959 -207 426 231 24 1028 1058 0 0 1047 -208 260 472 33 1036 1066 10 0 656 -209 265 0 -20 896 926 10 377 0 -210 391 293 20 0 1664 0 0 1043 -211 411 421 -20 0 1577 10 821 0 -212 132 30 20 0 1562 10 0 543 -213 475 480 -20 379 409 10 949 0 -214 286 244 -13 1284 1314 10 519 0 -215 436 237 20 186 216 10 0 560 -216 402 284 -14 0 1656 10 644 0 -217 287 397 12 564 594 0 0 1030 -218 272 420 7 0 1640 10 0 10 -219 477 120 10 0 1550 10 0 35 -220 145 434 20 233 263 10 0 996 -221 33 286 -20 1546 1576 10 334 0 -222 370 262 -30 1099 1129 10 66 0 -223 393 20 20 0 1541 10 0 952 -224 330 308 -36 0 1713 10 49 0 -225 246 398 40 148 178 10 0 78 -226 482 184 -10 0 1570 10 245 0 -227 451 305 -25 208 238 10 495 0 -228 226 316 21 70 100 10 0 37 -229 110 459 -20 348 378 10 328 0 -230 244 250 10 12 42 10 0 101 -231 458 16 20 313 343 10 0 336 -232 390 34 -30 1060 1090 10 616 0 -233 423 214 20 217 247 10 0 592 -234 219 215 32 46 76 10 0 124 -235 326 118 10 0 1659 10 0 933 -236 365 74 -5 848 878 10 322 0 -237 331 356 -20 712 742 10 362 0 -238 210 398 -38 0 1658 10 581 0 -239 403 93 -10 0 1592 10 709 0 -240 248 404 30 154 184 10 0 368 -241 65 62 15 976 1006 10 0 921 -242 460 13 20 322 352 10 0 167 -243 0 293 30 279 309 10 0 811 -244 211 248 26 39 69 10 0 635 -245 484 174 10 265 295 10 0 226 -246 175 352 12 0 1685 10 0 822 -247 455 168 21 0 1591 10 0 594 -248 224 191 20 81 111 10 0 706 -249 439 156 2 526 556 0 0 1012 -250 434 359 13 0 1598 10 0 577 -251 118 314 -30 0 1665 10 869 0 -252 234 246 10 65 95 10 0 659 -253 406 450 -20 0 1558 10 71 0 -254 75 118 -21 0 1592 10 510 0 -255 115 395 -30 815 845 10 867 0 -256 329 456 19 249 279 10 0 910 -257 218 403 -15 1319 1349 10 626 0 -258 149 341 -21 0 1676 10 185 0 -259 253 74 -18 1350 1380 10 435 0 -260 436 241 -10 327 357 10 690 0 -261 238 203 -20 94 124 10 453 0 -262 405 455 -20 0 1554 10 39 0 -263 485 27 -20 0 1488 10 456 0 -264 323 118 -30 0 1661 10 787 0 -265 330 371 -20 559 589 10 404 0 -266 25 65 10 0 1520 10 0 418 -267 406 96 20 219 249 10 0 20 -268 49 451 20 284 314 10 0 147 -269 307 249 -28 1377 1407 10 296 0 -270 178 135 -4 1514 1544 10 895 0 -271 299 353 34 114 144 10 0 436 -272 236 213 20 39 69 10 0 660 -273 355 177 20 0 1684 10 0 727 -274 394 23 -10 0 1543 10 452 0 -275 306 235 -33 0 1754 10 85 0 -276 90 477 -11 277 307 10 833 0 -277 379 486 -20 0 1543 10 84 0 -278 435 16 10 367 397 10 0 282 -279 8 497 -10 0 1466 10 489 0 -280 150 484 -10 0 1557 10 585 0 -281 213 399 18 0 1658 10 0 387 -282 391 18 -10 0 1540 10 278 0 -283 111 392 18 1169 1199 0 0 1007 -284 330 281 -15 1330 1360 10 934 0 -285 344 203 14 0 1706 0 0 1010 -286 91 235 -35 269 299 10 508 0 -287 346 60 -10 321 351 10 490 0 -288 483 27 20 0 1489 10 0 108 -289 382 498 -30 0 1531 10 719 0 -290 457 492 -10 508 538 10 939 0 -291 291 213 23 0 1756 10 0 883 -292 154 374 36 0 1655 10 0 144 -293 225 196 10 0 1752 10 0 961 -294 94 40 -20 0 1550 10 800 0 -295 0 356 -27 1086 1116 10 513 0 -296 297 283 28 1349 1379 10 0 269 -297 371 423 10 0 1600 10 0 999 -298 417 217 30 189 219 10 0 522 -299 500 228 -20 782 812 10 888 0 -300 412 214 -10 0 1646 10 527 0 -301 442 289 25 195 225 10 0 843 -302 157 269 -23 1576 1606 10 6 0 -303 440 241 -10 301 331 10 692 0 -304 100 266 20 0 1661 10 0 134 -305 111 178 18 156 186 10 0 28 -306 91 101 10 0 1594 0 0 1037 -307 25 307 -10 249 279 10 45 0 -308 135 400 20 299 329 10 0 503 -309 58 458 -20 323 353 10 703 0 -310 133 26 10 0 1559 10 0 827 -311 211 386 20 0 1670 10 0 2 -312 94 97 20 218 248 10 0 457 -313 30 155 -18 1280 1310 10 614 0 -314 208 184 20 0 1733 10 0 346 -315 394 333 20 194 224 10 0 597 -316 355 180 30 0 1685 10 0 350 -317 241 180 13 0 1741 10 0 391 -318 21 485 30 0 1483 10 0 624 -319 80 251 14 0 1641 0 0 1015 -320 476 61 -5 0 1517 10 901 0 -321 406 94 10 0 1591 10 0 171 -322 364 71 5 0 1599 10 0 236 -323 418 221 -14 291 321 10 38 0 -324 274 441 12 695 725 10 0 13 -325 304 97 20 182 212 10 0 636 -326 297 102 10 155 185 10 0 884 -327 250 405 20 162 192 10 0 853 -328 111 463 20 0 1557 10 0 229 -329 408 279 -20 0 1651 10 544 0 -330 263 418 25 0 1643 10 0 442 -331 480 119 -21 0 1547 10 399 0 -332 420 383 -29 0 1596 10 70 0 -333 142 14 -13 0 1552 10 151 0 -334 73 328 20 193 223 10 0 221 -335 50 438 -10 0 1537 10 770 0 -336 441 7 -20 392 422 10 231 0 -337 462 14 -20 397 427 10 682 0 -338 360 294 -20 1418 1448 10 545 0 -339 58 39 12 1163 1193 10 0 748 -340 58 391 -10 0 1573 10 550 0 -341 410 285 -10 0 1648 10 352 0 -342 96 97 20 0 1594 10 0 388 -343 21 64 20 0 1516 10 0 410 -344 238 210 30 134 164 10 0 607 -345 479 121 10 308 338 10 0 963 -346 200 178 -20 94 124 10 314 0 -347 216 341 19 0 1714 10 0 984 -348 48 437 4 0 1536 10 0 140 -349 200 270 20 59 89 10 0 427 -350 357 181 -30 149 179 10 316 0 -351 476 174 30 324 354 10 0 875 -352 400 286 10 154 184 10 0 341 -353 351 481 10 322 352 10 0 893 -354 270 400 -30 0 1660 10 906 0 -355 95 234 10 163 193 10 0 367 -356 128 113 22 363 393 10 0 137 -357 133 455 25 808 838 10 0 608 -358 16 463 -20 0 1495 10 376 0 -359 59 388 20 663 693 10 0 628 -360 376 190 -5 0 1672 10 977 0 -361 481 122 -2 0 1547 10 749 0 -362 266 405 20 0 1656 10 0 237 -363 374 232 33 125 155 10 0 416 -364 398 20 20 0 1538 10 0 646 -365 481 26 30 0 1490 10 0 132 -366 63 444 20 0 1542 10 0 417 -367 89 290 -10 0 1646 10 355 0 -368 246 314 -30 1445 1475 10 240 0 -369 40 304 -10 1145 1175 10 60 0 -370 262 369 15 0 1692 10 0 106 -371 323 29 7 0 1579 10 0 385 -372 89 65 16 720 750 10 0 574 -373 144 35 26 0 1572 10 0 125 -374 200 265 10 0 1759 10 0 911 -375 436 264 20 186 216 10 0 155 -376 15 457 20 323 353 10 0 358 -377 397 20 20 280 310 10 0 209 -378 328 491 21 0 1558 10 0 463 -379 399 175 -30 0 1645 10 117 0 -380 432 2 -20 467 497 10 729 0 -381 63 336 -20 0 1606 10 587 0 -382 6 296 10 320 350 10 0 842 -383 146 376 -20 0 1648 10 466 0 -384 295 247 -18 0 1766 10 590 0 -385 235 33 -7 0 1594 10 371 0 -386 233 204 20 54 84 10 0 695 -387 142 360 -18 1532 1562 10 281 0 -388 177 156 -20 0 1692 10 342 0 -389 315 287 30 148 178 10 0 795 -390 452 172 -20 0 1595 10 776 0 -391 263 153 -13 412 442 10 317 0 -392 493 493 -4 856 886 10 658 0 -393 320 283 30 0 1734 0 0 1039 -394 64 5 -10 0 1504 10 488 0 -395 95 235 10 155 185 10 0 509 -396 203 211 -28 1306 1336 10 476 0 -397 16 497 20 0 1471 10 0 747 -398 348 348 -26 0 1673 10 88 0 -399 485 104 21 794 824 10 0 331 -400 330 147 28 0 1681 10 0 502 -401 443 237 20 193 223 10 0 713 -402 316 286 -30 0 1736 10 792 0 -403 335 46 -10 1342 1372 10 1000 0 -404 381 495 20 0 1534 10 0 265 -405 364 173 30 180 210 10 0 74 -406 267 162 -10 1449 1479 10 175 0 -407 214 245 8 0 1775 10 0 50 -408 92 234 -30 0 1653 10 887 0 -409 347 459 25 0 1581 10 0 485 -410 30 7 -20 1189 1219 10 343 0 -411 120 37 -10 0 1562 10 621 0 -412 397 153 -19 882 912 10 778 0 -413 210 29 -23 1051 1081 10 663 0 -414 87 285 30 241 271 10 0 805 -415 132 32 -26 784 814 10 632 0 -416 390 294 -33 0 1665 10 363 0 -417 67 451 -20 1216 1246 10 366 0 -418 24 68 -10 0 1521 10 266 0 -419 146 439 -30 259 289 10 539 0 -420 209 212 -10 0 1756 10 754 0 -421 6 292 10 0 1564 0 0 1035 -422 18 63 10 339 369 10 0 687 -423 149 98 4 0 1629 10 0 947 -424 91 268 -10 0 1651 10 203 0 -425 103 177 28 626 656 0 0 1023 -426 367 178 20 180 210 10 0 951 -427 225 269 -20 0 1780 10 349 0 -428 443 246 -10 0 1618 10 515 0 -429 306 42 11 477 507 10 0 564 -430 374 306 -23 0 1675 10 98 0 -431 413 421 -20 0 1575 10 56 0 -432 470 405 17 0 1542 10 0 831 -433 33 278 18 1487 1517 0 0 1033 -434 149 458 -25 1164 1194 10 815 0 -435 257 57 18 1226 1256 10 0 259 -436 272 403 -34 190 220 10 271 0 -437 221 291 9 50 80 10 0 549 -438 1 101 -15 0 1521 10 73 0 -439 332 459 -20 0 1587 10 915 0 -440 220 392 -30 258 288 10 855 0 -441 253 50 -28 0 1611 10 836 0 -442 250 441 -25 756 786 10 330 0 -443 471 484 10 340 370 10 0 840 -444 480 152 -11 0 1561 10 131 0 -445 404 83 -10 298 328 10 638 0 -446 476 94 20 0 1537 10 0 938 -447 458 213 22 0 1600 10 0 764 -448 215 395 -10 0 1662 10 507 0 -449 85 288 20 182 212 10 0 882 -450 179 75 -28 740 770 10 109 0 -451 228 287 21 43 73 10 0 974 -452 397 18 10 0 1537 10 0 274 -453 238 204 20 0 1764 10 0 261 -454 488 3 3 401 431 10 0 41 -455 407 88 -20 0 1586 10 861 0 -456 459 14 20 315 345 10 0 263 -457 120 17 -20 0 1545 10 312 0 -458 235 316 -10 656 686 10 876 0 -459 370 382 11 884 914 0 0 1004 -460 405 454 11 1303 1333 10 0 807 -461 17 458 -24 433 463 10 119 0 -462 43 135 -19 0 1575 10 536 0 -463 318 497 -21 0 1555 10 378 0 -464 199 268 -10 71 101 10 126 0 -465 111 467 -20 0 1554 10 25 0 -466 138 438 20 287 317 10 0 383 -467 172 314 -11 0 1711 10 785 0 -468 494 468 31 0 1484 10 0 651 -469 35 303 20 221 251 10 0 857 -470 341 59 27 0 1600 10 0 721 -471 423 221 -20 258 288 10 629 0 -472 395 295 -30 211 241 10 755 0 -473 413 417 -15 356 386 10 758 0 -474 339 60 20 211 241 10 0 732 -475 277 428 -22 490 520 10 957 0 -476 176 199 28 0 1722 10 0 396 -477 265 240 -17 0 1793 10 834 0 -478 365 190 22 0 1682 10 0 135 -479 133 53 20 0 1582 10 0 885 -480 387 488 20 362 392 10 0 680 -481 385 295 20 0 1669 10 0 556 -482 491 369 28 730 760 10 0 912 -483 445 273 -10 0 1615 10 725 0 -484 195 273 -17 0 1752 10 979 0 -485 313 493 -25 0 1560 10 409 0 -486 495 227 -10 0 1565 10 756 0 -487 241 403 10 220 250 10 0 154 -488 30 72 10 0 1529 10 0 394 -489 21 487 10 350 380 10 0 279 -490 324 99 10 0 1643 10 0 287 -491 453 318 30 374 404 10 0 520 -492 443 272 10 0 1617 10 0 918 -493 447 184 27 0 1604 10 0 672 -494 366 288 -19 0 1689 10 114 0 -495 440 284 25 0 1618 10 0 227 -496 13 314 -10 0 1566 10 75 0 -497 72 227 -16 0 1632 10 47 0 -498 377 385 6 0 1626 10 0 773 -499 477 478 20 392 422 10 0 67 -500 204 185 -10 163 193 10 859 0 -501 226 191 20 0 1748 10 0 864 -502 330 138 -28 0 1674 10 400 0 -503 185 434 -20 574 604 10 308 0 -504 483 22 -20 334 364 10 998 0 -505 71 282 29 0 1630 10 0 623 -506 60 5 -8 0 1501 10 717 0 -507 189 402 10 536 566 10 0 448 -508 134 211 35 122 152 10 0 286 -509 146 313 -10 1195 1225 10 395 0 -510 21 146 21 487 517 10 0 254 -511 37 281 -25 0 1596 10 696 0 -512 416 417 -10 0 1576 10 798 0 -513 44 311 27 0 1597 10 0 295 -514 361 181 -20 197 227 10 588 0 -515 444 242 10 216 246 10 0 428 -516 444 271 -20 0 1616 10 548 0 -517 359 179 -18 0 1681 10 529 0 -518 388 334 20 0 1650 10 0 685 -519 401 164 13 621 651 10 0 214 -520 499 316 -30 622 652 10 491 0 -521 399 106 -30 0 1604 10 673 0 -522 425 215 -30 229 259 10 298 0 -523 407 98 -20 0 1593 10 841 0 -524 406 460 -20 0 1550 10 986 0 -525 88 95 20 270 300 10 0 526 -526 95 64 -20 766 796 10 525 0 -527 306 229 10 0 1752 10 0 300 -528 273 55 20 0 1615 10 0 699 -529 384 149 18 0 1644 10 0 517 -530 122 35 10 250 280 10 0 743 -531 308 199 14 0 1734 0 0 1008 -532 390 301 -10 0 1662 10 894 0 -533 300 108 -10 0 1661 10 142 0 -534 267 400 10 232 262 10 0 148 -535 8 300 10 0 1564 10 0 988 -536 105 181 19 0 1651 10 0 462 -537 398 325 30 233 263 10 0 194 -538 166 247 -32 0 1727 10 193 0 -539 140 431 30 211 241 10 0 419 -540 253 118 19 547 577 10 0 765 -541 359 246 -8 1423 1453 10 191 0 -542 321 277 10 0 1736 10 0 87 -543 168 59 -20 366 396 10 212 0 -544 406 285 20 0 1652 10 0 329 -545 391 334 20 0 1647 10 0 338 -546 437 19 -20 0 1514 10 873 0 -547 201 278 13 56 86 10 0 744 -548 435 267 20 323 353 10 0 516 -549 245 408 -9 204 234 10 437 0 -550 16 462 10 0 1496 10 0 340 -551 107 374 -10 914 944 10 12 0 -552 477 97 10 0 1538 10 0 950 -553 346 57 20 308 338 10 0 129 -554 14 459 -20 336 366 10 966 0 -555 102 6 -19 0 1526 10 156 0 -556 359 287 -20 0 1696 10 481 0 -557 297 131 -10 1165 1195 10 21 0 -558 282 1 18 0 1560 10 0 852 -559 21 70 -10 0 1520 10 816 0 -560 440 244 -20 266 296 10 215 0 -561 482 104 -20 0 1537 10 896 0 -562 120 261 -20 793 823 10 737 0 -563 125 29 30 283 313 10 0 916 -564 292 32 -11 0 1589 10 429 0 -565 262 92 -30 630 660 10 686 0 -566 68 160 -15 1136 1166 10 688 0 -567 405 276 -10 0 1654 10 81 0 -568 277 50 -19 201 231 10 94 0 -569 32 319 21 401 431 10 0 139 -570 344 70 24 1146 1176 0 0 1022 -571 481 84 17 506 536 10 0 780 -572 21 68 -20 401 431 10 204 0 -573 441 244 10 277 307 10 0 123 -574 57 43 -16 0 1528 10 372 0 -575 1 293 10 268 298 10 0 97 -576 481 96 20 0 1534 0 0 1042 -577 471 368 -13 0 1561 10 250 0 -578 236 126 23 124 154 10 0 700 -579 406 99 -10 227 257 10 736 0 -580 303 186 -15 1354 1384 10 804 0 -581 225 369 38 121 151 10 0 238 -582 412 453 10 297 327 10 0 630 -583 104 349 -26 1009 1039 10 30 0 -584 173 182 25 0 1709 10 0 730 -585 111 464 10 0 1556 10 0 280 -586 53 440 -20 0 1538 10 589 0 -587 69 336 20 218 248 10 0 381 -588 359 182 20 209 239 10 0 514 -589 13 459 20 0 1496 10 0 586 -590 244 277 18 0 1784 10 0 384 -591 484 177 20 0 1566 10 0 599 -592 452 206 -20 492 522 10 233 0 -593 22 483 30 325 355 10 0 62 -594 452 110 -21 340 370 10 247 0 -595 347 192 -20 1488 1518 10 927 0 -596 95 92 20 0 1590 10 0 92 -597 368 311 -20 0 1679 10 315 0 -598 479 387 -9 397 427 10 649 0 -599 479 169 -20 0 1569 10 591 0 -600 497 266 -29 0 1564 10 928 0 -601 66 336 -12 0 1608 10 130 0 -602 376 195 10 0 1674 10 0 954 -603 401 281 -10 261 291 10 909 0 -604 441 177 23 0 1607 10 0 877 -605 231 203 20 67 97 10 0 5 -606 21 488 10 361 391 10 0 704 -607 231 204 -30 0 1762 10 344 0 -608 122 422 -25 1457 1487 10 357 0 -609 65 453 30 282 312 10 0 739 -610 206 261 -10 182 212 10 65 0 -611 466 149 -16 1186 1216 10 669 0 -612 313 119 -10 216 246 10 767 0 -613 90 274 20 0 1650 10 0 803 -614 39 162 18 565 595 10 0 313 -615 35 306 -5 229 259 10 922 0 -616 437 15 30 0 1511 10 0 232 -617 307 412 8 0 1640 10 0 141 -618 79 291 10 0 1636 10 0 189 -619 64 437 11 918 948 0 0 1032 -620 376 92 -20 991 1021 10 903 0 -621 129 27 10 298 328 10 0 411 -622 196 489 -12 0 1566 10 920 0 -623 51 286 -29 0 1609 10 505 0 -624 20 488 -30 372 402 10 318 0 -625 13 455 -20 0 1498 10 783 0 -626 170 347 15 436 466 10 0 257 -627 92 230 20 0 1652 10 0 772 -628 117 467 -20 0 1557 10 359 0 -629 413 217 20 0 1645 10 0 471 -630 405 450 -10 0 1558 10 582 0 -631 394 322 -20 0 1651 10 105 0 -632 125 61 26 612 642 10 0 415 -633 238 123 -14 781 811 10 69 0 -634 11 403 -27 0 1528 10 120 0 -635 89 272 -26 0 1649 10 244 0 -636 304 102 -20 0 1654 10 325 0 -637 478 121 40 0 1550 10 0 813 -638 408 84 10 284 314 10 0 445 -639 376 494 30 0 1537 10 0 164 -640 20 73 10 290 320 10 0 881 -641 159 299 -19 0 1708 10 642 0 -642 95 382 19 231 261 10 0 641 -643 352 63 6 0 1598 10 0 985 -644 365 274 14 0 1694 10 0 216 -645 30 301 10 278 308 10 0 160 -646 351 5 -20 496 526 10 364 0 -647 197 267 10 109 139 10 0 868 -648 498 171 -16 0 1551 10 978 0 -649 468 352 9 0 1571 10 0 598 -650 418 251 21 0 1643 0 0 1003 -651 489 437 -31 707 737 10 468 0 -652 251 63 14 0 1624 10 0 53 -653 132 55 10 267 297 10 0 31 -654 281 96 -20 1126 1156 10 751 0 -655 333 293 -20 617 647 10 693 0 -656 255 487 -33 0 1574 10 208 0 -657 207 400 -30 0 1655 10 93 0 -658 469 489 4 555 585 10 0 392 -659 244 254 -10 100 130 10 252 0 -660 233 207 -20 46 76 10 272 0 -661 441 60 21 1459 1489 0 0 1026 -662 411 379 -25 1193 1223 10 179 0 -663 178 72 23 757 787 10 0 413 -664 51 447 10 294 324 10 0 102 -665 478 118 20 0 1548 10 0 675 -666 141 426 23 0 1604 10 0 837 -667 295 89 23 742 772 10 0 115 -668 112 433 29 235 265 10 0 913 -669 320 211 16 0 1731 10 0 611 -670 400 103 -16 0 1601 10 112 0 -671 408 453 10 283 313 10 0 15 -672 435 180 -27 0 1614 10 493 0 -673 432 66 30 0 1553 10 0 521 -674 374 116 -11 587 617 10 769 0 -675 478 102 -20 324 354 10 665 0 -676 335 57 30 210 240 10 0 22 -677 385 239 -10 0 1676 10 889 0 -678 386 245 -21 479 509 10 854 0 -679 208 396 -40 176 206 10 17 0 -680 380 489 -20 0 1539 10 480 0 -681 380 498 -5 0 1531 10 741 0 -682 440 7 20 314 344 10 0 337 -683 434 245 -20 342 372 10 971 0 -684 90 232 10 212 242 10 0 18 -685 389 334 -20 169 199 10 518 0 -686 241 205 30 0 1766 10 0 565 -687 18 24 -10 0 1488 10 422 0 -688 57 183 15 0 1607 10 0 566 -689 59 457 -23 334 364 10 835 0 -690 442 243 10 0 1619 10 0 260 -691 402 281 20 0 1656 0 0 1034 -692 445 237 10 200 230 10 0 303 -693 441 273 20 282 312 10 0 655 -694 31 175 24 247 277 10 0 788 -695 234 202 -20 80 110 10 386 0 -696 52 303 25 441 471 10 0 511 -697 167 445 7 1412 1442 10 0 168 -698 179 286 8 0 1732 10 0 173 -699 269 48 -20 281 311 10 528 0 -700 165 59 -23 943 973 10 578 0 -701 461 8 -20 0 1490 10 829 0 -702 421 415 30 0 1574 10 0 55 -703 59 459 20 311 341 10 0 309 -704 24 492 -10 0 1480 10 606 0 -705 55 449 20 278 308 10 0 782 -706 224 192 -20 0 1748 10 248 0 -707 444 269 20 234 264 10 0 960 -708 491 20 -10 394 424 10 110 0 -709 313 126 10 243 273 10 0 239 -710 283 438 -10 0 1621 10 107 0 -711 352 241 -20 792 822 10 89 0 -712 398 476 25 0 1541 10 0 200 -713 442 247 -20 241 271 10 401 0 -714 217 207 26 1382 1412 0 0 1011 -715 233 87 18 253 283 0 0 1025 -716 479 127 -22 270 300 10 784 0 -717 6 53 8 587 617 10 0 506 -718 478 300 -10 0 1578 10 777 0 -719 378 493 30 282 312 10 0 289 -720 303 78 -10 0 1632 10 819 0 -721 344 62 -27 0 1601 10 470 0 -722 371 315 18 0 1674 10 0 178 -723 200 78 31 0 1632 10 0 190 -724 413 391 8 217 247 0 0 1002 -725 415 216 10 176 206 10 0 483 -726 397 57 17 1476 1506 0 0 1036 -727 293 228 -20 0 1763 10 273 0 -728 0 297 10 0 1557 10 0 163 -729 435 20 20 381 411 10 0 380 -730 195 111 -25 998 1028 10 584 0 -731 417 218 -20 278 308 10 891 0 -732 340 54 -20 238 268 10 474 0 -733 132 57 20 0 1585 0 0 1038 -734 210 379 -20 0 1676 10 113 0 -735 228 260 12 0 1787 10 0 757 -736 399 104 10 0 1603 10 0 579 -737 95 277 20 274 304 10 0 562 -738 360 284 -15 0 1696 10 989 0 -739 53 466 -30 0 1519 10 609 0 -740 112 465 10 299 329 10 0 825 -741 313 391 5 154 184 10 0 681 -742 93 235 -10 246 276 10 900 0 -743 125 32 -10 259 289 10 530 0 -744 215 282 -13 1440 1470 10 547 0 -745 224 320 36 0 1737 10 0 90 -746 134 428 20 308 338 10 0 839 -747 26 490 -20 475 505 10 397 0 -748 44 115 -12 0 1565 10 339 0 -749 438 127 2 0 1587 10 0 361 -750 239 15 2 604 634 10 0 186 -751 342 54 20 250 280 10 0 654 -752 109 463 30 334 364 10 0 138 -753 199 187 -20 127 157 10 944 0 -754 201 188 10 0 1732 10 0 420 -755 399 301 30 194 224 10 0 472 -756 484 171 10 293 323 10 0 486 -757 272 234 -12 1590 1620 10 735 0 -758 380 350 15 0 1647 10 0 473 -759 140 108 -15 0 1632 10 964 0 -760 228 199 10 0 1756 10 0 763 -761 245 461 8 649 679 10 0 182 -762 305 107 -30 0 1658 10 870 0 -763 231 195 -10 109 139 10 760 0 -764 450 265 -22 0 1611 10 447 0 -765 273 149 -19 0 1708 10 540 0 -766 12 358 -30 1224 1254 10 937 0 -767 315 121 10 203 233 10 0 612 -768 420 213 10 204 234 10 0 36 -769 331 134 11 0 1670 10 0 674 -770 84 377 10 0 1602 10 0 335 -771 320 280 10 0 1735 0 0 1006 -772 89 185 -20 600 630 10 627 0 -773 472 481 -6 0 1491 10 498 0 -774 422 420 -29 0 1570 10 968 0 -775 475 267 7 780 810 10 0 136 -776 470 125 20 0 1558 10 0 390 -777 435 268 10 312 342 10 0 718 -778 409 155 19 185 215 10 0 412 -779 243 248 -20 0 1804 10 176 0 -780 488 96 -17 1066 1096 10 571 0 -781 341 72 9 0 1612 10 0 48 -782 58 449 -20 363 393 10 705 0 -783 16 460 20 411 441 10 0 625 -784 480 136 22 256 286 10 0 716 -785 162 388 11 0 1648 10 0 467 -786 47 208 30 226 256 10 0 127 -787 324 127 30 143 173 10 0 264 -788 87 96 -24 0 1587 10 694 0 -789 140 137 -12 0 1654 10 904 0 -790 314 205 22 0 1733 10 0 162 -791 96 346 26 0 1630 0 0 1028 -792 321 280 30 77 107 10 0 402 -793 245 251 10 0 1806 10 0 871 -794 436 295 11 0 1620 0 0 1021 -795 274 261 -30 0 1785 10 389 0 -796 271 128 12 346 376 10 0 54 -797 275 45 20 225 255 10 0 981 -798 422 409 10 234 264 10 0 512 -799 146 188 -8 0 1690 10 832 0 -800 93 96 20 225 255 10 0 294 -801 409 255 23 0 1652 10 0 26 -802 449 428 25 0 1545 10 0 58 -803 90 285 -20 0 1648 10 613 0 -804 415 95 15 0 1585 10 0 580 -805 88 287 -30 263 293 10 414 0 -806 379 196 20 194 224 10 0 192 -807 368 452 -11 0 1578 10 460 0 -808 202 186 20 151 181 10 0 872 -809 435 11 -10 302 332 10 844 0 -810 269 46 -10 0 1607 10 169 0 -811 7 292 -30 0 1565 10 243 0 -812 44 496 32 0 1491 0 0 1029 -813 478 99 -40 311 341 10 637 0 -814 391 99 -30 0 1605 10 180 0 -815 132 477 25 0 1556 10 0 434 -816 24 65 10 0 1519 10 0 559 -817 130 247 17 120 150 10 0 838 -818 133 273 20 119 149 10 0 77 -819 347 62 10 0 1600 10 0 720 -820 404 140 -10 0 1622 10 969 0 -821 416 420 20 0 1574 10 0 211 -822 67 335 -12 0 1610 10 246 0 -823 92 270 20 257 287 10 0 919 -824 411 95 -24 243 273 10 103 0 -825 132 479 -10 0 1554 10 740 0 -826 366 334 5 410 440 10 0 24 -827 125 39 -10 0 1566 10 310 0 -828 419 422 -10 276 306 10 892 0 -829 460 2 20 0 1487 10 0 701 -830 67 334 20 231 261 10 0 152 -831 448 414 -17 0 1554 10 432 0 -832 46 163 8 0 1590 10 0 799 -833 77 465 11 275 305 10 0 276 -834 284 319 17 817 847 10 0 477 -835 102 422 23 226 256 10 0 689 -836 240 34 28 0 1595 10 0 441 -837 141 428 -23 208 238 10 666 0 -838 204 269 -17 0 1762 10 817 0 -839 144 439 -20 0 1595 10 746 0 -840 470 417 -10 0 1535 10 443 0 -841 404 103 20 242 272 10 0 523 -842 5 281 -10 1372 1402 10 382 0 -843 487 320 -25 0 1564 10 301 0 -844 398 23 10 270 300 10 0 809 -845 90 296 20 166 196 10 0 199 -846 386 13 -10 0 1538 10 990 0 -847 115 465 -7 0 1558 10 980 0 -848 473 475 -18 417 447 10 104 0 -849 275 42 30 238 268 10 0 118 -850 286 356 -17 0 1700 10 8 0 -851 15 69 10 296 326 10 0 943 -852 267 44 -18 0 1605 10 558 0 -853 243 399 -20 235 265 10 327 0 -854 390 249 21 0 1671 10 0 678 -855 210 391 30 146 176 10 0 440 -856 433 15 20 297 327 10 0 165 -857 24 259 -20 0 1585 10 469 0 -858 12 463 20 361 391 10 0 972 -859 237 213 10 0 1772 10 0 500 -860 182 480 31 0 1572 10 0 76 -861 409 88 20 0 1585 10 0 455 -862 244 368 25 414 444 0 0 1027 -863 381 328 -10 717 747 10 973 0 -864 213 185 -20 0 1737 10 501 0 -865 482 141 14 0 1555 0 0 1044 -866 319 124 20 0 1668 10 0 170 -867 141 431 30 0 1600 10 0 255 -868 198 264 -10 0 1758 10 647 0 -869 69 334 30 0 1612 10 0 251 -870 299 98 30 0 1652 10 0 762 -871 240 250 -10 37 67 10 793 0 -872 199 203 -20 1457 1487 10 808 0 -873 459 17 20 411 441 10 0 546 -874 423 217 20 0 1635 0 0 1048 -875 477 179 -30 0 1574 10 351 0 -876 213 397 10 0 1660 10 0 458 -877 405 187 -23 1251 1281 10 604 0 -878 269 402 20 0 1658 0 0 1017 -879 53 204 -10 1055 1085 10 930 0 -880 13 394 15 0 1534 10 0 128 -881 15 68 -10 303 333 10 640 0 -882 56 268 -20 0 1617 10 449 0 -883 360 184 -23 0 1683 10 291 0 -884 307 102 -10 210 240 10 326 0 -885 130 57 -20 0 1584 10 479 0 -886 250 328 24 249 279 0 0 1031 -887 91 231 30 0 1651 10 0 408 -888 479 176 20 240 270 10 0 299 -889 420 224 10 0 1640 10 0 677 -890 461 182 13 0 1590 10 0 91 -891 418 218 20 0 1640 10 0 731 -892 419 418 10 249 279 10 0 828 -893 336 493 -10 1493 1523 10 353 0 -894 389 300 10 0 1664 10 0 532 -895 92 76 4 1139 1169 10 0 270 -896 476 102 20 336 366 10 0 561 -897 418 399 20 0 1587 10 0 29 -898 109 56 -17 0 1572 10 27 0 -899 13 465 31 774 804 10 0 46 -900 92 232 10 177 207 10 0 742 -901 394 47 5 313 343 10 0 320 -902 16 287 12 0 1575 0 0 1041 -903 399 102 20 0 1601 10 0 620 -904 143 158 12 141 171 10 0 789 -905 18 484 10 329 359 10 0 9 -906 250 411 30 0 1650 10 0 354 -907 19 273 -30 1017 1047 10 19 0 -908 365 28 9 268 298 10 0 121 -909 387 297 10 144 174 10 0 603 -910 433 447 -19 794 824 10 256 0 -911 214 274 -10 0 1768 10 374 0 -912 489 338 -28 0 1557 10 482 0 -913 130 494 -29 759 789 10 668 0 -914 23 67 -2 389 419 10 145 0 -915 374 489 20 269 299 10 0 439 -916 126 30 -30 272 302 10 563 0 -917 112 467 10 276 306 10 0 61 -918 489 274 -10 534 564 10 492 0 -919 61 214 -20 342 372 10 823 0 -920 166 440 12 207 237 10 0 622 -921 56 75 -15 1438 1468 10 241 0 -922 210 276 5 47 77 10 0 615 -923 80 286 -22 0 1638 10 86 0 -924 17 459 10 0 1498 10 0 975 -925 66 448 10 270 300 10 0 946 -926 351 128 15 1253 1283 0 0 1019 -927 352 176 20 126 156 10 0 595 -928 490 286 29 0 1569 10 0 600 -929 247 219 17 0 1780 10 0 33 -930 86 268 10 217 247 10 0 879 -931 398 329 -10 0 1644 10 146 0 -932 272 402 -10 0 1658 10 82 0 -933 317 123 -10 0 1668 10 235 0 -934 408 318 15 643 673 10 0 284 -935 66 31 25 1048 1078 0 0 1024 -936 425 448 -7 0 1547 10 72 0 -937 35 304 30 0 1590 10 0 766 -938 471 94 -20 0 1541 10 446 0 -939 470 473 10 431 461 10 0 290 -940 224 56 13 1186 1216 10 0 994 -941 343 47 20 0 1588 10 0 57 -942 52 18 28 0 1506 10 0 174 -943 16 68 -10 0 1515 10 851 0 -944 195 185 20 0 1726 10 0 753 -945 92 236 -20 0 1653 10 116 0 -946 76 462 -10 0 1537 10 925 0 -947 124 56 -4 0 1580 10 423 0 -948 481 454 -27 0 1503 10 83 0 -949 477 483 20 366 396 10 0 213 -950 481 124 -10 0 1548 10 552 0 -951 389 156 -20 716 746 10 426 0 -952 384 16 -20 0 1542 10 223 0 -953 492 34 -5 0 1487 10 16 0 -954 371 200 -10 224 254 10 602 0 -955 153 235 10 0 1713 10 0 967 -956 428 202 -20 904 934 10 51 0 -957 257 391 22 0 1670 10 0 475 -958 421 218 -30 0 1638 10 52 0 -959 206 186 -20 0 1734 10 206 0 -960 393 301 -20 0 1660 10 707 0 -961 204 187 -10 0 1733 10 293 0 -962 468 475 10 313 343 10 0 3 -963 477 122 -10 330 360 10 345 0 -964 100 66 15 0 1574 10 0 759 -965 489 27 -10 421 451 10 122 0 -966 12 451 20 311 341 10 0 554 -967 197 270 -10 0 1755 10 955 0 -968 311 422 29 0 1629 10 0 774 -969 489 17 10 380 410 10 0 820 -970 13 214 21 0 1572 10 0 80 -971 440 247 20 0 1621 10 0 683 -972 28 467 -20 0 1501 10 858 0 -973 388 325 10 0 1654 10 0 863 -974 270 401 -21 0 1659 10 451 0 -975 5 445 -10 0 1498 10 924 0 -976 198 271 20 0 1755 0 0 1016 -977 480 131 5 0 1553 10 0 360 -978 437 98 16 0 1571 10 0 648 -979 131 246 17 832 862 10 0 484 -980 49 437 7 0 1537 10 0 847 -981 270 49 -20 292 322 10 797 0 -982 337 41 8 0 1585 10 0 42 -983 318 280 20 0 1737 10 0 11 -984 154 392 -19 0 1640 10 347 0 -985 493 111 -6 0 1532 10 643 0 -986 399 450 20 359 389 10 0 524 -987 67 452 -10 0 1539 10 157 0 -988 34 239 -10 0 1595 10 535 0 -989 343 276 15 96 126 10 0 738 -990 393 12 10 0 1534 10 0 846 -991 236 247 20 0 1797 0 0 1020 -992 340 291 -13 470 500 10 181 0 -993 3 292 -30 0 1561 10 100 0 -994 209 68 -13 1568 1598 10 940 0 -995 18 225 -33 0 1578 10 7 0 -996 147 435 -20 245 275 10 220 0 -997 335 99 25 0 1638 0 0 1009 -998 485 24 20 326 356 10 0 504 -999 470 475 -10 0 1497 10 297 0 -1000 341 58 10 224 254 10 0 403 -1001 192 265 -10 0 1752 10 161 0 -1002 413 391 -8 217 247 10 724 0 -1003 418 251 -21 0 1643 10 650 0 -1004 370 382 -11 884 914 10 459 0 -1005 436 25 -19 0 1520 10 196 0 -1006 320 280 -10 0 1735 10 771 0 -1007 111 392 -18 1169 1199 10 283 0 -1008 308 199 -14 0 1734 10 531 0 -1009 335 99 -25 0 1638 10 997 0 -1010 344 203 -14 0 1706 10 285 0 -1011 217 207 -26 1382 1412 10 714 0 -1012 439 156 -2 526 556 10 249 0 -1013 429 389 -18 424 454 10 95 0 -1014 439 268 -10 298 328 10 188 0 -1015 80 251 -14 0 1641 10 319 0 -1016 198 271 -20 0 1755 10 976 0 -1017 269 402 -20 0 1658 10 878 0 -1018 472 129 -10 0 1559 10 150 0 -1019 351 128 -15 1253 1283 10 926 0 -1020 236 247 -20 0 1797 10 991 0 -1021 436 295 -11 0 1620 10 794 0 -1022 344 70 -24 1146 1176 10 570 0 -1023 103 177 -28 626 656 10 425 0 -1024 66 31 -25 1048 1078 10 935 0 -1025 233 87 -18 253 283 10 715 0 -1026 441 60 -21 1459 1489 10 661 0 -1027 244 368 -25 414 444 10 862 0 -1028 96 346 -26 0 1630 10 791 0 -1029 44 496 -32 0 1491 10 812 0 -1030 287 397 -12 564 594 10 217 0 -1031 250 328 -24 249 279 10 886 0 -1032 64 437 -11 918 948 10 619 0 -1033 33 278 -18 1487 1517 10 433 0 -1034 402 281 -20 0 1656 10 691 0 -1035 6 292 -10 0 1564 10 421 0 -1036 397 57 -17 1476 1506 10 726 0 -1037 91 101 -10 0 1594 10 306 0 -1038 132 57 -20 0 1585 10 733 0 -1039 320 283 -30 0 1734 10 393 0 -1040 7 194 -29 0 1562 10 177 0 -1041 16 287 -12 0 1575 10 902 0 -1042 481 96 -20 0 1534 10 576 0 -1043 391 293 -20 0 1664 10 210 0 -1044 482 141 -14 0 1555 10 865 0 -1045 111 459 -20 359 389 10 197 0 -1046 352 487 -27 0 1553 10 4 0 -1047 426 231 -24 1028 1058 10 207 0 -1048 423 217 -20 0 1635 10 874 0 diff --git a/jsprit-instances/instances/lilim/1000/LRC1104.txt b/jsprit-instances/instances/lilim/1000/LRC1104.txt deleted file mode 100644 index 44077a7e1..000000000 --- a/jsprit-instances/instances/lilim/1000/LRC1104.txt +++ /dev/null @@ -1,1044 +0,0 @@ -250 200 1 -0 250 250 0 0 1821 0 0 0 -1 440 436 18 0 1546 10 0 598 -2 214 394 -30 231 261 10 855 0 -3 476 483 10 0 1487 10 0 200 -4 352 487 -20 0 1553 10 485 0 -5 230 197 40 122 152 10 0 293 -6 175 239 23 0 1736 0 0 1033 -7 133 202 -16 0 1685 10 772 0 -8 328 458 -26 0 1589 10 88 0 -9 25 499 -10 0 1476 10 747 0 -10 226 423 15 0 1637 10 0 886 -11 313 282 20 0 1741 10 0 296 -12 60 454 10 347 377 10 0 46 -13 239 486 3 1482 1512 10 0 327 -14 102 264 10 0 1663 10 0 203 -15 408 452 -20 0 1555 10 71 0 -16 451 62 5 0 1536 10 0 131 -17 203 390 -24 0 1664 10 168 0 -18 92 233 -20 0 1653 10 116 0 -19 7 300 -10 0 1563 10 421 0 -20 409 90 20 0 1586 10 0 205 -21 307 108 -20 0 1658 10 377 0 -22 347 54 10 0 1593 10 0 371 -23 406 87 -10 0 1586 10 455 0 -24 371 332 -10 0 1665 10 892 0 -25 116 466 20 254 284 10 0 357 -26 441 265 40 0 1620 10 0 226 -27 130 140 17 0 1649 10 0 799 -28 80 117 24 824 854 10 0 508 -29 421 387 -20 801 831 10 897 0 -30 83 300 26 500 530 10 0 163 -31 136 52 10 0 1583 10 0 743 -32 18 462 20 0 1497 10 0 858 -33 390 120 24 0 1620 10 0 267 -34 188 119 -7 0 1667 10 158 0 -35 467 114 -2 0 1555 10 749 0 -36 440 292 24 940 970 10 0 777 -37 268 400 20 0 1660 10 0 932 -38 391 202 14 0 1663 10 0 604 -39 377 432 -20 0 1590 10 986 0 -40 80 290 10 0 1637 10 0 152 -41 439 15 20 0 1510 10 0 926 -42 307 52 -14 920 950 10 564 0 -43 111 192 -21 0 1661 10 254 0 -44 131 56 10 0 1584 10 0 450 -45 88 286 10 0 1646 10 0 818 -46 69 414 -10 0 1567 10 12 0 -47 41 232 16 0 1602 10 0 882 -48 323 77 36 1405 1435 10 0 933 -49 340 416 36 0 1623 10 0 217 -50 86 199 -10 0 1640 10 900 0 -51 314 124 20 0 1670 10 0 264 -52 375 191 -20 0 1673 10 806 0 -53 226 175 23 0 1733 10 0 124 -54 242 106 -27 0 1667 10 994 0 -55 417 417 10 0 1575 10 0 473 -56 419 459 -20 0 1543 10 253 0 -57 389 11 20 0 1535 10 0 646 -58 450 416 25 577 607 10 0 194 -59 246 255 10 0 1805 10 0 344 -60 71 333 -20 0 1614 10 334 0 -61 105 474 27 0 1545 10 0 585 -62 20 489 -30 0 1480 10 318 0 -63 388 331 20 160 190 10 0 685 -64 92 259 4 399 429 0 0 1032 -65 200 261 10 166 196 10 0 230 -66 400 288 -30 0 1657 10 755 0 -67 299 285 3 0 1751 10 0 98 -68 378 199 -30 207 237 10 162 0 -69 325 147 14 0 1684 10 0 533 -70 421 386 -25 0 1593 10 179 0 -71 404 447 20 0 1561 10 0 15 -72 412 478 7 0 1532 0 0 1031 -73 26 67 -20 1317 1347 10 418 0 -74 358 183 -20 0 1684 10 588 0 -75 30 302 -30 0 1585 10 937 0 -76 176 470 14 0 1579 10 0 622 -77 96 270 20 162 192 10 0 930 -78 243 408 -5 0 1653 10 442 0 -79 60 29 -8 0 1520 10 717 0 -80 34 169 11 484 514 10 0 748 -81 407 280 -20 0 1652 10 691 0 -82 277 403 -30 0 1656 10 436 0 -83 498 456 27 1406 1436 10 0 651 -84 384 491 -30 348 378 10 639 0 -85 355 174 -20 0 1682 10 927 0 -86 97 288 -30 0 1654 10 805 0 -87 316 284 -20 0 1737 10 350 0 -88 334 403 26 0 1637 10 0 8 -89 415 223 -23 0 1644 10 801 0 -90 230 320 8 0 1739 10 0 149 -91 432 199 7 0 1622 10 0 874 -92 92 18 -3 0 1531 10 555 0 -93 273 300 30 55 85 10 0 475 -94 269 112 -20 0 1672 10 528 0 -95 429 389 18 0 1585 10 0 332 -96 371 71 21 0 1595 10 0 819 -97 5 297 10 0 1562 10 0 535 -98 414 378 -3 495 525 10 67 0 -99 38 15 3 0 1495 10 0 942 -100 2 295 30 0 1559 10 0 243 -101 237 254 20 0 1798 10 0 793 -102 54 445 10 308 338 10 0 785 -103 382 110 -20 0 1619 10 579 0 -104 438 488 18 0 1508 10 0 262 -105 395 331 20 217 247 10 0 146 -106 230 487 -10 1130 1160 10 148 0 -107 249 407 -25 0 1654 10 330 0 -108 488 26 30 0 1485 0 0 1011 -109 151 81 28 0 1616 10 0 723 -110 483 14 -10 0 1480 10 969 0 -111 0 422 -10 0 1508 10 625 0 -112 429 67 -36 0 1556 10 320 0 -113 195 464 -1 1541 1571 10 182 0 -114 356 256 19 0 1705 10 0 222 -115 264 180 33 1681 1711 0 0 1019 -116 94 235 20 0 1655 10 0 18 -117 474 96 -2 0 1540 10 249 0 -118 268 52 10 0 1613 10 0 699 -119 44 440 24 0 1531 10 0 147 -120 7 382 27 0 1535 10 0 634 -121 459 53 20 0 1524 0 0 1014 -122 491 25 -30 0 1482 10 938 0 -123 439 243 20 0 1622 10 0 303 -124 210 185 -23 0 1735 10 53 0 -125 150 68 -10 423 453 10 653 0 -126 201 270 10 52 82 10 0 967 -127 0 188 -8 0 1554 10 879 0 -128 103 464 -20 0 1552 10 466 0 -129 325 56 -20 0 1604 10 474 0 -130 44 344 -15 0 1585 10 880 0 -131 418 75 -5 0 1569 10 16 0 -132 472 57 17 1295 1325 10 0 814 -133 460 328 -29 0 1587 10 928 0 -134 89 270 -17 0 1649 10 817 0 -135 374 190 20 0 1674 10 0 669 -136 463 253 23 0 1598 10 0 890 -137 97 93 20 0 1592 10 0 788 -138 163 472 9 653 683 10 0 860 -139 29 336 -20 0 1574 10 469 0 -140 84 453 -30 0 1549 10 609 0 -141 294 421 -15 1575 1605 10 370 0 -142 343 62 10 0 1602 10 0 676 -143 371 193 20 0 1678 10 0 478 -144 142 372 -20 0 1649 10 966 0 -145 66 88 2 0 1566 10 0 339 -146 395 332 -20 0 1645 10 105 0 -147 93 413 -24 0 1585 10 119 0 -148 267 394 10 259 289 10 0 106 -149 249 258 -8 0 1803 10 90 0 -150 472 129 10 0 1559 10 0 716 -151 87 3 -10 1433 1463 10 530 0 -152 62 326 -10 0 1609 10 40 0 -153 212 186 11 1707 1737 10 0 859 -154 241 402 -40 0 1659 10 225 0 -155 439 266 10 189 219 10 0 707 -156 79 80 19 0 1570 10 0 356 -157 62 453 10 0 1535 10 0 980 -158 188 151 7 0 1695 10 0 34 -159 386 154 31 0 1645 10 0 824 -160 38 301 -5 296 326 10 562 0 -161 192 265 10 0 1752 10 0 976 -162 371 192 30 134 164 10 0 68 -163 64 294 -26 1101 1131 10 30 0 -164 381 494 -20 0 1535 10 915 0 -165 437 12 20 330 360 10 0 236 -166 186 135 24 0 1680 0 0 1028 -167 459 10 -20 0 1493 10 873 0 -168 175 422 24 1446 1476 10 0 17 -169 274 48 10 0 1608 10 0 568 -170 488 173 -10 0 1561 10 245 0 -171 398 97 -30 0 1599 10 445 0 -172 385 17 -10 809 839 10 846 0 -173 180 283 -8 0 1734 10 698 0 -174 71 12 -18 0 1514 10 506 0 -175 343 49 10 0 1590 10 0 941 -176 248 251 20 2 32 10 0 757 -177 7 194 -8 0 1562 10 407 0 -178 322 290 23 1479 1509 10 0 402 -179 410 399 25 0 1593 10 0 70 -180 398 103 -10 0 1603 10 670 0 -181 385 285 -30 0 1672 10 960 0 -182 179 497 1 0 1554 10 0 113 -183 464 13 20 0 1492 10 0 452 -184 492 335 -18 828 858 10 520 0 -185 27 464 21 0 1502 10 0 972 -186 231 29 14 1226 1256 10 0 836 -187 157 38 3 1048 1078 10 0 543 -188 439 268 10 0 1622 10 0 486 -189 149 214 -22 0 1704 10 199 0 -190 187 73 18 0 1624 10 0 413 -191 429 169 -30 0 1615 10 298 0 -192 350 199 -20 0 1699 10 273 0 -193 60 231 -25 0 1621 10 497 0 -194 448 404 -25 0 1561 10 58 0 -195 481 20 -10 347 377 10 504 0 -196 436 25 19 0 1520 10 0 682 -197 111 459 -20 0 1560 10 328 0 -198 389 17 10 0 1540 10 0 952 -199 148 208 22 0 1701 10 0 189 -200 475 477 -10 0 1492 10 3 0 -201 390 325 -12 0 1653 10 631 0 -202 346 354 -19 0 1670 10 577 0 -203 91 266 -10 0 1652 10 14 0 -204 17 65 20 0 1514 10 0 343 -205 391 112 -20 1000 1030 10 20 0 -206 224 203 -14 0 1758 10 765 0 -207 426 231 -10 0 1634 10 573 0 -208 260 472 -20 1036 1066 10 362 0 -209 265 0 -2 0 1561 10 750 0 -210 391 293 20 0 1664 0 0 1034 -211 411 421 20 0 1577 10 0 774 -212 132 30 -10 0 1562 10 621 0 -213 475 480 30 0 1490 0 0 1001 -214 286 244 -23 1284 1314 10 291 0 -215 436 237 20 186 216 10 0 471 -216 402 284 -10 0 1656 10 909 0 -217 287 397 -36 564 594 10 49 0 -218 272 420 -10 0 1640 10 549 0 -219 477 120 10 0 1550 10 0 611 -220 145 434 -10 0 1600 10 419 0 -221 33 286 -19 0 1592 10 857 0 -222 370 262 -19 1099 1129 10 114 0 -223 393 20 -7 0 1541 10 232 0 -224 330 308 24 0 1713 10 0 795 -225 246 398 40 148 178 10 0 154 -226 482 184 -40 0 1570 10 26 0 -227 451 305 13 208 238 10 0 693 -228 226 316 -21 70 100 10 451 0 -229 110 459 -19 0 1560 10 347 0 -230 244 250 -10 0 1805 10 65 0 -231 458 16 20 313 343 10 0 456 -232 390 34 7 0 1554 10 0 223 -233 423 214 20 217 247 10 0 672 -234 219 215 32 46 76 10 0 753 -235 326 118 10 0 1659 10 0 732 -236 365 74 -20 0 1601 10 165 0 -237 331 356 13 0 1678 10 0 409 -238 210 398 10 0 1658 10 0 657 -239 403 93 -17 0 1592 10 571 0 -240 248 404 30 0 1657 10 0 906 -241 65 62 15 0 1548 10 0 921 -242 460 13 20 322 352 10 0 829 -243 0 293 -30 0 1558 10 100 0 -244 211 248 26 39 69 0 0 1040 -245 484 174 10 265 295 10 0 170 -246 175 352 12 0 1685 0 0 1017 -247 455 168 -10 0 1591 10 300 0 -248 224 191 -20 0 1747 10 763 0 -249 439 156 2 0 1600 10 0 117 -250 434 359 -25 0 1598 10 662 0 -251 118 314 26 0 1665 10 0 845 -252 234 246 -10 65 95 10 871 0 -253 406 450 20 0 1558 10 0 56 -254 75 118 21 0 1592 10 0 43 -255 115 395 11 815 845 10 0 308 -256 329 456 -35 0 1591 10 439 0 -257 218 403 -25 0 1655 10 862 0 -258 149 341 -15 0 1676 10 626 0 -259 253 74 20 0 1635 10 0 429 -260 436 241 -12 327 357 10 384 0 -261 238 203 10 0 1763 10 0 386 -262 405 455 -18 0 1554 10 104 0 -263 485 27 -10 0 1488 10 965 0 -264 323 118 -20 0 1661 10 51 0 -265 330 371 -10 0 1666 10 297 0 -266 25 65 -10 0 1520 10 851 0 -267 406 96 -24 219 249 10 33 0 -268 49 451 20 284 314 10 0 925 -269 307 249 -20 0 1754 10 341 0 -270 178 135 21 1514 1544 10 0 944 -271 299 353 -36 0 1697 10 368 0 -272 236 213 20 39 69 10 0 706 -273 355 177 20 0 1684 10 0 192 -274 394 23 20 0 1543 10 0 908 -275 306 235 25 0 1754 10 0 527 -276 90 477 18 277 307 10 0 628 -277 379 486 -5 0 1543 10 741 0 -278 435 16 10 0 1513 10 0 620 -279 8 497 -10 0 1466 10 624 0 -280 150 484 -10 0 1557 10 847 0 -281 213 399 18 0 1658 10 0 641 -282 391 18 -5 0 1540 10 901 0 -283 111 392 18 0 1613 10 0 984 -284 330 281 -22 1330 1360 10 992 0 -285 344 203 14 0 1706 10 0 595 -286 91 235 -1 0 1652 10 538 0 -287 346 60 10 321 351 10 0 721 -288 483 27 20 0 1489 10 0 998 -289 382 498 -30 0 1531 10 719 0 -290 457 492 7 0 1493 10 0 999 -291 291 213 23 0 1756 10 0 214 -292 154 374 -8 0 1655 10 383 0 -293 225 196 -40 0 1752 10 5 0 -294 94 40 -30 0 1550 10 563 0 -295 0 356 -21 1086 1116 10 569 0 -296 297 283 -20 0 1754 10 11 0 -297 371 423 10 0 1600 10 0 265 -298 417 217 30 189 219 10 0 191 -299 500 228 8 0 1561 10 0 912 -300 412 214 10 0 1646 10 0 247 -301 442 289 -30 0 1616 10 491 0 -302 157 269 -10 0 1717 10 742 0 -303 440 241 -20 0 1621 10 123 0 -304 100 266 -30 0 1661 10 887 0 -305 111 178 18 156 186 10 0 566 -306 91 101 -20 0 1594 10 525 0 -307 25 307 10 0 1579 10 0 433 -308 135 400 -11 0 1622 10 255 0 -309 58 458 -30 323 353 10 689 0 -310 133 26 10 0 1559 10 0 827 -311 211 386 -23 0 1670 10 666 0 -312 94 97 20 218 248 10 0 895 -313 30 155 9 1280 1310 10 0 510 -314 208 184 -19 0 1733 10 540 0 -315 394 333 -20 0 1645 10 518 0 -316 355 180 -20 0 1685 10 514 0 -317 241 180 -27 0 1741 10 700 0 -318 21 485 30 0 1483 10 0 62 -319 80 251 -30 0 1641 10 786 0 -320 476 61 36 0 1517 10 0 112 -321 406 94 -10 0 1591 10 736 0 -322 364 71 5 0 1599 10 0 990 -323 418 221 10 291 321 10 0 891 -324 274 441 -3 695 725 10 710 0 -325 304 97 20 182 212 10 0 720 -326 297 102 -30 0 1656 10 636 0 -327 250 405 -3 0 1656 10 13 0 -328 111 463 20 0 1557 10 0 197 -329 408 279 20 0 1651 10 0 567 -330 263 418 25 0 1643 10 0 107 -331 480 119 7 0 1547 10 0 776 -332 420 383 -18 0 1596 10 95 0 -333 142 14 18 0 1552 10 0 415 -334 73 328 20 193 223 10 0 60 -335 50 438 -11 0 1537 10 619 0 -336 441 7 20 392 422 10 0 616 -337 462 14 20 0 1494 10 0 701 -338 360 294 -20 1418 1448 10 481 0 -339 58 39 -2 1163 1193 10 145 0 -340 58 391 -19 0 1573 10 642 0 -341 410 285 20 0 1648 10 0 269 -342 96 97 20 0 1594 10 0 596 -343 21 64 -20 0 1516 10 204 0 -344 238 210 -10 0 1770 10 59 0 -345 479 121 -8 0 1549 10 820 0 -346 200 178 -10 94 124 10 959 0 -347 216 341 19 0 1714 10 0 229 -348 48 437 -20 0 1536 10 705 0 -349 200 270 20 0 1758 10 0 911 -350 357 181 20 149 179 10 0 87 -351 476 174 -20 0 1573 10 599 0 -352 400 286 -29 154 184 10 494 0 -353 351 481 -20 322 352 10 893 0 -354 270 400 10 0 1660 10 0 974 -355 95 234 10 163 193 10 0 919 -356 128 113 -19 0 1628 10 156 0 -357 133 455 -20 0 1575 10 25 0 -358 16 463 20 0 1495 10 0 899 -359 59 388 20 663 693 10 0 770 -360 376 190 -34 0 1672 10 877 0 -361 481 122 30 0 1547 10 0 784 -362 266 405 20 0 1656 10 0 208 -363 374 232 33 125 155 10 0 677 -364 398 20 20 0 1538 10 0 729 -365 481 26 30 0 1490 10 0 638 -366 63 444 20 0 1542 10 0 782 -367 89 290 20 0 1646 10 0 923 -368 246 314 36 1445 1475 10 0 271 -369 40 304 -27 1145 1175 10 513 0 -370 262 369 15 0 1692 10 0 141 -371 323 29 -10 0 1579 10 22 0 -372 89 65 -15 0 1566 10 964 0 -373 144 35 -28 0 1572 10 411 0 -374 200 265 -20 0 1759 10 868 0 -375 436 264 20 186 216 10 0 548 -376 15 457 20 323 353 10 0 739 -377 397 20 20 280 310 10 0 21 -378 328 491 -21 0 1558 10 463 0 -379 399 175 13 0 1645 10 0 529 -380 432 2 20 467 497 0 0 1003 -381 63 336 -10 0 1606 10 601 0 -382 6 296 10 320 350 10 0 496 -383 146 376 8 0 1648 10 0 292 -384 295 247 12 0 1766 10 0 260 -385 235 33 30 0 1594 10 0 810 -386 233 204 -10 0 1762 10 261 0 -387 142 360 20 1532 1562 0 0 1004 -388 177 156 -25 0 1692 10 584 0 -389 315 287 -27 0 1737 10 655 0 -390 452 172 9 0 1595 0 0 1025 -391 263 153 12 412 442 0 0 1042 -392 493 493 -10 0 1468 10 962 0 -393 320 283 -18 0 1734 10 541 0 -394 64 5 14 0 1504 10 0 935 -395 95 235 -17 155 185 10 979 0 -396 203 211 20 0 1750 10 0 420 -397 16 497 -30 0 1471 10 593 0 -398 348 348 23 0 1673 0 0 1021 -399 485 104 -10 0 1535 10 552 0 -400 330 147 28 0 1681 10 0 502 -401 443 237 20 193 223 10 0 447 -402 316 286 -23 0 1736 10 178 0 -403 335 46 18 1342 1372 10 0 982 -404 381 495 -10 0 1534 10 681 0 -405 364 173 30 180 210 0 0 1036 -406 267 162 -13 1449 1479 10 940 0 -407 214 245 8 0 1775 10 0 177 -408 92 234 10 0 1653 0 0 1023 -409 347 459 -13 0 1581 10 237 0 -410 30 7 -32 0 1484 10 687 0 -411 120 37 28 0 1562 10 0 373 -412 397 153 -13 882 912 10 519 0 -413 210 29 -18 0 1587 10 190 0 -414 87 285 30 0 1645 10 0 803 -415 132 32 -18 784 814 10 333 0 -416 390 294 -30 0 1665 10 537 0 -417 67 451 5 0 1540 10 0 703 -418 24 68 20 0 1521 10 0 73 -419 146 439 10 0 1596 10 0 220 -420 209 212 -20 0 1756 10 396 0 -421 6 292 10 0 1564 10 0 19 -422 18 63 -20 339 369 10 943 0 -423 149 98 4 0 1629 10 0 574 -424 91 268 10 0 1651 10 0 945 -425 103 177 28 0 1647 10 0 536 -426 367 178 20 0 1674 10 0 778 -427 225 269 -22 0 1780 10 484 0 -428 443 246 20 0 1618 10 0 725 -429 306 42 -20 477 507 10 259 0 -430 374 306 4 0 1675 10 0 482 -431 413 421 10 0 1575 10 0 802 -432 470 405 -31 0 1542 10 468 0 -433 33 278 -10 0 1593 10 307 0 -434 149 458 -10 0 1580 10 917 0 -435 257 57 18 1226 1256 10 0 565 -436 272 403 30 190 220 10 0 82 -437 221 291 -3 0 1761 10 608 0 -438 1 101 8 0 1521 10 0 640 -439 332 459 35 0 1587 10 0 256 -440 220 392 -20 258 288 10 448 0 -441 253 50 -18 0 1611 10 715 0 -442 250 441 5 756 786 10 0 78 -443 471 484 10 340 370 10 0 773 -444 480 152 -10 0 1561 10 756 0 -445 404 83 30 0 1584 10 0 171 -446 476 94 -20 0 1537 10 896 0 -447 458 213 -20 0 1600 10 401 0 -448 215 395 20 0 1662 10 0 440 -449 85 288 20 0 1642 10 0 505 -450 179 75 -10 0 1623 10 44 0 -451 228 287 21 0 1768 10 0 228 -452 397 18 -20 0 1537 10 183 0 -453 238 204 20 0 1764 10 0 695 -454 488 3 -16 0 1468 10 978 0 -455 407 88 10 0 1586 10 0 23 -456 459 14 -20 315 345 10 231 0 -457 120 17 -10 0 1545 10 916 0 -458 235 316 -10 656 686 10 876 0 -459 370 382 -20 884 914 10 480 0 -460 405 454 -14 0 1555 10 948 0 -461 17 458 -10 433 463 10 924 0 -462 43 135 -20 0 1575 10 572 0 -463 318 497 21 0 1555 10 0 378 -464 199 268 20 0 1757 10 0 647 -465 111 467 -10 0 1554 10 740 0 -466 138 438 20 287 317 10 0 128 -467 172 314 9 0 1711 0 0 1015 -468 494 468 31 0 1484 10 0 432 -469 35 303 20 0 1590 10 0 139 -470 341 59 27 0 1600 10 0 553 -471 423 221 -20 258 288 10 215 0 -472 395 295 -10 0 1660 10 894 0 -473 413 417 -10 0 1578 10 55 0 -474 339 60 20 0 1602 10 0 129 -475 277 428 -30 490 520 10 93 0 -476 176 199 -20 0 1722 10 991 0 -477 265 240 -27 0 1793 10 951 0 -478 365 190 -20 0 1682 10 143 0 -479 133 53 -40 0 1582 10 885 0 -480 387 488 20 0 1537 10 0 459 -481 385 295 20 0 1669 10 0 338 -482 491 369 -4 0 1543 10 430 0 -483 445 273 -11 0 1615 10 794 0 -484 195 273 22 0 1752 10 0 427 -485 313 493 20 0 1560 10 0 4 -486 495 227 -10 0 1565 10 188 0 -487 241 403 -10 220 250 10 853 0 -488 30 72 -10 0 1529 10 881 0 -489 21 487 10 350 380 10 0 606 -490 324 99 -30 0 1643 10 612 0 -491 453 318 30 374 404 10 0 301 -492 443 272 10 0 1617 10 0 516 -493 447 184 27 0 1604 10 0 602 -494 366 288 29 0 1689 10 0 352 -495 440 284 25 0 1618 0 0 1020 -496 13 314 -10 0 1566 10 382 0 -497 72 227 25 0 1632 10 0 193 -498 377 385 6 0 1626 10 0 630 -499 477 478 20 392 422 10 0 848 -500 204 185 -20 0 1732 10 808 0 -501 226 191 20 0 1748 0 0 1041 -502 330 138 -28 0 1674 10 400 0 -503 185 434 -12 0 1616 10 920 0 -504 483 22 10 334 364 10 0 195 -505 71 282 -20 0 1630 10 449 0 -506 60 5 18 0 1501 10 0 174 -507 189 402 -30 536 566 10 867 0 -508 134 211 -24 0 1689 10 28 0 -509 146 313 22 0 1690 10 0 744 -510 21 146 -9 0 1560 10 313 0 -511 37 281 -12 0 1596 10 902 0 -512 416 417 20 0 1576 10 0 821 -513 44 311 27 0 1597 10 0 369 -514 361 181 20 0 1681 10 0 316 -515 444 242 10 216 246 10 0 690 -516 444 271 -10 0 1616 10 492 0 -517 359 179 -14 0 1681 10 531 0 -518 388 334 20 0 1650 10 0 315 -519 401 164 13 621 651 10 0 412 -520 499 316 18 622 652 10 0 184 -521 399 106 -20 0 1604 10 841 0 -522 425 215 10 0 1633 10 0 731 -523 407 98 -20 0 1593 10 861 0 -524 406 460 -20 0 1550 10 680 0 -525 88 95 20 0 1587 10 0 306 -526 95 64 -20 766 796 10 947 0 -527 306 229 -25 0 1752 10 275 0 -528 273 55 20 0 1615 10 0 94 -529 384 149 -13 0 1644 10 379 0 -530 122 35 10 250 280 10 0 151 -531 308 199 14 0 1734 10 0 517 -532 390 301 -15 0 1662 10 934 0 -533 300 108 -14 0 1661 10 69 0 -534 267 400 10 0 1661 10 0 761 -535 8 300 -10 0 1564 10 97 0 -536 105 181 -28 0 1651 10 425 0 -537 398 325 30 233 263 10 0 416 -538 166 247 1 0 1727 10 0 286 -539 140 431 -23 0 1600 10 835 0 -540 253 118 19 547 577 10 0 314 -541 359 246 18 1423 1453 10 0 393 -542 321 277 -20 0 1736 10 983 0 -543 168 59 -3 0 1604 10 187 0 -544 406 285 -20 0 1652 10 603 0 -545 391 334 20 0 1647 10 0 758 -546 437 19 15 0 1514 10 0 809 -547 201 278 13 0 1755 0 0 1035 -548 435 267 -20 323 353 10 375 0 -549 245 408 10 204 234 10 0 218 -550 16 462 10 0 1496 10 0 783 -551 107 374 -10 914 944 10 664 0 -552 477 97 10 0 1538 10 0 399 -553 346 57 -27 308 338 10 470 0 -554 14 459 -20 336 366 10 589 0 -555 102 6 3 0 1526 10 0 92 -556 359 287 -19 0 1696 10 738 0 -557 297 131 25 0 1684 10 0 870 -558 282 1 -29 0 1560 10 759 0 -559 21 70 15 0 1520 10 0 816 -560 440 244 -20 266 296 10 971 0 -561 482 104 -10 0 1537 10 813 0 -562 120 261 5 0 1681 10 0 160 -563 125 29 30 283 313 10 0 294 -564 292 32 14 0 1589 10 0 42 -565 262 92 -18 0 1653 10 435 0 -566 68 160 -18 1136 1166 10 305 0 -567 405 276 -20 0 1654 10 329 0 -568 277 50 -10 0 1610 10 169 0 -569 32 319 21 401 431 10 0 295 -570 344 70 -9 0 1608 10 781 0 -571 481 84 17 506 536 10 0 239 -572 21 68 20 0 1519 10 0 462 -573 441 244 10 0 1620 10 0 207 -574 57 43 -4 0 1528 10 423 0 -575 1 293 -10 268 298 10 728 0 -576 481 96 20 0 1534 0 0 1008 -577 471 368 19 0 1561 10 0 202 -578 236 126 -15 0 1687 10 730 0 -579 406 99 20 0 1594 10 0 103 -580 303 186 -9 1354 1384 10 674 0 -581 225 369 38 121 151 10 0 734 -582 412 453 10 297 327 10 0 910 -583 104 349 -20 0 1635 10 822 0 -584 173 182 25 0 1709 10 0 388 -585 111 464 -27 0 1556 10 61 0 -586 53 440 -30 0 1538 10 975 0 -587 69 336 -30 218 248 10 869 0 -588 359 182 20 209 239 10 0 74 -589 13 459 20 0 1496 10 0 554 -590 244 277 18 0 1784 10 0 850 -591 484 177 -20 0 1566 10 875 0 -592 452 206 31 492 522 0 0 1024 -593 22 483 30 0 1486 10 0 397 -594 452 110 14 340 370 10 0 661 -595 347 192 -14 1488 1518 10 285 0 -596 95 92 -20 0 1590 10 342 0 -597 368 311 14 0 1679 10 0 722 -598 479 387 -18 0 1545 10 1 0 -599 479 169 20 0 1569 10 0 351 -600 497 266 25 0 1564 10 0 918 -601 66 336 10 0 1608 10 0 381 -602 376 195 -27 0 1674 10 493 0 -603 401 281 20 261 291 10 0 544 -604 441 177 -14 0 1607 10 38 0 -605 231 203 -10 0 1761 10 660 0 -606 21 488 -10 361 391 10 489 0 -607 231 204 -10 0 1762 10 760 0 -608 122 422 3 1457 1487 10 0 437 -609 65 453 30 282 312 10 0 140 -610 206 261 -30 0 1766 10 779 0 -611 466 149 -10 1186 1216 10 219 0 -612 313 119 30 216 246 10 0 490 -613 90 274 20 0 1650 0 0 1030 -614 39 162 -8 0 1583 10 832 0 -615 35 306 20 0 1589 10 0 766 -616 437 15 -20 0 1511 10 336 0 -617 307 412 -29 0 1640 10 968 0 -618 79 291 10 0 1636 10 0 737 -619 64 437 11 0 1548 10 0 335 -620 376 92 -10 991 1021 10 278 0 -621 129 27 10 298 328 10 0 212 -622 196 489 -14 0 1566 10 76 0 -623 51 286 -16 0 1609 10 842 0 -624 20 488 10 372 402 10 0 279 -625 13 455 10 0 1498 10 0 111 -626 170 347 15 436 466 10 0 258 -627 92 230 -10 0 1652 10 955 0 -628 117 467 -18 0 1557 10 276 0 -629 413 217 -10 0 1645 10 683 0 -630 405 450 -6 0 1558 10 498 0 -631 394 322 12 0 1651 10 0 201 -632 125 61 -20 0 1585 10 733 0 -633 238 123 24 781 811 10 0 864 -634 11 403 -27 0 1528 10 120 0 -635 89 272 -20 0 1649 10 823 0 -636 304 102 30 0 1654 10 0 326 -637 478 121 -10 0 1550 10 950 0 -638 408 84 -30 0 1582 10 365 0 -639 376 494 30 0 1537 10 0 84 -640 20 73 -8 0 1521 10 438 0 -641 159 299 -18 0 1708 10 281 0 -642 95 382 19 0 1608 10 0 340 -643 352 63 -17 0 1598 10 726 0 -644 365 274 -16 0 1694 10 678 0 -645 30 301 -25 0 1586 10 696 0 -646 351 5 -20 0 1546 10 57 0 -647 197 267 -20 109 139 10 464 0 -648 498 171 -20 0 1551 10 888 0 -649 468 352 -12 0 1571 10 718 0 -650 418 251 21 0 1643 10 0 768 -651 489 437 -27 0 1508 10 83 0 -652 251 63 14 0 1624 0 0 1016 -653 132 55 10 267 297 10 0 125 -654 281 96 -30 0 1654 10 849 0 -655 333 293 27 617 647 10 0 389 -656 255 487 19 0 1574 10 0 957 -657 207 400 -10 0 1655 10 238 0 -658 469 489 4 0 1487 10 0 949 -659 244 254 20 100 130 10 0 686 -660 233 207 10 46 76 10 0 605 -661 441 60 -14 1459 1489 10 594 0 -662 411 379 25 1193 1223 10 0 250 -663 178 72 23 0 1619 0 0 1013 -664 51 447 10 0 1531 10 0 551 -665 478 118 -26 0 1548 10 985 0 -666 141 426 23 0 1604 10 0 311 -667 295 89 -25 742 772 10 997 0 -668 112 433 29 235 265 10 0 839 -669 320 211 -20 0 1731 10 135 0 -670 400 103 10 0 1601 10 0 180 -671 408 453 10 0 1554 10 0 702 -672 435 180 -20 0 1614 10 233 0 -673 432 66 -20 0 1553 10 708 0 -674 374 116 9 0 1629 10 0 580 -675 478 102 10 0 1540 10 0 780 -676 335 57 -10 0 1601 10 142 0 -677 385 239 -33 0 1676 10 363 0 -678 386 245 16 0 1675 10 0 644 -679 208 396 -36 176 206 10 745 0 -680 380 489 20 0 1539 10 0 524 -681 380 498 10 0 1531 10 0 404 -682 440 7 -19 314 344 10 196 0 -683 434 245 10 342 372 10 0 629 -684 90 232 10 0 1650 10 0 970 -685 389 334 -20 0 1649 10 63 0 -686 241 205 -20 0 1766 10 659 0 -687 18 24 32 0 1488 10 0 410 -688 57 183 15 0 1607 10 0 694 -689 59 457 30 0 1530 10 0 309 -690 442 243 -10 0 1619 10 515 0 -691 402 281 20 0 1656 10 0 81 -692 445 237 10 200 230 10 0 956 -693 441 273 -13 0 1619 10 227 0 -694 31 175 -15 247 277 10 688 0 -695 234 202 -20 0 1761 10 453 0 -696 52 303 25 441 471 10 0 645 -697 167 445 -11 0 1600 10 825 0 -698 179 286 8 0 1732 10 0 173 -699 269 48 -10 0 1609 10 118 0 -700 165 59 27 0 1602 10 0 317 -701 461 8 -20 0 1490 10 337 0 -702 421 415 -10 0 1574 10 671 0 -703 59 459 -5 311 341 10 417 0 -704 24 492 10 0 1480 10 0 905 -705 55 449 20 0 1533 10 0 348 -706 224 192 -20 0 1748 10 272 0 -707 444 269 -10 0 1617 10 155 0 -708 491 20 20 394 424 10 0 673 -709 313 126 -11 243 273 10 769 0 -710 283 438 3 0 1621 10 0 324 -711 352 241 -10 0 1709 10 958 0 -712 398 476 25 0 1541 0 0 1012 -713 442 247 10 0 1619 10 0 889 -714 217 207 26 0 1757 10 0 754 -715 233 87 18 253 283 10 0 441 -716 479 127 -10 270 300 10 150 0 -717 6 53 8 0 1498 10 0 79 -718 478 300 12 0 1578 10 0 649 -719 378 493 30 0 1537 10 0 289 -720 303 78 -20 0 1632 10 325 0 -721 344 62 -10 0 1601 10 287 0 -722 371 315 -14 0 1674 10 597 0 -723 200 78 -28 0 1632 10 109 0 -724 413 391 8 0 1596 10 0 826 -725 415 216 -20 0 1643 10 428 0 -726 397 57 17 1476 1506 10 0 643 -727 293 228 -22 0 1763 10 790 0 -728 0 297 10 0 1557 10 0 575 -729 435 20 -20 0 1516 10 364 0 -730 195 111 15 0 1662 10 0 578 -731 417 218 -10 0 1641 10 522 0 -732 340 54 -10 238 268 10 235 0 -733 132 57 20 0 1585 10 0 632 -734 210 379 -38 0 1676 10 581 0 -735 228 260 -30 0 1787 10 838 0 -736 399 104 10 0 1603 10 0 321 -737 95 277 -10 0 1654 10 618 0 -738 360 284 19 0 1696 10 0 556 -739 53 466 -20 0 1519 10 376 0 -740 112 465 10 0 1556 10 0 465 -741 313 391 5 0 1657 10 0 277 -742 93 235 10 0 1654 10 0 302 -743 125 32 -10 0 1560 10 31 0 -744 215 282 -22 1440 1470 10 509 0 -745 224 320 36 0 1737 10 0 679 -746 134 428 -5 0 1599 10 922 0 -747 26 490 10 0 1483 10 0 9 -748 44 115 -11 0 1565 10 80 0 -749 438 127 2 0 1587 10 0 35 -750 239 15 2 604 634 10 0 209 -751 342 54 -30 0 1595 10 787 0 -752 109 463 30 334 364 0 0 1009 -753 199 187 -32 0 1730 10 234 0 -754 201 188 -26 0 1732 10 714 0 -755 399 301 30 194 224 10 0 66 -756 484 171 10 293 323 10 0 444 -757 272 234 -20 1590 1620 10 176 0 -758 380 350 -20 0 1647 10 545 0 -759 140 108 29 0 1632 10 0 558 -760 228 199 10 0 1756 10 0 607 -761 245 461 -10 649 679 10 534 0 -762 305 107 20 0 1658 10 0 884 -763 231 195 20 109 139 10 0 248 -764 450 265 10 0 1611 0 0 1027 -765 273 149 14 0 1708 10 0 206 -766 12 358 -20 0 1550 10 615 0 -767 315 121 10 203 233 10 0 866 -768 420 213 -21 0 1638 10 650 0 -769 331 134 11 0 1670 10 0 709 -770 84 377 -20 0 1602 10 359 0 -771 320 280 -30 0 1735 10 792 0 -772 89 185 16 600 630 10 0 7 -773 472 481 -10 0 1491 10 443 0 -774 422 420 -20 0 1570 10 211 0 -775 475 267 7 0 1586 10 0 843 -776 470 125 -7 0 1558 10 331 0 -777 435 268 -24 0 1626 10 36 0 -778 409 155 -20 185 215 10 426 0 -779 243 248 30 0 1804 10 0 610 -780 488 96 -10 1066 1096 10 675 0 -781 341 72 9 0 1612 10 0 570 -782 58 449 -20 0 1535 10 366 0 -783 16 460 -10 411 441 10 550 0 -784 480 136 -30 0 1555 10 361 0 -785 162 388 -10 0 1648 10 102 0 -786 47 208 30 226 256 10 0 319 -787 324 127 30 0 1668 10 0 751 -788 87 96 -20 0 1587 10 137 0 -789 140 137 32 0 1654 10 0 852 -790 314 205 22 0 1733 10 0 727 -791 96 346 -20 0 1630 10 830 0 -792 321 280 30 0 1734 10 0 771 -793 245 251 -20 0 1806 10 101 0 -794 436 295 11 0 1620 10 0 483 -795 274 261 -24 0 1785 10 224 0 -796 271 128 12 346 376 0 0 1022 -797 275 45 -30 0 1605 10 981 0 -798 422 409 10 234 264 10 0 931 -799 146 188 -17 0 1690 10 27 0 -800 93 96 -12 225 255 10 904 0 -801 409 255 23 0 1652 10 0 89 -802 449 428 -10 0 1545 10 431 0 -803 90 285 -30 0 1648 10 414 0 -804 415 95 15 0 1585 10 0 903 -805 88 287 30 0 1645 10 0 86 -806 379 196 20 194 224 10 0 52 -807 368 452 16 0 1578 0 0 1010 -808 202 186 20 0 1731 10 0 500 -809 435 11 -15 0 1509 10 546 0 -810 269 46 -30 0 1607 10 385 0 -811 7 292 -20 0 1565 10 993 0 -812 44 496 -30 0 1491 10 987 0 -813 478 99 10 0 1538 10 0 561 -814 391 99 -17 0 1605 10 132 0 -815 132 477 25 0 1556 10 0 913 -816 24 65 -15 0 1519 10 559 0 -817 130 247 17 120 150 10 0 134 -818 133 273 -10 0 1692 10 45 0 -819 347 62 -21 0 1600 10 96 0 -820 404 140 8 0 1622 10 0 345 -821 416 420 -20 0 1574 10 512 0 -822 67 335 20 0 1610 10 0 583 -823 92 270 20 257 287 10 0 635 -824 411 95 -31 243 273 10 159 0 -825 132 479 11 0 1554 10 0 697 -826 366 334 -8 0 1668 10 724 0 -827 125 39 -10 0 1566 10 310 0 -828 419 422 20 276 306 10 0 831 -829 460 2 -20 0 1487 10 242 0 -830 67 334 20 0 1610 10 0 791 -831 448 414 -20 0 1554 10 828 0 -832 46 163 8 0 1590 10 0 614 -833 77 465 -18 0 1536 10 946 0 -834 284 319 17 817 847 0 0 1039 -835 102 422 23 226 256 10 0 539 -836 240 34 -14 0 1595 10 186 0 -837 141 428 20 208 238 10 0 996 -838 204 269 30 0 1762 10 0 735 -839 144 439 -29 0 1595 10 668 0 -840 470 417 11 0 1535 0 0 1002 -841 404 103 20 0 1599 10 0 521 -842 5 281 16 0 1565 10 0 623 -843 487 320 -7 0 1564 10 775 0 -844 398 23 10 270 300 10 0 856 -845 90 296 -26 166 196 10 251 0 -846 386 13 10 0 1538 10 0 172 -847 115 465 10 0 1558 10 0 280 -848 473 475 -20 0 1495 10 499 0 -849 275 42 30 0 1602 10 0 654 -850 286 356 -18 0 1700 10 590 0 -851 15 69 10 296 326 10 0 266 -852 267 44 -32 0 1605 10 789 0 -853 243 399 10 235 265 10 0 487 -854 390 249 21 0 1671 0 0 1026 -855 210 391 30 0 1665 10 0 2 -856 433 15 -10 0 1514 10 844 0 -857 24 259 19 0 1585 10 0 221 -858 12 463 -20 361 391 10 32 0 -859 237 213 -11 0 1772 10 153 0 -860 182 480 -9 0 1572 10 138 0 -861 409 88 20 0 1585 10 0 523 -862 244 368 25 0 1693 10 0 257 -863 381 328 -10 717 747 10 973 0 -864 213 185 -24 0 1737 10 633 0 -865 482 141 -10 0 1555 10 963 0 -866 319 124 -10 0 1668 10 767 0 -867 141 431 30 0 1600 10 0 507 -868 198 264 20 0 1758 10 0 374 -869 69 334 30 0 1612 10 0 587 -870 299 98 -25 0 1652 10 557 0 -871 240 250 10 37 67 10 0 252 -872 199 203 -30 1457 1487 10 961 0 -873 459 17 20 0 1498 10 0 167 -874 423 217 -7 0 1635 10 91 0 -875 477 179 20 0 1574 10 0 591 -876 213 397 10 0 1660 10 0 458 -877 405 187 34 1251 1281 10 0 360 -878 269 402 20 0 1658 0 0 1029 -879 53 204 8 1055 1085 10 0 127 -880 13 394 15 0 1534 10 0 130 -881 15 68 10 0 1514 10 0 488 -882 56 268 -16 0 1617 10 47 0 -883 360 184 10 0 1683 10 0 954 -884 307 102 -20 0 1653 10 762 0 -885 130 57 40 0 1584 10 0 479 -886 250 328 -15 0 1733 10 10 0 -887 91 231 30 0 1651 10 0 304 -888 479 176 20 240 270 10 0 648 -889 420 224 -10 0 1640 10 713 0 -890 461 182 -23 0 1590 10 136 0 -891 418 218 -10 0 1640 10 323 0 -892 419 418 10 0 1573 10 0 24 -893 336 493 20 0 1554 10 0 353 -894 389 300 10 0 1664 10 0 472 -895 92 76 -20 1139 1169 10 312 0 -896 476 102 20 0 1541 10 0 446 -897 418 399 20 0 1587 10 0 29 -898 109 56 27 0 1572 0 0 1007 -899 13 465 -20 0 1492 10 358 0 -900 92 232 10 177 207 10 0 50 -901 394 47 5 313 343 10 0 282 -902 16 287 12 0 1575 10 0 511 -903 399 102 -15 0 1601 10 804 0 -904 143 158 12 0 1670 10 0 800 -905 18 484 -10 0 1482 10 704 0 -906 250 411 -30 0 1650 10 240 0 -907 19 273 25 0 1579 0 0 1018 -908 365 28 -20 0 1561 10 274 0 -909 387 297 10 144 174 10 0 216 -910 433 447 -10 794 824 10 582 0 -911 214 274 -20 0 1768 10 349 0 -912 489 338 -8 0 1557 10 299 0 -913 130 494 -25 0 1540 10 815 0 -914 23 67 30 0 1520 0 0 1006 -915 374 489 20 0 1542 10 0 164 -916 126 30 10 0 1559 10 0 457 -917 112 467 10 276 306 10 0 434 -918 489 274 -25 534 564 10 600 0 -919 61 214 -10 342 372 10 355 0 -920 166 440 12 207 237 10 0 503 -921 56 75 -15 1438 1468 10 241 0 -922 210 276 5 47 77 10 0 746 -923 80 286 -20 0 1638 10 367 0 -924 17 459 10 0 1498 10 0 461 -925 66 448 -20 0 1541 10 268 0 -926 351 128 -20 1253 1283 10 41 0 -927 352 176 20 126 156 10 0 85 -928 490 286 29 0 1569 10 0 133 -929 247 219 17 0 1780 0 0 1038 -930 86 268 -20 0 1647 10 77 0 -931 398 329 -10 0 1644 10 798 0 -932 272 402 -20 0 1658 10 37 0 -933 317 123 -36 0 1668 10 48 0 -934 408 318 15 643 673 10 0 532 -935 66 31 -14 1048 1078 10 394 0 -936 425 448 -10 0 1547 10 939 0 -937 35 304 30 0 1590 10 0 75 -938 471 94 30 0 1541 10 0 122 -939 470 473 10 0 1498 10 0 936 -940 224 56 13 0 1616 10 0 406 -941 343 47 -10 0 1588 10 175 0 -942 52 18 -3 0 1506 10 99 0 -943 16 68 20 0 1515 10 0 422 -944 195 185 -21 0 1726 10 270 0 -945 92 236 -10 0 1653 10 424 0 -946 76 462 18 0 1537 10 0 833 -947 124 56 20 0 1580 10 0 526 -948 481 454 14 0 1503 10 0 460 -949 477 483 -4 366 396 10 658 0 -950 481 124 10 0 1548 10 0 637 -951 389 156 27 0 1644 10 0 477 -952 384 16 -10 0 1542 10 198 0 -953 492 34 -5 0 1487 10 977 0 -954 371 200 -10 224 254 10 883 0 -955 153 235 10 0 1713 10 0 627 -956 428 202 -10 904 934 10 692 0 -957 257 391 -19 0 1670 10 656 0 -958 421 218 10 0 1638 10 0 711 -959 206 186 10 0 1734 10 0 346 -960 393 301 30 0 1660 10 0 181 -961 204 187 30 0 1733 10 0 872 -962 468 475 10 313 343 10 0 392 -963 477 122 10 330 360 10 0 865 -964 100 66 15 0 1574 10 0 372 -965 489 27 10 0 1485 10 0 263 -966 12 451 20 0 1500 10 0 144 -967 197 270 -10 0 1755 10 126 0 -968 311 422 29 0 1629 10 0 617 -969 489 17 10 0 1478 10 0 110 -970 13 214 -10 0 1572 10 684 0 -971 440 247 20 0 1621 10 0 560 -972 28 467 -21 0 1501 10 185 0 -973 388 325 10 0 1654 10 0 863 -974 270 401 -10 0 1659 10 354 0 -975 5 445 30 0 1498 10 0 586 -976 198 271 -10 0 1755 10 161 0 -977 480 131 5 0 1553 10 0 953 -978 437 98 16 0 1571 10 0 454 -979 131 246 17 0 1692 10 0 395 -980 49 437 -10 0 1537 10 157 0 -981 270 49 30 0 1610 10 0 797 -982 337 41 -18 0 1585 10 403 0 -983 318 280 20 0 1737 10 0 542 -984 154 392 -18 0 1640 10 283 0 -985 493 111 26 0 1532 10 0 665 -986 399 450 20 0 1562 10 0 39 -987 67 452 30 0 1539 10 0 812 -988 34 239 -8 0 1595 10 995 0 -989 343 276 15 96 126 0 0 1037 -990 393 12 -5 0 1534 10 322 0 -991 236 247 20 0 1797 10 0 476 -992 340 291 22 0 1713 10 0 284 -993 3 292 20 0 1561 10 0 811 -994 209 68 27 1568 1598 10 0 54 -995 18 225 8 0 1578 10 0 988 -996 147 435 -20 245 275 10 837 0 -997 335 99 25 0 1638 10 0 667 -998 485 24 -20 0 1485 10 288 0 -999 470 475 -7 0 1497 10 290 0 -1000 341 58 10 224 254 0 0 1005 -1001 475 480 -30 0 1490 10 213 0 -1002 470 417 -11 0 1535 10 840 0 -1003 432 2 -20 467 497 10 380 0 -1004 142 360 -20 1532 1562 10 387 0 -1005 341 58 -10 224 254 10 1000 0 -1006 23 67 -30 0 1520 10 914 0 -1007 109 56 -27 0 1572 10 898 0 -1008 481 96 -20 0 1534 10 576 0 -1009 109 463 -30 334 364 10 752 0 -1010 368 452 -16 0 1578 10 807 0 -1011 488 26 -30 0 1485 10 108 0 -1012 398 476 -25 0 1541 10 712 0 -1013 178 72 -23 0 1619 10 663 0 -1014 459 53 -20 0 1524 10 121 0 -1015 172 314 -9 0 1711 10 467 0 -1016 251 63 -14 0 1624 10 652 0 -1017 175 352 -12 0 1685 10 246 0 -1018 19 273 -25 0 1579 10 907 0 -1019 264 180 -33 1681 1711 10 115 0 -1020 440 284 -25 0 1618 10 495 0 -1021 348 348 -23 0 1673 10 398 0 -1022 271 128 -12 346 376 10 796 0 -1023 92 234 -10 0 1653 10 408 0 -1024 452 206 -31 492 522 10 592 0 -1025 452 172 -9 0 1595 10 390 0 -1026 390 249 -21 0 1671 10 854 0 -1027 450 265 -10 0 1611 10 764 0 -1028 186 135 -24 0 1680 10 166 0 -1029 269 402 -20 0 1658 10 878 0 -1030 90 274 -20 0 1650 10 613 0 -1031 412 478 -7 0 1532 10 72 0 -1032 92 259 -4 399 429 10 64 0 -1033 175 239 -23 0 1736 10 6 0 -1034 391 293 -20 0 1664 10 210 0 -1035 201 278 -13 0 1755 10 547 0 -1036 364 173 -30 180 210 10 405 0 -1037 343 276 -15 96 126 10 989 0 -1038 247 219 -17 0 1780 10 929 0 -1039 284 319 -17 817 847 10 834 0 -1040 211 248 -26 39 69 10 244 0 -1041 226 191 -20 0 1748 10 501 0 -1042 263 153 -12 412 442 10 391 0 diff --git a/jsprit-instances/instances/lilim/1000/LRC1105.txt b/jsprit-instances/instances/lilim/1000/LRC1105.txt deleted file mode 100644 index ff41aa828..000000000 --- a/jsprit-instances/instances/lilim/1000/LRC1105.txt +++ /dev/null @@ -1,1054 +0,0 @@ -250 200 1 -0 250 250 0 0 1821 0 0 0 -1 440 436 -7 882 932 10 290 0 -2 214 394 -18 221 271 10 281 0 -3 476 483 -20 324 432 10 56 0 -4 352 487 -10 905 928 10 487 0 -5 230 197 40 94 179 10 0 453 -6 175 239 23 75 148 10 0 395 -7 133 202 -10 468 483 10 44 0 -8 328 458 -25 755 810 10 409 0 -9 25 499 10 431 489 10 0 551 -10 226 423 -30 174 259 10 906 0 -11 313 282 20 128 229 10 0 87 -12 60 454 10 329 396 10 0 503 -13 239 486 -20 1486 1508 10 220 0 -14 102 264 10 148 194 10 0 635 -15 408 452 -25 265 310 10 179 0 -16 451 62 5 275 388 10 0 998 -17 203 390 40 168 179 10 0 507 -18 92 233 10 179 298 0 0 1041 -19 7 300 -10 328 392 10 645 0 -20 409 90 20 247 299 10 0 455 -21 307 108 -10 238 267 10 767 0 -22 347 54 -10 270 350 10 533 0 -23 406 87 -30 309 347 10 445 0 -24 371 332 14 480 609 10 0 655 -25 116 466 20 254 277 10 0 197 -26 441 265 40 191 269 10 0 188 -27 130 140 17 189 230 10 0 356 -28 80 117 -10 808 871 10 408 0 -29 421 387 15 768 865 10 0 460 -30 83 300 26 475 554 10 0 730 -31 136 52 10 302 313 10 0 411 -32 18 462 -10 397 429 10 550 0 -33 390 120 24 1014 1025 0 0 1034 -34 188 119 -20 955 1024 10 465 0 -35 467 114 10 388 393 10 0 938 -36 440 292 -25 919 991 10 495 0 -37 268 400 20 225 291 10 0 826 -38 391 202 14 148 187 10 0 592 -39 377 432 -20 808 885 10 84 0 -40 80 290 10 187 238 10 0 449 -41 439 15 -10 330 387 10 452 0 -42 307 52 23 891 980 0 0 1032 -43 111 192 -32 1196 1232 10 193 0 -44 131 56 10 252 289 10 0 7 -45 88 286 -30 233 301 10 414 0 -46 69 414 -11 1259 1298 10 833 0 -47 41 232 16 209 298 10 0 879 -48 323 77 -10 1400 1441 10 883 0 -49 340 416 36 280 393 10 0 680 -50 86 199 23 246 340 10 0 832 -51 314 124 -10 231 261 10 709 0 -52 375 191 -10 164 200 10 793 0 -53 226 175 -21 1678 1733 10 451 0 -54 242 106 28 1278 1288 10 0 259 -55 417 417 -20 337 358 10 828 0 -56 419 459 20 276 387 10 0 3 -57 389 11 20 276 423 10 0 646 -58 450 416 -10 581 602 10 939 0 -59 246 255 10 97 159 10 0 531 -60 71 333 10 197 230 10 0 160 -61 105 474 27 449 522 10 0 76 -62 20 489 -10 371 426 10 606 0 -63 388 331 20 160 197 10 0 722 -64 92 259 -20 402 427 10 152 0 -65 200 261 -32 148 215 10 234 0 -66 400 288 30 154 308 10 0 352 -67 299 285 -20 1247 1290 10 499 0 -68 378 199 -30 205 239 10 162 0 -69 325 147 -25 1173 1230 10 557 0 -70 421 386 29 818 861 0 0 1038 -71 404 447 20 250 313 10 0 200 -72 412 478 -26 952 998 10 88 0 -73 26 67 -29 1294 1369 10 177 0 -74 358 183 -10 213 284 10 771 0 -75 30 302 10 262 302 10 0 139 -76 176 470 -27 528 596 10 61 0 -77 96 270 20 155 211 10 0 803 -78 243 408 -8 1436 1462 10 202 0 -79 60 29 32 1351 1404 10 0 555 -80 34 169 -35 475 523 10 508 0 -81 407 280 -10 198 249 10 542 0 -82 277 403 10 155 256 0 0 1019 -83 498 456 -25 1395 1447 10 662 0 -84 384 491 20 341 385 10 0 39 -85 355 174 33 677 784 10 0 502 -86 97 288 22 1262 1337 0 0 1046 -87 316 284 -20 95 184 10 11 0 -88 334 403 26 174 204 10 0 72 -89 415 223 20 279 361 10 0 801 -90 230 320 -11 1169 1246 10 154 0 -91 432 199 7 635 672 10 0 207 -92 92 18 -20 1101 1177 10 596 0 -93 273 300 30 55 136 10 0 765 -94 269 112 -30 1234 1322 10 612 0 -95 429 389 -20 409 469 10 512 0 -96 371 71 -10 274 329 10 326 0 -97 5 297 -10 325 367 10 811 0 -98 414 378 23 494 525 10 0 332 -99 38 15 3 1048 1165 0 0 1003 -100 2 295 -20 314 327 10 993 0 -101 237 254 20 67 129 10 0 659 -102 54 445 10 296 351 10 0 140 -103 382 110 -13 1110 1145 10 379 0 -104 438 488 -20 326 358 10 630 0 -105 395 331 -20 209 255 10 315 0 -106 230 487 -15 1122 1168 10 370 0 -107 249 407 -30 157 245 10 240 0 -108 488 26 30 407 488 10 0 288 -109 151 81 -2 1559 1587 10 145 0 -110 483 14 10 347 409 10 0 263 -111 0 422 8 813 860 10 0 340 -112 429 67 -20 704 790 10 377 0 -113 195 464 -8 1519 1591 10 617 0 -114 356 256 19 106 135 10 0 597 -115 264 180 -6 1602 1740 10 406 0 -116 94 235 20 156 228 10 0 742 -117 474 96 30 271 324 0 0 1014 -118 268 52 10 292 350 10 0 750 -119 44 440 -10 790 817 10 905 0 -120 7 382 -7 746 824 10 980 0 -121 459 53 20 1099 1175 0 0 1009 -122 491 25 -30 401 447 10 365 0 -123 439 243 -20 302 355 10 143 0 -124 210 185 20 76 159 0 0 1030 -125 150 68 -20 409 466 10 827 0 -126 201 270 10 52 125 10 0 838 -127 0 188 26 904 990 0 0 1012 -128 103 464 -18 1242 1334 10 283 0 -129 325 56 -20 751 872 10 927 0 -130 44 344 -30 1072 1117 10 937 0 -131 418 75 -10 449 476 10 638 0 -132 472 57 -3 1254 1366 10 454 0 -133 460 328 13 224 290 10 0 577 -134 89 270 10 190 247 10 0 737 -135 374 190 -10 137 216 10 230 0 -136 463 253 -20 1046 1078 10 472 0 -137 97 93 -20 237 274 10 800 0 -138 163 472 9 623 713 10 0 280 -139 29 336 -10 299 394 10 75 0 -140 84 453 -10 1180 1295 10 102 0 -141 294 421 -12 1556 1625 10 217 0 -142 343 62 -10 356 388 10 568 0 -143 371 193 20 133 157 10 0 123 -144 142 372 18 162 180 10 0 984 -145 66 88 2 832 858 10 0 109 -146 395 332 10 173 269 10 0 537 -147 93 413 17 226 299 10 0 783 -148 267 394 -20 211 338 10 974 0 -149 249 258 30 104 179 10 0 252 -150 472 129 -22 252 334 10 784 0 -151 87 3 -24 1441 1456 10 294 0 -152 62 326 20 259 343 10 0 64 -153 212 186 -20 1663 1737 10 945 0 -154 241 402 11 1008 1072 10 0 90 -155 439 266 10 189 232 10 0 483 -156 79 80 -10 1383 1412 10 754 0 -157 62 453 -10 297 322 10 925 0 -158 188 151 -10 1261 1363 10 959 0 -159 386 154 -30 1088 1144 10 393 0 -160 38 301 -10 295 326 10 60 0 -161 192 265 -10 100 179 10 647 0 -162 371 192 30 134 162 10 0 68 -163 64 294 -10 1090 1142 10 306 0 -164 381 494 10 310 386 0 0 1015 -165 437 12 20 310 380 10 0 337 -166 186 135 -20 689 777 10 335 0 -167 459 10 -20 318 385 10 242 0 -168 175 422 -20 1426 1496 10 583 0 -169 274 48 10 217 236 10 0 667 -170 488 173 -20 264 324 10 888 0 -171 398 97 10 212 269 10 0 267 -172 385 17 -10 792 856 10 990 0 -173 180 283 23 753 764 10 0 714 -174 71 12 2 297 353 10 0 717 -175 343 49 10 237 323 10 0 846 -176 248 251 20 2 74 10 0 402 -177 7 194 29 939 993 10 0 73 -178 322 290 -20 1480 1507 10 868 0 -179 410 399 25 228 269 10 0 15 -180 398 103 -20 274 312 10 517 0 -181 385 285 -10 877 888 10 909 0 -182 179 497 -25 1385 1467 10 815 0 -183 464 13 -20 323 476 10 231 0 -184 492 335 -18 818 868 10 520 0 -185 27 464 -20 1259 1354 10 703 0 -186 231 29 -10 1203 1280 10 706 0 -187 157 38 -6 1043 1083 10 543 0 -188 439 268 -40 287 339 10 26 0 -189 149 214 7 467 528 10 0 536 -190 187 73 -18 268 346 10 715 0 -191 429 169 -13 890 945 10 890 0 -192 350 199 -10 1195 1238 10 736 0 -193 60 231 32 1014 1068 10 0 43 -194 448 404 -20 574 654 10 518 0 -195 481 20 20 346 377 10 0 953 -196 436 25 -20 1251 1343 10 861 0 -197 111 459 -20 337 410 10 25 0 -198 389 17 -20 347 415 10 474 0 -199 148 208 22 487 596 0 0 1028 -200 475 477 -20 413 427 10 71 0 -201 390 325 -20 221 311 10 210 0 -202 346 354 8 800 864 10 0 78 -203 91 266 10 211 285 10 0 424 -204 17 65 20 339 344 10 0 559 -205 391 112 -20 981 1050 10 521 0 -206 224 203 20 53 101 10 0 373 -207 426 231 -7 1001 1086 10 91 0 -208 260 472 33 1020 1082 10 0 218 -209 265 0 -10 869 953 10 490 0 -210 391 293 20 199 283 10 0 201 -211 411 421 20 289 370 0 0 1022 -212 132 30 -20 323 359 10 733 0 -213 475 480 -30 378 411 10 999 0 -214 286 244 -24 1252 1345 10 886 0 -215 436 237 20 186 218 10 0 573 -216 402 284 30 155 254 10 0 711 -217 287 397 12 537 622 10 0 141 -218 272 420 -33 1375 1426 10 208 0 -219 477 120 -40 315 399 10 637 0 -220 145 434 20 211 298 10 0 13 -221 33 286 11 1499 1592 10 0 433 -222 370 262 15 1090 1138 0 0 1025 -223 393 20 -5 348 464 10 901 0 -224 330 308 -12 1129 1241 10 631 0 -225 246 398 40 148 207 10 0 327 -226 482 184 -10 1108 1136 10 756 0 -227 451 305 13 208 262 10 0 649 -228 226 316 -9 70 91 10 437 0 -229 110 459 -10 298 427 10 628 0 -230 244 250 10 6 107 10 0 135 -231 458 16 20 313 418 10 0 183 -232 390 34 -20 1037 1114 10 380 0 -233 423 214 -20 182 281 10 629 0 -234 219 215 32 46 121 10 0 65 -235 326 118 10 152 265 10 0 981 -236 365 74 -20 831 896 10 528 0 -237 331 356 13 689 764 10 0 968 -238 210 398 10 181 258 10 0 448 -239 403 93 10 320 391 10 0 726 -240 248 404 30 154 219 10 0 107 -241 65 62 -20 961 1021 10 312 0 -242 460 13 20 316 417 10 0 167 -243 0 293 30 263 325 10 0 728 -244 211 248 26 39 77 10 0 464 -245 484 174 10 254 305 10 0 599 -246 175 352 -10 1572 1685 10 847 0 -247 455 168 -37 847 916 10 672 0 -248 224 191 20 76 116 10 0 753 -249 439 156 -19 525 557 10 778 0 -250 434 359 -29 1390 1425 10 651 0 -251 118 314 26 328 377 10 0 834 -252 234 246 -30 16 146 10 149 0 -253 406 450 20 259 290 10 0 398 -254 75 118 -12 419 430 10 904 0 -255 115 395 11 808 852 10 0 292 -256 329 456 19 246 283 10 0 485 -257 218 403 15 1300 1369 0 0 1049 -258 149 341 -14 398 440 10 319 0 -259 253 74 -28 1327 1404 10 54 0 -260 436 241 -10 324 360 10 323 0 -261 238 203 -20 63 155 10 386 0 -262 405 455 40 328 383 10 0 758 -263 485 27 -10 441 481 10 110 0 -264 323 118 -20 150 233 10 866 0 -265 330 371 1 547 600 10 0 459 -266 25 65 -10 365 417 10 816 0 -267 406 96 -10 219 295 10 171 0 -268 49 451 20 284 343 10 0 318 -269 307 249 10 1379 1405 0 0 1052 -270 178 135 -20 1490 1568 10 808 0 -271 299 353 34 114 173 10 0 741 -272 236 213 20 39 129 10 0 735 -273 355 177 20 127 150 10 0 950 -274 394 23 -20 392 446 10 751 0 -275 306 235 25 57 92 10 0 363 -276 90 477 18 277 374 0 0 1017 -277 379 486 22 633 740 10 0 910 -278 435 16 -20 342 423 10 364 0 -279 8 497 -10 378 467 10 624 0 -280 150 484 -9 623 657 10 138 0 -281 213 399 18 217 281 10 0 2 -282 391 18 10 350 436 10 0 546 -283 111 392 18 1144 1225 10 0 128 -284 330 281 -12 1327 1364 10 863 0 -285 344 203 -20 141 223 10 983 0 -286 91 235 -17 254 314 10 817 0 -287 346 60 10 307 365 10 0 819 -288 483 27 -30 437 509 10 108 0 -289 382 498 -20 289 360 10 915 0 -290 457 492 7 506 541 10 0 1 -291 291 213 23 1247 1298 10 0 580 -292 154 374 -11 898 1005 10 255 0 -293 225 196 10 59 149 10 0 864 -294 94 40 24 1045 1121 10 0 151 -295 0 356 -21 1057 1146 10 569 0 -296 297 283 -36 1333 1396 10 745 0 -297 371 423 10 211 232 10 0 719 -298 417 217 30 186 222 0 0 1039 -299 500 228 -15 758 835 10 989 0 -300 412 214 10 165 198 10 0 958 -301 442 289 25 195 241 10 0 843 -302 157 269 -10 1577 1606 10 695 0 -303 440 241 -10 269 363 10 602 0 -304 100 266 20 150 239 10 0 347 -305 111 178 18 156 200 10 0 462 -306 91 101 10 259 367 10 0 163 -307 25 307 -20 232 300 10 615 0 -308 135 400 -20 280 348 10 818 0 -309 58 458 10 300 376 10 0 608 -310 133 26 -10 322 331 10 530 0 -311 211 386 20 141 155 10 0 549 -312 94 97 20 224 234 10 0 241 -313 30 155 9 1280 1310 10 0 970 -314 208 184 20 78 103 10 0 653 -315 394 333 20 168 250 10 0 105 -316 355 180 -20 138 167 10 350 0 -317 241 180 -10 1696 1724 10 527 0 -318 21 485 -20 340 367 10 268 0 -319 80 251 14 299 338 10 0 258 -320 476 61 -20 434 493 10 456 0 -321 406 94 10 220 305 10 0 873 -322 364 71 -20 1324 1402 10 729 0 -323 418 221 10 277 335 10 0 260 -324 274 441 -31 657 762 10 860 0 -325 304 97 -40 162 231 10 884 0 -326 297 102 10 155 198 10 0 96 -327 250 405 -40 155 212 10 225 0 -328 111 463 -20 322 351 10 996 0 -329 408 279 20 185 284 0 0 1047 -330 263 418 -20 272 315 10 362 0 -331 480 119 -10 619 668 10 969 0 -332 420 383 -23 975 1019 10 98 0 -333 142 14 18 806 894 10 0 994 -334 73 328 20 193 232 10 0 830 -335 50 438 20 324 379 10 0 166 -336 441 7 -30 370 443 10 616 0 -337 462 14 -20 391 433 10 165 0 -338 360 294 -10 1422 1443 10 764 0 -339 58 39 -4 1136 1219 10 526 0 -340 58 391 -8 892 903 10 111 0 -341 410 285 20 196 219 10 0 854 -342 96 97 20 217 269 0 0 1008 -343 21 64 20 331 403 0 0 1010 -344 238 210 -17 142 156 10 929 0 -345 479 121 -20 307 338 10 716 0 -346 200 178 20 87 150 10 0 885 -347 216 341 -20 649 689 10 304 0 -348 48 437 -32 795 842 10 812 0 -349 200 270 20 53 140 10 0 967 -350 357 181 20 127 212 10 0 316 -351 476 174 30 308 370 10 0 648 -352 400 286 -30 163 170 10 66 0 -353 351 481 10 303 370 0 0 1023 -354 270 400 10 151 199 0 0 1033 -355 95 234 10 155 234 10 0 627 -356 128 113 -17 338 417 10 27 0 -357 133 455 25 759 887 10 0 622 -358 16 463 -20 367 413 10 966 0 -359 59 388 20 631 725 10 0 770 -360 376 190 30 139 211 10 0 769 -361 481 122 30 275 345 10 0 865 -362 266 405 20 219 245 10 0 330 -363 374 232 -25 125 166 10 275 0 -364 398 20 20 273 348 10 0 278 -365 481 26 30 321 381 10 0 122 -366 63 444 20 371 419 10 0 417 -367 89 290 20 166 199 10 0 601 -368 246 314 36 1451 1470 0 0 1051 -369 40 304 -28 1133 1187 10 882 0 -370 262 369 15 119 205 10 0 106 -371 323 29 -18 1099 1205 10 558 0 -372 89 65 -26 705 766 10 632 0 -373 144 35 -20 239 370 10 206 0 -374 200 265 -20 155 180 10 991 0 -375 436 264 20 186 257 10 0 707 -376 15 457 20 313 420 10 0 589 -377 397 20 20 272 354 10 0 112 -378 328 491 21 659 728 0 0 1043 -379 399 175 13 741 782 10 0 103 -380 432 2 20 448 516 10 0 232 -381 63 336 20 238 325 10 0 842 -382 6 296 -20 303 367 10 469 0 -383 146 376 -13 221 278 10 547 0 -384 295 247 12 1298 1339 10 0 795 -385 235 33 -13 1329 1375 10 940 0 -386 233 204 20 49 147 10 0 261 -387 142 360 20 1519 1574 0 0 1036 -388 177 156 25 163 201 10 0 415 -389 315 287 30 126 201 10 0 992 -390 452 172 -14 611 635 10 594 0 -391 263 153 12 394 460 10 0 790 -392 493 493 -10 843 900 10 962 0 -393 320 283 30 95 157 10 0 159 -394 64 5 -28 1120 1167 10 942 0 -395 95 235 -23 155 235 10 6 0 -396 203 211 20 1283 1360 10 0 757 -397 16 497 20 382 500 0 0 1001 -398 348 348 -20 928 971 10 253 0 -399 485 104 -5 766 853 10 977 0 -400 330 147 -10 848 879 10 954 0 -401 443 237 20 196 211 10 0 692 -402 316 286 -20 135 168 10 176 0 -403 335 46 -19 1321 1392 10 727 0 -404 381 495 -10 307 367 10 681 0 -405 364 173 -20 166 225 10 426 0 -406 267 162 6 1440 1488 10 0 115 -407 214 245 8 36 82 10 0 744 -408 92 234 10 219 280 10 0 28 -409 347 459 25 473 516 10 0 8 -410 30 7 -30 1152 1256 10 743 0 -411 120 37 -10 768 813 10 31 0 -412 397 153 -9 872 922 10 477 0 -413 210 29 -27 1029 1103 10 700 0 -414 87 285 30 249 264 10 0 45 -415 132 32 -25 773 826 10 388 0 -416 390 294 20 229 275 10 0 973 -417 67 451 -20 1211 1250 10 366 0 -418 24 68 -10 392 466 10 851 0 -419 146 439 -30 237 312 10 867 0 -420 209 212 18 1512 1574 0 0 1040 -421 6 292 10 247 358 10 0 696 -422 18 63 10 324 385 10 0 572 -423 149 98 -28 1152 1208 10 476 0 -424 91 268 -10 250 270 10 203 0 -425 103 177 28 610 672 10 0 759 -426 367 178 20 155 235 10 0 405 -427 225 269 -30 1272 1300 10 779 0 -428 443 246 -10 215 274 10 515 0 -429 306 42 -20 474 509 10 797 0 -430 374 306 -20 993 1025 10 897 0 -431 413 421 10 287 348 10 0 473 -432 470 405 -14 913 969 10 948 0 -433 33 278 -11 1478 1526 10 221 0 -434 149 458 -10 1151 1207 10 585 0 -435 257 57 18 1213 1269 0 0 1035 -436 272 403 30 165 245 10 0 878 -437 221 291 9 50 116 10 0 228 -438 1 101 -21 1249 1295 10 510 0 -439 332 459 -3 351 416 10 710 0 -440 220 392 20 241 304 10 0 893 -441 253 50 27 200 317 10 0 565 -442 250 441 -12 732 809 10 920 0 -443 471 484 10 339 370 10 0 936 -444 480 152 -20 1024 1049 10 665 0 -445 404 83 30 296 330 10 0 23 -446 476 94 20 274 367 10 0 552 -447 458 213 -20 1130 1156 10 971 0 -448 215 395 -10 229 284 10 238 0 -449 85 288 -10 169 243 10 40 0 -450 179 75 -32 729 781 10 789 0 -451 228 287 21 43 108 10 0 53 -452 397 18 10 279 334 10 0 41 -453 238 204 -40 76 164 10 5 0 -454 488 3 3 402 429 10 0 132 -455 407 88 -20 297 381 10 20 0 -456 459 14 20 315 389 10 0 320 -457 120 17 30 277 312 10 0 506 -458 235 316 -10 649 693 10 876 0 -459 370 382 -1 865 933 10 265 0 -460 405 454 -15 1301 1335 10 29 0 -461 17 458 10 409 488 0 0 1005 -462 43 135 -18 236 338 10 305 0 -463 318 497 -10 836 901 10 932 0 -464 199 268 -26 63 110 10 244 0 -465 111 467 20 292 311 10 0 34 -466 138 438 -20 273 331 10 837 0 -467 172 314 -10 520 600 10 575 0 -468 494 468 -20 339 395 10 774 0 -469 35 303 20 221 284 10 0 382 -470 341 59 27 786 823 10 0 620 -471 423 221 -20 263 284 10 806 0 -472 395 295 20 211 241 10 0 136 -473 413 417 -10 330 412 10 431 0 -474 339 60 20 209 317 10 0 198 -475 277 428 -25 483 528 10 862 0 -476 176 199 28 89 143 10 0 423 -477 265 240 9 18 93 10 0 412 -478 365 190 22 1465 1519 10 0 595 -479 133 53 -20 258 330 10 944 0 -480 387 488 -30 350 403 10 639 0 -481 385 295 20 142 205 10 0 960 -482 491 369 28 718 771 10 0 718 -483 445 273 -10 234 312 10 155 0 -484 195 273 -20 59 156 10 976 0 -485 313 493 -19 1177 1239 10 256 0 -486 495 227 20 339 378 0 0 1024 -487 241 403 10 222 248 10 0 4 -488 30 72 -30 418 476 10 914 0 -489 21 487 -30 348 382 10 593 0 -490 324 99 10 305 401 10 0 209 -491 453 318 -10 354 423 10 532 0 -492 443 272 10 227 343 10 0 918 -493 447 184 -10 395 483 10 768 0 -494 366 288 -10 684 714 10 683 0 -495 440 284 25 827 907 10 0 36 -496 13 314 14 245 293 10 0 497 -497 72 227 -14 526 631 10 496 0 -498 377 385 -25 846 917 10 712 0 -499 477 478 20 397 417 10 0 67 -500 204 185 20 155 201 10 0 961 -501 226 191 -20 73 143 10 763 0 -502 330 138 -33 1108 1141 10 85 0 -503 185 434 -10 572 605 10 12 0 -504 483 22 10 325 424 10 0 965 -505 71 282 29 615 698 10 0 697 -506 60 5 -30 1032 1085 10 457 0 -507 189 402 -40 531 571 10 17 0 -508 134 211 35 122 227 10 0 80 -509 146 313 22 1175 1245 10 0 872 -510 21 146 21 470 534 10 0 438 -511 37 281 -15 476 541 10 880 0 -512 416 417 20 339 377 10 0 95 -513 44 311 -30 395 450 10 869 0 -514 361 181 20 169 256 10 0 570 -515 444 242 10 194 268 10 0 428 -516 444 271 10 239 283 10 0 777 -517 359 179 20 142 213 10 0 180 -518 388 334 20 165 182 10 0 194 -519 401 164 -20 603 669 10 588 0 -520 499 316 18 573 700 10 0 184 -521 399 106 20 298 336 10 0 205 -522 425 215 -10 183 305 10 725 0 -523 407 98 -20 218 281 10 579 0 -524 406 460 -16 697 771 10 807 0 -525 88 95 20 275 296 0 0 1011 -526 95 64 4 758 804 10 0 339 -527 306 229 10 1310 1360 10 0 317 -528 273 55 20 196 203 10 0 236 -529 384 149 18 1183 1242 0 0 1027 -530 122 35 10 250 326 10 0 310 -531 308 199 -10 1502 1544 10 59 0 -532 390 301 10 149 234 10 0 491 -533 300 108 10 150 256 10 0 22 -534 267 400 -30 233 261 10 850 0 -535 8 300 10 341 401 10 0 766 -536 105 181 -7 1513 1579 10 189 0 -537 398 325 -10 223 273 10 146 0 -538 166 247 1 84 188 10 0 799 -539 140 431 30 211 275 10 0 740 -540 253 118 19 538 586 10 0 663 -541 359 246 -10 1406 1470 10 560 0 -542 321 277 10 75 170 10 0 81 -543 168 59 6 368 394 10 0 187 -544 406 285 20 171 216 10 0 889 -545 391 334 -20 169 223 10 685 0 -546 437 19 -10 1019 1038 10 282 0 -547 201 278 13 56 102 10 0 383 -548 435 267 -20 305 371 10 603 0 -549 245 408 -20 183 254 10 311 0 -550 16 462 10 357 445 10 0 32 -551 107 374 -10 908 951 10 9 0 -552 477 97 -20 273 343 10 446 0 -553 346 57 -30 314 332 10 870 0 -554 14 459 20 330 372 10 0 858 -555 102 6 -32 1441 1505 10 79 0 -556 359 287 24 115 153 10 0 931 -557 297 131 25 1145 1215 10 0 69 -558 282 1 18 1021 1094 10 0 371 -559 21 70 -20 750 822 10 204 0 -560 440 244 10 238 325 10 0 541 -561 482 104 19 794 850 10 0 780 -562 120 261 5 777 839 10 0 979 -563 125 29 30 274 323 10 0 621 -564 292 32 -30 222 276 10 849 0 -565 262 92 -27 607 684 10 441 0 -566 68 160 -15 1125 1177 10 688 0 -567 405 276 20 241 257 10 0 669 -568 277 50 10 201 243 10 0 142 -569 32 319 21 402 430 10 0 295 -570 344 70 -20 1121 1200 10 514 0 -571 481 84 -10 465 577 10 844 0 -572 21 68 -10 364 468 10 422 0 -573 441 244 -20 274 311 10 215 0 -574 57 43 15 978 1099 10 0 935 -575 1 293 10 257 308 10 0 467 -576 481 96 -20 277 370 10 776 0 -577 471 368 -13 401 486 10 133 0 -578 236 126 23 124 135 10 0 852 -579 406 99 20 225 260 10 0 523 -580 303 186 -23 1325 1413 10 291 0 -581 225 369 38 121 164 10 0 657 -582 412 453 10 299 325 10 0 986 -583 104 349 20 984 1064 10 0 168 -584 173 182 25 102 179 10 0 995 -585 111 464 10 301 350 10 0 434 -586 53 440 -29 330 347 10 668 0 -587 69 336 20 215 252 10 0 623 -588 359 182 20 197 252 10 0 519 -589 13 459 -20 335 388 10 376 0 -590 244 277 18 1272 1360 0 0 1044 -591 484 177 -20 245 322 10 875 0 -592 452 206 -14 470 544 10 38 0 -593 22 483 30 325 341 10 0 489 -594 452 110 14 322 389 10 0 390 -595 347 192 -22 1478 1529 10 478 0 -596 95 92 20 229 306 10 0 92 -597 368 311 -19 900 982 10 114 0 -598 479 387 13 383 442 10 0 912 -599 479 169 -10 288 360 10 245 0 -600 497 266 25 743 783 10 0 775 -601 66 336 -20 203 339 10 367 0 -602 376 195 10 160 231 10 0 303 -603 401 281 20 235 317 10 0 548 -604 441 177 23 994 1038 10 0 611 -605 231 203 20 50 119 10 0 610 -606 21 488 10 342 411 10 0 62 -607 231 204 20 142 188 0 0 1050 -608 122 422 -10 1435 1509 10 309 0 -609 65 453 30 274 383 10 0 972 -610 206 261 -20 177 218 10 605 0 -611 466 149 -23 1162 1240 10 604 0 -612 313 119 30 198 264 10 0 94 -613 90 274 20 168 220 10 0 805 -614 39 162 -30 533 628 10 788 0 -615 35 306 20 225 263 10 0 307 -616 437 15 30 339 401 10 0 336 -617 307 412 8 398 440 10 0 113 -618 79 291 -10 175 286 10 923 0 -619 64 437 -6 903 963 10 913 0 -620 376 92 -27 957 1055 10 470 0 -621 129 27 -30 302 323 10 563 0 -622 196 489 -25 994 1097 10 357 0 -623 51 286 -20 1455 1493 10 587 0 -624 20 488 10 368 407 10 0 279 -625 13 455 -30 313 371 10 975 0 -626 170 347 15 418 483 10 0 734 -627 92 230 -10 191 216 10 355 0 -628 117 467 10 254 302 10 0 229 -629 413 217 20 166 244 10 0 233 -630 405 450 20 253 301 10 0 104 -631 394 322 12 995 1084 10 0 224 -632 125 61 26 612 641 10 0 372 -633 238 123 24 758 835 0 0 1018 -634 11 403 18 331 385 10 0 641 -635 89 272 -10 200 213 10 14 0 -636 304 102 30 173 251 10 0 721 -637 478 121 40 295 373 10 0 219 -638 408 84 10 254 345 10 0 131 -639 376 494 30 274 353 10 0 480 -640 20 73 10 290 342 10 0 943 -641 159 299 -18 993 1069 10 634 0 -642 95 382 -26 224 268 10 791 0 -643 352 63 6 1163 1224 0 0 1031 -644 365 274 14 117 244 10 0 928 -645 30 301 10 270 316 10 0 19 -646 351 5 -20 493 529 10 57 0 -647 197 267 10 99 148 10 0 161 -648 498 171 -30 1231 1311 10 351 0 -649 468 352 -13 755 812 10 227 0 -650 418 251 -20 1183 1241 10 874 0 -651 489 437 29 699 744 10 0 250 -652 251 63 -20 974 1030 10 699 0 -653 132 55 -20 248 317 10 314 0 -654 281 96 1 1107 1174 0 0 1007 -655 333 293 -14 597 667 10 24 0 -656 255 487 19 401 425 0 0 1029 -657 207 400 -38 186 226 10 581 0 -658 469 489 -10 542 599 10 671 0 -659 244 254 -20 88 143 10 101 0 -660 233 207 10 46 112 10 0 698 -661 441 60 21 1465 1482 0 0 1021 -662 411 379 25 1161 1255 10 0 83 -663 178 72 -19 737 806 10 540 0 -664 51 447 -30 286 333 10 987 0 -665 478 118 20 329 410 10 0 444 -666 141 426 23 513 580 0 0 1016 -667 295 89 -10 710 804 10 169 0 -668 112 433 29 229 304 10 0 586 -669 320 211 -20 985 1031 10 567 0 -670 400 103 10 234 307 0 0 1026 -671 408 453 10 268 329 10 0 658 -672 435 180 37 229 250 10 0 247 -673 432 66 -30 1076 1096 10 824 0 -674 374 116 -20 581 624 10 682 0 -675 478 102 -10 298 380 10 813 0 -676 335 57 30 210 253 10 0 732 -677 385 239 21 769 833 10 0 956 -678 386 245 16 465 523 0 0 1045 -679 208 396 20 171 211 0 0 1048 -680 380 489 -36 386 402 10 49 0 -681 380 498 10 280 357 10 0 404 -682 440 7 20 308 371 10 0 674 -683 434 245 10 341 372 10 0 494 -684 90 232 -10 198 256 10 900 0 -685 389 334 20 162 221 10 0 545 -686 241 205 -10 92 173 10 760 0 -687 18 24 -10 598 688 10 916 0 -688 57 183 15 1095 1135 10 0 566 -689 59 457 30 343 356 0 0 1006 -690 442 243 -10 284 324 10 713 0 -691 402 281 20 225 305 10 0 693 -692 445 237 -20 199 232 10 401 0 -693 441 273 -20 281 313 10 691 0 -694 31 175 -30 243 281 10 786 0 -695 234 202 10 66 123 10 0 302 -696 52 303 -10 429 483 10 421 0 -697 167 445 -29 1399 1455 10 505 0 -698 179 286 -10 316 396 10 660 0 -699 269 48 20 283 309 10 0 652 -700 165 59 27 919 997 10 0 413 -701 461 8 20 368 401 10 0 829 -702 421 415 30 237 315 10 0 848 -703 59 459 20 298 355 10 0 185 -704 24 492 10 447 507 10 0 747 -705 55 449 20 278 329 10 0 924 -706 224 192 10 63 130 10 0 186 -707 444 269 -20 197 300 10 375 0 -708 491 20 20 398 419 10 0 985 -709 313 126 10 219 298 10 0 51 -710 283 438 3 208 284 10 0 439 -711 352 241 -30 776 839 10 216 0 -712 398 476 25 390 476 10 0 498 -713 442 247 10 223 289 10 0 690 -714 217 207 -23 1342 1453 10 173 0 -715 233 87 18 246 289 10 0 190 -716 479 127 20 259 367 10 0 345 -717 6 53 -2 575 629 10 174 0 -718 478 300 -28 897 912 10 482 0 -719 378 493 -10 274 331 10 297 0 -720 303 78 12 179 260 10 0 1000 -721 344 62 -30 303 419 10 636 0 -722 371 315 -20 1164 1198 10 63 0 -723 200 78 31 972 1044 0 0 1037 -724 413 391 8 226 239 10 0 821 -725 415 216 10 168 235 10 0 522 -726 397 57 -10 1472 1510 10 239 0 -727 293 228 19 48 144 10 0 403 -728 0 297 -30 267 349 10 243 0 -729 435 20 20 385 407 10 0 322 -730 195 111 -26 997 1030 10 30 0 -731 417 218 10 284 303 10 0 891 -732 340 54 -30 227 279 10 676 0 -733 132 57 20 226 309 10 0 212 -734 210 379 -15 714 733 10 626 0 -735 228 260 -20 1580 1662 10 272 0 -736 399 104 10 279 331 10 0 192 -737 95 277 -10 268 311 10 134 0 -738 360 284 19 657 707 10 0 877 -739 53 466 -23 312 388 10 835 0 -740 112 465 -30 303 325 10 539 0 -741 313 391 -34 154 239 10 271 0 -742 93 235 -20 221 302 10 116 0 -743 125 32 30 251 345 10 0 410 -744 215 282 -8 1405 1506 10 407 0 -745 224 320 36 1266 1331 10 0 296 -746 134 428 -30 305 342 10 839 0 -747 26 490 -10 481 499 10 704 0 -748 44 115 24 246 300 10 0 881 -749 438 127 2 932 980 10 0 820 -750 239 15 -10 567 670 10 118 0 -751 342 54 20 240 289 10 0 274 -752 109 463 -10 308 389 10 917 0 -753 199 187 -20 92 192 10 248 0 -754 201 188 10 136 172 10 0 156 -755 399 301 -10 158 260 10 894 0 -756 484 171 10 281 335 10 0 226 -757 272 234 -20 1587 1624 10 396 0 -758 380 350 -40 847 916 10 262 0 -759 140 108 -28 1049 1123 10 425 0 -760 228 199 10 103 196 10 0 686 -761 245 461 8 623 705 0 0 1020 -762 305 107 -20 214 266 10 933 0 -763 231 195 20 82 166 10 0 501 -764 450 265 10 200 267 10 0 338 -765 273 149 -30 1485 1551 10 93 0 -766 12 358 -10 1208 1271 10 535 0 -767 315 121 10 195 242 10 0 21 -768 420 213 10 173 279 10 0 493 -769 331 134 -30 1130 1148 10 360 0 -770 84 377 -20 915 968 10 359 0 -771 320 280 10 89 110 10 0 74 -772 89 185 -11 552 678 10 825 0 -773 472 481 20 320 371 10 0 949 -774 422 420 20 254 302 10 0 468 -775 475 267 -25 742 848 10 600 0 -776 470 125 20 253 306 10 0 576 -777 435 268 -10 309 345 10 516 0 -778 409 155 19 185 207 10 0 249 -779 243 248 30 7 72 10 0 427 -780 488 96 -19 1063 1099 10 561 0 -781 341 72 9 804 836 10 0 926 -782 58 449 30 356 399 10 0 946 -783 16 460 -17 393 459 10 147 0 -784 480 136 22 256 290 10 0 150 -785 162 388 11 1092 1191 0 0 1013 -786 47 208 30 213 270 10 0 694 -787 324 127 30 143 225 10 0 841 -788 87 96 30 284 310 10 0 614 -789 140 137 32 548 621 10 0 450 -790 314 205 -12 1504 1580 10 391 0 -791 96 346 26 181 271 10 0 642 -792 321 280 30 77 120 10 0 951 -793 245 251 10 5 81 10 0 52 -794 436 295 11 519 568 10 0 934 -795 274 261 -12 1696 1747 10 384 0 -796 271 128 12 326 395 10 0 836 -797 275 45 20 206 306 10 0 429 -798 422 409 10 234 258 10 0 892 -799 146 188 -1 1222 1278 10 538 0 -800 93 96 20 232 248 10 0 137 -801 409 255 -20 1525 1549 10 89 0 -802 449 428 25 1227 1297 10 0 831 -803 90 285 -20 221 362 10 77 0 -804 415 95 -16 1158 1225 10 978 0 -805 88 287 -20 261 295 10 613 0 -806 379 196 20 177 241 10 0 471 -807 368 452 16 672 697 10 0 524 -808 202 186 20 155 178 10 0 270 -809 435 11 -20 302 374 10 856 0 -810 269 46 20 237 330 10 0 997 -811 7 292 10 246 275 10 0 97 -812 44 496 32 369 464 10 0 348 -813 478 99 10 286 367 10 0 675 -814 391 99 20 206 281 10 0 903 -815 132 477 25 292 392 10 0 182 -816 24 65 10 350 411 10 0 266 -817 130 247 17 120 163 10 0 286 -818 133 273 20 119 135 10 0 308 -819 347 62 -10 321 375 10 287 0 -820 404 140 -2 1249 1298 10 749 0 -821 416 420 -8 274 335 10 724 0 -822 67 335 -5 223 291 10 922 0 -823 92 270 -10 236 308 10 930 0 -824 411 95 30 223 295 10 0 673 -825 132 479 11 257 277 10 0 772 -826 366 334 -20 408 443 10 37 0 -827 125 39 20 245 267 10 0 125 -828 419 422 20 259 324 10 0 55 -829 460 2 -20 328 407 10 701 0 -830 67 334 -20 226 265 10 334 0 -831 448 414 -25 1208 1268 10 802 0 -832 46 163 -23 909 973 10 50 0 -833 77 465 11 275 364 10 0 46 -834 284 319 -26 806 858 10 251 0 -835 102 422 23 230 253 10 0 739 -836 240 34 -12 1557 1592 10 796 0 -837 141 428 20 208 246 10 0 466 -838 204 269 -10 49 110 10 126 0 -839 144 439 30 270 303 10 0 746 -840 470 417 11 739 764 0 0 1004 -841 404 103 -30 239 274 10 787 0 -842 5 281 -20 1365 1409 10 381 0 -843 487 320 -25 818 927 10 301 0 -844 398 23 10 270 362 10 0 571 -845 90 296 20 166 231 10 0 907 -846 386 13 -10 315 388 10 175 0 -847 115 465 10 260 294 10 0 246 -848 473 475 -30 390 475 10 702 0 -849 275 42 30 225 280 10 0 564 -850 286 356 30 111 210 10 0 534 -851 15 69 10 296 358 10 0 418 -852 267 44 -23 265 276 10 578 0 -853 243 399 -30 218 282 10 855 0 -854 390 249 -20 549 645 10 341 0 -855 210 391 30 146 246 10 0 853 -856 433 15 20 297 394 10 0 809 -857 24 259 -12 368 403 10 902 0 -858 12 463 -20 341 410 10 554 0 -859 237 213 -10 130 194 10 871 0 -860 182 480 31 357 403 10 0 324 -861 409 88 20 271 299 10 0 196 -862 244 368 25 381 478 10 0 475 -863 381 328 12 699 766 10 0 284 -864 213 185 -10 74 194 10 293 0 -865 482 141 -30 987 1065 10 361 0 -866 319 124 20 155 230 10 0 264 -867 141 431 30 211 276 10 0 419 -868 198 264 20 118 193 10 0 178 -869 69 334 30 199 257 10 0 513 -870 299 98 30 159 214 10 0 553 -871 240 250 10 21 83 10 0 859 -872 199 203 -22 1440 1504 10 509 0 -873 459 17 -10 390 463 10 321 0 -874 423 217 20 227 287 10 0 650 -875 477 179 20 237 320 10 0 591 -876 213 397 10 215 250 10 0 458 -877 405 187 -19 1238 1293 10 738 0 -878 269 402 -30 188 248 10 436 0 -879 53 204 -16 1023 1117 10 47 0 -880 13 394 15 338 438 10 0 511 -881 15 68 -24 297 347 10 748 0 -882 56 268 28 1049 1108 10 0 369 -883 360 184 10 207 265 10 0 48 -884 307 102 40 173 277 10 0 325 -885 130 57 -20 227 290 10 346 0 -886 250 328 24 230 298 10 0 214 -887 91 231 30 173 257 10 0 919 -888 479 176 20 240 285 10 0 170 -889 420 224 -20 414 473 10 544 0 -890 461 182 13 595 693 10 0 191 -891 418 218 -10 250 314 10 731 0 -892 419 418 -10 238 357 10 798 0 -893 336 493 -20 1488 1528 10 440 0 -894 389 300 10 147 230 10 0 755 -895 92 76 4 1133 1175 0 0 1042 -896 476 102 20 346 357 10 0 963 -897 418 399 20 436 469 10 0 430 -898 109 56 -20 239 283 10 947 0 -899 13 465 31 736 841 0 0 1002 -900 92 232 10 159 246 10 0 684 -901 394 47 5 285 371 10 0 223 -902 16 287 12 236 341 10 0 857 -903 399 102 -20 243 321 10 814 0 -904 143 158 12 141 201 10 0 254 -905 18 484 10 329 391 10 0 119 -906 250 411 30 164 242 10 0 10 -907 19 273 -20 974 1090 10 845 0 -908 365 28 -20 250 338 10 941 0 -909 387 297 10 144 177 10 0 181 -910 433 447 -22 739 880 10 277 0 -911 214 274 24 1356 1413 10 0 957 -912 489 338 -13 1381 1443 10 598 0 -913 130 494 6 757 791 10 0 619 -914 23 67 30 352 457 10 0 488 -915 374 489 20 269 334 10 0 289 -916 126 30 10 265 309 10 0 687 -917 112 467 10 263 319 10 0 752 -918 489 274 -10 529 569 10 492 0 -919 61 214 -30 321 393 10 887 0 -920 166 440 12 207 262 10 0 442 -921 56 75 -15 1414 1491 10 964 0 -922 210 276 5 47 75 10 0 822 -923 80 286 10 197 281 10 0 618 -924 17 459 -20 404 471 10 705 0 -925 66 448 10 270 287 10 0 157 -926 351 128 -9 1245 1291 10 781 0 -927 352 176 20 126 182 10 0 129 -928 490 286 -14 500 575 10 644 0 -929 247 219 17 31 54 10 0 344 -930 86 268 10 213 251 10 0 823 -931 398 329 -24 167 186 10 556 0 -932 272 402 10 153 207 10 0 463 -933 317 123 20 195 216 10 0 762 -934 408 318 -11 623 694 10 794 0 -935 66 31 -15 1021 1106 10 574 0 -936 425 448 -10 759 859 10 443 0 -937 35 304 30 226 239 10 0 130 -938 471 94 -10 969 1059 10 35 0 -939 470 473 10 406 486 10 0 58 -940 224 56 13 1150 1253 10 0 385 -941 343 47 20 240 344 10 0 908 -942 52 18 28 833 910 10 0 394 -943 16 68 -10 296 391 10 640 0 -944 195 185 20 99 156 10 0 479 -945 92 236 20 222 323 10 0 153 -946 76 462 -30 958 984 10 782 0 -947 124 56 20 231 279 10 0 898 -948 481 454 14 308 365 10 0 432 -949 477 483 -20 343 418 10 773 0 -950 481 124 -20 290 306 10 273 0 -951 389 156 -30 707 755 10 792 0 -952 384 16 20 332 399 10 0 982 -953 492 34 -20 780 872 10 195 0 -954 371 200 10 210 268 10 0 400 -955 153 235 10 98 135 10 0 988 -956 428 202 -21 893 945 10 677 0 -957 257 391 -24 1603 1670 10 911 0 -958 421 218 -10 244 295 10 300 0 -959 206 186 10 163 242 10 0 158 -960 393 301 -20 177 210 10 481 0 -961 204 187 -20 162 219 10 500 0 -962 468 475 10 313 401 10 0 392 -963 477 122 -20 286 405 10 896 0 -964 100 66 15 1380 1449 10 0 921 -965 489 27 -10 410 462 10 504 0 -966 12 451 20 311 329 10 0 358 -967 197 270 -20 56 171 10 349 0 -968 311 422 -13 977 1029 10 237 0 -969 489 17 10 359 431 10 0 331 -970 13 214 -9 1317 1421 10 313 0 -971 440 247 20 220 317 10 0 447 -972 28 467 -30 1306 1409 10 609 0 -973 388 325 -20 252 304 10 416 0 -974 270 401 20 152 257 10 0 148 -975 5 445 30 313 371 10 0 625 -976 198 271 20 56 170 10 0 484 -977 480 131 5 676 729 10 0 399 -978 437 98 16 1110 1147 10 0 804 -979 131 246 -5 821 874 10 562 0 -980 49 437 7 436 449 10 0 120 -981 270 49 -10 292 323 10 235 0 -982 337 41 -20 971 1063 10 952 0 -983 318 280 20 82 142 10 0 285 -984 154 392 -18 171 246 10 144 0 -985 493 111 -20 527 585 10 708 0 -986 399 450 -10 306 442 10 582 0 -987 67 452 30 272 328 10 0 664 -988 34 239 -10 216 295 10 955 0 -989 343 276 15 96 166 10 0 299 -990 393 12 10 286 363 10 0 172 -991 236 247 20 41 93 10 0 374 -992 340 291 -30 477 493 10 389 0 -993 3 292 20 256 286 10 0 100 -994 209 68 -18 1562 1605 10 333 0 -995 18 225 -25 680 733 10 584 0 -996 147 435 20 211 313 10 0 328 -997 335 99 -20 1202 1264 10 810 0 -998 485 24 -5 326 417 10 16 0 -999 470 475 30 314 417 10 0 213 -1000 341 58 -12 223 254 10 720 0 -1001 16 497 -20 382 500 10 397 0 -1002 13 465 -31 736 841 10 899 0 -1003 38 15 -3 1048 1165 10 99 0 -1004 470 417 -11 739 764 10 840 0 -1005 17 458 -10 409 488 10 461 0 -1006 59 457 -30 343 356 10 689 0 -1007 281 96 -1 1107 1174 10 654 0 -1008 96 97 -20 217 269 10 342 0 -1009 459 53 -20 1099 1175 10 121 0 -1010 21 64 -20 331 403 10 343 0 -1011 88 95 -20 275 296 10 525 0 -1012 0 188 -26 904 990 10 127 0 -1013 162 388 -11 1092 1191 10 785 0 -1014 474 96 -30 271 324 10 117 0 -1015 381 494 -10 310 386 10 164 0 -1016 141 426 -23 513 580 10 666 0 -1017 90 477 -18 277 374 10 276 0 -1018 238 123 -24 758 835 10 633 0 -1019 277 403 -10 155 256 10 82 0 -1020 245 461 -8 623 705 10 761 0 -1021 441 60 -21 1465 1482 10 661 0 -1022 411 421 -20 289 370 10 211 0 -1023 351 481 -10 303 370 10 353 0 -1024 495 227 -20 339 378 10 486 0 -1025 370 262 -15 1090 1138 10 222 0 -1026 400 103 -10 234 307 10 670 0 -1027 384 149 -18 1183 1242 10 529 0 -1028 148 208 -22 487 596 10 199 0 -1029 255 487 -19 401 425 10 656 0 -1030 210 185 -20 76 159 10 124 0 -1031 352 63 -6 1163 1224 10 643 0 -1032 307 52 -23 891 980 10 42 0 -1033 270 400 -10 151 199 10 354 0 -1034 390 120 -24 1014 1025 10 33 0 -1035 257 57 -18 1213 1269 10 435 0 -1036 142 360 -20 1519 1574 10 387 0 -1037 200 78 -31 972 1044 10 723 0 -1038 421 386 -29 818 861 10 70 0 -1039 417 217 -30 186 222 10 298 0 -1040 209 212 -18 1512 1574 10 420 0 -1041 92 233 -10 179 298 10 18 0 -1042 92 76 -4 1133 1175 10 895 0 -1043 328 491 -21 659 728 10 378 0 -1044 244 277 -18 1272 1360 10 590 0 -1045 386 245 -16 465 523 10 678 0 -1046 97 288 -22 1262 1337 10 86 0 -1047 408 279 -20 185 284 10 329 0 -1048 208 396 -20 171 211 10 679 0 -1049 218 403 -15 1300 1369 10 257 0 -1050 231 204 -20 142 188 10 607 0 -1051 246 314 -36 1451 1470 10 368 0 -1052 307 249 -10 1379 1405 10 269 0 diff --git a/jsprit-instances/instances/lilim/1000/LRC1106.txt b/jsprit-instances/instances/lilim/1000/LRC1106.txt deleted file mode 100644 index 736ba3ef1..000000000 --- a/jsprit-instances/instances/lilim/1000/LRC1106.txt +++ /dev/null @@ -1,1048 +0,0 @@ -250 200 1 -0 250 250 0 0 1821 0 0 0 -1 440 436 18 877 937 0 0 1046 -2 214 394 10 216 276 10 0 440 -3 476 483 10 340 400 10 0 200 -4 352 487 27 887 947 0 0 1019 -5 230 197 40 107 167 10 0 633 -6 175 239 23 75 135 10 0 64 -7 133 202 33 446 506 10 0 772 -8 328 458 -3 753 813 10 710 0 -9 25 499 -10 430 490 10 747 0 -10 226 423 -20 182 242 10 679 0 -11 313 282 -30 148 208 10 389 0 -12 60 454 10 332 392 10 0 128 -13 239 486 -12 1467 1527 10 324 0 -14 102 264 10 148 208 10 0 823 -15 408 452 -20 257 317 10 253 0 -16 451 62 5 275 335 10 0 576 -17 203 390 -21 147 207 10 451 0 -18 92 233 -30 209 269 10 887 0 -19 7 300 -16 330 390 10 988 0 -20 409 90 20 243 303 10 0 502 -21 307 108 10 222 282 10 0 667 -22 347 54 -20 280 340 10 866 0 -23 406 87 -10 298 358 10 171 0 -24 371 332 14 515 575 10 0 67 -25 116 466 -11 254 314 10 825 0 -26 441 265 40 191 251 10 0 707 -27 130 140 17 179 239 10 0 488 -28 80 117 24 809 869 10 0 145 -29 421 387 -20 786 846 10 341 0 -30 83 300 -20 485 545 10 845 0 -31 136 52 -10 278 338 10 653 0 -32 18 462 -20 383 443 10 376 0 -33 390 120 -10 989 1049 10 239 0 -34 188 119 -25 960 1020 10 388 0 -35 467 114 -19 361 421 10 778 0 -36 440 292 -25 925 985 10 495 0 -37 268 400 -20 228 288 10 878 0 -38 391 202 14 148 208 10 0 604 -39 377 432 -30 816 876 10 850 0 -40 80 290 10 182 242 10 0 728 -41 439 15 20 328 388 10 0 982 -42 307 52 -20 905 965 10 528 0 -43 111 192 -23 1184 1244 10 50 0 -44 131 56 10 241 301 0 0 1045 -45 88 286 -30 237 297 10 414 0 -46 69 414 -10 1248 1308 10 461 0 -47 41 232 16 209 269 10 0 857 -48 323 77 -18 1390 1450 10 403 0 -49 340 416 -10 306 366 10 82 0 -50 86 199 23 263 323 10 0 43 -51 314 124 20 216 276 10 0 236 -52 375 191 30 152 212 10 0 883 -53 226 175 -21 1673 1733 10 270 0 -54 242 106 28 1253 1313 10 0 115 -55 417 417 -20 317 377 10 512 0 -56 419 459 20 301 361 10 0 807 -57 389 11 20 308 368 10 0 198 -58 450 416 -15 562 622 10 194 0 -59 246 255 -20 98 158 10 659 0 -60 71 333 10 197 257 10 0 601 -61 105 474 27 456 516 0 0 1011 -62 20 489 10 368 428 10 0 295 -63 388 331 20 160 220 10 0 201 -64 92 259 -23 384 444 10 6 0 -65 200 261 10 151 211 10 0 347 -66 400 288 30 154 214 0 0 1004 -67 299 285 -14 1239 1299 10 24 0 -68 378 199 -10 192 252 10 954 0 -69 325 147 -20 1172 1232 10 861 0 -70 421 386 -30 809 869 10 755 0 -71 404 447 20 250 310 10 0 409 -72 412 478 -7 945 1005 10 290 0 -73 26 67 -10 1302 1362 10 881 0 -74 358 183 -30 219 279 10 360 0 -75 30 302 10 252 312 10 0 569 -76 176 470 -9 532 592 10 984 0 -77 96 270 -26 155 215 10 244 0 -78 243 408 -20 1419 1479 10 362 0 -79 60 29 -27 1348 1408 10 898 0 -80 34 169 11 469 529 10 0 614 -81 407 280 10 194 254 10 0 548 -82 277 403 10 160 220 10 0 49 -83 498 456 -23 1391 1451 10 831 0 -84 384 491 20 333 393 10 0 480 -85 355 174 33 700 760 10 0 400 -86 97 288 -20 1269 1329 10 469 0 -87 316 284 -10 110 170 10 771 0 -88 334 403 26 174 234 10 0 459 -89 415 223 -20 290 350 10 806 0 -90 230 320 8 1177 1237 10 0 745 -91 432 199 -10 624 684 10 522 0 -92 92 18 -21 1109 1169 10 864 0 -93 273 300 30 55 115 10 0 237 -94 269 112 -30 1248 1308 10 636 0 -95 429 389 -40 409 469 10 262 0 -96 371 71 -20 272 332 10 751 0 -97 5 297 10 316 376 10 0 882 -98 414 378 -10 480 540 10 473 0 -99 38 15 3 1076 1136 10 0 410 -100 2 295 -10 291 351 10 811 0 -101 237 254 20 68 128 10 0 610 -102 54 445 10 293 353 10 0 119 -103 382 110 24 1097 1157 10 0 926 -104 438 488 18 312 372 10 0 524 -105 395 331 20 202 262 10 0 537 -106 230 487 -5 1115 1175 10 442 0 -107 249 407 10 159 219 10 0 217 -108 488 26 -10 418 478 10 167 0 -109 151 81 -10 1543 1603 10 530 0 -110 483 14 10 348 408 10 0 708 -111 0 422 -10 806 866 10 489 0 -112 429 67 -20 717 777 10 998 0 -113 195 464 -1 1526 1586 10 182 0 -114 356 256 19 106 166 10 0 958 -115 264 180 -28 1666 1726 10 54 0 -116 94 235 20 156 216 10 0 177 -117 474 96 30 271 331 10 0 594 -118 268 52 -20 291 351 10 810 0 -119 44 440 -10 774 834 10 102 0 -120 7 382 -18 755 815 10 634 0 -121 459 53 -20 1107 1167 10 579 0 -122 491 25 -20 394 454 10 183 0 -123 439 243 20 299 359 10 0 683 -124 210 185 20 76 136 10 0 714 -125 150 68 23 408 468 10 0 663 -126 201 270 10 52 112 10 0 484 -127 0 188 26 917 977 10 0 970 -128 103 464 -10 1258 1318 10 12 0 -129 325 56 13 781 841 10 0 652 -130 44 344 -10 1064 1124 10 307 0 -131 418 75 11 433 493 10 0 196 -132 472 57 -20 1280 1340 10 267 0 -133 460 328 13 224 284 10 0 491 -134 89 270 -20 189 249 10 613 0 -135 374 190 20 137 197 10 0 790 -136 463 253 -10 1032 1092 10 889 0 -137 97 93 20 225 285 10 0 525 -138 163 472 -25 638 698 10 815 0 -139 29 336 22 317 377 10 0 696 -140 84 453 -18 1208 1268 10 946 0 -141 294 421 26 1560 1620 0 0 1020 -142 343 62 -10 342 402 10 721 0 -143 371 193 20 133 193 10 0 602 -144 142 372 18 162 222 10 0 835 -145 66 88 -24 815 875 10 28 0 -146 395 332 10 191 251 10 0 284 -147 93 413 17 226 286 10 0 292 -148 267 394 10 244 304 0 0 1007 -149 249 258 30 112 172 10 0 583 -150 472 129 10 252 312 10 0 820 -151 87 3 -20 1418 1478 10 343 0 -152 62 326 -20 271 331 10 587 0 -153 212 186 -10 1677 1737 10 306 0 -154 241 402 -29 1010 1070 10 968 0 -155 439 266 -20 189 249 10 375 0 -156 79 80 -20 1367 1427 10 947 0 -157 62 453 -10 280 340 10 925 0 -158 188 151 -20 1282 1342 10 346 0 -159 386 154 31 1086 1146 10 0 529 -160 38 301 20 281 341 10 0 163 -161 192 265 10 109 169 10 0 635 -162 371 192 30 134 194 0 0 1033 -163 64 294 -20 1086 1146 10 160 0 -164 381 494 -30 318 378 10 639 0 -165 437 12 20 315 375 10 0 682 -166 186 135 -20 703 763 10 206 0 -167 459 10 10 320 380 10 0 108 -168 175 422 -6 1431 1491 10 913 0 -169 274 48 10 203 263 10 0 564 -170 488 173 20 264 324 10 0 599 -171 398 97 10 212 272 10 0 23 -172 385 17 -9 794 854 10 908 0 -173 180 283 23 729 789 10 0 911 -174 71 12 2 297 357 10 0 266 -175 343 49 10 250 310 10 0 620 -176 248 251 20 2 62 10 0 255 -177 7 194 -20 936 996 10 116 0 -178 322 290 -22 1464 1524 10 992 0 -179 410 399 25 219 279 10 0 651 -180 398 103 30 263 323 10 0 521 -181 385 285 13 853 913 10 0 722 -182 179 497 1 1396 1456 10 0 113 -183 464 13 20 370 430 10 0 122 -184 492 335 10 813 873 10 0 843 -185 27 464 -30 1276 1336 10 975 0 -186 231 29 14 1211 1271 0 0 1015 -187 157 38 -20 1033 1093 10 827 0 -188 439 268 10 283 343 10 0 777 -189 149 214 7 467 527 0 0 1022 -190 187 73 -20 277 337 10 501 0 -191 429 169 -2 888 948 10 249 0 -192 350 199 -21 1186 1246 10 247 0 -193 60 231 -25 1011 1071 10 497 0 -194 448 404 15 584 644 10 0 58 -195 481 20 -10 332 392 10 321 0 -196 436 25 -11 1267 1327 10 131 0 -197 111 459 -11 344 404 10 833 0 -198 389 17 -20 351 411 10 57 0 -199 148 208 -20 511 571 10 944 0 -200 475 477 -10 390 450 10 3 0 -201 390 325 -20 236 296 10 63 0 -202 346 354 8 802 862 10 0 296 -203 91 266 -20 218 278 10 304 0 -204 17 65 20 312 372 10 0 422 -205 391 112 -10 985 1045 10 455 0 -206 224 203 20 53 113 10 0 166 -207 426 231 24 1013 1073 10 0 650 -208 260 472 -30 1021 1081 10 867 0 -209 265 0 10 881 941 10 0 385 -210 391 293 20 211 271 10 0 649 -211 411 421 20 300 360 10 0 431 -212 132 30 20 311 371 10 0 415 -213 475 480 -31 364 424 10 468 0 -214 286 244 31 1269 1329 0 0 1038 -215 436 237 20 186 246 10 0 430 -216 402 284 -20 155 215 10 481 0 -217 287 397 -10 549 609 10 107 0 -218 272 420 -10 1371 1431 10 353 0 -219 477 120 10 327 387 10 0 749 -220 145 434 20 218 278 10 0 419 -221 33 286 -12 1531 1591 10 902 0 -222 370 262 -20 1084 1144 10 693 0 -223 393 20 -10 376 436 10 282 0 -224 330 308 24 1155 1215 0 0 1042 -225 246 398 40 148 208 10 0 240 -226 482 184 -10 1092 1152 10 245 0 -227 451 305 -25 208 268 10 301 0 -228 226 316 21 70 130 10 0 507 -229 110 459 30 333 393 10 0 761 -230 244 250 10 6 66 10 0 374 -231 458 16 20 313 373 10 0 322 -232 390 34 -20 1045 1105 10 274 0 -233 423 214 -33 202 262 10 363 0 -234 219 215 32 46 106 10 0 753 -235 326 118 10 152 212 10 0 377 -236 365 74 -20 833 893 10 51 0 -237 331 356 -30 697 757 10 93 0 -238 210 398 10 189 249 10 0 448 -239 403 93 10 326 386 10 0 33 -240 248 404 -40 154 214 10 225 0 -241 65 62 15 961 1021 10 0 935 -242 460 13 -20 316 376 10 456 0 -243 0 293 -10 264 324 10 575 0 -244 211 248 26 39 99 10 0 77 -245 484 174 10 250 310 10 0 226 -246 175 352 -3 1625 1685 10 608 0 -247 455 168 21 852 912 10 0 192 -248 224 191 20 66 126 10 0 961 -249 439 156 2 511 571 10 0 191 -250 434 359 -11 1377 1437 10 840 0 -251 118 314 -20 323 383 10 818 0 -252 234 246 10 50 110 10 0 930 -253 406 450 20 253 313 10 0 15 -254 75 118 21 394 454 10 0 895 -255 115 395 -20 800 860 10 176 0 -256 329 456 -34 234 294 10 271 0 -257 218 403 -20 1304 1364 10 466 0 -258 149 341 -20 389 449 10 381 0 -259 253 74 -18 1335 1395 10 435 0 -260 436 241 -10 312 372 10 303 0 -261 238 203 10 79 139 10 0 453 -262 405 455 40 326 386 10 0 95 -263 485 27 -3 431 491 10 454 0 -264 323 118 20 150 210 0 0 1024 -265 330 371 -5 544 604 10 826 0 -266 25 65 -2 361 421 10 174 0 -267 406 96 20 219 279 10 0 132 -268 49 451 -20 284 344 10 705 0 -269 307 249 10 1362 1422 0 0 1017 -270 178 135 21 1499 1559 10 0 53 -271 299 353 34 114 174 10 0 256 -272 236 213 20 39 99 10 0 607 -273 355 177 20 127 187 0 0 1028 -274 394 23 20 389 449 10 0 232 -275 306 235 25 57 117 10 0 390 -276 90 477 -10 277 337 10 847 0 -277 379 486 -10 657 717 10 582 0 -278 435 16 -20 352 412 10 364 0 -279 8 497 -20 393 453 10 397 0 -280 150 484 16 610 670 10 0 622 -281 213 399 18 219 279 10 0 734 -282 391 18 10 363 423 10 0 223 -283 111 392 -10 1154 1214 10 586 0 -284 330 281 -10 1315 1375 10 146 0 -285 344 203 14 152 212 10 0 854 -286 91 235 -10 254 314 10 408 0 -287 346 60 -20 306 366 10 474 0 -288 483 27 20 443 503 0 0 1036 -289 382 498 -10 294 354 10 681 0 -290 457 492 7 493 553 10 0 72 -291 291 213 -9 1243 1303 10 471 0 -292 154 374 -17 922 982 10 147 0 -293 225 196 -10 59 119 10 660 0 -294 94 40 24 1053 1113 10 0 339 -295 0 356 -10 1071 1131 10 62 0 -296 297 283 -8 1334 1394 10 202 0 -297 371 423 10 211 271 10 0 897 -298 417 217 30 174 234 10 0 592 -299 500 228 8 767 827 10 0 447 -300 412 214 10 165 225 10 0 629 -301 442 289 25 195 255 10 0 227 -302 157 269 -10 1561 1621 10 424 0 -303 440 241 10 286 346 10 0 260 -304 100 266 20 150 210 10 0 203 -305 111 178 18 156 216 10 0 748 -306 91 101 10 283 343 10 0 153 -307 25 307 10 234 294 10 0 130 -308 135 400 -8 284 344 10 383 0 -309 58 458 10 308 368 0 0 1030 -310 133 26 10 297 357 0 0 1037 -311 211 386 20 141 201 10 0 834 -312 94 97 -20 218 278 10 342 0 -313 30 155 -8 1265 1325 10 879 0 -314 208 184 20 78 138 10 0 872 -315 394 333 20 179 239 0 0 1026 -316 355 180 30 126 186 10 0 769 -317 241 180 -19 1680 1740 10 540 0 -318 21 485 -10 328 388 10 905 0 -319 80 251 14 289 349 10 0 566 -320 476 61 -20 434 494 10 446 0 -321 406 94 10 220 280 10 0 195 -322 364 71 -20 1333 1393 10 231 0 -323 418 221 10 276 336 0 0 1006 -324 274 441 12 680 740 10 0 13 -325 304 97 -10 167 227 10 533 0 -326 297 102 10 155 215 10 0 762 -327 250 405 20 155 215 10 0 906 -328 111 463 -10 307 367 10 740 0 -329 408 279 -15 205 265 10 989 0 -330 263 418 -10 263 323 10 853 0 -331 480 119 -22 613 673 10 784 0 -332 420 383 -10 967 1027 10 932 0 -333 142 14 -30 820 880 10 563 0 -334 73 328 20 193 253 10 0 830 -335 50 438 20 322 382 10 0 366 -336 441 7 20 377 437 10 0 371 -337 462 14 20 382 442 10 0 546 -338 360 294 -10 1403 1463 10 692 0 -339 58 39 -24 1148 1208 10 294 0 -340 58 391 16 867 927 0 0 1018 -341 410 285 20 178 238 10 0 29 -342 96 97 20 217 277 10 0 312 -343 21 64 20 337 397 10 0 151 -344 238 210 -30 119 179 10 686 0 -345 479 121 -10 293 353 10 950 0 -346 200 178 20 87 147 10 0 158 -347 216 341 -10 639 699 10 65 0 -348 48 437 4 789 849 10 0 619 -349 200 270 20 53 113 10 0 976 -350 357 181 -9 134 194 10 477 0 -351 476 174 -20 309 369 10 875 0 -352 400 286 10 154 214 10 0 918 -353 351 481 10 307 367 10 0 218 -354 270 400 10 151 211 10 0 974 -355 95 234 10 155 215 10 0 684 -356 128 113 -30 348 408 10 788 0 -357 133 455 25 793 853 0 0 1043 -358 16 463 -20 360 420 10 554 0 -359 59 388 -7 648 708 10 980 0 -360 376 190 30 140 200 10 0 74 -361 481 122 -20 280 340 10 716 0 -362 266 405 20 202 262 10 0 78 -363 374 232 33 125 185 10 0 233 -364 398 20 20 273 333 10 0 278 -365 481 26 30 321 381 10 0 504 -366 63 444 -20 365 425 10 335 0 -367 89 290 20 165 225 10 0 505 -368 246 314 -20 1430 1490 10 868 0 -369 40 304 -20 1130 1190 10 615 0 -370 262 369 15 119 179 10 0 534 -371 323 29 -20 1122 1182 10 336 0 -372 89 65 16 705 765 10 0 574 -373 144 35 -20 239 299 10 733 0 -374 200 265 -10 137 197 10 230 0 -375 436 264 20 186 246 10 0 155 -376 15 457 20 313 373 10 0 32 -377 397 20 -10 272 332 10 235 0 -378 328 491 21 663 723 10 0 463 -379 399 175 -10 732 792 10 736 0 -380 432 2 -40 452 512 10 809 0 -381 63 336 20 251 311 10 0 258 -382 6 296 10 305 365 10 0 511 -383 146 376 8 219 279 10 0 308 -384 295 247 -22 1288 1348 10 780 0 -385 235 33 -10 1322 1382 10 209 0 -386 233 204 20 49 109 10 0 796 -387 142 360 20 1517 1577 0 0 1039 -388 177 156 25 152 212 10 0 34 -389 315 287 30 133 193 10 0 11 -390 452 172 -25 593 653 10 275 0 -391 263 153 12 397 457 0 0 1003 -392 493 493 -20 841 901 10 774 0 -393 320 283 30 96 156 10 0 738 -394 64 5 -28 1114 1174 10 942 0 -395 95 235 10 155 215 10 0 535 -396 203 211 -21 1291 1351 10 510 0 -397 16 497 20 411 471 10 0 279 -398 348 348 -24 920 980 10 886 0 -399 485 104 21 779 839 10 0 561 -400 330 147 -33 833 893 10 85 0 -401 443 237 20 193 253 10 0 713 -402 316 286 -20 122 182 10 983 0 -403 335 46 18 1327 1387 10 0 48 -404 381 495 20 307 367 10 0 680 -405 364 173 30 165 225 10 0 412 -406 267 162 -1 1434 1494 10 654 0 -407 214 245 8 36 96 10 0 979 -408 92 234 10 220 280 10 0 286 -409 347 459 -20 464 524 10 71 0 -410 30 7 -3 1174 1234 10 99 0 -411 120 37 28 760 820 10 0 964 -412 397 153 -30 867 927 10 405 0 -413 210 29 -10 1036 1096 10 760 0 -414 87 285 30 226 286 10 0 45 -415 132 32 -20 769 829 10 212 0 -416 390 294 20 222 282 10 0 577 -417 67 451 -30 1201 1261 10 689 0 -418 24 68 20 399 459 10 0 438 -419 146 439 -20 244 304 10 220 0 -420 209 212 18 1513 1573 0 0 1027 -421 6 292 10 247 307 10 0 993 -422 18 63 -20 324 384 10 204 0 -423 149 98 -29 1150 1210 10 759 0 -424 91 268 10 230 290 10 0 302 -425 103 177 28 611 671 10 0 536 -426 367 178 20 165 225 10 0 985 -427 225 269 -20 1256 1316 10 464 0 -428 443 246 20 215 275 10 0 718 -429 306 42 -20 462 522 10 797 0 -430 374 306 -20 979 1039 10 215 0 -431 413 421 -20 288 348 10 211 0 -432 470 405 17 911 971 0 0 1034 -433 33 278 -16 1472 1532 10 842 0 -434 149 458 13 1149 1209 10 0 697 -435 257 57 18 1211 1271 10 0 259 -436 272 403 30 175 235 10 0 662 -437 221 291 9 50 110 10 0 656 -438 1 101 -20 1242 1302 10 418 0 -439 332 459 -5 354 414 10 741 0 -440 220 392 -10 243 303 10 2 0 -441 253 50 27 211 271 10 0 849 -442 250 441 5 741 801 10 0 106 -443 471 484 -20 325 385 10 773 0 -444 480 152 26 1007 1067 0 0 1035 -445 404 83 -10 283 343 10 638 0 -446 476 94 20 274 334 10 0 320 -447 458 213 -8 1113 1173 10 299 0 -448 215 395 -10 227 287 10 238 0 -449 85 288 20 169 229 10 0 923 -450 179 75 -20 725 785 10 479 0 -451 228 287 21 43 103 10 0 17 -452 397 18 -10 277 337 10 844 0 -453 238 204 -10 90 150 10 261 0 -454 488 3 3 386 446 10 0 263 -455 407 88 10 309 369 10 0 205 -456 459 14 20 315 375 10 0 242 -457 120 17 30 266 326 10 0 621 -458 235 316 -7 641 701 10 475 0 -459 370 382 -26 869 929 10 88 0 -460 405 454 -10 1288 1348 10 798 0 -461 17 458 10 418 478 10 0 46 -462 43 135 -35 236 296 10 508 0 -463 318 497 -21 839 899 10 378 0 -464 199 268 20 56 116 10 0 427 -465 111 467 -10 272 332 10 628 0 -466 138 438 20 272 332 10 0 257 -467 172 314 -15 530 590 10 626 0 -468 494 468 31 337 397 10 0 213 -469 35 303 20 221 281 10 0 86 -470 341 59 -10 775 835 10 568 0 -471 423 221 9 243 303 10 0 291 -472 395 295 20 196 256 10 0 598 -473 413 417 10 341 401 10 0 98 -474 339 60 20 209 269 10 0 287 -475 277 428 7 475 535 10 0 458 -476 176 199 -20 89 149 10 991 0 -477 265 240 9 18 78 10 0 350 -478 365 190 -10 1462 1522 10 552 0 -479 133 53 20 264 324 10 0 450 -480 387 488 -20 347 407 10 84 0 -481 385 295 20 142 202 10 0 216 -482 491 369 28 715 775 0 0 1029 -483 445 273 -10 243 303 10 764 0 -484 195 273 -10 59 119 10 126 0 -485 313 493 -31 1178 1238 10 860 0 -486 495 227 -20 329 389 10 971 0 -487 241 403 -10 205 265 10 549 0 -488 30 72 -17 417 477 10 27 0 -489 21 487 10 335 395 10 0 111 -490 324 99 10 323 383 10 0 643 -491 453 318 -13 359 419 10 133 0 -492 443 272 -10 255 315 10 516 0 -493 447 184 -37 409 469 10 672 0 -494 366 288 -27 669 729 10 655 0 -495 440 284 25 837 897 10 0 36 -496 13 314 14 245 305 10 0 880 -497 72 227 25 549 609 10 0 193 -498 377 385 -20 851 911 10 544 0 -499 477 478 20 377 437 10 0 848 -500 204 185 -20 148 208 10 605 0 -501 226 191 20 78 138 10 0 190 -502 330 138 -20 1095 1155 10 20 0 -503 185 434 -30 559 619 10 752 0 -504 483 22 -30 325 385 10 365 0 -505 71 282 -20 627 687 10 367 0 -506 60 5 18 1029 1089 10 0 555 -507 189 402 -21 521 581 10 228 0 -508 134 211 35 122 182 10 0 462 -509 146 313 22 1180 1240 10 0 744 -510 21 146 21 472 532 10 0 396 -511 37 281 -10 478 538 10 382 0 -512 416 417 20 328 388 10 0 55 -513 44 311 27 392 452 0 0 1016 -514 361 181 20 182 242 10 0 951 -515 444 242 10 201 261 10 0 573 -516 444 271 10 231 291 10 0 492 -517 359 179 20 147 207 10 0 557 -518 388 334 20 161 221 10 0 724 -519 401 164 -20 606 666 10 814 0 -520 499 316 -29 607 667 10 928 0 -521 399 106 -30 287 347 10 180 0 -522 425 215 10 214 274 10 0 91 -523 407 98 10 218 278 10 0 824 -524 406 460 -18 704 764 10 104 0 -525 88 95 -20 255 315 10 137 0 -526 95 64 4 751 811 0 0 1023 -527 306 229 -13 1305 1365 10 890 0 -528 273 55 20 196 256 10 0 42 -529 384 149 -31 1182 1242 10 159 0 -530 122 35 10 250 310 10 0 109 -531 308 199 -10 1493 1553 10 963 0 -532 390 301 10 150 210 10 0 960 -533 300 108 10 150 210 10 0 325 -534 267 400 -15 217 277 10 370 0 -535 8 300 -10 341 401 10 395 0 -536 105 181 -28 1516 1576 10 425 0 -537 398 325 -20 218 278 10 105 0 -538 166 247 1 84 144 10 0 694 -539 140 431 30 211 271 10 0 996 -540 253 118 19 532 592 10 0 317 -541 359 246 18 1408 1468 0 0 1012 -542 321 277 10 75 135 10 0 792 -543 168 59 6 351 411 10 0 940 -544 406 285 20 164 224 10 0 498 -545 391 334 20 166 226 10 0 936 -546 437 19 -20 999 1059 10 337 0 -547 201 278 13 56 116 10 0 625 -548 435 267 -10 308 368 10 81 0 -549 245 408 10 189 249 10 0 487 -550 16 462 -20 371 431 10 858 0 -551 107 374 8 899 959 10 0 770 -552 477 97 10 273 333 10 0 478 -553 346 57 20 293 353 10 0 819 -554 14 459 20 321 381 10 0 358 -555 102 6 -18 1443 1503 10 506 0 -556 359 287 24 115 175 10 0 691 -557 297 131 -20 1150 1210 10 517 0 -558 282 1 18 1027 1087 10 0 836 -559 21 70 -10 756 816 10 816 0 -560 440 244 -10 251 311 10 690 0 -561 482 104 -21 792 852 10 399 0 -562 120 261 -30 778 838 10 805 0 -563 125 29 30 268 328 10 0 333 -564 292 32 -10 222 282 10 169 0 -565 262 92 25 615 675 0 0 1021 -566 68 160 -14 1121 1181 10 319 0 -567 405 276 -20 219 279 10 603 0 -568 277 50 10 201 261 10 0 470 -569 32 319 -10 386 446 10 75 0 -570 344 70 -9 1131 1191 10 781 0 -571 481 84 17 491 551 0 0 1013 -572 21 68 20 386 446 10 0 717 -573 441 244 -10 262 322 10 515 0 -574 57 43 -16 1008 1068 10 372 0 -575 1 293 10 253 313 10 0 243 -576 481 96 -5 282 342 10 16 0 -577 471 368 -20 413 473 10 416 0 -578 236 126 23 124 184 10 0 750 -579 406 99 20 217 277 10 0 121 -580 303 186 -20 1339 1399 10 588 0 -581 225 369 38 121 181 10 0 855 -582 412 453 10 282 342 10 0 277 -583 104 349 -30 994 1054 10 149 0 -584 173 182 25 102 162 0 0 1032 -585 111 464 -10 296 356 10 917 0 -586 53 440 10 308 368 10 0 283 -587 69 336 20 203 263 10 0 152 -588 359 182 20 194 254 10 0 580 -589 13 459 20 332 392 10 0 783 -590 244 277 -20 1286 1346 10 657 0 -591 484 177 20 245 305 10 0 648 -592 452 206 -30 477 537 10 298 0 -593 22 483 30 325 385 10 0 624 -594 452 110 -30 325 385 10 117 0 -595 347 192 -20 1473 1533 10 776 0 -596 95 92 20 238 298 10 0 800 -597 368 311 14 911 971 0 0 1041 -598 479 387 -20 382 442 10 472 0 -599 479 169 -20 294 354 10 170 0 -600 497 266 25 733 793 10 0 775 -601 66 336 -10 238 298 10 60 0 -602 376 195 -20 166 226 10 143 0 -603 401 281 20 246 306 10 0 567 -604 441 177 -14 986 1046 10 38 0 -605 231 203 20 52 112 10 0 500 -606 21 488 10 346 406 10 0 766 -607 231 204 -20 135 195 10 272 0 -608 122 422 3 1442 1502 10 0 246 -609 65 453 30 274 334 10 0 703 -610 206 261 -20 167 227 10 101 0 -611 466 149 16 1171 1231 10 0 877 -612 313 119 -10 201 261 10 767 0 -613 90 274 20 164 224 10 0 134 -614 39 162 -11 550 610 10 80 0 -615 35 306 20 222 282 10 0 369 -616 437 15 30 340 400 10 0 646 -617 307 412 8 389 449 10 0 957 -618 79 291 10 194 254 10 0 645 -619 64 437 -4 903 963 10 348 0 -620 376 92 -10 976 1036 10 175 0 -621 129 27 -30 283 343 10 457 0 -622 196 489 -16 1015 1075 10 280 0 -623 51 286 -30 1444 1504 10 937 0 -624 20 488 -30 357 417 10 593 0 -625 13 455 -13 313 373 10 547 0 -626 170 347 15 421 481 10 0 467 -627 92 230 -10 174 234 10 955 0 -628 117 467 10 254 314 10 0 465 -629 413 217 -10 166 226 10 300 0 -630 405 450 20 253 313 10 0 986 -631 394 322 -20 1010 1070 10 910 0 -632 125 61 26 597 657 10 0 730 -633 238 123 -40 766 826 10 5 0 -634 11 403 18 328 388 10 0 120 -635 89 272 -10 177 237 10 161 0 -636 304 102 30 182 242 10 0 94 -637 478 121 40 304 364 10 0 665 -638 408 84 10 269 329 10 0 445 -639 376 494 30 274 334 10 0 164 -640 20 73 10 290 350 10 0 921 -641 159 299 -20 1001 1061 10 737 0 -642 95 382 -5 216 276 10 922 0 -643 352 63 -10 1163 1223 10 490 0 -644 365 274 14 117 177 10 0 909 -645 30 301 -10 263 323 10 618 0 -646 351 5 -30 481 541 10 616 0 -647 197 267 -10 94 154 10 871 0 -648 498 171 -20 1241 1301 10 591 0 -649 468 352 -20 753 813 10 210 0 -650 418 251 -24 1182 1242 10 207 0 -651 489 437 -25 692 752 10 179 0 -652 251 63 -13 972 1032 10 129 0 -653 132 55 10 252 312 10 0 31 -654 281 96 1 1111 1171 10 0 406 -655 333 293 27 602 662 10 0 494 -656 255 487 -9 383 443 10 437 0 -657 207 400 20 176 236 10 0 590 -658 469 489 4 540 600 10 0 802 -659 244 254 20 85 145 10 0 59 -660 233 207 10 46 106 10 0 293 -661 441 60 -10 1444 1504 10 969 0 -662 411 379 -30 1178 1238 10 436 0 -663 178 72 -23 742 802 10 125 0 -664 51 447 -30 280 340 10 987 0 -665 478 118 -40 339 399 10 637 0 -666 141 426 23 516 576 10 0 785 -667 295 89 -10 727 787 10 21 0 -668 112 433 29 229 289 10 0 746 -669 320 211 16 978 1038 0 0 1025 -670 400 103 10 241 301 10 0 674 -671 408 453 10 268 328 10 0 712 -672 435 180 37 210 270 10 0 493 -673 432 66 -20 1056 1116 10 841 0 -674 374 116 -10 572 632 10 670 0 -675 478 102 10 309 369 10 0 896 -676 335 57 30 210 270 10 0 941 -677 385 239 21 771 831 10 0 711 -678 386 245 -19 464 524 10 727 0 -679 208 396 20 161 221 10 0 10 -680 380 489 -20 364 424 10 404 0 -681 380 498 10 282 342 10 0 289 -682 440 7 -20 308 368 10 165 0 -683 434 245 -20 327 387 10 123 0 -684 90 232 -10 197 257 10 355 0 -685 389 334 20 162 222 10 0 702 -686 241 205 30 103 163 10 0 344 -687 18 24 -30 613 673 10 914 0 -688 57 183 -4 1085 1145 10 919 0 -689 59 457 30 319 379 10 0 417 -690 442 243 10 274 334 10 0 560 -691 402 281 -24 235 295 10 556 0 -692 445 237 10 195 255 10 0 338 -693 441 273 20 267 327 10 0 222 -694 31 175 -1 232 292 10 538 0 -695 234 202 10 65 125 10 0 715 -696 52 303 -22 426 486 10 139 0 -697 167 445 -13 1397 1457 10 434 0 -698 179 286 -30 326 386 10 838 0 -699 269 48 -20 266 326 10 852 0 -700 165 59 27 928 988 10 0 723 -701 461 8 20 354 414 10 0 953 -702 421 415 -20 237 297 10 685 0 -703 59 459 -30 296 356 10 609 0 -704 24 492 -20 447 507 10 966 0 -705 55 449 20 278 338 10 0 268 -706 224 192 10 63 123 10 0 808 -707 444 269 -40 219 279 10 26 0 -708 491 20 -10 379 439 10 110 0 -709 313 126 10 228 288 10 0 765 -710 283 438 3 216 276 10 0 8 -711 352 241 -21 777 837 10 677 0 -712 398 476 -10 403 463 10 671 0 -713 442 247 -20 226 286 10 401 0 -714 217 207 -20 1367 1427 10 124 0 -715 233 87 -10 238 298 10 695 0 -716 479 127 20 259 319 10 0 361 -717 6 53 -20 572 632 10 572 0 -718 478 300 -20 875 935 10 428 0 -719 378 493 -20 274 334 10 915 0 -720 303 78 12 179 239 10 0 846 -721 344 62 10 331 391 10 0 142 -722 371 315 -13 1151 1211 10 181 0 -723 200 78 -27 978 1038 10 700 0 -724 413 391 -20 215 275 10 518 0 -725 415 216 10 168 228 10 0 874 -726 397 57 -5 1461 1521 10 901 0 -727 293 228 19 48 108 10 0 678 -728 0 297 -10 278 338 10 40 0 -729 435 20 20 366 426 0 0 1010 -730 195 111 -26 983 1043 10 632 0 -731 417 218 10 263 323 10 0 891 -732 340 54 10 223 283 0 0 1014 -733 132 57 20 229 289 10 0 373 -734 210 379 -18 694 754 10 281 0 -735 228 260 -10 1591 1651 10 793 0 -736 399 104 10 275 335 10 0 379 -737 95 277 20 259 319 10 0 641 -738 360 284 -30 652 712 10 393 0 -739 53 466 9 320 380 10 0 812 -740 112 465 10 284 344 10 0 328 -741 313 391 5 154 214 10 0 439 -742 93 235 10 231 291 10 0 945 -743 125 32 30 251 311 10 0 916 -744 215 282 -22 1425 1485 10 509 0 -745 224 320 -8 1269 1329 10 90 0 -746 134 428 -29 293 353 10 668 0 -747 26 490 10 460 520 10 0 9 -748 44 115 -18 246 306 10 305 0 -749 438 127 -10 926 986 10 219 0 -750 239 15 -23 589 649 10 578 0 -751 342 54 20 235 295 10 0 96 -752 109 463 30 319 379 10 0 503 -753 199 187 -32 112 172 10 234 0 -754 201 188 10 124 184 10 0 885 -755 399 301 30 179 239 10 0 70 -756 484 171 -20 278 338 10 888 0 -757 272 234 -20 1575 1635 10 927 0 -758 380 350 -17 851 911 10 931 0 -759 140 108 29 1056 1116 10 0 423 -760 228 199 10 119 179 10 0 413 -761 245 461 -30 634 694 10 229 0 -762 305 107 -10 210 270 10 326 0 -763 231 195 20 94 154 10 0 994 -764 450 265 10 201 261 10 0 483 -765 273 149 -10 1488 1548 10 709 0 -766 12 358 -10 1209 1269 10 606 0 -767 315 121 10 188 248 10 0 612 -768 420 213 10 189 249 10 0 956 -769 331 134 -30 1109 1169 10 316 0 -770 84 377 -8 911 971 10 551 0 -771 320 280 10 76 136 10 0 87 -772 89 185 -33 585 645 10 7 0 -773 472 481 20 320 380 10 0 443 -774 422 420 20 248 308 10 0 392 -775 475 267 -25 765 825 10 600 0 -776 470 125 20 253 313 10 0 595 -777 435 268 -10 297 357 10 188 0 -778 409 155 19 185 245 10 0 35 -779 243 248 30 9 69 10 0 859 -780 488 96 22 1051 1111 10 0 384 -781 341 72 9 790 850 10 0 570 -782 58 449 -26 348 408 10 791 0 -783 16 460 -20 396 456 10 589 0 -784 480 136 22 256 316 10 0 331 -785 162 388 -23 1111 1171 10 666 0 -786 47 208 30 211 271 10 0 995 -787 324 127 30 143 203 10 0 903 -788 87 96 30 267 327 10 0 356 -789 140 137 -12 555 615 10 904 0 -790 314 205 -20 1512 1572 10 135 0 -791 96 346 26 181 241 10 0 782 -792 321 280 -10 77 137 10 542 0 -793 245 251 10 5 65 10 0 735 -794 436 295 11 513 573 10 0 934 -795 274 261 20 1692 1752 0 0 1044 -796 271 128 -20 331 391 10 386 0 -797 275 45 20 210 270 10 0 429 -798 422 409 10 234 294 10 0 460 -799 146 188 -10 1220 1280 10 900 0 -800 93 96 -20 219 279 10 596 0 -801 409 255 23 1507 1567 0 0 1031 -802 449 428 -4 1232 1292 10 658 0 -803 90 285 -30 261 321 10 967 0 -804 415 95 -16 1162 1222 10 978 0 -805 88 287 30 248 308 10 0 562 -806 379 196 20 179 239 10 0 89 -807 368 452 -20 655 715 10 56 0 -808 202 186 -10 136 196 10 706 0 -809 435 11 40 302 362 10 0 380 -810 269 46 20 254 314 10 0 118 -811 7 292 10 246 306 10 0 100 -812 44 496 -9 387 447 10 739 0 -813 478 99 10 296 356 10 0 938 -814 391 99 20 206 266 10 0 519 -815 132 477 25 312 372 10 0 138 -816 24 65 10 350 410 10 0 559 -817 130 247 17 120 180 10 0 907 -818 133 273 20 119 179 10 0 251 -819 347 62 -20 318 378 10 553 0 -820 404 140 -10 1244 1304 10 150 0 -821 416 420 -20 275 335 10 828 0 -822 67 335 -30 227 287 10 869 0 -823 92 270 -10 242 302 10 14 0 -824 411 95 -10 228 288 10 523 0 -825 132 479 11 257 317 10 0 25 -826 366 334 5 395 455 10 0 265 -827 125 39 20 245 305 10 0 187 -828 419 422 20 261 321 10 0 821 -829 460 2 20 338 398 10 0 965 -830 67 334 -20 216 276 10 334 0 -831 448 414 23 1208 1268 10 0 83 -832 46 163 8 911 971 0 0 1008 -833 77 465 11 275 335 10 0 197 -834 284 319 -20 802 862 10 311 0 -835 102 422 -18 226 286 10 144 0 -836 240 34 -18 1535 1595 10 558 0 -837 141 428 20 208 268 10 0 839 -838 204 269 30 49 109 10 0 698 -839 144 439 -20 256 316 10 837 0 -840 470 417 11 722 782 10 0 250 -841 404 103 20 227 287 10 0 673 -842 5 281 16 1357 1417 10 0 433 -843 487 320 -10 843 903 10 184 0 -844 398 23 10 270 330 10 0 452 -845 90 296 20 166 226 10 0 30 -846 386 13 -12 322 382 10 720 0 -847 115 465 10 253 313 10 0 276 -848 473 475 -20 402 462 10 499 0 -849 275 42 -27 223 283 10 441 0 -850 286 356 30 111 171 10 0 39 -851 15 69 10 296 356 10 0 943 -852 267 44 20 241 301 10 0 699 -853 243 399 10 220 280 10 0 330 -854 390 249 -14 567 627 10 285 0 -855 210 391 -38 146 206 10 581 0 -856 433 15 20 297 357 10 0 873 -857 24 259 -16 355 415 10 47 0 -858 12 463 20 346 406 10 0 550 -859 237 213 -30 132 192 10 779 0 -860 182 480 31 350 410 10 0 485 -861 409 88 20 255 315 10 0 69 -862 244 368 -10 399 459 10 876 0 -863 381 328 -10 702 762 10 973 0 -864 213 185 21 74 134 10 0 92 -865 482 141 -5 996 1056 10 977 0 -866 319 124 20 163 223 10 0 22 -867 141 431 30 211 271 10 0 208 -868 198 264 20 125 185 10 0 368 -869 69 334 30 199 259 10 0 822 -870 299 98 30 159 219 10 0 884 -871 240 250 10 22 82 10 0 647 -872 199 203 -20 1442 1502 10 314 0 -873 459 17 -20 396 456 10 856 0 -874 423 217 -10 227 287 10 725 0 -875 477 179 20 237 297 10 0 351 -876 213 397 10 202 262 10 0 862 -877 405 187 -16 1236 1296 10 611 0 -878 269 402 20 188 248 10 0 37 -879 53 204 8 1040 1100 10 0 313 -880 13 394 -14 358 418 10 496 0 -881 15 68 10 297 357 10 0 73 -882 56 268 -10 1049 1109 10 97 0 -883 360 184 -30 206 266 10 52 0 -884 307 102 -30 195 255 10 870 0 -885 130 57 -10 227 287 10 754 0 -886 250 328 24 234 294 10 0 398 -887 91 231 30 185 245 10 0 18 -888 479 176 20 240 300 10 0 756 -889 420 224 10 414 474 10 0 136 -890 461 182 13 614 674 10 0 527 -891 418 218 -10 252 312 10 731 0 -892 419 418 10 238 298 10 0 999 -893 336 493 -12 1478 1538 10 920 0 -894 389 300 10 147 207 10 0 912 -895 92 76 -21 1124 1184 10 254 0 -896 476 102 -10 321 381 10 675 0 -897 418 399 -10 423 483 10 297 0 -898 109 56 27 239 299 10 0 79 -899 13 465 31 759 819 10 0 972 -900 92 232 10 162 222 10 0 799 -901 394 47 5 298 358 10 0 726 -902 16 287 12 256 316 10 0 221 -903 399 102 -30 252 312 10 787 0 -904 143 158 12 141 201 10 0 789 -905 18 484 10 329 389 10 0 318 -906 250 411 -20 173 233 10 327 0 -907 19 273 -17 1002 1062 10 817 0 -908 365 28 9 253 313 10 0 172 -909 387 297 -14 144 204 10 644 0 -910 433 447 20 779 839 10 0 631 -911 214 274 -23 1354 1414 10 173 0 -912 489 338 -10 1382 1442 10 894 0 -913 130 494 6 744 804 10 0 168 -914 23 67 30 374 434 10 0 687 -915 374 489 20 269 329 10 0 719 -916 126 30 -30 257 317 10 743 0 -917 112 467 10 261 321 10 0 585 -918 489 274 -10 519 579 10 352 0 -919 61 214 4 327 387 10 0 688 -920 166 440 12 207 267 10 0 893 -921 56 75 -10 1423 1483 10 640 0 -922 210 276 5 47 107 10 0 642 -923 80 286 -20 209 269 10 449 0 -924 17 459 10 407 467 0 0 1009 -925 66 448 10 270 330 10 0 157 -926 351 128 -24 1238 1298 10 103 0 -927 352 176 20 126 186 10 0 757 -928 490 286 29 507 567 10 0 520 -929 247 219 17 31 91 10 0 981 -930 86 268 -10 202 262 10 252 0 -931 398 329 17 167 227 10 0 758 -932 272 402 10 153 213 10 0 332 -933 317 123 20 175 235 0 0 1005 -934 408 318 -11 628 688 10 794 0 -935 66 31 -15 1033 1093 10 241 0 -936 425 448 -20 779 839 10 545 0 -937 35 304 30 221 281 10 0 623 -938 471 94 -10 984 1044 10 813 0 -939 470 473 -20 416 476 10 949 0 -940 224 56 -6 1171 1231 10 543 0 -941 343 47 -30 262 322 10 676 0 -942 52 18 28 842 902 10 0 394 -943 16 68 -10 299 359 10 851 0 -944 195 185 20 97 157 10 0 199 -945 92 236 -10 243 303 10 742 0 -946 76 462 18 941 1001 10 0 140 -947 124 56 20 231 291 10 0 156 -948 481 454 14 308 368 0 0 1002 -949 477 483 20 351 411 10 0 939 -950 481 124 10 268 328 10 0 345 -951 389 156 -20 701 761 10 514 0 -952 384 16 -10 336 396 10 990 0 -953 492 34 -20 796 856 10 701 0 -954 371 200 10 209 269 10 0 68 -955 153 235 10 98 158 10 0 627 -956 428 202 -10 889 949 10 768 0 -957 257 391 -8 1610 1670 10 617 0 -958 421 218 -19 239 299 10 114 0 -959 206 186 10 173 233 0 0 1040 -960 393 301 -10 163 223 10 532 0 -961 204 187 -20 160 220 10 248 0 -962 468 475 10 313 373 0 0 1001 -963 477 122 10 315 375 10 0 531 -964 100 66 -28 1385 1445 10 411 0 -965 489 27 -20 406 466 10 829 0 -966 12 451 20 311 371 10 0 704 -967 197 270 30 81 141 10 0 803 -968 311 422 29 973 1033 10 0 154 -969 489 17 10 365 425 10 0 661 -970 13 214 -26 1339 1399 10 127 0 -971 440 247 20 238 298 10 0 486 -972 28 467 -31 1328 1388 10 899 0 -973 388 325 10 248 308 10 0 863 -974 270 401 -10 152 212 10 354 0 -975 5 445 30 313 373 10 0 185 -976 198 271 -20 69 129 10 349 0 -977 480 131 5 673 733 10 0 865 -978 437 98 16 1099 1159 10 0 804 -979 131 246 -8 817 877 10 407 0 -980 49 437 7 412 472 10 0 359 -981 270 49 -17 277 337 10 929 0 -982 337 41 -20 987 1047 10 41 0 -983 318 280 20 82 142 10 0 402 -984 154 392 9 171 231 10 0 76 -985 493 111 -20 526 586 10 426 0 -986 399 450 -20 344 404 10 630 0 -987 67 452 30 272 332 10 0 664 -988 34 239 16 216 276 10 0 19 -989 343 276 15 96 156 10 0 329 -990 393 12 10 294 354 10 0 952 -991 236 247 20 37 97 10 0 476 -992 340 291 22 455 515 10 0 178 -993 3 292 -10 250 310 10 421 0 -994 209 68 -20 1553 1613 10 763 0 -995 18 225 -30 676 736 10 786 0 -996 147 435 -30 230 290 10 539 0 -997 335 99 -10 1203 1263 10 1000 0 -998 485 24 20 326 386 10 0 112 -999 470 475 -10 314 374 10 892 0 -1000 341 58 10 212 272 10 0 997 -1001 468 475 -10 313 373 10 962 0 -1002 481 454 -14 308 368 10 948 0 -1003 263 153 -12 397 457 10 391 0 -1004 400 288 -30 154 214 10 66 0 -1005 317 123 -20 175 235 10 933 0 -1006 418 221 -10 276 336 10 323 0 -1007 267 394 -10 244 304 10 148 0 -1008 46 163 -8 911 971 10 832 0 -1009 17 459 -10 407 467 10 924 0 -1010 435 20 -20 366 426 10 729 0 -1011 105 474 -27 456 516 10 61 0 -1012 359 246 -18 1408 1468 10 541 0 -1013 481 84 -17 491 551 10 571 0 -1014 340 54 -10 223 283 10 732 0 -1015 231 29 -14 1211 1271 10 186 0 -1016 44 311 -27 392 452 10 513 0 -1017 307 249 -10 1362 1422 10 269 0 -1018 58 391 -16 867 927 10 340 0 -1019 352 487 -27 887 947 10 4 0 -1020 294 421 -26 1560 1620 10 141 0 -1021 262 92 -25 615 675 10 565 0 -1022 149 214 -7 467 527 10 189 0 -1023 95 64 -4 751 811 10 526 0 -1024 323 118 -20 150 210 10 264 0 -1025 320 211 -16 978 1038 10 669 0 -1026 394 333 -20 179 239 10 315 0 -1027 209 212 -18 1513 1573 10 420 0 -1028 355 177 -20 127 187 10 273 0 -1029 491 369 -28 715 775 10 482 0 -1030 58 458 -10 308 368 10 309 0 -1031 409 255 -23 1507 1567 10 801 0 -1032 173 182 -25 102 162 10 584 0 -1033 371 192 -30 134 194 10 162 0 -1034 470 405 -17 911 971 10 432 0 -1035 480 152 -26 1007 1067 10 444 0 -1036 483 27 -20 443 503 10 288 0 -1037 133 26 -10 297 357 10 310 0 -1038 286 244 -31 1269 1329 10 214 0 -1039 142 360 -20 1517 1577 10 387 0 -1040 206 186 -10 173 233 10 959 0 -1041 368 311 -14 911 971 10 597 0 -1042 330 308 -24 1155 1215 10 224 0 -1043 133 455 -25 793 853 10 357 0 -1044 274 261 -20 1692 1752 10 795 0 -1045 131 56 -10 241 301 10 44 0 -1046 440 436 -18 877 937 10 1 0 diff --git a/jsprit-instances/instances/lilim/1000/LRC1107.txt b/jsprit-instances/instances/lilim/1000/LRC1107.txt deleted file mode 100644 index ef0f6947e..000000000 --- a/jsprit-instances/instances/lilim/1000/LRC1107.txt +++ /dev/null @@ -1,1048 +0,0 @@ -250 200 1 -0 250 250 0 0 1821 0 0 0 -1 440 436 18 862 951 10 0 338 -2 214 394 10 200 291 10 0 734 -3 476 483 10 337 403 10 0 392 -4 352 487 27 888 945 10 0 485 -5 230 197 40 100 173 10 0 344 -6 175 239 23 75 169 10 0 304 -7 133 202 -18 438 513 10 305 0 -8 328 458 -26 754 811 10 88 0 -9 25 499 -30 403 516 10 689 0 -10 226 423 -40 174 276 10 17 0 -11 313 282 20 152 204 0 0 1002 -12 60 454 -10 313 412 10 157 0 -13 239 486 3 1433 1562 0 0 1039 -14 102 264 10 148 257 10 0 134 -15 408 452 10 260 314 10 0 460 -16 451 62 5 275 355 10 0 122 -17 203 390 40 147 257 10 0 10 -18 92 233 -17 198 279 10 817 0 -19 7 300 30 315 404 10 0 535 -20 409 90 -30 225 371 10 824 0 -21 307 108 -20 225 280 10 264 0 -22 347 54 10 276 345 10 0 287 -23 406 87 10 301 355 10 0 638 -24 371 332 -20 506 584 10 210 0 -25 116 466 -10 254 330 10 847 0 -26 441 265 40 191 300 10 0 495 -27 130 140 17 183 235 10 0 356 -28 80 117 -10 782 897 10 306 0 -29 421 387 -18 744 889 10 95 0 -30 83 300 -30 433 597 10 805 0 -31 136 52 -20 278 338 10 479 0 -32 18 462 -20 377 448 10 783 0 -33 390 120 -30 976 1063 10 180 0 -34 188 119 -25 945 1035 10 388 0 -35 467 114 10 338 443 0 0 1006 -36 440 292 24 888 1022 0 0 1027 -37 268 400 20 208 308 10 0 237 -38 391 202 14 148 323 10 0 233 -39 377 432 -25 816 877 10 409 0 -40 80 290 -10 174 265 10 618 0 -41 439 15 20 309 408 10 0 380 -42 307 52 -11 882 989 10 429 0 -43 111 192 -20 1159 1269 10 627 0 -44 131 56 10 229 313 10 0 632 -45 88 286 -10 221 313 10 647 0 -46 69 414 -11 1226 1330 10 619 0 -47 41 232 16 209 272 10 0 811 -48 323 77 -10 1352 1488 10 175 0 -49 340 416 36 296 376 10 0 378 -50 86 199 -10 230 355 10 355 0 -51 314 124 20 221 270 10 0 796 -52 375 191 -30 149 215 10 162 0 -53 226 175 -20 1618 1733 10 259 0 -54 242 106 -13 1244 1322 10 940 0 -55 417 417 10 313 381 10 0 431 -56 419 459 -40 273 389 10 262 0 -57 389 11 -20 293 383 10 377 0 -58 450 416 25 541 643 10 0 83 -59 246 255 10 57 199 10 0 862 -60 71 333 10 197 294 10 0 251 -61 105 474 27 465 506 10 0 357 -62 20 489 -10 358 438 10 489 0 -63 388 331 20 160 277 10 0 545 -64 92 259 -10 383 445 10 203 0 -65 200 261 10 106 257 10 0 427 -66 400 288 30 154 262 10 0 81 -67 299 285 -10 1228 1310 10 542 0 -68 378 199 10 180 265 10 0 191 -69 325 147 14 1163 1241 0 0 1003 -70 421 386 -20 802 876 10 774 0 -71 404 447 20 250 352 10 0 630 -72 412 478 -30 928 1022 10 999 0 -73 26 67 -10 1290 1373 10 266 0 -74 358 183 20 203 294 10 0 527 -75 30 302 10 226 372 10 0 513 -76 176 470 -25 503 620 10 815 0 -77 96 270 20 155 272 10 0 424 -78 243 408 -5 1413 1484 10 442 0 -79 60 29 32 1322 1433 0 0 1005 -80 34 169 11 427 571 0 0 1012 -81 407 280 -30 186 262 10 66 0 -82 277 403 10 155 245 10 0 617 -83 498 456 -25 1387 1455 10 58 0 -84 384 491 -10 281 444 10 164 0 -85 355 174 -10 665 796 10 883 0 -86 97 288 -20 1243 1355 10 176 0 -87 316 284 -30 97 182 10 402 0 -88 334 403 26 174 298 10 0 8 -89 415 223 20 286 354 10 0 889 -90 230 320 -20 1158 1256 10 440 0 -91 432 199 7 636 672 10 0 192 -92 92 18 -27 1132 1146 10 898 0 -93 273 300 30 55 123 10 0 393 -94 269 112 19 1228 1328 10 0 765 -95 429 389 18 385 494 10 0 29 -96 371 71 21 241 362 10 0 620 -97 5 297 -10 306 386 10 382 0 -98 414 378 -17 459 561 10 931 0 -99 38 15 -28 1036 1176 10 942 0 -100 2 295 -14 276 366 10 496 0 -101 237 254 20 33 163 10 0 126 -102 54 445 10 283 364 10 0 335 -103 382 110 -20 1101 1153 10 903 0 -104 438 488 18 303 384 10 0 651 -105 395 331 -10 193 270 10 146 0 -106 230 487 20 1072 1218 10 0 208 -107 249 407 -30 157 232 10 240 0 -108 488 26 -30 385 511 10 365 0 -109 151 81 -3 1562 1583 10 555 0 -110 483 14 -20 349 408 10 195 0 -111 0 422 -30 772 900 10 318 0 -112 429 67 -10 716 779 10 950 0 -113 195 464 -11 1531 1581 10 825 0 -114 356 256 19 106 172 10 0 692 -115 264 180 -25 1645 1740 10 557 0 -116 94 235 -8 156 227 10 407 0 -117 474 96 30 271 365 10 0 552 -118 268 52 -10 280 362 10 568 0 -119 44 440 -10 749 858 10 924 0 -120 7 382 -15 755 816 10 880 0 -121 459 53 -10 1075 1199 10 263 0 -122 491 25 -5 363 485 10 16 0 -123 439 243 20 305 352 10 0 683 -124 210 185 20 76 189 10 0 754 -125 150 68 -6 378 498 10 543 0 -126 201 270 -20 52 172 10 101 0 -127 0 188 26 890 1005 0 0 1013 -128 103 464 -10 1209 1366 10 747 0 -129 325 56 -10 779 843 10 198 0 -130 44 344 -20 1065 1124 10 583 0 -131 418 75 11 395 530 10 0 580 -132 472 57 -20 1255 1364 10 708 0 -133 460 328 13 224 346 10 0 598 -134 89 270 -10 184 253 10 14 0 -135 374 190 -30 137 190 10 360 0 -136 463 253 -8 1000 1124 10 299 0 -137 97 93 20 219 303 10 0 158 -138 163 472 -20 607 730 10 197 0 -139 29 336 22 300 393 10 0 634 -140 84 453 -30 1193 1282 10 987 0 -141 294 421 -29 1557 1624 10 968 0 -142 343 62 10 320 424 10 0 470 -143 371 193 20 133 217 10 0 514 -144 142 372 18 162 213 10 0 551 -145 66 88 -24 793 896 10 748 0 -146 395 332 10 189 253 10 0 105 -147 93 413 17 226 249 10 0 664 -148 267 394 10 220 328 10 0 534 -149 249 258 30 107 176 10 0 886 -150 472 129 10 254 281 10 0 345 -151 87 3 -24 1396 1501 10 294 0 -152 62 326 20 259 343 10 0 433 -153 212 186 11 1615 1737 0 0 1032 -154 241 402 -10 990 1090 10 549 0 -155 439 266 10 189 295 10 0 764 -156 79 80 -12 1343 1451 10 339 0 -157 62 453 10 276 368 10 0 12 -158 188 151 -20 1281 1342 10 137 0 -159 386 154 -33 1053 1179 10 363 0 -160 38 301 -30 279 343 10 414 0 -161 192 265 10 103 176 10 0 803 -162 371 192 30 134 277 10 0 52 -163 64 294 12 1068 1165 10 0 302 -164 381 494 10 283 414 10 0 84 -165 437 12 20 325 365 10 0 682 -166 186 135 -22 710 755 10 199 0 -167 459 10 -20 318 390 10 242 0 -168 175 422 -9 1419 1504 10 984 0 -169 274 48 10 203 279 10 0 186 -170 488 173 20 265 322 10 0 756 -171 398 97 10 212 284 10 0 239 -172 385 17 -20 794 854 10 941 0 -173 180 283 23 719 798 10 0 744 -174 71 12 2 297 369 10 0 935 -175 343 49 10 249 310 10 0 48 -176 248 251 20 2 72 10 0 86 -177 7 194 -10 926 1006 10 421 0 -178 322 290 -5 1451 1537 10 826 0 -179 410 399 25 218 314 10 0 986 -180 398 103 30 269 318 10 0 33 -181 385 285 -10 854 911 10 352 0 -182 179 497 -20 1367 1486 10 465 0 -183 464 13 20 349 450 10 0 322 -184 492 335 -10 808 878 10 188 0 -185 27 464 -20 1270 1342 10 589 0 -186 231 29 -10 1201 1281 10 169 0 -187 157 38 -10 1033 1092 10 916 0 -188 439 268 10 271 354 10 0 184 -189 149 214 7 429 565 10 0 789 -190 187 73 -20 294 320 10 501 0 -191 429 169 -10 881 954 10 68 0 -192 350 199 -7 1174 1258 10 91 0 -193 60 231 32 998 1083 10 0 688 -194 448 404 15 545 683 10 0 840 -195 481 20 20 325 405 10 0 110 -196 436 25 -20 1240 1354 10 364 0 -197 111 459 20 302 445 10 0 138 -198 389 17 10 341 421 10 0 129 -199 148 208 22 502 580 10 0 166 -200 475 477 -20 368 471 10 499 0 -201 390 325 30 192 340 0 0 1025 -202 346 354 -20 799 866 10 480 0 -203 91 266 10 191 304 10 0 64 -204 17 65 20 315 369 0 0 1018 -205 391 112 -20 982 1048 10 841 0 -206 224 203 -30 53 178 10 686 0 -207 426 231 -10 1034 1053 10 573 0 -208 260 472 -20 980 1121 10 106 0 -209 265 0 -30 868 954 10 981 0 -210 391 293 20 206 276 10 0 24 -211 411 421 20 283 377 0 0 1016 -212 132 30 -30 276 406 10 563 0 -213 475 480 30 347 442 10 0 290 -214 286 244 -30 1259 1339 10 389 0 -215 436 237 20 186 268 10 0 600 -216 402 284 30 155 207 10 0 544 -217 287 397 -20 552 606 10 878 0 -218 272 420 -20 1340 1461 10 679 0 -219 477 120 -20 322 393 10 716 0 -220 145 434 20 211 322 10 0 257 -221 33 286 -7 1528 1592 10 766 0 -222 370 262 -20 1059 1169 10 691 0 -223 393 20 20 365 447 10 0 274 -224 330 308 24 1141 1229 10 0 296 -225 246 398 40 148 209 10 0 330 -226 482 184 -13 1082 1161 10 890 0 -227 451 305 13 208 306 10 0 491 -228 226 316 21 70 172 10 0 539 -229 110 459 -30 305 421 10 752 0 -230 244 250 -10 6 79 10 793 0 -231 458 16 20 313 390 10 0 456 -232 390 34 -15 1031 1120 10 546 0 -233 423 214 -14 209 255 10 38 0 -234 219 215 32 46 177 0 0 1007 -235 326 118 10 152 264 10 0 762 -236 365 74 24 858 868 0 0 1026 -237 331 356 -20 697 756 10 37 0 -238 210 398 -38 178 261 10 581 0 -239 403 93 -10 281 431 10 171 0 -240 248 404 30 154 266 10 0 107 -241 65 62 -24 911 1071 10 694 0 -242 460 13 20 316 395 10 0 167 -243 0 293 30 253 361 10 0 575 -244 211 248 26 39 117 10 0 374 -245 484 174 -20 246 314 10 875 0 -246 175 352 12 1619 1685 0 0 1014 -247 455 168 -37 827 936 10 672 0 -248 224 191 20 72 120 10 0 959 -249 439 156 -27 481 600 10 493 0 -250 434 359 -17 1358 1457 10 432 0 -251 118 314 -10 276 429 10 60 0 -252 234 246 -10 26 133 10 871 0 -253 406 450 20 253 349 10 0 936 -254 75 118 -20 381 468 10 944 0 -255 115 395 -8 804 857 10 383 0 -256 329 456 -34 237 292 10 271 0 -257 218 403 -20 1302 1367 10 220 0 -258 149 341 -20 357 480 10 822 0 -259 253 74 20 1297 1433 10 0 53 -260 436 241 20 275 410 10 0 541 -261 238 203 10 71 147 10 0 386 -262 405 455 40 281 430 10 0 56 -263 485 27 10 414 508 10 0 121 -264 323 118 20 150 242 10 0 21 -265 330 371 -20 541 606 10 404 0 -266 25 65 10 336 446 10 0 73 -267 406 96 20 219 339 10 0 445 -268 49 451 20 284 350 10 0 705 -269 307 249 -20 1328 1455 10 329 0 -270 178 135 -27 1491 1567 10 700 0 -271 299 353 34 114 151 10 0 256 -272 236 213 20 39 127 10 0 763 -273 355 177 -20 127 244 10 588 0 -274 394 23 -20 357 480 10 223 0 -275 306 235 25 57 148 10 0 865 -276 90 477 18 277 376 0 0 1021 -277 379 486 -25 637 736 10 712 0 -278 435 16 -20 310 455 10 336 0 -279 8 497 -10 390 455 10 606 0 -280 150 484 -10 603 677 10 740 0 -281 213 399 18 177 321 0 0 1038 -282 391 18 -10 356 430 10 990 0 -283 111 392 -16 1134 1234 10 340 0 -284 330 281 14 1298 1393 0 0 1043 -285 344 203 -9 130 234 10 477 0 -286 91 235 -20 254 314 10 945 0 -287 346 60 -10 273 399 10 22 0 -288 483 27 -40 438 508 10 809 0 -289 382 498 -10 280 405 10 681 0 -290 457 492 -30 485 562 10 213 0 -291 291 213 23 1221 1324 10 0 757 -292 154 374 36 909 995 10 0 745 -293 225 196 10 59 145 10 0 864 -294 94 40 24 1013 1153 10 0 151 -295 0 356 13 1066 1137 10 0 842 -296 297 283 -24 1316 1412 10 224 0 -297 371 423 10 211 290 10 0 332 -298 417 217 30 186 222 10 0 323 -299 500 228 8 768 826 10 0 136 -300 412 214 10 165 216 10 0 768 -301 442 289 -20 195 236 10 341 0 -302 157 269 -12 1546 1636 10 163 0 -303 440 241 10 277 355 0 0 1045 -304 100 266 -23 150 197 10 6 0 -305 111 178 18 156 251 10 0 7 -306 91 101 10 263 364 10 0 28 -307 25 307 10 239 290 10 0 645 -308 135 400 20 294 333 10 0 369 -309 58 458 10 283 432 10 0 703 -310 133 26 -30 277 377 10 743 0 -311 211 386 20 141 233 10 0 876 -312 94 97 -20 218 379 10 596 0 -313 30 155 -10 1249 1341 10 408 0 -314 208 184 20 78 167 0 0 1044 -315 394 333 20 166 284 10 0 662 -316 355 180 30 126 203 10 0 540 -317 241 180 -24 1666 1741 10 633 0 -318 21 485 30 328 439 10 0 111 -319 80 251 14 264 374 10 0 979 -320 476 61 36 392 536 0 0 1033 -321 406 94 10 220 355 10 0 455 -322 364 71 -20 1327 1400 10 183 0 -323 418 221 -30 273 340 10 298 0 -324 274 441 12 683 736 0 0 1041 -325 304 97 20 162 233 10 0 654 -326 297 102 10 155 281 10 0 870 -327 250 405 -15 155 266 10 370 0 -328 111 463 -10 313 360 10 585 0 -329 408 279 20 193 277 10 0 269 -330 263 418 -40 255 332 10 225 0 -331 480 119 -26 604 683 10 985 0 -332 420 383 -10 966 1028 10 297 0 -333 142 14 -10 796 905 10 530 0 -334 73 328 20 193 270 10 0 830 -335 50 438 -10 289 415 10 102 0 -336 441 7 20 377 437 10 0 278 -337 462 14 20 388 436 10 0 873 -338 360 294 -18 1389 1476 10 1 0 -339 58 39 12 1153 1202 10 0 156 -340 58 391 16 860 934 10 0 283 -341 410 285 20 163 273 10 0 301 -342 96 97 20 217 331 10 0 788 -343 21 64 -10 335 400 10 422 0 -344 238 210 -40 95 202 10 5 0 -345 479 121 -10 265 380 10 150 0 -346 200 178 -20 87 207 10 753 0 -347 216 341 19 611 726 10 0 458 -348 48 437 4 796 841 0 0 1009 -349 200 270 -30 53 206 10 838 0 -350 357 181 20 127 237 10 0 400 -351 476 174 -20 300 379 10 599 0 -352 400 286 10 154 270 10 0 181 -353 351 481 10 296 377 0 0 1008 -354 270 400 -30 151 211 10 850 0 -355 95 234 10 155 249 10 0 50 -356 128 113 -17 365 391 10 27 0 -357 133 455 -27 765 881 10 61 0 -358 16 463 -10 334 446 10 905 0 -359 59 388 20 641 715 10 0 387 -360 376 190 30 139 244 10 0 135 -361 481 122 -40 270 351 10 637 0 -362 266 405 -10 200 265 10 932 0 -363 374 232 33 125 268 10 0 159 -364 398 20 20 273 393 10 0 196 -365 481 26 30 321 419 10 0 108 -366 63 444 -23 344 445 10 835 0 -367 89 290 20 165 240 10 0 737 -368 246 314 36 1422 1499 10 0 795 -369 40 304 -20 1098 1221 10 308 0 -370 262 369 15 119 179 10 0 327 -371 323 29 -20 1093 1212 10 810 0 -372 89 65 -20 694 776 10 947 0 -373 144 35 26 239 323 10 0 411 -374 200 265 -26 107 228 10 244 0 -375 436 264 20 186 294 10 0 775 -376 15 457 20 313 408 10 0 461 -377 397 20 20 275 315 10 0 57 -378 328 491 -36 663 723 10 49 0 -379 399 175 -20 708 816 10 806 0 -380 432 2 -20 427 537 10 41 0 -381 63 336 20 223 340 0 0 1031 -382 6 296 10 326 343 10 0 97 -383 146 376 8 238 261 10 0 255 -384 295 247 -20 1259 1377 10 603 0 -385 235 33 30 1306 1397 10 0 836 -386 233 204 -10 49 126 10 261 0 -387 142 360 -20 1490 1603 10 359 0 -388 177 156 25 147 217 10 0 34 -389 315 287 30 136 191 10 0 214 -390 452 172 9 572 675 10 0 648 -391 263 153 -20 410 445 10 866 0 -392 493 493 -10 832 910 10 3 0 -393 320 283 -30 92 159 10 93 0 -394 64 5 -8 1117 1170 10 717 0 -395 95 235 -1 155 230 10 538 0 -396 203 211 -20 1259 1384 10 605 0 -397 16 497 -10 389 493 10 624 0 -398 348 348 -11 894 1005 10 459 0 -399 485 104 -20 760 858 10 446 0 -400 330 147 -20 802 925 10 350 0 -401 443 237 20 193 309 10 0 650 -402 316 286 30 104 199 10 0 87 -403 335 46 -10 1300 1413 10 1000 0 -404 381 495 20 304 371 10 0 265 -405 364 173 30 173 218 10 0 502 -406 267 162 6 1427 1502 0 0 1040 -407 214 245 8 36 129 10 0 116 -408 92 234 10 197 302 10 0 313 -409 347 459 25 433 556 10 0 39 -410 30 7 -32 1167 1240 10 687 0 -411 120 37 -26 737 843 10 373 0 -412 397 153 29 851 944 0 0 1036 -413 210 29 -18 1016 1116 10 558 0 -414 87 285 30 191 322 10 0 160 -415 132 32 -20 770 828 10 827 0 -416 390 294 20 222 282 10 0 909 -417 67 451 -10 1166 1296 10 925 0 -418 24 68 -31 372 486 10 462 0 -419 146 439 10 249 299 10 0 839 -420 209 212 -20 1511 1575 10 872 0 -421 6 292 10 247 358 10 0 177 -422 18 63 10 310 399 10 0 343 -423 149 98 -23 1151 1210 10 663 0 -424 91 268 -20 220 300 10 77 0 -425 103 177 -30 617 665 10 887 0 -426 367 178 20 154 237 10 0 814 -427 225 269 -10 1262 1309 10 65 0 -428 443 246 20 203 287 10 0 560 -429 306 42 11 476 508 10 0 42 -430 374 306 -15 958 1060 10 934 0 -431 413 421 -10 262 373 10 55 0 -432 470 405 17 883 998 10 0 250 -433 33 278 -20 1473 1532 10 152 0 -434 149 458 -29 1137 1220 10 668 0 -435 257 57 -14 1167 1314 10 652 0 -436 272 403 -20 154 300 10 974 0 -437 221 291 9 50 201 0 0 1017 -438 1 101 8 1237 1307 10 0 921 -439 332 459 -5 362 406 10 741 0 -440 220 392 20 246 299 10 0 90 -441 253 50 27 209 272 10 0 564 -442 250 441 5 721 820 10 0 78 -443 471 484 -20 321 414 10 949 0 -444 480 152 -31 971 1102 10 592 0 -445 404 83 -20 272 354 10 267 0 -446 476 94 20 274 395 10 0 399 -447 458 213 22 1112 1175 10 0 790 -448 215 395 -30 215 299 10 855 0 -449 85 288 20 169 286 10 0 562 -450 179 75 13 699 811 10 0 759 -451 228 287 21 43 125 10 0 746 -452 397 18 10 274 399 10 0 781 -453 238 204 -17 81 159 10 929 0 -454 488 3 3 356 475 10 0 820 -455 407 88 -10 272 406 10 321 0 -456 459 14 -20 315 442 10 231 0 -457 120 17 30 266 345 10 0 621 -458 235 316 -19 608 734 10 347 0 -459 370 382 11 855 942 10 0 398 -460 405 454 -10 1274 1361 10 15 0 -461 17 458 -20 410 487 10 376 0 -462 43 135 31 236 297 10 0 418 -463 318 497 21 814 924 10 0 893 -464 199 268 20 54 140 10 0 785 -465 111 467 20 257 366 10 0 182 -466 138 438 20 261 344 10 0 917 -467 172 314 -10 501 619 10 601 0 -468 494 468 -10 327 419 10 962 0 -469 35 303 -10 221 313 10 923 0 -470 341 59 -10 776 833 10 142 0 -471 423 221 -10 219 327 10 958 0 -472 395 295 -15 151 303 10 989 0 -473 413 417 10 341 401 0 0 1030 -474 339 60 20 209 269 10 0 751 -475 277 428 7 447 564 10 0 834 -476 176 199 28 89 186 10 0 508 -477 265 240 9 18 145 10 0 285 -478 365 190 -34 1432 1552 10 877 0 -479 133 53 20 229 363 10 0 31 -480 387 488 20 324 429 10 0 202 -481 385 295 20 142 289 10 0 597 -482 491 369 28 698 792 10 0 649 -483 445 273 -10 248 297 10 516 0 -484 195 273 -30 59 137 10 967 0 -485 313 493 -27 1168 1249 10 4 0 -486 495 227 20 317 400 10 0 801 -487 241 403 -10 185 285 10 853 0 -488 30 72 -10 429 464 10 955 0 -489 21 487 10 329 439 10 0 62 -490 324 99 -30 302 404 10 787 0 -491 453 318 -13 353 424 10 227 0 -492 443 272 -20 218 353 10 707 0 -493 447 184 27 380 498 10 0 249 -494 366 288 -27 660 737 10 655 0 -495 440 284 -40 808 926 10 26 0 -496 13 314 14 245 296 10 0 100 -497 72 227 25 532 626 10 0 879 -498 377 385 -16 837 925 10 807 0 -499 477 478 20 362 453 10 0 200 -500 204 185 -10 142 215 10 706 0 -501 226 191 20 74 142 10 0 190 -502 330 138 -30 1085 1165 10 405 0 -503 185 434 -12 547 631 10 920 0 -504 483 22 10 325 436 10 0 998 -505 71 282 -20 587 726 10 818 0 -506 60 5 -15 1040 1078 10 574 0 -507 189 402 10 480 622 0 0 1022 -508 134 211 -28 122 198 10 476 0 -509 146 313 -17 1160 1260 10 511 0 -510 21 146 21 457 547 10 0 832 -511 37 281 17 478 539 10 0 509 -512 416 417 -8 296 420 10 724 0 -513 44 311 -10 382 462 10 75 0 -514 361 181 -20 178 246 10 143 0 -515 444 242 10 194 302 10 0 690 -516 444 271 10 216 305 10 0 483 -517 359 179 20 133 222 10 0 769 -518 388 334 20 161 272 10 0 685 -519 401 164 13 601 672 10 0 529 -520 499 316 18 611 663 10 0 843 -521 399 106 -10 285 349 10 670 0 -522 425 215 -20 201 287 10 874 0 -523 407 98 10 218 296 10 0 861 -524 406 460 2 715 753 10 0 910 -525 88 95 -20 254 317 10 800 0 -526 95 64 4 760 802 10 0 964 -527 306 229 -20 1287 1383 10 74 0 -528 273 55 20 196 306 10 0 750 -529 384 149 -13 1156 1269 10 519 0 -530 122 35 10 250 327 10 0 333 -531 308 199 -27 1484 1562 10 951 0 -532 390 301 10 149 254 10 0 577 -533 300 108 10 150 215 10 0 667 -534 267 400 -10 188 306 10 148 0 -535 8 300 -30 342 400 10 19 0 -536 105 181 -10 1499 1593 10 742 0 -537 398 325 30 208 289 10 0 863 -538 166 247 1 84 215 10 0 395 -539 140 431 -21 211 277 10 228 0 -540 253 118 -30 508 616 10 316 0 -541 359 246 -20 1382 1493 10 260 0 -542 321 277 10 75 221 10 0 67 -543 168 59 6 343 420 10 0 125 -544 406 285 -30 159 229 10 216 0 -545 391 334 -20 164 264 10 63 0 -546 437 19 15 998 1060 10 0 232 -547 201 278 13 56 151 10 0 623 -548 435 267 20 278 397 10 0 777 -549 245 408 10 164 273 10 0 154 -550 16 462 10 335 467 10 0 554 -551 107 374 -18 890 969 10 144 0 -552 477 97 -30 273 342 10 117 0 -553 346 57 -10 288 359 10 732 0 -554 14 459 -10 315 399 10 550 0 -555 102 6 3 1406 1526 10 0 109 -556 359 287 24 115 190 10 0 758 -557 297 131 25 1128 1232 10 0 115 -558 282 1 18 995 1120 10 0 413 -559 21 70 -10 747 825 10 640 0 -560 440 244 -20 261 302 10 428 0 -561 482 104 -20 774 871 10 576 0 -562 120 261 -20 775 842 10 449 0 -563 125 29 30 255 342 10 0 212 -564 292 32 -27 222 327 10 441 0 -565 262 92 -10 594 697 10 660 0 -566 68 160 -18 1115 1187 10 614 0 -567 405 276 -14 202 296 10 644 0 -568 277 50 10 201 346 10 0 118 -569 32 319 21 370 462 10 0 696 -570 344 70 -12 1105 1216 10 720 0 -571 481 84 -10 473 569 10 813 0 -572 21 68 -10 384 448 10 816 0 -573 441 244 10 235 350 10 0 207 -574 57 43 15 994 1082 10 0 506 -575 1 293 -30 252 353 10 243 0 -576 481 96 20 284 339 10 0 561 -577 471 368 -10 389 498 10 532 0 -578 236 126 23 124 274 10 0 715 -579 406 99 20 226 258 10 0 674 -580 303 186 -11 1338 1400 10 131 0 -581 225 369 38 121 204 10 0 238 -582 412 453 -10 259 375 10 671 0 -583 104 349 20 979 1069 10 0 130 -584 173 182 25 102 220 10 0 904 -585 111 464 10 274 378 10 0 328 -586 53 440 10 300 376 10 0 770 -587 69 336 -30 200 301 10 869 0 -588 359 182 20 177 272 10 0 273 -589 13 459 20 315 430 10 0 185 -590 244 277 -15 1281 1352 10 626 0 -591 484 177 -20 245 394 10 888 0 -592 452 206 31 464 550 10 0 444 -593 22 483 30 325 418 10 0 899 -594 452 110 14 311 400 10 0 673 -595 347 192 -23 1461 1545 10 604 0 -596 95 92 20 235 300 10 0 312 -597 368 311 -20 906 976 10 481 0 -598 479 387 -13 362 463 10 133 0 -599 479 169 20 266 382 10 0 351 -600 497 266 -20 696 829 10 215 0 -601 66 336 10 211 325 10 0 467 -602 376 195 10 189 203 10 0 778 -603 401 281 20 259 293 10 0 384 -604 441 177 23 980 1052 10 0 595 -605 231 203 20 50 177 10 0 396 -606 21 488 10 346 406 10 0 279 -607 231 204 20 127 203 10 0 760 -608 122 422 -10 1428 1516 10 704 0 -609 65 453 30 277 317 10 0 782 -610 206 261 -20 161 234 10 868 0 -611 466 149 16 1166 1236 0 0 1028 -612 313 119 -10 175 287 10 767 0 -613 90 274 -20 161 292 10 823 0 -614 39 162 18 541 620 10 0 566 -615 35 306 20 222 278 10 0 641 -616 437 15 30 325 415 10 0 726 -617 307 412 -10 374 464 10 82 0 -618 79 291 10 215 233 10 0 40 -619 64 437 11 866 1001 10 0 46 -620 376 92 -21 944 1068 10 96 0 -621 129 27 -30 285 341 10 457 0 -622 196 489 -20 996 1094 10 657 0 -623 51 286 -13 1435 1513 10 547 0 -624 20 488 10 339 435 10 0 397 -625 13 455 -30 313 414 10 975 0 -626 170 347 15 409 492 10 0 590 -627 92 230 20 167 240 10 0 43 -628 117 467 10 254 348 10 0 860 -629 413 217 20 166 237 10 0 731 -630 405 450 -20 253 350 10 71 0 -631 394 322 -11 987 1092 10 794 0 -632 125 61 -10 577 676 10 44 0 -633 238 123 24 739 854 10 0 317 -634 11 403 -22 316 399 10 139 0 -635 89 272 10 180 234 10 0 930 -636 304 102 30 170 254 10 0 884 -637 478 121 40 267 400 10 0 361 -638 408 84 -10 256 342 10 23 0 -639 376 494 30 274 376 10 0 680 -640 20 73 10 290 392 10 0 559 -641 159 299 -20 980 1082 10 615 0 -642 95 382 19 226 267 10 0 966 -643 352 63 -12 1148 1238 10 646 0 -644 365 274 14 117 198 10 0 567 -645 30 301 -10 243 343 10 307 0 -646 351 5 12 479 543 10 0 643 -647 197 267 10 69 178 10 0 45 -648 498 171 -9 1237 1305 10 390 0 -649 468 352 -28 751 815 10 482 0 -650 418 251 -20 1146 1278 10 401 0 -651 489 437 -18 669 775 10 104 0 -652 251 63 14 960 1044 10 0 435 -653 132 55 -20 244 321 10 733 0 -654 281 96 -20 1086 1195 10 325 0 -655 333 293 27 583 681 10 0 494 -656 255 487 19 358 467 10 0 761 -657 207 400 20 156 304 10 0 622 -658 469 489 -20 540 601 10 773 0 -659 244 254 20 55 175 10 0 976 -660 233 207 10 46 99 10 0 565 -661 441 60 -20 1411 1537 10 729 0 -662 411 379 -20 1156 1260 10 315 0 -663 178 72 23 733 811 10 0 423 -664 51 447 -17 280 363 10 147 0 -665 478 118 -20 314 425 10 776 0 -666 141 426 -20 517 575 10 996 0 -667 295 89 -10 724 790 10 533 0 -668 112 433 29 229 348 10 0 434 -669 320 211 16 946 1070 0 0 1024 -670 400 103 10 220 321 10 0 521 -671 408 453 10 257 340 10 0 582 -672 435 180 37 207 272 10 0 247 -673 432 66 -14 1029 1144 10 594 0 -674 374 116 -20 570 634 10 579 0 -675 478 102 10 293 385 10 0 977 -676 335 57 30 210 338 10 0 819 -677 385 239 21 763 838 10 0 711 -678 386 245 16 464 524 10 0 854 -679 208 396 20 151 283 10 0 218 -680 380 489 -30 359 429 10 639 0 -681 380 498 10 289 336 10 0 289 -682 440 7 -20 308 370 10 165 0 -683 434 245 -20 317 396 10 123 0 -684 90 232 10 161 308 10 0 919 -685 389 334 -20 162 248 10 518 0 -686 241 205 30 81 184 10 0 206 -687 18 24 32 609 678 10 0 410 -688 57 183 -32 1096 1135 10 193 0 -689 59 457 30 281 424 10 0 9 -690 442 243 -10 256 351 10 515 0 -691 402 281 20 224 307 10 0 222 -692 445 237 -19 195 285 10 114 0 -693 441 273 20 283 311 0 0 1019 -694 31 175 24 240 284 10 0 241 -695 234 202 10 50 202 10 0 859 -696 52 303 -21 432 481 10 569 0 -697 167 445 -6 1392 1462 10 913 0 -698 179 286 8 328 385 0 0 1004 -699 269 48 -20 238 353 10 852 0 -700 165 59 27 915 1001 10 0 270 -701 461 8 -20 357 412 10 829 0 -702 421 415 -10 237 303 10 798 0 -703 59 459 -10 294 359 10 309 0 -704 24 492 10 442 512 10 0 608 -705 55 449 -20 278 382 10 268 0 -706 224 192 10 63 173 10 0 500 -707 444 269 20 206 292 10 0 492 -708 491 20 20 402 415 10 0 132 -709 313 126 10 235 282 0 0 1029 -710 283 438 -30 212 281 10 906 0 -711 352 241 -21 776 839 10 677 0 -712 398 476 25 355 512 10 0 277 -713 442 247 -20 227 285 10 971 0 -714 217 207 26 1349 1446 0 0 1001 -715 233 87 -23 221 315 10 578 0 -716 479 127 20 259 326 10 0 219 -717 6 53 8 578 625 10 0 394 -718 478 300 12 852 958 10 0 912 -719 378 493 -20 274 390 10 915 0 -720 303 78 12 179 317 10 0 570 -721 344 62 10 337 385 10 0 997 -722 371 315 -10 1133 1228 10 771 0 -723 200 78 -15 942 1073 10 730 0 -724 413 391 8 215 320 10 0 512 -725 415 216 10 168 261 10 0 891 -726 397 57 -30 1444 1538 10 616 0 -727 293 228 19 48 198 10 0 954 -728 0 297 10 264 352 10 0 993 -729 435 20 20 346 446 10 0 661 -730 195 111 15 955 1071 10 0 723 -731 417 218 -20 247 339 10 629 0 -732 340 54 10 249 256 10 0 553 -733 132 57 20 226 339 10 0 653 -734 210 379 -10 698 750 10 2 0 -735 228 260 -24 1546 1696 10 911 0 -736 399 104 10 285 324 10 0 926 -737 95 277 -20 223 356 10 367 0 -738 360 284 -20 635 728 10 983 0 -739 53 466 9 318 382 10 0 946 -740 112 465 10 272 357 10 0 280 -741 313 391 5 154 222 10 0 439 -742 93 235 10 248 274 10 0 536 -743 125 32 30 251 335 10 0 310 -744 215 282 -23 1383 1527 10 173 0 -745 224 320 -36 1256 1341 10 292 0 -746 134 428 -21 264 383 10 451 0 -747 26 490 10 461 518 10 0 128 -748 44 115 24 246 342 10 0 145 -749 438 127 -20 919 993 10 896 0 -750 239 15 -20 552 686 10 528 0 -751 342 54 -20 224 306 10 474 0 -752 109 463 30 319 379 10 0 229 -753 199 187 20 81 209 10 0 346 -754 201 188 -20 98 209 10 124 0 -755 399 301 -10 180 238 10 894 0 -756 484 171 -20 274 343 10 170 0 -757 272 234 -23 1583 1627 10 291 0 -758 380 350 -24 855 908 10 556 0 -759 140 108 -13 1039 1134 10 450 0 -760 228 199 -20 113 186 10 607 0 -761 245 461 -19 609 720 10 656 0 -762 305 107 -10 186 294 10 235 0 -763 231 195 -20 91 157 10 272 0 -764 450 265 -10 200 290 10 155 0 -765 273 149 -19 1493 1542 10 94 0 -766 12 358 7 1191 1287 10 0 221 -767 315 121 10 166 270 10 0 612 -768 420 213 -10 183 255 10 300 0 -769 331 134 -20 1100 1177 10 517 0 -770 84 377 -10 907 975 10 586 0 -771 320 280 10 76 174 10 0 722 -772 89 185 -10 577 652 10 900 0 -773 472 481 20 320 407 10 0 658 -774 422 420 20 253 303 10 0 70 -775 475 267 -20 756 833 10 375 0 -776 470 125 20 253 372 10 0 665 -777 435 268 -20 290 364 10 548 0 -778 409 155 -10 185 314 10 602 0 -779 243 248 30 7 126 10 0 991 -780 488 96 22 1030 1133 10 0 938 -781 341 72 -10 778 861 10 452 0 -782 58 449 -30 341 414 10 609 0 -783 16 460 20 375 476 10 0 32 -784 480 136 22 256 341 10 0 963 -785 162 388 -20 1090 1193 10 464 0 -786 47 208 30 207 300 10 0 857 -787 324 127 30 143 238 10 0 490 -788 87 96 -20 227 367 10 342 0 -789 140 137 -7 531 638 10 189 0 -790 314 205 -22 1485 1598 10 447 0 -791 96 346 -5 181 267 10 922 0 -792 321 280 30 77 190 10 0 992 -793 245 251 10 5 73 10 0 230 -794 436 295 11 505 581 10 0 631 -795 274 261 -36 1683 1760 10 368 0 -796 271 128 -20 325 397 10 51 0 -797 275 45 20 206 298 10 0 849 -798 422 409 10 234 363 10 0 702 -799 146 188 6 1204 1295 0 0 1035 -800 93 96 20 219 318 10 0 525 -801 409 255 -20 1487 1587 10 486 0 -802 449 428 25 1216 1307 10 0 831 -803 90 285 -10 245 338 10 161 0 -804 415 95 -16 1142 1242 10 978 0 -805 88 287 30 253 303 10 0 30 -806 379 196 20 153 266 10 0 379 -807 368 452 16 627 743 10 0 498 -808 202 186 20 150 182 10 0 961 -809 435 11 40 302 341 10 0 288 -810 269 46 20 205 362 10 0 371 -811 7 292 -16 246 365 10 47 0 -812 44 496 -11 381 453 10 833 0 -813 478 99 10 306 347 10 0 571 -814 391 99 -20 206 266 10 426 0 -815 132 477 25 310 374 10 0 76 -816 24 65 10 338 423 10 0 572 -817 130 247 17 120 187 10 0 18 -818 133 273 20 119 206 10 0 505 -819 347 62 -30 310 386 10 676 0 -820 404 140 -3 1239 1309 10 454 0 -821 416 420 -20 289 321 10 828 0 -822 67 335 20 222 291 10 0 258 -823 92 270 20 203 340 10 0 613 -824 411 95 30 223 296 10 0 20 -825 132 479 11 257 342 10 0 113 -826 366 334 5 378 473 10 0 178 -827 125 39 20 245 316 10 0 415 -828 419 422 20 251 332 10 0 821 -829 460 2 20 332 403 10 0 701 -830 67 334 -20 201 326 10 334 0 -831 448 414 -25 1201 1275 10 802 0 -832 46 163 -21 896 987 10 510 0 -833 77 465 11 275 385 10 0 812 -834 284 319 -7 791 872 10 475 0 -835 102 422 23 226 392 10 0 366 -836 240 34 -30 1501 1595 10 385 0 -837 141 428 -30 208 368 10 867 0 -838 204 269 30 49 144 10 0 349 -839 144 439 -10 226 347 10 419 0 -840 470 417 -15 679 825 10 194 0 -841 404 103 20 226 288 10 0 205 -842 5 281 -13 1336 1438 10 295 0 -843 487 320 -18 826 920 10 520 0 -844 398 23 10 270 371 10 0 846 -845 90 296 20 166 255 10 0 882 -846 386 13 -10 301 403 10 844 0 -847 115 465 10 253 330 10 0 25 -848 473 475 10 383 481 0 0 1011 -849 275 42 -20 209 326 10 797 0 -850 286 356 30 111 214 10 0 354 -851 15 69 10 296 356 10 0 914 -852 267 44 20 233 309 10 0 699 -853 243 399 10 210 289 10 0 487 -854 390 249 -16 572 621 10 678 0 -855 210 391 30 146 249 10 0 448 -856 433 15 20 297 375 10 0 953 -857 24 259 -30 332 439 10 786 0 -858 12 463 20 334 418 10 0 972 -859 237 213 -10 114 210 10 695 0 -860 182 480 -10 320 440 10 628 0 -861 409 88 -10 247 324 10 523 0 -862 244 368 -10 371 487 10 59 0 -863 381 328 -30 697 768 10 537 0 -864 213 185 -10 74 200 10 293 0 -865 482 141 -25 991 1061 10 275 0 -866 319 124 20 143 255 10 0 391 -867 141 431 30 211 337 10 0 837 -868 198 264 20 123 187 10 0 610 -869 69 334 30 199 252 10 0 587 -870 299 98 -10 159 248 10 326 0 -871 240 250 10 19 85 10 0 252 -872 199 203 20 1458 1487 10 0 420 -873 459 17 -20 364 488 10 337 0 -874 423 217 20 217 297 10 0 522 -875 477 179 20 237 381 10 0 245 -876 213 397 -20 202 262 10 311 0 -877 405 187 34 1214 1318 10 0 478 -878 269 402 20 153 320 10 0 217 -879 53 204 -25 1044 1096 10 497 0 -880 13 394 15 357 418 10 0 120 -881 15 68 10 297 373 10 0 943 -882 56 268 -20 1031 1126 10 845 0 -883 360 184 10 198 274 10 0 85 -884 307 102 -30 186 264 10 636 0 -885 130 57 40 227 366 10 0 895 -886 250 328 -30 215 313 10 149 0 -887 91 231 30 179 252 10 0 425 -888 479 176 20 240 320 10 0 591 -889 420 224 -20 381 506 10 89 0 -890 461 182 13 608 680 10 0 226 -891 418 218 -10 238 326 10 725 0 -892 419 418 10 238 297 10 0 897 -893 336 493 -21 1470 1546 10 463 0 -894 389 300 10 147 221 10 0 755 -895 92 76 -40 1117 1191 10 885 0 -896 476 102 20 314 388 10 0 749 -897 418 399 -10 412 493 10 892 0 -898 109 56 27 239 359 10 0 92 -899 13 465 -30 759 819 10 593 0 -900 92 232 10 159 250 10 0 772 -901 394 47 5 290 366 0 0 1042 -902 16 287 12 240 331 10 0 970 -903 399 102 20 231 334 10 0 103 -904 143 158 -25 141 239 10 584 0 -905 18 484 10 329 381 10 0 358 -906 250 411 30 172 234 10 0 710 -907 19 273 25 949 1115 0 0 1034 -908 365 28 9 254 313 10 0 982 -909 387 297 -20 144 250 10 416 0 -910 433 447 -2 784 835 10 524 0 -911 214 274 24 1331 1438 10 0 735 -912 489 338 -12 1347 1478 10 718 0 -913 130 494 6 759 789 10 0 697 -914 23 67 -10 351 458 10 851 0 -915 374 489 20 269 407 10 0 719 -916 126 30 10 252 358 10 0 187 -917 112 467 -20 257 351 10 466 0 -918 489 274 31 490 608 10 0 928 -919 61 214 -10 323 390 10 684 0 -920 166 440 12 207 286 10 0 503 -921 56 75 -8 1430 1476 10 438 0 -922 210 276 5 47 116 10 0 791 -923 80 286 10 173 307 10 0 469 -924 17 459 10 375 500 10 0 119 -925 66 448 10 270 382 10 0 417 -926 351 128 -10 1214 1322 10 736 0 -927 352 176 20 126 228 10 0 933 -928 490 286 -31 496 579 10 918 0 -929 247 219 17 31 128 10 0 453 -930 86 268 -10 190 274 10 635 0 -931 398 329 17 167 302 10 0 98 -932 272 402 10 153 216 10 0 362 -933 317 123 -20 177 233 10 927 0 -934 408 318 15 605 712 10 0 430 -935 66 31 -2 1018 1109 10 174 0 -936 425 448 -20 759 860 10 253 0 -937 35 304 30 221 310 0 0 1020 -938 471 94 -22 969 1059 10 780 0 -939 470 473 -14 422 469 10 948 0 -940 224 56 13 1168 1235 10 0 54 -941 343 47 20 263 321 10 0 172 -942 52 18 28 851 893 10 0 99 -943 16 68 -10 296 403 10 881 0 -944 195 185 20 113 141 10 0 254 -945 92 236 20 227 318 10 0 286 -946 76 462 -9 930 1011 10 739 0 -947 124 56 20 231 322 10 0 372 -948 481 454 14 308 438 10 0 939 -949 477 483 20 337 424 10 0 443 -950 481 124 10 263 352 10 0 112 -951 389 156 27 692 770 10 0 531 -952 384 16 20 318 413 0 0 1046 -953 492 34 -20 781 871 10 856 0 -954 371 200 -19 217 262 10 727 0 -955 153 235 10 98 174 10 0 488 -956 428 202 24 857 981 0 0 1023 -957 257 391 22 1535 1670 0 0 1037 -958 421 218 10 235 303 10 0 471 -959 206 186 -20 149 257 10 248 0 -960 393 301 30 167 220 10 0 973 -961 204 187 -20 136 244 10 808 0 -962 468 475 10 313 405 10 0 468 -963 477 122 -22 281 410 10 784 0 -964 100 66 -4 1363 1466 10 526 0 -965 489 27 -10 402 470 10 969 0 -966 12 451 -19 311 428 10 642 0 -967 197 270 30 80 142 10 0 484 -968 311 422 29 948 1057 10 0 141 -969 489 17 10 370 419 10 0 965 -970 13 214 -12 1341 1396 10 902 0 -971 440 247 20 222 314 10 0 713 -972 28 467 -20 1299 1417 10 858 0 -973 388 325 -30 221 335 10 960 0 -974 270 401 20 152 241 10 0 436 -975 5 445 30 313 394 10 0 625 -976 198 271 -20 56 172 10 659 0 -977 480 131 -10 656 749 10 675 0 -978 437 98 16 1076 1182 10 0 804 -979 131 246 -14 815 879 10 319 0 -980 49 437 7 397 488 0 0 1010 -981 270 49 30 270 344 10 0 209 -982 337 41 -9 976 1058 10 908 0 -983 318 280 20 74 196 10 0 738 -984 154 392 9 171 263 10 0 168 -985 493 111 26 500 613 10 0 331 -986 399 450 -25 345 403 10 179 0 -987 67 452 30 272 383 10 0 140 -988 34 239 16 216 264 10 0 995 -989 343 276 15 96 237 10 0 472 -990 393 12 10 283 366 10 0 282 -991 236 247 -30 14 146 10 779 0 -992 340 291 -30 449 521 10 792 0 -993 3 292 -10 250 359 10 728 0 -994 209 68 27 1463 1625 0 0 1015 -995 18 225 -16 670 743 10 988 0 -996 147 435 20 211 308 10 0 666 -997 335 99 -10 1217 1249 10 721 0 -998 485 24 -10 326 449 10 504 0 -999 470 475 30 314 396 10 0 72 -1000 341 58 10 212 335 10 0 403 -1001 217 207 -26 1349 1446 10 714 0 -1002 313 282 -20 152 204 10 11 0 -1003 325 147 -14 1163 1241 10 69 0 -1004 179 286 -8 328 385 10 698 0 -1005 60 29 -32 1322 1433 10 79 0 -1006 467 114 -10 338 443 10 35 0 -1007 219 215 -32 46 177 10 234 0 -1008 351 481 -10 296 377 10 353 0 -1009 48 437 -4 796 841 10 348 0 -1010 49 437 -7 397 488 10 980 0 -1011 473 475 -10 383 481 10 848 0 -1012 34 169 -11 427 571 10 80 0 -1013 0 188 -26 890 1005 10 127 0 -1014 175 352 -12 1619 1685 10 246 0 -1015 209 68 -27 1463 1625 10 994 0 -1016 411 421 -20 283 377 10 211 0 -1017 221 291 -9 50 201 10 437 0 -1018 17 65 -20 315 369 10 204 0 -1019 441 273 -20 283 311 10 693 0 -1020 35 304 -30 221 310 10 937 0 -1021 90 477 -18 277 376 10 276 0 -1022 189 402 -10 480 622 10 507 0 -1023 428 202 -24 857 981 10 956 0 -1024 320 211 -16 946 1070 10 669 0 -1025 390 325 -30 192 340 10 201 0 -1026 365 74 -24 858 868 10 236 0 -1027 440 292 -24 888 1022 10 36 0 -1028 466 149 -16 1166 1236 10 611 0 -1029 313 126 -10 235 282 10 709 0 -1030 413 417 -10 341 401 10 473 0 -1031 63 336 -20 223 340 10 381 0 -1032 212 186 -11 1615 1737 10 153 0 -1033 476 61 -36 392 536 10 320 0 -1034 19 273 -25 949 1115 10 907 0 -1035 146 188 -6 1204 1295 10 799 0 -1036 397 153 -29 851 944 10 412 0 -1037 257 391 -22 1535 1670 10 957 0 -1038 213 399 -18 177 321 10 281 0 -1039 239 486 -3 1433 1562 10 13 0 -1040 267 162 -6 1427 1502 10 406 0 -1041 274 441 -12 683 736 10 324 0 -1042 394 47 -5 290 366 10 901 0 -1043 330 281 -14 1298 1393 10 284 0 -1044 208 184 -20 78 167 10 314 0 -1045 440 241 -10 277 355 10 303 0 -1046 384 16 -20 318 413 10 952 0 diff --git a/jsprit-instances/instances/lilim/1000/LRC1108.txt b/jsprit-instances/instances/lilim/1000/LRC1108.txt deleted file mode 100644 index 3cbaab7c7..000000000 --- a/jsprit-instances/instances/lilim/1000/LRC1108.txt +++ /dev/null @@ -1,1046 +0,0 @@ -250 200 1 -0 250 250 0 0 1821 0 0 0 -1 440 436 -10 849 964 10 939 0 -2 214 394 10 178 313 10 0 507 -3 476 483 10 324 443 10 0 290 -4 352 487 -22 854 980 10 277 0 -5 230 197 40 91 183 10 0 605 -6 175 239 -20 75 156 10 991 0 -7 133 202 -10 401 551 10 793 0 -8 328 458 -21 731 834 10 378 0 -9 25 499 -30 415 504 10 318 0 -10 226 423 -18 174 263 10 281 0 -11 313 282 20 121 236 10 0 795 -12 60 454 -30 315 410 10 689 0 -13 239 486 -10 1447 1548 10 628 0 -14 102 264 10 148 282 10 0 304 -15 408 452 10 256 358 10 0 893 -16 451 62 5 275 393 10 0 546 -17 203 390 40 147 254 10 0 440 -18 92 233 10 162 315 10 0 43 -19 7 300 -10 313 406 10 382 0 -20 409 90 20 225 383 10 0 23 -21 307 108 -9 198 306 10 477 0 -22 347 54 10 279 341 10 0 142 -23 406 87 -20 273 382 10 20 0 -24 371 332 14 478 612 10 0 631 -25 116 466 -10 254 334 10 740 0 -26 441 265 40 191 337 0 0 1029 -27 130 140 17 162 256 10 0 342 -28 80 117 24 795 883 10 0 566 -29 421 387 -20 760 872 10 897 0 -30 83 300 -20 488 541 10 818 0 -31 136 52 -20 250 365 10 733 0 -32 18 462 20 345 480 10 0 358 -33 390 120 -10 946 1093 10 323 0 -34 188 119 -24 928 1052 10 633 0 -35 467 114 10 335 446 10 0 749 -36 440 292 -11 896 1015 10 794 0 -37 268 400 20 190 326 0 0 1043 -38 391 202 14 148 235 10 0 629 -39 377 432 -25 786 906 10 301 0 -40 80 290 -20 174 331 10 830 0 -41 439 15 -40 301 420 10 809 0 -42 307 52 -13 893 978 10 129 0 -43 111 192 -10 1149 1279 10 18 0 -44 131 56 10 227 358 10 0 457 -45 88 286 -10 220 314 10 635 0 -46 69 414 -7 1222 1335 10 980 0 -47 41 232 16 209 252 10 0 786 -48 323 77 -18 1381 1460 10 403 0 -49 340 416 -30 302 370 10 436 0 -50 86 199 -10 250 335 10 742 0 -51 314 124 20 177 314 10 0 709 -52 375 191 30 138 254 0 0 1002 -53 226 175 -32 1623 1733 10 789 0 -54 242 106 -20 1224 1342 10 206 0 -55 417 417 10 285 409 10 0 71 -56 419 459 20 268 401 10 0 468 -57 389 11 -10 310 366 10 452 0 -58 450 416 25 512 672 10 0 184 -59 246 255 10 82 174 10 0 244 -60 71 333 10 197 238 10 0 869 -61 105 474 -30 408 564 10 752 0 -62 20 489 -30 341 455 10 593 0 -63 388 331 20 160 224 10 0 931 -64 92 259 4 361 467 10 0 696 -65 200 261 -30 123 239 10 838 0 -66 400 288 -20 154 279 10 472 0 -67 299 285 -8 1196 1341 10 202 0 -68 378 199 -19 166 279 10 114 0 -69 325 147 14 1145 1258 10 0 115 -70 421 386 29 762 917 10 0 662 -71 404 447 -10 250 365 10 55 0 -72 412 478 -10 915 1035 10 681 0 -73 26 67 15 1269 1395 10 0 438 -74 358 183 20 212 285 10 0 531 -75 30 302 -10 226 342 10 645 0 -76 176 470 -30 506 618 10 839 0 -77 96 270 20 155 251 10 0 803 -78 243 408 -11 1386 1512 10 154 0 -79 60 29 32 1305 1450 10 0 555 -80 34 169 -31 444 554 10 462 0 -81 407 280 -20 169 279 10 603 0 -82 277 403 10 155 283 10 0 237 -83 498 456 -20 1368 1473 10 392 0 -84 384 491 -20 306 420 10 986 0 -85 355 174 -14 694 766 10 285 0 -86 97 288 -20 1260 1338 10 737 0 -87 316 284 -30 81 199 10 389 0 -88 334 403 26 174 258 10 0 338 -89 415 223 20 287 352 10 0 471 -90 230 320 -16 1153 1262 10 340 0 -91 432 199 -31 607 700 10 592 0 -92 92 18 -24 1071 1208 10 748 0 -93 273 300 30 55 176 10 0 983 -94 269 112 -20 1225 1331 10 501 0 -95 429 389 -20 387 492 10 211 0 -96 371 71 -20 253 351 10 814 0 -97 5 297 -10 282 410 10 575 0 -98 414 378 -8 445 574 10 724 0 -99 38 15 -28 1029 1183 10 942 0 -100 2 295 -10 264 377 10 728 0 -101 237 254 20 21 176 10 0 744 -102 54 445 10 276 403 10 0 782 -103 382 110 -9 1044 1211 10 674 0 -104 438 488 -20 303 422 10 915 0 -105 395 331 20 171 293 10 0 545 -106 230 487 -12 1097 1193 10 920 0 -107 249 407 10 157 275 10 0 906 -108 488 26 -20 384 512 10 195 0 -109 151 81 -28 1496 1616 10 411 0 -110 483 14 -20 331 456 10 708 0 -111 0 422 -23 787 885 10 835 0 -112 429 67 -10 699 796 10 171 0 -113 195 464 -20 1469 1591 10 220 0 -114 356 256 19 106 256 10 0 68 -115 264 180 -14 1589 1740 10 69 0 -116 94 235 -10 156 294 10 395 0 -117 474 96 30 271 410 10 0 232 -118 268 52 10 267 375 10 0 259 -119 44 440 24 744 863 10 0 766 -120 7 382 -17 734 837 10 147 0 -121 459 53 -36 1089 1186 10 320 0 -122 491 25 -10 367 480 10 504 0 -123 439 243 -20 245 413 10 971 0 -124 210 185 20 76 210 10 0 808 -125 150 68 -20 416 459 10 810 0 -126 201 270 10 52 131 10 0 967 -127 0 188 -21 884 1010 10 510 0 -128 103 464 22 1244 1332 10 0 608 -129 325 56 13 753 870 10 0 42 -130 44 344 12 1029 1159 10 0 163 -131 418 75 -20 396 529 10 941 0 -132 472 57 17 1244 1376 0 0 1042 -133 460 328 -30 224 355 10 491 0 -134 89 270 10 162 292 10 0 193 -135 374 190 -10 137 252 10 602 0 -136 463 253 -20 988 1136 10 707 0 -137 97 93 20 219 323 10 0 898 -138 163 472 -11 623 714 10 825 0 -139 29 336 -21 287 406 10 569 0 -140 84 453 -18 1196 1280 10 946 0 -141 294 421 -33 1550 1630 10 208 0 -142 343 62 -10 277 467 10 22 0 -143 371 193 -30 133 269 10 162 0 -144 142 372 18 162 248 10 0 292 -145 66 88 -4 786 904 10 526 0 -146 395 332 10 166 278 10 0 518 -147 93 413 17 226 333 10 0 120 -148 267 394 -40 197 352 10 225 0 -149 249 258 30 80 203 10 0 178 -150 472 129 10 252 388 0 0 1028 -151 87 3 -10 1401 1495 10 488 0 -152 62 326 -20 243 360 10 334 0 -153 212 186 -25 1621 1737 10 584 0 -154 241 402 11 1000 1080 10 0 78 -155 439 266 10 189 268 10 0 492 -156 79 80 -2 1351 1444 10 174 0 -157 62 453 -10 276 455 10 309 0 -158 188 151 -35 1277 1347 10 508 0 -159 386 154 -13 1047 1185 10 519 0 -160 38 301 -20 243 379 10 615 0 -161 192 265 -22 71 207 10 484 0 -162 371 192 30 134 184 10 0 143 -163 64 294 -12 1064 1168 10 130 0 -164 381 494 10 312 385 10 0 936 -165 437 12 20 302 450 10 0 682 -166 186 135 24 687 778 10 0 723 -167 459 10 -20 318 407 10 231 0 -168 175 422 -20 1383 1540 10 448 0 -169 274 48 -10 203 333 10 533 0 -170 488 173 20 250 376 10 0 756 -171 398 97 10 212 291 10 0 112 -172 385 17 -9 767 880 10 908 0 -173 180 283 23 719 798 10 0 427 -174 71 12 2 297 398 10 0 156 -175 343 49 -10 246 313 10 1000 0 -176 248 251 20 2 100 10 0 695 -177 7 194 -18 874 1059 10 614 0 -178 322 290 -30 1436 1551 10 149 0 -179 410 399 25 218 318 10 0 892 -180 398 103 -10 208 380 10 736 0 -181 385 285 -16 804 962 10 678 0 -182 179 497 1 1383 1470 0 0 1013 -183 464 13 20 350 450 10 0 829 -184 492 335 -25 773 913 10 58 0 -185 27 464 -10 1242 1370 10 550 0 -186 231 29 14 1198 1284 10 0 994 -187 157 38 -18 1007 1118 10 333 0 -188 439 268 10 252 373 10 0 764 -189 149 214 -10 433 561 10 230 0 -190 187 73 -20 236 378 10 852 0 -191 429 169 -27 859 977 10 493 0 -192 350 199 21 1123 1309 10 0 790 -193 60 231 -10 966 1116 10 134 0 -194 448 404 15 556 672 10 0 912 -195 481 20 20 325 437 10 0 108 -196 436 25 -20 1264 1331 10 729 0 -197 111 459 -20 314 434 10 466 0 -198 389 17 10 318 443 10 0 952 -199 148 208 -8 483 600 10 407 0 -200 475 477 -20 375 464 10 773 0 -201 390 325 -30 205 327 10 755 0 -202 346 354 8 773 892 10 0 67 -203 91 266 -17 190 305 10 817 0 -204 17 65 20 297 479 10 0 241 -205 391 112 -10 966 1064 10 889 0 -206 224 203 20 53 127 10 0 54 -207 426 231 -20 992 1095 10 483 0 -208 260 472 33 989 1112 10 0 141 -209 265 0 -30 842 980 10 849 0 -210 391 293 20 187 294 10 0 854 -211 411 421 20 264 396 10 0 95 -212 132 30 -10 279 402 10 621 0 -213 475 480 30 331 458 10 0 949 -214 286 244 31 1248 1349 10 0 269 -215 436 237 20 186 355 10 0 428 -216 402 284 30 155 249 10 0 329 -217 287 397 12 509 650 10 0 722 -218 272 420 -19 1334 1468 10 656 0 -219 477 120 10 286 428 10 0 950 -220 145 434 20 211 360 10 0 113 -221 33 286 -19 1508 1592 10 857 0 -222 370 262 -10 1063 1165 10 771 0 -223 393 20 20 347 465 10 0 646 -224 330 308 -20 1129 1242 10 481 0 -225 246 398 40 148 268 10 0 148 -226 482 184 -20 1048 1196 10 579 0 -227 451 305 13 208 309 10 0 459 -228 226 316 21 70 161 10 0 641 -229 110 459 -20 305 420 10 837 0 -230 244 250 10 6 127 10 0 189 -231 458 16 20 313 442 10 0 167 -232 390 34 -30 1004 1147 10 117 0 -233 423 214 20 176 318 10 0 956 -234 219 215 32 46 135 10 0 261 -235 326 118 10 152 297 10 0 767 -236 365 74 24 788 938 10 0 470 -237 331 356 -10 690 763 10 82 0 -238 210 398 -30 186 252 10 855 0 -239 403 93 10 310 401 10 0 824 -240 248 404 -20 154 262 10 327 0 -241 65 62 -20 906 1076 10 204 0 -242 460 13 20 316 386 10 0 701 -243 0 293 -10 253 422 10 811 0 -244 211 248 -10 39 161 10 59 0 -245 484 174 10 246 362 10 0 249 -246 175 352 -11 1584 1685 10 785 0 -247 455 168 -37 848 916 10 672 0 -248 224 191 20 64 197 10 0 317 -249 439 156 -10 478 604 10 245 0 -250 434 359 -27 1327 1488 10 332 0 -251 118 314 26 285 420 10 0 258 -252 234 246 10 44 116 10 0 305 -253 406 450 -10 253 432 10 431 0 -254 75 118 21 364 485 10 0 879 -255 115 395 11 776 885 0 0 1011 -256 329 456 19 220 348 10 0 807 -257 218 403 -34 1260 1409 10 271 0 -258 149 341 -26 355 483 10 251 0 -259 253 74 -10 1298 1432 10 118 0 -260 436 241 -10 246 438 10 560 0 -261 238 203 -32 69 148 10 234 0 -262 405 455 40 294 418 10 0 680 -263 485 27 -3 391 530 10 454 0 -264 323 118 -30 150 247 10 787 0 -265 330 371 -15 522 626 10 370 0 -266 25 65 10 297 486 10 0 687 -267 406 96 -20 219 377 10 521 0 -268 49 451 -10 284 327 10 664 0 -269 307 249 -31 1341 1442 10 214 0 -270 178 135 -29 1445 1613 10 759 0 -271 299 353 34 114 208 10 0 257 -272 236 213 20 39 188 10 0 344 -273 355 177 20 127 249 10 0 517 -274 394 23 20 351 486 10 0 371 -275 306 235 -19 57 197 10 727 0 -276 90 477 -11 277 328 10 833 0 -277 379 486 22 619 754 10 0 4 -278 435 16 10 334 431 10 0 336 -279 8 497 40 368 477 10 0 704 -280 150 484 -29 572 708 10 668 0 -281 213 399 18 202 295 10 0 10 -282 391 18 10 315 470 0 0 1021 -283 111 392 -9 1116 1253 10 984 0 -284 330 281 -30 1293 1397 10 316 0 -285 344 203 14 106 259 10 0 85 -286 91 235 -10 205 363 10 424 0 -287 346 60 -20 277 395 10 474 0 -288 483 27 20 418 528 10 0 322 -289 382 498 -20 283 365 10 404 0 -290 457 492 -10 475 571 10 3 0 -291 291 213 23 1194 1351 10 0 527 -292 154 374 -18 893 1011 10 144 0 -293 225 196 10 59 175 10 0 391 -294 94 40 -15 1004 1163 10 574 0 -295 0 356 -20 1030 1173 10 366 0 -296 297 283 -20 1308 1421 10 416 0 -297 371 423 10 211 338 10 0 353 -298 417 217 30 170 274 10 0 874 -299 500 228 -20 714 879 10 486 0 -300 412 214 10 165 325 10 0 768 -301 442 289 25 195 363 10 0 39 -302 157 269 -20 1516 1667 10 659 0 -303 440 241 -10 253 380 10 573 0 -304 100 266 -10 150 265 10 14 0 -305 111 178 -10 156 262 10 252 0 -306 91 101 -30 246 381 10 788 0 -307 25 307 -30 232 361 10 937 0 -308 135 400 20 251 376 10 0 551 -309 58 458 10 283 398 10 0 157 -310 133 26 -20 280 374 10 479 0 -311 211 386 20 141 238 10 0 834 -312 94 97 20 218 369 10 0 525 -313 30 155 -15 1215 1375 10 688 0 -314 208 184 20 78 178 10 0 420 -315 394 333 20 166 305 10 0 758 -316 355 180 30 126 188 10 0 284 -317 241 180 -20 1655 1741 10 248 0 -318 21 485 30 328 437 10 0 9 -319 80 251 14 251 386 10 0 945 -320 476 61 36 354 574 10 0 121 -321 406 94 10 220 361 10 0 861 -322 364 71 -20 1315 1412 10 288 0 -323 418 221 10 234 379 10 0 33 -324 274 441 -10 668 751 10 549 0 -325 304 97 20 162 320 10 0 528 -326 297 102 10 155 268 10 0 870 -327 250 405 20 155 250 10 0 240 -328 111 463 -20 293 381 10 465 0 -329 408 279 -30 184 286 10 216 0 -330 263 418 25 252 335 10 0 761 -331 480 119 -40 589 698 10 637 0 -332 420 383 27 923 1071 10 0 250 -333 142 14 18 790 910 10 0 187 -334 73 328 20 193 284 10 0 152 -335 50 438 20 274 431 10 0 634 -336 441 7 -10 351 462 10 278 0 -337 462 14 20 363 462 10 0 873 -338 360 294 -26 1387 1479 10 88 0 -339 58 39 12 1111 1245 10 0 921 -340 58 391 16 851 944 10 0 90 -341 410 285 -20 163 358 10 544 0 -342 96 97 -17 217 324 10 27 0 -343 21 64 -10 295 457 10 881 0 -344 238 210 -20 90 207 10 272 0 -345 479 121 10 263 382 10 0 446 -346 200 178 -20 87 210 10 500 0 -347 216 341 -2 617 720 10 458 0 -348 48 437 -20 778 860 10 703 0 -349 200 270 20 53 145 10 0 610 -350 357 181 20 127 247 10 0 514 -351 476 174 30 273 405 10 0 390 -352 400 286 -10 154 303 10 894 0 -353 351 481 -10 280 394 10 297 0 -354 270 400 10 151 295 10 0 968 -355 95 234 10 155 256 10 0 900 -356 128 113 -12 320 436 10 904 0 -357 133 455 -10 785 861 10 917 0 -358 16 463 -20 321 459 10 32 0 -359 59 388 -30 629 726 10 987 0 -360 376 190 30 139 287 10 0 426 -361 481 122 30 264 412 10 0 780 -362 266 405 -20 181 283 10 974 0 -363 374 232 33 125 255 0 0 1034 -364 398 20 20 273 400 10 0 982 -365 481 26 30 321 455 10 0 456 -366 63 444 20 364 426 10 0 295 -367 89 290 20 165 264 10 0 923 -368 246 314 36 1416 1504 0 0 1026 -369 40 304 -10 1088 1231 10 618 0 -370 262 369 15 119 223 10 0 265 -371 323 29 -20 1098 1206 10 274 0 -372 89 65 -20 685 786 10 947 0 -373 144 35 -10 239 361 10 653 0 -374 200 265 -20 113 222 10 976 0 -375 436 264 20 186 283 10 0 516 -376 15 457 20 313 383 10 0 554 -377 397 20 20 272 410 10 0 990 -378 328 491 21 637 749 10 0 8 -379 399 175 -20 708 816 10 806 0 -380 432 2 20 420 543 0 0 1024 -381 63 336 20 221 341 10 0 387 -382 6 296 10 270 400 10 0 19 -383 146 376 8 187 312 10 0 791 -384 295 247 -16 1259 1378 10 669 0 -385 235 33 30 1285 1418 0 0 1031 -386 233 204 -30 49 181 10 779 0 -387 142 360 -20 1488 1606 10 381 0 -388 177 156 25 119 250 10 0 730 -389 315 287 30 122 204 10 0 87 -390 452 172 -30 590 657 10 351 0 -391 263 153 -10 380 474 10 293 0 -392 493 493 20 801 942 10 0 83 -393 320 283 -30 78 173 10 402 0 -394 64 5 -10 1069 1219 10 422 0 -395 95 235 10 155 242 10 0 116 -396 203 211 -28 1247 1395 10 425 0 -397 16 497 -10 364 518 10 606 0 -398 348 348 -20 913 986 10 685 0 -399 485 104 -10 751 868 10 963 0 -400 330 147 28 796 931 10 0 580 -401 443 237 20 193 288 10 0 692 -402 316 286 30 82 222 10 0 393 -403 335 46 18 1300 1414 10 0 48 -404 381 495 20 286 389 10 0 289 -405 364 173 -20 137 302 10 927 0 -406 267 162 -21 1401 1527 10 864 0 -407 214 245 8 36 134 10 0 199 -408 92 234 10 184 315 10 0 627 -409 347 459 -35 435 554 10 439 0 -410 30 7 23 1145 1262 0 0 1008 -411 120 37 28 727 853 10 0 109 -412 397 153 29 833 961 10 0 595 -413 210 29 -10 1014 1117 10 568 0 -414 87 285 30 200 313 10 0 449 -415 132 32 18 769 830 0 0 1023 -416 390 294 20 199 305 10 0 296 -417 67 451 -11 1178 1284 10 619 0 -418 24 68 20 370 489 10 0 423 -419 146 439 10 224 324 10 0 860 -420 209 212 -20 1507 1578 10 314 0 -421 6 292 10 247 348 10 0 993 -422 18 63 10 297 457 10 0 394 -423 149 98 -20 1133 1227 10 418 0 -424 91 268 10 205 315 10 0 286 -425 103 177 28 556 726 10 0 396 -426 367 178 -30 137 266 10 360 0 -427 225 269 -23 1239 1332 10 173 0 -428 443 246 -20 193 329 10 215 0 -429 306 42 11 433 550 10 0 570 -430 374 306 4 959 1060 0 0 1039 -431 413 421 10 272 363 10 0 253 -432 470 405 17 890 991 0 0 1038 -433 33 278 -16 1433 1571 10 988 0 -434 149 458 -10 1142 1216 10 847 0 -435 257 57 -12 1180 1302 10 720 0 -436 272 403 30 154 300 10 0 49 -437 221 291 9 50 157 10 0 911 -438 1 101 -15 1213 1332 10 73 0 -439 332 459 35 359 409 10 0 409 -440 220 392 -40 231 314 10 17 0 -441 253 50 27 200 365 10 0 964 -442 250 441 -10 690 851 10 534 0 -443 471 484 10 321 446 10 0 658 -444 480 152 -20 996 1077 10 599 0 -445 404 83 30 260 366 10 0 673 -446 476 94 -10 274 405 10 345 0 -447 458 213 -23 1064 1223 10 604 0 -448 215 395 20 184 330 10 0 168 -449 85 288 -30 169 266 10 414 0 -450 179 75 -10 713 796 10 530 0 -451 228 287 21 43 181 10 0 886 -452 397 18 10 274 408 10 0 57 -453 238 204 -10 71 169 10 859 0 -454 488 3 3 365 466 10 0 263 -455 407 88 10 262 417 10 0 638 -456 459 14 -30 315 446 10 365 0 -457 120 17 -10 266 419 10 44 0 -458 235 316 2 600 742 10 0 347 -459 370 382 -13 841 956 10 227 0 -460 405 454 -30 1236 1399 10 639 0 -461 17 458 -10 410 486 10 925 0 -462 43 135 31 236 340 10 0 80 -463 318 497 -5 800 938 10 741 0 -464 199 268 20 54 178 10 0 868 -465 111 467 20 257 364 10 0 328 -466 138 438 20 237 368 10 0 197 -467 172 314 -15 516 605 10 626 0 -468 494 468 -20 327 430 10 56 0 -469 35 303 -12 221 344 10 902 0 -470 341 59 -24 744 866 10 236 0 -471 423 221 -20 223 323 10 89 0 -472 395 295 20 171 281 10 0 66 -473 413 417 10 324 418 0 0 1010 -474 339 60 20 209 330 10 0 287 -475 277 428 7 480 531 0 0 1009 -476 176 199 -30 89 217 10 961 0 -477 265 240 9 18 144 10 0 21 -478 365 190 -27 1443 1541 10 951 0 -479 133 53 20 245 343 10 0 310 -480 387 488 20 290 463 0 0 1012 -481 385 295 20 142 270 10 0 224 -482 491 369 -19 681 809 10 577 0 -483 445 273 20 221 325 10 0 207 -484 195 273 22 59 166 10 0 161 -485 313 493 20 1172 1245 0 0 1033 -486 495 227 20 284 433 10 0 299 -487 241 403 10 156 315 10 0 710 -488 30 72 10 364 530 10 0 151 -489 21 487 10 329 463 10 0 747 -490 324 99 10 286 420 10 0 997 -491 453 318 30 324 453 10 0 133 -492 443 272 -10 223 347 10 155 0 -493 447 184 27 386 493 10 0 191 -494 366 288 29 608 790 10 0 541 -495 440 284 -20 812 922 10 693 0 -496 13 314 14 245 441 10 0 562 -497 72 227 25 522 636 0 0 1005 -498 377 385 6 816 947 0 0 1027 -499 477 478 -10 330 485 10 848 0 -500 204 185 20 130 226 10 0 346 -501 226 191 20 73 143 10 0 94 -502 330 138 -18 1074 1175 10 715 0 -503 185 434 -20 522 655 10 657 0 -504 483 22 10 325 458 10 0 122 -505 71 282 -20 600 714 10 822 0 -506 60 5 18 988 1129 10 0 935 -507 189 402 -10 482 621 10 2 0 -508 134 211 35 122 262 10 0 158 -509 146 313 22 1148 1272 10 0 745 -510 21 146 21 442 561 10 0 127 -511 37 281 17 437 580 10 0 513 -512 416 417 20 293 423 10 0 774 -513 44 311 -17 334 510 10 511 0 -514 361 181 -20 159 266 10 350 0 -515 444 242 10 208 254 10 0 690 -516 444 271 -20 205 317 10 375 0 -517 359 179 -20 130 237 10 273 0 -518 388 334 -10 161 294 10 146 0 -519 401 164 13 595 678 10 0 159 -520 499 316 -20 588 685 10 776 0 -521 399 106 20 267 367 10 0 267 -522 425 215 10 202 286 10 0 890 -523 407 98 10 218 364 0 0 1022 -524 406 460 -30 693 776 10 702 0 -525 88 95 -20 247 324 10 312 0 -526 95 64 4 732 829 10 0 145 -527 306 229 -23 1262 1409 10 291 0 -528 273 55 -20 196 296 10 325 0 -529 384 149 18 1181 1243 0 0 1030 -530 122 35 10 250 336 10 0 450 -531 308 199 -20 1460 1586 10 74 0 -532 390 301 10 149 287 10 0 537 -533 300 108 10 150 264 10 0 169 -534 267 400 10 196 298 10 0 442 -535 8 300 10 301 441 0 0 1025 -536 105 181 -26 1498 1594 10 632 0 -537 398 325 -10 169 327 10 532 0 -538 166 247 1 84 189 10 0 823 -539 140 431 30 211 359 10 0 746 -540 253 118 19 489 635 10 0 769 -541 359 246 -29 1349 1526 10 494 0 -542 321 277 10 75 185 10 0 992 -543 168 59 6 341 421 0 0 1019 -544 406 285 20 159 258 10 0 341 -545 391 334 -20 164 290 10 105 0 -546 437 19 -5 975 1082 10 16 0 -547 201 278 13 56 169 10 0 735 -548 435 267 20 255 421 10 0 777 -549 245 408 10 158 321 10 0 324 -550 16 462 10 346 456 10 0 185 -551 107 374 -20 849 1009 10 308 0 -552 477 97 10 273 414 0 0 1041 -553 346 57 -30 277 369 10 676 0 -554 14 459 -20 315 418 10 376 0 -555 102 6 -32 1424 1522 10 79 0 -556 359 287 24 115 199 10 0 644 -557 297 131 -30 1118 1242 10 612 0 -558 282 1 -10 1014 1100 10 846 0 -559 21 70 -10 741 832 10 851 0 -560 440 244 10 205 358 10 0 260 -561 482 104 -26 745 900 10 985 0 -562 120 261 -14 761 855 10 496 0 -563 125 29 30 253 404 10 0 700 -564 292 32 14 222 360 10 0 750 -565 262 92 -10 575 716 10 706 0 -566 68 160 -24 1098 1203 10 28 0 -567 405 276 -20 201 297 10 691 0 -568 277 50 10 201 317 10 0 413 -569 32 319 21 375 456 10 0 139 -570 344 70 -11 1110 1212 10 429 0 -571 481 84 17 423 619 0 0 1044 -572 21 68 -20 364 468 10 943 0 -573 441 244 10 203 382 10 0 303 -574 57 43 15 989 1088 10 0 294 -575 1 293 10 252 355 10 0 97 -576 481 96 20 277 371 10 0 938 -577 471 368 19 400 486 10 0 482 -578 236 126 23 124 301 10 0 667 -579 406 99 20 217 351 10 0 226 -580 303 186 -28 1316 1422 10 400 0 -581 225 369 38 121 231 10 0 734 -582 412 453 10 259 407 10 0 962 -583 104 349 -30 967 1082 10 609 0 -584 173 182 25 102 267 10 0 153 -585 111 464 10 255 412 0 0 1006 -586 53 440 10 274 402 10 0 705 -587 69 336 20 200 347 10 0 642 -588 359 182 20 162 287 10 0 883 -589 13 459 20 315 431 10 0 858 -590 244 277 -10 1252 1380 10 853 0 -591 484 177 -20 245 378 10 875 0 -592 452 206 31 461 554 10 0 91 -593 22 483 30 325 427 10 0 62 -594 452 110 14 295 415 10 0 865 -595 347 192 -29 1456 1550 10 412 0 -596 95 92 20 221 320 0 0 1036 -597 368 311 -8 873 1009 10 617 0 -598 479 387 13 345 480 10 0 649 -599 479 169 20 247 401 10 0 444 -600 497 266 25 698 828 10 0 775 -601 66 336 10 215 321 10 0 882 -602 376 195 10 150 242 10 0 135 -603 401 281 20 210 343 10 0 81 -604 441 177 23 950 1082 10 0 447 -605 231 203 -40 50 146 10 5 0 -606 21 488 10 330 459 10 0 397 -607 231 204 20 96 235 10 0 660 -608 122 422 -22 1420 1523 10 128 0 -609 65 453 30 274 357 10 0 583 -610 206 261 -20 120 274 10 349 0 -611 466 149 -20 1115 1288 10 841 0 -612 313 119 30 149 313 10 0 557 -613 90 274 20 161 268 10 0 930 -614 39 162 18 507 653 10 0 177 -615 35 306 20 222 301 10 0 160 -616 437 15 -20 300 449 10 856 0 -617 307 412 8 363 474 10 0 597 -618 79 291 10 175 317 10 0 369 -619 64 437 11 867 1000 10 0 417 -620 376 92 10 924 1088 10 0 643 -621 129 27 10 253 387 10 0 212 -622 196 489 -20 1002 1088 10 996 0 -623 51 286 -24 1423 1525 10 694 0 -624 20 488 -10 330 455 10 905 0 -625 13 455 10 313 434 10 0 966 -626 170 347 15 398 503 10 0 467 -627 92 230 -10 159 313 10 408 0 -628 117 467 10 254 357 10 0 13 -629 413 217 -14 166 298 10 38 0 -630 405 450 -10 253 389 10 798 0 -631 394 322 -14 1010 1069 10 24 0 -632 125 61 26 548 705 10 0 536 -633 238 123 24 749 843 10 0 34 -634 11 403 -20 300 416 10 335 0 -635 89 272 10 162 284 10 0 45 -636 304 102 30 161 262 10 0 762 -637 478 121 40 292 376 10 0 331 -638 408 84 -10 249 349 10 455 0 -639 376 494 30 274 402 10 0 460 -640 20 73 10 290 471 10 0 914 -641 159 299 -21 964 1098 10 228 0 -642 95 382 -20 203 307 10 587 0 -643 352 63 -10 1158 1229 10 620 0 -644 365 274 -24 117 230 10 556 0 -645 30 301 10 225 363 10 0 75 -646 351 5 -20 451 571 10 223 0 -647 197 267 -10 55 226 10 871 0 -648 498 171 -20 1261 1281 10 888 0 -649 468 352 -13 712 854 10 598 0 -650 418 251 21 1164 1259 10 0 801 -651 489 437 29 641 802 10 0 840 -652 251 63 -30 921 1084 10 981 0 -653 132 55 10 227 343 10 0 373 -654 281 96 -10 1068 1214 10 844 0 -655 333 293 -15 541 724 10 989 0 -656 255 487 19 343 483 10 0 218 -657 207 400 20 156 262 10 0 503 -658 469 489 -10 523 618 10 443 0 -659 244 254 20 33 197 10 0 302 -660 233 207 -20 46 177 10 607 0 -661 441 60 21 1434 1514 10 0 726 -662 411 379 -29 1133 1284 10 70 0 -663 178 72 -30 721 822 10 743 0 -664 51 447 10 289 329 10 0 268 -665 478 118 -22 300 438 10 784 0 -666 141 426 23 493 600 0 0 1015 -667 295 89 -23 714 800 10 578 0 -668 112 433 29 229 383 10 0 280 -669 320 211 16 942 1073 10 0 384 -670 400 103 10 216 326 10 0 903 -671 408 453 10 257 385 10 0 831 -672 435 180 37 197 344 10 0 247 -673 432 66 -30 1016 1156 10 445 0 -674 374 116 9 524 680 10 0 103 -675 478 102 -20 279 400 10 716 0 -676 335 57 30 210 289 10 0 553 -677 385 239 -10 747 855 10 954 0 -678 386 245 16 452 536 10 0 181 -679 208 396 20 151 261 10 0 876 -680 380 489 -40 342 445 10 262 0 -681 380 498 10 280 408 10 0 72 -682 440 7 -20 308 397 10 165 0 -683 434 245 -10 275 439 10 713 0 -684 90 232 10 161 295 10 0 772 -685 389 334 20 162 299 10 0 398 -686 241 205 30 45 233 10 0 757 -687 18 24 -10 568 718 10 266 0 -688 57 183 15 1039 1191 10 0 313 -689 59 457 30 299 399 10 0 12 -690 442 243 -10 240 368 10 515 0 -691 402 281 20 192 338 10 0 567 -692 445 237 -20 195 383 10 401 0 -693 441 273 20 228 366 10 0 495 -694 31 175 24 231 397 10 0 623 -695 234 202 -20 54 135 10 176 0 -696 52 303 -4 408 504 10 64 0 -697 167 445 -30 1383 1471 10 867 0 -698 179 286 -5 289 424 10 922 0 -699 269 48 20 244 347 10 0 940 -700 165 59 -30 907 1009 10 563 0 -701 461 8 -20 321 449 10 242 0 -702 421 415 30 237 412 10 0 524 -703 59 459 20 283 407 10 0 348 -704 24 492 -40 413 540 10 279 0 -705 55 449 -10 278 414 10 586 0 -706 224 192 10 63 157 10 0 565 -707 444 269 20 194 335 10 0 136 -708 491 20 20 366 451 10 0 110 -709 313 126 -20 164 353 10 51 0 -710 283 438 -10 200 292 10 487 0 -711 352 241 5 770 845 0 0 1014 -712 398 476 -30 396 471 10 719 0 -713 442 247 10 197 316 10 0 683 -714 217 207 -10 1356 1439 10 955 0 -715 233 87 18 186 349 10 0 502 -716 479 127 20 259 402 10 0 675 -717 6 53 -10 543 660 10 816 0 -718 478 300 -19 834 975 10 778 0 -719 378 493 30 274 413 10 0 712 -720 303 78 12 179 243 10 0 435 -721 344 62 10 301 421 10 0 781 -722 371 315 -12 1119 1243 10 217 0 -723 200 78 -24 960 1056 10 166 0 -724 413 391 8 215 349 10 0 98 -725 415 216 10 168 322 10 0 958 -726 397 57 -21 1432 1550 10 661 0 -727 293 228 19 48 206 10 0 275 -728 0 297 10 268 347 10 0 100 -729 435 20 20 344 449 10 0 196 -730 195 111 -25 942 1085 10 388 0 -731 417 218 10 257 329 10 0 891 -732 340 54 10 215 326 10 0 901 -733 132 57 20 226 300 10 0 31 -734 210 379 -38 661 787 10 581 0 -735 228 260 -13 1563 1678 10 547 0 -736 399 104 10 224 385 10 0 180 -737 95 277 20 222 357 10 0 86 -738 360 284 -30 613 750 10 792 0 -739 53 466 9 292 416 10 0 975 -740 112 465 10 255 373 10 0 25 -741 313 391 5 154 261 10 0 463 -742 93 235 10 195 327 10 0 50 -743 125 32 30 251 330 10 0 663 -744 215 282 -20 1380 1530 10 101 0 -745 224 320 -22 1231 1366 10 509 0 -746 134 428 -30 253 393 10 539 0 -747 26 490 -10 429 551 10 489 0 -748 44 115 24 246 389 10 0 92 -749 438 127 -10 893 1019 10 35 0 -750 239 15 -14 550 688 10 564 0 -751 342 54 20 216 317 10 0 819 -752 109 463 30 284 413 10 0 61 -753 199 187 20 90 194 0 0 1004 -754 201 188 10 79 251 10 0 872 -755 399 301 30 157 312 10 0 201 -756 484 171 -20 246 392 10 170 0 -757 272 234 -30 1538 1673 10 686 0 -758 380 350 -20 807 956 10 315 0 -759 140 108 29 1027 1145 10 0 270 -760 228 199 -20 96 203 10 763 0 -761 245 461 -25 615 714 10 330 0 -762 305 107 -30 160 321 10 636 0 -763 231 195 20 77 172 10 0 760 -764 450 265 -10 200 349 10 188 0 -765 273 149 -12 1457 1578 10 796 0 -766 12 358 -24 1177 1302 10 119 0 -767 315 121 -10 152 284 10 235 0 -768 420 213 -10 173 341 10 300 0 -769 331 134 -19 1086 1192 10 540 0 -770 84 377 -15 902 981 10 880 0 -771 320 280 10 76 208 10 0 222 -772 89 185 -10 537 693 10 684 0 -773 472 481 20 320 431 10 0 200 -774 422 420 -20 241 405 10 512 0 -775 475 267 -25 719 871 10 600 0 -776 470 125 20 253 349 10 0 520 -777 435 268 -20 270 384 10 548 0 -778 409 155 19 185 288 10 0 718 -779 243 248 30 7 171 10 0 386 -780 488 96 -30 1019 1143 10 361 0 -781 341 72 -10 747 893 10 721 0 -782 58 449 -10 305 451 10 102 0 -783 16 460 -10 371 481 10 924 0 -784 480 136 22 256 381 10 0 665 -785 162 388 11 1080 1203 10 0 246 -786 47 208 -16 207 323 10 47 0 -787 324 127 30 143 254 10 0 264 -788 87 96 30 224 379 10 0 306 -789 140 137 32 525 645 10 0 53 -790 314 205 -21 1490 1593 10 192 0 -791 96 346 -8 181 359 10 383 0 -792 321 280 30 77 180 10 0 738 -793 245 251 10 5 162 10 0 7 -794 436 295 11 511 575 10 0 36 -795 274 261 -20 1672 1772 10 11 0 -796 271 128 12 292 430 10 0 765 -797 275 45 20 206 310 10 0 836 -798 422 409 10 234 353 10 0 630 -799 146 188 -30 1168 1332 10 887 0 -800 93 96 20 219 317 10 0 832 -801 409 255 -21 1446 1629 10 650 0 -802 449 428 -20 1188 1336 10 910 0 -803 90 285 -20 225 358 10 77 0 -804 415 95 -16 1113 1270 10 978 0 -805 88 287 30 229 328 10 0 845 -806 379 196 20 139 288 10 0 379 -807 368 452 -19 636 734 10 256 0 -808 202 186 -20 113 220 10 124 0 -809 435 11 40 302 414 10 0 41 -810 269 46 20 227 341 10 0 125 -811 7 292 10 246 335 10 0 243 -812 44 496 32 374 460 10 0 972 -813 478 99 -20 273 408 10 896 0 -814 391 99 20 206 352 10 0 96 -815 132 477 25 260 425 10 0 913 -816 24 65 10 320 440 10 0 717 -817 130 247 17 120 256 10 0 203 -818 133 273 20 119 279 10 0 30 -819 347 62 -20 285 411 10 751 0 -820 404 140 8 1209 1339 10 0 877 -821 416 420 -20 241 369 10 828 0 -822 67 335 20 201 344 10 0 505 -823 92 270 -1 226 318 10 538 0 -824 411 95 -10 223 358 10 239 0 -825 132 479 11 257 363 10 0 138 -826 366 334 -30 368 483 10 960 0 -827 125 39 20 245 341 10 0 916 -828 419 422 20 241 375 10 0 821 -829 460 2 -20 324 489 10 183 0 -830 67 334 20 201 376 10 0 40 -831 448 414 -10 1182 1293 10 671 0 -832 46 163 -20 857 1025 10 800 0 -833 77 465 11 275 395 10 0 276 -834 284 319 -20 763 901 10 311 0 -835 102 422 23 226 346 10 0 111 -836 240 34 -20 1431 1595 10 797 0 -837 141 428 20 208 317 10 0 229 -838 204 269 30 49 143 10 0 65 -839 144 439 30 238 334 10 0 76 -840 470 417 -29 686 817 10 651 0 -841 404 103 20 212 370 10 0 611 -842 5 281 -8 1333 1441 10 995 0 -843 487 320 21 793 952 0 0 1017 -844 398 23 10 270 377 10 0 654 -845 90 296 -30 166 287 10 805 0 -846 386 13 10 301 403 10 0 558 -847 115 465 10 253 383 10 0 434 -848 473 475 10 365 500 10 0 499 -849 275 42 30 209 325 10 0 209 -850 286 356 30 111 206 10 0 862 -851 15 69 10 296 398 10 0 559 -852 267 44 20 214 327 10 0 190 -853 243 399 10 197 303 10 0 590 -854 390 249 -20 550 643 10 210 0 -855 210 391 30 146 288 10 0 238 -856 433 15 20 297 404 10 0 616 -857 24 259 19 351 420 10 0 221 -858 12 463 -20 332 419 10 589 0 -859 237 213 10 86 237 10 0 453 -860 182 480 -10 327 433 10 419 0 -861 409 88 -10 226 355 10 321 0 -862 244 368 -30 356 503 10 850 0 -863 381 328 -10 682 782 10 973 0 -864 213 185 21 74 161 10 0 406 -865 482 141 -14 965 1086 10 594 0 -866 319 124 20 143 285 10 0 933 -867 141 431 30 211 387 10 0 697 -868 198 264 -20 84 226 10 464 0 -869 69 334 -10 199 331 10 60 0 -870 299 98 -10 159 290 10 326 0 -871 240 250 10 10 143 10 0 647 -872 199 203 -10 1418 1526 10 754 0 -873 459 17 -20 332 521 10 337 0 -874 423 217 -30 176 377 10 298 0 -875 477 179 20 237 348 10 0 591 -876 213 397 -20 188 276 10 679 0 -877 405 187 -8 1215 1316 10 820 0 -878 269 402 -10 188 248 10 932 0 -879 53 204 -21 1020 1120 10 254 0 -880 13 394 15 347 428 10 0 770 -881 15 68 10 297 382 10 0 343 -882 56 268 -10 987 1171 10 601 0 -883 360 184 -20 184 288 10 588 0 -884 307 102 40 179 270 10 0 926 -885 130 57 40 227 372 0 0 1018 -886 250 328 -21 191 336 10 451 0 -887 91 231 30 160 275 10 0 799 -888 479 176 20 240 362 10 0 648 -889 420 224 10 399 489 10 0 205 -890 461 182 -10 580 707 10 522 0 -891 418 218 -10 240 325 10 731 0 -892 419 418 -25 238 398 10 179 0 -893 336 493 -10 1439 1554 10 15 0 -894 389 300 10 147 291 10 0 352 -895 92 76 4 1108 1200 0 0 1003 -896 476 102 20 289 413 10 0 813 -897 418 399 20 390 515 10 0 29 -898 109 56 -20 239 406 10 137 0 -899 13 465 31 716 861 0 0 1035 -900 92 232 -10 159 273 10 355 0 -901 394 47 -10 282 373 10 732 0 -902 16 287 12 236 357 10 0 469 -903 399 102 -10 214 350 10 670 0 -904 143 158 12 141 231 10 0 356 -905 18 484 10 329 435 10 0 624 -906 250 411 -10 161 264 10 107 0 -907 19 273 -4 955 1109 10 919 0 -908 365 28 9 250 334 10 0 172 -909 387 297 10 144 242 0 0 1020 -910 433 447 20 755 863 10 0 802 -911 214 274 -9 1311 1457 10 437 0 -912 489 338 -15 1366 1459 10 194 0 -913 130 494 -25 701 847 10 815 0 -914 23 67 -10 342 466 10 640 0 -915 374 489 20 269 398 10 0 104 -916 126 30 -20 252 419 10 827 0 -917 112 467 10 260 321 10 0 357 -918 489 274 31 480 618 10 0 928 -919 61 214 4 291 422 10 0 907 -920 166 440 12 207 308 10 0 106 -921 56 75 -12 1393 1512 10 339 0 -922 210 276 5 47 221 10 0 698 -923 80 286 -20 206 271 10 367 0 -924 17 459 10 367 507 10 0 783 -925 66 448 10 270 397 10 0 461 -926 351 128 -40 1202 1334 10 884 0 -927 352 176 20 126 213 10 0 405 -928 490 286 -31 495 580 10 918 0 -929 247 219 17 31 172 0 0 1032 -930 86 268 -20 192 273 10 613 0 -931 398 329 -20 167 206 10 63 0 -932 272 402 10 153 324 10 0 878 -933 317 123 -20 160 251 10 866 0 -934 408 318 15 585 731 0 0 1001 -935 66 31 -18 1008 1119 10 506 0 -936 425 448 -10 760 859 10 164 0 -937 35 304 30 221 335 10 0 307 -938 471 94 -20 955 1073 10 576 0 -939 470 473 10 356 536 10 0 1 -940 224 56 -20 1151 1251 10 699 0 -941 343 47 20 225 359 10 0 131 -942 52 18 28 821 922 10 0 99 -943 16 68 20 296 414 10 0 572 -944 195 185 -10 85 191 10 959 0 -945 92 236 -14 210 335 10 319 0 -946 76 462 18 900 1041 10 0 140 -947 124 56 20 231 370 10 0 372 -948 481 454 -30 308 429 10 999 0 -949 477 483 -30 326 435 10 213 0 -950 481 124 -10 263 351 10 219 0 -951 389 156 27 649 813 10 0 478 -952 384 16 -10 309 423 10 198 0 -953 492 34 -20 752 899 10 998 0 -954 371 200 10 185 293 10 0 677 -955 153 235 10 98 221 10 0 714 -956 428 202 -20 866 972 10 233 0 -957 257 391 22 1550 1670 0 0 1016 -958 421 218 -10 219 320 10 725 0 -959 206 186 10 135 270 10 0 944 -960 393 301 30 151 242 10 0 826 -961 204 187 30 116 264 10 0 476 -962 468 475 -10 313 432 10 582 0 -963 477 122 10 278 412 10 0 399 -964 100 66 -27 1343 1487 10 441 0 -965 489 27 -10 350 523 10 969 0 -966 12 451 -10 311 461 10 625 0 -967 197 270 -10 60 162 10 126 0 -968 311 422 -10 953 1053 10 354 0 -969 489 17 10 339 450 10 0 965 -970 13 214 21 1316 1421 0 0 1037 -971 440 247 20 207 330 10 0 123 -972 28 467 -32 1303 1412 10 812 0 -973 388 325 10 231 325 10 0 863 -974 270 401 20 152 309 10 0 362 -975 5 445 -9 313 476 10 739 0 -976 198 271 20 56 175 10 0 374 -977 480 131 5 661 744 0 0 1040 -978 437 98 16 1067 1191 10 0 804 -979 131 246 17 799 895 0 0 1007 -980 49 437 7 385 499 10 0 46 -981 270 49 30 216 398 10 0 652 -982 337 41 -20 952 1083 10 364 0 -983 318 280 -30 74 171 10 93 0 -984 154 392 9 171 296 10 0 283 -985 493 111 26 477 636 10 0 561 -986 399 450 20 301 447 10 0 84 -987 67 452 30 272 377 10 0 359 -988 34 239 16 216 348 10 0 433 -989 343 276 15 96 210 10 0 655 -990 393 12 -20 277 484 10 377 0 -991 236 247 20 14 150 10 0 6 -992 340 291 -10 432 538 10 542 0 -993 3 292 -10 250 371 10 421 0 -994 209 68 -14 1476 1625 10 186 0 -995 18 225 8 647 765 10 0 842 -996 147 435 20 211 309 10 0 622 -997 335 99 -10 1158 1309 10 490 0 -998 485 24 20 326 487 10 0 953 -999 470 475 30 314 420 10 0 948 -1000 341 58 10 212 333 10 0 175 -1001 408 318 -15 585 731 10 934 0 -1002 375 191 -30 138 254 10 52 0 -1003 92 76 -4 1108 1200 10 895 0 -1004 199 187 -20 90 194 10 753 0 -1005 72 227 -25 522 636 10 497 0 -1006 111 464 -10 255 412 10 585 0 -1007 131 246 -17 799 895 10 979 0 -1008 30 7 -23 1145 1262 10 410 0 -1009 277 428 -7 480 531 10 475 0 -1010 413 417 -10 324 418 10 473 0 -1011 115 395 -11 776 885 10 255 0 -1012 387 488 -20 290 463 10 480 0 -1013 179 497 -1 1383 1470 10 182 0 -1014 352 241 -5 770 845 10 711 0 -1015 141 426 -23 493 600 10 666 0 -1016 257 391 -22 1550 1670 10 957 0 -1017 487 320 -21 793 952 10 843 0 -1018 130 57 -40 227 372 10 885 0 -1019 168 59 -6 341 421 10 543 0 -1020 387 297 -10 144 242 10 909 0 -1021 391 18 -10 315 470 10 282 0 -1022 407 98 -10 218 364 10 523 0 -1023 132 32 -18 769 830 10 415 0 -1024 432 2 -20 420 543 10 380 0 -1025 8 300 -10 301 441 10 535 0 -1026 246 314 -36 1416 1504 10 368 0 -1027 377 385 -6 816 947 10 498 0 -1028 472 129 -10 252 388 10 150 0 -1029 441 265 -40 191 337 10 26 0 -1030 384 149 -18 1181 1243 10 529 0 -1031 235 33 -30 1285 1418 10 385 0 -1032 247 219 -17 31 172 10 929 0 -1033 313 493 -20 1172 1245 10 485 0 -1034 374 232 -33 125 255 10 363 0 -1035 13 465 -31 716 861 10 899 0 -1036 95 92 -20 221 320 10 596 0 -1037 13 214 -21 1316 1421 10 970 0 -1038 470 405 -17 890 991 10 432 0 -1039 374 306 -4 959 1060 10 430 0 -1040 480 131 -5 661 744 10 977 0 -1041 477 97 -10 273 414 10 552 0 -1042 472 57 -17 1244 1376 10 132 0 -1043 268 400 -20 190 326 10 37 0 -1044 481 84 -17 423 619 10 571 0 diff --git a/jsprit-instances/instances/lilim/1000/LRC1109.txt b/jsprit-instances/instances/lilim/1000/LRC1109.txt deleted file mode 100644 index 466dc2e78..000000000 --- a/jsprit-instances/instances/lilim/1000/LRC1109.txt +++ /dev/null @@ -1,1050 +0,0 @@ -250 200 1 -0 250 250 0 0 1821 0 0 0 -1 440 436 -13 847 967 10 598 0 -2 214 394 10 186 306 10 0 384 -3 476 483 10 324 444 0 0 1037 -4 352 487 -22 857 977 10 277 0 -5 230 197 40 77 197 0 0 1048 -6 175 239 23 75 195 10 0 508 -7 133 202 -10 416 536 10 610 0 -8 328 458 17 723 843 10 0 498 -9 25 499 10 400 520 10 0 747 -10 226 423 15 174 294 10 0 507 -11 313 282 20 118 238 10 0 992 -12 60 454 10 302 422 10 0 609 -13 239 486 -1 1437 1557 10 182 0 -14 102 264 10 148 268 10 0 134 -15 408 452 10 256 376 10 0 986 -16 451 62 5 275 395 10 0 122 -17 203 390 40 147 267 0 0 1012 -18 92 233 10 179 299 0 0 1020 -19 7 300 30 300 420 10 0 842 -20 409 90 20 225 345 10 0 673 -21 307 108 10 192 312 10 0 884 -22 347 54 10 250 370 10 0 646 -23 406 87 -10 268 388 10 455 0 -24 371 332 14 485 605 10 0 222 -25 116 466 20 254 374 10 0 328 -26 441 265 40 191 311 0 0 1011 -27 130 140 17 162 282 0 0 1007 -28 80 117 -20 779 899 10 525 0 -29 421 387 -15 756 876 10 194 0 -30 83 300 -10 455 575 10 45 0 -31 136 52 10 248 368 10 0 333 -32 18 462 20 353 473 10 0 924 -33 390 120 24 959 1079 10 0 595 -34 188 119 44 930 1050 0 0 1042 -35 467 114 10 331 451 10 0 219 -36 440 292 -30 895 1015 10 491 0 -37 268 400 20 198 318 10 0 710 -38 391 202 14 148 268 10 0 677 -39 377 432 20 786 906 0 0 1013 -40 80 290 -20 174 294 10 449 0 -41 439 15 20 301 421 0 0 1045 -42 307 52 -30 875 995 10 870 0 -43 111 192 -18 1154 1274 10 614 0 -44 131 56 10 227 347 10 0 109 -45 88 286 10 207 327 10 0 30 -46 69 414 -4 1218 1338 10 348 0 -47 41 232 16 209 329 10 0 811 -48 323 77 -24 1360 1480 10 570 0 -49 340 416 -26 276 396 10 88 0 -50 86 199 -30 233 353 10 887 0 -51 314 124 -20 186 306 10 866 0 -52 375 191 30 138 258 10 0 405 -53 226 175 -27 1613 1733 10 700 0 -54 242 106 -23 1223 1343 10 663 0 -55 417 417 10 287 407 10 0 828 -56 419 459 20 271 391 0 0 1001 -57 389 11 20 278 398 10 0 322 -58 450 416 25 532 652 10 0 83 -59 246 255 10 68 188 10 0 149 -60 71 333 10 197 317 10 0 461 -61 105 474 -20 426 546 10 197 0 -62 20 489 -10 338 458 10 624 0 -63 388 331 -19 160 280 10 114 0 -64 92 259 4 354 474 10 0 193 -65 200 261 10 121 241 10 0 189 -66 400 288 30 154 274 10 0 548 -67 299 285 -20 1209 1329 10 448 0 -68 378 199 10 162 282 10 0 89 -69 325 147 -15 1142 1262 10 926 0 -70 421 386 -18 779 899 10 95 0 -71 404 447 20 250 370 10 0 524 -72 412 478 -40 915 1035 10 262 0 -73 26 67 -10 1272 1392 10 816 0 -74 358 183 -30 189 309 10 360 0 -75 30 302 10 226 346 10 0 382 -76 176 470 -12 502 622 10 920 0 -77 96 270 20 155 275 10 0 203 -78 243 408 -20 1389 1509 10 362 0 -79 60 29 -12 1318 1438 10 339 0 -80 34 169 11 439 559 10 0 510 -81 407 280 -20 164 284 10 544 0 -82 277 403 -20 155 275 10 327 0 -83 498 456 -25 1361 1481 10 58 0 -84 384 491 -30 303 423 10 719 0 -85 355 174 33 670 790 10 0 400 -86 97 288 -20 1239 1359 10 818 0 -87 316 284 -30 80 200 10 402 0 -88 334 403 26 174 294 10 0 49 -89 415 223 -10 260 380 10 68 0 -90 230 320 8 1147 1267 10 0 368 -91 432 199 -10 594 714 10 690 0 -92 92 18 -30 1079 1199 10 457 0 -93 273 300 30 55 175 10 0 389 -94 269 112 19 1218 1338 10 0 765 -95 429 389 18 379 499 10 0 70 -96 371 71 -10 242 362 10 321 0 -97 5 297 10 286 406 10 0 575 -98 414 378 -20 450 570 10 518 0 -99 38 15 -18 1046 1166 10 506 0 -100 2 295 30 261 381 10 0 243 -101 237 254 20 38 158 10 0 199 -102 54 445 10 276 396 10 0 782 -103 382 110 -15 1067 1187 10 804 0 -104 438 488 18 303 423 10 0 290 -105 395 331 20 172 292 0 0 1032 -106 230 487 -30 1085 1205 10 867 0 -107 249 407 10 157 277 10 0 932 -108 488 26 -20 388 508 10 998 0 -109 151 81 -10 1496 1616 10 44 0 -110 483 14 -10 331 451 10 504 0 -111 0 422 8 776 896 10 0 766 -112 429 67 -20 687 807 10 861 0 -113 195 464 -9 1471 1591 10 138 0 -114 356 256 19 106 226 10 0 63 -115 264 180 -25 1620 1740 10 557 0 -116 94 235 20 156 276 10 0 286 -117 474 96 -10 271 391 10 813 0 -118 268 52 10 261 381 10 0 169 -119 44 440 -20 744 864 10 589 0 -120 7 382 27 725 845 0 0 1047 -121 459 53 20 1077 1197 10 0 661 -122 491 25 -5 364 484 10 16 0 -123 439 243 20 269 389 10 0 207 -124 210 185 20 76 196 10 0 959 -125 150 68 -27 378 498 10 441 0 -126 201 270 -30 52 172 10 838 0 -127 0 188 -29 887 1007 10 177 0 -128 103 464 -20 1228 1348 10 679 0 -129 325 56 -10 751 871 10 490 0 -130 44 344 12 1034 1154 10 0 221 -131 418 75 11 403 523 10 0 726 -132 472 57 -5 1250 1370 10 953 0 -133 460 328 13 224 344 10 0 184 -134 89 270 -10 162 282 10 14 0 -135 374 190 20 137 257 0 0 1039 -136 463 253 -10 1002 1122 10 573 0 -137 97 93 20 219 339 10 0 800 -138 163 472 9 608 728 10 0 113 -139 29 336 -30 287 407 10 937 0 -140 84 453 -23 1178 1298 10 666 0 -141 294 421 -29 1515 1635 10 968 0 -142 343 62 -10 312 432 10 1000 0 -143 371 193 -30 133 253 10 162 0 -144 142 372 18 162 282 10 0 255 -145 66 88 -25 785 905 10 388 0 -146 395 332 10 166 286 10 0 685 -147 93 413 17 226 346 10 0 366 -148 267 394 10 214 334 10 0 617 -149 249 258 -10 82 202 10 59 0 -150 472 129 10 252 372 10 0 446 -151 87 3 13 1388 1508 10 0 555 -152 62 326 20 241 361 10 0 511 -153 212 186 -15 1617 1737 10 574 0 -154 241 402 11 980 1100 10 0 957 -155 439 266 10 189 309 10 0 693 -156 79 80 -22 1337 1457 10 356 0 -157 62 453 -10 276 396 10 664 0 -158 188 151 7 1252 1372 10 0 872 -159 386 154 -9 1056 1176 10 674 0 -160 38 301 -10 251 371 10 923 0 -161 192 265 10 79 199 10 0 304 -162 371 192 30 134 254 10 0 143 -163 64 294 -28 1056 1176 10 882 0 -164 381 494 -20 288 408 10 915 0 -165 437 12 -20 302 422 10 856 0 -166 186 135 -25 673 793 10 584 0 -167 459 10 10 318 438 10 0 701 -168 175 422 -36 1401 1521 10 292 0 -169 274 48 -10 203 323 10 118 0 -170 488 173 20 250 370 10 0 648 -171 398 97 10 212 332 10 0 638 -172 385 17 -10 764 884 10 846 0 -173 180 283 23 699 819 10 0 744 -174 71 12 2 297 417 10 0 687 -175 343 49 -20 221 341 10 751 0 -176 248 251 20 2 122 10 0 531 -177 7 194 29 906 1026 10 0 127 -178 322 290 -30 1434 1554 10 792 0 -179 410 399 25 218 338 10 0 512 -180 398 103 30 233 353 10 0 824 -181 385 285 13 823 943 10 0 541 -182 179 497 1 1366 1486 10 0 13 -183 464 13 20 340 460 10 0 365 -184 492 335 -13 783 903 10 133 0 -185 27 464 -20 1246 1366 10 858 0 -186 231 29 -12 1181 1301 10 391 0 -187 157 38 3 1003 1123 0 0 1029 -188 439 268 10 253 373 10 0 482 -189 149 214 -10 437 557 10 65 0 -190 187 73 18 247 367 10 0 543 -191 429 169 8 858 978 0 0 1022 -192 350 199 -29 1156 1276 10 412 0 -193 60 231 -4 981 1101 10 64 0 -194 448 404 15 554 674 10 0 29 -195 481 20 20 325 445 10 0 288 -196 436 25 -20 1237 1357 10 336 0 -197 111 459 20 314 434 10 0 61 -198 389 17 10 321 441 0 0 1002 -199 148 208 -20 481 601 10 101 0 -200 475 477 -30 360 480 10 999 0 -201 390 325 -30 206 326 10 960 0 -202 346 354 -34 772 892 10 271 0 -203 91 266 -20 188 308 10 77 0 -204 17 65 20 297 417 10 0 266 -205 391 112 24 955 1075 10 0 580 -206 224 203 20 53 173 10 0 500 -207 426 231 -20 983 1103 10 123 0 -208 260 472 -7 991 1111 10 475 0 -209 265 0 10 851 971 10 0 558 -210 391 293 20 181 301 0 0 1040 -211 411 421 20 270 390 10 0 218 -212 132 30 -26 281 401 10 373 0 -213 475 480 -20 334 454 10 499 0 -214 286 244 31 1239 1359 10 0 757 -215 436 237 -10 186 306 10 352 0 -216 402 284 30 155 275 10 0 777 -217 287 397 -30 519 639 10 436 0 -218 272 420 -20 1341 1461 10 211 0 -219 477 120 -10 297 417 10 35 0 -220 145 434 -20 211 331 10 996 0 -221 33 286 -12 1472 1592 10 130 0 -222 370 262 -14 1054 1174 10 24 0 -223 393 20 -9 346 466 10 908 0 -224 330 308 24 1125 1245 10 0 284 -225 246 398 40 148 268 10 0 503 -226 482 184 14 1062 1182 10 0 611 -227 451 305 -25 208 328 10 301 0 -228 226 316 21 70 190 10 0 269 -229 110 459 -20 303 423 10 466 0 -230 244 250 10 6 126 10 0 607 -231 458 16 20 313 433 10 0 829 -232 390 34 -20 1015 1135 10 941 0 -233 423 214 -10 176 296 10 768 0 -234 219 215 -20 46 166 10 272 0 -235 326 118 -25 152 272 10 275 0 -236 365 74 24 803 923 10 0 620 -237 331 356 13 667 787 0 0 1038 -238 210 398 10 159 279 10 0 946 -239 403 93 -10 296 416 10 670 0 -240 248 404 30 154 274 10 0 354 -241 65 62 -21 931 1051 10 254 0 -242 460 13 -20 316 436 10 456 0 -243 0 293 -30 253 373 10 100 0 -244 211 248 -10 39 159 10 871 0 -245 484 174 10 246 366 10 0 820 -246 175 352 -30 1565 1685 10 344 0 -247 455 168 -9 822 942 10 471 0 -248 224 191 -10 64 184 10 293 0 -249 439 156 -36 481 601 10 320 0 -250 434 359 -17 1347 1467 10 432 0 -251 118 314 -10 293 413 10 859 0 -252 234 246 -10 20 140 10 793 0 -253 406 450 20 253 373 10 0 460 -254 75 118 21 364 484 10 0 241 -255 115 395 -18 770 890 10 144 0 -256 329 456 19 220 340 10 0 378 -257 218 403 -31 1274 1394 10 860 0 -258 149 341 -17 359 479 10 929 0 -259 253 74 -13 1305 1425 10 413 0 -260 436 241 -20 282 402 10 971 0 -261 238 203 10 49 169 10 0 796 -262 405 455 40 296 416 10 0 72 -263 485 27 -10 401 521 10 969 0 -264 323 118 20 150 270 10 0 767 -265 330 371 1 514 634 10 0 338 -266 25 65 -20 331 451 10 204 0 -267 406 96 20 219 339 10 0 978 -268 49 451 20 284 404 10 0 705 -269 307 249 -21 1332 1452 10 228 0 -270 178 135 -29 1469 1589 10 759 0 -271 299 353 34 114 234 10 0 202 -272 236 213 20 39 159 10 0 234 -273 355 177 -30 127 247 10 316 0 -274 394 23 -20 359 479 10 364 0 -275 306 235 25 57 177 10 0 235 -276 90 477 18 277 397 10 0 434 -277 379 486 22 627 747 10 0 4 -278 435 16 -20 322 442 10 729 0 -279 8 497 40 363 483 10 0 704 -280 150 484 -25 580 700 10 815 0 -281 213 399 18 189 309 10 0 296 -282 391 18 10 333 453 10 0 452 -283 111 392 18 1124 1244 0 0 1024 -284 330 281 -24 1285 1405 10 224 0 -285 344 203 14 122 242 10 0 787 -286 91 235 -20 224 344 10 116 0 -287 346 60 -20 276 396 10 474 0 -288 483 27 -20 413 533 10 195 0 -289 382 498 -30 280 400 10 639 0 -290 457 492 -18 463 583 10 104 0 -291 291 213 23 1213 1333 0 0 1019 -292 154 374 36 892 1012 10 0 168 -293 225 196 10 59 179 10 0 248 -294 94 40 -28 1023 1143 10 411 0 -295 0 356 -10 1041 1161 10 625 0 -296 297 283 -18 1304 1424 10 281 0 -297 371 423 10 211 331 10 0 807 -298 417 217 30 170 290 10 0 891 -299 500 228 -10 737 857 10 560 0 -300 412 214 10 165 285 0 0 1031 -301 442 289 25 195 315 10 0 227 -302 157 269 31 1531 1651 10 0 735 -303 440 241 10 256 376 10 0 775 -304 100 266 -10 150 270 10 161 0 -305 111 178 -10 156 276 10 955 0 -306 91 101 -30 253 373 10 788 0 -307 25 307 10 232 352 0 0 1014 -308 135 400 20 254 374 10 0 619 -309 58 458 10 283 403 10 0 703 -310 133 26 10 267 387 10 0 415 -311 211 386 20 141 261 10 0 876 -312 94 97 -20 218 338 10 342 0 -313 30 155 9 1235 1355 0 0 1004 -314 208 184 -20 78 198 10 763 0 -315 394 333 -17 166 286 10 931 0 -316 355 180 30 126 246 10 0 273 -317 241 180 -13 1621 1741 10 450 0 -318 21 485 -32 328 448 10 812 0 -319 80 251 -10 259 379 10 424 0 -320 476 61 36 404 524 10 0 249 -321 406 94 10 220 340 10 0 96 -322 364 71 -20 1303 1423 10 57 0 -323 418 221 10 246 366 10 0 874 -324 274 441 12 650 770 10 0 442 -325 304 97 20 162 282 10 0 667 -326 297 102 10 155 275 10 0 849 -327 250 405 20 155 275 10 0 82 -328 111 463 -20 277 397 10 25 0 -329 408 279 20 175 295 10 0 567 -330 263 418 -10 233 353 10 534 0 -331 480 119 7 583 703 10 0 749 -332 420 383 27 937 1057 10 0 662 -333 142 14 -10 790 910 10 31 0 -334 73 328 -10 193 313 10 618 0 -335 50 438 20 292 412 10 0 913 -336 441 7 20 347 467 10 0 196 -337 462 14 -30 352 472 10 616 0 -338 360 294 -1 1373 1493 10 265 0 -339 58 39 12 1118 1238 10 0 79 -340 58 391 -26 837 957 10 791 0 -341 410 285 20 163 283 10 0 375 -342 96 97 20 217 337 10 0 312 -343 21 64 20 307 427 10 0 418 -344 238 210 30 89 209 10 0 246 -345 479 121 10 262 382 10 0 399 -346 200 178 20 87 207 10 0 944 -347 216 341 19 609 729 10 0 458 -348 48 437 4 759 879 10 0 46 -349 200 270 20 53 173 10 0 976 -350 357 181 20 127 247 10 0 951 -351 476 174 -20 279 399 10 875 0 -352 400 286 10 154 274 10 0 215 -353 351 481 10 277 397 10 0 480 -354 270 400 -30 151 271 10 240 0 -355 95 234 10 155 275 10 0 566 -356 128 113 22 318 438 10 0 156 -357 133 455 -30 763 883 10 987 0 -358 16 463 20 330 450 10 0 972 -359 59 388 20 618 738 10 0 551 -360 376 190 30 139 259 10 0 74 -361 481 122 30 264 384 10 0 985 -362 266 405 20 172 292 10 0 78 -363 374 232 -10 125 245 10 771 0 -364 398 20 20 273 393 10 0 274 -365 481 26 -20 321 441 10 183 0 -366 63 444 -17 335 455 10 147 0 -367 89 290 -20 165 285 10 845 0 -368 246 314 -8 1400 1520 10 90 0 -369 40 304 16 1100 1220 10 0 623 -370 262 369 15 119 239 10 0 459 -371 323 29 -10 1092 1212 10 721 0 -372 89 65 -4 675 795 10 526 0 -373 144 35 26 239 359 10 0 212 -374 200 265 10 107 227 10 0 464 -375 436 264 -20 186 306 10 341 0 -376 15 457 20 313 433 10 0 980 -377 397 20 -10 272 392 10 990 0 -378 328 491 -19 633 753 10 256 0 -379 399 175 -20 702 822 10 588 0 -380 432 2 -20 422 542 10 682 0 -381 63 336 20 221 341 10 0 634 -382 6 296 -10 275 395 10 75 0 -383 146 376 -20 189 309 10 657 0 -384 295 247 -10 1258 1378 10 2 0 -385 235 33 -20 1292 1412 10 699 0 -386 233 204 20 49 169 10 0 605 -387 142 360 -11 1487 1607 10 785 0 -388 177 156 25 122 242 10 0 145 -389 315 287 -30 103 223 10 93 0 -390 452 172 -27 563 683 10 493 0 -391 263 153 12 367 487 10 0 186 -392 493 493 -10 811 931 10 962 0 -393 320 283 30 77 197 10 0 590 -394 64 5 -28 1084 1204 10 942 0 -395 95 235 10 155 275 10 0 425 -396 203 211 -21 1261 1381 10 864 0 -397 16 497 20 381 501 10 0 417 -398 348 348 23 890 1010 10 0 597 -399 485 104 -10 749 869 10 345 0 -400 330 147 -33 803 923 10 85 0 -401 443 237 20 193 313 10 0 600 -402 316 286 30 92 212 10 0 87 -403 335 46 -20 1297 1417 10 797 0 -404 381 495 -10 277 397 10 681 0 -405 364 173 -30 137 257 10 52 0 -406 267 162 -1 1404 1524 10 654 0 -407 214 245 8 36 156 10 0 789 -408 92 234 -20 190 310 10 945 0 -409 347 459 25 434 554 10 0 463 -410 30 7 -25 1144 1264 10 935 0 -411 120 37 28 730 850 10 0 294 -412 397 153 29 837 957 10 0 192 -413 210 29 13 1006 1126 10 0 259 -414 87 285 30 196 316 10 0 587 -415 132 32 -10 739 859 10 310 0 -416 390 294 -20 192 312 10 481 0 -417 67 451 -20 1171 1291 10 397 0 -418 24 68 -20 369 489 10 343 0 -419 146 439 -9 215 335 10 437 0 -420 209 212 -10 1483 1603 10 695 0 -421 6 292 -12 247 367 10 902 0 -422 18 63 10 297 417 10 0 717 -423 149 98 -18 1120 1240 10 715 0 -424 91 268 10 200 320 10 0 319 -425 103 177 -10 581 701 10 395 0 -426 367 178 20 137 257 10 0 514 -427 225 269 -30 1226 1346 10 967 0 -428 443 246 -10 193 313 10 713 0 -429 306 42 -10 432 552 10 568 0 -430 374 306 -10 949 1069 10 894 0 -431 413 421 -8 258 378 10 724 0 -432 470 405 17 881 1001 10 0 250 -433 33 278 -15 1442 1562 10 559 0 -434 149 458 -18 1119 1239 10 276 0 -435 257 57 -25 1181 1301 10 565 0 -436 272 403 30 154 274 10 0 217 -437 221 291 9 50 170 10 0 419 -438 1 101 8 1212 1332 10 0 970 -439 332 459 35 324 444 10 0 485 -440 220 392 20 213 333 10 0 862 -441 253 50 27 200 320 10 0 125 -442 250 441 -12 711 831 10 324 0 -443 471 484 10 321 441 10 0 848 -444 480 152 26 977 1097 10 0 604 -445 404 83 -10 253 373 10 523 0 -446 476 94 -10 274 394 10 150 0 -447 458 213 -10 1083 1203 10 522 0 -448 215 395 20 197 317 10 0 67 -449 85 288 20 169 289 10 0 40 -450 179 75 13 695 815 10 0 317 -451 228 287 21 43 163 10 0 911 -452 397 18 -10 274 394 10 282 0 -453 238 204 20 60 180 10 0 686 -454 488 3 3 356 476 10 0 708 -455 407 88 10 279 399 10 0 23 -456 459 14 20 315 435 10 0 242 -457 120 17 30 266 386 10 0 92 -458 235 316 -19 611 731 10 347 0 -459 370 382 -15 839 959 10 370 0 -460 405 454 -20 1258 1378 10 253 0 -461 17 458 -10 388 508 10 60 0 -462 43 135 -24 236 356 10 694 0 -463 318 497 -25 809 929 10 409 0 -464 199 268 -10 54 174 10 374 0 -465 111 467 -10 257 377 10 628 0 -466 138 438 20 242 362 10 0 229 -467 172 314 -15 500 620 10 626 0 -468 494 468 31 327 447 10 0 939 -469 35 303 20 221 341 0 0 1025 -470 341 59 27 745 865 0 0 1030 -471 423 221 9 213 333 10 0 247 -472 395 295 -10 166 286 10 909 0 -473 413 417 -30 311 431 10 702 0 -474 339 60 20 209 329 10 0 287 -475 277 428 7 445 565 10 0 208 -476 176 199 28 89 209 0 0 1034 -477 265 240 9 18 138 10 0 769 -478 365 190 -10 1432 1552 10 542 0 -479 133 53 20 234 354 10 0 994 -480 387 488 -10 317 437 10 353 0 -481 385 295 20 142 262 10 0 416 -482 491 369 -10 685 805 10 188 0 -483 445 273 20 213 333 10 0 918 -484 195 273 22 59 179 10 0 698 -485 313 493 -35 1148 1268 10 439 0 -486 495 227 -10 299 419 10 515 0 -487 241 403 10 175 295 10 0 549 -488 30 72 -30 387 507 10 786 0 -489 21 487 10 329 449 10 0 606 -490 324 99 10 293 413 10 0 129 -491 453 318 30 329 449 10 0 36 -492 443 272 10 225 345 10 0 516 -493 447 184 27 379 499 10 0 390 -494 366 288 29 639 759 0 0 1041 -495 440 284 -11 807 927 10 794 0 -496 13 314 -10 245 365 10 645 0 -497 72 227 -13 519 639 10 547 0 -498 377 385 -17 821 941 10 8 0 -499 477 478 20 347 467 10 0 213 -500 204 185 -20 118 238 10 206 0 -501 226 191 20 63 183 10 0 961 -502 330 138 -19 1065 1185 10 727 0 -503 185 434 -40 529 649 10 225 0 -504 483 22 10 325 445 10 0 110 -505 71 282 -40 597 717 10 803 0 -506 60 5 18 999 1119 10 0 99 -507 189 402 -15 491 611 10 10 0 -508 134 211 -23 122 242 10 6 0 -509 146 313 22 1150 1270 0 0 1044 -510 21 146 -11 442 562 10 80 0 -511 37 281 -20 448 568 10 152 0 -512 416 417 -25 298 418 10 179 0 -513 44 311 -5 362 482 10 922 0 -514 361 181 -20 152 272 10 426 0 -515 444 242 10 194 314 10 0 486 -516 444 271 -10 201 321 10 492 0 -517 359 179 20 130 250 0 0 1028 -518 388 334 20 161 281 10 0 98 -519 401 164 13 576 696 10 0 877 -520 499 316 18 577 697 0 0 1017 -521 399 106 -19 257 377 10 778 0 -522 425 215 10 184 304 10 0 447 -523 407 98 10 218 338 10 0 445 -524 406 460 -20 674 794 10 71 0 -525 88 95 20 225 345 10 0 28 -526 95 64 4 721 841 10 0 372 -527 306 229 10 1275 1395 10 0 790 -528 273 55 20 196 316 10 0 981 -529 384 149 -20 1152 1272 10 776 0 -530 122 35 -30 250 370 10 563 0 -531 308 199 -20 1463 1583 10 176 0 -532 390 301 10 149 269 10 0 973 -533 300 108 10 150 270 10 0 676 -534 267 400 10 187 307 10 0 330 -535 8 300 -10 311 431 10 728 0 -536 105 181 -16 1486 1606 10 772 0 -537 398 325 30 188 308 10 0 826 -538 166 247 1 84 204 10 0 879 -539 140 431 -20 211 331 10 837 0 -540 253 118 19 502 622 10 0 940 -541 359 246 -13 1378 1498 10 181 0 -542 321 277 10 75 195 10 0 478 -543 168 59 -18 321 441 10 190 0 -544 406 285 20 159 279 10 0 81 -545 391 334 20 164 284 10 0 758 -546 437 19 15 969 1089 0 0 1010 -547 201 278 13 56 176 10 0 497 -548 435 267 -30 278 398 10 66 0 -549 245 408 -10 159 279 10 487 0 -550 16 462 10 341 461 10 0 554 -551 107 374 -20 869 989 10 359 0 -552 477 97 10 273 393 10 0 938 -553 346 57 -10 263 383 10 819 0 -554 14 459 -10 315 435 10 550 0 -555 102 6 -13 1406 1526 10 151 0 -556 359 287 24 115 235 10 0 738 -557 297 131 25 1120 1240 10 0 115 -558 282 1 -10 997 1117 10 209 0 -559 21 70 15 726 846 10 0 433 -560 440 244 10 221 341 10 0 299 -561 482 104 -5 762 882 10 977 0 -562 120 261 -17 748 868 10 979 0 -563 125 29 30 253 373 10 0 530 -564 292 32 -12 222 342 10 720 0 -565 262 92 25 585 705 10 0 435 -566 68 160 -10 1091 1211 10 355 0 -567 405 276 -20 189 309 10 329 0 -568 277 50 10 201 321 10 0 429 -569 32 319 -20 356 476 10 615 0 -570 344 70 24 1101 1221 10 0 48 -571 481 84 17 461 581 0 0 1005 -572 21 68 20 356 476 10 0 851 -573 441 244 10 232 352 10 0 136 -574 57 43 15 978 1098 10 0 153 -575 1 293 -10 252 372 10 97 0 -576 481 96 -20 277 397 10 896 0 -577 471 368 19 383 503 10 0 802 -578 236 126 23 124 244 10 0 632 -579 406 99 -20 217 337 10 841 0 -580 303 186 -24 1309 1429 10 205 0 -581 225 369 38 121 241 10 0 745 -582 412 453 -5 259 379 10 741 0 -583 104 349 -30 964 1084 10 869 0 -584 173 182 25 102 222 10 0 166 -585 111 464 -10 266 386 10 740 0 -586 53 440 10 278 398 10 0 925 -587 69 336 -30 200 320 10 414 0 -588 359 182 20 164 284 10 0 379 -589 13 459 20 315 435 10 0 119 -590 244 277 -30 1256 1376 10 393 0 -591 484 177 -20 245 365 10 599 0 -592 452 206 31 447 567 10 0 890 -593 22 483 -30 325 445 10 689 0 -594 452 110 14 295 415 0 0 1023 -595 347 192 -24 1443 1563 10 33 0 -596 95 92 -12 221 341 10 904 0 -597 368 311 -23 881 1001 10 398 0 -598 479 387 13 352 472 10 0 1 -599 479 169 20 264 384 10 0 591 -600 497 266 -20 703 823 10 401 0 -601 66 336 10 208 328 10 0 880 -602 376 195 10 137 257 10 0 678 -603 401 281 20 216 336 10 0 691 -604 441 177 -26 956 1076 10 444 0 -605 231 203 -20 50 170 10 386 0 -606 21 488 -10 330 450 10 489 0 -607 231 204 -10 105 225 10 230 0 -608 122 422 -10 1412 1532 10 847 0 -609 65 453 -10 274 394 10 12 0 -610 206 261 10 137 257 10 0 7 -611 466 149 -14 1141 1261 10 226 0 -612 313 119 30 171 291 0 0 1008 -613 90 274 20 161 281 10 0 930 -614 39 162 18 520 640 10 0 43 -615 35 306 20 222 342 10 0 569 -616 437 15 30 310 430 10 0 337 -617 307 412 -10 359 479 10 148 0 -618 79 291 10 175 295 10 0 334 -619 64 437 -20 873 993 10 308 0 -620 376 92 -24 946 1066 10 236 0 -621 129 27 -10 253 373 10 916 0 -622 196 489 -9 985 1105 10 984 0 -623 51 286 -16 1414 1534 10 369 0 -624 20 488 10 330 450 10 0 62 -625 13 455 10 313 433 10 0 295 -626 170 347 15 391 511 10 0 467 -627 92 230 -10 159 279 10 900 0 -628 117 467 10 254 374 10 0 465 -629 413 217 20 166 286 10 0 731 -630 405 450 20 253 373 10 0 712 -631 394 322 -12 980 1100 10 863 0 -632 125 61 -23 567 687 10 578 0 -633 238 123 24 736 856 10 0 652 -634 11 403 -20 298 418 10 381 0 -635 89 272 -20 162 282 10 823 0 -636 304 102 30 157 277 10 0 781 -637 478 121 40 274 394 10 0 665 -638 408 84 -10 239 359 10 171 0 -639 376 494 30 274 394 10 0 289 -640 20 73 10 290 410 10 0 914 -641 159 299 -20 971 1091 10 659 0 -642 95 382 19 203 323 10 0 835 -643 352 63 -8 1133 1253 10 982 0 -644 365 274 -15 117 237 10 989 0 -645 30 301 10 233 353 10 0 496 -646 351 5 -10 451 571 10 22 0 -647 197 267 -20 64 184 10 868 0 -648 498 171 -20 1211 1331 10 170 0 -649 468 352 9 723 843 10 0 831 -650 418 251 21 1152 1272 10 0 801 -651 489 437 -14 662 782 10 948 0 -652 251 63 -24 942 1062 10 633 0 -653 132 55 -20 227 347 10 733 0 -654 281 96 1 1081 1201 10 0 406 -655 333 293 -20 572 692 10 983 0 -656 255 487 19 353 473 10 0 761 -657 207 400 20 156 276 10 0 383 -658 469 489 4 510 630 10 0 840 -659 244 254 20 55 175 10 0 641 -660 233 207 10 46 166 0 0 1036 -661 441 60 -20 1414 1534 10 121 0 -662 411 379 -27 1148 1268 10 332 0 -663 178 72 23 712 832 10 0 54 -664 51 447 10 280 400 10 0 157 -665 478 118 -40 309 429 10 637 0 -666 141 426 23 486 606 10 0 140 -667 295 89 -20 697 817 10 325 0 -668 112 433 29 229 349 10 0 770 -669 320 211 -10 948 1068 10 883 0 -670 400 103 10 211 331 10 0 239 -671 408 453 10 257 377 0 0 1026 -672 435 180 37 197 317 10 0 963 -673 432 66 -20 1026 1146 10 20 0 -674 374 116 9 542 662 10 0 159 -675 478 102 10 279 399 10 0 780 -676 335 57 -10 210 330 10 533 0 -677 385 239 -14 741 861 10 38 0 -678 386 245 -10 434 554 10 602 0 -679 208 396 20 151 271 10 0 128 -680 380 489 20 334 454 0 0 1006 -681 380 498 10 280 400 10 0 404 -682 440 7 20 308 428 10 0 380 -683 434 245 10 297 417 0 0 1035 -684 90 232 10 167 287 10 0 748 -685 389 334 -10 162 282 10 146 0 -686 241 205 -20 73 193 10 453 0 -687 18 24 -2 583 703 10 174 0 -688 57 183 -8 1055 1175 10 995 0 -689 59 457 30 289 409 10 0 593 -690 442 243 10 244 364 10 0 91 -691 402 281 -20 205 325 10 603 0 -692 445 237 10 195 315 0 0 1021 -693 441 273 -10 237 357 10 155 0 -694 31 175 24 231 351 10 0 462 -695 234 202 10 50 170 10 0 420 -696 52 303 -20 396 516 10 830 0 -697 167 445 -11 1367 1487 10 833 0 -698 179 286 -22 296 416 10 484 0 -699 269 48 20 236 356 10 0 385 -700 165 59 27 898 1018 10 0 53 -701 461 8 -10 324 444 10 167 0 -702 421 415 30 237 357 10 0 473 -703 59 459 -10 283 403 10 309 0 -704 24 492 -40 417 537 10 279 0 -705 55 449 -20 278 398 10 268 0 -706 224 192 10 63 183 10 0 753 -707 444 269 20 194 314 10 0 764 -708 491 20 -3 349 469 10 454 0 -709 313 126 -20 198 318 10 927 0 -710 283 438 -20 190 310 10 37 0 -711 352 241 -21 747 867 10 854 0 -712 398 476 -20 373 493 10 630 0 -713 442 247 10 196 316 10 0 428 -714 217 207 -10 1337 1457 10 754 0 -715 233 87 18 208 328 10 0 423 -716 479 127 -10 259 379 10 950 0 -717 6 53 -10 542 662 10 422 0 -718 478 300 -29 845 965 10 928 0 -719 378 493 30 274 394 10 0 84 -720 303 78 12 179 299 10 0 564 -721 344 62 10 301 421 10 0 371 -722 371 315 -30 1121 1241 10 850 0 -723 200 78 31 948 1068 10 0 730 -724 413 391 8 215 335 10 0 431 -725 415 216 10 168 288 10 0 956 -726 397 57 -11 1431 1551 10 131 0 -727 293 228 19 48 168 10 0 502 -728 0 297 10 254 374 10 0 535 -729 435 20 20 336 456 10 0 278 -730 195 111 -31 953 1073 10 723 0 -731 417 218 -20 233 353 10 629 0 -732 340 54 10 215 335 10 0 997 -733 132 57 20 226 346 10 0 653 -734 210 379 -30 664 784 10 855 0 -735 228 260 -31 1561 1681 10 302 0 -736 399 104 10 245 365 10 0 903 -737 95 277 20 229 349 10 0 805 -738 360 284 -24 622 742 10 556 0 -739 53 466 9 292 412 10 0 783 -740 112 465 10 255 375 10 0 585 -741 313 391 5 154 274 10 0 582 -742 93 235 -17 201 321 10 817 0 -743 125 32 -20 251 371 10 827 0 -744 215 282 -23 1395 1515 10 173 0 -745 224 320 -38 1239 1359 10 581 0 -746 134 428 20 263 383 0 0 1003 -747 26 490 -10 430 550 10 9 0 -748 44 115 -10 246 366 10 684 0 -749 438 127 -7 896 1016 10 331 0 -750 239 15 -20 559 679 10 852 0 -751 342 54 20 216 336 10 0 175 -752 109 463 -10 289 409 10 917 0 -753 199 187 -10 82 202 10 706 0 -754 201 188 10 94 214 10 0 714 -755 399 301 30 157 277 10 0 934 -756 484 171 -20 248 368 10 888 0 -757 272 234 -31 1545 1665 10 214 0 -758 380 350 -20 821 941 10 545 0 -759 140 108 29 1026 1146 10 0 270 -760 228 199 -30 89 209 10 779 0 -761 245 461 -19 604 724 10 656 0 -762 305 107 -20 180 300 10 933 0 -763 231 195 20 64 184 10 0 314 -764 450 265 -20 200 320 10 707 0 -765 273 149 -19 1458 1578 10 94 0 -766 12 358 -8 1179 1299 10 111 0 -767 315 121 -20 158 278 10 264 0 -768 420 213 10 173 293 10 0 233 -769 331 134 -9 1079 1199 10 477 0 -770 84 377 -29 881 1001 10 668 0 -771 320 280 10 76 196 10 0 363 -772 89 185 16 555 675 10 0 536 -773 472 481 20 320 440 10 0 949 -774 422 420 20 241 361 0 0 1027 -775 475 267 -10 735 855 10 303 0 -776 470 125 20 253 373 10 0 529 -777 435 268 -30 267 387 10 216 0 -778 409 155 19 185 305 10 0 521 -779 243 248 30 7 127 10 0 760 -780 488 96 -10 1021 1141 10 675 0 -781 341 72 -30 760 880 10 636 0 -782 58 449 -10 318 438 10 102 0 -783 16 460 -9 366 486 10 739 0 -784 480 136 22 256 376 10 0 865 -785 162 388 11 1081 1201 10 0 387 -786 47 208 30 207 327 10 0 488 -787 324 127 -14 143 263 10 285 0 -788 87 96 30 237 357 10 0 306 -789 140 137 -8 525 645 10 407 0 -790 314 205 -10 1482 1602 10 527 0 -791 96 346 26 181 301 10 0 340 -792 321 280 30 77 197 10 0 178 -793 245 251 10 5 125 10 0 252 -794 436 295 11 483 603 10 0 495 -795 274 261 20 1662 1782 0 0 1033 -796 271 128 -10 301 421 10 261 0 -797 275 45 20 206 326 10 0 403 -798 422 409 10 234 354 10 0 897 -799 146 188 -4 1190 1310 10 919 0 -800 93 96 -20 219 339 10 137 0 -801 409 255 -21 1477 1597 10 650 0 -802 449 428 -19 1202 1322 10 577 0 -803 90 285 40 231 351 10 0 505 -804 415 95 15 1132 1252 10 0 103 -805 88 287 -20 218 338 10 737 0 -806 379 196 -10 149 269 10 954 0 -807 368 452 -10 625 745 10 297 0 -808 202 186 20 106 226 0 0 1018 -809 435 11 40 302 422 10 0 873 -810 269 46 20 224 344 10 0 836 -811 7 292 -16 246 366 10 47 0 -812 44 496 32 357 477 10 0 318 -813 478 99 10 273 393 10 0 117 -814 391 99 20 206 326 10 0 901 -815 132 477 25 282 402 10 0 280 -816 24 65 10 320 440 10 0 73 -817 130 247 17 120 240 10 0 742 -818 133 273 20 119 239 10 0 86 -819 347 62 10 288 408 10 0 553 -820 404 140 -10 1214 1334 10 245 0 -821 416 420 20 245 365 10 0 892 -822 67 335 20 201 321 10 0 907 -823 92 270 20 212 332 10 0 635 -824 411 95 -30 223 343 10 180 0 -825 132 479 -30 257 377 10 839 0 -826 366 334 -30 365 485 10 537 0 -827 125 39 20 245 365 10 0 743 -828 419 422 -10 241 361 10 55 0 -829 460 2 -20 324 444 10 231 0 -830 67 334 20 201 321 10 0 696 -831 448 414 -9 1178 1298 10 649 0 -832 46 163 -20 881 1001 10 993 0 -833 77 465 11 275 395 10 0 697 -834 284 319 -24 772 892 10 886 0 -835 102 422 -19 226 346 10 642 0 -836 240 34 -20 1475 1595 10 810 0 -837 141 428 20 208 328 10 0 539 -838 204 269 30 49 169 10 0 126 -839 144 439 30 226 346 10 0 825 -840 470 417 -4 692 812 10 658 0 -841 404 103 20 212 332 10 0 579 -842 5 281 -30 1327 1447 10 19 0 -843 487 320 21 813 933 10 0 912 -844 398 23 10 270 390 10 0 952 -845 90 296 20 166 286 10 0 367 -846 386 13 10 292 412 10 0 172 -847 115 465 10 253 373 10 0 608 -848 473 475 -10 372 492 10 443 0 -849 275 42 -10 209 329 10 326 0 -850 286 356 30 111 231 10 0 722 -851 15 69 -20 296 416 10 572 0 -852 267 44 20 211 331 10 0 750 -853 243 399 10 190 310 10 0 906 -854 390 249 21 537 657 10 0 711 -855 210 391 30 146 266 10 0 734 -856 433 15 20 297 417 10 0 165 -857 24 259 -16 325 445 10 988 0 -858 12 463 20 319 439 10 0 185 -859 237 213 10 102 222 10 0 251 -860 182 480 31 320 440 10 0 257 -861 409 88 20 226 346 10 0 112 -862 244 368 -20 369 489 10 440 0 -863 381 328 12 672 792 10 0 631 -864 213 185 21 74 194 10 0 396 -865 482 141 -22 966 1086 10 784 0 -866 319 124 20 143 263 10 0 51 -867 141 431 30 211 331 10 0 106 -868 198 264 20 95 215 10 0 647 -869 69 334 30 199 319 10 0 583 -870 299 98 30 159 279 10 0 42 -871 240 250 10 10 130 10 0 244 -872 199 203 -7 1412 1532 10 158 0 -873 459 17 -40 366 486 10 809 0 -874 423 217 -10 197 317 10 323 0 -875 477 179 20 237 357 10 0 351 -876 213 397 -20 172 292 10 311 0 -877 405 187 -13 1206 1326 10 519 0 -878 269 402 -20 158 278 10 974 0 -879 53 204 -1 1010 1130 10 538 0 -880 13 394 -10 328 448 10 601 0 -881 15 68 -20 297 417 10 943 0 -882 56 268 28 1019 1139 10 0 163 -883 360 184 10 176 296 10 0 669 -884 307 102 -10 165 285 10 21 0 -885 130 57 40 227 347 10 0 898 -886 250 328 24 204 324 10 0 834 -887 91 231 30 160 280 10 0 50 -888 479 176 20 240 360 10 0 756 -889 420 224 -10 384 504 10 958 0 -890 461 182 -31 584 704 10 592 0 -891 418 218 -30 222 342 10 298 0 -892 419 418 -20 238 358 10 821 0 -893 336 493 20 1434 1554 0 0 1009 -894 389 300 10 147 267 10 0 430 -895 92 76 4 1094 1214 0 0 1043 -896 476 102 20 291 411 10 0 576 -897 418 399 -10 393 513 10 798 0 -898 109 56 -40 239 359 10 885 0 -899 13 465 -10 729 849 10 905 0 -900 92 232 10 159 279 10 0 627 -901 394 47 -20 268 388 10 814 0 -902 16 287 12 236 356 10 0 421 -903 399 102 -10 222 342 10 736 0 -904 143 158 12 141 261 10 0 596 -905 18 484 10 329 449 10 0 899 -906 250 411 -10 161 281 10 853 0 -907 19 273 -20 972 1092 10 822 0 -908 365 28 9 250 370 10 0 223 -909 387 297 10 144 264 10 0 472 -910 433 447 20 749 869 10 0 936 -911 214 274 -21 1324 1444 10 451 0 -912 489 338 -21 1352 1472 10 843 0 -913 130 494 -20 714 834 10 335 0 -914 23 67 -10 344 464 10 640 0 -915 374 489 20 269 389 10 0 164 -916 126 30 10 252 372 10 0 621 -917 112 467 10 257 377 10 0 752 -918 489 274 -20 489 609 10 483 0 -919 61 214 4 297 417 10 0 799 -920 166 440 12 207 327 10 0 76 -921 56 75 24 1393 1513 0 0 1016 -922 210 276 5 47 167 10 0 513 -923 80 286 10 179 299 10 0 160 -924 17 459 -20 377 497 10 32 0 -925 66 448 -10 270 390 10 586 0 -926 351 128 15 1208 1328 10 0 69 -927 352 176 20 126 246 10 0 709 -928 490 286 29 477 597 10 0 718 -929 247 219 17 31 151 10 0 258 -930 86 268 -20 172 292 10 613 0 -931 398 329 17 167 287 10 0 315 -932 272 402 -10 153 273 10 107 0 -933 317 123 20 145 265 10 0 762 -934 408 318 -30 598 718 10 755 0 -935 66 31 25 1003 1123 10 0 410 -936 425 448 -20 749 869 10 910 0 -937 35 304 30 221 341 10 0 139 -938 471 94 -10 954 1074 10 552 0 -939 470 473 -31 386 506 10 468 0 -940 224 56 -19 1141 1261 10 540 0 -941 343 47 20 232 352 10 0 232 -942 52 18 28 812 932 10 0 394 -943 16 68 20 296 416 10 0 881 -944 195 185 -20 85 205 10 346 0 -945 92 236 20 213 333 10 0 408 -946 76 462 -10 911 1031 10 238 0 -947 124 56 20 231 351 10 0 964 -948 481 454 14 308 428 10 0 651 -949 477 483 -20 325 445 10 773 0 -950 481 124 10 263 383 10 0 716 -951 389 156 -20 671 791 10 350 0 -952 384 16 -10 306 426 10 844 0 -953 492 34 5 766 886 10 0 132 -954 371 200 10 179 299 10 0 806 -955 153 235 10 98 218 10 0 305 -956 428 202 -10 859 979 10 725 0 -957 257 391 -11 1550 1670 10 154 0 -958 421 218 10 209 329 10 0 889 -959 206 186 -20 143 263 10 124 0 -960 393 301 30 151 271 10 0 201 -961 204 187 -20 130 250 10 501 0 -962 468 475 10 313 433 10 0 392 -963 477 122 -37 285 405 10 672 0 -964 100 66 -20 1355 1475 10 947 0 -965 489 27 10 376 496 0 0 1046 -966 12 451 -30 311 431 10 975 0 -967 197 270 30 56 176 10 0 427 -968 311 422 29 943 1063 10 0 141 -969 489 17 10 335 455 10 0 263 -970 13 214 -8 1309 1429 10 438 0 -971 440 247 20 208 328 10 0 260 -972 28 467 -20 1298 1418 10 358 0 -973 388 325 -10 218 338 10 532 0 -974 270 401 20 152 272 10 0 878 -975 5 445 30 313 433 10 0 966 -976 198 271 -20 56 176 10 349 0 -977 480 131 5 643 763 10 0 561 -978 437 98 -20 1069 1189 10 267 0 -979 131 246 17 787 907 10 0 562 -980 49 437 -20 382 502 10 376 0 -981 270 49 -20 247 367 10 528 0 -982 337 41 8 957 1077 10 0 643 -983 318 280 20 74 194 10 0 655 -984 154 392 9 171 291 10 0 622 -985 493 111 -30 496 616 10 361 0 -986 399 450 -10 314 434 10 15 0 -987 67 452 30 272 392 10 0 357 -988 34 239 16 216 336 10 0 857 -989 343 276 15 96 216 10 0 644 -990 393 12 10 277 397 10 0 377 -991 236 247 20 14 134 0 0 1015 -992 340 291 -20 425 545 10 11 0 -993 3 292 20 250 370 10 0 832 -994 209 68 -20 1505 1625 10 479 0 -995 18 225 8 646 766 10 0 688 -996 147 435 20 211 331 10 0 220 -997 335 99 -10 1173 1293 10 732 0 -998 485 24 20 326 446 10 0 108 -999 470 475 30 314 434 10 0 200 -1000 341 58 10 212 332 10 0 142 -1001 419 459 -20 271 391 10 56 0 -1002 389 17 -10 321 441 10 198 0 -1003 134 428 -20 263 383 10 746 0 -1004 30 155 -9 1235 1355 10 313 0 -1005 481 84 -17 461 581 10 571 0 -1006 380 489 -20 334 454 10 680 0 -1007 130 140 -17 162 282 10 27 0 -1008 313 119 -30 171 291 10 612 0 -1009 336 493 -20 1434 1554 10 893 0 -1010 437 19 -15 969 1089 10 546 0 -1011 441 265 -40 191 311 10 26 0 -1012 203 390 -40 147 267 10 17 0 -1013 377 432 -20 786 906 10 39 0 -1014 25 307 -10 232 352 10 307 0 -1015 236 247 -20 14 134 10 991 0 -1016 56 75 -24 1393 1513 10 921 0 -1017 499 316 -18 577 697 10 520 0 -1018 202 186 -20 106 226 10 808 0 -1019 291 213 -23 1213 1333 10 291 0 -1020 92 233 -10 179 299 10 18 0 -1021 445 237 -10 195 315 10 692 0 -1022 429 169 -8 858 978 10 191 0 -1023 452 110 -14 295 415 10 594 0 -1024 111 392 -18 1124 1244 10 283 0 -1025 35 303 -20 221 341 10 469 0 -1026 408 453 -10 257 377 10 671 0 -1027 422 420 -20 241 361 10 774 0 -1028 359 179 -20 130 250 10 517 0 -1029 157 38 -3 1003 1123 10 187 0 -1030 341 59 -27 745 865 10 470 0 -1031 412 214 -10 165 285 10 300 0 -1032 395 331 -20 172 292 10 105 0 -1033 274 261 -20 1662 1782 10 795 0 -1034 176 199 -28 89 209 10 476 0 -1035 434 245 -10 297 417 10 683 0 -1036 233 207 -10 46 166 10 660 0 -1037 476 483 -10 324 444 10 3 0 -1038 331 356 -13 667 787 10 237 0 -1039 374 190 -20 137 257 10 135 0 -1040 391 293 -20 181 301 10 210 0 -1041 366 288 -29 639 759 10 494 0 -1042 188 119 -44 930 1050 10 34 0 -1043 92 76 -4 1094 1214 10 895 0 -1044 146 313 -22 1150 1270 10 509 0 -1045 439 15 -20 301 421 10 41 0 -1046 489 27 -10 376 496 10 965 0 -1047 7 382 -27 725 845 10 120 0 -1048 230 197 -40 77 197 10 5 0 diff --git a/jsprit-instances/instances/lilim/1000/LRC2101.txt b/jsprit-instances/instances/lilim/1000/LRC2101.txt deleted file mode 100644 index 7826942c9..000000000 --- a/jsprit-instances/instances/lilim/1000/LRC2101.txt +++ /dev/null @@ -1,1016 +0,0 @@ -250 1000 1 -0 250 250 0 0 7284 0 0 0 -1 440 436 18 3568 3688 10 0 154 -2 214 394 10 922 1042 10 0 494 -3 476 483 -30 1419 1539 10 240 0 -4 352 487 -30 3607 3727 10 318 0 -5 230 197 40 486 606 10 0 663 -6 175 239 23 243 363 10 0 467 -7 133 202 33 1842 1962 10 0 163 -8 328 458 17 3071 3191 0 0 1002 -9 25 499 -20 1780 1900 10 376 0 -10 226 423 -30 788 908 10 906 0 -11 313 282 20 654 774 10 0 483 -12 60 454 10 1389 1509 10 0 550 -13 239 486 -20 5928 6048 10 358 0 -14 102 264 -20 535 655 10 659 0 -15 408 452 10 1088 1208 10 0 662 -16 451 62 5 1129 1249 10 0 219 -17 203 390 40 635 755 10 0 917 -18 92 233 -20 895 1015 10 116 0 -19 7 300 30 1379 1499 10 0 127 -20 409 90 -10 1033 1153 10 523 0 -21 307 108 10 950 1070 10 0 190 -22 347 54 10 1180 1300 10 0 819 -23 406 87 -10 1252 1372 10 958 0 -24 371 332 -10 2118 2238 10 683 0 -25 116 466 -20 1004 1124 10 220 0 -26 441 265 40 789 909 10 0 874 -27 130 140 17 776 896 10 0 125 -28 80 117 -21 3297 3417 10 510 0 -29 421 387 15 3205 3325 10 0 968 -30 83 300 26 1999 2119 10 0 697 -31 136 52 10 1171 1291 10 0 563 -32 18 462 -20 1591 1711 10 679 0 -33 390 120 24 4017 4137 10 0 648 -34 188 119 44 3899 4019 10 0 730 -35 467 114 10 1504 1624 10 0 502 -36 440 292 -30 3760 3880 10 491 0 -37 268 400 -20 973 1093 10 974 0 -38 391 202 14 536 656 10 0 446 -39 377 432 -25 3326 3446 10 712 0 -40 80 290 10 790 910 10 0 993 -41 439 15 -30 1373 1493 10 360 0 -42 307 52 23 3682 3802 10 0 385 -43 111 192 -29 4798 4918 10 177 0 -44 131 56 -27 1023 1143 10 898 0 -45 88 286 10 1010 1130 10 0 251 -46 69 414 6 5053 5173 10 0 182 -47 41 232 -35 821 941 10 508 0 -48 323 77 36 5620 5740 0 0 1004 -49 340 416 36 1284 1404 10 0 181 -50 86 199 23 1111 1231 10 0 857 -51 314 124 20 924 1044 10 0 391 -52 375 191 30 667 787 10 0 901 -53 226 175 -31 6775 6895 10 723 0 -54 242 106 -1 5074 5194 10 654 0 -55 417 417 10 1328 1448 10 0 140 -56 419 459 -8 1265 1385 10 724 0 -57 389 11 -10 1293 1413 10 638 0 -58 450 416 -10 2307 2427 10 487 0 -59 246 255 10 450 570 10 0 618 -60 71 333 10 775 895 10 0 714 -61 105 474 -40 1883 2003 10 279 0 -62 20 489 -10 1533 1653 10 664 0 -63 388 331 -10 580 700 10 894 0 -64 92 259 4 1598 1718 10 0 369 -65 200 261 10 666 786 10 0 440 -66 400 288 -10 559 679 10 542 0 -67 299 285 -31 5015 5135 10 592 0 -68 378 199 -20 829 949 10 514 0 -69 325 147 14 4747 4867 10 0 192 -70 421 386 29 3297 3417 10 0 78 -71 404 447 20 940 1060 10 0 262 -72 412 478 7 3839 3959 10 0 257 -73 26 67 -18 5267 5387 10 333 0 -74 358 183 20 935 1055 10 0 486 -75 30 302 10 1066 1186 10 0 728 -76 176 470 -20 2187 2307 10 466 0 -77 96 270 20 649 769 10 0 193 -78 243 408 -29 5735 5855 10 70 0 -79 60 29 32 5451 5571 10 0 153 -80 34 169 11 1938 2058 10 0 302 -81 407 280 -30 834 954 10 402 0 -82 277 403 10 699 819 10 0 534 -83 498 456 -3 5624 5744 10 710 0 -84 384 491 20 1391 1511 10 0 265 -85 355 174 -25 2861 2981 10 275 0 -86 97 288 -25 5136 5256 10 907 0 -87 316 284 20 499 619 10 0 495 -88 334 403 26 638 758 10 0 179 -89 415 223 -25 1219 1339 10 301 0 -90 230 320 -30 4768 4888 10 719 0 -91 432 199 7 2554 2674 10 0 269 -92 92 18 -20 4497 4617 10 343 0 -93 273 300 30 160 280 10 0 821 -94 269 112 -10 5051 5171 10 235 0 -95 429 389 -20 1696 1816 10 260 0 -96 371 71 21 1147 1267 10 0 673 -97 5 297 10 1325 1445 10 0 899 -98 414 378 23 1979 2099 10 0 338 -99 38 15 3 4364 4484 10 0 964 -100 2 295 -20 1223 1343 10 464 0 -101 237 254 20 333 453 10 0 937 -102 54 445 10 1232 1352 10 0 666 -103 382 110 -31 4450 4570 10 159 0 -104 438 488 -10 1309 1429 10 671 0 -105 395 331 20 866 986 10 0 678 -106 230 487 -10 4518 4638 10 924 0 -107 249 407 10 695 815 10 0 773 -108 488 26 -10 1731 1851 10 965 0 -109 151 81 28 6232 6352 10 0 994 -110 483 14 10 1453 1573 10 0 985 -111 0 422 8 3284 3404 10 0 387 -112 429 67 -20 2929 3049 10 903 0 -113 195 464 -7 6165 6285 10 980 0 -114 356 256 19 365 485 10 0 736 -115 264 180 -20 6723 6843 10 259 0 -116 94 235 20 607 727 10 0 18 -117 474 96 30 1027 1147 10 0 379 -118 268 52 -20 1222 1342 10 762 0 -119 44 440 -10 3155 3275 10 811 0 -120 7 382 27 3082 3202 10 0 608 -121 459 53 -30 4489 4609 10 938 0 -122 491 25 10 1634 1754 10 0 546 -123 439 243 20 1254 1374 10 0 178 -124 210 185 20 245 365 10 0 204 -125 150 68 -17 1691 1811 10 27 0 -126 201 270 10 192 312 10 0 642 -127 0 188 -30 3728 3848 10 19 0 -128 103 464 -30 5092 5212 10 702 0 -129 325 56 13 3186 3306 10 0 982 -130 44 344 -22 4318 4438 10 139 0 -131 418 75 -20 1792 1912 10 875 0 -132 472 57 -19 5179 5299 10 727 0 -133 460 328 -20 876 996 10 341 0 -134 89 270 -10 814 934 10 635 0 -135 374 190 -30 573 693 10 162 0 -136 463 253 -13 4188 4308 10 598 0 -137 97 93 20 962 1082 10 0 621 -138 163 472 -10 2614 2734 10 606 0 -139 29 336 22 1326 1446 10 0 130 -140 84 453 -10 4892 5012 10 55 0 -141 294 421 -20 6302 6422 10 893 0 -142 343 62 -10 1430 1550 10 568 0 -143 371 193 20 475 595 10 0 725 -144 142 372 18 592 712 10 0 624 -145 66 88 -10 3319 3439 10 754 0 -146 395 332 10 822 942 10 0 201 -147 93 413 17 845 965 10 0 747 -148 267 394 -10 1037 1157 10 932 0 -149 249 258 30 507 627 10 0 878 -150 472 129 10 1010 1130 10 0 813 -151 87 3 -20 5732 5852 10 943 0 -152 62 326 20 1145 1265 10 0 562 -153 212 186 -32 6886 7006 10 79 0 -154 241 402 -18 4099 4219 10 1 0 -155 439 266 -33 741 861 10 363 0 -156 79 80 -28 5528 5648 10 942 0 -157 62 453 -20 1179 1299 10 311 0 -158 188 151 -8 5187 5307 10 551 0 -159 386 154 31 4404 4524 10 0 103 -160 38 301 -20 1182 1302 10 613 0 -161 192 265 10 497 617 10 0 304 -162 371 192 30 519 639 10 0 135 -163 64 294 -33 4405 4525 10 7 0 -164 381 494 -10 1334 1454 10 354 0 -165 437 12 20 1318 1438 10 0 380 -166 186 135 -32 2871 2991 10 789 0 -167 459 10 10 1340 1460 10 0 320 -168 175 422 -20 5786 5906 10 845 0 -169 274 48 10 845 965 10 0 699 -170 488 173 20 1115 1235 10 0 361 -171 398 97 10 836 956 10 0 616 -172 385 17 40 3235 3355 10 0 620 -173 180 283 -12 2975 3095 10 734 0 -174 71 12 2 1172 1292 10 0 772 -175 343 49 10 1060 1180 10 0 377 -176 248 251 20 2 122 10 0 838 -177 7 194 29 3805 3925 10 0 43 -178 322 290 -20 5916 6036 10 123 0 -179 410 399 -26 935 1055 10 88 0 -180 398 103 -20 1114 1234 10 814 0 -181 385 285 -36 3472 3592 10 49 0 -182 179 497 -6 5644 5764 10 46 0 -183 464 13 -30 1539 1659 10 365 0 -184 492 335 10 3313 3433 10 0 802 -185 27 464 -25 5164 5284 10 696 0 -186 231 29 -10 4905 5025 10 455 0 -187 157 38 -6 4191 4311 10 543 0 -188 439 268 -30 1191 1311 10 960 0 -189 149 214 -10 1928 2048 10 601 0 -190 187 73 -10 1168 1288 10 21 0 -191 429 169 -20 3611 3731 10 599 0 -192 350 199 -14 4806 4926 10 69 0 -193 60 231 -20 4104 4224 10 77 0 -194 448 404 15 2396 2516 10 0 332 -195 481 20 -30 1388 1508 10 676 0 -196 436 25 -2 5129 5249 10 749 0 -197 111 459 -20 1435 1555 10 746 0 -198 389 17 -14 1463 1583 10 564 0 -199 148 208 -20 2106 2226 10 381 0 -200 475 477 -10 1618 1738 10 962 0 -201 390 325 -10 1005 1125 10 146 0 -202 346 354 -10 3270 3390 10 289 0 -203 91 266 10 930 1050 10 0 414 -204 17 65 -20 1307 1427 10 124 0 -205 391 112 24 4001 4121 10 0 978 -206 224 203 20 155 275 10 0 305 -207 426 231 -10 4114 4234 10 532 0 -208 260 472 33 4144 4264 0 0 1012 -209 265 0 -30 3584 3704 10 612 0 -210 391 293 -20 903 1023 10 416 0 -211 411 421 20 1260 1380 10 0 473 -212 132 30 20 1303 1423 10 0 759 -213 475 480 -20 1518 1638 10 949 0 -214 286 244 -20 5136 5256 10 315 0 -215 436 237 20 686 806 10 0 940 -216 402 284 30 658 778 10 0 516 -217 287 397 -19 2257 2377 10 656 0 -218 272 420 -9 5543 5663 10 936 0 -219 477 120 -5 1368 1488 10 16 0 -220 145 434 20 932 1052 10 0 25 -221 33 286 -26 6184 6304 10 373 0 -222 370 262 -30 4398 4518 10 779 0 -223 393 20 20 1563 1683 10 0 820 -224 330 308 -18 4682 4802 10 722 0 -225 246 398 40 532 652 10 0 499 -226 482 184 14 4427 4547 10 0 478 -227 451 305 13 774 894 10 0 398 -228 226 316 -9 221 341 10 437 0 -229 110 459 30 1391 1511 10 0 860 -230 244 250 10 47 167 10 0 805 -231 458 16 -10 1192 1312 10 261 0 -232 390 34 -10 4241 4361 10 732 0 -233 423 214 20 867 987 10 0 963 -234 219 215 32 127 247 10 0 476 -235 326 118 10 591 711 10 0 94 -236 365 74 -30 3394 3514 10 849 0 -237 331 356 -20 2847 2967 10 680 0 -238 210 398 -10 817 937 10 610 0 -239 403 93 -20 1363 1483 10 428 0 -240 248 404 30 598 718 10 0 3 -241 65 62 -10 3906 4026 10 640 0 -242 460 13 20 1287 1407 10 0 371 -243 0 293 30 1115 1235 10 0 505 -244 211 248 -10 96 216 10 871 0 -245 484 174 10 1058 1178 10 0 247 -246 175 352 12 6660 6780 0 0 1008 -247 455 168 -10 3467 3587 10 245 0 -248 224 191 20 324 444 10 0 864 -249 439 156 -10 2103 2223 10 573 0 -250 434 359 -19 5569 5689 10 577 0 -251 118 314 -10 1350 1470 10 45 0 -252 234 246 10 259 379 10 0 617 -253 406 450 20 1037 1157 10 0 409 -254 75 118 -20 1636 1756 10 827 0 -255 115 395 11 3261 3381 10 0 420 -256 329 456 19 996 1116 10 0 999 -257 218 403 -7 5277 5397 10 72 0 -258 149 341 -1 1616 1736 10 538 0 -259 253 74 20 5400 5520 10 0 115 -260 436 241 20 1309 1429 10 0 95 -261 238 203 10 375 495 10 0 231 -262 405 455 -20 1363 1483 10 71 0 -263 485 27 -10 1784 1904 10 1000 0 -264 323 118 20 643 763 10 0 709 -265 330 371 -20 2234 2354 10 84 0 -266 25 65 10 1505 1625 10 0 394 -267 406 96 20 863 983 10 0 336 -268 49 451 20 1120 1240 10 0 489 -269 307 249 -7 5506 5626 10 91 0 -270 178 135 -3 6055 6175 10 555 0 -271 299 353 34 396 516 10 0 741 -272 236 213 20 98 218 10 0 952 -273 355 177 20 497 617 10 0 954 -274 394 23 -10 1615 1735 10 282 0 -275 306 235 25 172 292 10 0 85 -276 90 477 18 1051 1171 10 0 554 -277 379 486 22 2687 2807 10 0 392 -278 435 16 -30 1470 1590 10 445 0 -279 8 497 40 1631 1751 10 0 61 -280 150 484 16 2501 2621 10 0 799 -281 213 399 18 936 1056 10 0 886 -282 391 18 10 1511 1631 10 0 274 -283 111 392 -20 4676 4796 10 828 0 -284 330 281 -14 5322 5442 10 597 0 -285 344 203 14 669 789 10 0 670 -286 91 235 10 1076 1196 10 0 536 -287 346 60 -20 1285 1405 10 810 0 -288 483 27 20 1832 1952 10 0 953 -289 382 498 10 1237 1357 10 0 202 -290 457 492 -14 2032 2152 10 948 0 -291 291 213 -20 5031 5151 10 685 0 -292 154 374 -20 3748 3868 10 334 0 -293 225 196 10 223 343 10 0 525 -294 94 40 -20 4272 4392 10 346 0 -295 0 356 -20 4345 4465 10 449 0 -296 297 283 -13 5398 5518 10 890 0 -297 371 423 10 784 904 10 0 434 -298 417 217 30 754 874 10 0 674 -299 500 228 -30 3127 3247 10 351 0 -300 412 214 10 604 724 10 0 716 -301 442 289 25 764 884 10 0 89 -302 157 269 -11 6305 6425 10 80 0 -303 440 241 -14 1205 1325 10 644 0 -304 100 266 -10 586 706 10 161 0 -305 111 178 -20 566 686 10 206 0 -306 91 101 -10 1193 1313 10 859 0 -307 25 307 -20 998 1118 10 615 0 -308 135 400 -22 1194 1314 10 484 0 -309 58 458 10 1291 1411 10 0 622 -310 133 26 -20 1247 1367 10 733 0 -311 211 386 20 506 626 10 0 157 -312 94 97 20 856 976 10 0 632 -313 30 155 9 5122 5242 10 0 842 -314 208 184 20 294 414 10 0 410 -315 394 333 20 777 897 10 0 214 -316 355 180 30 549 669 10 0 412 -317 241 180 -14 6778 6898 10 652 0 -318 21 485 30 1353 1473 10 0 4 -319 80 251 -10 1214 1334 10 930 0 -320 476 61 -10 1795 1915 10 167 0 -321 406 94 10 911 1031 10 0 841 -322 364 71 -12 5394 5514 10 720 0 -323 418 221 10 1165 1285 10 0 889 -324 274 441 12 2778 2898 10 0 442 -325 304 97 20 727 847 10 0 646 -326 297 102 10 609 729 10 0 870 -327 250 405 20 646 766 10 0 582 -328 111 463 20 1286 1406 10 0 815 -329 408 279 20 880 1000 10 0 548 -330 263 418 -20 1114 1234 10 991 0 -331 480 119 -10 2514 2634 10 533 0 -332 420 383 -15 3928 4048 10 194 0 -333 142 14 18 3341 3461 10 0 73 -334 73 328 20 714 834 10 0 292 -335 50 438 -10 1347 1467 10 740 0 -336 441 7 -20 1566 1686 10 267 0 -337 462 14 20 1588 1708 10 0 780 -338 360 294 -23 5671 5791 10 98 0 -339 58 39 -4 4652 4772 10 526 0 -340 58 391 -20 3529 3649 10 359 0 -341 410 285 20 771 891 10 0 133 -342 96 97 -20 808 928 10 605 0 -343 21 64 20 1409 1529 10 0 92 -344 238 210 30 535 655 10 0 457 -345 479 121 10 1231 1351 10 0 956 -346 200 178 20 374 494 10 0 294 -347 216 341 19 2616 2736 10 0 427 -348 48 437 -14 3215 3335 10 496 0 -349 200 270 20 236 356 10 0 587 -350 357 181 20 598 718 10 0 806 -351 476 174 30 1297 1417 10 0 299 -352 400 286 10 607 727 10 0 498 -353 351 481 -10 1287 1407 10 681 0 -354 270 400 10 545 665 10 0 164 -355 95 234 10 653 773 10 0 626 -356 128 113 22 1451 1571 10 0 970 -357 133 455 25 3232 3352 10 0 396 -358 16 463 20 1499 1619 10 0 13 -359 59 388 20 2651 2771 10 0 340 -360 376 190 30 621 741 10 0 41 -361 481 122 -20 1182 1302 10 170 0 -362 266 405 -30 868 988 10 436 0 -363 374 232 33 441 561 10 0 155 -364 398 20 -40 1076 1196 10 884 0 -365 481 26 30 1227 1347 10 0 183 -366 63 444 20 1519 1639 10 0 461 -367 89 290 -20 670 790 10 976 0 -368 246 314 -30 5781 5901 10 850 0 -369 40 304 -4 4579 4699 10 64 0 -370 262 369 15 517 637 10 0 443 -371 323 29 -20 4550 4670 10 242 0 -372 89 65 -20 2881 3001 10 800 0 -373 144 35 26 899 1019 10 0 221 -374 200 265 -20 610 730 10 868 0 -375 436 264 20 686 806 10 0 429 -376 15 457 20 1294 1414 10 0 9 -377 397 20 -10 1120 1240 10 175 0 -378 328 491 -8 2713 2833 10 761 0 -379 399 175 -30 2988 3108 10 117 0 -380 432 2 -20 1866 1986 10 165 0 -381 63 336 20 1065 1185 10 0 199 -382 6 296 -10 1279 1399 10 421 0 -383 146 376 -26 937 1057 10 791 0 -384 295 247 -14 5214 5334 10 594 0 -385 235 33 -23 5348 5468 10 42 0 -386 233 204 20 217 337 10 0 553 -387 142 360 -8 6128 6248 10 111 0 -388 177 156 25 669 789 10 0 916 -389 315 287 30 592 712 10 0 794 -390 452 172 -20 2433 2553 10 971 0 -391 263 153 -20 1650 1770 10 51 0 -392 493 493 -22 3426 3546 10 277 0 -393 320 283 30 442 562 10 0 669 -394 64 5 -10 4516 4636 10 266 0 -395 95 235 10 563 683 10 0 424 -396 203 211 -25 5226 5346 10 357 0 -397 16 497 20 1703 1823 10 0 485 -398 348 348 -13 3739 3859 10 227 0 -399 485 104 -20 3178 3298 10 456 0 -400 330 147 28 3394 3514 10 0 529 -401 443 237 20 754 874 10 0 713 -402 316 286 30 547 667 10 0 81 -403 335 46 -15 5367 5487 10 804 0 -404 381 495 20 1290 1410 10 0 439 -405 364 173 30 721 841 10 0 604 -406 267 162 -10 5797 5917 10 490 0 -407 214 245 8 85 205 10 0 408 -408 92 234 -8 939 1059 10 407 0 -409 347 459 -20 1918 2038 10 253 0 -410 30 7 -20 4754 4874 10 314 0 -411 120 37 28 3101 3221 10 0 895 -412 397 153 -30 3530 3650 10 316 0 -413 210 29 -23 4203 4323 10 667 0 -414 87 285 -10 964 1084 10 203 0 -415 132 32 18 3138 3258 10 0 574 -416 390 294 20 949 1069 10 0 210 -417 67 451 -20 4862 4982 10 910 0 -418 24 68 -10 1658 1778 10 706 0 -419 146 439 -20 1037 1157 10 837 0 -420 209 212 -11 6111 6231 10 255 0 -421 6 292 10 970 1090 10 0 382 -422 18 63 10 1356 1476 10 0 506 -423 149 98 4 4660 4780 10 0 836 -424 91 268 -10 978 1098 10 395 0 -425 103 177 28 2506 2626 10 0 433 -426 367 178 -9 721 841 10 477 0 -427 225 269 -19 5083 5203 10 347 0 -428 443 246 20 919 1039 10 0 239 -429 306 42 -20 1907 2027 10 375 0 -430 374 306 -15 3976 4096 10 758 0 -431 413 421 -20 1212 1332 10 630 0 -432 470 405 -9 3703 3823 10 649 0 -433 33 278 -28 5949 6069 10 425 0 -434 149 458 -10 4655 4775 10 297 0 -435 257 57 -25 4904 5024 10 565 0 -436 272 403 30 759 879 10 0 362 -437 221 291 9 184 304 10 0 228 -438 1 101 -8 5029 5149 10 717 0 -439 332 459 -20 1475 1595 10 404 0 -440 220 392 -10 1031 1151 10 65 0 -441 253 50 -20 903 1023 10 797 0 -442 250 441 -12 3023 3143 10 324 0 -443 471 484 -15 1359 1479 10 370 0 -444 480 152 -25 4086 4206 10 600 0 -445 404 83 30 1194 1314 10 0 278 -446 476 94 -14 1079 1199 10 38 0 -447 458 213 -10 4513 4633 10 756 0 -448 215 395 -10 968 1088 10 876 0 -449 85 288 20 728 848 10 0 295 -450 179 75 -40 2960 3080 10 885 0 -451 228 287 21 112 232 10 0 855 -452 397 18 -20 1168 1288 10 474 0 -453 238 204 20 419 539 10 0 701 -454 488 3 3 1602 1722 10 0 561 -455 407 88 10 1298 1418 10 0 186 -456 459 14 20 1241 1361 10 0 399 -457 120 17 -30 1116 1236 10 344 0 -458 235 316 -17 2623 2743 10 817 0 -459 370 382 11 3535 3655 10 0 631 -460 405 454 -23 5212 5332 10 831 0 -461 17 458 -20 1732 1852 10 366 0 -462 43 135 31 887 1007 10 0 921 -463 318 497 -20 3415 3535 10 589 0 -464 199 268 20 285 405 10 0 100 -465 111 467 20 1148 1268 10 0 782 -466 138 438 20 1149 1269 10 0 76 -467 172 314 -23 2182 2302 10 6 0 -468 494 468 31 1410 1530 10 0 658 -469 35 303 20 826 946 10 0 619 -470 341 59 -9 3159 3279 10 781 0 -471 423 221 -10 1033 1153 10 764 0 -472 395 295 20 845 965 10 0 567 -473 413 417 -20 1424 1544 10 211 0 -474 339 60 20 844 964 10 0 452 -475 277 428 -30 1961 2081 10 639 0 -476 176 199 -32 299 419 10 234 0 -477 265 240 9 18 138 10 0 426 -478 365 190 -14 5910 6030 10 226 0 -479 133 53 -10 1118 1238 10 653 0 -480 387 488 20 1448 1568 10 0 745 -481 385 295 -30 509 629 10 792 0 -482 491 369 -10 2918 3038 10 848 0 -483 445 273 -20 1031 1151 10 11 0 -484 195 273 22 178 298 10 0 308 -485 313 493 -20 4772 4892 10 397 0 -486 495 227 -20 1376 1496 10 74 0 -487 241 403 10 881 1001 10 0 58 -488 30 72 -25 1726 1846 10 584 0 -489 21 487 -20 1401 1521 10 268 0 -490 324 99 10 1352 1472 10 0 406 -491 453 318 30 1495 1615 10 0 36 -492 443 272 10 1080 1200 10 0 777 -493 447 184 27 1698 1818 10 0 863 -494 366 288 -10 2735 2855 10 2 0 -495 440 284 -20 3407 3527 10 87 0 -496 13 314 14 975 1095 10 0 348 -497 72 227 -24 2255 2375 10 694 0 -498 377 385 -10 3465 3585 10 352 0 -499 477 478 -40 1569 1689 10 225 0 -500 204 185 20 653 773 10 0 947 -501 226 191 20 372 492 10 0 528 -502 330 138 -10 4438 4558 10 35 0 -503 185 434 -10 2294 2414 10 507 0 -504 483 22 10 1336 1456 10 0 708 -505 71 282 -30 2567 2687 10 243 0 -506 60 5 -10 4175 4295 10 422 0 -507 189 402 10 2144 2264 10 0 503 -508 134 211 35 482 602 10 0 47 -509 146 313 22 4781 4901 10 0 872 -510 21 146 21 1947 2067 10 0 28 -511 37 281 -4 1973 2093 10 919 0 -512 416 417 -20 1372 1492 10 774 0 -513 44 311 -18 1630 1750 10 634 0 -514 361 181 20 788 908 10 0 68 -515 444 242 10 862 982 10 0 731 -516 444 271 -30 982 1102 10 216 0 -517 359 179 -20 649 769 10 927 0 -518 388 334 20 632 752 10 0 711 -519 401 164 13 2485 2605 0 0 1003 -520 499 316 18 2487 2607 10 0 757 -521 399 106 -20 1207 1327 10 891 0 -522 425 215 -10 916 1036 10 692 0 -523 407 98 10 814 934 10 0 20 -524 406 460 -20 2877 2997 10 986 0 -525 88 95 -10 1081 1201 10 293 0 -526 95 64 4 3064 3184 10 0 339 -527 306 229 -11 5281 5401 10 769 0 -528 273 55 -20 725 845 10 501 0 -529 384 149 -28 4789 4909 10 400 0 -530 122 35 10 981 1101 10 0 743 -531 308 199 -21 6033 6153 10 661 0 -532 390 301 10 661 781 10 0 207 -533 300 108 10 542 662 10 0 331 -534 267 400 -10 929 1049 10 82 0 -535 8 300 -16 1423 1543 10 988 0 -536 105 181 -10 6125 6245 10 286 0 -537 398 325 -20 933 1053 10 983 0 -538 166 247 1 276 396 10 0 258 -539 140 431 30 828 948 10 0 825 -540 253 118 -18 2189 2309 10 715 0 -541 359 246 18 5691 5811 0 0 1014 -542 321 277 10 244 364 10 0 66 -543 168 59 6 1464 1584 10 0 187 -544 406 285 20 715 835 10 0 934 -545 391 334 20 724 844 10 0 677 -546 437 19 -10 4056 4176 10 122 0 -547 201 278 13 166 286 10 0 668 -548 435 267 -20 1291 1411 10 329 0 -549 245 408 10 815 935 10 0 718 -550 16 462 -10 1543 1663 10 12 0 -551 107 374 8 3657 3777 10 0 158 -552 477 97 10 1131 1251 10 0 665 -553 346 57 -20 1233 1353 10 386 0 -554 14 459 -18 1343 1463 10 276 0 -555 102 6 3 5834 5954 10 0 270 -556 359 287 24 400 520 10 0 931 -557 297 131 -27 4662 4782 10 951 0 -558 282 1 -2 4170 4290 10 750 0 -559 21 70 -20 3085 3205 10 572 0 -560 440 244 -20 1064 1184 10 707 0 -561 482 104 -3 3230 3350 10 454 0 -562 120 261 -20 3173 3293 10 152 0 -563 125 29 -10 1133 1253 10 31 0 -564 292 32 14 917 1037 10 0 198 -565 262 92 25 2522 2642 10 0 435 -566 68 160 -10 4543 4663 10 900 0 -567 405 276 -20 937 1057 10 472 0 -568 277 50 10 791 911 10 0 142 -569 32 319 -12 1602 1722 10 902 0 -570 344 70 24 4583 4703 10 0 997 -571 481 84 17 2022 2142 10 0 643 -572 21 68 20 1606 1726 10 0 559 -573 441 244 10 1108 1228 10 0 249 -574 57 43 -18 4094 4214 10 415 0 -575 1 293 10 1071 1191 10 0 583 -576 481 96 -20 1188 1308 10 629 0 -577 471 368 19 1712 1832 10 0 250 -578 236 126 -10 439 559 10 695 0 -579 406 99 20 908 1028 0 0 1009 -580 303 186 10 5417 5537 0 0 1013 -581 225 369 38 426 546 10 0 586 -582 412 453 -20 1188 1308 10 327 0 -583 104 349 -10 4037 4157 10 575 0 -584 173 182 25 351 471 10 0 488 -585 111 464 -30 1242 1362 10 869 0 -586 53 440 -38 1292 1412 10 581 0 -587 69 336 -20 872 992 10 349 0 -588 359 182 20 837 957 10 0 918 -589 13 459 20 1387 1507 10 0 463 -590 244 277 -17 5205 5325 10 834 0 -591 484 177 20 1006 1126 10 0 877 -592 452 206 31 1969 2089 10 0 67 -593 22 483 30 1244 1364 10 0 905 -594 452 110 14 1361 1481 10 0 384 -595 347 192 -7 5953 6073 10 775 0 -596 95 92 -24 1011 1131 10 748 0 -597 368 311 14 3704 3824 10 0 284 -598 479 387 13 1590 1710 10 0 136 -599 479 169 20 1234 1354 10 0 191 -600 497 266 25 2990 3110 10 0 444 -601 66 336 10 1013 1133 10 0 189 -602 376 195 10 724 844 10 0 950 -603 401 281 20 1044 1164 10 0 691 -604 441 177 -30 4005 4125 10 405 0 -605 231 203 20 266 386 10 0 342 -606 21 488 10 1445 1565 10 0 138 -607 231 204 20 601 721 10 0 961 -608 122 422 -27 5827 5947 10 120 0 -609 65 453 30 1127 1247 10 0 858 -610 206 261 10 730 850 10 0 238 -611 466 149 16 4744 4864 10 0 765 -612 313 119 30 863 983 10 0 209 -613 90 274 20 717 837 10 0 160 -614 39 162 18 2261 2381 10 0 623 -615 35 306 20 918 1038 10 0 307 -616 437 15 -10 1421 1541 10 171 0 -617 307 412 -10 1615 1735 10 252 0 -618 79 291 -10 835 955 10 59 0 -619 64 437 -20 3673 3793 10 469 0 -620 376 92 -40 3962 4082 10 172 0 -621 129 27 -20 1190 1310 10 137 0 -622 196 489 -10 4121 4241 10 309 0 -623 51 286 -18 5836 5956 10 614 0 -624 20 488 -18 1489 1609 10 144 0 -625 13 455 -11 1243 1363 10 833 0 -626 170 347 -10 1743 1863 10 355 0 -627 92 230 20 755 875 10 0 786 -628 117 467 10 958 1078 10 0 704 -629 413 217 20 656 776 10 0 576 -630 405 450 20 993 1113 10 0 431 -631 394 322 -11 4099 4219 10 459 0 -632 125 61 -20 2447 2567 10 312 0 -633 238 123 24 3124 3244 0 0 1007 -634 11 403 18 1372 1492 10 0 513 -635 89 272 10 766 886 10 0 134 -636 304 102 30 787 907 10 0 751 -637 478 121 -37 1275 1395 10 672 0 -638 408 84 10 1137 1257 10 0 57 -639 376 494 30 1079 1199 10 0 475 -640 20 73 10 1101 1221 10 0 241 -641 159 299 -10 4062 4182 10 770 0 -642 95 382 -10 925 1045 10 126 0 -643 352 63 -17 4713 4833 10 571 0 -644 365 274 14 410 530 10 0 303 -645 30 301 -10 1110 1230 10 793 0 -646 351 5 -20 1984 2104 10 325 0 -647 197 267 10 435 555 10 0 822 -648 498 171 -24 5026 5146 10 33 0 -649 468 352 9 3073 3193 10 0 432 -650 418 251 21 4787 4907 0 0 1010 -651 489 437 29 2827 2947 10 0 840 -652 251 63 14 3950 4070 10 0 317 -653 132 55 10 1069 1189 10 0 479 -654 281 96 1 4503 4623 10 0 54 -655 333 293 -22 2468 2588 10 992 0 -656 255 487 19 1592 1712 10 0 217 -657 207 400 20 762 882 10 0 689 -658 469 489 -31 2222 2342 10 468 0 -659 244 254 20 401 521 10 0 14 -660 233 207 10 165 285 10 0 700 -661 441 60 21 5835 5955 10 0 531 -662 411 379 -10 4773 4893 10 15 0 -663 178 72 -40 3027 3147 10 5 0 -664 51 447 10 1178 1298 10 0 62 -665 478 118 -10 1417 1537 10 552 0 -666 141 426 -10 2126 2246 10 102 0 -667 295 89 23 2968 3088 10 0 413 -668 112 433 -13 940 1060 10 547 0 -669 320 211 -30 3970 4090 10 393 0 -670 400 103 -14 1022 1142 10 285 0 -671 408 453 10 1132 1252 10 0 104 -672 435 180 37 898 1018 10 0 637 -673 432 66 -21 4285 4405 10 96 0 -674 374 116 -30 2349 2469 10 298 0 -675 478 102 10 1297 1417 10 0 896 -676 335 57 30 784 904 10 0 195 -677 385 239 -20 3142 3262 10 545 0 -678 386 245 -20 1916 2036 10 105 0 -679 208 396 20 706 826 10 0 32 -680 380 489 20 1516 1636 10 0 237 -681 380 498 10 1189 1309 10 0 353 -682 440 7 20 1255 1375 10 0 998 -683 434 245 10 1367 1487 10 0 24 -684 90 232 -10 846 966 10 955 0 -685 389 334 20 676 796 10 0 291 -686 241 205 -17 472 592 10 929 0 -687 18 24 -30 2513 2633 10 914 0 -688 57 183 -8 4401 4521 10 879 0 -689 59 457 -20 1337 1457 10 657 0 -690 442 243 -15 1154 1274 10 989 0 -691 402 281 -20 1000 1120 10 603 0 -692 445 237 10 802 922 10 0 522 -693 441 273 -30 1129 1249 10 755 0 -694 31 175 24 986 1106 10 0 497 -695 234 202 10 319 439 10 0 578 -696 52 303 25 1765 1885 10 0 185 -697 167 445 -26 5648 5768 10 30 0 -698 179 286 -20 1365 1485 10 737 0 -699 269 48 -10 1122 1242 10 169 0 -700 165 59 -10 3771 3891 10 660 0 -701 461 8 -20 1476 1596 10 453 0 -702 421 415 30 941 1061 10 0 128 -703 59 459 -12 1245 1365 10 920 0 -704 24 492 -10 1848 1968 10 628 0 -705 55 449 20 1054 1174 10 0 975 -706 224 192 10 280 400 10 0 418 -707 444 269 20 934 1054 10 0 560 -708 491 20 -10 1574 1694 10 504 0 -709 313 126 -20 973 1093 10 264 0 -710 283 438 3 926 1046 10 0 83 -711 352 241 -20 3169 3289 10 518 0 -712 398 476 25 1672 1792 10 0 39 -713 442 247 -20 964 1084 10 401 0 -714 217 207 -10 5530 5650 10 60 0 -715 233 87 18 1010 1130 10 0 540 -716 479 127 -10 1079 1199 10 300 0 -717 6 53 8 2348 2468 10 0 438 -718 478 300 -10 3558 3678 10 549 0 -719 378 493 30 1127 1247 10 0 90 -720 303 78 12 660 780 10 0 322 -721 344 62 -20 1386 1506 10 852 0 -722 371 315 18 4663 4783 10 0 224 -723 200 78 31 3971 4091 10 0 53 -724 413 391 8 868 988 10 0 56 -725 415 216 -20 705 825 10 143 0 -726 397 57 -10 5904 6024 10 990 0 -727 293 228 19 133 253 10 0 132 -728 0 297 -10 1171 1291 10 75 0 -729 435 20 -20 1526 1646 10 861 0 -730 195 111 -44 3992 4112 10 34 0 -731 417 218 -10 1112 1232 10 515 0 -732 340 54 10 951 1071 10 0 232 -733 132 57 20 978 1098 10 0 310 -734 210 379 12 2835 2955 10 0 173 -735 228 260 12 6422 6542 0 0 1006 -736 399 104 -19 1159 1279 10 114 0 -737 95 277 20 1098 1218 10 0 698 -738 360 284 -25 2666 2786 10 862 0 -739 53 466 -10 1340 1460 10 847 0 -740 112 465 10 1197 1317 10 0 335 -741 313 391 -34 598 718 10 271 0 -742 93 235 10 985 1105 10 0 995 -743 125 32 -10 1038 1158 10 530 0 -744 215 282 -24 5762 5882 10 911 0 -745 224 320 -20 5135 5255 10 480 0 -746 134 428 20 1232 1352 10 0 197 -747 26 490 -17 1899 2019 10 147 0 -748 44 115 24 925 1045 10 0 596 -749 438 127 2 3764 3884 10 0 196 -750 239 15 2 2415 2535 10 0 558 -751 342 54 -30 999 1119 10 636 0 -752 109 463 -20 1334 1454 10 996 0 -753 199 187 20 507 627 10 0 944 -754 201 188 10 555 675 10 0 145 -755 399 301 30 777 897 10 0 693 -756 484 171 10 1173 1293 10 0 447 -757 272 234 -18 6361 6481 10 520 0 -758 380 350 15 3466 3586 10 0 430 -759 140 108 -20 4285 4405 10 212 0 -760 228 199 10 537 657 10 0 959 -761 245 461 8 2597 2717 10 0 378 -762 305 107 20 901 1021 10 0 118 -763 231 195 20 437 557 10 0 941 -764 450 265 10 865 985 10 0 471 -765 273 149 -16 6011 6131 10 611 0 -766 12 358 -18 4897 5017 10 946 0 -767 315 121 10 812 932 10 0 796 -768 420 213 10 814 934 10 0 776 -769 331 134 11 4495 4615 10 0 527 -770 84 377 10 3705 3825 10 0 641 -771 320 280 10 340 460 10 0 909 -772 89 185 -2 2399 2519 10 174 0 -773 472 481 -10 1306 1426 10 107 0 -774 422 420 20 1050 1170 10 0 512 -775 475 267 7 3118 3238 10 0 595 -776 470 125 -10 952 1072 10 768 0 -777 435 268 -10 1247 1367 10 492 0 -778 409 155 19 681 801 10 0 824 -779 243 248 30 96 216 10 0 222 -780 488 96 -20 4265 4385 10 337 0 -781 341 72 9 3219 3339 10 0 470 -782 58 449 -20 1451 1571 10 465 0 -783 16 460 -30 1643 1763 10 867 0 -784 480 136 -20 967 1087 10 888 0 -785 162 388 -16 4504 4624 10 807 0 -786 47 208 -20 906 1026 10 627 0 -787 324 127 30 514 634 10 0 981 -788 87 96 30 1127 1247 10 0 851 -789 140 137 32 2279 2399 10 0 166 -790 314 205 -14 6107 6227 10 865 0 -791 96 346 26 741 861 10 0 383 -792 321 280 30 296 416 10 0 481 -793 245 251 10 5 125 10 0 645 -794 436 295 -30 2113 2233 10 389 0 -795 274 261 20 6828 6948 0 0 1001 -796 271 128 -10 1382 1502 10 767 0 -797 275 45 20 898 1018 10 0 441 -798 422 409 10 877 997 10 0 892 -799 146 188 -16 4940 5060 10 280 0 -800 93 96 20 902 1022 10 0 372 -801 409 255 23 6090 6210 0 0 1005 -802 449 428 -10 4987 5107 10 184 0 -803 90 285 -20 1105 1225 10 823 0 -804 415 95 15 4707 4827 10 0 403 -805 88 287 -10 1054 1174 10 230 0 -806 379 196 -20 776 896 10 350 0 -807 368 452 16 2680 2800 10 0 785 -808 202 186 20 604 724 10 0 832 -809 435 11 -20 1189 1309 10 856 0 -810 269 46 20 1074 1194 10 0 287 -811 7 292 10 926 1046 10 0 119 -812 44 496 -30 1607 1727 10 987 0 -813 478 99 -10 1245 1365 10 150 0 -814 391 99 20 766 886 10 0 180 -815 132 477 -20 1309 1429 10 328 0 -816 24 65 -10 1461 1581 10 881 0 -817 130 247 17 420 540 10 0 458 -818 133 273 20 417 537 10 0 880 -819 347 62 -10 1334 1454 10 22 0 -820 404 140 -20 5035 5155 10 223 0 -821 416 420 -30 1159 1279 10 93 0 -822 67 335 -10 967 1087 10 647 0 -823 92 270 20 1027 1147 10 0 803 -824 411 95 -19 971 1091 10 778 0 -825 132 479 -30 970 1090 10 539 0 -826 366 334 5 1641 1761 0 0 1011 -827 125 39 20 921 1041 10 0 254 -828 419 422 20 1105 1225 10 0 283 -829 460 2 -9 1412 1532 10 908 0 -830 67 334 -10 923 1043 10 923 0 -831 448 414 23 4891 5011 10 0 460 -832 46 163 -20 3704 3824 10 808 0 -833 77 465 11 1044 1164 10 0 625 -834 284 319 17 3267 3387 10 0 590 -835 102 422 -9 905 1025 10 984 0 -836 240 34 -4 6238 6358 10 423 0 -837 141 428 20 775 895 10 0 419 -838 204 269 -20 139 259 10 176 0 -839 144 439 30 1085 1205 10 0 913 -840 470 417 -29 2947 3067 10 651 0 -841 404 103 -10 966 1086 10 321 0 -842 5 281 -9 5486 5606 10 313 0 -843 487 320 -10 3431 3551 10 939 0 -844 398 23 10 1024 1144 10 0 977 -845 90 296 20 606 726 10 0 168 -846 386 13 10 1348 1468 10 0 873 -847 115 465 10 1049 1169 10 0 739 -848 473 475 10 1669 1789 10 0 482 -849 275 42 30 950 1070 10 0 236 -850 286 356 30 388 508 10 0 368 -851 15 69 -30 1167 1287 10 788 0 -852 267 44 20 1023 1143 10 0 721 -853 243 399 10 939 1059 10 0 915 -854 390 249 -10 2327 2447 10 973 0 -855 210 391 -21 566 686 10 451 0 -856 433 15 20 1131 1251 10 0 809 -857 24 259 -23 1480 1600 10 50 0 -858 12 463 -30 1443 1563 10 609 0 -859 237 213 10 588 708 10 0 306 -860 182 480 -30 1459 1579 10 229 0 -861 409 88 20 1081 1201 10 0 729 -862 244 368 25 1656 1776 10 0 738 -863 381 328 -27 2869 2989 10 493 0 -864 213 185 -20 239 359 10 248 0 -865 482 141 14 4043 4163 10 0 790 -866 319 124 20 712 832 10 0 933 -867 141 431 30 872 992 10 0 783 -868 198 264 20 561 681 10 0 374 -869 69 334 30 824 944 10 0 585 -870 299 98 -10 667 787 10 326 0 -871 240 250 10 150 270 10 0 244 -872 199 203 -22 5829 5949 10 509 0 -873 459 17 -10 1645 1765 10 846 0 -874 423 217 -40 967 1087 10 26 0 -875 477 179 20 891 1011 10 0 131 -876 213 397 10 869 989 10 0 448 -877 405 187 -20 5002 5122 10 591 0 -878 269 402 -30 811 931 10 149 0 -879 53 204 8 4220 4340 10 0 688 -880 13 394 -20 1490 1610 10 818 0 -881 15 68 10 1211 1331 10 0 816 -882 56 268 -17 4256 4376 10 979 0 -883 360 184 10 886 1006 10 0 928 -884 307 102 40 839 959 10 0 364 -885 130 57 40 930 1050 10 0 450 -886 250 328 -18 995 1115 10 281 0 -887 91 231 30 801 921 10 0 945 -888 479 176 20 946 1066 10 0 784 -889 420 224 -10 1716 1836 10 323 0 -890 461 182 13 2516 2636 10 0 296 -891 418 218 20 1068 1188 10 0 521 -892 419 418 -10 996 1116 10 798 0 -893 336 493 20 5972 6092 10 0 141 -894 389 300 10 615 735 10 0 63 -895 92 76 -28 4556 4676 10 411 0 -896 476 102 -10 1345 1465 10 675 0 -897 418 399 20 1751 1871 10 0 912 -898 109 56 27 899 1019 10 0 44 -899 13 465 -10 3094 3214 10 97 0 -900 92 232 10 707 827 10 0 566 -901 394 47 -30 1252 1372 10 52 0 -902 16 287 12 1083 1203 10 0 569 -903 399 102 20 1068 1188 10 0 112 -904 143 158 12 550 670 10 0 935 -905 18 484 -30 1300 1420 10 593 0 -906 250 411 30 752 872 10 0 10 -907 19 273 25 4066 4186 10 0 86 -908 365 28 9 1073 1193 10 0 829 -909 387 297 -10 561 681 10 771 0 -910 433 447 20 3177 3297 10 0 417 -911 214 274 24 5476 5596 10 0 744 -912 489 338 -20 5589 5709 10 897 0 -913 130 494 -30 3035 3155 10 839 0 -914 23 67 30 1557 1677 10 0 687 -915 374 489 -10 1017 1137 10 853 0 -916 126 30 -25 1087 1207 10 388 0 -917 112 467 -40 1104 1224 10 17 0 -918 489 274 -20 2135 2255 10 588 0 -919 61 214 4 1367 1487 10 0 511 -920 166 440 12 771 891 10 0 703 -921 56 75 -31 5751 5871 10 462 0 -922 210 276 5 131 251 10 0 966 -923 80 286 10 896 1016 10 0 830 -924 17 459 10 1688 1808 10 0 106 -925 66 448 10 1021 1141 10 0 957 -926 351 128 -10 5013 5133 10 969 0 -927 352 176 20 444 564 10 0 517 -928 490 286 -10 2089 2209 10 883 0 -929 247 219 17 65 185 10 0 686 -930 86 268 10 869 989 10 0 319 -931 398 329 -24 611 731 10 556 0 -932 272 402 10 638 758 10 0 148 -933 317 123 -20 761 881 10 866 0 -934 408 318 -20 2572 2692 10 544 0 -935 66 31 -12 4194 4314 10 904 0 -936 425 448 9 3178 3298 10 0 218 -937 35 304 -20 870 990 10 101 0 -938 471 94 30 3995 4115 10 0 121 -939 470 473 10 1724 1844 10 0 843 -940 224 56 -20 4746 4866 10 215 0 -941 343 47 -20 1108 1228 10 763 0 -942 52 18 28 3428 3548 10 0 156 -943 16 68 20 1255 1375 10 0 151 -944 195 185 -20 449 569 10 753 0 -945 92 236 -30 1031 1151 10 887 0 -946 76 462 18 3824 3944 10 0 766 -947 124 56 -20 865 985 10 500 0 -948 481 454 14 1282 1402 10 0 290 -949 477 483 20 1463 1583 10 0 213 -950 481 124 -10 1134 1254 10 602 0 -951 389 156 27 2862 2982 10 0 557 -952 384 16 -20 1402 1522 10 272 0 -953 492 34 -20 3242 3362 10 288 0 -954 371 200 -20 897 1017 10 273 0 -955 153 235 10 333 453 10 0 684 -956 428 202 -10 3615 3735 10 345 0 -957 257 391 -10 6532 6652 10 925 0 -958 421 218 10 1016 1136 10 0 23 -959 206 186 -10 750 870 10 760 0 -960 393 301 30 713 833 10 0 188 -961 204 187 -20 701 821 10 607 0 -962 468 475 10 1193 1313 10 0 200 -963 477 122 -20 1320 1440 10 233 0 -964 100 66 -3 5599 5719 10 99 0 -965 489 27 10 1685 1805 10 0 108 -966 12 451 -5 1186 1306 10 922 0 -967 197 270 30 383 503 10 0 972 -968 311 422 -15 3952 4072 10 29 0 -969 489 17 10 1520 1640 10 0 926 -970 13 214 -22 5414 5534 10 356 0 -971 440 247 20 1012 1132 10 0 390 -972 28 467 -30 5370 5490 10 967 0 -973 388 325 10 1053 1173 10 0 854 -974 270 401 20 589 709 10 0 37 -975 5 445 -20 1244 1364 10 705 0 -976 198 271 20 337 457 10 0 367 -977 480 131 -10 2750 2870 10 844 0 -978 437 98 -24 4455 4575 10 205 0 -979 131 246 17 3328 3448 10 0 882 -980 49 437 7 1710 1830 10 0 113 -981 270 49 -30 1168 1288 10 787 0 -982 337 41 -13 4009 4129 10 129 0 -983 318 280 20 388 508 10 0 537 -984 154 392 9 626 746 10 0 835 -985 493 111 -10 2164 2284 10 110 0 -986 399 450 20 1435 1555 10 0 524 -987 67 452 30 1078 1198 10 0 812 -988 34 239 16 876 996 10 0 535 -989 343 276 15 326 446 10 0 690 -990 393 12 10 1237 1357 10 0 726 -991 236 247 20 210 330 10 0 330 -992 340 291 22 1882 2002 10 0 655 -993 3 292 -10 1022 1142 10 40 0 -994 209 68 -28 6272 6392 10 109 0 -995 18 225 -10 2765 2885 10 742 0 -996 147 435 20 980 1100 10 0 752 -997 335 99 -24 4874 4994 10 570 0 -998 485 24 -20 1285 1405 10 682 0 -999 470 475 -19 1241 1361 10 256 0 -1000 341 58 10 895 1015 10 0 263 -1001 274 261 -20 6828 6948 10 795 0 -1002 328 458 -17 3071 3191 10 8 0 -1003 401 164 -13 2485 2605 10 519 0 -1004 323 77 -36 5620 5740 10 48 0 -1005 409 255 -23 6090 6210 10 801 0 -1006 228 260 -12 6422 6542 10 735 0 -1007 238 123 -24 3124 3244 10 633 0 -1008 175 352 -12 6660 6780 10 246 0 -1009 406 99 -20 908 1028 10 579 0 -1010 418 251 -21 4787 4907 10 650 0 -1011 366 334 -5 1641 1761 10 826 0 -1012 260 472 -33 4144 4264 10 208 0 -1013 303 186 -10 5417 5537 10 580 0 -1014 359 246 -18 5691 5811 10 541 0 diff --git a/jsprit-instances/instances/lilim/1000/LRC21010.txt b/jsprit-instances/instances/lilim/1000/LRC21010.txt deleted file mode 100644 index cc1a67a64..000000000 --- a/jsprit-instances/instances/lilim/1000/LRC21010.txt +++ /dev/null @@ -1,1010 +0,0 @@ -250 1000 1 -0 250 250 0 0 7284 0 0 0 -1 440 436 -30 3328 3928 10 93 0 -2 214 394 10 682 1282 10 0 327 -3 476 483 -10 1179 1779 10 15 0 -4 352 487 -6 3367 3967 10 498 0 -5 230 197 -10 246 846 10 695 0 -6 175 239 23 75 675 10 0 14 -7 133 202 33 1602 2202 10 0 789 -8 328 458 17 2831 3431 10 0 936 -9 25 499 -20 1540 2140 10 268 0 -10 226 423 -20 548 1148 10 448 0 -11 313 282 20 414 1014 10 0 108 -12 60 454 10 1149 1749 10 0 550 -13 239 486 3 5688 6288 10 0 182 -14 102 264 -23 295 895 10 6 0 -15 408 452 10 848 1448 10 0 3 -16 451 62 5 889 1489 10 0 288 -17 203 390 40 395 995 10 0 549 -18 92 233 -10 655 1255 10 742 0 -19 7 300 -10 1139 1739 10 575 0 -20 409 90 -30 793 1393 10 792 0 -21 307 108 -20 710 1310 10 762 0 -22 347 54 -10 940 1540 10 287 0 -23 406 87 10 1012 1612 10 0 736 -24 371 332 14 1878 2478 10 0 956 -25 116 466 20 764 1364 10 0 366 -26 441 265 -20 549 1149 10 350 0 -27 130 140 -20 536 1136 10 206 0 -28 80 117 -8 3057 3657 10 717 0 -29 421 387 15 2965 3565 10 0 78 -30 83 300 26 1759 2359 10 0 972 -31 136 52 -20 931 1531 10 947 0 -32 18 462 -10 1351 1951 10 925 0 -33 390 120 -10 3777 4377 10 81 0 -34 188 119 -23 3659 4259 10 663 0 -35 467 114 -20 1264 1864 10 170 0 -36 440 292 -11 3520 4120 10 794 0 -37 268 400 -10 733 1333 10 238 0 -38 391 202 -20 296 896 10 588 0 -39 377 432 -15 3086 3686 10 758 0 -40 80 290 -10 550 1150 10 955 0 -41 439 15 -10 1133 1733 10 713 0 -42 307 52 23 3442 4042 10 0 872 -43 111 192 -27 4558 5158 10 700 0 -44 131 56 10 783 1383 10 0 733 -45 88 286 10 770 1370 10 0 152 -46 69 414 6 4813 5413 10 0 185 -47 41 232 16 581 1181 10 0 885 -48 323 77 36 5380 5980 10 0 406 -49 340 416 -20 1044 1644 10 440 0 -50 86 199 23 871 1471 10 0 134 -51 314 124 20 684 1284 10 0 364 -52 375 191 30 427 1027 10 0 303 -53 226 175 -18 6535 7135 10 435 0 -54 242 106 28 4834 5434 10 0 259 -55 417 417 10 1088 1688 10 0 194 -56 419 459 20 1025 1625 10 0 910 -57 389 11 -10 1053 1653 10 709 0 -58 450 416 -20 2067 2667 10 211 0 -59 246 255 10 210 810 10 0 213 -60 71 333 -10 535 1135 10 647 0 -61 105 474 -10 1643 2243 10 704 0 -62 20 489 10 1293 1893 10 0 913 -63 388 331 -20 340 940 10 105 0 -64 92 259 4 1358 1958 10 0 156 -65 200 261 10 426 1026 10 0 246 -66 400 288 30 319 919 10 0 638 -67 299 285 -10 4775 5375 10 527 0 -68 378 199 10 589 1189 10 0 483 -69 325 147 14 4507 5107 10 0 580 -70 421 386 -9 3057 3657 10 649 0 -71 404 447 20 700 1300 10 0 840 -72 412 478 -29 3599 4199 10 651 0 -73 26 67 -10 5027 5627 10 881 0 -74 358 183 20 695 1295 10 0 707 -75 30 302 -20 826 1426 10 101 0 -76 176 470 14 1947 2547 10 0 655 -77 96 270 -20 409 1009 10 304 0 -78 243 408 -15 5495 6095 10 29 0 -79 60 29 -10 5211 5811 10 395 0 -80 34 169 -20 1698 2298 10 116 0 -81 407 280 10 594 1194 10 0 33 -82 277 403 10 459 1059 10 0 262 -83 498 456 -16 5384 5984 10 807 0 -84 384 491 -30 1151 1751 10 436 0 -85 355 174 -9 2621 3221 10 390 0 -86 97 288 -22 4896 5496 10 484 0 -87 316 284 20 259 859 10 0 481 -88 334 403 -30 398 998 10 850 0 -89 415 223 20 979 1579 10 0 711 -90 230 320 -9 4528 5128 10 503 0 -91 432 199 -10 2314 2914 10 142 0 -92 92 18 -26 4257 4857 10 127 0 -93 273 300 30 55 655 10 0 1 -94 269 112 -20 4811 5411 10 808 0 -95 429 389 18 1456 2056 10 0 482 -96 371 71 21 907 1507 10 0 191 -97 5 297 -30 1085 1685 10 805 0 -98 414 378 -20 1739 2339 10 480 0 -99 38 15 -2 4124 4724 10 145 0 -100 2 295 30 983 1583 10 0 139 -101 237 254 20 93 693 10 0 75 -102 54 445 10 992 1592 0 0 1005 -103 382 110 -10 4210 4810 10 1000 0 -104 438 488 18 1069 1669 10 0 378 -105 395 331 20 626 1226 10 0 63 -106 230 487 -20 4278 4878 10 897 0 -107 249 407 -20 455 1055 10 679 0 -108 488 26 -20 1491 2091 10 11 0 -109 151 81 -32 5992 6592 10 193 0 -110 483 14 -10 1213 1813 10 504 0 -111 0 422 -10 3044 3644 10 586 0 -112 429 67 -20 2689 3289 10 223 0 -113 195 464 -20 5925 6525 10 680 0 -114 356 256 19 125 725 10 0 123 -115 264 180 -20 6483 7083 10 479 0 -116 94 235 20 367 967 10 0 80 -117 474 96 30 787 1387 10 0 331 -118 268 52 -10 982 1582 10 326 0 -119 44 440 -20 2915 3515 10 197 0 -120 7 382 -21 2842 3442 10 569 0 -121 459 53 20 4249 4849 10 0 322 -122 491 25 -20 1394 1994 10 829 0 -123 439 243 -19 1014 1614 10 114 0 -124 210 185 20 76 676 10 0 959 -125 150 68 -25 1451 2051 10 388 0 -126 201 270 -30 52 652 10 838 0 -127 0 188 26 3488 4088 10 0 92 -128 103 464 22 4852 5452 10 0 368 -129 325 56 -24 2946 3546 10 236 0 -130 44 344 -19 4078 4678 10 347 0 -131 418 75 -30 1552 2152 10 676 0 -132 472 57 -5 4939 5539 10 953 0 -133 460 328 -25 636 1236 10 301 0 -134 89 270 -23 574 1174 10 50 0 -135 374 190 -10 333 933 10 909 0 -136 463 253 -29 3948 4548 10 928 0 -137 97 93 20 722 1322 10 0 232 -138 163 472 -26 2374 2974 10 251 0 -139 29 336 -30 1086 1686 10 100 0 -140 84 453 19 4652 5252 10 0 608 -141 294 421 -20 6062 6662 10 392 0 -142 343 62 10 1190 1790 10 0 91 -143 371 193 20 235 835 10 0 445 -144 142 372 18 352 952 10 0 705 -145 66 88 2 3079 3679 10 0 99 -146 395 332 -20 582 1182 10 472 0 -147 93 413 17 605 1205 10 0 946 -148 267 394 -24 797 1397 10 886 0 -149 249 258 30 267 867 10 0 473 -150 472 129 -30 770 1370 10 298 0 -151 87 3 -4 5492 6092 10 895 0 -152 62 326 -10 905 1505 10 45 0 -153 212 186 11 6600 7200 0 0 1004 -154 241 402 -33 3859 4459 10 208 0 -155 439 266 10 501 1101 10 0 597 -156 79 80 -4 5288 5888 10 64 0 -157 62 453 -12 939 1539 10 920 0 -158 188 151 -20 4947 5547 10 699 0 -159 386 154 -10 4164 4764 10 954 0 -160 38 301 -20 942 1542 10 367 0 -161 192 265 10 257 857 10 0 615 -162 371 192 30 279 879 10 0 841 -163 64 294 -8 4165 4765 10 698 0 -164 381 494 -35 1094 1694 10 439 0 -165 437 12 -15 1078 1678 10 989 0 -166 186 135 -20 2631 3231 10 944 0 -167 459 10 -20 1100 1700 10 603 0 -168 175 422 24 5546 6146 10 0 257 -169 274 48 -10 605 1205 10 533 0 -170 488 173 20 875 1475 10 0 35 -171 398 97 -20 596 1196 10 567 0 -172 385 17 40 2995 3595 10 0 982 -173 180 283 23 2735 3335 10 0 292 -174 71 12 -10 932 1532 10 310 0 -175 343 49 -20 820 1420 10 933 0 -176 248 251 20 2 602 10 0 779 -177 7 194 -10 3565 4165 10 684 0 -178 322 290 -18 5676 6276 10 541 0 -179 410 399 25 695 1295 10 0 999 -180 398 103 30 874 1474 10 0 523 -181 385 285 13 3232 3832 10 0 269 -182 179 497 -3 5404 6004 10 13 0 -183 464 13 20 1299 1899 10 0 965 -184 492 335 10 3073 3673 10 0 332 -185 27 464 -6 4924 5524 10 46 0 -186 231 29 -30 4665 5265 10 385 0 -187 157 38 -36 3951 4551 10 320 0 -188 439 268 10 951 1551 10 0 430 -189 149 214 7 1688 2288 10 0 497 -190 187 73 18 928 1528 10 0 970 -191 429 169 -21 3371 3971 10 96 0 -192 350 199 -10 4566 5166 10 620 0 -193 60 231 32 3864 4464 10 0 109 -194 448 404 -10 2156 2756 10 55 0 -195 481 20 20 1148 1748 10 0 969 -196 436 25 -15 4889 5489 10 546 0 -197 111 459 20 1195 1795 10 0 119 -198 389 17 -10 1223 1823 10 261 0 -199 148 208 22 1866 2466 10 0 555 -200 475 477 -10 1378 1978 10 671 0 -201 390 325 30 765 1365 10 0 802 -202 346 354 -20 3030 3630 10 976 0 -203 91 266 10 690 1290 10 0 919 -204 17 65 20 1067 1667 10 0 640 -205 391 112 -10 3761 4361 10 239 0 -206 224 203 20 53 653 10 0 27 -207 426 231 -21 3874 4474 10 677 0 -208 260 472 33 3904 4504 10 0 154 -209 265 0 10 3344 3944 10 0 799 -210 391 293 -20 663 1263 10 416 0 -211 411 421 20 1020 1620 10 0 58 -212 132 30 -10 1063 1663 10 916 0 -213 475 480 -10 1278 1878 10 59 0 -214 286 244 -18 4896 5496 10 529 0 -215 436 237 -20 446 1046 10 273 0 -216 402 284 -30 418 1018 10 402 0 -217 287 397 12 2017 2617 10 0 968 -218 272 420 -10 5303 5903 10 443 0 -219 477 120 10 1128 1728 10 0 813 -220 145 434 -20 692 1292 10 746 0 -221 33 286 -18 5944 6544 10 715 0 -222 370 262 -40 4158 4758 10 225 0 -223 393 20 20 1323 1923 10 0 112 -224 330 308 -10 4442 5042 10 853 0 -225 246 398 40 292 892 10 0 222 -226 482 184 14 4187 4787 10 0 531 -227 451 305 13 534 1134 10 0 718 -228 226 316 21 70 670 10 0 617 -229 110 459 -30 1151 1751 10 839 0 -230 244 250 10 6 606 10 0 562 -231 458 16 -20 952 1552 10 701 0 -232 390 34 -20 4001 4601 10 137 0 -233 423 214 20 627 1227 10 0 963 -234 219 215 32 46 646 10 0 476 -235 326 118 10 351 951 10 0 751 -236 365 74 24 3154 3754 10 0 129 -237 331 356 13 2607 3207 10 0 785 -238 210 398 10 577 1177 10 0 37 -239 403 93 10 1123 1723 10 0 205 -240 248 404 30 358 958 10 0 324 -241 65 62 -15 3666 4266 10 559 0 -242 460 13 -14 1047 1647 10 594 0 -243 0 293 30 875 1475 10 0 295 -244 211 248 -8 39 639 10 407 0 -245 484 174 10 818 1418 10 0 665 -246 175 352 -10 6420 7020 10 65 0 -247 455 168 -16 3227 3827 10 678 0 -248 224 191 20 84 684 10 0 356 -249 439 156 -27 1863 2463 10 493 0 -250 434 359 -23 5329 5929 10 831 0 -251 118 314 26 1110 1710 10 0 138 -252 234 246 10 19 619 10 0 467 -253 406 450 20 797 1397 10 0 499 -254 75 118 21 1396 1996 10 0 425 -255 115 395 11 3021 3621 10 0 387 -256 329 456 19 756 1356 10 0 639 -257 218 403 -24 5037 5637 10 168 0 -258 149 341 6 1376 1976 10 0 641 -259 253 74 -28 5160 5760 10 54 0 -260 436 241 -10 1069 1669 10 560 0 -261 238 203 10 135 735 10 0 198 -262 405 455 -10 1123 1723 10 82 0 -263 485 27 -30 1544 2144 10 365 0 -264 323 118 20 403 1003 10 0 804 -265 330 371 -20 1994 2594 10 311 0 -266 25 65 10 1265 1865 10 0 574 -267 406 96 20 623 1223 10 0 412 -268 49 451 20 880 1480 10 0 9 -269 307 249 -13 5266 5866 10 181 0 -270 178 135 -24 5815 6415 10 294 0 -271 299 353 34 156 756 10 0 297 -272 236 213 20 39 639 10 0 760 -273 355 177 20 257 857 10 0 215 -274 394 23 20 1375 1975 10 0 536 -275 306 235 25 57 657 10 0 351 -276 90 477 18 811 1411 10 0 924 -277 379 486 -8 2447 3047 10 724 0 -278 435 16 -10 1230 1830 10 515 0 -279 8 497 40 1391 1991 10 0 397 -280 150 484 16 2261 2861 10 0 357 -281 213 399 18 696 1296 10 0 534 -282 391 18 -10 1271 1871 10 568 0 -283 111 392 -20 4436 5036 10 358 0 -284 330 281 -25 5082 5682 10 495 0 -285 344 203 14 429 1029 10 0 951 -286 91 235 10 836 1436 10 0 823 -287 346 60 10 1045 1645 10 0 22 -288 483 27 -5 1592 2192 10 16 0 -289 382 498 10 997 1597 10 0 404 -290 457 492 7 1792 2392 10 0 409 -291 291 213 -21 4791 5391 10 854 0 -292 154 374 -23 3508 4108 10 173 0 -293 225 196 10 59 659 10 0 706 -294 94 40 24 4032 4632 10 0 270 -295 0 356 -30 4105 4705 10 243 0 -296 297 283 -20 5158 5758 10 693 0 -297 371 423 -34 544 1144 10 271 0 -298 417 217 30 514 1114 10 0 150 -299 500 228 8 2887 3487 10 0 338 -300 412 214 10 364 964 10 0 428 -301 442 289 25 524 1124 10 0 133 -302 157 269 -32 6065 6665 10 687 0 -303 440 241 -30 965 1565 10 52 0 -304 100 266 20 346 946 10 0 77 -305 111 178 18 326 926 10 0 627 -306 91 101 10 953 1553 10 0 565 -307 25 307 10 758 1358 10 0 382 -308 135 400 20 954 1554 10 0 782 -309 58 458 -30 1051 1651 10 987 0 -310 133 26 10 1007 1607 10 0 174 -311 211 386 20 266 866 10 0 265 -312 94 97 20 616 1216 10 0 596 -313 30 155 -4 4882 5482 10 526 0 -314 208 184 20 78 678 10 0 904 -315 394 333 20 537 1137 10 0 683 -316 355 180 30 309 909 10 0 731 -317 241 180 -30 6538 7138 10 344 0 -318 21 485 -20 1113 1713 10 376 0 -319 80 251 -30 974 1574 10 887 0 -320 476 61 36 1555 2155 10 0 187 -321 406 94 -20 671 1271 10 329 0 -322 364 71 -20 5154 5754 10 121 0 -323 418 221 -20 925 1525 10 426 0 -324 274 441 -30 2538 3138 10 240 0 -325 304 97 20 487 1087 10 0 413 -326 297 102 10 369 969 10 0 118 -327 250 405 -10 406 1006 10 2 0 -328 111 463 20 1046 1646 10 0 335 -329 408 279 20 640 1240 10 0 321 -330 263 418 -30 874 1474 10 906 0 -331 480 119 -30 2274 2874 10 117 0 -332 420 383 -10 3688 4288 10 184 0 -333 142 14 18 3101 3701 10 0 842 -334 73 328 20 474 1074 10 0 642 -335 50 438 -20 1107 1707 10 328 0 -336 441 7 20 1326 1926 10 0 708 -337 462 14 -20 1348 1948 10 682 0 -338 360 294 -8 5431 6031 10 299 0 -339 58 39 -10 4412 5012 10 422 0 -340 58 391 16 3289 3889 10 0 766 -341 410 285 20 531 1131 10 0 672 -342 96 97 -10 568 1168 10 618 0 -343 21 64 20 1169 1769 10 0 488 -344 238 210 30 295 895 10 0 317 -345 479 121 -20 991 1591 10 629 0 -346 200 178 -20 134 734 10 753 0 -347 216 341 19 2376 2976 10 0 130 -348 48 437 -7 2975 3575 10 980 0 -349 200 270 20 53 653 10 0 626 -350 357 181 20 358 958 10 0 26 -351 476 174 -25 1057 1657 10 275 0 -352 400 286 10 367 967 10 0 814 -353 351 481 10 1047 1647 10 0 598 -354 270 400 -15 305 905 10 370 0 -355 95 234 10 413 1013 10 0 945 -356 128 113 -20 1211 1811 10 248 0 -357 133 455 -16 2992 3592 10 280 0 -358 16 463 20 1259 1859 10 0 283 -359 59 388 20 2411 3011 10 0 417 -360 376 190 30 381 981 10 0 379 -361 481 122 30 942 1542 10 0 576 -362 266 405 20 628 1228 10 0 475 -363 374 232 33 201 801 10 0 675 -364 398 20 -20 836 1436 10 51 0 -365 481 26 30 987 1587 10 0 263 -366 63 444 -20 1279 1879 10 25 0 -367 89 290 20 430 1030 10 0 160 -368 246 314 -22 5541 6141 10 128 0 -369 40 304 -19 4339 4939 10 738 0 -370 262 369 15 277 877 10 0 354 -371 323 29 -24 4310 4910 10 633 0 -372 89 65 -30 2641 3241 10 563 0 -373 144 35 -23 659 1259 10 578 0 -374 200 265 10 370 970 10 0 466 -375 436 264 -20 446 1046 10 544 0 -376 15 457 20 1054 1654 10 0 318 -377 397 20 20 880 1480 10 0 502 -378 328 491 -18 2473 3073 10 104 0 -379 399 175 -30 2748 3348 10 360 0 -380 432 2 20 1626 2226 10 0 781 -381 63 336 20 825 1425 10 0 539 -382 6 296 -10 1039 1639 10 307 0 -383 146 376 -13 697 1297 10 547 0 -384 295 247 -19 4974 5574 10 778 0 -385 235 33 30 5108 5708 10 0 186 -386 233 204 20 49 649 10 0 864 -387 142 360 -11 5888 6488 10 255 0 -388 177 156 25 429 1029 10 0 125 -389 315 287 30 352 952 10 0 824 -390 452 172 9 2193 2793 10 0 85 -391 263 153 -5 1410 2010 10 901 0 -392 493 493 20 3186 3786 10 0 141 -393 320 283 30 202 802 10 0 771 -394 64 5 -28 4276 4876 10 411 0 -395 95 235 10 323 923 10 0 79 -396 203 211 -36 4986 5586 10 745 0 -397 16 497 -40 1463 2063 10 279 0 -398 348 348 -10 3499 4099 10 681 0 -399 485 104 -19 2938 3538 10 561 0 -400 330 147 -10 3154 3754 10 764 0 -401 443 237 -10 514 1114 10 542 0 -402 316 286 30 307 907 10 0 216 -403 335 46 -27 5127 5727 10 470 0 -404 381 495 -10 1050 1650 10 289 0 -405 364 173 -9 481 1081 10 477 0 -406 267 162 -36 5557 6157 10 48 0 -407 214 245 8 36 636 10 0 244 -408 92 234 -35 699 1299 10 508 0 -409 347 459 -7 1678 2278 10 290 0 -410 30 7 -25 4514 5114 10 935 0 -411 120 37 28 2861 3461 10 0 394 -412 397 153 -20 3290 3890 10 267 0 -413 210 29 -20 3963 4563 10 325 0 -414 87 285 30 724 1324 10 0 513 -415 132 32 -20 2898 3498 10 943 0 -416 390 294 20 709 1309 10 0 210 -417 67 451 -20 4622 5222 10 359 0 -418 24 68 20 1418 2018 10 0 735 -419 146 439 -30 797 1397 10 869 0 -420 209 212 -4 5871 6471 10 423 0 -421 6 292 -10 730 1330 10 811 0 -422 18 63 10 1116 1716 10 0 339 -423 149 98 4 4420 5020 10 0 420 -424 91 268 10 738 1338 10 0 772 -425 103 177 -21 2266 2866 10 254 0 -426 367 178 20 481 1081 10 0 323 -427 225 269 -15 4843 5443 10 934 0 -428 443 246 -10 679 1279 10 300 0 -429 306 42 -40 1667 2267 10 884 0 -430 374 306 -10 3736 4336 10 188 0 -431 413 421 10 972 1572 10 0 432 -432 470 405 -10 3463 4063 10 431 0 -433 33 278 -10 5709 6309 10 530 0 -434 149 458 -31 4415 5015 10 899 0 -435 257 57 18 4664 5264 10 0 53 -436 272 403 30 519 1119 10 0 84 -437 221 291 9 50 650 10 0 876 -438 1 101 8 4789 5389 10 0 623 -439 332 459 35 1235 1835 10 0 164 -440 220 392 20 791 1391 10 0 49 -441 253 50 -10 663 1263 10 732 0 -442 250 441 -19 2783 3383 10 656 0 -443 471 484 10 1119 1719 10 0 218 -444 480 152 26 3846 4446 10 0 570 -445 404 83 -20 954 1554 10 143 0 -446 476 94 -20 839 1439 10 896 0 -447 458 213 22 4273 4873 10 0 877 -448 215 395 20 728 1328 10 0 10 -449 85 288 20 488 1088 10 0 694 -450 179 75 13 2720 3320 10 0 836 -451 228 287 21 43 643 10 0 622 -452 397 18 10 928 1528 10 0 865 -453 238 204 20 179 779 10 0 852 -454 488 3 -20 1362 1962 10 456 0 -455 407 88 -10 1058 1658 10 670 0 -456 459 14 20 1001 1601 10 0 454 -457 120 17 30 876 1476 10 0 816 -458 235 316 2 2383 2983 10 0 494 -459 370 382 -3 3295 3895 10 710 0 -460 405 454 11 4972 5572 10 0 893 -461 17 458 10 1492 2092 10 0 489 -462 43 135 31 647 1247 10 0 748 -463 318 497 21 3175 3775 10 0 957 -464 199 268 20 54 654 10 0 590 -465 111 467 20 908 1508 10 0 689 -466 138 438 -10 909 1509 10 374 0 -467 172 314 -10 1942 2542 10 252 0 -468 494 468 -20 1170 1770 10 630 0 -469 35 303 20 586 1186 10 0 696 -470 341 59 27 2919 3519 10 0 403 -471 423 221 9 793 1393 10 0 768 -472 395 295 20 605 1205 10 0 146 -473 413 417 -30 1184 1784 10 149 0 -474 339 60 20 604 1204 10 0 769 -475 277 428 -20 1721 2321 10 362 0 -476 176 199 -32 89 689 10 234 0 -477 265 240 9 18 618 10 0 405 -478 365 190 -40 5670 6270 10 637 0 -479 133 53 20 878 1478 10 0 115 -480 387 488 20 1208 1808 10 0 98 -481 385 295 -20 269 869 10 87 0 -482 491 369 -18 2678 3278 10 95 0 -483 445 273 -10 791 1391 10 68 0 -484 195 273 22 59 659 10 0 86 -485 313 493 -19 4532 5132 10 577 0 -486 495 227 -20 1136 1736 10 514 0 -487 241 403 -20 641 1241 10 657 0 -488 30 72 -20 1486 2086 10 343 0 -489 21 487 -10 1161 1761 10 461 0 -490 324 99 -20 1112 1712 10 866 0 -491 453 318 30 1255 1855 10 0 520 -492 443 272 10 840 1440 10 0 890 -493 447 184 27 1458 2058 10 0 249 -494 366 288 -2 2495 3095 10 458 0 -495 440 284 25 3167 3767 10 0 284 -496 13 314 -10 735 1335 10 535 0 -497 72 227 -7 2015 2615 10 189 0 -498 377 385 6 3225 3825 10 0 4 -499 477 478 -20 1329 1929 10 253 0 -500 204 185 -20 413 1013 10 605 0 -501 226 191 20 132 732 10 0 730 -502 330 138 -20 4198 4798 10 377 0 -503 185 434 9 2054 2654 10 0 90 -504 483 22 10 1096 1696 10 0 110 -505 71 282 -10 2327 2927 10 728 0 -506 60 5 -20 3935 4535 10 763 0 -507 189 402 -30 1904 2504 10 967 0 -508 134 211 35 242 842 10 0 408 -509 146 313 -28 4541 5141 10 882 0 -510 21 146 21 1707 2307 10 0 614 -511 37 281 -20 1733 2333 10 993 0 -512 416 417 -30 1132 1732 10 719 0 -513 44 311 -30 1390 1990 10 414 0 -514 361 181 20 548 1148 10 0 486 -515 444 242 10 622 1222 10 0 278 -516 444 271 10 742 1342 10 0 592 -517 359 179 20 409 1009 10 0 669 -518 388 334 20 392 992 10 0 971 -519 401 164 -10 2245 2845 10 602 0 -520 499 316 -30 2247 2847 10 491 0 -521 399 106 -20 967 1567 10 579 0 -522 425 215 10 676 1276 10 0 875 -523 407 98 -30 574 1174 10 180 0 -524 406 460 -20 2637 3237 10 949 0 -525 88 95 20 841 1441 10 0 898 -526 95 64 4 2824 3424 10 0 313 -527 306 229 10 5041 5641 10 0 67 -528 273 55 20 485 1085 10 0 558 -529 384 149 18 4549 5149 10 0 214 -530 122 35 10 741 1341 10 0 433 -531 308 199 -14 5793 6393 10 226 0 -532 390 301 10 421 1021 10 0 545 -533 300 108 10 302 902 10 0 169 -534 267 400 -18 689 1289 10 281 0 -535 8 300 10 1183 1783 10 0 496 -536 105 181 -20 5885 6485 10 274 0 -537 398 325 30 693 1293 10 0 973 -538 166 247 1 84 684 10 0 988 -539 140 431 -20 588 1188 10 381 0 -540 253 118 -20 1949 2549 10 800 0 -541 359 246 18 5451 6051 10 0 178 -542 321 277 10 75 675 10 0 401 -543 168 59 6 1224 1824 10 0 652 -544 406 285 20 475 1075 10 0 375 -545 391 334 -10 484 1084 10 532 0 -546 437 19 15 3816 4416 10 0 196 -547 201 278 13 56 656 10 0 383 -548 435 267 -10 1051 1651 10 889 0 -549 245 408 -40 575 1175 10 17 0 -550 16 462 -10 1303 1903 10 12 0 -551 107 374 -10 3417 4017 10 664 0 -552 477 97 -10 891 1491 10 950 0 -553 346 57 -10 993 1593 10 819 0 -554 14 459 20 1103 1703 10 0 606 -555 102 6 -22 5594 6194 10 199 0 -556 359 287 -20 160 760 10 983 0 -557 297 131 -10 4422 5022 10 990 0 -558 282 1 -20 3930 4530 10 528 0 -559 21 70 15 2845 3445 10 0 241 -560 440 244 10 824 1424 10 0 260 -561 482 104 19 2990 3590 10 0 399 -562 120 261 -10 2933 3533 10 230 0 -563 125 29 30 893 1493 10 0 372 -564 292 32 -17 677 1277 10 929 0 -565 262 92 -10 2282 2882 10 306 0 -566 68 160 -25 4303 4903 10 907 0 -567 405 276 20 697 1297 10 0 171 -568 277 50 10 551 1151 10 0 282 -569 32 319 21 1362 1962 10 0 120 -570 344 70 -26 4343 4943 10 444 0 -571 481 84 17 1782 2382 10 0 595 -572 21 68 20 1366 1966 10 0 942 -573 441 244 -20 868 1468 10 685 0 -574 57 43 -10 3854 4454 10 266 0 -575 1 293 10 831 1431 10 0 19 -576 481 96 -30 948 1548 10 361 0 -577 471 368 19 1472 2072 10 0 485 -578 236 126 23 199 799 10 0 373 -579 406 99 20 668 1268 10 0 521 -580 303 186 -14 5177 5777 10 69 0 -581 225 369 38 186 786 10 0 722 -582 412 453 -20 948 1548 10 821 0 -583 104 349 -12 3797 4397 10 863 0 -584 173 182 25 111 711 10 0 994 -585 111 464 -20 1002 1602 10 822 0 -586 53 440 10 1052 1652 10 0 111 -587 69 336 20 632 1232 10 0 752 -588 359 182 20 597 1197 10 0 38 -589 13 459 20 1147 1747 0 0 1002 -590 244 277 -20 4965 5565 10 464 0 -591 484 177 20 766 1366 10 0 776 -592 452 206 -10 1729 2329 10 516 0 -593 22 483 -10 1004 1604 10 625 0 -594 452 110 14 1121 1721 10 0 242 -595 347 192 -17 5713 6313 10 571 0 -596 95 92 -20 771 1371 10 312 0 -597 368 311 -10 3464 4064 10 155 0 -598 479 387 -10 1350 1950 10 353 0 -599 479 169 -10 994 1594 10 958 0 -600 497 266 25 2750 3350 10 0 631 -601 66 336 10 773 1373 10 0 825 -602 376 195 10 484 1084 10 0 519 -603 401 281 20 804 1404 10 0 167 -604 441 177 23 3765 4365 10 0 926 -605 231 203 20 50 650 10 0 500 -606 21 488 -20 1205 1805 10 554 0 -607 231 204 20 361 961 10 0 961 -608 122 422 -19 5587 6187 10 140 0 -609 65 453 -11 887 1487 10 833 0 -610 206 261 10 490 1090 10 0 737 -611 466 149 -20 4504 5104 10 874 0 -612 313 119 30 623 1223 10 0 938 -613 90 274 -17 477 1077 10 817 0 -614 39 162 -21 2021 2621 10 510 0 -615 35 306 -10 678 1278 10 161 0 -616 437 15 -20 1181 1781 10 691 0 -617 307 412 -21 1375 1975 10 228 0 -618 79 291 10 595 1195 10 0 342 -619 64 437 11 3433 4033 10 0 697 -620 376 92 10 3722 4322 10 0 192 -621 129 27 10 950 1550 10 0 851 -622 196 489 -21 3881 4481 10 451 0 -623 51 286 -8 5596 6196 10 438 0 -624 20 488 10 1249 1849 10 0 812 -625 13 455 10 1003 1603 10 0 593 -626 170 347 -20 1503 2103 10 349 0 -627 92 230 -18 515 1115 10 305 0 -628 117 467 -20 718 1318 10 996 0 -629 413 217 20 416 1016 10 0 345 -630 405 450 20 753 1353 10 0 468 -631 394 322 -25 3859 4459 10 600 0 -632 125 61 -10 2207 2807 10 635 0 -633 238 123 24 2884 3484 10 0 371 -634 11 403 18 1132 1732 10 0 770 -635 89 272 10 526 1126 10 0 632 -636 304 102 -30 547 1147 10 686 0 -637 478 121 40 1035 1635 10 0 478 -638 408 84 -30 897 1497 10 66 0 -639 376 494 -19 839 1439 10 256 0 -640 20 73 -20 861 1461 10 204 0 -641 159 299 -6 3822 4422 10 258 0 -642 95 382 -20 685 1285 10 334 0 -643 352 63 -5 4473 5073 10 826 0 -644 365 274 14 170 770 10 0 729 -645 30 301 -30 870 1470 10 937 0 -646 351 5 12 1744 2344 10 0 759 -647 197 267 10 195 795 10 0 60 -648 498 171 -20 4786 5386 10 891 0 -649 468 352 9 2833 3433 10 0 70 -650 418 251 21 4547 5147 10 0 801 -651 489 437 29 2587 3187 10 0 72 -652 251 63 -6 3710 4310 10 543 0 -653 132 55 -10 829 1429 10 871 0 -654 281 96 -10 4263 4863 10 754 0 -655 333 293 -14 2228 2828 10 76 0 -656 255 487 19 1352 1952 10 0 442 -657 207 400 20 522 1122 10 0 487 -658 469 489 -20 1982 2582 10 773 0 -659 244 254 20 161 761 10 0 857 -660 233 207 -10 46 646 10 859 0 -661 441 60 -30 5595 6195 10 673 0 -662 411 379 -31 4533 5133 10 918 0 -663 178 72 23 2787 3387 10 0 34 -664 51 447 10 938 1538 10 0 551 -665 478 118 -10 1177 1777 10 245 0 -666 141 426 -20 1886 2486 10 991 0 -667 295 89 -30 2728 3328 10 786 0 -668 112 433 -23 700 1300 10 835 0 -669 320 211 -20 3730 4330 10 517 0 -670 400 103 10 782 1382 10 0 455 -671 408 453 10 892 1492 10 0 200 -672 435 180 -20 658 1258 10 341 0 -673 432 66 30 4045 4645 10 0 661 -674 374 116 -20 2109 2709 10 861 0 -675 478 102 -33 1057 1657 10 363 0 -676 335 57 30 544 1144 10 0 131 -677 385 239 21 2902 3502 10 0 207 -678 386 245 16 1676 2276 10 0 247 -679 208 396 20 466 1066 10 0 107 -680 380 489 20 1276 1876 10 0 113 -681 380 498 10 949 1549 10 0 398 -682 440 7 20 1015 1615 10 0 337 -683 434 245 -20 1127 1727 10 315 0 -684 90 232 10 606 1206 10 0 177 -685 389 334 20 436 1036 10 0 573 -686 241 205 30 232 832 10 0 636 -687 18 24 32 2273 2873 10 0 302 -688 57 183 -10 4161 4761 10 930 0 -689 59 457 -20 1097 1697 10 465 0 -690 442 243 10 914 1514 10 0 856 -691 402 281 20 760 1360 10 0 616 -692 445 237 10 562 1162 10 0 873 -693 441 273 20 889 1489 10 0 296 -694 31 175 -20 746 1346 10 449 0 -695 234 202 10 79 679 10 0 5 -696 52 303 -20 1525 2125 10 469 0 -697 167 445 -11 5408 6008 10 619 0 -698 179 286 8 1125 1725 10 0 163 -699 269 48 20 882 1482 10 0 158 -700 165 59 27 3531 4131 10 0 43 -701 461 8 20 1236 1836 10 0 231 -702 421 415 -10 701 1301 10 798 0 -703 59 459 -10 1005 1605 10 847 0 -704 24 492 10 1608 2208 10 0 61 -705 55 449 -18 814 1414 10 144 0 -706 224 192 -10 63 663 10 293 0 -707 444 269 -20 694 1294 10 74 0 -708 491 20 -20 1334 1934 10 336 0 -709 313 126 10 733 1333 10 0 57 -710 283 438 3 686 1286 10 0 459 -711 352 241 -20 2929 3529 10 89 0 -712 398 476 -10 1432 2032 10 932 0 -713 442 247 10 724 1324 10 0 41 -714 217 207 -24 5290 5890 10 911 0 -715 233 87 18 770 1370 10 0 221 -716 479 127 20 839 1439 10 0 977 -717 6 53 8 2108 2708 10 0 28 -718 478 300 -13 3318 3918 10 227 0 -719 378 493 30 887 1487 10 0 512 -720 303 78 12 420 1020 10 0 810 -721 344 62 10 1146 1746 10 0 749 -722 371 315 -38 4423 5023 10 581 0 -723 200 78 31 3731 4331 10 0 940 -724 413 391 8 628 1228 10 0 277 -725 415 216 10 465 1065 10 0 756 -726 397 57 17 5664 6264 0 0 1007 -727 293 228 19 48 648 10 0 927 -728 0 297 10 931 1531 10 0 505 -729 435 20 -14 1286 1886 10 644 0 -730 195 111 -20 3752 4352 10 501 0 -731 417 218 -30 872 1472 10 316 0 -732 340 54 10 711 1311 10 0 441 -733 132 57 -10 738 1338 10 44 0 -734 210 379 12 2595 3195 10 0 979 -735 228 260 -20 6182 6782 10 418 0 -736 399 104 -10 919 1519 10 23 0 -737 95 277 -10 858 1458 10 610 0 -738 360 284 19 2426 3026 10 0 369 -739 53 466 -9 1100 1700 10 984 0 -740 112 465 -20 957 1557 10 830 0 -741 313 391 5 358 958 10 0 828 -742 93 235 10 745 1345 10 0 18 -743 125 32 -20 798 1398 10 827 0 -744 215 282 -10 5522 6122 10 747 0 -745 224 320 36 4895 5495 10 0 396 -746 134 428 20 992 1592 10 0 220 -747 26 490 10 1659 2259 10 0 744 -748 44 115 -31 685 1285 10 462 0 -749 438 127 -10 3524 4124 10 721 0 -750 239 15 2 2175 2775 10 0 765 -751 342 54 -10 759 1359 10 235 0 -752 109 463 -20 1094 1694 10 587 0 -753 199 187 20 267 867 10 0 346 -754 201 188 10 315 915 10 0 654 -755 399 301 30 537 1137 10 0 931 -756 484 171 -10 933 1533 10 725 0 -757 272 234 -22 6121 6721 10 790 0 -758 380 350 15 3226 3826 10 0 39 -759 140 108 -12 4045 4645 10 646 0 -760 228 199 -20 297 897 10 272 0 -761 245 461 -31 2357 2957 10 860 0 -762 305 107 20 661 1261 10 0 21 -763 231 195 20 197 797 10 0 506 -764 450 265 10 625 1225 10 0 400 -765 273 149 -2 5771 6371 10 750 0 -766 12 358 -16 4657 5257 10 340 0 -767 315 121 10 572 1172 10 0 846 -768 420 213 -9 574 1174 10 471 0 -769 331 134 -20 4255 4855 10 474 0 -770 84 377 -18 3465 4065 10 634 0 -771 320 280 -30 100 700 10 393 0 -772 89 185 -10 2159 2759 10 424 0 -773 472 481 20 1066 1666 10 0 658 -774 422 420 -10 810 1410 10 892 0 -775 475 267 7 2878 3478 10 0 912 -776 470 125 -20 712 1312 10 591 0 -777 435 268 -10 1007 1607 10 894 0 -778 409 155 19 441 1041 10 0 384 -779 243 248 -20 7 607 10 176 0 -780 488 96 22 4025 4625 10 0 997 -781 341 72 -20 2979 3579 10 380 0 -782 58 449 -20 1211 1811 10 308 0 -783 16 460 20 1403 2003 10 0 858 -784 480 136 22 727 1327 10 0 985 -785 162 388 -13 4264 4864 10 237 0 -786 47 208 30 666 1266 10 0 667 -787 324 127 30 274 874 10 0 952 -788 87 96 -10 887 1487 10 923 0 -789 140 137 -33 2039 2639 10 7 0 -790 314 205 22 5867 6467 10 0 757 -791 96 346 26 501 1101 10 0 815 -792 321 280 30 77 677 10 0 20 -793 245 251 10 5 605 10 0 834 -794 436 295 11 1873 2473 10 0 36 -795 274 261 -30 6588 7188 10 855 0 -796 271 128 12 1142 1742 10 0 992 -797 275 45 20 658 1258 10 0 981 -798 422 409 10 637 1237 10 0 702 -799 146 188 -10 4700 5300 10 209 0 -800 93 96 20 662 1262 10 0 540 -801 409 255 -21 5850 6450 10 650 0 -802 449 428 -30 4747 5347 10 201 0 -803 90 285 40 865 1465 0 0 1006 -804 415 95 -20 4467 5067 10 264 0 -805 88 287 30 814 1414 10 0 97 -806 379 196 -10 536 1136 10 883 0 -807 368 452 16 2440 3040 10 0 83 -808 202 186 20 364 964 10 0 94 -809 435 11 40 949 1549 10 0 998 -810 269 46 -12 834 1434 10 720 0 -811 7 292 10 686 1286 10 0 421 -812 44 496 -10 1367 1967 10 624 0 -813 478 99 -10 1005 1605 10 219 0 -814 391 99 -10 526 1126 10 352 0 -815 132 477 -26 1069 1669 10 791 0 -816 24 65 -30 1221 1821 10 457 0 -817 130 247 17 180 780 10 0 613 -818 133 273 -20 177 777 10 868 0 -819 347 62 10 1094 1694 10 0 553 -820 404 140 -20 4795 5395 10 903 0 -821 416 420 20 919 1519 10 0 582 -822 67 335 20 727 1327 10 0 585 -823 92 270 -10 787 1387 10 286 0 -824 411 95 -30 731 1331 10 389 0 -825 132 479 -10 730 1330 10 601 0 -826 366 334 5 1401 2001 10 0 643 -827 125 39 20 681 1281 10 0 743 -828 419 422 -5 865 1465 10 741 0 -829 460 2 20 1172 1772 10 0 122 -830 67 334 20 683 1283 10 0 740 -831 448 414 23 4651 5251 10 0 250 -832 46 163 8 3464 4064 10 0 921 -833 77 465 11 804 1404 10 0 609 -834 284 319 -10 3027 3627 10 793 0 -835 102 422 23 665 1265 10 0 668 -836 240 34 -13 5998 6598 10 450 0 -837 141 428 20 535 1135 10 0 867 -838 204 269 30 49 649 10 0 126 -839 144 439 30 845 1445 10 0 229 -840 470 417 -20 2707 3307 10 71 0 -841 404 103 -30 726 1326 10 162 0 -842 5 281 -18 5246 5846 10 333 0 -843 487 320 -30 3191 3791 10 960 0 -844 398 23 -9 784 1384 10 908 0 -845 90 296 20 366 966 10 0 902 -846 386 13 -10 1108 1708 10 767 0 -847 115 465 10 809 1409 10 0 703 -848 473 475 -10 1429 2029 10 962 0 -849 275 42 -30 710 1310 10 870 0 -850 286 356 30 148 748 10 0 88 -851 15 69 -10 927 1527 10 621 0 -852 267 44 -20 783 1383 10 453 0 -853 243 399 10 699 1299 10 0 224 -854 390 249 21 2087 2687 10 0 291 -855 210 391 30 326 926 10 0 795 -856 433 15 -10 891 1491 10 690 0 -857 24 259 -20 1240 1840 10 659 0 -858 12 463 -20 1203 1803 10 783 0 -859 237 213 10 348 948 10 0 660 -860 182 480 31 1219 1819 10 0 761 -861 409 88 20 841 1441 10 0 674 -862 244 368 -20 1416 2016 10 878 0 -863 381 328 12 2629 3229 10 0 583 -864 213 185 -20 74 674 10 386 0 -865 482 141 -10 3803 4403 10 452 0 -866 319 124 20 472 1072 10 0 490 -867 141 431 -20 632 1232 10 837 0 -868 198 264 20 321 921 10 0 818 -869 69 334 30 584 1184 10 0 419 -870 299 98 30 427 1027 10 0 849 -871 240 250 10 10 610 10 0 653 -872 199 203 -23 5589 6189 10 42 0 -873 459 17 -10 1405 2005 10 692 0 -874 423 217 20 727 1327 10 0 611 -875 477 179 -10 651 1251 10 522 0 -876 213 397 -9 629 1229 10 437 0 -877 405 187 -22 4762 5362 10 447 0 -878 269 402 20 571 1171 10 0 862 -879 53 204 8 3980 4580 10 0 964 -880 13 394 -5 1250 1850 10 922 0 -881 15 68 10 971 1571 10 0 73 -882 56 268 28 4016 4616 10 0 509 -883 360 184 10 646 1246 10 0 806 -884 307 102 40 599 1199 10 0 429 -885 130 57 -16 690 1290 10 47 0 -886 250 328 24 755 1355 10 0 148 -887 91 231 30 561 1161 10 0 319 -888 479 176 20 706 1306 0 0 1003 -889 420 224 10 1476 2076 10 0 548 -890 461 182 -10 2276 2876 10 492 0 -891 418 218 20 828 1428 10 0 648 -892 419 418 10 756 1356 10 0 774 -893 336 493 -11 5732 6332 10 460 0 -894 389 300 10 375 975 10 0 777 -895 92 76 4 4316 4916 10 0 151 -896 476 102 20 1105 1705 10 0 446 -897 418 399 20 1511 2111 10 0 106 -898 109 56 -20 659 1259 10 525 0 -899 13 465 31 2854 3454 10 0 434 -900 92 232 10 467 1067 10 0 995 -901 394 47 5 1012 1612 10 0 391 -902 16 287 -20 843 1443 10 845 0 -903 399 102 20 828 1428 10 0 820 -904 143 158 -20 310 910 10 314 0 -905 18 484 -20 1060 1660 10 966 0 -906 250 411 30 512 1112 10 0 330 -907 19 273 25 3826 4426 10 0 566 -908 365 28 9 833 1433 10 0 844 -909 387 297 10 321 921 10 0 135 -910 433 447 -20 2937 3537 10 56 0 -911 214 274 24 5236 5836 10 0 714 -912 489 338 -7 5349 5949 10 775 0 -913 130 494 -10 2795 3395 10 62 0 -914 23 67 30 1317 1917 0 0 1008 -915 374 489 -20 777 1377 10 974 0 -916 126 30 10 847 1447 10 0 212 -917 112 467 10 864 1464 10 0 975 -918 489 274 31 1895 2495 10 0 662 -919 61 214 -10 1127 1727 10 203 0 -920 166 440 12 531 1131 10 0 157 -921 56 75 -8 5511 6111 10 832 0 -922 210 276 5 47 647 10 0 880 -923 80 286 10 656 1256 10 0 788 -924 17 459 -18 1448 2048 10 276 0 -925 66 448 10 781 1381 10 0 32 -926 351 128 -23 4773 5373 10 604 0 -927 352 176 -19 204 804 10 727 0 -928 490 286 29 1849 2449 10 0 136 -929 247 219 17 31 631 10 0 564 -930 86 268 10 629 1229 10 0 688 -931 398 329 -30 371 971 10 755 0 -932 272 402 10 398 998 10 0 712 -933 317 123 20 521 1121 10 0 175 -934 408 318 15 2332 2932 10 0 427 -935 66 31 25 3954 4554 10 0 410 -936 425 448 -17 2938 3538 10 8 0 -937 35 304 30 630 1230 10 0 645 -938 471 94 -30 3755 4355 10 612 0 -939 470 473 10 1484 2084 10 0 948 -940 224 56 -31 4506 5106 10 723 0 -941 343 47 20 868 1468 10 0 978 -942 52 18 -20 3188 3788 10 572 0 -943 16 68 20 1015 1615 10 0 415 -944 195 185 20 209 809 10 0 166 -945 92 236 -10 791 1391 10 355 0 -946 76 462 -17 3584 4184 10 147 0 -947 124 56 20 625 1225 10 0 31 -948 481 454 -10 1042 1642 10 939 0 -949 477 483 20 1223 1823 10 0 524 -950 481 124 10 894 1494 10 0 552 -951 389 156 -14 2622 3222 10 285 0 -952 384 16 -30 1162 1762 10 787 0 -953 492 34 5 3002 3602 10 0 132 -954 371 200 10 657 1257 10 0 159 -955 153 235 10 98 698 10 0 40 -956 428 202 -14 3375 3975 10 24 0 -957 257 391 -21 6292 6892 10 463 0 -958 421 218 10 776 1376 10 0 599 -959 206 186 -20 510 1110 10 124 0 -960 393 301 30 473 1073 10 0 843 -961 204 187 -20 461 1061 10 607 0 -962 468 475 10 953 1553 10 0 848 -963 477 122 -20 1080 1680 10 233 0 -964 100 66 -8 5359 5959 10 879 0 -965 489 27 -20 1445 2045 10 183 0 -966 12 451 20 946 1546 10 0 905 -967 197 270 30 143 743 10 0 507 -968 311 422 -12 3712 4312 10 217 0 -969 489 17 -20 1280 1880 10 195 0 -970 13 214 -18 5174 5774 10 190 0 -971 440 247 -20 772 1372 10 518 0 -972 28 467 -26 5130 5730 10 30 0 -973 388 325 -30 813 1413 10 537 0 -974 270 401 20 349 949 10 0 915 -975 5 445 -10 1004 1604 10 917 0 -976 198 271 20 97 697 10 0 202 -977 480 131 -20 2510 3110 10 716 0 -978 437 98 -20 4215 4815 10 941 0 -979 131 246 -12 3088 3688 10 734 0 -980 49 437 7 1470 2070 10 0 348 -981 270 49 -20 928 1528 10 797 0 -982 337 41 -40 3769 4369 10 172 0 -983 318 280 20 148 748 10 0 556 -984 154 392 9 386 986 10 0 739 -985 493 111 -22 1924 2524 10 784 0 -986 399 450 20 1195 1795 0 0 1001 -987 67 452 30 838 1438 10 0 309 -988 34 239 -1 636 1236 10 538 0 -989 343 276 15 96 696 10 0 165 -990 393 12 10 997 1597 10 0 557 -991 236 247 20 14 614 10 0 666 -992 340 291 -12 1642 2242 10 796 0 -993 3 292 20 782 1382 10 0 511 -994 209 68 -25 6032 6632 10 584 0 -995 18 225 -10 2525 3125 10 900 0 -996 147 435 20 740 1340 10 0 628 -997 335 99 -22 4634 5234 10 780 0 -998 485 24 -40 1045 1645 10 809 0 -999 470 475 -25 1001 1601 10 179 0 -1000 341 58 10 655 1255 10 0 103 -1001 399 450 -20 1195 1795 10 986 0 -1002 13 459 -20 1147 1747 10 589 0 -1003 479 176 -20 706 1306 10 888 0 -1004 212 186 -11 6600 7200 10 153 0 -1005 54 445 -10 992 1592 10 102 0 -1006 90 285 -40 865 1465 10 803 0 -1007 397 57 -17 5664 6264 10 726 0 -1008 23 67 -30 1317 1917 10 914 0 diff --git a/jsprit-instances/instances/lilim/1000/LRC2102.txt b/jsprit-instances/instances/lilim/1000/LRC2102.txt deleted file mode 100644 index 4ef24e3ab..000000000 --- a/jsprit-instances/instances/lilim/1000/LRC2102.txt +++ /dev/null @@ -1,1012 +0,0 @@ -250 1000 1 -0 250 250 0 0 7284 0 0 0 -1 440 436 -20 0 7009 10 211 0 -2 214 394 10 0 7126 10 0 17 -3 476 483 10 1419 1539 10 0 949 -4 352 487 -13 3607 3727 10 598 0 -5 230 197 40 486 606 10 0 485 -6 175 239 23 0 7199 10 0 266 -7 133 202 33 1842 1962 10 0 799 -8 328 458 -20 3071 3191 10 821 0 -9 25 499 -10 1780 1900 10 126 0 -10 226 423 -20 788 908 10 440 0 -11 313 282 -20 654 774 10 607 0 -12 60 454 10 0 6996 10 0 359 -13 239 486 -12 0 7038 10 324 0 -14 102 264 10 535 655 10 0 77 -15 408 452 -19 0 7018 10 577 0 -16 451 62 -10 0 6999 10 148 0 -17 203 390 -10 0 7127 10 2 0 -18 92 233 10 0 7116 10 0 988 -19 7 300 30 1379 1499 10 0 696 -20 409 90 -10 1033 1153 10 523 0 -21 307 108 -20 950 1070 10 933 0 -22 347 54 10 1180 1300 10 0 96 -23 406 87 -20 1252 1372 10 861 0 -24 371 332 -10 2118 2238 10 876 0 -25 116 466 -29 1004 1124 10 668 0 -26 441 265 -10 789 909 10 771 0 -27 130 140 17 776 896 10 0 254 -28 80 117 -20 3297 3417 10 525 0 -29 421 387 -20 0 7055 10 392 0 -30 83 300 -30 0 7100 10 609 0 -31 136 52 -10 0 7046 10 530 0 -32 18 462 20 0 6960 10 0 111 -33 390 120 24 4017 4137 10 0 103 -34 188 119 44 3899 4019 10 0 420 -35 467 114 10 1504 1624 10 0 750 -36 440 292 -10 3760 3880 10 184 0 -37 268 400 20 973 1093 10 0 330 -38 391 202 14 536 656 10 0 814 -39 377 432 -19 3326 3446 10 256 0 -40 80 290 10 790 910 10 0 258 -41 439 15 20 1373 1493 10 0 183 -42 307 52 23 3682 3802 10 0 502 -43 111 192 -19 0 7124 10 536 0 -44 131 56 10 1023 1143 10 0 174 -45 88 286 -20 1010 1130 10 101 0 -46 69 414 6 0 7030 10 0 551 -47 41 232 16 821 941 10 0 317 -48 323 77 -10 5620 5740 10 534 0 -49 340 416 36 0 7086 10 0 442 -50 86 199 -20 1111 1231 10 945 0 -51 314 124 20 924 1044 10 0 723 -52 375 191 -20 667 787 10 927 0 -53 226 175 -20 0 7196 10 521 0 -54 242 106 -10 5074 5194 10 239 0 -55 417 417 10 1328 1448 10 0 802 -56 419 459 20 1265 1385 10 0 84 -57 389 11 20 0 6998 10 0 195 -58 450 416 -20 0 7015 10 986 0 -59 246 255 10 450 570 10 0 839 -60 71 333 10 775 895 10 0 160 -61 105 474 -9 1883 2003 10 984 0 -62 20 489 10 1533 1653 10 0 812 -63 388 331 20 580 700 10 0 472 -64 92 259 -20 0 7116 10 116 0 -65 200 261 10 666 786 10 0 618 -66 400 288 30 0 7120 10 0 777 -67 299 285 -40 5015 5135 10 225 0 -68 378 199 10 829 949 10 0 683 -69 325 147 -25 4747 4867 10 557 0 -70 421 386 -20 0 7056 10 897 0 -71 404 447 20 940 1060 10 0 149 -72 412 478 7 0 6995 10 0 499 -73 26 67 -15 5267 5387 10 688 0 -74 358 183 20 935 1055 10 0 573 -75 30 302 -30 1066 1186 10 869 0 -76 176 470 14 2187 2307 10 0 246 -77 96 270 -10 649 769 10 14 0 -78 243 408 -10 5735 5855 10 671 0 -79 60 29 -16 5451 5571 10 842 0 -80 34 169 11 1938 2058 10 0 772 -81 407 280 10 834 954 10 0 416 -82 277 403 10 699 819 10 0 159 -83 498 456 -30 5624 5744 10 639 0 -84 384 491 -20 1391 1511 10 56 0 -85 355 174 -10 2861 2981 10 681 0 -86 97 288 -10 5136 5256 10 847 0 -87 316 284 20 499 619 10 0 934 -88 334 403 26 638 758 10 0 443 -89 415 223 -10 1219 1339 10 492 0 -90 230 320 -11 0 7202 10 619 0 -91 432 199 -20 2554 2674 10 707 0 -92 92 18 -25 4497 4617 10 935 0 -93 273 300 30 0 7219 10 0 999 -94 269 112 -10 0 7135 10 709 0 -95 429 389 -10 1696 1816 10 894 0 -96 371 71 -10 1147 1267 10 22 0 -97 5 297 10 0 7025 10 0 185 -98 414 378 23 1979 2099 10 0 141 -99 38 15 -8 4364 4484 10 717 0 -100 2 295 -10 1223 1343 10 645 0 -101 237 254 20 333 453 10 0 45 -102 54 445 10 1232 1352 10 0 489 -103 382 110 -24 4450 4570 10 33 0 -104 438 488 18 1309 1429 10 0 463 -105 395 331 20 866 986 10 0 487 -106 230 487 -33 4518 4638 10 208 0 -107 249 407 -38 695 815 10 581 0 -108 488 26 -30 0 6948 10 849 0 -109 151 81 -10 0 7079 10 621 0 -110 483 14 -20 1453 1573 10 998 0 -111 0 422 -20 3284 3404 10 32 0 -112 429 67 -20 2929 3049 10 380 0 -113 195 464 -27 6165 6285 10 120 0 -114 356 256 19 365 485 10 0 491 -115 264 180 -13 0 7203 10 413 0 -116 94 235 20 0 7118 10 0 64 -117 474 96 -30 1027 1147 10 298 0 -118 268 52 -20 1222 1342 10 762 0 -119 44 440 -30 3155 3275 10 937 0 -120 7 382 27 0 6998 10 0 113 -121 459 53 -10 4489 4609 10 353 0 -122 491 25 10 1634 1754 0 0 1001 -123 439 243 -10 1254 1374 10 303 0 -124 210 185 20 0 7198 10 0 961 -125 150 68 23 1691 1811 10 0 632 -126 201 270 10 0 7222 10 0 9 -127 0 188 -20 3728 3848 10 206 0 -128 103 464 -4 5092 5212 10 348 0 -129 325 56 -30 3186 3306 10 612 0 -130 44 344 12 4318 4438 10 0 623 -131 418 75 -20 1792 1912 10 896 0 -132 472 57 -20 0 6980 10 223 0 -133 460 328 13 876 996 10 0 831 -134 89 270 -10 814 934 10 635 0 -135 374 190 20 573 693 10 0 778 -136 463 253 -10 4188 4308 10 560 0 -137 97 93 -20 962 1082 10 753 0 -138 163 472 -25 2614 2734 10 815 0 -139 29 336 -20 1326 1446 10 993 0 -140 84 453 -10 4892 5012 10 924 0 -141 294 421 -23 6302 6422 10 98 0 -142 343 62 -10 1430 1550 10 169 0 -143 371 193 20 0 7141 10 0 725 -144 142 372 -20 0 7112 10 152 0 -145 66 88 -10 0 7029 10 640 0 -146 395 332 -10 0 7108 10 760 0 -147 93 413 17 845 965 10 0 251 -148 267 394 10 1037 1157 10 0 16 -149 249 258 -20 0 7266 10 71 0 -150 472 129 10 0 7022 10 0 620 -151 87 3 -8 5732 5852 10 879 0 -152 62 326 20 1145 1265 10 0 144 -153 212 186 -18 6886 7006 10 415 0 -154 241 402 -10 0 7122 10 261 0 -155 439 266 -29 741 861 10 494 0 -156 79 80 -20 5528 5648 10 943 0 -157 62 453 10 1179 1299 10 0 586 -158 188 151 -12 5187 5307 10 391 0 -159 386 154 -10 0 7108 10 82 0 -160 38 301 -10 1182 1302 10 60 0 -161 192 265 10 497 617 10 0 694 -162 371 192 30 519 639 10 0 579 -163 64 294 -10 0 7083 10 355 0 -164 381 494 -22 1334 1454 10 957 0 -165 437 12 20 1318 1438 10 0 938 -166 186 135 -27 2871 2991 10 898 0 -167 459 10 10 0 6956 10 0 561 -168 175 422 24 5786 5906 10 0 311 -169 274 48 10 845 965 10 0 142 -170 488 173 -20 1115 1235 10 375 0 -171 398 97 10 836 956 10 0 670 -172 385 17 -30 3235 3355 10 981 0 -173 180 283 -10 2975 3095 10 374 0 -174 71 12 -10 1172 1292 10 44 0 -175 343 49 10 1060 1180 10 0 908 -176 248 251 20 2 122 10 0 996 -177 7 194 29 0 7025 10 0 970 -178 322 290 23 5916 6036 10 0 389 -179 410 399 25 935 1055 10 0 218 -180 398 103 -20 1114 1234 10 267 0 -181 385 285 13 0 7135 10 0 544 -182 179 497 -6 0 7017 10 913 0 -183 464 13 -20 1539 1659 10 41 0 -184 492 335 10 3313 3433 10 0 36 -185 27 464 -10 5164 5284 10 97 0 -186 231 29 -27 4905 5025 10 700 0 -187 157 38 3 4191 4311 10 0 406 -188 439 268 -17 1191 1311 10 931 0 -189 149 214 7 0 7167 0 0 1008 -190 187 73 18 1168 1288 10 0 781 -191 429 169 8 3611 3731 10 0 611 -192 350 199 21 0 7162 10 0 588 -193 60 231 -19 4104 4224 10 857 0 -194 448 404 15 2396 2516 10 0 431 -195 481 20 -20 1388 1508 10 57 0 -196 436 25 -20 5129 5249 10 517 0 -197 111 459 -30 1435 1555 10 867 0 -198 389 17 -30 1463 1583 10 787 0 -199 148 208 -30 2106 2226 10 743 0 -200 475 477 20 1618 1738 10 0 290 -201 390 325 -20 1005 1125 10 210 0 -202 346 354 8 3270 3390 10 0 631 -203 91 266 -10 930 1050 10 923 0 -204 17 65 20 1307 1427 10 0 422 -205 391 112 -5 4001 4121 10 977 0 -206 224 203 20 155 275 10 0 127 -207 426 231 -10 4114 4234 10 883 0 -208 260 472 33 4144 4264 10 0 106 -209 265 0 -14 3584 3704 10 594 0 -210 391 293 20 903 1023 10 0 201 -211 411 421 20 1260 1380 10 0 1 -212 132 30 20 0 7025 10 0 506 -213 475 480 30 0 6953 10 0 662 -214 286 244 -16 5136 5256 10 669 0 -215 436 237 -10 0 7088 10 731 0 -216 402 284 -19 658 778 10 738 0 -217 287 397 12 2257 2377 10 0 722 -218 272 420 -25 5543 5663 10 179 0 -219 477 120 10 1368 1488 10 0 429 -220 145 434 20 932 1052 10 0 335 -221 33 286 -20 6184 6304 10 367 0 -222 370 262 15 4398 4518 10 0 284 -223 393 20 20 1563 1683 10 0 132 -224 330 308 -4 4682 4802 10 430 0 -225 246 398 40 532 652 10 0 67 -226 482 184 -9 4427 4547 10 390 0 -227 451 305 -30 774 894 10 960 0 -228 226 316 -21 221 341 10 451 0 -229 110 459 30 0 7023 10 0 511 -230 244 250 10 47 167 10 0 566 -231 458 16 20 1192 1312 10 0 873 -232 390 34 7 4241 4361 10 0 661 -233 423 214 20 867 987 10 0 361 -234 219 215 32 127 247 10 0 827 -235 326 118 10 0 7122 10 0 474 -236 365 74 -27 3394 3514 10 655 0 -237 331 356 13 2847 2967 10 0 758 -238 210 398 10 817 937 10 0 734 -239 403 93 10 0 7055 10 0 54 -240 248 404 30 598 718 10 0 398 -241 65 62 -10 3906 4026 10 955 0 -242 460 13 -20 1287 1407 10 682 0 -243 0 293 30 1115 1235 10 0 634 -244 211 248 26 96 216 10 0 372 -245 484 174 10 1058 1178 10 0 493 -246 175 352 -14 6660 6780 10 76 0 -247 455 168 -10 3467 3587 10 768 0 -248 224 191 20 324 444 10 0 969 -249 439 156 2 2103 2223 10 0 519 -250 434 359 13 5569 5689 10 0 795 -251 118 314 -17 0 7128 10 147 0 -252 234 246 10 259 379 10 0 835 -253 406 450 20 1037 1157 0 0 1007 -254 75 118 -17 1636 1756 10 27 0 -255 115 395 -20 3261 3381 10 328 0 -256 329 456 19 996 1116 10 0 39 -257 218 403 -20 5277 5397 10 315 0 -258 149 341 -10 1616 1736 10 40 0 -259 253 74 -30 5400 5520 10 385 0 -260 436 241 -19 1309 1429 10 727 0 -261 238 203 10 375 495 10 0 154 -262 405 455 -27 0 7017 10 332 0 -263 485 27 10 0 6951 10 0 379 -264 323 118 20 643 763 10 0 676 -265 330 371 -20 2234 2354 10 327 0 -266 25 65 -23 1505 1625 10 6 0 -267 406 96 20 863 983 10 0 180 -268 49 451 -22 1120 1240 10 509 0 -269 307 249 -20 5506 5626 10 983 0 -270 178 135 -28 6055 6175 10 942 0 -271 299 353 34 396 516 10 0 658 -272 236 213 20 98 218 10 0 529 -273 355 177 20 497 617 10 0 316 -274 394 23 -10 1615 1735 10 732 0 -275 306 235 25 172 292 10 0 629 -276 90 477 -10 1051 1171 10 917 0 -277 379 486 22 2687 2807 10 0 460 -278 435 16 10 1470 1590 10 0 790 -279 8 497 -22 0 6929 10 484 0 -280 150 484 -20 2501 2621 10 466 0 -281 213 399 18 936 1056 10 0 803 -282 391 18 10 1511 1631 10 0 571 -283 111 392 -30 0 7076 10 782 0 -284 330 281 -15 5322 5442 10 222 0 -285 344 203 14 669 789 10 0 323 -286 91 235 10 1076 1196 10 0 811 -287 346 60 10 1285 1405 10 0 396 -288 483 27 -10 1832 1952 10 965 0 -289 382 498 10 1237 1357 10 0 546 -290 457 492 -20 2032 2152 10 200 0 -291 291 213 -15 5031 5151 10 926 0 -292 154 374 -30 0 7118 10 539 0 -293 225 196 -24 0 7215 10 748 0 -294 94 40 -15 4272 4392 10 559 0 -295 0 356 -30 4345 4465 10 689 0 -296 297 283 -9 0 7217 10 936 0 -297 371 423 10 784 904 10 0 773 -298 417 217 30 754 874 10 0 117 -299 500 228 -22 0 7024 10 784 0 -300 412 214 10 604 724 10 0 841 -301 442 289 25 764 884 10 0 807 -302 157 269 31 0 7180 10 0 868 -303 440 241 10 1205 1325 10 0 123 -304 100 266 20 586 706 10 0 503 -305 111 178 18 566 686 10 0 418 -306 91 101 10 1193 1313 10 0 462 -307 25 307 -1 998 1118 10 538 0 -308 135 400 -20 1194 1314 10 587 0 -309 58 458 10 1291 1411 10 0 507 -310 133 26 -25 0 7022 10 497 0 -311 211 386 -24 0 7133 10 168 0 -312 94 97 -20 856 976 10 808 0 -313 30 155 -8 5122 5242 10 832 0 -314 208 184 20 294 414 10 0 944 -315 394 333 20 777 897 10 0 257 -316 355 180 -20 549 669 10 273 0 -317 241 180 -16 6778 6898 10 47 0 -318 21 485 -20 1353 1473 10 366 0 -319 80 251 -10 1214 1334 10 647 0 -320 476 61 -12 1795 1915 10 646 0 -321 406 94 10 911 1031 10 0 403 -322 364 71 5 0 7062 10 0 643 -323 418 221 -14 0 7104 10 285 0 -324 274 441 12 2778 2898 10 0 13 -325 304 97 20 727 847 10 0 423 -326 297 102 -20 0 7119 10 852 0 -327 250 405 20 646 766 10 0 265 -328 111 463 20 1286 1406 10 0 255 -329 408 279 -20 0 7114 10 691 0 -330 263 418 -20 1114 1234 10 37 0 -331 480 119 -22 2514 2634 10 780 0 -332 420 383 27 3928 4048 10 0 262 -333 142 14 18 3341 3461 10 0 895 -334 73 328 20 714 834 10 0 469 -335 50 438 -20 1347 1467 10 220 0 -336 441 7 -10 0 6965 10 1000 0 -337 462 14 20 1588 1708 10 0 478 -338 360 294 -17 5671 5791 10 912 0 -339 58 39 -32 4652 4772 10 687 0 -340 58 391 -30 3529 3649 10 975 0 -341 410 285 20 0 7111 10 0 483 -342 96 97 20 808 928 10 0 995 -343 21 64 20 1409 1529 10 0 914 -344 238 210 30 0 7233 0 0 1002 -345 479 121 10 1231 1351 10 0 673 -346 200 178 20 374 494 10 0 500 -347 216 341 -8 2616 2736 10 698 0 -348 48 437 4 3215 3335 10 0 128 -349 200 270 -20 236 356 10 991 0 -350 357 181 20 598 718 10 0 591 -351 476 174 -20 1297 1417 10 875 0 -352 400 286 10 0 7120 10 0 854 -353 351 481 10 1287 1407 10 0 121 -354 270 400 10 545 665 10 0 968 -355 95 234 10 653 773 10 0 163 -356 128 113 22 1451 1571 10 0 759 -357 133 455 25 0 7038 10 0 697 -358 16 463 20 0 6958 10 0 642 -359 59 388 -10 2651 2771 10 12 0 -360 376 190 -5 621 741 10 711 0 -361 481 122 -20 0 7010 10 233 0 -362 266 405 -3 868 988 10 710 0 -363 374 232 33 441 561 10 0 455 -364 398 20 20 1076 1196 10 0 377 -365 481 26 30 1227 1347 10 0 757 -366 63 444 20 0 7005 10 0 318 -367 89 290 20 0 7109 10 0 221 -368 246 314 -6 5781 5901 10 498 0 -369 40 304 -10 0 7058 10 900 0 -370 262 369 15 0 7155 10 0 853 -371 323 29 -14 0 7042 10 564 0 -372 89 65 -26 2881 3001 10 244 0 -373 144 35 -20 0 7035 10 627 0 -374 200 265 10 610 730 10 0 173 -375 436 264 20 686 806 10 0 170 -376 15 457 -10 0 6961 10 728 0 -377 397 20 -20 0 7002 10 364 0 -378 328 491 -10 2713 2833 10 532 0 -379 399 175 -10 0 7108 10 263 0 -380 432 2 20 1866 1986 10 0 112 -381 63 336 20 0 7069 10 0 626 -382 6 296 -4 0 7026 10 919 0 -383 146 376 8 937 1057 10 0 834 -384 295 247 -20 5214 5334 10 685 0 -385 235 33 30 5348 5468 10 0 259 -386 233 204 20 217 337 10 0 706 -387 142 360 -11 6128 6248 10 785 0 -388 177 156 25 0 7155 10 0 947 -389 315 287 -23 0 7200 10 178 0 -390 452 172 9 0 7058 10 0 226 -391 263 153 12 1650 1770 10 0 158 -392 493 493 20 3426 3546 10 0 29 -393 320 283 30 442 562 10 0 401 -394 64 5 -10 0 6967 10 488 0 -395 95 235 10 563 683 10 0 887 -396 203 211 -10 5226 5346 10 287 0 -397 16 497 20 1703 1823 10 0 770 -398 348 348 -30 3739 3859 10 240 0 -399 485 104 -20 3178 3298 10 446 0 -400 330 147 -22 3394 3514 10 992 0 -401 443 237 -30 754 874 10 393 0 -402 316 286 30 547 667 10 0 567 -403 335 46 -10 0 7053 10 321 0 -404 381 495 20 1290 1410 10 0 989 -405 364 173 30 721 841 10 0 576 -406 267 162 -3 5797 5917 10 187 0 -407 214 245 8 85 205 10 0 615 -408 92 234 10 0 7116 10 0 930 -409 347 459 -20 0 7044 10 774 0 -410 30 7 -10 4754 4874 10 816 0 -411 120 37 -24 3101 3221 10 921 0 -412 397 153 -10 3530 3650 10 990 0 -413 210 29 13 4203 4323 10 0 115 -414 87 285 30 964 1084 10 0 822 -415 132 32 18 3138 3258 10 0 153 -416 390 294 -10 949 1069 10 81 0 -417 67 451 -9 0 7003 10 739 0 -418 24 68 -18 1658 1778 10 305 0 -419 146 439 -12 1037 1157 10 920 0 -420 209 212 -44 0 7219 10 34 0 -421 6 292 -20 970 1090 10 449 0 -422 18 63 -20 1356 1476 10 204 0 -423 149 98 -20 4660 4780 10 325 0 -424 91 268 -10 978 1098 10 793 0 -425 103 177 28 0 7110 10 0 881 -426 367 178 20 721 841 10 0 675 -427 225 269 30 5083 5203 10 0 590 -428 443 246 -24 919 1039 10 556 0 -429 306 42 -10 1907 2027 10 219 0 -430 374 306 4 0 7138 10 0 224 -431 413 421 -15 0 7038 10 194 0 -432 470 405 -20 0 7005 10 828 0 -433 33 278 18 5949 6069 10 0 735 -434 149 458 -18 4655 4775 10 946 0 -435 257 57 -20 4904 5024 10 665 0 -436 272 403 30 0 7120 10 0 878 -437 221 291 9 184 304 10 0 823 -438 1 101 -20 5029 5149 10 464 0 -439 332 459 35 1475 1595 10 0 824 -440 220 392 20 0 7129 10 0 10 -441 253 50 27 903 1023 10 0 820 -442 250 441 -36 0 7083 10 49 0 -443 471 484 -26 0 6953 10 88 0 -444 480 152 26 4086 4206 10 0 648 -445 404 83 -20 1194 1314 10 903 0 -446 476 94 20 0 7000 10 0 399 -447 458 213 -10 4513 4633 10 958 0 -448 215 395 20 968 1088 10 0 825 -449 85 288 20 728 848 10 0 421 -450 179 75 13 2960 3080 10 0 663 -451 228 287 21 112 232 10 0 228 -452 397 18 10 1168 1288 10 0 901 -453 238 204 20 419 539 10 0 656 -454 488 3 -30 1602 1722 10 616 0 -455 407 88 -33 1298 1418 10 363 0 -456 459 14 20 1241 1361 10 0 829 -457 120 17 30 1116 1236 10 0 543 -458 235 316 -12 0 7207 10 902 0 -459 370 382 11 3535 3655 10 0 906 -460 405 454 -22 5212 5332 10 277 0 -461 17 458 -10 1732 1852 10 625 0 -462 43 135 -10 0 7038 10 306 0 -463 318 497 -18 0 7018 10 104 0 -464 199 268 20 0 7220 10 0 438 -465 111 467 -23 0 7017 10 666 0 -466 138 438 20 1149 1269 10 0 280 -467 172 314 9 2182 2302 10 0 922 -468 494 468 -14 1410 1530 10 948 0 -469 35 303 -20 0 7053 10 334 0 -470 341 59 27 3159 3279 10 0 767 -471 423 221 9 1033 1153 10 0 692 -472 395 295 -20 845 965 10 63 0 -473 413 417 10 1424 1544 10 0 893 -474 339 60 -10 844 964 10 235 0 -475 277 428 7 0 7094 10 0 804 -476 176 199 28 299 419 10 0 904 -477 265 240 9 18 138 10 0 813 -478 365 190 -20 5910 6030 10 337 0 -479 133 53 20 0 7045 10 0 653 -480 387 488 20 1448 1568 10 0 680 -481 385 295 20 509 629 10 0 892 -482 491 369 28 2918 3038 10 0 495 -483 445 273 -20 1031 1151 10 341 0 -484 195 273 22 0 7215 10 0 279 -485 313 493 -40 4772 4892 10 5 0 -486 495 227 -37 1376 1496 10 672 0 -487 241 403 -20 0 7121 10 105 0 -488 30 72 10 1726 1846 10 0 394 -489 21 487 -10 1401 1521 10 102 0 -490 324 99 10 1352 1472 10 0 667 -491 453 318 -19 0 7060 10 114 0 -492 443 272 10 0 7080 10 0 89 -493 447 184 -10 1698 1818 10 245 0 -494 366 288 29 0 7152 10 0 155 -495 440 284 -28 0 7081 10 482 0 -496 13 314 -20 975 1095 10 830 0 -497 72 227 25 0 7095 10 0 310 -498 377 385 6 3465 3585 10 0 368 -499 477 478 -7 0 6953 10 72 0 -500 204 185 -20 0 7195 10 346 0 -501 226 191 20 372 492 10 0 701 -502 330 138 -23 4438 4558 10 42 0 -503 185 434 -20 0 7079 10 304 0 -504 483 22 -20 0 6949 10 856 0 -505 71 282 -17 2567 2687 10 817 0 -506 60 5 -20 0 6964 10 212 0 -507 189 402 -10 2144 2264 10 309 0 -508 134 211 -10 482 602 10 871 0 -509 146 313 22 0 7153 10 0 268 -510 21 146 -20 1947 2067 10 800 0 -511 37 281 -30 0 7059 10 229 0 -512 416 417 20 1372 1492 10 0 524 -513 44 311 27 1630 1750 10 0 555 -514 361 181 20 0 7144 10 0 874 -515 444 242 -10 862 982 10 542 0 -516 444 271 10 982 1102 10 0 592 -517 359 179 20 0 7144 10 0 196 -518 388 334 20 0 7113 10 0 973 -519 401 164 -2 0 7101 10 249 0 -520 499 316 -10 2487 2607 10 690 0 -521 399 106 20 1207 1327 10 0 53 -522 425 215 10 916 1036 10 0 918 -523 407 98 10 814 934 10 0 20 -524 406 460 -20 2877 2997 10 512 0 -525 88 95 20 0 7050 10 0 28 -526 95 64 4 3064 3184 10 0 964 -527 306 229 -20 5281 5401 10 599 0 -528 273 55 20 725 845 10 0 810 -529 384 149 -20 4789 4909 10 272 0 -530 122 35 10 981 1101 10 0 31 -531 308 199 -17 6033 6153 10 726 0 -532 390 301 10 661 781 10 0 378 -533 300 108 10 542 662 10 0 633 -534 267 400 10 929 1049 10 0 48 -535 8 300 10 1423 1543 10 0 836 -536 105 181 19 6125 6245 10 0 43 -537 398 325 30 933 1053 10 0 603 -538 166 247 1 276 396 10 0 307 -539 140 431 30 0 7063 10 0 292 -540 253 118 19 2189 2309 0 0 1006 -541 359 246 18 0 7165 10 0 729 -542 321 277 10 244 364 10 0 515 -543 168 59 -30 1464 1584 10 457 0 -544 406 285 -13 0 7115 10 181 0 -545 391 334 20 724 844 10 0 863 -546 437 19 -10 4056 4176 10 289 0 -547 201 278 13 166 286 10 0 837 -548 435 267 20 1291 1411 10 0 678 -549 245 408 -20 815 935 10 974 0 -550 16 462 10 0 6959 10 0 905 -551 107 374 -6 3657 3777 10 46 0 -552 477 97 -20 1131 1251 10 806 0 -553 346 57 20 1233 1353 10 0 870 -554 14 459 20 1343 1463 10 0 858 -555 102 6 -27 5834 5954 10 513 0 -556 359 287 24 0 7159 10 0 428 -557 297 131 25 4662 4782 10 0 69 -558 282 1 18 4170 4290 10 0 714 -559 21 70 15 3085 3205 10 0 294 -560 440 244 10 0 7084 10 0 136 -561 482 104 -10 3230 3350 10 167 0 -562 120 261 -30 3173 3293 10 786 0 -563 125 29 -10 1133 1253 10 916 0 -564 292 32 14 917 1037 10 0 371 -565 262 92 25 0 7116 10 0 652 -566 68 160 -10 0 7071 10 230 0 -567 405 276 -30 937 1057 10 402 0 -568 277 50 10 791 911 10 0 699 -569 32 319 21 0 7046 10 0 880 -570 344 70 24 0 7071 10 0 866 -571 481 84 -10 2022 2142 10 282 0 -572 21 68 -10 1606 1726 10 851 0 -573 441 244 -20 1108 1228 10 74 0 -574 57 43 15 0 6991 10 0 605 -575 1 293 -20 1071 1191 10 845 0 -576 481 96 -30 1188 1308 10 405 0 -577 471 368 19 1712 1832 10 0 15 -578 236 126 23 439 559 10 0 809 -579 406 99 -30 908 1028 10 162 0 -580 303 186 10 5417 5537 0 0 1009 -581 225 369 38 426 546 10 0 107 -582 412 453 -10 1188 1308 10 859 0 -583 104 349 20 4037 4157 10 0 745 -584 173 182 25 351 471 10 0 885 -585 111 464 -24 1242 1362 10 886 0 -586 53 440 -10 1292 1412 10 157 0 -587 69 336 20 0 7074 10 0 308 -588 359 182 -21 0 7146 10 192 0 -589 13 459 -30 0 6959 10 593 0 -590 244 277 -30 5205 5325 10 427 0 -591 484 177 -20 1006 1126 10 350 0 -592 452 206 -10 1969 2089 10 516 0 -593 22 483 30 1244 1364 10 0 589 -594 452 110 14 1361 1481 10 0 209 -595 347 192 -34 5953 6073 10 877 0 -596 95 92 -21 1011 1131 10 864 0 -597 368 311 -20 3704 3824 10 737 0 -598 479 387 13 1590 1710 10 0 4 -599 479 169 20 1234 1354 10 0 527 -600 497 266 25 2990 3110 0 0 1004 -601 66 336 10 1013 1133 10 0 911 -602 376 195 10 724 844 10 0 928 -603 401 281 -30 1044 1164 10 537 0 -604 441 177 -10 4005 4125 10 889 0 -605 231 203 -15 0 7224 10 574 0 -606 21 488 -10 1445 1565 10 664 0 -607 231 204 20 601 721 10 0 11 -608 122 422 3 5827 5947 10 0 679 -609 65 453 30 1127 1247 10 0 30 -610 206 261 -20 0 7229 10 703 0 -611 466 149 -8 0 7036 10 191 0 -612 313 119 30 863 983 10 0 129 -613 90 274 20 717 837 10 0 791 -614 39 162 -30 2261 2381 10 788 0 -615 35 306 -8 918 1038 10 407 0 -616 437 15 30 1421 1541 10 0 454 -617 307 412 8 1615 1735 10 0 982 -618 79 291 -10 835 955 10 65 0 -619 64 437 11 3673 3793 10 0 90 -620 376 92 -10 3962 4082 10 150 0 -621 129 27 10 1190 1310 10 0 109 -622 196 489 23 4121 4241 10 0 972 -623 51 286 -12 5836 5956 10 130 0 -624 20 488 -30 1489 1609 10 987 0 -625 13 455 10 0 6961 10 0 461 -626 170 347 -20 1743 1863 10 381 0 -627 92 230 20 755 875 10 0 373 -628 117 467 -30 958 1078 10 779 0 -629 413 217 -25 656 776 10 275 0 -630 405 450 -30 0 7021 10 719 0 -631 394 322 -8 4099 4219 10 202 0 -632 125 61 -23 2447 2567 10 125 0 -633 238 123 -10 3124 3244 10 533 0 -634 11 403 -30 1372 1492 10 243 0 -635 89 272 10 766 886 10 0 134 -636 304 102 30 0 7117 10 0 721 -637 478 121 -20 1275 1395 10 888 0 -638 408 84 10 1137 1257 10 0 736 -639 376 494 30 1079 1199 10 0 83 -640 20 73 10 1101 1221 10 0 145 -641 159 299 -20 4062 4182 10 976 0 -642 95 382 -20 0 7071 10 358 0 -643 352 63 -5 4713 4833 10 322 0 -644 365 274 14 410 530 10 0 798 -645 30 301 10 1110 1230 10 0 100 -646 351 5 12 0 7009 10 0 320 -647 197 267 10 435 555 10 0 319 -648 498 171 -26 5026 5146 10 444 0 -649 468 352 -30 0 7034 10 755 0 -650 418 251 21 4787 4907 10 0 718 -651 489 437 -30 2827 2947 10 850 0 -652 251 63 -25 3950 4070 10 565 0 -653 132 55 -20 1069 1189 10 479 0 -654 281 96 -12 4503 4623 10 796 0 -655 333 293 27 2468 2588 10 0 236 -656 255 487 -20 1592 1712 10 453 0 -657 207 400 -30 762 882 10 855 0 -658 469 489 -34 0 6950 10 271 0 -659 244 254 20 401 521 10 0 907 -660 233 207 10 165 285 10 0 708 -661 441 60 -7 5835 5955 10 232 0 -662 411 379 -30 0 7068 10 213 0 -663 178 72 -13 0 7082 10 450 0 -664 51 447 10 1178 1298 10 0 606 -665 478 118 20 1417 1537 10 0 435 -666 141 426 23 0 7067 10 0 465 -667 295 89 -10 2968 3088 10 490 0 -668 112 433 29 940 1060 10 0 25 -669 320 211 16 3970 4090 10 0 214 -670 400 103 -10 1022 1142 10 171 0 -671 408 453 10 1132 1252 10 0 78 -672 435 180 37 898 1018 10 0 486 -673 432 66 -10 4285 4405 10 345 0 -674 374 116 -5 0 7092 10 953 0 -675 478 102 -20 0 7003 10 426 0 -676 335 57 -20 784 904 10 264 0 -677 385 239 -23 3142 3262 10 801 0 -678 386 245 -20 1916 2036 10 548 0 -679 208 396 -3 0 7123 10 608 0 -680 380 489 -20 1516 1636 10 480 0 -681 380 498 10 1189 1309 10 0 85 -682 440 7 20 1255 1375 10 0 242 -683 434 245 -10 1367 1487 10 68 0 -684 90 232 -30 0 7113 10 967 0 -685 389 334 20 0 7112 10 0 384 -686 241 205 -27 0 7229 10 994 0 -687 18 24 32 2513 2633 10 0 339 -688 57 183 15 4401 4521 10 0 73 -689 59 457 30 0 6993 10 0 295 -690 442 243 10 1154 1274 10 0 520 -691 402 281 20 1000 1120 10 0 329 -692 445 237 -9 0 7079 10 471 0 -693 441 273 20 0 7082 0 0 1010 -694 31 175 -10 986 1106 10 161 0 -695 234 202 10 319 439 10 0 724 -696 52 303 -30 1765 1885 10 19 0 -697 167 445 -25 0 7063 10 357 0 -698 179 286 8 1365 1485 10 0 347 -699 269 48 -10 1122 1242 10 568 0 -700 165 59 27 3771 3891 10 0 186 -701 461 8 -20 0 6953 10 501 0 -702 421 415 -10 941 1061 10 909 0 -703 59 459 20 1245 1365 10 0 610 -704 24 492 10 1848 1968 10 0 747 -705 55 449 -10 1054 1174 10 925 0 -706 224 192 -20 280 400 10 386 0 -707 444 269 20 934 1054 10 0 91 -708 491 20 -10 1574 1694 10 660 0 -709 313 126 10 973 1093 10 0 94 -710 283 438 3 926 1046 10 0 362 -711 352 241 5 0 7172 10 0 360 -712 398 476 25 0 7004 10 0 962 -713 442 247 10 0 7082 10 0 756 -714 217 207 -18 5530 5650 10 558 0 -715 233 87 18 1010 1130 10 0 952 -716 479 127 -20 1079 1199 10 776 0 -717 6 53 8 2348 2468 10 0 99 -718 478 300 -21 0 7041 10 650 0 -719 378 493 30 1127 1247 10 0 630 -720 303 78 12 660 780 10 0 819 -721 344 62 -30 1386 1506 10 636 0 -722 371 315 -12 4663 4783 10 217 0 -723 200 78 -20 0 7095 10 51 0 -724 413 391 -10 868 988 10 695 0 -725 415 216 -20 705 825 10 143 0 -726 397 57 17 5904 6024 10 0 531 -727 293 228 19 0 7226 10 0 260 -728 0 297 10 1171 1291 10 0 376 -729 435 20 -18 0 6979 10 541 0 -730 195 111 -14 3992 4112 10 765 0 -731 417 218 10 1112 1232 10 0 215 -732 340 54 10 951 1071 10 0 274 -733 132 57 20 978 1098 10 0 789 -734 210 379 -10 2835 2955 10 238 0 -735 228 260 -18 6422 6542 10 433 0 -736 399 104 -10 0 7066 10 638 0 -737 95 277 20 1098 1218 10 0 597 -738 360 284 19 0 7159 10 0 216 -739 53 466 9 1340 1460 10 0 417 -740 112 465 10 1197 1317 10 0 860 -741 313 391 5 598 718 10 0 915 -742 93 235 10 0 7117 10 0 882 -743 125 32 30 0 7023 10 0 199 -744 215 282 -31 5762 5882 10 899 0 -745 224 320 -20 5135 5255 10 583 0 -746 134 428 20 1232 1352 10 0 752 -747 26 490 -10 1899 2019 10 704 0 -748 44 115 24 925 1045 10 0 293 -749 438 127 -7 3764 3884 10 775 0 -750 239 15 -10 2415 2535 10 35 0 -751 342 54 20 999 1119 10 0 844 -752 109 463 -20 1334 1454 10 746 0 -753 199 187 20 507 627 10 0 137 -754 201 188 10 555 675 10 0 959 -755 399 301 30 777 897 10 0 649 -756 484 171 -10 0 7028 10 713 0 -757 272 234 -30 6361 6481 10 365 0 -758 380 350 -13 3466 3586 10 237 0 -759 140 108 -22 0 7095 10 356 0 -760 228 199 10 537 657 10 0 146 -761 245 461 -17 2597 2717 10 929 0 -762 305 107 20 901 1021 10 0 118 -763 231 195 20 437 557 10 0 862 -764 450 265 -30 865 985 10 792 0 -765 273 149 14 0 7171 10 0 730 -766 12 358 7 4897 5017 10 0 818 -767 315 121 -27 0 7130 10 470 0 -768 420 213 10 814 934 10 0 247 -769 331 134 -10 0 7133 10 932 0 -770 84 377 -20 3705 3825 10 397 0 -771 320 280 10 340 460 10 0 26 -772 89 185 -11 2399 2519 10 80 0 -773 472 481 -10 1306 1426 10 297 0 -774 422 420 20 1050 1170 10 0 409 -775 475 267 7 3118 3238 10 0 749 -776 470 125 20 952 1072 10 0 716 -777 435 268 -30 1247 1367 10 66 0 -778 409 155 -20 681 801 10 135 0 -779 243 248 30 96 216 10 0 628 -780 488 96 22 0 6991 10 0 331 -781 341 72 -18 3219 3339 10 190 0 -782 58 449 30 1451 1571 10 0 283 -783 16 460 -20 1643 1763 10 966 0 -784 480 136 22 0 7018 10 0 299 -785 162 388 11 4504 4624 10 0 387 -786 47 208 30 906 1026 10 0 562 -787 324 127 30 514 634 10 0 198 -788 87 96 30 1127 1247 10 0 614 -789 140 137 -20 2279 2399 10 733 0 -790 314 205 -10 6107 6227 10 278 0 -791 96 346 -20 741 861 10 613 0 -792 321 280 30 296 416 10 0 764 -793 245 251 10 5 125 10 0 424 -794 436 295 11 2113 2233 10 0 843 -795 274 261 -13 6828 6948 10 250 0 -796 271 128 12 1382 1502 10 0 654 -797 275 45 20 0 7068 10 0 872 -798 422 409 -14 0 7040 10 644 0 -799 146 188 -33 0 7153 10 7 0 -800 93 96 20 902 1022 10 0 510 -801 409 255 23 0 7115 10 0 677 -802 449 428 -10 4987 5107 10 55 0 -803 90 285 -18 1105 1225 10 281 0 -804 415 95 -7 4707 4827 10 475 0 -805 88 287 30 1054 1174 10 0 826 -806 379 196 20 776 896 10 0 552 -807 368 452 -25 2680 2800 10 301 0 -808 202 186 20 604 724 10 0 312 -809 435 11 -23 1189 1309 10 578 0 -810 269 46 -20 1074 1194 10 528 0 -811 7 292 -10 0 7028 10 286 0 -812 44 496 -10 1607 1727 10 62 0 -813 478 99 -9 1245 1365 10 477 0 -814 391 99 -14 766 886 10 38 0 -815 132 477 25 1309 1429 10 0 138 -816 24 65 10 1461 1581 10 0 410 -817 130 247 17 0 7154 10 0 505 -818 133 273 -7 0 7155 10 766 0 -819 347 62 -12 1334 1454 10 720 0 -820 404 140 -27 5035 5155 10 441 0 -821 416 420 20 1159 1279 10 0 8 -822 67 335 -30 967 1087 10 414 0 -823 92 270 -9 1027 1147 10 437 0 -824 411 95 -35 0 7051 10 439 0 -825 132 479 -20 0 7017 10 448 0 -826 366 334 -30 1641 1761 10 805 0 -827 125 39 -32 921 1041 10 234 0 -828 419 422 20 1105 1225 10 0 432 -829 460 2 -20 1412 1532 10 456 0 -830 67 334 20 923 1043 10 0 496 -831 448 414 -13 4891 5011 10 133 0 -832 46 163 8 3704 3824 10 0 313 -833 77 465 -30 1044 1164 10 838 0 -834 284 319 -8 3267 3387 10 383 0 -835 102 422 -10 905 1025 10 252 0 -836 240 34 -10 6238 6358 10 535 0 -837 141 428 -13 775 895 10 547 0 -838 204 269 30 0 7225 10 0 833 -839 144 439 -10 1085 1205 10 59 0 -840 470 417 -10 2947 3067 10 848 0 -841 404 103 -10 966 1086 10 300 0 -842 5 281 16 0 7028 10 0 79 -843 487 320 -11 0 7027 10 794 0 -844 398 23 -20 1024 1144 10 751 0 -845 90 296 20 606 726 10 0 575 -846 386 13 10 1348 1468 10 0 985 -847 115 465 10 1049 1169 10 0 86 -848 473 475 10 1669 1789 10 0 840 -849 275 42 30 950 1070 10 0 108 -850 286 356 30 388 508 10 0 651 -851 15 69 10 1167 1287 10 0 572 -852 267 44 20 1023 1143 10 0 326 -853 243 399 -15 939 1059 10 370 0 -854 390 249 -10 0 7134 10 352 0 -855 210 391 30 566 686 10 0 657 -856 433 15 20 1131 1251 10 0 504 -857 24 259 19 0 7048 10 0 193 -858 12 463 -20 0 6955 10 554 0 -859 237 213 10 588 708 10 0 582 -860 182 480 -10 1459 1579 10 740 0 -861 409 88 20 1081 1201 10 0 23 -862 244 368 -20 0 7156 10 763 0 -863 381 328 -20 2869 2989 10 545 0 -864 213 185 21 239 359 10 0 596 -865 482 141 -24 0 7018 10 956 0 -866 319 124 -24 0 7131 10 570 0 -867 141 431 30 872 992 10 0 197 -868 198 264 -31 0 7221 10 302 0 -869 69 334 30 824 944 10 0 75 -870 299 98 -20 0 7115 10 553 0 -871 240 250 10 150 270 10 0 508 -872 199 203 -20 5829 5949 10 797 0 -873 459 17 -20 1645 1765 10 231 0 -874 423 217 -20 967 1087 10 514 0 -875 477 179 20 891 1011 10 0 351 -876 213 397 10 869 989 10 0 24 -877 405 187 34 5002 5122 10 0 595 -878 269 402 -30 811 931 10 436 0 -879 53 204 8 4220 4340 10 0 151 -880 13 394 -21 1490 1610 10 569 0 -881 15 68 -28 1211 1331 10 425 0 -882 56 268 -10 4256 4376 10 742 0 -883 360 184 10 0 7146 10 0 207 -884 307 102 -16 0 7116 10 978 0 -885 130 57 -25 930 1050 10 584 0 -886 250 328 24 995 1115 10 0 585 -887 91 231 -10 801 921 10 395 0 -888 479 176 20 946 1066 10 0 637 -889 420 224 10 1716 1836 10 0 604 -890 461 182 -20 0 7053 10 971 0 -891 418 218 -10 1068 1188 10 954 0 -892 419 418 -20 0 7036 10 481 0 -893 336 493 -10 5972 6092 10 473 0 -894 389 300 10 615 735 10 0 95 -895 92 76 -18 0 7039 10 333 0 -896 476 102 20 1345 1465 10 0 131 -897 418 399 20 1751 1871 10 0 70 -898 109 56 27 0 7035 10 0 166 -899 13 465 31 3094 3214 10 0 744 -900 92 232 10 707 827 10 0 369 -901 394 47 -10 1252 1372 10 452 0 -902 16 287 12 1083 1203 10 0 458 -903 399 102 20 1068 1188 10 0 445 -904 143 158 -28 0 7133 10 476 0 -905 18 484 -10 1300 1420 10 550 0 -906 250 411 -11 0 7113 10 459 0 -907 19 273 -20 0 7042 10 659 0 -908 365 28 -10 1073 1193 10 175 0 -909 387 297 10 561 681 10 0 702 -910 433 447 -10 3177 3297 10 939 0 -911 214 274 -10 0 7231 10 601 0 -912 489 338 17 5589 5709 10 0 338 -913 130 494 6 0 7003 10 0 182 -914 23 67 -20 1557 1677 10 343 0 -915 374 489 -5 1017 1137 10 741 0 -916 126 30 10 1087 1207 10 0 563 -917 112 467 10 1104 1224 10 0 276 -918 489 274 -10 2135 2255 10 522 0 -919 61 214 4 1367 1487 10 0 382 -920 166 440 12 771 891 10 0 419 -921 56 75 24 0 7013 10 0 411 -922 210 276 -9 0 7227 10 467 0 -923 80 286 10 896 1016 10 0 203 -924 17 459 10 1688 1808 10 0 140 -925 66 448 10 1021 1141 10 0 705 -926 351 128 15 5013 5133 10 0 291 -927 352 176 20 444 564 10 0 52 -928 490 286 -10 0 7032 10 602 0 -929 247 219 17 65 185 10 0 761 -930 86 268 -10 869 989 10 408 0 -931 398 329 17 611 731 10 0 188 -932 272 402 10 638 758 10 0 769 -933 317 123 20 761 881 10 0 21 -934 408 318 -20 0 7102 10 87 0 -935 66 31 25 4194 4314 10 0 92 -936 425 448 9 3178 3298 10 0 296 -937 35 304 30 870 990 10 0 119 -938 471 94 -20 0 7004 10 165 0 -939 470 473 10 1724 1844 10 0 910 -940 224 56 -17 0 7079 10 979 0 -941 343 47 -27 0 7051 10 951 0 -942 52 18 28 3428 3548 10 0 270 -943 16 68 20 1255 1375 10 0 156 -944 195 185 -20 449 569 10 314 0 -945 92 236 20 0 7116 10 0 50 -946 76 462 18 3824 3944 10 0 434 -947 124 56 -25 865 985 10 388 0 -948 481 454 14 1282 1402 10 0 468 -949 477 483 -10 1463 1583 10 3 0 -950 481 124 10 1134 1254 10 0 963 -951 389 156 27 2862 2982 10 0 941 -952 384 16 -18 0 7005 10 715 0 -953 492 34 5 3242 3362 10 0 674 -954 371 200 10 897 1017 10 0 891 -955 153 235 10 333 453 10 0 241 -956 428 202 24 0 7090 10 0 865 -957 257 391 22 0 7133 10 0 164 -958 421 218 10 0 7101 10 0 447 -959 206 186 -10 750 870 10 754 0 -960 393 301 30 713 833 10 0 227 -961 204 187 -20 0 7196 10 124 0 -962 468 475 -25 1193 1313 10 712 0 -963 477 122 -10 1320 1440 10 950 0 -964 100 66 -4 5599 5719 10 526 0 -965 489 27 10 1685 1805 10 0 288 -966 12 451 20 0 6963 10 0 783 -967 197 270 30 383 503 10 0 684 -968 311 422 -10 0 7092 10 354 0 -969 489 17 -20 0 6941 10 248 0 -970 13 214 -29 5414 5534 10 177 0 -971 440 247 20 0 7084 10 0 890 -972 28 467 -23 5370 5490 10 622 0 -973 388 325 -20 1053 1173 10 518 0 -974 270 401 20 0 7122 10 0 549 -975 5 445 30 0 6961 10 0 340 -976 198 271 20 337 457 10 0 641 -977 480 131 5 2750 2870 10 0 205 -978 437 98 16 4455 4575 10 0 884 -979 131 246 17 0 7155 10 0 940 -980 49 437 7 1710 1830 0 0 1003 -981 270 49 30 1168 1288 10 0 172 -982 337 41 -8 4009 4129 10 617 0 -983 318 280 20 0 7200 10 0 269 -984 154 392 9 626 746 10 0 61 -985 493 111 -10 0 6995 10 846 0 -986 399 450 20 0 7025 10 0 58 -987 67 452 30 1078 1198 10 0 624 -988 34 239 -10 876 996 10 18 0 -989 343 276 -20 0 7178 10 404 0 -990 393 12 10 0 6997 10 0 412 -991 236 247 20 210 330 10 0 349 -992 340 291 22 1882 2002 10 0 400 -993 3 292 20 1022 1142 10 0 139 -994 209 68 27 6272 6392 10 0 686 -995 18 225 -20 0 7041 10 342 0 -996 147 435 -20 0 7063 10 176 0 -997 335 99 25 4874 4994 0 0 1005 -998 485 24 20 1285 1405 10 0 110 -999 470 475 -30 0 6960 10 93 0 -1000 341 58 10 895 1015 10 0 336 -1001 491 25 -10 1634 1754 10 122 0 -1002 238 210 -30 0 7233 10 344 0 -1003 49 437 -7 1710 1830 10 980 0 -1004 497 266 -25 2990 3110 10 600 0 -1005 335 99 -25 4874 4994 10 997 0 -1006 253 118 -19 2189 2309 10 540 0 -1007 406 450 -20 1037 1157 10 253 0 -1008 149 214 -7 0 7167 10 189 0 -1009 303 186 -10 5417 5537 10 580 0 -1010 441 273 -20 0 7082 10 693 0 diff --git a/jsprit-instances/instances/lilim/1000/LRC2103.txt b/jsprit-instances/instances/lilim/1000/LRC2103.txt deleted file mode 100644 index 7ea596ac8..000000000 --- a/jsprit-instances/instances/lilim/1000/LRC2103.txt +++ /dev/null @@ -1,1016 +0,0 @@ -250 1000 1 -0 250 250 0 0 7284 0 0 0 -1 440 436 18 0 7009 10 0 936 -2 214 394 -13 0 7126 10 181 0 -3 476 483 10 0 6950 10 0 200 -4 352 487 27 0 7016 10 0 434 -5 230 197 40 486 606 10 0 412 -6 175 239 -10 0 7199 10 930 0 -7 133 202 -14 1842 1962 10 319 0 -8 328 458 -25 0 7052 10 409 0 -9 25 499 10 1780 1900 10 0 279 -10 226 423 15 788 908 10 0 237 -11 313 282 20 654 774 10 0 971 -12 60 454 -20 0 6996 10 32 0 -13 239 486 3 0 7038 10 0 218 -14 102 264 10 535 655 10 0 696 -15 408 452 -10 0 7018 10 297 0 -16 451 62 -20 0 6999 10 941 0 -17 203 390 -38 0 7127 10 581 0 -18 92 233 10 0 7116 10 0 868 -19 7 300 30 1379 1499 10 0 127 -20 409 90 -20 1033 1153 10 579 0 -21 307 108 -14 950 1070 10 765 0 -22 347 54 -20 1180 1300 10 223 0 -23 406 87 -10 1252 1372 10 638 0 -24 371 332 14 2118 2238 10 0 655 -25 116 466 -20 1004 1124 10 837 0 -26 441 265 40 0 7083 10 0 828 -27 130 140 17 776 896 10 0 919 -28 80 117 -9 3297 3417 10 313 0 -29 421 387 -10 0 7055 10 82 0 -30 83 300 26 0 7100 10 0 152 -31 136 52 -30 0 7046 10 457 0 -32 18 462 20 0 6960 10 0 12 -33 390 120 -23 4017 4137 10 42 0 -34 188 119 44 3899 4019 10 0 400 -35 467 114 -5 0 7018 10 977 0 -36 440 292 -8 3760 3880 10 299 0 -37 268 400 20 973 1093 10 0 70 -38 391 202 14 0 7126 10 0 768 -39 377 432 -29 3326 3446 10 651 0 -40 80 290 10 790 910 10 0 496 -41 439 15 -30 1373 1493 10 405 0 -42 307 52 23 3682 3802 10 0 33 -43 111 192 -12 0 7124 10 904 0 -44 131 56 10 1023 1143 10 0 339 -45 88 286 10 0 7109 10 0 860 -46 69 414 6 0 7030 10 0 619 -47 41 232 16 821 941 10 0 988 -48 323 77 -10 0 7087 10 261 0 -49 340 416 -26 0 7086 10 88 0 -50 86 199 -10 0 7103 10 286 0 -51 314 124 -12 924 1044 10 391 0 -52 375 191 30 667 787 10 0 233 -53 226 175 23 0 7196 10 0 700 -54 242 106 28 0 7130 10 0 852 -55 417 417 -20 1328 1448 10 878 0 -56 419 459 20 1265 1385 10 0 974 -57 389 11 20 0 6998 10 0 661 -58 450 416 -20 0 7015 10 63 0 -59 246 255 10 0 7268 0 0 1001 -60 71 333 -20 775 895 10 449 0 -61 105 474 -18 1883 2003 10 634 0 -62 20 489 -10 1533 1653 10 102 0 -63 388 331 20 580 700 10 0 58 -64 92 259 4 0 7116 10 0 502 -65 200 261 -20 666 786 10 607 0 -66 400 288 30 0 7120 10 0 260 -67 299 285 -5 5015 5135 10 741 0 -68 378 199 -21 829 949 10 192 0 -69 325 147 -24 0 7147 10 236 0 -70 421 386 -20 0 7056 10 37 0 -71 404 447 20 940 1060 10 0 582 -72 412 478 -1 0 6995 10 265 0 -73 26 67 -20 5267 5387 10 418 0 -74 358 183 20 935 1055 10 0 709 -75 30 302 -10 1066 1186 10 618 0 -76 176 470 -20 0 7042 10 630 0 -77 96 270 -10 0 7119 10 955 0 -78 243 408 15 5735 5855 0 0 1014 -79 60 29 32 5451 5571 10 0 506 -80 34 169 -10 1938 2058 10 535 0 -81 407 280 -24 834 954 10 556 0 -82 277 403 10 699 819 10 0 29 -83 498 456 27 0 6952 10 0 499 -84 384 491 -10 1391 1511 10 289 0 -85 355 174 33 0 7145 10 0 846 -86 97 288 22 5136 5256 10 0 872 -87 316 284 20 499 619 10 0 702 -88 334 403 26 638 758 10 0 49 -89 415 223 20 1219 1339 10 0 284 -90 230 320 -20 0 7202 10 483 0 -91 432 199 7 0 7085 10 0 520 -92 92 18 8 0 6994 10 0 914 -93 273 300 30 0 7219 10 0 834 -94 269 112 19 0 7135 10 0 916 -95 429 389 -10 0 7048 10 798 0 -96 371 71 -10 1147 1267 10 1000 0 -97 5 297 -20 0 7025 10 830 0 -98 414 378 23 0 7066 10 0 758 -99 38 15 -15 4364 4484 10 559 0 -100 2 295 -20 1223 1343 10 342 0 -101 237 254 20 333 453 10 0 913 -102 54 445 10 1232 1352 10 0 62 -103 382 110 -20 4450 4570 10 528 0 -104 438 488 -30 0 6971 10 213 0 -105 395 331 20 866 986 10 0 831 -106 230 487 20 4518 4638 10 0 862 -107 249 407 -10 695 815 10 932 0 -108 488 26 -20 0 6948 10 350 0 -109 151 81 -18 0 7079 10 715 0 -110 483 14 10 1453 1573 10 0 446 -111 0 422 8 0 6971 10 0 987 -112 429 67 -33 2929 3049 10 363 0 -113 195 464 20 6165 6285 0 0 1011 -114 356 256 -10 0 7168 10 323 0 -115 264 180 33 0 7203 10 0 588 -116 94 235 20 0 7118 10 0 589 -117 474 96 -20 0 7003 10 682 0 -118 268 52 10 1222 1342 10 0 781 -119 44 440 -10 0 6994 10 161 0 -120 7 382 27 0 6998 10 0 975 -121 459 53 -10 4489 4609 10 990 0 -122 491 25 -10 0 6945 10 504 0 -123 439 243 20 1254 1374 10 0 792 -124 210 185 20 0 7198 10 0 753 -125 150 68 23 0 7067 10 0 730 -126 201 270 10 0 7222 10 0 742 -127 0 188 -30 0 7017 10 19 0 -128 103 464 -20 5092 5212 10 915 0 -129 325 56 13 0 7067 10 0 648 -130 44 344 -21 4318 4438 10 744 0 -131 418 75 11 1792 1912 10 0 978 -132 472 57 17 0 6980 10 0 444 -133 460 328 13 876 996 10 0 516 -134 89 270 10 814 934 10 0 424 -135 374 190 20 573 693 10 0 756 -136 463 253 -13 4188 4308 10 890 0 -137 97 93 20 0 7055 10 0 921 -138 163 472 9 2614 2734 10 0 246 -139 29 336 -17 1326 1446 10 979 0 -140 84 453 19 4892 5012 10 0 503 -141 294 421 -20 6302 6422 10 367 0 -142 343 62 10 1430 1550 10 0 570 -143 371 193 20 0 7141 10 0 602 -144 142 372 -17 0 7112 10 931 0 -145 66 88 2 0 7029 10 0 993 -146 395 332 10 0 7108 10 0 774 -147 93 413 17 0 7048 10 0 835 -148 267 394 10 1037 1157 10 0 761 -149 249 258 -20 0 7266 10 893 0 -150 472 129 10 0 7022 10 0 595 -151 87 3 13 5732 5852 10 0 743 -152 62 326 -26 1145 1265 10 30 0 -153 212 186 -10 6886 7006 10 533 0 -154 241 402 -12 0 7122 10 217 0 -155 439 266 10 741 861 10 0 227 -156 79 80 -26 5528 5648 10 632 0 -157 62 453 10 1179 1299 10 0 739 -158 188 151 -19 0 7158 10 857 0 -159 386 154 31 0 7108 10 0 814 -160 38 301 -26 1182 1302 10 244 0 -161 192 265 10 497 617 10 0 119 -162 371 192 30 519 639 10 0 360 -163 64 294 12 0 7083 10 0 967 -164 381 494 -25 0 6998 10 179 0 -165 437 12 -20 1318 1438 10 242 0 -166 186 135 -18 2871 2991 10 333 0 -167 459 10 10 0 6956 10 0 195 -168 175 422 24 5786 5906 10 0 324 -169 274 48 10 845 965 10 0 864 -170 488 173 20 1115 1235 10 0 527 -171 398 97 10 836 956 10 0 365 -172 385 17 40 3235 3355 10 0 531 -173 180 283 23 2975 3095 10 0 388 -174 71 12 2 1172 1292 10 0 942 -175 343 49 10 1060 1180 10 0 452 -176 248 251 -30 0 7272 10 937 0 -177 7 194 29 0 7025 10 0 356 -178 322 290 23 5916 6036 10 0 389 -179 410 399 25 935 1055 10 0 164 -180 398 103 30 0 7066 10 0 278 -181 385 285 13 0 7135 10 0 2 -182 179 497 1 0 7017 10 0 920 -183 464 13 -20 1539 1659 10 336 0 -184 492 335 10 3313 3433 10 0 843 -185 27 464 -25 5164 5284 10 815 0 -186 231 29 -20 4905 5025 10 375 0 -187 157 38 -12 0 7043 10 720 0 -188 439 268 10 1191 1311 10 0 771 -189 149 214 -8 0 7167 10 407 0 -190 187 73 -20 0 7087 10 501 0 -191 429 169 -20 3611 3731 10 288 0 -192 350 199 21 0 7162 10 0 68 -193 60 231 -10 0 7084 10 395 0 -194 448 404 -13 2396 2516 10 598 0 -195 481 20 -10 1388 1508 10 167 0 -196 436 25 -10 0 6983 10 198 0 -197 111 459 20 0 7023 10 0 752 -198 389 17 10 1463 1583 10 0 196 -199 148 208 22 0 7164 10 0 827 -200 475 477 -10 1618 1738 10 3 0 -201 390 325 30 0 7116 10 0 796 -202 346 354 8 3270 3390 0 0 1008 -203 91 266 -10 930 1050 10 647 0 -204 17 65 -20 0 6977 10 733 0 -205 391 112 -9 4001 4121 10 674 0 -206 224 203 -15 0 7221 10 688 0 -207 426 231 -5 4114 4234 10 953 0 -208 260 472 33 4144 4264 10 0 383 -209 265 0 -2 3584 3704 10 750 0 -210 391 293 -10 903 1023 10 352 0 -211 411 421 20 1260 1380 10 0 912 -212 132 30 -30 0 7025 10 563 0 -213 475 480 30 0 6953 10 0 104 -214 286 244 -18 5136 5256 10 541 0 -215 436 237 -10 0 7088 10 303 0 -216 402 284 30 0 7119 10 0 683 -217 287 397 12 2257 2377 10 0 154 -218 272 420 -3 5543 5663 10 13 0 -219 477 120 -10 1368 1488 10 950 0 -220 145 434 -26 932 1052 10 791 0 -221 33 286 11 6184 6304 10 0 923 -222 370 262 -10 4398 4518 10 777 0 -223 393 20 20 0 7004 10 0 22 -224 330 308 -20 4682 4802 10 949 0 -225 246 398 -21 0 7126 10 463 0 -226 482 184 14 0 7033 10 0 486 -227 451 305 -10 774 894 10 155 0 -228 226 316 21 221 341 10 0 507 -229 110 459 -20 0 7023 10 659 0 -230 244 250 10 0 7268 10 0 817 -231 458 16 20 1192 1312 10 0 969 -232 390 34 -30 4241 4361 10 870 0 -233 423 214 -30 867 987 10 52 0 -234 219 215 32 127 247 10 0 302 -235 326 118 -20 0 7122 10 866 0 -236 365 74 24 0 7064 10 0 69 -237 331 356 -15 2847 2967 10 10 0 -238 210 398 10 817 937 10 0 656 -239 403 93 -20 0 7055 10 521 0 -240 248 404 -20 0 7120 10 327 0 -241 65 62 15 0 7011 10 0 964 -242 460 13 20 0 6958 10 0 165 -243 0 293 30 0 7021 10 0 510 -244 211 248 26 96 216 10 0 160 -245 484 174 -20 1058 1178 10 874 0 -246 175 352 -9 6660 6780 10 138 0 -247 455 168 -10 3467 3587 10 263 0 -248 224 191 20 324 444 10 0 568 -249 439 156 -30 2103 2223 10 316 0 -250 434 359 -20 5569 5689 10 897 0 -251 118 314 -10 0 7128 10 374 0 -252 234 246 10 0 7258 10 0 536 -253 406 450 20 1037 1157 10 0 649 -254 75 118 21 1636 1756 0 0 1006 -255 115 395 -10 3261 3381 10 625 0 -256 329 456 19 996 1116 10 0 332 -257 218 403 -20 5277 5397 10 428 0 -258 149 341 6 0 7139 10 0 867 -259 253 74 -10 0 7098 10 321 0 -260 436 241 -30 1309 1429 10 66 0 -261 238 203 10 375 495 10 0 48 -262 405 455 40 0 7017 10 0 368 -263 485 27 10 0 6951 10 0 247 -264 323 118 20 643 763 10 0 564 -265 330 371 1 0 7129 10 0 72 -266 25 65 -20 1505 1625 10 943 0 -267 406 96 -20 863 983 10 517 0 -268 49 451 -20 1120 1240 10 705 0 -269 307 249 10 0 7217 0 0 1003 -270 178 135 -30 6055 6175 10 788 0 -271 299 353 -30 396 516 10 850 0 -272 236 213 20 98 218 10 0 325 -273 355 177 20 0 7147 10 0 952 -274 394 23 -20 0 7006 10 453 0 -275 306 235 25 172 292 10 0 918 -276 90 477 -10 0 6997 10 489 0 -277 379 486 22 2687 2807 10 0 387 -278 435 16 -30 1470 1590 10 180 0 -279 8 497 -10 0 6929 10 9 0 -280 150 484 -10 2501 2621 10 309 0 -281 213 399 18 936 1056 10 0 853 -282 391 18 10 1511 1631 10 0 646 -283 111 392 -19 0 7076 10 642 0 -284 330 281 -20 5322 5442 10 89 0 -285 344 203 14 0 7169 10 0 301 -286 91 235 10 1076 1196 10 0 50 -287 346 60 -8 1285 1405 10 982 0 -288 483 27 20 0 6952 10 0 191 -289 382 498 10 1237 1357 10 0 84 -290 457 492 -10 2032 2152 10 962 0 -291 291 213 -10 0 7219 10 844 0 -292 154 374 -23 0 7118 10 666 0 -293 225 196 -4 0 7215 10 423 0 -294 94 40 -10 4272 4392 10 488 0 -295 0 356 13 4345 4465 10 0 334 -296 297 283 -11 0 7217 10 459 0 -297 371 423 10 784 904 10 0 15 -298 417 217 30 754 874 10 0 636 -299 500 228 8 0 7024 10 0 36 -300 412 214 10 604 724 10 0 749 -301 442 289 -14 0 7079 10 285 0 -302 157 269 -32 0 7180 10 234 0 -303 440 241 10 0 7084 10 0 215 -304 100 266 20 586 706 10 0 613 -305 111 178 18 566 686 10 0 800 -306 91 101 -16 0 7057 10 842 0 -307 25 307 10 998 1118 10 0 569 -308 135 400 -10 0 7085 10 419 0 -309 58 458 10 1291 1411 10 0 280 -310 133 26 -26 0 7022 10 373 0 -311 211 386 20 0 7133 10 0 734 -312 94 97 20 0 7056 10 0 526 -313 30 155 9 0 7035 10 0 28 -314 208 184 -26 294 414 10 714 0 -315 394 333 20 777 897 10 0 724 -316 355 180 30 549 669 10 0 249 -317 241 180 13 0 7204 0 0 1007 -318 21 485 30 1353 1473 10 0 609 -319 80 251 14 1214 1334 10 0 7 -320 476 61 -20 1795 1915 10 708 0 -321 406 94 10 911 1031 10 0 259 -322 364 71 5 0 7062 0 0 1005 -323 418 221 10 0 7104 10 0 114 -324 274 441 -24 0 7082 10 168 0 -325 304 97 -20 727 847 10 272 0 -326 297 102 10 0 7119 10 0 652 -327 250 405 20 0 7119 10 0 240 -328 111 463 -30 1286 1406 10 539 0 -329 408 279 -10 0 7114 10 532 0 -330 263 418 -36 1114 1234 10 745 0 -331 480 119 -26 2514 2634 10 985 0 -332 420 383 -19 3928 4048 10 256 0 -333 142 14 18 0 7015 10 0 166 -334 73 328 -13 0 7081 10 295 0 -335 50 438 -20 0 7000 10 466 0 -336 441 7 20 0 6965 10 0 183 -337 462 14 20 1588 1708 10 0 669 -338 360 294 9 5671 5791 10 0 992 -339 58 39 -10 0 6989 10 44 0 -340 58 391 -20 3529 3649 10 746 0 -341 410 285 20 0 7111 10 0 492 -342 96 97 20 808 928 10 0 100 -343 21 64 20 1409 1529 10 0 410 -344 238 210 -10 0 7233 10 621 0 -345 479 121 10 1231 1351 10 0 963 -346 200 178 20 0 7187 10 0 408 -347 216 341 19 0 7177 10 0 590 -348 48 437 -20 3215 3335 10 554 0 -349 200 270 20 0 7221 10 0 461 -350 357 181 20 598 718 10 0 108 -351 476 174 30 1297 1417 10 0 775 -352 400 286 10 0 7120 10 0 210 -353 351 481 -10 0 7022 10 876 0 -354 270 400 -22 545 665 10 957 0 -355 95 234 10 653 773 10 0 972 -356 128 113 -29 0 7091 10 177 0 -357 133 455 25 0 7038 10 0 586 -358 16 463 -10 0 6958 10 747 0 -359 59 388 -30 2651 2771 10 839 0 -360 376 190 -30 621 741 10 162 0 -361 481 122 30 0 7010 10 0 673 -362 266 405 -15 868 988 10 370 0 -363 374 232 33 441 561 10 0 112 -364 398 20 20 1076 1196 10 0 901 -365 481 26 -10 0 6953 10 171 0 -366 63 444 -20 0 7005 10 376 0 -367 89 290 20 0 7109 10 0 141 -368 246 314 -40 0 7210 10 262 0 -369 40 304 -20 0 7058 10 469 0 -370 262 369 15 0 7155 10 0 362 -371 323 29 -20 0 7042 10 933 0 -372 89 65 -10 2881 3001 10 811 0 -373 144 35 26 0 7035 10 0 310 -374 200 265 10 610 730 10 0 251 -375 436 264 20 0 7088 10 0 186 -376 15 457 20 0 6961 10 0 366 -377 397 20 20 0 7002 10 0 865 -378 328 491 -30 2713 2833 10 719 0 -379 399 175 -17 0 7108 10 571 0 -380 432 2 -9 1866 1986 10 908 0 -381 63 336 20 0 7069 10 0 396 -382 6 296 -8 0 7026 10 995 0 -383 146 376 -33 0 7111 10 208 0 -384 295 247 12 0 7229 10 0 561 -385 235 33 -9 5348 5468 10 471 0 -386 233 204 20 217 337 10 0 654 -387 142 360 -22 6128 6248 10 277 0 -388 177 156 -23 0 7155 10 173 0 -389 315 287 -23 0 7200 10 178 0 -390 452 172 -37 0 7058 10 672 0 -391 263 153 12 0 7177 10 0 51 -392 493 493 -10 0 6931 10 848 0 -393 320 283 -20 442 562 10 795 0 -394 64 5 -10 0 6967 10 816 0 -395 95 235 10 563 683 10 0 193 -396 203 211 -20 5226 5346 10 381 0 -397 16 497 20 0 6934 10 0 465 -398 348 348 -30 0 7136 10 436 0 -399 485 104 -40 3178 3298 10 637 0 -400 330 147 -44 0 7144 10 34 0 -401 443 237 20 754 874 10 0 519 -402 316 286 30 547 667 10 0 639 -403 335 46 18 0 7053 10 0 729 -404 381 495 20 1290 1410 10 0 431 -405 364 173 30 721 841 10 0 41 -406 267 162 6 0 7185 10 0 787 -407 214 245 8 85 205 10 0 189 -408 92 234 -20 0 7116 10 346 0 -409 347 459 25 0 7044 10 0 8 -410 30 7 -20 4754 4874 10 343 0 -411 120 37 -27 0 7025 10 898 0 -412 397 153 -40 0 7098 10 5 0 -413 210 29 -20 4203 4323 10 548 0 -414 87 285 30 964 1084 10 0 946 -415 132 32 -20 3138 3258 10 525 0 -416 390 294 20 949 1069 10 0 567 -417 67 451 -5 0 7003 10 922 0 -418 24 68 20 0 6984 10 0 73 -419 146 439 10 0 7059 10 0 308 -420 209 212 -20 0 7219 10 587 0 -421 6 292 -10 970 1090 10 871 0 -422 18 63 10 1356 1476 10 0 717 -423 149 98 4 0 7092 10 0 293 -424 91 268 -10 978 1098 10 134 0 -425 103 177 28 0 7110 10 0 574 -426 367 178 -20 721 841 10 514 0 -427 225 269 30 0 7243 10 0 925 -428 443 246 20 919 1039 10 0 257 -429 306 42 11 0 7059 10 0 820 -430 374 306 4 0 7138 10 0 540 -431 413 421 -20 0 7038 10 404 0 -432 470 405 17 0 7005 10 0 626 -433 33 278 18 5949 6069 0 0 1013 -434 149 458 -27 4655 4775 10 4 0 -435 257 57 18 0 7081 10 0 994 -436 272 403 30 0 7120 10 0 398 -437 221 291 9 184 304 10 0 460 -438 1 101 -8 0 6984 10 832 0 -439 332 459 35 1475 1595 10 0 968 -440 220 392 -20 0 7129 10 679 0 -441 253 50 27 903 1023 0 0 1009 -442 250 441 5 0 7083 10 0 986 -443 471 484 -20 0 6953 10 773 0 -444 480 152 -17 4086 4206 10 132 0 -445 404 83 -10 0 7047 10 455 0 -446 476 94 -10 0 7000 10 110 0 -447 458 213 -31 4513 4633 10 592 0 -448 215 395 -30 0 7125 10 855 0 -449 85 288 20 728 848 10 0 60 -450 179 75 -20 0 7086 10 479 0 -451 228 287 21 112 232 10 0 886 -452 397 18 -10 1168 1288 10 175 0 -453 238 204 20 419 539 10 0 274 -454 488 3 3 0 6931 10 0 965 -455 407 88 10 0 7049 10 0 445 -456 459 14 20 0 6959 10 0 616 -457 120 17 30 0 7008 10 0 31 -458 235 316 -20 0 7207 10 707 0 -459 370 382 11 3535 3655 10 0 296 -460 405 454 -9 5212 5332 10 437 0 -461 17 458 -20 0 6962 10 349 0 -462 43 135 31 0 7038 10 0 851 -463 318 497 21 0 7018 10 0 225 -464 199 268 -10 0 7220 10 645 0 -465 111 467 -20 0 7017 10 397 0 -466 138 438 20 1149 1269 10 0 335 -467 172 314 -40 2182 2302 10 803 0 -468 494 468 31 1410 1530 10 0 840 -469 35 303 20 0 7053 10 0 369 -470 341 59 -20 3159 3279 10 553 0 -471 423 221 9 0 7099 10 0 385 -472 395 295 20 845 965 10 0 801 -473 413 417 -7 0 7041 10 475 0 -474 339 60 -20 844 964 10 763 0 -475 277 428 7 0 7094 10 0 473 -476 176 199 -22 0 7185 10 509 0 -477 265 240 9 18 138 10 0 529 -478 365 190 -20 5910 6030 10 841 0 -479 133 53 20 0 7045 10 0 450 -480 387 488 20 1448 1568 10 0 821 -481 385 295 20 509 629 10 0 495 -482 491 369 28 0 7006 10 0 608 -483 445 273 20 1031 1151 10 0 90 -484 195 273 -29 0 7215 10 505 0 -485 313 493 -20 4772 4892 10 657 0 -486 495 227 -14 1376 1496 10 226 0 -487 241 403 -11 0 7121 10 794 0 -488 30 72 10 1726 1846 10 0 294 -489 21 487 10 0 6945 10 0 276 -490 324 99 -10 1352 1472 10 713 0 -491 453 318 -14 0 7060 10 644 0 -492 443 272 -20 0 7080 10 341 0 -493 447 184 -10 0 7067 10 522 0 -494 366 288 -19 0 7152 10 738 0 -495 440 284 -20 0 7081 10 481 0 -496 13 314 -10 975 1095 10 40 0 -497 72 227 -10 0 7095 10 754 0 -498 377 385 6 3465 3585 10 0 826 -499 477 478 -27 0 6953 10 83 0 -500 204 185 -10 0 7195 10 959 0 -501 226 191 20 372 492 10 0 190 -502 330 138 -4 4438 4558 10 64 0 -503 185 434 -19 0 7079 10 140 0 -504 483 22 10 0 6949 10 0 122 -505 71 282 29 2567 2687 10 0 484 -506 60 5 -32 0 6964 10 79 0 -507 189 402 -21 0 7111 10 228 0 -508 134 211 35 0 7152 10 0 947 -509 146 313 22 0 7153 10 0 476 -510 21 146 -30 1947 2067 10 243 0 -511 37 281 -28 0 7059 10 882 0 -512 416 417 20 1372 1492 10 0 662 -513 44 311 27 1630 1750 10 0 562 -514 361 181 20 0 7144 10 0 426 -515 444 242 10 0 7080 10 0 558 -516 444 271 -13 982 1102 10 133 0 -517 359 179 20 0 7144 10 0 267 -518 388 334 20 0 7113 10 0 712 -519 401 164 -20 0 7101 10 401 0 -520 499 316 -7 0 7017 10 91 0 -521 399 106 20 0 7067 10 0 239 -522 425 215 10 916 1036 10 0 493 -523 407 98 10 0 7056 10 0 804 -524 406 460 2 2877 2997 10 0 910 -525 88 95 20 0 7050 10 0 415 -526 95 64 -20 3064 3184 10 312 0 -527 306 229 -20 0 7215 10 170 0 -528 273 55 20 725 845 10 0 103 -529 384 149 -9 0 7107 10 477 0 -530 122 35 10 0 7024 10 0 663 -531 308 199 -40 6033 6153 10 172 0 -532 390 301 10 661 781 10 0 329 -533 300 108 10 542 662 10 0 153 -534 267 400 10 929 1049 10 0 710 -535 8 300 10 1423 1543 10 0 80 -536 105 181 -10 0 7114 10 252 0 -537 398 325 -10 0 7109 10 973 0 -538 166 247 1 276 396 10 0 615 -539 140 431 30 0 7063 10 0 328 -540 253 118 -4 2189 2309 10 430 0 -541 359 246 18 0 7165 10 0 214 -542 321 277 10 244 364 10 0 692 -543 168 59 6 1464 1584 10 0 605 -544 406 285 -10 0 7115 10 894 0 -545 391 334 20 724 844 10 0 681 -546 437 19 15 4056 4176 10 0 726 -547 201 278 13 166 286 10 0 664 -548 435 267 20 0 7089 10 0 413 -549 245 408 -30 0 7116 10 906 0 -550 16 462 -30 0 6959 10 689 0 -551 107 374 8 0 7085 10 0 782 -552 477 97 10 1131 1251 10 0 665 -553 346 57 20 0 7059 10 0 470 -554 14 459 20 0 6959 10 0 348 -555 102 6 3 0 6989 10 0 695 -556 359 287 24 0 7159 10 0 81 -557 297 131 25 0 7147 10 0 643 -558 282 1 -10 4170 4290 10 515 0 -559 21 70 15 3085 3205 10 0 99 -560 440 244 -12 0 7084 10 631 0 -561 482 104 -12 3230 3350 10 384 0 -562 120 261 -27 3173 3293 10 513 0 -563 125 29 30 1133 1253 10 0 212 -564 292 32 -20 0 7052 10 264 0 -565 262 92 -10 0 7116 10 760 0 -566 68 160 21 0 7071 10 0 653 -567 405 276 -20 0 7117 10 416 0 -568 277 50 -20 0 7073 10 248 0 -569 32 319 -10 0 7046 10 307 0 -570 344 70 -10 0 7071 10 142 0 -571 481 84 17 2022 2142 10 0 379 -572 21 68 20 1606 1726 10 0 640 -573 441 244 10 0 7083 10 0 951 -574 57 43 -28 0 6991 10 425 0 -575 1 293 10 1071 1191 10 0 879 -576 481 96 20 0 6997 10 0 854 -577 471 368 19 1712 1832 10 0 807 -578 236 126 23 439 559 10 0 759 -579 406 99 20 908 1028 10 0 20 -580 303 186 10 5417 5537 0 0 1012 -581 225 369 38 426 546 10 0 17 -582 412 453 -20 0 7015 10 71 0 -583 104 349 20 0 7098 10 0 668 -584 173 182 25 0 7172 10 0 767 -585 111 464 -10 1242 1362 10 847 0 -586 53 440 -25 1292 1412 10 357 0 -587 69 336 20 0 7074 10 0 420 -588 359 182 -33 0 7146 10 115 0 -589 13 459 -20 0 6959 10 116 0 -590 244 277 -19 0 7247 10 347 0 -591 484 177 20 1006 1126 10 0 599 -592 452 206 31 1969 2089 10 0 447 -593 22 483 30 1244 1364 10 0 905 -594 452 110 -10 1361 1481 10 675 0 -595 347 192 -10 5953 6073 10 150 0 -596 95 92 -18 0 7053 10 614 0 -597 368 311 -25 0 7142 10 802 0 -598 479 387 13 1590 1710 10 0 194 -599 479 169 -20 1234 1354 10 591 0 -600 497 266 -20 0 7027 10 806 0 -601 66 336 -7 0 7071 10 766 0 -602 376 195 -20 724 844 10 143 0 -603 401 281 20 1044 1164 10 0 731 -604 441 177 -20 0 7070 10 629 0 -605 231 203 -6 0 7224 10 543 0 -606 21 488 10 1445 1565 10 0 825 -607 231 204 20 601 721 10 0 65 -608 122 422 -28 5827 5947 10 482 0 -609 65 453 -30 0 7000 10 318 0 -610 206 261 -14 0 7229 10 623 0 -611 466 149 -22 0 7036 10 780 0 -612 313 119 30 0 7129 10 0 926 -613 90 274 -20 717 837 10 304 0 -614 39 162 18 2261 2381 10 0 596 -615 35 306 -1 918 1038 10 538 0 -616 437 15 -20 1421 1541 10 456 0 -617 307 412 -20 1615 1735 10 693 0 -618 79 291 10 835 955 10 0 75 -619 64 437 -6 3673 3793 10 46 0 -620 376 92 -30 3962 4082 10 676 0 -621 129 27 10 1190 1310 10 0 344 -622 196 489 23 4121 4241 0 0 1004 -623 51 286 14 0 7072 10 0 610 -624 20 488 10 1489 1609 10 0 984 -625 13 455 10 0 6961 10 0 255 -626 170 347 -17 0 7149 10 432 0 -627 92 230 20 0 7115 10 0 772 -628 117 467 10 958 1078 10 0 740 -629 413 217 20 0 7108 10 0 604 -630 405 450 20 0 7021 10 0 76 -631 394 322 12 0 7114 10 0 560 -632 125 61 26 2447 2567 10 0 156 -633 238 123 24 3124 3244 10 0 686 -634 11 403 18 0 6991 10 0 61 -635 89 272 10 0 7112 10 0 641 -636 304 102 -30 0 7117 10 298 0 -637 478 121 40 1275 1395 10 0 399 -638 408 84 10 1137 1257 10 0 23 -639 376 494 -30 1079 1199 10 402 0 -640 20 73 -20 0 6984 10 572 0 -641 159 299 -10 4062 4182 10 635 0 -642 95 382 19 0 7071 10 0 283 -643 352 63 -25 0 7061 10 557 0 -644 365 274 14 410 530 10 0 491 -645 30 301 10 0 7049 10 0 464 -646 351 5 -10 0 7009 10 282 0 -647 197 267 10 0 7219 10 0 203 -648 498 171 -13 5026 5146 10 129 0 -649 468 352 -20 0 7034 10 253 0 -650 418 251 -20 4787 4907 10 875 0 -651 489 437 29 0 6971 10 0 39 -652 251 63 -10 3950 4070 10 326 0 -653 132 55 -21 1069 1189 10 566 0 -654 281 96 -20 0 7117 10 386 0 -655 333 293 -14 2468 2588 10 24 0 -656 255 487 -10 0 7037 10 238 0 -657 207 400 20 762 882 10 0 485 -658 469 489 -30 0 6950 10 999 0 -659 244 254 20 401 521 10 0 229 -660 233 207 10 0 7228 10 0 737 -661 441 60 -20 5835 5955 10 57 0 -662 411 379 -20 0 7068 10 512 0 -663 178 72 -10 0 7082 10 530 0 -664 51 447 -13 1178 1298 10 547 0 -665 478 118 -10 1417 1537 10 552 0 -666 141 426 23 0 7067 10 0 292 -667 295 89 -20 0 7107 10 927 0 -668 112 433 -20 940 1060 10 583 0 -669 320 211 -20 3970 4090 10 337 0 -670 400 103 10 1022 1142 10 0 884 -671 408 453 10 0 7017 10 0 722 -672 435 180 37 898 1018 10 0 390 -673 432 66 -30 0 7016 10 361 0 -674 374 116 9 0 7092 10 0 205 -675 478 102 10 0 7003 10 0 594 -676 335 57 30 784 904 10 0 620 -677 385 239 21 3142 3262 10 0 983 -678 386 245 -10 1916 2036 10 889 0 -679 208 396 20 0 7123 10 0 440 -680 380 489 -10 1516 1636 10 892 0 -681 380 498 -20 1189 1309 10 545 0 -682 440 7 20 1255 1375 10 0 117 -683 434 245 -30 0 7090 10 216 0 -684 90 232 10 0 7113 10 0 704 -685 389 334 -12 0 7112 10 863 0 -686 241 205 -24 0 7229 10 633 0 -687 18 24 32 0 6951 10 0 935 -688 57 183 15 0 7070 10 0 206 -689 59 457 30 0 6993 10 0 550 -690 442 243 -20 1154 1274 10 691 0 -691 402 281 20 1000 1120 10 0 690 -692 445 237 -10 0 7079 10 542 0 -693 441 273 20 0 7082 10 0 617 -694 31 175 24 986 1106 10 0 902 -695 234 202 -3 0 7224 10 555 0 -696 52 303 -10 1765 1885 10 14 0 -697 167 445 -10 0 7063 10 917 0 -698 179 286 8 0 7195 10 0 997 -699 269 48 20 0 7072 10 0 721 -700 165 59 -23 0 7065 10 53 0 -701 461 8 -20 0 6953 10 873 0 -702 421 415 -20 941 1061 10 87 0 -703 59 459 -20 1245 1365 10 966 0 -704 24 492 -10 1848 1968 10 684 0 -705 55 449 20 1054 1174 10 0 268 -706 224 192 10 280 400 10 0 789 -707 444 269 20 934 1054 10 0 458 -708 491 20 20 1574 1694 10 0 320 -709 313 126 -20 973 1093 10 74 0 -710 283 438 -10 926 1046 10 534 0 -711 352 241 5 0 7172 10 0 896 -712 398 476 -20 0 7004 10 518 0 -713 442 247 10 0 7082 10 0 490 -714 217 207 26 0 7220 10 0 314 -715 233 87 18 1010 1130 10 0 109 -716 479 127 -20 1079 1199 10 888 0 -717 6 53 -10 0 6961 10 422 0 -718 478 300 12 0 7041 10 0 764 -719 378 493 30 0 7000 10 0 378 -720 303 78 12 660 780 10 0 187 -721 344 62 -20 1386 1506 10 699 0 -722 371 315 -10 4663 4783 10 671 0 -723 200 78 -20 0 7095 10 762 0 -724 413 391 -20 868 988 10 315 0 -725 415 216 10 705 825 10 0 776 -726 397 57 -15 5904 6024 10 546 0 -727 293 228 -10 0 7226 10 883 0 -728 0 297 -24 0 7020 10 748 0 -729 435 20 -18 0 6979 10 403 0 -730 195 111 -23 0 7125 10 125 0 -731 417 218 -20 1112 1232 10 603 0 -732 340 54 -17 951 1071 10 929 0 -733 132 57 20 978 1098 10 0 204 -734 210 379 -20 0 7139 10 311 0 -735 228 260 -20 0 7250 10 818 0 -736 399 104 -30 0 7066 10 849 0 -737 95 277 -10 1098 1218 10 660 0 -738 360 284 19 0 7159 10 0 494 -739 53 466 -10 1340 1460 10 157 0 -740 112 465 -10 1197 1317 10 628 0 -741 313 391 5 598 718 10 0 67 -742 93 235 -10 0 7117 10 126 0 -743 125 32 -13 0 7023 10 151 0 -744 215 282 21 0 7227 10 0 130 -745 224 320 36 0 7200 10 0 330 -746 134 428 20 1232 1352 10 0 340 -747 26 490 10 0 6946 10 0 358 -748 44 115 24 925 1045 10 0 728 -749 438 127 -10 3764 3884 10 300 0 -750 239 15 2 2415 2535 10 0 209 -751 342 54 -20 0 7058 10 797 0 -752 109 463 -20 1334 1454 10 197 0 -753 199 187 -20 507 627 10 124 0 -754 201 188 10 0 7195 10 0 497 -755 399 301 -30 777 897 10 960 0 -756 484 171 -20 0 7028 10 135 0 -757 272 234 26 6361 6481 0 0 1010 -758 380 350 -23 0 7110 10 98 0 -759 140 108 -23 0 7095 10 578 0 -760 228 199 10 537 657 10 0 565 -761 245 461 -10 0 7063 10 148 0 -762 305 107 20 901 1021 10 0 723 -763 231 195 20 437 557 10 0 474 -764 450 265 -12 0 7074 10 718 0 -765 273 149 14 0 7171 10 0 21 -766 12 358 7 4897 5017 10 0 601 -767 315 121 -25 0 7130 10 584 0 -768 420 213 -14 814 934 10 38 0 -769 331 134 -20 0 7133 10 810 0 -770 84 377 -15 3705 3825 10 880 0 -771 320 280 -10 0 7198 10 188 0 -772 89 185 -20 2399 2519 10 627 0 -773 472 481 20 1306 1426 10 0 443 -774 422 420 -10 0 7033 10 146 0 -775 475 267 -30 0 7049 10 351 0 -776 470 125 -10 952 1072 10 725 0 -777 435 268 10 1247 1367 10 0 222 -778 409 155 -30 0 7089 10 824 0 -779 243 248 30 96 216 10 0 799 -780 488 96 22 0 6991 10 0 611 -781 341 72 -10 3219 3339 10 118 0 -782 58 449 -8 1451 1571 10 551 0 -783 16 460 20 0 6960 10 0 833 -784 480 136 22 0 7018 10 0 790 -785 162 388 -10 4504 4624 10 924 0 -786 47 208 -25 0 7067 10 907 0 -787 324 127 -6 514 634 10 406 0 -788 87 96 30 0 7050 10 0 270 -789 140 137 -10 2279 2399 10 706 0 -790 314 205 -22 6107 6227 10 784 0 -791 96 346 26 741 861 10 0 220 -792 321 280 -20 0 7197 10 123 0 -793 245 251 10 5 125 10 0 838 -794 436 295 11 0 7083 10 0 487 -795 274 261 20 0 7248 10 0 393 -796 271 128 -30 1382 1502 10 201 0 -797 275 45 20 0 7068 10 0 751 -798 422 409 10 0 7040 10 0 95 -799 146 188 -30 0 7153 10 779 0 -800 93 96 -18 0 7055 10 305 0 -801 409 255 -20 0 7115 10 472 0 -802 449 428 25 0 7008 10 0 597 -803 90 285 40 1105 1225 10 0 467 -804 415 95 -10 0 7048 10 523 0 -805 88 287 30 0 7108 10 0 899 -806 379 196 20 776 896 10 0 600 -807 368 452 -19 2680 2800 10 577 0 -808 202 186 20 604 724 10 0 887 -809 435 11 -20 1189 1309 10 861 0 -810 269 46 20 1074 1194 10 0 769 -811 7 292 10 0 7028 10 0 372 -812 44 496 32 1607 1727 10 0 858 -813 478 99 10 1245 1365 10 0 938 -814 391 99 -31 0 7068 10 159 0 -815 132 477 25 1309 1429 10 0 185 -816 24 65 10 1461 1581 10 0 394 -817 130 247 -10 0 7154 10 230 0 -818 133 273 20 0 7155 10 0 735 -819 347 62 -30 0 7063 10 981 0 -820 404 140 -11 5035 5155 10 429 0 -821 416 420 -20 0 7037 10 480 0 -822 67 335 -20 967 1087 10 976 0 -823 92 270 -10 0 7115 10 859 0 -824 411 95 30 0 7051 10 0 778 -825 132 479 -10 0 7017 10 606 0 -826 366 334 -6 0 7131 10 498 0 -827 125 39 -22 921 1041 10 199 0 -828 419 422 -40 1105 1225 10 26 0 -829 460 2 -20 1412 1532 10 856 0 -830 67 334 20 923 1043 10 0 97 -831 448 414 -20 0 7017 10 105 0 -832 46 163 8 0 7053 10 0 438 -833 77 465 -20 1044 1164 10 783 0 -834 284 319 -30 0 7198 10 93 0 -835 102 422 -17 0 7048 10 147 0 -836 240 34 -20 6238 6358 10 903 0 -837 141 428 20 775 895 10 0 25 -838 204 269 -10 0 7225 10 793 0 -839 144 439 30 1085 1205 10 0 359 -840 470 417 -31 2947 3067 10 468 0 -841 404 103 20 0 7062 10 0 478 -842 5 281 16 0 7028 10 0 306 -843 487 320 -10 0 7027 10 184 0 -844 398 23 10 0 7004 10 0 291 -845 90 296 20 606 726 10 0 980 -846 386 13 -33 0 7001 10 85 0 -847 115 465 10 1049 1169 10 0 585 -848 473 475 10 0 6958 10 0 392 -849 275 42 30 0 7065 10 0 736 -850 286 356 30 388 508 10 0 271 -851 15 69 -31 1167 1287 10 462 0 -852 267 44 -28 0 7068 10 54 0 -853 243 399 -18 939 1059 10 281 0 -854 390 249 -20 0 7134 10 576 0 -855 210 391 30 566 686 10 0 448 -856 433 15 20 1131 1251 10 0 829 -857 24 259 19 0 7048 10 0 158 -858 12 463 -32 0 6955 10 812 0 -859 237 213 10 588 708 10 0 823 -860 182 480 -10 1459 1579 10 45 0 -861 409 88 20 0 7048 10 0 809 -862 244 368 -20 0 7156 10 106 0 -863 381 328 12 0 7122 10 0 685 -864 213 185 -10 0 7200 10 169 0 -865 482 141 -20 0 7018 10 377 0 -866 319 124 20 0 7131 10 0 235 -867 141 431 -6 872 992 10 258 0 -868 198 264 -10 0 7221 10 18 0 -869 69 334 -20 824 944 10 991 0 -870 299 98 30 0 7115 10 0 232 -871 240 250 10 150 270 10 0 421 -872 199 203 -22 5829 5949 10 86 0 -873 459 17 20 0 6961 10 0 701 -874 423 217 20 967 1087 10 0 245 -875 477 179 20 891 1011 10 0 650 -876 213 397 10 869 989 10 0 353 -877 405 187 34 5002 5122 10 0 954 -878 269 402 20 811 931 10 0 55 -879 53 204 -10 4220 4340 10 575 0 -880 13 394 15 1490 1610 10 0 770 -881 15 68 -40 1211 1331 10 885 0 -882 56 268 28 4256 4376 10 0 511 -883 360 184 10 0 7146 10 0 727 -884 307 102 -10 0 7116 10 670 0 -885 130 57 40 930 1050 10 0 881 -886 250 328 -21 995 1115 10 451 0 -887 91 231 -20 801 921 10 808 0 -888 479 176 20 946 1066 10 0 716 -889 420 224 10 1716 1836 10 0 678 -890 461 182 13 0 7053 10 0 136 -891 418 218 -10 0 7103 10 958 0 -892 419 418 10 0 7036 10 0 680 -893 336 493 20 0 7017 10 0 149 -894 389 300 10 615 735 10 0 544 -895 92 76 -21 0 7039 10 970 0 -896 476 102 -5 1345 1465 10 711 0 -897 418 399 20 1751 1871 10 0 250 -898 109 56 27 0 7035 10 0 411 -899 13 465 -30 3094 3214 10 805 0 -900 92 232 -20 0 7115 10 944 0 -901 394 47 -20 0 7026 10 364 0 -902 16 287 -24 1083 1203 10 694 0 -903 399 102 20 1068 1188 10 0 836 -904 143 158 12 0 7133 10 0 43 -905 18 484 -30 1300 1420 10 593 0 -906 250 411 30 0 7113 10 0 549 -907 19 273 25 0 7042 10 0 786 -908 365 28 9 1073 1193 10 0 380 -909 387 297 -15 561 681 10 989 0 -910 433 447 -2 0 7006 10 524 0 -911 214 274 24 0 7231 10 0 996 -912 489 338 -20 5589 5709 10 211 0 -913 130 494 -20 0 7003 10 101 0 -914 23 67 -8 1557 1677 10 92 0 -915 374 489 20 1017 1137 10 0 128 -916 126 30 -19 0 7022 10 94 0 -917 112 467 10 0 7017 10 0 697 -918 489 274 -25 2135 2255 10 275 0 -919 61 214 -17 1367 1487 10 27 0 -920 166 440 -1 0 7067 10 182 0 -921 56 75 -20 0 7013 10 137 0 -922 210 276 5 0 7227 10 0 417 -923 80 286 -11 0 7101 10 221 0 -924 17 459 10 1688 1808 10 0 785 -925 66 448 -30 1021 1141 10 427 0 -926 351 128 -30 5013 5133 10 612 0 -927 352 176 20 0 7148 10 0 667 -928 490 286 29 0 7032 10 0 956 -929 247 219 17 65 185 10 0 732 -930 86 268 10 0 7110 10 0 6 -931 398 329 17 611 731 10 0 144 -932 272 402 10 638 758 10 0 107 -933 317 123 20 761 881 10 0 371 -934 408 318 15 0 7102 10 0 940 -935 66 31 -32 4194 4314 10 687 0 -936 425 448 -18 3178 3298 10 1 0 -937 35 304 30 870 990 10 0 176 -938 471 94 -10 0 7004 10 813 0 -939 470 473 10 0 6961 10 0 948 -940 224 56 -15 0 7079 10 934 0 -941 343 47 20 0 7051 10 0 16 -942 52 18 -2 3428 3548 10 174 0 -943 16 68 20 0 6978 10 0 266 -944 195 185 20 449 569 10 0 900 -945 92 236 -30 0 7116 10 961 0 -946 76 462 -30 3824 3944 10 414 0 -947 124 56 -35 865 985 10 508 0 -948 481 454 -10 1282 1402 10 939 0 -949 477 483 20 1463 1583 10 0 224 -950 481 124 10 1134 1254 10 0 219 -951 389 156 -10 0 7107 10 573 0 -952 384 16 -20 0 7005 10 273 0 -953 492 34 5 3242 3362 10 0 207 -954 371 200 -34 0 7144 10 877 0 -955 153 235 10 333 453 10 0 77 -956 428 202 -29 0 7090 10 928 0 -957 257 391 22 0 7133 10 0 354 -958 421 218 10 0 7101 10 0 891 -959 206 186 10 0 7197 10 0 500 -960 393 301 30 713 833 10 0 755 -961 204 187 30 0 7196 10 0 945 -962 468 475 10 0 6961 10 0 290 -963 477 122 -10 1320 1440 10 345 0 -964 100 66 -15 5599 5719 10 241 0 -965 489 27 -3 0 6948 10 454 0 -966 12 451 20 0 6963 10 0 703 -967 197 270 -12 0 7218 10 163 0 -968 311 422 -35 0 7092 10 439 0 -969 489 17 -20 0 6941 10 231 0 -970 13 214 21 0 7035 10 0 895 -971 440 247 -20 0 7084 10 11 0 -972 28 467 -10 5370 5490 10 355 0 -973 388 325 10 0 7117 10 0 537 -974 270 401 -20 0 7122 10 56 0 -975 5 445 -27 0 6961 10 120 0 -976 198 271 20 337 457 10 0 822 -977 480 131 5 2750 2870 10 0 35 -978 437 98 -11 4455 4575 10 131 0 -979 131 246 17 0 7155 10 0 139 -980 49 437 -20 1710 1830 10 845 0 -981 270 49 30 0 7073 10 0 819 -982 337 41 8 0 7048 10 0 287 -983 318 280 -21 0 7200 10 677 0 -984 154 392 -10 0 7103 10 624 0 -985 493 111 26 0 6995 10 0 331 -986 399 450 -5 0 7025 10 442 0 -987 67 452 -8 1078 1198 10 111 0 -988 34 239 -16 876 996 10 47 0 -989 343 276 15 0 7178 10 0 909 -990 393 12 10 0 6997 10 0 121 -991 236 247 20 0 7260 10 0 869 -992 340 291 -9 0 7176 10 338 0 -993 3 292 -2 1022 1142 10 145 0 -994 209 68 -18 6272 6392 10 435 0 -995 18 225 8 0 7041 10 0 382 -996 147 435 -24 0 7063 10 911 0 -997 335 99 -8 4874 4994 10 698 0 -998 485 24 20 1285 1405 0 0 1002 -999 470 475 30 0 6960 10 0 658 -1000 341 58 10 895 1015 10 0 96 -1001 246 255 -10 0 7268 10 59 0 -1002 485 24 -20 1285 1405 10 998 0 -1003 307 249 -10 0 7217 10 269 0 -1004 196 489 -23 4121 4241 10 622 0 -1005 364 71 -5 0 7062 10 322 0 -1006 75 118 -21 1636 1756 10 254 0 -1007 241 180 -13 0 7204 10 317 0 -1008 346 354 -8 3270 3390 10 202 0 -1009 253 50 -27 903 1023 10 441 0 -1010 272 234 -26 6361 6481 10 757 0 -1011 195 464 -20 6165 6285 10 113 0 -1012 303 186 -10 5417 5537 10 580 0 -1013 33 278 -18 5949 6069 10 433 0 -1014 243 408 -15 5735 5855 10 78 0 diff --git a/jsprit-instances/instances/lilim/1000/LRC2104.txt b/jsprit-instances/instances/lilim/1000/LRC2104.txt deleted file mode 100644 index 6746abcb1..000000000 --- a/jsprit-instances/instances/lilim/1000/LRC2104.txt +++ /dev/null @@ -1,1014 +0,0 @@ -250 1000 1 -0 250 250 0 0 7284 0 0 0 -1 440 436 18 0 7009 10 0 431 -2 214 394 10 0 7126 10 0 257 -3 476 483 10 0 6950 10 0 262 -4 352 487 -10 0 7016 10 161 0 -5 230 197 40 0 7218 10 0 172 -6 175 239 -17 0 7199 10 979 0 -7 133 202 -12 0 7148 10 339 0 -8 328 458 -20 0 7052 10 828 0 -9 25 499 -10 1780 1900 10 853 0 -10 226 423 15 788 908 10 0 389 -11 313 282 -30 0 7204 10 436 0 -12 60 454 -20 0 6996 10 465 0 -13 239 486 3 0 7038 10 0 968 -14 102 264 -26 535 655 10 244 0 -15 408 452 10 0 7018 10 0 651 -16 451 62 -20 0 6999 10 121 0 -17 203 390 -12 0 7127 10 734 0 -18 92 233 10 0 7116 10 0 286 -19 7 300 30 1379 1499 10 0 937 -20 409 90 -10 1033 1153 10 660 0 -21 307 108 10 950 1070 10 0 567 -22 347 54 -6 1180 1300 10 643 0 -23 406 87 10 1252 1372 10 0 405 -24 371 332 -16 0 7128 10 678 0 -25 116 466 20 1004 1124 10 0 975 -26 441 265 40 0 7083 10 0 188 -27 130 140 17 0 7112 10 0 508 -28 80 117 24 0 7059 10 0 565 -29 421 387 -28 0 7055 10 482 0 -30 83 300 26 0 7100 10 0 696 -31 136 52 -23 0 7046 10 42 0 -32 18 462 20 0 6960 10 0 168 -33 390 120 -20 0 7083 10 517 0 -34 188 119 44 3899 4019 0 0 1010 -35 467 114 -20 0 7018 10 576 0 -36 440 292 -18 0 7080 10 95 0 -37 268 400 20 0 7123 10 0 107 -38 391 202 14 0 7126 10 0 716 -39 377 432 -9 3326 3446 10 936 0 -40 80 290 -20 0 7100 10 116 0 -41 439 15 20 0 6973 10 0 708 -42 307 52 23 0 7068 10 0 31 -43 111 192 11 0 7124 10 0 803 -44 131 56 10 0 7047 10 0 558 -45 88 286 -10 0 7109 10 230 0 -46 69 414 -8 0 7030 10 111 0 -47 41 232 16 821 941 10 0 127 -48 323 77 36 0 7087 10 0 749 -49 340 416 36 0 7086 10 0 283 -50 86 199 -20 0 7103 10 733 0 -51 314 124 20 0 7133 10 0 400 -52 375 191 -20 0 7136 10 386 0 -53 226 175 -10 0 7196 10 374 0 -54 242 106 -27 0 7130 10 994 0 -55 417 417 -25 1328 1448 10 179 0 -56 419 459 20 1265 1385 10 0 370 -57 389 11 -20 0 6998 10 474 0 -58 450 416 25 0 7015 10 0 774 -59 246 255 10 0 7268 10 0 609 -60 71 333 10 0 7077 10 0 993 -61 105 474 27 1883 2003 10 0 668 -62 20 489 10 0 6943 10 0 434 -63 388 331 -30 580 700 10 402 0 -64 92 259 -19 0 7116 10 536 0 -65 200 261 10 0 7223 10 0 293 -66 400 288 -21 0 7120 10 854 0 -67 299 285 3 0 7214 10 0 98 -68 378 199 10 0 7137 10 0 977 -69 325 147 -20 0 7147 10 591 0 -70 421 386 -31 0 7056 10 918 0 -71 404 447 20 940 1060 10 0 72 -72 412 478 -20 0 6995 10 71 0 -73 26 67 -10 5267 5387 10 618 0 -74 358 183 20 0 7147 10 0 222 -75 30 302 10 1066 1186 10 0 817 -76 176 470 14 0 7042 10 0 295 -77 96 270 20 0 7119 10 0 160 -78 243 408 -7 5735 5855 10 475 0 -79 60 29 32 5451 5571 10 0 864 -80 34 169 11 1938 2058 10 0 947 -81 407 280 -17 834 954 10 931 0 -82 277 403 10 0 7119 10 0 271 -83 498 456 27 0 6952 10 0 802 -84 384 491 -5 1391 1511 10 741 0 -85 355 174 33 0 7145 10 0 757 -86 97 288 -20 5136 5256 10 106 0 -87 316 284 -10 0 7200 10 354 0 -88 334 403 26 0 7100 10 0 949 -89 415 223 -23 0 7107 10 173 0 -90 230 320 8 0 7202 0 0 1001 -91 432 199 7 0 7085 10 0 361 -92 92 18 -14 0 6994 10 394 0 -93 273 300 -10 0 7219 10 889 0 -94 269 112 19 0 7135 0 0 1005 -95 429 389 18 0 7048 10 0 36 -96 371 71 21 1147 1267 10 0 721 -97 5 297 10 0 7025 10 0 513 -98 414 378 -3 0 7066 10 67 0 -99 38 15 -20 4364 4484 10 212 0 -100 2 295 -10 0 7022 10 461 0 -101 237 254 20 333 453 10 0 610 -102 54 445 10 0 6998 10 0 924 -103 382 110 -10 0 7082 10 552 0 -104 438 488 -14 0 6971 10 948 0 -105 395 331 -10 0 7108 10 352 0 -106 230 487 20 0 7037 10 0 86 -107 249 407 -20 695 815 10 37 0 -108 488 26 -20 0 6948 10 829 0 -109 151 81 28 0 7079 10 0 759 -110 483 14 10 0 6943 10 0 122 -111 0 422 8 0 6971 10 0 46 -112 429 67 -10 0 7019 10 1000 0 -113 195 464 -11 0 7054 10 825 0 -114 356 256 19 0 7168 10 0 284 -115 264 180 33 0 7203 10 0 142 -116 94 235 20 0 7118 10 0 40 -117 474 96 -30 0 7003 10 365 0 -118 268 52 -15 0 7076 10 730 0 -119 44 440 24 0 6994 10 0 698 -120 7 382 -10 0 6998 10 309 0 -121 459 53 20 0 6987 10 0 16 -122 491 25 -10 0 6945 10 110 0 -123 439 243 -20 1254 1374 10 375 0 -124 210 185 -3 0 7198 10 555 0 -125 150 68 -20 0 7067 10 613 0 -126 201 270 -10 0 7222 10 625 0 -127 0 188 -16 0 7017 10 47 0 -128 103 464 -10 0 7015 10 917 0 -129 325 56 13 0 7067 10 0 336 -130 44 344 -16 0 7048 10 807 0 -131 418 75 -5 1792 1912 10 953 0 -132 472 57 17 0 6980 10 0 965 -133 460 328 13 876 996 10 0 164 -134 89 270 -10 0 7112 10 203 0 -135 374 190 20 0 7137 10 0 235 -136 463 253 -27 4188 4308 10 493 0 -137 97 93 -16 0 7055 10 372 0 -138 163 472 9 0 7036 10 0 182 -139 29 336 -30 0 7037 10 867 0 -140 84 453 -31 4892 5012 10 899 0 -141 294 421 -30 6302 6422 10 240 0 -142 343 62 -33 0 7065 10 115 0 -143 371 193 20 0 7141 10 0 950 -144 142 372 -24 0 7112 10 633 0 -145 66 88 -20 0 7029 10 525 0 -146 395 332 -20 0 7108 10 927 0 -147 93 413 -10 0 7048 10 704 0 -148 267 394 -19 1037 1157 10 256 0 -149 249 258 30 0 7266 10 0 311 -150 472 129 10 0 7022 10 0 903 -151 87 3 -30 5732 5852 10 414 0 -152 62 326 -20 0 7072 10 381 0 -153 212 186 -20 0 7200 10 343 0 -154 241 402 11 0 7122 10 0 327 -155 439 266 10 0 7085 10 0 629 -156 79 80 -20 5528 5648 10 204 0 -157 62 453 10 1179 1299 10 0 664 -158 188 151 -18 0 7158 10 333 0 -159 386 154 -10 0 7108 10 175 0 -160 38 301 -20 0 7056 10 77 0 -161 192 265 10 497 617 10 0 4 -162 371 192 30 519 639 10 0 956 -163 64 294 -10 0 7083 10 601 0 -164 381 494 -13 0 6998 10 133 0 -165 437 12 -17 1318 1438 10 571 0 -166 186 135 -20 2871 2991 10 707 0 -167 459 10 10 0 6956 10 0 776 -168 175 422 -20 5786 5906 10 32 0 -169 274 48 -20 0 7071 10 797 0 -170 488 173 20 0 7024 10 0 594 -171 398 97 -20 836 956 10 514 0 -172 385 17 -40 3235 3355 10 5 0 -173 180 283 23 2975 3095 10 0 89 -174 71 12 2 1172 1292 10 0 743 -175 343 49 10 0 7053 10 0 159 -176 248 251 20 0 7272 10 0 799 -177 7 194 -29 0 7025 10 505 0 -178 322 290 23 0 7192 10 0 494 -179 410 399 25 935 1055 10 0 55 -180 398 103 30 0 7066 10 0 502 -181 385 285 -10 0 7135 10 532 0 -182 179 497 -9 0 7017 10 138 0 -183 464 13 20 1539 1659 10 0 969 -184 492 335 -37 0 7018 10 672 0 -185 27 464 -20 5164 5284 10 440 0 -186 231 29 14 0 7053 10 0 209 -187 157 38 3 0 7043 10 0 652 -188 439 268 -40 1191 1311 10 26 0 -189 149 214 -18 0 7167 10 590 0 -190 187 73 18 0 7087 10 0 450 -191 429 169 -24 3611 3731 10 570 0 -192 350 199 21 0 7162 10 0 674 -193 60 231 -12 0 7084 10 902 0 -194 448 404 15 0 7024 10 0 213 -195 481 20 20 0 6949 10 0 456 -196 436 25 -12 0 6983 10 646 0 -197 111 459 20 0 7023 10 0 946 -198 389 17 -30 1463 1583 10 445 0 -199 148 208 -23 0 7164 10 578 0 -200 475 477 20 0 6955 10 0 460 -201 390 325 -30 0 7116 10 537 0 -202 346 354 -10 3270 3390 10 954 0 -203 91 266 10 0 7115 10 0 134 -204 17 65 20 0 6977 10 0 156 -205 391 112 24 0 7077 10 0 321 -206 224 203 -36 0 7221 10 368 0 -207 426 231 -20 0 7097 10 416 0 -208 260 472 -10 0 7052 10 492 0 -209 265 0 -14 3584 3704 10 186 0 -210 391 293 20 0 7127 10 0 516 -211 411 421 -20 0 7040 10 773 0 -212 132 30 20 0 7025 10 0 99 -213 475 480 -15 0 6953 10 194 0 -214 286 244 31 0 7238 10 0 303 -215 436 237 20 0 7088 0 0 1006 -216 402 284 30 0 7119 10 0 556 -217 287 397 -20 0 7123 10 974 0 -218 272 420 -10 5543 5663 10 289 0 -219 477 120 10 0 7013 10 0 670 -220 145 434 20 0 7063 10 0 509 -221 33 286 11 0 7055 10 0 408 -222 370 262 -20 4398 4518 10 74 0 -223 393 20 -20 0 7004 10 806 0 -224 330 308 24 0 7176 10 0 764 -225 246 398 40 0 7126 10 0 906 -226 482 184 -10 0 7033 10 602 0 -227 451 305 13 0 7066 10 0 250 -228 226 316 21 221 341 10 0 581 -229 110 459 -20 0 7023 10 679 0 -230 244 250 10 0 7268 10 0 45 -231 458 16 -20 1192 1312 10 446 0 -232 390 34 7 4241 4361 10 0 236 -233 423 214 20 867 987 10 0 648 -234 219 215 32 0 7228 10 0 744 -235 326 118 -20 0 7122 10 135 0 -236 365 74 -7 0 7064 10 232 0 -237 331 356 13 2847 2967 10 0 398 -238 210 398 10 817 937 10 0 586 -239 403 93 -20 0 7055 10 426 0 -240 248 404 30 0 7120 10 0 141 -241 65 62 15 0 7011 10 0 305 -242 460 13 -30 0 6958 10 616 0 -243 0 293 -30 0 7021 10 782 0 -244 211 248 26 96 216 10 0 14 -245 484 174 10 1058 1178 10 0 331 -246 175 352 12 0 7148 10 0 255 -247 455 168 21 0 7054 10 0 520 -248 224 191 -24 0 7210 10 886 0 -249 439 156 -30 0 7063 10 676 0 -250 434 359 -13 0 7061 10 227 0 -251 118 314 26 0 7128 10 0 847 -252 234 246 10 0 7258 10 0 420 -253 406 450 20 1037 1157 10 0 582 -254 75 118 21 1636 1756 10 0 748 -255 115 395 -12 0 7076 10 246 0 -256 329 456 19 996 1116 10 0 148 -257 218 403 -10 0 7118 10 2 0 -258 149 341 6 0 7139 10 0 383 -259 253 74 -2 0 7098 10 750 0 -260 436 241 20 1309 1429 10 0 388 -261 238 203 10 375 495 10 0 413 -262 405 455 -10 0 7017 10 3 0 -263 485 27 10 0 6951 10 0 873 -264 323 118 20 0 7124 10 0 866 -265 330 371 -25 0 7129 10 712 0 -266 25 65 -16 1505 1625 10 988 0 -267 406 96 20 0 7055 10 0 322 -268 49 451 -20 0 6990 10 583 0 -269 307 249 -30 0 7217 10 360 0 -270 178 135 -20 0 7139 10 868 0 -271 299 353 -10 0 7160 10 82 0 -272 236 213 20 0 7235 10 0 706 -273 355 177 20 0 7147 10 0 531 -274 394 23 20 0 7006 10 0 901 -275 306 235 25 172 292 10 0 843 -276 90 477 18 0 6997 10 0 280 -277 379 486 -10 0 7006 10 892 0 -278 435 16 -40 1470 1590 10 809 0 -279 8 497 40 0 6929 10 0 397 -280 150 484 -18 2501 2621 10 276 0 -281 213 399 18 936 1056 10 0 419 -282 391 18 10 0 7003 10 0 620 -283 111 392 -36 0 7076 10 49 0 -284 330 281 -19 5322 5442 10 114 0 -285 344 203 14 0 7169 10 0 665 -286 91 235 -10 0 7115 10 18 0 -287 346 60 -20 0 7062 10 607 0 -288 483 27 -20 0 6952 10 729 0 -289 382 498 10 0 6994 10 0 218 -290 457 492 -20 0 6956 10 630 0 -291 291 213 -18 0 7219 10 529 0 -292 154 374 36 0 7118 10 0 427 -293 225 196 -10 0 7215 10 65 0 -294 94 40 24 0 7013 10 0 410 -295 0 356 -14 4345 4465 10 76 0 -296 297 283 28 0 7217 10 0 693 -297 371 423 10 0 7063 10 0 443 -298 417 217 30 0 7104 10 0 675 -299 500 228 -20 0 7024 10 971 0 -300 412 214 -21 0 7109 10 650 0 -301 442 289 25 0 7079 10 0 549 -302 157 269 -30 0 7180 10 967 0 -303 440 241 -31 0 7084 10 214 0 -304 100 266 20 586 706 10 0 421 -305 111 178 -15 0 7118 10 241 0 -306 91 101 -18 0 7057 10 614 0 -307 25 307 -20 998 1118 10 615 0 -308 135 400 20 0 7085 10 0 503 -309 58 458 10 1291 1411 10 0 120 -310 133 26 -20 0 7022 10 312 0 -311 211 386 -30 0 7133 10 149 0 -312 94 97 20 0 7056 10 0 310 -313 30 155 -10 0 7035 10 635 0 -314 208 184 -10 0 7196 10 959 0 -315 394 333 -30 0 7108 10 960 0 -316 355 180 -30 0 7148 10 787 0 -317 241 180 -28 0 7204 10 836 0 -318 21 485 -20 0 6946 10 783 0 -319 80 251 -26 1214 1334 10 791 0 -320 476 61 36 0 6980 10 0 504 -321 406 94 -24 0 7054 10 205 0 -322 364 71 -20 0 7062 10 267 0 -323 418 221 10 0 7104 10 0 351 -324 274 441 -21 0 7082 10 463 0 -325 304 97 -6 0 7112 10 406 0 -326 297 102 10 0 7119 10 0 636 -327 250 405 -11 0 7119 10 154 0 -328 111 463 20 1286 1406 10 0 585 -329 408 279 20 0 7114 10 0 540 -330 263 418 25 1114 1234 10 0 617 -331 480 119 -10 2514 2634 10 245 0 -332 420 383 -25 0 7059 10 662 0 -333 142 14 18 0 7015 10 0 158 -334 73 328 20 0 7081 10 0 575 -335 50 438 20 0 7000 10 0 496 -336 441 7 -13 0 6965 10 129 0 -337 462 14 -22 1588 1708 10 780 0 -338 360 294 -14 0 7156 10 597 0 -339 58 39 12 0 6989 10 0 7 -340 58 391 -10 3529 3649 10 353 0 -341 410 285 -20 0 7111 10 545 0 -342 96 97 20 0 7057 0 0 1002 -343 21 64 20 1409 1529 10 0 153 -344 238 210 30 0 7233 10 0 720 -345 479 121 -10 0 7012 10 963 0 -346 200 178 20 0 7187 10 0 723 -347 216 341 -20 0 7177 10 858 0 -348 48 437 -5 3215 3335 10 417 0 -349 200 270 -21 0 7221 10 451 0 -350 357 181 -20 598 718 10 605 0 -351 476 174 -10 0 7036 10 323 0 -352 400 286 10 0 7120 10 0 105 -353 351 481 10 0 7022 10 0 340 -354 270 400 10 0 7123 10 0 87 -355 95 234 10 653 773 10 0 805 -356 128 113 22 0 7091 10 0 621 -357 133 455 -10 0 7038 10 747 0 -358 16 463 20 0 6958 10 0 925 -359 59 388 20 2651 2771 10 0 642 -360 376 190 30 0 7135 10 0 269 -361 481 122 -7 0 7010 10 91 0 -362 266 405 -20 868 988 10 448 0 -363 374 232 33 0 7149 10 0 522 -364 398 20 -20 0 7001 10 377 0 -365 481 26 30 0 6953 10 0 117 -366 63 444 20 0 7005 10 0 697 -367 89 290 20 0 7109 10 0 838 -368 246 314 36 0 7210 10 0 206 -369 40 304 -19 0 7058 10 857 0 -370 262 369 -20 0 7155 10 56 0 -371 323 29 7 0 7042 10 0 701 -372 89 65 16 0 7029 10 0 137 -373 144 35 26 0 7035 0 0 1004 -374 200 265 10 0 7222 10 0 53 -375 436 264 20 0 7088 10 0 123 -376 15 457 20 0 6961 10 0 550 -377 397 20 20 0 7002 10 0 364 -378 328 491 -35 2713 2833 10 439 0 -379 399 175 13 0 7108 10 0 579 -380 432 2 20 0 6967 10 0 856 -381 63 336 20 0 7069 10 0 152 -382 6 296 -20 0 7026 10 737 0 -383 146 376 -6 0 7111 10 258 0 -384 295 247 -10 0 7229 10 909 0 -385 235 33 -18 5348 5468 10 715 0 -386 233 204 20 217 337 10 0 52 -387 142 360 -20 6128 6248 10 659 0 -388 177 156 -20 0 7155 10 260 0 -389 315 287 -15 0 7200 10 10 0 -390 452 172 -10 0 7058 10 958 0 -391 263 153 -40 0 7177 10 885 0 -392 493 493 -23 0 6931 10 831 0 -393 320 283 -31 0 7197 10 592 0 -394 64 5 14 0 6967 10 0 92 -395 95 235 10 563 683 10 0 510 -396 203 211 -10 0 7213 10 640 0 -397 16 497 -40 0 6934 10 279 0 -398 348 348 -13 0 7136 10 237 0 -399 485 104 -3 0 6998 10 454 0 -400 330 147 -20 0 7144 10 51 0 -401 443 237 20 754 874 10 0 486 -402 316 286 30 547 667 10 0 63 -403 335 46 -10 0 7053 10 533 0 -404 381 495 -7 1290 1410 10 775 0 -405 364 173 -10 0 7137 10 23 0 -406 267 162 6 0 7185 10 0 325 -407 214 245 -20 0 7238 10 627 0 -408 92 234 -11 0 7116 10 221 0 -409 347 459 25 0 7044 10 0 608 -410 30 7 -24 4754 4874 10 294 0 -411 120 37 -20 0 7025 10 943 0 -412 397 153 -10 0 7098 10 846 0 -413 210 29 -10 0 7050 10 261 0 -414 87 285 30 0 7108 10 0 151 -415 132 32 18 3138 3258 10 0 964 -416 390 294 20 0 7128 10 0 207 -417 67 451 5 0 7003 10 0 348 -418 24 68 -8 0 6984 10 832 0 -419 146 439 -18 0 7059 10 281 0 -420 209 212 -10 0 7219 10 252 0 -421 6 292 -20 0 7027 10 304 0 -422 18 63 10 0 6977 10 0 935 -423 149 98 -10 0 7092 10 816 0 -424 91 268 10 0 7114 10 0 907 -425 103 177 28 0 7110 10 0 449 -426 367 178 20 721 841 10 0 239 -427 225 269 -36 0 7243 10 292 0 -428 443 246 20 0 7081 10 0 560 -429 306 42 11 0 7059 10 0 568 -430 374 306 4 0 7138 10 0 655 -431 413 421 -18 0 7038 10 1 0 -432 470 405 17 0 7005 10 0 468 -433 33 278 18 5949 6069 10 0 900 -434 149 458 -10 4655 4775 10 62 0 -435 257 57 18 0 7081 10 0 699 -436 272 403 30 0 7120 10 0 11 -437 221 291 -32 0 7224 10 789 0 -438 1 101 -8 0 6984 10 995 0 -439 332 459 35 1475 1595 10 0 378 -440 220 392 20 0 7129 10 0 185 -441 253 50 -10 0 7074 10 859 0 -442 250 441 -9 0 7083 10 984 0 -443 471 484 -10 0 6953 10 297 0 -444 480 152 -20 0 7024 10 891 0 -445 404 83 30 0 7047 10 0 198 -446 476 94 20 0 7000 10 0 231 -447 458 213 22 4513 4633 10 0 973 -448 215 395 20 0 7125 10 0 362 -449 85 288 -28 0 7105 10 425 0 -450 179 75 -18 0 7086 10 190 0 -451 228 287 21 0 7231 10 0 349 -452 397 18 -25 1168 1288 10 557 0 -453 238 204 20 0 7227 10 0 528 -454 488 3 3 0 6931 10 0 399 -455 407 88 10 0 7049 0 0 1007 -456 459 14 -20 0 6959 10 195 0 -457 120 17 -32 0 7008 10 687 0 -458 235 316 -12 0 7207 10 920 0 -459 370 382 11 0 7096 10 0 834 -460 405 454 -20 0 7018 10 200 0 -461 17 458 10 0 6962 10 0 100 -462 43 135 -23 0 7038 10 663 0 -463 318 497 21 0 7018 10 0 324 -464 199 268 20 0 7220 10 0 785 -465 111 467 20 0 7017 10 0 12 -466 138 438 20 1149 1269 10 0 815 -467 172 314 9 0 7174 10 0 837 -468 494 468 -17 0 6947 10 432 0 -469 35 303 -16 0 7053 10 842 0 -470 341 59 27 0 7063 10 0 673 -471 423 221 -10 0 7099 10 713 0 -472 395 295 -20 0 7123 10 481 0 -473 413 417 10 0 7041 10 0 724 -474 339 60 20 0 7065 10 0 57 -475 277 428 7 0 7094 10 0 78 -476 176 199 28 0 7185 10 0 478 -477 265 240 9 18 138 10 0 875 -478 365 190 -28 5910 6030 10 476 0 -479 133 53 -4 0 7045 10 526 0 -480 387 488 20 1448 1568 10 0 598 -481 385 295 20 0 7132 10 0 472 -482 491 369 28 0 7006 10 0 29 -483 445 273 20 1031 1151 10 0 584 -484 195 273 22 0 7215 10 0 976 -485 313 493 20 4772 4892 10 0 957 -486 495 227 -20 0 7028 10 401 0 -487 241 403 10 0 7121 10 0 878 -488 30 72 -20 0 6992 10 753 0 -489 21 487 10 0 6945 10 0 624 -490 324 99 10 0 7106 10 0 561 -491 453 318 -5 0 7060 10 711 0 -492 443 272 10 0 7080 10 0 208 -493 447 184 27 0 7067 10 0 136 -494 366 288 -23 0 7152 10 178 0 -495 440 284 -9 0 7081 10 649 0 -496 13 314 -20 0 7029 10 335 0 -497 72 227 -14 0 7095 10 623 0 -498 377 385 -20 3465 3585 10 821 0 -499 477 478 -20 0 6953 10 910 0 -500 204 185 20 0 7195 10 0 852 -501 226 191 -20 372 492 10 763 0 -502 330 138 -30 4438 4558 10 180 0 -503 185 434 -20 0 7079 10 308 0 -504 483 22 -36 0 6949 10 320 0 -505 71 282 29 0 7093 10 0 177 -506 60 5 18 0 6964 10 0 574 -507 189 402 -11 0 7111 10 619 0 -508 134 211 -17 0 7152 10 27 0 -509 146 313 -20 0 7153 10 220 0 -510 21 146 -10 0 7023 10 395 0 -511 37 281 -10 0 7059 10 535 0 -512 416 417 -20 1372 1492 10 915 0 -513 44 311 -10 1630 1750 10 97 0 -514 361 181 20 0 7144 10 0 171 -515 444 242 -18 0 7080 10 541 0 -516 444 271 -20 982 1102 10 210 0 -517 359 179 20 0 7144 10 0 33 -518 388 334 20 0 7113 10 0 542 -519 401 164 13 0 7101 10 0 820 -520 499 316 -21 0 7017 10 247 0 -521 399 106 -30 0 7067 10 824 0 -522 425 215 -33 0 7096 10 363 0 -523 407 98 10 0 7056 10 0 861 -524 406 460 -10 0 7013 10 939 0 -525 88 95 20 0 7050 10 0 145 -526 95 64 4 3064 3184 10 0 479 -527 306 229 10 0 7215 10 0 637 -528 273 55 -20 725 845 10 453 0 -529 384 149 18 0 7107 10 0 291 -530 122 35 10 0 7024 10 0 942 -531 308 199 -20 6033 6153 10 273 0 -532 390 301 10 661 781 10 0 181 -533 300 108 10 542 662 10 0 403 -534 267 400 -36 929 1049 10 745 0 -535 8 300 10 1423 1543 10 0 511 -536 105 181 19 0 7114 10 0 64 -537 398 325 30 0 7109 10 0 201 -538 166 247 1 276 396 10 0 645 -539 140 431 30 0 7063 10 0 835 -540 253 118 -20 2189 2309 10 329 0 -541 359 246 18 0 7165 10 0 515 -542 321 277 -20 0 7199 10 518 0 -543 168 59 6 0 7067 10 0 563 -544 406 285 20 0 7115 10 0 548 -545 391 334 20 724 844 10 0 341 -546 437 19 -10 0 6977 10 844 0 -547 201 278 13 0 7218 10 0 641 -548 435 267 -20 0 7089 10 544 0 -549 245 408 -25 0 7116 10 301 0 -550 16 462 -20 0 6959 10 376 0 -551 107 374 -25 0 7085 10 862 0 -552 477 97 10 1131 1251 10 0 103 -553 346 57 20 0 7059 10 0 726 -554 14 459 -10 0 6959 10 905 0 -555 102 6 3 0 6989 10 0 124 -556 359 287 -30 0 7159 10 216 0 -557 297 131 25 0 7147 10 0 452 -558 282 1 -10 0 7023 10 44 0 -559 21 70 -10 3085 3205 10 881 0 -560 440 244 -20 0 7084 10 428 0 -561 482 104 -10 0 7000 10 490 0 -562 120 261 5 0 7144 10 0 930 -563 125 29 -6 1133 1253 10 543 0 -564 292 32 14 0 7052 10 0 632 -565 262 92 -24 0 7116 10 28 0 -566 68 160 21 0 7071 10 0 742 -567 405 276 -10 0 7117 10 21 0 -568 277 50 -11 0 7073 10 429 0 -569 32 319 -7 0 7046 10 766 0 -570 344 70 24 0 7071 10 0 191 -571 481 84 17 0 6990 10 0 165 -572 21 68 -8 1606 1726 10 879 0 -573 441 244 10 0 7083 10 0 604 -574 57 43 -18 0 6991 10 506 0 -575 1 293 -20 1071 1191 10 334 0 -576 481 96 20 0 6997 10 0 35 -577 471 368 19 0 7024 10 0 718 -578 236 126 23 0 7150 10 0 199 -579 406 99 -13 908 1028 10 379 0 -580 303 186 -10 5417 5537 10 736 0 -581 225 369 -21 426 546 10 228 0 -582 412 453 -20 0 7015 10 253 0 -583 104 349 20 0 7098 10 0 268 -584 173 182 -20 0 7172 10 483 0 -585 111 464 -20 1242 1362 10 328 0 -586 53 440 -10 1292 1412 10 238 0 -587 69 336 -31 0 7074 10 860 0 -588 359 182 -10 0 7146 10 767 0 -589 13 459 -24 0 6959 10 911 0 -590 244 277 18 0 7247 10 0 189 -591 484 177 20 1006 1126 10 0 69 -592 452 206 31 0 7068 10 0 393 -593 22 483 -10 1244 1364 10 740 0 -594 452 110 -20 0 7029 10 170 0 -595 347 192 -21 5953 6073 10 661 0 -596 95 92 20 0 7053 10 0 849 -597 368 311 14 0 7142 10 0 338 -598 479 387 -20 1590 1710 10 480 0 -599 479 169 -10 0 7032 10 692 0 -600 497 266 -10 0 7027 10 690 0 -601 66 336 10 0 7071 10 0 163 -602 376 195 10 724 844 10 0 226 -603 401 281 -30 0 7120 10 612 0 -604 441 177 -10 0 7070 10 573 0 -605 231 203 20 0 7224 10 0 350 -606 21 488 10 0 6944 10 0 739 -607 231 204 20 0 7225 10 0 287 -608 122 422 -25 0 7060 10 409 0 -609 65 453 -10 0 7000 10 59 0 -610 206 261 -20 0 7229 10 101 0 -611 466 149 -10 0 7036 10 731 0 -612 313 119 30 0 7129 10 0 603 -613 90 274 20 717 837 10 0 125 -614 39 162 18 2261 2381 10 0 306 -615 35 306 20 918 1038 10 0 307 -616 437 15 30 0 6974 10 0 242 -617 307 412 -25 1615 1735 10 330 0 -618 79 291 10 835 955 10 0 73 -619 64 437 11 0 7011 10 0 507 -620 376 92 -10 3962 4082 10 282 0 -621 129 27 -22 1190 1310 10 356 0 -622 196 489 -10 0 7029 10 628 0 -623 51 286 14 0 7072 10 0 497 -624 20 488 -10 1489 1609 10 489 0 -625 13 455 10 0 6961 10 0 126 -626 170 347 -10 0 7149 10 955 0 -627 92 230 20 0 7115 10 0 407 -628 117 467 10 0 7020 10 0 622 -629 413 217 -10 0 7108 10 155 0 -630 405 450 20 0 7021 10 0 290 -631 394 322 12 0 7114 10 0 826 -632 125 61 -14 0 7048 10 564 0 -633 238 123 24 3124 3244 10 0 144 -634 11 403 18 0 6991 10 0 913 -635 89 272 10 0 7112 10 0 313 -636 304 102 -10 0 7117 10 326 0 -637 478 121 -10 1275 1395 10 527 0 -638 408 84 10 1137 1257 10 0 997 -639 376 494 30 1079 1199 10 0 719 -640 20 73 10 0 6984 10 0 396 -641 159 299 -13 4062 4182 10 547 0 -642 95 382 -20 0 7071 10 359 0 -643 352 63 6 0 7061 10 0 22 -644 365 274 -20 0 7157 10 685 0 -645 30 301 -1 0 7049 10 538 0 -646 351 5 12 0 7009 10 0 196 -647 197 267 10 0 7219 10 0 735 -648 498 171 -20 0 7014 10 233 0 -649 468 352 9 0 7034 10 0 495 -650 418 251 21 4787 4907 10 0 300 -651 489 437 -10 0 6971 10 15 0 -652 251 63 -3 3950 4070 10 187 0 -653 132 55 -13 1069 1189 10 940 0 -654 281 96 1 0 7117 10 0 916 -655 333 293 -4 0 7181 10 430 0 -656 255 487 19 0 7037 10 0 869 -657 207 400 20 762 882 10 0 839 -658 469 489 -30 0 6950 10 850 0 -659 244 254 20 401 521 10 0 387 -660 233 207 10 0 7228 10 0 20 -661 441 60 21 0 7005 10 0 595 -662 411 379 25 0 7068 10 0 332 -663 178 72 23 0 7082 10 0 462 -664 51 447 -10 0 6994 10 157 0 -665 478 118 -14 1417 1537 10 285 0 -666 141 426 23 0 7067 10 0 710 -667 295 89 23 0 7107 10 0 898 -668 112 433 -27 0 7045 10 61 0 -669 320 211 16 0 7194 10 0 756 -670 400 103 -10 0 7064 10 219 0 -671 408 453 10 0 7017 10 0 897 -672 435 180 37 0 7077 10 0 184 -673 432 66 -27 0 7016 10 470 0 -674 374 116 -21 0 7092 10 192 0 -675 478 102 -30 0 7003 10 298 0 -676 335 57 30 784 904 10 0 249 -677 385 239 -10 0 7139 10 883 0 -678 386 245 16 0 7138 10 0 24 -679 208 396 20 0 7123 10 0 229 -680 380 489 20 1516 1636 10 0 761 -681 380 498 -30 1189 1309 10 702 0 -682 440 7 -20 1255 1375 10 896 0 -683 434 245 -10 0 7090 10 777 0 -684 90 232 -10 0 7113 10 871 0 -685 389 334 20 0 7112 10 0 644 -686 241 205 30 0 7229 0 0 1012 -687 18 24 32 0 6951 10 0 457 -688 57 183 15 0 7070 10 0 772 -689 59 457 -34 0 6993 10 972 0 -690 442 243 10 0 7082 10 0 600 -691 402 281 20 0 7119 10 0 755 -692 445 237 10 0 7079 10 0 599 -693 441 273 -28 0 7082 10 296 0 -694 31 175 24 986 1106 10 0 914 -695 234 202 -10 0 7224 10 760 0 -696 52 303 -26 1765 1885 10 30 0 -697 167 445 -20 0 7063 10 366 0 -698 179 286 -24 0 7195 10 119 0 -699 269 48 -18 0 7072 10 435 0 -700 165 59 27 0 7065 10 0 827 -701 461 8 -7 0 6953 10 371 0 -702 421 415 30 941 1061 10 0 681 -703 59 459 -20 0 6991 10 966 0 -704 24 492 10 0 6943 10 0 147 -705 55 449 -30 0 6996 10 987 0 -706 224 192 -20 280 400 10 272 0 -707 444 269 20 934 1054 10 0 166 -708 491 20 -20 1574 1694 10 41 0 -709 313 126 -20 973 1093 10 762 0 -710 283 438 -23 0 7084 10 666 0 -711 352 241 5 0 7172 10 0 491 -712 398 476 25 0 7004 10 0 265 -713 442 247 10 0 7082 10 0 471 -714 217 207 26 0 7220 10 0 981 -715 233 87 18 1010 1130 10 0 385 -716 479 127 -14 0 7015 10 38 0 -717 6 53 8 0 6961 10 0 872 -718 478 300 -19 0 7041 10 577 0 -719 378 493 -30 0 7000 10 639 0 -720 303 78 -30 0 7095 10 344 0 -721 344 62 -21 1386 1506 10 96 0 -722 371 315 18 0 7137 10 0 738 -723 200 78 -20 0 7095 10 346 0 -724 413 391 -10 0 7059 10 473 0 -725 415 216 -19 705 825 10 727 0 -726 397 57 -20 0 7032 10 553 0 -727 293 228 19 0 7226 10 0 725 -728 0 297 -20 0 7020 10 996 0 -729 435 20 20 0 6979 10 0 288 -730 195 111 15 0 7125 10 0 118 -731 417 218 10 1112 1232 10 0 611 -732 340 54 -14 951 1071 10 765 0 -733 132 57 20 978 1098 10 0 50 -734 210 379 12 0 7139 10 0 17 -735 228 260 -10 0 7250 10 647 0 -736 399 104 10 0 7066 10 0 580 -737 95 277 20 1098 1218 10 0 382 -738 360 284 -18 0 7159 10 722 0 -739 53 466 -10 0 6982 10 606 0 -740 112 465 10 0 7019 10 0 593 -741 313 391 5 0 7120 10 0 84 -742 93 235 -21 0 7117 10 566 0 -743 125 32 -2 0 7023 10 174 0 -744 215 282 -32 0 7227 10 234 0 -745 224 320 36 0 7200 10 0 534 -746 134 428 20 0 7062 10 0 818 -747 26 490 10 0 6946 10 0 357 -748 44 115 -21 0 7028 10 254 0 -749 438 127 -36 0 7050 10 48 0 -750 239 15 2 0 7039 10 0 259 -751 342 54 -40 0 7058 10 884 0 -752 109 463 30 1334 1454 10 0 770 -753 199 187 20 507 627 10 0 488 -754 201 188 -30 0 7195 10 779 0 -755 399 301 -20 0 7117 10 691 0 -756 484 171 -16 0 7028 10 669 0 -757 272 234 -33 0 7247 10 85 0 -758 380 350 15 0 7110 10 0 794 -759 140 108 -28 0 7095 10 109 0 -760 228 199 10 537 657 10 0 695 -761 245 461 -20 0 7063 10 680 0 -762 305 107 20 901 1021 10 0 709 -763 231 195 20 0 7216 10 0 501 -764 450 265 -24 0 7074 10 224 0 -765 273 149 14 0 7171 10 0 732 -766 12 358 7 4897 5017 10 0 569 -767 315 121 10 0 7130 10 0 588 -768 420 213 10 0 7101 10 0 888 -769 331 134 -15 0 7133 10 926 0 -770 84 377 -30 3705 3825 10 752 0 -771 320 280 10 0 7198 10 0 983 -772 89 185 -15 2399 2519 10 688 0 -773 472 481 20 0 6954 10 0 211 -774 422 420 -25 0 7033 10 58 0 -775 475 267 7 0 7049 10 0 404 -776 470 125 -10 952 1072 10 167 0 -777 435 268 10 0 7089 10 0 683 -778 409 155 -20 0 7089 10 952 0 -779 243 248 30 0 7267 10 0 754 -780 488 96 22 0 6991 10 0 337 -781 341 72 9 0 7075 10 0 908 -782 58 449 30 1451 1571 10 0 243 -783 16 460 20 0 6960 10 0 318 -784 480 136 -14 0 7018 10 865 0 -785 162 388 -20 4504 4624 10 464 0 -786 47 208 30 0 7067 10 0 919 -787 324 127 30 0 7131 10 0 316 -788 87 96 -20 0 7050 10 944 0 -789 140 137 32 2279 2399 10 0 437 -790 314 205 -10 0 7196 10 990 0 -791 96 346 26 741 861 10 0 319 -792 321 280 -15 0 7197 10 989 0 -793 245 251 10 0 7269 10 0 823 -794 436 295 -15 0 7083 10 758 0 -795 274 261 -12 0 7248 10 863 0 -796 271 128 12 0 7151 10 0 895 -797 275 45 20 0 7068 10 0 169 -798 422 409 -11 0 7040 10 840 0 -799 146 188 -20 0 7153 10 176 0 -800 93 96 -20 0 7055 10 991 0 -801 409 255 23 0 7115 10 0 877 -802 449 428 -27 0 7008 10 83 0 -803 90 285 -11 0 7111 10 43 0 -804 415 95 15 0 7048 10 0 814 -805 88 287 -10 0 7108 10 355 0 -806 379 196 20 776 896 10 0 223 -807 368 452 16 2680 2800 10 0 130 -808 202 186 -30 604 724 10 961 0 -809 435 11 40 1189 1309 10 0 278 -810 269 46 20 1074 1194 10 0 929 -811 7 292 10 0 7028 10 0 882 -812 44 496 -11 1607 1727 10 833 0 -813 478 99 -26 0 7001 10 985 0 -814 391 99 -15 0 7068 10 804 0 -815 132 477 -20 1309 1429 10 466 0 -816 24 65 10 1461 1581 10 0 423 -817 130 247 -10 0 7154 10 75 0 -818 133 273 -20 0 7155 10 746 0 -819 347 62 10 0 7063 0 0 1011 -820 404 140 -13 0 7085 10 519 0 -821 416 420 20 0 7037 10 0 498 -822 67 335 20 0 7073 10 0 923 -823 92 270 -10 0 7115 10 793 0 -824 411 95 30 0 7051 10 0 521 -825 132 479 11 0 7017 10 0 113 -826 366 334 -12 0 7131 10 631 0 -827 125 39 -27 921 1041 10 700 0 -828 419 422 20 1105 1225 10 0 8 -829 460 2 20 1412 1532 10 0 108 -830 67 334 -20 923 1043 10 845 0 -831 448 414 23 0 7017 10 0 392 -832 46 163 8 0 7053 10 0 418 -833 77 465 11 1044 1164 10 0 812 -834 284 319 -11 0 7198 10 459 0 -835 102 422 -30 0 7048 10 539 0 -836 240 34 28 6238 6358 10 0 317 -837 141 428 -9 775 895 10 467 0 -838 204 269 -20 0 7225 10 367 0 -839 144 439 -20 0 7058 10 657 0 -840 470 417 11 2947 3067 10 0 798 -841 404 103 -16 0 7062 10 978 0 -842 5 281 16 0 7028 10 0 469 -843 487 320 -25 0 7027 10 275 0 -844 398 23 10 0 7004 10 0 546 -845 90 296 20 606 726 10 0 830 -846 386 13 10 0 7001 10 0 412 -847 115 465 -26 0 7021 10 251 0 -848 473 475 10 0 6958 10 0 986 -849 275 42 -20 0 7065 10 596 0 -850 286 356 30 0 7163 10 0 658 -851 15 69 -21 1167 1287 10 970 0 -852 267 44 -20 0 7068 10 500 0 -853 243 399 10 939 1059 10 0 9 -854 390 249 21 0 7134 10 0 66 -855 210 391 30 566 686 10 0 932 -856 433 15 -20 0 6977 10 380 0 -857 24 259 19 0 7048 10 0 369 -858 12 463 20 0 6955 10 0 347 -859 237 213 10 0 7235 10 0 441 -860 182 480 31 1459 1579 10 0 587 -861 409 88 -10 0 7048 10 523 0 -862 244 368 25 0 7156 10 0 551 -863 381 328 12 0 7122 10 0 795 -864 213 185 -32 0 7200 10 79 0 -865 482 141 14 0 7018 10 0 784 -866 319 124 -20 0 7131 10 264 0 -867 141 431 30 0 7063 10 0 139 -868 198 264 20 0 7221 10 0 270 -869 69 334 -19 0 7075 10 656 0 -870 299 98 30 0 7115 10 0 982 -871 240 250 10 150 270 10 0 684 -872 199 203 -8 5829 5949 10 717 0 -873 459 17 -10 0 6961 10 263 0 -874 423 217 20 0 7098 10 0 992 -875 477 179 -9 891 1011 10 477 0 -876 213 397 10 869 989 10 0 880 -877 405 187 -23 5002 5122 10 801 0 -878 269 402 -10 811 931 10 487 0 -879 53 204 8 0 7072 10 0 572 -880 13 394 -10 1490 1610 10 876 0 -881 15 68 10 0 6977 10 0 559 -882 56 268 -10 4256 4376 10 811 0 -883 360 184 10 0 7146 10 0 677 -884 307 102 40 0 7116 10 0 751 -885 130 57 40 0 7047 10 0 391 -886 250 328 24 995 1115 10 0 248 -887 91 231 30 0 7114 10 0 945 -888 479 176 -10 946 1066 10 768 0 -889 420 224 10 1716 1836 10 0 93 -890 461 182 13 0 7053 10 0 928 -891 418 218 20 0 7103 10 0 444 -892 419 418 10 0 7036 10 0 277 -893 336 493 20 0 7017 0 0 1003 -894 389 300 10 0 7127 0 0 1009 -895 92 76 -12 0 7039 10 796 0 -896 476 102 20 0 7004 10 0 682 -897 418 399 -10 0 7050 10 671 0 -898 109 56 -23 0 7035 10 667 0 -899 13 465 31 3094 3214 10 0 140 -900 92 232 -18 0 7115 10 433 0 -901 394 47 -20 0 7026 10 274 0 -902 16 287 12 1083 1203 10 0 193 -903 399 102 -10 0 7064 10 150 0 -904 143 158 12 0 7133 10 0 921 -905 18 484 10 1300 1420 10 0 554 -906 250 411 -40 0 7113 10 225 0 -907 19 273 -10 0 7042 10 424 0 -908 365 28 -9 1073 1193 10 781 0 -909 387 297 10 561 681 10 0 384 -910 433 447 20 0 7006 10 0 499 -911 214 274 24 0 7231 10 0 589 -912 489 338 17 5589 5709 10 0 934 -913 130 494 -18 0 7003 10 634 0 -914 23 67 -24 0 6983 10 694 0 -915 374 489 20 0 7005 10 0 512 -916 126 30 -1 0 7022 10 654 0 -917 112 467 10 0 7017 10 0 128 -918 489 274 31 0 7034 10 0 70 -919 61 214 -30 0 7082 10 786 0 -920 166 440 12 0 7067 10 0 458 -921 56 75 -12 0 7013 10 904 0 -922 210 276 5 0 7227 10 0 980 -923 80 286 -20 0 7101 10 822 0 -924 17 459 -10 1688 1808 10 102 0 -925 66 448 -20 0 7004 10 358 0 -926 351 128 15 0 7116 10 0 769 -927 352 176 20 0 7148 10 0 146 -928 490 286 -13 0 7032 10 890 0 -929 247 219 -20 0 7243 10 810 0 -930 86 268 -5 0 7110 10 562 0 -931 398 329 17 611 731 10 0 81 -932 272 402 -30 638 758 10 855 0 -933 317 123 20 761 881 0 0 1008 -934 408 318 -17 0 7102 10 912 0 -935 66 31 -10 4194 4314 10 422 0 -936 425 448 9 3178 3298 10 0 39 -937 35 304 -30 0 7053 10 19 0 -938 471 94 30 0 7004 10 0 998 -939 470 473 10 0 6961 10 0 524 -940 224 56 13 0 7079 10 0 653 -941 343 47 20 0 7051 10 0 951 -942 52 18 -10 0 6969 10 530 0 -943 16 68 20 0 6978 10 0 411 -944 195 185 20 0 7189 10 0 788 -945 92 236 -30 0 7116 10 887 0 -946 76 462 -20 3824 3944 10 197 0 -947 124 56 -11 0 7043 10 80 0 -948 481 454 14 1282 1402 10 0 104 -949 477 483 -26 1463 1583 10 88 0 -950 481 124 -20 1134 1254 10 143 0 -951 389 156 -20 0 7107 10 941 0 -952 384 16 20 0 7005 10 0 778 -953 492 34 5 0 6950 10 0 131 -954 371 200 10 0 7144 10 0 202 -955 153 235 10 0 7176 10 0 626 -956 428 202 -30 0 7090 10 162 0 -957 257 391 -20 0 7133 10 485 0 -958 421 218 10 0 7101 10 0 390 -959 206 186 10 0 7197 10 0 314 -960 393 301 30 0 7123 10 0 315 -961 204 187 30 0 7196 10 0 808 -962 468 475 10 0 6961 10 0 999 -963 477 122 10 0 7014 10 0 345 -964 100 66 -18 5599 5719 10 415 0 -965 489 27 -17 0 6948 10 132 0 -966 12 451 20 0 6963 10 0 703 -967 197 270 30 0 7218 10 0 302 -968 311 422 -3 0 7092 10 13 0 -969 489 17 -20 0 6941 10 183 0 -970 13 214 21 0 7035 10 0 851 -971 440 247 20 0 7084 10 0 299 -972 28 467 34 0 6964 10 0 689 -973 388 325 -22 0 7117 10 447 0 -974 270 401 20 0 7122 10 0 217 -975 5 445 -20 0 6961 10 25 0 -976 198 271 -22 0 7218 10 484 0 -977 480 131 -10 2750 2870 10 68 0 -978 437 98 16 0 7034 10 0 841 -979 131 246 17 0 7155 10 0 6 -980 49 437 -5 1710 1830 10 922 0 -981 270 49 -26 0 7073 10 714 0 -982 337 41 -30 0 7048 10 870 0 -983 318 280 -10 0 7200 10 771 0 -984 154 392 9 0 7103 10 0 442 -985 493 111 26 0 6995 10 0 813 -986 399 450 -10 0 7025 10 848 0 -987 67 452 30 1078 1198 10 0 705 -988 34 239 16 876 996 10 0 266 -989 343 276 15 0 7178 10 0 792 -990 393 12 10 0 6997 10 0 790 -991 236 247 20 0 7260 10 0 800 -992 340 291 -20 0 7176 10 874 0 -993 3 292 -10 0 7024 10 60 0 -994 209 68 27 6272 6392 10 0 54 -995 18 225 8 0 7041 10 0 438 -996 147 435 20 0 7063 10 0 728 -997 335 99 -10 0 7101 10 638 0 -998 485 24 -30 1285 1405 10 938 0 -999 470 475 -10 0 6960 10 962 0 -1000 341 58 10 0 7062 10 0 112 -1001 230 320 -8 0 7202 10 90 0 -1002 96 97 -20 0 7057 10 342 0 -1003 336 493 -20 0 7017 10 893 0 -1004 144 35 -26 0 7035 10 373 0 -1005 269 112 -19 0 7135 10 94 0 -1006 436 237 -20 0 7088 10 215 0 -1007 407 88 -10 0 7049 10 455 0 -1008 317 123 -20 761 881 10 933 0 -1009 389 300 -10 0 7127 10 894 0 -1010 188 119 -44 3899 4019 10 34 0 -1011 347 62 -10 0 7063 10 819 0 -1012 241 205 -30 0 7229 10 686 0 diff --git a/jsprit-instances/instances/lilim/1000/LRC2105.txt b/jsprit-instances/instances/lilim/1000/LRC2105.txt deleted file mode 100644 index 0f198e726..000000000 --- a/jsprit-instances/instances/lilim/1000/LRC2105.txt +++ /dev/null @@ -1,1010 +0,0 @@ -250 1000 1 -0 250 250 0 0 7284 0 0 0 -1 440 436 -15 3544 3711 10 370 0 -2 214 394 10 852 1113 10 0 49 -3 476 483 -20 1298 1660 10 773 0 -4 352 487 -1 3617 3718 10 265 0 -5 230 197 40 542 551 10 0 753 -6 175 239 23 109 498 10 0 270 -7 133 202 33 1636 2168 10 0 433 -8 328 458 -10 3111 3152 10 601 0 -9 25 499 -20 1665 2014 10 25 0 -10 226 423 -40 627 1069 10 17 0 -11 313 282 20 581 847 10 0 389 -12 60 454 -10 1292 1607 10 230 0 -13 239 486 -12 5778 6199 10 130 0 -14 102 264 10 331 858 10 0 40 -15 408 452 10 918 1379 10 0 468 -16 451 62 5 1059 1320 10 0 616 -17 203 390 40 623 766 10 0 10 -18 92 233 10 777 1134 10 0 97 -19 7 300 30 1340 1539 10 0 614 -20 409 90 20 995 1190 10 0 576 -21 307 108 10 841 1178 10 0 282 -22 347 54 10 1197 1284 10 0 198 -23 406 87 10 1225 1398 10 0 674 -24 371 332 -20 2054 2302 10 691 0 -25 116 466 20 895 1233 10 0 9 -26 441 265 40 694 1004 10 0 603 -27 130 140 17 794 879 10 0 800 -28 80 117 -27 3274 3439 10 898 0 -29 421 387 15 3070 3460 10 0 83 -30 83 300 26 1821 2297 10 0 292 -31 136 52 10 1109 1353 10 0 723 -32 18 462 20 1627 1675 10 0 86 -33 390 120 24 3770 4383 10 0 529 -34 188 119 -6 3916 4002 10 543 0 -35 467 114 -33 1465 1662 10 363 0 -36 440 292 -17 3704 3936 10 931 0 -37 268 400 -24 926 1140 10 886 0 -38 391 202 14 402 790 10 0 768 -39 377 432 20 3344 3428 0 0 1004 -40 80 290 -10 536 1164 10 14 0 -41 439 15 -20 1391 1474 10 446 0 -42 307 52 -10 3556 3927 10 709 0 -43 111 192 -17 4737 4979 10 979 0 -44 131 56 -31 885 1281 10 462 0 -45 88 286 10 1007 1132 10 0 957 -46 69 414 -26 4851 5375 10 251 0 -47 41 232 -10 852 911 10 252 0 -48 323 77 -14 5647 5713 10 186 0 -49 340 416 -10 1196 1492 10 2 0 -50 86 199 23 998 1344 10 0 921 -51 314 124 -40 942 1025 10 884 0 -52 375 191 30 565 889 10 0 517 -53 226 175 -3 6692 6978 10 99 0 -54 242 106 28 5009 5258 10 0 580 -55 417 417 10 1168 1608 10 0 897 -56 419 459 20 1109 1542 10 0 848 -57 389 11 -9 1163 1544 10 908 0 -58 450 416 -10 2240 2494 10 939 0 -59 246 255 10 359 661 10 0 101 -60 71 333 10 606 1065 10 0 642 -61 105 474 -20 1918 1968 10 376 0 -62 20 489 -29 1585 1601 10 668 0 -63 388 331 -20 514 766 10 87 0 -64 92 259 4 1455 1861 10 0 73 -65 200 261 10 467 985 10 0 185 -66 400 288 30 421 817 10 0 973 -67 299 285 3 4840 5311 10 0 296 -68 378 199 10 719 1058 10 0 824 -69 325 147 14 4556 5058 10 0 94 -70 421 386 -14 3168 3547 10 948 0 -71 404 447 -34 949 1051 10 271 0 -72 412 478 -30 3771 4027 10 719 0 -73 26 67 -4 5266 5389 10 64 0 -74 358 183 20 742 1247 10 0 874 -75 30 302 10 1005 1248 10 0 820 -76 176 470 -10 2087 2406 10 925 0 -77 96 270 20 516 901 10 0 366 -78 243 408 -7 5747 5842 10 218 0 -79 60 29 -26 5365 5657 10 632 0 -80 34 169 -30 1896 2099 10 100 0 -81 407 280 10 764 1025 10 0 188 -82 277 403 10 687 830 10 0 436 -83 498 456 -15 5482 5885 10 29 0 -84 384 491 -10 1436 1465 10 549 0 -85 355 174 33 2900 2943 10 0 400 -86 97 288 -20 4927 5466 10 32 0 -87 316 284 20 464 654 10 0 63 -88 334 403 26 589 807 10 0 253 -89 415 223 20 1266 1292 10 0 655 -90 230 320 8 4768 4889 10 0 744 -91 432 199 -10 2414 2814 10 725 0 -92 92 18 8 4381 4733 10 0 151 -93 273 300 30 144 296 10 0 630 -94 269 112 -14 4961 5261 10 69 0 -95 429 389 18 1521 1992 10 0 98 -96 371 71 21 1126 1288 10 0 259 -97 5 297 -10 1075 1695 10 18 0 -98 414 378 -18 1958 2121 10 95 0 -99 38 15 3 4342 4507 10 0 53 -100 2 295 30 1160 1406 10 0 80 -101 237 254 -10 342 444 10 59 0 -102 54 445 10 1192 1392 10 0 461 -103 382 110 -20 4414 4605 10 818 0 -104 438 488 -10 1344 1393 10 582 0 -105 395 331 20 663 1189 10 0 828 -106 230 487 -20 4398 4759 10 334 0 -107 249 407 10 627 884 10 0 277 -108 488 26 30 1734 1848 0 0 1005 -109 151 81 -23 5996 6588 10 410 0 -110 483 14 -20 1355 1671 10 998 0 -111 0 422 -10 3162 3526 10 534 0 -112 429 67 -10 2817 3161 10 552 0 -113 195 464 -10 6109 6341 10 923 0 -114 356 256 19 184 665 10 0 483 -115 264 180 -14 6725 6840 10 765 0 -116 94 235 20 476 858 10 0 319 -117 474 96 -10 981 1194 10 670 0 -118 268 52 -10 1263 1302 10 169 0 -119 44 440 -10 3085 3344 10 876 0 -120 7 382 -10 2940 3344 10 853 0 -121 459 53 -13 4449 4649 10 379 0 -122 491 25 -10 1634 1755 10 326 0 -123 439 243 -20 1088 1540 10 707 0 -124 210 185 20 106 505 10 0 895 -125 150 68 -20 1614 1888 10 525 0 -126 201 270 10 145 359 10 0 463 -127 0 188 -30 3516 4060 10 229 0 -128 103 464 -25 5121 5182 10 696 0 -129 325 56 -23 3175 3316 10 667 0 -130 44 344 12 4295 4461 10 0 13 -131 418 75 -20 1732 1972 10 165 0 -132 472 57 -25 5214 5265 10 275 0 -133 460 328 -20 913 959 10 401 0 -134 89 270 -30 793 955 10 344 0 -135 374 190 -20 589 677 10 273 0 -136 463 253 -10 4066 4430 10 798 0 -137 97 93 20 946 1097 10 0 415 -138 163 472 -40 2615 2733 10 279 0 -139 29 336 22 1237 1535 10 0 168 -140 84 453 -23 4814 5089 10 622 0 -141 294 421 -9 6224 6500 10 936 0 -142 343 62 10 1463 1517 10 0 952 -143 371 193 20 349 722 10 0 321 -144 142 372 18 561 743 10 0 318 -145 66 88 -32 3234 3524 10 687 0 -146 395 332 10 805 959 10 0 431 -147 93 413 17 771 1039 10 0 703 -148 267 394 -10 999 1194 10 487 0 -149 249 258 30 546 588 10 0 467 -150 472 129 -20 914 1227 10 776 0 -151 87 3 -8 5714 5871 10 92 0 -152 62 326 -20 1043 1368 10 607 0 -153 212 186 -10 6884 7008 10 382 0 -154 241 402 -13 3968 4350 10 181 0 -155 439 266 -30 685 916 10 960 0 -156 79 80 -24 5530 5647 10 694 0 -157 62 453 10 1115 1362 10 0 739 -158 188 151 -29 4940 5554 10 759 0 -159 386 154 -30 4258 4669 10 243 0 -160 38 301 20 1055 1429 10 0 919 -161 192 265 10 467 646 10 0 825 -162 371 192 30 421 738 10 0 514 -163 64 294 -20 4280 4650 10 501 0 -164 381 494 10 1227 1561 10 0 392 -165 437 12 20 1202 1554 10 0 131 -166 186 135 24 2647 3214 10 0 396 -167 459 10 -10 1319 1481 10 452 0 -168 175 422 -22 5728 5963 10 139 0 -169 274 48 10 740 1070 10 0 118 -170 488 173 20 1062 1288 10 0 637 -171 398 97 10 791 1000 10 0 579 -172 385 17 40 3287 3304 10 0 940 -173 180 283 -20 2915 3155 10 993 0 -174 71 12 -28 1082 1382 10 476 0 -175 343 49 -10 909 1331 10 732 0 -176 248 251 20 2 46 10 0 628 -177 7 194 -21 3761 3970 10 228 0 -178 322 290 -25 5932 6020 10 802 0 -179 410 399 -20 857 1134 10 518 0 -180 398 103 -20 1052 1296 10 233 0 -181 385 285 13 3394 3670 10 0 154 -182 179 497 -10 5558 5850 10 959 0 -183 464 13 20 1519 1680 10 0 191 -184 492 335 -29 3168 3578 10 928 0 -185 27 464 -10 5092 5357 10 65 0 -186 231 29 14 4832 5098 10 0 48 -187 157 38 -13 4034 4469 10 450 0 -188 439 268 -10 1136 1366 10 81 0 -189 149 214 -20 1779 2197 10 220 0 -190 187 73 -20 915 1541 10 312 0 -191 429 169 -20 3411 3932 10 183 0 -192 350 199 -10 4635 5097 10 963 0 -193 60 231 -24 3887 4441 10 633 0 -194 448 404 15 2239 2673 10 0 651 -195 481 20 -20 1304 1591 10 941 0 -196 436 25 -22 5116 5262 10 780 0 -197 111 459 -30 1237 1753 10 539 0 -198 389 17 -10 1271 1775 10 22 0 -199 148 208 -9 2026 2306 10 437 0 -200 475 477 -10 1512 1845 10 671 0 -201 390 325 30 893 1238 10 0 537 -202 346 354 -20 3153 3507 10 548 0 -203 91 266 10 665 1316 10 0 697 -204 17 65 20 1304 1430 10 0 422 -205 391 112 -31 3790 4333 10 592 0 -206 224 203 20 67 363 10 0 394 -207 426 231 -10 4160 4187 10 533 0 -208 260 472 -12 4118 4289 10 324 0 -209 265 0 -20 3428 3861 10 866 0 -210 391 293 20 891 1035 10 0 567 -211 411 421 20 1179 1461 10 0 577 -212 132 30 20 1111 1615 10 0 789 -213 475 480 -20 1326 1829 10 949 0 -214 286 244 -15 5019 5372 10 926 0 -215 436 237 20 742 749 10 0 692 -216 402 284 30 535 902 10 0 516 -217 287 397 12 2144 2490 0 0 1008 -218 272 420 7 5443 5763 10 0 78 -219 477 120 -30 1223 1634 10 361 0 -220 145 434 20 852 1131 10 0 189 -221 33 286 -10 6203 6284 10 419 0 -222 370 262 15 4413 4503 10 0 284 -223 393 20 -20 1408 1838 10 264 0 -224 330 308 -10 4513 4971 10 771 0 -225 246 398 40 498 686 10 0 256 -226 482 184 14 4448 4527 10 0 726 -227 451 305 13 773 895 10 0 889 -228 226 316 21 112 449 10 0 177 -229 110 459 30 1312 1589 10 0 127 -230 244 250 10 6 436 10 0 12 -231 458 16 -12 1041 1464 10 720 0 -232 390 34 -14 4218 4385 10 594 0 -233 423 214 20 723 1131 10 0 180 -234 219 215 32 122 253 10 0 653 -235 326 118 10 391 912 10 0 322 -236 365 74 -20 3219 3689 10 474 0 -237 331 356 13 2745 3070 10 0 398 -238 210 398 10 690 1064 10 0 585 -239 403 93 -10 1400 1446 10 455 0 -240 248 404 30 319 996 10 0 354 -241 65 62 -15 3741 4190 10 574 0 -242 460 13 20 1226 1468 10 0 299 -243 0 293 30 954 1396 10 0 159 -244 211 248 26 137 175 10 0 980 -245 484 174 -10 923 1313 10 522 0 -246 175 352 -34 6541 6900 10 972 0 -247 455 168 21 3445 3610 10 0 604 -248 224 191 20 244 523 10 0 555 -249 439 156 2 2099 2227 10 0 749 -250 434 359 -4 5493 5765 10 658 0 -251 118 314 26 1300 1520 10 0 46 -252 234 246 10 308 329 10 0 47 -253 406 450 -26 1056 1137 10 88 0 -254 75 118 21 1637 1755 10 0 510 -255 115 395 -20 3254 3387 10 705 0 -256 329 456 -40 843 1270 10 225 0 -257 218 403 15 5277 5397 10 0 368 -258 149 341 -20 1469 1883 10 465 0 -259 253 74 -21 5293 5628 10 96 0 -260 436 241 -10 1213 1524 10 560 0 -261 238 203 -17 366 505 10 929 0 -262 405 455 40 1410 1437 10 0 650 -263 485 27 10 1684 2003 10 0 977 -264 323 118 20 601 806 10 0 223 -265 330 371 1 2182 2406 10 0 4 -266 25 65 10 1491 1639 10 0 488 -267 406 96 20 768 1078 10 0 938 -268 49 451 -11 1173 1187 10 833 0 -269 307 249 -10 5499 5634 10 504 0 -270 178 135 -23 6095 6136 10 6 0 -271 299 353 34 316 596 10 0 71 -272 236 213 20 87 230 10 0 605 -273 355 177 20 471 642 10 0 135 -274 394 23 -20 1486 1865 10 762 0 -275 306 235 25 57 703 10 0 132 -276 90 477 18 852 1370 10 0 858 -277 379 486 -10 2708 2786 10 107 0 -278 435 16 -20 1475 1584 10 841 0 -279 8 497 40 1437 1945 10 0 138 -280 150 484 -30 2350 2772 10 987 0 -281 213 399 18 939 1053 10 0 353 -282 391 18 -10 1387 1755 10 21 0 -283 111 392 -20 4604 4868 10 589 0 -284 330 281 -15 5310 5453 10 222 0 -285 344 203 14 613 846 10 0 561 -286 91 235 10 938 1334 10 0 964 -287 346 60 10 1203 1487 10 0 429 -288 483 27 20 1618 2166 10 0 600 -289 382 498 -10 1154 1440 10 681 0 -290 457 492 -10 2028 2157 10 962 0 -291 291 213 -25 4911 5271 10 997 0 -292 154 374 -26 3703 3912 10 30 0 -293 225 196 10 59 559 10 0 306 -294 94 40 -25 4262 4402 10 935 0 -295 0 356 -10 4154 4656 10 424 0 -296 297 283 -3 5314 5601 10 67 0 -297 371 423 -5 539 1149 10 741 0 -298 417 217 30 553 1075 10 0 570 -299 500 228 -20 3033 3342 10 242 0 -300 412 214 10 454 873 10 0 591 -301 442 289 25 754 893 10 0 351 -302 157 269 -6 6297 6433 10 913 0 -303 440 241 10 1153 1378 10 0 968 -304 100 266 20 505 787 10 0 880 -305 111 178 18 443 810 10 0 827 -306 91 101 -10 1112 1394 10 293 0 -307 25 307 -10 897 1218 10 871 0 -308 135 400 20 1217 1291 10 0 466 -309 58 458 -20 1304 1398 10 449 0 -310 133 26 10 1179 1434 10 0 413 -311 211 386 20 349 783 10 0 867 -312 94 97 20 821 1012 10 0 190 -313 30 155 -12 5008 5355 10 902 0 -314 208 184 20 161 547 10 0 584 -315 394 333 -20 792 881 10 685 0 -316 355 180 -20 422 796 10 927 0 -317 241 180 -27 6567 7109 10 994 0 -318 21 485 -18 1346 1481 10 144 0 -319 80 251 -20 1187 1362 10 116 0 -320 476 61 -20 1779 1931 10 701 0 -321 406 94 -20 848 1095 10 143 0 -322 364 71 -10 5357 5551 10 235 0 -323 418 221 10 1088 1362 10 0 683 -324 274 441 12 2753 2923 10 0 208 -325 304 97 20 612 963 10 0 708 -326 297 102 10 472 866 10 0 122 -327 250 405 20 501 912 10 0 974 -328 111 463 -20 1342 1351 10 448 0 -329 408 279 -20 863 1016 10 375 0 -330 263 418 25 1120 1228 10 0 617 -331 480 119 -20 2433 2715 10 364 0 -332 420 383 -10 3941 4035 10 443 0 -333 142 14 -30 3293 3509 10 457 0 -334 73 328 20 689 859 10 0 106 -335 50 438 -20 1401 1413 10 613 0 -336 441 7 20 1487 1765 10 0 836 -337 462 14 -30 1575 1722 10 676 0 -338 360 294 -25 5437 6025 10 662 0 -339 58 39 -21 4640 4783 10 864 0 -340 58 391 -4 3460 3718 10 348 0 -341 410 285 -20 632 1029 10 544 0 -342 96 97 20 750 987 10 0 730 -343 21 64 -35 1396 1542 10 508 0 -344 238 210 30 435 756 10 0 134 -345 479 121 -10 1212 1369 10 950 0 -346 200 178 -10 293 576 10 706 0 -347 216 341 -10 2471 2880 10 575 0 -348 48 437 4 3242 3307 10 0 340 -349 200 270 20 53 538 10 0 608 -350 357 181 -19 594 722 10 727 0 -351 476 174 -25 1305 1409 10 301 0 -352 400 286 10 389 945 10 0 777 -353 351 481 -18 1187 1507 10 281 0 -354 270 400 -30 530 680 10 240 0 -355 95 234 10 664 762 10 0 684 -356 128 113 22 1246 1775 10 0 652 -357 133 455 25 3111 3472 10 0 509 -358 16 463 -10 1490 1629 10 606 0 -359 59 388 -35 2497 2925 10 439 0 -360 376 190 30 550 812 10 0 502 -361 481 122 30 1175 1309 10 0 219 -362 266 405 20 801 1055 10 0 893 -363 374 232 33 344 658 10 0 35 -364 398 20 20 886 1386 10 0 331 -365 481 26 -30 1133 1441 10 870 0 -366 63 444 -20 1466 1693 10 77 0 -367 89 290 20 590 870 10 0 634 -368 246 314 -15 5665 6018 10 257 0 -369 40 304 -30 4565 4713 10 414 0 -370 262 369 15 440 715 10 0 1 -371 323 29 -12 4456 4763 10 646 0 -372 89 65 16 2798 3084 10 0 526 -373 144 35 26 937 980 10 0 885 -374 200 265 10 458 882 10 0 610 -375 436 264 20 623 869 10 0 329 -376 15 457 20 1172 1536 10 0 61 -377 397 20 20 987 1373 10 0 456 -378 328 491 21 2634 2912 10 0 485 -379 399 175 13 2965 3130 10 0 121 -380 432 2 -10 1812 2041 10 813 0 -381 63 336 -26 972 1278 10 791 0 -382 6 296 10 1167 1512 10 0 153 -383 146 376 8 845 1150 10 0 489 -384 295 247 -6 5090 5457 10 643 0 -385 235 33 30 5333 5483 10 0 406 -386 233 204 20 57 497 10 0 849 -387 142 360 -30 6110 6265 10 869 0 -388 177 156 25 498 959 10 0 904 -389 315 287 -20 627 678 10 11 0 -390 452 172 9 2314 2672 10 0 804 -391 263 153 -10 1588 1831 10 660 0 -392 493 493 -10 3321 3651 10 164 0 -393 320 283 30 370 634 10 0 472 -394 64 5 -20 4350 4801 10 206 0 -395 95 235 -30 500 746 10 779 0 -396 203 211 -24 5131 5441 10 166 0 -397 16 497 -10 1684 1841 10 624 0 -398 348 348 -13 3729 3869 10 237 0 -399 485 104 21 3230 3246 10 0 444 -400 330 147 -33 3292 3616 10 85 0 -401 443 237 20 589 1038 10 0 133 -402 316 286 30 383 831 10 0 821 -403 335 46 -10 5213 5641 10 819 0 -404 381 495 20 1332 1367 10 0 432 -405 364 173 30 756 806 10 0 769 -406 267 162 -30 5688 6026 10 385 0 -407 214 245 8 114 177 10 0 937 -408 92 234 -10 852 1146 10 859 0 -409 347 459 25 1826 2129 10 0 910 -410 30 7 23 4625 5004 10 0 109 -411 120 37 -10 3060 3263 10 621 0 -412 397 153 29 3475 3704 10 0 978 -413 210 29 -10 4253 4273 10 310 0 -414 87 285 30 1018 1030 10 0 369 -415 132 32 -20 3085 3311 10 137 0 -416 390 294 -20 991 1027 10 983 0 -417 67 451 -13 4872 4973 10 434 0 -418 24 68 20 1537 1899 10 0 572 -419 146 439 10 939 1254 10 0 221 -420 209 212 -28 6068 6275 10 942 0 -421 6 292 -10 925 1135 10 728 0 -422 18 63 -20 1375 1457 10 204 0 -423 149 98 -20 4624 4817 10 943 0 -424 91 268 10 845 1232 10 0 295 -425 103 177 -30 2551 2580 10 752 0 -426 367 178 20 592 971 10 0 891 -427 225 269 -36 5068 5219 10 745 0 -428 443 246 20 899 1058 10 0 515 -429 306 42 -10 1911 2022 10 287 0 -430 374 306 -24 4026 4046 10 556 0 -431 413 421 -10 1265 1278 10 146 0 -432 470 405 -20 3553 3973 10 404 0 -433 33 278 -33 5978 6039 10 7 0 -434 149 458 13 4513 4917 10 0 417 -435 257 57 -5 4813 5115 10 901 0 -436 272 403 -10 757 880 10 82 0 -437 221 291 9 50 467 10 0 199 -438 1 101 8 4853 5326 0 0 1006 -439 332 459 35 1424 1645 10 0 359 -440 220 392 20 1011 1172 10 0 619 -441 253 50 -20 939 986 10 797 0 -442 250 441 -20 2981 3184 10 746 0 -443 471 484 10 1389 1450 10 0 332 -444 480 152 -21 4000 4293 10 399 0 -445 404 83 -10 1192 1315 10 883 0 -446 476 94 20 989 1289 10 0 41 -447 458 213 -12 4557 4588 10 718 0 -448 215 395 20 751 1304 10 0 328 -449 85 288 20 521 1055 10 0 309 -450 179 75 13 2859 3181 10 0 187 -451 228 287 21 43 366 10 0 623 -452 397 18 10 1072 1384 10 0 167 -453 238 204 20 437 522 10 0 887 -454 488 3 -20 1620 1705 10 856 0 -455 407 88 10 1108 1607 10 0 239 -456 459 14 -20 1231 1371 10 377 0 -457 120 17 30 1087 1265 10 0 333 -458 235 316 -23 2479 2887 10 666 0 -459 370 382 -6 3380 3810 10 498 0 -460 405 454 -23 5201 5343 10 831 0 -461 17 458 -10 1757 1828 10 102 0 -462 43 135 31 717 1178 10 0 44 -463 318 497 -10 3394 3557 10 126 0 -464 199 268 -22 335 355 10 484 0 -465 111 467 20 1148 1268 10 0 258 -466 138 438 -20 1092 1326 10 308 0 -467 172 314 -30 2081 2403 10 149 0 -468 494 468 -10 1384 1555 10 15 0 -469 35 303 20 692 1079 0 0 1001 -470 341 59 27 3041 3398 10 0 654 -471 423 221 -20 960 1226 10 588 0 -472 395 295 -30 708 1103 10 393 0 -473 413 417 10 1257 1712 10 0 918 -474 339 60 20 541 1266 10 0 236 -475 277 428 7 1860 2182 10 0 761 -476 176 199 28 97 621 10 0 174 -477 265 240 9 18 199 10 0 903 -478 365 190 22 5745 6194 10 0 790 -479 133 53 20 1057 1298 10 0 851 -480 387 488 20 1307 1709 10 0 807 -481 385 295 -15 229 909 10 989 0 -482 491 369 28 2865 3091 10 0 843 -483 445 273 -19 919 1263 10 114 0 -484 195 273 22 221 255 10 0 464 -485 313 493 -21 4800 4865 10 378 0 -486 495 227 -10 1361 1511 10 492 0 -487 241 403 10 754 1127 10 0 148 -488 30 72 -10 1684 1889 10 266 0 -489 21 487 -8 1340 1583 10 383 0 -490 324 99 10 1198 1626 10 0 540 -491 453 318 -20 1309 1800 10 693 0 -492 443 272 10 1067 1213 10 0 486 -493 447 184 27 1551 1965 10 0 673 -494 366 288 -22 2750 2839 10 992 0 -495 440 284 25 3366 3567 10 0 595 -496 13 314 -10 887 1183 10 811 0 -497 72 227 -30 2297 2333 10 839 0 -498 377 385 6 3416 3634 10 0 459 -499 477 478 20 1442 1816 10 0 840 -500 204 185 20 604 823 10 0 823 -501 226 191 20 266 598 10 0 163 -502 330 138 -30 4447 4549 10 360 0 -503 185 434 9 2185 2523 10 0 507 -504 483 22 10 1373 1419 10 0 269 -505 71 282 29 2538 2715 10 0 770 -506 60 5 -10 4161 4309 10 816 0 -507 189 402 -9 2086 2322 10 503 0 -508 134 211 35 508 576 10 0 343 -509 146 313 -25 4758 4925 10 357 0 -510 21 146 -21 1947 2067 10 254 0 -511 37 281 -20 1932 2134 10 737 0 -512 416 417 20 1310 1554 10 0 794 -513 44 311 -30 1423 1956 10 805 0 -514 361 181 -30 789 908 10 162 0 -515 444 242 -20 913 931 10 428 0 -516 444 271 -30 835 1250 10 216 0 -517 359 179 -30 422 995 10 52 0 -518 388 334 20 538 847 10 0 179 -519 401 164 -20 2414 2676 10 599 0 -520 499 316 18 2514 2580 10 0 801 -521 399 106 -10 1145 1389 10 958 0 -522 425 215 10 873 1079 10 0 245 -523 407 98 10 810 939 10 0 675 -524 406 460 -30 2870 3003 10 906 0 -525 88 95 20 1016 1266 10 0 125 -526 95 64 -16 2884 3364 10 372 0 -527 306 229 10 5318 5365 0 0 1003 -528 273 55 20 783 788 10 0 796 -529 384 149 -24 4614 5083 10 33 0 -530 122 35 10 991 1090 10 0 559 -531 308 199 14 6030 6156 10 0 757 -532 390 301 10 626 815 10 0 713 -533 300 108 10 366 838 10 0 207 -534 267 400 10 828 1150 10 0 111 -535 8 300 -16 1382 1585 10 988 0 -536 105 181 -16 5916 6453 10 772 0 -537 398 325 -30 832 1155 10 201 0 -538 166 247 1 138 535 10 0 783 -539 140 431 30 604 1172 10 0 197 -540 253 118 -10 2082 2417 10 490 0 -541 359 246 -17 5651 5852 10 834 0 -542 321 277 10 187 421 10 0 597 -543 168 59 6 1381 1668 10 0 34 -544 406 285 20 537 1012 10 0 341 -545 391 334 20 657 911 10 0 986 -546 437 19 -37 3931 4301 10 672 0 -547 201 278 13 82 370 10 0 735 -548 435 267 20 1149 1553 10 0 202 -549 245 408 10 788 963 10 0 84 -550 16 462 10 1423 1783 10 0 704 -551 107 374 -25 3598 3837 10 862 0 -552 477 97 10 894 1488 10 0 112 -553 346 57 20 1253 1333 10 0 721 -554 14 459 -30 1297 1508 10 593 0 -555 102 6 -20 5675 6113 10 248 0 -556 359 287 24 310 610 10 0 430 -557 297 131 -10 4602 4842 10 731 0 -558 282 1 18 4124 4335 10 0 982 -559 21 70 -10 2918 3372 10 530 0 -560 440 244 10 1024 1225 10 0 260 -561 482 104 -14 3152 3427 10 285 0 -562 120 261 5 3134 3332 0 0 1002 -563 125 29 -30 1181 1205 10 788 0 -564 292 32 14 896 1057 10 0 714 -565 262 92 -10 2505 2658 10 1000 0 -566 68 160 21 4528 4679 10 0 799 -567 405 276 -20 732 1262 10 210 0 -568 277 50 -10 775 927 10 695 0 -569 32 319 -10 1494 1830 10 742 0 -570 344 70 -30 4580 4705 10 298 0 -571 481 84 -20 1876 2288 10 873 0 -572 21 68 -20 1539 1793 10 418 0 -573 441 244 -10 1051 1286 10 764 0 -574 57 43 15 4133 4175 10 0 241 -575 1 293 10 906 1357 10 0 347 -576 481 96 -20 1078 1418 10 20 0 -577 471 368 -20 1609 1936 10 211 0 -578 236 126 23 445 554 10 0 852 -579 406 99 -10 901 1035 10 171 0 -580 303 186 -28 5394 5559 10 54 0 -581 225 369 38 283 689 10 0 995 -582 412 453 10 1103 1394 10 0 104 -583 104 349 -20 3929 4265 10 763 0 -584 173 182 -20 176 645 10 314 0 -585 111 464 -10 1066 1539 10 238 0 -586 53 440 -20 1137 1567 10 615 0 -587 69 336 -30 785 1079 10 838 0 -588 359 182 20 723 1070 10 0 471 -589 13 459 20 1270 1624 10 0 283 -590 244 277 -18 5089 5441 10 946 0 -591 484 177 -10 873 1259 10 300 0 -592 452 206 31 1813 2244 10 0 205 -593 22 483 30 1170 1437 10 0 554 -594 452 110 14 1291 1551 10 0 232 -595 347 192 -25 5900 6125 10 495 0 -596 95 92 -20 1064 1078 10 944 0 -597 368 311 -10 3621 3907 10 542 0 -598 479 387 -10 1349 1950 10 892 0 -599 479 169 20 1084 1504 10 0 519 -600 497 266 -20 2806 3294 10 288 0 -601 66 336 10 907 1239 10 0 8 -602 376 195 10 745 822 10 0 682 -603 401 281 -40 858 1350 10 26 0 -604 441 177 -21 3857 4273 10 247 0 -605 231 203 -20 160 493 10 272 0 -606 21 488 10 1426 1585 10 0 358 -607 231 204 20 436 885 10 0 152 -608 122 422 -20 5754 6021 10 349 0 -609 65 453 -23 999 1375 10 835 0 -610 206 261 -10 602 978 10 374 0 -611 466 149 -20 4698 4910 10 806 0 -612 313 119 -20 855 992 10 933 0 -613 90 274 20 667 887 10 0 335 -614 39 162 -30 2240 2402 10 19 0 -615 35 306 20 895 1060 10 0 586 -616 437 15 -5 1337 1625 10 16 0 -617 307 412 -25 1534 1815 10 330 0 -618 79 291 10 776 1015 10 0 924 -619 64 437 -20 3539 3927 10 440 0 -620 376 92 -20 3768 4276 10 716 0 -621 129 27 10 1124 1377 10 0 411 -622 196 489 23 4070 4291 10 0 140 -623 51 286 -21 5720 6072 10 451 0 -624 20 488 10 1530 1569 10 0 397 -625 13 455 -30 1036 1570 10 975 0 -626 170 347 15 1780 1827 10 0 899 -627 92 230 20 733 897 10 0 907 -628 117 467 -20 967 1069 10 176 0 -629 413 217 20 649 783 10 0 875 -630 405 450 -30 881 1224 10 93 0 -631 394 322 12 4021 4297 10 0 722 -632 125 61 26 2347 2667 10 0 79 -633 238 123 24 3039 3329 10 0 193 -634 11 403 -20 1333 1531 10 367 0 -635 89 272 -10 587 1066 10 760 0 -636 304 102 30 462 1232 10 0 781 -637 478 121 -20 1270 1399 10 170 0 -638 408 84 -10 1156 1239 10 954 0 -639 376 494 30 1051 1226 10 0 712 -640 20 73 10 1030 1292 10 0 881 -641 159 299 12 4057 4187 10 0 882 -642 95 382 -10 838 1132 10 60 0 -643 352 63 6 4670 4875 10 0 384 -644 365 274 14 406 534 10 0 711 -645 30 301 -20 1041 1300 10 991 0 -646 351 5 12 1861 2227 10 0 371 -647 197 267 10 377 613 10 0 868 -648 498 171 -20 4896 5275 10 729 0 -649 468 352 -20 3042 3223 10 774 0 -650 418 251 -40 4798 4897 10 262 0 -651 489 437 -15 2771 3003 10 194 0 -652 251 63 -22 3841 4178 10 356 0 -653 132 55 -32 1005 1253 10 234 0 -654 281 96 -27 4558 4568 10 470 0 -655 333 293 -20 2412 2644 10 89 0 -656 255 487 -30 1527 1776 10 967 0 -657 207 400 -30 612 1032 10 855 0 -658 469 489 4 2204 2359 10 0 250 -659 244 254 20 278 645 10 0 915 -660 233 207 10 46 672 10 0 391 -661 441 60 -14 5744 6045 10 865 0 -662 411 379 25 4704 4963 10 0 338 -663 178 72 23 2968 3206 10 0 700 -664 51 447 10 1096 1379 10 0 905 -665 478 118 20 1354 1601 10 0 951 -666 141 426 23 1993 2378 10 0 458 -667 295 89 23 2908 3148 10 0 129 -668 112 433 29 879 1122 10 0 62 -669 320 211 16 3835 4226 10 0 877 -670 400 103 10 963 1201 10 0 117 -671 408 453 10 922 1462 10 0 200 -672 435 180 37 852 1064 10 0 546 -673 432 66 -27 4225 4464 10 493 0 -674 374 116 -10 2285 2532 10 23 0 -675 478 102 -10 1096 1618 10 523 0 -676 335 57 30 768 919 10 0 337 -677 385 239 21 3141 3263 10 0 758 -678 386 245 -20 1718 2233 10 971 0 -679 208 396 20 457 1074 10 0 996 -680 380 489 -20 1454 1698 10 878 0 -681 380 498 10 1135 1363 10 0 289 -682 440 7 -10 1146 1484 10 602 0 -683 434 245 -10 1356 1498 10 323 0 -684 90 232 -10 804 1009 10 355 0 -685 389 334 20 549 924 10 0 315 -686 241 205 30 348 715 10 0 961 -687 18 24 32 2499 2648 10 0 145 -688 57 183 -8 4421 4501 10 879 0 -689 59 457 -20 1241 1553 10 845 0 -690 442 243 10 1068 1361 10 0 738 -691 402 281 20 874 1246 10 0 24 -692 445 237 -20 733 990 10 215 0 -693 441 273 20 986 1392 10 0 491 -694 31 175 24 958 1135 10 0 156 -695 234 202 10 290 467 10 0 568 -696 52 303 25 1809 1840 10 0 128 -697 167 445 -10 5539 5878 10 203 0 -698 179 286 -10 1169 1680 10 917 0 -699 269 48 20 999 1365 10 0 981 -700 165 59 -23 3758 3904 10 663 0 -701 461 8 20 1426 1647 10 0 320 -702 421 415 -8 924 1078 10 724 0 -703 59 459 -17 1186 1425 10 147 0 -704 24 492 -10 1680 2135 10 550 0 -705 55 449 20 1011 1217 10 0 255 -706 224 192 10 63 654 10 0 346 -707 444 269 20 888 1100 10 0 123 -708 491 20 -20 1526 1742 10 325 0 -709 313 126 10 803 1262 10 0 42 -710 283 438 -10 941 1031 10 932 0 -711 352 241 -14 3027 3432 10 644 0 -712 398 476 -30 1624 1841 10 639 0 -713 442 247 -10 819 1230 10 532 0 -714 217 207 -14 5535 5645 10 564 0 -715 233 87 18 938 1203 10 0 810 -716 479 127 20 1108 1171 10 0 620 -717 6 53 8 2404 2411 10 0 872 -718 478 300 12 3459 3778 10 0 447 -719 378 493 30 1166 1209 10 0 72 -720 303 78 12 680 759 10 0 231 -721 344 62 -20 1327 1565 10 553 0 -722 371 315 -12 4543 4904 10 631 0 -723 200 78 -10 3906 4155 10 31 0 -724 413 391 8 881 975 10 0 702 -725 415 216 10 722 809 10 0 91 -726 397 57 -14 5861 6067 10 226 0 -727 293 228 19 48 345 10 0 350 -728 0 297 10 1060 1403 10 0 421 -729 435 20 20 1570 1602 10 0 648 -730 195 111 -20 3998 4106 10 342 0 -731 417 218 10 920 1425 10 0 557 -732 340 54 10 933 1089 10 0 175 -733 132 57 -20 934 1142 10 947 0 -734 210 379 -30 2704 3086 10 782 0 -735 228 260 -13 6297 6667 10 547 0 -736 399 104 -20 1096 1342 10 861 0 -737 95 277 20 1075 1240 10 0 511 -738 360 284 -10 2611 2842 10 690 0 -739 53 466 -10 1200 1600 10 157 0 -740 112 465 -12 1144 1369 10 920 0 -741 313 391 5 450 867 10 0 297 -742 93 235 10 844 1246 10 0 569 -743 125 32 -24 908 1287 10 748 0 -744 215 282 -8 5795 5849 10 90 0 -745 224 320 36 5091 5298 10 0 427 -746 134 428 20 1141 1444 10 0 442 -747 26 490 -32 1753 2165 10 812 0 -748 44 115 24 698 1272 10 0 743 -749 438 127 -2 3629 4018 10 249 0 -750 239 15 -10 2260 2691 10 846 0 -751 342 54 20 1040 1079 10 0 844 -752 109 463 30 1298 1491 10 0 425 -753 199 187 -40 544 589 10 5 0 -754 201 188 10 354 876 10 0 930 -755 399 301 30 546 1128 10 0 826 -756 484 171 -22 1214 1252 10 784 0 -757 272 234 -14 6289 6554 10 531 0 -758 380 350 -21 3422 3629 10 677 0 -759 140 108 29 4296 4394 10 0 158 -760 228 199 10 412 783 10 0 635 -761 245 461 -7 2497 2818 10 475 0 -762 305 107 20 740 1182 10 0 274 -763 231 195 20 443 551 10 0 583 -764 450 265 10 744 1107 10 0 573 -765 273 149 14 6032 6110 10 0 115 -766 12 358 -40 4917 4997 10 803 0 -767 315 121 -30 784 960 10 787 0 -768 420 213 -14 807 942 10 38 0 -769 331 134 -30 4375 4735 10 405 0 -770 84 377 -29 3577 3953 10 505 0 -771 320 280 10 382 418 10 0 224 -772 89 185 16 2326 2593 10 0 536 -773 472 481 20 1239 1494 10 0 3 -774 422 420 20 1000 1221 10 0 649 -775 475 267 -10 2930 3427 10 990 0 -776 470 125 20 861 1164 10 0 150 -777 435 268 -10 1238 1375 10 352 0 -778 409 155 19 596 886 10 0 814 -779 243 248 30 55 257 10 0 395 -780 488 96 22 3991 4659 10 0 196 -781 341 72 -30 3109 3450 10 636 0 -782 58 449 30 1178 1843 10 0 734 -783 16 460 -1 1573 1833 10 538 0 -784 480 136 22 901 1152 10 0 756 -785 162 388 11 4532 4597 10 0 911 -786 47 208 -10 832 1099 10 955 0 -787 324 127 30 529 619 10 0 767 -788 87 96 30 1056 1319 10 0 563 -789 140 137 -20 2215 2462 10 212 0 -790 314 205 -22 6032 6302 10 478 0 -791 96 346 26 647 954 10 0 381 -792 321 280 30 228 484 10 0 894 -793 245 251 10 8 113 10 0 830 -794 436 295 -20 1919 2428 10 512 0 -795 274 261 -17 6568 7207 10 912 0 -796 271 128 -20 1339 1546 10 528 0 -797 275 45 20 909 1008 10 0 441 -798 422 409 10 818 1056 10 0 136 -799 146 188 -21 4953 5046 10 566 0 -800 93 96 -17 847 1077 10 27 0 -801 409 255 -18 5984 6316 10 520 0 -802 449 428 25 4907 5188 10 0 178 -803 90 285 40 1101 1228 10 0 766 -804 415 95 -9 4615 4918 10 390 0 -805 88 287 30 961 1266 10 0 513 -806 379 196 20 740 933 10 0 611 -807 368 452 -20 2696 2784 10 480 0 -808 202 186 20 584 745 10 0 900 -809 435 11 40 1158 1340 10 0 985 -810 269 46 -18 1079 1189 10 715 0 -811 7 292 10 940 1033 10 0 496 -812 44 496 32 1625 1709 10 0 747 -813 478 99 10 1077 1533 10 0 380 -814 391 99 -19 596 1057 10 778 0 -815 132 477 -20 1363 1375 10 822 0 -816 24 65 10 1415 1628 10 0 506 -817 130 247 17 333 627 10 0 857 -818 133 273 20 231 723 10 0 103 -819 347 62 10 1126 1661 10 0 403 -820 404 140 -10 4984 5206 10 75 0 -821 416 420 -30 1150 1287 10 402 0 -822 67 335 20 878 1177 10 0 815 -823 92 270 -20 922 1253 10 500 0 -824 411 95 -10 827 1236 10 68 0 -825 132 479 -10 731 1329 10 161 0 -826 366 334 -30 1491 1911 10 755 0 -827 125 39 -18 792 1170 10 305 0 -828 419 422 -20 1055 1274 10 105 0 -829 460 2 20 1318 1626 10 0 965 -830 67 334 -10 734 1232 10 793 0 -831 448 414 23 4871 5031 10 0 460 -832 46 163 -20 3724 3804 10 945 0 -833 77 465 11 946 1261 10 0 268 -834 284 319 17 3152 3502 10 0 541 -835 102 422 23 784 1146 10 0 609 -836 240 34 -20 6068 6528 10 336 0 -837 141 428 20 632 1038 10 0 847 -838 204 269 30 93 305 10 0 587 -839 144 439 30 1065 1224 10 0 497 -840 470 417 -20 2891 3123 10 499 0 -841 404 103 20 920 1132 10 0 278 -842 5 281 -21 5513 5579 10 970 0 -843 487 320 -28 3288 3693 10 482 0 -844 398 23 -20 988 1179 10 751 0 -845 90 296 20 587 745 10 0 689 -846 386 13 10 1148 1668 10 0 750 -847 115 465 -20 991 1227 10 837 0 -848 473 475 -20 1640 1818 10 56 0 -849 275 42 -20 750 1271 10 386 0 -850 286 356 30 437 459 10 0 999 -851 15 69 -20 1022 1431 10 479 0 -852 267 44 -23 878 1289 10 578 0 -853 243 399 10 895 1103 10 0 120 -854 390 249 -10 2311 2462 10 909 0 -855 210 391 30 539 714 10 0 657 -856 433 15 20 1077 1306 10 0 454 -857 24 259 -17 1495 1586 10 817 0 -858 12 463 -18 1468 1538 10 276 0 -859 237 213 10 441 855 10 0 408 -860 182 480 -20 1450 1589 10 976 0 -861 409 88 20 955 1327 10 0 736 -862 244 368 25 1675 1757 10 0 551 -863 381 328 -15 2700 3159 10 934 0 -864 213 185 21 137 461 10 0 339 -865 482 141 14 3839 4367 10 0 661 -866 319 124 20 684 860 10 0 209 -867 141 431 -20 785 1079 10 311 0 -868 198 264 -10 306 936 10 647 0 -869 69 334 30 691 1078 10 0 387 -870 299 98 30 648 806 10 0 365 -871 240 250 10 10 451 10 0 307 -872 199 203 -8 5813 5966 10 717 0 -873 459 17 20 1490 1921 10 0 571 -874 423 217 -20 876 1178 10 74 0 -875 477 179 -20 773 1129 10 629 0 -876 213 397 10 837 1022 10 0 119 -877 405 187 -16 4932 5193 10 669 0 -878 269 402 20 720 1022 10 0 680 -879 53 204 8 4080 4480 10 0 688 -880 13 394 -20 1412 1689 10 304 0 -881 15 68 -10 979 1563 10 640 0 -882 56 268 -12 4146 4486 10 641 0 -883 360 184 10 894 998 10 0 445 -884 307 102 40 831 967 10 0 51 -885 130 57 -26 955 1024 10 373 0 -886 250 328 24 907 1202 10 0 37 -887 91 231 -20 709 1012 10 453 0 -888 479 176 20 989 1023 10 0 890 -889 420 224 -13 1713 1839 10 227 0 -890 461 182 -20 2359 2793 10 888 0 -891 418 218 -20 973 1284 10 426 0 -892 419 418 10 911 1200 10 0 598 -893 336 493 -20 5941 6123 10 362 0 -894 389 300 -30 502 848 10 792 0 -895 92 76 -20 4328 4903 10 124 0 -896 476 102 20 1244 1566 10 0 953 -897 418 399 -10 1641 1981 10 55 0 -898 109 56 27 890 1029 10 0 28 -899 13 465 -15 3036 3272 10 626 0 -900 92 232 -20 568 966 10 808 0 -901 394 47 5 1043 1580 10 0 435 -902 16 287 12 812 1475 10 0 313 -903 399 102 -9 931 1326 10 477 0 -904 143 158 -25 560 660 10 388 0 -905 18 484 -10 1266 1454 10 664 0 -906 250 411 30 699 924 10 0 524 -907 19 273 -20 4049 4203 10 627 0 -908 365 28 9 933 1332 10 0 57 -909 387 297 10 554 687 10 0 854 -910 433 447 -25 3145 3328 10 409 0 -911 214 274 -11 5288 5784 10 785 0 -912 489 338 17 5469 5828 10 0 795 -913 130 494 6 2901 3289 10 0 302 -914 23 67 -10 1591 1642 10 916 0 -915 374 489 -20 802 1352 10 659 0 -916 126 30 10 1029 1265 10 0 914 -917 112 467 10 1040 1287 10 0 698 -918 489 274 -10 2090 2300 10 473 0 -919 61 214 -20 1103 1751 10 160 0 -920 166 440 12 761 900 10 0 740 -921 56 75 -23 5526 6095 10 50 0 -922 210 276 5 51 331 10 0 984 -923 80 286 10 884 1027 10 0 113 -924 17 459 -10 1682 1814 10 618 0 -925 66 448 10 779 1383 10 0 76 -926 351 128 15 4970 5175 10 0 214 -927 352 176 20 273 736 10 0 316 -928 490 286 29 2021 2276 10 0 184 -929 247 219 17 31 248 10 0 261 -930 86 268 -10 737 1121 10 754 0 -931 398 329 17 297 1045 10 0 36 -932 272 402 10 535 861 10 0 710 -933 317 123 20 595 1046 10 0 612 -934 408 318 15 2547 2718 10 0 863 -935 66 31 25 4039 4469 10 0 294 -936 425 448 9 3072 3403 10 0 141 -937 35 304 -8 927 933 10 407 0 -938 471 94 -20 3752 4358 10 267 0 -939 470 473 10 1667 1900 10 0 58 -940 224 56 -40 4480 5131 10 172 0 -941 343 47 20 906 1430 10 0 195 -942 52 18 28 3370 3605 10 0 420 -943 16 68 20 1246 1384 10 0 423 -944 195 185 20 388 629 10 0 596 -945 92 236 20 1020 1161 10 0 832 -946 76 462 18 3612 4156 10 0 590 -947 124 56 20 808 1043 10 0 733 -948 481 454 14 1159 1524 10 0 70 -949 477 483 20 1201 1846 10 0 213 -950 481 124 10 1004 1383 10 0 345 -951 389 156 -20 2729 3115 10 665 0 -952 384 16 -10 1263 1662 10 142 0 -953 492 34 -20 3102 3503 10 896 0 -954 371 200 10 942 973 10 0 638 -955 153 235 10 128 658 10 0 786 -956 428 202 -10 3290 4061 10 969 0 -957 257 391 -10 6432 6752 10 45 0 -958 421 218 10 889 1264 10 0 521 -959 206 186 10 699 921 10 0 182 -960 393 301 30 648 897 10 0 155 -961 204 187 -30 670 852 10 686 0 -962 468 475 10 1182 1325 10 0 290 -963 477 122 10 1085 1675 10 0 192 -964 100 66 -10 5437 5881 10 286 0 -965 489 27 -20 1697 1793 10 829 0 -966 12 451 20 1036 1457 0 0 1007 -967 197 270 30 422 463 10 0 656 -968 311 422 -10 3905 4118 10 303 0 -969 489 17 10 1345 1815 10 0 956 -970 13 214 21 5329 5620 10 0 842 -971 440 247 20 975 1169 10 0 678 -972 28 467 34 5219 5641 10 0 246 -973 388 325 -30 1054 1172 10 66 0 -974 270 401 -20 563 736 10 327 0 -975 5 445 30 1095 1513 10 0 625 -976 198 271 20 142 653 10 0 860 -977 480 131 -10 2590 3031 10 263 0 -978 437 98 -29 4457 4573 10 412 0 -979 131 246 17 3262 3514 10 0 43 -980 49 437 -26 1640 1899 10 244 0 -981 270 49 -20 1219 1237 10 699 0 -982 337 41 -18 3875 4263 10 558 0 -983 318 280 20 285 611 10 0 416 -984 154 392 -5 652 720 10 922 0 -985 493 111 -40 2141 2307 10 809 0 -986 399 450 -20 1374 1616 10 545 0 -987 67 452 30 840 1436 10 0 280 -988 34 239 16 690 1181 10 0 535 -989 343 276 15 224 548 10 0 481 -990 393 12 10 1004 1589 10 0 775 -991 236 247 20 184 356 10 0 645 -992 340 291 22 1910 1974 10 0 494 -993 3 292 20 972 1192 10 0 173 -994 209 68 27 6181 6484 10 0 317 -995 18 225 -38 2818 2833 10 581 0 -996 147 435 -20 943 1138 10 679 0 -997 335 99 25 4803 5064 10 0 291 -998 485 24 20 1269 1421 10 0 110 -999 470 475 -30 1115 1488 10 850 0 -1000 341 58 10 688 1222 10 0 565 -1001 35 303 -20 692 1079 10 469 0 -1002 120 261 -5 3134 3332 10 562 0 -1003 306 229 -10 5318 5365 10 527 0 -1004 377 432 -20 3344 3428 10 39 0 -1005 488 26 -30 1734 1848 10 108 0 -1006 1 101 -8 4853 5326 10 438 0 -1007 12 451 -20 1036 1457 10 966 0 -1008 287 397 -12 2144 2490 10 217 0 diff --git a/jsprit-instances/instances/lilim/1000/LRC2106.txt b/jsprit-instances/instances/lilim/1000/LRC2106.txt deleted file mode 100644 index 627cf859f..000000000 --- a/jsprit-instances/instances/lilim/1000/LRC2106.txt +++ /dev/null @@ -1,1010 +0,0 @@ -250 1000 1 -0 250 250 0 0 7284 0 0 0 -1 440 436 -10 3508 3748 10 582 0 -2 214 394 10 862 1102 10 0 752 -3 476 483 -20 1359 1599 10 341 0 -4 352 487 -20 3547 3787 10 211 0 -5 230 197 40 426 666 10 0 735 -6 175 239 -8 183 423 10 407 0 -7 133 202 33 1782 2022 10 0 789 -8 328 458 17 3011 3251 10 0 631 -9 25 499 -40 1720 1960 10 279 0 -10 226 423 15 728 968 10 0 473 -11 313 282 20 594 834 10 0 520 -12 60 454 -11 1329 1569 10 833 0 -13 239 486 -11 5868 6108 10 785 0 -14 102 264 10 475 715 10 0 930 -15 408 452 10 1028 1268 10 0 658 -16 451 62 5 1069 1309 10 0 765 -17 203 390 40 575 815 10 0 509 -18 92 233 10 835 1075 10 0 319 -19 7 300 30 1319 1559 10 0 359 -20 409 90 20 973 1213 10 0 391 -21 307 108 -23 890 1130 10 578 0 -22 347 54 10 1120 1360 10 0 158 -23 406 87 10 1192 1432 10 0 652 -24 371 332 -5 2058 2298 10 826 0 -25 116 466 -20 944 1184 10 220 0 -26 441 265 40 729 969 10 0 756 -27 130 140 -12 716 956 10 904 0 -28 80 117 -30 3237 3477 10 914 0 -29 421 387 -7 3145 3385 10 475 0 -30 83 300 26 1939 2179 10 0 168 -31 136 52 -10 1111 1351 10 293 0 -32 18 462 -20 1531 1771 10 358 0 -33 390 120 24 3957 4197 10 0 529 -34 188 119 -27 3839 4079 10 700 0 -35 467 114 -14 1444 1684 10 594 0 -36 440 292 -20 3700 3940 10 548 0 -37 268 400 20 913 1153 10 0 229 -38 391 202 -19 476 716 10 114 0 -39 377 432 -10 3266 3506 10 754 0 -40 80 290 -20 730 970 10 77 0 -41 439 15 -30 1313 1553 10 676 0 -42 307 52 -10 3622 3862 10 278 0 -43 111 192 11 4738 4978 10 0 536 -44 131 56 10 963 1203 10 0 204 -45 88 286 -10 950 1190 10 923 0 -46 69 414 6 4993 5233 10 0 140 -47 41 232 16 761 1001 10 0 653 -48 323 77 36 5560 5800 10 0 115 -49 340 416 -10 1224 1464 10 932 0 -50 86 199 -17 1051 1291 10 817 0 -51 314 124 20 864 1104 10 0 614 -52 375 191 30 607 847 10 0 360 -53 226 175 -27 6715 6955 10 994 0 -54 242 106 -19 5014 5254 10 94 0 -55 417 417 -40 1268 1508 10 225 0 -56 419 459 -20 1205 1445 10 828 0 -57 389 11 -30 1233 1473 10 117 0 -58 450 416 25 2247 2487 10 0 72 -59 246 255 10 390 630 10 0 766 -60 71 333 -20 715 955 10 334 0 -61 105 474 27 1823 2063 10 0 641 -62 20 489 10 1473 1713 10 0 182 -63 388 331 20 520 760 10 0 518 -64 92 259 4 1538 1778 10 0 412 -65 200 261 10 606 846 10 0 868 -66 400 288 30 499 739 10 0 81 -67 299 285 -10 4955 5195 10 148 0 -68 378 199 -20 769 1009 10 514 0 -69 325 147 -11 4687 4927 10 131 0 -70 421 386 29 3237 3477 10 0 224 -71 404 447 20 880 1120 10 0 499 -72 412 478 -25 3779 4019 10 58 0 -73 26 67 15 5207 5447 10 0 964 -74 358 183 -20 875 1115 10 350 0 -75 30 302 -20 1006 1246 10 830 0 -76 176 470 -10 2127 2367 10 917 0 -77 96 270 20 589 829 10 0 40 -78 243 408 15 5675 5915 10 0 218 -79 60 29 -18 5391 5631 10 506 0 -80 34 169 11 1878 2118 10 0 221 -81 407 280 -30 774 1014 10 66 0 -82 277 403 -26 639 879 10 88 0 -83 498 456 -25 5564 5804 10 662 0 -84 384 491 -20 1331 1571 10 986 0 -85 355 174 -30 2801 3041 10 351 0 -86 97 288 -12 5076 5316 10 163 0 -87 316 284 20 439 679 10 0 890 -88 334 403 26 578 818 10 0 82 -89 415 223 -19 1159 1399 10 727 0 -90 230 320 -20 4708 4948 10 268 0 -91 432 199 7 2494 2734 10 0 711 -92 92 18 8 4437 4677 10 0 410 -93 273 300 30 100 340 10 0 850 -94 269 112 19 4991 5231 10 0 54 -95 429 389 -20 1636 1876 10 472 0 -96 371 71 -20 1087 1327 10 751 0 -97 5 297 -10 1265 1505 10 645 0 -98 414 378 23 1919 2159 10 0 136 -99 38 15 -20 4304 4544 10 943 0 -100 2 295 -10 1163 1403 10 307 0 -101 237 254 20 273 513 10 0 511 -102 54 445 10 1172 1412 10 0 366 -103 382 110 24 4390 4630 10 0 769 -104 438 488 18 1249 1489 10 0 432 -105 395 331 20 806 1046 10 0 918 -106 230 487 -29 4458 4698 10 968 0 -107 249 407 -10 635 875 10 238 0 -108 488 26 -40 1671 1911 10 809 0 -109 151 81 -8 6172 6412 10 438 0 -110 483 14 10 1393 1633 10 0 580 -111 0 422 -30 3224 3464 10 318 0 -112 429 67 16 2869 3109 10 0 470 -113 195 464 -32 6105 6345 10 812 0 -114 356 256 19 305 545 10 0 38 -115 264 180 -36 6663 6903 10 48 0 -116 94 235 20 547 787 10 0 408 -117 474 96 30 967 1207 10 0 57 -118 268 52 10 1162 1402 10 0 879 -119 44 440 -8 3095 3335 10 383 0 -120 7 382 27 3022 3262 10 0 434 -121 459 53 -10 4429 4669 10 954 0 -122 491 25 -20 1574 1814 10 682 0 -123 439 243 -30 1194 1434 10 216 0 -124 210 185 -20 185 425 10 206 0 -125 150 68 -20 1631 1871 10 137 0 -126 201 270 10 132 372 10 0 304 -127 0 188 -30 3668 3908 10 981 0 -128 103 464 -10 5032 5272 10 747 0 -129 325 56 13 3126 3366 10 0 714 -130 44 344 12 4258 4498 10 0 295 -131 418 75 11 1732 1972 10 0 69 -132 472 57 -7 5119 5359 10 775 0 -133 460 328 13 816 1056 10 0 939 -134 89 270 10 754 994 10 0 805 -135 374 190 -25 513 753 10 275 0 -136 463 253 -23 4128 4368 10 98 0 -137 97 93 20 902 1142 10 0 125 -138 163 472 -11 2554 2794 10 825 0 -139 29 336 22 1266 1506 10 0 583 -140 84 453 -6 4832 5072 10 46 0 -141 294 421 -20 6242 6482 10 893 0 -142 343 62 -20 1370 1610 10 267 0 -143 371 193 20 415 655 10 0 824 -144 142 372 18 532 772 10 0 550 -145 66 88 -10 3259 3499 10 530 0 -146 395 332 10 762 1002 10 0 491 -147 93 413 17 785 1025 10 0 624 -148 267 394 10 977 1217 10 0 67 -149 249 258 30 447 687 10 0 777 -150 472 129 10 950 1190 10 0 646 -151 87 3 -28 5672 5912 10 942 0 -152 62 326 -29 1085 1325 10 668 0 -153 212 186 -19 6826 7066 10 540 0 -154 241 402 -10 4039 4279 10 876 0 -155 439 266 10 681 921 10 0 379 -156 79 80 -30 5468 5708 10 563 0 -157 62 453 10 1119 1359 10 0 634 -158 188 151 -10 5127 5367 10 22 0 -159 386 154 -18 4344 4584 10 502 0 -160 38 301 20 1122 1362 10 0 551 -161 192 265 -20 437 677 10 464 0 -162 371 192 30 459 699 10 0 778 -163 64 294 12 4345 4585 10 0 86 -164 381 494 -20 1274 1514 10 404 0 -165 437 12 20 1258 1498 10 0 365 -166 186 135 24 2811 3051 10 0 749 -167 459 10 10 1280 1520 10 0 288 -168 175 422 -26 5726 5966 10 30 0 -169 274 48 -30 785 1025 10 787 0 -170 488 173 -20 1055 1295 10 983 0 -171 398 97 10 776 1016 10 0 455 -172 385 17 -10 3175 3415 10 675 0 -173 180 283 -10 2915 3155 10 424 0 -174 71 12 -20 1112 1352 10 947 0 -175 343 49 10 1000 1240 10 0 844 -176 248 251 20 2 242 10 0 642 -177 7 194 29 3745 3985 10 0 433 -178 322 290 -12 5856 6096 10 648 0 -179 410 399 -15 875 1115 10 989 0 -180 398 103 -20 1054 1294 10 814 0 -181 385 285 -15 3412 3652 10 758 0 -182 179 497 -10 5584 5824 10 62 0 -183 464 13 -20 1479 1719 10 337 0 -184 492 335 -9 3253 3493 10 649 0 -185 27 464 21 5104 5344 10 0 697 -186 231 29 -25 4845 5085 10 584 0 -187 157 38 -26 4131 4371 10 632 0 -188 439 268 10 1131 1371 10 0 284 -189 149 214 7 1868 2108 10 0 400 -190 187 73 18 1108 1348 10 0 832 -191 429 169 -10 3551 3791 10 742 0 -192 350 199 21 4746 4986 10 0 214 -193 60 231 -8 4044 4284 10 698 0 -194 448 404 15 2336 2576 0 0 1002 -195 481 20 20 1328 1568 10 0 969 -196 436 25 -30 5069 5309 10 938 0 -197 111 459 -10 1375 1615 10 419 0 -198 389 17 10 1403 1643 10 0 403 -199 148 208 -10 2046 2286 10 900 0 -200 475 477 -20 1558 1798 10 949 0 -201 390 325 30 945 1185 10 0 603 -202 346 354 -10 3210 3450 10 853 0 -203 91 266 -30 870 1110 10 967 0 -204 17 65 -10 1247 1487 10 44 0 -205 391 112 -40 3941 4181 10 637 0 -206 224 203 20 95 335 10 0 124 -207 426 231 -20 4054 4294 10 545 0 -208 260 472 33 4084 4324 10 0 622 -209 265 0 -20 3524 3764 10 629 0 -210 391 293 20 843 1083 10 0 691 -211 411 421 20 1200 1440 10 0 4 -212 132 30 20 1243 1483 10 0 259 -213 475 480 30 1458 1698 10 0 332 -214 286 244 -21 5076 5316 10 192 0 -215 436 237 -33 626 866 10 363 0 -216 402 284 30 598 838 10 0 123 -217 287 397 -10 2197 2437 10 740 0 -218 272 420 -15 5483 5723 10 78 0 -219 477 120 -20 1308 1548 10 553 0 -220 145 434 20 872 1112 10 0 25 -221 33 286 -11 6124 6364 10 80 0 -222 370 262 15 4338 4578 10 0 296 -223 393 20 20 1503 1743 10 0 654 -224 330 308 -29 4622 4862 10 70 0 -225 246 398 40 472 712 10 0 55 -226 482 184 14 4367 4607 10 0 795 -227 451 305 13 714 954 10 0 630 -228 226 316 21 161 401 10 0 628 -229 110 459 -20 1331 1571 10 37 0 -230 244 250 10 6 246 10 0 871 -231 458 16 -20 1132 1372 10 856 0 -232 390 34 -17 4181 4421 10 571 0 -233 423 214 -10 807 1047 10 522 0 -234 219 215 32 67 307 10 0 788 -235 326 118 10 531 771 10 0 561 -236 365 74 -12 3334 3574 10 720 0 -237 331 356 -20 2787 3027 10 448 0 -238 210 398 10 757 997 10 0 107 -239 403 93 10 1303 1543 10 0 750 -240 248 404 30 538 778 10 0 485 -241 65 62 -25 3846 4086 10 388 0 -242 460 13 20 1227 1467 10 0 320 -243 0 293 -12 1055 1295 10 902 0 -244 211 248 -10 39 279 10 252 0 -245 484 174 10 998 1238 10 0 446 -246 175 352 -20 6600 6840 10 387 0 -247 455 168 -10 3407 3647 10 958 0 -248 224 191 20 264 504 10 0 940 -249 439 156 2 2043 2283 10 0 951 -250 434 359 -11 5509 5749 10 460 0 -251 118 314 -20 1290 1530 10 449 0 -252 234 246 10 199 439 10 0 244 -253 406 450 -20 977 1217 10 544 0 -254 75 118 -20 1576 1816 10 933 0 -255 115 395 -20 3201 3441 10 705 0 -256 329 456 19 936 1176 10 0 681 -257 218 403 15 5217 5457 10 0 368 -258 149 341 -10 1556 1796 10 647 0 -259 253 74 -20 5340 5580 10 212 0 -260 436 241 -9 1249 1489 10 471 0 -261 238 203 10 315 555 10 0 686 -262 405 455 -10 1303 1543 10 431 0 -263 485 27 -20 1724 1964 10 873 0 -264 323 118 20 583 823 10 0 638 -265 330 371 -10 2174 2414 10 585 0 -266 25 65 -30 1445 1685 10 457 0 -267 406 96 20 803 1043 10 0 142 -268 49 451 20 1060 1300 10 0 90 -269 307 249 -29 5446 5686 10 928 0 -270 178 135 -10 5995 6235 10 819 0 -271 299 353 34 336 576 10 0 436 -272 236 213 20 39 279 10 0 612 -273 355 177 20 437 677 10 0 854 -274 394 23 20 1555 1795 10 0 429 -275 306 235 25 112 352 10 0 135 -276 90 477 18 991 1231 10 0 357 -277 379 486 -21 2627 2867 10 378 0 -278 435 16 10 1410 1650 10 0 42 -279 8 497 40 1571 1811 10 0 9 -280 150 484 -30 2441 2681 10 782 0 -281 213 399 18 876 1116 10 0 466 -282 391 18 10 1451 1691 10 0 406 -283 111 392 -10 4616 4856 10 606 0 -284 330 281 -10 5262 5502 10 188 0 -285 344 203 14 609 849 10 0 841 -286 91 235 -20 1016 1256 10 627 0 -287 346 60 10 1225 1465 10 0 490 -288 483 27 -10 1772 2012 10 167 0 -289 382 498 -20 1177 1417 10 753 0 -290 457 492 -30 1972 2212 10 999 0 -291 291 213 23 4971 5211 10 0 384 -292 154 374 -10 3688 3928 10 925 0 -293 225 196 10 163 403 10 0 31 -294 94 40 -10 4212 4452 10 851 0 -295 0 356 -12 4285 4525 10 130 0 -296 297 283 -15 5338 5578 10 222 0 -297 371 423 10 724 964 10 0 398 -298 417 217 30 694 934 10 0 515 -299 500 228 -10 3067 3307 10 883 0 -300 412 214 10 544 784 10 0 692 -301 442 289 25 704 944 10 0 724 -302 157 269 -20 6245 6485 10 763 0 -303 440 241 -10 1145 1385 10 573 0 -304 100 266 -10 526 766 10 126 0 -305 111 178 18 506 746 10 0 748 -306 91 101 10 1133 1373 10 0 310 -307 25 307 10 938 1178 10 0 100 -308 135 400 20 1134 1374 10 0 815 -309 58 458 10 1231 1471 10 0 745 -310 133 26 -10 1187 1427 10 306 0 -311 211 386 20 446 686 10 0 657 -312 94 97 20 796 1036 10 0 881 -313 30 155 -20 5062 5302 10 762 0 -314 208 184 20 234 474 10 0 988 -315 394 333 20 717 957 10 0 577 -316 355 180 30 489 729 10 0 874 -317 241 180 -28 6718 6958 10 411 0 -318 21 485 30 1293 1533 10 0 111 -319 80 251 -10 1154 1394 10 18 0 -320 476 61 -20 1735 1975 10 242 0 -321 406 94 10 851 1091 10 0 523 -322 364 71 -20 5334 5574 10 716 0 -323 418 221 10 1105 1345 10 0 934 -324 274 441 12 2718 2958 10 0 597 -325 304 97 20 667 907 10 0 797 -326 297 102 10 549 789 10 0 810 -327 250 405 -15 586 826 10 370 0 -328 111 463 20 1226 1466 10 0 465 -329 408 279 20 820 1060 10 0 707 -330 263 418 -10 1054 1294 10 549 0 -331 480 119 -20 2454 2694 10 701 0 -332 420 383 -30 3868 4108 10 213 0 -333 142 14 -4 3281 3521 10 526 0 -334 73 328 20 654 894 10 0 60 -335 50 438 20 1287 1527 10 0 586 -336 441 7 20 1506 1746 10 0 546 -337 462 14 20 1528 1768 10 0 183 -338 360 294 -18 5611 5851 10 541 0 -339 58 39 12 4592 4832 10 0 921 -340 58 391 -27 3469 3709 10 513 0 -341 410 285 20 711 951 10 0 3 -342 96 97 20 748 988 10 0 743 -343 21 64 -26 1349 1589 10 373 0 -344 238 210 30 475 715 0 0 1001 -345 479 121 10 1171 1411 10 0 781 -346 200 178 20 314 554 10 0 525 -347 216 341 -20 2556 2796 10 845 0 -348 48 437 -10 3155 3395 10 924 0 -349 200 270 20 176 416 10 0 367 -350 357 181 20 538 778 10 0 74 -351 476 174 30 1237 1477 10 0 85 -352 400 286 10 547 787 10 0 486 -353 351 481 -30 1227 1467 10 719 0 -354 270 400 10 485 725 10 0 680 -355 95 234 -10 593 833 10 955 0 -356 128 113 -20 1391 1631 10 699 0 -357 133 455 -18 3172 3412 10 276 0 -358 16 463 20 1439 1679 10 0 32 -359 59 388 -30 2591 2831 10 19 0 -360 376 190 -30 561 801 10 52 0 -361 481 122 30 1122 1362 10 0 558 -362 266 405 20 808 1048 10 0 839 -363 374 232 33 381 621 10 0 215 -364 398 20 20 1016 1256 10 0 377 -365 481 26 -20 1167 1407 10 165 0 -366 63 444 -10 1459 1699 10 102 0 -367 89 290 -20 610 850 10 349 0 -368 246 314 -15 5721 5961 10 257 0 -369 40 304 16 4519 4759 10 0 744 -370 262 369 15 457 697 10 0 327 -371 323 29 7 4490 4730 0 0 1004 -372 89 65 16 2821 3061 10 0 415 -373 144 35 26 839 1079 10 0 343 -374 200 265 10 550 790 10 0 791 -375 436 264 -10 626 866 10 771 0 -376 15 457 -30 1234 1474 10 975 0 -377 397 20 -20 1060 1300 10 364 0 -378 328 491 21 2653 2893 10 0 277 -379 399 175 -10 2928 3168 10 155 0 -380 432 2 20 1806 2046 10 0 643 -381 63 336 -5 1005 1245 10 922 0 -382 6 296 -10 1219 1459 10 421 0 -383 146 376 8 877 1117 10 0 119 -384 295 247 -23 5154 5394 10 291 0 -385 235 33 -20 5288 5528 10 479 0 -386 233 204 -10 157 397 10 660 0 -387 142 360 20 6068 6308 10 0 246 -388 177 156 25 609 849 10 0 241 -389 315 287 -30 532 772 10 402 0 -390 452 172 9 2373 2613 10 0 677 -391 263 153 -20 1590 1830 10 20 0 -392 493 493 -29 3366 3606 10 651 0 -393 320 283 30 382 622 10 0 960 -394 64 5 -15 4456 4696 10 559 0 -395 95 235 -20 503 743 10 991 0 -396 203 211 -20 5166 5406 10 896 0 -397 16 497 -10 1643 1883 10 905 0 -398 348 348 -10 3679 3919 10 297 0 -399 485 104 -3 3118 3358 10 454 0 -400 330 147 -7 3334 3574 10 189 0 -401 443 237 20 694 934 10 0 901 -402 316 286 30 487 727 10 0 389 -403 335 46 -10 5307 5547 10 198 0 -404 381 495 20 1230 1470 10 0 164 -405 364 173 30 661 901 10 0 678 -406 267 162 -10 5737 5977 10 282 0 -407 214 245 8 36 276 10 0 6 -408 92 234 -20 879 1119 10 116 0 -409 347 459 25 1858 2098 10 0 807 -410 30 7 -8 4694 4934 10 92 0 -411 120 37 28 3041 3281 10 0 317 -412 397 153 -4 3470 3710 10 64 0 -413 210 29 -20 4143 4383 10 944 0 -414 87 285 -20 904 1144 10 976 0 -415 132 32 -16 3078 3318 10 372 0 -416 390 294 -17 889 1129 10 931 0 -417 67 451 -31 4802 5042 10 899 0 -418 24 68 -20 1598 1838 10 572 0 -419 146 439 10 977 1217 10 0 197 -420 209 212 -20 6051 6291 10 872 0 -421 6 292 10 910 1150 10 0 382 -422 18 63 -40 1296 1536 10 885 0 -423 149 98 4 4600 4840 10 0 895 -424 91 268 10 918 1158 10 0 173 -425 103 177 -25 2446 2686 10 497 0 -426 367 178 20 661 901 10 0 600 -427 225 269 -22 5023 5263 10 484 0 -428 443 246 -20 859 1099 10 483 0 -429 306 42 -20 1847 2087 10 274 0 -430 374 306 -6 3916 4156 10 498 0 -431 413 421 10 1152 1392 10 0 262 -432 470 405 -18 3643 3883 10 104 0 -433 33 278 -29 5889 6129 10 177 0 -434 149 458 -27 4595 4835 10 120 0 -435 257 57 -21 4844 5084 10 864 0 -436 272 403 -34 699 939 10 271 0 -437 221 291 9 124 364 10 0 847 -438 1 101 8 4969 5209 10 0 109 -439 332 459 -20 1415 1655 10 808 0 -440 220 392 20 971 1211 10 0 834 -441 253 50 27 843 1083 10 0 445 -442 250 441 -8 2963 3203 10 761 0 -443 471 484 -10 1299 1539 10 671 0 -444 480 152 -10 4026 4266 10 731 0 -445 404 83 -27 1134 1374 10 441 0 -446 476 94 -10 1019 1259 10 245 0 -447 458 213 -23 4453 4693 10 667 0 -448 215 395 20 908 1148 10 0 237 -449 85 288 20 668 908 10 0 251 -450 179 75 -10 2900 3140 10 670 0 -451 228 287 21 52 292 10 0 867 -452 397 18 -10 1108 1348 10 1000 0 -453 238 204 20 359 599 10 0 710 -454 488 3 3 1542 1782 10 0 399 -455 407 88 -10 1238 1478 10 171 0 -456 459 14 20 1181 1421 10 0 965 -457 120 17 30 1056 1296 10 0 266 -458 235 316 -20 2563 2803 10 818 0 -459 370 382 11 3475 3715 10 0 722 -460 405 454 11 5152 5392 10 0 250 -461 17 458 -30 1672 1912 10 593 0 -462 43 135 31 827 1067 10 0 596 -463 318 497 -20 3355 3595 10 480 0 -464 199 268 20 225 465 10 0 161 -465 111 467 -20 1088 1328 10 328 0 -466 138 438 -18 1089 1329 10 281 0 -467 172 314 9 2122 2362 10 0 979 -468 494 468 31 1350 1590 10 0 910 -469 35 303 20 766 1006 10 0 505 -470 341 59 -16 3099 3339 10 112 0 -471 423 221 9 973 1213 10 0 260 -472 395 295 20 785 1025 10 0 95 -473 413 417 -15 1364 1604 10 10 0 -474 339 60 20 784 1024 10 0 941 -475 277 428 7 1901 2141 10 0 29 -476 176 199 -10 239 479 10 706 0 -477 265 240 9 18 258 10 0 865 -478 365 190 -17 5850 6090 10 726 0 -479 133 53 20 1058 1298 10 0 385 -480 387 488 20 1388 1628 10 0 463 -481 385 295 20 449 689 10 0 669 -482 491 369 -20 2858 3098 10 693 0 -483 445 273 20 971 1211 10 0 428 -484 195 273 22 118 358 10 0 427 -485 313 493 -30 4712 4952 10 240 0 -486 495 227 -10 1316 1556 10 352 0 -487 241 403 -10 821 1061 10 534 0 -488 30 72 -10 1666 1906 10 640 0 -489 21 487 10 1341 1581 10 0 783 -490 324 99 -10 1292 1532 10 287 0 -491 453 318 -10 1435 1675 10 146 0 -492 443 272 10 1020 1260 10 0 599 -493 447 184 27 1638 1878 10 0 527 -494 366 288 -20 2675 2915 10 891 0 -495 440 284 -11 3347 3587 10 794 0 -496 13 314 -30 915 1155 10 937 0 -497 72 227 25 2195 2435 10 0 425 -498 377 385 6 3405 3645 10 0 430 -499 477 478 -20 1509 1749 10 71 0 -500 204 185 20 593 833 10 0 915 -501 226 191 20 312 552 10 0 636 -502 330 138 18 4378 4618 10 0 159 -503 185 434 -30 2234 2474 10 689 0 -504 483 22 10 1276 1516 10 0 926 -505 71 282 -20 2507 2747 10 469 0 -506 60 5 18 4115 4355 10 0 79 -507 189 402 -30 2084 2324 10 609 0 -508 134 211 35 422 662 10 0 836 -509 146 313 -40 4721 4961 10 17 0 -510 21 146 -30 1887 2127 10 870 0 -511 37 281 -20 1913 2153 10 101 0 -512 416 417 -20 1312 1552 10 679 0 -513 44 311 27 1570 1810 10 0 340 -514 361 181 20 728 968 10 0 68 -515 444 242 -30 802 1042 10 298 0 -516 444 271 10 922 1162 10 0 764 -517 359 179 20 589 829 10 0 588 -518 388 334 -20 572 812 10 63 0 -519 401 164 -10 2425 2665 10 713 0 -520 499 316 -20 2427 2667 10 11 0 -521 399 106 20 1147 1387 10 0 730 -522 425 215 10 856 1096 10 0 233 -523 407 98 -10 754 994 10 321 0 -524 406 460 -25 2817 3057 10 712 0 -525 88 95 -20 1021 1261 10 346 0 -526 95 64 4 3004 3244 10 0 333 -527 306 229 -27 5221 5461 10 493 0 -528 273 55 -10 665 905 10 568 0 -529 384 149 -24 4729 4969 10 33 0 -530 122 35 10 921 1161 10 0 145 -531 308 199 -22 5973 6213 10 790 0 -532 390 301 -30 601 841 10 792 0 -533 300 108 -10 482 722 10 695 0 -534 267 400 10 869 1109 10 0 487 -535 8 300 10 1363 1603 10 0 569 -536 105 181 -11 6065 6305 10 43 0 -537 398 325 30 873 1113 10 0 755 -538 166 247 1 216 456 10 0 887 -539 140 431 -38 768 1008 10 581 0 -540 253 118 19 2129 2369 10 0 153 -541 359 246 18 5631 5871 10 0 338 -542 321 277 10 184 424 10 0 948 -543 168 59 6 1404 1644 10 0 772 -544 406 285 20 655 895 10 0 253 -545 391 334 20 664 904 10 0 207 -546 437 19 -20 3996 4236 10 336 0 -547 201 278 13 106 346 10 0 625 -548 435 267 20 1231 1471 10 0 36 -549 245 408 10 755 995 10 0 330 -550 16 462 -18 1483 1723 10 144 0 -551 107 374 -20 3597 3837 10 160 0 -552 477 97 10 1071 1311 10 0 846 -553 346 57 20 1173 1413 10 0 219 -554 14 459 -10 1283 1523 10 601 0 -555 102 6 -20 5774 6014 10 827 0 -556 359 287 24 340 580 10 0 592 -557 297 131 -10 4602 4842 10 963 0 -558 282 1 -30 4110 4350 10 361 0 -559 21 70 15 3025 3265 10 0 394 -560 440 244 10 1004 1244 10 0 674 -561 482 104 -10 3170 3410 10 235 0 -562 120 261 -12 3113 3353 10 734 0 -563 125 29 30 1073 1313 10 0 156 -564 292 32 -20 857 1097 10 852 0 -565 262 92 -10 2462 2702 10 736 0 -566 68 160 -8 4483 4723 10 995 0 -567 405 276 -20 877 1117 10 685 0 -568 277 50 10 731 971 10 0 528 -569 32 319 -10 1542 1782 10 535 0 -570 344 70 24 4523 4763 10 0 997 -571 481 84 17 1962 2202 10 0 232 -572 21 68 20 1546 1786 10 0 418 -573 441 244 10 1048 1288 10 0 303 -574 57 43 -27 4034 4274 10 898 0 -575 1 293 -20 1011 1251 10 993 0 -576 481 96 -20 1128 1368 10 888 0 -577 471 368 -20 1652 1892 10 315 0 -578 236 126 23 379 619 10 0 21 -579 406 99 -10 848 1088 10 602 0 -580 303 186 -10 5357 5597 10 110 0 -581 225 369 38 366 606 10 0 539 -582 412 453 10 1128 1368 10 0 1 -583 104 349 -22 3977 4217 10 139 0 -584 173 182 25 291 531 10 0 186 -585 111 464 10 1182 1422 10 0 265 -586 53 440 -20 1232 1472 10 335 0 -587 69 336 20 812 1052 10 0 615 -588 359 182 -20 777 1017 10 517 0 -589 13 459 20 1327 1567 10 0 858 -590 244 277 18 5145 5385 0 0 1005 -591 484 177 -10 946 1186 10 725 0 -592 452 206 -24 1909 2149 10 556 0 -593 22 483 30 1184 1424 10 0 461 -594 452 110 14 1301 1541 10 0 35 -595 347 192 18 5893 6133 0 0 1003 -596 95 92 -31 951 1191 10 462 0 -597 368 311 -12 3644 3884 10 324 0 -598 479 387 13 1530 1770 10 0 897 -599 479 169 -10 1174 1414 10 492 0 -600 497 266 -20 2930 3170 10 426 0 -601 66 336 10 953 1193 10 0 554 -602 376 195 10 664 904 10 0 579 -603 401 281 -30 984 1224 10 201 0 -604 441 177 -24 3945 4185 10 633 0 -605 231 203 20 206 446 10 0 688 -606 21 488 10 1385 1625 10 0 283 -607 231 204 20 541 781 10 0 760 -608 122 422 -34 5767 6007 10 972 0 -609 65 453 30 1067 1307 10 0 507 -610 206 261 10 670 910 10 0 639 -611 466 149 16 4684 4924 10 0 877 -612 313 119 -20 803 1043 10 272 0 -613 90 274 20 657 897 10 0 635 -614 39 162 -20 2201 2441 10 51 0 -615 35 306 -20 858 1098 10 587 0 -616 437 15 -9 1361 1601 10 908 0 -617 307 412 -17 1555 1795 10 929 0 -618 79 291 10 775 1015 10 0 803 -619 64 437 -10 3613 3853 10 704 0 -620 376 92 -20 3902 4142 10 665 0 -621 129 27 -24 1130 1370 10 694 0 -622 196 489 -33 4061 4301 10 208 0 -623 51 286 14 5776 6016 0 0 1007 -624 20 488 -17 1429 1669 10 147 0 -625 13 455 -13 1183 1423 10 547 0 -626 170 347 -20 1683 1923 10 823 0 -627 92 230 20 695 935 10 0 286 -628 117 467 -21 898 1138 10 228 0 -629 413 217 20 596 836 10 0 209 -630 405 450 -13 933 1173 10 227 0 -631 394 322 -17 4039 4279 10 8 0 -632 125 61 26 2387 2627 10 0 187 -633 238 123 24 3064 3304 10 0 604 -634 11 403 -10 1312 1552 10 157 0 -635 89 272 -20 706 946 10 613 0 -636 304 102 -20 727 967 10 501 0 -637 478 121 40 1215 1455 10 0 205 -638 408 84 -20 1077 1317 10 264 0 -639 376 494 -10 1019 1259 10 610 0 -640 20 73 10 1041 1281 10 0 488 -641 159 299 -27 4002 4242 10 61 0 -642 95 382 -20 865 1105 10 176 0 -643 352 63 -20 4653 4893 10 380 0 -644 365 274 14 350 590 10 0 798 -645 30 301 10 1050 1290 10 0 97 -646 351 5 -10 1924 2164 10 150 0 -647 197 267 10 375 615 10 0 258 -648 498 171 12 4966 5206 10 0 178 -649 468 352 9 3013 3253 10 0 184 -650 418 251 -21 4727 4967 10 843 0 -651 489 437 29 2767 3007 10 0 392 -652 251 63 -10 3890 4130 10 23 0 -653 132 55 -16 1009 1249 10 47 0 -654 281 96 -20 4443 4683 10 223 0 -655 333 293 27 2408 2648 10 0 757 -656 255 487 -20 1532 1772 10 878 0 -657 207 400 -20 702 942 10 311 0 -658 469 489 -10 2162 2402 10 15 0 -659 244 254 20 341 581 10 0 728 -660 233 207 10 105 345 10 0 386 -661 441 60 -22 5775 6015 10 780 0 -662 411 379 25 4713 4953 10 0 83 -663 178 72 -12 2967 3207 10 796 0 -664 51 447 -20 1118 1358 10 837 0 -665 478 118 20 1357 1597 10 0 620 -666 141 426 -30 2066 2306 10 987 0 -667 295 89 23 2908 3148 10 0 447 -668 112 433 29 880 1120 10 0 152 -669 320 211 -20 3910 4150 10 481 0 -670 400 103 10 962 1202 10 0 450 -671 408 453 10 1072 1312 10 0 443 -672 435 180 -10 838 1078 10 768 0 -673 432 66 -5 4225 4465 10 953 0 -674 374 116 -10 2289 2529 10 560 0 -675 478 102 10 1237 1477 10 0 172 -676 335 57 30 724 964 10 0 41 -677 385 239 -9 3082 3322 10 390 0 -678 386 245 -30 1856 2096 10 405 0 -679 208 396 20 646 886 10 0 512 -680 380 489 -10 1456 1696 10 354 0 -681 380 498 -19 1129 1369 10 256 0 -682 440 7 20 1195 1435 10 0 122 -683 434 245 10 1307 1547 10 0 863 -684 90 232 10 786 1026 10 0 945 -685 389 334 20 616 856 10 0 567 -686 241 205 -10 412 652 10 261 0 -687 18 24 32 2453 2693 10 0 717 -688 57 183 -20 4341 4581 10 605 0 -689 59 457 30 1277 1517 10 0 503 -690 442 243 -20 1094 1334 10 971 0 -691 402 281 -20 940 1180 10 210 0 -692 445 237 -10 742 982 10 300 0 -693 441 273 20 1069 1309 10 0 482 -694 31 175 24 926 1166 10 0 621 -695 234 202 10 259 499 10 0 533 -696 52 303 -20 1705 1945 10 822 0 -697 167 445 -21 5588 5828 10 185 0 -698 179 286 8 1305 1545 10 0 193 -699 269 48 20 1062 1302 10 0 356 -700 165 59 27 3711 3951 10 0 34 -701 461 8 20 1416 1656 10 0 331 -702 421 415 30 881 1121 10 0 936 -703 59 459 -12 1185 1425 10 920 0 -704 24 492 10 1788 2028 10 0 619 -705 55 449 20 994 1234 10 0 255 -706 224 192 10 220 460 10 0 476 -707 444 269 -20 874 1114 10 329 0 -708 491 20 20 1514 1754 10 0 804 -709 313 126 -40 913 1153 10 884 0 -710 283 438 -20 866 1106 10 453 0 -711 352 241 -7 3109 3349 10 91 0 -712 398 476 25 1612 1852 10 0 524 -713 442 247 10 904 1144 10 0 519 -714 217 207 -13 5470 5710 10 129 0 -715 233 87 18 950 1190 10 0 842 -716 479 127 20 1019 1259 10 0 322 -717 6 53 -32 2288 2528 10 687 0 -718 478 300 -10 3498 3738 10 973 0 -719 378 493 30 1067 1307 10 0 353 -720 303 78 12 600 840 10 0 236 -721 344 62 10 1326 1566 10 0 723 -722 371 315 -11 4603 4843 10 459 0 -723 200 78 -10 3911 4151 10 721 0 -724 413 391 -25 808 1048 10 301 0 -725 415 216 10 645 885 10 0 591 -726 397 57 17 5844 6084 10 0 478 -727 293 228 19 73 313 10 0 89 -728 0 297 -20 1111 1351 10 659 0 -729 435 20 -10 1466 1706 10 813 0 -730 195 111 -20 3932 4172 10 521 0 -731 417 218 10 1052 1292 10 0 444 -732 340 54 -30 891 1131 10 849 0 -733 132 57 20 918 1158 10 0 935 -734 210 379 12 2775 3015 10 0 562 -735 228 260 -40 6362 6602 10 5 0 -736 399 104 10 1099 1339 10 0 565 -737 95 277 20 1038 1278 10 0 882 -738 360 284 -22 2606 2846 10 992 0 -739 53 466 9 1280 1520 10 0 980 -740 112 465 10 1137 1377 10 0 217 -741 313 391 5 538 778 10 0 746 -742 93 235 10 925 1165 10 0 191 -743 125 32 -20 978 1218 10 342 0 -744 215 282 -16 5702 5942 10 369 0 -745 224 320 -10 5075 5315 10 309 0 -746 134 428 -5 1172 1412 10 741 0 -747 26 490 10 1839 2079 10 0 128 -748 44 115 -18 865 1105 10 305 0 -749 438 127 -24 3704 3944 10 166 0 -750 239 15 -10 2355 2595 10 239 0 -751 342 54 20 939 1179 10 0 96 -752 109 463 -10 1274 1514 10 2 0 -753 199 187 20 447 687 10 0 289 -754 201 188 10 495 735 10 0 39 -755 399 301 -30 717 957 10 537 0 -756 484 171 -40 1113 1353 10 26 0 -757 272 234 -27 6301 6541 10 655 0 -758 380 350 15 3406 3646 10 0 181 -759 140 108 29 4225 4465 10 0 799 -760 228 199 -20 477 717 10 607 0 -761 245 461 8 2537 2777 10 0 442 -762 305 107 20 841 1081 10 0 313 -763 231 195 20 377 617 10 0 302 -764 450 265 -10 805 1045 10 516 0 -765 273 149 -5 5951 6191 10 16 0 -766 12 358 -10 4837 5077 10 59 0 -767 315 121 10 752 992 10 0 970 -768 420 213 10 754 994 10 0 672 -769 331 134 -24 4435 4675 10 103 0 -770 84 377 -19 3645 3885 10 857 0 -771 320 280 10 280 520 10 0 375 -772 89 185 -6 2339 2579 10 543 0 -773 472 481 20 1246 1486 10 0 962 -774 422 420 -10 990 1230 10 892 0 -775 475 267 7 3058 3298 10 0 132 -776 470 125 -22 892 1132 10 784 0 -777 435 268 -30 1187 1427 10 149 0 -778 409 155 -30 621 861 10 162 0 -779 243 248 30 36 276 10 0 919 -780 488 96 22 4205 4445 10 0 661 -781 341 72 -10 3159 3399 10 345 0 -782 58 449 30 1391 1631 10 0 280 -783 16 460 -10 1583 1823 10 489 0 -784 480 136 22 907 1147 10 0 776 -785 162 388 11 4444 4684 10 0 13 -786 47 208 30 846 1086 10 0 800 -787 324 127 30 454 694 10 0 169 -788 87 96 -32 1067 1307 10 234 0 -789 140 137 -33 2219 2459 10 7 0 -790 314 205 22 6047 6287 10 0 531 -791 96 346 -10 681 921 10 374 0 -792 321 280 30 236 476 10 0 532 -793 245 251 10 5 245 10 0 838 -794 436 295 11 2053 2293 10 0 495 -795 274 261 -14 6768 7008 10 226 0 -796 271 128 12 1322 1562 10 0 663 -797 275 45 -20 838 1078 10 325 0 -798 422 409 -14 817 1057 10 644 0 -799 146 188 -29 4880 5120 10 759 0 -800 93 96 -30 842 1082 10 786 0 -801 409 255 -11 6030 6270 10 840 0 -802 449 428 -10 4927 5167 10 848 0 -803 90 285 -10 1045 1285 10 618 0 -804 415 95 -20 4647 4887 10 708 0 -805 88 287 -10 994 1234 10 134 0 -806 379 196 -20 716 956 10 927 0 -807 368 452 -25 2620 2860 10 409 0 -808 202 186 20 544 784 10 0 439 -809 435 11 40 1129 1369 10 0 108 -810 269 46 -10 1014 1254 10 326 0 -811 7 292 -30 866 1106 10 869 0 -812 44 496 32 1547 1787 10 0 113 -813 478 99 10 1185 1425 10 0 729 -814 391 99 20 706 946 10 0 180 -815 132 477 -20 1249 1489 10 308 0 -816 24 65 -10 1401 1641 10 916 0 -817 130 247 17 360 600 10 0 50 -818 133 273 20 357 597 10 0 458 -819 347 62 10 1274 1514 10 0 270 -820 404 140 -5 4975 5215 10 977 0 -821 416 420 -20 1099 1339 10 974 0 -822 67 335 20 907 1147 10 0 696 -823 92 270 20 967 1207 10 0 626 -824 411 95 -20 911 1151 10 143 0 -825 132 479 11 910 1150 10 0 138 -826 366 334 5 1581 1821 10 0 24 -827 125 39 20 861 1101 10 0 555 -828 419 422 20 1045 1285 10 0 56 -829 460 2 -20 1352 1592 10 998 0 -830 67 334 20 863 1103 10 0 75 -831 448 414 23 4831 5071 10 0 912 -832 46 163 -18 3644 3884 10 190 0 -833 77 465 11 984 1224 10 0 12 -834 284 319 -20 3207 3447 10 440 0 -835 102 422 23 845 1085 10 0 966 -836 240 34 -35 6178 6418 10 508 0 -837 141 428 20 715 955 10 0 664 -838 204 269 -10 79 319 10 793 0 -839 144 439 -20 1025 1265 10 362 0 -840 470 417 11 2887 3127 10 0 801 -841 404 103 -14 906 1146 10 285 0 -842 5 281 -18 5426 5666 10 715 0 -843 487 320 21 3371 3611 10 0 650 -844 398 23 -10 964 1204 10 175 0 -845 90 296 20 546 786 10 0 347 -846 386 13 -10 1288 1528 10 552 0 -847 115 465 -9 989 1229 10 437 0 -848 473 475 10 1609 1849 10 0 802 -849 275 42 30 890 1130 10 0 732 -850 286 356 -30 328 568 10 93 0 -851 15 69 10 1107 1347 10 0 294 -852 267 44 20 963 1203 10 0 564 -853 243 399 10 879 1119 10 0 202 -854 390 249 -20 2267 2507 10 273 0 -855 210 391 30 506 746 10 0 906 -856 433 15 20 1071 1311 10 0 231 -857 24 259 19 1420 1660 10 0 770 -858 12 463 -20 1383 1623 10 589 0 -859 237 213 10 528 768 10 0 959 -860 182 480 31 1399 1639 10 0 862 -861 409 88 -20 1021 1261 10 903 0 -862 244 368 -31 1596 1836 10 860 0 -863 381 328 -10 2809 3049 10 683 0 -864 213 185 21 179 419 10 0 435 -865 482 141 -9 3983 4223 10 477 0 -866 319 124 20 652 892 10 0 990 -867 141 431 -21 812 1052 10 451 0 -868 198 264 -10 501 741 10 65 0 -869 69 334 30 764 1004 10 0 811 -870 299 98 30 607 847 10 0 510 -871 240 250 -10 90 330 10 230 0 -872 199 203 20 5769 6009 10 0 420 -873 459 17 20 1585 1825 10 0 263 -874 423 217 -30 907 1147 10 316 0 -875 477 179 20 831 1071 10 0 950 -876 213 397 10 809 1049 10 0 154 -877 405 187 -16 4942 5182 10 611 0 -878 269 402 20 751 991 10 0 656 -879 53 204 -10 4160 4400 10 118 0 -880 13 394 -20 1430 1670 10 996 0 -881 15 68 -20 1151 1391 10 312 0 -882 56 268 -20 4196 4436 10 737 0 -883 360 184 10 826 1066 10 0 299 -884 307 102 40 779 1019 10 0 709 -885 130 57 40 870 1110 10 0 422 -886 250 328 -30 935 1175 10 961 0 -887 91 231 -1 741 981 10 538 0 -888 479 176 20 886 1126 10 0 576 -889 420 224 10 1656 1896 10 0 956 -890 461 182 -20 2456 2696 10 87 0 -891 418 218 20 1008 1248 10 0 494 -892 419 418 10 936 1176 10 0 774 -893 336 493 20 5912 6152 10 0 141 -894 389 300 -10 555 795 10 909 0 -895 92 76 -4 4496 4736 10 423 0 -896 476 102 20 1285 1525 10 0 396 -897 418 399 -13 1691 1931 10 598 0 -898 109 56 27 839 1079 10 0 574 -899 13 465 31 3034 3274 10 0 417 -900 92 232 10 647 887 10 0 199 -901 394 47 -20 1192 1432 10 401 0 -902 16 287 12 1023 1263 10 0 243 -903 399 102 20 1008 1248 10 0 861 -904 143 158 12 490 730 10 0 27 -905 18 484 10 1240 1480 10 0 397 -906 250 411 -30 692 932 10 855 0 -907 19 273 25 4006 4246 10 0 911 -908 365 28 9 1013 1253 10 0 616 -909 387 297 10 501 741 10 0 894 -910 433 447 -31 3117 3357 10 468 0 -911 214 274 -25 5416 5656 10 907 0 -912 489 338 -23 5529 5769 10 831 0 -913 130 494 -9 2975 3215 10 984 0 -914 23 67 30 1497 1737 10 0 28 -915 374 489 -20 957 1197 10 500 0 -916 126 30 10 1027 1267 10 0 816 -917 112 467 10 1044 1284 10 0 76 -918 489 274 -20 2075 2315 10 105 0 -919 61 214 -30 1307 1547 10 779 0 -920 166 440 12 711 951 10 0 703 -921 56 75 -12 5691 5931 10 339 0 -922 210 276 5 71 311 10 0 381 -923 80 286 10 836 1076 10 0 45 -924 17 459 10 1628 1868 10 0 348 -925 66 448 10 961 1201 10 0 292 -926 351 128 -10 4953 5193 10 504 0 -927 352 176 20 384 624 10 0 806 -928 490 286 29 2029 2269 10 0 269 -929 247 219 17 31 271 10 0 617 -930 86 268 -10 809 1049 10 14 0 -931 398 329 17 551 791 10 0 416 -932 272 402 10 578 818 10 0 49 -933 317 123 20 701 941 10 0 254 -934 408 318 -10 2512 2752 10 323 0 -935 66 31 -20 4134 4374 10 733 0 -936 425 448 -30 3118 3358 10 702 0 -937 35 304 30 810 1050 10 0 496 -938 471 94 30 3935 4175 10 0 196 -939 470 473 -13 1664 1904 10 133 0 -940 224 56 -20 4686 4926 10 248 0 -941 343 47 -20 1048 1288 10 474 0 -942 52 18 28 3368 3608 10 0 151 -943 16 68 20 1195 1435 10 0 99 -944 195 185 20 389 629 10 0 413 -945 92 236 -10 971 1211 10 684 0 -946 76 462 18 3764 4004 0 0 1006 -947 124 56 20 805 1045 10 0 174 -948 481 454 -10 1222 1462 10 542 0 -949 477 483 20 1403 1643 10 0 200 -950 481 124 -20 1074 1314 10 875 0 -951 389 156 -2 2802 3042 10 249 0 -952 384 16 20 1342 1582 10 0 982 -953 492 34 5 3182 3422 10 0 673 -954 371 200 10 837 1077 10 0 121 -955 153 235 10 273 513 10 0 355 -956 428 202 -10 3555 3795 10 889 0 -957 257 391 22 6472 6712 0 0 1008 -958 421 218 10 956 1196 10 0 247 -959 206 186 -10 690 930 10 859 0 -960 393 301 -30 653 893 10 393 0 -961 204 187 30 641 881 10 0 886 -962 468 475 -20 1133 1373 10 773 0 -963 477 122 10 1260 1500 10 0 557 -964 100 66 -15 5539 5779 10 73 0 -965 489 27 -20 1625 1865 10 456 0 -966 12 451 -23 1126 1366 10 835 0 -967 197 270 30 323 563 10 0 203 -968 311 422 29 3892 4132 10 0 106 -969 489 17 -20 1460 1700 10 195 0 -970 13 214 -10 5354 5594 10 767 0 -971 440 247 20 952 1192 10 0 690 -972 28 467 34 5310 5550 10 0 608 -973 388 325 10 993 1233 10 0 718 -974 270 401 20 529 769 10 0 821 -975 5 445 30 1184 1424 10 0 376 -976 198 271 20 277 517 10 0 414 -977 480 131 5 2690 2930 10 0 820 -978 437 98 -26 4395 4635 10 985 0 -979 131 246 -9 3268 3508 10 467 0 -980 49 437 -9 1650 1890 10 739 0 -981 270 49 30 1108 1348 10 0 127 -982 337 41 -20 3949 4189 10 952 0 -983 318 280 20 328 568 10 0 170 -984 154 392 9 566 806 10 0 913 -985 493 111 26 2104 2344 10 0 978 -986 399 450 20 1375 1615 10 0 84 -987 67 452 30 1018 1258 10 0 666 -988 34 239 -20 816 1056 10 314 0 -989 343 276 15 266 506 10 0 179 -990 393 12 -20 1177 1417 10 866 0 -991 236 247 20 150 390 10 0 395 -992 340 291 22 1822 2062 10 0 738 -993 3 292 20 962 1202 10 0 575 -994 209 68 27 6212 6452 10 0 53 -995 18 225 8 2705 2945 10 0 566 -996 147 435 20 920 1160 10 0 880 -997 335 99 -24 4814 5054 10 570 0 -998 485 24 20 1225 1465 10 0 829 -999 470 475 30 1181 1421 10 0 290 -1000 341 58 10 835 1075 10 0 452 -1001 238 210 -30 475 715 10 344 0 -1002 448 404 -15 2336 2576 10 194 0 -1003 347 192 -18 5893 6133 10 595 0 -1004 323 29 -7 4490 4730 10 371 0 -1005 244 277 -18 5145 5385 10 590 0 -1006 76 462 -18 3764 4004 10 946 0 -1007 51 286 -14 5776 6016 10 623 0 -1008 257 391 -22 6472 6712 10 957 0 diff --git a/jsprit-instances/instances/lilim/1000/LRC2107.txt b/jsprit-instances/instances/lilim/1000/LRC2107.txt deleted file mode 100644 index e6be2c266..000000000 --- a/jsprit-instances/instances/lilim/1000/LRC2107.txt +++ /dev/null @@ -1,1012 +0,0 @@ -250 1000 1 -0 250 250 0 0 7284 0 0 0 -1 440 436 18 3440 3815 10 0 432 -2 214 394 10 776 1189 10 0 218 -3 476 483 10 1237 1722 10 0 949 -4 352 487 27 3511 3824 10 0 78 -5 230 197 40 451 642 10 0 429 -6 175 239 23 163 444 10 0 627 -7 133 202 33 1554 2251 10 0 832 -8 328 458 17 3046 3216 10 0 485 -9 25 499 10 1591 2088 10 0 111 -10 226 423 15 639 1056 10 0 276 -11 313 282 20 580 848 10 0 738 -12 60 454 10 1389 1510 10 0 280 -13 239 486 -33 5916 6061 10 208 0 -14 102 264 10 395 795 10 0 635 -15 408 452 -25 1028 1269 10 179 0 -16 451 62 -14 1044 1335 10 285 0 -17 203 390 40 362 1027 10 0 837 -18 92 233 -10 668 1242 10 742 0 -19 7 300 30 1081 1797 10 0 193 -20 409 90 20 946 1240 10 0 861 -21 307 108 10 689 1330 10 0 889 -22 347 54 -10 1000 1481 10 455 0 -23 406 87 -10 1065 1559 10 731 0 -24 371 332 14 1962 2395 10 0 494 -25 116 466 20 858 1270 10 0 102 -26 441 265 40 621 1077 10 0 577 -27 130 140 17 696 976 10 0 525 -28 80 117 -20 3157 3556 10 418 0 -29 421 387 15 3093 3436 10 0 495 -30 83 300 -20 1767 2350 10 160 0 -31 136 52 10 1149 1312 10 0 836 -32 18 462 -29 1550 1752 10 668 0 -33 390 120 -2 3978 4175 10 249 0 -34 188 119 -21 3723 4195 10 96 0 -35 467 114 -10 1340 1788 10 883 0 -36 440 292 24 3697 3944 10 0 67 -37 268 400 20 856 1210 10 0 49 -38 391 202 14 366 825 10 0 471 -39 377 432 20 3079 3693 10 0 332 -40 80 290 10 761 939 10 0 551 -41 439 15 20 1356 1509 10 0 726 -42 307 52 -10 3583 3901 10 118 0 -43 111 192 -18 4842 4873 10 283 0 -44 131 56 10 762 1405 10 0 916 -45 88 286 10 801 1338 10 0 823 -46 69 414 6 4975 5251 10 0 246 -47 41 232 16 686 1076 10 0 694 -48 323 77 36 5536 5825 10 0 406 -49 340 416 -20 1181 1508 10 37 0 -50 86 199 -30 1063 1280 10 805 0 -51 314 124 20 865 1103 10 0 643 -52 375 191 30 567 888 10 0 245 -53 226 175 -20 6675 6995 10 947 0 -54 242 106 -40 4966 5302 10 884 0 -55 417 417 10 1252 1525 10 0 843 -56 419 459 20 1300 1351 10 0 962 -57 389 11 -30 1153 1554 10 870 0 -58 450 416 -14 2212 2522 10 948 0 -59 246 255 10 419 601 10 0 581 -60 71 333 10 593 1078 10 0 569 -61 105 474 27 1800 2085 10 0 163 -62 20 489 10 1444 1743 10 0 119 -63 388 331 20 418 862 10 0 527 -64 92 259 -10 1522 1794 10 575 0 -65 200 261 10 567 885 10 0 746 -66 400 288 -20 453 784 10 481 0 -67 299 285 -24 4924 5227 10 36 0 -68 378 199 -33 627 1151 10 363 0 -69 325 147 -18 4469 5144 10 520 0 -70 421 386 -23 3192 3523 10 98 0 -71 404 447 20 756 1244 10 0 582 -72 412 478 -11 3529 4268 10 840 0 -73 26 67 -20 4976 5678 10 800 0 -74 358 183 20 685 1304 10 0 514 -75 30 302 -20 1054 1198 10 587 0 -76 176 470 -10 1951 2543 10 610 0 -77 96 270 -20 507 911 10 349 0 -78 243 408 -27 5724 5866 10 4 0 -79 60 29 32 5293 5729 10 0 964 -80 34 169 11 1784 2211 10 0 505 -81 407 280 10 798 990 10 0 412 -82 277 403 10 607 911 10 0 281 -83 498 456 -11 5636 5732 10 460 0 -84 384 491 20 1272 1630 10 0 277 -85 355 174 33 2858 2984 10 0 222 -86 97 288 -7 4865 5527 10 766 0 -87 316 284 20 311 806 10 0 389 -88 334 403 26 611 786 10 0 630 -89 415 223 20 1100 1459 10 0 638 -90 230 320 -20 4774 4883 10 101 0 -91 432 199 -10 2408 2820 10 690 0 -92 92 18 8 4257 4856 10 0 438 -93 273 300 30 122 319 10 0 850 -94 269 112 -7 4864 5357 10 232 0 -95 429 389 -20 1680 1833 10 512 0 -96 371 71 21 1131 1283 10 0 34 -97 5 297 10 1318 1451 10 0 127 -98 414 378 23 1713 2365 10 0 70 -99 38 15 -20 4277 4572 10 943 0 -100 2 295 -30 1103 1463 10 869 0 -101 237 254 20 332 454 10 0 90 -102 54 445 -20 1234 1350 10 25 0 -103 382 110 -5 4301 4718 10 977 0 -104 438 488 -10 1223 1515 10 431 0 -105 395 331 20 671 1182 10 0 713 -106 230 487 20 4381 4776 10 0 168 -107 249 407 -9 444 1066 10 437 0 -108 488 26 -20 1758 1825 10 682 0 -109 151 81 -3 6056 6527 10 555 0 -110 483 14 -20 1252 1774 10 165 0 -111 0 422 -10 3212 3477 10 9 0 -112 429 67 16 2914 3064 10 0 236 -113 195 464 -7 5976 6474 10 697 0 -114 356 256 19 269 580 10 0 515 -115 264 180 -31 6555 7011 10 592 0 -116 94 235 20 514 820 10 0 414 -117 474 96 30 1003 1171 10 0 665 -118 268 52 10 1056 1509 10 0 42 -119 44 440 -10 2826 3604 10 62 0 -120 7 382 -10 2977 3307 10 905 0 -121 459 53 -30 4264 4834 10 365 0 -122 491 25 -3 1452 1937 10 454 0 -123 439 243 -20 1131 1497 10 428 0 -124 210 185 20 245 365 10 0 125 -125 150 68 -20 1452 2051 10 124 0 -126 201 270 10 111 393 10 0 510 -127 0 188 -10 3690 3886 10 97 0 -128 103 464 -40 5037 5266 10 279 0 -129 325 56 -20 3053 3439 10 607 0 -130 44 344 -20 4205 4550 10 465 0 -131 418 75 -20 1545 2158 10 952 0 -132 472 57 -20 4955 5524 10 701 0 -133 460 328 13 552 1321 10 0 598 -134 89 270 10 711 1037 10 0 424 -135 374 190 20 286 981 10 0 672 -136 463 253 -20 4056 4440 10 386 0 -137 97 93 20 921 1122 10 0 204 -138 163 472 -9 2452 2895 10 503 0 -139 29 336 -20 1194 1578 10 334 0 -140 84 453 19 4914 4989 10 0 387 -141 294 421 26 6271 6453 10 0 957 -142 343 62 -19 1251 1729 10 727 0 -143 371 193 20 421 649 10 0 486 -144 142 372 18 409 895 10 0 839 -145 66 88 2 3092 3665 10 0 241 -146 395 332 10 669 1095 10 0 502 -147 93 413 -26 793 1017 10 791 0 -148 267 394 10 998 1196 10 0 826 -149 249 258 30 285 849 10 0 354 -150 472 129 10 770 1370 10 0 571 -151 87 3 -23 5575 6009 10 410 0 -152 62 326 20 986 1425 10 0 243 -153 212 186 -24 6634 7200 10 921 0 -154 241 402 -20 3875 4443 10 737 0 -155 439 266 10 632 970 10 0 492 -156 79 80 -12 5466 5711 10 339 0 -157 62 453 10 988 1490 10 0 554 -158 188 151 7 5022 5471 10 0 714 -159 386 154 -20 4257 4670 10 329 0 -160 38 301 20 1079 1406 10 0 30 -161 192 265 -30 374 740 10 838 0 -162 371 192 30 491 668 10 0 806 -163 64 294 -27 4217 4713 10 61 0 -164 381 494 -10 1275 1512 10 238 0 -165 437 12 20 1259 1498 10 0 110 -166 186 135 -9 2759 3103 10 477 0 -167 459 10 -20 1282 1518 10 829 0 -168 175 422 -20 5685 6006 10 106 0 -169 274 48 10 663 1147 10 0 364 -170 488 173 20 1136 1214 10 0 795 -171 398 97 -20 691 1101 10 927 0 -172 385 17 40 2988 3603 10 0 447 -173 180 283 -31 2878 3191 10 860 0 -174 71 12 -27 923 1540 10 898 0 -175 343 49 10 840 1399 10 0 616 -176 248 251 20 2 174 10 0 464 -177 7 194 -16 3728 4003 10 772 0 -178 322 290 -9 5765 6186 10 338 0 -179 410 399 25 850 1141 10 0 15 -180 398 103 30 835 1513 10 0 321 -181 385 285 13 3243 3821 10 0 722 -182 179 497 1 5551 5858 10 0 893 -183 464 13 -20 1391 1808 10 856 0 -184 492 335 10 3250 3496 10 0 296 -185 27 464 -5 5107 5341 10 922 0 -186 231 29 -31 4704 5226 10 723 0 -187 157 38 3 4044 4458 10 0 994 -188 439 268 -20 1079 1422 10 315 0 -189 149 214 -20 1859 2117 10 822 0 -190 187 73 -10 1025 1432 10 621 0 -191 429 169 -31 3651 3691 10 918 0 -192 350 199 -19 4513 5218 10 778 0 -193 60 231 -30 3993 4335 10 19 0 -194 448 404 15 2268 2643 10 0 392 -195 481 20 20 1055 1840 10 0 242 -196 436 25 -20 4991 5387 10 474 0 -197 111 459 20 1305 1684 10 0 562 -198 389 17 10 1237 1808 10 0 282 -199 148 208 22 1941 2391 10 0 882 -200 475 477 -10 1538 1818 10 671 0 -201 390 325 -20 977 1153 10 210 0 -202 346 354 -15 3117 3543 10 758 0 -203 91 266 -10 751 1230 10 955 0 -204 17 65 -20 1176 1559 10 137 0 -205 391 112 -30 3924 4198 10 612 0 -206 224 203 20 71 358 10 0 248 -207 426 231 -23 4123 4225 10 604 0 -208 260 472 33 4122 4286 10 0 13 -209 265 0 -27 3450 3838 10 470 0 -210 391 293 20 648 1278 10 0 201 -211 411 421 20 1053 1586 10 0 213 -212 132 30 20 1173 1553 10 0 700 -213 475 480 -20 1308 1847 10 211 0 -214 286 244 -8 4901 5490 10 299 0 -215 436 237 -10 546 946 10 725 0 -216 402 284 -30 561 875 10 393 0 -217 287 397 12 2117 2518 10 0 745 -218 272 420 -10 5441 5766 10 2 0 -219 477 120 -10 1120 1736 10 552 0 -220 145 434 20 743 1241 10 0 880 -221 33 286 -16 6026 6461 10 842 0 -222 370 262 -33 4326 4589 10 85 0 -223 393 20 -10 1421 1824 10 239 0 -224 330 308 -10 4683 4800 10 473 0 -225 246 398 40 395 790 10 0 448 -226 482 184 -12 4360 4615 10 646 0 -227 451 305 13 658 1009 10 0 649 -228 226 316 21 70 528 10 0 917 -229 110 459 30 1155 1747 10 0 475 -230 244 250 10 10 204 10 0 862 -231 458 16 20 1052 1453 0 0 1003 -232 390 34 7 4077 4526 10 0 94 -233 423 214 -20 644 1210 10 401 0 -234 219 215 32 46 590 10 0 881 -235 326 118 10 548 755 10 0 553 -236 365 74 -16 3270 3637 10 112 0 -237 331 356 -19 2869 2945 10 656 0 -238 210 398 10 700 1053 10 0 164 -239 403 93 10 1118 1728 10 0 223 -240 248 404 30 503 812 10 0 906 -241 65 62 -2 3612 4320 10 145 0 -242 460 13 -20 1225 1469 10 195 0 -243 0 293 -20 1105 1246 10 152 0 -244 211 248 26 39 445 10 0 761 -245 484 174 -30 1049 1187 10 52 0 -246 175 352 -6 6469 6971 10 46 0 -247 455 168 -25 3357 3698 10 600 0 -248 224 191 -20 119 649 10 206 0 -249 439 156 2 1843 2484 10 0 33 -250 434 359 -15 5577 5681 10 934 0 -251 118 314 26 1220 1601 10 0 258 -252 234 246 10 214 423 10 0 900 -253 406 450 20 922 1272 10 0 939 -254 75 118 21 1560 1832 10 0 340 -255 115 395 -11 3188 3454 10 825 0 -256 329 456 -10 972 1141 10 932 0 -257 218 403 -2 5149 5525 10 524 0 -258 149 341 -26 1433 1919 10 251 0 -259 253 74 -10 5165 5755 10 846 0 -260 436 241 -20 1293 1445 10 518 0 -261 238 203 10 148 722 10 0 961 -262 405 455 -30 1251 1595 10 702 0 -263 485 27 -10 1772 1916 10 1000 0 -264 323 118 -20 497 910 10 273 0 -265 330 371 1 2104 2484 10 0 979 -266 25 65 -30 1344 1787 10 779 0 -267 406 96 20 875 972 10 0 521 -268 49 451 -10 1063 1296 10 925 0 -269 307 249 -21 5462 5670 10 650 0 -270 178 135 -15 5971 6259 10 559 0 -271 299 353 34 172 740 10 0 986 -272 236 213 20 86 230 10 0 453 -273 355 177 20 454 659 10 0 264 -274 394 23 20 1563 1787 10 0 390 -275 306 235 25 93 371 10 0 820 -276 90 477 -15 944 1278 10 10 0 -277 379 486 -20 2448 3046 10 84 0 -278 435 16 10 1406 1653 10 0 444 -279 8 497 40 1497 1884 10 0 128 -280 150 484 -10 2534 2587 10 12 0 -281 213 399 -10 785 1207 10 82 0 -282 391 18 -10 1483 1659 10 198 0 -283 111 392 18 4633 4839 10 0 43 -284 330 281 -27 5204 5559 10 951 0 -285 344 203 14 682 776 10 0 16 -286 91 235 10 902 1371 10 0 698 -287 346 60 -20 1149 1541 10 903 0 -288 483 27 -9 1709 2074 10 908 0 -289 382 498 -30 889 1705 10 639 0 -290 457 492 -10 1907 2277 10 848 0 -291 291 213 -10 4758 5424 10 771 0 -292 154 374 -25 3537 4078 10 497 0 -293 225 196 10 201 365 10 0 652 -294 94 40 -10 4223 4441 10 640 0 -295 0 356 -30 4244 4565 10 782 0 -296 297 283 -10 5205 5711 10 184 0 -297 371 423 10 750 939 10 0 828 -298 417 217 -20 638 991 10 629 0 -299 500 228 8 3013 3361 10 0 214 -300 412 214 10 518 810 10 0 522 -301 442 289 25 696 952 10 0 973 -302 157 269 -18 6198 6532 10 433 0 -303 440 241 -10 1201 1330 10 560 0 -304 100 266 20 592 700 10 0 613 -305 111 178 18 461 791 10 0 395 -306 91 101 -14 1056 1449 10 496 0 -307 25 307 -20 905 1210 10 830 0 -308 135 400 -8 1104 1404 10 383 0 -309 58 458 -30 1093 1610 10 867 0 -310 133 26 -30 1259 1354 10 563 0 -311 211 386 20 396 736 10 0 586 -312 94 97 20 754 1078 10 0 717 -313 30 155 9 4973 5391 0 0 1004 -314 208 184 -21 258 450 10 864 0 -315 394 333 20 598 1076 10 0 188 -316 355 180 30 461 756 10 0 866 -317 241 180 13 6824 6853 0 0 1005 -318 21 485 30 1287 1540 10 0 417 -319 80 251 14 1008 1540 10 0 434 -320 476 61 -20 1595 2114 10 588 0 -321 406 94 -30 748 1194 10 180 0 -322 364 71 -10 5202 5706 10 323 0 -323 418 221 10 1138 1311 10 0 322 -324 274 441 -12 2570 3106 10 734 0 -325 304 97 -10 462 1113 10 326 0 -326 297 102 10 519 819 10 0 325 -327 250 405 20 574 839 10 0 710 -328 111 463 20 1139 1554 10 0 834 -329 408 279 20 782 1097 10 0 159 -330 263 418 25 1106 1242 10 0 459 -331 480 119 7 2306 2842 10 0 938 -332 420 383 -20 3879 4096 10 39 0 -333 142 14 18 3107 3695 10 0 413 -334 73 328 20 583 965 10 0 139 -335 50 438 -12 1396 1418 10 920 0 -336 441 7 20 1404 1849 10 0 873 -337 462 14 -10 1231 2066 10 452 0 -338 360 294 9 5625 5836 10 0 178 -339 58 39 12 4673 4750 10 0 156 -340 58 391 -21 3388 3791 10 254 0 -341 410 285 -20 730 931 10 472 0 -342 96 97 20 735 1002 10 0 422 -343 21 64 20 1275 1663 10 0 914 -344 238 210 -20 142 1049 10 763 0 -345 479 121 -10 1140 1442 10 950 0 -346 200 178 -10 97 772 10 660 0 -347 216 341 19 2330 3022 10 0 442 -348 48 437 -30 3128 3422 10 609 0 -349 200 270 20 144 448 10 0 77 -350 357 181 20 519 796 10 0 730 -351 476 174 30 1340 1374 10 0 677 -352 400 286 -10 530 804 10 532 0 -353 351 481 -21 1148 1547 10 451 0 -354 270 400 -30 530 681 10 149 0 -355 95 234 10 498 928 10 0 622 -356 128 113 -20 1346 1675 10 976 0 -357 133 455 -9 3054 3530 10 739 0 -358 16 463 -30 1523 1596 10 975 0 -359 59 388 20 2556 2866 10 0 509 -360 376 190 30 617 745 10 0 602 -361 481 122 -20 1095 1388 10 896 0 -362 266 405 20 808 1049 10 0 480 -363 374 232 33 213 789 10 0 68 -364 398 20 -10 866 1406 10 169 0 -365 481 26 30 1189 1385 10 0 121 -366 63 444 -30 1393 1766 10 689 0 -367 89 290 20 516 945 10 0 618 -368 246 314 -25 5788 5895 10 409 0 -369 40 304 -20 4392 4885 10 583 0 -370 262 369 15 388 767 10 0 974 -371 323 29 7 4461 4759 10 0 557 -372 89 65 16 2827 3055 10 0 895 -373 144 35 26 917 1001 10 0 543 -374 200 265 10 666 674 10 0 744 -375 436 264 20 643 849 10 0 707 -376 15 457 20 1102 1606 10 0 489 -377 397 20 -20 1086 1274 10 528 0 -378 328 491 -30 2517 3030 10 719 0 -379 399 175 -10 2861 3234 10 768 0 -380 432 2 -22 1782 2071 10 784 0 -381 63 336 20 912 1338 10 0 425 -382 6 296 10 1285 1394 10 0 536 -383 146 376 8 951 1044 10 0 308 -384 295 247 -20 5054 5493 10 971 0 -385 235 33 -13 5338 5478 10 940 0 -386 233 204 20 164 390 10 0 136 -387 142 360 -19 6087 6289 10 140 0 -388 177 156 25 535 923 10 0 663 -389 315 287 -20 534 770 10 87 0 -390 452 172 -20 2295 2691 10 274 0 -391 263 153 -12 1484 1936 10 796 0 -392 493 493 -15 3294 3678 10 194 0 -393 320 283 30 389 616 10 0 216 -394 64 5 -10 4361 4791 10 488 0 -395 95 235 -18 595 651 10 305 0 -396 203 211 -10 5103 5469 10 811 0 -397 16 497 -23 1509 2017 10 835 0 -398 348 348 -12 3555 4043 10 863 0 -399 485 104 21 3106 3369 10 0 804 -400 330 147 -9 3126 3782 10 781 0 -401 443 237 20 679 948 10 0 233 -402 316 286 30 451 762 10 0 655 -403 335 46 -24 5325 5529 10 570 0 -404 381 495 20 1242 1458 10 0 439 -405 364 173 30 533 1029 10 0 675 -406 267 162 -36 5620 6094 10 48 0 -407 214 245 8 36 426 10 0 626 -408 92 234 10 784 1215 10 0 923 -409 347 459 25 1738 2218 10 0 368 -410 30 7 23 4566 5063 10 0 151 -411 120 37 -26 2908 3415 10 632 0 -412 397 153 -10 3417 3763 10 81 0 -413 210 29 -18 4231 4295 10 333 0 -414 87 285 -20 998 1051 10 116 0 -415 132 32 -30 3058 3338 10 743 0 -416 390 294 -15 655 1363 10 989 0 -417 67 451 -30 4649 5196 10 318 0 -418 24 68 20 1575 1860 10 0 28 -419 146 439 10 1007 1187 10 0 815 -420 209 212 -20 5942 6401 10 872 0 -421 6 292 -17 816 1244 10 817 0 -422 18 63 -20 1052 1780 10 342 0 -423 149 98 -20 4701 4740 10 517 0 -424 91 268 -10 850 1227 10 134 0 -425 103 177 -20 2428 2704 10 381 0 -426 367 178 -10 473 1090 10 709 0 -427 225 269 -12 5055 5232 10 641 0 -428 443 246 20 820 1137 10 0 123 -429 306 42 -40 1734 2200 10 5 0 -430 374 306 4 3857 4216 10 0 597 -431 413 421 10 1164 1379 10 0 104 -432 470 405 -18 3538 3988 10 1 0 -433 33 278 18 5843 6175 10 0 302 -434 149 458 -14 4528 4903 10 319 0 -435 257 57 -27 4809 5118 10 493 0 -436 272 403 30 630 1008 10 0 876 -437 221 291 9 81 408 10 0 107 -438 1 101 -8 4863 5316 10 92 0 -439 332 459 -20 1379 1691 10 404 0 -440 220 392 -20 889 1293 10 878 0 -441 253 50 -20 683 1243 10 500 0 -442 250 441 -19 2868 3298 10 347 0 -443 471 484 10 1255 1583 10 0 651 -444 480 152 -10 3932 4361 10 278 0 -445 404 83 -20 1001 1506 10 579 0 -446 476 94 20 988 1290 10 0 978 -447 458 213 -40 4452 4694 10 172 0 -448 215 395 -40 980 1076 10 225 0 -449 85 288 -1 647 929 10 538 0 -450 179 75 -30 2820 3219 10 457 0 -451 228 287 21 43 405 10 0 353 -452 397 18 10 1085 1371 10 0 337 -453 238 204 -20 205 753 10 272 0 -454 488 3 3 1459 1865 10 0 122 -455 407 88 10 1194 1521 10 0 22 -456 459 14 -12 1007 1595 10 720 0 -457 120 17 30 972 1381 10 0 450 -458 235 316 2 2492 2875 10 0 968 -459 370 382 -25 3524 3666 10 330 0 -460 405 454 11 5122 5421 10 0 83 -461 17 458 10 1489 2095 0 0 1008 -462 43 135 31 665 1230 10 0 770 -463 318 497 -16 3366 3584 10 807 0 -464 199 268 -20 123 567 10 176 0 -465 111 467 20 1012 1404 10 0 130 -466 138 438 20 1070 1349 10 0 911 -467 172 314 -35 1981 2502 10 508 0 -468 494 468 -20 1260 1679 10 821 0 -469 35 303 20 624 1148 10 0 786 -470 341 59 27 3060 3379 10 0 209 -471 423 221 -14 964 1222 10 38 0 -472 395 295 20 579 1231 10 0 341 -473 413 417 10 1358 1610 10 0 224 -474 339 60 20 686 1121 10 0 196 -475 277 428 -30 1848 2194 10 229 0 -476 176 199 28 187 531 10 0 788 -477 265 240 9 18 385 10 0 166 -478 365 190 -10 5646 6293 10 504 0 -479 133 53 -10 799 1556 10 754 0 -480 387 488 -20 1344 1672 10 362 0 -481 385 295 20 474 664 10 0 66 -482 491 369 -14 2712 3245 10 644 0 -483 445 273 -10 873 1309 10 516 0 -484 195 273 22 188 288 10 0 799 -485 313 493 -17 4659 5005 10 8 0 -486 495 227 -20 1164 1707 10 143 0 -487 241 403 10 710 1172 10 0 549 -488 30 72 10 1637 1935 10 0 394 -489 21 487 -20 1425 1498 10 376 0 -490 324 99 10 1131 1692 10 0 667 -491 453 318 -10 1397 1713 10 958 0 -492 443 272 -10 876 1405 10 155 0 -493 447 184 27 1633 1882 10 0 435 -494 366 288 -14 2631 2959 10 24 0 -495 440 284 -15 3205 3728 10 29 0 -496 13 314 14 864 1206 10 0 306 -497 72 227 25 2173 2457 10 0 292 -498 377 385 6 3392 3657 10 0 831 -499 477 478 20 1452 1807 10 0 936 -500 204 185 20 548 878 10 0 441 -501 226 191 20 293 571 10 0 827 -502 330 138 -10 4306 4691 10 146 0 -503 185 434 9 2081 2627 10 0 138 -504 483 22 10 1310 1483 10 0 478 -505 71 282 -11 2495 2759 10 80 0 -506 60 5 -28 4221 4248 10 942 0 -507 189 402 -10 1923 2486 10 847 0 -508 134 211 35 348 736 10 0 467 -509 146 313 -20 4647 5036 10 359 0 -510 21 146 -10 1992 2023 10 126 0 -511 37 281 -25 1817 2249 10 696 0 -512 416 417 20 1211 1653 10 0 95 -513 44 311 -20 1521 1858 10 818 0 -514 361 181 -20 606 1090 10 74 0 -515 444 242 -19 810 1034 10 114 0 -516 444 271 10 860 1225 10 0 483 -517 359 179 20 367 1051 10 0 423 -518 388 334 20 589 795 10 0 260 -519 401 164 -21 2503 2587 10 854 0 -520 499 316 18 2325 2769 10 0 69 -521 399 106 -20 1095 1439 10 267 0 -522 425 215 -10 920 1032 10 300 0 -523 407 98 10 683 1066 10 0 721 -524 406 460 2 2898 2976 10 0 257 -525 88 95 -17 999 1284 10 27 0 -526 95 64 -12 2951 3296 10 904 0 -527 306 229 -20 5066 5616 10 63 0 -528 273 55 20 649 921 10 0 377 -529 384 149 -19 4712 4986 10 561 0 -530 122 35 -10 916 1165 10 653 0 -531 308 199 -30 5998 6188 10 673 0 -532 390 301 10 616 825 10 0 352 -533 300 108 10 497 708 10 0 765 -534 267 400 10 789 1189 0 0 1002 -535 8 300 -10 1192 1774 10 647 0 -536 105 181 -10 5957 6412 10 382 0 -537 398 325 -20 805 1181 10 685 0 -538 166 247 1 250 423 10 0 449 -539 140 431 30 621 1154 10 0 752 -540 253 118 19 2215 2283 10 0 565 -541 359 246 -12 5557 5946 10 648 0 -542 321 277 10 124 484 10 0 631 -543 168 59 -26 1392 1657 10 373 0 -544 406 285 20 683 866 10 0 724 -545 391 334 20 677 891 10 0 567 -546 437 19 -20 3802 4429 10 708 0 -547 201 278 13 105 346 10 0 858 -548 435 267 -24 1140 1562 10 556 0 -549 245 408 -10 717 1033 10 487 0 -550 16 462 -19 1282 1924 10 642 0 -551 107 374 -10 3662 3772 10 40 0 -552 477 97 10 924 1458 10 0 219 -553 346 57 -10 1210 1375 10 235 0 -554 14 459 -10 1395 1411 10 157 0 -555 102 6 3 5692 6095 10 0 109 -556 359 287 24 308 612 10 0 548 -557 297 131 -7 4556 4888 10 371 0 -558 282 1 -10 4122 4337 10 954 0 -559 21 70 15 2853 3437 10 0 270 -560 440 244 10 691 1557 10 0 303 -561 482 104 19 3082 3498 10 0 529 -562 120 261 -20 3015 3452 10 197 0 -563 125 29 30 1005 1381 10 0 310 -564 292 32 -10 756 1198 10 760 0 -565 262 92 -19 2536 2628 10 540 0 -566 68 160 -15 4271 4936 10 688 0 -567 405 276 -20 941 1053 10 545 0 -568 277 50 10 814 888 10 0 965 -569 32 319 -10 1470 1855 10 60 0 -570 344 70 24 4346 4940 10 0 403 -571 481 84 -10 1937 2227 10 150 0 -572 21 68 20 1474 1857 10 0 935 -573 441 244 -20 1023 1313 10 691 0 -574 57 43 -25 3985 4322 10 584 0 -575 1 293 10 1074 1189 10 0 64 -576 481 96 20 1131 1365 10 0 963 -577 471 368 -40 1560 1985 10 26 0 -578 236 126 23 209 790 10 0 852 -579 406 99 20 741 1196 10 0 445 -580 303 186 -7 5205 5749 10 775 0 -581 225 369 -10 340 632 10 59 0 -582 412 453 -20 1083 1413 10 71 0 -583 104 349 20 3975 4219 10 0 369 -584 173 182 25 222 599 10 0 574 -585 111 464 10 1076 1529 10 0 740 -586 53 440 -20 1173 1532 10 311 0 -587 69 336 20 823 1042 10 0 75 -588 359 182 20 680 1113 10 0 320 -589 13 459 20 1278 1616 10 0 593 -590 244 277 -10 4916 5614 10 793 0 -591 484 177 -10 938 1195 10 692 0 -592 452 206 31 1745 2313 10 0 115 -593 22 483 -20 1075 1533 10 589 0 -594 452 110 14 1171 1671 10 0 780 -595 347 192 -40 5705 6320 10 809 0 -596 95 92 20 903 1239 10 0 816 -597 368 311 -4 3605 3924 10 430 0 -598 479 387 -13 1493 1807 10 133 0 -599 479 169 20 1014 1574 10 0 711 -600 497 266 25 2876 3225 10 0 247 -601 66 336 10 931 1215 10 0 857 -602 376 195 -30 572 996 10 360 0 -603 401 281 -30 783 1426 10 792 0 -604 441 177 23 4041 4088 10 0 207 -605 231 203 20 204 448 10 0 695 -606 21 488 10 1300 1710 10 0 812 -607 231 204 20 433 888 10 0 129 -608 122 422 3 5711 6064 0 0 1007 -609 65 453 30 991 1382 10 0 348 -610 206 261 10 499 1080 10 0 76 -611 466 149 -2 4463 5145 10 749 0 -612 313 119 30 670 1176 10 0 205 -613 90 274 -20 597 958 10 304 0 -614 39 162 -16 2135 2507 10 988 0 -615 35 306 -30 710 1246 10 937 0 -616 437 15 -10 1445 1517 10 175 0 -617 307 412 8 1527 1822 10 0 992 -618 79 291 -20 745 1046 10 367 0 -619 64 437 -10 3560 3905 10 624 0 -620 376 92 -10 3735 4310 10 990 0 -621 129 27 10 1248 1253 10 0 190 -622 196 489 -10 3997 4365 10 355 0 -623 51 286 -10 5589 6202 10 628 0 -624 20 488 10 1293 1806 10 0 619 -625 13 455 -20 1082 1524 10 659 0 -626 170 347 -8 1755 1852 10 407 0 -627 92 230 -23 474 1156 10 6 0 -628 117 467 10 855 1181 10 0 623 -629 413 217 20 603 830 10 0 298 -630 405 450 -26 880 1226 10 88 0 -631 394 322 -10 3944 4375 10 542 0 -632 125 61 26 2215 2799 10 0 411 -633 238 123 -2 2925 3444 10 750 0 -634 11 403 -11 1333 1531 10 833 0 -635 89 272 -10 679 974 10 14 0 -636 304 102 30 803 891 10 0 762 -637 478 121 40 1267 1403 10 0 729 -638 408 84 -20 982 1413 10 89 0 -639 376 494 30 870 1408 10 0 289 -640 20 73 10 1046 1276 10 0 294 -641 159 299 12 3916 4328 10 0 427 -642 95 382 19 639 1331 10 0 550 -643 352 63 -20 4556 4990 10 51 0 -644 365 274 14 265 675 10 0 482 -645 30 301 10 1090 1250 10 0 993 -646 351 5 12 1867 2221 10 0 226 -647 197 267 10 429 560 10 0 535 -648 498 171 12 4950 5221 10 0 541 -649 468 352 -13 2696 3570 10 227 0 -650 418 251 21 4579 5116 10 0 269 -651 489 437 -10 2732 3042 10 443 0 -652 251 63 -10 3765 4254 10 293 0 -653 132 55 10 925 1333 10 0 530 -654 281 96 -8 4204 4922 10 982 0 -655 333 293 -30 2418 2639 10 402 0 -656 255 487 19 1254 2050 10 0 237 -657 207 400 20 716 929 10 0 703 -658 469 489 -30 2064 2499 10 999 0 -659 244 254 20 174 749 10 0 625 -660 233 207 10 79 372 10 0 346 -661 441 60 -10 5715 6075 10 732 0 -662 411 379 25 4740 4926 10 0 802 -663 178 72 -25 2793 3382 10 388 0 -664 51 447 10 1096 1380 10 0 972 -665 478 118 -30 1371 1583 10 117 0 -666 141 426 -7 1973 2399 10 980 0 -667 295 89 -10 2763 3293 10 490 0 -668 112 433 29 879 1121 10 0 32 -669 320 211 -30 3857 4204 10 849 0 -670 400 103 10 902 1263 10 0 901 -671 408 453 10 946 1439 10 0 200 -672 435 180 -20 752 1164 10 135 0 -673 432 66 30 4321 4369 10 0 531 -674 374 116 9 2292 2525 10 0 997 -675 478 102 -30 1099 1615 10 405 0 -676 335 57 -17 639 1049 10 929 0 -677 385 239 -30 3021 3384 10 351 0 -678 386 245 -11 1777 2174 10 794 0 -679 208 396 -30 605 927 10 855 0 -680 380 489 20 1546 1606 10 0 712 -681 380 498 -20 1089 1410 10 915 0 -682 440 7 20 1208 1422 10 0 108 -683 434 245 -20 1359 1494 10 693 0 -684 90 232 -10 794 1019 10 871 0 -685 389 334 20 525 947 10 0 537 -686 241 205 30 398 665 10 0 808 -687 18 24 -10 2428 2719 10 851 0 -688 57 183 15 4284 4638 10 0 566 -689 59 457 30 1179 1615 10 0 366 -690 442 243 10 933 1495 10 0 91 -691 402 281 20 777 1344 10 0 573 -692 445 237 10 739 985 10 0 591 -693 441 273 20 1082 1297 10 0 683 -694 31 175 -16 782 1310 10 47 0 -695 234 202 -20 205 552 10 605 0 -696 52 303 25 1549 2100 10 0 511 -697 167 445 7 5566 5850 10 0 113 -698 179 286 -10 1396 1453 10 286 0 -699 269 48 -18 959 1406 10 715 0 -700 165 59 -20 3397 4266 10 212 0 -701 461 8 20 1256 1816 10 0 132 -702 421 415 30 772 1231 10 0 262 -703 59 459 -20 1125 1485 10 657 0 -704 24 492 -10 1873 1943 10 747 0 -705 55 449 20 874 1355 10 0 966 -706 224 192 10 131 549 10 0 885 -707 444 269 -20 680 1309 10 375 0 -708 491 20 20 1528 1740 10 0 546 -709 313 126 10 919 1147 10 0 426 -710 283 438 -20 706 1265 10 327 0 -711 352 241 -20 3175 3283 10 599 0 -712 398 476 -20 1552 1912 10 680 0 -713 442 247 -20 893 1156 10 105 0 -714 217 207 -7 5550 5629 10 158 0 -715 233 87 18 925 1215 10 0 699 -716 479 127 20 919 1359 10 0 757 -717 6 53 -20 2227 2588 10 312 0 -718 478 300 -10 3388 3849 10 894 0 -719 378 493 30 983 1392 10 0 378 -720 303 78 12 439 1001 10 0 456 -721 344 62 -10 1310 1581 10 523 0 -722 371 315 -13 4425 5022 10 181 0 -723 200 78 31 3880 4181 10 0 186 -724 413 391 -20 677 1179 10 544 0 -725 415 216 10 546 985 10 0 215 -726 397 57 -20 5634 6294 10 41 0 -727 293 228 19 48 480 10 0 142 -728 0 297 10 798 1665 10 0 907 -729 435 20 -40 1388 1783 10 637 0 -730 195 111 -20 3892 4213 10 350 0 -731 417 218 10 1109 1235 10 0 23 -732 340 54 10 797 1226 10 0 661 -733 132 57 -10 780 1296 10 959 0 -734 210 379 12 2398 3393 10 0 324 -735 228 260 -6 6312 6653 10 913 0 -736 399 104 10 952 1486 0 0 1006 -737 95 277 20 1111 1204 10 0 154 -738 360 284 -20 2480 2973 10 11 0 -739 53 466 9 1262 1538 10 0 357 -740 112 465 -10 907 1606 10 585 0 -741 313 391 5 630 687 10 0 774 -742 93 235 10 876 1213 10 0 18 -743 125 32 30 827 1369 10 0 415 -744 215 282 -10 5485 6158 10 374 0 -745 224 320 -12 5043 5347 10 217 0 -746 134 428 -10 1014 1570 10 65 0 -747 26 490 10 1705 2214 10 0 704 -748 44 115 -20 716 1255 10 845 0 -749 438 127 2 3760 3887 10 0 611 -750 239 15 2 2299 2651 10 0 633 -751 342 54 20 860 1259 10 0 969 -752 109 463 -30 1277 1511 10 539 0 -753 199 187 20 363 770 10 0 944 -754 201 188 10 558 672 10 0 479 -755 399 301 30 616 1058 0 0 1009 -756 484 171 -20 1146 1320 10 875 0 -757 272 234 -20 6371 6472 10 716 0 -758 380 350 15 3359 3692 10 0 202 -759 140 108 -30 4193 4497 10 787 0 -760 228 199 10 384 810 10 0 564 -761 245 461 -26 2449 2866 10 244 0 -762 305 107 -30 619 1302 10 636 0 -763 231 195 20 360 634 10 0 344 -764 450 265 10 748 1102 10 0 897 -765 273 149 -10 5816 6325 10 533 0 -766 12 358 7 4828 5086 10 0 86 -767 315 121 10 705 1040 10 0 824 -768 420 213 10 646 1102 10 0 379 -769 331 134 -24 4423 4687 10 956 0 -770 84 377 -31 3552 3978 10 462 0 -771 320 280 10 248 552 10 0 291 -772 89 185 16 2186 2733 10 0 177 -773 472 481 20 1165 1567 10 0 801 -774 422 420 -5 845 1376 10 741 0 -775 475 267 7 3093 3264 10 0 580 -776 470 125 20 833 1191 0 0 1010 -777 435 268 10 1192 1421 10 0 928 -778 409 155 19 449 1033 10 0 192 -779 243 248 30 7 442 10 0 266 -780 488 96 -14 4143 4507 10 594 0 -781 341 72 9 3164 3395 10 0 400 -782 58 449 30 1425 1597 10 0 295 -783 16 460 -30 1378 2028 10 987 0 -784 480 136 22 1006 1048 10 0 380 -785 162 388 11 4532 4596 0 0 1001 -786 47 208 -20 698 1233 10 469 0 -787 324 127 30 293 856 10 0 759 -788 87 96 -28 1142 1232 10 476 0 -789 140 137 32 2224 2454 10 0 879 -790 314 205 -10 5963 6371 10 813 0 -791 96 346 26 623 979 10 0 147 -792 321 280 30 276 435 10 0 603 -793 245 251 10 5 513 10 0 590 -794 436 295 11 2040 2306 10 0 678 -795 274 261 -20 6692 7083 10 170 0 -796 271 128 12 1248 1637 10 0 391 -797 275 45 -30 718 1198 10 981 0 -798 422 409 10 593 1281 10 0 892 -799 146 188 -22 4865 5135 10 484 0 -800 93 96 20 745 1179 10 0 73 -801 409 255 -20 5916 6383 10 773 0 -802 449 428 -25 4989 5106 10 662 0 -803 90 285 40 834 1496 10 0 919 -804 415 95 -21 4612 4921 10 399 0 -805 88 287 30 985 1242 10 0 50 -806 379 196 -30 635 1037 10 162 0 -807 368 452 16 2676 2804 10 0 463 -808 202 186 -30 446 883 10 686 0 -809 435 11 40 1111 1387 10 0 595 -810 269 46 -10 911 1357 10 859 0 -811 7 292 10 912 1060 10 0 396 -812 44 496 -10 1339 1996 10 606 0 -813 478 99 10 1096 1514 10 0 790 -814 391 99 -20 692 960 10 933 0 -815 132 477 -10 1293 1446 10 419 0 -816 24 65 -20 1378 1665 10 596 0 -817 130 247 17 363 598 10 0 421 -818 133 273 20 428 526 10 0 513 -819 347 62 -20 1306 1482 10 841 0 -820 404 140 -25 4915 5275 10 275 0 -821 416 420 20 1063 1374 10 0 468 -822 67 335 20 688 1367 10 0 189 -823 92 270 -10 1011 1164 10 45 0 -824 411 95 -10 797 1265 10 767 0 -825 132 479 11 1014 1047 10 0 255 -826 366 334 -10 1525 1877 10 148 0 -827 125 39 -20 870 1092 10 501 0 -828 419 422 -10 955 1375 10 297 0 -829 460 2 20 1227 1717 10 0 167 -830 67 334 20 913 1054 10 0 307 -831 448 414 -6 4836 5066 10 498 0 -832 46 163 -33 3618 3911 10 7 0 -833 77 465 11 785 1422 10 0 634 -834 284 319 -20 3028 3626 10 328 0 -835 102 422 23 659 1270 10 0 397 -836 240 34 -10 6237 6360 10 31 0 -837 141 428 -40 683 986 10 17 0 -838 204 269 30 85 314 10 0 161 -839 144 439 -18 874 1415 10 144 0 -840 470 417 11 2809 3206 10 0 72 -841 404 103 20 724 1328 10 0 819 -842 5 281 16 5418 5675 10 0 221 -843 487 320 -10 3252 3730 10 55 0 -844 398 23 -20 853 1315 10 941 0 -845 90 296 20 499 833 10 0 748 -846 386 13 10 1268 1548 10 0 259 -847 115 465 10 923 1296 10 0 507 -848 473 475 10 1494 1965 10 0 290 -849 275 42 30 907 1114 10 0 669 -850 286 356 -30 310 585 10 93 0 -851 15 69 10 1175 1278 10 0 687 -852 267 44 -23 694 1473 10 578 0 -853 243 399 -24 821 1176 10 886 0 -854 390 249 21 2206 2567 10 0 519 -855 210 391 30 458 794 10 0 679 -856 433 15 20 974 1408 10 0 183 -857 24 259 -10 1364 1716 10 601 0 -858 12 463 -13 1287 1720 10 547 0 -859 237 213 10 577 718 10 0 810 -860 182 480 31 1326 1712 10 0 173 -861 409 88 -20 858 1424 10 20 0 -862 244 368 -10 1521 1911 10 230 0 -863 381 328 12 2580 3279 10 0 398 -864 213 185 21 74 651 10 0 314 -865 482 141 -26 3989 4217 10 985 0 -866 319 124 -30 629 915 10 316 0 -867 141 431 30 852 1011 10 0 309 -868 198 264 20 595 647 10 0 984 -869 69 334 30 616 1152 10 0 100 -870 299 98 30 507 947 10 0 57 -871 240 250 10 29 390 10 0 684 -872 199 203 20 5638 6140 10 0 420 -873 459 17 -20 1531 1879 10 336 0 -874 423 217 20 902 1152 10 0 888 -875 477 179 20 628 1274 10 0 756 -876 213 397 -30 804 1055 10 436 0 -877 405 187 -15 4778 5347 10 926 0 -878 269 402 20 800 943 10 0 440 -879 53 204 -32 4163 4397 10 789 0 -880 13 394 -20 1519 1581 10 220 0 -881 15 68 -32 882 1660 10 234 0 -882 56 268 -22 4142 4489 10 199 0 -883 360 184 10 793 1099 10 0 35 -884 307 102 40 719 1079 10 0 54 -885 130 57 -10 882 1098 10 706 0 -886 250 328 24 934 1175 10 0 853 -887 91 231 -20 608 1114 10 991 0 -888 479 176 -20 820 1191 10 874 0 -889 420 224 -10 1547 2004 10 21 0 -890 461 182 -20 2345 2807 10 891 0 -891 418 218 20 919 1338 10 0 890 -892 419 418 -10 957 1154 10 798 0 -893 336 493 -1 5857 6207 10 182 0 -894 389 300 10 426 924 10 0 718 -895 92 76 -16 4538 4693 10 372 0 -896 476 102 20 1237 1572 10 0 361 -897 418 399 -10 1589 2033 10 764 0 -898 109 56 27 691 1228 10 0 174 -899 13 465 31 2954 3354 10 0 946 -900 92 232 -10 550 983 10 252 0 -901 394 47 -10 1305 1318 10 670 0 -902 16 287 -30 964 1323 10 967 0 -903 399 102 20 1018 1238 10 0 287 -904 143 158 12 468 753 10 0 526 -905 18 484 10 1308 1412 10 0 120 -906 250 411 -30 598 1025 10 240 0 -907 19 273 -10 3922 4331 10 728 0 -908 365 28 9 841 1425 10 0 288 -909 387 297 10 389 853 10 0 960 -910 433 447 20 2755 3718 10 0 912 -911 214 274 -20 5385 5688 10 466 0 -912 489 338 -20 5473 5825 10 910 0 -913 130 494 6 2988 3202 10 0 735 -914 23 67 -20 1443 1790 10 343 0 -915 374 489 20 916 1239 10 0 681 -916 126 30 -10 858 1436 10 44 0 -917 112 467 -21 1036 1292 10 228 0 -918 489 274 31 2040 2350 10 0 191 -919 61 214 -40 1221 1633 10 803 0 -920 166 440 12 526 1136 10 0 335 -921 56 75 24 5453 6168 10 0 153 -922 210 276 5 47 492 10 0 185 -923 80 286 -10 829 1082 10 408 0 -924 17 459 -20 1606 1891 10 996 0 -925 66 448 10 876 1287 10 0 268 -926 351 128 15 4802 5343 10 0 877 -927 352 176 20 311 697 10 0 171 -928 490 286 -10 1997 2300 10 777 0 -929 247 219 17 31 369 10 0 676 -930 86 268 -20 681 1176 10 945 0 -931 398 329 -20 597 746 10 983 0 -932 272 402 10 500 896 10 0 256 -933 317 123 20 546 1096 10 0 814 -934 408 318 15 2463 2802 10 0 250 -935 66 31 -20 4157 4350 10 572 0 -936 425 448 -20 3144 3331 10 499 0 -937 35 304 30 785 1075 10 0 615 -938 471 94 -7 4045 4066 10 331 0 -939 470 473 -20 1707 1860 10 253 0 -940 224 56 13 4660 4952 10 0 385 -941 343 47 20 931 1404 10 0 844 -942 52 18 28 3268 3707 10 0 506 -943 16 68 20 1278 1352 10 0 99 -944 195 185 -20 390 627 10 753 0 -945 92 236 20 739 1443 10 0 930 -946 76 462 -31 3753 4015 10 899 0 -947 124 56 20 713 1138 10 0 53 -948 481 454 14 1167 1517 10 0 58 -949 477 483 -10 1359 1687 10 3 0 -950 481 124 10 911 1477 10 0 345 -951 389 156 27 2806 3038 10 0 284 -952 384 16 20 1264 1661 10 0 131 -953 492 34 -20 3153 3451 10 998 0 -954 371 200 10 802 1113 10 0 558 -955 153 235 10 256 530 10 0 203 -956 428 202 24 3405 3945 10 0 769 -957 257 391 -26 6313 6871 10 141 0 -958 421 218 10 635 1517 10 0 491 -959 206 186 10 407 1214 10 0 733 -960 393 301 -10 663 883 10 909 0 -961 204 187 -10 497 1025 10 261 0 -962 468 475 -20 989 1518 10 56 0 -963 477 122 -20 1321 1439 10 576 0 -964 100 66 -32 5415 5902 10 79 0 -965 489 27 -10 1404 2086 10 568 0 -966 12 451 -20 1102 1390 10 705 0 -967 197 270 30 270 616 10 0 902 -968 311 422 -2 3787 4236 10 458 0 -969 489 17 -20 1338 1822 10 751 0 -970 13 214 -8 5360 5589 10 995 0 -971 440 247 20 811 1333 10 0 384 -972 28 467 -10 5236 5625 10 664 0 -973 388 325 -25 1080 1147 10 301 0 -974 270 401 -15 310 989 10 370 0 -975 5 445 30 1193 1414 10 0 358 -976 198 271 20 198 597 10 0 356 -977 480 131 5 2670 2950 10 0 103 -978 437 98 -20 4255 4774 10 446 0 -979 131 246 -1 3070 3706 10 265 0 -980 49 437 7 1320 2220 10 0 666 -981 270 49 30 1075 1381 10 0 797 -982 337 41 8 3917 4222 10 0 654 -983 318 280 20 153 742 10 0 931 -984 154 392 -20 411 961 10 868 0 -985 493 111 26 2069 2379 10 0 865 -986 399 450 -34 1312 1677 10 271 0 -987 67 452 30 940 1336 10 0 783 -988 34 239 16 840 1031 10 0 614 -989 343 276 15 109 664 10 0 416 -990 393 12 10 1149 1445 10 0 620 -991 236 247 20 178 362 10 0 887 -992 340 291 -8 1722 2162 10 617 0 -993 3 292 -10 1018 1146 10 645 0 -994 209 68 -3 6108 6556 10 187 0 -995 18 225 8 2704 2947 10 0 970 -996 147 435 20 859 1221 10 0 924 -997 335 99 -9 4797 5070 10 674 0 -998 485 24 20 1059 1630 10 0 953 -999 470 475 30 1115 1487 10 0 658 -1000 341 58 10 856 1053 10 0 263 -1001 162 388 -11 4532 4596 10 785 0 -1002 267 400 -10 789 1189 10 534 0 -1003 458 16 -20 1052 1453 10 231 0 -1004 30 155 -9 4973 5391 10 313 0 -1005 241 180 -13 6824 6853 10 317 0 -1006 399 104 -10 952 1486 10 736 0 -1007 122 422 -3 5711 6064 10 608 0 -1008 17 458 -10 1489 2095 10 461 0 -1009 399 301 -30 616 1058 10 755 0 -1010 470 125 -20 833 1191 10 776 0 diff --git a/jsprit-instances/instances/lilim/lc101.txt b/jsprit-instances/instances/lilim/lc101.txt deleted file mode 100644 index 714b0fba5..000000000 --- a/jsprit-instances/instances/lilim/lc101.txt +++ /dev/null @@ -1,108 +0,0 @@ -25 200 1 -0 40 50 0 0 1236 0 0 0 -1 45 68 -10 912 967 90 11 0 -2 45 70 -20 825 870 90 6 0 -3 42 66 10 65 146 90 0 75 -4 42 68 -10 727 782 90 9 0 -5 42 65 10 15 67 90 0 7 -6 40 69 20 621 702 90 0 2 -7 40 66 -10 170 225 90 5 0 -8 38 68 20 255 324 90 0 10 -9 38 70 10 534 605 90 0 4 -10 35 66 -20 357 410 90 8 0 -11 35 69 10 448 505 90 0 1 -12 25 85 -20 652 721 90 18 0 -13 22 75 30 30 92 90 0 17 -14 22 85 -40 567 620 90 16 0 -15 20 80 -10 384 429 90 19 0 -16 20 85 40 475 528 90 0 14 -17 18 75 -30 99 148 90 13 0 -18 15 75 20 179 254 90 0 12 -19 15 80 10 278 345 90 0 15 -20 30 50 10 10 73 90 0 24 -21 30 52 -10 914 965 90 30 0 -22 28 52 -20 812 883 90 28 0 -23 28 55 10 732 777 0 0 103 -24 25 50 -10 65 144 90 20 0 -25 25 52 40 169 224 90 0 27 -26 25 55 -10 622 701 90 29 0 -27 23 52 -40 261 316 90 25 0 -28 23 55 20 546 593 90 0 22 -29 20 50 10 358 405 90 0 26 -30 20 55 10 449 504 90 0 21 -31 10 35 -30 200 237 90 32 0 -32 10 40 30 31 100 90 0 31 -33 8 40 40 87 158 90 0 37 -34 8 45 -30 751 816 90 38 0 -35 5 35 10 283 344 90 0 39 -36 5 45 10 665 716 0 0 105 -37 2 40 -40 383 434 90 33 0 -38 0 40 30 479 522 90 0 34 -39 0 45 -10 567 624 90 35 0 -40 35 30 -20 264 321 90 42 0 -41 35 32 -10 166 235 90 43 0 -42 33 32 20 68 149 90 0 40 -43 33 35 10 16 80 90 0 41 -44 32 30 10 359 412 90 0 46 -45 30 30 10 541 600 90 0 48 -46 30 32 -10 448 509 90 44 0 -47 30 35 -10 1054 1127 90 49 0 -48 28 30 -10 632 693 90 45 0 -49 28 35 10 1001 1066 90 0 47 -50 26 32 10 815 880 90 0 52 -51 25 30 10 725 786 0 0 101 -52 25 35 -10 912 969 90 50 0 -53 44 5 20 286 347 90 0 58 -54 42 10 40 186 257 90 0 60 -55 42 15 -40 95 158 90 57 0 -56 40 5 30 385 436 90 0 59 -57 40 15 40 35 87 90 0 55 -58 38 5 -20 471 534 90 53 0 -59 38 15 -30 651 740 90 56 0 -60 35 5 -40 562 629 90 54 0 -61 50 30 -10 531 610 90 67 0 -62 50 35 20 262 317 90 0 68 -63 50 40 50 171 218 90 0 74 -64 48 30 10 632 693 0 0 102 -65 48 40 10 76 129 90 0 72 -66 47 35 10 826 875 90 0 69 -67 47 40 10 12 77 90 0 61 -68 45 30 -20 734 777 90 62 0 -69 45 35 -10 916 969 90 66 0 -70 95 30 -30 387 456 90 81 0 -71 95 35 20 293 360 90 0 77 -72 53 30 -10 450 505 90 65 0 -73 92 30 -10 478 551 90 76 0 -74 53 35 -50 353 412 90 63 0 -75 45 65 -10 997 1068 90 3 0 -76 90 35 10 203 260 90 0 73 -77 88 30 -20 574 643 90 71 0 -78 88 35 20 109 170 0 0 104 -79 87 30 10 668 731 90 0 80 -80 85 25 -10 769 820 90 79 0 -81 85 35 30 47 124 90 0 70 -82 75 55 20 369 420 90 0 85 -83 72 55 -20 265 338 90 87 0 -84 70 58 20 458 523 90 0 89 -85 68 60 -20 555 612 90 82 0 -86 66 55 10 173 238 90 0 91 -87 65 55 20 85 144 90 0 83 -88 65 60 -10 645 708 90 90 0 -89 63 58 -20 737 802 90 84 0 -90 60 55 10 20 84 90 0 88 -91 60 60 -10 836 889 90 86 0 -92 67 85 20 368 441 90 0 93 -93 65 85 -20 475 518 90 92 0 -94 65 82 -10 285 336 90 96 0 -95 62 80 -20 196 239 90 98 0 -96 60 80 10 95 156 90 0 94 -97 60 85 30 561 622 0 0 106 -98 58 75 20 30 84 90 0 95 -99 55 80 -20 743 820 90 100 0 -100 55 85 20 647 726 90 0 99 -101 25 30 -10 725 786 90 51 0 -102 48 30 -10 632 693 90 64 0 -103 28 55 -10 732 777 90 23 0 -104 88 35 -20 109 170 90 78 0 -105 5 45 -10 665 716 90 36 0 -106 60 85 -30 561 622 90 97 0 diff --git a/jsprit-instances/instances/lilim/lc102.txt b/jsprit-instances/instances/lilim/lc102.txt deleted file mode 100644 index 5ebfb781d..000000000 --- a/jsprit-instances/instances/lilim/lc102.txt +++ /dev/null @@ -1,108 +0,0 @@ -25 200 1 -0 40 50 0 0 1236 0 0 0 -1 45 68 10 0 1127 90 0 75 -2 45 70 -20 0 1125 90 8 0 -3 42 66 10 0 1129 90 0 10 -4 42 68 -20 727 782 90 6 0 -5 42 65 10 0 1130 90 0 9 -6 40 69 20 621 702 90 0 4 -7 40 66 20 0 1130 90 0 11 -8 38 68 20 255 324 90 0 2 -9 38 70 -10 534 605 90 5 0 -10 35 66 -10 357 410 90 3 0 -11 35 69 -20 448 505 90 7 0 -12 25 85 -30 0 1107 90 13 0 -13 22 75 30 30 92 90 0 12 -14 22 85 -40 567 620 90 16 0 -15 20 80 -20 384 429 90 18 0 -16 20 85 40 475 528 90 0 14 -17 18 75 20 99 148 90 0 19 -18 15 75 20 179 254 90 0 15 -19 15 80 -20 278 345 90 17 0 -20 30 50 10 10 73 90 0 22 -21 30 52 -10 0 1135 90 23 0 -22 28 52 -10 812 883 90 20 0 -23 28 55 10 732 777 90 0 21 -24 25 50 10 65 144 90 0 25 -25 25 52 -10 169 224 90 24 0 -26 25 55 -10 0 1130 90 29 0 -27 23 52 10 261 316 90 0 30 -28 23 55 20 546 593 0 0 103 -29 20 50 10 358 405 90 0 26 -30 20 55 -10 449 504 90 27 0 -31 10 35 20 0 1112 90 0 35 -32 10 40 30 31 100 90 0 33 -33 8 40 -30 87 158 90 32 0 -34 8 45 -20 0 1113 90 37 0 -35 5 35 -20 283 344 90 31 0 -36 5 45 -30 665 716 90 38 0 -37 2 40 20 0 1106 90 0 34 -38 0 40 30 479 522 90 0 36 -39 0 45 20 567 624 0 0 104 -40 35 30 -10 264 321 90 43 0 -41 35 32 10 166 235 90 0 51 -42 33 32 20 68 149 90 0 48 -43 33 35 10 16 80 90 0 40 -44 32 30 10 359 412 90 0 47 -45 30 30 -30 541 600 90 46 0 -46 30 32 30 448 509 90 0 45 -47 30 35 -10 1054 1127 90 44 0 -48 28 30 -20 0 1122 90 42 0 -49 28 35 -10 1001 1066 90 52 0 -50 26 32 10 0 1123 0 0 106 -51 25 30 -10 725 786 90 41 0 -52 25 35 10 0 1124 90 0 49 -53 44 5 -10 286 347 90 55 0 -54 42 10 40 186 257 90 0 56 -55 42 15 10 95 158 90 0 53 -56 40 5 -40 385 436 90 54 0 -57 40 15 40 35 87 90 0 60 -58 38 5 30 471 534 90 0 59 -59 38 15 -30 0 1110 90 58 0 -60 35 5 -40 562 629 90 57 0 -61 50 30 -10 531 610 90 67 0 -62 50 35 20 262 317 90 0 66 -63 50 40 50 171 218 90 0 69 -64 48 30 -50 632 693 90 74 0 -65 48 40 10 76 129 90 0 72 -66 47 35 -20 826 875 90 62 0 -67 47 40 10 12 77 90 0 61 -68 45 30 10 734 777 0 0 102 -69 45 35 -50 916 969 90 63 0 -70 95 30 -30 387 456 90 81 0 -71 95 35 20 293 360 90 0 77 -72 53 30 -10 0 1122 90 65 0 -73 92 30 -10 478 551 90 76 0 -74 53 35 50 353 412 90 0 64 -75 45 65 -10 0 1130 90 1 0 -76 90 35 10 203 260 90 0 73 -77 88 30 -20 574 643 90 71 0 -78 88 35 20 109 170 0 0 105 -79 87 30 10 668 731 90 0 80 -80 85 25 -10 769 820 90 79 0 -81 85 35 30 47 124 90 0 70 -82 75 55 20 0 1110 90 0 85 -83 72 55 10 0 1113 90 0 84 -84 70 58 -10 458 523 90 83 0 -85 68 60 -20 0 1116 90 82 0 -86 66 55 -10 173 238 90 90 0 -87 65 55 20 85 144 90 0 89 -88 65 60 30 645 708 90 0 91 -89 63 58 -20 737 802 90 87 0 -90 60 55 10 20 84 90 0 86 -91 60 60 -30 0 1123 90 88 0 -92 67 85 -10 368 441 90 96 0 -93 65 85 40 475 518 90 0 99 -94 65 82 -20 0 1105 90 98 0 -95 62 80 30 0 1108 90 0 100 -96 60 80 10 0 1109 90 0 92 -97 60 85 30 561 622 0 0 101 -98 58 75 20 0 1115 90 0 94 -99 55 80 -40 743 820 90 93 0 -100 55 85 -30 647 726 90 95 0 -101 60 85 -30 561 622 90 97 0 -102 45 30 -10 734 777 90 68 0 -103 23 55 -20 546 593 90 28 0 -104 0 45 -20 567 624 90 39 0 -105 88 35 -20 109 170 90 78 0 -106 26 32 -10 0 1123 90 50 0 diff --git a/jsprit-instances/instances/lilim/lc103.txt b/jsprit-instances/instances/lilim/lc103.txt deleted file mode 100644 index a7dd518f0..000000000 --- a/jsprit-instances/instances/lilim/lc103.txt +++ /dev/null @@ -1,106 +0,0 @@ -25 200 1 -0 40 50 0 0 1236 0 0 0 -1 45 68 10 0 1127 90 0 75 -2 45 70 -10 0 1125 90 4 0 -3 42 66 10 0 1129 90 0 8 -4 42 68 10 727 782 90 0 2 -5 42 65 10 0 1130 90 0 11 -6 40 69 -10 621 702 90 10 0 -7 40 66 20 0 1130 90 0 9 -8 38 68 -10 255 324 90 3 0 -9 38 70 -20 534 605 90 7 0 -10 35 66 10 357 410 90 0 6 -11 35 69 -10 448 505 90 5 0 -12 25 85 -30 0 1107 90 13 0 -13 22 75 30 30 92 90 0 12 -14 22 85 -40 0 1106 90 15 0 -15 20 80 40 384 429 90 0 14 -16 20 85 -20 0 1105 90 18 0 -17 18 75 20 99 148 90 0 19 -18 15 75 20 0 1110 90 0 16 -19 15 80 -20 0 1106 90 17 0 -20 30 50 10 0 1136 90 0 24 -21 30 52 -20 0 1135 90 22 0 -22 28 52 20 812 883 90 0 21 -23 28 55 -40 732 777 90 25 0 -24 25 50 -10 0 1131 90 20 0 -25 25 52 40 169 224 90 0 23 -26 25 55 10 0 1130 0 0 103 -27 23 52 10 261 316 90 0 30 -28 23 55 -10 0 1128 90 29 0 -29 20 50 10 0 1126 90 0 28 -30 20 55 -10 449 504 90 27 0 -31 10 35 20 0 1112 90 0 38 -32 10 40 30 0 1114 90 0 33 -33 8 40 -30 87 158 90 32 0 -34 8 45 -10 0 1113 90 36 0 -35 5 35 10 283 344 0 0 104 -36 5 45 10 665 716 90 0 34 -37 2 40 20 0 1106 90 0 39 -38 0 40 -20 479 522 90 31 0 -39 0 45 -20 567 624 90 37 0 -40 35 30 10 264 321 90 0 48 -41 35 32 10 166 235 90 0 44 -42 33 32 20 68 149 90 0 49 -43 33 35 10 0 1129 90 0 51 -44 32 30 -10 359 412 90 41 0 -45 30 30 10 541 600 90 0 50 -46 30 32 30 0 1125 0 0 101 -47 30 35 -10 0 1127 90 52 0 -48 28 30 -10 0 1122 90 40 0 -49 28 35 -20 1001 1066 90 42 0 -50 26 32 -10 0 1123 90 45 0 -51 25 30 -10 0 1121 90 43 0 -52 25 35 10 0 1124 90 0 47 -53 44 5 -40 286 347 90 57 0 -54 42 10 40 0 1105 90 0 56 -55 42 15 10 95 158 90 0 59 -56 40 5 -40 385 436 90 54 0 -57 40 15 40 0 1111 90 0 53 -58 38 5 30 471 534 90 0 60 -59 38 15 -10 0 1110 90 55 0 -60 35 5 -30 0 1100 90 58 0 -61 50 30 10 0 1123 90 0 66 -62 50 35 20 262 317 90 0 74 -63 50 40 -10 0 1131 90 79 0 -64 48 30 10 632 693 90 0 69 -65 48 40 -10 76 129 90 67 0 -66 47 35 -10 826 875 90 61 0 -67 47 40 10 12 77 90 0 65 -68 45 30 -10 734 777 90 72 0 -69 45 35 -10 916 969 90 64 0 -70 95 30 30 387 456 90 0 80 -71 95 35 20 0 1088 90 0 73 -72 53 30 10 0 1122 90 0 68 -73 92 30 -20 0 1090 90 71 0 -74 53 35 -20 353 412 90 62 0 -75 45 65 -10 0 1130 90 1 0 -76 90 35 10 203 260 90 0 77 -77 88 30 -10 574 643 90 76 0 -78 88 35 -30 109 170 90 81 0 -79 87 30 10 668 731 90 0 63 -80 85 25 -30 769 820 90 70 0 -81 85 35 30 0 1098 90 0 78 -82 75 55 -10 0 1110 90 83 0 -83 72 55 10 0 1113 90 0 82 -84 70 58 -10 458 523 90 90 0 -85 68 60 30 0 1116 90 0 91 -86 66 55 10 0 1119 90 0 89 -87 65 55 20 85 144 90 0 88 -88 65 60 -20 645 708 90 87 0 -89 63 58 -10 0 1121 90 86 0 -90 60 55 10 0 1125 90 0 84 -91 60 60 -30 0 1123 90 85 0 -92 67 85 -20 368 441 90 98 0 -93 65 85 40 475 518 0 0 102 -94 65 82 10 0 1105 90 0 99 -95 62 80 -10 0 1108 90 96 0 -96 60 80 10 0 1109 90 0 95 -97 60 85 30 0 1105 90 0 100 -98 58 75 20 0 1115 90 0 92 -99 55 80 -10 743 820 90 94 0 -100 55 85 -30 647 726 90 97 0 -101 30 32 -30 0 1125 90 46 0 -102 65 85 -40 475 518 90 93 0 -103 25 55 -10 0 1130 90 26 0 -104 5 35 -10 283 344 90 35 0 diff --git a/jsprit-instances/instances/lilim/lc104.txt b/jsprit-instances/instances/lilim/lc104.txt deleted file mode 100644 index 8e14b79b8..000000000 --- a/jsprit-instances/instances/lilim/lc104.txt +++ /dev/null @@ -1,108 +0,0 @@ -25 200 0 -0 40 50 0 0 1236 0 0 0 -1 45 68 -30 0 1127 90 2 0 -2 45 70 30 0 1125 90 0 1 -3 42 66 10 0 1129 90 0 8 -4 42 68 -20 727 782 90 7 0 -5 42 65 10 0 1130 90 0 9 -6 40 69 -10 0 1127 90 11 0 -7 40 66 20 0 1130 90 0 4 -8 38 68 -10 255 324 90 3 0 -9 38 70 -10 534 605 90 5 0 -10 35 66 -20 0 1129 90 12 0 -11 35 69 10 448 505 90 0 6 -12 25 85 20 0 1107 90 0 10 -13 22 75 30 30 92 90 0 16 -14 22 85 10 0 1106 0 0 102 -15 20 80 -10 384 429 90 19 0 -16 20 85 -30 0 1105 90 13 0 -17 18 75 20 0 1112 90 0 18 -18 15 75 -20 0 1110 90 17 0 -19 15 80 10 0 1106 90 0 15 -20 30 50 10 0 1136 90 0 25 -21 30 52 -10 0 1135 90 30 0 -22 28 52 -10 0 1133 90 26 0 -23 28 55 -20 732 777 90 28 0 -24 25 50 10 0 1131 0 0 101 -25 25 52 -10 169 224 90 20 0 -26 25 55 10 0 1130 90 0 22 -27 23 52 10 0 1128 90 0 29 -28 23 55 20 0 1128 90 0 23 -29 20 50 -10 0 1126 90 27 0 -30 20 55 10 0 1125 90 0 21 -31 10 35 20 0 1112 90 0 38 -32 10 40 30 0 1114 90 0 37 -33 8 40 40 0 1112 0 0 103 -34 8 45 -10 0 1113 90 36 0 -35 5 35 10 0 1107 90 0 39 -36 5 45 10 0 1110 90 0 34 -37 2 40 -30 0 1106 90 32 0 -38 0 40 -20 479 522 90 31 0 -39 0 45 -10 0 1105 90 35 0 -40 35 30 10 0 1125 90 0 46 -41 35 32 -10 0 1127 90 43 0 -42 33 32 20 0 1126 90 0 52 -43 33 35 10 0 1129 90 0 41 -44 32 30 10 359 412 90 0 48 -45 30 30 10 0 1123 90 0 51 -46 30 32 -10 0 1125 90 40 0 -47 30 35 10 0 1127 0 0 105 -48 28 30 -10 0 1122 90 44 0 -49 28 35 -10 0 1126 90 50 0 -50 26 32 10 0 1123 90 0 49 -51 25 30 -10 0 1121 90 45 0 -52 25 35 -20 0 1124 90 42 0 -53 44 5 20 286 347 90 0 59 -54 42 10 -10 0 1105 90 55 0 -55 42 15 10 95 158 90 0 54 -56 40 5 -40 0 1101 90 57 0 -57 40 15 40 0 1111 90 0 56 -58 38 5 30 471 534 90 0 60 -59 38 15 -20 0 1110 90 53 0 -60 35 5 -30 0 1100 90 58 0 -61 50 30 10 0 1123 90 0 66 -62 50 35 20 262 317 90 0 69 -63 50 40 -10 0 1131 90 80 0 -64 48 30 -10 0 1124 90 72 0 -65 48 40 10 0 1133 90 0 74 -66 47 35 -10 0 1129 90 61 0 -67 47 40 10 12 77 90 0 68 -68 45 30 -10 0 1125 90 67 0 -69 45 35 -20 916 969 90 62 0 -70 95 30 -20 0 1087 90 78 0 -71 95 35 -30 0 1088 90 81 0 -72 53 30 10 0 1122 90 0 64 -73 92 30 -10 0 1090 90 76 0 -74 53 35 -10 353 412 90 65 0 -75 45 65 20 0 1130 0 0 106 -76 90 35 10 203 260 90 0 73 -77 88 30 10 574 643 90 0 79 -78 88 35 20 0 1095 90 0 70 -79 87 30 -10 668 731 90 77 0 -80 85 25 10 0 1094 90 0 63 -81 85 35 30 0 1098 90 0 71 -82 75 55 20 0 1110 90 0 84 -83 72 55 10 0 1113 90 0 88 -84 70 58 -20 458 523 90 82 0 -85 68 60 30 0 1116 90 0 89 -86 66 55 10 0 1119 90 0 91 -87 65 55 -10 85 144 90 90 0 -88 65 60 -10 0 1119 90 83 0 -89 63 58 -30 0 1121 90 85 0 -90 60 55 10 0 1125 90 0 87 -91 60 60 -10 0 1123 90 86 0 -92 67 85 20 368 441 0 0 104 -93 65 85 -30 0 1102 90 95 0 -94 65 82 10 0 1105 90 0 99 -95 62 80 30 0 1108 90 0 93 -96 60 80 -20 0 1109 90 98 0 -97 60 85 30 0 1105 90 0 100 -98 58 75 20 0 1115 90 0 96 -99 55 80 -10 743 820 90 94 0 -100 55 85 -30 647 726 90 97 0 -101 25 50 -10 0 1131 90 24 0 -102 22 85 -10 0 1106 90 14 0 -103 8 40 -40 0 1112 90 33 0 -104 67 85 -20 368 441 90 92 0 -105 30 35 -10 0 1127 90 47 0 -106 45 65 -20 0 1130 90 75 0 diff --git a/jsprit-instances/instances/lilim/lc105.txt b/jsprit-instances/instances/lilim/lc105.txt deleted file mode 100644 index a187d143f..000000000 --- a/jsprit-instances/instances/lilim/lc105.txt +++ /dev/null @@ -1,108 +0,0 @@ -25 200 0 -0 40 50 0 0 1236 0 0 0 -1 45 68 10 885 994 90 0 75 -2 45 70 -20 802 893 90 6 0 -3 42 66 -10 25 186 90 5 0 -4 42 68 -20 699 810 90 8 0 -5 42 65 10 15 120 90 0 3 -6 40 69 20 580 743 90 0 2 -7 40 66 20 142 253 90 0 9 -8 38 68 20 220 359 90 0 4 -9 38 70 -20 499 640 90 7 0 -10 35 66 10 331 436 90 0 11 -11 35 69 -10 420 533 90 10 0 -12 25 85 -20 617 756 90 17 0 -13 22 75 30 30 155 90 0 18 -14 22 85 -40 541 646 90 16 0 -15 20 80 -10 362 451 90 19 0 -16 20 85 40 448 555 90 0 14 -17 18 75 20 75 172 90 0 12 -18 15 75 -30 142 291 90 13 0 -19 15 80 10 244 379 90 0 15 -20 30 50 10 10 137 90 0 24 -21 30 52 -10 888 991 90 26 0 -22 28 52 -20 776 919 90 28 0 -23 28 55 10 709 800 0 0 106 -24 25 50 -10 25 184 90 20 0 -25 25 52 40 142 251 90 0 27 -26 25 55 10 582 741 90 0 21 -27 23 52 -40 234 343 90 25 0 -28 23 55 20 523 616 90 0 22 -29 20 50 10 335 428 90 0 30 -30 20 55 -10 422 531 90 29 0 -31 10 35 20 181 256 90 0 35 -32 10 40 30 31 170 90 0 36 -33 8 40 40 52 193 90 0 38 -34 8 45 20 719 848 0 0 101 -35 5 35 -20 252 375 90 31 0 -36 5 45 -30 639 742 90 32 0 -37 2 40 20 357 460 90 0 39 -38 0 40 -40 457 544 90 33 0 -39 0 45 -20 538 653 90 37 0 -40 35 30 -10 236 349 90 41 0 -41 35 32 10 132 269 90 0 40 -42 33 32 20 27 190 90 0 48 -43 33 35 10 16 144 90 0 44 -44 32 30 -10 332 439 90 43 0 -45 30 30 -30 512 629 90 46 0 -46 30 32 30 417 540 90 0 45 -47 30 35 -10 982 1127 90 49 0 -48 28 30 -20 601 724 90 42 0 -49 28 35 10 969 1098 90 0 47 -50 26 32 -10 783 912 90 51 0 -51 25 30 10 695 816 90 0 50 -52 25 35 10 883 998 0 0 104 -53 44 5 -40 255 378 90 54 0 -54 42 10 40 150 293 90 0 53 -55 42 15 10 63 190 90 0 58 -56 40 5 -40 359 462 90 57 0 -57 40 15 40 35 140 90 0 56 -58 38 5 -10 439 566 90 55 0 -59 38 15 -20 607 784 90 60 0 -60 35 5 20 529 662 90 0 59 -61 50 30 10 491 650 90 0 68 -62 50 35 20 235 344 90 0 69 -63 50 40 50 147 242 90 0 72 -64 48 30 -10 601 724 90 67 0 -65 48 40 10 50 155 0 0 103 -66 47 35 -50 802 899 90 74 0 -67 47 40 10 12 143 90 0 64 -68 45 30 -10 712 799 90 61 0 -69 45 35 -20 889 996 90 62 0 -70 95 30 -30 353 490 90 81 0 -71 95 35 20 260 393 90 0 73 -72 53 30 -50 422 533 90 63 0 -73 92 30 -20 442 587 90 71 0 -74 53 35 50 323 442 90 0 66 -75 45 65 -10 962 1103 90 1 0 -76 90 35 -20 175 288 90 78 0 -77 88 30 10 539 678 90 0 80 -78 88 35 20 78 201 90 0 76 -79 87 30 10 636 763 0 0 102 -80 85 25 -10 744 845 90 77 0 -81 85 35 30 47 201 90 0 70 -82 75 55 20 344 445 90 0 88 -83 72 55 10 228 375 90 0 84 -84 70 58 -10 425 556 90 83 0 -85 68 60 -10 527 640 90 90 0 -86 66 55 10 141 270 90 0 91 -87 65 55 20 56 173 90 0 89 -88 65 60 -20 614 739 90 82 0 -89 63 58 -20 705 834 90 87 0 -90 60 55 10 20 148 90 0 85 -91 60 60 -10 809 916 90 86 0 -92 67 85 -10 331 478 90 96 0 -93 65 85 40 453 540 90 0 97 -94 65 82 10 260 361 90 0 100 -95 62 80 -20 174 261 90 98 0 -96 60 80 10 64 187 90 0 92 -97 60 85 -40 531 652 90 93 0 -98 58 75 20 30 139 90 0 95 -99 55 80 10 705 858 0 0 105 -100 55 85 -10 608 765 90 94 0 -101 8 45 -20 719 848 90 34 0 -102 87 30 -10 636 763 90 79 0 -103 48 40 -10 50 155 90 65 0 -104 25 35 -10 883 998 90 52 0 -105 55 80 -10 705 858 90 99 0 -106 28 55 -10 709 800 90 23 0 diff --git a/jsprit-instances/instances/lilim/lc106.txt b/jsprit-instances/instances/lilim/lc106.txt deleted file mode 100644 index 41b717fb1..000000000 --- a/jsprit-instances/instances/lilim/lc106.txt +++ /dev/null @@ -1,108 +0,0 @@ -25 200 1 -0 40 50 0 0 1236 0 0 0 -1 45 68 -20 890 989 90 6 0 -2 45 70 -10 816 879 90 9 0 -3 42 66 10 55 156 90 0 75 -4 42 68 -20 703 806 90 8 0 -5 42 65 10 15 60 90 0 10 -6 40 69 20 559 764 90 0 1 -7 40 66 20 172 223 90 0 11 -8 38 68 20 250 329 90 0 4 -9 38 70 10 489 650 90 0 2 -10 35 66 -10 361 406 90 5 0 -11 35 69 -20 450 503 90 7 0 -12 25 85 -40 647 726 90 16 0 -13 22 75 30 30 95 90 0 17 -14 22 85 -20 571 616 90 18 0 -15 20 80 -10 392 421 90 19 0 -16 20 85 40 478 525 90 0 12 -17 18 75 -30 105 142 90 13 0 -18 15 75 20 172 261 90 0 14 -19 15 80 10 274 349 90 0 15 -20 30 50 10 10 77 90 0 25 -21 30 52 -10 918 961 90 26 0 -22 28 52 20 806 889 0 0 105 -23 28 55 -10 739 770 90 24 0 -24 25 50 10 55 154 90 0 23 -25 25 52 -10 172 221 90 20 0 -26 25 55 10 612 711 90 0 21 -27 23 52 10 264 313 90 0 29 -28 23 55 -10 553 586 90 30 0 -29 20 50 -10 365 398 90 27 0 -30 20 55 10 452 501 90 0 28 -31 10 35 20 204 233 90 0 34 -32 10 40 30 31 189 90 0 35 -33 8 40 40 42 203 90 0 37 -34 8 45 -20 715 852 90 31 0 -35 5 35 -30 251 376 90 32 0 -36 5 45 10 648 733 0 0 102 -37 2 40 -40 365 452 90 33 0 -38 0 40 30 474 527 90 0 39 -39 0 45 -30 541 650 90 38 0 -40 35 30 10 240 345 90 0 52 -41 35 32 10 123 278 90 0 47 -42 33 32 20 19 225 90 0 46 -43 33 35 10 16 153 90 0 48 -44 32 30 10 338 433 90 0 51 -45 30 30 10 513 628 90 0 49 -46 30 32 -20 415 542 90 42 0 -47 30 35 -10 872 1127 90 41 0 -48 28 30 -10 599 726 90 43 0 -49 28 35 -10 917 1126 90 45 0 -50 26 32 10 779 916 0 0 101 -51 25 30 -10 695 816 90 44 0 -52 25 35 -10 857 1024 90 40 0 -53 44 5 20 221 412 90 0 56 -54 42 10 40 96 347 90 0 59 -55 42 15 -40 35 233 90 57 0 -56 40 5 -20 347 474 90 53 0 -57 40 15 40 35 172 90 0 55 -58 38 5 30 403 602 90 0 60 -59 38 15 -40 521 870 90 54 0 -60 35 5 -30 487 704 90 58 0 -61 50 30 10 422 719 90 0 69 -62 50 35 -10 217 362 90 67 0 -63 50 40 50 142 247 90 0 64 -64 48 30 -50 567 758 90 63 0 -65 48 40 10 34 171 90 0 74 -66 47 35 10 794 907 0 0 103 -67 47 40 10 12 226 90 0 62 -68 45 30 -10 716 795 90 72 0 -69 45 35 -10 873 1012 90 61 0 -70 95 30 30 266 577 90 0 73 -71 95 35 -20 181 472 90 78 0 -72 53 30 10 402 553 90 0 68 -73 92 30 -30 345 684 90 70 0 -74 53 35 -10 294 471 90 65 0 -75 45 65 -10 951 1114 90 3 0 -76 90 35 10 153 310 90 0 79 -77 88 30 10 450 767 90 0 80 -78 88 35 20 50 237 90 0 71 -79 87 30 -10 567 832 90 76 0 -80 85 25 -10 713 876 90 77 0 -81 85 35 30 47 331 0 0 104 -82 75 55 20 311 478 90 0 91 -83 72 55 10 127 476 90 0 89 -84 70 58 -10 349 632 90 86 0 -85 68 60 30 476 691 90 0 88 -86 66 55 10 67 344 90 0 84 -87 65 55 -10 25 256 90 90 0 -88 65 60 -30 546 807 90 85 0 -89 63 58 -10 630 909 90 83 0 -90 60 55 10 20 293 90 0 87 -91 60 60 -20 769 956 90 82 0 -92 67 85 -10 229 580 90 96 0 -93 65 85 -10 442 551 90 94 0 -94 65 82 10 227 394 90 0 93 -95 62 80 30 163 272 90 0 99 -96 60 80 10 36 291 90 0 92 -97 60 85 -20 469 714 90 98 0 -98 58 75 20 30 227 90 0 97 -99 55 80 -30 595 968 90 95 0 -100 55 85 20 493 880 0 0 106 -101 26 32 -10 779 916 90 50 0 -102 5 45 -10 648 733 90 36 0 -103 47 35 -10 794 907 90 66 0 -104 85 35 -30 47 331 90 81 0 -105 28 52 -20 806 889 90 22 0 -106 55 85 -20 493 880 90 100 0 diff --git a/jsprit-instances/instances/lilim/lc107.txt b/jsprit-instances/instances/lilim/lc107.txt deleted file mode 100644 index 530a38f67..000000000 --- a/jsprit-instances/instances/lilim/lc107.txt +++ /dev/null @@ -1,108 +0,0 @@ -25 200 0 -0 40 50 0 0 1236 0 0 0 -1 45 68 10 850 1030 90 0 75 -2 45 70 -20 758 938 90 8 0 -3 42 66 10 16 196 90 0 10 -4 42 68 -20 665 845 90 6 0 -5 42 65 10 15 195 90 0 9 -6 40 69 20 572 752 90 0 4 -7 40 66 20 108 288 90 0 11 -8 38 68 20 200 380 90 0 2 -9 38 70 -10 480 660 90 5 0 -10 35 66 -10 294 474 90 3 0 -11 35 69 -20 387 567 90 7 0 -12 25 85 -40 597 777 90 16 0 -13 22 75 30 30 210 90 0 14 -14 22 85 -30 504 684 90 13 0 -15 20 80 -10 317 497 90 19 0 -16 20 85 40 412 592 90 0 12 -17 18 75 20 34 214 90 0 18 -18 15 75 -20 127 307 90 17 0 -19 15 80 10 222 402 90 0 15 -20 30 50 10 10 190 90 0 30 -21 30 52 -20 850 1030 90 28 0 -22 28 52 -10 758 938 90 26 0 -23 28 55 10 665 845 0 0 102 -24 25 50 10 15 195 90 0 25 -25 25 52 -10 107 287 90 24 0 -26 25 55 10 572 752 90 0 22 -27 23 52 10 199 379 90 0 29 -28 23 55 20 480 660 90 0 21 -29 20 50 -10 292 472 90 27 0 -30 20 55 -10 387 567 90 20 0 -31 10 35 -30 129 309 90 32 0 -32 10 40 30 31 211 90 0 31 -33 8 40 40 33 213 90 0 36 -34 8 45 -30 694 874 90 38 0 -35 5 35 10 224 404 90 0 37 -36 5 45 -40 601 781 90 33 0 -37 2 40 -10 319 499 90 35 0 -38 0 40 30 411 591 90 0 34 -39 0 45 20 506 686 0 0 101 -40 35 30 -20 203 383 90 42 0 -41 35 32 10 111 291 90 0 51 -42 33 32 20 19 199 90 0 40 -43 33 35 10 16 196 90 0 48 -44 32 30 10 296 476 90 0 46 -45 30 30 10 481 661 90 0 52 -46 30 32 -10 389 569 90 44 0 -47 30 35 10 947 1127 0 0 105 -48 28 30 -10 573 753 90 43 0 -49 28 35 -10 944 1124 90 50 0 -50 26 32 10 758 938 90 0 49 -51 25 30 -10 666 846 90 41 0 -52 25 35 -10 851 1031 90 45 0 -53 44 5 -10 227 407 90 55 0 -54 42 10 40 132 312 90 0 56 -55 42 15 10 37 217 90 0 53 -56 40 5 -40 321 501 90 54 0 -57 40 15 40 35 215 90 0 60 -58 38 5 30 413 593 90 0 59 -59 38 15 -30 606 786 90 58 0 -60 35 5 -40 506 686 90 57 0 -61 50 30 10 481 661 0 0 103 -62 50 35 -10 200 380 90 65 0 -63 50 40 50 105 285 90 0 66 -64 48 30 -50 573 753 90 74 0 -65 48 40 10 13 193 90 0 62 -66 47 35 -50 761 941 90 63 0 -67 47 40 10 12 192 90 0 69 -68 45 30 -10 666 846 90 72 0 -69 45 35 -10 853 1033 90 67 0 -70 95 30 30 332 512 90 0 73 -71 95 35 -20 237 417 90 78 0 -72 53 30 10 388 568 90 0 68 -73 92 30 -30 425 605 90 70 0 -74 53 35 50 293 473 90 0 64 -75 45 65 -10 943 1123 90 1 0 -76 90 35 10 142 322 90 0 79 -77 88 30 10 519 699 90 0 80 -78 88 35 20 50 230 90 0 71 -79 87 30 -10 610 790 90 76 0 -80 85 25 -10 705 885 90 77 0 -81 85 35 30 47 227 0 0 104 -82 75 55 -20 305 485 90 87 0 -83 72 55 -10 212 392 90 90 0 -84 70 58 20 401 581 90 0 89 -85 68 60 30 494 674 90 0 91 -86 66 55 10 116 296 90 0 88 -87 65 55 20 25 205 90 0 82 -88 65 60 -10 587 767 90 86 0 -89 63 58 -20 680 860 90 84 0 -90 60 55 10 20 200 90 0 83 -91 60 60 -30 773 953 90 85 0 -92 67 85 -10 315 495 90 94 0 -93 65 85 -20 407 587 90 98 0 -94 65 82 10 221 401 90 0 92 -95 62 80 30 128 308 90 0 99 -96 60 80 10 36 216 90 0 97 -97 60 85 -10 502 682 90 96 0 -98 58 75 20 30 210 90 0 93 -99 55 80 -30 692 872 90 95 0 -100 55 85 20 597 777 0 0 106 -101 0 45 -20 506 686 90 39 0 -102 28 55 -10 665 845 90 23 0 -103 50 30 -10 481 661 90 61 0 -104 85 35 -30 47 227 90 81 0 -105 30 35 -10 947 1127 90 47 0 -106 55 85 -20 597 777 90 100 0 diff --git a/jsprit-instances/instances/lilim/lc108.txt b/jsprit-instances/instances/lilim/lc108.txt deleted file mode 100644 index 512dc88fd..000000000 --- a/jsprit-instances/instances/lilim/lc108.txt +++ /dev/null @@ -1,108 +0,0 @@ -25 200 0 -0 40 50 0 0 1236 0 0 0 -1 45 68 -10 830 1049 90 5 0 -2 45 70 30 756 939 90 0 75 -3 42 66 10 16 336 90 0 10 -4 42 68 -20 643 866 90 6 0 -5 42 65 10 15 226 90 0 1 -6 40 69 20 499 824 90 0 4 -7 40 66 20 87 308 90 0 8 -8 38 68 -20 150 429 90 7 0 -9 38 70 -10 429 710 90 11 0 -10 35 66 -10 279 488 90 3 0 -11 35 69 10 363 590 90 0 9 -12 25 85 -40 547 826 90 15 0 -13 22 75 30 30 280 90 0 17 -14 22 85 -20 489 698 90 18 0 -15 20 80 40 318 495 90 0 12 -16 20 85 -10 394 609 90 19 0 -17 18 75 -30 33 226 90 13 0 -18 15 75 20 68 365 90 0 14 -19 15 80 10 176 447 90 0 16 -20 30 50 10 10 265 90 0 22 -21 30 52 -20 836 1043 90 28 0 -22 28 52 -10 704 991 90 20 0 -23 28 55 -10 664 845 90 26 0 -24 25 50 10 15 333 90 0 29 -25 25 52 40 88 305 90 0 30 -26 25 55 10 502 821 90 0 23 -27 23 52 10 179 398 0 0 106 -28 23 55 20 476 663 90 0 21 -29 20 50 -10 288 475 90 24 0 -30 20 55 -40 368 585 90 25 0 -31 10 35 20 144 293 90 0 35 -32 10 40 30 31 309 90 0 34 -33 8 40 40 33 313 90 0 37 -34 8 45 -30 655 912 90 32 0 -35 5 35 -20 191 436 90 31 0 -36 5 45 -30 588 793 90 38 0 -37 2 40 -40 305 512 90 33 0 -38 0 40 30 414 587 90 0 36 -39 0 45 20 481 710 0 0 104 -40 35 30 10 180 405 90 0 47 -41 35 32 10 63 338 90 0 45 -42 33 32 20 19 345 90 0 44 -43 33 35 10 16 273 90 0 52 -44 32 30 -20 278 493 90 42 0 -45 30 30 -10 453 688 90 41 0 -46 30 32 30 355 602 90 0 48 -47 30 35 -10 837 1127 90 40 0 -48 28 30 -30 539 786 90 46 0 -49 28 35 10 867 1126 0 0 105 -50 26 32 -10 719 976 90 51 0 -51 25 30 10 635 876 90 0 50 -52 25 35 -10 825 1056 90 43 0 -53 44 5 20 193 440 90 0 56 -54 42 10 40 78 365 90 0 58 -55 42 15 -40 35 287 90 57 0 -56 40 5 -20 308 513 90 53 0 -57 40 15 40 35 246 90 0 55 -58 38 5 -40 376 629 90 54 0 -59 38 15 -20 519 872 90 60 0 -60 35 5 20 463 728 90 0 59 -61 50 30 -10 412 729 90 67 0 -62 50 35 20 181 398 90 0 66 -63 50 40 50 100 289 90 0 69 -64 48 30 -50 539 786 90 74 0 -65 48 40 10 12 223 90 0 72 -66 47 35 -20 753 948 90 62 0 -67 47 40 10 12 275 90 0 61 -68 45 30 10 669 842 0 0 102 -69 45 35 -50 836 1049 90 63 0 -70 95 30 -20 284 559 90 78 0 -71 95 35 -30 194 459 90 81 0 -72 53 30 -10 367 588 90 65 0 -73 92 30 10 370 659 90 0 77 -74 53 35 50 263 502 90 0 64 -75 45 65 -30 847 1130 90 2 0 -76 90 35 10 119 344 90 0 80 -77 88 30 -10 469 748 90 73 0 -78 88 35 20 50 295 90 0 70 -79 87 30 10 573 826 0 0 103 -80 85 25 -10 694 895 90 76 0 -81 85 35 30 47 356 90 0 71 -82 75 55 20 293 496 90 0 85 -83 72 55 -20 154 449 90 87 0 -84 70 58 20 360 621 90 0 89 -85 68 60 -20 470 697 90 82 0 -86 66 55 10 76 335 90 0 91 -87 65 55 20 25 260 90 0 83 -88 65 60 -10 551 802 90 90 0 -89 63 58 -20 640 899 90 84 0 -90 60 55 10 20 276 90 0 88 -91 60 60 -10 756 969 90 86 0 -92 67 85 -10 257 552 90 96 0 -93 65 85 40 409 584 90 0 99 -94 65 82 -20 209 412 90 98 0 -95 62 80 30 130 305 90 0 100 -96 60 80 10 36 283 90 0 92 -97 60 85 30 470 713 0 0 101 -98 58 75 20 30 248 90 0 94 -99 55 80 -40 628 935 90 93 0 -100 55 85 -30 530 843 90 95 0 -101 60 85 -30 470 713 90 97 0 -102 45 30 -10 669 842 90 68 0 -103 87 30 -10 573 826 90 79 0 -104 0 45 -20 481 710 90 39 0 -105 28 35 -10 867 1126 90 49 0 -106 23 52 -10 179 398 90 27 0 diff --git a/jsprit-instances/instances/lilim/lc109.txt b/jsprit-instances/instances/lilim/lc109.txt deleted file mode 100644 index fa49f304a..000000000 --- a/jsprit-instances/instances/lilim/lc109.txt +++ /dev/null @@ -1,108 +0,0 @@ -25 200 1 -0 40 50 0 0 1236 0 0 0 -1 45 68 10 760 1120 90 0 75 -2 45 70 -10 668 1028 90 9 0 -3 42 66 -10 16 376 90 5 0 -4 42 68 -20 575 935 90 7 0 -5 42 65 10 15 375 90 0 3 -6 40 69 -10 482 842 90 11 0 -7 40 66 20 18 378 90 0 4 -8 38 68 20 110 470 90 0 10 -9 38 70 10 390 750 90 0 2 -10 35 66 -20 204 564 90 8 0 -11 35 69 10 297 657 90 0 6 -12 25 85 -10 507 867 90 19 0 -13 22 75 30 30 390 90 0 14 -14 22 85 -30 414 774 90 13 0 -15 20 80 -20 227 587 90 17 0 -16 20 85 -20 322 682 90 18 0 -17 18 75 20 33 393 90 0 15 -18 15 75 20 37 397 90 0 16 -19 15 80 10 132 492 90 0 12 -20 30 50 10 10 370 90 0 24 -21 30 52 -10 760 1120 90 23 0 -22 28 52 -20 668 1028 90 28 0 -23 28 55 10 575 935 90 0 21 -24 25 50 -10 15 375 90 20 0 -25 25 52 40 17 377 90 0 30 -26 25 55 -10 482 842 90 29 0 -27 23 52 10 109 469 0 0 105 -28 23 55 20 390 750 90 0 22 -29 20 50 10 202 562 90 0 26 -30 20 55 -40 297 657 90 25 0 -31 10 35 -40 39 399 90 33 0 -32 10 40 30 31 391 90 0 37 -33 8 40 40 33 393 90 0 31 -34 8 45 -30 604 964 90 38 0 -35 5 35 10 134 494 90 0 39 -36 5 45 10 511 871 0 0 103 -37 2 40 -30 229 589 90 32 0 -38 0 40 30 321 681 90 0 34 -39 0 45 -10 416 776 90 35 0 -40 35 30 -10 113 473 90 41 0 -41 35 32 10 21 381 90 0 40 -42 33 32 -10 19 379 90 43 0 -43 33 35 10 16 376 90 0 42 -44 32 30 10 206 566 90 0 45 -45 30 30 -10 391 751 90 44 0 -46 30 32 30 299 659 90 0 51 -47 30 35 -10 767 1127 90 50 0 -48 28 30 10 483 843 0 0 106 -49 28 35 -10 766 1126 90 52 0 -50 26 32 10 668 1028 90 0 47 -51 25 30 -30 576 936 90 46 0 -52 25 35 10 761 1121 90 0 49 -53 44 5 20 137 497 90 0 58 -54 42 10 40 42 402 90 0 56 -55 42 15 -40 35 395 90 57 0 -56 40 5 -40 231 591 90 54 0 -57 40 15 40 35 395 90 0 55 -58 38 5 -20 323 683 90 53 0 -59 38 15 -20 516 876 90 60 0 -60 35 5 20 416 776 90 0 59 -61 50 30 10 391 751 90 0 69 -62 50 35 -10 110 470 90 65 0 -63 50 40 50 15 375 90 0 74 -64 48 30 -10 483 843 90 67 0 -65 48 40 10 12 372 90 0 62 -66 47 35 -10 671 1031 90 68 0 -67 47 40 10 12 372 90 0 64 -68 45 30 10 576 936 90 0 66 -69 45 35 -10 763 1123 90 61 0 -70 95 30 30 242 602 90 0 73 -71 95 35 -10 147 507 90 76 0 -72 53 30 10 298 658 0 0 101 -73 92 30 -30 335 695 90 70 0 -74 53 35 -50 203 563 90 63 0 -75 45 65 -10 770 1130 90 1 0 -76 90 35 10 52 412 90 0 71 -77 88 30 10 429 789 0 0 102 -78 88 35 -30 50 410 90 81 0 -79 87 30 10 520 880 90 0 80 -80 85 25 -10 615 975 90 79 0 -81 85 35 30 47 407 90 0 78 -82 75 55 -10 215 575 90 83 0 -83 72 55 10 122 482 90 0 82 -84 70 58 -10 311 671 90 86 0 -85 68 60 30 404 764 90 0 91 -86 66 55 10 26 386 90 0 84 -87 65 55 20 25 385 90 0 89 -88 65 60 -10 497 857 90 90 0 -89 63 58 -20 590 950 90 87 0 -90 60 55 10 20 380 90 0 88 -91 60 60 -30 683 1043 90 85 0 -92 67 85 20 225 585 90 0 100 -93 65 85 -20 317 677 90 98 0 -94 65 82 -30 131 491 90 95 0 -95 62 80 30 38 398 90 0 94 -96 60 80 10 36 396 0 0 104 -97 60 85 30 412 772 90 0 99 -98 58 75 20 30 390 90 0 93 -99 55 80 -30 602 962 90 97 0 -100 55 85 -20 507 867 90 92 0 -101 53 30 -10 298 658 90 72 0 -102 88 30 -10 429 789 90 77 0 -103 5 45 -10 511 871 90 36 0 -104 60 80 -10 36 396 90 96 0 -105 23 52 -10 109 469 90 27 0 -106 28 30 -10 483 843 90 48 0 diff --git a/jsprit-instances/instances/lilim/lc1_2_1_d1.out b/jsprit-instances/instances/lilim/lc1_2_1_d1.out deleted file mode 100644 index a547ba14c..000000000 --- a/jsprit-instances/instances/lilim/lc1_2_1_d1.out +++ /dev/null @@ -1,11 +0,0 @@ --s --ins --rem --dep --two --rel --cro --ex --tou --tra -#---------- pdp_200\lc1_2_1.txt ------------Create encoding diff --git a/jsprit-instances/instances/lilim/lc201.txt b/jsprit-instances/instances/lilim/lc201.txt deleted file mode 100644 index 9d8a87f48..000000000 --- a/jsprit-instances/instances/lilim/lc201.txt +++ /dev/null @@ -1,104 +0,0 @@ -25 700 1 -0 40 50 0 0 3390 0 0 0 -1 52 75 10 311 471 90 0 80 -2 45 70 30 213 373 90 0 94 -3 62 69 10 1167 1327 90 0 90 -4 60 66 -30 1261 1421 90 97 0 -5 42 65 10 25 185 90 0 77 -6 16 42 20 497 657 90 0 32 -7 58 70 -20 1073 1233 90 92 0 -8 34 60 20 2887 3047 90 0 21 -9 28 70 10 2601 2761 90 0 10 -10 35 66 -10 2791 2951 90 9 0 -11 35 69 -40 2698 2858 90 15 0 -12 25 85 -40 2119 2279 90 16 0 -13 22 75 -10 2405 2565 90 29 0 -14 22 85 -10 2026 2186 90 30 0 -15 20 80 40 2216 2376 90 0 11 -16 20 85 40 1934 2094 90 0 12 -17 18 75 -10 2311 2471 90 23 0 -18 15 75 20 1742 1902 90 0 19 -19 15 80 -20 1837 1997 90 18 0 -20 30 50 10 10 170 90 0 27 -21 30 56 -20 2983 3143 90 8 0 -22 28 52 20 22 182 90 0 24 -23 14 66 10 1643 1803 90 0 17 -24 25 50 -20 116 276 90 22 0 -25 22 66 -40 2504 2664 90 33 0 -26 8 62 10 1545 1705 0 0 101 -27 23 52 -10 209 369 90 20 0 -28 4 55 -20 1447 1607 90 37 0 -29 20 50 10 398 558 90 0 13 -30 20 55 10 303 463 90 0 14 -31 10 35 20 781 941 90 0 36 -32 10 40 -20 593 753 90 6 0 -33 8 40 40 685 845 90 0 25 -34 8 45 -30 1346 1506 90 38 0 -35 5 35 10 876 1036 90 0 39 -36 5 45 -20 1253 1413 90 31 0 -37 2 40 20 971 1131 90 0 28 -38 0 40 30 1063 1223 90 0 34 -39 0 45 -10 1158 1318 90 35 0 -40 36 18 10 1819 1979 90 0 50 -41 35 32 -30 2758 2918 90 46 0 -42 33 32 -10 2666 2826 90 43 0 -43 33 35 10 2573 2733 90 0 42 -44 32 20 -10 1913 2073 90 55 0 -45 30 30 -10 2105 2265 90 61 0 -46 34 25 30 2009 2169 90 0 41 -47 30 35 10 2480 2640 90 0 48 -48 36 40 -10 2856 3016 90 47 0 -49 48 20 -10 967 1127 90 69 0 -50 26 32 -10 2292 2452 90 40 0 -51 25 30 -50 2200 2360 90 74 0 -52 25 35 -20 2385 2545 90 53 0 -53 44 5 20 1256 1416 90 0 52 -54 42 10 -10 1160 1320 90 72 0 -55 42 15 10 1065 1225 90 0 44 -56 40 5 30 1350 1510 90 0 60 -57 38 15 -10 1725 1885 90 64 0 -58 38 5 -10 1442 1602 90 65 0 -59 38 10 -20 1630 1790 90 62 0 -60 35 5 -30 1535 1695 90 56 0 -61 50 30 10 401 561 90 0 45 -62 50 35 20 120 280 90 0 59 -63 50 40 50 25 185 90 0 66 -64 48 30 10 493 653 90 0 57 -65 44 25 10 871 1031 90 0 58 -66 47 35 -50 588 748 90 63 0 -67 47 40 10 12 172 90 0 68 -68 42 30 -10 776 936 90 67 0 -69 45 35 10 680 840 90 0 49 -70 95 30 30 2321 2481 90 0 73 -71 95 35 -30 2226 2386 90 88 0 -72 53 30 10 308 468 90 0 54 -73 92 30 -30 2414 2574 90 70 0 -74 53 35 50 213 373 90 0 51 -75 45 65 20 118 278 90 0 78 -76 90 35 -10 2131 2291 90 91 0 -77 72 45 -10 2900 3060 90 5 0 -78 78 40 -20 2802 2962 90 75 0 -79 87 30 -30 2608 2768 90 95 0 -80 85 25 -10 2513 2673 90 1 0 -81 85 35 30 2703 2863 90 0 87 -82 75 55 20 1925 2085 0 0 102 -83 72 55 -20 1832 1992 90 98 0 -84 70 58 20 1641 1801 90 0 85 -85 86 46 -20 2029 2189 90 84 0 -86 66 55 -10 1736 1896 90 99 0 -87 64 46 -30 3097 3257 90 81 0 -88 65 60 30 1546 1706 90 0 71 -89 56 64 10 1355 1515 90 0 96 -90 60 55 -10 3119 3279 90 3 0 -91 60 60 10 1451 1611 90 0 76 -92 67 85 20 694 854 90 0 7 -93 42 58 40 8 168 90 0 100 -94 65 82 -30 788 948 90 2 0 -95 62 80 30 881 1041 90 0 79 -96 62 40 -10 3001 3161 90 89 0 -97 60 85 30 597 757 90 0 4 -98 58 75 20 978 1138 90 0 83 -99 55 80 10 407 567 90 0 86 -100 55 85 -40 502 662 90 93 0 -101 8 62 -10 1545 1705 90 26 0 -102 75 55 -20 1925 2085 90 82 0 diff --git a/jsprit-instances/instances/lilim/lc202.txt b/jsprit-instances/instances/lilim/lc202.txt deleted file mode 100644 index 9bae24654..000000000 --- a/jsprit-instances/instances/lilim/lc202.txt +++ /dev/null @@ -1,104 +0,0 @@ -25 700 1 -0 40 50 0 0 3390 0 0 0 -1 52 75 10 0 3272 90 0 86 -2 45 70 30 0 3279 90 0 71 -3 62 69 -20 0 3270 90 75 0 -4 60 66 10 1261 1421 90 0 73 -5 42 65 10 0 3284 90 0 92 -6 16 42 20 497 657 90 0 19 -7 58 70 -30 0 3273 90 95 0 -8 34 60 -20 2887 3047 90 12 0 -9 28 70 -40 2601 2761 90 16 0 -10 35 66 -30 2791 2951 90 13 0 -11 35 69 -40 2698 2858 90 33 0 -12 25 85 20 0 3261 90 0 8 -13 22 75 30 2405 2565 90 0 10 -14 22 85 10 2026 2186 90 0 25 -15 20 80 -10 2216 2376 90 27 0 -16 20 85 40 1934 2094 90 0 9 -17 18 75 -30 2311 2471 90 38 0 -18 15 75 -20 1742 1902 90 37 0 -19 15 80 -20 1837 1997 90 6 0 -20 30 50 10 10 170 90 0 22 -21 30 56 -20 0 3288 90 34 0 -22 28 52 -10 22 182 90 20 0 -23 14 66 -30 1643 1803 90 32 0 -24 25 50 10 116 276 90 0 30 -25 22 66 -10 2504 2664 90 14 0 -26 8 62 -10 0 3265 90 35 0 -27 23 52 10 209 369 90 0 15 -28 4 55 -20 1447 1607 90 39 0 -29 20 50 10 398 558 90 0 36 -30 20 55 -10 303 463 90 24 0 -31 10 35 20 0 3266 0 0 102 -32 10 40 30 593 753 90 0 23 -33 8 40 40 685 845 90 0 11 -34 8 45 20 0 3267 90 0 21 -35 5 35 10 876 1036 90 0 26 -36 5 45 -10 1253 1413 90 29 0 -37 2 40 20 0 3260 90 0 18 -38 0 40 30 1063 1223 90 0 17 -39 0 45 20 1158 1318 90 0 28 -40 36 18 -30 1819 1979 90 56 0 -41 35 32 -10 2758 2918 90 47 0 -42 33 32 -20 2666 2826 90 53 0 -43 33 35 -10 2573 2733 90 44 0 -44 32 20 10 1913 2073 90 0 43 -45 30 30 10 2105 2265 90 0 52 -46 34 25 -10 2009 2169 90 64 0 -47 30 35 10 2480 2640 90 0 41 -48 36 40 -10 0 3289 90 49 0 -49 48 20 10 967 1127 90 0 48 -50 26 32 -10 0 3277 90 51 0 -51 25 30 10 2200 2360 90 0 50 -52 25 35 -10 0 3278 90 45 0 -53 44 5 20 1256 1416 90 0 42 -54 42 10 -20 1160 1320 90 62 0 -55 42 15 -10 1065 1225 90 68 0 -56 40 5 30 1350 1510 90 0 40 -57 38 15 -10 1725 1885 90 65 0 -58 38 5 -10 1442 1602 90 72 0 -59 38 10 -10 0 3259 90 67 0 -60 35 5 -10 1535 1695 90 61 0 -61 50 30 10 401 561 90 0 60 -62 50 35 20 120 280 90 0 54 -63 50 40 50 25 185 90 0 66 -64 48 30 10 493 653 90 0 46 -65 44 25 10 871 1031 90 0 57 -66 47 35 -50 588 748 90 63 0 -67 47 40 10 12 172 90 0 59 -68 42 30 10 776 936 90 0 55 -69 45 35 -50 680 840 90 74 0 -70 95 30 -30 2321 2481 90 85 0 -71 95 35 -30 2226 2386 90 2 0 -72 53 30 10 0 3276 90 0 58 -73 92 30 -10 2414 2574 90 4 0 -74 53 35 50 213 373 90 0 69 -75 45 65 20 0 3284 90 0 3 -76 90 35 -20 2131 2291 90 98 0 -77 72 45 10 2900 3060 90 0 96 -78 78 40 -10 2802 2962 90 94 0 -79 87 30 -30 2608 2768 90 88 0 -80 85 25 -20 2513 2673 90 82 0 -81 85 35 -10 2703 2863 90 91 0 -82 75 55 20 0 3264 90 0 80 -83 72 55 -30 0 3267 90 97 0 -84 70 58 -10 1641 1801 90 89 0 -85 86 46 30 0 3253 90 0 70 -86 66 55 -10 1736 1896 90 1 0 -87 64 46 20 3097 3257 90 0 90 -88 65 60 30 1546 1706 90 0 79 -89 56 64 10 1355 1515 90 0 84 -90 60 55 -20 3119 3279 90 87 0 -91 60 60 10 0 3277 90 0 81 -92 67 85 -10 694 854 90 5 0 -93 42 58 40 8 168 90 0 99 -94 65 82 10 0 3259 90 0 78 -95 62 80 30 0 3262 90 0 7 -96 62 40 -10 0 3275 90 77 0 -97 60 85 30 597 757 90 0 83 -98 58 75 20 0 3269 90 0 76 -99 55 80 -40 407 567 90 93 0 -100 55 85 20 502 662 0 0 101 -101 55 85 -20 502 662 90 100 0 -102 10 35 -20 0 3266 90 31 0 diff --git a/jsprit-instances/instances/lilim/lc203.txt b/jsprit-instances/instances/lilim/lc203.txt deleted file mode 100644 index 158f0fdaf..000000000 --- a/jsprit-instances/instances/lilim/lc203.txt +++ /dev/null @@ -1,104 +0,0 @@ -25 700 1 -0 40 50 0 0 3390 0 0 0 -1 52 75 10 0 3272 90 0 86 -2 45 70 30 0 3279 90 0 71 -3 62 69 -20 0 3270 90 75 0 -4 60 66 10 1261 1421 90 0 73 -5 42 65 10 0 3284 90 0 92 -6 16 42 -10 497 657 90 24 0 -7 58 70 -30 0 3273 90 95 0 -8 34 60 -10 2887 3047 90 19 0 -9 28 70 10 2601 2761 90 0 11 -10 35 66 10 2791 2951 0 0 102 -11 35 69 -10 2698 2858 90 9 0 -12 25 85 20 0 3261 90 0 13 -13 22 75 -20 2405 2565 90 12 0 -14 22 85 -20 0 3260 90 37 0 -15 20 80 -10 2216 2376 90 35 0 -16 20 85 -40 0 3259 90 33 0 -17 18 75 -10 2311 2471 90 29 0 -18 15 75 -20 0 3264 90 28 0 -19 15 80 10 0 3260 90 0 8 -20 30 50 10 0 3290 90 0 21 -21 30 56 -10 0 3288 90 20 0 -22 28 52 20 22 182 90 0 26 -23 14 66 -30 1643 1803 90 38 0 -24 25 50 10 0 3285 90 0 6 -25 22 66 -20 2504 2664 90 34 0 -26 8 62 -20 0 3265 90 22 0 -27 23 52 10 209 369 90 0 36 -28 4 55 20 0 3263 90 0 18 -29 20 50 10 0 3280 90 0 17 -30 20 55 10 303 463 90 0 32 -31 10 35 20 0 3266 90 0 39 -32 10 40 -10 0 3268 90 30 0 -33 8 40 40 685 845 90 0 16 -34 8 45 20 0 3267 90 0 25 -35 5 35 10 876 1036 90 0 15 -36 5 45 -10 1253 1413 90 27 0 -37 2 40 20 0 3260 90 0 14 -38 0 40 30 1063 1223 90 0 23 -39 0 45 -20 1158 1318 90 31 0 -40 36 18 10 1819 1979 90 0 46 -41 35 32 10 2758 2918 90 0 43 -42 33 32 -10 2666 2826 90 49 0 -43 33 35 -10 0 3283 90 41 0 -44 32 20 -10 1913 2073 90 72 0 -45 30 30 10 2105 2265 90 0 47 -46 34 25 -10 0 3274 90 40 0 -47 30 35 -10 0 3281 90 45 0 -48 36 40 -30 0 3289 90 58 0 -49 48 20 10 967 1127 90 0 42 -50 26 32 -10 0 3277 90 61 0 -51 25 30 -20 0 3275 90 60 0 -52 25 35 -10 0 3278 90 69 0 -53 44 5 -10 1256 1416 90 55 0 -54 42 10 -10 0 3259 90 68 0 -55 42 15 10 1065 1225 90 0 53 -56 40 5 -10 1350 1510 90 65 0 -57 38 15 -10 0 3264 90 59 0 -58 38 5 30 1442 1602 90 0 48 -59 38 10 10 0 3259 90 0 57 -60 35 5 20 0 3254 90 0 51 -61 50 30 10 0 3277 90 0 50 -62 50 35 -50 120 280 90 63 0 -63 50 40 50 0 3285 90 0 62 -64 48 30 10 493 653 90 0 66 -65 44 25 10 871 1031 90 0 56 -66 47 35 -10 588 748 90 64 0 -67 47 40 10 12 172 90 0 74 -68 42 30 10 776 936 90 0 54 -69 45 35 10 680 840 90 0 52 -70 95 30 -30 2321 2481 90 85 0 -71 95 35 -30 0 3242 90 2 0 -72 53 30 10 0 3276 90 0 44 -73 92 30 -10 0 3244 90 4 0 -74 53 35 -10 213 373 90 67 0 -75 45 65 20 0 3284 90 0 3 -76 90 35 -20 2131 2291 90 98 0 -77 72 45 10 2900 3060 90 0 96 -78 78 40 -10 2802 2962 90 94 0 -79 87 30 -30 2608 2768 90 88 0 -80 85 25 -20 2513 2673 90 82 0 -81 85 35 -10 0 3252 90 91 0 -82 75 55 20 0 3264 90 0 80 -83 72 55 -30 0 3267 90 97 0 -84 70 58 -10 1641 1801 90 89 0 -85 86 46 30 0 3253 90 0 70 -86 66 55 -10 0 3273 90 1 0 -87 64 46 20 3097 3257 90 0 90 -88 65 60 30 1546 1706 90 0 79 -89 56 64 10 0 3278 90 0 84 -90 60 55 -20 0 3279 90 87 0 -91 60 60 10 0 3277 90 0 81 -92 67 85 -10 694 854 90 5 0 -93 42 58 40 8 168 90 0 99 -94 65 82 10 0 3259 90 0 78 -95 62 80 30 0 3262 90 0 7 -96 62 40 -10 0 3275 90 77 0 -97 60 85 30 0 3259 90 0 83 -98 58 75 20 0 3269 90 0 76 -99 55 80 -40 407 567 90 93 0 -100 55 85 20 502 662 0 0 101 -101 55 85 -20 502 662 90 100 0 -102 35 66 -10 2791 2951 90 10 0 diff --git a/jsprit-instances/instances/lilim/lc204.txt b/jsprit-instances/instances/lilim/lc204.txt deleted file mode 100644 index 837e2767c..000000000 --- a/jsprit-instances/instances/lilim/lc204.txt +++ /dev/null @@ -1,104 +0,0 @@ -25 700 0 -0 40 50 0 0 3390 0 0 0 -1 52 75 10 0 3272 90 0 80 -2 45 70 30 0 3279 90 0 94 -3 62 69 10 0 3270 90 0 90 -4 60 66 -30 1261 1421 90 97 0 -5 42 65 10 0 3284 90 0 77 -6 16 42 20 0 3274 90 0 32 -7 58 70 -20 0 3273 90 92 0 -8 34 60 20 2887 3047 90 0 21 -9 28 70 10 2601 2761 90 0 10 -10 35 66 -10 0 3283 90 9 0 -11 35 69 -40 2698 2858 90 15 0 -12 25 85 -40 0 3261 90 16 0 -13 22 75 -10 2405 2565 90 29 0 -14 22 85 -10 0 3260 90 30 0 -15 20 80 40 2216 2376 90 0 11 -16 20 85 40 0 3259 90 0 12 -17 18 75 -10 0 3266 90 23 0 -18 15 75 20 0 3264 90 0 19 -19 15 80 -20 0 3260 90 18 0 -20 30 50 10 0 3290 90 0 27 -21 30 56 -20 0 3288 90 8 0 -22 28 52 20 0 3287 90 0 24 -23 14 66 10 1643 1803 90 0 17 -24 25 50 -20 0 3285 90 22 0 -25 22 66 -40 2504 2664 90 33 0 -26 8 62 10 0 3265 0 0 101 -27 23 52 -10 0 3282 90 20 0 -28 4 55 -20 0 3263 90 37 0 -29 20 50 10 0 3280 90 0 13 -30 20 55 10 0 3279 90 0 14 -31 10 35 20 0 3266 90 0 36 -32 10 40 -20 0 3268 90 6 0 -33 8 40 40 0 3266 90 0 25 -34 8 45 -30 0 3267 90 38 0 -35 5 35 10 0 3261 90 0 39 -36 5 45 -20 0 3264 90 31 0 -37 2 40 20 0 3260 90 0 28 -38 0 40 30 1063 1223 90 0 34 -39 0 45 -10 0 3259 90 35 0 -40 36 18 10 0 3267 90 0 45 -41 35 32 -10 0 3281 90 61 0 -42 33 32 -50 0 3280 90 74 0 -43 33 35 -30 0 3283 90 46 0 -44 32 20 -10 1913 2073 90 55 0 -45 30 30 -10 0 3277 90 40 0 -46 34 25 30 0 3274 90 0 43 -47 30 35 -10 0 3281 90 52 0 -48 36 40 -10 0 3289 90 50 0 -49 48 20 -10 0 3268 90 69 0 -50 26 32 10 0 3277 90 0 48 -51 25 30 -20 0 3275 90 53 0 -52 25 35 10 0 3278 90 0 47 -53 44 5 20 1256 1416 90 0 51 -54 42 10 -10 0 3259 90 72 0 -55 42 15 10 1065 1225 90 0 44 -56 40 5 30 0 3255 90 0 60 -57 38 15 -10 0 3264 90 64 0 -58 38 5 -10 1442 1602 90 65 0 -59 38 10 -20 0 3259 90 62 0 -60 35 5 -30 0 3254 90 56 0 -61 50 30 10 0 3277 90 0 41 -62 50 35 20 120 280 90 0 59 -63 50 40 50 0 3285 90 0 66 -64 48 30 10 0 3278 90 0 57 -65 44 25 10 0 3274 90 0 58 -66 47 35 -50 0 3283 90 63 0 -67 47 40 10 12 172 90 0 68 -68 42 30 -10 0 3279 90 67 0 -69 45 35 10 680 840 90 0 49 -70 95 30 30 0 3241 90 0 73 -71 95 35 -30 0 3242 90 88 0 -72 53 30 10 0 3276 90 0 54 -73 92 30 -30 0 3244 90 70 0 -74 53 35 50 213 373 90 0 42 -75 45 65 20 0 3284 90 0 78 -76 90 35 -10 2131 2291 90 91 0 -77 72 45 -10 2900 3060 90 5 0 -78 78 40 -20 0 3260 90 75 0 -79 87 30 -30 2608 2768 90 95 0 -80 85 25 -10 0 3248 90 1 0 -81 85 35 30 0 3252 90 0 87 -82 75 55 20 0 3264 0 0 102 -83 72 55 -20 0 3267 90 98 0 -84 70 58 20 1641 1801 90 0 85 -85 86 46 -20 0 3253 90 84 0 -86 66 55 -10 0 3273 90 99 0 -87 64 46 -30 3097 3257 90 81 0 -88 65 60 30 0 3273 90 0 71 -89 56 64 10 0 3278 90 0 96 -90 60 55 -10 0 3279 90 3 0 -91 60 60 10 0 3277 90 0 76 -92 67 85 20 694 854 90 0 7 -93 42 58 40 0 3291 90 0 100 -94 65 82 -30 0 3259 90 2 0 -95 62 80 30 0 3262 90 0 79 -96 62 40 -10 0 3275 90 89 0 -97 60 85 30 0 3259 90 0 4 -98 58 75 20 0 3269 90 0 83 -99 55 80 10 407 567 90 0 86 -100 55 85 -40 502 662 90 93 0 -101 8 62 -10 0 3265 90 26 0 -102 75 55 -20 0 3264 90 82 0 diff --git a/jsprit-instances/instances/lilim/lc205.txt b/jsprit-instances/instances/lilim/lc205.txt deleted file mode 100644 index 72deb9c5e..000000000 --- a/jsprit-instances/instances/lilim/lc205.txt +++ /dev/null @@ -1,104 +0,0 @@ -25 700 0 -0 40 50 0 0 3390 0 0 0 -1 52 75 10 231 551 90 0 100 -2 45 70 30 133 453 90 0 7 -3 62 69 10 1087 1407 90 0 89 -4 60 66 10 1181 1501 90 0 77 -5 42 65 10 15 335 90 0 99 -6 16 42 20 417 737 90 0 17 -7 58 70 -30 993 1313 90 2 0 -8 34 60 -10 2807 3127 90 10 0 -9 28 70 -10 2521 2841 90 14 0 -10 35 66 10 2711 3031 90 0 8 -11 35 69 10 2618 2938 90 0 21 -12 25 85 -10 2039 2359 90 19 0 -13 22 75 -30 2325 2645 90 38 0 -14 22 85 10 1946 2266 90 0 9 -15 20 80 -10 2136 2456 90 35 0 -16 20 85 40 1854 2174 0 0 101 -17 18 75 -20 2231 2551 90 6 0 -18 15 75 20 1662 1982 90 0 25 -19 15 80 10 1757 2077 90 0 12 -20 30 50 10 10 330 90 0 27 -21 30 56 -10 2903 3223 90 11 0 -22 28 52 20 12 332 90 0 39 -23 14 66 -20 1563 1883 90 31 0 -24 25 50 10 36 356 90 0 34 -25 22 66 -20 2424 2744 90 18 0 -26 8 62 -10 1465 1785 90 36 0 -27 23 52 -10 129 449 90 20 0 -28 4 55 -20 1367 1687 90 37 0 -29 20 50 10 318 638 90 0 33 -30 20 55 10 223 543 90 0 32 -31 10 35 20 701 1021 90 0 23 -32 10 40 -10 513 833 90 30 0 -33 8 40 -10 605 925 90 29 0 -34 8 45 -10 1266 1586 90 24 0 -35 5 35 10 796 1116 90 0 15 -36 5 45 10 1173 1493 90 0 26 -37 2 40 20 891 1211 90 0 28 -38 0 40 30 983 1303 90 0 13 -39 0 45 -20 1078 1398 90 22 0 -40 36 18 -20 1739 2059 90 62 0 -41 35 32 -10 2678 2998 90 50 0 -42 33 32 -10 2586 2906 90 52 0 -43 33 35 -20 2493 2813 90 60 0 -44 32 20 -10 1833 2153 90 49 0 -45 30 30 -30 2025 2345 90 46 0 -46 34 25 30 1929 2249 90 0 45 -47 30 35 -20 2400 2720 90 53 0 -48 36 40 -10 2776 3096 90 61 0 -49 48 20 10 887 1207 90 0 44 -50 26 32 10 2212 2532 90 0 41 -51 25 30 -10 2120 2440 90 59 0 -52 25 35 10 2305 2625 90 0 42 -53 44 5 20 1176 1496 90 0 47 -54 42 10 40 1080 1400 90 0 58 -55 42 15 10 985 1305 90 0 57 -56 40 5 -10 1270 1590 90 66 0 -57 38 15 -10 1645 1965 90 55 0 -58 38 5 -40 1362 1682 90 54 0 -59 38 10 10 1550 1870 90 0 51 -60 35 5 20 1455 1775 90 0 43 -61 50 30 10 321 641 90 0 48 -62 50 35 20 40 360 90 0 40 -63 50 40 -10 14 334 90 67 0 -64 48 30 -10 413 733 90 72 0 -65 44 25 -50 791 1111 90 74 0 -66 47 35 10 508 828 90 0 56 -67 47 40 10 12 332 90 0 63 -68 42 30 -10 696 1016 90 69 0 -69 45 35 10 600 920 90 0 68 -70 95 30 -10 2241 2561 90 76 0 -71 95 35 20 2146 2466 90 0 87 -72 53 30 10 228 548 90 0 64 -73 92 30 -20 2334 2654 90 82 0 -74 53 35 50 133 453 90 0 65 -75 45 65 20 38 358 90 0 95 -76 90 35 10 2051 2371 90 0 70 -77 72 45 -10 2820 3140 90 4 0 -78 78 40 -10 2722 3042 90 79 0 -79 87 30 10 2528 2848 90 0 78 -80 85 25 10 2433 2753 90 0 90 -81 85 35 30 2623 2943 0 0 102 -82 75 55 20 1845 2165 90 0 73 -83 72 55 -30 1752 2072 90 88 0 -84 70 58 20 1561 1881 90 0 85 -85 86 46 -20 1949 2269 90 84 0 -86 66 55 10 1656 1976 90 0 96 -87 64 46 -20 2955 3275 90 71 0 -88 65 60 30 1466 1786 90 0 83 -89 56 64 -10 1275 1595 90 3 0 -90 60 55 -10 2959 3279 90 80 0 -91 60 60 -10 1371 1691 90 94 0 -92 67 85 -40 614 934 90 93 0 -93 42 58 40 8 328 90 0 92 -94 65 82 10 708 1028 90 0 91 -95 62 80 -20 801 1121 90 75 0 -96 62 40 -10 2921 3241 90 86 0 -97 60 85 30 517 837 90 0 98 -98 58 75 -30 898 1218 90 97 0 -99 55 80 -10 327 647 90 5 0 -100 55 85 -10 422 742 90 1 0 -101 20 85 -40 1854 2174 90 16 0 -102 85 35 -30 2623 2943 90 81 0 diff --git a/jsprit-instances/instances/lilim/lc206.txt b/jsprit-instances/instances/lilim/lc206.txt deleted file mode 100644 index b95f44dcd..000000000 --- a/jsprit-instances/instances/lilim/lc206.txt +++ /dev/null @@ -1,104 +0,0 @@ -25 700 0 -0 40 50 0 0 3390 0 0 0 -1 52 75 10 213 568 90 0 85 -2 45 70 30 22 563 90 0 95 -3 62 69 -20 1030 1463 90 98 0 -4 60 66 10 1154 1527 90 0 77 -5 42 65 10 15 402 90 0 75 -6 16 42 20 331 822 90 0 16 -7 58 70 20 965 1340 90 0 70 -8 34 60 20 2653 3280 0 0 102 -9 28 70 -10 2385 2976 90 19 0 -10 35 66 -10 2628 3113 90 20 0 -11 35 69 -10 2603 2952 90 14 0 -12 25 85 -20 1985 2412 90 18 0 -13 22 75 -20 2310 2659 90 17 0 -14 22 85 10 1846 2365 90 0 11 -15 20 80 -20 2077 2514 90 28 0 -16 20 85 -20 1763 2264 90 6 0 -17 18 75 20 2143 2638 90 0 13 -18 15 75 20 1560 2083 90 0 12 -19 15 80 10 1689 2144 90 0 9 -20 30 50 10 10 645 90 0 10 -21 30 56 -40 2675 3288 90 25 0 -22 28 52 20 12 505 90 0 39 -23 14 66 -10 1519 1926 90 36 0 -24 25 50 10 23 368 90 0 34 -25 22 66 40 2380 2787 90 0 21 -26 8 62 -10 1330 1919 90 35 0 -27 23 52 10 93 484 90 0 32 -28 4 55 20 1268 1785 90 0 15 -29 20 50 10 168 787 90 0 33 -30 20 55 10 170 595 90 0 38 -31 10 35 20 585 1136 90 0 37 -32 10 40 -10 448 897 90 27 0 -33 8 40 -10 499 1030 90 29 0 -34 8 45 -10 1190 1661 90 24 0 -35 5 35 10 666 1245 90 0 26 -36 5 45 10 1076 1589 90 0 23 -37 2 40 -20 772 1329 90 31 0 -38 0 40 -10 890 1395 90 30 0 -39 0 45 -20 1036 1439 90 22 0 -40 36 18 10 1612 2185 90 0 50 -41 35 32 -20 2599 3076 90 42 0 -42 33 32 20 2529 2962 90 0 41 -43 33 35 -30 2463 2842 90 46 0 -44 32 20 -10 1745 2240 90 55 0 -45 30 30 -10 1932 2437 90 61 0 -46 34 25 30 1884 2293 90 0 43 -47 30 35 10 2348 2771 90 0 48 -48 36 40 -10 2715 3156 90 47 0 -49 48 20 -10 812 1281 90 69 0 -50 26 32 -10 2018 2725 90 40 0 -51 25 30 -50 2015 2544 90 74 0 -52 25 35 -20 2201 2728 90 53 0 -53 44 5 20 1078 1593 90 0 52 -54 42 10 -10 998 1481 90 72 0 -55 42 15 10 897 1392 90 0 44 -56 40 5 30 1199 1660 90 0 60 -57 38 15 -10 1552 2057 90 64 0 -58 38 5 -10 1263 1780 90 65 0 -59 38 10 -20 1498 1921 90 62 0 -60 35 5 -30 1325 1904 90 56 0 -61 50 30 10 223 738 90 0 45 -62 50 35 20 18 474 90 0 59 -63 50 40 50 14 360 90 0 66 -64 48 30 10 246 899 90 0 57 -65 44 25 10 704 1197 90 0 58 -66 47 35 -50 393 942 90 63 0 -67 47 40 10 12 424 90 0 68 -68 42 30 -10 641 1070 90 67 0 -69 45 35 10 534 985 90 0 49 -70 95 30 -20 2119 2682 90 7 0 -71 95 35 -20 2079 2532 90 100 0 -72 53 30 10 131 644 90 0 54 -73 92 30 10 2169 2818 90 0 78 -74 53 35 50 87 498 90 0 51 -75 45 65 -10 15 607 90 5 0 -76 90 35 -20 2002 2419 90 92 0 -77 72 45 -10 2701 3258 90 4 0 -78 78 40 -10 2599 3164 90 73 0 -79 87 30 10 2505 2870 90 0 96 -80 85 25 -10 2369 2816 90 86 0 -81 85 35 -40 2563 3002 90 93 0 -82 75 55 -10 1783 2226 90 89 0 -83 72 55 10 1591 2232 90 0 90 -84 70 58 -30 1513 1928 90 97 0 -85 86 46 -10 1829 2388 90 1 0 -86 66 55 10 1604 2027 90 0 80 -87 64 46 -10 2976 3275 90 94 0 -88 65 60 30 1338 1913 0 0 101 -89 56 64 10 1116 1753 90 0 82 -90 60 55 -10 2789 3279 90 83 0 -91 60 60 -10 1349 1712 90 99 0 -92 67 85 20 518 1029 90 0 76 -93 42 58 40 8 509 90 0 81 -94 65 82 10 549 1186 90 0 87 -95 62 80 -30 744 1177 90 2 0 -96 62 40 -10 2713 3275 90 79 0 -97 60 85 30 397 956 90 0 84 -98 58 75 20 839 1276 90 0 3 -99 55 80 10 272 701 90 0 91 -100 55 85 20 373 790 90 0 71 -101 65 60 -30 1338 1913 90 88 0 -102 34 60 -20 2653 3280 90 8 0 diff --git a/jsprit-instances/instances/lilim/lc207.txt b/jsprit-instances/instances/lilim/lc207.txt deleted file mode 100644 index 7da835c22..000000000 --- a/jsprit-instances/instances/lilim/lc207.txt +++ /dev/null @@ -1,104 +0,0 @@ -25 700 1 -0 40 50 0 0 3390 0 0 0 -1 52 75 10 302 479 90 0 100 -2 45 70 30 157 428 90 0 7 -3 62 69 10 1138 1355 90 0 89 -4 60 66 10 1247 1434 90 0 77 -5 42 65 10 15 208 90 0 99 -6 16 42 20 209 944 90 0 15 -7 58 70 -30 1059 1246 90 2 0 -8 34 60 -10 2035 3288 90 10 0 -9 28 70 -40 2090 3271 90 16 0 -10 35 66 10 2311 3283 90 0 8 -11 35 69 10 2428 3127 90 0 21 -12 25 85 -10 1772 2625 90 35 0 -13 22 75 -30 2135 2834 90 38 0 -14 22 85 -20 1586 2625 90 18 0 -15 20 80 -20 1858 2733 90 6 0 -16 20 85 40 1512 2515 90 0 9 -17 18 75 20 1895 2886 90 0 25 -18 15 75 20 1299 2344 90 0 14 -19 15 80 10 1461 2372 0 0 101 -20 30 50 10 10 963 90 0 27 -21 30 56 -10 2062 3288 90 11 0 -22 28 52 20 12 752 90 0 39 -23 14 66 -20 1316 2129 90 31 0 -24 25 50 10 15 532 90 0 34 -25 22 66 -20 2177 2990 90 17 0 -26 8 62 -10 1036 2213 90 36 0 -27 23 52 -10 17 602 90 20 0 -28 4 55 -20 1010 2043 90 37 0 -29 20 50 10 20 948 90 0 33 -30 20 55 10 63 702 90 0 32 -31 10 35 20 309 1412 90 0 23 -32 10 40 -10 336 1009 90 30 0 -33 8 40 -10 234 1295 90 29 0 -34 8 45 -10 954 1897 90 24 0 -35 5 35 10 377 1534 90 0 12 -36 5 45 10 819 1846 90 0 26 -37 2 40 20 494 1607 90 0 28 -38 0 40 30 637 1648 90 0 13 -39 0 45 -20 834 1641 90 22 0 -40 36 18 -20 1468 2329 90 62 0 -41 35 32 -10 2480 3195 90 52 0 -42 33 32 -20 2421 3070 90 60 0 -43 33 35 -10 2368 2937 90 50 0 -44 32 20 -10 1621 2364 90 49 0 -45 30 30 -30 1805 2564 90 46 0 -46 34 25 30 1782 2395 90 0 45 -47 30 35 -20 2242 2877 90 53 0 -48 36 40 -10 2605 3266 90 61 0 -49 48 20 10 812 1281 90 0 44 -50 26 32 10 1842 2901 90 0 43 -51 25 30 -10 1883 2676 90 59 0 -52 25 35 10 2070 2859 90 0 41 -53 44 5 20 1078 1593 90 0 47 -54 42 10 40 998 1481 90 0 58 -55 42 15 10 897 1392 90 0 57 -56 40 5 -10 1083 1776 90 66 0 -57 38 15 -10 1426 2183 90 55 0 -58 38 5 -40 1133 1910 90 54 0 -59 38 10 10 1392 2027 90 0 51 -60 35 5 20 1180 2049 90 0 42 -61 50 30 10 223 738 90 0 48 -62 50 35 20 18 474 90 0 40 -63 50 40 -10 14 360 90 67 0 -64 48 30 -10 246 899 90 72 0 -65 44 25 -50 704 1197 90 74 0 -66 47 35 10 393 942 90 0 56 -67 47 40 10 12 424 90 0 63 -68 42 30 -10 641 1070 90 69 0 -69 45 35 10 534 985 90 0 68 -70 95 30 -10 2119 2682 90 76 0 -71 95 35 20 2192 2419 90 0 87 -72 53 30 10 131 644 90 0 64 -73 92 30 -20 2169 2818 90 82 0 -74 53 35 50 87 498 90 0 65 -75 45 65 20 49 346 90 0 95 -76 90 35 10 2106 2315 90 0 70 -77 72 45 -10 2701 3258 90 4 0 -78 78 40 -10 2599 3164 90 79 0 -79 87 30 10 2505 2870 90 0 78 -80 85 25 10 2369 2816 90 0 90 -81 85 35 30 2563 3002 0 0 102 -82 75 55 20 1894 2115 90 0 73 -83 72 55 -30 1751 2072 90 88 0 -84 70 58 20 1617 1824 90 0 85 -85 86 46 -20 1969 2248 90 84 0 -86 66 55 10 1710 1921 90 0 96 -87 64 46 -20 2976 3275 90 71 0 -88 65 60 30 1482 1769 90 0 83 -89 56 64 -10 1275 1594 90 3 0 -90 60 55 -10 2789 3279 90 80 0 -91 60 60 -10 1440 1621 90 94 0 -92 67 85 -40 646 901 90 93 0 -93 42 58 40 8 258 90 0 92 -94 65 82 10 708 1027 90 0 91 -95 62 80 -20 852 1069 90 75 0 -96 62 40 -10 2713 3275 90 86 0 -97 60 85 30 537 816 90 0 98 -98 58 75 -30 948 1167 90 97 0 -99 55 80 -10 379 594 90 5 0 -100 55 85 -10 477 686 90 1 0 -101 15 80 -10 1461 2372 90 19 0 -102 85 35 -30 2563 3002 90 81 0 diff --git a/jsprit-instances/instances/lilim/lc208.txt b/jsprit-instances/instances/lilim/lc208.txt deleted file mode 100644 index febbb57d6..000000000 --- a/jsprit-instances/instances/lilim/lc208.txt +++ /dev/null @@ -1,104 +0,0 @@ -25 700 0 -0 40 50 0 0 3390 0 0 0 -1 52 75 10 71 711 90 0 100 -2 45 70 30 20 660 90 0 7 -3 62 69 10 927 1567 90 0 89 -4 60 66 10 1021 1661 90 0 77 -5 42 65 10 15 655 90 0 99 -6 16 42 20 257 897 90 0 15 -7 58 70 -30 833 1473 90 2 0 -8 34 60 -10 2647 3287 90 10 0 -9 28 70 -40 2361 3001 90 16 0 -10 35 66 10 2551 3191 90 0 8 -11 35 69 10 2458 3098 90 0 21 -12 25 85 -10 1879 2519 90 35 0 -13 22 75 -30 2165 2805 90 38 0 -14 22 85 -20 1786 2426 90 17 0 -15 20 80 -20 1976 2616 90 6 0 -16 20 85 40 1694 2334 90 0 9 -17 18 75 20 2071 2711 90 0 14 -18 15 75 20 1502 2142 90 0 25 -19 15 80 10 1597 2237 0 0 101 -20 30 50 10 10 650 90 0 27 -21 30 56 -10 2648 3288 90 11 0 -22 28 52 20 12 652 90 0 39 -23 14 66 -20 1403 2043 90 31 0 -24 25 50 10 15 655 90 0 34 -25 22 66 -20 2264 2904 90 18 0 -26 8 62 -10 1305 1945 90 36 0 -27 23 52 -10 17 657 90 20 0 -28 4 55 -20 1207 1847 90 37 0 -29 20 50 10 158 798 90 0 33 -30 20 55 10 63 703 90 0 32 -31 10 35 20 541 1181 90 0 23 -32 10 40 -10 353 993 90 30 0 -33 8 40 -10 445 1085 90 29 0 -34 8 45 -10 1106 1746 90 24 0 -35 5 35 10 636 1276 90 0 12 -36 5 45 10 1013 1653 90 0 26 -37 2 40 20 731 1371 90 0 28 -38 0 40 30 823 1463 90 0 13 -39 0 45 -20 918 1558 90 22 0 -40 36 18 -20 1579 2219 90 62 0 -41 35 32 -10 2518 3158 90 52 0 -42 33 32 -20 2426 3066 90 60 0 -43 33 35 -10 2333 2973 90 50 0 -44 32 20 -10 1673 2313 90 49 0 -45 30 30 -30 1865 2505 90 46 0 -46 34 25 30 1769 2409 90 0 45 -47 30 35 -20 2240 2880 90 53 0 -48 36 40 -10 2616 3256 90 61 0 -49 48 20 10 727 1367 90 0 44 -50 26 32 10 2052 2692 90 0 43 -51 25 30 -10 1960 2600 90 59 0 -52 25 35 10 2145 2785 90 0 41 -53 44 5 20 1016 1656 90 0 47 -54 42 10 40 920 1560 90 0 58 -55 42 15 10 825 1465 90 0 57 -56 40 5 -10 1110 1750 90 66 0 -57 38 15 -10 1485 2125 90 55 0 -58 38 5 -40 1202 1842 90 54 0 -59 38 10 10 1390 2030 90 0 51 -60 35 5 20 1295 1935 90 0 42 -61 50 30 10 161 801 90 0 48 -62 50 35 20 18 658 90 0 40 -63 50 40 -10 14 654 90 67 0 -64 48 30 -10 253 893 90 72 0 -65 44 25 -50 631 1271 90 74 0 -66 47 35 10 348 988 90 0 56 -67 47 40 10 12 652 90 0 63 -68 42 30 -10 536 1176 90 69 0 -69 45 35 10 440 1080 90 0 68 -70 95 30 -10 2081 2721 90 76 0 -71 95 35 20 1986 2626 90 0 87 -72 53 30 10 68 708 90 0 64 -73 92 30 -20 2174 2814 90 82 0 -74 53 35 50 19 659 90 0 65 -75 45 65 20 15 655 90 0 95 -76 90 35 10 1891 2531 90 0 70 -77 72 45 -10 2627 3267 90 4 0 -78 78 40 -10 2562 3202 90 79 0 -79 87 30 10 2368 3008 90 0 78 -80 85 25 10 2273 2913 90 0 90 -81 85 35 30 2463 3103 0 0 102 -82 75 55 20 1685 2325 90 0 73 -83 72 55 -30 1592 2232 90 88 0 -84 70 58 20 1401 2041 90 0 85 -85 86 46 -20 1789 2429 90 84 0 -86 66 55 10 1496 2136 90 0 96 -87 64 46 -20 2635 3275 90 71 0 -88 65 60 30 1306 1946 90 0 83 -89 56 64 -10 1115 1755 90 3 0 -90 60 55 -10 2639 3279 90 80 0 -91 60 60 -10 1211 1851 90 94 0 -92 67 85 -40 454 1094 90 93 0 -93 42 58 40 8 648 90 0 92 -94 65 82 10 548 1188 90 0 91 -95 62 80 -20 641 1281 90 75 0 -96 62 40 -10 2635 3275 90 86 0 -97 60 85 30 357 997 90 0 98 -98 58 75 -30 738 1378 90 97 0 -99 55 80 -10 167 807 90 5 0 -100 55 85 -10 262 902 90 1 0 -101 15 80 -10 1597 2237 90 19 0 -102 85 35 -30 2463 3103 90 81 0 diff --git a/jsprit-instances/instances/lilim/lr101.txt b/jsprit-instances/instances/lilim/lr101.txt deleted file mode 100644 index 07abbdb58..000000000 --- a/jsprit-instances/instances/lilim/lr101.txt +++ /dev/null @@ -1,108 +0,0 @@ -25 200 1 -0 35 35 0 0 230 0 0 0 -1 41 49 -25 161 171 10 66 0 -2 35 17 7 50 60 10 0 73 -3 55 45 -6 116 126 10 69 0 -4 55 20 -6 149 159 10 56 0 -5 15 30 26 34 44 10 0 85 -6 25 30 -9 99 109 10 52 0 -7 20 50 -9 81 91 10 88 0 -8 10 43 9 95 105 10 0 17 -9 55 60 -21 97 107 10 30 0 -10 30 60 -27 124 134 10 31 0 -11 20 65 12 67 77 10 0 20 -12 50 35 -16 63 73 10 28 0 -13 30 25 -7 159 169 10 43 0 -14 15 10 20 32 42 10 0 38 -15 30 5 8 61 71 10 0 97 -16 10 20 19 75 85 10 0 91 -17 5 30 -9 157 167 10 8 0 -18 20 40 12 87 97 10 0 89 -19 15 60 -5 76 86 10 36 0 -20 45 65 -12 126 136 10 11 0 -21 45 20 11 62 72 10 0 41 -22 45 10 -18 97 107 10 75 0 -23 55 5 29 68 78 0 0 104 -24 65 35 3 153 163 10 0 80 -25 65 20 -2 172 182 10 55 0 -26 45 30 -9 132 142 10 40 0 -27 35 40 16 37 47 10 0 79 -28 41 37 16 39 49 10 0 12 -29 64 42 9 63 73 10 0 78 -30 40 60 21 71 81 10 0 9 -31 31 52 27 50 60 10 0 10 -32 35 69 -3 141 151 10 90 0 -33 53 52 11 37 47 10 0 34 -34 65 55 -11 117 127 10 33 0 -35 63 65 8 143 153 10 0 77 -36 2 60 5 41 51 10 0 19 -37 20 20 -11 134 144 10 83 0 -38 5 5 -20 83 93 10 14 0 -39 60 12 31 44 54 10 0 67 -40 40 25 9 85 95 10 0 26 -41 42 7 -11 97 107 10 21 0 -42 24 12 5 31 41 10 0 87 -43 23 3 7 132 142 10 0 13 -44 11 14 18 69 79 0 0 105 -45 6 38 16 32 42 10 0 84 -46 2 48 -27 117 127 10 47 0 -47 8 56 27 51 61 10 0 46 -48 13 52 -9 165 175 10 64 0 -49 6 68 -10 108 118 10 63 0 -50 47 47 -15 124 134 10 71 0 -51 49 58 10 88 98 0 0 101 -52 27 43 9 52 62 10 0 6 -53 37 31 14 95 105 0 0 106 -54 57 29 -13 140 150 10 76 0 -55 63 23 2 136 146 10 0 25 -56 53 12 6 130 140 10 0 4 -57 32 12 -2 101 111 10 92 0 -58 36 26 -25 200 210 10 72 0 -59 21 24 28 18 28 10 0 96 -60 17 34 -16 162 172 10 82 0 -61 12 24 13 76 86 10 0 93 -62 24 58 19 58 68 10 0 70 -63 27 69 10 34 44 10 0 49 -64 15 77 9 73 83 10 0 48 -65 62 77 20 51 61 10 0 81 -66 49 73 25 127 137 10 0 1 -67 67 5 -31 83 93 10 39 0 -68 56 39 36 142 152 0 0 103 -69 37 47 6 50 60 10 0 3 -70 37 56 -19 182 192 10 62 0 -71 57 68 15 77 87 10 0 50 -72 47 16 25 35 45 10 0 58 -73 44 17 -7 78 88 10 2 0 -74 46 13 8 149 159 0 0 102 -75 49 11 18 69 79 10 0 22 -76 49 42 13 73 83 10 0 54 -77 53 43 -8 179 189 10 35 0 -78 61 52 -9 96 106 10 29 0 -79 57 48 -16 92 102 10 27 0 -80 56 37 -3 182 192 10 24 0 -81 55 54 -20 94 104 10 65 0 -82 15 47 16 55 65 10 0 60 -83 14 37 11 44 54 10 0 37 -84 11 31 -16 101 111 10 45 0 -85 16 22 -26 91 101 10 5 0 -86 4 18 -10 94 104 10 98 0 -87 28 18 -5 93 103 10 42 0 -88 26 52 9 74 84 10 0 7 -89 26 35 -12 176 186 10 18 0 -90 31 67 3 95 105 10 0 32 -91 15 19 -19 160 170 10 16 0 -92 22 22 2 18 28 10 0 57 -93 18 24 -13 188 198 10 61 0 -94 26 27 -9 100 110 10 99 0 -95 25 24 20 39 49 10 0 100 -96 22 27 -28 135 145 10 59 0 -97 25 21 -8 133 143 10 15 0 -98 19 21 10 58 68 10 0 86 -99 20 26 9 83 93 10 0 94 -100 18 18 -20 185 195 10 95 0 -101 49 58 -10 88 98 10 51 0 -102 46 13 -8 149 159 10 74 0 -103 56 39 -36 142 152 10 68 0 -104 55 5 -29 68 78 10 23 0 -105 11 14 -18 69 79 10 44 0 -106 37 31 -14 95 105 10 53 0 diff --git a/jsprit-instances/instances/lilim/lr102.txt b/jsprit-instances/instances/lilim/lr102.txt deleted file mode 100644 index e3b103f37..000000000 --- a/jsprit-instances/instances/lilim/lr102.txt +++ /dev/null @@ -1,112 +0,0 @@ -25 200 1 -0 35 35 0 0 230 0 0 0 -1 41 49 -13 0 204 10 50 0 -2 35 17 -20 0 202 10 14 0 -3 55 45 13 0 197 0 0 106 -4 55 20 19 149 159 10 0 25 -5 15 30 26 0 199 10 0 89 -6 25 30 -9 99 109 10 99 0 -7 20 50 5 0 198 10 0 19 -8 10 43 -19 95 105 10 62 0 -9 55 60 -21 97 107 10 30 0 -10 30 60 16 124 134 0 0 109 -11 20 65 -9 67 77 10 52 0 -12 50 35 -9 0 205 10 73 0 -13 30 25 -26 159 169 10 87 0 -14 15 10 20 32 42 10 0 2 -15 30 5 -5 61 71 10 42 0 -16 10 20 -41 75 85 10 85 0 -17 5 30 2 157 167 10 0 93 -18 20 40 -27 87 97 10 47 0 -19 15 60 -5 76 86 10 7 0 -20 45 65 -15 126 136 10 71 0 -21 45 20 -5 0 201 10 41 0 -22 45 10 18 97 107 0 0 103 -23 55 5 29 68 78 10 0 26 -24 65 35 -25 153 163 10 72 0 -25 65 20 -19 172 182 10 4 0 -26 45 30 -29 0 208 10 23 0 -27 35 40 16 37 47 0 0 101 -28 41 37 16 39 49 10 0 29 -29 64 42 -16 63 73 10 28 0 -30 40 60 21 71 81 10 0 9 -31 31 52 -3 0 202 10 90 0 -32 35 69 23 141 151 10 0 70 -33 53 52 11 37 47 10 0 51 -34 65 55 -3 0 183 10 78 0 -35 63 65 8 143 153 10 0 77 -36 2 60 5 41 51 0 0 104 -37 20 20 -1 0 198 10 91 0 -38 5 5 -18 83 93 10 44 0 -39 60 12 31 44 54 10 0 55 -40 40 25 9 85 95 10 0 53 -41 42 7 5 97 107 10 0 21 -42 24 12 5 31 41 10 0 15 -43 23 3 7 132 142 10 0 58 -44 11 14 18 69 79 10 0 38 -45 6 38 16 32 42 10 0 84 -46 2 48 -9 117 127 10 88 0 -47 8 56 27 51 61 10 0 18 -48 13 52 36 0 192 0 0 105 -49 6 68 30 108 118 10 0 82 -50 47 47 13 0 203 10 0 1 -51 49 58 -11 88 98 10 33 0 -52 27 43 9 0 208 10 0 11 -53 37 31 -9 95 105 10 40 0 -54 57 29 18 140 150 10 0 80 -55 63 23 -31 136 146 10 39 0 -56 53 12 -18 130 140 10 75 0 -57 32 12 7 101 111 10 0 97 -58 36 26 -7 200 210 10 43 0 -59 21 24 28 0 202 0 0 102 -60 17 34 3 162 172 0 0 107 -61 12 24 -11 76 86 10 83 0 -62 24 58 19 58 68 10 0 8 -63 27 69 10 34 44 10 0 64 -64 15 77 -10 73 83 10 63 0 -65 62 77 20 51 61 10 0 81 -66 49 73 25 127 137 0 0 108 -67 67 5 25 83 93 0 0 110 -68 56 39 -23 142 152 10 79 0 -69 37 47 6 50 60 10 0 76 -70 37 56 -23 182 192 10 32 0 -71 57 68 15 77 87 10 0 20 -72 47 16 25 0 197 10 0 24 -73 44 17 9 78 88 10 0 12 -74 46 13 -20 149 159 10 95 0 -75 49 11 18 0 192 10 0 56 -76 49 42 -6 73 83 10 69 0 -77 53 43 -8 179 189 10 35 0 -78 61 52 3 96 106 10 0 34 -79 57 48 23 92 102 10 0 68 -80 56 37 -18 182 192 10 54 0 -81 55 54 -20 94 104 10 65 0 -82 15 47 -30 0 196 10 49 0 -83 14 37 11 0 198 10 0 61 -84 11 31 -16 101 111 10 45 0 -85 16 22 41 0 196 10 0 16 -86 4 18 35 94 104 10 0 100 -87 28 18 26 93 103 10 0 13 -88 26 52 9 74 84 10 0 46 -89 26 35 -26 176 186 10 5 0 -90 31 67 3 95 105 10 0 31 -91 15 19 1 0 194 10 0 37 -92 22 22 2 18 28 10 0 98 -93 18 24 -2 188 198 10 17 0 -94 26 27 27 0 207 10 0 96 -95 25 24 20 0 205 10 0 74 -96 22 27 -27 0 204 10 94 0 -97 25 21 -7 133 143 10 57 0 -98 19 21 -2 0 198 10 92 0 -99 20 26 9 83 93 10 0 6 -100 18 18 -35 185 195 10 86 0 -101 35 40 -16 37 47 10 27 0 -102 21 24 -28 0 202 10 59 0 -103 45 10 -18 97 107 10 22 0 -104 2 60 -5 41 51 10 36 0 -105 13 52 -36 0 192 10 48 0 -106 55 45 -13 0 197 10 3 0 -107 17 34 -3 162 172 10 60 0 -108 49 73 -25 127 137 10 66 0 -109 30 60 -16 124 134 10 10 0 -110 67 5 -25 83 93 10 67 0 diff --git a/jsprit-instances/instances/lilim/lr103.txt b/jsprit-instances/instances/lilim/lr103.txt deleted file mode 100644 index 3003e6e45..000000000 --- a/jsprit-instances/instances/lilim/lr103.txt +++ /dev/null @@ -1,106 +0,0 @@ -25 200 1 -0 35 35 0 0 230 0 0 0 -1 41 49 -21 0 204 10 30 0 -2 35 17 7 0 202 10 0 4 -3 55 45 -17 0 197 10 26 0 -4 55 20 -7 149 159 10 2 0 -5 15 30 -11 0 199 10 83 0 -6 25 30 -3 99 109 10 60 0 -7 20 50 5 0 198 10 0 47 -8 10 43 9 95 105 10 0 46 -9 55 60 16 97 107 10 0 66 -10 30 60 -11 124 134 10 33 0 -11 20 65 -17 67 77 10 19 0 -12 50 35 19 0 205 10 0 80 -13 30 25 -12 159 169 10 97 0 -14 15 10 -10 0 187 10 98 0 -15 30 5 -7 61 71 10 43 0 -16 10 20 19 0 190 10 0 61 -17 5 30 -9 157 167 10 52 0 -18 20 40 12 0 204 10 0 89 -19 15 60 17 0 187 10 0 11 -20 45 65 9 0 188 10 0 51 -21 45 20 -5 0 201 10 41 0 -22 45 10 18 97 107 10 0 75 -23 55 5 29 68 78 10 0 29 -24 65 35 -2 0 190 10 55 0 -25 65 20 -6 172 182 10 56 0 -26 45 30 17 0 208 10 0 3 -27 35 40 16 37 47 10 0 69 -28 41 37 -20 0 213 10 65 0 -29 64 42 -29 0 190 10 23 0 -30 40 60 21 71 81 10 0 1 -31 31 52 -23 0 202 10 79 0 -32 35 69 -30 0 186 10 49 0 -33 53 52 11 37 47 10 0 10 -34 65 55 -3 0 183 10 78 0 -35 63 65 -15 143 153 10 71 0 -36 2 60 5 41 51 10 0 64 -37 20 20 -35 0 198 10 86 0 -38 5 5 16 83 93 10 0 91 -39 60 12 31 44 54 10 0 67 -40 40 25 9 85 95 10 0 68 -41 42 7 5 97 107 10 0 21 -42 24 12 5 31 41 10 0 72 -43 23 3 7 0 185 10 0 15 -44 11 14 18 69 79 10 0 85 -45 6 38 16 32 42 10 0 99 -46 2 48 -9 0 184 10 8 0 -47 8 56 -5 0 185 10 7 0 -48 13 52 36 0 192 10 0 82 -49 6 68 30 108 118 10 0 32 -50 47 47 13 0 203 10 0 76 -51 49 58 -9 0 193 10 20 0 -52 27 43 9 0 208 10 0 17 -53 37 31 14 95 105 0 0 101 -54 57 29 18 0 197 0 0 104 -55 63 23 2 136 146 10 0 24 -56 53 12 6 130 140 10 0 25 -57 32 12 7 0 196 10 0 73 -58 36 26 -8 200 210 10 74 0 -59 21 24 -22 0 202 10 93 0 -60 17 34 3 0 201 10 0 6 -61 12 24 -19 0 194 10 16 0 -62 24 58 19 58 68 10 0 84 -63 27 69 10 0 185 0 0 102 -64 15 77 -5 73 83 10 36 0 -65 62 77 20 51 61 10 0 28 -66 49 73 -16 127 137 10 9 0 -67 67 5 -31 83 93 10 39 0 -68 56 39 -9 142 152 10 40 0 -69 37 47 -16 50 60 10 27 0 -70 37 56 -3 182 192 10 90 0 -71 57 68 15 0 180 10 0 35 -72 47 16 -5 0 197 10 42 0 -73 44 17 -7 0 199 10 57 0 -74 46 13 8 149 159 10 0 58 -75 49 11 -18 0 192 10 22 0 -76 49 42 -13 73 83 10 50 0 -77 53 43 -26 179 189 10 81 0 -78 61 52 3 96 106 10 0 34 -79 57 48 23 92 102 10 0 31 -80 56 37 -19 182 192 10 12 0 -81 55 54 26 0 192 10 0 77 -82 15 47 -36 0 196 10 48 0 -83 14 37 11 0 198 10 0 5 -84 11 31 -19 101 111 10 62 0 -85 16 22 -18 0 196 10 44 0 -86 4 18 35 0 184 10 0 37 -87 28 18 -11 93 103 10 96 0 -88 26 52 9 74 84 0 0 103 -89 26 35 -12 0 211 10 18 0 -90 31 67 3 0 187 10 0 70 -91 15 19 -16 0 194 10 38 0 -92 22 22 2 18 28 10 0 100 -93 18 24 22 188 198 10 0 59 -94 26 27 27 0 207 10 0 95 -95 25 24 -27 0 205 10 94 0 -96 22 27 11 0 204 10 0 87 -97 25 21 12 0 202 10 0 13 -98 19 21 10 0 198 10 0 14 -99 20 26 -16 83 93 10 45 0 -100 18 18 -2 185 195 10 92 0 -101 37 31 -14 95 105 10 53 0 -102 27 69 -10 0 185 10 63 0 -103 26 52 -9 74 84 10 88 0 -104 57 29 -18 0 197 10 54 0 diff --git a/jsprit-instances/instances/lilim/lr104.txt b/jsprit-instances/instances/lilim/lr104.txt deleted file mode 100644 index 3c60a0fd9..000000000 --- a/jsprit-instances/instances/lilim/lr104.txt +++ /dev/null @@ -1,106 +0,0 @@ -25 200 1 -0 35 35 0 0 230 0 0 0 -1 41 49 -16 0 204 10 28 0 -2 35 17 7 0 202 10 0 74 -3 55 45 -3 0 197 10 78 0 -4 55 20 19 149 159 10 0 25 -5 15 30 -11 0 199 10 83 0 -6 25 30 3 0 208 10 0 96 -7 20 50 -30 0 198 10 49 0 -8 10 43 -12 95 105 10 18 0 -9 55 60 -25 97 107 10 66 0 -10 30 60 -3 0 194 10 90 0 -11 20 65 12 67 77 10 0 31 -12 50 35 19 0 205 10 0 79 -13 30 25 -6 159 169 10 69 0 -14 15 10 20 0 187 10 0 44 -15 30 5 -7 61 71 10 43 0 -16 10 20 -35 0 190 10 86 0 -17 5 30 2 0 189 10 0 45 -18 20 40 12 0 204 10 0 8 -19 15 60 -1 0 187 10 46 0 -20 45 65 9 0 188 10 0 35 -21 45 20 11 0 201 10 0 54 -22 45 10 18 0 193 0 0 103 -23 55 5 -6 68 78 10 56 0 -24 65 35 3 0 190 10 0 29 -25 65 20 -19 172 182 10 4 0 -26 45 30 -14 0 208 10 53 0 -27 35 40 16 0 215 0 0 104 -28 41 37 16 0 213 10 0 1 -29 64 42 -3 0 190 10 24 0 -30 40 60 -5 0 194 10 70 0 -31 31 52 -12 0 202 10 11 0 -32 35 69 -9 0 186 10 88 0 -33 53 52 11 0 195 10 0 77 -34 65 55 14 0 183 10 0 81 -35 63 65 -9 0 178 10 20 0 -36 2 60 -36 0 178 10 48 0 -37 20 20 -17 0 198 10 100 0 -38 5 5 -10 83 93 10 98 0 -39 60 12 31 0 186 10 0 55 -40 40 25 9 0 208 0 0 102 -41 42 7 -26 0 191 10 87 0 -42 24 12 5 0 194 10 0 72 -43 23 3 7 0 185 10 0 15 -44 11 14 -20 69 79 10 14 0 -45 6 38 -2 0 190 10 17 0 -46 2 48 1 0 184 10 0 19 -47 8 56 -16 0 185 10 82 0 -48 13 52 36 0 192 10 0 36 -49 6 68 30 0 176 10 0 7 -50 47 47 -20 0 203 10 65 0 -51 49 58 -15 0 193 10 71 0 -52 27 43 9 0 208 10 0 62 -53 37 31 14 95 105 10 0 26 -54 57 29 -11 0 197 10 21 0 -55 63 23 -31 136 146 10 39 0 -56 53 12 6 0 190 10 0 23 -57 32 12 7 0 196 10 0 73 -58 36 26 -12 200 210 10 97 0 -59 21 24 28 0 202 10 0 99 -60 17 34 3 0 201 10 0 89 -61 12 24 13 0 194 10 0 91 -62 24 58 -9 58 68 10 52 0 -63 27 69 -9 0 185 10 64 0 -64 15 77 9 0 173 10 0 63 -65 62 77 20 0 170 10 0 50 -66 49 73 25 0 179 10 0 9 -67 67 5 -18 83 93 10 75 0 -68 56 39 -6 0 198 10 80 0 -69 37 47 6 50 60 10 0 13 -70 37 56 5 0 198 10 0 30 -71 57 68 15 0 180 10 0 51 -72 47 16 -5 0 197 10 42 0 -73 44 17 -7 0 199 10 57 0 -74 46 13 -7 149 159 10 2 0 -75 49 11 18 0 192 10 0 67 -76 49 42 13 73 83 10 0 95 -77 53 43 -11 179 189 10 33 0 -78 61 52 3 0 188 10 0 3 -79 57 48 -19 92 102 10 12 0 -80 56 37 6 0 198 10 0 68 -81 55 54 -14 0 192 10 34 0 -82 15 47 16 0 196 10 0 47 -83 14 37 11 0 198 10 0 5 -84 11 31 -27 101 111 10 94 0 -85 16 22 -2 0 196 10 92 0 -86 4 18 35 0 184 10 0 16 -87 28 18 26 93 103 10 0 41 -88 26 52 9 0 200 10 0 32 -89 26 35 -3 0 211 10 60 0 -90 31 67 3 0 187 10 0 10 -91 15 19 -13 0 194 10 61 0 -92 22 22 2 18 28 10 0 85 -93 18 24 22 0 199 0 0 101 -94 26 27 27 0 207 10 0 84 -95 25 24 -13 0 205 10 76 0 -96 22 27 -3 0 204 10 6 0 -97 25 21 12 0 202 10 0 58 -98 19 21 10 0 198 10 0 38 -99 20 26 -28 83 93 10 59 0 -100 18 18 17 185 195 10 0 37 -101 18 24 -22 0 199 10 93 0 -102 40 25 -9 0 208 10 40 0 -103 45 10 -18 0 193 10 22 0 -104 35 40 -16 0 215 10 27 0 diff --git a/jsprit-instances/instances/lilim/lr105.txt b/jsprit-instances/instances/lilim/lr105.txt deleted file mode 100644 index 6cc097b15..000000000 --- a/jsprit-instances/instances/lilim/lr105.txt +++ /dev/null @@ -1,108 +0,0 @@ -25 200 1 -0 35 35 0 0 230 0 0 0 -1 41 49 -11 151 181 10 33 0 -2 35 17 7 40 70 10 0 57 -3 55 45 13 106 136 10 0 80 -4 55 20 -29 139 169 10 23 0 -5 15 30 26 24 54 10 0 16 -6 25 30 -27 89 119 10 94 0 -7 20 50 -9 71 101 10 52 0 -8 10 43 -16 85 115 10 82 0 -9 55 60 16 87 117 10 0 66 -10 30 60 -3 114 144 10 90 0 -11 20 65 -9 57 87 10 64 0 -12 50 35 19 53 83 10 0 29 -13 30 25 -12 149 179 10 97 0 -14 15 10 20 32 62 10 0 86 -15 30 5 8 51 81 10 0 87 -16 10 20 -26 65 95 10 5 0 -17 5 30 2 147 177 10 0 60 -18 20 40 -11 77 107 10 83 0 -19 15 60 -5 66 96 10 36 0 -20 45 65 -15 116 146 10 71 0 -21 45 20 11 52 82 10 0 75 -22 45 10 18 87 117 10 0 58 -23 55 5 29 58 88 10 0 4 -24 65 35 -13 143 173 10 50 0 -25 65 20 -25 156 186 10 72 0 -26 45 30 -14 122 152 10 53 0 -27 35 40 16 27 57 10 0 69 -28 41 37 16 29 59 10 0 79 -29 64 42 -19 53 83 10 12 0 -30 40 60 21 61 91 10 0 35 -31 31 52 27 40 70 10 0 81 -32 35 69 23 131 161 0 0 104 -33 53 52 11 27 57 10 0 1 -34 65 55 14 107 137 10 0 77 -35 63 65 -21 133 163 10 30 0 -36 2 60 5 41 71 10 0 19 -37 20 20 -18 124 154 10 44 0 -38 5 5 -5 73 103 10 42 0 -39 60 12 31 34 64 10 0 55 -40 40 25 -13 75 105 10 76 0 -41 42 7 5 87 117 10 0 74 -42 24 12 5 25 55 10 0 38 -43 23 3 7 122 152 10 0 100 -44 11 14 18 59 89 10 0 37 -45 6 38 16 29 59 0 0 102 -46 2 48 1 107 137 10 0 48 -47 8 56 27 41 71 10 0 49 -48 13 52 -1 155 185 10 46 0 -49 6 68 -27 98 128 10 47 0 -50 47 47 13 114 144 10 0 24 -51 49 58 10 78 108 10 0 78 -52 27 43 9 42 72 10 0 7 -53 37 31 14 85 115 10 0 26 -54 57 29 -25 130 160 10 67 0 -55 63 23 -31 126 156 10 39 0 -56 53 12 -9 120 150 10 73 0 -57 32 12 -7 91 121 10 2 0 -58 36 26 -18 180 210 10 22 0 -59 21 24 28 17 47 10 0 61 -60 17 34 -2 152 182 10 17 0 -61 12 24 -28 66 96 10 59 0 -62 24 58 19 48 78 10 0 88 -63 27 69 10 34 64 10 0 70 -64 15 77 9 63 93 10 0 11 -65 62 77 20 49 79 0 0 105 -66 49 73 -16 117 147 10 9 0 -67 67 5 25 73 103 10 0 54 -68 56 39 36 132 162 0 0 101 -69 37 47 -16 40 70 10 27 0 -70 37 56 -10 168 198 10 63 0 -71 57 68 15 67 97 10 0 20 -72 47 16 25 25 55 10 0 25 -73 44 17 9 68 98 10 0 56 -74 46 13 -5 139 169 10 41 0 -75 49 11 -11 59 89 10 21 0 -76 49 42 13 63 93 10 0 40 -77 53 43 -14 169 199 10 34 0 -78 61 52 -10 86 116 10 51 0 -79 57 48 -16 82 112 10 28 0 -80 56 37 -13 168 198 10 3 0 -81 55 54 -27 84 114 10 31 0 -82 15 47 16 45 75 10 0 8 -83 14 37 11 34 64 10 0 18 -84 11 31 -41 91 121 10 85 0 -85 16 22 41 81 111 10 0 84 -86 4 18 -20 84 114 10 14 0 -87 28 18 -8 83 113 10 15 0 -88 26 52 -19 64 94 10 62 0 -89 26 35 15 166 196 0 0 103 -90 31 67 3 85 115 10 0 10 -91 15 19 1 150 180 10 0 93 -92 22 22 -20 18 48 10 95 0 -93 18 24 -1 169 199 10 91 0 -94 26 27 27 90 120 10 0 6 -95 25 24 20 29 59 10 0 92 -96 22 27 11 125 155 0 0 106 -97 25 21 12 123 153 10 0 13 -98 19 21 10 48 78 10 0 99 -99 20 26 -10 73 103 10 98 0 -100 18 18 -7 165 195 10 43 0 -101 56 39 -36 132 162 10 68 0 -102 6 38 -16 29 59 10 45 0 -103 26 35 -15 166 196 10 89 0 -104 35 69 -23 131 161 10 32 0 -105 62 77 -20 49 79 10 65 0 -106 22 27 -11 125 155 10 96 0 diff --git a/jsprit-instances/instances/lilim/lr106.txt b/jsprit-instances/instances/lilim/lr106.txt deleted file mode 100644 index a029f1c73..000000000 --- a/jsprit-instances/instances/lilim/lr106.txt +++ /dev/null @@ -1,106 +0,0 @@ -25 200 1 -0 35 35 0 0 230 0 0 0 -1 41 49 -21 0 204 10 30 0 -2 35 17 -8 0 202 10 74 0 -3 55 45 13 0 197 10 0 77 -4 55 20 -18 139 169 10 54 0 -5 15 30 26 0 199 10 0 60 -6 25 30 3 89 119 10 0 89 -7 20 50 -30 0 198 10 49 0 -8 10 43 9 85 115 10 0 17 -9 55 60 16 87 117 10 0 35 -10 30 60 -9 114 144 10 64 0 -11 20 65 -10 57 87 10 63 0 -12 50 35 -23 0 205 10 79 0 -13 30 25 -5 149 179 10 42 0 -14 15 10 -28 32 62 10 59 0 -15 30 5 8 51 81 10 0 87 -16 10 20 -41 65 95 10 85 0 -17 5 30 -9 147 177 10 8 0 -18 20 40 -16 77 107 10 45 0 -19 15 60 17 66 96 10 0 82 -20 45 65 -19 116 146 10 62 0 -21 45 20 11 0 201 10 0 67 -22 45 10 -17 87 117 10 26 0 -23 55 5 -25 58 88 10 72 0 -24 65 35 -26 143 173 10 81 0 -25 65 20 6 156 186 0 0 101 -26 45 30 17 0 208 10 0 22 -27 35 40 16 27 57 0 0 103 -28 41 37 16 29 59 10 0 73 -29 64 42 9 53 83 10 0 78 -30 40 60 21 61 91 10 0 1 -31 31 52 -3 0 202 10 90 0 -32 35 69 -9 131 161 10 88 0 -33 53 52 -13 27 57 10 50 0 -34 65 55 -20 0 183 10 65 0 -35 63 65 -16 133 163 10 9 0 -36 2 60 -36 41 71 10 48 0 -37 20 20 8 0 198 10 0 43 -38 5 5 16 73 103 10 0 93 -39 60 12 31 34 64 10 0 55 -40 40 25 9 75 105 10 0 53 -41 42 7 5 87 117 10 0 75 -42 24 12 5 25 55 10 0 13 -43 23 3 -8 122 152 10 37 0 -44 11 14 18 59 89 10 0 86 -45 6 38 16 29 59 10 0 18 -46 2 48 1 107 137 0 0 102 -47 8 56 27 41 71 10 0 52 -48 13 52 36 0 192 10 0 36 -49 6 68 30 98 128 10 0 7 -50 47 47 13 0 203 10 0 33 -51 49 58 -15 78 108 10 71 0 -52 27 43 -27 0 208 10 47 0 -53 37 31 -9 85 115 10 40 0 -54 57 29 18 130 160 10 0 4 -55 63 23 -31 126 156 10 39 0 -56 53 12 6 120 150 10 0 58 -57 32 12 -27 91 121 10 94 0 -58 36 26 -6 180 210 10 56 0 -59 21 24 28 0 202 10 0 14 -60 17 34 -26 152 182 10 5 0 -61 12 24 13 66 96 10 0 99 -62 24 58 19 48 78 10 0 20 -63 27 69 10 34 64 10 0 11 -64 15 77 9 63 93 10 0 10 -65 62 77 20 49 79 10 0 34 -66 49 73 25 117 147 10 0 70 -67 67 5 -11 73 103 10 21 0 -68 56 39 36 132 162 10 0 80 -69 37 47 6 40 70 10 0 76 -70 37 56 -25 168 198 10 66 0 -71 57 68 15 67 97 10 0 51 -72 47 16 25 0 197 10 0 23 -73 44 17 -16 68 98 10 28 0 -74 46 13 8 139 169 10 0 2 -75 49 11 -5 0 192 10 41 0 -76 49 42 -6 63 93 10 69 0 -77 53 43 -13 169 199 10 3 0 -78 61 52 -9 86 116 10 29 0 -79 57 48 23 82 112 10 0 12 -80 56 37 -36 168 198 10 68 0 -81 55 54 26 84 114 10 0 24 -82 15 47 -17 0 196 10 19 0 -83 14 37 11 0 198 10 0 84 -84 11 31 -11 91 121 10 83 0 -85 16 22 41 0 196 10 0 16 -86 4 18 -18 84 114 10 44 0 -87 28 18 -8 83 113 10 15 0 -88 26 52 9 64 94 10 0 32 -89 26 35 -3 166 196 10 6 0 -90 31 67 3 85 115 10 0 31 -91 15 19 -11 0 194 10 96 0 -92 22 22 2 18 48 10 0 95 -93 18 24 -16 169 199 10 38 0 -94 26 27 27 0 207 10 0 57 -95 25 24 -2 0 205 10 92 0 -96 22 27 11 0 204 10 0 91 -97 25 21 12 123 153 0 0 104 -98 19 21 -17 0 198 10 100 0 -99 20 26 -13 73 103 10 61 0 -100 18 18 17 165 195 10 0 98 -101 65 20 -6 156 186 10 25 0 -102 2 48 -1 107 137 10 46 0 -103 35 40 -16 27 57 10 27 0 -104 25 21 -12 123 153 10 97 0 diff --git a/jsprit-instances/instances/lilim/lr107.txt b/jsprit-instances/instances/lilim/lr107.txt deleted file mode 100644 index a2af365ee..000000000 --- a/jsprit-instances/instances/lilim/lr107.txt +++ /dev/null @@ -1,106 +0,0 @@ -25 200 0 -0 35 35 0 0 230 0 0 0 -1 41 49 -16 0 204 10 27 0 -2 35 17 -26 0 202 10 87 0 -3 55 45 -25 0 197 10 67 0 -4 55 20 -6 139 169 10 56 0 -5 15 30 26 0 199 0 0 103 -6 25 30 -9 89 119 10 40 0 -7 20 50 5 0 198 0 0 102 -8 10 43 9 85 115 10 0 84 -9 55 60 16 87 117 10 0 35 -10 30 60 16 114 144 10 0 32 -11 20 65 12 57 87 10 0 89 -12 50 35 -6 0 205 10 80 0 -13 30 25 -11 149 179 10 96 0 -14 15 10 20 0 187 10 0 86 -15 30 5 -7 51 81 10 43 0 -16 10 20 19 0 190 10 0 100 -17 5 30 -5 147 177 10 36 0 -18 20 40 -30 0 204 10 49 0 -19 15 60 17 0 187 10 0 48 -20 45 65 9 0 188 10 0 81 -21 45 20 11 0 201 10 0 39 -22 45 10 -5 87 117 10 42 0 -23 55 5 -17 58 88 10 26 0 -24 65 35 3 0 190 10 0 77 -25 65 20 -5 156 186 10 41 0 -26 45 30 17 0 208 10 0 23 -27 35 40 16 27 57 10 0 1 -28 41 37 -3 0 213 10 78 0 -29 64 42 -2 0 190 10 55 0 -30 40 60 -10 61 91 10 51 0 -31 31 52 -11 0 202 10 33 0 -32 35 69 -16 0 186 10 10 0 -33 53 52 11 27 57 10 0 31 -34 65 55 14 0 183 10 0 68 -35 63 65 -16 133 163 10 9 0 -36 2 60 5 41 71 10 0 17 -37 20 20 -1 0 198 10 91 0 -38 5 5 16 73 103 10 0 97 -39 60 12 -11 34 64 10 21 0 -40 40 25 9 75 105 10 0 6 -41 42 7 5 87 117 10 0 25 -42 24 12 5 25 55 10 0 22 -43 23 3 7 0 185 10 0 15 -44 11 14 -10 59 89 10 98 0 -45 6 38 -3 29 59 10 60 0 -46 2 48 -27 0 184 10 47 0 -47 8 56 27 0 185 10 0 46 -48 13 52 -17 0 192 10 19 0 -49 6 68 30 98 128 10 0 18 -50 47 47 -20 0 203 10 65 0 -51 49 58 10 0 193 10 0 30 -52 27 43 9 0 208 10 0 82 -53 37 31 14 85 115 10 0 95 -54 57 29 -18 0 197 10 75 0 -55 63 23 2 126 156 10 0 29 -56 53 12 6 120 150 10 0 4 -57 32 12 7 0 196 10 0 72 -58 36 26 -28 180 210 10 59 0 -59 21 24 28 0 202 10 0 58 -60 17 34 3 0 201 10 0 45 -61 12 24 13 0 194 10 0 93 -62 24 58 19 48 78 10 0 64 -63 27 69 -9 0 185 10 88 0 -64 15 77 -19 63 93 10 62 0 -65 62 77 20 49 79 10 0 50 -66 49 73 25 117 147 10 0 71 -67 67 5 25 73 103 10 0 3 -68 56 39 -14 132 162 10 34 0 -69 37 47 6 40 70 10 0 76 -70 37 56 -3 168 198 10 90 0 -71 57 68 -25 0 180 10 66 0 -72 47 16 -7 0 197 10 57 0 -73 44 17 -8 0 199 10 74 0 -74 46 13 8 139 169 10 0 73 -75 49 11 18 0 192 10 0 54 -76 49 42 -6 63 93 10 69 0 -77 53 43 -3 169 199 10 24 0 -78 61 52 3 86 116 10 0 28 -79 57 48 23 82 112 0 0 101 -80 56 37 6 168 198 10 0 12 -81 55 54 -9 0 192 10 20 0 -82 15 47 -9 0 196 10 52 0 -83 14 37 11 0 198 10 0 99 -84 11 31 -9 91 121 10 8 0 -85 16 22 41 0 196 0 0 104 -86 4 18 -20 0 184 10 14 0 -87 28 18 26 83 113 10 0 2 -88 26 52 9 64 94 10 0 63 -89 26 35 -12 0 211 10 11 0 -90 31 67 3 0 187 10 0 70 -91 15 19 1 0 194 10 0 37 -92 22 22 -27 18 48 10 94 0 -93 18 24 -13 169 199 10 61 0 -94 26 27 27 0 207 10 0 92 -95 25 24 -14 0 205 10 53 0 -96 22 27 11 0 204 10 0 13 -97 25 21 -16 0 202 10 38 0 -98 19 21 10 0 198 10 0 44 -99 20 26 -11 73 103 10 83 0 -100 18 18 -19 165 195 10 16 0 -101 57 48 -23 82 112 10 79 0 -102 20 50 -5 0 198 10 7 0 -103 15 30 -26 0 199 10 5 0 -104 16 22 -41 0 196 10 85 0 diff --git a/jsprit-instances/instances/lilim/lr108.txt b/jsprit-instances/instances/lilim/lr108.txt deleted file mode 100644 index 451c05917..000000000 --- a/jsprit-instances/instances/lilim/lr108.txt +++ /dev/null @@ -1,102 +0,0 @@ -25 200 1 -0 35 35 0 0 230 0 0 0 -1 41 49 10 0 204 10 0 76 -2 35 17 7 0 202 10 0 74 -3 55 45 -23 0 197 10 79 0 -4 55 20 -25 139 169 10 67 0 -5 15 30 26 0 199 10 0 17 -6 25 30 3 0 208 10 0 59 -7 20 50 -9 0 198 10 8 0 -8 10 43 9 85 115 10 0 7 -9 55 60 -6 87 117 10 80 0 -10 30 60 -3 0 194 10 90 0 -11 20 65 -9 57 87 10 88 0 -12 50 35 19 0 205 10 0 81 -13 30 25 23 149 179 10 0 58 -14 15 10 20 0 187 10 0 86 -15 30 5 8 51 81 10 0 42 -16 10 20 19 0 190 10 0 61 -17 5 30 -26 0 189 10 5 0 -18 20 40 12 0 204 10 0 46 -19 15 60 -16 0 187 10 82 0 -20 45 65 -5 0 188 10 70 0 -21 45 20 -7 0 201 10 57 0 -22 45 10 -26 0 193 10 87 0 -23 55 5 29 58 88 10 0 25 -24 65 35 3 0 190 10 0 51 -25 65 20 -29 156 186 10 23 0 -26 45 30 -5 0 208 10 41 0 -27 35 40 16 0 215 10 0 94 -28 41 37 -14 0 213 10 77 0 -29 64 42 9 0 190 10 0 33 -30 40 60 21 0 194 10 0 68 -31 31 52 27 0 202 10 0 63 -32 35 69 -30 0 186 10 49 0 -33 53 52 -9 0 195 10 29 0 -34 65 55 14 0 183 10 0 78 -35 63 65 -15 0 178 10 71 0 -36 2 60 5 0 178 10 0 47 -37 20 20 -41 0 198 10 85 0 -38 5 5 16 73 103 10 0 100 -39 60 12 -18 0 186 10 75 0 -40 40 25 -13 0 208 10 50 0 -41 42 7 5 0 191 10 0 26 -42 24 12 -8 0 194 10 15 0 -43 23 3 7 0 185 10 0 73 -44 11 14 -2 59 89 10 92 0 -45 6 38 16 0 190 10 0 60 -46 2 48 -12 0 184 10 18 0 -47 8 56 -5 0 185 10 36 0 -48 13 52 -9 0 192 10 52 0 -49 6 68 30 0 176 10 0 32 -50 47 47 13 0 203 10 0 40 -51 49 58 -3 0 193 10 24 0 -52 27 43 9 0 208 10 0 48 -53 37 31 14 85 115 10 0 97 -54 57 29 -2 0 197 10 55 0 -55 63 23 2 126 156 10 0 54 -56 53 12 -25 0 190 10 72 0 -57 32 12 7 0 196 10 0 21 -58 36 26 -23 180 210 10 13 0 -59 21 24 -3 0 202 10 6 0 -60 17 34 -16 0 201 10 45 0 -61 12 24 -19 0 194 10 16 0 -62 24 58 19 48 78 10 0 64 -63 27 69 -27 0 185 10 31 0 -64 15 77 -19 0 173 10 62 0 -65 62 77 -25 0 170 10 66 0 -66 49 73 25 0 179 10 0 65 -67 67 5 25 73 103 10 0 4 -68 56 39 -21 0 198 10 30 0 -69 37 47 6 40 70 10 0 95 -70 37 56 5 0 198 10 0 20 -71 57 68 15 0 180 10 0 35 -72 47 16 25 0 197 10 0 56 -73 44 17 -7 0 199 10 43 0 -74 46 13 -7 139 169 10 2 0 -75 49 11 18 0 192 10 0 39 -76 49 42 -10 63 93 10 1 0 -77 53 43 14 169 199 10 0 28 -78 61 52 -14 0 188 10 34 0 -79 57 48 23 82 112 10 0 3 -80 56 37 6 0 198 10 0 9 -81 55 54 -19 0 192 10 12 0 -82 15 47 16 0 196 10 0 19 -83 14 37 -7 0 198 10 84 0 -84 11 31 7 91 121 10 0 83 -85 16 22 41 0 196 10 0 37 -86 4 18 -20 0 184 10 14 0 -87 28 18 26 83 113 10 0 22 -88 26 52 9 0 200 10 0 11 -89 26 35 -9 0 211 10 99 0 -90 31 67 3 0 187 10 0 10 -91 15 19 -10 0 194 10 98 0 -92 22 22 2 18 48 10 0 44 -93 18 24 -11 0 199 10 96 0 -94 26 27 -16 0 207 10 27 0 -95 25 24 -6 0 205 10 69 0 -96 22 27 11 0 204 10 0 93 -97 25 21 -14 0 202 10 53 0 -98 19 21 10 0 198 10 0 91 -99 20 26 9 73 103 10 0 89 -100 18 18 -16 165 195 10 38 0 diff --git a/jsprit-instances/instances/lilim/lr109.txt b/jsprit-instances/instances/lilim/lr109.txt deleted file mode 100644 index 7131b15c7..000000000 --- a/jsprit-instances/instances/lilim/lr109.txt +++ /dev/null @@ -1,108 +0,0 @@ -25 200 1 -0 35 35 0 0 230 0 0 0 -1 41 49 -20 133 198 10 65 0 -2 35 17 7 22 87 10 0 55 -3 55 45 13 98 143 10 0 68 -4 55 20 -8 123 184 10 74 0 -5 15 30 26 20 93 10 0 61 -6 25 30 3 76 131 10 0 96 -7 20 50 -27 61 110 10 31 0 -8 10 43 -9 75 124 10 88 0 -9 55 60 -19 74 129 10 12 0 -10 30 60 16 107 150 0 0 101 -11 20 65 12 42 101 10 0 90 -12 50 35 19 38 97 10 0 9 -13 30 25 -10 131 196 10 98 0 -14 15 10 -18 32 114 10 44 0 -15 30 5 -20 35 96 10 95 0 -16 10 20 -11 52 107 10 83 0 -17 5 30 2 124 189 10 0 89 -18 20 40 12 69 114 10 0 60 -19 15 60 -16 52 109 10 45 0 -20 45 65 9 105 156 10 0 70 -21 45 20 11 37 96 10 0 25 -22 45 10 -31 76 127 10 39 0 -23 55 5 29 43 102 10 0 75 -24 65 35 -26 124 190 10 81 0 -25 65 20 -11 121 186 10 21 0 -26 45 30 -14 112 161 10 53 0 -27 35 40 16 8 75 10 0 71 -28 41 37 16 11 76 10 0 79 -29 64 42 9 37 98 10 0 78 -30 40 60 -6 49 102 10 69 0 -31 31 52 27 24 85 10 0 7 -32 35 69 -9 116 175 10 64 0 -33 53 52 11 24 92 10 0 35 -34 65 55 14 96 147 0 0 102 -35 63 65 -11 116 178 10 33 0 -36 2 60 5 41 112 10 0 48 -37 20 20 8 113 164 10 0 93 -38 5 5 -28 60 115 10 59 0 -39 60 12 31 33 110 10 0 22 -40 40 25 -25 65 114 10 72 0 -41 42 7 -25 72 131 10 67 0 -42 24 12 -2 25 91 10 92 0 -43 23 3 -26 111 162 10 87 0 -44 11 14 18 45 102 10 0 14 -45 6 38 16 29 99 10 0 19 -46 2 48 -9 92 151 10 52 0 -47 8 56 -16 34 105 10 82 0 -48 13 52 -5 128 192 10 36 0 -49 6 68 30 93 132 0 0 106 -50 47 47 -14 102 155 10 77 0 -51 49 58 10 64 121 10 0 66 -52 27 43 9 26 87 10 0 46 -53 37 31 14 75 124 10 0 26 -54 57 29 -9 118 171 10 73 0 -55 63 23 -7 111 170 10 2 0 -56 53 12 6 106 163 0 0 103 -57 32 12 7 77 134 0 0 105 -58 36 26 -12 147 210 10 97 0 -59 21 24 28 17 100 10 0 38 -60 17 34 -12 134 199 10 18 0 -61 12 24 -26 55 106 10 5 0 -62 24 58 19 30 95 10 0 63 -63 27 69 -19 34 103 10 62 0 -64 15 77 9 48 107 10 0 32 -65 62 77 20 49 113 10 0 1 -66 49 73 -10 104 159 10 51 0 -67 67 5 25 59 116 10 0 41 -68 56 39 -13 117 176 10 3 0 -69 37 47 6 23 86 10 0 30 -70 37 56 -9 123 198 10 20 0 -71 57 68 -16 54 109 10 27 0 -72 47 16 25 22 96 10 0 40 -73 44 17 9 56 109 10 0 54 -74 46 13 8 123 184 10 0 4 -75 49 11 -29 45 102 10 23 0 -76 49 42 13 52 103 10 0 80 -77 53 43 14 136 200 10 0 50 -78 61 52 -9 71 130 10 29 0 -79 57 48 -16 72 121 10 28 0 -80 56 37 -13 135 198 10 76 0 -81 55 54 26 78 119 10 0 24 -82 15 47 16 29 90 10 0 47 -83 14 37 11 21 89 10 0 16 -84 11 31 7 81 130 10 0 100 -85 16 22 41 70 121 10 0 94 -86 4 18 35 74 123 10 0 91 -87 28 18 26 79 116 10 0 43 -88 26 52 9 50 107 10 0 8 -89 26 35 -2 139 211 10 17 0 -90 31 67 -12 73 126 10 11 0 -91 15 19 -35 132 194 10 86 0 -92 22 22 2 18 88 10 0 42 -93 18 24 -8 129 199 10 37 0 -94 26 27 -41 81 128 10 85 0 -95 25 24 20 14 78 10 0 15 -96 22 27 -3 114 165 10 6 0 -97 25 21 12 115 160 10 0 58 -98 19 21 10 32 93 10 0 13 -99 20 26 9 60 115 0 0 104 -100 18 18 -7 123 195 10 84 0 -101 30 60 -16 107 150 10 10 0 -102 65 55 -14 96 147 10 34 0 -103 53 12 -6 106 163 10 56 0 -104 20 26 -9 60 115 10 99 0 -105 32 12 -7 77 134 10 57 0 -106 6 68 -30 93 132 10 49 0 diff --git a/jsprit-instances/instances/lilim/lr110.txt b/jsprit-instances/instances/lilim/lr110.txt deleted file mode 100644 index 7734b9567..000000000 --- a/jsprit-instances/instances/lilim/lr110.txt +++ /dev/null @@ -1,106 +0,0 @@ -25 200 1 -0 35 35 0 0 230 0 0 0 -1 41 49 -21 130 201 10 30 0 -2 35 17 7 20 89 10 0 41 -3 55 45 -23 106 135 10 79 0 -4 55 20 -31 71 195 10 39 0 -5 15 30 26 20 107 10 0 61 -6 25 30 3 54 153 10 0 94 -7 20 50 5 66 105 10 0 18 -8 10 43 -16 61 138 10 82 0 -9 55 60 16 53 150 10 0 51 -10 30 60 16 101 156 0 0 101 -11 20 65 -19 33 152 10 62 0 -12 50 35 19 38 97 10 0 29 -13 30 25 -7 70 208 10 43 0 -14 15 10 20 32 137 10 0 86 -15 30 5 8 30 154 10 0 42 -16 10 20 -11 54 105 10 83 0 -17 5 30 2 51 189 10 0 60 -18 20 40 -5 77 106 10 7 0 -19 15 60 17 53 108 10 0 49 -20 45 65 -27 109 152 10 31 0 -21 45 20 11 37 96 10 0 72 -22 45 10 18 59 144 10 0 26 -23 55 5 29 36 155 10 0 55 -24 65 35 -18 118 190 10 54 0 -25 65 20 -25 47 186 10 67 0 -26 45 30 -18 117 156 10 22 0 -27 35 40 16 5 156 10 0 65 -28 41 37 16 8 79 10 0 68 -29 64 42 -19 37 98 10 12 0 -30 40 60 21 28 123 10 0 1 -31 31 52 27 24 85 10 0 20 -32 35 69 23 116 175 0 0 102 -33 53 52 11 24 179 0 0 103 -34 65 55 -26 100 143 10 81 0 -35 63 65 -15 50 178 10 71 0 -36 2 60 -27 41 178 10 47 0 -37 20 20 8 117 160 10 0 93 -38 5 5 -18 42 145 10 44 0 -39 60 12 31 33 186 10 0 4 -40 40 25 -9 51 128 10 73 0 -41 42 7 -7 44 159 10 2 0 -42 24 12 -8 25 172 10 15 0 -43 23 3 7 115 158 10 0 13 -44 11 14 18 31 138 10 0 38 -45 6 38 16 29 189 10 0 89 -46 2 48 1 93 150 10 0 48 -47 8 56 27 34 116 10 0 36 -48 13 52 -1 125 192 10 46 0 -49 6 68 -17 93 132 10 19 0 -50 47 47 13 105 152 10 0 80 -51 49 58 -16 66 119 10 9 0 -52 27 43 9 25 88 10 0 88 -53 37 31 -8 62 137 10 74 0 -54 57 29 18 121 168 10 0 24 -55 63 23 -29 70 189 10 23 0 -56 53 12 -18 81 188 10 75 0 -57 32 12 7 78 133 10 0 58 -58 36 26 -7 79 210 10 57 0 -59 21 24 28 17 123 10 0 87 -60 17 34 -2 130 201 10 17 0 -61 12 24 -26 59 102 10 5 0 -62 24 58 19 25 164 10 0 11 -63 27 69 10 34 112 10 0 90 -64 15 77 9 46 165 10 0 70 -65 62 77 -16 49 170 10 27 0 -66 49 73 -6 77 179 10 69 0 -67 67 5 25 43 150 10 0 25 -68 56 39 -16 82 198 10 28 0 -69 37 47 6 12 142 10 0 66 -70 37 56 -9 21 198 10 64 0 -71 57 68 15 57 106 10 0 35 -72 47 16 -11 22 110 10 21 0 -73 44 17 9 60 105 10 0 40 -74 46 13 8 73 195 10 0 53 -75 49 11 18 46 101 10 0 56 -76 49 42 13 36 119 10 0 78 -77 53 43 14 65 200 0 0 104 -78 61 52 -13 43 158 10 76 0 -79 57 48 23 58 135 10 0 3 -80 56 37 -13 69 198 10 50 0 -81 55 54 26 87 110 10 0 34 -82 15 47 16 28 91 10 0 8 -83 14 37 11 21 97 10 0 16 -84 11 31 -20 68 143 10 95 0 -85 16 22 -2 74 117 10 92 0 -86 4 18 -20 79 118 10 14 0 -87 28 18 -28 84 111 10 59 0 -88 26 52 -9 24 133 10 52 0 -89 26 35 -16 128 211 10 45 0 -90 31 67 -10 76 123 10 63 0 -91 15 19 -11 130 194 10 96 0 -92 22 22 2 18 181 10 0 85 -93 18 24 -8 41 199 10 37 0 -94 26 27 -3 88 121 10 6 0 -95 25 24 20 14 83 10 0 84 -96 22 27 11 119 160 10 0 91 -97 25 21 12 122 153 10 0 100 -98 19 21 -9 32 93 10 99 0 -99 20 26 9 38 137 10 0 98 -100 18 18 -12 28 195 10 97 0 -101 30 60 -16 101 156 10 10 0 -102 35 69 -23 116 175 10 32 0 -103 53 52 -11 24 179 10 33 0 -104 53 43 -14 65 200 10 77 0 diff --git a/jsprit-instances/instances/lilim/lr111.txt b/jsprit-instances/instances/lilim/lr111.txt deleted file mode 100644 index c884dfb75..000000000 --- a/jsprit-instances/instances/lilim/lr111.txt +++ /dev/null @@ -1,110 +0,0 @@ -25 200 1 -0 35 35 0 0 230 0 0 0 -1 41 49 10 15 204 10 0 81 -2 35 17 7 18 202 10 0 22 -3 55 45 -9 54 187 10 29 0 -4 55 20 -13 138 169 10 76 0 -5 15 30 -35 20 199 10 86 0 -6 25 30 -8 76 131 10 37 0 -7 20 50 5 21 170 10 0 36 -8 10 43 9 87 112 0 0 105 -9 55 60 16 88 115 10 0 50 -10 30 60 -19 107 150 10 62 0 -11 20 65 12 57 86 10 0 20 -12 50 35 -9 15 192 10 40 0 -13 30 25 -27 147 180 10 94 0 -14 15 10 20 32 187 10 0 16 -15 30 5 8 50 81 10 0 72 -16 10 20 -20 29 139 10 14 0 -17 5 30 2 124 189 10 0 60 -18 20 40 12 47 136 10 0 45 -19 15 60 17 32 146 10 0 47 -20 45 65 -12 79 182 10 11 0 -21 45 20 11 18 195 10 0 58 -22 45 10 -7 76 127 10 2 0 -23 55 5 29 58 87 10 0 55 -24 65 35 -6 58 190 10 25 0 -25 65 20 6 153 186 10 0 24 -26 45 30 -18 58 208 10 54 0 -27 35 40 16 8 75 0 0 101 -28 41 37 16 6 136 10 0 79 -29 64 42 9 29 150 10 0 3 -30 40 60 21 49 102 10 0 51 -31 31 52 -9 17 198 10 52 0 -32 35 69 -10 67 186 10 63 0 -33 53 52 11 24 92 10 0 71 -34 65 55 -8 36 183 10 35 0 -35 63 65 8 116 178 10 0 34 -36 2 60 -5 41 112 10 7 0 -37 20 20 8 42 198 10 0 6 -38 5 5 -18 74 101 10 44 0 -39 60 12 31 33 110 10 0 80 -40 40 25 9 65 114 10 0 12 -41 42 7 -7 72 131 10 43 0 -42 24 12 -20 25 91 10 95 0 -43 23 3 7 82 185 10 0 41 -44 11 14 18 59 88 10 0 38 -45 6 38 -12 29 99 10 18 0 -46 2 48 1 63 180 10 0 48 -47 8 56 -17 34 176 10 19 0 -48 13 52 -1 27 192 10 46 0 -49 6 68 -9 93 132 10 64 0 -50 47 47 -16 41 203 10 9 0 -51 49 58 -21 36 149 10 30 0 -52 27 43 9 11 195 10 0 31 -53 37 31 -6 87 112 10 69 0 -54 57 29 18 90 197 10 0 26 -55 63 23 -29 126 155 10 23 0 -56 53 12 -8 106 163 10 74 0 -57 32 12 7 48 163 0 0 102 -58 36 26 -11 178 210 10 21 0 -59 21 24 28 17 202 10 0 97 -60 17 34 -2 70 201 10 17 0 -61 12 24 13 29 132 10 0 96 -62 24 58 19 46 79 10 0 10 -63 27 69 10 34 172 10 0 32 -64 15 77 9 48 107 10 0 49 -65 62 77 20 49 113 10 0 66 -66 49 73 -20 104 159 10 65 0 -67 67 5 -18 73 102 10 75 0 -68 56 39 -3 117 176 10 78 0 -69 37 47 6 39 70 10 0 53 -70 37 56 5 123 198 0 0 104 -71 57 68 -11 39 148 10 33 0 -72 47 16 -8 22 197 10 15 0 -73 44 17 9 30 135 0 0 108 -74 46 13 8 138 169 10 0 56 -75 49 11 18 27 192 10 0 67 -76 49 42 13 65 90 10 0 4 -77 53 43 14 168 199 0 0 103 -78 61 52 3 71 130 10 0 68 -79 57 48 -16 84 109 10 28 0 -80 56 37 -31 135 198 10 39 0 -81 55 54 -10 57 140 10 1 0 -82 15 47 16 23 196 0 0 107 -83 14 37 11 21 198 10 0 91 -84 11 31 7 93 118 10 0 85 -85 16 22 -7 23 177 10 84 0 -86 4 18 35 49 148 10 0 5 -87 28 18 -9 88 107 10 99 0 -88 26 52 9 50 107 10 0 90 -89 26 35 15 68 211 0 0 106 -90 31 67 -9 46 153 10 88 0 -91 15 19 -11 25 194 10 83 0 -92 22 22 2 18 53 10 0 98 -93 18 24 -17 129 199 10 100 0 -94 26 27 27 35 174 10 0 13 -95 25 24 20 14 205 10 0 42 -96 22 27 -13 51 204 10 61 0 -97 25 21 -28 92 183 10 59 0 -98 19 21 -2 21 198 10 92 0 -99 20 26 9 74 101 10 0 87 -100 18 18 17 159 195 10 0 93 -101 35 40 -16 8 75 10 27 0 -102 32 12 -7 48 163 10 57 0 -103 53 43 -14 168 199 10 77 0 -104 37 56 -5 123 198 10 70 0 -105 10 43 -9 87 112 10 8 0 -106 26 35 -15 68 211 10 89 0 -107 15 47 -16 23 196 10 82 0 -108 44 17 -9 30 135 10 73 0 diff --git a/jsprit-instances/instances/lilim/lr112.txt b/jsprit-instances/instances/lilim/lr112.txt deleted file mode 100644 index 4b398d2cb..000000000 --- a/jsprit-instances/instances/lilim/lr112.txt +++ /dev/null @@ -1,108 +0,0 @@ -25 200 1 -0 35 35 0 0 230 0 0 0 -1 41 49 -20 73 204 10 65 0 -2 35 17 7 18 147 10 0 22 -3 55 45 -9 76 165 10 29 0 -4 55 20 -31 73 195 10 39 0 -5 15 30 26 20 167 10 0 38 -6 25 30 3 49 158 10 0 83 -7 20 50 5 36 135 10 0 47 -8 10 43 -16 50 149 10 82 0 -9 55 60 16 47 156 10 0 50 -10 30 60 16 85 172 10 0 70 -11 20 65 -19 33 152 10 62 0 -12 50 35 -11 15 133 10 21 0 -13 30 25 23 79 208 10 0 58 -14 15 10 20 32 187 10 0 91 -15 30 5 8 30 152 10 0 42 -16 10 20 19 29 139 10 0 96 -17 5 30 -12 60 189 10 18 0 -18 20 40 12 47 136 10 0 17 -19 15 60 17 32 146 10 0 63 -20 45 65 9 79 182 0 0 105 -21 45 20 11 18 136 10 0 12 -22 45 10 -7 50 153 10 2 0 -23 55 5 -5 36 155 10 41 0 -24 65 35 -9 58 190 10 73 0 -25 65 20 6 56 186 10 0 54 -26 45 30 -9 87 186 10 40 0 -27 35 40 16 5 140 10 0 31 -28 41 37 16 6 136 10 0 78 -29 64 42 9 29 150 10 0 3 -30 40 60 21 25 132 10 0 51 -31 31 52 -16 17 138 10 27 0 -32 35 69 -9 67 186 10 64 0 -33 53 52 11 24 161 10 0 68 -34 65 55 -13 70 173 10 76 0 -35 63 65 8 54 178 10 0 66 -36 2 60 5 41 178 10 0 49 -37 20 20 -18 87 190 10 44 0 -38 5 5 -26 42 153 10 5 0 -39 60 12 31 33 186 10 0 4 -40 40 25 9 40 139 10 0 26 -41 42 7 5 43 160 10 0 23 -42 24 12 -8 25 158 10 15 0 -43 23 3 7 82 185 10 0 97 -44 11 14 18 31 144 10 0 37 -45 6 38 16 29 169 10 0 60 -46 2 48 -9 63 180 10 88 0 -47 8 56 -5 34 176 10 7 0 -48 13 52 36 65 192 0 0 104 -49 6 68 -5 73 152 10 36 0 -50 47 47 -16 75 182 10 9 0 -51 49 58 -21 36 149 10 30 0 -52 27 43 9 11 133 10 0 90 -53 37 31 14 51 148 10 0 55 -54 57 29 -6 90 197 10 25 0 -55 63 23 -14 69 189 10 53 0 -56 53 12 -25 76 190 10 72 0 -57 32 12 -10 48 163 10 98 0 -58 36 26 -23 84 210 10 13 0 -59 21 24 28 17 183 10 0 89 -60 17 34 -16 70 201 10 45 0 -61 12 24 13 29 132 10 0 86 -62 24 58 19 25 154 10 0 11 -63 27 69 -17 34 172 10 19 0 -64 15 77 9 46 165 10 0 32 -65 62 77 20 49 170 10 0 1 -66 49 73 -8 68 179 10 35 0 -67 67 5 -18 43 156 10 75 0 -68 56 39 -11 80 198 10 33 0 -69 37 47 6 12 137 10 0 77 -70 37 56 -16 48 198 10 10 0 -71 57 68 -23 39 148 10 79 0 -72 47 16 25 22 170 10 0 56 -73 44 17 9 30 135 10 0 24 -74 46 13 8 74 195 0 0 101 -75 49 11 18 27 141 10 0 67 -76 49 42 13 27 128 10 0 34 -77 53 43 -6 72 200 10 69 0 -78 61 52 -16 42 159 10 28 0 -79 57 48 23 47 146 10 0 71 -80 56 37 6 73 198 0 0 103 -81 55 54 26 57 140 0 0 106 -82 15 47 16 23 146 10 0 8 -83 14 37 -3 21 157 10 6 0 -84 11 31 -27 57 154 10 94 0 -85 16 22 41 44 147 10 0 93 -86 4 18 -13 49 148 10 61 0 -87 28 18 -2 61 134 10 92 0 -88 26 52 9 21 136 10 0 46 -89 26 35 -28 68 211 10 59 0 -90 31 67 -9 46 153 10 52 0 -91 15 19 -20 70 194 10 14 0 -92 22 22 2 18 159 10 0 87 -93 18 24 -41 60 199 10 85 0 -94 26 27 27 58 151 10 0 84 -95 25 24 20 14 143 10 0 99 -96 22 27 -19 89 190 10 16 0 -97 25 21 -7 92 183 10 43 0 -98 19 21 10 21 142 10 0 57 -99 20 26 -20 33 142 10 95 0 -100 18 18 17 51 195 0 0 102 -101 46 13 -8 74 195 10 74 0 -102 18 18 -17 51 195 10 100 0 -103 56 37 -6 73 198 10 80 0 -104 13 52 -36 65 192 10 48 0 -105 45 65 -9 79 182 10 20 0 -106 55 54 -26 57 140 10 81 0 diff --git a/jsprit-instances/instances/lilim/lr201.txt b/jsprit-instances/instances/lilim/lr201.txt deleted file mode 100644 index beac816c2..000000000 --- a/jsprit-instances/instances/lilim/lr201.txt +++ /dev/null @@ -1,104 +0,0 @@ -25 1000 1 -0 35 35 0 0 1000 0 0 0 -1 41 49 -9 707 848 10 20 0 -2 35 17 7 143 282 10 0 72 -3 55 45 -21 527 584 10 30 0 -4 55 20 -8 678 801 10 74 0 -5 15 30 26 34 209 10 0 7 -6 25 30 -28 415 514 10 59 0 -7 20 50 -26 331 410 10 5 0 -8 10 43 9 404 481 10 0 18 -9 55 60 -6 400 497 10 69 0 -10 30 60 16 577 632 10 0 70 -11 20 65 -16 206 325 10 82 0 -12 50 35 19 228 345 10 0 71 -13 30 25 -7 690 827 10 43 0 -14 15 10 20 32 243 10 0 99 -15 30 5 8 175 300 10 0 97 -16 10 20 19 272 373 10 0 58 -17 5 30 -30 733 870 10 49 0 -18 20 40 -9 377 434 10 8 0 -19 15 60 17 269 378 10 0 62 -20 45 65 9 581 666 10 0 1 -21 45 20 11 214 331 10 0 56 -22 45 10 18 409 494 10 0 55 -23 55 5 29 206 325 10 0 41 -24 65 35 -36 704 847 10 68 0 -25 65 20 6 817 956 0 0 101 -26 45 30 -26 588 667 10 87 0 -27 35 40 -9 104 255 10 52 0 -28 41 37 16 114 255 10 0 79 -29 64 42 9 190 313 10 0 81 -30 40 60 21 259 354 10 0 3 -31 31 52 27 152 275 10 0 78 -32 35 69 -13 660 777 10 50 0 -33 53 52 11 45 200 10 0 63 -34 65 55 -13 529 614 10 76 0 -35 63 65 -25 686 813 10 66 0 -36 2 60 -27 41 208 10 47 0 -37 20 20 8 606 693 10 0 100 -38 5 5 16 302 405 10 0 96 -39 60 12 31 33 224 10 0 67 -40 40 25 9 360 437 10 0 53 -41 42 7 -29 396 511 10 23 0 -42 24 12 -2 25 172 10 92 0 -43 23 3 7 620 705 10 0 13 -44 11 14 18 233 340 10 0 86 -45 6 38 16 29 189 10 0 64 -46 2 48 -9 515 628 10 88 0 -47 8 56 27 85 250 10 0 36 -48 13 52 36 773 906 10 0 60 -49 6 68 30 501 540 10 0 17 -50 47 47 13 547 642 10 0 32 -51 49 58 -20 348 453 10 65 0 -52 27 43 9 174 299 10 0 27 -53 37 31 -9 414 489 10 40 0 -54 57 29 -9 641 734 10 73 0 -55 63 23 -18 620 739 10 22 0 -56 53 12 -11 585 692 10 21 0 -57 32 12 -18 421 530 10 75 0 -58 36 26 -19 849 980 10 16 0 -59 21 24 28 17 229 10 0 6 -60 17 34 -36 721 862 10 48 0 -61 12 24 -10 290 377 10 98 0 -62 24 58 -17 163 302 10 19 0 -63 27 69 -11 34 191 10 33 0 -64 15 77 -16 214 333 10 45 0 -65 62 77 20 49 188 10 0 51 -66 49 73 25 592 693 10 0 35 -67 67 5 -31 294 401 10 39 0 -68 56 39 36 637 752 10 0 24 -69 37 47 6 162 293 10 0 9 -70 37 56 -16 788 968 10 10 0 -71 57 68 -19 268 367 10 12 0 -72 47 16 -7 31 208 10 2 0 -73 44 17 9 308 399 10 0 54 -74 46 13 8 681 802 10 0 4 -75 49 11 18 236 345 10 0 57 -76 49 42 13 290 373 10 0 34 -77 53 43 -6 817 952 10 80 0 -78 61 52 -27 384 499 10 31 0 -79 57 48 -16 388 465 10 28 0 -80 56 37 6 839 968 10 0 77 -81 55 54 -9 411 456 10 29 0 -82 15 47 16 162 289 10 0 11 -83 14 37 11 96 249 10 0 90 -84 11 31 7 436 511 0 0 102 -85 16 22 -20 376 461 10 95 0 -86 4 18 -18 388 465 10 44 0 -87 28 18 26 420 447 10 0 26 -88 26 52 9 279 388 10 0 46 -89 26 35 -22 755 920 10 93 0 -90 31 67 -11 392 487 10 83 0 -91 15 19 -27 739 866 10 94 0 -92 22 22 2 18 181 10 0 42 -93 18 24 22 811 969 10 0 89 -94 26 27 27 436 503 10 0 91 -95 25 24 20 92 231 10 0 85 -96 22 27 -16 607 690 10 38 0 -97 25 21 -8 612 673 10 15 0 -98 19 21 10 183 306 10 0 61 -99 20 26 -20 333 432 10 14 0 -100 18 18 -8 798 965 10 37 0 -101 65 20 -6 817 956 10 25 0 -102 11 31 -7 436 511 10 84 0 diff --git a/jsprit-instances/instances/lilim/lr202.txt b/jsprit-instances/instances/lilim/lr202.txt deleted file mode 100644 index 9b8451039..000000000 --- a/jsprit-instances/instances/lilim/lr202.txt +++ /dev/null @@ -1,102 +0,0 @@ -25 1000 1 -0 35 35 0 0 1000 0 0 0 -1 41 49 -25 0 974 10 66 0 -2 35 17 7 0 972 10 0 43 -3 55 45 13 0 967 10 0 100 -4 55 20 -12 678 801 10 97 0 -5 15 30 -19 0 969 10 16 0 -6 25 30 -35 415 514 10 86 0 -7 20 50 -9 0 968 10 64 0 -8 10 43 9 404 481 10 0 55 -9 55 60 16 400 497 10 0 90 -10 30 60 -15 577 632 10 71 0 -11 20 65 12 206 325 10 0 51 -12 50 35 19 0 975 10 0 26 -13 30 25 23 690 827 10 0 60 -14 15 10 20 32 243 10 0 44 -15 30 5 -41 175 300 10 85 0 -16 10 20 19 272 373 10 0 5 -17 5 30 -11 733 870 10 21 0 -18 20 40 -16 377 434 10 38 0 -19 15 60 17 269 378 10 0 81 -20 45 65 -5 581 666 10 36 0 -21 45 20 11 0 971 10 0 17 -22 45 10 -6 409 494 10 69 0 -23 55 5 -11 206 325 10 96 0 -24 65 35 -2 704 847 10 92 0 -25 65 20 -6 817 956 10 56 0 -26 45 30 -19 0 978 10 12 0 -27 35 40 -9 104 255 10 29 0 -28 41 37 16 114 255 10 0 37 -29 64 42 9 190 313 10 0 27 -30 40 60 21 259 354 10 0 49 -31 31 52 27 0 972 10 0 52 -32 35 69 -16 660 777 10 45 0 -33 53 52 11 45 200 10 0 67 -34 65 55 14 0 953 10 0 53 -35 63 65 -1 686 813 10 46 0 -36 2 60 5 41 208 10 0 20 -37 20 20 -16 0 968 10 28 0 -38 5 5 16 302 405 10 0 18 -39 60 12 31 33 224 10 0 99 -40 40 25 9 360 437 10 0 74 -41 42 7 -7 396 511 10 57 0 -42 24 12 5 25 172 10 0 54 -43 23 3 -7 620 705 10 2 0 -44 11 14 -20 233 340 10 14 0 -45 6 38 16 29 189 10 0 32 -46 2 48 1 515 628 10 0 35 -47 8 56 27 85 250 10 0 63 -48 13 52 36 0 962 10 0 68 -49 6 68 -21 501 540 10 30 0 -50 47 47 13 0 973 10 0 65 -51 49 58 -12 348 453 10 11 0 -52 27 43 -27 0 978 10 31 0 -53 37 31 -14 414 489 10 34 0 -54 57 29 -5 641 734 10 42 0 -55 63 23 -9 620 739 10 8 0 -56 53 12 6 585 692 10 0 25 -57 32 12 7 421 530 10 0 41 -58 36 26 -18 849 980 10 75 0 -59 21 24 28 0 972 10 0 91 -60 17 34 -23 721 862 10 13 0 -61 12 24 13 290 377 10 0 80 -62 24 58 -11 163 302 10 83 0 -63 27 69 -27 34 191 10 47 0 -64 15 77 9 214 333 10 0 7 -65 62 77 -13 49 188 10 50 0 -66 49 73 25 592 693 10 0 1 -67 67 5 -11 294 401 10 33 0 -68 56 39 -36 637 752 10 48 0 -69 37 47 6 162 293 10 0 22 -70 37 56 -9 788 968 10 88 0 -71 57 68 15 268 367 10 0 10 -72 47 16 25 0 967 10 0 93 -73 44 17 -13 308 399 10 76 0 -74 46 13 -9 681 802 10 40 0 -75 49 11 18 0 962 10 0 58 -76 49 42 13 290 373 10 0 73 -77 53 43 -16 817 952 10 82 0 -78 61 52 3 384 499 10 0 79 -79 57 48 -3 388 465 10 78 0 -80 56 37 -13 839 968 10 61 0 -81 55 54 -17 411 456 10 19 0 -82 15 47 16 0 966 10 0 77 -83 14 37 11 0 968 10 0 62 -84 11 31 -10 436 511 10 98 0 -85 16 22 41 0 966 10 0 15 -86 4 18 35 388 465 10 0 6 -87 28 18 26 420 447 10 0 89 -88 26 52 9 279 388 10 0 70 -89 26 35 -26 755 920 10 87 0 -90 31 67 -16 392 487 10 9 0 -91 15 19 -28 0 964 10 59 0 -92 22 22 2 18 181 10 0 24 -93 18 24 -25 811 969 10 72 0 -94 26 27 27 0 977 10 0 95 -95 25 24 -27 0 975 10 94 0 -96 22 27 11 0 974 10 0 23 -97 25 21 12 612 673 10 0 4 -98 19 21 10 0 968 10 0 84 -99 20 26 -31 333 432 10 39 0 -100 18 18 -13 798 965 10 3 0 diff --git a/jsprit-instances/instances/lilim/lr203.txt b/jsprit-instances/instances/lilim/lr203.txt deleted file mode 100644 index 1451e493f..000000000 --- a/jsprit-instances/instances/lilim/lr203.txt +++ /dev/null @@ -1,104 +0,0 @@ -25 1000 1 -0 35 35 0 0 1000 0 0 0 -1 41 49 10 0 974 10 0 6 -2 35 17 7 0 972 10 0 58 -3 55 45 13 0 967 10 0 68 -4 55 20 -26 678 801 10 87 0 -5 15 30 -16 0 969 10 38 0 -6 25 30 -10 415 514 10 1 0 -7 20 50 -25 0 968 10 66 0 -8 10 43 -7 404 481 10 84 0 -9 55 60 16 400 497 0 0 101 -10 30 60 16 577 632 10 0 32 -11 20 65 12 206 325 10 0 13 -12 50 35 -21 0 975 10 30 0 -13 30 25 -12 690 827 10 11 0 -14 15 10 -20 0 957 10 65 0 -15 30 5 8 175 300 10 0 67 -16 10 20 -11 0 960 10 96 0 -17 5 30 -36 733 870 10 48 0 -18 20 40 12 0 974 10 0 83 -19 15 60 17 0 957 10 0 90 -20 45 65 9 0 958 10 0 98 -21 45 20 -25 0 971 10 72 0 -22 45 10 -7 409 494 10 43 0 -23 55 5 29 206 325 10 0 53 -24 65 35 -6 0 960 10 25 0 -25 65 20 6 817 956 10 0 24 -26 45 30 -5 0 978 10 36 0 -27 35 40 16 104 255 10 0 37 -28 41 37 -5 0 983 10 42 0 -29 64 42 -19 0 960 10 62 0 -30 40 60 21 259 354 10 0 12 -31 31 52 27 0 972 10 0 35 -32 35 69 -16 0 956 10 10 0 -33 53 52 11 45 200 10 0 71 -34 65 55 -1 0 953 10 46 0 -35 63 65 -27 686 813 10 31 0 -36 2 60 5 41 208 10 0 26 -37 20 20 -16 0 968 10 27 0 -38 5 5 16 302 405 10 0 5 -39 60 12 -20 33 224 10 95 0 -40 40 25 9 360 437 10 0 41 -41 42 7 -9 396 511 10 40 0 -42 24 12 5 25 172 10 0 28 -43 23 3 7 0 955 10 0 22 -44 11 14 -41 233 340 10 85 0 -45 6 38 -3 29 189 10 60 0 -46 2 48 1 0 954 10 0 34 -47 8 56 27 0 955 10 0 93 -48 13 52 36 0 962 10 0 17 -49 6 68 -10 501 540 10 51 0 -50 47 47 13 0 973 10 0 81 -51 49 58 10 0 963 10 0 49 -52 27 43 9 0 978 10 0 64 -53 37 31 -29 414 489 10 23 0 -54 57 29 18 0 967 10 0 80 -55 63 23 -9 620 739 10 73 0 -56 53 12 6 585 692 10 0 74 -57 32 12 7 0 966 10 0 77 -58 36 26 -7 849 980 10 2 0 -59 21 24 -6 0 972 10 69 0 -60 17 34 3 0 971 10 0 45 -61 12 24 13 0 964 10 0 97 -62 24 58 19 163 302 10 0 29 -63 27 69 10 0 955 10 0 82 -64 15 77 -9 214 333 10 52 0 -65 62 77 20 49 188 10 0 14 -66 49 73 25 592 693 10 0 7 -67 67 5 -8 294 401 10 15 0 -68 56 39 -13 637 752 10 3 0 -69 37 47 6 162 293 10 0 59 -70 37 56 -35 788 968 10 86 0 -71 57 68 -11 0 950 10 33 0 -72 47 16 25 0 967 10 0 21 -73 44 17 9 0 969 10 0 55 -74 46 13 -6 681 802 10 56 0 -75 49 11 -27 0 962 10 94 0 -76 49 42 -9 290 373 10 88 0 -77 53 43 -7 817 952 10 57 0 -78 61 52 -23 384 499 10 79 0 -79 57 48 23 388 465 10 0 78 -80 56 37 -18 839 968 10 54 0 -81 55 54 -13 0 962 10 50 0 -82 15 47 -10 0 966 10 63 0 -83 14 37 -12 0 968 10 18 0 -84 11 31 7 436 511 10 0 8 -85 16 22 41 0 966 10 0 44 -86 4 18 35 0 954 10 0 70 -87 28 18 26 420 447 10 0 4 -88 26 52 9 279 388 10 0 76 -89 26 35 15 0 981 10 0 91 -90 31 67 -17 0 957 10 19 0 -91 15 19 -15 0 964 10 89 0 -92 22 22 2 18 181 0 0 102 -93 18 24 -27 811 969 10 47 0 -94 26 27 27 0 977 10 0 75 -95 25 24 20 0 975 10 0 39 -96 22 27 11 0 974 10 0 16 -97 25 21 -13 0 972 10 61 0 -98 19 21 -9 0 968 10 20 0 -99 20 26 9 333 432 10 0 100 -100 18 18 -9 798 965 10 99 0 -101 55 60 -16 400 497 10 9 0 -102 22 22 -2 18 181 10 92 0 diff --git a/jsprit-instances/instances/lilim/lr204.txt b/jsprit-instances/instances/lilim/lr204.txt deleted file mode 100644 index f8c5faa16..000000000 --- a/jsprit-instances/instances/lilim/lr204.txt +++ /dev/null @@ -1,102 +0,0 @@ -25 1000 1 -0 35 35 0 0 1000 0 0 0 -1 41 49 -18 0 974 10 44 0 -2 35 17 -20 0 972 10 65 0 -3 55 45 -9 0 967 10 8 0 -4 55 20 -14 678 801 10 34 0 -5 15 30 -20 0 969 10 95 0 -6 25 30 -28 0 978 10 59 0 -7 20 50 5 0 968 10 0 31 -8 10 43 9 404 481 10 0 3 -9 55 60 16 400 497 10 0 21 -10 30 60 -8 0 964 10 15 0 -11 20 65 12 206 325 10 0 67 -12 50 35 19 0 975 10 0 35 -13 30 25 -9 690 827 10 29 0 -14 15 10 -2 0 957 10 92 0 -15 30 5 8 175 300 10 0 10 -16 10 20 19 0 960 10 0 61 -17 5 30 2 0 959 10 0 46 -18 20 40 12 0 974 10 0 37 -19 15 60 17 0 957 10 0 88 -20 45 65 -14 0 958 10 53 0 -21 45 20 -16 0 971 10 9 0 -22 45 10 18 0 963 10 0 49 -23 55 5 -5 206 325 10 42 0 -24 65 35 -16 0 960 10 27 0 -25 65 20 -7 817 956 10 57 0 -26 45 30 -36 0 978 10 68 0 -27 35 40 16 0 985 10 0 24 -28 41 37 16 0 983 10 0 97 -29 64 42 9 0 960 10 0 13 -30 40 60 -16 0 964 10 45 0 -31 31 52 -5 0 972 10 7 0 -32 35 69 23 0 956 10 0 58 -33 53 52 -10 0 965 10 63 0 -34 65 55 14 0 953 10 0 4 -35 63 65 -19 0 948 10 12 0 -36 2 60 5 0 948 10 0 64 -37 20 20 -12 0 968 10 18 0 -38 5 5 16 302 405 10 0 60 -39 60 12 -6 0 956 10 69 0 -40 40 25 -18 0 978 10 54 0 -41 42 7 5 0 961 10 0 43 -42 24 12 5 0 964 10 0 23 -43 23 3 -5 0 955 10 41 0 -44 11 14 18 233 340 10 0 1 -45 6 38 16 0 960 10 0 30 -46 2 48 -2 0 954 10 17 0 -47 8 56 -7 0 955 10 84 0 -48 13 52 36 0 962 10 0 93 -49 6 68 -18 0 946 10 22 0 -50 47 47 -11 0 973 10 83 0 -51 49 58 10 0 963 10 0 55 -52 27 43 9 0 978 10 0 81 -53 37 31 14 414 489 10 0 20 -54 57 29 18 0 967 10 0 40 -55 63 23 -10 620 739 10 51 0 -56 53 12 -27 0 960 10 94 0 -57 32 12 7 0 966 10 0 25 -58 36 26 -23 849 980 10 32 0 -59 21 24 28 0 972 10 0 6 -60 17 34 -16 0 971 10 38 0 -61 12 24 -19 0 964 10 16 0 -62 24 58 19 163 302 10 0 79 -63 27 69 10 0 955 10 0 33 -64 15 77 -5 0 943 10 36 0 -65 62 77 20 0 940 10 0 2 -66 49 73 25 0 949 10 0 71 -67 67 5 -12 294 401 10 11 0 -68 56 39 36 0 968 10 0 26 -69 37 47 6 162 293 10 0 39 -70 37 56 5 0 968 10 0 80 -71 57 68 -25 0 950 10 66 0 -72 47 16 -16 0 967 10 82 0 -73 44 17 9 0 969 10 0 96 -74 46 13 -3 681 802 10 78 0 -75 49 11 18 0 962 10 0 90 -76 49 42 13 290 373 10 0 100 -77 53 43 -26 817 952 10 87 0 -78 61 52 3 0 958 10 0 74 -79 57 48 -19 388 465 10 62 0 -80 56 37 -5 0 968 10 70 0 -81 55 54 -9 0 962 10 52 0 -82 15 47 16 0 966 10 0 72 -83 14 37 11 0 968 10 0 50 -84 11 31 7 436 511 10 0 47 -85 16 22 -10 0 966 10 98 0 -86 4 18 35 0 954 10 0 99 -87 28 18 26 420 447 10 0 77 -88 26 52 -17 0 970 10 19 0 -89 26 35 -1 0 981 10 91 0 -90 31 67 -18 0 957 10 75 0 -91 15 19 1 0 964 10 0 89 -92 22 22 2 18 181 10 0 14 -93 18 24 -36 0 969 10 48 0 -94 26 27 27 0 977 10 0 56 -95 25 24 20 0 975 10 0 5 -96 22 27 -9 0 974 10 73 0 -97 25 21 -16 0 972 10 28 0 -98 19 21 10 0 968 10 0 85 -99 20 26 -35 333 432 10 86 0 -100 18 18 -13 798 965 10 76 0 diff --git a/jsprit-instances/instances/lilim/lr205.txt b/jsprit-instances/instances/lilim/lr205.txt deleted file mode 100644 index 6a537bf50..000000000 --- a/jsprit-instances/instances/lilim/lr205.txt +++ /dev/null @@ -1,104 +0,0 @@ -25 1000 1 -0 35 35 0 0 1000 0 0 0 -1 41 49 -5 658 898 10 36 0 -2 35 17 -18 93 333 10 75 0 -3 55 45 13 436 676 10 0 50 -4 55 20 -16 620 860 10 82 0 -5 15 30 26 20 260 10 0 53 -6 25 30 3 345 585 10 0 22 -7 20 50 5 251 491 10 0 99 -8 10 43 -29 323 563 10 23 0 -9 55 60 -9 329 569 10 20 0 -10 30 60 16 485 725 10 0 17 -11 20 65 12 146 386 10 0 24 -12 50 35 19 167 407 10 0 66 -13 30 25 -22 639 879 10 93 0 -14 15 10 20 32 272 10 0 16 -15 30 5 -28 118 358 10 59 0 -16 10 20 -20 203 443 10 14 0 -17 5 30 -16 682 922 10 10 0 -18 20 40 12 286 526 10 0 74 -19 15 60 -10 204 444 10 63 0 -20 45 65 9 504 744 10 0 9 -21 45 20 11 153 393 10 0 61 -22 45 10 -3 332 572 10 6 0 -23 55 5 29 146 386 10 0 8 -24 65 35 -12 656 896 10 11 0 -25 65 20 6 716 956 10 0 55 -26 45 30 -23 508 748 10 79 0 -27 35 40 16 60 300 10 0 65 -28 41 37 16 65 305 10 0 76 -29 64 42 9 132 372 10 0 51 -30 40 60 -11 187 427 10 33 0 -31 31 52 27 94 334 10 0 73 -32 35 69 23 599 839 10 0 37 -33 53 52 11 24 264 10 0 30 -34 65 55 -8 452 692 10 35 0 -35 63 65 8 630 870 10 0 34 -36 2 60 5 41 281 10 0 1 -37 20 20 -23 530 770 10 32 0 -38 5 5 -41 234 474 10 85 0 -39 60 12 31 33 273 10 0 67 -40 40 25 -11 279 519 10 83 0 -41 42 7 5 334 574 10 0 43 -42 24 12 -2 25 265 10 92 0 -43 23 3 -5 543 783 10 41 0 -44 11 14 18 167 407 10 0 84 -45 6 38 16 29 269 10 0 57 -46 2 48 -20 452 692 10 95 0 -47 8 56 27 48 288 10 0 62 -48 13 52 36 720 960 10 0 89 -49 6 68 -26 401 641 10 87 0 -50 47 47 -13 475 715 10 3 0 -51 49 58 -9 281 521 10 29 0 -52 27 43 -6 117 357 10 69 0 -53 37 31 -26 332 572 10 5 0 -54 57 29 18 568 808 10 0 80 -55 63 23 -6 560 800 10 25 0 -56 53 12 -9 519 759 10 64 0 -57 32 12 -16 356 596 10 45 0 -58 36 26 -1 740 980 10 91 0 -59 21 24 28 17 257 10 0 15 -60 17 34 3 672 912 10 0 97 -61 12 24 -11 214 454 10 21 0 -62 24 58 -27 113 353 10 47 0 -63 27 69 10 34 274 10 0 19 -64 15 77 9 154 394 10 0 56 -65 62 77 -16 49 289 10 27 0 -66 49 73 -19 523 763 10 12 0 -67 67 5 -31 228 468 10 39 0 -68 56 39 36 575 815 0 0 102 -69 37 47 6 108 348 10 0 52 -70 37 56 -14 728 968 10 77 0 -71 57 68 15 198 438 10 0 78 -72 47 16 25 22 262 10 0 86 -73 44 17 -27 234 474 10 31 0 -74 46 13 -12 622 862 10 18 0 -75 49 11 18 171 411 10 0 2 -76 49 42 -16 212 452 10 28 0 -77 53 43 14 730 970 10 0 70 -78 61 52 -15 322 562 10 71 0 -79 57 48 23 307 547 10 0 26 -80 56 37 -18 728 968 10 54 0 -81 55 54 26 314 554 0 0 101 -82 15 47 16 106 346 10 0 4 -83 14 37 11 53 293 10 0 40 -84 11 31 -18 354 594 10 44 0 -85 16 22 41 299 539 10 0 38 -86 4 18 -25 307 547 10 72 0 -87 28 18 26 314 554 10 0 49 -88 26 52 9 214 454 10 0 94 -89 26 35 -36 718 958 10 48 0 -90 31 67 -10 320 560 10 98 0 -91 15 19 1 683 923 10 0 58 -92 22 22 2 18 258 10 0 42 -93 18 24 22 729 969 10 0 13 -94 26 27 -9 350 590 10 88 0 -95 25 24 20 42 282 10 0 46 -96 22 27 11 529 769 10 0 100 -97 25 21 -3 523 763 10 60 0 -98 19 21 10 125 365 10 0 90 -99 20 26 -5 263 503 10 7 0 -100 18 18 -11 725 965 10 96 0 -101 55 54 -26 314 554 10 81 0 -102 56 39 -36 575 815 10 68 0 diff --git a/jsprit-instances/instances/lilim/lr206.txt b/jsprit-instances/instances/lilim/lr206.txt deleted file mode 100644 index cdc8fcc54..000000000 --- a/jsprit-instances/instances/lilim/lr206.txt +++ /dev/null @@ -1,102 +0,0 @@ -25 1000 1 -0 35 35 0 0 1000 0 0 0 -1 41 49 10 0 974 10 0 74 -2 35 17 -18 0 972 10 22 0 -3 55 45 13 0 967 10 0 81 -4 55 20 -16 620 860 10 27 0 -5 15 30 26 0 969 10 0 38 -6 25 30 3 345 585 10 0 80 -7 20 50 5 0 968 10 0 93 -8 10 43 9 323 563 10 0 83 -9 55 60 -15 329 569 10 71 0 -10 30 60 16 485 725 10 0 70 -11 20 65 12 146 386 10 0 89 -12 50 35 19 0 975 10 0 51 -13 30 25 -7 639 879 10 84 0 -14 15 10 20 32 272 10 0 98 -15 30 5 -5 118 358 10 36 0 -16 10 20 19 203 443 10 0 58 -17 5 30 -3 682 922 10 60 0 -18 20 40 -2 286 526 10 92 0 -19 15 60 17 204 444 10 0 85 -20 45 65 -9 504 744 10 29 0 -21 45 20 11 0 971 10 0 25 -22 45 10 18 332 572 10 0 2 -23 55 5 29 146 386 10 0 54 -24 65 35 -7 656 896 10 43 0 -25 65 20 -11 716 956 10 21 0 -26 45 30 17 0 978 10 0 67 -27 35 40 16 60 300 10 0 4 -28 41 37 16 65 305 10 0 79 -29 64 42 9 132 372 10 0 20 -30 40 60 -3 187 427 10 90 0 -31 31 52 27 0 972 10 0 52 -32 35 69 -10 599 839 10 63 0 -33 53 52 11 24 264 10 0 78 -34 65 55 14 0 953 10 0 66 -35 63 65 -19 630 870 10 62 0 -36 2 60 5 41 281 10 0 15 -37 20 20 -9 0 968 10 88 0 -38 5 5 -26 234 474 10 5 0 -39 60 12 31 33 273 10 0 95 -40 40 25 9 279 519 10 0 68 -41 42 7 5 334 574 10 0 57 -42 24 12 5 25 265 10 0 100 -43 23 3 7 543 783 10 0 24 -44 11 14 18 167 407 10 0 46 -45 6 38 -16 29 269 10 82 0 -46 2 48 -18 452 692 10 44 0 -47 8 56 27 48 288 10 0 61 -48 13 52 36 0 962 10 0 91 -49 6 68 -28 401 641 10 59 0 -50 47 47 13 0 973 10 0 99 -51 49 58 -19 281 521 10 12 0 -52 27 43 -27 0 978 10 31 0 -53 37 31 -9 332 572 10 73 0 -54 57 29 -29 568 808 10 23 0 -55 63 23 -26 560 800 10 87 0 -56 53 12 -12 519 759 10 97 0 -57 32 12 -5 356 596 10 41 0 -58 36 26 -19 740 980 10 16 0 -59 21 24 28 0 972 10 0 49 -60 17 34 3 672 912 10 0 17 -61 12 24 -27 214 454 10 47 0 -62 24 58 19 113 353 10 0 35 -63 27 69 10 34 274 10 0 32 -64 15 77 -20 154 394 10 65 0 -65 62 77 20 49 289 10 0 64 -66 49 73 -14 523 763 10 34 0 -67 67 5 -17 228 468 10 26 0 -68 56 39 -9 575 815 10 40 0 -69 37 47 6 108 348 10 0 76 -70 37 56 -16 728 968 10 10 0 -71 57 68 15 198 438 10 0 9 -72 47 16 25 0 967 10 0 96 -73 44 17 9 234 474 10 0 53 -74 46 13 -10 622 862 10 1 0 -75 49 11 18 0 962 10 0 77 -76 49 42 -6 212 452 10 69 0 -77 53 43 -18 730 970 10 75 0 -78 61 52 -11 322 562 10 33 0 -79 57 48 -16 307 547 10 28 0 -80 56 37 -3 728 968 10 6 0 -81 55 54 -13 314 554 10 3 0 -82 15 47 16 0 966 10 0 45 -83 14 37 -9 0 968 10 8 0 -84 11 31 7 354 594 10 0 13 -85 16 22 -17 0 966 10 19 0 -86 4 18 35 307 547 10 0 94 -87 28 18 26 314 554 10 0 55 -88 26 52 9 214 454 10 0 37 -89 26 35 -12 718 958 10 11 0 -90 31 67 3 320 560 10 0 30 -91 15 19 -36 0 964 10 48 0 -92 22 22 2 18 258 10 0 18 -93 18 24 -5 729 969 10 7 0 -94 26 27 -35 0 977 10 86 0 -95 25 24 -31 0 975 10 39 0 -96 22 27 -25 0 974 10 72 0 -97 25 21 12 523 763 10 0 56 -98 19 21 -20 0 968 10 14 0 -99 20 26 -13 263 503 10 50 0 -100 18 18 -5 725 965 10 42 0 diff --git a/jsprit-instances/instances/lilim/lr207.txt b/jsprit-instances/instances/lilim/lr207.txt deleted file mode 100644 index fa9c6c753..000000000 --- a/jsprit-instances/instances/lilim/lr207.txt +++ /dev/null @@ -1,104 +0,0 @@ -25 1000 0 -0 35 35 0 0 1000 0 0 0 -1 41 49 10 0 974 10 0 90 -2 35 17 -10 0 972 10 51 0 -3 55 45 -6 0 967 10 69 0 -4 55 20 19 620 860 10 0 13 -5 15 30 -13 0 969 10 50 0 -6 25 30 3 345 585 10 0 32 -7 20 50 -10 0 968 10 63 0 -8 10 43 9 323 563 10 0 47 -9 55 60 16 329 569 10 0 72 -10 30 60 16 485 725 10 0 35 -11 20 65 -11 146 386 10 83 0 -12 50 35 -18 0 975 10 54 0 -13 30 25 -19 639 879 10 4 0 -14 15 10 20 0 957 10 0 49 -15 30 5 8 118 358 10 0 38 -16 10 20 19 0 960 10 0 82 -17 5 30 -11 682 922 10 33 0 -18 20 40 -35 0 974 10 86 0 -19 15 60 17 0 957 10 0 66 -20 45 65 9 0 958 10 0 93 -21 45 20 -1 0 971 10 46 0 -22 45 10 -2 332 572 10 92 0 -23 55 5 -26 146 386 10 81 0 -24 65 35 3 0 960 10 0 44 -25 65 20 -18 716 956 10 75 0 -26 45 30 17 0 978 10 0 95 -27 35 40 16 60 300 10 0 94 -28 41 37 16 0 983 10 0 77 -29 64 42 9 0 960 10 0 67 -30 40 60 21 187 427 10 0 97 -31 31 52 -36 0 972 10 48 0 -32 35 69 -3 0 956 10 6 0 -33 53 52 11 24 264 10 0 17 -34 65 55 14 0 953 10 0 37 -35 63 65 -16 630 870 10 10 0 -36 2 60 -3 41 281 10 60 0 -37 20 20 -14 0 968 10 34 0 -38 5 5 -8 234 474 10 15 0 -39 60 12 31 33 273 10 0 84 -40 40 25 9 279 519 10 0 87 -41 42 7 5 334 574 10 0 74 -42 24 12 5 25 265 10 0 57 -43 23 3 7 0 955 10 0 85 -44 11 14 -3 167 407 10 24 0 -45 6 38 16 29 269 10 0 78 -46 2 48 1 0 954 10 0 21 -47 8 56 -9 0 955 10 8 0 -48 13 52 36 0 962 10 0 31 -49 6 68 -20 401 641 10 14 0 -50 47 47 13 0 973 10 0 5 -51 49 58 10 0 963 10 0 2 -52 27 43 9 0 978 10 0 79 -53 37 31 14 332 572 10 0 56 -54 57 29 18 0 967 10 0 12 -55 63 23 2 560 800 0 0 102 -56 53 12 -14 519 759 10 53 0 -57 32 12 -5 0 966 10 42 0 -58 36 26 -19 740 980 10 62 0 -59 21 24 28 0 972 10 0 73 -60 17 34 3 0 971 10 0 36 -61 12 24 13 0 964 10 0 100 -62 24 58 19 113 353 10 0 58 -63 27 69 10 0 955 10 0 7 -64 15 77 9 154 394 10 0 89 -65 62 77 20 49 289 10 0 71 -66 49 73 -17 523 763 10 19 0 -67 67 5 -9 228 468 10 29 0 -68 56 39 -9 575 815 10 88 0 -69 37 47 6 108 348 10 0 3 -70 37 56 -9 728 968 10 99 0 -71 57 68 -20 0 950 10 65 0 -72 47 16 -16 0 967 10 9 0 -73 44 17 -28 0 969 10 59 0 -74 46 13 -5 622 862 10 41 0 -75 49 11 18 0 962 10 0 25 -76 49 42 13 212 452 10 0 80 -77 53 43 -16 730 970 10 28 0 -78 61 52 -16 322 562 10 45 0 -79 57 48 -9 307 547 10 52 0 -80 56 37 -13 728 968 10 76 0 -81 55 54 26 0 962 10 0 23 -82 15 47 -19 0 966 10 16 0 -83 14 37 11 0 968 10 0 11 -84 11 31 -31 354 594 10 39 0 -85 16 22 -7 0 966 10 43 0 -86 4 18 35 0 954 10 0 18 -87 28 18 -9 314 554 10 40 0 -88 26 52 9 214 454 10 0 68 -89 26 35 -9 0 981 10 64 0 -90 31 67 -10 0 957 10 1 0 -91 15 19 1 0 964 0 0 101 -92 22 22 2 18 258 10 0 22 -93 18 24 -9 729 969 10 20 0 -94 26 27 -16 0 977 10 27 0 -95 25 24 -17 0 975 10 26 0 -96 22 27 -10 0 974 10 98 0 -97 25 21 -21 0 972 10 30 0 -98 19 21 10 0 968 10 0 96 -99 20 26 9 263 503 10 0 70 -100 18 18 -13 725 965 10 61 0 -101 15 19 -1 0 964 10 91 0 -102 63 23 -2 560 800 10 55 0 diff --git a/jsprit-instances/instances/lilim/lr208.txt b/jsprit-instances/instances/lilim/lr208.txt deleted file mode 100644 index 759a6b72f..000000000 --- a/jsprit-instances/instances/lilim/lr208.txt +++ /dev/null @@ -1,102 +0,0 @@ -25 1000 1 -0 35 35 0 0 1000 0 0 0 -1 41 49 -5 0 974 10 70 0 -2 35 17 -2 0 972 10 92 0 -3 55 45 -16 0 967 10 28 0 -4 55 20 19 620 860 10 0 6 -5 15 30 -7 0 969 10 43 0 -6 25 30 -19 0 978 10 4 0 -7 20 50 5 0 968 10 0 98 -8 10 43 9 323 563 10 0 30 -9 55 60 16 329 569 10 0 71 -10 30 60 16 0 964 10 0 78 -11 20 65 12 146 386 10 0 69 -12 50 35 -5 0 975 10 36 0 -13 30 25 -8 639 879 10 35 0 -14 15 10 -20 0 957 10 95 0 -15 30 5 8 118 358 10 0 86 -16 10 20 -27 0 960 10 94 0 -17 5 30 -16 0 959 10 38 0 -18 20 40 12 0 974 10 0 81 -19 15 60 17 0 957 10 0 89 -20 45 65 9 0 958 10 0 65 -21 45 20 11 0 971 10 0 59 -22 45 10 -5 0 963 10 42 0 -23 55 5 29 146 386 10 0 90 -24 65 35 -16 0 960 10 82 0 -25 65 20 6 716 956 10 0 74 -26 45 30 -6 0 978 10 80 0 -27 35 40 -19 0 985 10 62 0 -28 41 37 16 0 983 10 0 3 -29 64 42 -11 0 960 10 33 0 -30 40 60 -9 0 964 10 8 0 -31 31 52 27 0 972 10 0 79 -32 35 69 -13 0 956 10 61 0 -33 53 52 11 0 965 10 0 29 -34 65 55 14 0 953 10 0 37 -35 63 65 8 0 948 10 0 13 -36 2 60 5 0 948 10 0 12 -37 20 20 -14 0 968 10 34 0 -38 5 5 16 234 474 10 0 17 -39 60 12 31 0 956 10 0 56 -40 40 25 -25 0 978 10 72 0 -41 42 7 5 0 961 10 0 64 -42 24 12 5 0 964 10 0 22 -43 23 3 7 0 955 10 0 5 -44 11 14 -9 167 407 10 99 0 -45 6 38 -26 0 960 10 87 0 -46 2 48 1 0 954 10 0 50 -47 8 56 27 0 955 10 0 77 -48 13 52 36 0 962 10 0 76 -49 6 68 30 0 946 10 0 63 -50 47 47 -1 0 973 10 46 0 -51 49 58 10 0 963 10 0 96 -52 27 43 9 0 978 10 0 53 -53 37 31 -9 332 572 10 52 0 -54 57 29 18 0 967 10 0 97 -55 63 23 2 560 800 10 0 58 -56 53 12 -31 0 960 10 39 0 -57 32 12 7 0 966 10 0 84 -58 36 26 -2 740 980 10 55 0 -59 21 24 -11 0 972 10 21 0 -60 17 34 3 0 971 10 0 88 -61 12 24 13 0 964 10 0 32 -62 24 58 19 113 353 10 0 27 -63 27 69 -30 0 955 10 49 0 -64 15 77 -5 0 943 10 41 0 -65 62 77 -9 0 940 10 20 0 -66 49 73 -11 0 949 10 83 0 -67 67 5 25 228 468 10 0 85 -68 56 39 -22 0 968 10 93 0 -69 37 47 -12 108 348 10 11 0 -70 37 56 5 0 968 10 0 1 -71 57 68 -16 0 950 10 9 0 -72 47 16 25 0 967 10 0 40 -73 44 17 9 0 969 10 0 100 -74 46 13 -6 622 862 10 25 0 -75 49 11 18 0 962 10 0 91 -76 49 42 -36 212 452 10 48 0 -77 53 43 -27 730 970 10 47 0 -78 61 52 -16 0 958 10 10 0 -79 57 48 -27 307 547 10 31 0 -80 56 37 6 0 968 10 0 26 -81 55 54 -12 0 962 10 18 0 -82 15 47 16 0 966 10 0 24 -83 14 37 11 0 968 10 0 66 -84 11 31 -7 354 594 10 57 0 -85 16 22 -25 0 966 10 67 0 -86 4 18 -8 0 954 10 15 0 -87 28 18 26 314 554 10 0 45 -88 26 52 -3 0 970 10 60 0 -89 26 35 -17 0 981 10 19 0 -90 31 67 -29 0 957 10 23 0 -91 15 19 -18 0 964 10 75 0 -92 22 22 2 18 258 10 0 2 -93 18 24 22 0 969 10 0 68 -94 26 27 27 0 977 10 0 16 -95 25 24 20 0 975 10 0 14 -96 22 27 -10 0 974 10 51 0 -97 25 21 -18 0 972 10 54 0 -98 19 21 -5 0 968 10 7 0 -99 20 26 9 263 503 10 0 44 -100 18 18 -9 725 965 10 73 0 diff --git a/jsprit-instances/instances/lilim/lr209.txt b/jsprit-instances/instances/lilim/lr209.txt deleted file mode 100644 index 246161170..000000000 --- a/jsprit-instances/instances/lilim/lr209.txt +++ /dev/null @@ -1,104 +0,0 @@ -25 1000 1 -0 35 35 0 0 1000 0 0 0 -1 41 49 10 636 919 10 0 55 -2 35 17 7 74 351 10 0 23 -3 55 45 13 498 613 10 0 54 -4 55 20 19 470 965 10 0 74 -5 15 30 -9 20 370 10 52 0 -6 25 30 3 266 663 0 0 101 -7 20 50 5 292 449 10 0 10 -8 10 43 -19 288 597 10 16 0 -9 55 60 -15 254 643 10 71 0 -10 30 60 -5 496 713 10 7 0 -11 20 65 12 33 510 10 0 63 -12 50 35 19 170 403 10 0 41 -13 30 25 23 426 978 10 0 42 -14 15 10 20 32 454 10 0 18 -15 30 5 -9 30 529 10 73 0 -16 10 20 19 222 423 10 0 8 -17 5 30 2 409 959 10 0 36 -18 20 40 -20 349 462 10 14 0 -19 15 60 -27 215 432 10 31 0 -20 45 65 -9 538 709 10 88 0 -21 45 20 11 156 389 10 0 72 -22 45 10 -31 280 623 10 39 0 -23 55 5 -7 36 513 10 2 0 -24 65 35 -3 633 918 10 90 0 -25 65 20 -23 400 956 10 79 0 -26 45 30 -16 548 707 10 28 0 -27 35 40 16 5 612 10 0 47 -28 41 37 16 44 325 10 0 26 -29 64 42 9 129 374 10 0 40 -30 40 60 21 115 498 10 0 33 -31 31 52 27 91 336 10 0 19 -32 35 69 23 602 835 10 0 48 -33 53 52 -21 24 646 10 30 0 -34 65 55 -6 487 656 10 69 0 -35 63 65 8 439 948 10 0 68 -36 2 60 -2 41 710 10 17 0 -37 20 20 -27 563 736 10 94 0 -38 5 5 16 147 560 10 0 49 -39 60 12 31 33 797 10 0 22 -40 40 25 -9 243 554 10 29 0 -41 42 7 -19 225 682 10 12 0 -42 24 12 -23 25 616 10 13 0 -43 23 3 7 578 747 10 0 91 -44 11 14 -16 72 501 10 82 0 -45 6 38 -35 29 669 10 86 0 -46 2 48 -2 458 685 10 92 0 -47 8 56 -16 34 362 10 27 0 -48 13 52 -23 694 962 10 32 0 -49 6 68 -16 444 597 10 38 0 -50 47 47 -19 499 690 10 62 0 -51 49 58 10 296 505 10 0 81 -52 27 43 9 111 362 10 0 5 -53 37 31 14 301 602 10 0 97 -54 57 29 -13 595 780 10 3 0 -55 63 23 -10 442 917 10 1 0 -56 53 12 -6 426 851 10 80 0 -57 32 12 -18 366 585 10 75 0 -58 36 26 18 458 980 0 0 102 -59 21 24 28 17 441 10 0 95 -60 17 34 -13 651 932 10 61 0 -61 12 24 13 246 421 10 0 60 -62 24 58 19 25 583 10 0 50 -63 27 69 -12 34 348 10 11 0 -64 15 77 9 46 523 10 0 77 -65 62 77 -3 49 608 10 78 0 -66 49 73 25 440 845 10 0 70 -67 67 5 25 132 563 10 0 96 -68 56 39 -8 464 925 10 35 0 -69 37 47 6 12 535 10 0 34 -70 37 56 -25 249 968 10 66 0 -71 57 68 15 218 417 10 0 9 -72 47 16 -11 22 377 10 21 0 -73 44 17 9 263 444 10 0 15 -74 46 13 -19 479 965 10 4 0 -75 49 11 18 182 399 10 0 57 -76 49 42 13 166 497 10 0 87 -77 53 43 -9 430 970 10 64 0 -78 61 52 3 212 671 10 0 65 -79 57 48 23 273 580 10 0 25 -80 56 37 6 452 968 10 0 56 -81 55 54 -10 388 479 10 51 0 -82 15 47 16 99 352 10 0 44 -83 14 37 11 21 328 10 0 99 -84 11 31 7 323 624 10 0 89 -85 16 22 -10 333 504 10 98 0 -86 4 18 35 350 503 10 0 45 -87 28 18 -13 380 487 10 76 0 -88 26 52 9 114 553 10 0 20 -89 26 35 -7 649 981 10 84 0 -90 31 67 3 345 534 10 0 24 -91 15 19 -7 675 930 10 43 0 -92 22 22 2 18 673 10 0 46 -93 18 24 -17 339 969 10 100 0 -94 26 27 27 403 536 10 0 37 -95 25 24 -28 22 301 10 59 0 -96 22 27 -25 565 732 10 67 0 -97 25 21 -14 582 703 10 53 0 -98 19 21 10 122 367 10 0 85 -99 20 26 -11 185 580 10 83 0 -100 18 18 17 297 965 10 0 93 -101 25 30 -3 266 663 10 6 0 -102 36 26 -18 458 980 10 58 0 diff --git a/jsprit-instances/instances/lilim/lr210.txt b/jsprit-instances/instances/lilim/lr210.txt deleted file mode 100644 index 414b3bc60..000000000 --- a/jsprit-instances/instances/lilim/lr210.txt +++ /dev/null @@ -1,104 +0,0 @@ -25 1000 1 -0 35 35 0 0 1000 0 0 0 -1 41 49 10 190 974 10 0 70 -2 35 17 -41 18 792 10 85 0 -3 55 45 -5 289 822 10 42 0 -4 55 20 19 679 800 10 0 55 -5 15 30 -22 20 906 10 93 0 -6 25 30 -27 355 574 10 47 0 -7 20 50 5 72 669 10 0 96 -8 10 43 -1 393 492 10 46 0 -9 55 60 -8 394 503 10 15 0 -10 30 60 16 517 692 10 0 63 -11 20 65 -21 206 325 10 30 0 -12 50 35 -20 15 725 10 95 0 -13 30 25 -2 694 823 10 92 0 -14 15 10 -1 32 694 10 91 0 -15 30 5 8 176 299 10 0 9 -16 10 20 -16 102 543 10 38 0 -17 5 30 2 673 930 10 0 89 -18 20 40 12 229 582 10 0 21 -19 15 60 -9 95 552 10 52 0 -20 45 65 -10 418 829 10 51 0 -21 45 20 -12 18 727 10 18 0 -22 45 10 -9 349 554 10 99 0 -23 55 5 29 206 325 10 0 78 -24 65 35 -18 435 960 10 54 0 -25 65 20 -8 826 956 10 74 0 -26 45 30 -6 328 927 10 80 0 -27 35 40 16 44 315 10 0 48 -28 41 37 16 6 526 10 0 65 -29 64 42 -23 29 513 10 79 0 -30 40 60 21 199 414 10 0 11 -31 31 52 27 17 744 10 0 61 -32 35 69 -26 482 955 10 81 0 -33 53 52 11 24 299 10 0 58 -34 65 55 -25 265 878 10 66 0 -35 63 65 -18 626 873 10 75 0 -36 2 60 5 41 328 10 0 82 -37 20 20 -3 339 960 10 90 0 -38 5 5 16 298 409 10 0 16 -39 60 12 31 33 344 10 0 100 -40 40 25 -18 300 497 10 44 0 -41 42 7 5 336 571 10 0 77 -42 24 12 5 25 292 10 0 3 -43 23 3 -6 458 867 10 69 0 -44 11 14 18 230 343 10 0 40 -45 6 38 16 29 309 10 0 86 -46 2 48 1 338 805 10 0 8 -47 8 56 27 34 602 10 0 6 -48 13 52 -16 200 962 10 27 0 -49 6 68 -9 441 600 10 88 0 -50 47 47 -11 272 917 10 83 0 -51 49 58 10 176 625 10 0 20 -52 27 43 9 11 748 10 0 19 -53 37 31 14 403 500 10 0 72 -54 57 29 18 475 900 10 0 24 -55 63 23 -19 620 739 10 4 0 -56 53 12 6 525 752 0 0 101 -57 32 12 -15 246 705 10 71 0 -58 36 26 -11 854 980 10 33 0 -59 21 24 28 17 972 10 0 94 -60 17 34 -12 449 971 10 97 0 -61 12 24 -27 126 541 10 31 0 -62 24 58 19 168 297 10 0 84 -63 27 69 -16 34 588 10 10 0 -64 15 77 9 154 393 0 0 102 -65 62 77 -16 49 308 10 28 0 -66 49 73 25 532 753 10 0 34 -67 67 5 -10 291 404 10 98 0 -68 56 39 -13 577 812 10 76 0 -69 37 47 6 165 290 10 0 43 -70 37 56 -10 668 968 10 1 0 -71 57 68 15 98 537 10 0 57 -72 47 16 -14 22 915 10 53 0 -73 44 17 -26 143 564 10 87 0 -74 46 13 8 681 802 10 0 25 -75 49 11 18 27 711 10 0 35 -76 49 42 13 281 382 10 0 68 -77 53 43 -5 821 948 10 41 0 -78 61 52 -29 324 559 10 23 0 -79 57 48 23 377 476 10 0 29 -80 56 37 6 719 968 10 0 26 -81 55 54 26 268 599 10 0 32 -82 15 47 -5 23 761 10 36 0 -83 14 37 11 21 842 10 0 50 -84 11 31 -19 425 522 10 62 0 -85 16 22 41 110 727 10 0 2 -86 4 18 -16 230 623 10 45 0 -87 28 18 26 397 470 10 0 73 -88 26 52 9 219 448 10 0 49 -89 26 35 -2 409 981 10 17 0 -90 31 67 3 225 654 10 0 37 -91 15 19 1 222 964 10 0 14 -92 22 22 2 18 159 10 0 13 -93 18 24 22 691 969 10 0 5 -94 26 27 -28 190 749 10 59 0 -95 25 24 20 14 793 10 0 12 -96 22 27 -5 344 953 10 7 0 -97 25 21 12 462 823 10 0 60 -98 19 21 10 21 748 10 0 67 -99 20 26 9 328 437 10 0 22 -100 18 18 -31 821 965 10 39 0 -101 53 12 -6 525 752 10 56 0 -102 15 77 -9 154 393 10 64 0 diff --git a/jsprit-instances/instances/lilim/lr211.txt b/jsprit-instances/instances/lilim/lr211.txt deleted file mode 100644 index 05e722714..000000000 --- a/jsprit-instances/instances/lilim/lr211.txt +++ /dev/null @@ -1,102 +0,0 @@ -25 1000 1 -0 35 35 0 0 1000 0 0 0 -1 41 49 -14 451 974 10 34 0 -2 35 17 7 18 534 10 0 39 -3 55 45 -12 378 733 10 18 0 -4 55 20 19 477 965 10 0 68 -5 15 30 -9 20 610 10 8 0 -6 25 30 -5 245 684 10 36 0 -7 20 50 5 172 569 10 0 66 -8 10 43 9 245 640 10 0 5 -9 55 60 16 231 666 10 0 65 -10 30 60 16 430 779 10 0 60 -11 20 65 -6 33 511 10 69 0 -12 50 35 19 50 523 10 0 81 -13 30 25 23 462 978 10 0 26 -14 15 10 -9 32 694 10 52 0 -15 30 5 8 30 519 10 0 20 -16 10 20 19 102 543 10 0 44 -17 5 30 2 444 959 10 0 100 -18 20 40 12 229 582 10 0 3 -19 15 60 17 95 552 10 0 83 -20 45 65 -8 418 829 10 15 0 -21 45 20 11 36 509 10 0 75 -22 45 10 -16 246 657 10 38 0 -23 55 5 29 36 514 10 0 90 -24 65 35 -6 435 960 10 25 0 -25 65 20 6 438 956 10 0 24 -26 45 30 -23 428 827 10 13 0 -27 35 40 16 5 548 10 0 32 -28 41 37 16 6 526 10 0 61 -29 64 42 -13 29 513 10 76 0 -30 40 60 -10 91 522 10 51 0 -31 31 52 27 17 501 10 0 62 -32 35 69 -16 482 955 10 27 0 -33 53 52 -25 24 575 10 67 0 -34 65 55 14 367 776 10 0 1 -35 63 65 -7 453 948 10 43 0 -36 2 60 5 41 615 10 0 6 -37 20 20 8 443 856 10 0 58 -38 5 5 16 130 577 10 0 22 -39 60 12 -7 33 655 10 2 0 -40 40 25 -10 201 596 10 98 0 -41 42 7 -9 219 688 10 99 0 -42 24 12 5 25 560 10 0 73 -43 23 3 7 458 867 10 0 35 -44 11 14 -19 59 514 10 16 0 -45 6 38 16 29 589 10 0 84 -46 2 48 -27 338 805 10 47 0 -47 8 56 27 34 602 10 0 46 -48 13 52 36 454 962 10 0 97 -49 6 68 -9 362 679 10 64 0 -50 47 47 13 379 810 10 0 70 -51 49 58 10 176 625 10 0 30 -52 27 43 9 11 502 10 0 14 -53 37 31 -35 256 647 10 86 0 -54 57 29 -2 475 900 10 55 0 -55 63 23 2 441 918 10 0 54 -56 53 12 -8 412 865 10 74 0 -57 32 12 -9 246 705 10 88 0 -58 36 26 -8 479 980 10 37 0 -59 21 24 -27 17 681 10 94 0 -60 17 34 -16 449 971 10 10 0 -61 12 24 -16 126 541 10 28 0 -62 24 58 -27 25 544 10 31 0 -63 27 69 10 34 588 10 0 96 -64 15 77 9 46 524 10 0 49 -65 62 77 -16 49 568 10 9 0 -66 49 73 -5 421 864 10 7 0 -67 67 5 25 120 575 10 0 33 -68 56 39 -19 459 930 10 4 0 -69 37 47 6 12 513 10 0 11 -70 37 56 -13 368 968 10 50 0 -71 57 68 -25 98 537 10 72 0 -72 47 16 25 22 617 10 0 71 -73 44 17 -5 143 564 10 42 0 -74 46 13 8 482 965 10 0 56 -75 49 11 -11 62 519 10 21 0 -76 49 42 13 129 534 10 0 29 -77 53 43 -6 460 970 10 80 0 -78 61 52 3 207 676 10 0 93 -79 57 48 -20 230 623 10 95 0 -80 56 37 6 470 968 10 0 77 -81 55 54 -19 268 599 10 12 0 -82 15 47 16 23 515 10 0 92 -83 14 37 -17 21 568 10 19 0 -84 11 31 -16 278 669 10 45 0 -85 16 22 41 213 624 10 0 87 -86 4 18 35 230 623 10 0 53 -87 28 18 -41 287 580 10 85 0 -88 26 52 9 104 563 10 0 57 -89 26 35 -1 409 981 10 91 0 -90 31 67 -29 225 654 10 23 0 -91 15 19 1 469 964 10 0 89 -92 22 22 -16 18 585 10 82 0 -93 18 24 -3 414 969 10 78 0 -94 26 27 27 283 656 10 0 59 -95 25 24 20 14 533 10 0 79 -96 22 27 -10 445 852 10 63 0 -97 25 21 -36 462 823 10 48 0 -98 19 21 10 21 506 10 0 40 -99 20 26 9 164 601 10 0 41 -100 18 18 -2 391 965 10 17 0 diff --git a/jsprit-instances/instances/lilim/lrc101.txt b/jsprit-instances/instances/lilim/lrc101.txt deleted file mode 100644 index b2ecc4aa9..000000000 --- a/jsprit-instances/instances/lilim/lrc101.txt +++ /dev/null @@ -1,108 +0,0 @@ -25 200 1 -0 40 50 0 0 240 0 0 0 -1 25 85 20 145 175 0 0 105 -2 22 75 -10 50 80 10 45 0 -3 22 85 -10 109 139 10 8 0 -4 20 80 -20 141 171 10 5 0 -5 20 85 20 41 71 10 0 4 -6 18 75 -20 95 125 10 7 0 -7 15 75 20 79 109 10 0 6 -8 15 80 10 91 121 10 0 3 -9 10 35 20 91 121 10 0 13 -10 10 40 30 119 149 10 0 17 -11 8 40 40 59 89 10 0 15 -12 8 45 20 64 94 10 0 46 -13 5 35 -20 142 172 10 9 0 -14 5 45 10 35 65 10 0 47 -15 2 40 -40 58 88 10 11 0 -16 0 40 -9 72 102 10 82 0 -17 0 45 -30 149 179 10 10 0 -18 44 5 -40 87 117 10 19 0 -19 42 10 40 72 102 10 0 18 -20 42 15 -10 122 152 10 49 0 -21 40 5 -30 67 97 10 23 0 -22 40 15 40 92 122 10 0 24 -23 38 5 30 65 95 10 0 21 -24 38 15 -40 148 178 10 22 0 -25 35 5 20 154 184 0 0 101 -26 95 30 -10 115 145 10 28 0 -27 95 35 20 62 92 10 0 91 -28 92 30 10 62 92 10 0 26 -29 90 35 10 67 97 10 0 93 -30 88 30 10 74 104 10 0 32 -31 88 35 20 61 91 10 0 89 -32 87 30 -10 131 161 10 30 0 -33 85 25 10 51 81 10 0 34 -34 85 35 -10 111 141 10 33 0 -35 67 85 -30 139 169 10 40 0 -36 65 85 -8 43 73 10 72 0 -37 65 82 -20 124 154 10 41 0 -38 62 80 30 75 105 10 0 43 -39 60 80 10 37 67 10 0 54 -40 60 85 30 85 115 10 0 35 -41 58 75 20 92 122 10 0 37 -42 55 80 10 33 63 10 0 44 -43 55 85 -30 128 158 10 38 0 -44 55 82 -10 64 94 10 42 0 -45 20 82 10 37 67 10 0 2 -46 18 80 -20 113 143 10 12 0 -47 2 45 -10 45 75 10 14 0 -48 42 5 -14 151 181 10 83 0 -49 42 12 10 104 134 10 0 20 -50 72 35 30 116 146 10 0 80 -51 55 20 -6 83 113 10 63 0 -52 25 30 3 52 82 10 0 57 -53 20 50 5 91 121 10 0 100 -54 55 60 -10 139 169 10 39 0 -55 30 60 -30 140 170 10 79 0 -56 50 35 -6 130 160 10 90 0 -57 30 25 -3 96 126 10 52 0 -58 15 10 -16 152 182 10 75 0 -59 10 20 19 42 72 10 0 97 -60 15 60 17 155 185 10 0 70 -61 45 65 9 66 96 10 0 68 -62 65 35 3 52 82 10 0 94 -63 65 20 6 39 69 10 0 51 -64 45 30 17 53 83 0 0 103 -65 35 40 16 11 41 10 0 74 -66 41 37 -18 133 163 10 84 0 -67 64 42 9 70 100 10 0 71 -68 40 60 -9 144 174 10 61 0 -69 31 52 27 41 71 10 0 78 -70 35 69 -17 180 210 10 60 0 -71 65 55 -9 65 95 10 67 0 -72 63 65 8 30 60 10 0 36 -73 2 60 5 77 107 0 0 106 -74 20 20 -16 141 171 10 65 0 -75 5 5 16 74 104 10 0 58 -76 60 12 31 75 105 0 0 104 -77 23 3 -13 150 180 10 87 0 -78 8 56 -27 90 120 10 69 0 -79 6 68 30 89 119 10 0 55 -80 47 47 -30 192 222 10 50 0 -81 49 58 10 86 116 10 0 96 -82 27 43 9 42 72 10 0 16 -83 37 31 14 35 65 10 0 48 -84 57 29 18 96 126 10 0 66 -85 63 23 2 87 117 0 0 102 -86 21 24 -15 87 117 10 99 0 -87 12 24 13 90 120 10 0 77 -88 24 58 -9 67 97 10 98 0 -89 67 5 -20 144 174 10 31 0 -90 37 47 6 86 116 10 0 56 -91 49 42 -20 167 197 10 27 0 -92 53 43 14 14 44 10 0 95 -93 61 52 -10 178 208 10 29 0 -94 57 48 -3 95 125 10 62 0 -95 56 37 -14 34 64 10 92 0 -96 55 54 -10 132 162 10 81 0 -97 4 18 -19 120 150 10 59 0 -98 26 52 9 46 76 10 0 88 -99 26 35 15 77 107 10 0 86 -100 31 67 -5 180 210 10 53 0 -101 35 5 -20 154 184 10 25 0 -102 63 23 -2 87 117 10 85 0 -103 45 30 -17 53 83 10 64 0 -104 60 12 -31 75 105 10 76 0 -105 25 85 -20 145 175 10 1 0 -106 2 60 -5 77 107 10 73 0 diff --git a/jsprit-instances/instances/lilim/lrc102.txt b/jsprit-instances/instances/lilim/lrc102.txt deleted file mode 100644 index 0b320ce56..000000000 --- a/jsprit-instances/instances/lilim/lrc102.txt +++ /dev/null @@ -1,108 +0,0 @@ -25 200 1 -0 40 50 0 0 240 0 0 0 -1 25 85 -10 0 191 10 45 0 -2 22 75 30 0 199 10 0 3 -3 22 85 -30 0 190 10 2 0 -4 20 80 -10 141 171 10 46 0 -5 20 85 20 0 189 10 0 60 -6 18 75 20 95 125 10 0 98 -7 15 75 -30 0 194 10 79 0 -8 15 80 10 91 121 0 0 101 -9 10 35 -20 91 121 10 16 0 -10 10 40 -27 119 149 10 78 0 -11 8 40 40 59 89 10 0 73 -12 8 45 -10 0 197 10 13 0 -13 5 35 10 142 172 10 0 12 -14 5 45 10 35 65 10 0 15 -15 2 40 -10 58 88 10 14 0 -16 0 40 20 72 102 10 0 9 -17 0 45 -19 149 179 10 88 0 -18 44 5 -14 87 117 10 83 0 -19 42 10 40 72 102 10 0 23 -20 42 15 -40 122 152 10 22 0 -21 40 5 10 0 185 10 0 25 -22 40 15 40 92 122 10 0 20 -23 38 5 -40 65 95 10 19 0 -24 38 15 -10 148 178 10 49 0 -25 35 5 -10 154 184 10 21 0 -26 95 30 30 0 171 10 0 50 -27 95 35 -10 62 92 10 33 0 -28 92 30 10 62 92 10 0 31 -29 90 35 10 67 97 10 0 89 -30 88 30 -3 74 104 10 62 0 -31 88 35 -10 0 179 10 28 0 -32 87 30 10 131 161 0 0 103 -33 85 25 10 51 81 10 0 27 -34 85 35 30 0 182 10 0 93 -35 67 85 -30 139 169 10 40 0 -36 65 85 40 43 73 10 0 44 -37 65 82 -30 0 189 10 38 0 -38 62 80 30 75 105 10 0 37 -39 60 80 10 37 67 10 0 84 -40 60 85 30 85 115 10 0 35 -41 58 75 20 92 122 10 0 43 -42 55 80 10 33 63 10 0 68 -43 55 85 -20 128 158 10 41 0 -44 55 82 -40 64 94 10 36 0 -45 20 82 10 37 67 10 0 1 -46 18 80 10 113 143 10 0 4 -47 2 45 10 45 75 10 0 97 -48 42 5 -16 0 184 10 65 0 -49 42 12 10 104 134 10 0 24 -50 72 35 -30 0 194 10 26 0 -51 55 20 -31 83 113 10 76 0 -52 25 30 -19 0 205 10 59 0 -53 20 50 -27 91 121 10 69 0 -54 55 60 -10 139 169 10 81 0 -55 30 60 -9 140 170 10 82 0 -56 50 35 19 130 160 10 0 66 -57 30 25 -13 96 126 10 91 0 -58 15 10 -13 152 182 10 87 0 -59 10 20 19 0 187 10 0 52 -60 15 60 -20 155 185 10 5 0 -61 45 65 9 66 96 10 0 90 -62 65 35 3 52 82 10 0 30 -63 65 20 -2 39 69 10 85 0 -64 45 30 17 53 83 10 0 86 -65 35 40 16 11 41 10 0 48 -66 41 37 -19 133 163 10 56 0 -67 64 42 -14 70 100 10 71 0 -68 40 60 -10 144 174 10 42 0 -69 31 52 27 41 71 10 0 53 -70 35 69 -3 180 210 10 100 0 -71 65 55 14 65 95 10 0 67 -72 63 65 8 0 202 0 0 104 -73 2 60 -40 77 107 10 11 0 -74 20 20 -15 141 171 10 99 0 -75 5 5 16 0 172 0 0 102 -76 60 12 31 75 105 10 0 51 -77 23 3 7 150 180 0 0 105 -78 8 56 27 90 120 10 0 10 -79 6 68 30 89 119 10 0 7 -80 47 47 -23 192 222 10 94 0 -81 49 58 10 86 116 10 0 54 -82 27 43 9 0 215 10 0 55 -83 37 31 14 0 210 10 0 18 -84 57 29 -10 96 126 10 39 0 -85 63 23 2 0 194 10 0 63 -86 21 24 -17 87 117 10 64 0 -87 12 24 13 90 120 10 0 58 -88 24 58 19 67 97 10 0 17 -89 67 5 -10 144 174 10 29 0 -90 37 47 -9 86 116 10 61 0 -91 49 42 13 0 217 10 0 57 -92 53 43 14 14 44 10 0 95 -93 61 52 -30 178 208 10 34 0 -94 57 48 23 0 212 10 0 80 -95 56 37 -14 0 209 10 92 0 -96 55 54 26 0 214 0 0 106 -97 4 18 -10 120 150 10 47 0 -98 26 52 -20 0 215 10 6 0 -99 26 35 15 77 107 10 0 74 -100 31 67 3 180 210 10 0 70 -101 15 80 -10 91 121 10 8 0 -102 5 5 -16 0 172 10 75 0 -103 87 30 -10 131 161 10 32 0 -104 63 65 -8 0 202 10 72 0 -105 23 3 -7 150 180 10 77 0 -106 55 54 -26 0 214 10 96 0 diff --git a/jsprit-instances/instances/lilim/lrc103.txt b/jsprit-instances/instances/lilim/lrc103.txt deleted file mode 100644 index cae795af3..000000000 --- a/jsprit-instances/instances/lilim/lrc103.txt +++ /dev/null @@ -1,108 +0,0 @@ -25 200 1 -0 40 50 0 0 240 0 0 0 -1 25 85 20 0 191 10 0 3 -2 22 75 30 0 199 10 0 5 -3 22 85 -20 0 190 10 1 0 -4 20 80 -27 141 171 10 78 0 -5 20 85 -30 0 189 10 2 0 -6 18 75 20 95 125 10 0 55 -7 15 75 20 0 194 10 0 46 -8 15 80 -10 91 121 10 45 0 -9 10 35 20 91 121 10 0 87 -10 10 40 30 119 149 10 0 13 -11 8 40 -10 59 89 10 14 0 -12 8 45 20 0 197 10 0 17 -13 5 35 -30 142 172 10 10 0 -14 5 45 10 0 194 10 0 11 -15 2 40 -9 58 88 10 82 0 -16 0 40 -5 0 188 10 53 0 -17 0 45 -20 149 179 10 12 0 -18 44 5 20 0 184 10 0 23 -19 42 10 -40 0 189 10 22 0 -20 42 15 10 0 194 10 0 48 -21 40 5 10 0 185 10 0 49 -22 40 15 40 92 122 10 0 19 -23 38 5 -20 65 95 10 18 0 -24 38 15 -20 0 194 10 25 0 -25 35 5 20 154 184 10 0 24 -26 95 30 -10 0 171 10 32 0 -27 95 35 20 62 92 10 0 30 -28 92 30 10 0 174 0 0 102 -29 90 35 10 0 177 10 0 34 -30 88 30 -20 74 104 10 27 0 -31 88 35 -10 0 179 10 33 0 -32 87 30 10 0 178 10 0 26 -33 85 25 10 51 81 10 0 31 -34 85 35 -10 0 182 10 29 0 -35 67 85 -10 139 169 10 39 0 -36 65 85 40 43 73 10 0 37 -37 65 82 -40 0 189 10 36 0 -38 62 80 -10 75 105 10 44 0 -39 60 80 10 37 67 10 0 35 -40 60 85 30 85 115 10 0 93 -41 58 75 20 92 122 10 0 72 -42 55 80 -9 33 63 10 61 0 -43 55 85 20 0 191 10 0 80 -44 55 82 10 64 94 10 0 38 -45 20 82 10 37 67 10 0 8 -46 18 80 -20 0 192 10 7 0 -47 2 45 10 0 191 0 0 104 -48 42 5 -10 0 184 10 20 0 -49 42 12 -10 104 134 10 21 0 -50 72 35 30 0 194 10 0 67 -51 55 20 19 0 196 10 0 63 -52 25 30 -8 0 205 10 74 0 -53 20 50 5 91 121 10 0 16 -54 55 60 16 0 211 0 0 103 -55 30 60 -20 140 170 10 6 0 -56 50 35 19 130 160 10 0 66 -57 30 25 23 0 203 0 0 101 -58 15 10 -35 152 182 10 97 0 -59 10 20 19 0 187 10 0 86 -60 15 60 -9 0 203 10 98 0 -61 45 65 9 0 214 10 0 42 -62 65 35 -14 52 82 10 92 0 -63 65 20 -19 0 190 10 51 0 -64 45 30 -16 53 83 10 65 0 -65 35 40 16 11 41 10 0 64 -66 41 37 -19 133 163 10 56 0 -67 64 42 -30 70 100 10 50 0 -68 40 60 21 144 174 0 0 105 -69 31 52 27 41 71 10 0 88 -70 35 69 -3 180 210 10 100 0 -71 65 55 14 0 204 10 0 94 -72 63 65 -20 0 202 10 41 0 -73 2 60 5 0 190 10 0 79 -74 20 20 8 141 171 10 0 52 -75 5 5 16 0 172 10 0 77 -76 60 12 31 75 105 10 0 85 -77 23 3 -16 150 180 10 75 0 -78 8 56 27 90 120 10 0 4 -79 6 68 -5 89 119 10 73 0 -80 47 47 -20 192 222 10 43 0 -81 49 58 10 0 217 10 0 96 -82 27 43 9 0 215 10 0 15 -83 37 31 14 0 210 10 0 89 -84 57 29 18 96 126 0 0 106 -85 63 23 -31 0 194 10 76 0 -86 21 24 -19 0 197 10 59 0 -87 12 24 -20 90 120 10 9 0 -88 24 58 -27 67 97 10 69 0 -89 67 5 -14 0 177 10 83 0 -90 37 47 6 0 225 10 0 99 -91 49 42 -6 0 217 10 95 0 -92 53 43 14 14 44 10 0 62 -93 61 52 -30 178 208 10 40 0 -94 57 48 -14 0 212 10 71 0 -95 56 37 6 0 209 10 0 91 -96 55 54 -10 0 214 10 81 0 -97 4 18 35 0 181 10 0 58 -98 26 52 9 0 215 10 0 60 -99 26 35 -6 77 107 10 90 0 -100 31 67 3 180 210 10 0 70 -101 30 25 -23 0 203 10 57 0 -102 92 30 -10 0 174 10 28 0 -103 55 60 -16 0 211 10 54 0 -104 2 45 -10 0 191 10 47 0 -105 40 60 -21 144 174 10 68 0 -106 57 29 -18 96 126 10 84 0 diff --git a/jsprit-instances/instances/lilim/lrc104.txt b/jsprit-instances/instances/lilim/lrc104.txt deleted file mode 100644 index a2827feac..000000000 --- a/jsprit-instances/instances/lilim/lrc104.txt +++ /dev/null @@ -1,110 +0,0 @@ -25 200 1 -0 40 50 0 0 240 0 0 0 -1 25 85 -23 0 191 10 70 0 -2 22 75 -20 0 199 10 7 0 -3 22 85 -9 0 190 10 61 0 -4 20 80 -10 141 171 10 46 0 -5 20 85 20 0 189 10 0 100 -6 18 75 -5 0 196 10 73 0 -7 15 75 20 0 194 10 0 2 -8 15 80 10 91 121 10 0 68 -9 10 35 20 91 121 10 0 86 -10 10 40 -20 0 198 10 16 0 -11 8 40 -10 59 89 10 47 0 -12 8 45 20 0 197 10 0 82 -13 5 35 10 142 172 0 0 108 -14 5 45 10 0 194 10 0 15 -15 2 40 -10 58 88 10 14 0 -16 0 40 20 0 188 10 0 10 -17 0 45 -9 0 189 10 98 0 -18 44 5 -10 0 184 10 21 0 -19 42 10 40 0 189 10 0 48 -20 42 15 10 0 194 10 0 22 -21 40 5 10 0 185 10 0 18 -22 40 15 -10 0 195 10 20 0 -23 38 5 -10 65 95 10 49 0 -24 38 15 -20 0 194 10 25 0 -25 35 5 20 154 184 10 0 24 -26 95 30 30 0 171 10 0 31 -27 95 35 20 0 172 10 0 29 -28 92 30 -10 0 174 10 33 0 -29 90 35 -20 0 177 10 27 0 -30 88 30 10 0 178 10 0 34 -31 88 35 -30 0 179 10 26 0 -32 87 30 10 0 178 0 0 107 -33 85 25 10 0 178 10 0 28 -34 85 35 -10 0 182 10 30 0 -35 67 85 20 0 185 10 0 41 -36 65 85 -20 0 186 10 43 0 -37 65 82 -10 0 189 10 42 0 -38 62 80 -10 75 105 10 44 0 -39 60 80 -30 0 193 10 40 0 -40 60 85 30 0 189 10 0 39 -41 58 75 -20 0 199 10 35 0 -42 55 80 10 0 196 10 0 37 -43 55 85 20 0 191 10 0 36 -44 55 82 10 64 94 10 0 38 -45 20 82 10 0 192 0 0 101 -46 18 80 10 0 192 10 0 4 -47 2 45 10 0 191 10 0 11 -48 42 5 -40 0 184 10 19 0 -49 42 12 10 0 191 10 0 23 -50 72 35 -14 0 194 10 92 0 -51 55 20 -18 0 196 10 84 0 -52 25 30 -23 0 205 10 57 0 -53 20 50 -27 91 121 10 69 0 -54 55 60 -8 0 211 10 72 0 -55 30 60 16 140 170 0 0 104 -56 50 35 -13 0 211 10 80 0 -57 30 25 23 0 203 10 0 52 -58 15 10 20 152 182 0 0 103 -59 10 20 -13 0 187 10 87 0 -60 15 60 -19 0 203 10 88 0 -61 45 65 9 0 214 10 0 3 -62 65 35 3 52 82 10 0 71 -63 65 20 6 0 190 10 0 64 -64 45 30 -6 0 209 10 63 0 -65 35 40 -6 0 218 10 90 0 -66 41 37 16 0 216 0 0 106 -67 64 42 9 70 100 10 0 81 -68 40 60 -10 0 220 10 8 0 -69 31 52 27 41 71 10 0 53 -70 35 69 23 0 210 10 0 1 -71 65 55 -3 0 204 10 62 0 -72 63 65 8 0 202 10 0 54 -73 2 60 5 0 190 10 0 6 -74 20 20 8 141 171 0 0 102 -75 5 5 -15 0 172 10 99 0 -76 60 12 31 75 105 10 0 83 -77 23 3 -35 150 180 10 97 0 -78 8 56 27 0 197 10 0 79 -79 6 68 -27 89 119 10 78 0 -80 47 47 13 0 222 10 0 56 -81 49 58 -9 0 217 10 67 0 -82 27 43 -20 0 215 10 12 0 -83 37 31 -31 0 210 10 76 0 -84 57 29 18 96 126 10 0 51 -85 63 23 2 0 194 10 0 89 -86 21 24 -20 0 197 10 9 0 -87 12 24 13 90 120 10 0 59 -88 24 58 19 0 212 10 0 60 -89 67 5 -2 0 177 10 85 0 -90 37 47 6 0 225 10 0 65 -91 49 42 13 0 217 10 0 93 -92 53 43 14 14 44 10 0 50 -93 61 52 -13 0 208 10 91 0 -94 57 48 23 0 212 0 0 105 -95 56 37 6 0 209 10 0 96 -96 55 54 -6 0 214 10 95 0 -97 4 18 35 0 181 10 0 77 -98 26 52 9 0 215 10 0 17 -99 26 35 15 77 107 10 0 75 -100 31 67 -20 180 210 10 5 0 -101 20 82 -10 0 192 10 45 0 -102 20 20 -8 141 171 10 74 0 -103 15 10 -20 152 182 10 58 0 -104 30 60 -16 140 170 10 55 0 -105 57 48 -23 0 212 10 94 0 -106 41 37 -16 0 216 10 66 0 -107 87 30 -10 0 178 10 32 0 -108 5 35 -10 142 172 10 13 0 diff --git a/jsprit-instances/instances/lilim/lrc105.txt b/jsprit-instances/instances/lilim/lrc105.txt deleted file mode 100644 index 97a21f25c..000000000 --- a/jsprit-instances/instances/lilim/lrc105.txt +++ /dev/null @@ -1,110 +0,0 @@ -25 200 1 -0 40 50 0 0 240 0 0 0 -1 25 85 20 71 191 10 0 100 -2 22 75 30 30 150 10 0 5 -3 22 85 -20 64 184 10 6 0 -4 20 80 40 151 161 0 0 107 -5 20 85 -30 40 160 10 2 0 -6 18 75 20 96 123 10 0 3 -7 15 75 20 35 155 10 0 68 -8 15 80 10 101 111 10 0 46 -9 10 35 -40 101 111 10 11 0 -10 10 40 30 123 144 10 0 17 -11 8 40 40 69 79 10 0 9 -12 8 45 -9 32 152 10 82 0 -13 5 35 -10 152 162 10 14 0 -14 5 45 10 35 117 10 0 13 -15 2 40 20 68 78 10 0 97 -16 0 40 20 59 114 0 0 103 -17 0 45 -30 147 180 10 10 0 -18 44 5 20 79 124 10 0 25 -19 42 10 40 58 115 10 0 20 -20 42 15 -40 111 162 10 19 0 -21 40 5 -10 45 165 10 48 0 -22 40 15 -16 94 119 10 65 0 -23 38 5 -14 75 85 10 83 0 -24 38 15 10 128 194 0 0 105 -25 35 5 -20 171 181 10 18 0 -26 95 30 30 58 171 10 0 30 -27 95 35 20 60 93 10 0 50 -28 92 30 -10 55 120 10 29 0 -29 90 35 10 52 112 10 0 28 -30 88 30 -30 75 102 10 26 0 -31 88 35 20 50 170 10 0 34 -32 87 30 10 116 175 10 0 80 -33 85 25 10 51 85 10 0 76 -34 85 35 -20 62 182 10 31 0 -35 67 85 20 138 169 0 0 104 -36 65 85 40 43 78 10 0 37 -37 65 82 -40 69 189 10 36 0 -38 62 80 30 85 95 10 0 43 -39 60 80 10 36 74 10 0 40 -40 60 85 -10 87 112 10 39 0 -41 58 75 20 92 121 10 0 96 -42 55 80 10 33 66 10 0 61 -43 55 85 -30 117 168 10 38 0 -44 55 82 10 74 84 10 0 70 -45 20 82 10 37 72 10 0 79 -46 18 80 -10 98 157 10 8 0 -47 2 45 -9 38 109 10 98 0 -48 42 5 10 64 184 10 0 21 -49 42 12 10 109 128 10 0 77 -50 72 35 -20 71 191 10 27 0 -51 55 20 -6 69 126 10 63 0 -52 25 30 -17 25 145 10 64 0 -53 20 50 -6 101 111 10 90 0 -54 55 60 16 127 180 10 0 93 -55 30 60 16 150 160 0 0 101 -56 50 35 -16 130 159 10 66 0 -57 30 25 -6 82 139 10 95 0 -58 15 10 -19 172 182 10 59 0 -59 10 20 19 42 162 10 0 58 -60 15 60 -5 137 202 10 73 0 -61 45 65 -10 55 106 10 42 0 -62 65 35 3 62 72 10 0 84 -63 65 20 6 39 108 10 0 51 -64 45 30 17 53 82 10 0 52 -65 35 40 16 11 43 10 0 22 -66 41 37 16 134 161 10 0 56 -67 64 42 9 80 90 10 0 85 -68 40 60 -20 144 173 10 7 0 -69 31 52 27 51 61 10 0 88 -70 35 69 -10 172 210 10 44 0 -71 65 55 14 52 107 10 0 81 -72 63 65 8 27 147 10 0 94 -73 2 60 5 65 118 10 0 60 -74 20 20 -15 151 161 10 99 0 -75 5 5 -13 57 172 10 87 0 -76 60 12 -10 85 95 10 33 0 -77 23 3 -10 163 173 10 49 0 -78 8 56 27 90 119 0 0 108 -79 6 68 -10 99 109 10 45 0 -80 47 47 -10 190 222 10 32 0 -81 49 58 -14 80 121 10 71 0 -82 27 43 9 14 134 10 0 12 -83 37 31 14 19 139 10 0 23 -84 57 29 -3 106 116 10 62 0 -85 63 23 -9 42 162 10 67 0 -86 21 24 -14 77 126 10 92 0 -87 12 24 13 100 110 10 0 75 -88 24 58 -27 67 96 10 69 0 -89 67 5 25 105 177 0 0 102 -90 37 47 6 74 127 10 0 53 -91 49 42 13 97 217 0 0 106 -92 53 43 14 15 25 10 0 86 -93 61 52 -16 173 208 10 54 0 -94 57 48 -8 50 170 10 72 0 -95 56 37 6 20 140 10 0 57 -96 55 54 -20 87 207 10 41 0 -97 4 18 -20 112 157 10 15 0 -98 26 52 9 14 134 10 0 47 -99 26 35 15 87 97 10 0 74 -100 31 67 -20 200 210 10 1 0 -101 30 60 -16 150 160 10 55 0 -102 67 5 -25 105 177 10 89 0 -103 0 40 -20 59 114 10 16 0 -104 67 85 -20 138 169 10 35 0 -105 38 15 -10 128 194 10 24 0 -106 49 42 -13 97 217 10 91 0 -107 20 80 -40 151 161 10 4 0 -108 8 56 -27 90 119 10 78 0 diff --git a/jsprit-instances/instances/lilim/lrc106.txt b/jsprit-instances/instances/lilim/lrc106.txt deleted file mode 100644 index 65c384438..000000000 --- a/jsprit-instances/instances/lilim/lrc106.txt +++ /dev/null @@ -1,108 +0,0 @@ -25 200 1 -0 40 50 0 0 240 0 0 0 -1 25 85 20 130 190 0 0 104 -2 22 75 30 35 95 10 0 5 -3 22 85 -10 94 154 10 46 0 -4 20 80 -10 126 186 10 45 0 -5 20 85 -30 40 100 10 2 0 -6 18 75 20 80 140 10 0 100 -7 15 75 -10 64 124 10 8 0 -8 15 80 10 76 136 10 0 7 -9 10 35 20 76 136 10 0 17 -10 10 40 -5 104 164 10 53 0 -11 8 40 40 44 104 10 0 58 -12 8 45 20 49 109 0 0 103 -13 5 35 -27 127 187 10 69 0 -14 5 45 10 35 95 10 0 74 -15 2 40 20 43 103 10 0 16 -16 0 40 -20 57 117 10 15 0 -17 0 45 -20 129 189 10 9 0 -18 44 5 20 72 132 10 0 48 -19 42 10 -17 57 117 10 64 0 -20 42 15 -28 107 167 10 86 0 -21 40 5 -14 52 112 10 83 0 -22 40 15 -23 77 137 10 57 0 -23 38 5 -16 50 110 10 65 0 -24 38 15 10 133 193 10 0 91 -25 35 5 20 124 184 10 0 77 -26 95 30 30 100 160 0 0 101 -27 95 35 20 57 117 10 0 28 -28 92 30 -20 55 115 10 27 0 -29 90 35 -20 52 112 10 31 0 -30 88 30 10 59 119 10 0 93 -31 88 35 20 50 110 10 0 29 -32 87 30 -9 116 176 10 67 0 -33 85 25 10 51 111 10 0 89 -34 85 35 30 96 156 10 0 50 -35 67 85 -10 124 184 10 37 0 -36 65 85 40 43 103 10 0 43 -37 65 82 10 109 169 10 0 35 -38 62 80 -10 60 120 10 44 0 -39 60 80 -10 36 96 10 42 0 -40 60 85 30 70 130 10 0 41 -41 58 75 -30 77 137 10 40 0 -42 55 80 10 33 93 10 0 39 -43 55 85 -40 113 173 10 36 0 -44 55 82 10 49 109 10 0 38 -45 20 82 10 37 97 10 0 4 -46 18 80 10 98 158 10 0 3 -47 2 45 10 38 98 10 0 78 -48 42 5 -20 124 184 10 18 0 -49 42 12 -15 89 149 10 99 0 -50 72 35 -30 101 161 10 34 0 -51 55 20 19 68 128 0 0 102 -52 25 30 -9 37 97 10 82 0 -53 20 50 5 76 136 10 0 10 -54 55 60 16 124 184 10 0 68 -55 30 60 16 125 185 0 0 106 -56 50 35 -31 115 175 10 76 0 -57 30 25 23 81 141 10 0 22 -58 15 10 -40 122 182 10 11 0 -59 10 20 19 42 102 10 0 97 -60 15 60 17 140 200 10 0 70 -61 45 65 9 51 111 10 0 81 -62 65 35 -6 37 97 10 95 0 -63 65 20 6 39 99 10 0 66 -64 45 30 17 38 98 10 0 19 -65 35 40 16 11 71 10 0 23 -66 41 37 -6 118 178 10 63 0 -67 64 42 9 55 115 10 0 32 -68 40 60 -16 129 189 10 54 0 -69 31 52 27 26 86 10 0 13 -70 35 69 -17 150 210 10 60 0 -71 65 55 -8 50 110 10 72 0 -72 63 65 8 27 87 10 0 71 -73 2 60 5 62 122 10 0 79 -74 20 20 -10 126 186 10 14 0 -75 5 5 -13 59 119 10 87 0 -76 60 12 31 60 120 10 0 56 -77 23 3 -20 120 180 10 25 0 -78 8 56 -10 75 135 10 47 0 -79 6 68 -5 74 134 10 73 0 -80 47 47 13 162 222 0 0 105 -81 49 58 -9 71 131 10 61 0 -82 27 43 9 27 87 10 0 52 -83 37 31 14 20 80 10 0 21 -84 57 29 -2 81 141 10 85 0 -85 63 23 2 72 132 10 0 84 -86 21 24 28 72 132 10 0 20 -87 12 24 13 75 135 10 0 75 -88 24 58 -9 52 112 10 98 0 -89 67 5 -10 117 177 10 33 0 -90 37 47 6 71 131 10 0 94 -91 49 42 -10 152 212 10 24 0 -92 53 43 14 14 74 10 0 96 -93 61 52 -10 148 208 10 30 0 -94 57 48 -6 80 140 10 90 0 -95 56 37 6 20 80 10 0 62 -96 55 54 -14 117 177 10 92 0 -97 4 18 -19 105 165 10 59 0 -98 26 52 9 31 91 10 0 88 -99 26 35 15 62 122 10 0 49 -100 31 67 -20 150 210 10 6 0 -101 95 30 -30 100 160 10 26 0 -102 55 20 -19 68 128 10 51 0 -103 8 45 -20 49 109 10 12 0 -104 25 85 -20 130 190 10 1 0 -105 47 47 -13 162 222 10 80 0 -106 30 60 -16 125 185 10 55 0 diff --git a/jsprit-instances/instances/lilim/lrc107.txt b/jsprit-instances/instances/lilim/lrc107.txt deleted file mode 100644 index d48a83b0a..000000000 --- a/jsprit-instances/instances/lilim/lrc107.txt +++ /dev/null @@ -1,108 +0,0 @@ -25 200 1 -0 40 50 0 0 240 0 0 0 -1 25 85 20 125 191 10 0 46 -2 22 75 30 32 97 10 0 6 -3 22 85 -10 101 146 10 8 0 -4 20 80 40 71 193 10 0 100 -5 20 85 20 40 113 10 0 45 -6 18 75 -30 55 164 10 2 0 -7 15 75 20 69 118 0 0 103 -8 15 80 10 56 155 10 0 3 -9 10 35 -10 51 160 10 47 0 -10 10 40 -20 90 177 10 17 0 -11 8 40 40 33 152 10 0 15 -12 8 45 20 49 108 10 0 13 -13 5 35 -20 62 191 10 12 0 -14 5 45 10 35 117 10 0 16 -15 2 40 -40 39 161 10 11 0 -16 0 40 -10 59 114 10 14 0 -17 0 45 20 60 189 10 0 10 -18 44 5 20 79 124 10 0 48 -19 42 10 40 58 115 10 0 20 -20 42 15 -40 111 162 10 19 0 -21 40 5 10 52 111 10 0 56 -22 40 15 40 55 158 10 0 66 -23 38 5 30 45 164 10 0 49 -24 38 15 -3 128 194 10 52 0 -25 35 5 -17 54 184 10 64 0 -26 95 30 30 105 154 10 0 30 -27 95 35 20 57 172 10 0 32 -28 92 30 10 55 120 10 0 34 -29 90 35 -20 52 112 10 31 0 -30 88 30 -30 52 159 10 26 0 -31 88 35 20 50 110 10 0 29 -32 87 30 -20 116 175 10 27 0 -33 85 25 10 51 178 0 0 101 -34 85 35 -10 100 151 10 28 0 -35 67 85 20 61 185 10 0 36 -36 65 85 -20 43 186 10 35 0 -37 65 82 -10 113 164 10 39 0 -38 62 80 30 37 148 10 0 44 -39 60 80 10 36 191 10 0 37 -40 60 85 -10 50 149 10 42 0 -41 58 75 20 48 165 10 0 43 -42 55 80 10 33 166 10 0 40 -43 55 85 -20 117 168 10 41 0 -44 55 82 -30 35 148 10 38 0 -45 20 82 -20 37 177 10 5 0 -46 18 80 -20 98 157 10 1 0 -47 2 45 10 38 109 10 0 9 -48 42 5 -20 120 184 10 18 0 -49 42 12 -30 79 158 10 23 0 -50 72 35 30 104 157 10 0 96 -51 55 20 19 69 126 10 0 80 -52 25 30 3 36 97 10 0 24 -53 20 50 -19 57 154 10 88 0 -54 55 60 -23 127 180 10 94 0 -55 30 60 16 95 214 0 0 104 -56 50 35 -10 88 201 10 21 0 -57 30 25 -16 82 139 10 65 0 -58 15 10 -16 56 182 10 75 0 -59 10 20 -13 42 125 10 87 0 -60 15 60 17 137 202 10 0 68 -61 45 65 9 55 106 10 0 90 -62 65 35 3 29 158 10 0 76 -63 65 20 6 39 108 10 0 89 -64 45 30 17 20 139 10 0 25 -65 35 40 16 11 140 10 0 57 -66 41 37 -40 92 203 10 22 0 -67 64 42 -14 28 141 10 71 0 -68 40 60 -17 100 217 10 60 0 -69 31 52 27 9 134 10 0 79 -70 35 69 -5 60 210 10 73 0 -71 65 55 14 52 107 10 0 67 -72 63 65 8 27 101 10 0 93 -73 2 60 5 65 118 10 0 70 -74 20 20 8 72 193 0 0 105 -75 5 5 16 60 117 10 0 58 -76 60 12 -3 42 143 10 62 0 -77 23 3 -35 52 180 10 97 0 -78 8 56 -9 46 163 10 98 0 -79 6 68 -27 54 153 10 69 0 -80 47 47 -19 97 222 10 51 0 -81 49 58 10 80 121 0 0 106 -82 27 43 9 26 87 10 0 99 -83 37 31 14 19 87 10 0 86 -84 57 29 -6 62 159 10 95 0 -85 63 23 -14 76 127 10 92 0 -86 21 24 -14 77 126 10 83 0 -87 12 24 13 68 141 10 0 59 -88 24 58 19 24 139 10 0 53 -89 67 5 -6 105 177 10 63 0 -90 37 47 -9 74 127 10 61 0 -91 49 42 13 151 212 0 0 102 -92 53 43 14 14 155 10 0 85 -93 61 52 -8 69 208 10 72 0 -94 57 48 23 86 133 10 0 54 -95 56 37 6 20 84 10 0 84 -96 55 54 -30 121 172 10 50 0 -97 4 18 35 112 157 10 0 77 -98 26 52 9 30 91 10 0 78 -99 26 35 -9 37 146 10 82 0 -100 31 67 -40 66 210 10 4 0 -101 85 25 -10 51 178 10 33 0 -102 49 42 -13 151 212 10 91 0 -103 15 75 -20 69 118 10 7 0 -104 30 60 -16 95 214 10 55 0 -105 20 20 -8 72 193 10 74 0 -106 49 58 -10 80 121 10 81 0 diff --git a/jsprit-instances/instances/lilim/lrc108.txt b/jsprit-instances/instances/lilim/lrc108.txt deleted file mode 100644 index 28e1eaa1f..000000000 --- a/jsprit-instances/instances/lilim/lrc108.txt +++ /dev/null @@ -1,106 +0,0 @@ -25 200 1 -0 40 50 0 0 240 0 0 0 -1 25 85 20 49 191 0 0 103 -2 22 75 -20 30 168 10 6 0 -3 22 85 10 95 152 10 0 4 -4 20 80 -10 69 193 10 3 0 -5 20 85 20 40 189 10 0 45 -6 18 75 20 60 159 10 0 2 -7 15 75 20 54 133 0 0 104 -8 15 80 -30 67 144 10 79 0 -9 10 35 -10 57 154 10 14 0 -10 10 40 -20 106 161 10 15 0 -11 8 40 -20 33 152 10 16 0 -12 8 45 20 32 148 10 0 17 -13 5 35 -10 53 191 10 47 0 -14 5 45 10 35 194 10 0 9 -15 2 40 20 39 163 10 0 10 -16 0 40 20 41 141 10 0 11 -17 0 45 -20 51 189 10 12 0 -18 44 5 -19 73 130 10 51 0 -19 42 10 -31 40 148 10 76 0 -20 42 15 10 94 179 0 0 101 -21 40 5 -10 45 161 10 24 0 -22 40 15 40 64 149 10 0 23 -23 38 5 -40 45 164 10 22 0 -24 38 15 10 51 194 10 0 21 -25 35 5 20 45 183 10 0 77 -26 95 30 30 90 169 10 0 93 -27 95 35 20 57 172 10 0 31 -28 92 30 -10 55 174 10 33 0 -29 90 35 10 52 174 10 0 34 -30 88 30 -10 52 147 10 32 0 -31 88 35 -20 50 172 10 27 0 -32 87 30 10 61 178 10 0 30 -33 85 25 10 51 178 10 0 28 -34 85 35 -10 83 168 10 29 0 -35 67 85 -30 57 185 10 40 0 -36 65 85 -10 43 186 10 42 0 -37 65 82 -20 95 182 10 43 0 -38 62 80 30 38 141 10 0 39 -39 60 80 -30 36 193 10 38 0 -40 60 85 30 61 138 10 0 35 -41 58 75 20 49 164 10 0 44 -42 55 80 10 33 180 10 0 36 -43 55 85 20 100 185 10 0 37 -44 55 82 -20 35 142 10 41 0 -45 20 82 -20 37 192 10 5 0 -46 18 80 -5 71 184 10 73 0 -47 2 45 10 38 191 10 0 13 -48 42 5 10 50 184 10 0 66 -49 42 12 -14 99 138 10 83 0 -50 72 35 30 83 178 10 0 56 -51 55 20 19 45 150 10 0 18 -52 25 30 3 25 150 10 0 59 -53 20 50 5 68 143 10 0 60 -54 55 60 16 107 200 10 0 96 -55 30 60 -6 95 214 10 90 0 -56 50 35 -30 91 198 10 50 0 -57 30 25 -16 56 165 10 65 0 -58 15 10 20 51 182 10 0 74 -59 10 20 -3 42 187 10 52 0 -60 15 60 -5 62 203 10 53 0 -61 45 65 9 37 124 10 0 94 -62 65 35 -9 29 168 10 67 0 -63 65 20 6 39 190 10 0 91 -64 45 30 17 20 139 10 0 89 -65 35 40 16 11 150 10 0 57 -66 41 37 -10 97 198 10 48 0 -67 64 42 9 31 138 10 0 62 -68 40 60 -27 101 216 10 69 0 -69 31 52 27 9 139 10 0 68 -70 35 69 23 30 210 10 0 100 -71 65 55 14 30 129 10 0 72 -72 63 65 -14 27 202 10 71 0 -73 2 60 5 46 137 10 0 46 -74 20 20 -20 71 193 10 58 0 -75 5 5 -35 57 165 10 97 0 -76 60 12 31 48 131 10 0 19 -77 23 3 -20 49 180 10 25 0 -78 8 56 -9 47 162 10 98 0 -79 6 68 30 65 142 10 0 8 -80 47 47 -18 93 222 10 84 0 -81 49 58 -19 78 123 10 88 0 -82 27 43 9 14 140 10 0 86 -83 37 31 14 19 172 10 0 49 -84 57 29 18 73 148 10 0 80 -85 63 23 -14 59 144 10 92 0 -86 21 24 -9 63 140 10 82 0 -87 12 24 -15 91 118 10 99 0 -88 24 58 19 27 136 10 0 81 -89 67 5 -17 52 177 10 64 0 -90 37 47 6 53 148 10 0 55 -91 49 42 -6 89 217 10 63 0 -92 53 43 14 14 177 10 0 85 -93 61 52 -30 50 208 10 26 0 -94 57 48 -9 76 143 10 61 0 -95 56 37 6 20 159 0 0 102 -96 55 54 -16 105 188 10 54 0 -97 4 18 35 104 165 10 0 75 -98 26 52 9 14 136 10 0 78 -99 26 35 15 42 141 10 0 87 -100 31 67 -23 43 210 10 70 0 -101 42 15 -10 94 179 10 20 0 -102 56 37 -6 20 159 10 95 0 -103 25 85 -20 49 191 10 1 0 -104 15 75 -20 54 133 10 7 0 diff --git a/jsprit-instances/instances/lilim/lrc201.txt b/jsprit-instances/instances/lilim/lrc201.txt deleted file mode 100644 index 893ac8f04..000000000 --- a/jsprit-instances/instances/lilim/lrc201.txt +++ /dev/null @@ -1,104 +0,0 @@ -25 1000 1 -0 40 50 0 0 960 0 0 0 -1 25 85 -10 673 793 10 14 0 -2 22 75 30 152 272 10 0 98 -3 22 85 10 471 591 0 0 101 -4 20 80 -19 644 764 10 59 0 -5 20 85 20 73 193 10 0 88 -6 18 75 -20 388 508 10 12 0 -7 15 75 -16 300 420 10 65 0 -8 15 80 10 367 487 10 0 46 -9 10 35 -13 371 491 10 87 0 -10 10 40 -3 519 639 10 62 0 -11 8 40 40 195 315 10 0 68 -12 8 45 20 223 343 10 0 6 -13 5 35 -23 653 773 10 57 0 -14 5 45 10 35 155 10 0 1 -15 2 40 20 174 294 10 0 55 -16 0 40 20 255 375 10 0 73 -17 0 45 20 703 823 10 0 100 -18 44 5 -9 335 455 10 82 0 -19 42 10 40 254 374 10 0 51 -20 42 15 10 537 657 10 0 54 -21 40 5 -30 215 335 10 23 0 -22 40 15 -2 375 495 10 85 0 -23 38 5 30 201 321 10 0 21 -24 38 15 -25 681 801 10 89 0 -25 35 5 -10 784 904 10 48 0 -26 95 30 -20 529 649 10 41 0 -27 95 35 20 146 266 10 0 99 -28 92 30 10 149 269 10 0 67 -29 90 35 10 194 314 10 0 30 -30 88 30 -10 246 366 10 29 0 -31 88 35 20 165 285 10 0 90 -32 87 30 -30 621 741 10 38 0 -33 85 25 10 80 200 10 0 71 -34 85 35 -10 487 607 10 39 0 -35 67 85 -3 657 777 10 52 0 -36 65 85 40 43 163 10 0 72 -37 65 82 10 557 677 10 0 80 -38 62 80 30 278 398 10 0 32 -39 60 80 10 64 184 10 0 34 -40 60 85 -10 329 449 10 45 0 -41 58 75 20 376 496 10 0 26 -42 55 80 10 33 153 10 0 44 -43 55 85 -17 574 694 10 64 0 -44 55 82 -10 217 337 10 42 0 -45 20 82 10 37 157 10 0 40 -46 18 80 -10 489 609 10 8 0 -47 2 45 10 105 225 10 0 78 -48 42 5 10 732 852 10 0 25 -49 42 12 10 440 560 10 0 56 -50 72 35 -10 507 627 10 81 0 -51 55 20 -40 326 446 10 19 0 -52 25 30 3 175 295 10 0 35 -53 20 50 -14 375 495 10 92 0 -54 55 60 -10 601 721 10 20 0 -55 30 60 -20 599 719 10 15 0 -56 50 35 -10 557 677 10 49 0 -57 30 25 23 397 517 10 0 13 -58 15 10 -7 782 902 10 77 0 -59 10 20 19 42 162 10 0 4 -60 15 60 -35 694 814 10 97 0 -61 45 65 9 258 378 10 0 94 -62 65 35 3 167 287 10 0 10 -63 65 20 -6 39 159 10 95 0 -64 45 30 17 191 311 10 0 43 -65 35 40 16 11 131 10 0 7 -66 41 37 16 566 686 10 0 93 -67 64 42 -10 268 388 10 28 0 -68 40 60 -40 612 732 10 11 0 -69 31 52 27 157 277 10 0 76 -70 35 69 23 810 930 0 0 102 -71 65 55 -10 241 361 10 33 0 -72 63 65 -40 60 180 10 36 0 -73 2 60 -20 286 406 10 16 0 -74 20 20 -28 645 765 10 86 0 -75 5 5 16 232 352 10 0 79 -76 60 12 -27 268 388 10 69 0 -77 23 3 7 764 884 10 0 58 -78 8 56 -10 365 485 10 47 0 -79 6 68 -16 352 472 10 75 0 -80 47 47 -10 822 942 10 37 0 -81 49 58 10 355 475 10 0 50 -82 27 43 9 152 272 10 0 18 -83 37 31 14 105 225 10 0 84 -84 57 29 -14 395 515 10 83 0 -85 63 23 2 344 464 10 0 22 -86 21 24 28 349 469 10 0 74 -87 12 24 13 359 479 10 0 9 -88 24 58 -20 260 380 10 5 0 -89 67 5 25 713 833 10 0 24 -90 37 47 -20 359 479 10 31 0 -91 49 42 -26 719 839 10 96 0 -92 53 43 14 14 134 10 0 53 -93 61 52 -16 808 928 10 66 0 -94 57 48 -9 392 512 10 61 0 -95 56 37 6 100 220 10 0 63 -96 55 54 26 562 682 10 0 91 -97 4 18 35 547 667 10 0 60 -98 26 52 -30 172 292 10 2 0 -99 26 35 -20 308 428 10 27 0 -100 31 67 -20 810 930 10 17 0 -101 22 85 -10 471 591 10 3 0 -102 35 69 -23 810 930 10 70 0 diff --git a/jsprit-instances/instances/lilim/lrc202.txt b/jsprit-instances/instances/lilim/lrc202.txt deleted file mode 100644 index 6f628a5b9..000000000 --- a/jsprit-instances/instances/lilim/lrc202.txt +++ /dev/null @@ -1,104 +0,0 @@ -25 1000 1 -0 40 50 0 0 960 0 0 0 -1 25 85 -20 0 911 10 5 0 -2 22 75 -10 0 919 10 8 0 -3 22 85 10 0 910 10 0 44 -4 20 80 40 644 764 10 0 70 -5 20 85 20 0 909 10 0 1 -6 18 75 20 388 508 10 0 43 -7 15 75 -10 0 914 10 13 0 -8 15 80 10 367 487 10 0 2 -9 10 35 -28 371 491 10 86 0 -10 10 40 30 519 639 10 0 97 -11 8 40 -10 195 315 10 47 0 -12 8 45 20 0 917 10 0 48 -13 5 35 10 653 773 10 0 7 -14 5 45 10 35 155 10 0 60 -15 2 40 20 174 294 10 0 100 -16 0 40 -5 255 375 10 73 0 -17 0 45 -13 703 823 10 87 0 -18 44 5 20 335 455 10 0 51 -19 42 10 40 254 374 10 0 59 -20 42 15 -8 537 657 10 72 0 -21 40 5 -10 0 905 10 32 0 -22 40 15 -16 375 495 10 65 0 -23 38 5 -27 201 321 10 69 0 -24 38 15 -20 681 801 10 41 0 -25 35 5 -9 784 904 10 67 0 -26 95 30 -10 0 891 10 28 0 -27 95 35 20 146 266 10 0 91 -28 92 30 10 149 269 10 0 26 -29 90 35 -10 194 314 10 33 0 -30 88 30 10 246 366 10 0 83 -31 88 35 20 0 899 10 0 34 -32 87 30 10 621 741 10 0 21 -33 85 25 10 80 200 10 0 29 -34 85 35 -20 0 902 10 31 0 -35 67 85 -10 657 777 10 46 0 -36 65 85 40 43 163 10 0 99 -37 65 82 -10 0 909 10 42 0 -38 62 80 -6 278 398 10 95 0 -39 60 80 10 64 184 10 0 61 -40 60 85 30 329 449 10 0 49 -41 58 75 20 376 496 10 0 24 -42 55 80 10 33 153 10 0 37 -43 55 85 -20 574 694 10 6 0 -44 55 82 -10 217 337 10 3 0 -45 20 82 -9 37 157 10 98 0 -46 18 80 10 489 609 10 0 35 -47 2 45 10 105 225 10 0 11 -48 42 5 -20 0 904 10 12 0 -49 42 12 -30 440 560 10 40 0 -50 72 35 -10 0 914 10 81 0 -51 55 20 -20 326 446 10 18 0 -52 25 30 -31 0 925 10 76 0 -53 20 50 5 375 495 10 0 94 -54 55 60 -16 601 721 10 55 0 -55 30 60 16 599 719 10 0 54 -56 50 35 -6 557 677 10 90 0 -57 30 25 -17 397 517 10 64 0 -58 15 10 20 782 902 0 0 102 -59 10 20 -40 0 907 10 19 0 -60 15 60 -10 694 814 10 14 0 -61 45 65 -10 258 378 10 39 0 -62 65 35 3 167 287 10 0 77 -63 65 20 -14 39 159 10 92 0 -64 45 30 17 191 311 10 0 57 -65 35 40 16 11 131 10 0 22 -66 41 37 -18 566 686 10 84 0 -67 64 42 9 268 388 10 0 25 -68 40 60 21 612 732 0 0 101 -69 31 52 27 157 277 10 0 23 -70 35 69 -40 810 930 10 4 0 -71 65 55 -2 241 361 10 85 0 -72 63 65 8 0 922 10 0 20 -73 2 60 5 286 406 10 0 16 -74 20 20 -9 645 765 10 82 0 -75 5 5 -25 0 892 10 89 0 -76 60 12 31 268 388 10 0 52 -77 23 3 -3 764 884 10 62 0 -78 8 56 27 365 485 10 0 96 -79 6 68 -19 352 472 10 88 0 -80 47 47 -3 822 942 10 93 0 -81 49 58 10 355 475 10 0 50 -82 27 43 9 0 935 10 0 74 -83 37 31 -10 0 930 10 30 0 -84 57 29 18 395 515 10 0 66 -85 63 23 2 0 914 10 0 71 -86 21 24 28 349 469 10 0 9 -87 12 24 13 359 479 10 0 17 -88 24 58 19 260 380 10 0 79 -89 67 5 25 713 833 10 0 75 -90 37 47 6 359 479 10 0 56 -91 49 42 -20 0 937 10 27 0 -92 53 43 14 14 134 10 0 63 -93 61 52 3 808 928 10 0 80 -94 57 48 -5 0 932 10 53 0 -95 56 37 6 0 929 10 0 38 -96 55 54 -27 0 934 10 78 0 -97 4 18 -30 547 667 10 10 0 -98 26 52 9 0 935 10 0 45 -99 26 35 -40 308 428 10 36 0 -100 31 67 -20 810 930 10 15 0 -101 40 60 -21 612 732 10 68 0 -102 15 10 -20 782 902 10 58 0 diff --git a/jsprit-instances/instances/lilim/lrc203.txt b/jsprit-instances/instances/lilim/lrc203.txt deleted file mode 100644 index 44ae00321..000000000 --- a/jsprit-instances/instances/lilim/lrc203.txt +++ /dev/null @@ -1,104 +0,0 @@ -25 1000 1 -0 40 50 0 0 960 0 0 0 -1 25 85 20 0 911 10 0 35 -2 22 75 -10 0 919 10 45 0 -3 22 85 10 0 910 10 0 43 -4 20 80 40 644 764 0 0 101 -5 20 85 -10 0 909 10 44 0 -6 18 75 -20 388 508 10 41 0 -7 15 75 20 0 914 10 0 11 -8 15 80 -30 367 487 10 38 0 -9 10 35 -10 371 491 10 48 0 -10 10 40 -23 519 639 10 57 0 -11 8 40 -20 195 315 10 7 0 -12 8 45 -20 0 917 10 18 0 -13 5 35 -5 653 773 10 73 0 -14 5 45 10 0 914 10 0 77 -15 2 40 20 174 294 10 0 88 -16 0 40 -3 0 908 10 52 0 -17 0 45 -10 703 823 10 47 0 -18 44 5 20 0 904 10 0 12 -19 42 10 40 0 909 10 0 56 -20 42 15 -10 0 914 10 30 0 -21 40 5 -17 0 905 10 64 0 -22 40 15 -10 375 495 10 29 0 -23 38 5 30 201 321 10 0 87 -24 38 15 10 0 914 10 0 83 -25 35 5 -20 784 904 10 58 0 -26 95 30 -30 0 891 10 50 0 -27 95 35 20 146 266 10 0 82 -28 92 30 -10 0 894 10 33 0 -29 90 35 10 0 897 10 0 22 -30 88 30 10 246 366 10 0 20 -31 88 35 20 0 899 10 0 76 -32 87 30 -16 0 898 10 65 0 -33 85 25 10 80 200 10 0 28 -34 85 35 -6 0 902 10 90 0 -35 67 85 -20 657 777 10 1 0 -36 65 85 -10 43 163 10 81 0 -37 65 82 -10 0 909 10 46 0 -38 62 80 30 278 398 10 0 8 -39 60 80 10 64 184 10 0 40 -40 60 85 -10 329 449 10 39 0 -41 58 75 20 376 496 10 0 6 -42 55 80 10 33 153 10 0 61 -43 55 85 -10 0 911 10 3 0 -44 55 82 10 217 337 10 0 5 -45 20 82 10 37 157 10 0 2 -46 18 80 10 0 912 10 0 37 -47 2 45 10 0 911 10 0 17 -48 42 5 10 0 904 10 0 9 -49 42 12 10 440 560 10 0 100 -50 72 35 30 0 914 10 0 26 -51 55 20 -2 0 916 10 85 0 -52 25 30 3 0 925 10 0 16 -53 20 50 -27 375 495 10 69 0 -54 55 60 16 0 931 10 0 60 -55 30 60 16 599 719 10 0 70 -56 50 35 -40 557 677 10 19 0 -57 30 25 23 0 923 10 0 10 -58 15 10 20 782 902 10 0 25 -59 10 20 19 0 907 10 0 97 -60 15 60 -16 0 923 10 54 0 -61 45 65 -10 0 934 10 42 0 -62 65 35 3 167 287 10 0 89 -63 65 20 6 0 910 10 0 98 -64 45 30 17 191 311 10 0 21 -65 35 40 16 11 131 10 0 32 -66 41 37 -18 566 686 10 84 0 -67 64 42 9 268 388 10 0 68 -68 40 60 -9 612 732 10 67 0 -69 31 52 27 157 277 10 0 53 -70 35 69 -16 810 930 10 55 0 -71 65 55 14 0 924 10 0 96 -72 63 65 8 0 922 10 0 94 -73 2 60 5 0 910 10 0 13 -74 20 20 -15 645 765 10 99 0 -75 5 5 -30 0 892 10 79 0 -76 60 12 -20 268 388 10 31 0 -77 23 3 -10 764 884 10 14 0 -78 8 56 -28 365 485 10 86 0 -79 6 68 30 352 472 10 0 75 -80 47 47 -3 822 942 10 93 0 -81 49 58 10 0 937 10 0 36 -82 27 43 -20 0 935 10 27 0 -83 37 31 -10 0 930 10 24 0 -84 57 29 18 395 515 10 0 66 -85 63 23 2 0 914 10 0 51 -86 21 24 28 0 917 10 0 78 -87 12 24 -30 359 479 10 23 0 -88 24 58 -20 260 380 10 15 0 -89 67 5 -3 0 897 10 62 0 -90 37 47 6 0 945 10 0 34 -91 49 42 13 0 937 10 0 95 -92 53 43 14 14 134 0 0 102 -93 61 52 3 808 928 10 0 80 -94 57 48 -8 0 932 10 72 0 -95 56 37 -13 0 929 10 91 0 -96 55 54 -14 0 934 10 71 0 -97 4 18 -19 0 901 10 59 0 -98 26 52 -6 0 935 10 63 0 -99 26 35 15 308 428 10 0 74 -100 31 67 -10 810 930 10 49 0 -101 20 80 -40 644 764 10 4 0 -102 53 43 -14 14 134 10 92 0 diff --git a/jsprit-instances/instances/lilim/lrc204.txt b/jsprit-instances/instances/lilim/lrc204.txt deleted file mode 100644 index 7bc0beb81..000000000 --- a/jsprit-instances/instances/lilim/lrc204.txt +++ /dev/null @@ -1,104 +0,0 @@ -25 1000 1 -0 40 50 0 0 960 0 0 0 -1 25 85 20 0 911 0 0 101 -2 22 75 -20 0 919 10 7 0 -3 22 85 10 0 910 10 0 5 -4 20 80 -27 644 764 10 78 0 -5 20 85 -10 0 909 10 3 0 -6 18 75 -17 0 916 10 60 0 -7 15 75 20 0 914 10 0 2 -8 15 80 -20 367 487 10 43 0 -9 10 35 -3 371 491 10 52 0 -10 10 40 -20 0 918 10 17 0 -11 8 40 -9 195 315 10 98 0 -12 8 45 20 0 917 10 0 15 -13 5 35 -9 653 773 10 82 0 -14 5 45 -27 0 914 10 69 0 -15 2 40 -20 174 294 10 12 0 -16 0 40 20 0 908 10 0 59 -17 0 45 20 0 909 10 0 10 -18 44 5 20 0 904 10 0 71 -19 42 10 40 0 909 10 0 48 -20 42 15 -19 0 914 10 56 0 -21 40 5 -14 0 905 10 92 0 -22 40 15 40 0 915 10 0 85 -23 38 5 30 201 321 10 0 30 -24 38 15 -5 0 914 10 53 0 -25 35 5 -13 784 904 10 87 0 -26 95 30 30 0 891 10 0 96 -27 95 35 -18 0 892 10 84 0 -28 92 30 10 0 894 10 0 31 -29 90 35 10 0 897 10 0 94 -30 88 30 -30 0 898 10 23 0 -31 88 35 -10 0 899 10 28 0 -32 87 30 -6 0 898 10 95 0 -33 85 25 10 0 898 10 0 93 -34 85 35 -25 0 902 10 89 0 -35 67 85 20 0 905 10 0 45 -36 65 85 -20 0 906 10 41 0 -37 65 82 10 0 909 10 0 44 -38 62 80 30 278 398 10 0 42 -39 60 80 -8 0 913 10 72 0 -40 60 85 -16 0 909 10 54 0 -41 58 75 20 0 919 10 0 36 -42 55 80 -30 0 916 10 38 0 -43 55 85 20 0 911 10 0 8 -44 55 82 -10 217 337 10 37 0 -45 20 82 -20 0 912 10 35 0 -46 18 80 10 0 912 10 0 100 -47 2 45 10 0 911 10 0 58 -48 42 5 -40 0 904 10 19 0 -49 42 12 -13 0 911 10 80 0 -50 72 35 -9 0 914 10 67 0 -51 55 20 -3 0 916 10 62 0 -52 25 30 3 0 925 10 0 9 -53 20 50 5 375 495 10 0 24 -54 55 60 16 0 931 10 0 40 -55 30 60 -19 599 719 10 88 0 -56 50 35 19 0 931 10 0 20 -57 30 25 23 0 923 10 0 90 -58 15 10 -10 782 902 10 47 0 -59 10 20 -20 0 907 10 16 0 -60 15 60 17 0 923 10 0 6 -61 45 65 -5 0 934 10 73 0 -62 65 35 3 167 287 10 0 51 -63 65 20 -17 0 910 10 64 0 -64 45 30 17 0 929 10 0 63 -65 35 40 -35 0 938 10 97 0 -66 41 37 -8 0 936 10 74 0 -67 64 42 9 268 388 10 0 50 -68 40 60 -23 0 940 10 70 0 -69 31 52 27 157 277 10 0 14 -70 35 69 23 0 930 10 0 68 -71 65 55 -20 0 924 10 18 0 -72 63 65 8 0 922 10 0 39 -73 2 60 5 0 910 10 0 61 -74 20 20 8 645 765 10 0 66 -75 5 5 -15 0 892 10 99 0 -76 60 12 -13 268 388 10 91 0 -77 23 3 -28 764 884 10 86 0 -78 8 56 27 0 917 10 0 4 -79 6 68 -10 352 472 10 81 0 -80 47 47 13 0 942 10 0 49 -81 49 58 10 0 937 10 0 79 -82 27 43 9 0 935 10 0 13 -83 37 31 14 0 930 0 0 102 -84 57 29 18 395 515 10 0 27 -85 63 23 -40 0 914 10 22 0 -86 21 24 28 0 917 10 0 77 -87 12 24 13 359 479 10 0 25 -88 24 58 19 0 932 10 0 55 -89 67 5 25 0 897 10 0 34 -90 37 47 -23 0 945 10 57 0 -91 49 42 13 0 937 10 0 76 -92 53 43 14 14 134 10 0 21 -93 61 52 -10 0 928 10 33 0 -94 57 48 -10 0 932 10 29 0 -95 56 37 6 0 929 10 0 32 -96 55 54 -30 0 934 10 26 0 -97 4 18 35 0 901 10 0 65 -98 26 52 9 0 935 10 0 11 -99 26 35 15 308 428 10 0 75 -100 31 67 -10 810 930 10 46 0 -101 25 85 -20 0 911 10 1 0 -102 37 31 -14 0 930 10 83 0 diff --git a/jsprit-instances/instances/lilim/lrc205.txt b/jsprit-instances/instances/lilim/lrc205.txt deleted file mode 100644 index 65c26af5f..000000000 --- a/jsprit-instances/instances/lilim/lrc205.txt +++ /dev/null @@ -1,104 +0,0 @@ -25 1000 1 -0 40 50 0 0 960 0 0 0 -1 25 85 -10 431 911 10 8 0 -2 22 75 30 30 510 10 0 39 -3 22 85 -5 291 771 10 73 0 -4 20 80 -27 674 734 10 78 0 -5 20 85 20 40 520 10 0 42 -6 18 75 20 393 502 10 0 70 -7 15 75 -30 120 600 10 79 0 -8 15 80 10 397 457 10 0 1 -9 10 35 20 401 461 10 0 80 -10 10 40 -16 535 622 10 75 0 -11 8 40 40 225 285 10 0 16 -12 8 45 -27 43 523 10 69 0 -13 5 35 -10 683 743 10 49 0 -14 5 45 -9 35 366 10 98 0 -15 2 40 20 204 264 10 0 47 -16 0 40 -40 204 425 10 11 0 -17 0 45 -20 698 827 10 27 0 -18 44 5 -10 306 483 10 21 0 -19 42 10 40 199 428 10 0 52 -20 42 15 10 494 699 10 0 60 -21 40 5 10 45 525 10 0 18 -22 40 15 -10 383 486 10 30 0 -23 38 5 -17 231 291 10 64 0 -24 38 15 -9 609 872 10 67 0 -25 35 5 -30 821 881 10 50 0 -26 95 30 30 349 829 10 0 48 -27 95 35 20 138 273 10 0 17 -28 92 30 10 78 339 10 0 74 -29 90 35 10 132 375 10 0 76 -30 88 30 10 252 359 10 0 22 -31 88 35 20 50 530 10 0 51 -32 87 30 10 562 799 10 0 77 -33 85 25 10 71 208 10 0 84 -34 85 35 -8 307 787 10 72 0 -35 67 85 -19 655 778 10 59 0 -36 65 85 40 43 186 10 0 82 -37 65 82 10 377 857 10 0 96 -38 62 80 -10 308 368 10 44 0 -39 60 80 -30 46 201 10 2 0 -40 60 85 -23 339 438 10 94 0 -41 58 75 20 377 494 10 0 56 -42 55 80 -20 33 166 10 5 0 -43 55 85 20 531 736 10 0 91 -44 55 82 10 247 307 10 0 38 -45 20 82 10 37 177 10 0 71 -46 18 80 -19 432 665 10 88 0 -47 2 45 -20 38 322 10 15 0 -48 42 5 -30 424 904 10 26 0 -49 42 12 10 460 539 10 0 13 -50 72 35 30 327 807 10 0 25 -51 55 20 -20 273 498 10 31 0 -52 25 30 -40 25 505 10 19 0 -53 20 50 5 405 465 10 0 58 -54 55 60 -15 554 767 10 99 0 -55 30 60 16 629 689 10 0 93 -56 50 35 -20 560 673 10 41 0 -57 30 25 -16 342 571 10 65 0 -58 15 10 -5 842 902 10 53 0 -59 10 20 19 42 522 10 0 35 -60 15 60 -10 623 884 10 20 0 -61 45 65 9 214 421 10 0 90 -62 65 35 3 197 257 10 0 89 -63 65 20 6 39 316 10 0 85 -64 45 30 17 191 310 10 0 23 -65 35 40 16 11 140 10 0 57 -66 41 37 -10 570 681 10 81 0 -67 64 42 9 298 358 10 0 24 -68 40 60 -13 613 730 10 87 0 -69 31 52 27 187 247 10 0 12 -70 35 69 -20 780 930 10 6 0 -71 65 55 -10 191 410 10 45 0 -72 63 65 8 27 507 10 0 34 -73 2 60 5 240 451 10 0 3 -74 20 20 -10 675 735 10 28 0 -75 5 5 16 57 537 10 0 10 -76 60 12 -10 298 358 10 29 0 -77 23 3 -10 794 854 10 32 0 -78 8 56 27 366 483 10 0 4 -79 6 68 30 382 442 10 0 7 -80 47 47 -20 817 942 10 9 0 -81 49 58 10 332 497 10 0 66 -82 27 43 -40 14 494 10 36 0 -83 37 31 14 19 499 10 0 86 -84 57 29 -10 425 485 10 33 0 -85 63 23 -6 164 644 10 63 0 -86 21 24 -14 310 507 10 83 0 -87 12 24 13 389 449 10 0 68 -88 24 58 19 262 377 10 0 46 -89 67 5 -3 611 897 10 62 0 -90 37 47 -9 311 526 10 61 0 -91 49 42 -20 457 937 10 43 0 -92 53 43 14 14 74 10 0 95 -93 61 52 -16 789 928 10 55 0 -94 57 48 23 212 692 10 0 40 -95 56 37 -14 20 500 10 92 0 -96 55 54 -10 382 862 10 37 0 -97 4 18 35 516 697 0 0 102 -98 26 52 9 14 494 10 0 14 -99 26 35 15 338 398 10 0 54 -100 31 67 3 870 930 0 0 101 -101 31 67 -3 870 930 10 100 0 -102 4 18 -35 516 697 10 97 0 diff --git a/jsprit-instances/instances/lilim/lrc206.txt b/jsprit-instances/instances/lilim/lrc206.txt deleted file mode 100644 index aa08b5c9f..000000000 --- a/jsprit-instances/instances/lilim/lrc206.txt +++ /dev/null @@ -1,104 +0,0 @@ -25 1000 1 -0 40 50 0 0 960 0 0 0 -1 25 85 -20 613 853 10 41 0 -2 22 75 30 92 332 10 0 71 -3 22 85 -10 411 651 10 8 0 -4 20 80 40 584 824 10 0 37 -5 20 85 20 40 280 10 0 45 -6 18 75 -10 328 568 10 39 0 -7 15 75 -30 240 480 10 38 0 -8 15 80 10 307 547 10 0 3 -9 10 35 -35 311 551 10 97 0 -10 10 40 -13 459 699 10 87 0 -11 8 40 40 135 375 10 0 59 -12 8 45 20 163 403 10 0 66 -13 5 35 -31 593 833 10 76 0 -14 5 45 10 35 275 10 0 84 -15 2 40 20 114 354 10 0 81 -16 0 40 -27 195 435 10 69 0 -17 0 45 20 643 883 10 0 70 -18 44 5 -10 275 515 10 33 0 -19 42 10 40 194 434 10 0 49 -20 42 15 10 477 717 10 0 24 -21 40 5 -20 155 395 10 31 0 -22 40 15 -10 315 555 10 28 0 -23 38 5 -6 141 381 10 63 0 -24 38 15 -10 621 861 10 20 0 -25 35 5 -30 664 904 10 26 0 -26 95 30 30 469 709 10 0 25 -27 95 35 -14 86 326 10 83 0 -28 92 30 10 89 329 10 0 22 -29 90 35 -14 134 374 10 92 0 -30 88 30 10 186 426 10 0 85 -31 88 35 20 105 345 10 0 21 -32 87 30 10 561 801 0 0 101 -33 85 25 10 51 291 10 0 18 -34 85 35 30 427 667 10 0 89 -35 67 85 -19 597 837 10 88 0 -36 65 85 40 43 283 10 0 53 -37 65 82 -40 497 737 10 4 0 -38 62 80 30 218 458 10 0 7 -39 60 80 10 36 276 10 0 6 -40 60 85 -10 269 509 10 42 0 -41 58 75 20 316 556 10 0 1 -42 55 80 10 33 273 10 0 40 -43 55 85 20 514 754 10 0 80 -44 55 82 10 157 397 0 0 102 -45 20 82 -20 37 277 10 5 0 -46 18 80 10 429 669 10 0 96 -47 2 45 10 45 285 10 0 90 -48 42 5 10 664 904 10 0 58 -49 42 12 -40 380 620 10 19 0 -50 72 35 -17 447 687 10 64 0 -51 55 20 19 266 506 10 0 55 -52 25 30 3 115 355 10 0 94 -53 20 50 -40 315 555 10 36 0 -54 55 60 16 541 781 10 0 93 -55 30 60 -19 539 779 10 51 0 -56 50 35 -9 497 737 10 82 0 -57 30 25 23 337 577 10 0 100 -58 15 10 -10 662 902 10 48 0 -59 10 20 -40 42 282 10 11 0 -60 15 60 17 634 874 10 0 68 -61 45 65 9 198 438 10 0 73 -62 65 35 3 107 347 10 0 99 -63 65 20 6 39 279 10 0 23 -64 45 30 17 131 371 10 0 50 -65 35 40 16 11 251 10 0 95 -66 41 37 -20 506 746 10 12 0 -67 64 42 -16 208 448 10 75 0 -68 40 60 -17 552 792 10 60 0 -69 31 52 27 97 337 10 0 16 -70 35 69 -20 690 930 10 17 0 -71 65 55 -30 181 421 10 2 0 -72 63 65 8 27 267 10 0 91 -73 2 60 -9 226 466 10 61 0 -74 20 20 -7 585 825 10 77 0 -75 5 5 16 172 412 10 0 67 -76 60 12 31 208 448 10 0 13 -77 23 3 7 660 900 10 0 74 -78 8 56 27 305 545 10 0 79 -79 6 68 -27 292 532 10 78 0 -80 47 47 -20 702 942 10 43 0 -81 49 58 -20 295 535 10 15 0 -82 27 43 9 92 332 10 0 56 -83 37 31 14 45 285 10 0 27 -84 57 29 -10 335 575 10 14 0 -85 63 23 -10 284 524 10 30 0 -86 21 24 -9 289 529 10 98 0 -87 12 24 13 299 539 10 0 10 -88 24 58 19 200 440 10 0 35 -89 67 5 -30 653 893 10 34 0 -90 37 47 -10 299 539 10 47 0 -91 49 42 -8 659 899 10 72 0 -92 53 43 14 14 254 10 0 29 -93 61 52 -16 688 928 10 54 0 -94 57 48 -3 332 572 10 52 0 -95 56 37 -16 40 280 10 65 0 -96 55 54 -10 502 742 10 46 0 -97 4 18 35 487 727 10 0 9 -98 26 52 9 112 352 10 0 86 -99 26 35 -3 248 488 10 62 0 -100 31 67 -23 690 930 10 57 0 -101 87 30 -10 561 801 10 32 0 -102 55 82 -10 157 397 10 44 0 diff --git a/jsprit-instances/instances/lilim/lrc207.txt b/jsprit-instances/instances/lilim/lrc207.txt deleted file mode 100644 index 8307ea9f1..000000000 --- a/jsprit-instances/instances/lilim/lrc207.txt +++ /dev/null @@ -1,104 +0,0 @@ -25 1000 1 -0 40 50 0 0 960 0 0 0 -1 25 85 -10 591 874 10 30 0 -2 22 75 30 73 350 10 0 5 -3 22 85 -30 473 588 10 40 0 -4 20 80 -6 418 913 10 63 0 -5 20 85 -30 40 390 10 2 0 -6 18 75 20 249 646 10 0 7 -7 15 75 -20 281 438 10 6 0 -8 15 80 -9 272 581 10 61 0 -9 10 35 20 236 625 10 0 74 -10 10 40 -10 470 687 10 13 0 -11 8 40 -10 33 510 10 45 0 -12 8 45 20 166 399 10 0 57 -13 5 35 10 359 911 10 0 10 -14 5 45 10 35 457 10 0 68 -15 2 40 -10 39 538 10 47 0 -16 0 40 20 214 415 10 0 87 -17 0 45 -27 359 909 10 69 0 -18 44 5 20 338 451 10 0 94 -19 42 10 40 205 422 10 0 51 -20 42 15 10 511 682 10 0 60 -21 40 5 10 158 391 10 0 84 -22 40 15 40 263 606 10 0 97 -23 38 5 -3 45 522 10 52 0 -24 38 15 -30 598 883 10 26 0 -25 35 5 20 348 904 0 0 102 -26 95 30 30 509 668 10 0 24 -27 95 35 -2 57 664 10 85 0 -28 92 30 10 68 349 10 0 90 -29 90 35 10 131 376 10 0 35 -30 88 30 10 114 497 10 0 1 -31 88 35 20 102 347 10 0 81 -32 87 30 -3 564 797 10 93 0 -33 85 25 10 51 673 10 0 54 -34 85 35 -9 462 631 10 82 0 -35 67 85 -10 396 905 10 29 0 -36 65 85 -10 43 712 10 46 0 -37 65 82 10 530 703 0 0 101 -38 62 80 30 131 544 10 0 79 -39 60 80 10 36 800 10 0 43 -40 60 85 30 233 544 10 0 3 -41 58 75 20 207 664 10 0 78 -42 55 80 -16 33 624 10 65 0 -43 55 85 -10 549 718 10 39 0 -44 55 82 -9 62 491 10 67 0 -45 20 82 10 37 677 10 0 11 -46 18 80 10 435 662 10 0 36 -47 2 45 10 38 366 10 0 15 -48 42 5 10 636 904 10 0 66 -49 42 12 10 423 576 10 0 58 -50 72 35 -3 471 662 10 62 0 -51 55 20 -40 281 490 10 19 0 -52 25 30 3 109 360 10 0 23 -53 20 50 -8 284 585 10 72 0 -54 55 60 -10 568 753 10 33 0 -55 30 60 -28 421 896 10 86 0 -56 50 35 -16 404 829 10 75 0 -57 30 25 -20 347 566 10 12 0 -58 15 10 -10 380 902 10 49 0 -59 10 20 -15 42 466 10 99 0 -60 15 60 -10 613 894 10 20 0 -61 45 65 9 230 405 10 0 8 -62 65 35 3 29 587 10 0 50 -63 65 20 6 39 353 10 0 4 -64 45 30 17 20 497 10 0 95 -65 35 40 16 11 570 10 0 42 -66 41 37 -10 423 828 10 48 0 -67 64 42 9 112 543 10 0 44 -68 40 60 -10 441 902 10 14 0 -69 31 52 27 9 532 10 0 17 -70 35 69 -3 211 930 10 100 0 -71 65 55 -14 201 400 10 83 0 -72 63 65 8 27 382 10 0 53 -73 2 60 -19 255 436 10 88 0 -74 20 20 -20 427 913 10 9 0 -75 5 5 16 183 400 10 0 56 -76 60 12 31 162 493 10 0 92 -77 23 3 -9 360 900 10 98 0 -78 8 56 -20 195 654 10 41 0 -79 6 68 -30 258 565 10 38 0 -80 47 47 -13 426 942 10 91 0 -81 49 58 -20 369 460 10 31 0 -82 27 43 9 85 338 10 0 34 -83 37 31 14 19 326 10 0 71 -84 57 29 -10 304 605 10 21 0 -85 63 23 2 318 489 10 0 27 -86 21 24 28 332 485 10 0 55 -87 12 24 -20 365 472 10 16 0 -88 24 58 19 100 539 10 0 73 -89 67 5 -26 565 897 10 96 0 -90 37 47 -10 324 513 10 28 0 -91 49 42 13 651 906 10 0 80 -92 53 43 -31 14 669 10 76 0 -93 61 52 3 298 928 10 0 32 -94 57 48 -20 385 518 10 18 0 -95 56 37 -17 20 299 10 64 0 -96 55 54 26 538 705 10 0 89 -97 4 18 -40 546 667 10 22 0 -98 26 52 9 109 354 10 0 77 -99 26 35 15 170 565 10 0 59 -100 31 67 3 262 930 10 0 70 -101 65 82 -10 530 703 10 37 0 -102 35 5 -20 348 904 10 25 0 diff --git a/jsprit-instances/instances/lilim/lrc208.txt b/jsprit-instances/instances/lilim/lrc208.txt deleted file mode 100644 index e279da5ec..000000000 --- a/jsprit-instances/instances/lilim/lrc208.txt +++ /dev/null @@ -1,104 +0,0 @@ -25 1000 1 -0 40 50 0 0 960 0 0 0 -1 25 85 20 388 911 0 0 101 -2 22 75 30 30 546 10 0 43 -3 22 85 10 353 708 10 0 35 -4 20 80 -3 425 913 10 52 0 -5 20 85 -10 40 630 10 81 0 -6 18 75 20 228 667 10 0 38 -7 15 75 20 161 558 10 0 37 -8 15 80 -14 229 624 10 71 0 -9 10 35 -35 213 648 10 97 0 -10 10 40 -9 404 753 10 82 0 -11 8 40 40 33 511 10 0 21 -12 8 45 20 46 519 10 0 59 -13 5 35 -16 395 911 10 75 0 -14 5 45 10 35 697 10 0 46 -15 2 40 -9 39 528 10 98 0 -16 0 40 20 94 535 10 0 25 -17 0 45 -5 394 909 10 53 0 -18 44 5 20 218 571 10 0 58 -19 42 10 40 85 542 10 0 86 -20 42 15 -20 391 802 10 31 0 -21 40 5 -40 45 517 10 11 0 -22 40 15 40 229 640 10 0 66 -23 38 5 -27 45 523 10 69 0 -24 38 15 -17 389 914 10 64 0 -25 35 5 -20 386 904 10 16 0 -26 95 30 30 389 788 10 0 27 -27 95 35 -30 57 600 10 26 0 -28 92 30 -10 55 575 10 32 0 -29 90 35 10 52 536 10 0 84 -30 88 30 10 90 521 10 0 62 -31 88 35 20 50 534 10 0 20 -32 87 30 10 425 898 10 0 28 -33 85 25 -6 51 602 10 90 0 -34 85 35 30 342 751 10 0 51 -35 67 85 -10 410 905 10 3 0 -36 65 85 40 43 617 10 0 96 -37 65 82 -20 410 823 10 7 0 -38 62 80 -20 114 561 10 6 0 -39 60 80 10 36 658 10 0 41 -40 60 85 30 191 586 10 0 54 -41 58 75 -10 201 670 10 39 0 -42 55 80 10 33 568 10 0 93 -43 55 85 -30 429 838 10 2 0 -44 55 82 -9 49 504 10 61 0 -45 20 82 -9 37 597 10 67 0 -46 18 80 -10 315 782 10 14 0 -47 2 45 10 38 606 10 0 48 -48 42 5 -10 396 904 10 47 0 -49 42 12 10 341 658 10 0 74 -50 72 35 -2 351 782 10 85 0 -51 55 20 -30 161 610 10 34 0 -52 25 30 3 25 516 10 0 4 -53 20 50 5 239 630 10 0 17 -54 55 60 -30 448 873 10 40 0 -55 30 60 -23 420 897 10 57 0 -56 50 35 19 390 843 10 0 80 -57 30 25 23 227 686 10 0 55 -58 15 10 -20 401 902 10 18 0 -59 10 20 -20 42 706 10 12 0 -60 15 60 17 401 923 10 0 68 -61 45 65 9 110 525 10 0 44 -62 65 35 -10 29 548 10 30 0 -63 65 20 6 39 593 10 0 89 -64 45 30 17 20 498 10 0 24 -65 35 40 16 11 530 10 0 83 -66 41 37 -40 404 847 10 22 0 -67 64 42 9 100 555 10 0 45 -68 40 60 -17 436 907 10 60 0 -69 31 52 27 9 510 10 0 23 -70 35 69 -5 330 930 10 73 0 -71 65 55 14 81 520 10 0 8 -72 63 65 8 27 622 10 0 94 -73 2 60 5 135 556 10 0 70 -74 20 20 -10 430 913 10 49 0 -75 5 5 16 63 520 10 0 13 -76 60 12 31 125 530 10 0 91 -77 23 3 -30 390 900 10 79 0 -78 8 56 27 190 659 10 0 100 -79 6 68 30 215 608 10 0 77 -80 47 47 -19 444 942 10 56 0 -81 49 58 10 249 580 10 0 5 -82 27 43 9 14 506 10 0 10 -83 37 31 -16 19 566 10 65 0 -84 57 29 -10 259 650 10 29 0 -85 63 23 2 198 609 10 0 50 -86 21 24 -40 212 605 10 19 0 -87 12 24 13 272 565 0 0 102 -88 24 58 19 90 549 10 0 99 -89 67 5 -6 325 897 10 63 0 -90 37 47 6 204 633 10 0 33 -91 49 42 -31 442 937 10 76 0 -92 53 43 14 14 581 10 0 95 -93 61 52 -10 373 928 10 42 0 -94 57 48 -8 265 638 10 72 0 -95 56 37 -14 20 539 10 92 0 -96 55 54 -40 418 825 10 36 0 -97 4 18 35 426 787 10 0 9 -98 26 52 9 14 499 10 0 15 -99 26 35 -19 149 586 10 88 0 -100 31 67 -27 356 930 10 78 0 -101 25 85 -20 388 911 10 1 0 -102 12 24 -13 272 565 10 87 0 diff --git a/jsprit-instances/instances/liushen/C1.txt b/jsprit-instances/instances/liushen/C1.txt deleted file mode 100644 index 75adb65b8..000000000 --- a/jsprit-instances/instances/liushen/C1.txt +++ /dev/null @@ -1,4 +0,0 @@ -Vehicle;Capacity;Cost_a;Cost_b;Cost_c -A;100;300;60;30 -B;200;800;160;80 -C;300;1350;270;135 \ No newline at end of file diff --git a/jsprit-instances/instances/liushen/R1.txt b/jsprit-instances/instances/liushen/R1.txt deleted file mode 100644 index 8bb389b4d..000000000 --- a/jsprit-instances/instances/liushen/R1.txt +++ /dev/null @@ -1,6 +0,0 @@ -Vehicle;Capacity;Cost_R1a;Cost_R1b;Cost_R1c -A;30;50;10;5 -B;50;80;16;8 -C;80;140;28;14 -D;120;250;50;25 -E;200;500;100;50 \ No newline at end of file diff --git a/jsprit-instances/instances/solomon/C101.txt b/jsprit-instances/instances/solomon/C101.txt deleted file mode 100644 index 28cdccc65..000000000 --- a/jsprit-instances/instances/solomon/C101.txt +++ /dev/null @@ -1,110 +0,0 @@ -C101 - -VEHICLE -NUMBER CAPACITY - 25 200 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 40 50 0 0 1236 0 - 1 45 68 10 912 967 90 - 2 45 70 30 825 870 90 - 3 42 66 10 65 146 90 - 4 42 68 10 727 782 90 - 5 42 65 10 15 67 90 - 6 40 69 20 621 702 90 - 7 40 66 20 170 225 90 - 8 38 68 20 255 324 90 - 9 38 70 10 534 605 90 - 10 35 66 10 357 410 90 - 11 35 69 10 448 505 90 - 12 25 85 20 652 721 90 - 13 22 75 30 30 92 90 - 14 22 85 10 567 620 90 - 15 20 80 40 384 429 90 - 16 20 85 40 475 528 90 - 17 18 75 20 99 148 90 - 18 15 75 20 179 254 90 - 19 15 80 10 278 345 90 - 20 30 50 10 10 73 90 - 21 30 52 20 914 965 90 - 22 28 52 20 812 883 90 - 23 28 55 10 732 777 90 - 24 25 50 10 65 144 90 - 25 25 52 40 169 224 90 - 26 25 55 10 622 701 90 - 27 23 52 10 261 316 90 - 28 23 55 20 546 593 90 - 29 20 50 10 358 405 90 - 30 20 55 10 449 504 90 - 31 10 35 20 200 237 90 - 32 10 40 30 31 100 90 - 33 8 40 40 87 158 90 - 34 8 45 20 751 816 90 - 35 5 35 10 283 344 90 - 36 5 45 10 665 716 90 - 37 2 40 20 383 434 90 - 38 0 40 30 479 522 90 - 39 0 45 20 567 624 90 - 40 35 30 10 264 321 90 - 41 35 32 10 166 235 90 - 42 33 32 20 68 149 90 - 43 33 35 10 16 80 90 - 44 32 30 10 359 412 90 - 45 30 30 10 541 600 90 - 46 30 32 30 448 509 90 - 47 30 35 10 1054 1127 90 - 48 28 30 10 632 693 90 - 49 28 35 10 1001 1066 90 - 50 26 32 10 815 880 90 - 51 25 30 10 725 786 90 - 52 25 35 10 912 969 90 - 53 44 5 20 286 347 90 - 54 42 10 40 186 257 90 - 55 42 15 10 95 158 90 - 56 40 5 30 385 436 90 - 57 40 15 40 35 87 90 - 58 38 5 30 471 534 90 - 59 38 15 10 651 740 90 - 60 35 5 20 562 629 90 - 61 50 30 10 531 610 90 - 62 50 35 20 262 317 90 - 63 50 40 50 171 218 90 - 64 48 30 10 632 693 90 - 65 48 40 10 76 129 90 - 66 47 35 10 826 875 90 - 67 47 40 10 12 77 90 - 68 45 30 10 734 777 90 - 69 45 35 10 916 969 90 - 70 95 30 30 387 456 90 - 71 95 35 20 293 360 90 - 72 53 30 10 450 505 90 - 73 92 30 10 478 551 90 - 74 53 35 50 353 412 90 - 75 45 65 20 997 1068 90 - 76 90 35 10 203 260 90 - 77 88 30 10 574 643 90 - 78 88 35 20 109 170 90 - 79 87 30 10 668 731 90 - 80 85 25 10 769 820 90 - 81 85 35 30 47 124 90 - 82 75 55 20 369 420 90 - 83 72 55 10 265 338 90 - 84 70 58 20 458 523 90 - 85 68 60 30 555 612 90 - 86 66 55 10 173 238 90 - 87 65 55 20 85 144 90 - 88 65 60 30 645 708 90 - 89 63 58 10 737 802 90 - 90 60 55 10 20 84 90 - 91 60 60 10 836 889 90 - 92 67 85 20 368 441 90 - 93 65 85 40 475 518 90 - 94 65 82 10 285 336 90 - 95 62 80 30 196 239 90 - 96 60 80 10 95 156 90 - 97 60 85 30 561 622 90 - 98 58 75 20 30 84 90 - 99 55 80 10 743 820 90 - 100 55 85 20 647 726 90 diff --git a/jsprit-instances/instances/solomon/C102.txt b/jsprit-instances/instances/solomon/C102.txt deleted file mode 100644 index 88996ce78..000000000 --- a/jsprit-instances/instances/solomon/C102.txt +++ /dev/null @@ -1,110 +0,0 @@ -C102 - -VEHICLE -NUMBER CAPACITY - 25 200 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 40 50 0 0 1236 0 - 1 45 68 10 0 1127 90 - 2 45 70 30 0 1125 90 - 3 42 66 10 0 1129 90 - 4 42 68 10 727 782 90 - 5 42 65 10 0 1130 90 - 6 40 69 20 621 702 90 - 7 40 66 20 0 1130 90 - 8 38 68 20 255 324 90 - 9 38 70 10 534 605 90 - 10 35 66 10 357 410 90 - 11 35 69 10 448 505 90 - 12 25 85 20 0 1107 90 - 13 22 75 30 30 92 90 - 14 22 85 10 567 620 90 - 15 20 80 40 384 429 90 - 16 20 85 40 475 528 90 - 17 18 75 20 99 148 90 - 18 15 75 20 179 254 90 - 19 15 80 10 278 345 90 - 20 30 50 10 10 73 90 - 21 30 52 20 0 1135 90 - 22 28 52 20 812 883 90 - 23 28 55 10 732 777 90 - 24 25 50 10 65 144 90 - 25 25 52 40 169 224 90 - 26 25 55 10 0 1130 90 - 27 23 52 10 261 316 90 - 28 23 55 20 546 593 90 - 29 20 50 10 358 405 90 - 30 20 55 10 449 504 90 - 31 10 35 20 0 1112 90 - 32 10 40 30 31 100 90 - 33 8 40 40 87 158 90 - 34 8 45 20 0 1113 90 - 35 5 35 10 283 344 90 - 36 5 45 10 665 716 90 - 37 2 40 20 0 1106 90 - 38 0 40 30 479 522 90 - 39 0 45 20 567 624 90 - 40 35 30 10 264 321 90 - 41 35 32 10 166 235 90 - 42 33 32 20 68 149 90 - 43 33 35 10 16 80 90 - 44 32 30 10 359 412 90 - 45 30 30 10 541 600 90 - 46 30 32 30 448 509 90 - 47 30 35 10 1054 1127 90 - 48 28 30 10 0 1122 90 - 49 28 35 10 1001 1066 90 - 50 26 32 10 0 1123 90 - 51 25 30 10 725 786 90 - 52 25 35 10 0 1124 90 - 53 44 5 20 286 347 90 - 54 42 10 40 186 257 90 - 55 42 15 10 95 158 90 - 56 40 5 30 385 436 90 - 57 40 15 40 35 87 90 - 58 38 5 30 471 534 90 - 59 38 15 10 0 1110 90 - 60 35 5 20 562 629 90 - 61 50 30 10 531 610 90 - 62 50 35 20 262 317 90 - 63 50 40 50 171 218 90 - 64 48 30 10 632 693 90 - 65 48 40 10 76 129 90 - 66 47 35 10 826 875 90 - 67 47 40 10 12 77 90 - 68 45 30 10 734 777 90 - 69 45 35 10 916 969 90 - 70 95 30 30 387 456 90 - 71 95 35 20 293 360 90 - 72 53 30 10 0 1122 90 - 73 92 30 10 478 551 90 - 74 53 35 50 353 412 90 - 75 45 65 20 0 1130 90 - 76 90 35 10 203 260 90 - 77 88 30 10 574 643 90 - 78 88 35 20 109 170 90 - 79 87 30 10 668 731 90 - 80 85 25 10 769 820 90 - 81 85 35 30 47 124 90 - 82 75 55 20 0 1110 90 - 83 72 55 10 0 1113 90 - 84 70 58 20 458 523 90 - 85 68 60 30 0 1116 90 - 86 66 55 10 173 238 90 - 87 65 55 20 85 144 90 - 88 65 60 30 645 708 90 - 89 63 58 10 737 802 90 - 90 60 55 10 20 84 90 - 91 60 60 10 0 1123 90 - 92 67 85 20 368 441 90 - 93 65 85 40 475 518 90 - 94 65 82 10 0 1105 90 - 95 62 80 30 0 1108 90 - 96 60 80 10 0 1109 90 - 97 60 85 30 561 622 90 - 98 58 75 20 0 1115 90 - 99 55 80 10 743 820 90 - 100 55 85 20 647 726 90 diff --git a/jsprit-instances/instances/solomon/C103.txt b/jsprit-instances/instances/solomon/C103.txt deleted file mode 100644 index e6642cec1..000000000 --- a/jsprit-instances/instances/solomon/C103.txt +++ /dev/null @@ -1,110 +0,0 @@ -C103 - -VEHICLE -NUMBER CAPACITY - 25 200 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 40 50 0 0 1236 0 - 1 45 68 10 0 1127 90 - 2 45 70 30 0 1125 90 - 3 42 66 10 0 1129 90 - 4 42 68 10 727 782 90 - 5 42 65 10 0 1130 90 - 6 40 69 20 621 702 90 - 7 40 66 20 0 1130 90 - 8 38 68 20 255 324 90 - 9 38 70 10 534 605 90 - 10 35 66 10 357 410 90 - 11 35 69 10 448 505 90 - 12 25 85 20 0 1107 90 - 13 22 75 30 30 92 90 - 14 22 85 10 0 1106 90 - 15 20 80 40 384 429 90 - 16 20 85 40 0 1105 90 - 17 18 75 20 99 148 90 - 18 15 75 20 0 1110 90 - 19 15 80 10 0 1106 90 - 20 30 50 10 0 1136 90 - 21 30 52 20 0 1135 90 - 22 28 52 20 812 883 90 - 23 28 55 10 732 777 90 - 24 25 50 10 0 1131 90 - 25 25 52 40 169 224 90 - 26 25 55 10 0 1130 90 - 27 23 52 10 261 316 90 - 28 23 55 20 0 1128 90 - 29 20 50 10 0 1126 90 - 30 20 55 10 449 504 90 - 31 10 35 20 0 1112 90 - 32 10 40 30 0 1114 90 - 33 8 40 40 87 158 90 - 34 8 45 20 0 1113 90 - 35 5 35 10 283 344 90 - 36 5 45 10 665 716 90 - 37 2 40 20 0 1106 90 - 38 0 40 30 479 522 90 - 39 0 45 20 567 624 90 - 40 35 30 10 264 321 90 - 41 35 32 10 166 235 90 - 42 33 32 20 68 149 90 - 43 33 35 10 0 1129 90 - 44 32 30 10 359 412 90 - 45 30 30 10 541 600 90 - 46 30 32 30 0 1125 90 - 47 30 35 10 0 1127 90 - 48 28 30 10 0 1122 90 - 49 28 35 10 1001 1066 90 - 50 26 32 10 0 1123 90 - 51 25 30 10 0 1121 90 - 52 25 35 10 0 1124 90 - 53 44 5 20 286 347 90 - 54 42 10 40 0 1105 90 - 55 42 15 10 95 158 90 - 56 40 5 30 385 436 90 - 57 40 15 40 0 1111 90 - 58 38 5 30 471 534 90 - 59 38 15 10 0 1110 90 - 60 35 5 20 0 1100 90 - 61 50 30 10 0 1123 90 - 62 50 35 20 262 317 90 - 63 50 40 50 0 1131 90 - 64 48 30 10 632 693 90 - 65 48 40 10 76 129 90 - 66 47 35 10 826 875 90 - 67 47 40 10 12 77 90 - 68 45 30 10 734 777 90 - 69 45 35 10 916 969 90 - 70 95 30 30 387 456 90 - 71 95 35 20 0 1088 90 - 72 53 30 10 0 1122 90 - 73 92 30 10 0 1090 90 - 74 53 35 50 353 412 90 - 75 45 65 20 0 1130 90 - 76 90 35 10 203 260 90 - 77 88 30 10 574 643 90 - 78 88 35 20 109 170 90 - 79 87 30 10 668 731 90 - 80 85 25 10 769 820 90 - 81 85 35 30 0 1098 90 - 82 75 55 20 0 1110 90 - 83 72 55 10 0 1113 90 - 84 70 58 20 458 523 90 - 85 68 60 30 0 1116 90 - 86 66 55 10 0 1119 90 - 87 65 55 20 85 144 90 - 88 65 60 30 645 708 90 - 89 63 58 10 0 1121 90 - 90 60 55 10 0 1125 90 - 91 60 60 10 0 1123 90 - 92 67 85 20 368 441 90 - 93 65 85 40 475 518 90 - 94 65 82 10 0 1105 90 - 95 62 80 30 0 1108 90 - 96 60 80 10 0 1109 90 - 97 60 85 30 0 1105 90 - 98 58 75 20 0 1115 90 - 99 55 80 10 743 820 90 - 100 55 85 20 647 726 90 diff --git a/jsprit-instances/instances/solomon/C104.txt b/jsprit-instances/instances/solomon/C104.txt deleted file mode 100644 index fe8c3a10f..000000000 --- a/jsprit-instances/instances/solomon/C104.txt +++ /dev/null @@ -1,110 +0,0 @@ -C104 - -VEHICLE -NUMBER CAPACITY - 25 200 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 40 50 0 0 1236 0 - 1 45 68 10 0 1127 90 - 2 45 70 30 0 1125 90 - 3 42 66 10 0 1129 90 - 4 42 68 10 727 782 90 - 5 42 65 10 0 1130 90 - 6 40 69 20 0 1127 90 - 7 40 66 20 0 1130 90 - 8 38 68 20 255 324 90 - 9 38 70 10 534 605 90 - 10 35 66 10 0 1129 90 - 11 35 69 10 448 505 90 - 12 25 85 20 0 1107 90 - 13 22 75 30 30 92 90 - 14 22 85 10 0 1106 90 - 15 20 80 40 384 429 90 - 16 20 85 40 0 1105 90 - 17 18 75 20 0 1112 90 - 18 15 75 20 0 1110 90 - 19 15 80 10 0 1106 90 - 20 30 50 10 0 1136 90 - 21 30 52 20 0 1135 90 - 22 28 52 20 0 1133 90 - 23 28 55 10 732 777 90 - 24 25 50 10 0 1131 90 - 25 25 52 40 169 224 90 - 26 25 55 10 0 1130 90 - 27 23 52 10 0 1128 90 - 28 23 55 20 0 1128 90 - 29 20 50 10 0 1126 90 - 30 20 55 10 0 1125 90 - 31 10 35 20 0 1112 90 - 32 10 40 30 0 1114 90 - 33 8 40 40 0 1112 90 - 34 8 45 20 0 1113 90 - 35 5 35 10 0 1107 90 - 36 5 45 10 0 1110 90 - 37 2 40 20 0 1106 90 - 38 0 40 30 479 522 90 - 39 0 45 20 0 1105 90 - 40 35 30 10 0 1125 90 - 41 35 32 10 0 1127 90 - 42 33 32 20 0 1126 90 - 43 33 35 10 0 1129 90 - 44 32 30 10 359 412 90 - 45 30 30 10 0 1123 90 - 46 30 32 30 0 1125 90 - 47 30 35 10 0 1127 90 - 48 28 30 10 0 1122 90 - 49 28 35 10 0 1126 90 - 50 26 32 10 0 1123 90 - 51 25 30 10 0 1121 90 - 52 25 35 10 0 1124 90 - 53 44 5 20 286 347 90 - 54 42 10 40 0 1105 90 - 55 42 15 10 95 158 90 - 56 40 5 30 0 1101 90 - 57 40 15 40 0 1111 90 - 58 38 5 30 471 534 90 - 59 38 15 10 0 1110 90 - 60 35 5 20 0 1100 90 - 61 50 30 10 0 1123 90 - 62 50 35 20 262 317 90 - 63 50 40 50 0 1131 90 - 64 48 30 10 0 1124 90 - 65 48 40 10 0 1133 90 - 66 47 35 10 0 1129 90 - 67 47 40 10 12 77 90 - 68 45 30 10 0 1125 90 - 69 45 35 10 916 969 90 - 70 95 30 30 0 1087 90 - 71 95 35 20 0 1088 90 - 72 53 30 10 0 1122 90 - 73 92 30 10 0 1090 90 - 74 53 35 50 353 412 90 - 75 45 65 20 0 1130 90 - 76 90 35 10 203 260 90 - 77 88 30 10 574 643 90 - 78 88 35 20 0 1095 90 - 79 87 30 10 668 731 90 - 80 85 25 10 0 1094 90 - 81 85 35 30 0 1098 90 - 82 75 55 20 0 1110 90 - 83 72 55 10 0 1113 90 - 84 70 58 20 458 523 90 - 85 68 60 30 0 1116 90 - 86 66 55 10 0 1119 90 - 87 65 55 20 85 144 90 - 88 65 60 30 0 1119 90 - 89 63 58 10 0 1121 90 - 90 60 55 10 0 1125 90 - 91 60 60 10 0 1123 90 - 92 67 85 20 368 441 90 - 93 65 85 40 0 1102 90 - 94 65 82 10 0 1105 90 - 95 62 80 30 0 1108 90 - 96 60 80 10 0 1109 90 - 97 60 85 30 0 1105 90 - 98 58 75 20 0 1115 90 - 99 55 80 10 743 820 90 - 100 55 85 20 647 726 90 diff --git a/jsprit-instances/instances/solomon/C105.txt b/jsprit-instances/instances/solomon/C105.txt deleted file mode 100644 index 9a2d6b9b3..000000000 --- a/jsprit-instances/instances/solomon/C105.txt +++ /dev/null @@ -1,110 +0,0 @@ -C105 - -VEHICLE -NUMBER CAPACITY - 25 200 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 40 50 0 0 1236 0 - 1 45 68 10 885 994 90 - 2 45 70 30 802 893 90 - 3 42 66 10 25 186 90 - 4 42 68 10 699 810 90 - 5 42 65 10 15 120 90 - 6 40 69 20 580 743 90 - 7 40 66 20 142 253 90 - 8 38 68 20 220 359 90 - 9 38 70 10 499 640 90 - 10 35 66 10 331 436 90 - 11 35 69 10 420 533 90 - 12 25 85 20 617 756 90 - 13 22 75 30 30 155 90 - 14 22 85 10 541 646 90 - 15 20 80 40 362 451 90 - 16 20 85 40 448 555 90 - 17 18 75 20 75 172 90 - 18 15 75 20 142 291 90 - 19 15 80 10 244 379 90 - 20 30 50 10 10 137 90 - 21 30 52 20 888 991 90 - 22 28 52 20 776 919 90 - 23 28 55 10 709 800 90 - 24 25 50 10 25 184 90 - 25 25 52 40 142 251 90 - 26 25 55 10 582 741 90 - 27 23 52 10 234 343 90 - 28 23 55 20 523 616 90 - 29 20 50 10 335 428 90 - 30 20 55 10 422 531 90 - 31 10 35 20 181 256 90 - 32 10 40 30 31 170 90 - 33 8 40 40 52 193 90 - 34 8 45 20 719 848 90 - 35 5 35 10 252 375 90 - 36 5 45 10 639 742 90 - 37 2 40 20 357 460 90 - 38 0 40 30 457 544 90 - 39 0 45 20 538 653 90 - 40 35 30 10 236 349 90 - 41 35 32 10 132 269 90 - 42 33 32 20 27 190 90 - 43 33 35 10 16 144 90 - 44 32 30 10 332 439 90 - 45 30 30 10 512 629 90 - 46 30 32 30 417 540 90 - 47 30 35 10 982 1127 90 - 48 28 30 10 601 724 90 - 49 28 35 10 969 1098 90 - 50 26 32 10 783 912 90 - 51 25 30 10 695 816 90 - 52 25 35 10 883 998 90 - 53 44 5 20 255 378 90 - 54 42 10 40 150 293 90 - 55 42 15 10 63 190 90 - 56 40 5 30 359 462 90 - 57 40 15 40 35 140 90 - 58 38 5 30 439 566 90 - 59 38 15 10 607 784 90 - 60 35 5 20 529 662 90 - 61 50 30 10 491 650 90 - 62 50 35 20 235 344 90 - 63 50 40 50 147 242 90 - 64 48 30 10 601 724 90 - 65 48 40 10 50 155 90 - 66 47 35 10 802 899 90 - 67 47 40 10 12 143 90 - 68 45 30 10 712 799 90 - 69 45 35 10 889 996 90 - 70 95 30 30 353 490 90 - 71 95 35 20 260 393 90 - 72 53 30 10 422 533 90 - 73 92 30 10 442 587 90 - 74 53 35 50 323 442 90 - 75 45 65 20 962 1103 90 - 76 90 35 10 175 288 90 - 77 88 30 10 539 678 90 - 78 88 35 20 78 201 90 - 79 87 30 10 636 763 90 - 80 85 25 10 744 845 90 - 81 85 35 30 47 201 90 - 82 75 55 20 344 445 90 - 83 72 55 10 228 375 90 - 84 70 58 20 425 556 90 - 85 68 60 30 527 640 90 - 86 66 55 10 141 270 90 - 87 65 55 20 56 173 90 - 88 65 60 30 614 739 90 - 89 63 58 10 705 834 90 - 90 60 55 10 20 148 90 - 91 60 60 10 809 916 90 - 92 67 85 20 331 478 90 - 93 65 85 40 453 540 90 - 94 65 82 10 260 361 90 - 95 62 80 30 174 261 90 - 96 60 80 10 64 187 90 - 97 60 85 30 531 652 90 - 98 58 75 20 30 139 90 - 99 55 80 10 705 858 90 - 100 55 85 20 608 765 90 diff --git a/jsprit-instances/instances/solomon/C106.txt b/jsprit-instances/instances/solomon/C106.txt deleted file mode 100644 index ee625d11f..000000000 --- a/jsprit-instances/instances/solomon/C106.txt +++ /dev/null @@ -1,110 +0,0 @@ -C106 - -VEHICLE -NUMBER CAPACITY - 25 200 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 40 50 0 0 1236 0 - 1 45 68 10 890 989 90 - 2 45 70 30 816 879 90 - 3 42 66 10 55 156 90 - 4 42 68 10 703 806 90 - 5 42 65 10 15 60 90 - 6 40 69 20 559 764 90 - 7 40 66 20 172 223 90 - 8 38 68 20 250 329 90 - 9 38 70 10 489 650 90 - 10 35 66 10 361 406 90 - 11 35 69 10 450 503 90 - 12 25 85 20 647 726 90 - 13 22 75 30 30 95 90 - 14 22 85 10 571 616 90 - 15 20 80 40 392 421 90 - 16 20 85 40 478 525 90 - 17 18 75 20 105 142 90 - 18 15 75 20 172 261 90 - 19 15 80 10 274 349 90 - 20 30 50 10 10 77 90 - 21 30 52 20 918 961 90 - 22 28 52 20 806 889 90 - 23 28 55 10 739 770 90 - 24 25 50 10 55 154 90 - 25 25 52 40 172 221 90 - 26 25 55 10 612 711 90 - 27 23 52 10 264 313 90 - 28 23 55 20 553 586 90 - 29 20 50 10 365 398 90 - 30 20 55 10 452 501 90 - 31 10 35 20 204 233 90 - 32 10 40 30 31 189 90 - 33 8 40 40 42 203 90 - 34 8 45 20 715 852 90 - 35 5 35 10 251 376 90 - 36 5 45 10 648 733 90 - 37 2 40 20 365 452 90 - 38 0 40 30 474 527 90 - 39 0 45 20 541 650 90 - 40 35 30 10 240 345 90 - 41 35 32 10 123 278 90 - 42 33 32 20 19 225 90 - 43 33 35 10 16 153 90 - 44 32 30 10 338 433 90 - 45 30 30 10 513 628 90 - 46 30 32 30 415 542 90 - 47 30 35 10 872 1127 90 - 48 28 30 10 599 726 90 - 49 28 35 10 917 1126 90 - 50 26 32 10 779 916 90 - 51 25 30 10 695 816 90 - 52 25 35 10 857 1024 90 - 53 44 5 20 221 412 90 - 54 42 10 40 96 347 90 - 55 42 15 10 35 233 90 - 56 40 5 30 347 474 90 - 57 40 15 40 35 172 90 - 58 38 5 30 403 602 90 - 59 38 15 10 521 870 90 - 60 35 5 20 487 704 90 - 61 50 30 10 422 719 90 - 62 50 35 20 217 362 90 - 63 50 40 50 142 247 90 - 64 48 30 10 567 758 90 - 65 48 40 10 34 171 90 - 66 47 35 10 794 907 90 - 67 47 40 10 12 226 90 - 68 45 30 10 716 795 90 - 69 45 35 10 873 1012 90 - 70 95 30 30 266 577 90 - 71 95 35 20 181 472 90 - 72 53 30 10 402 553 90 - 73 92 30 10 345 684 90 - 74 53 35 50 294 471 90 - 75 45 65 20 951 1114 90 - 76 90 35 10 153 310 90 - 77 88 30 10 450 767 90 - 78 88 35 20 50 237 90 - 79 87 30 10 567 832 90 - 80 85 25 10 713 876 90 - 81 85 35 30 47 331 90 - 82 75 55 20 311 478 90 - 83 72 55 10 127 476 90 - 84 70 58 20 349 632 90 - 85 68 60 30 476 691 90 - 86 66 55 10 67 344 90 - 87 65 55 20 25 256 90 - 88 65 60 30 546 807 90 - 89 63 58 10 630 909 90 - 90 60 55 10 20 293 90 - 91 60 60 10 769 956 90 - 92 67 85 20 229 580 90 - 93 65 85 40 442 551 90 - 94 65 82 10 227 394 90 - 95 62 80 30 163 272 90 - 96 60 80 10 36 291 90 - 97 60 85 30 469 714 90 - 98 58 75 20 30 227 90 - 99 55 80 10 595 968 90 - 100 55 85 20 493 880 90 diff --git a/jsprit-instances/instances/solomon/C107.txt b/jsprit-instances/instances/solomon/C107.txt deleted file mode 100644 index b7e1ba90c..000000000 --- a/jsprit-instances/instances/solomon/C107.txt +++ /dev/null @@ -1,110 +0,0 @@ -C107 - -VEHICLE -NUMBER CAPACITY - 25 200 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 40 50 0 0 1236 0 - 1 45 68 10 850 1030 90 - 2 45 70 30 758 938 90 - 3 42 66 10 16 196 90 - 4 42 68 10 665 845 90 - 5 42 65 10 15 195 90 - 6 40 69 20 572 752 90 - 7 40 66 20 108 288 90 - 8 38 68 20 200 380 90 - 9 38 70 10 480 660 90 - 10 35 66 10 294 474 90 - 11 35 69 10 387 567 90 - 12 25 85 20 597 777 90 - 13 22 75 30 30 210 90 - 14 22 85 10 504 684 90 - 15 20 80 40 317 497 90 - 16 20 85 40 412 592 90 - 17 18 75 20 34 214 90 - 18 15 75 20 127 307 90 - 19 15 80 10 222 402 90 - 20 30 50 10 10 190 90 - 21 30 52 20 850 1030 90 - 22 28 52 20 758 938 90 - 23 28 55 10 665 845 90 - 24 25 50 10 15 195 90 - 25 25 52 40 107 287 90 - 26 25 55 10 572 752 90 - 27 23 52 10 199 379 90 - 28 23 55 20 480 660 90 - 29 20 50 10 292 472 90 - 30 20 55 10 387 567 90 - 31 10 35 20 129 309 90 - 32 10 40 30 31 211 90 - 33 8 40 40 33 213 90 - 34 8 45 20 694 874 90 - 35 5 35 10 224 404 90 - 36 5 45 10 601 781 90 - 37 2 40 20 319 499 90 - 38 0 40 30 411 591 90 - 39 0 45 20 506 686 90 - 40 35 30 10 203 383 90 - 41 35 32 10 111 291 90 - 42 33 32 20 19 199 90 - 43 33 35 10 16 196 90 - 44 32 30 10 296 476 90 - 45 30 30 10 481 661 90 - 46 30 32 30 389 569 90 - 47 30 35 10 947 1127 90 - 48 28 30 10 573 753 90 - 49 28 35 10 944 1124 90 - 50 26 32 10 758 938 90 - 51 25 30 10 666 846 90 - 52 25 35 10 851 1031 90 - 53 44 5 20 227 407 90 - 54 42 10 40 132 312 90 - 55 42 15 10 37 217 90 - 56 40 5 30 321 501 90 - 57 40 15 40 35 215 90 - 58 38 5 30 413 593 90 - 59 38 15 10 606 786 90 - 60 35 5 20 506 686 90 - 61 50 30 10 481 661 90 - 62 50 35 20 200 380 90 - 63 50 40 50 105 285 90 - 64 48 30 10 573 753 90 - 65 48 40 10 13 193 90 - 66 47 35 10 761 941 90 - 67 47 40 10 12 192 90 - 68 45 30 10 666 846 90 - 69 45 35 10 853 1033 90 - 70 95 30 30 332 512 90 - 71 95 35 20 237 417 90 - 72 53 30 10 388 568 90 - 73 92 30 10 425 605 90 - 74 53 35 50 293 473 90 - 75 45 65 20 943 1123 90 - 76 90 35 10 142 322 90 - 77 88 30 10 519 699 90 - 78 88 35 20 50 230 90 - 79 87 30 10 610 790 90 - 80 85 25 10 705 885 90 - 81 85 35 30 47 227 90 - 82 75 55 20 305 485 90 - 83 72 55 10 212 392 90 - 84 70 58 20 401 581 90 - 85 68 60 30 494 674 90 - 86 66 55 10 116 296 90 - 87 65 55 20 25 205 90 - 88 65 60 30 587 767 90 - 89 63 58 10 680 860 90 - 90 60 55 10 20 200 90 - 91 60 60 10 773 953 90 - 92 67 85 20 315 495 90 - 93 65 85 40 407 587 90 - 94 65 82 10 221 401 90 - 95 62 80 30 128 308 90 - 96 60 80 10 36 216 90 - 97 60 85 30 502 682 90 - 98 58 75 20 30 210 90 - 99 55 80 10 692 872 90 - 100 55 85 20 597 777 90 diff --git a/jsprit-instances/instances/solomon/C108.txt b/jsprit-instances/instances/solomon/C108.txt deleted file mode 100644 index 085c8006c..000000000 --- a/jsprit-instances/instances/solomon/C108.txt +++ /dev/null @@ -1,110 +0,0 @@ -C108 - -VEHICLE -NUMBER CAPACITY - 25 200 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 40 50 0 0 1236 0 - 1 45 68 10 830 1049 90 - 2 45 70 30 756 939 90 - 3 42 66 10 16 336 90 - 4 42 68 10 643 866 90 - 5 42 65 10 15 226 90 - 6 40 69 20 499 824 90 - 7 40 66 20 87 308 90 - 8 38 68 20 150 429 90 - 9 38 70 10 429 710 90 - 10 35 66 10 279 488 90 - 11 35 69 10 363 590 90 - 12 25 85 20 547 826 90 - 13 22 75 30 30 280 90 - 14 22 85 10 489 698 90 - 15 20 80 40 318 495 90 - 16 20 85 40 394 609 90 - 17 18 75 20 33 226 90 - 18 15 75 20 68 365 90 - 19 15 80 10 176 447 90 - 20 30 50 10 10 265 90 - 21 30 52 20 836 1043 90 - 22 28 52 20 704 991 90 - 23 28 55 10 664 845 90 - 24 25 50 10 15 333 90 - 25 25 52 40 88 305 90 - 26 25 55 10 502 821 90 - 27 23 52 10 179 398 90 - 28 23 55 20 476 663 90 - 29 20 50 10 288 475 90 - 30 20 55 10 368 585 90 - 31 10 35 20 144 293 90 - 32 10 40 30 31 309 90 - 33 8 40 40 33 313 90 - 34 8 45 20 655 912 90 - 35 5 35 10 191 436 90 - 36 5 45 10 588 793 90 - 37 2 40 20 305 512 90 - 38 0 40 30 414 587 90 - 39 0 45 20 481 710 90 - 40 35 30 10 180 405 90 - 41 35 32 10 63 338 90 - 42 33 32 20 19 345 90 - 43 33 35 10 16 273 90 - 44 32 30 10 278 493 90 - 45 30 30 10 453 688 90 - 46 30 32 30 355 602 90 - 47 30 35 10 837 1127 90 - 48 28 30 10 539 786 90 - 49 28 35 10 867 1126 90 - 50 26 32 10 719 976 90 - 51 25 30 10 635 876 90 - 52 25 35 10 825 1056 90 - 53 44 5 20 193 440 90 - 54 42 10 40 78 365 90 - 55 42 15 10 35 287 90 - 56 40 5 30 308 513 90 - 57 40 15 40 35 246 90 - 58 38 5 30 376 629 90 - 59 38 15 10 519 872 90 - 60 35 5 20 463 728 90 - 61 50 30 10 412 729 90 - 62 50 35 20 181 398 90 - 63 50 40 50 100 289 90 - 64 48 30 10 539 786 90 - 65 48 40 10 12 223 90 - 66 47 35 10 753 948 90 - 67 47 40 10 12 275 90 - 68 45 30 10 669 842 90 - 69 45 35 10 836 1049 90 - 70 95 30 30 284 559 90 - 71 95 35 20 194 459 90 - 72 53 30 10 367 588 90 - 73 92 30 10 370 659 90 - 74 53 35 50 263 502 90 - 75 45 65 20 847 1130 90 - 76 90 35 10 119 344 90 - 77 88 30 10 469 748 90 - 78 88 35 20 50 295 90 - 79 87 30 10 573 826 90 - 80 85 25 10 694 895 90 - 81 85 35 30 47 356 90 - 82 75 55 20 293 496 90 - 83 72 55 10 154 449 90 - 84 70 58 20 360 621 90 - 85 68 60 30 470 697 90 - 86 66 55 10 76 335 90 - 87 65 55 20 25 260 90 - 88 65 60 30 551 802 90 - 89 63 58 10 640 899 90 - 90 60 55 10 20 276 90 - 91 60 60 10 756 969 90 - 92 67 85 20 257 552 90 - 93 65 85 40 409 584 90 - 94 65 82 10 209 412 90 - 95 62 80 30 130 305 90 - 96 60 80 10 36 283 90 - 97 60 85 30 470 713 90 - 98 58 75 20 30 248 90 - 99 55 80 10 628 935 90 - 100 55 85 20 530 843 90 diff --git a/jsprit-instances/instances/solomon/C109.txt b/jsprit-instances/instances/solomon/C109.txt deleted file mode 100644 index b33eb87b5..000000000 --- a/jsprit-instances/instances/solomon/C109.txt +++ /dev/null @@ -1,110 +0,0 @@ -C109 - -VEHICLE -NUMBER CAPACITY - 25 200 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 40 50 0 0 1236 0 - 1 45 68 10 760 1120 90 - 2 45 70 30 668 1028 90 - 3 42 66 10 16 376 90 - 4 42 68 10 575 935 90 - 5 42 65 10 15 375 90 - 6 40 69 20 482 842 90 - 7 40 66 20 18 378 90 - 8 38 68 20 110 470 90 - 9 38 70 10 390 750 90 - 10 35 66 10 204 564 90 - 11 35 69 10 297 657 90 - 12 25 85 20 507 867 90 - 13 22 75 30 30 390 90 - 14 22 85 10 414 774 90 - 15 20 80 40 227 587 90 - 16 20 85 40 322 682 90 - 17 18 75 20 33 393 90 - 18 15 75 20 37 397 90 - 19 15 80 10 132 492 90 - 20 30 50 10 10 370 90 - 21 30 52 20 760 1120 90 - 22 28 52 20 668 1028 90 - 23 28 55 10 575 935 90 - 24 25 50 10 15 375 90 - 25 25 52 40 17 377 90 - 26 25 55 10 482 842 90 - 27 23 52 10 109 469 90 - 28 23 55 20 390 750 90 - 29 20 50 10 202 562 90 - 30 20 55 10 297 657 90 - 31 10 35 20 39 399 90 - 32 10 40 30 31 391 90 - 33 8 40 40 33 393 90 - 34 8 45 20 604 964 90 - 35 5 35 10 134 494 90 - 36 5 45 10 511 871 90 - 37 2 40 20 229 589 90 - 38 0 40 30 321 681 90 - 39 0 45 20 416 776 90 - 40 35 30 10 113 473 90 - 41 35 32 10 21 381 90 - 42 33 32 20 19 379 90 - 43 33 35 10 16 376 90 - 44 32 30 10 206 566 90 - 45 30 30 10 391 751 90 - 46 30 32 30 299 659 90 - 47 30 35 10 767 1127 90 - 48 28 30 10 483 843 90 - 49 28 35 10 766 1126 90 - 50 26 32 10 668 1028 90 - 51 25 30 10 576 936 90 - 52 25 35 10 761 1121 90 - 53 44 5 20 137 497 90 - 54 42 10 40 42 402 90 - 55 42 15 10 35 395 90 - 56 40 5 30 231 591 90 - 57 40 15 40 35 395 90 - 58 38 5 30 323 683 90 - 59 38 15 10 516 876 90 - 60 35 5 20 416 776 90 - 61 50 30 10 391 751 90 - 62 50 35 20 110 470 90 - 63 50 40 50 15 375 90 - 64 48 30 10 483 843 90 - 65 48 40 10 12 372 90 - 66 47 35 10 671 1031 90 - 67 47 40 10 12 372 90 - 68 45 30 10 576 936 90 - 69 45 35 10 763 1123 90 - 70 95 30 30 242 602 90 - 71 95 35 20 147 507 90 - 72 53 30 10 298 658 90 - 73 92 30 10 335 695 90 - 74 53 35 50 203 563 90 - 75 45 65 20 770 1130 90 - 76 90 35 10 52 412 90 - 77 88 30 10 429 789 90 - 78 88 35 20 50 410 90 - 79 87 30 10 520 880 90 - 80 85 25 10 615 975 90 - 81 85 35 30 47 407 90 - 82 75 55 20 215 575 90 - 83 72 55 10 122 482 90 - 84 70 58 20 311 671 90 - 85 68 60 30 404 764 90 - 86 66 55 10 26 386 90 - 87 65 55 20 25 385 90 - 88 65 60 30 497 857 90 - 89 63 58 10 590 950 90 - 90 60 55 10 20 380 90 - 91 60 60 10 683 1043 90 - 92 67 85 20 225 585 90 - 93 65 85 40 317 677 90 - 94 65 82 10 131 491 90 - 95 62 80 30 38 398 90 - 96 60 80 10 36 396 90 - 97 60 85 30 412 772 90 - 98 58 75 20 30 390 90 - 99 55 80 10 602 962 90 - 100 55 85 20 507 867 90 diff --git a/jsprit-instances/instances/solomon/C201.txt b/jsprit-instances/instances/solomon/C201.txt deleted file mode 100644 index c9e29325f..000000000 --- a/jsprit-instances/instances/solomon/C201.txt +++ /dev/null @@ -1,110 +0,0 @@ -C201 - -VEHICLE -NUMBER CAPACITY - 25 700 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 40 50 0 0 3390 0 - 1 52 75 10 311 471 90 - 2 45 70 30 213 373 90 - 3 62 69 10 1167 1327 90 - 4 60 66 10 1261 1421 90 - 5 42 65 10 25 185 90 - 6 16 42 20 497 657 90 - 7 58 70 20 1073 1233 90 - 8 34 60 20 2887 3047 90 - 9 28 70 10 2601 2761 90 - 10 35 66 10 2791 2951 90 - 11 35 69 10 2698 2858 90 - 12 25 85 20 2119 2279 90 - 13 22 75 30 2405 2565 90 - 14 22 85 10 2026 2186 90 - 15 20 80 40 2216 2376 90 - 16 20 85 40 1934 2094 90 - 17 18 75 20 2311 2471 90 - 18 15 75 20 1742 1902 90 - 19 15 80 10 1837 1997 90 - 20 30 50 10 10 170 90 - 21 30 56 20 2983 3143 90 - 22 28 52 20 22 182 90 - 23 14 66 10 1643 1803 90 - 24 25 50 10 116 276 90 - 25 22 66 40 2504 2664 90 - 26 8 62 10 1545 1705 90 - 27 23 52 10 209 369 90 - 28 4 55 20 1447 1607 90 - 29 20 50 10 398 558 90 - 30 20 55 10 303 463 90 - 31 10 35 20 781 941 90 - 32 10 40 30 593 753 90 - 33 8 40 40 685 845 90 - 34 8 45 20 1346 1506 90 - 35 5 35 10 876 1036 90 - 36 5 45 10 1253 1413 90 - 37 2 40 20 971 1131 90 - 38 0 40 30 1063 1223 90 - 39 0 45 20 1158 1318 90 - 40 36 18 10 1819 1979 90 - 41 35 32 10 2758 2918 90 - 42 33 32 20 2666 2826 90 - 43 33 35 10 2573 2733 90 - 44 32 20 10 1913 2073 90 - 45 30 30 10 2105 2265 90 - 46 34 25 30 2009 2169 90 - 47 30 35 10 2480 2640 90 - 48 36 40 10 2856 3016 90 - 49 48 20 10 967 1127 90 - 50 26 32 10 2292 2452 90 - 51 25 30 10 2200 2360 90 - 52 25 35 10 2385 2545 90 - 53 44 5 20 1256 1416 90 - 54 42 10 40 1160 1320 90 - 55 42 15 10 1065 1225 90 - 56 40 5 30 1350 1510 90 - 57 38 15 40 1725 1885 90 - 58 38 5 30 1442 1602 90 - 59 38 10 10 1630 1790 90 - 60 35 5 20 1535 1695 90 - 61 50 30 10 401 561 90 - 62 50 35 20 120 280 90 - 63 50 40 50 25 185 90 - 64 48 30 10 493 653 90 - 65 44 25 10 871 1031 90 - 66 47 35 10 588 748 90 - 67 47 40 10 12 172 90 - 68 42 30 10 776 936 90 - 69 45 35 10 680 840 90 - 70 95 30 30 2321 2481 90 - 71 95 35 20 2226 2386 90 - 72 53 30 10 308 468 90 - 73 92 30 10 2414 2574 90 - 74 53 35 50 213 373 90 - 75 45 65 20 118 278 90 - 76 90 35 10 2131 2291 90 - 77 72 45 10 2900 3060 90 - 78 78 40 20 2802 2962 90 - 79 87 30 10 2608 2768 90 - 80 85 25 10 2513 2673 90 - 81 85 35 30 2703 2863 90 - 82 75 55 20 1925 2085 90 - 83 72 55 10 1832 1992 90 - 84 70 58 20 1641 1801 90 - 85 86 46 30 2029 2189 90 - 86 66 55 10 1736 1896 90 - 87 64 46 20 3097 3257 90 - 88 65 60 30 1546 1706 90 - 89 56 64 10 1355 1515 90 - 90 60 55 10 3119 3279 90 - 91 60 60 10 1451 1611 90 - 92 67 85 20 694 854 90 - 93 42 58 40 8 168 90 - 94 65 82 10 788 948 90 - 95 62 80 30 881 1041 90 - 96 62 40 10 3001 3161 90 - 97 60 85 30 597 757 90 - 98 58 75 20 978 1138 90 - 99 55 80 10 407 567 90 - 100 55 85 20 502 662 90 diff --git a/jsprit-instances/instances/solomon/C202.txt b/jsprit-instances/instances/solomon/C202.txt deleted file mode 100644 index 60a576deb..000000000 --- a/jsprit-instances/instances/solomon/C202.txt +++ /dev/null @@ -1,110 +0,0 @@ -C202 - -VEHICLE -NUMBER CAPACITY - 25 700 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 40 50 0 0 3390 0 - 1 52 75 10 0 3272 90 - 2 45 70 30 0 3279 90 - 3 62 69 10 0 3270 90 - 4 60 66 10 1261 1421 90 - 5 42 65 10 0 3284 90 - 6 16 42 20 497 657 90 - 7 58 70 20 0 3273 90 - 8 34 60 20 2887 3047 90 - 9 28 70 10 2601 2761 90 - 10 35 66 10 2791 2951 90 - 11 35 69 10 2698 2858 90 - 12 25 85 20 0 3261 90 - 13 22 75 30 2405 2565 90 - 14 22 85 10 2026 2186 90 - 15 20 80 40 2216 2376 90 - 16 20 85 40 1934 2094 90 - 17 18 75 20 2311 2471 90 - 18 15 75 20 1742 1902 90 - 19 15 80 10 1837 1997 90 - 20 30 50 10 10 170 90 - 21 30 56 20 0 3288 90 - 22 28 52 20 22 182 90 - 23 14 66 10 1643 1803 90 - 24 25 50 10 116 276 90 - 25 22 66 40 2504 2664 90 - 26 8 62 10 0 3265 90 - 27 23 52 10 209 369 90 - 28 4 55 20 1447 1607 90 - 29 20 50 10 398 558 90 - 30 20 55 10 303 463 90 - 31 10 35 20 0 3266 90 - 32 10 40 30 593 753 90 - 33 8 40 40 685 845 90 - 34 8 45 20 0 3267 90 - 35 5 35 10 876 1036 90 - 36 5 45 10 1253 1413 90 - 37 2 40 20 0 3260 90 - 38 0 40 30 1063 1223 90 - 39 0 45 20 1158 1318 90 - 40 36 18 10 1819 1979 90 - 41 35 32 10 2758 2918 90 - 42 33 32 20 2666 2826 90 - 43 33 35 10 2573 2733 90 - 44 32 20 10 1913 2073 90 - 45 30 30 10 2105 2265 90 - 46 34 25 30 2009 2169 90 - 47 30 35 10 2480 2640 90 - 48 36 40 10 0 3289 90 - 49 48 20 10 967 1127 90 - 50 26 32 10 0 3277 90 - 51 25 30 10 2200 2360 90 - 52 25 35 10 0 3278 90 - 53 44 5 20 1256 1416 90 - 54 42 10 40 1160 1320 90 - 55 42 15 10 1065 1225 90 - 56 40 5 30 1350 1510 90 - 57 38 15 40 1725 1885 90 - 58 38 5 30 1442 1602 90 - 59 38 10 10 0 3259 90 - 60 35 5 20 1535 1695 90 - 61 50 30 10 401 561 90 - 62 50 35 20 120 280 90 - 63 50 40 50 25 185 90 - 64 48 30 10 493 653 90 - 65 44 25 10 871 1031 90 - 66 47 35 10 588 748 90 - 67 47 40 10 12 172 90 - 68 42 30 10 776 936 90 - 69 45 35 10 680 840 90 - 70 95 30 30 2321 2481 90 - 71 95 35 20 2226 2386 90 - 72 53 30 10 0 3276 90 - 73 92 30 10 2414 2574 90 - 74 53 35 50 213 373 90 - 75 45 65 20 0 3284 90 - 76 90 35 10 2131 2291 90 - 77 72 45 10 2900 3060 90 - 78 78 40 20 2802 2962 90 - 79 87 30 10 2608 2768 90 - 80 85 25 10 2513 2673 90 - 81 85 35 30 2703 2863 90 - 82 75 55 20 0 3264 90 - 83 72 55 10 0 3267 90 - 84 70 58 20 1641 1801 90 - 85 86 46 30 0 3253 90 - 86 66 55 10 1736 1896 90 - 87 64 46 20 3097 3257 90 - 88 65 60 30 1546 1706 90 - 89 56 64 10 1355 1515 90 - 90 60 55 10 3119 3279 90 - 91 60 60 10 0 3277 90 - 92 67 85 20 694 854 90 - 93 42 58 40 8 168 90 - 94 65 82 10 0 3259 90 - 95 62 80 30 0 3262 90 - 96 62 40 10 0 3275 90 - 97 60 85 30 597 757 90 - 98 58 75 20 0 3269 90 - 99 55 80 10 407 567 90 - 100 55 85 20 502 662 90 diff --git a/jsprit-instances/instances/solomon/C203.txt b/jsprit-instances/instances/solomon/C203.txt deleted file mode 100644 index 88cd64a2c..000000000 --- a/jsprit-instances/instances/solomon/C203.txt +++ /dev/null @@ -1,110 +0,0 @@ -C203 - -VEHICLE -NUMBER CAPACITY - 25 700 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 40 50 0 0 3390 0 - 1 52 75 10 0 3272 90 - 2 45 70 30 0 3279 90 - 3 62 69 10 0 3270 90 - 4 60 66 10 1261 1421 90 - 5 42 65 10 0 3284 90 - 6 16 42 20 497 657 90 - 7 58 70 20 0 3273 90 - 8 34 60 20 2887 3047 90 - 9 28 70 10 2601 2761 90 - 10 35 66 10 2791 2951 90 - 11 35 69 10 2698 2858 90 - 12 25 85 20 0 3261 90 - 13 22 75 30 2405 2565 90 - 14 22 85 10 0 3260 90 - 15 20 80 40 2216 2376 90 - 16 20 85 40 0 3259 90 - 17 18 75 20 2311 2471 90 - 18 15 75 20 0 3264 90 - 19 15 80 10 0 3260 90 - 20 30 50 10 0 3290 90 - 21 30 56 20 0 3288 90 - 22 28 52 20 22 182 90 - 23 14 66 10 1643 1803 90 - 24 25 50 10 0 3285 90 - 25 22 66 40 2504 2664 90 - 26 8 62 10 0 3265 90 - 27 23 52 10 209 369 90 - 28 4 55 20 0 3263 90 - 29 20 50 10 0 3280 90 - 30 20 55 10 303 463 90 - 31 10 35 20 0 3266 90 - 32 10 40 30 0 3268 90 - 33 8 40 40 685 845 90 - 34 8 45 20 0 3267 90 - 35 5 35 10 876 1036 90 - 36 5 45 10 1253 1413 90 - 37 2 40 20 0 3260 90 - 38 0 40 30 1063 1223 90 - 39 0 45 20 1158 1318 90 - 40 36 18 10 1819 1979 90 - 41 35 32 10 2758 2918 90 - 42 33 32 20 2666 2826 90 - 43 33 35 10 0 3283 90 - 44 32 20 10 1913 2073 90 - 45 30 30 10 2105 2265 90 - 46 34 25 30 0 3274 90 - 47 30 35 10 0 3281 90 - 48 36 40 10 0 3289 90 - 49 48 20 10 967 1127 90 - 50 26 32 10 0 3277 90 - 51 25 30 10 0 3275 90 - 52 25 35 10 0 3278 90 - 53 44 5 20 1256 1416 90 - 54 42 10 40 0 3259 90 - 55 42 15 10 1065 1225 90 - 56 40 5 30 1350 1510 90 - 57 38 15 40 0 3264 90 - 58 38 5 30 1442 1602 90 - 59 38 10 10 0 3259 90 - 60 35 5 20 0 3254 90 - 61 50 30 10 0 3277 90 - 62 50 35 20 120 280 90 - 63 50 40 50 0 3285 90 - 64 48 30 10 493 653 90 - 65 44 25 10 871 1031 90 - 66 47 35 10 588 748 90 - 67 47 40 10 12 172 90 - 68 42 30 10 776 936 90 - 69 45 35 10 680 840 90 - 70 95 30 30 2321 2481 90 - 71 95 35 20 0 3242 90 - 72 53 30 10 0 3276 90 - 73 92 30 10 0 3244 90 - 74 53 35 50 213 373 90 - 75 45 65 20 0 3284 90 - 76 90 35 10 2131 2291 90 - 77 72 45 10 2900 3060 90 - 78 78 40 20 2802 2962 90 - 79 87 30 10 2608 2768 90 - 80 85 25 10 2513 2673 90 - 81 85 35 30 0 3252 90 - 82 75 55 20 0 3264 90 - 83 72 55 10 0 3267 90 - 84 70 58 20 1641 1801 90 - 85 86 46 30 0 3253 90 - 86 66 55 10 0 3273 90 - 87 64 46 20 3097 3257 90 - 88 65 60 30 1546 1706 90 - 89 56 64 10 0 3278 90 - 90 60 55 10 0 3279 90 - 91 60 60 10 0 3277 90 - 92 67 85 20 694 854 90 - 93 42 58 40 8 168 90 - 94 65 82 10 0 3259 90 - 95 62 80 30 0 3262 90 - 96 62 40 10 0 3275 90 - 97 60 85 30 0 3259 90 - 98 58 75 20 0 3269 90 - 99 55 80 10 407 567 90 - 100 55 85 20 502 662 90 diff --git a/jsprit-instances/instances/solomon/C204.txt b/jsprit-instances/instances/solomon/C204.txt deleted file mode 100644 index 727655f01..000000000 --- a/jsprit-instances/instances/solomon/C204.txt +++ /dev/null @@ -1,110 +0,0 @@ -C204 - -VEHICLE -NUMBER CAPACITY - 25 700 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 40 50 0 0 3390 0 - 1 52 75 10 0 3272 90 - 2 45 70 30 0 3279 90 - 3 62 69 10 0 3270 90 - 4 60 66 10 1261 1421 90 - 5 42 65 10 0 3284 90 - 6 16 42 20 0 3274 90 - 7 58 70 20 0 3273 90 - 8 34 60 20 2887 3047 90 - 9 28 70 10 2601 2761 90 - 10 35 66 10 0 3283 90 - 11 35 69 10 2698 2858 90 - 12 25 85 20 0 3261 90 - 13 22 75 30 2405 2565 90 - 14 22 85 10 0 3260 90 - 15 20 80 40 2216 2376 90 - 16 20 85 40 0 3259 90 - 17 18 75 20 0 3266 90 - 18 15 75 20 0 3264 90 - 19 15 80 10 0 3260 90 - 20 30 50 10 0 3290 90 - 21 30 56 20 0 3288 90 - 22 28 52 20 0 3287 90 - 23 14 66 10 1643 1803 90 - 24 25 50 10 0 3285 90 - 25 22 66 40 2504 2664 90 - 26 8 62 10 0 3265 90 - 27 23 52 10 0 3282 90 - 28 4 55 20 0 3263 90 - 29 20 50 10 0 3280 90 - 30 20 55 10 0 3279 90 - 31 10 35 20 0 3266 90 - 32 10 40 30 0 3268 90 - 33 8 40 40 0 3266 90 - 34 8 45 20 0 3267 90 - 35 5 35 10 0 3261 90 - 36 5 45 10 0 3264 90 - 37 2 40 20 0 3260 90 - 38 0 40 30 1063 1223 90 - 39 0 45 20 0 3259 90 - 40 36 18 10 0 3267 90 - 41 35 32 10 0 3281 90 - 42 33 32 20 0 3280 90 - 43 33 35 10 0 3283 90 - 44 32 20 10 1913 2073 90 - 45 30 30 10 0 3277 90 - 46 34 25 30 0 3274 90 - 47 30 35 10 0 3281 90 - 48 36 40 10 0 3289 90 - 49 48 20 10 0 3268 90 - 50 26 32 10 0 3277 90 - 51 25 30 10 0 3275 90 - 52 25 35 10 0 3278 90 - 53 44 5 20 1256 1416 90 - 54 42 10 40 0 3259 90 - 55 42 15 10 1065 1225 90 - 56 40 5 30 0 3255 90 - 57 38 15 40 0 3264 90 - 58 38 5 30 1442 1602 90 - 59 38 10 10 0 3259 90 - 60 35 5 20 0 3254 90 - 61 50 30 10 0 3277 90 - 62 50 35 20 120 280 90 - 63 50 40 50 0 3285 90 - 64 48 30 10 0 3278 90 - 65 44 25 10 0 3274 90 - 66 47 35 10 0 3283 90 - 67 47 40 10 12 172 90 - 68 42 30 10 0 3279 90 - 69 45 35 10 680 840 90 - 70 95 30 30 0 3241 90 - 71 95 35 20 0 3242 90 - 72 53 30 10 0 3276 90 - 73 92 30 10 0 3244 90 - 74 53 35 50 213 373 90 - 75 45 65 20 0 3284 90 - 76 90 35 10 2131 2291 90 - 77 72 45 10 2900 3060 90 - 78 78 40 20 0 3260 90 - 79 87 30 10 2608 2768 90 - 80 85 25 10 0 3248 90 - 81 85 35 30 0 3252 90 - 82 75 55 20 0 3264 90 - 83 72 55 10 0 3267 90 - 84 70 58 20 1641 1801 90 - 85 86 46 30 0 3253 90 - 86 66 55 10 0 3273 90 - 87 64 46 20 3097 3257 90 - 88 65 60 30 0 3273 90 - 89 56 64 10 0 3278 90 - 90 60 55 10 0 3279 90 - 91 60 60 10 0 3277 90 - 92 67 85 20 694 854 90 - 93 42 58 40 0 3291 90 - 94 65 82 10 0 3259 90 - 95 62 80 30 0 3262 90 - 96 62 40 10 0 3275 90 - 97 60 85 30 0 3259 90 - 98 58 75 20 0 3269 90 - 99 55 80 10 407 567 90 - 100 55 85 20 502 662 90 diff --git a/jsprit-instances/instances/solomon/C205.txt b/jsprit-instances/instances/solomon/C205.txt deleted file mode 100644 index 6ad0b3652..000000000 --- a/jsprit-instances/instances/solomon/C205.txt +++ /dev/null @@ -1,110 +0,0 @@ -C205 - -VEHICLE -NUMBER CAPACITY - 25 700 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 40 50 0 0 3390 0 - 1 52 75 10 231 551 90 - 2 45 70 30 133 453 90 - 3 62 69 10 1087 1407 90 - 4 60 66 10 1181 1501 90 - 5 42 65 10 15 335 90 - 6 16 42 20 417 737 90 - 7 58 70 20 993 1313 90 - 8 34 60 20 2807 3127 90 - 9 28 70 10 2521 2841 90 - 10 35 66 10 2711 3031 90 - 11 35 69 10 2618 2938 90 - 12 25 85 20 2039 2359 90 - 13 22 75 30 2325 2645 90 - 14 22 85 10 1946 2266 90 - 15 20 80 40 2136 2456 90 - 16 20 85 40 1854 2174 90 - 17 18 75 20 2231 2551 90 - 18 15 75 20 1662 1982 90 - 19 15 80 10 1757 2077 90 - 20 30 50 10 10 330 90 - 21 30 56 20 2903 3223 90 - 22 28 52 20 12 332 90 - 23 14 66 10 1563 1883 90 - 24 25 50 10 36 356 90 - 25 22 66 40 2424 2744 90 - 26 8 62 10 1465 1785 90 - 27 23 52 10 129 449 90 - 28 4 55 20 1367 1687 90 - 29 20 50 10 318 638 90 - 30 20 55 10 223 543 90 - 31 10 35 20 701 1021 90 - 32 10 40 30 513 833 90 - 33 8 40 40 605 925 90 - 34 8 45 20 1266 1586 90 - 35 5 35 10 796 1116 90 - 36 5 45 10 1173 1493 90 - 37 2 40 20 891 1211 90 - 38 0 40 30 983 1303 90 - 39 0 45 20 1078 1398 90 - 40 36 18 10 1739 2059 90 - 41 35 32 10 2678 2998 90 - 42 33 32 20 2586 2906 90 - 43 33 35 10 2493 2813 90 - 44 32 20 10 1833 2153 90 - 45 30 30 10 2025 2345 90 - 46 34 25 30 1929 2249 90 - 47 30 35 10 2400 2720 90 - 48 36 40 10 2776 3096 90 - 49 48 20 10 887 1207 90 - 50 26 32 10 2212 2532 90 - 51 25 30 10 2120 2440 90 - 52 25 35 10 2305 2625 90 - 53 44 5 20 1176 1496 90 - 54 42 10 40 1080 1400 90 - 55 42 15 10 985 1305 90 - 56 40 5 30 1270 1590 90 - 57 38 15 40 1645 1965 90 - 58 38 5 30 1362 1682 90 - 59 38 10 10 1550 1870 90 - 60 35 5 20 1455 1775 90 - 61 50 30 10 321 641 90 - 62 50 35 20 40 360 90 - 63 50 40 50 14 334 90 - 64 48 30 10 413 733 90 - 65 44 25 10 791 1111 90 - 66 47 35 10 508 828 90 - 67 47 40 10 12 332 90 - 68 42 30 10 696 1016 90 - 69 45 35 10 600 920 90 - 70 95 30 30 2241 2561 90 - 71 95 35 20 2146 2466 90 - 72 53 30 10 228 548 90 - 73 92 30 10 2334 2654 90 - 74 53 35 50 133 453 90 - 75 45 65 20 38 358 90 - 76 90 35 10 2051 2371 90 - 77 72 45 10 2820 3140 90 - 78 78 40 20 2722 3042 90 - 79 87 30 10 2528 2848 90 - 80 85 25 10 2433 2753 90 - 81 85 35 30 2623 2943 90 - 82 75 55 20 1845 2165 90 - 83 72 55 10 1752 2072 90 - 84 70 58 20 1561 1881 90 - 85 86 46 30 1949 2269 90 - 86 66 55 10 1656 1976 90 - 87 64 46 20 2955 3275 90 - 88 65 60 30 1466 1786 90 - 89 56 64 10 1275 1595 90 - 90 60 55 10 2959 3279 90 - 91 60 60 10 1371 1691 90 - 92 67 85 20 614 934 90 - 93 42 58 40 8 328 90 - 94 65 82 10 708 1028 90 - 95 62 80 30 801 1121 90 - 96 62 40 10 2921 3241 90 - 97 60 85 30 517 837 90 - 98 58 75 20 898 1218 90 - 99 55 80 10 327 647 90 - 100 55 85 20 422 742 90 diff --git a/jsprit-instances/instances/solomon/C206.txt b/jsprit-instances/instances/solomon/C206.txt deleted file mode 100644 index 2e81aad77..000000000 --- a/jsprit-instances/instances/solomon/C206.txt +++ /dev/null @@ -1,110 +0,0 @@ -C206 - -VEHICLE -NUMBER CAPACITY - 25 700 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 40 50 0 0 3390 0 - 1 52 75 10 213 568 90 - 2 45 70 30 22 563 90 - 3 62 69 10 1030 1463 90 - 4 60 66 10 1154 1527 90 - 5 42 65 10 15 402 90 - 6 16 42 20 331 822 90 - 7 58 70 20 965 1340 90 - 8 34 60 20 2653 3280 90 - 9 28 70 10 2385 2976 90 - 10 35 66 10 2628 3113 90 - 11 35 69 10 2603 2952 90 - 12 25 85 20 1985 2412 90 - 13 22 75 30 2310 2659 90 - 14 22 85 10 1846 2365 90 - 15 20 80 40 2077 2514 90 - 16 20 85 40 1763 2264 90 - 17 18 75 20 2143 2638 90 - 18 15 75 20 1560 2083 90 - 19 15 80 10 1689 2144 90 - 20 30 50 10 10 645 90 - 21 30 56 20 2675 3288 90 - 22 28 52 20 12 505 90 - 23 14 66 10 1519 1926 90 - 24 25 50 10 23 368 90 - 25 22 66 40 2380 2787 90 - 26 8 62 10 1330 1919 90 - 27 23 52 10 93 484 90 - 28 4 55 20 1268 1785 90 - 29 20 50 10 168 787 90 - 30 20 55 10 170 595 90 - 31 10 35 20 585 1136 90 - 32 10 40 30 448 897 90 - 33 8 40 40 499 1030 90 - 34 8 45 20 1190 1661 90 - 35 5 35 10 666 1245 90 - 36 5 45 10 1076 1589 90 - 37 2 40 20 772 1329 90 - 38 0 40 30 890 1395 90 - 39 0 45 20 1036 1439 90 - 40 36 18 10 1612 2185 90 - 41 35 32 10 2599 3076 90 - 42 33 32 20 2529 2962 90 - 43 33 35 10 2463 2842 90 - 44 32 20 10 1745 2240 90 - 45 30 30 10 1932 2437 90 - 46 34 25 30 1884 2293 90 - 47 30 35 10 2348 2771 90 - 48 36 40 10 2715 3156 90 - 49 48 20 10 812 1281 90 - 50 26 32 10 2018 2725 90 - 51 25 30 10 2015 2544 90 - 52 25 35 10 2201 2728 90 - 53 44 5 20 1078 1593 90 - 54 42 10 40 998 1481 90 - 55 42 15 10 897 1392 90 - 56 40 5 30 1199 1660 90 - 57 38 15 40 1552 2057 90 - 58 38 5 30 1263 1780 90 - 59 38 10 10 1498 1921 90 - 60 35 5 20 1325 1904 90 - 61 50 30 10 223 738 90 - 62 50 35 20 18 474 90 - 63 50 40 50 14 360 90 - 64 48 30 10 246 899 90 - 65 44 25 10 704 1197 90 - 66 47 35 10 393 942 90 - 67 47 40 10 12 424 90 - 68 42 30 10 641 1070 90 - 69 45 35 10 534 985 90 - 70 95 30 30 2119 2682 90 - 71 95 35 20 2079 2532 90 - 72 53 30 10 131 644 90 - 73 92 30 10 2169 2818 90 - 74 53 35 50 87 498 90 - 75 45 65 20 15 607 90 - 76 90 35 10 2002 2419 90 - 77 72 45 10 2701 3258 90 - 78 78 40 20 2599 3164 90 - 79 87 30 10 2505 2870 90 - 80 85 25 10 2369 2816 90 - 81 85 35 30 2563 3002 90 - 82 75 55 20 1783 2226 90 - 83 72 55 10 1591 2232 90 - 84 70 58 20 1513 1928 90 - 85 86 46 30 1829 2388 90 - 86 66 55 10 1604 2027 90 - 87 64 46 20 2976 3275 90 - 88 65 60 30 1338 1913 90 - 89 56 64 10 1116 1753 90 - 90 60 55 10 2789 3279 90 - 91 60 60 10 1349 1712 90 - 92 67 85 20 518 1029 90 - 93 42 58 40 8 509 90 - 94 65 82 10 549 1186 90 - 95 62 80 30 744 1177 90 - 96 62 40 10 2713 3275 90 - 97 60 85 30 397 956 90 - 98 58 75 20 839 1276 90 - 99 55 80 10 272 701 90 - 100 55 85 20 373 790 90 diff --git a/jsprit-instances/instances/solomon/C207.txt b/jsprit-instances/instances/solomon/C207.txt deleted file mode 100644 index 52c30aac2..000000000 --- a/jsprit-instances/instances/solomon/C207.txt +++ /dev/null @@ -1,110 +0,0 @@ -C207 - -VEHICLE -NUMBER CAPACITY - 25 700 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 40 50 0 0 3390 0 - 1 52 75 10 302 479 90 - 2 45 70 30 157 428 90 - 3 62 69 10 1138 1355 90 - 4 60 66 10 1247 1434 90 - 5 42 65 10 15 208 90 - 6 16 42 20 209 944 90 - 7 58 70 20 1059 1246 90 - 8 34 60 20 2035 3288 90 - 9 28 70 10 2090 3271 90 - 10 35 66 10 2311 3283 90 - 11 35 69 10 2428 3127 90 - 12 25 85 20 1772 2625 90 - 13 22 75 30 2135 2834 90 - 14 22 85 10 1586 2625 90 - 15 20 80 40 1858 2733 90 - 16 20 85 40 1512 2515 90 - 17 18 75 20 1895 2886 90 - 18 15 75 20 1299 2344 90 - 19 15 80 10 1461 2372 90 - 20 30 50 10 10 963 90 - 21 30 56 20 2062 3288 90 - 22 28 52 20 12 752 90 - 23 14 66 10 1316 2129 90 - 24 25 50 10 15 532 90 - 25 22 66 40 2177 2990 90 - 26 8 62 10 1036 2213 90 - 27 23 52 10 17 602 90 - 28 4 55 20 1010 2043 90 - 29 20 50 10 20 948 90 - 30 20 55 10 63 702 90 - 31 10 35 20 309 1412 90 - 32 10 40 30 336 1009 90 - 33 8 40 40 234 1295 90 - 34 8 45 20 954 1897 90 - 35 5 35 10 377 1534 90 - 36 5 45 10 819 1846 90 - 37 2 40 20 494 1607 90 - 38 0 40 30 637 1648 90 - 39 0 45 20 834 1641 90 - 40 36 18 10 1468 2329 90 - 41 35 32 10 2480 3195 90 - 42 33 32 20 2421 3070 90 - 43 33 35 10 2368 2937 90 - 44 32 20 10 1621 2364 90 - 45 30 30 10 1805 2564 90 - 46 34 25 30 1782 2395 90 - 47 30 35 10 2242 2877 90 - 48 36 40 10 2605 3266 90 - 49 48 20 10 812 1281 90 - 50 26 32 10 1842 2901 90 - 51 25 30 10 1883 2676 90 - 52 25 35 10 2070 2859 90 - 53 44 5 20 1078 1593 90 - 54 42 10 40 998 1481 90 - 55 42 15 10 897 1392 90 - 56 40 5 30 1083 1776 90 - 57 38 15 40 1426 2183 90 - 58 38 5 30 1133 1910 90 - 59 38 10 10 1392 2027 90 - 60 35 5 20 1180 2049 90 - 61 50 30 10 223 738 90 - 62 50 35 20 18 474 90 - 63 50 40 50 14 360 90 - 64 48 30 10 246 899 90 - 65 44 25 10 704 1197 90 - 66 47 35 10 393 942 90 - 67 47 40 10 12 424 90 - 68 42 30 10 641 1070 90 - 69 45 35 10 534 985 90 - 70 95 30 30 2119 2682 90 - 71 95 35 20 2192 2419 90 - 72 53 30 10 131 644 90 - 73 92 30 10 2169 2818 90 - 74 53 35 50 87 498 90 - 75 45 65 20 49 346 90 - 76 90 35 10 2106 2315 90 - 77 72 45 10 2701 3258 90 - 78 78 40 20 2599 3164 90 - 79 87 30 10 2505 2870 90 - 80 85 25 10 2369 2816 90 - 81 85 35 30 2563 3002 90 - 82 75 55 20 1894 2115 90 - 83 72 55 10 1751 2072 90 - 84 70 58 20 1617 1824 90 - 85 86 46 30 1969 2248 90 - 86 66 55 10 1710 1921 90 - 87 64 46 20 2976 3275 90 - 88 65 60 30 1482 1769 90 - 89 56 64 10 1275 1594 90 - 90 60 55 10 2789 3279 90 - 91 60 60 10 1440 1621 90 - 92 67 85 20 646 901 90 - 93 42 58 40 8 258 90 - 94 65 82 10 708 1027 90 - 95 62 80 30 852 1069 90 - 96 62 40 10 2713 3275 90 - 97 60 85 30 537 816 90 - 98 58 75 20 948 1167 90 - 99 55 80 10 379 594 90 - 100 55 85 20 477 686 90 diff --git a/jsprit-instances/instances/solomon/C208.txt b/jsprit-instances/instances/solomon/C208.txt deleted file mode 100644 index df0e93e8c..000000000 --- a/jsprit-instances/instances/solomon/C208.txt +++ /dev/null @@ -1,110 +0,0 @@ -C208 - -VEHICLE -NUMBER CAPACITY - 25 700 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 40 50 0 0 3390 0 - 1 52 75 10 71 711 90 - 2 45 70 30 20 660 90 - 3 62 69 10 927 1567 90 - 4 60 66 10 1021 1661 90 - 5 42 65 10 15 655 90 - 6 16 42 20 257 897 90 - 7 58 70 20 833 1473 90 - 8 34 60 20 2647 3287 90 - 9 28 70 10 2361 3001 90 - 10 35 66 10 2551 3191 90 - 11 35 69 10 2458 3098 90 - 12 25 85 20 1879 2519 90 - 13 22 75 30 2165 2805 90 - 14 22 85 10 1786 2426 90 - 15 20 80 40 1976 2616 90 - 16 20 85 40 1694 2334 90 - 17 18 75 20 2071 2711 90 - 18 15 75 20 1502 2142 90 - 19 15 80 10 1597 2237 90 - 20 30 50 10 10 650 90 - 21 30 56 20 2648 3288 90 - 22 28 52 20 12 652 90 - 23 14 66 10 1403 2043 90 - 24 25 50 10 15 655 90 - 25 22 66 40 2264 2904 90 - 26 8 62 10 1305 1945 90 - 27 23 52 10 17 657 90 - 28 4 55 20 1207 1847 90 - 29 20 50 10 158 798 90 - 30 20 55 10 63 703 90 - 31 10 35 20 541 1181 90 - 32 10 40 30 353 993 90 - 33 8 40 40 445 1085 90 - 34 8 45 20 1106 1746 90 - 35 5 35 10 636 1276 90 - 36 5 45 10 1013 1653 90 - 37 2 40 20 731 1371 90 - 38 0 40 30 823 1463 90 - 39 0 45 20 918 1558 90 - 40 36 18 10 1579 2219 90 - 41 35 32 10 2518 3158 90 - 42 33 32 20 2426 3066 90 - 43 33 35 10 2333 2973 90 - 44 32 20 10 1673 2313 90 - 45 30 30 10 1865 2505 90 - 46 34 25 30 1769 2409 90 - 47 30 35 10 2240 2880 90 - 48 36 40 10 2616 3256 90 - 49 48 20 10 727 1367 90 - 50 26 32 10 2052 2692 90 - 51 25 30 10 1960 2600 90 - 52 25 35 10 2145 2785 90 - 53 44 5 20 1016 1656 90 - 54 42 10 40 920 1560 90 - 55 42 15 10 825 1465 90 - 56 40 5 30 1110 1750 90 - 57 38 15 40 1485 2125 90 - 58 38 5 30 1202 1842 90 - 59 38 10 10 1390 2030 90 - 60 35 5 20 1295 1935 90 - 61 50 30 10 161 801 90 - 62 50 35 20 18 658 90 - 63 50 40 50 14 654 90 - 64 48 30 10 253 893 90 - 65 44 25 10 631 1271 90 - 66 47 35 10 348 988 90 - 67 47 40 10 12 652 90 - 68 42 30 10 536 1176 90 - 69 45 35 10 440 1080 90 - 70 95 30 30 2081 2721 90 - 71 95 35 20 1986 2626 90 - 72 53 30 10 68 708 90 - 73 92 30 10 2174 2814 90 - 74 53 35 50 19 659 90 - 75 45 65 20 15 655 90 - 76 90 35 10 1891 2531 90 - 77 72 45 10 2627 3267 90 - 78 78 40 20 2562 3202 90 - 79 87 30 10 2368 3008 90 - 80 85 25 10 2273 2913 90 - 81 85 35 30 2463 3103 90 - 82 75 55 20 1685 2325 90 - 83 72 55 10 1592 2232 90 - 84 70 58 20 1401 2041 90 - 85 86 46 30 1789 2429 90 - 86 66 55 10 1496 2136 90 - 87 64 46 20 2635 3275 90 - 88 65 60 30 1306 1946 90 - 89 56 64 10 1115 1755 90 - 90 60 55 10 2639 3279 90 - 91 60 60 10 1211 1851 90 - 92 67 85 20 454 1094 90 - 93 42 58 40 8 648 90 - 94 65 82 10 548 1188 90 - 95 62 80 30 641 1281 90 - 96 62 40 10 2635 3275 90 - 97 60 85 30 357 997 90 - 98 58 75 20 738 1378 90 - 99 55 80 10 167 807 90 - 100 55 85 20 262 902 90 diff --git a/jsprit-instances/instances/solomon/R101.txt b/jsprit-instances/instances/solomon/R101.txt deleted file mode 100644 index 8a9b6e595..000000000 --- a/jsprit-instances/instances/solomon/R101.txt +++ /dev/null @@ -1,110 +0,0 @@ -R101 - -VEHICLE -NUMBER CAPACITY - 25 200 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 35 35 0 0 230 0 - 1 41 49 10 161 171 10 - 2 35 17 7 50 60 10 - 3 55 45 13 116 126 10 - 4 55 20 19 149 159 10 - 5 15 30 26 34 44 10 - 6 25 30 3 99 109 10 - 7 20 50 5 81 91 10 - 8 10 43 9 95 105 10 - 9 55 60 16 97 107 10 - 10 30 60 16 124 134 10 - 11 20 65 12 67 77 10 - 12 50 35 19 63 73 10 - 13 30 25 23 159 169 10 - 14 15 10 20 32 42 10 - 15 30 5 8 61 71 10 - 16 10 20 19 75 85 10 - 17 5 30 2 157 167 10 - 18 20 40 12 87 97 10 - 19 15 60 17 76 86 10 - 20 45 65 9 126 136 10 - 21 45 20 11 62 72 10 - 22 45 10 18 97 107 10 - 23 55 5 29 68 78 10 - 24 65 35 3 153 163 10 - 25 65 20 6 172 182 10 - 26 45 30 17 132 142 10 - 27 35 40 16 37 47 10 - 28 41 37 16 39 49 10 - 29 64 42 9 63 73 10 - 30 40 60 21 71 81 10 - 31 31 52 27 50 60 10 - 32 35 69 23 141 151 10 - 33 53 52 11 37 47 10 - 34 65 55 14 117 127 10 - 35 63 65 8 143 153 10 - 36 2 60 5 41 51 10 - 37 20 20 8 134 144 10 - 38 5 5 16 83 93 10 - 39 60 12 31 44 54 10 - 40 40 25 9 85 95 10 - 41 42 7 5 97 107 10 - 42 24 12 5 31 41 10 - 43 23 3 7 132 142 10 - 44 11 14 18 69 79 10 - 45 6 38 16 32 42 10 - 46 2 48 1 117 127 10 - 47 8 56 27 51 61 10 - 48 13 52 36 165 175 10 - 49 6 68 30 108 118 10 - 50 47 47 13 124 134 10 - 51 49 58 10 88 98 10 - 52 27 43 9 52 62 10 - 53 37 31 14 95 105 10 - 54 57 29 18 140 150 10 - 55 63 23 2 136 146 10 - 56 53 12 6 130 140 10 - 57 32 12 7 101 111 10 - 58 36 26 18 200 210 10 - 59 21 24 28 18 28 10 - 60 17 34 3 162 172 10 - 61 12 24 13 76 86 10 - 62 24 58 19 58 68 10 - 63 27 69 10 34 44 10 - 64 15 77 9 73 83 10 - 65 62 77 20 51 61 10 - 66 49 73 25 127 137 10 - 67 67 5 25 83 93 10 - 68 56 39 36 142 152 10 - 69 37 47 6 50 60 10 - 70 37 56 5 182 192 10 - 71 57 68 15 77 87 10 - 72 47 16 25 35 45 10 - 73 44 17 9 78 88 10 - 74 46 13 8 149 159 10 - 75 49 11 18 69 79 10 - 76 49 42 13 73 83 10 - 77 53 43 14 179 189 10 - 78 61 52 3 96 106 10 - 79 57 48 23 92 102 10 - 80 56 37 6 182 192 10 - 81 55 54 26 94 104 10 - 82 15 47 16 55 65 10 - 83 14 37 11 44 54 10 - 84 11 31 7 101 111 10 - 85 16 22 41 91 101 10 - 86 4 18 35 94 104 10 - 87 28 18 26 93 103 10 - 88 26 52 9 74 84 10 - 89 26 35 15 176 186 10 - 90 31 67 3 95 105 10 - 91 15 19 1 160 170 10 - 92 22 22 2 18 28 10 - 93 18 24 22 188 198 10 - 94 26 27 27 100 110 10 - 95 25 24 20 39 49 10 - 96 22 27 11 135 145 10 - 97 25 21 12 133 143 10 - 98 19 21 10 58 68 10 - 99 20 26 9 83 93 10 - 100 18 18 17 185 195 10 diff --git a/jsprit-instances/instances/solomon/R102.txt b/jsprit-instances/instances/solomon/R102.txt deleted file mode 100644 index c2fcc4ee5..000000000 --- a/jsprit-instances/instances/solomon/R102.txt +++ /dev/null @@ -1,110 +0,0 @@ -R102 - -VEHICLE -NUMBER CAPACITY - 25 200 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 35 35 0 0 230 0 - 1 41 49 10 0 204 10 - 2 35 17 7 0 202 10 - 3 55 45 13 0 197 10 - 4 55 20 19 149 159 10 - 5 15 30 26 0 199 10 - 6 25 30 3 99 109 10 - 7 20 50 5 0 198 10 - 8 10 43 9 95 105 10 - 9 55 60 16 97 107 10 - 10 30 60 16 124 134 10 - 11 20 65 12 67 77 10 - 12 50 35 19 0 205 10 - 13 30 25 23 159 169 10 - 14 15 10 20 32 42 10 - 15 30 5 8 61 71 10 - 16 10 20 19 75 85 10 - 17 5 30 2 157 167 10 - 18 20 40 12 87 97 10 - 19 15 60 17 76 86 10 - 20 45 65 9 126 136 10 - 21 45 20 11 0 201 10 - 22 45 10 18 97 107 10 - 23 55 5 29 68 78 10 - 24 65 35 3 153 163 10 - 25 65 20 6 172 182 10 - 26 45 30 17 0 208 10 - 27 35 40 16 37 47 10 - 28 41 37 16 39 49 10 - 29 64 42 9 63 73 10 - 30 40 60 21 71 81 10 - 31 31 52 27 0 202 10 - 32 35 69 23 141 151 10 - 33 53 52 11 37 47 10 - 34 65 55 14 0 183 10 - 35 63 65 8 143 153 10 - 36 2 60 5 41 51 10 - 37 20 20 8 0 198 10 - 38 5 5 16 83 93 10 - 39 60 12 31 44 54 10 - 40 40 25 9 85 95 10 - 41 42 7 5 97 107 10 - 42 24 12 5 31 41 10 - 43 23 3 7 132 142 10 - 44 11 14 18 69 79 10 - 45 6 38 16 32 42 10 - 46 2 48 1 117 127 10 - 47 8 56 27 51 61 10 - 48 13 52 36 0 192 10 - 49 6 68 30 108 118 10 - 50 47 47 13 0 203 10 - 51 49 58 10 88 98 10 - 52 27 43 9 0 208 10 - 53 37 31 14 95 105 10 - 54 57 29 18 140 150 10 - 55 63 23 2 136 146 10 - 56 53 12 6 130 140 10 - 57 32 12 7 101 111 10 - 58 36 26 18 200 210 10 - 59 21 24 28 0 202 10 - 60 17 34 3 162 172 10 - 61 12 24 13 76 86 10 - 62 24 58 19 58 68 10 - 63 27 69 10 34 44 10 - 64 15 77 9 73 83 10 - 65 62 77 20 51 61 10 - 66 49 73 25 127 137 10 - 67 67 5 25 83 93 10 - 68 56 39 36 142 152 10 - 69 37 47 6 50 60 10 - 70 37 56 5 182 192 10 - 71 57 68 15 77 87 10 - 72 47 16 25 0 197 10 - 73 44 17 9 78 88 10 - 74 46 13 8 149 159 10 - 75 49 11 18 0 192 10 - 76 49 42 13 73 83 10 - 77 53 43 14 179 189 10 - 78 61 52 3 96 106 10 - 79 57 48 23 92 102 10 - 80 56 37 6 182 192 10 - 81 55 54 26 94 104 10 - 82 15 47 16 0 196 10 - 83 14 37 11 0 198 10 - 84 11 31 7 101 111 10 - 85 16 22 41 0 196 10 - 86 4 18 35 94 104 10 - 87 28 18 26 93 103 10 - 88 26 52 9 74 84 10 - 89 26 35 15 176 186 10 - 90 31 67 3 95 105 10 - 91 15 19 1 0 194 10 - 92 22 22 2 18 28 10 - 93 18 24 22 188 198 10 - 94 26 27 27 0 207 10 - 95 25 24 20 0 205 10 - 96 22 27 11 0 204 10 - 97 25 21 12 133 143 10 - 98 19 21 10 0 198 10 - 99 20 26 9 83 93 10 - 100 18 18 17 185 195 10 diff --git a/jsprit-instances/instances/solomon/R103.txt b/jsprit-instances/instances/solomon/R103.txt deleted file mode 100644 index fd96390bf..000000000 --- a/jsprit-instances/instances/solomon/R103.txt +++ /dev/null @@ -1,110 +0,0 @@ -R103 - -VEHICLE -NUMBER CAPACITY - 25 200 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 35 35 0 0 230 0 - 1 41 49 10 0 204 10 - 2 35 17 7 0 202 10 - 3 55 45 13 0 197 10 - 4 55 20 19 149 159 10 - 5 15 30 26 0 199 10 - 6 25 30 3 99 109 10 - 7 20 50 5 0 198 10 - 8 10 43 9 95 105 10 - 9 55 60 16 97 107 10 - 10 30 60 16 124 134 10 - 11 20 65 12 67 77 10 - 12 50 35 19 0 205 10 - 13 30 25 23 159 169 10 - 14 15 10 20 0 187 10 - 15 30 5 8 61 71 10 - 16 10 20 19 0 190 10 - 17 5 30 2 157 167 10 - 18 20 40 12 0 204 10 - 19 15 60 17 0 187 10 - 20 45 65 9 0 188 10 - 21 45 20 11 0 201 10 - 22 45 10 18 97 107 10 - 23 55 5 29 68 78 10 - 24 65 35 3 0 190 10 - 25 65 20 6 172 182 10 - 26 45 30 17 0 208 10 - 27 35 40 16 37 47 10 - 28 41 37 16 0 213 10 - 29 64 42 9 0 190 10 - 30 40 60 21 71 81 10 - 31 31 52 27 0 202 10 - 32 35 69 23 0 186 10 - 33 53 52 11 37 47 10 - 34 65 55 14 0 183 10 - 35 63 65 8 143 153 10 - 36 2 60 5 41 51 10 - 37 20 20 8 0 198 10 - 38 5 5 16 83 93 10 - 39 60 12 31 44 54 10 - 40 40 25 9 85 95 10 - 41 42 7 5 97 107 10 - 42 24 12 5 31 41 10 - 43 23 3 7 0 185 10 - 44 11 14 18 69 79 10 - 45 6 38 16 32 42 10 - 46 2 48 1 0 184 10 - 47 8 56 27 0 185 10 - 48 13 52 36 0 192 10 - 49 6 68 30 108 118 10 - 50 47 47 13 0 203 10 - 51 49 58 10 0 193 10 - 52 27 43 9 0 208 10 - 53 37 31 14 95 105 10 - 54 57 29 18 0 197 10 - 55 63 23 2 136 146 10 - 56 53 12 6 130 140 10 - 57 32 12 7 0 196 10 - 58 36 26 18 200 210 10 - 59 21 24 28 0 202 10 - 60 17 34 3 0 201 10 - 61 12 24 13 0 194 10 - 62 24 58 19 58 68 10 - 63 27 69 10 0 185 10 - 64 15 77 9 73 83 10 - 65 62 77 20 51 61 10 - 66 49 73 25 127 137 10 - 67 67 5 25 83 93 10 - 68 56 39 36 142 152 10 - 69 37 47 6 50 60 10 - 70 37 56 5 182 192 10 - 71 57 68 15 0 180 10 - 72 47 16 25 0 197 10 - 73 44 17 9 0 199 10 - 74 46 13 8 149 159 10 - 75 49 11 18 0 192 10 - 76 49 42 13 73 83 10 - 77 53 43 14 179 189 10 - 78 61 52 3 96 106 10 - 79 57 48 23 92 102 10 - 80 56 37 6 182 192 10 - 81 55 54 26 0 192 10 - 82 15 47 16 0 196 10 - 83 14 37 11 0 198 10 - 84 11 31 7 101 111 10 - 85 16 22 41 0 196 10 - 86 4 18 35 0 184 10 - 87 28 18 26 93 103 10 - 88 26 52 9 74 84 10 - 89 26 35 15 0 211 10 - 90 31 67 3 0 187 10 - 91 15 19 1 0 194 10 - 92 22 22 2 18 28 10 - 93 18 24 22 188 198 10 - 94 26 27 27 0 207 10 - 95 25 24 20 0 205 10 - 96 22 27 11 0 204 10 - 97 25 21 12 0 202 10 - 98 19 21 10 0 198 10 - 99 20 26 9 83 93 10 - 100 18 18 17 185 195 10 diff --git a/jsprit-instances/instances/solomon/R104.txt b/jsprit-instances/instances/solomon/R104.txt deleted file mode 100644 index f77f1cfd4..000000000 --- a/jsprit-instances/instances/solomon/R104.txt +++ /dev/null @@ -1,110 +0,0 @@ -R104 - -VEHICLE -NUMBER CAPACITY - 25 200 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 35 35 0 0 230 0 - 1 41 49 10 0 204 10 - 2 35 17 7 0 202 10 - 3 55 45 13 0 197 10 - 4 55 20 19 149 159 10 - 5 15 30 26 0 199 10 - 6 25 30 3 0 208 10 - 7 20 50 5 0 198 10 - 8 10 43 9 95 105 10 - 9 55 60 16 97 107 10 - 10 30 60 16 0 194 10 - 11 20 65 12 67 77 10 - 12 50 35 19 0 205 10 - 13 30 25 23 159 169 10 - 14 15 10 20 0 187 10 - 15 30 5 8 61 71 10 - 16 10 20 19 0 190 10 - 17 5 30 2 0 189 10 - 18 20 40 12 0 204 10 - 19 15 60 17 0 187 10 - 20 45 65 9 0 188 10 - 21 45 20 11 0 201 10 - 22 45 10 18 0 193 10 - 23 55 5 29 68 78 10 - 24 65 35 3 0 190 10 - 25 65 20 6 172 182 10 - 26 45 30 17 0 208 10 - 27 35 40 16 0 215 10 - 28 41 37 16 0 213 10 - 29 64 42 9 0 190 10 - 30 40 60 21 0 194 10 - 31 31 52 27 0 202 10 - 32 35 69 23 0 186 10 - 33 53 52 11 0 195 10 - 34 65 55 14 0 183 10 - 35 63 65 8 0 178 10 - 36 2 60 5 0 178 10 - 37 20 20 8 0 198 10 - 38 5 5 16 83 93 10 - 39 60 12 31 0 186 10 - 40 40 25 9 0 208 10 - 41 42 7 5 0 191 10 - 42 24 12 5 0 194 10 - 43 23 3 7 0 185 10 - 44 11 14 18 69 79 10 - 45 6 38 16 0 190 10 - 46 2 48 1 0 184 10 - 47 8 56 27 0 185 10 - 48 13 52 36 0 192 10 - 49 6 68 30 0 176 10 - 50 47 47 13 0 203 10 - 51 49 58 10 0 193 10 - 52 27 43 9 0 208 10 - 53 37 31 14 95 105 10 - 54 57 29 18 0 197 10 - 55 63 23 2 136 146 10 - 56 53 12 6 0 190 10 - 57 32 12 7 0 196 10 - 58 36 26 18 200 210 10 - 59 21 24 28 0 202 10 - 60 17 34 3 0 201 10 - 61 12 24 13 0 194 10 - 62 24 58 19 58 68 10 - 63 27 69 10 0 185 10 - 64 15 77 9 0 173 10 - 65 62 77 20 0 170 10 - 66 49 73 25 0 179 10 - 67 67 5 25 83 93 10 - 68 56 39 36 0 198 10 - 69 37 47 6 50 60 10 - 70 37 56 5 0 198 10 - 71 57 68 15 0 180 10 - 72 47 16 25 0 197 10 - 73 44 17 9 0 199 10 - 74 46 13 8 149 159 10 - 75 49 11 18 0 192 10 - 76 49 42 13 73 83 10 - 77 53 43 14 179 189 10 - 78 61 52 3 0 188 10 - 79 57 48 23 92 102 10 - 80 56 37 6 0 198 10 - 81 55 54 26 0 192 10 - 82 15 47 16 0 196 10 - 83 14 37 11 0 198 10 - 84 11 31 7 101 111 10 - 85 16 22 41 0 196 10 - 86 4 18 35 0 184 10 - 87 28 18 26 93 103 10 - 88 26 52 9 0 200 10 - 89 26 35 15 0 211 10 - 90 31 67 3 0 187 10 - 91 15 19 1 0 194 10 - 92 22 22 2 18 28 10 - 93 18 24 22 0 199 10 - 94 26 27 27 0 207 10 - 95 25 24 20 0 205 10 - 96 22 27 11 0 204 10 - 97 25 21 12 0 202 10 - 98 19 21 10 0 198 10 - 99 20 26 9 83 93 10 - 100 18 18 17 185 195 10 diff --git a/jsprit-instances/instances/solomon/R105.txt b/jsprit-instances/instances/solomon/R105.txt deleted file mode 100644 index 8d8f97a29..000000000 --- a/jsprit-instances/instances/solomon/R105.txt +++ /dev/null @@ -1,110 +0,0 @@ -R105 - -VEHICLE -NUMBER CAPACITY - 25 200 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 35 35 0 0 230 0 - 1 41 49 10 151 181 10 - 2 35 17 7 40 70 10 - 3 55 45 13 106 136 10 - 4 55 20 19 139 169 10 - 5 15 30 26 24 54 10 - 6 25 30 3 89 119 10 - 7 20 50 5 71 101 10 - 8 10 43 9 85 115 10 - 9 55 60 16 87 117 10 - 10 30 60 16 114 144 10 - 11 20 65 12 57 87 10 - 12 50 35 19 53 83 10 - 13 30 25 23 149 179 10 - 14 15 10 20 32 62 10 - 15 30 5 8 51 81 10 - 16 10 20 19 65 95 10 - 17 5 30 2 147 177 10 - 18 20 40 12 77 107 10 - 19 15 60 17 66 96 10 - 20 45 65 9 116 146 10 - 21 45 20 11 52 82 10 - 22 45 10 18 87 117 10 - 23 55 5 29 58 88 10 - 24 65 35 3 143 173 10 - 25 65 20 6 156 186 10 - 26 45 30 17 122 152 10 - 27 35 40 16 27 57 10 - 28 41 37 16 29 59 10 - 29 64 42 9 53 83 10 - 30 40 60 21 61 91 10 - 31 31 52 27 40 70 10 - 32 35 69 23 131 161 10 - 33 53 52 11 27 57 10 - 34 65 55 14 107 137 10 - 35 63 65 8 133 163 10 - 36 2 60 5 41 71 10 - 37 20 20 8 124 154 10 - 38 5 5 16 73 103 10 - 39 60 12 31 34 64 10 - 40 40 25 9 75 105 10 - 41 42 7 5 87 117 10 - 42 24 12 5 25 55 10 - 43 23 3 7 122 152 10 - 44 11 14 18 59 89 10 - 45 6 38 16 29 59 10 - 46 2 48 1 107 137 10 - 47 8 56 27 41 71 10 - 48 13 52 36 155 185 10 - 49 6 68 30 98 128 10 - 50 47 47 13 114 144 10 - 51 49 58 10 78 108 10 - 52 27 43 9 42 72 10 - 53 37 31 14 85 115 10 - 54 57 29 18 130 160 10 - 55 63 23 2 126 156 10 - 56 53 12 6 120 150 10 - 57 32 12 7 91 121 10 - 58 36 26 18 180 210 10 - 59 21 24 28 17 47 10 - 60 17 34 3 152 182 10 - 61 12 24 13 66 96 10 - 62 24 58 19 48 78 10 - 63 27 69 10 34 64 10 - 64 15 77 9 63 93 10 - 65 62 77 20 49 79 10 - 66 49 73 25 117 147 10 - 67 67 5 25 73 103 10 - 68 56 39 36 132 162 10 - 69 37 47 6 40 70 10 - 70 37 56 5 168 198 10 - 71 57 68 15 67 97 10 - 72 47 16 25 25 55 10 - 73 44 17 9 68 98 10 - 74 46 13 8 139 169 10 - 75 49 11 18 59 89 10 - 76 49 42 13 63 93 10 - 77 53 43 14 169 199 10 - 78 61 52 3 86 116 10 - 79 57 48 23 82 112 10 - 80 56 37 6 168 198 10 - 81 55 54 26 84 114 10 - 82 15 47 16 45 75 10 - 83 14 37 11 34 64 10 - 84 11 31 7 91 121 10 - 85 16 22 41 81 111 10 - 86 4 18 35 84 114 10 - 87 28 18 26 83 113 10 - 88 26 52 9 64 94 10 - 89 26 35 15 166 196 10 - 90 31 67 3 85 115 10 - 91 15 19 1 150 180 10 - 92 22 22 2 18 48 10 - 93 18 24 22 169 199 10 - 94 26 27 27 90 120 10 - 95 25 24 20 29 59 10 - 96 22 27 11 125 155 10 - 97 25 21 12 123 153 10 - 98 19 21 10 48 78 10 - 99 20 26 9 73 103 10 - 100 18 18 17 165 195 10 diff --git a/jsprit-instances/instances/solomon/R106.txt b/jsprit-instances/instances/solomon/R106.txt deleted file mode 100644 index cce29ba87..000000000 --- a/jsprit-instances/instances/solomon/R106.txt +++ /dev/null @@ -1,110 +0,0 @@ -R106 - -VEHICLE -NUMBER CAPACITY - 25 200 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 35 35 0 0 230 0 - 1 41 49 10 0 204 10 - 2 35 17 7 0 202 10 - 3 55 45 13 0 197 10 - 4 55 20 19 139 169 10 - 5 15 30 26 0 199 10 - 6 25 30 3 89 119 10 - 7 20 50 5 0 198 10 - 8 10 43 9 85 115 10 - 9 55 60 16 87 117 10 - 10 30 60 16 114 144 10 - 11 20 65 12 57 87 10 - 12 50 35 19 0 205 10 - 13 30 25 23 149 179 10 - 14 15 10 20 32 62 10 - 15 30 5 8 51 81 10 - 16 10 20 19 65 95 10 - 17 5 30 2 147 177 10 - 18 20 40 12 77 107 10 - 19 15 60 17 66 96 10 - 20 45 65 9 116 146 10 - 21 45 20 11 0 201 10 - 22 45 10 18 87 117 10 - 23 55 5 29 58 88 10 - 24 65 35 3 143 173 10 - 25 65 20 6 156 186 10 - 26 45 30 17 0 208 10 - 27 35 40 16 27 57 10 - 28 41 37 16 29 59 10 - 29 64 42 9 53 83 10 - 30 40 60 21 61 91 10 - 31 31 52 27 0 202 10 - 32 35 69 23 131 161 10 - 33 53 52 11 27 57 10 - 34 65 55 14 0 183 10 - 35 63 65 8 133 163 10 - 36 2 60 5 41 71 10 - 37 20 20 8 0 198 10 - 38 5 5 16 73 103 10 - 39 60 12 31 34 64 10 - 40 40 25 9 75 105 10 - 41 42 7 5 87 117 10 - 42 24 12 5 25 55 10 - 43 23 3 7 122 152 10 - 44 11 14 18 59 89 10 - 45 6 38 16 29 59 10 - 46 2 48 1 107 137 10 - 47 8 56 27 41 71 10 - 48 13 52 36 0 192 10 - 49 6 68 30 98 128 10 - 50 47 47 13 0 203 10 - 51 49 58 10 78 108 10 - 52 27 43 9 0 208 10 - 53 37 31 14 85 115 10 - 54 57 29 18 130 160 10 - 55 63 23 2 126 156 10 - 56 53 12 6 120 150 10 - 57 32 12 7 91 121 10 - 58 36 26 18 180 210 10 - 59 21 24 28 0 202 10 - 60 17 34 3 152 182 10 - 61 12 24 13 66 96 10 - 62 24 58 19 48 78 10 - 63 27 69 10 34 64 10 - 64 15 77 9 63 93 10 - 65 62 77 20 49 79 10 - 66 49 73 25 117 147 10 - 67 67 5 25 73 103 10 - 68 56 39 36 132 162 10 - 69 37 47 6 40 70 10 - 70 37 56 5 168 198 10 - 71 57 68 15 67 97 10 - 72 47 16 25 0 197 10 - 73 44 17 9 68 98 10 - 74 46 13 8 139 169 10 - 75 49 11 18 0 192 10 - 76 49 42 13 63 93 10 - 77 53 43 14 169 199 10 - 78 61 52 3 86 116 10 - 79 57 48 23 82 112 10 - 80 56 37 6 168 198 10 - 81 55 54 26 84 114 10 - 82 15 47 16 0 196 10 - 83 14 37 11 0 198 10 - 84 11 31 7 91 121 10 - 85 16 22 41 0 196 10 - 86 4 18 35 84 114 10 - 87 28 18 26 83 113 10 - 88 26 52 9 64 94 10 - 89 26 35 15 166 196 10 - 90 31 67 3 85 115 10 - 91 15 19 1 0 194 10 - 92 22 22 2 18 48 10 - 93 18 24 22 169 199 10 - 94 26 27 27 0 207 10 - 95 25 24 20 0 205 10 - 96 22 27 11 0 204 10 - 97 25 21 12 123 153 10 - 98 19 21 10 0 198 10 - 99 20 26 9 73 103 10 - 100 18 18 17 165 195 10 diff --git a/jsprit-instances/instances/solomon/R107.txt b/jsprit-instances/instances/solomon/R107.txt deleted file mode 100644 index ae23ba8f6..000000000 --- a/jsprit-instances/instances/solomon/R107.txt +++ /dev/null @@ -1,110 +0,0 @@ -R107 - -VEHICLE -NUMBER CAPACITY - 25 200 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 35 35 0 0 230 0 - 1 41 49 10 0 204 10 - 2 35 17 7 0 202 10 - 3 55 45 13 0 197 10 - 4 55 20 19 139 169 10 - 5 15 30 26 0 199 10 - 6 25 30 3 89 119 10 - 7 20 50 5 0 198 10 - 8 10 43 9 85 115 10 - 9 55 60 16 87 117 10 - 10 30 60 16 114 144 10 - 11 20 65 12 57 87 10 - 12 50 35 19 0 205 10 - 13 30 25 23 149 179 10 - 14 15 10 20 0 187 10 - 15 30 5 8 51 81 10 - 16 10 20 19 0 190 10 - 17 5 30 2 147 177 10 - 18 20 40 12 0 204 10 - 19 15 60 17 0 187 10 - 20 45 65 9 0 188 10 - 21 45 20 11 0 201 10 - 22 45 10 18 87 117 10 - 23 55 5 29 58 88 10 - 24 65 35 3 0 190 10 - 25 65 20 6 156 186 10 - 26 45 30 17 0 208 10 - 27 35 40 16 27 57 10 - 28 41 37 16 0 213 10 - 29 64 42 9 0 190 10 - 30 40 60 21 61 91 10 - 31 31 52 27 0 202 10 - 32 35 69 23 0 186 10 - 33 53 52 11 27 57 10 - 34 65 55 14 0 183 10 - 35 63 65 8 133 163 10 - 36 2 60 5 41 71 10 - 37 20 20 8 0 198 10 - 38 5 5 16 73 103 10 - 39 60 12 31 34 64 10 - 40 40 25 9 75 105 10 - 41 42 7 5 87 117 10 - 42 24 12 5 25 55 10 - 43 23 3 7 0 185 10 - 44 11 14 18 59 89 10 - 45 6 38 16 29 59 10 - 46 2 48 1 0 184 10 - 47 8 56 27 0 185 10 - 48 13 52 36 0 192 10 - 49 6 68 30 98 128 10 - 50 47 47 13 0 203 10 - 51 49 58 10 0 193 10 - 52 27 43 9 0 208 10 - 53 37 31 14 85 115 10 - 54 57 29 18 0 197 10 - 55 63 23 2 126 156 10 - 56 53 12 6 120 150 10 - 57 32 12 7 0 196 10 - 58 36 26 18 180 210 10 - 59 21 24 28 0 202 10 - 60 17 34 3 0 201 10 - 61 12 24 13 0 194 10 - 62 24 58 19 48 78 10 - 63 27 69 10 0 185 10 - 64 15 77 9 63 93 10 - 65 62 77 20 49 79 10 - 66 49 73 25 117 147 10 - 67 67 5 25 73 103 10 - 68 56 39 36 132 162 10 - 69 37 47 6 40 70 10 - 70 37 56 5 168 198 10 - 71 57 68 15 0 180 10 - 72 47 16 25 0 197 10 - 73 44 17 9 0 199 10 - 74 46 13 8 139 169 10 - 75 49 11 18 0 192 10 - 76 49 42 13 63 93 10 - 77 53 43 14 169 199 10 - 78 61 52 3 86 116 10 - 79 57 48 23 82 112 10 - 80 56 37 6 168 198 10 - 81 55 54 26 0 192 10 - 82 15 47 16 0 196 10 - 83 14 37 11 0 198 10 - 84 11 31 7 91 121 10 - 85 16 22 41 0 196 10 - 86 4 18 35 0 184 10 - 87 28 18 26 83 113 10 - 88 26 52 9 64 94 10 - 89 26 35 15 0 211 10 - 90 31 67 3 0 187 10 - 91 15 19 1 0 194 10 - 92 22 22 2 18 48 10 - 93 18 24 22 169 199 10 - 94 26 27 27 0 207 10 - 95 25 24 20 0 205 10 - 96 22 27 11 0 204 10 - 97 25 21 12 0 202 10 - 98 19 21 10 0 198 10 - 99 20 26 9 73 103 10 - 100 18 18 17 165 195 10 diff --git a/jsprit-instances/instances/solomon/R108.txt b/jsprit-instances/instances/solomon/R108.txt deleted file mode 100644 index 0845d8450..000000000 --- a/jsprit-instances/instances/solomon/R108.txt +++ /dev/null @@ -1,110 +0,0 @@ -R108 - -VEHICLE -NUMBER CAPACITY - 25 200 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 35 35 0 0 230 0 - 1 41 49 10 0 204 10 - 2 35 17 7 0 202 10 - 3 55 45 13 0 197 10 - 4 55 20 19 139 169 10 - 5 15 30 26 0 199 10 - 6 25 30 3 0 208 10 - 7 20 50 5 0 198 10 - 8 10 43 9 85 115 10 - 9 55 60 16 87 117 10 - 10 30 60 16 0 194 10 - 11 20 65 12 57 87 10 - 12 50 35 19 0 205 10 - 13 30 25 23 149 179 10 - 14 15 10 20 0 187 10 - 15 30 5 8 51 81 10 - 16 10 20 19 0 190 10 - 17 5 30 2 0 189 10 - 18 20 40 12 0 204 10 - 19 15 60 17 0 187 10 - 20 45 65 9 0 188 10 - 21 45 20 11 0 201 10 - 22 45 10 18 0 193 10 - 23 55 5 29 58 88 10 - 24 65 35 3 0 190 10 - 25 65 20 6 156 186 10 - 26 45 30 17 0 208 10 - 27 35 40 16 0 215 10 - 28 41 37 16 0 213 10 - 29 64 42 9 0 190 10 - 30 40 60 21 0 194 10 - 31 31 52 27 0 202 10 - 32 35 69 23 0 186 10 - 33 53 52 11 0 195 10 - 34 65 55 14 0 183 10 - 35 63 65 8 0 178 10 - 36 2 60 5 0 178 10 - 37 20 20 8 0 198 10 - 38 5 5 16 73 103 10 - 39 60 12 31 0 186 10 - 40 40 25 9 0 208 10 - 41 42 7 5 0 191 10 - 42 24 12 5 0 194 10 - 43 23 3 7 0 185 10 - 44 11 14 18 59 89 10 - 45 6 38 16 0 190 10 - 46 2 48 1 0 184 10 - 47 8 56 27 0 185 10 - 48 13 52 36 0 192 10 - 49 6 68 30 0 176 10 - 50 47 47 13 0 203 10 - 51 49 58 10 0 193 10 - 52 27 43 9 0 208 10 - 53 37 31 14 85 115 10 - 54 57 29 18 0 197 10 - 55 63 23 2 126 156 10 - 56 53 12 6 0 190 10 - 57 32 12 7 0 196 10 - 58 36 26 18 180 210 10 - 59 21 24 28 0 202 10 - 60 17 34 3 0 201 10 - 61 12 24 13 0 194 10 - 62 24 58 19 48 78 10 - 63 27 69 10 0 185 10 - 64 15 77 9 0 173 10 - 65 62 77 20 0 170 10 - 66 49 73 25 0 179 10 - 67 67 5 25 73 103 10 - 68 56 39 36 0 198 10 - 69 37 47 6 40 70 10 - 70 37 56 5 0 198 10 - 71 57 68 15 0 180 10 - 72 47 16 25 0 197 10 - 73 44 17 9 0 199 10 - 74 46 13 8 139 169 10 - 75 49 11 18 0 192 10 - 76 49 42 13 63 93 10 - 77 53 43 14 169 199 10 - 78 61 52 3 0 188 10 - 79 57 48 23 82 112 10 - 80 56 37 6 0 198 10 - 81 55 54 26 0 192 10 - 82 15 47 16 0 196 10 - 83 14 37 11 0 198 10 - 84 11 31 7 91 121 10 - 85 16 22 41 0 196 10 - 86 4 18 35 0 184 10 - 87 28 18 26 83 113 10 - 88 26 52 9 0 200 10 - 89 26 35 15 0 211 10 - 90 31 67 3 0 187 10 - 91 15 19 1 0 194 10 - 92 22 22 2 18 48 10 - 93 18 24 22 0 199 10 - 94 26 27 27 0 207 10 - 95 25 24 20 0 205 10 - 96 22 27 11 0 204 10 - 97 25 21 12 0 202 10 - 98 19 21 10 0 198 10 - 99 20 26 9 73 103 10 - 100 18 18 17 165 195 10 diff --git a/jsprit-instances/instances/solomon/R109.txt b/jsprit-instances/instances/solomon/R109.txt deleted file mode 100644 index 7a041ffea..000000000 --- a/jsprit-instances/instances/solomon/R109.txt +++ /dev/null @@ -1,110 +0,0 @@ -R109 - -VEHICLE -NUMBER CAPACITY - 25 200 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 35 35 0 0 230 0 - 1 41 49 10 133 198 10 - 2 35 17 7 22 87 10 - 3 55 45 13 98 143 10 - 4 55 20 19 123 184 10 - 5 15 30 26 20 93 10 - 6 25 30 3 76 131 10 - 7 20 50 5 61 110 10 - 8 10 43 9 75 124 10 - 9 55 60 16 74 129 10 - 10 30 60 16 107 150 10 - 11 20 65 12 42 101 10 - 12 50 35 19 38 97 10 - 13 30 25 23 131 196 10 - 14 15 10 20 32 114 10 - 15 30 5 8 35 96 10 - 16 10 20 19 52 107 10 - 17 5 30 2 124 189 10 - 18 20 40 12 69 114 10 - 19 15 60 17 52 109 10 - 20 45 65 9 105 156 10 - 21 45 20 11 37 96 10 - 22 45 10 18 76 127 10 - 23 55 5 29 43 102 10 - 24 65 35 3 124 190 10 - 25 65 20 6 121 186 10 - 26 45 30 17 112 161 10 - 27 35 40 16 8 75 10 - 28 41 37 16 11 76 10 - 29 64 42 9 37 98 10 - 30 40 60 21 49 102 10 - 31 31 52 27 24 85 10 - 32 35 69 23 116 175 10 - 33 53 52 11 24 92 10 - 34 65 55 14 96 147 10 - 35 63 65 8 116 178 10 - 36 2 60 5 41 112 10 - 37 20 20 8 113 164 10 - 38 5 5 16 60 115 10 - 39 60 12 31 33 110 10 - 40 40 25 9 65 114 10 - 41 42 7 5 72 131 10 - 42 24 12 5 25 91 10 - 43 23 3 7 111 162 10 - 44 11 14 18 45 102 10 - 45 6 38 16 29 99 10 - 46 2 48 1 92 151 10 - 47 8 56 27 34 105 10 - 48 13 52 36 128 192 10 - 49 6 68 30 93 132 10 - 50 47 47 13 102 155 10 - 51 49 58 10 64 121 10 - 52 27 43 9 26 87 10 - 53 37 31 14 75 124 10 - 54 57 29 18 118 171 10 - 55 63 23 2 111 170 10 - 56 53 12 6 106 163 10 - 57 32 12 7 77 134 10 - 58 36 26 18 147 210 10 - 59 21 24 28 17 100 10 - 60 17 34 3 134 199 10 - 61 12 24 13 55 106 10 - 62 24 58 19 30 95 10 - 63 27 69 10 34 103 10 - 64 15 77 9 48 107 10 - 65 62 77 20 49 113 10 - 66 49 73 25 104 159 10 - 67 67 5 25 59 116 10 - 68 56 39 36 117 176 10 - 69 37 47 6 23 86 10 - 70 37 56 5 123 198 10 - 71 57 68 15 54 109 10 - 72 47 16 25 22 96 10 - 73 44 17 9 56 109 10 - 74 46 13 8 123 184 10 - 75 49 11 18 45 102 10 - 76 49 42 13 52 103 10 - 77 53 43 14 136 200 10 - 78 61 52 3 71 130 10 - 79 57 48 23 72 121 10 - 80 56 37 6 135 198 10 - 81 55 54 26 78 119 10 - 82 15 47 16 29 90 10 - 83 14 37 11 21 89 10 - 84 11 31 7 81 130 10 - 85 16 22 41 70 121 10 - 86 4 18 35 74 123 10 - 87 28 18 26 79 116 10 - 88 26 52 9 50 107 10 - 89 26 35 15 139 211 10 - 90 31 67 3 73 126 10 - 91 15 19 1 132 194 10 - 92 22 22 2 18 88 10 - 93 18 24 22 129 199 10 - 94 26 27 27 81 128 10 - 95 25 24 20 14 78 10 - 96 22 27 11 114 165 10 - 97 25 21 12 115 160 10 - 98 19 21 10 32 93 10 - 99 20 26 9 60 115 10 - 100 18 18 17 123 195 10 diff --git a/jsprit-instances/instances/solomon/R110.txt b/jsprit-instances/instances/solomon/R110.txt deleted file mode 100644 index 3372cb2d5..000000000 --- a/jsprit-instances/instances/solomon/R110.txt +++ /dev/null @@ -1,110 +0,0 @@ -R110 - -VEHICLE -NUMBER CAPACITY - 25 200 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 35 35 0 0 230 0 - 1 41 49 10 130 201 10 - 2 35 17 7 20 89 10 - 3 55 45 13 106 135 10 - 4 55 20 19 71 195 10 - 5 15 30 26 20 107 10 - 6 25 30 3 54 153 10 - 7 20 50 5 66 105 10 - 8 10 43 9 61 138 10 - 9 55 60 16 53 150 10 - 10 30 60 16 101 156 10 - 11 20 65 12 33 152 10 - 12 50 35 19 38 97 10 - 13 30 25 23 70 208 10 - 14 15 10 20 32 137 10 - 15 30 5 8 30 154 10 - 16 10 20 19 54 105 10 - 17 5 30 2 51 189 10 - 18 20 40 12 77 106 10 - 19 15 60 17 53 108 10 - 20 45 65 9 109 152 10 - 21 45 20 11 37 96 10 - 22 45 10 18 59 144 10 - 23 55 5 29 36 155 10 - 24 65 35 3 118 190 10 - 25 65 20 6 47 186 10 - 26 45 30 17 117 156 10 - 27 35 40 16 5 156 10 - 28 41 37 16 8 79 10 - 29 64 42 9 37 98 10 - 30 40 60 21 28 123 10 - 31 31 52 27 24 85 10 - 32 35 69 23 116 175 10 - 33 53 52 11 24 179 10 - 34 65 55 14 100 143 10 - 35 63 65 8 50 178 10 - 36 2 60 5 41 178 10 - 37 20 20 8 117 160 10 - 38 5 5 16 42 145 10 - 39 60 12 31 33 186 10 - 40 40 25 9 51 128 10 - 41 42 7 5 44 159 10 - 42 24 12 5 25 172 10 - 43 23 3 7 115 158 10 - 44 11 14 18 31 138 10 - 45 6 38 16 29 189 10 - 46 2 48 1 93 150 10 - 47 8 56 27 34 116 10 - 48 13 52 36 125 192 10 - 49 6 68 30 93 132 10 - 50 47 47 13 105 152 10 - 51 49 58 10 66 119 10 - 52 27 43 9 25 88 10 - 53 37 31 14 62 137 10 - 54 57 29 18 121 168 10 - 55 63 23 2 70 189 10 - 56 53 12 6 81 188 10 - 57 32 12 7 78 133 10 - 58 36 26 18 79 210 10 - 59 21 24 28 17 123 10 - 60 17 34 3 130 201 10 - 61 12 24 13 59 102 10 - 62 24 58 19 25 164 10 - 63 27 69 10 34 112 10 - 64 15 77 9 46 165 10 - 65 62 77 20 49 170 10 - 66 49 73 25 77 179 10 - 67 67 5 25 43 150 10 - 68 56 39 36 82 198 10 - 69 37 47 6 12 142 10 - 70 37 56 5 21 198 10 - 71 57 68 15 57 106 10 - 72 47 16 25 22 110 10 - 73 44 17 9 60 105 10 - 74 46 13 8 73 195 10 - 75 49 11 18 46 101 10 - 76 49 42 13 36 119 10 - 77 53 43 14 65 200 10 - 78 61 52 3 43 158 10 - 79 57 48 23 58 135 10 - 80 56 37 6 69 198 10 - 81 55 54 26 87 110 10 - 82 15 47 16 28 91 10 - 83 14 37 11 21 97 10 - 84 11 31 7 68 143 10 - 85 16 22 41 74 117 10 - 86 4 18 35 79 118 10 - 87 28 18 26 84 111 10 - 88 26 52 9 24 133 10 - 89 26 35 15 128 211 10 - 90 31 67 3 76 123 10 - 91 15 19 1 130 194 10 - 92 22 22 2 18 181 10 - 93 18 24 22 41 199 10 - 94 26 27 27 88 121 10 - 95 25 24 20 14 83 10 - 96 22 27 11 119 160 10 - 97 25 21 12 122 153 10 - 98 19 21 10 32 93 10 - 99 20 26 9 38 137 10 - 100 18 18 17 28 195 10 diff --git a/jsprit-instances/instances/solomon/R111.txt b/jsprit-instances/instances/solomon/R111.txt deleted file mode 100644 index ba3b3e31c..000000000 --- a/jsprit-instances/instances/solomon/R111.txt +++ /dev/null @@ -1,110 +0,0 @@ -R111 - -VEHICLE -NUMBER CAPACITY - 25 200 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 35 35 0 0 230 0 - 1 41 49 10 15 204 10 - 2 35 17 7 18 202 10 - 3 55 45 13 54 187 10 - 4 55 20 19 138 169 10 - 5 15 30 26 20 199 10 - 6 25 30 3 76 131 10 - 7 20 50 5 21 170 10 - 8 10 43 9 87 112 10 - 9 55 60 16 88 115 10 - 10 30 60 16 107 150 10 - 11 20 65 12 57 86 10 - 12 50 35 19 15 192 10 - 13 30 25 23 147 180 10 - 14 15 10 20 32 187 10 - 15 30 5 8 50 81 10 - 16 10 20 19 29 139 10 - 17 5 30 2 124 189 10 - 18 20 40 12 47 136 10 - 19 15 60 17 32 146 10 - 20 45 65 9 79 182 10 - 21 45 20 11 18 195 10 - 22 45 10 18 76 127 10 - 23 55 5 29 58 87 10 - 24 65 35 3 58 190 10 - 25 65 20 6 153 186 10 - 26 45 30 17 58 208 10 - 27 35 40 16 8 75 10 - 28 41 37 16 6 136 10 - 29 64 42 9 29 150 10 - 30 40 60 21 49 102 10 - 31 31 52 27 17 198 10 - 32 35 69 23 67 186 10 - 33 53 52 11 24 92 10 - 34 65 55 14 36 183 10 - 35 63 65 8 116 178 10 - 36 2 60 5 41 112 10 - 37 20 20 8 42 198 10 - 38 5 5 16 74 101 10 - 39 60 12 31 33 110 10 - 40 40 25 9 65 114 10 - 41 42 7 5 72 131 10 - 42 24 12 5 25 91 10 - 43 23 3 7 82 185 10 - 44 11 14 18 59 88 10 - 45 6 38 16 29 99 10 - 46 2 48 1 63 180 10 - 47 8 56 27 34 176 10 - 48 13 52 36 27 192 10 - 49 6 68 30 93 132 10 - 50 47 47 13 41 203 10 - 51 49 58 10 36 149 10 - 52 27 43 9 11 195 10 - 53 37 31 14 87 112 10 - 54 57 29 18 90 197 10 - 55 63 23 2 126 155 10 - 56 53 12 6 106 163 10 - 57 32 12 7 48 163 10 - 58 36 26 18 178 210 10 - 59 21 24 28 17 202 10 - 60 17 34 3 70 201 10 - 61 12 24 13 29 132 10 - 62 24 58 19 46 79 10 - 63 27 69 10 34 172 10 - 64 15 77 9 48 107 10 - 65 62 77 20 49 113 10 - 66 49 73 25 104 159 10 - 67 67 5 25 73 102 10 - 68 56 39 36 117 176 10 - 69 37 47 6 39 70 10 - 70 37 56 5 123 198 10 - 71 57 68 15 39 148 10 - 72 47 16 25 22 197 10 - 73 44 17 9 30 135 10 - 74 46 13 8 138 169 10 - 75 49 11 18 27 192 10 - 76 49 42 13 65 90 10 - 77 53 43 14 168 199 10 - 78 61 52 3 71 130 10 - 79 57 48 23 84 109 10 - 80 56 37 6 135 198 10 - 81 55 54 26 57 140 10 - 82 15 47 16 23 196 10 - 83 14 37 11 21 198 10 - 84 11 31 7 93 118 10 - 85 16 22 41 23 177 10 - 86 4 18 35 49 148 10 - 87 28 18 26 88 107 10 - 88 26 52 9 50 107 10 - 89 26 35 15 68 211 10 - 90 31 67 3 46 153 10 - 91 15 19 1 25 194 10 - 92 22 22 2 18 53 10 - 93 18 24 22 129 199 10 - 94 26 27 27 35 174 10 - 95 25 24 20 14 205 10 - 96 22 27 11 51 204 10 - 97 25 21 12 92 183 10 - 98 19 21 10 21 198 10 - 99 20 26 9 74 101 10 - 100 18 18 17 159 195 10 diff --git a/jsprit-instances/instances/solomon/R112.txt b/jsprit-instances/instances/solomon/R112.txt deleted file mode 100644 index 5a10af7f2..000000000 --- a/jsprit-instances/instances/solomon/R112.txt +++ /dev/null @@ -1,110 +0,0 @@ -R112 - -VEHICLE -NUMBER CAPACITY - 25 200 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 35 35 0 0 230 0 - 1 41 49 10 73 204 10 - 2 35 17 7 18 147 10 - 3 55 45 13 76 165 10 - 4 55 20 19 73 195 10 - 5 15 30 26 20 167 10 - 6 25 30 3 49 158 10 - 7 20 50 5 36 135 10 - 8 10 43 9 50 149 10 - 9 55 60 16 47 156 10 - 10 30 60 16 85 172 10 - 11 20 65 12 33 152 10 - 12 50 35 19 15 133 10 - 13 30 25 23 79 208 10 - 14 15 10 20 32 187 10 - 15 30 5 8 30 152 10 - 16 10 20 19 29 139 10 - 17 5 30 2 60 189 10 - 18 20 40 12 47 136 10 - 19 15 60 17 32 146 10 - 20 45 65 9 79 182 10 - 21 45 20 11 18 136 10 - 22 45 10 18 50 153 10 - 23 55 5 29 36 155 10 - 24 65 35 3 58 190 10 - 25 65 20 6 56 186 10 - 26 45 30 17 87 186 10 - 27 35 40 16 5 140 10 - 28 41 37 16 6 136 10 - 29 64 42 9 29 150 10 - 30 40 60 21 25 132 10 - 31 31 52 27 17 138 10 - 32 35 69 23 67 186 10 - 33 53 52 11 24 161 10 - 34 65 55 14 70 173 10 - 35 63 65 8 54 178 10 - 36 2 60 5 41 178 10 - 37 20 20 8 87 190 10 - 38 5 5 16 42 153 10 - 39 60 12 31 33 186 10 - 40 40 25 9 40 139 10 - 41 42 7 5 43 160 10 - 42 24 12 5 25 158 10 - 43 23 3 7 82 185 10 - 44 11 14 18 31 144 10 - 45 6 38 16 29 169 10 - 46 2 48 1 63 180 10 - 47 8 56 27 34 176 10 - 48 13 52 36 65 192 10 - 49 6 68 30 73 152 10 - 50 47 47 13 75 182 10 - 51 49 58 10 36 149 10 - 52 27 43 9 11 133 10 - 53 37 31 14 51 148 10 - 54 57 29 18 90 197 10 - 55 63 23 2 69 189 10 - 56 53 12 6 76 190 10 - 57 32 12 7 48 163 10 - 58 36 26 18 84 210 10 - 59 21 24 28 17 183 10 - 60 17 34 3 70 201 10 - 61 12 24 13 29 132 10 - 62 24 58 19 25 154 10 - 63 27 69 10 34 172 10 - 64 15 77 9 46 165 10 - 65 62 77 20 49 170 10 - 66 49 73 25 68 179 10 - 67 67 5 25 43 156 10 - 68 56 39 36 80 198 10 - 69 37 47 6 12 137 10 - 70 37 56 5 48 198 10 - 71 57 68 15 39 148 10 - 72 47 16 25 22 170 10 - 73 44 17 9 30 135 10 - 74 46 13 8 74 195 10 - 75 49 11 18 27 141 10 - 76 49 42 13 27 128 10 - 77 53 43 14 72 200 10 - 78 61 52 3 42 159 10 - 79 57 48 23 47 146 10 - 80 56 37 6 73 198 10 - 81 55 54 26 57 140 10 - 82 15 47 16 23 146 10 - 83 14 37 11 21 157 10 - 84 11 31 7 57 154 10 - 85 16 22 41 44 147 10 - 86 4 18 35 49 148 10 - 87 28 18 26 61 134 10 - 88 26 52 9 21 136 10 - 89 26 35 15 68 211 10 - 90 31 67 3 46 153 10 - 91 15 19 1 70 194 10 - 92 22 22 2 18 159 10 - 93 18 24 22 60 199 10 - 94 26 27 27 58 151 10 - 95 25 24 20 14 143 10 - 96 22 27 11 89 190 10 - 97 25 21 12 92 183 10 - 98 19 21 10 21 142 10 - 99 20 26 9 33 142 10 - 100 18 18 17 51 195 10 diff --git a/jsprit-instances/instances/solomon/R201.txt b/jsprit-instances/instances/solomon/R201.txt deleted file mode 100644 index b0e13e761..000000000 --- a/jsprit-instances/instances/solomon/R201.txt +++ /dev/null @@ -1,110 +0,0 @@ -R201 - -VEHICLE -NUMBER CAPACITY - 25 1000 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 35 35 0 0 1000 0 - 1 41 49 10 707 848 10 - 2 35 17 7 143 282 10 - 3 55 45 13 527 584 10 - 4 55 20 19 678 801 10 - 5 15 30 26 34 209 10 - 6 25 30 3 415 514 10 - 7 20 50 5 331 410 10 - 8 10 43 9 404 481 10 - 9 55 60 16 400 497 10 - 10 30 60 16 577 632 10 - 11 20 65 12 206 325 10 - 12 50 35 19 228 345 10 - 13 30 25 23 690 827 10 - 14 15 10 20 32 243 10 - 15 30 5 8 175 300 10 - 16 10 20 19 272 373 10 - 17 5 30 2 733 870 10 - 18 20 40 12 377 434 10 - 19 15 60 17 269 378 10 - 20 45 65 9 581 666 10 - 21 45 20 11 214 331 10 - 22 45 10 18 409 494 10 - 23 55 5 29 206 325 10 - 24 65 35 3 704 847 10 - 25 65 20 6 817 956 10 - 26 45 30 17 588 667 10 - 27 35 40 16 104 255 10 - 28 41 37 16 114 255 10 - 29 64 42 9 190 313 10 - 30 40 60 21 259 354 10 - 31 31 52 27 152 275 10 - 32 35 69 23 660 777 10 - 33 53 52 11 45 200 10 - 34 65 55 14 529 614 10 - 35 63 65 8 686 813 10 - 36 2 60 5 41 208 10 - 37 20 20 8 606 693 10 - 38 5 5 16 302 405 10 - 39 60 12 31 33 224 10 - 40 40 25 9 360 437 10 - 41 42 7 5 396 511 10 - 42 24 12 5 25 172 10 - 43 23 3 7 620 705 10 - 44 11 14 18 233 340 10 - 45 6 38 16 29 189 10 - 46 2 48 1 515 628 10 - 47 8 56 27 85 250 10 - 48 13 52 36 773 906 10 - 49 6 68 30 501 540 10 - 50 47 47 13 547 642 10 - 51 49 58 10 348 453 10 - 52 27 43 9 174 299 10 - 53 37 31 14 414 489 10 - 54 57 29 18 641 734 10 - 55 63 23 2 620 739 10 - 56 53 12 6 585 692 10 - 57 32 12 7 421 530 10 - 58 36 26 18 849 980 10 - 59 21 24 28 17 229 10 - 60 17 34 3 721 862 10 - 61 12 24 13 290 377 10 - 62 24 58 19 163 302 10 - 63 27 69 10 34 191 10 - 64 15 77 9 214 333 10 - 65 62 77 20 49 188 10 - 66 49 73 25 592 693 10 - 67 67 5 25 294 401 10 - 68 56 39 36 637 752 10 - 69 37 47 6 162 293 10 - 70 37 56 5 788 968 10 - 71 57 68 15 268 367 10 - 72 47 16 25 31 208 10 - 73 44 17 9 308 399 10 - 74 46 13 8 681 802 10 - 75 49 11 18 236 345 10 - 76 49 42 13 290 373 10 - 77 53 43 14 817 952 10 - 78 61 52 3 384 499 10 - 79 57 48 23 388 465 10 - 80 56 37 6 839 968 10 - 81 55 54 26 411 456 10 - 82 15 47 16 162 289 10 - 83 14 37 11 96 249 10 - 84 11 31 7 436 511 10 - 85 16 22 41 376 461 10 - 86 4 18 35 388 465 10 - 87 28 18 26 420 447 10 - 88 26 52 9 279 388 10 - 89 26 35 15 755 920 10 - 90 31 67 3 392 487 10 - 91 15 19 1 739 866 10 - 92 22 22 2 18 181 10 - 93 18 24 22 811 969 10 - 94 26 27 27 436 503 10 - 95 25 24 20 92 231 10 - 96 22 27 11 607 690 10 - 97 25 21 12 612 673 10 - 98 19 21 10 183 306 10 - 99 20 26 9 333 432 10 - 100 18 18 17 798 965 10 diff --git a/jsprit-instances/instances/solomon/R202.txt b/jsprit-instances/instances/solomon/R202.txt deleted file mode 100644 index d70a221b6..000000000 --- a/jsprit-instances/instances/solomon/R202.txt +++ /dev/null @@ -1,110 +0,0 @@ -R202 - -VEHICLE -NUMBER CAPACITY - 25 1000 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 35 35 0 0 1000 0 - 1 41 49 10 0 974 10 - 2 35 17 7 0 972 10 - 3 55 45 13 0 967 10 - 4 55 20 19 678 801 10 - 5 15 30 26 0 969 10 - 6 25 30 3 415 514 10 - 7 20 50 5 0 968 10 - 8 10 43 9 404 481 10 - 9 55 60 16 400 497 10 - 10 30 60 16 577 632 10 - 11 20 65 12 206 325 10 - 12 50 35 19 0 975 10 - 13 30 25 23 690 827 10 - 14 15 10 20 32 243 10 - 15 30 5 8 175 300 10 - 16 10 20 19 272 373 10 - 17 5 30 2 733 870 10 - 18 20 40 12 377 434 10 - 19 15 60 17 269 378 10 - 20 45 65 9 581 666 10 - 21 45 20 11 0 971 10 - 22 45 10 18 409 494 10 - 23 55 5 29 206 325 10 - 24 65 35 3 704 847 10 - 25 65 20 6 817 956 10 - 26 45 30 17 0 978 10 - 27 35 40 16 104 255 10 - 28 41 37 16 114 255 10 - 29 64 42 9 190 313 10 - 30 40 60 21 259 354 10 - 31 31 52 27 0 972 10 - 32 35 69 23 660 777 10 - 33 53 52 11 45 200 10 - 34 65 55 14 0 953 10 - 35 63 65 8 686 813 10 - 36 2 60 5 41 208 10 - 37 20 20 8 0 968 10 - 38 5 5 16 302 405 10 - 39 60 12 31 33 224 10 - 40 40 25 9 360 437 10 - 41 42 7 5 396 511 10 - 42 24 12 5 25 172 10 - 43 23 3 7 620 705 10 - 44 11 14 18 233 340 10 - 45 6 38 16 29 189 10 - 46 2 48 1 515 628 10 - 47 8 56 27 85 250 10 - 48 13 52 36 0 962 10 - 49 6 68 30 501 540 10 - 50 47 47 13 0 973 10 - 51 49 58 10 348 453 10 - 52 27 43 9 0 978 10 - 53 37 31 14 414 489 10 - 54 57 29 18 641 734 10 - 55 63 23 2 620 739 10 - 56 53 12 6 585 692 10 - 57 32 12 7 421 530 10 - 58 36 26 18 849 980 10 - 59 21 24 28 0 972 10 - 60 17 34 3 721 862 10 - 61 12 24 13 290 377 10 - 62 24 58 19 163 302 10 - 63 27 69 10 34 191 10 - 64 15 77 9 214 333 10 - 65 62 77 20 49 188 10 - 66 49 73 25 592 693 10 - 67 67 5 25 294 401 10 - 68 56 39 36 637 752 10 - 69 37 47 6 162 293 10 - 70 37 56 5 788 968 10 - 71 57 68 15 268 367 10 - 72 47 16 25 0 967 10 - 73 44 17 9 308 399 10 - 74 46 13 8 681 802 10 - 75 49 11 18 0 962 10 - 76 49 42 13 290 373 10 - 77 53 43 14 817 952 10 - 78 61 52 3 384 499 10 - 79 57 48 23 388 465 10 - 80 56 37 6 839 968 10 - 81 55 54 26 411 456 10 - 82 15 47 16 0 966 10 - 83 14 37 11 0 968 10 - 84 11 31 7 436 511 10 - 85 16 22 41 0 966 10 - 86 4 18 35 388 465 10 - 87 28 18 26 420 447 10 - 88 26 52 9 279 388 10 - 89 26 35 15 755 920 10 - 90 31 67 3 392 487 10 - 91 15 19 1 0 964 10 - 92 22 22 2 18 181 10 - 93 18 24 22 811 969 10 - 94 26 27 27 0 977 10 - 95 25 24 20 0 975 10 - 96 22 27 11 0 974 10 - 97 25 21 12 612 673 10 - 98 19 21 10 0 968 10 - 99 20 26 9 333 432 10 - 100 18 18 17 798 965 10 diff --git a/jsprit-instances/instances/solomon/R203.txt b/jsprit-instances/instances/solomon/R203.txt deleted file mode 100644 index 401787b64..000000000 --- a/jsprit-instances/instances/solomon/R203.txt +++ /dev/null @@ -1,110 +0,0 @@ -R203 - -VEHICLE -NUMBER CAPACITY - 25 1000 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 35 35 0 0 1000 0 - 1 41 49 10 0 974 10 - 2 35 17 7 0 972 10 - 3 55 45 13 0 967 10 - 4 55 20 19 678 801 10 - 5 15 30 26 0 969 10 - 6 25 30 3 415 514 10 - 7 20 50 5 0 968 10 - 8 10 43 9 404 481 10 - 9 55 60 16 400 497 10 - 10 30 60 16 577 632 10 - 11 20 65 12 206 325 10 - 12 50 35 19 0 975 10 - 13 30 25 23 690 827 10 - 14 15 10 20 0 957 10 - 15 30 5 8 175 300 10 - 16 10 20 19 0 960 10 - 17 5 30 2 733 870 10 - 18 20 40 12 0 974 10 - 19 15 60 17 0 957 10 - 20 45 65 9 0 958 10 - 21 45 20 11 0 971 10 - 22 45 10 18 409 494 10 - 23 55 5 29 206 325 10 - 24 65 35 3 0 960 10 - 25 65 20 6 817 956 10 - 26 45 30 17 0 978 10 - 27 35 40 16 104 255 10 - 28 41 37 16 0 983 10 - 29 64 42 9 0 960 10 - 30 40 60 21 259 354 10 - 31 31 52 27 0 972 10 - 32 35 69 23 0 956 10 - 33 53 52 11 45 200 10 - 34 65 55 14 0 953 10 - 35 63 65 8 686 813 10 - 36 2 60 5 41 208 10 - 37 20 20 8 0 968 10 - 38 5 5 16 302 405 10 - 39 60 12 31 33 224 10 - 40 40 25 9 360 437 10 - 41 42 7 5 396 511 10 - 42 24 12 5 25 172 10 - 43 23 3 7 0 955 10 - 44 11 14 18 233 340 10 - 45 6 38 16 29 189 10 - 46 2 48 1 0 954 10 - 47 8 56 27 0 955 10 - 48 13 52 36 0 962 10 - 49 6 68 30 501 540 10 - 50 47 47 13 0 973 10 - 51 49 58 10 0 963 10 - 52 27 43 9 0 978 10 - 53 37 31 14 414 489 10 - 54 57 29 18 0 967 10 - 55 63 23 2 620 739 10 - 56 53 12 6 585 692 10 - 57 32 12 7 0 966 10 - 58 36 26 18 849 980 10 - 59 21 24 28 0 972 10 - 60 17 34 3 0 971 10 - 61 12 24 13 0 964 10 - 62 24 58 19 163 302 10 - 63 27 69 10 0 955 10 - 64 15 77 9 214 333 10 - 65 62 77 20 49 188 10 - 66 49 73 25 592 693 10 - 67 67 5 25 294 401 10 - 68 56 39 36 637 752 10 - 69 37 47 6 162 293 10 - 70 37 56 5 788 968 10 - 71 57 68 15 0 950 10 - 72 47 16 25 0 967 10 - 73 44 17 9 0 969 10 - 74 46 13 8 681 802 10 - 75 49 11 18 0 962 10 - 76 49 42 13 290 373 10 - 77 53 43 14 817 952 10 - 78 61 52 3 384 499 10 - 79 57 48 23 388 465 10 - 80 56 37 6 839 968 10 - 81 55 54 26 0 962 10 - 82 15 47 16 0 966 10 - 83 14 37 11 0 968 10 - 84 11 31 7 436 511 10 - 85 16 22 41 0 966 10 - 86 4 18 35 0 954 10 - 87 28 18 26 420 447 10 - 88 26 52 9 279 388 10 - 89 26 35 15 0 981 10 - 90 31 67 3 0 957 10 - 91 15 19 1 0 964 10 - 92 22 22 2 18 181 10 - 93 18 24 22 811 969 10 - 94 26 27 27 0 977 10 - 95 25 24 20 0 975 10 - 96 22 27 11 0 974 10 - 97 25 21 12 0 972 10 - 98 19 21 10 0 968 10 - 99 20 26 9 333 432 10 - 100 18 18 17 798 965 10 diff --git a/jsprit-instances/instances/solomon/R204.txt b/jsprit-instances/instances/solomon/R204.txt deleted file mode 100644 index 40b8e2844..000000000 --- a/jsprit-instances/instances/solomon/R204.txt +++ /dev/null @@ -1,110 +0,0 @@ -R204 - -VEHICLE -NUMBER CAPACITY - 25 1000 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 35 35 0 0 1000 0 - 1 41 49 10 0 974 10 - 2 35 17 7 0 972 10 - 3 55 45 13 0 967 10 - 4 55 20 19 678 801 10 - 5 15 30 26 0 969 10 - 6 25 30 3 0 978 10 - 7 20 50 5 0 968 10 - 8 10 43 9 404 481 10 - 9 55 60 16 400 497 10 - 10 30 60 16 0 964 10 - 11 20 65 12 206 325 10 - 12 50 35 19 0 975 10 - 13 30 25 23 690 827 10 - 14 15 10 20 0 957 10 - 15 30 5 8 175 300 10 - 16 10 20 19 0 960 10 - 17 5 30 2 0 959 10 - 18 20 40 12 0 974 10 - 19 15 60 17 0 957 10 - 20 45 65 9 0 958 10 - 21 45 20 11 0 971 10 - 22 45 10 18 0 963 10 - 23 55 5 29 206 325 10 - 24 65 35 3 0 960 10 - 25 65 20 6 817 956 10 - 26 45 30 17 0 978 10 - 27 35 40 16 0 985 10 - 28 41 37 16 0 983 10 - 29 64 42 9 0 960 10 - 30 40 60 21 0 964 10 - 31 31 52 27 0 972 10 - 32 35 69 23 0 956 10 - 33 53 52 11 0 965 10 - 34 65 55 14 0 953 10 - 35 63 65 8 0 948 10 - 36 2 60 5 0 948 10 - 37 20 20 8 0 968 10 - 38 5 5 16 302 405 10 - 39 60 12 31 0 956 10 - 40 40 25 9 0 978 10 - 41 42 7 5 0 961 10 - 42 24 12 5 0 964 10 - 43 23 3 7 0 955 10 - 44 11 14 18 233 340 10 - 45 6 38 16 0 960 10 - 46 2 48 1 0 954 10 - 47 8 56 27 0 955 10 - 48 13 52 36 0 962 10 - 49 6 68 30 0 946 10 - 50 47 47 13 0 973 10 - 51 49 58 10 0 963 10 - 52 27 43 9 0 978 10 - 53 37 31 14 414 489 10 - 54 57 29 18 0 967 10 - 55 63 23 2 620 739 10 - 56 53 12 6 0 960 10 - 57 32 12 7 0 966 10 - 58 36 26 18 849 980 10 - 59 21 24 28 0 972 10 - 60 17 34 3 0 971 10 - 61 12 24 13 0 964 10 - 62 24 58 19 163 302 10 - 63 27 69 10 0 955 10 - 64 15 77 9 0 943 10 - 65 62 77 20 0 940 10 - 66 49 73 25 0 949 10 - 67 67 5 25 294 401 10 - 68 56 39 36 0 968 10 - 69 37 47 6 162 293 10 - 70 37 56 5 0 968 10 - 71 57 68 15 0 950 10 - 72 47 16 25 0 967 10 - 73 44 17 9 0 969 10 - 74 46 13 8 681 802 10 - 75 49 11 18 0 962 10 - 76 49 42 13 290 373 10 - 77 53 43 14 817 952 10 - 78 61 52 3 0 958 10 - 79 57 48 23 388 465 10 - 80 56 37 6 0 968 10 - 81 55 54 26 0 962 10 - 82 15 47 16 0 966 10 - 83 14 37 11 0 968 10 - 84 11 31 7 436 511 10 - 85 16 22 41 0 966 10 - 86 4 18 35 0 954 10 - 87 28 18 26 420 447 10 - 88 26 52 9 0 970 10 - 89 26 35 15 0 981 10 - 90 31 67 3 0 957 10 - 91 15 19 1 0 964 10 - 92 22 22 2 18 181 10 - 93 18 24 22 0 969 10 - 94 26 27 27 0 977 10 - 95 25 24 20 0 975 10 - 96 22 27 11 0 974 10 - 97 25 21 12 0 972 10 - 98 19 21 10 0 968 10 - 99 20 26 9 333 432 10 - 100 18 18 17 798 965 10 diff --git a/jsprit-instances/instances/solomon/R205.txt b/jsprit-instances/instances/solomon/R205.txt deleted file mode 100644 index af54fada3..000000000 --- a/jsprit-instances/instances/solomon/R205.txt +++ /dev/null @@ -1,110 +0,0 @@ -R205 - -VEHICLE -NUMBER CAPACITY - 25 1000 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 35 35 0 0 1000 0 - 1 41 49 10 658 898 10 - 2 35 17 7 93 333 10 - 3 55 45 13 436 676 10 - 4 55 20 19 620 860 10 - 5 15 30 26 20 260 10 - 6 25 30 3 345 585 10 - 7 20 50 5 251 491 10 - 8 10 43 9 323 563 10 - 9 55 60 16 329 569 10 - 10 30 60 16 485 725 10 - 11 20 65 12 146 386 10 - 12 50 35 19 167 407 10 - 13 30 25 23 639 879 10 - 14 15 10 20 32 272 10 - 15 30 5 8 118 358 10 - 16 10 20 19 203 443 10 - 17 5 30 2 682 922 10 - 18 20 40 12 286 526 10 - 19 15 60 17 204 444 10 - 20 45 65 9 504 744 10 - 21 45 20 11 153 393 10 - 22 45 10 18 332 572 10 - 23 55 5 29 146 386 10 - 24 65 35 3 656 896 10 - 25 65 20 6 716 956 10 - 26 45 30 17 508 748 10 - 27 35 40 16 60 300 10 - 28 41 37 16 65 305 10 - 29 64 42 9 132 372 10 - 30 40 60 21 187 427 10 - 31 31 52 27 94 334 10 - 32 35 69 23 599 839 10 - 33 53 52 11 24 264 10 - 34 65 55 14 452 692 10 - 35 63 65 8 630 870 10 - 36 2 60 5 41 281 10 - 37 20 20 8 530 770 10 - 38 5 5 16 234 474 10 - 39 60 12 31 33 273 10 - 40 40 25 9 279 519 10 - 41 42 7 5 334 574 10 - 42 24 12 5 25 265 10 - 43 23 3 7 543 783 10 - 44 11 14 18 167 407 10 - 45 6 38 16 29 269 10 - 46 2 48 1 452 692 10 - 47 8 56 27 48 288 10 - 48 13 52 36 720 960 10 - 49 6 68 30 401 641 10 - 50 47 47 13 475 715 10 - 51 49 58 10 281 521 10 - 52 27 43 9 117 357 10 - 53 37 31 14 332 572 10 - 54 57 29 18 568 808 10 - 55 63 23 2 560 800 10 - 56 53 12 6 519 759 10 - 57 32 12 7 356 596 10 - 58 36 26 18 740 980 10 - 59 21 24 28 17 257 10 - 60 17 34 3 672 912 10 - 61 12 24 13 214 454 10 - 62 24 58 19 113 353 10 - 63 27 69 10 34 274 10 - 64 15 77 9 154 394 10 - 65 62 77 20 49 289 10 - 66 49 73 25 523 763 10 - 67 67 5 25 228 468 10 - 68 56 39 36 575 815 10 - 69 37 47 6 108 348 10 - 70 37 56 5 728 968 10 - 71 57 68 15 198 438 10 - 72 47 16 25 22 262 10 - 73 44 17 9 234 474 10 - 74 46 13 8 622 862 10 - 75 49 11 18 171 411 10 - 76 49 42 13 212 452 10 - 77 53 43 14 730 970 10 - 78 61 52 3 322 562 10 - 79 57 48 23 307 547 10 - 80 56 37 6 728 968 10 - 81 55 54 26 314 554 10 - 82 15 47 16 106 346 10 - 83 14 37 11 53 293 10 - 84 11 31 7 354 594 10 - 85 16 22 41 299 539 10 - 86 4 18 35 307 547 10 - 87 28 18 26 314 554 10 - 88 26 52 9 214 454 10 - 89 26 35 15 718 958 10 - 90 31 67 3 320 560 10 - 91 15 19 1 683 923 10 - 92 22 22 2 18 258 10 - 93 18 24 22 729 969 10 - 94 26 27 27 350 590 10 - 95 25 24 20 42 282 10 - 96 22 27 11 529 769 10 - 97 25 21 12 523 763 10 - 98 19 21 10 125 365 10 - 99 20 26 9 263 503 10 - 100 18 18 17 725 965 10 diff --git a/jsprit-instances/instances/solomon/R206.txt b/jsprit-instances/instances/solomon/R206.txt deleted file mode 100644 index 6e5477a22..000000000 --- a/jsprit-instances/instances/solomon/R206.txt +++ /dev/null @@ -1,110 +0,0 @@ -R206 - -VEHICLE -NUMBER CAPACITY - 25 1000 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 35 35 0 0 1000 0 - 1 41 49 10 0 974 10 - 2 35 17 7 0 972 10 - 3 55 45 13 0 967 10 - 4 55 20 19 620 860 10 - 5 15 30 26 0 969 10 - 6 25 30 3 345 585 10 - 7 20 50 5 0 968 10 - 8 10 43 9 323 563 10 - 9 55 60 16 329 569 10 - 10 30 60 16 485 725 10 - 11 20 65 12 146 386 10 - 12 50 35 19 0 975 10 - 13 30 25 23 639 879 10 - 14 15 10 20 32 272 10 - 15 30 5 8 118 358 10 - 16 10 20 19 203 443 10 - 17 5 30 2 682 922 10 - 18 20 40 12 286 526 10 - 19 15 60 17 204 444 10 - 20 45 65 9 504 744 10 - 21 45 20 11 0 971 10 - 22 45 10 18 332 572 10 - 23 55 5 29 146 386 10 - 24 65 35 3 656 896 10 - 25 65 20 6 716 956 10 - 26 45 30 17 0 978 10 - 27 35 40 16 60 300 10 - 28 41 37 16 65 305 10 - 29 64 42 9 132 372 10 - 30 40 60 21 187 427 10 - 31 31 52 27 0 972 10 - 32 35 69 23 599 839 10 - 33 53 52 11 24 264 10 - 34 65 55 14 0 953 10 - 35 63 65 8 630 870 10 - 36 2 60 5 41 281 10 - 37 20 20 8 0 968 10 - 38 5 5 16 234 474 10 - 39 60 12 31 33 273 10 - 40 40 25 9 279 519 10 - 41 42 7 5 334 574 10 - 42 24 12 5 25 265 10 - 43 23 3 7 543 783 10 - 44 11 14 18 167 407 10 - 45 6 38 16 29 269 10 - 46 2 48 1 452 692 10 - 47 8 56 27 48 288 10 - 48 13 52 36 0 962 10 - 49 6 68 30 401 641 10 - 50 47 47 13 0 973 10 - 51 49 58 10 281 521 10 - 52 27 43 9 0 978 10 - 53 37 31 14 332 572 10 - 54 57 29 18 568 808 10 - 55 63 23 2 560 800 10 - 56 53 12 6 519 759 10 - 57 32 12 7 356 596 10 - 58 36 26 18 740 980 10 - 59 21 24 28 0 972 10 - 60 17 34 3 672 912 10 - 61 12 24 13 214 454 10 - 62 24 58 19 113 353 10 - 63 27 69 10 34 274 10 - 64 15 77 9 154 394 10 - 65 62 77 20 49 289 10 - 66 49 73 25 523 763 10 - 67 67 5 25 228 468 10 - 68 56 39 36 575 815 10 - 69 37 47 6 108 348 10 - 70 37 56 5 728 968 10 - 71 57 68 15 198 438 10 - 72 47 16 25 0 967 10 - 73 44 17 9 234 474 10 - 74 46 13 8 622 862 10 - 75 49 11 18 0 962 10 - 76 49 42 13 212 452 10 - 77 53 43 14 730 970 10 - 78 61 52 3 322 562 10 - 79 57 48 23 307 547 10 - 80 56 37 6 728 968 10 - 81 55 54 26 314 554 10 - 82 15 47 16 0 966 10 - 83 14 37 11 0 968 10 - 84 11 31 7 354 594 10 - 85 16 22 41 0 966 10 - 86 4 18 35 307 547 10 - 87 28 18 26 314 554 10 - 88 26 52 9 214 454 10 - 89 26 35 15 718 958 10 - 90 31 67 3 320 560 10 - 91 15 19 1 0 964 10 - 92 22 22 2 18 258 10 - 93 18 24 22 729 969 10 - 94 26 27 27 0 977 10 - 95 25 24 20 0 975 10 - 96 22 27 11 0 974 10 - 97 25 21 12 523 763 10 - 98 19 21 10 0 968 10 - 99 20 26 9 263 503 10 - 100 18 18 17 725 965 10 diff --git a/jsprit-instances/instances/solomon/R207.txt b/jsprit-instances/instances/solomon/R207.txt deleted file mode 100644 index fcbfd15f9..000000000 --- a/jsprit-instances/instances/solomon/R207.txt +++ /dev/null @@ -1,110 +0,0 @@ -R207 - -VEHICLE -NUMBER CAPACITY - 25 1000 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 35 35 0 0 1000 0 - 1 41 49 10 0 974 10 - 2 35 17 7 0 972 10 - 3 55 45 13 0 967 10 - 4 55 20 19 620 860 10 - 5 15 30 26 0 969 10 - 6 25 30 3 345 585 10 - 7 20 50 5 0 968 10 - 8 10 43 9 323 563 10 - 9 55 60 16 329 569 10 - 10 30 60 16 485 725 10 - 11 20 65 12 146 386 10 - 12 50 35 19 0 975 10 - 13 30 25 23 639 879 10 - 14 15 10 20 0 957 10 - 15 30 5 8 118 358 10 - 16 10 20 19 0 960 10 - 17 5 30 2 682 922 10 - 18 20 40 12 0 974 10 - 19 15 60 17 0 957 10 - 20 45 65 9 0 958 10 - 21 45 20 11 0 971 10 - 22 45 10 18 332 572 10 - 23 55 5 29 146 386 10 - 24 65 35 3 0 960 10 - 25 65 20 6 716 956 10 - 26 45 30 17 0 978 10 - 27 35 40 16 60 300 10 - 28 41 37 16 0 983 10 - 29 64 42 9 0 960 10 - 30 40 60 21 187 427 10 - 31 31 52 27 0 972 10 - 32 35 69 23 0 956 10 - 33 53 52 11 24 264 10 - 34 65 55 14 0 953 10 - 35 63 65 8 630 870 10 - 36 2 60 5 41 281 10 - 37 20 20 8 0 968 10 - 38 5 5 16 234 474 10 - 39 60 12 31 33 273 10 - 40 40 25 9 279 519 10 - 41 42 7 5 334 574 10 - 42 24 12 5 25 265 10 - 43 23 3 7 0 955 10 - 44 11 14 18 167 407 10 - 45 6 38 16 29 269 10 - 46 2 48 1 0 954 10 - 47 8 56 27 0 955 10 - 48 13 52 36 0 962 10 - 49 6 68 30 401 641 10 - 50 47 47 13 0 973 10 - 51 49 58 10 0 963 10 - 52 27 43 9 0 978 10 - 53 37 31 14 332 572 10 - 54 57 29 18 0 967 10 - 55 63 23 2 560 800 10 - 56 53 12 6 519 759 10 - 57 32 12 7 0 966 10 - 58 36 26 18 740 980 10 - 59 21 24 28 0 972 10 - 60 17 34 3 0 971 10 - 61 12 24 13 0 964 10 - 62 24 58 19 113 353 10 - 63 27 69 10 0 955 10 - 64 15 77 9 154 394 10 - 65 62 77 20 49 289 10 - 66 49 73 25 523 763 10 - 67 67 5 25 228 468 10 - 68 56 39 36 575 815 10 - 69 37 47 6 108 348 10 - 70 37 56 5 728 968 10 - 71 57 68 15 0 950 10 - 72 47 16 25 0 967 10 - 73 44 17 9 0 969 10 - 74 46 13 8 622 862 10 - 75 49 11 18 0 962 10 - 76 49 42 13 212 452 10 - 77 53 43 14 730 970 10 - 78 61 52 3 322 562 10 - 79 57 48 23 307 547 10 - 80 56 37 6 728 968 10 - 81 55 54 26 0 962 10 - 82 15 47 16 0 966 10 - 83 14 37 11 0 968 10 - 84 11 31 7 354 594 10 - 85 16 22 41 0 966 10 - 86 4 18 35 0 954 10 - 87 28 18 26 314 554 10 - 88 26 52 9 214 454 10 - 89 26 35 15 0 981 10 - 90 31 67 3 0 957 10 - 91 15 19 1 0 964 10 - 92 22 22 2 18 258 10 - 93 18 24 22 729 969 10 - 94 26 27 27 0 977 10 - 95 25 24 20 0 975 10 - 96 22 27 11 0 974 10 - 97 25 21 12 0 972 10 - 98 19 21 10 0 968 10 - 99 20 26 9 263 503 10 - 100 18 18 17 725 965 10 diff --git a/jsprit-instances/instances/solomon/R208.txt b/jsprit-instances/instances/solomon/R208.txt deleted file mode 100644 index e51dc7fef..000000000 --- a/jsprit-instances/instances/solomon/R208.txt +++ /dev/null @@ -1,110 +0,0 @@ -R208 - -VEHICLE -NUMBER CAPACITY - 25 1000 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 35 35 0 0 1000 0 - 1 41 49 10 0 974 10 - 2 35 17 7 0 972 10 - 3 55 45 13 0 967 10 - 4 55 20 19 620 860 10 - 5 15 30 26 0 969 10 - 6 25 30 3 0 978 10 - 7 20 50 5 0 968 10 - 8 10 43 9 323 563 10 - 9 55 60 16 329 569 10 - 10 30 60 16 0 964 10 - 11 20 65 12 146 386 10 - 12 50 35 19 0 975 10 - 13 30 25 23 639 879 10 - 14 15 10 20 0 957 10 - 15 30 5 8 118 358 10 - 16 10 20 19 0 960 10 - 17 5 30 2 0 959 10 - 18 20 40 12 0 974 10 - 19 15 60 17 0 957 10 - 20 45 65 9 0 958 10 - 21 45 20 11 0 971 10 - 22 45 10 18 0 963 10 - 23 55 5 29 146 386 10 - 24 65 35 3 0 960 10 - 25 65 20 6 716 956 10 - 26 45 30 17 0 978 10 - 27 35 40 16 0 985 10 - 28 41 37 16 0 983 10 - 29 64 42 9 0 960 10 - 30 40 60 21 0 964 10 - 31 31 52 27 0 972 10 - 32 35 69 23 0 956 10 - 33 53 52 11 0 965 10 - 34 65 55 14 0 953 10 - 35 63 65 8 0 948 10 - 36 2 60 5 0 948 10 - 37 20 20 8 0 968 10 - 38 5 5 16 234 474 10 - 39 60 12 31 0 956 10 - 40 40 25 9 0 978 10 - 41 42 7 5 0 961 10 - 42 24 12 5 0 964 10 - 43 23 3 7 0 955 10 - 44 11 14 18 167 407 10 - 45 6 38 16 0 960 10 - 46 2 48 1 0 954 10 - 47 8 56 27 0 955 10 - 48 13 52 36 0 962 10 - 49 6 68 30 0 946 10 - 50 47 47 13 0 973 10 - 51 49 58 10 0 963 10 - 52 27 43 9 0 978 10 - 53 37 31 14 332 572 10 - 54 57 29 18 0 967 10 - 55 63 23 2 560 800 10 - 56 53 12 6 0 960 10 - 57 32 12 7 0 966 10 - 58 36 26 18 740 980 10 - 59 21 24 28 0 972 10 - 60 17 34 3 0 971 10 - 61 12 24 13 0 964 10 - 62 24 58 19 113 353 10 - 63 27 69 10 0 955 10 - 64 15 77 9 0 943 10 - 65 62 77 20 0 940 10 - 66 49 73 25 0 949 10 - 67 67 5 25 228 468 10 - 68 56 39 36 0 968 10 - 69 37 47 6 108 348 10 - 70 37 56 5 0 968 10 - 71 57 68 15 0 950 10 - 72 47 16 25 0 967 10 - 73 44 17 9 0 969 10 - 74 46 13 8 622 862 10 - 75 49 11 18 0 962 10 - 76 49 42 13 212 452 10 - 77 53 43 14 730 970 10 - 78 61 52 3 0 958 10 - 79 57 48 23 307 547 10 - 80 56 37 6 0 968 10 - 81 55 54 26 0 962 10 - 82 15 47 16 0 966 10 - 83 14 37 11 0 968 10 - 84 11 31 7 354 594 10 - 85 16 22 41 0 966 10 - 86 4 18 35 0 954 10 - 87 28 18 26 314 554 10 - 88 26 52 9 0 970 10 - 89 26 35 15 0 981 10 - 90 31 67 3 0 957 10 - 91 15 19 1 0 964 10 - 92 22 22 2 18 258 10 - 93 18 24 22 0 969 10 - 94 26 27 27 0 977 10 - 95 25 24 20 0 975 10 - 96 22 27 11 0 974 10 - 97 25 21 12 0 972 10 - 98 19 21 10 0 968 10 - 99 20 26 9 263 503 10 - 100 18 18 17 725 965 10 diff --git a/jsprit-instances/instances/solomon/R209.txt b/jsprit-instances/instances/solomon/R209.txt deleted file mode 100644 index 8b8a9aed8..000000000 --- a/jsprit-instances/instances/solomon/R209.txt +++ /dev/null @@ -1,110 +0,0 @@ -R209 - -VEHICLE -NUMBER CAPACITY - 25 1000 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 35 35 0 0 1000 0 - 1 41 49 10 636 919 10 - 2 35 17 7 74 351 10 - 3 55 45 13 498 613 10 - 4 55 20 19 470 965 10 - 5 15 30 26 20 370 10 - 6 25 30 3 266 663 10 - 7 20 50 5 292 449 10 - 8 10 43 9 288 597 10 - 9 55 60 16 254 643 10 - 10 30 60 16 496 713 10 - 11 20 65 12 33 510 10 - 12 50 35 19 170 403 10 - 13 30 25 23 426 978 10 - 14 15 10 20 32 454 10 - 15 30 5 8 30 529 10 - 16 10 20 19 222 423 10 - 17 5 30 2 409 959 10 - 18 20 40 12 349 462 10 - 19 15 60 17 215 432 10 - 20 45 65 9 538 709 10 - 21 45 20 11 156 389 10 - 22 45 10 18 280 623 10 - 23 55 5 29 36 513 10 - 24 65 35 3 633 918 10 - 25 65 20 6 400 956 10 - 26 45 30 17 548 707 10 - 27 35 40 16 5 612 10 - 28 41 37 16 44 325 10 - 29 64 42 9 129 374 10 - 30 40 60 21 115 498 10 - 31 31 52 27 91 336 10 - 32 35 69 23 602 835 10 - 33 53 52 11 24 646 10 - 34 65 55 14 487 656 10 - 35 63 65 8 439 948 10 - 36 2 60 5 41 710 10 - 37 20 20 8 563 736 10 - 38 5 5 16 147 560 10 - 39 60 12 31 33 797 10 - 40 40 25 9 243 554 10 - 41 42 7 5 225 682 10 - 42 24 12 5 25 616 10 - 43 23 3 7 578 747 10 - 44 11 14 18 72 501 10 - 45 6 38 16 29 669 10 - 46 2 48 1 458 685 10 - 47 8 56 27 34 362 10 - 48 13 52 36 694 962 10 - 49 6 68 30 444 597 10 - 50 47 47 13 499 690 10 - 51 49 58 10 296 505 10 - 52 27 43 9 111 362 10 - 53 37 31 14 301 602 10 - 54 57 29 18 595 780 10 - 55 63 23 2 442 917 10 - 56 53 12 6 426 851 10 - 57 32 12 7 366 585 10 - 58 36 26 18 458 980 10 - 59 21 24 28 17 441 10 - 60 17 34 3 651 932 10 - 61 12 24 13 246 421 10 - 62 24 58 19 25 583 10 - 63 27 69 10 34 348 10 - 64 15 77 9 46 523 10 - 65 62 77 20 49 608 10 - 66 49 73 25 440 845 10 - 67 67 5 25 132 563 10 - 68 56 39 36 464 925 10 - 69 37 47 6 12 535 10 - 70 37 56 5 249 968 10 - 71 57 68 15 218 417 10 - 72 47 16 25 22 377 10 - 73 44 17 9 263 444 10 - 74 46 13 8 479 965 10 - 75 49 11 18 182 399 10 - 76 49 42 13 166 497 10 - 77 53 43 14 430 970 10 - 78 61 52 3 212 671 10 - 79 57 48 23 273 580 10 - 80 56 37 6 452 968 10 - 81 55 54 26 388 479 10 - 82 15 47 16 99 352 10 - 83 14 37 11 21 328 10 - 84 11 31 7 323 624 10 - 85 16 22 41 333 504 10 - 86 4 18 35 350 503 10 - 87 28 18 26 380 487 10 - 88 26 52 9 114 553 10 - 89 26 35 15 649 981 10 - 90 31 67 3 345 534 10 - 91 15 19 1 675 930 10 - 92 22 22 2 18 673 10 - 93 18 24 22 339 969 10 - 94 26 27 27 403 536 10 - 95 25 24 20 22 301 10 - 96 22 27 11 565 732 10 - 97 25 21 12 582 703 10 - 98 19 21 10 122 367 10 - 99 20 26 9 185 580 10 - 100 18 18 17 297 965 10 diff --git a/jsprit-instances/instances/solomon/R210.txt b/jsprit-instances/instances/solomon/R210.txt deleted file mode 100644 index 29ca3dee9..000000000 --- a/jsprit-instances/instances/solomon/R210.txt +++ /dev/null @@ -1,110 +0,0 @@ -R210 - -VEHICLE -NUMBER CAPACITY - 25 1000 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 35 35 0 0 1000 0 - 1 41 49 10 190 974 10 - 2 35 17 7 18 792 10 - 3 55 45 13 289 822 10 - 4 55 20 19 679 800 10 - 5 15 30 26 20 906 10 - 6 25 30 3 355 574 10 - 7 20 50 5 72 669 10 - 8 10 43 9 393 492 10 - 9 55 60 16 394 503 10 - 10 30 60 16 517 692 10 - 11 20 65 12 206 325 10 - 12 50 35 19 15 725 10 - 13 30 25 23 694 823 10 - 14 15 10 20 32 694 10 - 15 30 5 8 176 299 10 - 16 10 20 19 102 543 10 - 17 5 30 2 673 930 10 - 18 20 40 12 229 582 10 - 19 15 60 17 95 552 10 - 20 45 65 9 418 829 10 - 21 45 20 11 18 727 10 - 22 45 10 18 349 554 10 - 23 55 5 29 206 325 10 - 24 65 35 3 435 960 10 - 25 65 20 6 826 956 10 - 26 45 30 17 328 927 10 - 27 35 40 16 44 315 10 - 28 41 37 16 6 526 10 - 29 64 42 9 29 513 10 - 30 40 60 21 199 414 10 - 31 31 52 27 17 744 10 - 32 35 69 23 482 955 10 - 33 53 52 11 24 299 10 - 34 65 55 14 265 878 10 - 35 63 65 8 626 873 10 - 36 2 60 5 41 328 10 - 37 20 20 8 339 960 10 - 38 5 5 16 298 409 10 - 39 60 12 31 33 344 10 - 40 40 25 9 300 497 10 - 41 42 7 5 336 571 10 - 42 24 12 5 25 292 10 - 43 23 3 7 458 867 10 - 44 11 14 18 230 343 10 - 45 6 38 16 29 309 10 - 46 2 48 1 338 805 10 - 47 8 56 27 34 602 10 - 48 13 52 36 200 962 10 - 49 6 68 30 441 600 10 - 50 47 47 13 272 917 10 - 51 49 58 10 176 625 10 - 52 27 43 9 11 748 10 - 53 37 31 14 403 500 10 - 54 57 29 18 475 900 10 - 55 63 23 2 620 739 10 - 56 53 12 6 525 752 10 - 57 32 12 7 246 705 10 - 58 36 26 18 854 980 10 - 59 21 24 28 17 972 10 - 60 17 34 3 449 971 10 - 61 12 24 13 126 541 10 - 62 24 58 19 168 297 10 - 63 27 69 10 34 588 10 - 64 15 77 9 154 393 10 - 65 62 77 20 49 308 10 - 66 49 73 25 532 753 10 - 67 67 5 25 291 404 10 - 68 56 39 36 577 812 10 - 69 37 47 6 165 290 10 - 70 37 56 5 668 968 10 - 71 57 68 15 98 537 10 - 72 47 16 25 22 915 10 - 73 44 17 9 143 564 10 - 74 46 13 8 681 802 10 - 75 49 11 18 27 711 10 - 76 49 42 13 281 382 10 - 77 53 43 14 821 948 10 - 78 61 52 3 324 559 10 - 79 57 48 23 377 476 10 - 80 56 37 6 719 968 10 - 81 55 54 26 268 599 10 - 82 15 47 16 23 761 10 - 83 14 37 11 21 842 10 - 84 11 31 7 425 522 10 - 85 16 22 41 110 727 10 - 86 4 18 35 230 623 10 - 87 28 18 26 397 470 10 - 88 26 52 9 219 448 10 - 89 26 35 15 409 981 10 - 90 31 67 3 225 654 10 - 91 15 19 1 222 964 10 - 92 22 22 2 18 159 10 - 93 18 24 22 691 969 10 - 94 26 27 27 190 749 10 - 95 25 24 20 14 793 10 - 96 22 27 11 344 953 10 - 97 25 21 12 462 823 10 - 98 19 21 10 21 748 10 - 99 20 26 9 328 437 10 - 100 18 18 17 821 965 10 diff --git a/jsprit-instances/instances/solomon/R211.txt b/jsprit-instances/instances/solomon/R211.txt deleted file mode 100644 index 3c7b246a8..000000000 --- a/jsprit-instances/instances/solomon/R211.txt +++ /dev/null @@ -1,110 +0,0 @@ -R211 - -VEHICLE -NUMBER CAPACITY - 25 1000 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 35 35 0 0 1000 0 - 1 41 49 10 451 974 10 - 2 35 17 7 18 534 10 - 3 55 45 13 378 733 10 - 4 55 20 19 477 965 10 - 5 15 30 26 20 610 10 - 6 25 30 3 245 684 10 - 7 20 50 5 172 569 10 - 8 10 43 9 245 640 10 - 9 55 60 16 231 666 10 - 10 30 60 16 430 779 10 - 11 20 65 12 33 511 10 - 12 50 35 19 50 523 10 - 13 30 25 23 462 978 10 - 14 15 10 20 32 694 10 - 15 30 5 8 30 519 10 - 16 10 20 19 102 543 10 - 17 5 30 2 444 959 10 - 18 20 40 12 229 582 10 - 19 15 60 17 95 552 10 - 20 45 65 9 418 829 10 - 21 45 20 11 36 509 10 - 22 45 10 18 246 657 10 - 23 55 5 29 36 514 10 - 24 65 35 3 435 960 10 - 25 65 20 6 438 956 10 - 26 45 30 17 428 827 10 - 27 35 40 16 5 548 10 - 28 41 37 16 6 526 10 - 29 64 42 9 29 513 10 - 30 40 60 21 91 522 10 - 31 31 52 27 17 501 10 - 32 35 69 23 482 955 10 - 33 53 52 11 24 575 10 - 34 65 55 14 367 776 10 - 35 63 65 8 453 948 10 - 36 2 60 5 41 615 10 - 37 20 20 8 443 856 10 - 38 5 5 16 130 577 10 - 39 60 12 31 33 655 10 - 40 40 25 9 201 596 10 - 41 42 7 5 219 688 10 - 42 24 12 5 25 560 10 - 43 23 3 7 458 867 10 - 44 11 14 18 59 514 10 - 45 6 38 16 29 589 10 - 46 2 48 1 338 805 10 - 47 8 56 27 34 602 10 - 48 13 52 36 454 962 10 - 49 6 68 30 362 679 10 - 50 47 47 13 379 810 10 - 51 49 58 10 176 625 10 - 52 27 43 9 11 502 10 - 53 37 31 14 256 647 10 - 54 57 29 18 475 900 10 - 55 63 23 2 441 918 10 - 56 53 12 6 412 865 10 - 57 32 12 7 246 705 10 - 58 36 26 18 479 980 10 - 59 21 24 28 17 681 10 - 60 17 34 3 449 971 10 - 61 12 24 13 126 541 10 - 62 24 58 19 25 544 10 - 63 27 69 10 34 588 10 - 64 15 77 9 46 524 10 - 65 62 77 20 49 568 10 - 66 49 73 25 421 864 10 - 67 67 5 25 120 575 10 - 68 56 39 36 459 930 10 - 69 37 47 6 12 513 10 - 70 37 56 5 368 968 10 - 71 57 68 15 98 537 10 - 72 47 16 25 22 617 10 - 73 44 17 9 143 564 10 - 74 46 13 8 482 965 10 - 75 49 11 18 62 519 10 - 76 49 42 13 129 534 10 - 77 53 43 14 460 970 10 - 78 61 52 3 207 676 10 - 79 57 48 23 230 623 10 - 80 56 37 6 470 968 10 - 81 55 54 26 268 599 10 - 82 15 47 16 23 515 10 - 83 14 37 11 21 568 10 - 84 11 31 7 278 669 10 - 85 16 22 41 213 624 10 - 86 4 18 35 230 623 10 - 87 28 18 26 287 580 10 - 88 26 52 9 104 563 10 - 89 26 35 15 409 981 10 - 90 31 67 3 225 654 10 - 91 15 19 1 469 964 10 - 92 22 22 2 18 585 10 - 93 18 24 22 414 969 10 - 94 26 27 27 283 656 10 - 95 25 24 20 14 533 10 - 96 22 27 11 445 852 10 - 97 25 21 12 462 823 10 - 98 19 21 10 21 506 10 - 99 20 26 9 164 601 10 - 100 18 18 17 391 965 10 diff --git a/jsprit-instances/instances/solomon/RC101.txt b/jsprit-instances/instances/solomon/RC101.txt deleted file mode 100644 index 33660e19c..000000000 --- a/jsprit-instances/instances/solomon/RC101.txt +++ /dev/null @@ -1,110 +0,0 @@ -RC101 - -VEHICLE -NUMBER CAPACITY - 25 200 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 40 50 0 0 240 0 - 1 25 85 20 145 175 10 - 2 22 75 30 50 80 10 - 3 22 85 10 109 139 10 - 4 20 80 40 141 171 10 - 5 20 85 20 41 71 10 - 6 18 75 20 95 125 10 - 7 15 75 20 79 109 10 - 8 15 80 10 91 121 10 - 9 10 35 20 91 121 10 - 10 10 40 30 119 149 10 - 11 8 40 40 59 89 10 - 12 8 45 20 64 94 10 - 13 5 35 10 142 172 10 - 14 5 45 10 35 65 10 - 15 2 40 20 58 88 10 - 16 0 40 20 72 102 10 - 17 0 45 20 149 179 10 - 18 44 5 20 87 117 10 - 19 42 10 40 72 102 10 - 20 42 15 10 122 152 10 - 21 40 5 10 67 97 10 - 22 40 15 40 92 122 10 - 23 38 5 30 65 95 10 - 24 38 15 10 148 178 10 - 25 35 5 20 154 184 10 - 26 95 30 30 115 145 10 - 27 95 35 20 62 92 10 - 28 92 30 10 62 92 10 - 29 90 35 10 67 97 10 - 30 88 30 10 74 104 10 - 31 88 35 20 61 91 10 - 32 87 30 10 131 161 10 - 33 85 25 10 51 81 10 - 34 85 35 30 111 141 10 - 35 67 85 20 139 169 10 - 36 65 85 40 43 73 10 - 37 65 82 10 124 154 10 - 38 62 80 30 75 105 10 - 39 60 80 10 37 67 10 - 40 60 85 30 85 115 10 - 41 58 75 20 92 122 10 - 42 55 80 10 33 63 10 - 43 55 85 20 128 158 10 - 44 55 82 10 64 94 10 - 45 20 82 10 37 67 10 - 46 18 80 10 113 143 10 - 47 2 45 10 45 75 10 - 48 42 5 10 151 181 10 - 49 42 12 10 104 134 10 - 50 72 35 30 116 146 10 - 51 55 20 19 83 113 10 - 52 25 30 3 52 82 10 - 53 20 50 5 91 121 10 - 54 55 60 16 139 169 10 - 55 30 60 16 140 170 10 - 56 50 35 19 130 160 10 - 57 30 25 23 96 126 10 - 58 15 10 20 152 182 10 - 59 10 20 19 42 72 10 - 60 15 60 17 155 185 10 - 61 45 65 9 66 96 10 - 62 65 35 3 52 82 10 - 63 65 20 6 39 69 10 - 64 45 30 17 53 83 10 - 65 35 40 16 11 41 10 - 66 41 37 16 133 163 10 - 67 64 42 9 70 100 10 - 68 40 60 21 144 174 10 - 69 31 52 27 41 71 10 - 70 35 69 23 180 210 10 - 71 65 55 14 65 95 10 - 72 63 65 8 30 60 10 - 73 2 60 5 77 107 10 - 74 20 20 8 141 171 10 - 75 5 5 16 74 104 10 - 76 60 12 31 75 105 10 - 77 23 3 7 150 180 10 - 78 8 56 27 90 120 10 - 79 6 68 30 89 119 10 - 80 47 47 13 192 222 10 - 81 49 58 10 86 116 10 - 82 27 43 9 42 72 10 - 83 37 31 14 35 65 10 - 84 57 29 18 96 126 10 - 85 63 23 2 87 117 10 - 86 21 24 28 87 117 10 - 87 12 24 13 90 120 10 - 88 24 58 19 67 97 10 - 89 67 5 25 144 174 10 - 90 37 47 6 86 116 10 - 91 49 42 13 167 197 10 - 92 53 43 14 14 44 10 - 93 61 52 3 178 208 10 - 94 57 48 23 95 125 10 - 95 56 37 6 34 64 10 - 96 55 54 26 132 162 10 - 97 4 18 35 120 150 10 - 98 26 52 9 46 76 10 - 99 26 35 15 77 107 10 - 100 31 67 3 180 210 10 diff --git a/jsprit-instances/instances/solomon/RC102.txt b/jsprit-instances/instances/solomon/RC102.txt deleted file mode 100644 index 7e3713e38..000000000 --- a/jsprit-instances/instances/solomon/RC102.txt +++ /dev/null @@ -1,110 +0,0 @@ -RC102 - -VEHICLE -NUMBER CAPACITY - 25 200 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 40 50 0 0 240 0 - 1 25 85 20 0 191 10 - 2 22 75 30 0 199 10 - 3 22 85 10 0 190 10 - 4 20 80 40 141 171 10 - 5 20 85 20 0 189 10 - 6 18 75 20 95 125 10 - 7 15 75 20 0 194 10 - 8 15 80 10 91 121 10 - 9 10 35 20 91 121 10 - 10 10 40 30 119 149 10 - 11 8 40 40 59 89 10 - 12 8 45 20 0 197 10 - 13 5 35 10 142 172 10 - 14 5 45 10 35 65 10 - 15 2 40 20 58 88 10 - 16 0 40 20 72 102 10 - 17 0 45 20 149 179 10 - 18 44 5 20 87 117 10 - 19 42 10 40 72 102 10 - 20 42 15 10 122 152 10 - 21 40 5 10 0 185 10 - 22 40 15 40 92 122 10 - 23 38 5 30 65 95 10 - 24 38 15 10 148 178 10 - 25 35 5 20 154 184 10 - 26 95 30 30 0 171 10 - 27 95 35 20 62 92 10 - 28 92 30 10 62 92 10 - 29 90 35 10 67 97 10 - 30 88 30 10 74 104 10 - 31 88 35 20 0 179 10 - 32 87 30 10 131 161 10 - 33 85 25 10 51 81 10 - 34 85 35 30 0 182 10 - 35 67 85 20 139 169 10 - 36 65 85 40 43 73 10 - 37 65 82 10 0 189 10 - 38 62 80 30 75 105 10 - 39 60 80 10 37 67 10 - 40 60 85 30 85 115 10 - 41 58 75 20 92 122 10 - 42 55 80 10 33 63 10 - 43 55 85 20 128 158 10 - 44 55 82 10 64 94 10 - 45 20 82 10 37 67 10 - 46 18 80 10 113 143 10 - 47 2 45 10 45 75 10 - 48 42 5 10 0 184 10 - 49 42 12 10 104 134 10 - 50 72 35 30 0 194 10 - 51 55 20 19 83 113 10 - 52 25 30 3 0 205 10 - 53 20 50 5 91 121 10 - 54 55 60 16 139 169 10 - 55 30 60 16 140 170 10 - 56 50 35 19 130 160 10 - 57 30 25 23 96 126 10 - 58 15 10 20 152 182 10 - 59 10 20 19 0 187 10 - 60 15 60 17 155 185 10 - 61 45 65 9 66 96 10 - 62 65 35 3 52 82 10 - 63 65 20 6 39 69 10 - 64 45 30 17 53 83 10 - 65 35 40 16 11 41 10 - 66 41 37 16 133 163 10 - 67 64 42 9 70 100 10 - 68 40 60 21 144 174 10 - 69 31 52 27 41 71 10 - 70 35 69 23 180 210 10 - 71 65 55 14 65 95 10 - 72 63 65 8 0 202 10 - 73 2 60 5 77 107 10 - 74 20 20 8 141 171 10 - 75 5 5 16 0 172 10 - 76 60 12 31 75 105 10 - 77 23 3 7 150 180 10 - 78 8 56 27 90 120 10 - 79 6 68 30 89 119 10 - 80 47 47 13 192 222 10 - 81 49 58 10 86 116 10 - 82 27 43 9 0 215 10 - 83 37 31 14 0 210 10 - 84 57 29 18 96 126 10 - 85 63 23 2 0 194 10 - 86 21 24 28 87 117 10 - 87 12 24 13 90 120 10 - 88 24 58 19 67 97 10 - 89 67 5 25 144 174 10 - 90 37 47 6 86 116 10 - 91 49 42 13 0 217 10 - 92 53 43 14 14 44 10 - 93 61 52 3 178 208 10 - 94 57 48 23 0 212 10 - 95 56 37 6 0 209 10 - 96 55 54 26 0 214 10 - 97 4 18 35 120 150 10 - 98 26 52 9 0 215 10 - 99 26 35 15 77 107 10 - 100 31 67 3 180 210 10 diff --git a/jsprit-instances/instances/solomon/RC103.txt b/jsprit-instances/instances/solomon/RC103.txt deleted file mode 100644 index 55753fb47..000000000 --- a/jsprit-instances/instances/solomon/RC103.txt +++ /dev/null @@ -1,110 +0,0 @@ -RC103 - -VEHICLE -NUMBER CAPACITY - 25 200 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 40 50 0 0 240 0 - 1 25 85 20 0 191 10 - 2 22 75 30 0 199 10 - 3 22 85 10 0 190 10 - 4 20 80 40 141 171 10 - 5 20 85 20 0 189 10 - 6 18 75 20 95 125 10 - 7 15 75 20 0 194 10 - 8 15 80 10 91 121 10 - 9 10 35 20 91 121 10 - 10 10 40 30 119 149 10 - 11 8 40 40 59 89 10 - 12 8 45 20 0 197 10 - 13 5 35 10 142 172 10 - 14 5 45 10 0 194 10 - 15 2 40 20 58 88 10 - 16 0 40 20 0 188 10 - 17 0 45 20 149 179 10 - 18 44 5 20 0 184 10 - 19 42 10 40 0 189 10 - 20 42 15 10 0 194 10 - 21 40 5 10 0 185 10 - 22 40 15 40 92 122 10 - 23 38 5 30 65 95 10 - 24 38 15 10 0 194 10 - 25 35 5 20 154 184 10 - 26 95 30 30 0 171 10 - 27 95 35 20 62 92 10 - 28 92 30 10 0 174 10 - 29 90 35 10 0 177 10 - 30 88 30 10 74 104 10 - 31 88 35 20 0 179 10 - 32 87 30 10 0 178 10 - 33 85 25 10 51 81 10 - 34 85 35 30 0 182 10 - 35 67 85 20 139 169 10 - 36 65 85 40 43 73 10 - 37 65 82 10 0 189 10 - 38 62 80 30 75 105 10 - 39 60 80 10 37 67 10 - 40 60 85 30 85 115 10 - 41 58 75 20 92 122 10 - 42 55 80 10 33 63 10 - 43 55 85 20 0 191 10 - 44 55 82 10 64 94 10 - 45 20 82 10 37 67 10 - 46 18 80 10 0 192 10 - 47 2 45 10 0 191 10 - 48 42 5 10 0 184 10 - 49 42 12 10 104 134 10 - 50 72 35 30 0 194 10 - 51 55 20 19 0 196 10 - 52 25 30 3 0 205 10 - 53 20 50 5 91 121 10 - 54 55 60 16 0 211 10 - 55 30 60 16 140 170 10 - 56 50 35 19 130 160 10 - 57 30 25 23 0 203 10 - 58 15 10 20 152 182 10 - 59 10 20 19 0 187 10 - 60 15 60 17 0 203 10 - 61 45 65 9 0 214 10 - 62 65 35 3 52 82 10 - 63 65 20 6 0 190 10 - 64 45 30 17 53 83 10 - 65 35 40 16 11 41 10 - 66 41 37 16 133 163 10 - 67 64 42 9 70 100 10 - 68 40 60 21 144 174 10 - 69 31 52 27 41 71 10 - 70 35 69 23 180 210 10 - 71 65 55 14 0 204 10 - 72 63 65 8 0 202 10 - 73 2 60 5 0 190 10 - 74 20 20 8 141 171 10 - 75 5 5 16 0 172 10 - 76 60 12 31 75 105 10 - 77 23 3 7 150 180 10 - 78 8 56 27 90 120 10 - 79 6 68 30 89 119 10 - 80 47 47 13 192 222 10 - 81 49 58 10 0 217 10 - 82 27 43 9 0 215 10 - 83 37 31 14 0 210 10 - 84 57 29 18 96 126 10 - 85 63 23 2 0 194 10 - 86 21 24 28 0 197 10 - 87 12 24 13 90 120 10 - 88 24 58 19 67 97 10 - 89 67 5 25 0 177 10 - 90 37 47 6 0 225 10 - 91 49 42 13 0 217 10 - 92 53 43 14 14 44 10 - 93 61 52 3 178 208 10 - 94 57 48 23 0 212 10 - 95 56 37 6 0 209 10 - 96 55 54 26 0 214 10 - 97 4 18 35 0 181 10 - 98 26 52 9 0 215 10 - 99 26 35 15 77 107 10 - 100 31 67 3 180 210 10 diff --git a/jsprit-instances/instances/solomon/RC104.txt b/jsprit-instances/instances/solomon/RC104.txt deleted file mode 100644 index e446af7ef..000000000 --- a/jsprit-instances/instances/solomon/RC104.txt +++ /dev/null @@ -1,110 +0,0 @@ -RC104 - -VEHICLE -NUMBER CAPACITY - 25 200 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 40 50 0 0 240 0 - 1 25 85 20 0 191 10 - 2 22 75 30 0 199 10 - 3 22 85 10 0 190 10 - 4 20 80 40 141 171 10 - 5 20 85 20 0 189 10 - 6 18 75 20 0 196 10 - 7 15 75 20 0 194 10 - 8 15 80 10 91 121 10 - 9 10 35 20 91 121 10 - 10 10 40 30 0 198 10 - 11 8 40 40 59 89 10 - 12 8 45 20 0 197 10 - 13 5 35 10 142 172 10 - 14 5 45 10 0 194 10 - 15 2 40 20 58 88 10 - 16 0 40 20 0 188 10 - 17 0 45 20 0 189 10 - 18 44 5 20 0 184 10 - 19 42 10 40 0 189 10 - 20 42 15 10 0 194 10 - 21 40 5 10 0 185 10 - 22 40 15 40 0 195 10 - 23 38 5 30 65 95 10 - 24 38 15 10 0 194 10 - 25 35 5 20 154 184 10 - 26 95 30 30 0 171 10 - 27 95 35 20 0 172 10 - 28 92 30 10 0 174 10 - 29 90 35 10 0 177 10 - 30 88 30 10 0 178 10 - 31 88 35 20 0 179 10 - 32 87 30 10 0 178 10 - 33 85 25 10 0 178 10 - 34 85 35 30 0 182 10 - 35 67 85 20 0 185 10 - 36 65 85 40 0 186 10 - 37 65 82 10 0 189 10 - 38 62 80 30 75 105 10 - 39 60 80 10 0 193 10 - 40 60 85 30 0 189 10 - 41 58 75 20 0 199 10 - 42 55 80 10 0 196 10 - 43 55 85 20 0 191 10 - 44 55 82 10 64 94 10 - 45 20 82 10 0 192 10 - 46 18 80 10 0 192 10 - 47 2 45 10 0 191 10 - 48 42 5 10 0 184 10 - 49 42 12 10 0 191 10 - 50 72 35 30 0 194 10 - 51 55 20 19 0 196 10 - 52 25 30 3 0 205 10 - 53 20 50 5 91 121 10 - 54 55 60 16 0 211 10 - 55 30 60 16 140 170 10 - 56 50 35 19 0 211 10 - 57 30 25 23 0 203 10 - 58 15 10 20 152 182 10 - 59 10 20 19 0 187 10 - 60 15 60 17 0 203 10 - 61 45 65 9 0 214 10 - 62 65 35 3 52 82 10 - 63 65 20 6 0 190 10 - 64 45 30 17 0 209 10 - 65 35 40 16 0 218 10 - 66 41 37 16 0 216 10 - 67 64 42 9 70 100 10 - 68 40 60 21 0 220 10 - 69 31 52 27 41 71 10 - 70 35 69 23 0 210 10 - 71 65 55 14 0 204 10 - 72 63 65 8 0 202 10 - 73 2 60 5 0 190 10 - 74 20 20 8 141 171 10 - 75 5 5 16 0 172 10 - 76 60 12 31 75 105 10 - 77 23 3 7 150 180 10 - 78 8 56 27 0 197 10 - 79 6 68 30 89 119 10 - 80 47 47 13 0 222 10 - 81 49 58 10 0 217 10 - 82 27 43 9 0 215 10 - 83 37 31 14 0 210 10 - 84 57 29 18 96 126 10 - 85 63 23 2 0 194 10 - 86 21 24 28 0 197 10 - 87 12 24 13 90 120 10 - 88 24 58 19 0 212 10 - 89 67 5 25 0 177 10 - 90 37 47 6 0 225 10 - 91 49 42 13 0 217 10 - 92 53 43 14 14 44 10 - 93 61 52 3 0 208 10 - 94 57 48 23 0 212 10 - 95 56 37 6 0 209 10 - 96 55 54 26 0 214 10 - 97 4 18 35 0 181 10 - 98 26 52 9 0 215 10 - 99 26 35 15 77 107 10 - 100 31 67 3 180 210 10 diff --git a/jsprit-instances/instances/solomon/RC105.txt b/jsprit-instances/instances/solomon/RC105.txt deleted file mode 100644 index e60154c91..000000000 --- a/jsprit-instances/instances/solomon/RC105.txt +++ /dev/null @@ -1,110 +0,0 @@ -RC105 - -VEHICLE -NUMBER CAPACITY - 25 200 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 40 50 0 0 240 0 - 1 25 85 20 71 191 10 - 2 22 75 30 30 150 10 - 3 22 85 10 64 184 10 - 4 20 80 40 151 161 10 - 5 20 85 20 40 160 10 - 6 18 75 20 96 123 10 - 7 15 75 20 35 155 10 - 8 15 80 10 101 111 10 - 9 10 35 20 101 111 10 - 10 10 40 30 123 144 10 - 11 8 40 40 69 79 10 - 12 8 45 20 32 152 10 - 13 5 35 10 152 162 10 - 14 5 45 10 35 117 10 - 15 2 40 20 68 78 10 - 16 0 40 20 59 114 10 - 17 0 45 20 147 180 10 - 18 44 5 20 79 124 10 - 19 42 10 40 58 115 10 - 20 42 15 10 111 162 10 - 21 40 5 10 45 165 10 - 22 40 15 40 94 119 10 - 23 38 5 30 75 85 10 - 24 38 15 10 128 194 10 - 25 35 5 20 171 181 10 - 26 95 30 30 58 171 10 - 27 95 35 20 60 93 10 - 28 92 30 10 55 120 10 - 29 90 35 10 52 112 10 - 30 88 30 10 75 102 10 - 31 88 35 20 50 170 10 - 32 87 30 10 116 175 10 - 33 85 25 10 51 85 10 - 34 85 35 30 62 182 10 - 35 67 85 20 138 169 10 - 36 65 85 40 43 78 10 - 37 65 82 10 69 189 10 - 38 62 80 30 85 95 10 - 39 60 80 10 36 74 10 - 40 60 85 30 87 112 10 - 41 58 75 20 92 121 10 - 42 55 80 10 33 66 10 - 43 55 85 20 117 168 10 - 44 55 82 10 74 84 10 - 45 20 82 10 37 72 10 - 46 18 80 10 98 157 10 - 47 2 45 10 38 109 10 - 48 42 5 10 64 184 10 - 49 42 12 10 109 128 10 - 50 72 35 30 71 191 10 - 51 55 20 19 69 126 10 - 52 25 30 3 25 145 10 - 53 20 50 5 101 111 10 - 54 55 60 16 127 180 10 - 55 30 60 16 150 160 10 - 56 50 35 19 130 159 10 - 57 30 25 23 82 139 10 - 58 15 10 20 172 182 10 - 59 10 20 19 42 162 10 - 60 15 60 17 137 202 10 - 61 45 65 9 55 106 10 - 62 65 35 3 62 72 10 - 63 65 20 6 39 108 10 - 64 45 30 17 53 82 10 - 65 35 40 16 11 43 10 - 66 41 37 16 134 161 10 - 67 64 42 9 80 90 10 - 68 40 60 21 144 173 10 - 69 31 52 27 51 61 10 - 70 35 69 23 172 210 10 - 71 65 55 14 52 107 10 - 72 63 65 8 27 147 10 - 73 2 60 5 65 118 10 - 74 20 20 8 151 161 10 - 75 5 5 16 57 172 10 - 76 60 12 31 85 95 10 - 77 23 3 7 163 173 10 - 78 8 56 27 90 119 10 - 79 6 68 30 99 109 10 - 80 47 47 13 190 222 10 - 81 49 58 10 80 121 10 - 82 27 43 9 14 134 10 - 83 37 31 14 19 139 10 - 84 57 29 18 106 116 10 - 85 63 23 2 42 162 10 - 86 21 24 28 77 126 10 - 87 12 24 13 100 110 10 - 88 24 58 19 67 96 10 - 89 67 5 25 105 177 10 - 90 37 47 6 74 127 10 - 91 49 42 13 97 217 10 - 92 53 43 14 15 25 10 - 93 61 52 3 173 208 10 - 94 57 48 23 50 170 10 - 95 56 37 6 20 140 10 - 96 55 54 26 87 207 10 - 97 4 18 35 112 157 10 - 98 26 52 9 14 134 10 - 99 26 35 15 87 97 10 - 100 31 67 3 200 210 10 diff --git a/jsprit-instances/instances/solomon/RC106.txt b/jsprit-instances/instances/solomon/RC106.txt deleted file mode 100644 index 0dd9a6831..000000000 --- a/jsprit-instances/instances/solomon/RC106.txt +++ /dev/null @@ -1,110 +0,0 @@ -RC106 - -VEHICLE -NUMBER CAPACITY - 25 200 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 40 50 0 0 240 0 - 1 25 85 20 130 190 10 - 2 22 75 30 35 95 10 - 3 22 85 10 94 154 10 - 4 20 80 40 126 186 10 - 5 20 85 20 40 100 10 - 6 18 75 20 80 140 10 - 7 15 75 20 64 124 10 - 8 15 80 10 76 136 10 - 9 10 35 20 76 136 10 - 10 10 40 30 104 164 10 - 11 8 40 40 44 104 10 - 12 8 45 20 49 109 10 - 13 5 35 10 127 187 10 - 14 5 45 10 35 95 10 - 15 2 40 20 43 103 10 - 16 0 40 20 57 117 10 - 17 0 45 20 129 189 10 - 18 44 5 20 72 132 10 - 19 42 10 40 57 117 10 - 20 42 15 10 107 167 10 - 21 40 5 10 52 112 10 - 22 40 15 40 77 137 10 - 23 38 5 30 50 110 10 - 24 38 15 10 133 193 10 - 25 35 5 20 124 184 10 - 26 95 30 30 100 160 10 - 27 95 35 20 57 117 10 - 28 92 30 10 55 115 10 - 29 90 35 10 52 112 10 - 30 88 30 10 59 119 10 - 31 88 35 20 50 110 10 - 32 87 30 10 116 176 10 - 33 85 25 10 51 111 10 - 34 85 35 30 96 156 10 - 35 67 85 20 124 184 10 - 36 65 85 40 43 103 10 - 37 65 82 10 109 169 10 - 38 62 80 30 60 120 10 - 39 60 80 10 36 96 10 - 40 60 85 30 70 130 10 - 41 58 75 20 77 137 10 - 42 55 80 10 33 93 10 - 43 55 85 20 113 173 10 - 44 55 82 10 49 109 10 - 45 20 82 10 37 97 10 - 46 18 80 10 98 158 10 - 47 2 45 10 38 98 10 - 48 42 5 10 124 184 10 - 49 42 12 10 89 149 10 - 50 72 35 30 101 161 10 - 51 55 20 19 68 128 10 - 52 25 30 3 37 97 10 - 53 20 50 5 76 136 10 - 54 55 60 16 124 184 10 - 55 30 60 16 125 185 10 - 56 50 35 19 115 175 10 - 57 30 25 23 81 141 10 - 58 15 10 20 122 182 10 - 59 10 20 19 42 102 10 - 60 15 60 17 140 200 10 - 61 45 65 9 51 111 10 - 62 65 35 3 37 97 10 - 63 65 20 6 39 99 10 - 64 45 30 17 38 98 10 - 65 35 40 16 11 71 10 - 66 41 37 16 118 178 10 - 67 64 42 9 55 115 10 - 68 40 60 21 129 189 10 - 69 31 52 27 26 86 10 - 70 35 69 23 150 210 10 - 71 65 55 14 50 110 10 - 72 63 65 8 27 87 10 - 73 2 60 5 62 122 10 - 74 20 20 8 126 186 10 - 75 5 5 16 59 119 10 - 76 60 12 31 60 120 10 - 77 23 3 7 120 180 10 - 78 8 56 27 75 135 10 - 79 6 68 30 74 134 10 - 80 47 47 13 162 222 10 - 81 49 58 10 71 131 10 - 82 27 43 9 27 87 10 - 83 37 31 14 20 80 10 - 84 57 29 18 81 141 10 - 85 63 23 2 72 132 10 - 86 21 24 28 72 132 10 - 87 12 24 13 75 135 10 - 88 24 58 19 52 112 10 - 89 67 5 25 117 177 10 - 90 37 47 6 71 131 10 - 91 49 42 13 152 212 10 - 92 53 43 14 14 74 10 - 93 61 52 3 148 208 10 - 94 57 48 23 80 140 10 - 95 56 37 6 20 80 10 - 96 55 54 26 117 177 10 - 97 4 18 35 105 165 10 - 98 26 52 9 31 91 10 - 99 26 35 15 62 122 10 - 100 31 67 3 150 210 10 diff --git a/jsprit-instances/instances/solomon/RC107.txt b/jsprit-instances/instances/solomon/RC107.txt deleted file mode 100644 index 73c7568f2..000000000 --- a/jsprit-instances/instances/solomon/RC107.txt +++ /dev/null @@ -1,110 +0,0 @@ -RC107 - -VEHICLE -NUMBER CAPACITY - 25 200 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 40 50 0 0 240 0 - 1 25 85 20 125 191 10 - 2 22 75 30 32 97 10 - 3 22 85 10 101 146 10 - 4 20 80 40 71 193 10 - 5 20 85 20 40 113 10 - 6 18 75 20 55 164 10 - 7 15 75 20 69 118 10 - 8 15 80 10 56 155 10 - 9 10 35 20 51 160 10 - 10 10 40 30 90 177 10 - 11 8 40 40 33 152 10 - 12 8 45 20 49 108 10 - 13 5 35 10 62 191 10 - 14 5 45 10 35 117 10 - 15 2 40 20 39 161 10 - 16 0 40 20 59 114 10 - 17 0 45 20 60 189 10 - 18 44 5 20 79 124 10 - 19 42 10 40 58 115 10 - 20 42 15 10 111 162 10 - 21 40 5 10 52 111 10 - 22 40 15 40 55 158 10 - 23 38 5 30 45 164 10 - 24 38 15 10 128 194 10 - 25 35 5 20 54 184 10 - 26 95 30 30 105 154 10 - 27 95 35 20 57 172 10 - 28 92 30 10 55 120 10 - 29 90 35 10 52 112 10 - 30 88 30 10 52 159 10 - 31 88 35 20 50 110 10 - 32 87 30 10 116 175 10 - 33 85 25 10 51 178 10 - 34 85 35 30 100 151 10 - 35 67 85 20 61 185 10 - 36 65 85 40 43 186 10 - 37 65 82 10 113 164 10 - 38 62 80 30 37 148 10 - 39 60 80 10 36 191 10 - 40 60 85 30 50 149 10 - 41 58 75 20 48 165 10 - 42 55 80 10 33 166 10 - 43 55 85 20 117 168 10 - 44 55 82 10 35 148 10 - 45 20 82 10 37 177 10 - 46 18 80 10 98 157 10 - 47 2 45 10 38 109 10 - 48 42 5 10 120 184 10 - 49 42 12 10 79 158 10 - 50 72 35 30 104 157 10 - 51 55 20 19 69 126 10 - 52 25 30 3 36 97 10 - 53 20 50 5 57 154 10 - 54 55 60 16 127 180 10 - 55 30 60 16 95 214 10 - 56 50 35 19 88 201 10 - 57 30 25 23 82 139 10 - 58 15 10 20 56 182 10 - 59 10 20 19 42 125 10 - 60 15 60 17 137 202 10 - 61 45 65 9 55 106 10 - 62 65 35 3 29 158 10 - 63 65 20 6 39 108 10 - 64 45 30 17 20 139 10 - 65 35 40 16 11 140 10 - 66 41 37 16 92 203 10 - 67 64 42 9 28 141 10 - 68 40 60 21 100 217 10 - 69 31 52 27 9 134 10 - 70 35 69 23 60 210 10 - 71 65 55 14 52 107 10 - 72 63 65 8 27 101 10 - 73 2 60 5 65 118 10 - 74 20 20 8 72 193 10 - 75 5 5 16 60 117 10 - 76 60 12 31 42 143 10 - 77 23 3 7 52 180 10 - 78 8 56 27 46 163 10 - 79 6 68 30 54 153 10 - 80 47 47 13 97 222 10 - 81 49 58 10 80 121 10 - 82 27 43 9 26 87 10 - 83 37 31 14 19 87 10 - 84 57 29 18 62 159 10 - 85 63 23 2 76 127 10 - 86 21 24 28 77 126 10 - 87 12 24 13 68 141 10 - 88 24 58 19 24 139 10 - 89 67 5 25 105 177 10 - 90 37 47 6 74 127 10 - 91 49 42 13 151 212 10 - 92 53 43 14 14 155 10 - 93 61 52 3 69 208 10 - 94 57 48 23 86 133 10 - 95 56 37 6 20 84 10 - 96 55 54 26 121 172 10 - 97 4 18 35 112 157 10 - 98 26 52 9 30 91 10 - 99 26 35 15 37 146 10 - 100 31 67 3 66 210 10 diff --git a/jsprit-instances/instances/solomon/RC108.txt b/jsprit-instances/instances/solomon/RC108.txt deleted file mode 100644 index 9a4656903..000000000 --- a/jsprit-instances/instances/solomon/RC108.txt +++ /dev/null @@ -1,110 +0,0 @@ -RC108 - -VEHICLE -NUMBER CAPACITY - 25 200 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 40 50 0 0 240 0 - 1 25 85 20 49 191 10 - 2 22 75 30 30 168 10 - 3 22 85 10 95 152 10 - 4 20 80 40 69 193 10 - 5 20 85 20 40 189 10 - 6 18 75 20 60 159 10 - 7 15 75 20 54 133 10 - 8 15 80 10 67 144 10 - 9 10 35 20 57 154 10 - 10 10 40 30 106 161 10 - 11 8 40 40 33 152 10 - 12 8 45 20 32 148 10 - 13 5 35 10 53 191 10 - 14 5 45 10 35 194 10 - 15 2 40 20 39 163 10 - 16 0 40 20 41 141 10 - 17 0 45 20 51 189 10 - 18 44 5 20 73 130 10 - 19 42 10 40 40 148 10 - 20 42 15 10 94 179 10 - 21 40 5 10 45 161 10 - 22 40 15 40 64 149 10 - 23 38 5 30 45 164 10 - 24 38 15 10 51 194 10 - 25 35 5 20 45 183 10 - 26 95 30 30 90 169 10 - 27 95 35 20 57 172 10 - 28 92 30 10 55 174 10 - 29 90 35 10 52 174 10 - 30 88 30 10 52 147 10 - 31 88 35 20 50 172 10 - 32 87 30 10 61 178 10 - 33 85 25 10 51 178 10 - 34 85 35 30 83 168 10 - 35 67 85 20 57 185 10 - 36 65 85 40 43 186 10 - 37 65 82 10 95 182 10 - 38 62 80 30 38 141 10 - 39 60 80 10 36 193 10 - 40 60 85 30 61 138 10 - 41 58 75 20 49 164 10 - 42 55 80 10 33 180 10 - 43 55 85 20 100 185 10 - 44 55 82 10 35 142 10 - 45 20 82 10 37 192 10 - 46 18 80 10 71 184 10 - 47 2 45 10 38 191 10 - 48 42 5 10 50 184 10 - 49 42 12 10 99 138 10 - 50 72 35 30 83 178 10 - 51 55 20 19 45 150 10 - 52 25 30 3 25 150 10 - 53 20 50 5 68 143 10 - 54 55 60 16 107 200 10 - 55 30 60 16 95 214 10 - 56 50 35 19 91 198 10 - 57 30 25 23 56 165 10 - 58 15 10 20 51 182 10 - 59 10 20 19 42 187 10 - 60 15 60 17 62 203 10 - 61 45 65 9 37 124 10 - 62 65 35 3 29 168 10 - 63 65 20 6 39 190 10 - 64 45 30 17 20 139 10 - 65 35 40 16 11 150 10 - 66 41 37 16 97 198 10 - 67 64 42 9 31 138 10 - 68 40 60 21 101 216 10 - 69 31 52 27 9 139 10 - 70 35 69 23 30 210 10 - 71 65 55 14 30 129 10 - 72 63 65 8 27 202 10 - 73 2 60 5 46 137 10 - 74 20 20 8 71 193 10 - 75 5 5 16 57 165 10 - 76 60 12 31 48 131 10 - 77 23 3 7 49 180 10 - 78 8 56 27 47 162 10 - 79 6 68 30 65 142 10 - 80 47 47 13 93 222 10 - 81 49 58 10 78 123 10 - 82 27 43 9 14 140 10 - 83 37 31 14 19 172 10 - 84 57 29 18 73 148 10 - 85 63 23 2 59 144 10 - 86 21 24 28 63 140 10 - 87 12 24 13 91 118 10 - 88 24 58 19 27 136 10 - 89 67 5 25 52 177 10 - 90 37 47 6 53 148 10 - 91 49 42 13 89 217 10 - 92 53 43 14 14 177 10 - 93 61 52 3 50 208 10 - 94 57 48 23 76 143 10 - 95 56 37 6 20 159 10 - 96 55 54 26 105 188 10 - 97 4 18 35 104 165 10 - 98 26 52 9 14 136 10 - 99 26 35 15 42 141 10 - 100 31 67 3 43 210 10 diff --git a/jsprit-instances/instances/solomon/RC201.txt b/jsprit-instances/instances/solomon/RC201.txt deleted file mode 100644 index 37015cd9b..000000000 --- a/jsprit-instances/instances/solomon/RC201.txt +++ /dev/null @@ -1,110 +0,0 @@ -RC201 - -VEHICLE -NUMBER CAPACITY - 25 1000 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 40 50 0 0 960 0 - 1 25 85 20 673 793 10 - 2 22 75 30 152 272 10 - 3 22 85 10 471 591 10 - 4 20 80 40 644 764 10 - 5 20 85 20 73 193 10 - 6 18 75 20 388 508 10 - 7 15 75 20 300 420 10 - 8 15 80 10 367 487 10 - 9 10 35 20 371 491 10 - 10 10 40 30 519 639 10 - 11 8 40 40 195 315 10 - 12 8 45 20 223 343 10 - 13 5 35 10 653 773 10 - 14 5 45 10 35 155 10 - 15 2 40 20 174 294 10 - 16 0 40 20 255 375 10 - 17 0 45 20 703 823 10 - 18 44 5 20 335 455 10 - 19 42 10 40 254 374 10 - 20 42 15 10 537 657 10 - 21 40 5 10 215 335 10 - 22 40 15 40 375 495 10 - 23 38 5 30 201 321 10 - 24 38 15 10 681 801 10 - 25 35 5 20 784 904 10 - 26 95 30 30 529 649 10 - 27 95 35 20 146 266 10 - 28 92 30 10 149 269 10 - 29 90 35 10 194 314 10 - 30 88 30 10 246 366 10 - 31 88 35 20 165 285 10 - 32 87 30 10 621 741 10 - 33 85 25 10 80 200 10 - 34 85 35 30 487 607 10 - 35 67 85 20 657 777 10 - 36 65 85 40 43 163 10 - 37 65 82 10 557 677 10 - 38 62 80 30 278 398 10 - 39 60 80 10 64 184 10 - 40 60 85 30 329 449 10 - 41 58 75 20 376 496 10 - 42 55 80 10 33 153 10 - 43 55 85 20 574 694 10 - 44 55 82 10 217 337 10 - 45 20 82 10 37 157 10 - 46 18 80 10 489 609 10 - 47 2 45 10 105 225 10 - 48 42 5 10 732 852 10 - 49 42 12 10 440 560 10 - 50 72 35 30 507 627 10 - 51 55 20 19 326 446 10 - 52 25 30 3 175 295 10 - 53 20 50 5 375 495 10 - 54 55 60 16 601 721 10 - 55 30 60 16 599 719 10 - 56 50 35 19 557 677 10 - 57 30 25 23 397 517 10 - 58 15 10 20 782 902 10 - 59 10 20 19 42 162 10 - 60 15 60 17 694 814 10 - 61 45 65 9 258 378 10 - 62 65 35 3 167 287 10 - 63 65 20 6 39 159 10 - 64 45 30 17 191 311 10 - 65 35 40 16 11 131 10 - 66 41 37 16 566 686 10 - 67 64 42 9 268 388 10 - 68 40 60 21 612 732 10 - 69 31 52 27 157 277 10 - 70 35 69 23 810 930 10 - 71 65 55 14 241 361 10 - 72 63 65 8 60 180 10 - 73 2 60 5 286 406 10 - 74 20 20 8 645 765 10 - 75 5 5 16 232 352 10 - 76 60 12 31 268 388 10 - 77 23 3 7 764 884 10 - 78 8 56 27 365 485 10 - 79 6 68 30 352 472 10 - 80 47 47 13 822 942 10 - 81 49 58 10 355 475 10 - 82 27 43 9 152 272 10 - 83 37 31 14 105 225 10 - 84 57 29 18 395 515 10 - 85 63 23 2 344 464 10 - 86 21 24 28 349 469 10 - 87 12 24 13 359 479 10 - 88 24 58 19 260 380 10 - 89 67 5 25 713 833 10 - 90 37 47 6 359 479 10 - 91 49 42 13 719 839 10 - 92 53 43 14 14 134 10 - 93 61 52 3 808 928 10 - 94 57 48 23 392 512 10 - 95 56 37 6 100 220 10 - 96 55 54 26 562 682 10 - 97 4 18 35 547 667 10 - 98 26 52 9 172 292 10 - 99 26 35 15 308 428 10 - 100 31 67 3 810 930 10 diff --git a/jsprit-instances/instances/solomon/RC202.txt b/jsprit-instances/instances/solomon/RC202.txt deleted file mode 100644 index 2119ab643..000000000 --- a/jsprit-instances/instances/solomon/RC202.txt +++ /dev/null @@ -1,110 +0,0 @@ -RC202 - -VEHICLE -NUMBER CAPACITY - 25 1000 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 40 50 0 0 960 0 - 1 25 85 20 0 911 10 - 2 22 75 30 0 919 10 - 3 22 85 10 0 910 10 - 4 20 80 40 644 764 10 - 5 20 85 20 0 909 10 - 6 18 75 20 388 508 10 - 7 15 75 20 0 914 10 - 8 15 80 10 367 487 10 - 9 10 35 20 371 491 10 - 10 10 40 30 519 639 10 - 11 8 40 40 195 315 10 - 12 8 45 20 0 917 10 - 13 5 35 10 653 773 10 - 14 5 45 10 35 155 10 - 15 2 40 20 174 294 10 - 16 0 40 20 255 375 10 - 17 0 45 20 703 823 10 - 18 44 5 20 335 455 10 - 19 42 10 40 254 374 10 - 20 42 15 10 537 657 10 - 21 40 5 10 0 905 10 - 22 40 15 40 375 495 10 - 23 38 5 30 201 321 10 - 24 38 15 10 681 801 10 - 25 35 5 20 784 904 10 - 26 95 30 30 0 891 10 - 27 95 35 20 146 266 10 - 28 92 30 10 149 269 10 - 29 90 35 10 194 314 10 - 30 88 30 10 246 366 10 - 31 88 35 20 0 899 10 - 32 87 30 10 621 741 10 - 33 85 25 10 80 200 10 - 34 85 35 30 0 902 10 - 35 67 85 20 657 777 10 - 36 65 85 40 43 163 10 - 37 65 82 10 0 909 10 - 38 62 80 30 278 398 10 - 39 60 80 10 64 184 10 - 40 60 85 30 329 449 10 - 41 58 75 20 376 496 10 - 42 55 80 10 33 153 10 - 43 55 85 20 574 694 10 - 44 55 82 10 217 337 10 - 45 20 82 10 37 157 10 - 46 18 80 10 489 609 10 - 47 2 45 10 105 225 10 - 48 42 5 10 0 904 10 - 49 42 12 10 440 560 10 - 50 72 35 30 0 914 10 - 51 55 20 19 326 446 10 - 52 25 30 3 0 925 10 - 53 20 50 5 375 495 10 - 54 55 60 16 601 721 10 - 55 30 60 16 599 719 10 - 56 50 35 19 557 677 10 - 57 30 25 23 397 517 10 - 58 15 10 20 782 902 10 - 59 10 20 19 0 907 10 - 60 15 60 17 694 814 10 - 61 45 65 9 258 378 10 - 62 65 35 3 167 287 10 - 63 65 20 6 39 159 10 - 64 45 30 17 191 311 10 - 65 35 40 16 11 131 10 - 66 41 37 16 566 686 10 - 67 64 42 9 268 388 10 - 68 40 60 21 612 732 10 - 69 31 52 27 157 277 10 - 70 35 69 23 810 930 10 - 71 65 55 14 241 361 10 - 72 63 65 8 0 922 10 - 73 2 60 5 286 406 10 - 74 20 20 8 645 765 10 - 75 5 5 16 0 892 10 - 76 60 12 31 268 388 10 - 77 23 3 7 764 884 10 - 78 8 56 27 365 485 10 - 79 6 68 30 352 472 10 - 80 47 47 13 822 942 10 - 81 49 58 10 355 475 10 - 82 27 43 9 0 935 10 - 83 37 31 14 0 930 10 - 84 57 29 18 395 515 10 - 85 63 23 2 0 914 10 - 86 21 24 28 349 469 10 - 87 12 24 13 359 479 10 - 88 24 58 19 260 380 10 - 89 67 5 25 713 833 10 - 90 37 47 6 359 479 10 - 91 49 42 13 0 937 10 - 92 53 43 14 14 134 10 - 93 61 52 3 808 928 10 - 94 57 48 23 0 932 10 - 95 56 37 6 0 929 10 - 96 55 54 26 0 934 10 - 97 4 18 35 547 667 10 - 98 26 52 9 0 935 10 - 99 26 35 15 308 428 10 - 100 31 67 3 810 930 10 diff --git a/jsprit-instances/instances/solomon/RC203.txt b/jsprit-instances/instances/solomon/RC203.txt deleted file mode 100644 index 627d34a8f..000000000 --- a/jsprit-instances/instances/solomon/RC203.txt +++ /dev/null @@ -1,110 +0,0 @@ -RC203 - -VEHICLE -NUMBER CAPACITY - 25 1000 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 40 50 0 0 960 0 - 1 25 85 20 0 911 10 - 2 22 75 30 0 919 10 - 3 22 85 10 0 910 10 - 4 20 80 40 644 764 10 - 5 20 85 20 0 909 10 - 6 18 75 20 388 508 10 - 7 15 75 20 0 914 10 - 8 15 80 10 367 487 10 - 9 10 35 20 371 491 10 - 10 10 40 30 519 639 10 - 11 8 40 40 195 315 10 - 12 8 45 20 0 917 10 - 13 5 35 10 653 773 10 - 14 5 45 10 0 914 10 - 15 2 40 20 174 294 10 - 16 0 40 20 0 908 10 - 17 0 45 20 703 823 10 - 18 44 5 20 0 904 10 - 19 42 10 40 0 909 10 - 20 42 15 10 0 914 10 - 21 40 5 10 0 905 10 - 22 40 15 40 375 495 10 - 23 38 5 30 201 321 10 - 24 38 15 10 0 914 10 - 25 35 5 20 784 904 10 - 26 95 30 30 0 891 10 - 27 95 35 20 146 266 10 - 28 92 30 10 0 894 10 - 29 90 35 10 0 897 10 - 30 88 30 10 246 366 10 - 31 88 35 20 0 899 10 - 32 87 30 10 0 898 10 - 33 85 25 10 80 200 10 - 34 85 35 30 0 902 10 - 35 67 85 20 657 777 10 - 36 65 85 40 43 163 10 - 37 65 82 10 0 909 10 - 38 62 80 30 278 398 10 - 39 60 80 10 64 184 10 - 40 60 85 30 329 449 10 - 41 58 75 20 376 496 10 - 42 55 80 10 33 153 10 - 43 55 85 20 0 911 10 - 44 55 82 10 217 337 10 - 45 20 82 10 37 157 10 - 46 18 80 10 0 912 10 - 47 2 45 10 0 911 10 - 48 42 5 10 0 904 10 - 49 42 12 10 440 560 10 - 50 72 35 30 0 914 10 - 51 55 20 19 0 916 10 - 52 25 30 3 0 925 10 - 53 20 50 5 375 495 10 - 54 55 60 16 0 931 10 - 55 30 60 16 599 719 10 - 56 50 35 19 557 677 10 - 57 30 25 23 0 923 10 - 58 15 10 20 782 902 10 - 59 10 20 19 0 907 10 - 60 15 60 17 0 923 10 - 61 45 65 9 0 934 10 - 62 65 35 3 167 287 10 - 63 65 20 6 0 910 10 - 64 45 30 17 191 311 10 - 65 35 40 16 11 131 10 - 66 41 37 16 566 686 10 - 67 64 42 9 268 388 10 - 68 40 60 21 612 732 10 - 69 31 52 27 157 277 10 - 70 35 69 23 810 930 10 - 71 65 55 14 0 924 10 - 72 63 65 8 0 922 10 - 73 2 60 5 0 910 10 - 74 20 20 8 645 765 10 - 75 5 5 16 0 892 10 - 76 60 12 31 268 388 10 - 77 23 3 7 764 884 10 - 78 8 56 27 365 485 10 - 79 6 68 30 352 472 10 - 80 47 47 13 822 942 10 - 81 49 58 10 0 937 10 - 82 27 43 9 0 935 10 - 83 37 31 14 0 930 10 - 84 57 29 18 395 515 10 - 85 63 23 2 0 914 10 - 86 21 24 28 0 917 10 - 87 12 24 13 359 479 10 - 88 24 58 19 260 380 10 - 89 67 5 25 0 897 10 - 90 37 47 6 0 945 10 - 91 49 42 13 0 937 10 - 92 53 43 14 14 134 10 - 93 61 52 3 808 928 10 - 94 57 48 23 0 932 10 - 95 56 37 6 0 929 10 - 96 55 54 26 0 934 10 - 97 4 18 35 0 901 10 - 98 26 52 9 0 935 10 - 99 26 35 15 308 428 10 - 100 31 67 3 810 930 10 diff --git a/jsprit-instances/instances/solomon/RC204.txt b/jsprit-instances/instances/solomon/RC204.txt deleted file mode 100644 index dbf13f07b..000000000 --- a/jsprit-instances/instances/solomon/RC204.txt +++ /dev/null @@ -1,110 +0,0 @@ -RC204 - -VEHICLE -NUMBER CAPACITY - 25 1000 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 40 50 0 0 960 0 - 1 25 85 20 0 911 10 - 2 22 75 30 0 919 10 - 3 22 85 10 0 910 10 - 4 20 80 40 644 764 10 - 5 20 85 20 0 909 10 - 6 18 75 20 0 916 10 - 7 15 75 20 0 914 10 - 8 15 80 10 367 487 10 - 9 10 35 20 371 491 10 - 10 10 40 30 0 918 10 - 11 8 40 40 195 315 10 - 12 8 45 20 0 917 10 - 13 5 35 10 653 773 10 - 14 5 45 10 0 914 10 - 15 2 40 20 174 294 10 - 16 0 40 20 0 908 10 - 17 0 45 20 0 909 10 - 18 44 5 20 0 904 10 - 19 42 10 40 0 909 10 - 20 42 15 10 0 914 10 - 21 40 5 10 0 905 10 - 22 40 15 40 0 915 10 - 23 38 5 30 201 321 10 - 24 38 15 10 0 914 10 - 25 35 5 20 784 904 10 - 26 95 30 30 0 891 10 - 27 95 35 20 0 892 10 - 28 92 30 10 0 894 10 - 29 90 35 10 0 897 10 - 30 88 30 10 0 898 10 - 31 88 35 20 0 899 10 - 32 87 30 10 0 898 10 - 33 85 25 10 0 898 10 - 34 85 35 30 0 902 10 - 35 67 85 20 0 905 10 - 36 65 85 40 0 906 10 - 37 65 82 10 0 909 10 - 38 62 80 30 278 398 10 - 39 60 80 10 0 913 10 - 40 60 85 30 0 909 10 - 41 58 75 20 0 919 10 - 42 55 80 10 0 916 10 - 43 55 85 20 0 911 10 - 44 55 82 10 217 337 10 - 45 20 82 10 0 912 10 - 46 18 80 10 0 912 10 - 47 2 45 10 0 911 10 - 48 42 5 10 0 904 10 - 49 42 12 10 0 911 10 - 50 72 35 30 0 914 10 - 51 55 20 19 0 916 10 - 52 25 30 3 0 925 10 - 53 20 50 5 375 495 10 - 54 55 60 16 0 931 10 - 55 30 60 16 599 719 10 - 56 50 35 19 0 931 10 - 57 30 25 23 0 923 10 - 58 15 10 20 782 902 10 - 59 10 20 19 0 907 10 - 60 15 60 17 0 923 10 - 61 45 65 9 0 934 10 - 62 65 35 3 167 287 10 - 63 65 20 6 0 910 10 - 64 45 30 17 0 929 10 - 65 35 40 16 0 938 10 - 66 41 37 16 0 936 10 - 67 64 42 9 268 388 10 - 68 40 60 21 0 940 10 - 69 31 52 27 157 277 10 - 70 35 69 23 0 930 10 - 71 65 55 14 0 924 10 - 72 63 65 8 0 922 10 - 73 2 60 5 0 910 10 - 74 20 20 8 645 765 10 - 75 5 5 16 0 892 10 - 76 60 12 31 268 388 10 - 77 23 3 7 764 884 10 - 78 8 56 27 0 917 10 - 79 6 68 30 352 472 10 - 80 47 47 13 0 942 10 - 81 49 58 10 0 937 10 - 82 27 43 9 0 935 10 - 83 37 31 14 0 930 10 - 84 57 29 18 395 515 10 - 85 63 23 2 0 914 10 - 86 21 24 28 0 917 10 - 87 12 24 13 359 479 10 - 88 24 58 19 0 932 10 - 89 67 5 25 0 897 10 - 90 37 47 6 0 945 10 - 91 49 42 13 0 937 10 - 92 53 43 14 14 134 10 - 93 61 52 3 0 928 10 - 94 57 48 23 0 932 10 - 95 56 37 6 0 929 10 - 96 55 54 26 0 934 10 - 97 4 18 35 0 901 10 - 98 26 52 9 0 935 10 - 99 26 35 15 308 428 10 - 100 31 67 3 810 930 10 diff --git a/jsprit-instances/instances/solomon/RC205.txt b/jsprit-instances/instances/solomon/RC205.txt deleted file mode 100644 index 73fd4d3da..000000000 --- a/jsprit-instances/instances/solomon/RC205.txt +++ /dev/null @@ -1,110 +0,0 @@ -RC205 - -VEHICLE -NUMBER CAPACITY - 25 1000 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 40 50 0 0 960 0 - 1 25 85 20 431 911 10 - 2 22 75 30 30 510 10 - 3 22 85 10 291 771 10 - 4 20 80 40 674 734 10 - 5 20 85 20 40 520 10 - 6 18 75 20 393 502 10 - 7 15 75 20 120 600 10 - 8 15 80 10 397 457 10 - 9 10 35 20 401 461 10 - 10 10 40 30 535 622 10 - 11 8 40 40 225 285 10 - 12 8 45 20 43 523 10 - 13 5 35 10 683 743 10 - 14 5 45 10 35 366 10 - 15 2 40 20 204 264 10 - 16 0 40 20 204 425 10 - 17 0 45 20 698 827 10 - 18 44 5 20 306 483 10 - 19 42 10 40 199 428 10 - 20 42 15 10 494 699 10 - 21 40 5 10 45 525 10 - 22 40 15 40 383 486 10 - 23 38 5 30 231 291 10 - 24 38 15 10 609 872 10 - 25 35 5 20 821 881 10 - 26 95 30 30 349 829 10 - 27 95 35 20 138 273 10 - 28 92 30 10 78 339 10 - 29 90 35 10 132 375 10 - 30 88 30 10 252 359 10 - 31 88 35 20 50 530 10 - 32 87 30 10 562 799 10 - 33 85 25 10 71 208 10 - 34 85 35 30 307 787 10 - 35 67 85 20 655 778 10 - 36 65 85 40 43 186 10 - 37 65 82 10 377 857 10 - 38 62 80 30 308 368 10 - 39 60 80 10 46 201 10 - 40 60 85 30 339 438 10 - 41 58 75 20 377 494 10 - 42 55 80 10 33 166 10 - 43 55 85 20 531 736 10 - 44 55 82 10 247 307 10 - 45 20 82 10 37 177 10 - 46 18 80 10 432 665 10 - 47 2 45 10 38 322 10 - 48 42 5 10 424 904 10 - 49 42 12 10 460 539 10 - 50 72 35 30 327 807 10 - 51 55 20 19 273 498 10 - 52 25 30 3 25 505 10 - 53 20 50 5 405 465 10 - 54 55 60 16 554 767 10 - 55 30 60 16 629 689 10 - 56 50 35 19 560 673 10 - 57 30 25 23 342 571 10 - 58 15 10 20 842 902 10 - 59 10 20 19 42 522 10 - 60 15 60 17 623 884 10 - 61 45 65 9 214 421 10 - 62 65 35 3 197 257 10 - 63 65 20 6 39 316 10 - 64 45 30 17 191 310 10 - 65 35 40 16 11 140 10 - 66 41 37 16 570 681 10 - 67 64 42 9 298 358 10 - 68 40 60 21 613 730 10 - 69 31 52 27 187 247 10 - 70 35 69 23 780 930 10 - 71 65 55 14 191 410 10 - 72 63 65 8 27 507 10 - 73 2 60 5 240 451 10 - 74 20 20 8 675 735 10 - 75 5 5 16 57 537 10 - 76 60 12 31 298 358 10 - 77 23 3 7 794 854 10 - 78 8 56 27 366 483 10 - 79 6 68 30 382 442 10 - 80 47 47 13 817 942 10 - 81 49 58 10 332 497 10 - 82 27 43 9 14 494 10 - 83 37 31 14 19 499 10 - 84 57 29 18 425 485 10 - 85 63 23 2 164 644 10 - 86 21 24 28 310 507 10 - 87 12 24 13 389 449 10 - 88 24 58 19 262 377 10 - 89 67 5 25 611 897 10 - 90 37 47 6 311 526 10 - 91 49 42 13 457 937 10 - 92 53 43 14 14 74 10 - 93 61 52 3 789 928 10 - 94 57 48 23 212 692 10 - 95 56 37 6 20 500 10 - 96 55 54 26 382 862 10 - 97 4 18 35 516 697 10 - 98 26 52 9 14 494 10 - 99 26 35 15 338 398 10 - 100 31 67 3 870 930 10 diff --git a/jsprit-instances/instances/solomon/RC206.txt b/jsprit-instances/instances/solomon/RC206.txt deleted file mode 100644 index be10c63b6..000000000 --- a/jsprit-instances/instances/solomon/RC206.txt +++ /dev/null @@ -1,110 +0,0 @@ -RC206 - -VEHICLE -NUMBER CAPACITY - 25 1000 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 40 50 0 0 960 0 - 1 25 85 20 613 853 10 - 2 22 75 30 92 332 10 - 3 22 85 10 411 651 10 - 4 20 80 40 584 824 10 - 5 20 85 20 40 280 10 - 6 18 75 20 328 568 10 - 7 15 75 20 240 480 10 - 8 15 80 10 307 547 10 - 9 10 35 20 311 551 10 - 10 10 40 30 459 699 10 - 11 8 40 40 135 375 10 - 12 8 45 20 163 403 10 - 13 5 35 10 593 833 10 - 14 5 45 10 35 275 10 - 15 2 40 20 114 354 10 - 16 0 40 20 195 435 10 - 17 0 45 20 643 883 10 - 18 44 5 20 275 515 10 - 19 42 10 40 194 434 10 - 20 42 15 10 477 717 10 - 21 40 5 10 155 395 10 - 22 40 15 40 315 555 10 - 23 38 5 30 141 381 10 - 24 38 15 10 621 861 10 - 25 35 5 20 664 904 10 - 26 95 30 30 469 709 10 - 27 95 35 20 86 326 10 - 28 92 30 10 89 329 10 - 29 90 35 10 134 374 10 - 30 88 30 10 186 426 10 - 31 88 35 20 105 345 10 - 32 87 30 10 561 801 10 - 33 85 25 10 51 291 10 - 34 85 35 30 427 667 10 - 35 67 85 20 597 837 10 - 36 65 85 40 43 283 10 - 37 65 82 10 497 737 10 - 38 62 80 30 218 458 10 - 39 60 80 10 36 276 10 - 40 60 85 30 269 509 10 - 41 58 75 20 316 556 10 - 42 55 80 10 33 273 10 - 43 55 85 20 514 754 10 - 44 55 82 10 157 397 10 - 45 20 82 10 37 277 10 - 46 18 80 10 429 669 10 - 47 2 45 10 45 285 10 - 48 42 5 10 664 904 10 - 49 42 12 10 380 620 10 - 50 72 35 30 447 687 10 - 51 55 20 19 266 506 10 - 52 25 30 3 115 355 10 - 53 20 50 5 315 555 10 - 54 55 60 16 541 781 10 - 55 30 60 16 539 779 10 - 56 50 35 19 497 737 10 - 57 30 25 23 337 577 10 - 58 15 10 20 662 902 10 - 59 10 20 19 42 282 10 - 60 15 60 17 634 874 10 - 61 45 65 9 198 438 10 - 62 65 35 3 107 347 10 - 63 65 20 6 39 279 10 - 64 45 30 17 131 371 10 - 65 35 40 16 11 251 10 - 66 41 37 16 506 746 10 - 67 64 42 9 208 448 10 - 68 40 60 21 552 792 10 - 69 31 52 27 97 337 10 - 70 35 69 23 690 930 10 - 71 65 55 14 181 421 10 - 72 63 65 8 27 267 10 - 73 2 60 5 226 466 10 - 74 20 20 8 585 825 10 - 75 5 5 16 172 412 10 - 76 60 12 31 208 448 10 - 77 23 3 7 660 900 10 - 78 8 56 27 305 545 10 - 79 6 68 30 292 532 10 - 80 47 47 13 702 942 10 - 81 49 58 10 295 535 10 - 82 27 43 9 92 332 10 - 83 37 31 14 45 285 10 - 84 57 29 18 335 575 10 - 85 63 23 2 284 524 10 - 86 21 24 28 289 529 10 - 87 12 24 13 299 539 10 - 88 24 58 19 200 440 10 - 89 67 5 25 653 893 10 - 90 37 47 6 299 539 10 - 91 49 42 13 659 899 10 - 92 53 43 14 14 254 10 - 93 61 52 3 688 928 10 - 94 57 48 23 332 572 10 - 95 56 37 6 40 280 10 - 96 55 54 26 502 742 10 - 97 4 18 35 487 727 10 - 98 26 52 9 112 352 10 - 99 26 35 15 248 488 10 - 100 31 67 3 690 930 10 diff --git a/jsprit-instances/instances/solomon/RC207.txt b/jsprit-instances/instances/solomon/RC207.txt deleted file mode 100644 index dc854c22d..000000000 --- a/jsprit-instances/instances/solomon/RC207.txt +++ /dev/null @@ -1,110 +0,0 @@ -RC207 - -VEHICLE -NUMBER CAPACITY - 25 1000 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 40 50 0 0 960 0 - 1 25 85 20 591 874 10 - 2 22 75 30 73 350 10 - 3 22 85 10 473 588 10 - 4 20 80 40 418 913 10 - 5 20 85 20 40 390 10 - 6 18 75 20 249 646 10 - 7 15 75 20 281 438 10 - 8 15 80 10 272 581 10 - 9 10 35 20 236 625 10 - 10 10 40 30 470 687 10 - 11 8 40 40 33 510 10 - 12 8 45 20 166 399 10 - 13 5 35 10 359 911 10 - 14 5 45 10 35 457 10 - 15 2 40 20 39 538 10 - 16 0 40 20 214 415 10 - 17 0 45 20 359 909 10 - 18 44 5 20 338 451 10 - 19 42 10 40 205 422 10 - 20 42 15 10 511 682 10 - 21 40 5 10 158 391 10 - 22 40 15 40 263 606 10 - 23 38 5 30 45 522 10 - 24 38 15 10 598 883 10 - 25 35 5 20 348 904 10 - 26 95 30 30 509 668 10 - 27 95 35 20 57 664 10 - 28 92 30 10 68 349 10 - 29 90 35 10 131 376 10 - 30 88 30 10 114 497 10 - 31 88 35 20 102 347 10 - 32 87 30 10 564 797 10 - 33 85 25 10 51 673 10 - 34 85 35 30 462 631 10 - 35 67 85 20 396 905 10 - 36 65 85 40 43 712 10 - 37 65 82 10 530 703 10 - 38 62 80 30 131 544 10 - 39 60 80 10 36 800 10 - 40 60 85 30 233 544 10 - 41 58 75 20 207 664 10 - 42 55 80 10 33 624 10 - 43 55 85 20 549 718 10 - 44 55 82 10 62 491 10 - 45 20 82 10 37 677 10 - 46 18 80 10 435 662 10 - 47 2 45 10 38 366 10 - 48 42 5 10 636 904 10 - 49 42 12 10 423 576 10 - 50 72 35 30 471 662 10 - 51 55 20 19 281 490 10 - 52 25 30 3 109 360 10 - 53 20 50 5 284 585 10 - 54 55 60 16 568 753 10 - 55 30 60 16 421 896 10 - 56 50 35 19 404 829 10 - 57 30 25 23 347 566 10 - 58 15 10 20 380 902 10 - 59 10 20 19 42 466 10 - 60 15 60 17 613 894 10 - 61 45 65 9 230 405 10 - 62 65 35 3 29 587 10 - 63 65 20 6 39 353 10 - 64 45 30 17 20 497 10 - 65 35 40 16 11 570 10 - 66 41 37 16 423 828 10 - 67 64 42 9 112 543 10 - 68 40 60 21 441 902 10 - 69 31 52 27 9 532 10 - 70 35 69 23 211 930 10 - 71 65 55 14 201 400 10 - 72 63 65 8 27 382 10 - 73 2 60 5 255 436 10 - 74 20 20 8 427 913 10 - 75 5 5 16 183 400 10 - 76 60 12 31 162 493 10 - 77 23 3 7 360 900 10 - 78 8 56 27 195 654 10 - 79 6 68 30 258 565 10 - 80 47 47 13 426 942 10 - 81 49 58 10 369 460 10 - 82 27 43 9 85 338 10 - 83 37 31 14 19 326 10 - 84 57 29 18 304 605 10 - 85 63 23 2 318 489 10 - 86 21 24 28 332 485 10 - 87 12 24 13 365 472 10 - 88 24 58 19 100 539 10 - 89 67 5 25 565 897 10 - 90 37 47 6 324 513 10 - 91 49 42 13 651 906 10 - 92 53 43 14 14 669 10 - 93 61 52 3 298 928 10 - 94 57 48 23 385 518 10 - 95 56 37 6 20 299 10 - 96 55 54 26 538 705 10 - 97 4 18 35 546 667 10 - 98 26 52 9 109 354 10 - 99 26 35 15 170 565 10 - 100 31 67 3 262 930 10 diff --git a/jsprit-instances/instances/solomon/RC208.txt b/jsprit-instances/instances/solomon/RC208.txt deleted file mode 100644 index 19ba67e45..000000000 --- a/jsprit-instances/instances/solomon/RC208.txt +++ /dev/null @@ -1,110 +0,0 @@ -RC208 - -VEHICLE -NUMBER CAPACITY - 25 1000 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 40 50 0 0 960 0 - 1 25 85 20 388 911 10 - 2 22 75 30 30 546 10 - 3 22 85 10 353 708 10 - 4 20 80 40 425 913 10 - 5 20 85 20 40 630 10 - 6 18 75 20 228 667 10 - 7 15 75 20 161 558 10 - 8 15 80 10 229 624 10 - 9 10 35 20 213 648 10 - 10 10 40 30 404 753 10 - 11 8 40 40 33 511 10 - 12 8 45 20 46 519 10 - 13 5 35 10 395 911 10 - 14 5 45 10 35 697 10 - 15 2 40 20 39 528 10 - 16 0 40 20 94 535 10 - 17 0 45 20 394 909 10 - 18 44 5 20 218 571 10 - 19 42 10 40 85 542 10 - 20 42 15 10 391 802 10 - 21 40 5 10 45 517 10 - 22 40 15 40 229 640 10 - 23 38 5 30 45 523 10 - 24 38 15 10 389 914 10 - 25 35 5 20 386 904 10 - 26 95 30 30 389 788 10 - 27 95 35 20 57 600 10 - 28 92 30 10 55 575 10 - 29 90 35 10 52 536 10 - 30 88 30 10 90 521 10 - 31 88 35 20 50 534 10 - 32 87 30 10 425 898 10 - 33 85 25 10 51 602 10 - 34 85 35 30 342 751 10 - 35 67 85 20 410 905 10 - 36 65 85 40 43 617 10 - 37 65 82 10 410 823 10 - 38 62 80 30 114 561 10 - 39 60 80 10 36 658 10 - 40 60 85 30 191 586 10 - 41 58 75 20 201 670 10 - 42 55 80 10 33 568 10 - 43 55 85 20 429 838 10 - 44 55 82 10 49 504 10 - 45 20 82 10 37 597 10 - 46 18 80 10 315 782 10 - 47 2 45 10 38 606 10 - 48 42 5 10 396 904 10 - 49 42 12 10 341 658 10 - 50 72 35 30 351 782 10 - 51 55 20 19 161 610 10 - 52 25 30 3 25 516 10 - 53 20 50 5 239 630 10 - 54 55 60 16 448 873 10 - 55 30 60 16 420 897 10 - 56 50 35 19 390 843 10 - 57 30 25 23 227 686 10 - 58 15 10 20 401 902 10 - 59 10 20 19 42 706 10 - 60 15 60 17 401 923 10 - 61 45 65 9 110 525 10 - 62 65 35 3 29 548 10 - 63 65 20 6 39 593 10 - 64 45 30 17 20 498 10 - 65 35 40 16 11 530 10 - 66 41 37 16 404 847 10 - 67 64 42 9 100 555 10 - 68 40 60 21 436 907 10 - 69 31 52 27 9 510 10 - 70 35 69 23 330 930 10 - 71 65 55 14 81 520 10 - 72 63 65 8 27 622 10 - 73 2 60 5 135 556 10 - 74 20 20 8 430 913 10 - 75 5 5 16 63 520 10 - 76 60 12 31 125 530 10 - 77 23 3 7 390 900 10 - 78 8 56 27 190 659 10 - 79 6 68 30 215 608 10 - 80 47 47 13 444 942 10 - 81 49 58 10 249 580 10 - 82 27 43 9 14 506 10 - 83 37 31 14 19 566 10 - 84 57 29 18 259 650 10 - 85 63 23 2 198 609 10 - 86 21 24 28 212 605 10 - 87 12 24 13 272 565 10 - 88 24 58 19 90 549 10 - 89 67 5 25 325 897 10 - 90 37 47 6 204 633 10 - 91 49 42 13 442 937 10 - 92 53 43 14 14 581 10 - 93 61 52 3 373 928 10 - 94 57 48 23 265 638 10 - 95 56 37 6 20 539 10 - 96 55 54 26 418 825 10 - 97 4 18 35 426 787 10 - 98 26 52 9 14 499 10 - 99 26 35 15 149 586 10 - 100 31 67 3 356 930 10 diff --git a/jsprit-instances/instances/taillard/R_19.txt b/jsprit-instances/instances/taillard/R_19.txt deleted file mode 100644 index b31ea1e40..000000000 --- a/jsprit-instances/instances/taillard/R_19.txt +++ /dev/null @@ -1,4 +0,0 @@ -Vehicle;Capacity;Fix;Var;#Veh -A;100;500;1.0;4 -B;200;1200;1.4;3 -C;300;2100;1.7;3 \ No newline at end of file diff --git a/jsprit-instances/instances/taillard/R_20.txt b/jsprit-instances/instances/taillard/R_20.txt deleted file mode 100644 index 54b845b62..000000000 --- a/jsprit-instances/instances/taillard/R_20.txt +++ /dev/null @@ -1,4 +0,0 @@ -Vehicle;Capacity;Fix;Var;#Veh -A;60;100;1.0;6 -B;140;300;1.7;4 -C;200;500;2.0;3 \ No newline at end of file diff --git a/jsprit-instances/instances/vrph/README b/jsprit-instances/instances/vrph/README deleted file mode 100644 index c8e85a3e1..000000000 --- a/jsprit-instances/instances/vrph/README +++ /dev/null @@ -1 +0,0 @@ -use VrpGolderReader to read these files \ No newline at end of file diff --git a/jsprit-instances/instances/vrph/cn_13mix.txt b/jsprit-instances/instances/vrph/cn_13mix.txt deleted file mode 100644 index 9e58fa134..000000000 --- a/jsprit-instances/instances/vrph/cn_13mix.txt +++ /dev/null @@ -1,73 +0,0 @@ -50 - 0 40 40 0 - 1 22 22 18 - 2 36 26 26 - 3 21 45 11 - 4 45 35 30 - 5 55 20 21 - 6 33 34 19 - 7 50 50 15 - 8 55 45 16 - 9 26 59 29 - 10 40 66 26 - 11 55 65 37 - 12 35 51 16 - 13 62 35 12 - 14 62 57 31 - 15 62 24 8 - 16 21 36 19 - 17 33 44 20 - 18 9 56 13 - 19 62 48 15 - 20 66 14 22 - 21 44 13 28 - 22 26 13 12 - 23 11 28 6 - 24 7 43 27 - 25 17 64 14 - 26 41 46 18 - 27 55 34 17 - 28 35 16 29 - 29 52 26 13 - 30 43 26 22 - 31 31 76 25 - 32 22 53 28 - 33 26 29 27 - 34 50 40 19 - 35 55 50 10 - 36 54 10 12 - 37 60 15 14 - 38 47 66 24 - 39 30 60 16 - 40 30 50 33 - 41 12 17 15 - 42 15 14 11 - 43 16 19 18 - 44 21 48 17 - 45 50 30 21 - 46 51 42 27 - 47 50 15 19 - 48 48 21 20 - 49 12 38 5 - 50 15 56 22 -//Vehicles characteristics: type, volume, fixed cost, variable cost, number available -6 -v 1 20 20 1.0 4 -v 2 30 35 1.1 2 -v 3 40 50 1.2 4 -v 4 70 120 1.7 4 -v 5 120 225 2.5 2 -v 6 200 400 3.2 1 - - -best solution with fixed costs: 588.784723 + 20 + 3*35 + 2*50 + 4*400 = 2413.78 - 2 27 13 807876 - 1 26 321656 - 2 17 12 774254 - 2 34 8 828825 - 1 46 573606 - 1 4 491422 - 9 39 31 10 38 11 14 19 35 7 5129601 - 11 2 28 22 1 43 42 41 23 16 33 6 5102713 - 10 40 32 9 25 50 18 24 49 3 44 5096803 - 11 30 48 21 47 36 37 20 15 5 29 45 5011089 diff --git a/jsprit-instances/instances/vrph/cn_14mix.txt b/jsprit-instances/instances/vrph/cn_14mix.txt deleted file mode 100644 index a0689d173..000000000 --- a/jsprit-instances/instances/vrph/cn_14mix.txt +++ /dev/null @@ -1,67 +0,0 @@ -50 - 0 40 40 0 - 1 22 22 18 - 2 36 26 26 - 3 21 45 11 - 4 45 35 30 - 5 55 20 21 - 6 33 34 19 - 7 50 50 15 - 8 55 45 16 - 9 26 59 29 - 10 40 66 26 - 11 55 65 37 - 12 35 51 16 - 13 62 35 12 - 14 62 57 31 - 15 62 24 8 - 16 21 36 19 - 17 33 44 20 - 18 9 56 13 - 19 62 48 15 - 20 66 14 22 - 21 44 13 28 - 22 26 13 12 - 23 11 28 6 - 24 7 43 27 - 25 17 64 14 - 26 41 46 18 - 27 55 34 17 - 28 35 16 29 - 29 52 26 13 - 30 43 26 22 - 31 31 76 25 - 32 22 53 28 - 33 26 29 27 - 34 50 40 19 - 35 55 50 10 - 36 54 10 12 - 37 60 15 14 - 38 47 66 24 - 39 30 60 16 - 40 30 50 33 - 41 12 17 15 - 42 15 14 11 - 43 16 19 18 - 44 21 48 17 - 45 50 30 21 - 46 51 42 27 - 47 50 15 19 - 48 48 21 20 - 49 12 38 5 - 50 15 56 22 -//Vehicles characteristics: volume, fixed cost, variable cost, number available -v 1 120 1000 1.0 4 -v 2 160 1500 1.1 2 -v 3 300 3500 1.4 1 - -160 -8 300 0 10000 625.679906 + 7*1000 + 1500 = - 7 26 7 35 19 8 46 34 10530637 - 4 10 38 11 14 10794953 - 8 33 1 43 42 41 23 49 16 10916479 - 6 48 47 36 21 28 22 10931709 - 7 27 13 15 20 37 5 29 10832981 - 6 44 32 50 18 24 3 10862722 - 5 6 2 30 45 4 10469680 - 7 12 39 31 25 9 40 17 15917639 diff --git a/jsprit-instances/instances/vrph/cn_15mix.txt b/jsprit-instances/instances/vrph/cn_15mix.txt deleted file mode 100644 index bdd1a2e5e..000000000 --- a/jsprit-instances/instances/vrph/cn_15mix.txt +++ /dev/null @@ -1,73 +0,0 @@ -50 - 0 30 40 0 - 1 37 52 7 - 2 49 49 30 - 3 52 64 16 - 4 20 26 9 - 5 40 30 21 - 6 21 47 15 - 7 17 63 19 - 8 31 62 23 - 9 52 33 11 - 10 51 21 5 - 11 42 41 19 - 12 31 32 29 - 13 5 25 23 - 14 12 42 21 - 15 36 16 10 - 16 52 41 15 - 17 27 23 3 - 18 17 33 41 - 19 13 13 9 - 20 57 58 28 - 21 62 42 8 - 22 42 57 8 - 23 16 57 16 - 24 8 52 10 - 25 7 38 28 - 26 27 68 7 - 27 30 48 15 - 28 43 67 14 - 29 58 48 6 - 30 58 27 19 - 31 37 69 11 - 32 38 46 12 - 33 46 10 23 - 34 61 33 26 - 35 62 63 17 - 36 63 69 6 - 37 32 22 9 - 38 45 35 15 - 39 59 15 14 - 40 5 6 7 - 41 10 17 27 - 42 21 10 13 - 43 5 64 11 - 44 30 15 16 - 45 39 10 10 - 46 32 39 5 - 47 25 32 25 - 48 25 55 17 - 49 48 28 18 - 50 56 37 10 -//Vehicles characteristics: volume, fixed cost, variable cost, number available -//See E. D. Taillard, "A heuristic column generation method for the heterogeneous fleet vrp" -//RAIRO Rech. Op�r. 33 (1) 1999, pp 1-14) -//see http://ina2.eivd.ch/collaborateurs/etd/articles.dir/vrphen.pdf -v 1 50 100 1.0 4 -v 2 100 250 1.6 3 -v 3 160 450 2.0 2 - -12 160 0 9999999 798.063541 + 8*100 + 4*250 = 2598.06 - 4 24 43 7 26 1888114 - 3 11 16 38 1470725 - 2 25 14 1476007 - 3 6 23 48 1476130 - 3 28 31 8 1675334 - 3 1 2 32 1476635 - 2 4 18 1395853 - 2 47 27 1341971 - 7 12 37 15 45 33 39 10 3412795 - 7 13 41 40 19 42 44 17 3559482 - 6 5 49 30 34 9 46 3212631 - 8 22 3 36 35 20 29 21 50 3594959 diff --git a/jsprit-instances/instances/vrph/cn_16mix.txt b/jsprit-instances/instances/vrph/cn_16mix.txt deleted file mode 100644 index 44d1104ce..000000000 --- a/jsprit-instances/instances/vrph/cn_16mix.txt +++ /dev/null @@ -1,70 +0,0 @@ -50 - 0 30 40 0 - 1 37 52 7 - 2 49 49 30 - 3 52 64 16 - 4 20 26 9 - 5 40 30 21 - 6 21 47 15 - 7 17 63 19 - 8 31 62 23 - 9 52 33 11 - 10 51 21 5 - 11 42 41 19 - 12 31 32 29 - 13 5 25 23 - 14 12 42 21 - 15 36 16 10 - 16 52 41 15 - 17 27 23 3 - 18 17 33 41 - 19 13 13 9 - 20 57 58 28 - 21 62 42 8 - 22 42 57 8 - 23 16 57 16 - 24 8 52 10 - 25 7 38 28 - 26 27 68 7 - 27 30 48 15 - 28 43 67 14 - 29 58 48 6 - 30 58 27 19 - 31 37 69 11 - 32 38 46 12 - 33 46 10 23 - 34 61 33 26 - 35 62 63 17 - 36 63 69 6 - 37 32 22 9 - 38 45 35 15 - 39 59 15 14 - 40 5 6 7 - 41 10 17 27 - 42 21 10 13 - 43 5 64 11 - 44 30 15 16 - 45 39 10 10 - 46 32 39 5 - 47 25 32 25 - 48 25 55 17 - 49 48 28 18 - 50 56 37 10 - -v 1 40 100 1.0 2 -v 2 80 200 1.6 4 -v 3 140 400 2.1 3 - -10 140 0 9999999 741.499345 + 10*200 = 2741.50 - 3 18 4 47 2396248 - 6 15 45 33 39 10 49 2916243 - 5 12 17 44 37 5 2591911 - 4 38 16 2 11 2562466 - 5 24 43 7 23 48 2805845 - 6 29 20 35 36 3 1 2975090 - 5 13 41 40 19 42 3011668 - 6 50 21 34 30 9 46 2813483 - 6 8 26 31 28 22 32 2773629 - 4 27 6 14 25 2568409 - - diff --git a/jsprit-instances/instances/vrph/cn_17mix.txt b/jsprit-instances/instances/vrph/cn_17mix.txt deleted file mode 100644 index fe1cff90a..000000000 --- a/jsprit-instances/instances/vrph/cn_17mix.txt +++ /dev/null @@ -1,95 +0,0 @@ -75 - 0 40 40 0 - 1 22 22 18 - 2 36 26 26 - 3 21 45 11 - 4 45 35 30 - 5 55 20 21 - 6 33 34 19 - 7 50 50 15 - 8 55 45 16 - 9 26 59 29 - 10 40 66 26 - 11 55 65 37 - 12 35 51 16 - 13 62 35 12 - 14 62 57 31 - 15 62 24 8 - 16 21 36 19 - 17 33 44 20 - 18 9 56 13 - 19 62 48 15 - 20 66 14 22 - 21 44 13 28 - 22 26 13 12 - 23 11 28 6 - 24 7 43 27 - 25 17 64 14 - 26 41 46 18 - 27 55 34 17 - 28 35 16 29 - 29 52 26 13 - 30 43 26 22 - 31 31 76 25 - 32 22 53 28 - 33 26 29 27 - 34 50 40 19 - 35 55 50 10 - 36 54 10 12 - 37 60 15 14 - 38 47 66 24 - 39 30 60 16 - 40 30 50 33 - 41 12 17 15 - 42 15 14 11 - 43 16 19 18 - 44 21 48 17 - 45 50 30 21 - 46 51 42 27 - 47 50 15 19 - 48 48 21 20 - 49 12 38 5 - 50 15 56 22 - 51 29 39 12 - 52 54 38 19 - 53 55 57 22 - 54 67 41 16 - 55 10 70 7 - 56 6 25 26 - 57 65 27 14 - 58 40 60 21 - 59 70 64 24 - 60 64 4 13 - 61 36 6 15 - 62 30 20 18 - 63 20 30 11 - 64 15 5 28 - 65 50 70 9 - 66 57 72 37 - 67 45 42 30 - 68 38 33 10 - 69 50 4 8 - 70 66 8 11 - 71 59 5 3 - 72 35 60 1 - 73 27 24 6 - 74 40 20 10 - 75 40 37 20 -//Vehicles characteristics: volume, fixed cost, variable cost, number available -//See E. D. Taillard, "A heuristic column generation method for the heterogeneous fleet vrp" -//RAIRO Rech. Op�r. 33 (1) 1999, pp 1-14) -//see http://ina2.eivd.ch/collaborateurs/etd/articles.dir/vrphen.pdf -v 1 50 25 1.0 4 -v 2 120 80 1.2 4 -v 3 200 150 1.5 2 -v 4 350 320 1.8 1 - -7 350 0 1000000 703.124497 + 7 * 150 = 1753.12 - 14 27 57 15 37 20 70 60 71 69 36 47 5 29 45 2685412 - 8 7 53 14 59 11 66 65 38 2518938 - 11 51 16 49 24 18 50 25 55 31 10 58 2837925 - 10 26 12 72 39 9 32 44 3 40 17 2223923 - 12 6 33 63 23 56 41 43 42 64 22 1 73 2669773 - 10 67 34 46 8 35 19 54 13 52 4 2218010 - 10 68 2 62 28 61 21 74 48 30 75 2377261 - diff --git a/jsprit-instances/instances/vrph/cn_18mix.txt b/jsprit-instances/instances/vrph/cn_18mix.txt deleted file mode 100644 index b2bc5cfed..000000000 --- a/jsprit-instances/instances/vrph/cn_18mix.txt +++ /dev/null @@ -1,124 +0,0 @@ -75 - 0 40 40 0 - 1 22 22 18 - 2 36 26 26 - 3 21 45 11 - 4 45 35 30 - 5 55 20 21 - 6 33 34 19 - 7 50 50 15 - 8 55 45 16 - 9 26 59 29 - 10 40 66 26 - 11 55 65 37 - 12 35 51 16 - 13 62 35 12 - 14 62 57 31 - 15 62 24 8 - 16 21 36 19 - 17 33 44 20 - 18 9 56 13 - 19 62 48 15 - 20 66 14 22 - 21 44 13 28 - 22 26 13 12 - 23 11 28 6 - 24 7 43 27 - 25 17 64 14 - 26 41 46 18 - 27 55 34 17 - 28 35 16 29 - 29 52 26 13 - 30 43 26 22 - 31 31 76 25 - 32 22 53 28 - 33 26 29 27 - 34 50 40 19 - 35 55 50 10 - 36 54 10 12 - 37 60 15 14 - 38 47 66 24 - 39 30 60 16 - 40 30 50 33 - 41 12 17 15 - 42 15 14 11 - 43 16 19 18 - 44 21 48 17 - 45 50 30 21 - 46 51 42 27 - 47 50 15 19 - 48 48 21 20 - 49 12 38 5 - 50 15 56 22 - 51 29 39 12 - 52 54 38 19 - 53 55 57 22 - 54 67 41 16 - 55 10 70 7 - 56 6 25 26 - 57 65 27 14 - 58 40 60 21 - 59 70 64 24 - 60 64 4 13 - 61 36 6 15 - 62 30 20 18 - 63 20 30 11 - 64 15 5 28 - 65 50 70 9 - 66 57 72 37 - 67 45 42 30 - 68 38 33 10 - 69 50 4 8 - 70 66 8 11 - 71 59 5 3 - 72 35 60 1 - 73 27 24 6 - 74 40 20 10 - 75 40 37 20 -//Vehicles characteristics: volume, fixed cost, variable cost, number available -//See E. D. Taillard, "A heuristic column generation method for the heterogeneous fleet vrp" -//RAIRO Rech. Op�r. 33 (1) 1999, pp 1-14) -//see http://ina2.eivd.ch/collaborateurs/etd/articles.dir/vrphen.pdf -v 1 20 10 1.0 4 -v 2 50 35 1.3 4 -v 3 100 100 1.9 2 -v 4 150 180 2.4 2 -v 5 250 400 2.9 1 -v 6 400 800 3.2 1 - - -16 400 0 1000000 - 2 4 75 504563 - 2 40 12 663241 - 2 34 46 584164 - 2 6 33 706263 - 2 26 67 521249 - 4 59 66 65 38 1928889 - 5 30 48 47 21 74 1621004 - 8 36 69 71 60 70 20 37 29 2030669 - 6 8 35 14 19 54 13 1786844 - 6 32 25 55 18 50 3 1957187 - 6 45 5 15 57 27 52 1680991 - 6 17 44 24 49 16 51 1714575 - 5 9 39 31 10 72 1856344 - 4 58 11 53 7 1665558 - 5 2 28 61 22 62 1772896 - 10 63 23 56 41 64 42 43 1 73 68 2874657 - - 2 40 12 663241 - 2 2 30 708780 - 2 34 46 584164 - 2 6 33 706263 - 2 26 67 521249 - 4 59 66 65 38 1928889 - 8 61 69 36 71 60 70 20 37 2163283 - 6 8 35 14 19 54 13 1786844 - 7 63 23 56 41 43 1 73 1845922 - 6 32 25 55 18 50 3 1957187 - 6 45 5 15 57 27 52 1680991 - 6 17 44 24 49 16 51 1714575 - 5 9 39 31 10 72 1856344 - 4 58 11 53 7 1665558 - 5 28 22 64 42 62 1951198 - 2 4 75 504563 - 6 68 74 21 47 48 29 1659867 diff --git a/jsprit-instances/instances/vrph/cn_19mix.txt b/jsprit-instances/instances/vrph/cn_19mix.txt deleted file mode 100644 index 3eea2cb8b..000000000 --- a/jsprit-instances/instances/vrph/cn_19mix.txt +++ /dev/null @@ -1,126 +0,0 @@ - 100 - 0 35 35 0 - 1 41 49 10 - 2 35 17 7 - 3 55 45 13 - 4 55 20 19 - 5 15 30 26 - 6 25 30 3 - 7 20 50 5 - 8 10 43 9 - 9 55 60 16 - 10 30 60 16 - 11 20 65 12 - 12 50 35 19 - 13 30 25 23 - 14 15 10 20 - 15 30 5 8 - 16 10 20 19 - 17 5 30 2 - 18 20 40 12 - 19 15 60 17 - 20 45 65 9 - 21 45 20 11 - 22 45 10 18 - 23 55 5 29 - 24 65 35 3 - 25 65 20 6 - 26 45 30 17 - 27 35 40 16 - 28 41 37 16 - 29 64 42 9 - 30 40 60 21 - 31 31 52 27 - 32 35 69 23 - 33 53 52 11 - 34 65 55 14 - 35 63 65 8 - 36 2 60 5 - 37 20 20 8 - 38 5 5 16 - 39 60 12 31 - 40 40 25 9 - 41 42 7 5 - 42 24 12 5 - 43 23 3 7 - 44 11 14 18 - 45 6 38 16 - 46 2 48 1 - 47 8 56 27 - 48 13 52 36 - 49 6 68 30 - 50 47 47 13 - 51 49 58 10 - 52 27 43 9 - 53 37 31 14 - 54 57 29 18 - 55 63 23 2 - 56 53 12 6 - 57 32 12 7 - 58 36 26 18 - 59 21 24 28 - 60 17 34 3 - 61 12 24 13 - 62 24 58 19 - 63 27 69 10 - 64 15 77 9 - 65 62 77 20 - 66 49 73 25 - 67 67 5 25 - 68 56 39 36 - 69 37 47 6 - 70 37 56 5 - 71 57 68 15 - 72 47 16 25 - 73 44 17 9 - 74 46 13 8 - 75 49 11 18 - 76 49 42 13 - 77 53 43 14 - 78 61 52 3 - 79 57 48 23 - 80 56 37 6 - 81 55 54 26 - 82 15 47 16 - 83 14 37 11 - 84 11 31 7 - 85 16 22 41 - 86 4 18 35 - 87 28 18 26 - 88 26 52 9 - 89 26 35 15 - 90 31 67 3 - 91 15 19 1 - 92 22 22 2 - 93 18 24 22 - 94 26 27 27 - 95 25 24 20 - 96 22 27 11 - 97 25 21 12 - 98 19 21 10 - 99 20 26 9 - 100 18 18 17 -//Vehicles characteristics: volume, fixed cost, variable cost, number available -//See E. D. Taillard, "A heuristic column generation method for the heterogeneous fleet vrp" -//RAIRO Rech. Op�r. 33 (1) 1999, pp 1-14) -//see http://ina2.eivd.ch/collaborateurs/etd/articles.dir/vrphen.pdf -v 1 100 500 1.0 4 -v 2 200 1200 1.4 3 -v 3 300 2100 1.7 3 - -15 200 0 1000000 - 5 12 80 68 76 28 546700 - 6 77 3 79 81 33 50 560066 - 7 1 30 20 66 32 70 69 591171 - 9 51 9 71 65 35 34 78 29 24 626544 - 6 26 54 4 72 21 40 564109 - 8 53 73 74 75 22 41 2 58 566885 - 6 56 23 67 39 25 55 601888 - 4 59 85 93 99 546338 - 7 88 62 11 63 90 10 31 578753 - 7 8 46 47 36 49 64 19 623582 - 6 27 52 7 48 82 18 560521 - 4 94 95 87 13 540372 - 9 57 15 43 42 14 38 44 100 92 610131 - 9 89 60 83 45 17 84 5 96 6 571667 - 7 61 86 16 91 98 37 97 575109 diff --git a/jsprit-instances/instances/vrph/cn_20mix.txt b/jsprit-instances/instances/vrph/cn_20mix.txt deleted file mode 100644 index 28c6f1c23..000000000 --- a/jsprit-instances/instances/vrph/cn_20mix.txt +++ /dev/null @@ -1,128 +0,0 @@ - 100 - 0 35 35 0 - 1 41 49 10 - 2 35 17 7 - 3 55 45 13 - 4 55 20 19 - 5 15 30 26 - 6 25 30 3 - 7 20 50 5 - 8 10 43 9 - 9 55 60 16 - 10 30 60 16 - 11 20 65 12 - 12 50 35 19 - 13 30 25 23 - 14 15 10 20 - 15 30 5 8 - 16 10 20 19 - 17 5 30 2 - 18 20 40 12 - 19 15 60 17 - 20 45 65 9 - 21 45 20 11 - 22 45 10 18 - 23 55 5 29 - 24 65 35 3 - 25 65 20 6 - 26 45 30 17 - 27 35 40 16 - 28 41 37 16 - 29 64 42 9 - 30 40 60 21 - 31 31 52 27 - 32 35 69 23 - 33 53 52 11 - 34 65 55 14 - 35 63 65 8 - 36 2 60 5 - 37 20 20 8 - 38 5 5 16 - 39 60 12 31 - 40 40 25 9 - 41 42 7 5 - 42 24 12 5 - 43 23 3 7 - 44 11 14 18 - 45 6 38 16 - 46 2 48 1 - 47 8 56 27 - 48 13 52 36 - 49 6 68 30 - 50 47 47 13 - 51 49 58 10 - 52 27 43 9 - 53 37 31 14 - 54 57 29 18 - 55 63 23 2 - 56 53 12 6 - 57 32 12 7 - 58 36 26 18 - 59 21 24 28 - 60 17 34 3 - 61 12 24 13 - 62 24 58 19 - 63 27 69 10 - 64 15 77 9 - 65 62 77 20 - 66 49 73 25 - 67 67 5 25 - 68 56 39 36 - 69 37 47 6 - 70 37 56 5 - 71 57 68 15 - 72 47 16 25 - 73 44 17 9 - 74 46 13 8 - 75 49 11 18 - 76 49 42 13 - 77 53 43 14 - 78 61 52 3 - 79 57 48 23 - 80 56 37 6 - 81 55 54 26 - 82 15 47 16 - 83 14 37 11 - 84 11 31 7 - 85 16 22 41 - 86 4 18 35 - 87 28 18 26 - 88 26 52 9 - 89 26 35 15 - 90 31 67 3 - 91 15 19 1 - 92 22 22 2 - 93 18 24 22 - 94 26 27 27 - 95 25 24 20 - 96 22 27 11 - 97 25 21 12 - 98 19 21 10 - 99 20 26 9 - 100 18 18 17 -//Vehicles characteristics: volume, fixed cost, variable cost, number available -//See E. D. Taillard, "A heuristic column generation method for the heterogeneous fleet vrp" -//RAIRO Rech. Op�r. 33 (1) 1999, pp 1-14) -//see http://ina2.eivd.ch/collaborateurs/etd/articles.dir/vrphen.pdf -v 1 60 100 1.0 6 -v 2 140 300 1.7 4 -v 3 200 500 2.0 3 - -17 200 0 100000 1190.858809 + 11*100 + 6*300 = 4090.86 - 2 12 68 143589 - 4 76 3 77 28 144929 - 6 79 78 34 29 24 80 186635 - 7 18 83 8 45 17 84 60 175014 - 4 26 72 73 40 148608 - 5 21 74 75 22 41 165933 - 3 87 97 95 140494 - 3 13 58 53 126834 - 4 50 33 81 1 157707 - 6 42 14 43 15 57 2 183736 - 3 27 89 94 135338 - 8 52 7 48 47 19 11 62 88 383651 - 10 31 10 32 90 63 64 49 36 46 82 429222 - 10 51 9 35 71 65 66 20 30 70 69 415471 - 9 5 61 16 86 38 44 91 98 92 394398 - 8 59 37 100 85 93 99 96 6 352542 - 8 4 56 23 67 39 25 55 54 406754 diff --git a/jsprit-instances/pom.xml b/jsprit-instances/pom.xml deleted file mode 100644 index 47b6ef076..000000000 --- a/jsprit-instances/pom.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - com.graphhopper - jsprit - 1.9-SNAPSHOT - - 4.0.0 - - jsprit-instances - jsprit-instances - - jar - - - - ${project.groupId} - jsprit-core - ${project.version} - - - - diff --git a/jsprit-instances/src/main/java/com/graphhopper/jsprit/instance/reader/BelhaizaReader.java b/jsprit-instances/src/main/java/com/graphhopper/jsprit/instance/reader/BelhaizaReader.java deleted file mode 100644 index 401f70fea..000000000 --- a/jsprit-instances/src/main/java/com/graphhopper/jsprit/instance/reader/BelhaizaReader.java +++ /dev/null @@ -1,178 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.instance.reader; - - -import com.graphhopper.jsprit.core.problem.Location; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem.FleetSize; -import com.graphhopper.jsprit.core.problem.job.Service; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; -import com.graphhopper.jsprit.core.util.Coordinate; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.BufferedReader; -import java.io.FileNotFoundException; -import java.io.FileReader; -import java.io.IOException; - - -/** - * Reader that reads the well-known solomon-instances. - * - *

See: neo.org - * - * @author stefan - * - */ - -public class BelhaizaReader { - - private int fixedCosts; - - /** - * @param costProjectionFactor the costProjectionFactor to set - */ - public void setVariableCostProjectionFactor(double costProjectionFactor) { - this.variableCostProjectionFactor = costProjectionFactor; - } - - private static Logger logger = LoggerFactory.getLogger(BelhaizaReader.class); - - private final VehicleRoutingProblem.Builder vrpBuilder; - - private double coordProjectionFactor = 1; - - private double timeProjectionFactor = 1; - - private double variableCostProjectionFactor = 1; - - private double fixedCostPerVehicle = 0.0; - - public BelhaizaReader(VehicleRoutingProblem.Builder vrpBuilder) { - super(); - this.vrpBuilder = vrpBuilder; - } - - public BelhaizaReader(VehicleRoutingProblem.Builder vrpBuilder, double fixedCostPerVehicle) { - super(); - this.vrpBuilder = vrpBuilder; - this.fixedCostPerVehicle=fixedCostPerVehicle; - } - - public void read(String solomonFile){ - vrpBuilder.setFleetSize(FleetSize.INFINITE); - BufferedReader reader = getReader(solomonFile); - int vehicleCapacity = 0; - int counter = 0; - String line; - while((line = readLine(reader)) != null){ - String[] tokens = line.replace("\r", "").trim().split("\\s+"); - counter++; - if(counter == 2){ - vehicleCapacity = Integer.parseInt(tokens[1]); - continue; - } - if(counter > 2){ - if(tokens.length < 7) continue; - Coordinate coord = makeCoord(tokens[1],tokens[2]); - String customerId = tokens[0]; - int demand = Integer.parseInt(tokens[4]); - double serviceTime = Double.parseDouble(tokens[3])*timeProjectionFactor; - if(counter == 3){ - VehicleTypeImpl.Builder typeBuilder = VehicleTypeImpl.Builder.newInstance("solomonType").addCapacityDimension(0, vehicleCapacity); - typeBuilder.setCostPerDistance(1.0*variableCostProjectionFactor).setFixedCost(fixedCostPerVehicle) - .setCostPerWaitingTime(0.8); - System.out.println("fix: " + fixedCostPerVehicle + "; perDistance: 1.0; perWaitingTime: 0.8"); - VehicleTypeImpl vehicleType = typeBuilder.build(); - double end = Double.parseDouble(tokens[8])*timeProjectionFactor; - VehicleImpl vehicle = VehicleImpl.Builder.newInstance("solomonVehicle").setEarliestStart(0.).setLatestArrival(end) - .setStartLocation(Location.Builder.newInstance().setId(customerId) - .setCoordinate(coord).build()).setType(vehicleType).build(); - vrpBuilder.addVehicle(vehicle); - } - else{ - Service.Builder serviceBuilder = Service.Builder.newInstance(customerId); - serviceBuilder.addSizeDimension(0, demand).setLocation(Location.Builder.newInstance().setCoordinate(coord).setId(customerId).build()).setServiceTime(serviceTime); - int noTimeWindows = Integer.parseInt(tokens[7]); - for(int i=0;i - *

Files and file-description can be found here. - * - * @author stefan schroeder - */ -public class ChristofidesReader { - - private static Logger logger = LoggerFactory.getLogger(ChristofidesReader.class); - - private final VehicleRoutingProblem.Builder vrpBuilder; - - private double coordProjectionFactor = 1; - - /** - * Constructs the reader. - * - * @param vrpBuilder the builder - */ - public ChristofidesReader(VehicleRoutingProblem.Builder vrpBuilder) { - super(); - this.vrpBuilder = vrpBuilder; - } - - /** - * Reads instance-file and memorizes vehicles, customers and so forth in - * {@link VehicleRoutingProblem.Builder}. - * - * @param fileName the filename to read - */ - public void read(String fileName) { - vrpBuilder.setFleetSize(FleetSize.INFINITE); - BufferedReader reader = getReader(fileName); - int vehicleCapacity = 0; - double serviceTime = 0.0; - double endTime = Double.MAX_VALUE; - int counter = 0; - String line; - while ((line = readLine(reader)) != null) { - line = line.replace("\r", ""); - line = line.trim(); - String[] tokens = line.split(" "); - if (counter == 0) { - vehicleCapacity = Integer.parseInt(tokens[1].trim()); - endTime = Double.parseDouble(tokens[2].trim()); - serviceTime = Double.parseDouble(tokens[3].trim()); - } else if (counter == 1) { - Coordinate depotCoord = makeCoord(tokens[0].trim(), tokens[1].trim()); - VehicleTypeImpl vehicleType = VehicleTypeImpl.Builder.newInstance("christophidesType").addCapacityDimension(0, vehicleCapacity). - setCostPerDistance(1.0).build(); - VehicleImpl vehicle = VehicleImpl.Builder.newInstance("christophidesVehicle").setLatestArrival(endTime).setStartLocation(Location.newInstance(depotCoord.getX(), depotCoord.getY())). - setType(vehicleType).build(); - vrpBuilder.addVehicle(vehicle); - } else { - Coordinate customerCoord = makeCoord(tokens[0].trim(), tokens[1].trim()); - int demand = Integer.parseInt(tokens[2].trim()); - String customer = Integer.valueOf(counter - 1).toString(); - Service service = Service.Builder.newInstance(customer).addSizeDimension(0, demand).setServiceTime(serviceTime).setLocation(Location.newInstance(customerCoord.getX(), customerCoord.getY())).build(); - vrpBuilder.addJob(service); - } - counter++; - } - close(reader); - } - - public void setCoordProjectionFactor(double coordProjectionFactor) { - this.coordProjectionFactor = coordProjectionFactor; - } - - private void close(BufferedReader reader) { - try { - reader.close(); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - private String readLine(BufferedReader reader) { - try { - return reader.readLine(); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - private Coordinate makeCoord(String xString, String yString) { - double x = Double.parseDouble(xString); - double y = Double.parseDouble(yString); - return new Coordinate(x * coordProjectionFactor, y * coordProjectionFactor); - } - - private BufferedReader getReader(String solomonFile) { - BufferedReader reader = null; - try { - reader = new BufferedReader(new FileReader(solomonFile)); - } catch (FileNotFoundException e1) { - throw new RuntimeException(e1); - } - return reader; - } -} diff --git a/jsprit-instances/src/main/java/com/graphhopper/jsprit/instance/reader/CordeauReader.java b/jsprit-instances/src/main/java/com/graphhopper/jsprit/instance/reader/CordeauReader.java deleted file mode 100644 index 8240b696f..000000000 --- a/jsprit-instances/src/main/java/com/graphhopper/jsprit/instance/reader/CordeauReader.java +++ /dev/null @@ -1,161 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.instance.reader; - - -import com.graphhopper.jsprit.core.problem.Location; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem.FleetSize; -import com.graphhopper.jsprit.core.problem.job.Service; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl.Builder; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; -import com.graphhopper.jsprit.core.util.Coordinate; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.BufferedReader; -import java.io.FileNotFoundException; -import java.io.FileReader; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - - -/** - * Reader that reads instances developed by: - *

- *

Cordeau, J.-F., Gendreau, M. and Laporte, G. (1997), A tabu search heuristic for periodic and multi-depot vehicle routing problems. - * Networks, 30: 105–119. doi: 10.1002/(SICI)1097-0037(199709)30:2<105::AID-NET5>3.0.CO;2-G - *

- *

Files and file-description can be found here. - * - * @author stefan schroeder - */ -public class CordeauReader { - - private static Logger logger = LoggerFactory.getLogger(CordeauReader.class); - - private final VehicleRoutingProblem.Builder vrpBuilder; - - private double coordProjectionFactor = 1; - - - public CordeauReader(VehicleRoutingProblem.Builder vrpBuilder) { - super(); - this.vrpBuilder = vrpBuilder; - } - - public void read(String fileName) { - vrpBuilder.setFleetSize(FleetSize.FINITE); - BufferedReader reader = getReader(fileName); - int vrpType; - int nOfDepots = 0; - int nOfCustomers = 0; - int nOfVehiclesAtEachDepot = 0; - - int counter = 0; - String line; - List> vehiclesAtDepot = new ArrayList>(); - int depotCounter = 0; - while ((line = readLine(reader)) != null) { - line = line.replace("\r", ""); - line = line.trim(); - String[] tokens = line.split("\\s+"); - if (counter == 0) { - vrpType = Integer.parseInt(tokens[0].trim()); - if (vrpType != 2) - throw new IllegalStateException("expect vrpType to be equal to 2 and thus to be MDVRP"); - nOfVehiclesAtEachDepot = Integer.parseInt(tokens[1].trim()); - nOfCustomers = Integer.parseInt(tokens[2].trim()); - nOfDepots = Integer.parseInt(tokens[3].trim()); - } else if (counter <= nOfDepots) { - String depot = Integer.valueOf(counter).toString(); - int duration = Integer.parseInt(tokens[0].trim()); - if (duration == 0) duration = 999999; - int capacity = Integer.parseInt(tokens[1].trim()); - VehicleTypeImpl vehicleType = VehicleTypeImpl.Builder.newInstance(counter + "_cordeauType").addCapacityDimension(0, capacity). - setCostPerDistance(1.0).setFixedCost(0).build(); - List builders = new ArrayList(); - for (int vehicleCounter = 0; vehicleCounter < nOfVehiclesAtEachDepot; vehicleCounter++) { - Builder vBuilder = VehicleImpl.Builder.newInstance(depot + "_" + (vehicleCounter + 1) + "_cordeauVehicle"); - vBuilder.setLatestArrival(duration).setType(vehicleType); - builders.add(vBuilder); - } - vehiclesAtDepot.add(builders); - } else if (counter <= (nOfCustomers + nOfDepots)) { - String id = tokens[0].trim(); - Coordinate customerCoord = makeCoord(tokens[1].trim(), tokens[2].trim()); - double serviceTime = Double.parseDouble(tokens[3].trim()); - int demand = Integer.parseInt(tokens[4].trim()); - Service service = Service.Builder.newInstance(id).addSizeDimension(0, demand).setServiceTime(serviceTime) - .setLocation(Location.Builder.newInstance().setId(id).setCoordinate(customerCoord).build()).build(); - vrpBuilder.addJob(service); - } else if (counter <= (nOfCustomers + nOfDepots + nOfDepots)) { - Coordinate depotCoord = makeCoord(tokens[1].trim(), tokens[2].trim()); - List vBuilders = vehiclesAtDepot.get(depotCounter); - for (Builder vBuilder : vBuilders) { - vBuilder.setStartLocation(Location.newInstance(depotCoord.getX(), depotCoord.getY())); - VehicleImpl vehicle = vBuilder.build(); - vrpBuilder.addVehicle(vehicle); - } - depotCounter++; - } else { - throw new IllegalStateException("there are more lines than expected in file."); - } - counter++; - } - close(reader); - } - - public void setCoordProjectionFactor(double coordProjectionFactor) { - this.coordProjectionFactor = coordProjectionFactor; - } - - private void close(BufferedReader reader) { - try { - reader.close(); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - private String readLine(BufferedReader reader) { - try { - return reader.readLine(); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - private Coordinate makeCoord(String xString, String yString) { - double x = Double.parseDouble(xString); - double y = Double.parseDouble(yString); - return new Coordinate(x * coordProjectionFactor, y * coordProjectionFactor); - } - - private BufferedReader getReader(String solomonFile) { - BufferedReader reader = null; - try { - reader = new BufferedReader(new FileReader(solomonFile)); - } catch (FileNotFoundException e1) { - throw new RuntimeException(e1); - } - return reader; - } -} diff --git a/jsprit-instances/src/main/java/com/graphhopper/jsprit/instance/reader/Figliozzi.java b/jsprit-instances/src/main/java/com/graphhopper/jsprit/instance/reader/Figliozzi.java deleted file mode 100644 index fec93f9ce..000000000 --- a/jsprit-instances/src/main/java/com/graphhopper/jsprit/instance/reader/Figliozzi.java +++ /dev/null @@ -1,226 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.instance.reader; - -import com.graphhopper.jsprit.core.problem.Location; -import com.graphhopper.jsprit.core.problem.cost.VehicleRoutingTransportCosts; -import com.graphhopper.jsprit.core.problem.driver.Driver; -import com.graphhopper.jsprit.core.problem.vehicle.Vehicle; -import com.graphhopper.jsprit.core.util.EuclideanDistanceCalculator; -import com.graphhopper.jsprit.core.util.Locations; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - - -public class Figliozzi { - - public static class TimeDependentTransportCostsFactory { - - public static enum SpeedDistribution { - - TD1a, TD1b, TD1c, TD2a, TD2b, TD2c, TD3a, TD3b, TD3c, TD1d, TD2d, TD3d, TD4, TD5, TD6, CLASSIC - - } - - - public static TDCosts createCosts(Locations locations, SpeedDistribution speedDistribution, double depotClosingTime) { - List timeBins = createTimeBins(depotClosingTime); - List speedValues = createSpeedValues(speedDistribution); - return new TDCosts(locations, timeBins, speedValues); - } - - static List createSpeedValues(SpeedDistribution speedDistribution) { - List speedValues = Collections.emptyList(); - switch (speedDistribution) { - case TD1a: - speedValues = Arrays.asList(1., 1.6, 1.05, 1.6, 1.); - break; - case TD2a: - speedValues = Arrays.asList(1., 2., 1.5, 2., 1.); - break; - case TD3a: - speedValues = Arrays.asList(1., 2.5, 1.75, 2.5, 1.); - break; - - case TD1b: - speedValues = Arrays.asList(1.6, 1., 1.05, 1., 1.6); - break; - case TD2b: - speedValues = Arrays.asList(2., 1., 1.5, 1., 2.); - break; - case TD3b: - speedValues = Arrays.asList(2.5, 1., 1.75, 1., 2.5); - break; - - case TD1c: - speedValues = Arrays.asList(1.6, 1.6, 1.05, 1., 1.); - break; - case TD2c: - speedValues = Arrays.asList(2., 2., 1.5, 1., 1.); - break; - case TD3c: - speedValues = Arrays.asList(2.5, 2.5, 1.75, 1., 1.); - break; - - case TD1d: - speedValues = Arrays.asList(1., 1., 1.05, 1.6, 1.6); - break; - case TD2d: - speedValues = Arrays.asList(1., 1., 1.5, 2., 2.); - break; - case TD3d: - speedValues = Arrays.asList(1., 1., 1.75, 2.5, 2.5); - break; - - case TD4: - speedValues = Arrays.asList(1.1, 0.85, 1.1, 0.85, 1.1); - break; - case TD5: - speedValues = Arrays.asList(1.2, 0.8, 1., 0.8, 1.2); - break; - case TD6: - speedValues = Arrays.asList(1.2, 0.7, 1.2, 0.7, 1.2); - break; - - case CLASSIC: - speedValues = Arrays.asList(1., 1., 1., 1., 1.); - break; - } - return speedValues; - } - - private static List createTimeBins(double depotClosingTime) { - List timeBins = new ArrayList(); - timeBins.add(.2 * depotClosingTime); - timeBins.add(.4 * depotClosingTime); - timeBins.add(.6 * depotClosingTime); - timeBins.add(.8 * depotClosingTime); - timeBins.add(depotClosingTime); - return timeBins; - } - - } - - - public static class TDCosts implements VehicleRoutingTransportCosts { - - private List timeBins; - - private List speed; - - private Locations locations; - - private double transportDistanceParameter = 1.; - - private double transportTimeParameter = 1.; - - public TDCosts(Locations locations, List timeBins, List speedValues) { - super(); - speed = speedValues; - this.timeBins = timeBins; - this.locations = locations; - } - - public void setTransportDistanceParameter(double transportDistanceParameter) { - this.transportDistanceParameter = transportDistanceParameter; - } - - public void setTransportTimeParameter(double transportTimeParameter) { - this.transportTimeParameter = transportTimeParameter; - } - - @Override - public double getTransportCost(Location from, Location to, double departureTime, Driver driver, Vehicle vehicle) { - return transportDistanceParameter * EuclideanDistanceCalculator.calculateDistance(locations.getCoord(from.getId()), locations.getCoord(to.getId())) + - transportTimeParameter * getTransportTime(from, to, departureTime, driver, vehicle); - } - - @Override - public double getBackwardTransportCost(Location from, Location to, double arrivalTime, Driver driver, Vehicle vehicle) { - return transportDistanceParameter * EuclideanDistanceCalculator.calculateDistance(locations.getCoord(from.getId()), locations.getCoord(to.getId())) + - transportTimeParameter * getBackwardTransportTime(from, to, arrivalTime, driver, vehicle); - } - - - @Override - public double getTransportTime(Location from, Location to, double departureTime, Driver driver, Vehicle vehicle) { - if (from.equals(to)) { - return 0.0; - } - double totalTravelTime = 0.0; - double distanceToTravel = EuclideanDistanceCalculator.calculateDistance(locations.getCoord(from.getId()), locations.getCoord(to.getId())); - double currentTime = departureTime; - for (int i = 0; i < timeBins.size(); i++) { - double timeThreshold = timeBins.get(i); - if (currentTime < timeThreshold) { - double maxReachableDistance = (timeThreshold - currentTime) * speed.get(i); - if (distanceToTravel > maxReachableDistance) { - distanceToTravel = distanceToTravel - maxReachableDistance; - totalTravelTime += (timeThreshold - currentTime); - currentTime = timeThreshold; - } else { //<= maxReachableDistance - totalTravelTime += distanceToTravel / speed.get(i); - return totalTravelTime; - } - } - } - return Double.MAX_VALUE; - } - - - @Override - public double getBackwardTransportTime(Location from, Location to, double arrivalTime, Driver driver, Vehicle vehicle) { - if (from.equals(to)) { - return 0.0; - } - double totalTravelTime = 0.0; - double distanceToTravel = EuclideanDistanceCalculator.calculateDistance(locations.getCoord(from.getId()), locations.getCoord(to.getId())); - double currentTime = arrivalTime; - for (int i = timeBins.size() - 1; i >= 0; i--) { - double nextLowerTimeThreshold; - if (i > 0) { - nextLowerTimeThreshold = timeBins.get(i - 1); - } else { - nextLowerTimeThreshold = 0; - } - if (currentTime > nextLowerTimeThreshold) { - double maxReachableDistance = (currentTime - nextLowerTimeThreshold) * speed.get(i); - if (distanceToTravel > maxReachableDistance) { - distanceToTravel = distanceToTravel - maxReachableDistance; - totalTravelTime += (currentTime - nextLowerTimeThreshold); - currentTime = nextLowerTimeThreshold; - } else { //<= maxReachableDistance - totalTravelTime += distanceToTravel / speed.get(i); - return totalTravelTime; - } - } - } - return Double.MAX_VALUE; - } - - - @Override - public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) { - return EuclideanDistanceCalculator.calculateDistance(locations.getCoord(from.getId()), locations.getCoord(to.getId())); - } - } - -} diff --git a/jsprit-instances/src/main/java/com/graphhopper/jsprit/instance/reader/LiLimReader.java b/jsprit-instances/src/main/java/com/graphhopper/jsprit/instance/reader/LiLimReader.java deleted file mode 100644 index 95bedb71c..000000000 --- a/jsprit-instances/src/main/java/com/graphhopper/jsprit/instance/reader/LiLimReader.java +++ /dev/null @@ -1,206 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.instance.reader; - - -import com.graphhopper.jsprit.core.problem.Location; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem.Builder; -import com.graphhopper.jsprit.core.problem.job.Shipment; -import com.graphhopper.jsprit.core.problem.solution.route.activity.TimeWindow; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; -import com.graphhopper.jsprit.core.util.Coordinate; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.BufferedReader; -import java.io.FileNotFoundException; -import java.io.FileReader; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.Map; - - -/** - * test instances for the capacitated vrp with pickup and deliveries and time windows. - * instances are from li and lim and can be found at: - * http://www.top.sintef.no/vrp/benchmarks.html - * - * @author stefan schroeder - */ - - -public class LiLimReader { - - static class CustomerData { - public Coordinate coord; - public double start; - public double end; - public double serviceTime; - - public CustomerData(Coordinate coord, double start, double end, double serviceTime) { - super(); - this.coord = coord; - this.start = start; - this.end = end; - this.serviceTime = serviceTime; - } - } - - static class Relation { - public String from; - public String to; - public int demand; - - public Relation(String from, String to, int demand) { - super(); - this.from = from; - this.to = to; - this.demand = demand; - } - - } - - private static Logger logger = LoggerFactory.getLogger(LiLimReader.class); - - private VehicleRoutingProblem.Builder vrpBuilder; - - private int vehicleCapacity; - - private String depotId; - - private Map customers; - - private Collection relations; - - private double depotOpeningTime; - - private double depotClosingTime; - - private int fixCosts = 0; - - public LiLimReader(Builder vrpBuilder) { - customers = new HashMap(); - relations = new ArrayList(); - this.vrpBuilder = vrpBuilder; - } - - public LiLimReader(Builder builder, int fixCosts) { - customers = new HashMap(); - relations = new ArrayList(); - this.vrpBuilder = builder; - this.fixCosts = fixCosts; - } - - public void read(String filename) { - readShipments(filename); - buildShipments(); - VehicleTypeImpl type = VehicleTypeImpl.Builder.newInstance("type").addCapacityDimension(0, vehicleCapacity) - .setCostPerDistance(1.0).setFixedCost(fixCosts).build(); - VehicleImpl vehicle = VehicleImpl.Builder.newInstance("vehicle") - .setEarliestStart(depotOpeningTime).setLatestArrival(depotClosingTime) - .setStartLocation(Location.Builder.newInstance().setCoordinate(customers.get(depotId).coord).build()).setType(type).build(); - vrpBuilder.addVehicle(vehicle); - } - - private void buildShipments() { - Integer counter = 0; - for (Relation rel : relations) { - counter++; - String from = rel.from; - String to = rel.to; - int demand = rel.demand; - Shipment s = Shipment.Builder.newInstance(counter.toString()).addSizeDimension(0, demand) - .setPickupLocation(Location.Builder.newInstance().setCoordinate(customers.get(from).coord).build()).setPickupServiceTime(customers.get(from).serviceTime) - .setPickupTimeWindow(TimeWindow.newInstance(customers.get(from).start, customers.get(from).end)) - .setDeliveryLocation(Location.Builder.newInstance().setCoordinate(customers.get(to).coord).build()).setDeliveryServiceTime(customers.get(to).serviceTime) - .setDeliveryTimeWindow(TimeWindow.newInstance(customers.get(to).start, customers.get(to).end)).build(); - vrpBuilder.addJob(s); - } - - } - - private BufferedReader getReader(String file) { - BufferedReader reader = null; - try { - reader = new BufferedReader(new FileReader(file)); - } catch (FileNotFoundException e1) { - throw new RuntimeException(e1); - } - return reader; - } - - private void readShipments(String file) { - BufferedReader reader = getReader(file); - String line = null; - boolean firstLine = true; - try { - while ((line = reader.readLine()) != null) { - line = line.replace("\r", ""); - line = line.trim(); - String[] tokens = line.split("\t"); - if (firstLine) { - int vehicleCapacity = getInt(tokens[1]); - this.vehicleCapacity = vehicleCapacity; - firstLine = false; - continue; - } else { - String customerId = tokens[0]; - Coordinate coord = makeCoord(tokens[1], tokens[2]); - int demand = getInt(tokens[3]); - double startTimeWindow = getDouble(tokens[4]); - double endTimeWindow = getDouble(tokens[5]); - double serviceTime = getDouble(tokens[6]); -// vrpBuilder.addLocation(customerId, coord); - customers.put(customerId, new CustomerData(coord, startTimeWindow, endTimeWindow, serviceTime)); - if (customerId.equals("0")) { - depotId = customerId; - depotOpeningTime = startTimeWindow; - depotClosingTime = endTimeWindow; - } - if (demand > 0) { - relations.add(new Relation(customerId, tokens[8], demand)); - } - } - } - reader.close(); - } catch (IOException e) { - e.printStackTrace(); - } - - } - - private Coordinate makeCoord(String xString, String yString) { - double x = Double.parseDouble(xString); - double y = Double.parseDouble(yString); - return new Coordinate(x, y); - } - - private double getDouble(String string) { - return Double.parseDouble(string); - } - - private int getInt(String string) { - return Integer.parseInt(string); - } - - -} diff --git a/jsprit-instances/src/main/java/com/graphhopper/jsprit/instance/reader/LopezIbanezBlumReader.java b/jsprit-instances/src/main/java/com/graphhopper/jsprit/instance/reader/LopezIbanezBlumReader.java deleted file mode 100644 index 411b69ff0..000000000 --- a/jsprit-instances/src/main/java/com/graphhopper/jsprit/instance/reader/LopezIbanezBlumReader.java +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.graphhopper.jsprit.instance.reader; - -import com.graphhopper.jsprit.core.problem.Location; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.job.Service; -import com.graphhopper.jsprit.core.problem.solution.route.activity.TimeWindow; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; -import com.graphhopper.jsprit.core.util.FastVehicleRoutingTransportCostsMatrix; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.BufferedReader; -import java.io.FileNotFoundException; -import java.io.FileReader; -import java.io.IOException; - -/** - * Created by schroeder on 18/02/15. - */ -public class LopezIbanezBlumReader { - - private static Logger logger = LoggerFactory.getLogger(LopezIbanezBlumReader.class); - - private VehicleRoutingProblem.Builder builder; - - public LopezIbanezBlumReader(VehicleRoutingProblem.Builder builder) { - this.builder = builder; - } - - public void read(String instanceFile) { - builder.setFleetSize(VehicleRoutingProblem.FleetSize.FINITE); - BufferedReader reader = getReader(instanceFile); - String line; - int noNodes = 0; - int lineCount = 1; - FastVehicleRoutingTransportCostsMatrix.Builder matrixBuilder = null; - while ((line = readLine(reader)) != null) { - if (line.startsWith("#")) continue; - if (lineCount == 1) { - noNodes = Integer.parseInt(line); - matrixBuilder = FastVehicleRoutingTransportCostsMatrix.Builder.newInstance(noNodes, false); - lineCount++; - continue; - } else if (lineCount <= 1 + noNodes) { - String[] wimaTokens = line.split("\\s+"); - int nodeIndex = lineCount - 2; - for (int toIndex = 0; toIndex < wimaTokens.length; toIndex++) { - matrixBuilder.addTransportDistance(nodeIndex, toIndex, Double.parseDouble(wimaTokens[toIndex])); - matrixBuilder.addTransportTime(nodeIndex, toIndex, Double.parseDouble(wimaTokens[toIndex])); - } - lineCount++; - continue; - } else { - int nodeIndex = lineCount - 2 - noNodes; - String[] twTokens = line.split("\\s+"); - if (nodeIndex == 0) { - VehicleImpl travelingSalesman = VehicleImpl.Builder.newInstance("traveling_salesman").setStartLocation(Location.newInstance(nodeIndex)) - .setEarliestStart(Double.parseDouble(twTokens[0])).setLatestArrival(Double.parseDouble(twTokens[1])).build(); - builder.addVehicle(travelingSalesman); - } else { - Service s = Service.Builder.newInstance("" + nodeIndex).setLocation(Location.newInstance(nodeIndex)) - .setTimeWindow(TimeWindow.newInstance(Double.parseDouble(twTokens[0]), Double.parseDouble(twTokens[1]))).build(); - builder.addJob(s); - } - lineCount++; - } - } - builder.setRoutingCost(matrixBuilder.build()); - close(reader); - } - - public static void main(String[] args) { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new LopezIbanezBlumReader(builder).read("input/Dumas/n20w20.001.txt"); - VehicleRoutingProblem vrp = builder.build(); - System.out.println("0->1: " + vrp.getTransportCosts().getTransportCost(Location.newInstance(0), Location.newInstance(1), 0, null, null)); - System.out.println("0->20: " + vrp.getTransportCosts().getTransportCost(Location.newInstance(0), Location.newInstance(20), 0, null, null)); - System.out.println("4->18: " + vrp.getTransportCosts().getTransportCost(Location.newInstance(4), Location.newInstance(18), 0, null, null)); - System.out.println("20->8: " + vrp.getTransportCosts().getTransportCost(Location.newInstance(20), Location.newInstance(8), 0, null, null)); - System.out.println("18: " + ((Service) vrp.getJobs().get("" + 18)).getTimeWindow().getStart() + " " + ((Service) vrp.getJobs().get("" + 18)).getTimeWindow().getEnd()); - System.out.println("20: " + ((Service) vrp.getJobs().get("" + 20)).getTimeWindow().getStart() + " " + ((Service) vrp.getJobs().get("" + 20)).getTimeWindow().getEnd()); - System.out.println("1: " + ((Service) vrp.getJobs().get("" + 1)).getTimeWindow().getStart() + " " + ((Service) vrp.getJobs().get("" + 1)).getTimeWindow().getEnd()); - } - - private void close(BufferedReader reader) { - try { - reader.close(); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - private String readLine(BufferedReader reader) { - try { - return reader.readLine(); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - private BufferedReader getReader(String solomonFile) { - BufferedReader reader = null; - try { - reader = new BufferedReader(new FileReader(solomonFile)); - } catch (FileNotFoundException e1) { - throw new RuntimeException(e1); - } - return reader; - } -} diff --git a/jsprit-instances/src/main/java/com/graphhopper/jsprit/instance/reader/LuiShenReader.java b/jsprit-instances/src/main/java/com/graphhopper/jsprit/instance/reader/LuiShenReader.java deleted file mode 100644 index b6ec812b7..000000000 --- a/jsprit-instances/src/main/java/com/graphhopper/jsprit/instance/reader/LuiShenReader.java +++ /dev/null @@ -1,180 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.instance.reader; - - -import com.graphhopper.jsprit.core.problem.Location; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem.FleetSize; -import com.graphhopper.jsprit.core.problem.job.Service; -import com.graphhopper.jsprit.core.problem.solution.route.activity.TimeWindow; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; -import com.graphhopper.jsprit.core.util.Coordinate; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.BufferedReader; -import java.io.FileNotFoundException; -import java.io.FileReader; -import java.io.IOException; - - -public class LuiShenReader { - - private static Logger logger = LoggerFactory.getLogger(LuiShenReader.class); - - private final VehicleRoutingProblem.Builder vrpBuilder; - - private double coordProjectionFactor = 1; - - public LuiShenReader(VehicleRoutingProblem.Builder vrpBuilder) { - super(); - this.vrpBuilder = vrpBuilder; - } - - /** - * Reads input files to build Liu Shen problem. - *

- *

The instance-file is a solomon file. The vehicle-file is a - * txt-file that has the following columns: - *

Vehicle;Capacity;Cost_a;Cost_b;Cost_c - *

Concrete vehicleType: - *

A;100;300;60;30 - *

- *

In the example above, the vehicle-type with typeId A has - * a capacity of 100, and fixed costs of 100 in cost scenario "a", - * 300 in "b" and 30 in "c". - * - * @param instanceFile is a solomon-instance-file - * @param vehicleFile - * @param costScenario is either "a", "b" or "c" - */ - public void read(String instanceFile, String vehicleFile, String costScenario) { - vrpBuilder.setFleetSize(FleetSize.INFINITE); - BufferedReader reader = getReader(instanceFile); - int counter = 0; - String line = null; - while ((line = readLine(reader)) != null) { - line = line.replace("\r", ""); - line = line.trim(); - String[] tokens = line.split(" +"); - counter++; - if (counter > 9) { - if (tokens.length < 7) continue; - Coordinate coord = makeCoord(tokens[1], tokens[2]); - String customerId = tokens[0]; - int demand = Integer.parseInt(tokens[3]); - double start = Double.parseDouble(tokens[4]) * coordProjectionFactor; - double end = Double.parseDouble(tokens[5]) * coordProjectionFactor; - double serviceTime = Double.parseDouble(tokens[6]) * coordProjectionFactor; - if (counter == 10) { - createVehicles(vehicleFile, costScenario, customerId, coord, start, end); - } else { - Service service = Service.Builder.newInstance("" + (counter - 10)).addSizeDimension(0, demand) - .setLocation(Location.Builder.newInstance().setCoordinate(coord).setId(customerId).build()).setServiceTime(serviceTime) - .setTimeWindow(TimeWindow.newInstance(start, end)).build(); - vrpBuilder.addJob(service); - } - } - } - close(reader); - } - - private void createVehicles(String vehicleFileName, String costScenario, String locationId, Coordinate coord, double start, double end) { - BufferedReader reader = getReader(vehicleFileName); - - int costScenarioColumn = getCostScenarioColumn(costScenario); - int vehicleIdColumn = 0; - int capacityColumn = 1; - - - boolean firstLine = true; - String line = null; - while ((line = readLine(reader)) != null) { - if (firstLine) { - firstLine = false; - continue; - } - String[] tokens = line.split(";"); - String vehicleId = tokens[vehicleIdColumn]; - int capacity = Integer.parseInt(tokens[capacityColumn]); - int fixCost = Integer.parseInt(tokens[costScenarioColumn]); - - VehicleTypeImpl.Builder typeBuilder = VehicleTypeImpl.Builder.newInstance(vehicleId).addCapacityDimension(0, capacity); - typeBuilder.setFixedCost(fixCost).setCostPerDistance(1.0); - - VehicleTypeImpl type = typeBuilder.build(); - - VehicleImpl reprVehicle = VehicleImpl.Builder.newInstance(vehicleId).setEarliestStart(start).setLatestArrival(end). - setStartLocation(Location.Builder.newInstance().setId(locationId).setCoordinate(coord).build()) - .setType(type).build(); - - vrpBuilder.addVehicle(reprVehicle); - - } - close(reader); - } - - private int getCostScenarioColumn(String costScenario) { - if (costScenario.equals("a")) { - return 2; - } else if (costScenario.equals("b")) { - return 3; - } else if (costScenario.equals("c")) { - return 4; - } - throw new IllegalStateException("costScenario " + costScenario + " not known"); - } - - public void setCoordProjectionFactor(double coordProjectionFactor) { - this.coordProjectionFactor = coordProjectionFactor; - } - - private void close(BufferedReader reader) { - try { - reader.close(); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - private String readLine(BufferedReader reader) { - try { - return reader.readLine(); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - private Coordinate makeCoord(String xString, String yString) { - double x = Double.parseDouble(xString); - double y = Double.parseDouble(yString); - return new Coordinate(x * coordProjectionFactor, y * coordProjectionFactor); - } - - private BufferedReader getReader(String solomonFile) { - BufferedReader reader = null; - try { - reader = new BufferedReader(new FileReader(solomonFile)); - } catch (FileNotFoundException e1) { - throw new RuntimeException(e1); - } - return reader; - } -} diff --git a/jsprit-instances/src/main/java/com/graphhopper/jsprit/instance/reader/SolomonReader.java b/jsprit-instances/src/main/java/com/graphhopper/jsprit/instance/reader/SolomonReader.java deleted file mode 100644 index 04f54de9f..000000000 --- a/jsprit-instances/src/main/java/com/graphhopper/jsprit/instance/reader/SolomonReader.java +++ /dev/null @@ -1,163 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.instance.reader; - - -import com.graphhopper.jsprit.core.problem.Location; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem.FleetSize; -import com.graphhopper.jsprit.core.problem.job.Service; -import com.graphhopper.jsprit.core.problem.solution.route.activity.TimeWindow; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; -import com.graphhopper.jsprit.core.util.Coordinate; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.BufferedReader; -import java.io.FileNotFoundException; -import java.io.FileReader; -import java.io.IOException; - - -/** - * Reader that reads the well-known solomon-instances. - *

- *

See: neo.org - * - * @author stefan - */ - -public class SolomonReader { - - /** - * @param costProjectionFactor the costProjectionFactor to set - */ - public void setVariableCostProjectionFactor(double costProjectionFactor) { - this.variableCostProjectionFactor = costProjectionFactor; - } - - private static Logger logger = LoggerFactory.getLogger(SolomonReader.class); - - private final VehicleRoutingProblem.Builder vrpBuilder; - - private double coordProjectionFactor = 1; - - private double timeProjectionFactor = 1; - - private double variableCostProjectionFactor = 1; - - private double fixedCostPerVehicle = 0.0; - - public SolomonReader(VehicleRoutingProblem.Builder vrpBuilder) { - super(); - this.vrpBuilder = vrpBuilder; - } - - public SolomonReader(VehicleRoutingProblem.Builder vrpBuilder, double fixedCostPerVehicle) { - super(); - this.vrpBuilder = vrpBuilder; - this.fixedCostPerVehicle = fixedCostPerVehicle; - } - - public void read(String solomonFile) { - vrpBuilder.setFleetSize(FleetSize.INFINITE); - BufferedReader reader = getReader(solomonFile); - int vehicleCapacity = 0; - - int counter = 0; - String line; - while ((line = readLine(reader)) != null) { - line = line.replace("\r", ""); - line = line.trim(); - String[] tokens = line.split(" +"); - counter++; - if (counter == 5) { - vehicleCapacity = Integer.parseInt(tokens[1]); - continue; - } - if (counter > 9) { - if (tokens.length < 7) continue; - Coordinate coord = makeCoord(tokens[1], tokens[2]); - String customerId = tokens[0]; - int demand = Integer.parseInt(tokens[3]); - double start = Double.parseDouble(tokens[4]) * timeProjectionFactor; - double end = Double.parseDouble(tokens[5]) * timeProjectionFactor; - double serviceTime = Double.parseDouble(tokens[6]) * timeProjectionFactor; - if (counter == 10) { - VehicleTypeImpl.Builder typeBuilder = VehicleTypeImpl.Builder.newInstance("solomonType").addCapacityDimension(0, vehicleCapacity); - typeBuilder.setCostPerDistance(1.0 * variableCostProjectionFactor).setFixedCost(fixedCostPerVehicle); - VehicleTypeImpl vehicleType = typeBuilder.build(); - - VehicleImpl vehicle = VehicleImpl.Builder.newInstance("solomonVehicle").setEarliestStart(start).setLatestArrival(end) - .setStartLocation(Location.Builder.newInstance().setId(customerId) - .setCoordinate(coord).build()).setType(vehicleType).build(); - vrpBuilder.addVehicle(vehicle); - - } else { - Service service = Service.Builder.newInstance(customerId).addSizeDimension(0, demand) - .setLocation(Location.Builder.newInstance().setCoordinate(coord).setId(customerId).build()).setServiceTime(serviceTime) - .setTimeWindow(TimeWindow.newInstance(start, end)).build(); - vrpBuilder.addJob(service); - } - } - } - close(reader); - } - - public void setCoordProjectionFactor(double coordProjectionFactor) { - this.coordProjectionFactor = coordProjectionFactor; - } - - private void close(BufferedReader reader) { - try { - reader.close(); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - private String readLine(BufferedReader reader) { - try { - return reader.readLine(); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - private Coordinate makeCoord(String xString, String yString) { - double x = Double.parseDouble(xString); - double y = Double.parseDouble(yString); - return new Coordinate(x * coordProjectionFactor, y * coordProjectionFactor); - } - - private BufferedReader getReader(String solomonFile) { - BufferedReader reader = null; - try { - reader = new BufferedReader(new FileReader(solomonFile)); - } catch (FileNotFoundException e1) { - throw new RuntimeException(e1); - } - return reader; - } - - public void setTimeProjectionFactor(double timeProjection) { - this.timeProjectionFactor = timeProjection; - - } -} diff --git a/jsprit-instances/src/main/java/com/graphhopper/jsprit/instance/reader/TSPLIB95CostMatrixReader.java b/jsprit-instances/src/main/java/com/graphhopper/jsprit/instance/reader/TSPLIB95CostMatrixReader.java deleted file mode 100644 index 416951621..000000000 --- a/jsprit-instances/src/main/java/com/graphhopper/jsprit/instance/reader/TSPLIB95CostMatrixReader.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.graphhopper.jsprit.instance.reader; - - -import com.graphhopper.jsprit.core.util.VehicleRoutingTransportCostsMatrix; - -import java.io.*; - -public class TSPLIB95CostMatrixReader { - - private VehicleRoutingTransportCostsMatrix.Builder costMatrixBuilder; - - public TSPLIB95CostMatrixReader(VehicleRoutingTransportCostsMatrix.Builder costMatrixBuilder) { - this.costMatrixBuilder = costMatrixBuilder; - } - - public void read(String matrixFile) { - BufferedReader reader = getBufferedReader(matrixFile); - String line; - boolean isEdgeWeights = false; - int fromIndex = 0; - while ((line = getLine(reader)) != null) { - if (line.startsWith("EDGE_WEIGHT_SECTION")) { - isEdgeWeights = true; - continue; - } - if (line.startsWith("DEMAND_SECTION")) { - isEdgeWeights = false; - continue; - } - if (isEdgeWeights) { - String[] tokens = line.split("\\s+"); - String fromId = "" + (fromIndex + 1); - for (int i = 0; i < tokens.length; i++) { - double distance = Double.parseDouble(tokens[i]); - String toId = "" + (i + 1); - costMatrixBuilder.addTransportDistance(fromId, toId, distance); - costMatrixBuilder.addTransportTime(fromId, toId, distance); - } - fromIndex++; - } - } - close(reader); - } - - private void close(BufferedReader reader) { - try { - reader.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - private String getLine(BufferedReader reader) { - String s = null; - try { - s = reader.readLine(); - } catch (IOException e) { - e.printStackTrace(); - } - return s; - } - - private BufferedReader getBufferedReader(String filename) { - BufferedReader bufferedReader = null; - try { - bufferedReader = new BufferedReader(new FileReader(new File(filename))); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } - return bufferedReader; - } -} diff --git a/jsprit-instances/src/main/java/com/graphhopper/jsprit/instance/reader/TSPLIB95Reader.java b/jsprit-instances/src/main/java/com/graphhopper/jsprit/instance/reader/TSPLIB95Reader.java deleted file mode 100644 index abeeea31a..000000000 --- a/jsprit-instances/src/main/java/com/graphhopper/jsprit/instance/reader/TSPLIB95Reader.java +++ /dev/null @@ -1,329 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.graphhopper.jsprit.instance.reader; - -import com.graphhopper.jsprit.core.problem.Location; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.cost.VehicleRoutingTransportCosts; -import com.graphhopper.jsprit.core.problem.job.Job; -import com.graphhopper.jsprit.core.problem.job.Service; -import com.graphhopper.jsprit.core.problem.vehicle.Vehicle; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; -import com.graphhopper.jsprit.core.util.Coordinate; -import com.graphhopper.jsprit.core.util.FastVehicleRoutingTransportCostsMatrix; - -import java.io.*; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - - -public class TSPLIB95Reader { - - private VehicleRoutingProblem.Builder vrpBuilder; - - private boolean switchCoordinates = false; - - public void setSwitchCoordinates(boolean switchCoordinates) { - this.switchCoordinates = switchCoordinates; - } - - public TSPLIB95Reader(VehicleRoutingProblem.Builder vrpBuilder) { - this.vrpBuilder = vrpBuilder; - } - - public void read(String filename) { - BufferedReader reader = getBufferedReader(filename); - String line_; - Coordinate[] coords = null; - int[] demands = null; - Integer capacity = null; - String edgeType = null; - String edgeWeightFormat = null; - List depotIds = new ArrayList(); - boolean isCoordSection = false; - boolean isDemandSection = false; - boolean isDepotSection = false; - boolean isEdgeWeightSection = false; - List edgeWeights = new ArrayList(); - int dimensions = 0; - int coordIndex = 0; - Map indexMap = new HashMap(); - while ((line_ = getLine(reader)) != null) { - String line = line_.trim(); - if (line.startsWith("EOF") || line.contains("EOF")) { - break; - } - if (line.startsWith("DIMENSION")) { - String[] tokens = line.split(":"); - String dim = tokens[1].trim(); - dimensions = Integer.parseInt(dim); - coords = new Coordinate[dimensions]; - demands = new int[dimensions]; - continue; - } - if (line.startsWith("CAPACITY")) { - String[] tokens = line.trim().split(":"); - capacity = Integer.parseInt(tokens[1].trim()); - continue; - } - if (line.startsWith("EDGE_WEIGHT_TYPE")) { - String[] tokens = line.trim().split(":"); - edgeType = tokens[1].trim(); - continue; - } - if (line.startsWith("EDGE_WEIGHT_FORMAT")) { - String[] tokens = line.trim().split(":"); - edgeWeightFormat = tokens[1].trim(); - continue; - } - if (line.startsWith("NODE_COORD_SECTION")) { - isCoordSection = true; - isDemandSection = false; - isDepotSection = false; - isEdgeWeightSection = false; - continue; - } - if (line.startsWith("DEMAND_SECTION")) { - isDemandSection = true; - isCoordSection = false; - isDepotSection = false; - isEdgeWeightSection = false; - continue; - } - if (line.startsWith("DEPOT_SECTION")) { - isDepotSection = true; - isDemandSection = false; - isCoordSection = false; - isEdgeWeightSection = false; - continue; - } - if (line.startsWith("EDGE_WEIGHT_SECTION")) { - isDepotSection = false; - isCoordSection = false; - isDemandSection = false; - isEdgeWeightSection = true; - continue; - } - if (line.startsWith("DISPLAY_DATA_SECTION")) { - isDepotSection = false; - isCoordSection = true; - isDemandSection = false; - isEdgeWeightSection = false; - continue; - } - if (isCoordSection) { - if (coords == null) throw new IllegalStateException("DIMENSION tag missing"); - String[] tokens = line.trim().split("\\s+"); - Integer id = Integer.parseInt(tokens[0]); - if (switchCoordinates) { - coords[coordIndex] = Coordinate.newInstance(Double.parseDouble(tokens[2]), Double.parseDouble(tokens[1])); - } else - coords[coordIndex] = Coordinate.newInstance(Double.parseDouble(tokens[1]), Double.parseDouble(tokens[2])); - indexMap.put(id, coordIndex); - coordIndex++; - continue; - } - if (isDemandSection) { - if (demands == null) throw new IllegalStateException("DIMENSION tag missing"); - String[] tokens = line.trim().split("\\s+"); - Integer id = Integer.parseInt(tokens[0]); - int index = indexMap.get(id); - demands[index] = Integer.parseInt(tokens[1]); - continue; - } - if (isDepotSection) { - if (line.equals("-1")) { - isDepotSection = false; - } else { - depotIds.add(Integer.parseInt(line)); - } - continue; - } - if (isEdgeWeightSection) { - String[] tokens = line.trim().split("\\s+"); - for (String s : tokens) edgeWeights.add(Double.parseDouble(s)); - continue; - } - } - close(reader); - vrpBuilder.setFleetSize(VehicleRoutingProblem.FleetSize.FINITE); - for (Integer depotId : depotIds) { - VehicleTypeImpl type = VehicleTypeImpl.Builder.newInstance("type").addCapacityDimension(0, capacity).build(); - VehicleImpl vehicle = VehicleImpl.Builder.newInstance("vehicle") - .setStartLocation(Location.Builder.newInstance().setId(depotId.toString()).setCoordinate(coords[depotId - 1]).build()) - .setType(type).build(); - vrpBuilder.addVehicle(vehicle); - } - - for (Integer id_ : indexMap.keySet()) { - String id = id_.toString(); - int index = indexMap.get(id_); - if (depotIds.isEmpty()) { - if (index == 0) { - VehicleImpl vehicle = VehicleImpl.Builder.newInstance("traveling_salesman") - .setStartLocation(Location.Builder.newInstance().setId(id) - .setCoordinate(coords[index]).setIndex(index).build()) - .build(); - vrpBuilder.addVehicle(vehicle); - continue; - } - } - Service service = Service.Builder.newInstance(id) - .setLocation(Location.Builder.newInstance().setId(id) - .setCoordinate(coords[index]).setIndex(index).build()) - .addSizeDimension(0, demands[index]).build(); - vrpBuilder.addJob(service); - } - if (edgeType.equals("GEO")) { - List locations = new ArrayList(); - for (Vehicle v : vrpBuilder.getAddedVehicles()) locations.add(v.getStartLocation()); - for (Job j : vrpBuilder.getAddedJobs()) locations.add(((Service) j).getLocation()); - vrpBuilder.setRoutingCost(getGEOMatrix(locations)); - } else if (edgeType.equals("EXPLICIT")) { - if (edgeWeightFormat.equals("UPPER_ROW")) { - FastVehicleRoutingTransportCostsMatrix.Builder matrixBuilder = FastVehicleRoutingTransportCostsMatrix.Builder.newInstance(dimensions, true); - int fromIndex = 0; - int toIndex = 1; - for (int i = 0; i < edgeWeights.size(); i++) { - if (toIndex == dimensions) { - fromIndex++; - toIndex = fromIndex + 1; - } - matrixBuilder.addTransportDistance(fromIndex, toIndex, edgeWeights.get(i)); - matrixBuilder.addTransportTime(fromIndex, toIndex, edgeWeights.get(i)); - toIndex++; - } - vrpBuilder.setRoutingCost(matrixBuilder.build()); - } else if (edgeWeightFormat.equals("UPPER_DIAG_ROW")) { - FastVehicleRoutingTransportCostsMatrix.Builder matrixBuilder = FastVehicleRoutingTransportCostsMatrix.Builder.newInstance(dimensions, true); - int fromIndex = 0; - int toIndex = 0; - for (int i = 0; i < edgeWeights.size(); i++) { - if (toIndex == dimensions) { - fromIndex++; - toIndex = fromIndex; - } - matrixBuilder.addTransportDistance(fromIndex, toIndex, edgeWeights.get(i)); - matrixBuilder.addTransportTime(fromIndex, toIndex, edgeWeights.get(i)); - toIndex++; - } - vrpBuilder.setRoutingCost(matrixBuilder.build()); - } else if (edgeWeightFormat.equals("LOWER_DIAG_ROW")) { - FastVehicleRoutingTransportCostsMatrix.Builder matrixBuilder = FastVehicleRoutingTransportCostsMatrix.Builder.newInstance(dimensions, true); - int fromIndex = 0; - int toIndex = 0; - for (int i = 0; i < edgeWeights.size(); i++) { - if (toIndex > fromIndex) { - fromIndex++; - toIndex = 0; - } - matrixBuilder.addTransportDistance(fromIndex, toIndex, edgeWeights.get(i)); - matrixBuilder.addTransportTime(fromIndex, toIndex, edgeWeights.get(i)); - toIndex++; - } - vrpBuilder.setRoutingCost(matrixBuilder.build()); - } else if (edgeWeightFormat.equals("FULL_MATRIX")) { - FastVehicleRoutingTransportCostsMatrix.Builder matrixBuilder = FastVehicleRoutingTransportCostsMatrix.Builder.newInstance(dimensions, false); - int fromIndex = 0; - int toIndex = 0; - for (int i = 0; i < edgeWeights.size(); i++) { - if (toIndex == dimensions) { - fromIndex++; - toIndex = 0; - } - matrixBuilder.addTransportDistance(fromIndex, toIndex, edgeWeights.get(i)); - matrixBuilder.addTransportTime(fromIndex, toIndex, edgeWeights.get(i)); - toIndex++; - } - vrpBuilder.setRoutingCost(matrixBuilder.build()); - } - - - } - - - } - - private VehicleRoutingTransportCosts getGEOMatrix(List noLocations) { - FastVehicleRoutingTransportCostsMatrix.Builder matrixBuilder = FastVehicleRoutingTransportCostsMatrix.Builder.newInstance(noLocations.size(), true); - for (Location i : noLocations) { - for (Location j : noLocations) { - matrixBuilder.addTransportDistance(i.getIndex(), j.getIndex(), getDistance(i, j)); - matrixBuilder.addTransportTime(i.getIndex(), j.getIndex(), getDistance(i, j)); - } - } - return matrixBuilder.build(); - } - - private double getDistance(Location from, Location to) { - double longitude_from = getLongitude(from); - double longitude_to = getLongitude(to); - double latitude_from = getLatitude(from); - double latitude_to = getLatitude(to); - double q1 = Math.cos(longitude_from - longitude_to); - double q2 = Math.cos(latitude_from - latitude_to); - double q3 = Math.cos(latitude_from + latitude_to); - return 6378.388 * Math.acos(.5 * ((1. + q1) * q2 - (1. - q1) * q3)) + 1.; - } - - private double getLatitude(Location loc) { - int deg = (int) loc.getCoordinate().getX(); - double min = loc.getCoordinate().getX() - deg; - return Math.PI * (deg + 5. * min / 3.) / 180.; - } - - private double getLongitude(Location loc) { - int deg = (int) loc.getCoordinate().getY(); - double min = loc.getCoordinate().getY() - deg; - return Math.PI * (deg + 5. * min / 3.) / 180.; - } - - - private void close(BufferedReader reader) { - try { - reader.close(); - } catch (IOException e) { - e.printStackTrace(); - } - ; - } - - private String getLine(BufferedReader reader) { - String s = null; - try { - s = reader.readLine(); - } catch (IOException e) { - e.printStackTrace(); - } - return s; - } - - private BufferedReader getBufferedReader(String filename) { - BufferedReader bufferedReader = null; - try { - bufferedReader = new BufferedReader(new FileReader(new File(filename))); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } - return bufferedReader; - } -} diff --git a/jsprit-instances/src/main/java/com/graphhopper/jsprit/instance/reader/Taillard.java b/jsprit-instances/src/main/java/com/graphhopper/jsprit/instance/reader/Taillard.java deleted file mode 100644 index c1026c04f..000000000 --- a/jsprit-instances/src/main/java/com/graphhopper/jsprit/instance/reader/Taillard.java +++ /dev/null @@ -1,531 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.instance.reader; -//package instances; -// -//import java.io.BufferedReader; -//import java.io.IOException; -//import java.util.ArrayList; -//import java.util.Collection; -//import java.util.HashMap; -//import java.util.Map; -//import java.util.concurrent.ExecutorService; -//import java.util.concurrent.Executors; -//import java.util.concurrent.TimeUnit; -// -//import org.apache.log4j.Level; -//import org.apache.log4j.Logger; -//import org.matsim.contrib.freight.vrp.algorithms.rr.costCalculators.JobInsertionCalculator; -//import org.matsim.contrib.freight.vrp.algorithms.rr.costCalculators.RouteAgentFactory; -//import org.matsim.contrib.freight.vrp.algorithms.rr.listener.RuinAndRecreateReport; -//import org.matsim.contrib.freight.vrp.algorithms.rr.ruin.JobDistanceAvgCosts; -//import org.matsim.contrib.freight.vrp.algorithms.rr.ruin.RuinRadial; -//import org.matsim.contrib.freight.vrp.basics.Driver; -//import org.matsim.contrib.freight.vrp.basics.Job; -//import org.matsim.contrib.freight.vrp.basics.RouteAlgorithm; -//import org.matsim.contrib.freight.vrp.basics.RouteAlgorithm.VehicleSwitchedListener; -//import org.matsim.contrib.freight.vrp.basics.Service; -//import org.matsim.contrib.freight.vrp.basics.Tour; -//import org.matsim.contrib.freight.vrp.basics.TourActivity; -//import org.matsim.contrib.freight.vrp.basics.TourStateUpdater; -//import org.matsim.contrib.freight.vrp.basics.Vehicle; -//import org.matsim.contrib.freight.vrp.basics.VehicleFleetManager; -//import org.matsim.contrib.freight.vrp.basics.VehicleFleetManagerImpl; -//import org.matsim.contrib.freight.vrp.basics.VehicleImpl; -//import org.matsim.contrib.freight.vrp.basics.VehicleImpl.Type; -//import org.matsim.contrib.freight.vrp.basics.VehicleImpl.VehicleCostParams; -//import org.matsim.contrib.freight.vrp.basics.VehicleRoute; -//import org.matsim.contrib.freight.vrp.basics.VehicleRoute.VehicleRouteCostCalculator; -//import org.matsim.contrib.freight.vrp.basics.VehicleRouteCostFunction; -//import org.matsim.contrib.freight.vrp.basics.VehicleRouteCostFunctionFactory; -//import org.matsim.contrib.freight.vrp.basics.VehicleRoutingCosts; -//import org.matsim.contrib.freight.vrp.basics.VehicleRoutingProblem; -//import org.matsim.contrib.freight.vrp.basics.VehicleRoutingProblemSolution; -//import org.matsim.contrib.freight.vrp.basics.VrpBuilder; -//import org.matsim.contrib.freight.vrp.utils.Coordinate; -//import org.matsim.contrib.freight.vrp.utils.EuclideanDistanceCalculator; -//import org.matsim.contrib.freight.vrp.utils.Locations; -//import org.matsim.contrib.freight.vrp.utils.RouteUtils; -//import org.matsim.core.utils.io.IOUtils; -// -//import ruinFactories.RadialRuinFactory; -//import selectors.SelectBest; -//import selectors.SelectRandomly; -//import strategies.GendreauPostOpt; -//import strategies.RadialAndRandomRemoveBestInsert; -//import vrp.SearchStrategy; -//import vrp.SearchStrategyManager; -//import vrp.SearchStrategyModule; -//import vrp.VehicleRoutingMetaAlgorithm; -//import acceptors.AcceptNewRemoveWorst; -//import basics.VehicleRouteFactoryImpl; -//import basics.costcalculators.AuxilliaryCostCalculator; -//import basics.costcalculators.CalculatesActivityInsertion; -//import basics.costcalculators.CalculatesServiceInsertionConsideringFixCost; -//import basics.costcalculators.CalculatesServiceInsertionOnRouteLevel; -//import basics.costcalculators.CalculatesVehTypeDepServiceInsertion; -//import basics.inisolution.CreateInitialSolution; -//import basics.insertion.ConfigureFixCostCalculator; -//import basics.insertion.DepotDistance; -//import basics.insertion.ParRegretInsertion; -//import basics.insertion.RecreationBestInsertion; -// -///** -// * test instances for the capacitated vrp with time windows. instances are from solomon -// * and can be found at: -// * http://neo.lcc.uma.es/radi-aeb/WebVRP/ -// * @author stefan schroeder -// * -// */ -// -// -// -//public class Taillard { -// -// -// static class MyLocations implements Locations{ -// -// private Map locations = new HashMap(); -// -// public void addLocation(String id, Coordinate coord){ -// locations.put(id, coord); -// } -// -// @Override -// public Coordinate getCoord(String id) { -// return locations.get(id); -// } -// } -// -// public static final String VRPHE = "vrphe"; -// -// public static final String VFM = "vfm"; -// -// private static Logger logger = Logger.getLogger(Christophides.class); -// -// private String fileNameOfInstance; -// -// private String depotId; -// -// private String instanceName; -// -// private String vehicleFile; -// -// private String vehicleCostScenario; -// -// private String vrpType; -// -// private ResultWriter resultWriter; -// -// private RuinAndRecreateReport report; -// -// -// public Taillard(String fileNameOfInstance, String instanceName, String vehicleFileName, String vehicleCostScenario, String vrpType) { -// super(); -// this.fileNameOfInstance = fileNameOfInstance; -// this.instanceName = instanceName; -// this.vehicleFile = vehicleFileName; -// this.vehicleCostScenario = vehicleCostScenario; -// this.vrpType = vrpType; -// } -// -// public static void main(String[] args) throws IOException { -// System.out.println("start " + System.currentTimeMillis()); -// Logger.getRootLogger().setLevel(Level.INFO); -// -// int nOfProcessors = Runtime.getRuntime().availableProcessors(); -// logger.info("nOfProcessors: " + nOfProcessors); -// ExecutorService executor = Executors.newFixedThreadPool(nOfProcessors+2); -// -// ResultWriter resultWriter = new ResultWriter(); -//// String vrpType = "VFM"; -// String vrpType = VRPHE; -// String pblm_abbr = "R101"; -// String costScen = "R_19"; -// -// String problem = "100_" + pblm_abbr + "_LuiShen"; -// String problemFile = pblm_abbr + ".txt"; -// Taillard luiShen = new Taillard("/Users/stefan/Documents/Schroeder/Dissertation/vrpInstances/cvrptw_solomon/nOfCust100/"+problemFile, -// problem, "/Users/stefan/Documents/Schroeder/Dissertation/vrpInstances/vrphe_taillard/"+costScen+".txt", costScen, vrpType); -// luiShen.setResultWriter(resultWriter); -// luiShen.run(executor); -// -// System.out.println("finish " + System.currentTimeMillis()); -// resultWriter.write("output/taillard_"+ pblm_abbr + "_" + costScen + ".txt"); -// resultWriter.writeSolutions("output/taillard_solution_" + pblm_abbr + "_" + costScen + ".txt"); -// -// executor.shutdown(); -// try { -// executor.awaitTermination(10, TimeUnit.SECONDS); -// } catch (InterruptedException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } -// } -// -// private static String getName(int i) { -// if(i<10){ -// return "0" + i; -// } -// else{ -// return "" + i; -// } -// } -// -// private void setResultWriter(ResultWriter resultWriter) { -// this.resultWriter = resultWriter; -// -// } -// -// public void run(ExecutorService executor){ -// -// final MyLocations myLocations = new MyLocations(); -// Collection jobs = new ArrayList(); -// final Map jobMap = readLocationsAndJobs(myLocations,jobs); -// -// VehicleRoutingCosts costs = new VehicleRoutingCosts() { -// -// @Override -// public double getBackwardTransportTime(String fromId, String toId, double arrivalTime, Driver driver, Vehicle vehicle) { -// return getTransportTime(fromId, toId, arrivalTime, null, null); -// } -// -// @Override -// public double getBackwardTransportCost(String fromId, String toId, double arrivalTime, Driver driver, Vehicle vehicle) { -// return getTransportCost(fromId, toId, arrivalTime, null, null); -// } -// -// @Override -// public double getTransportCost(String fromId, String toId, double departureTime, Driver driver, Vehicle vehicle) { -// double variableCost; -// if(vehicle == null){ -// variableCost = 1.0; -// } -// else{ -// variableCost = vehicle.getType().vehicleCostParams.perDistanceUnit; -// } -// return variableCost*EuclideanDistanceCalculator.calculateDistance(myLocations.getCoord(fromId), myLocations.getCoord(toId)); -// } -// -// @Override -// public double getTransportTime(String fromId, String toId, double departureTime, Driver driver, Vehicle vehicle) { -// return getTransportCost(fromId, toId, departureTime, driver, vehicle); -// } -// }; -// -// VrpBuilder vrpBuilder = new VrpBuilder(costs); -// for(Job j : jobs){ -// vrpBuilder.addJob(j); -// } -// createVehicles(vrpBuilder); -// VehicleRoutingProblem vrp = vrpBuilder.build(); -// -// VehicleRoutingMetaAlgorithm metaAlgorithm = new VehicleRoutingMetaAlgorithm(vrp); -// configure(metaAlgorithm,vrp,executor,myLocations); -// metaAlgorithm.run(); -// -// printSolutions(vrp); -// -// VehicleRoutingProblemSolution bestSolution = new SelectBest().selectSolution(vrp); -// -// resultWriter.addResult(instanceName+"_"+vehicleCostScenario , instanceName, RouteUtils.getNuOfActiveRoutes(bestSolution.getRoutes()), bestSolution.getCost()); -// resultWriter.addSolution(bestSolution); -// -// -// } -// -// private void printSolutions(VehicleRoutingProblem vrp) { -// for(VehicleRoutingProblemSolution s : vrp.getSolutions()){ -// System.out.println("total: " + s.getCost()); -// System.out.println("activeTours: " + RouteUtils.getNuOfActiveRoutes(s.getRoutes())); -// System.out.println(""); -// } -// -// } -// -// private void configure(VehicleRoutingMetaAlgorithm metaAlgorithm, final VehicleRoutingProblem vrp, ExecutorService executor, MyLocations myLocations) { -// VehicleRoute.VehicleRouteCostCalculator = new VehicleRouteCostCalculator() { -// -// @Override -// public double calculate(Tour tour, Vehicle vehicle, Driver driver) { -//// return vehicle.getType().vehicleCostParams.fix + tour.getCost(); -// return tour.getCost(); -// } -// -// }; -// -//// final VehicleFleetManager vehicleFleetManager = new InfiniteVehicles(vrp.getVehicles()); -// final VehicleFleetManager vehicleFleetManager = new VehicleFleetManagerImpl(vrp.getVehicles()); -// -// final VehicleRouteCostFunctionFactory costFuncFac = getFac(); -// -// AuxilliaryCostCalculator auxilliaryCostCalculator = new AuxilliaryCostCalculator(vrp.getCosts(), costFuncFac); -// CalculatesActivityInsertion actInsertion = new CalculatesActivityInsertion(auxilliaryCostCalculator,0,5); -//// CalculatesServiceInsertion standardServiceInsertion = new CalculatesServiceInsertion(actInsertion); -// CalculatesServiceInsertionOnRouteLevel standardServiceInsertion = new CalculatesServiceInsertionOnRouteLevel(actInsertion,vrp.getCosts(),costFuncFac); -// CalculatesServiceInsertionOnRouteLevel.MEMORYSIZE_FORPROMISING_INSERTIONPOSITIONS = 2; -// CalculatesServiceInsertionConsideringFixCost withFixCost = new CalculatesServiceInsertionConsideringFixCost(standardServiceInsertion); -// withFixCost.setWeightOfFixCost(0.0); -// -// final JobInsertionCalculator vehicleTypeDepInsertionCost = new CalculatesVehTypeDepServiceInsertion(vehicleFleetManager, standardServiceInsertion); -// -// final TourStateUpdater tourStateCalculator = new TourStateUpdater(vrp.getCosts(),costFuncFac); -// tourStateCalculator.setTimeWindowUpdate(false); -// -// RouteAgentFactory routeAgentFactory = new RouteAgentFactory(){ -// -// @Override -// public RouteAlgorithm createAgent(VehicleRoute route) { -// VehicleSwitchedListener switched = new VehicleSwitchedListener() { -// -// @Override -// public void vehicleSwitched(Vehicle oldVehicle, Vehicle newVehicle) { -// vehicleFleetManager.unlock(oldVehicle); -// vehicleFleetManager.lock(newVehicle); -// } -// -// }; -// RouteAlgorithmImpl agent = new RouteAlgorithmImpl(vehicleTypeDepInsertionCost, tourStateCalculator); -// agent.getListeners().add(switched); -// return agent; -// } -// -// }; -// -// ParRegretInsertion regretInsertion = new ParRegretInsertion(executor, routeAgentFactory); -// regretInsertion.getListener().add(new ConfigureFixCostCalculator(vrp, withFixCost)); -// regretInsertion.setJobDistance(new DepotDistance(myLocations, depotId)); -// regretInsertion.scoreParam_of_timeWindowLegth = 0.5; -// regretInsertion.scoreParam_of_distance = 0.2; -// regretInsertion.setVehicleRouteFactory(new VehicleRouteFactoryImpl(depotId)); -// -// -// RecreationBestInsertion bestInsertion = new RecreationBestInsertion(routeAgentFactory); -// bestInsertion.getListener().add(new ConfigureFixCostCalculator(vrp, withFixCost)); -// bestInsertion.setVehicleRouteFactory(new VehicleRouteFactoryImpl(depotId)); -// -//// for(int i=0;i<3;i++){ -// VehicleRoutingProblemSolution vrpSol = new CreateInitialSolution(bestInsertion).createInitialSolution(vrp); -// vrp.getSolutions().add(vrpSol); -//// } -// -// -// RadialAndRandomRemoveBestInsert smallNeighborHoodSearchModule = new RadialAndRandomRemoveBestInsert(vrp, vehicleFleetManager, routeAlgorithm); -// smallNeighborHoodSearchModule.setCalcConsideringFix(withFixCost); -// smallNeighborHoodSearchModule.setStateCalc(tourStateCalculator); -// smallNeighborHoodSearchModule.setInsertionStrategy(bestInsertion); -// smallNeighborHoodSearchModule.setAuxilliaryCostCalculator(auxilliaryCostCalculator); -// -// SearchStrategy smallNeighborHoodSearch = new SearchStrategy(new SelectRandomly(), new AcceptNewRemoveWorst()); -// -// smallNeighborHoodSearch.addModule(smallNeighborHoodSearchModule); -// -// GendreauPostOpt postOpt = new GendreauPostOpt(vrp, routeAgentFactory, -// (RuinRadial) new RadialRuinFactory(0.2, new JobDistanceAvgCosts(vrp.getCosts()), routeAgentFactory).createStrategy(vrp), -// bestInsertion); -// postOpt.setFleetManager(vehicleFleetManager); -// postOpt.setVehicleRouteFactory(new VehicleRouteFactoryImpl(depotId)); -// postOpt.setMaxIterations(2000); -// postOpt.setShareOfJobsToRuin(0.18); -//// smallNeighborHoodSearch.addModule(postOpt); -// -// -//// SearchStrategy strat2 = new SearchStrategy(new SelectBest(), new AcceptNewRemoveWorst()); -//// GendreauPostOpt postOpt2 = new GendreauPostOpt(vrp, routeAgentFactory, -//// (RuinRadial) new RadialRuinFactory(0.2, new JobDistanceAvgCosts(vrp.getCosts()), routeAgentFactory).createStrategy(vrp), -//// bestInsertion); -//// postOpt2.setFleetManager(vehicleFleetManager); -//// postOpt2.setVehicleRouteFactory(new VehicleRouteFactoryImpl(depotId)); -//// postOpt2.setMaxIterations(2000); -//// postOpt2.setShareOfJobsToRuin(0.1); -//// strat2.addModule(postOpt2); -// -// SearchStrategyModule solutionVerifier = new SearchStrategyModule() { -// -// @Override -// public VehicleRoutingProblemSolution runAndGetSolution(VehicleRoutingProblemSolution vrpSolution) { -// logger.info("verify solution"); -// if(SolutionVerifier.resultOfSolutionEqualsSumOfIndividualRouteCost(vrpSolution, vrp, costFuncFac,false)) return vrpSolution; -// throw new IllegalStateException("solution is not valid"); -// } -// }; -// smallNeighborHoodSearch.addModule(solutionVerifier); -// -// SearchStrategyManager strategyManager = new SearchStrategyManager(); -// strategyManager.addStrategy(smallNeighborHoodSearch, 1.0); -//// strategyManager.addStrategy(strat2, 0.3); -// -// metaAlgorithm.setSearchStrategyManager(strategyManager); -// metaAlgorithm.setMaxIterations(20); -// VehicleRoutingProblem.SOLUTION_MEMORY = 4; -// -// -// } -// -// private VehicleRouteCostFunctionFactory getFac() { -// VehicleRouteCostFunctionFactory fac = new VehicleRouteCostFunctionFactory() { -// -// @Override -// public VehicleRouteCostFunction createCostFunction(Vehicle vehicle, Driver driver) { -// return new VehicleRouteCostFunction(){ -// -// double cost = 0.0; -// -// @Override -// public void handleActivity(TourActivity tourAct, double startTime, double endTime) { -// if(startTime > tourAct.getLatestOperationStartTime()){ -// cost += Double.MAX_VALUE; -// } -// } -// -// @Override -// public void handleLeg(TourActivity fromAct, TourActivity toAct, double depTime, double tpCost) { -// cost += tpCost; -// -// } -// -// @Override -// public double getCost() { -// return cost; -// } -// -// @Override -// public void finish() { -// -// -// } -// -// @Override -// public void reset() { -// -// } -// -// }; -// } -// }; -// return fac; -// } -// -// private void createVehicles(VrpBuilder vrpBuilder) { -// BufferedReader reader = IOUtils.getBufferedReader(vehicleFile); -// String line = null; -// int vehicleIdColumn = 0; -// int capacityColumn = 1; -// int fixColumn = 2; -// int varColumn = 3; -// int nOfVehiclesColumn = 4; -// boolean firstLine = true; -// try { -// while((line = reader.readLine()) != null){ -// if(firstLine){ -// firstLine = false; -// continue; -// } -// String[] tokens = line.split(";"); -// String vehicleId = tokens[vehicleIdColumn]; -// int capacity = Integer.parseInt(tokens[capacityColumn]); -// int fixCost = Integer.parseInt(tokens[fixColumn]); -// double var; -// if(vrpType.equals(VRPHE)){ -// var = Double.parseDouble(tokens[varColumn]); -// } -// else { -// var = 1.0; -// } -// int nOfVehicles = Integer.parseInt(tokens[nOfVehiclesColumn]); -// for(int i=0;i readLocationsAndJobs(MyLocations locations, Collection jobs){ -// BufferedReader reader = IOUtils.getBufferedReader(fileNameOfInstance); -// String line = null; -// int counter = 0; -// Map jobMap = new HashMap(); -// try { -// while((line = reader.readLine()) != null){ -// line = line.replace("\r", ""); -// line = line.trim(); -// String[] tokens = line.split(" +"); -// counter++; -// if(counter == 5){ -// int vehicleCap = Integer.parseInt(tokens[1]); -// continue; -// } -// -// if(counter > 9){ -// Coordinate coord = makeCoord(tokens[1],tokens[2]); -// double depotStart = 0.0; -// double depotEnd = Double.MAX_VALUE; -// String customerId = tokens[0]; -// locations.addLocation(customerId, coord); -// int demand = Integer.parseInt(tokens[3]); -// double start = Double.parseDouble(tokens[4]); -// double end = Double.parseDouble(tokens[5]); -// double serviceTime = Double.parseDouble(tokens[6]); -// if(counter == 10){ -// depotStart = start; -// depotEnd = end; -// depotId = tokens[0]; -// -// } -// else{ -// Service service = VrpUtils.createService("" + counter, customerId, demand, 0.0, 0.0, Double.MAX_VALUE); -//// Shipment shipment = VrpUtils.createShipment("" + counter, depotId, customerId, demand, -//// VrpUtils.createTimeWindow(depotStart, depotEnd), VrpUtils.createTimeWindow(start, end)); -//// shipment.setDeliveryServiceTime(serviceTime); -// jobs.add(service); -// jobMap.put(customerId, service); -//// jobs.add(shipment); -//// j -//// Shipment shipment = VrpUtils.createShipment("" + counter, depotId, customerId, demand, -//// VrpUtils.createTimeWindow(depotStart, depotEnd), VrpUtils.createTimeWindow(start, end)); -//// shipment.setDeliveryServiceTime(serviceTime); -//// jobs.add(shipment); -// } -// } -// } -// reader.close(); -// } catch (NumberFormatException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } catch (IOException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } -// return jobMap; -// } -// -// private Coordinate makeCoord(String xString, String yString) { -// double x = Double.parseDouble(xString); -// double y = Double.parseDouble(yString); -// return new Coordinate(x,y); -// } -// -//} diff --git a/jsprit-instances/src/main/java/com/graphhopper/jsprit/instance/reader/VrphGoldenReader.java b/jsprit-instances/src/main/java/com/graphhopper/jsprit/instance/reader/VrphGoldenReader.java deleted file mode 100644 index 9a7d4697b..000000000 --- a/jsprit-instances/src/main/java/com/graphhopper/jsprit/instance/reader/VrphGoldenReader.java +++ /dev/null @@ -1,167 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.graphhopper.jsprit.instance.reader; - -import com.graphhopper.jsprit.core.problem.Location; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem.Builder; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem.FleetSize; -import com.graphhopper.jsprit.core.problem.job.Service; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; -import com.graphhopper.jsprit.core.util.Coordinate; - -import java.io.*; - -/** - * Reads modified files from Taillard's website - * http://mistic.heig-vd.ch/taillard/problemes.dir/vrp.dir/vrp.html. You can find the modified version here: - * jsprit-instances/instances/vrph. - *

- *

See {@link VrphType} what kind of problems can be generated - * - * @author schroeder - */ -public class VrphGoldenReader { - - /** - * FSMD - Fleet Size and Mix with Dependent costs - *

FSMF - Fleet Size and Mix with Fixed costs - *

FSMFD - Fleet Size and Mix with Fixed and Dependent costs - *

HVRPD - Heterogeneous Vehicle Routing Problem with Dependent costs and finite (limited) fleet - *

HVRPFD - Heterogeneous Vehicle Routing Problem with Fixed and Dependent costs and finite (limited) fleet - * - * @author schroeder - */ - public enum VrphType { - FSMD, - HVRPD, - FSMF, - FSMFD, - HVRPFD - } - - private final VehicleRoutingProblem.Builder vrpBuilder; - - private final VrphType vrphType; - - public VrphGoldenReader(Builder vrpBuilder, VrphType vrphType) { - super(); - this.vrpBuilder = vrpBuilder; - this.vrphType = vrphType; - } - - public void read(String filename) { - BufferedReader reader = getReader(filename); - String line; - boolean firstline = true; - Coordinate depotCoord = null; - int customerCount = 0; - Integer nuOfCustomer = 0; - while ((line = readLine(reader)) != null) { - String trimedLine = line.trim(); - if (trimedLine.startsWith("//")) continue; - String[] tokens = trimedLine.split("\\s+"); - if (firstline) { - nuOfCustomer = Integer.parseInt(tokens[0]); - customerCount = 0; - firstline = false; - } else if (customerCount <= nuOfCustomer) { - if (customerCount == 0) { - depotCoord = Coordinate.newInstance(Double.parseDouble(tokens[1]), Double.parseDouble(tokens[2])); - } else { - Service.Builder serviceBuilder = Service.Builder.newInstance(tokens[0]).addSizeDimension(0, Integer.parseInt(tokens[3])); - serviceBuilder.setLocation(Location.newInstance(Double.parseDouble(tokens[1]), Double.parseDouble(tokens[2]))); - vrpBuilder.addJob(serviceBuilder.build()); - } - customerCount++; - } else if (trimedLine.startsWith("v")) { - VehicleTypeImpl.Builder typeBuilder = VehicleTypeImpl.Builder.newInstance("type_" + tokens[1]).addCapacityDimension(0, Integer.parseInt(tokens[2])); - int nuOfVehicles = 1; - if (vrphType.equals(VrphType.FSMF)) { - typeBuilder.setFixedCost(Double.parseDouble(tokens[3])); - } else if (vrphType.equals(VrphType.FSMFD)) { - typeBuilder.setFixedCost(Double.parseDouble(tokens[3])); - if (tokens.length > 4) { - typeBuilder.setCostPerDistance(Double.parseDouble(tokens[4])); - } else - throw new IllegalStateException("option " + vrphType + " cannot be applied with this instance"); - } else if (vrphType.equals(VrphType.FSMD)) { - if (tokens.length > 4) { - typeBuilder.setCostPerDistance(Double.parseDouble(tokens[4])); - } else - throw new IllegalStateException("option " + vrphType + " cannot be applied with this instance"); - } else if (vrphType.equals(VrphType.HVRPD)) { - if (tokens.length > 4) { - typeBuilder.setCostPerDistance(Double.parseDouble(tokens[4])); - nuOfVehicles = Integer.parseInt(tokens[5]); - vrpBuilder.setFleetSize(FleetSize.FINITE); - } else - throw new IllegalStateException("option " + vrphType + " cannot be applied with this instance"); - } else if (vrphType.equals(VrphType.HVRPFD)) { - if (tokens.length > 4) { - typeBuilder.setFixedCost(Double.parseDouble(tokens[3])); - typeBuilder.setCostPerDistance(Double.parseDouble(tokens[4])); - nuOfVehicles = Integer.parseInt(tokens[5]); - vrpBuilder.setFleetSize(FleetSize.FINITE); - } else - throw new IllegalStateException("option " + vrphType + " cannot be applied with this instance"); - } - for (int i = 0; i < nuOfVehicles; i++) { - VehicleTypeImpl type = typeBuilder.build(); - VehicleImpl vehicle = VehicleImpl.Builder.newInstance("vehicle_" + tokens[1] + "_" + i) - .setStartLocation(Location.newInstance(depotCoord.getX(), depotCoord.getY())).setType(type).build(); - vrpBuilder.addVehicle(vehicle); - } - } - } - closeReader(reader); - } - - private void closeReader(BufferedReader reader) { - try { - reader.close(); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - private String readLine(BufferedReader reader) { - String readLine = null; - try { - readLine = reader.readLine(); - } catch (IOException e) { - throw new RuntimeException(e); - } - return readLine; - } - - private BufferedReader getReader(String filename) { - BufferedReader bufferedReader = null; - try { - bufferedReader = new BufferedReader(new FileReader(new File(filename))); - return bufferedReader; - } catch (FileNotFoundException e) { - throw new RuntimeException(e); - } - } - - - -} diff --git a/jsprit-instances/src/main/java/com/graphhopper/jsprit/instance/util/Instances.java b/jsprit-instances/src/main/java/com/graphhopper/jsprit/instance/util/Instances.java deleted file mode 100644 index aaaf1d041..000000000 --- a/jsprit-instances/src/main/java/com/graphhopper/jsprit/instance/util/Instances.java +++ /dev/null @@ -1,250 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.instance.util; - -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.util.BenchmarkInstance; -import com.graphhopper.jsprit.instance.reader.ChristofidesReader; -import com.graphhopper.jsprit.instance.reader.CordeauReader; -import com.graphhopper.jsprit.instance.reader.SolomonReader; - -import java.io.*; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.List; - - -public class Instances { - - /** - * Returns a collection of {@link BenchmarkInstance} which are Cordeau's p instances. - *

Note that this assumes that within the folder 'inputFolder' 23 p-instances are located with their original name, i.e. p01,p02,...,p23. - *

It also assumes that solution files are also located in inputFolder ending with .res - * - * @param inputFolder where cordeau's p instances are located. It must end without '/' such as instances/cordeau. - * @return a collection of {@link BenchmarkInstance} - */ - public static Collection getAllCordeauP(String inputFolder) { - Collection instances = new ArrayList(); - for (int i = 0; i < 23; i++) { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - String file = inputFolder + "/p" + getInstanceNu(i + 1); - new CordeauReader(builder).read(file); - VehicleRoutingProblem p = builder.build(); - instances.add(new BenchmarkInstance("p" + getInstanceNu(i + 1), p, getBestKnown(file), null)); - } - return instances; - } - - - private static double getBestKnown(String file) { - try { - BufferedReader reader = new BufferedReader(new FileReader(new File(file + ".res"))); - String first = reader.readLine(); - Double result = Double.valueOf(first); - reader.close(); - return result; - } catch (FileNotFoundException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - return 0; - } - - private static String getInstanceNu(int i) { - if (i < 10) return "0" + i; - return "" + i; - } - - /** - * Returns a collection of {@link BenchmarkInstance} which are Cordeau's pr instances. - *

Note that this assumes that within the folder 'inputFolder' 10 p-instances are located with their original name, i.e. pr01,pr02,...,pr10. - *

It also assumes that solution files are also located in inputFolder ending with .res - * - * @param inputFolder - * @param inputFolder where cordeau's pr instances are located. It must end without '/' such as instances/cordeau. - * @return a collection of {@link BenchmarkInstance} - */ - public static Collection getAllCordeauPR(String inputFolder) { - Collection instances = new ArrayList(); - for (int i = 0; i < 10; i++) { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - String file = inputFolder + "/pr" + getInstanceNu(i + 1); - new CordeauReader(builder).read(file); - VehicleRoutingProblem p = builder.build(); - instances.add(new BenchmarkInstance("pr" + getInstanceNu(i + 1), p, getBestKnown(file), null)); - } - return instances; - } - - /** - * Returns a collection of {@link BenchmarkInstance} which are Christofides vrpnc instances. - *

Note that this assumes that within the folder 'inputFolder' 14 vrpnc-instances are located with their original name, i.e. vrpnc1,vrpnc2,...,vrpnc14. - * - * @param inputFolder where christofides vrpnc instances are located. It must end without '/' such as instances/christofides. - * @return a collection of {@link BenchmarkInstance} - */ - public static Collection getAllChristofides(String inputFolder) { - List bestKnown = Arrays.asList(524.61, 835.26, 826.14, 1028.42, 1291.29, 555.43, 909.68, 865.49, 1162.55, 1395.85, 1042.11, 819.56, 1541.14, 866.37); - Collection instances = new ArrayList(); - for (int i = 0; i < 14; i++) { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - String file = inputFolder + "/vrpnc" + (i + 1) + ".txt"; - new ChristofidesReader(builder).read(file); - VehicleRoutingProblem p = builder.build(); - instances.add(new BenchmarkInstance("vrpnc" + getInstanceNu(i + 1), p, bestKnown.get(i).doubleValue(), null)); - } - return instances; - } - - /** - * Returns a collection of {@link BenchmarkInstance} which are Solomon instances. - *

Note that this assumes that within the folder 'inputFolder' 9 C1-instances are located with their original name, i.e. C101.txt,C102.txt,...,C109.txt. - *

Note that unlike the original problems, a fixed-cost value of 1000 is set for each employed vehicle. - * - * @param inputFolder where solomon C1 instances are located. It must end without '/' such as instances/solomon. - * @return a collection of {@link BenchmarkInstance} - */ - public static Collection getAllSolomonC1(String inputFolder) { - List bestKnown = Arrays.asList(828.94, 828.94, 828.06, 824.78, 828.94, 828.94, 828.94, 828.94, 828.94); - List bestKnowVehicles = Arrays.asList(10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0); - Collection instances = new ArrayList(); - for (int i = 0; i < 9; i++) { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - String file = inputFolder + "/C1" + getInstanceNu(i + 1) + ".txt"; - new SolomonReader(builder).read(file); - VehicleRoutingProblem p = builder.build(); - instances.add(new BenchmarkInstance("C1" + getInstanceNu(i + 1), p, bestKnown.get(i).doubleValue(), bestKnowVehicles.get(i).doubleValue())); - } - return instances; - } - - /** - * Returns a collection of {@link BenchmarkInstance} which are Solomon instances. - *

Note that this assumes that within the folder 'inputFolder' 8 C2-instances are located with their original name, i.e. C201.txt,C202.txt,...,C208.txt. - *

Note that unlike the original problems, a fixed-cost value of 1000 is set for each employed vehicle. - * - * @param inputFolder where solomon C2 instances are located. It must end without '/' such as instances/solomon. - * @return a collection of {@link BenchmarkInstance} - */ - public static Collection getAllSolomonC2(String inputFolder) { - List bestKnown = Arrays.asList(591.56, 591.56, 591.17, 590.60, 588.88, 588.49, 588.29, 588.32); - List bestKnowVehicles = Arrays.asList(3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0); - Collection instances = new ArrayList(); - for (int i = 0; i < 8; i++) { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - String file = inputFolder + "/C2" + getInstanceNu(i + 1) + ".txt"; - new SolomonReader(builder).read(file); - VehicleRoutingProblem p = builder.build(); - instances.add(new BenchmarkInstance("C2" + getInstanceNu(i + 1), p, bestKnown.get(i).doubleValue(), bestKnowVehicles.get(i).doubleValue())); - } - return instances; - } - - /** - * Returns a collection of {@link BenchmarkInstance} which are Solomon instances. - *

Note that this assumes that within the folder 'inputFolder' 12 R1-instances are located with their original name, i.e. R101.txt,R102.txt,...,R112.txt. - *

Note that unlike the original problems, a fixed-cost value of 1000 is set for each employed vehicle. - * - * @param inputFolder where solomon R1 instances are located. It must end without '/' such as instances/solomon. - * @return a collection of {@link BenchmarkInstance} - */ - public static Collection getAllSolomonR1(String inputFolder) { - List bestKnown = Arrays.asList(1650.80, 1486.12, 1292.68, 1007.31, 1377.11, 1252.03, 1104.66, 960.88, 1194.73, 1118.84, 1096.72, 982.14); - List bestKnowVehicles = Arrays.asList(19.0, 17.0, 13.0, 9.0, 14.0, 12.0, 10.0, 9.0, 11.0, 10.0, 10.0, 9.0); - Collection instances = new ArrayList(); - for (int i = 0; i < 12; i++) { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - String file = inputFolder + "/R1" + getInstanceNu(i + 1) + ".txt"; - new SolomonReader(builder).read(file); - VehicleRoutingProblem p = builder.build(); - instances.add(new BenchmarkInstance("R1" + getInstanceNu(i + 1), p, bestKnown.get(i).doubleValue(), bestKnowVehicles.get(i).doubleValue())); - } - return instances; - } - - /** - * Returns a collection of {@link BenchmarkInstance} which are Solomon instances. - *

Note that this assumes that within the folder 'inputFolder' 11 R1-instances are located with their original name, i.e. R201.txt,R202.txt,...,R111.txt. - *

Note that unlike the original problems, a fixed-cost value of 1000 is set for each employed vehicle. - * - * @param inputFolder - * @param inputFolder where solomon R2 instances are located. It must end without '/' such as instances/solomon. - * @return a collection of {@link BenchmarkInstance} - */ - public static Collection getAllSolomonR2(String inputFolder) { - List bestKnown = Arrays.asList(1252.37, 1191.70, 939.50, 825.52, 994.42, 906.14, 890.61, 726.82, 909.16, 939.37, 885.71); - List bestKnowVehicles = Arrays.asList(4.0, 3.0, 3.0, 2.0, 3.0, 3.0, 2.0, 2.0, 3.0, 3.0, 2.0); - Collection instances = new ArrayList(); - for (int i = 0; i < 11; i++) { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - String file = inputFolder + "/R2" + getInstanceNu(i + 1) + ".txt"; - new SolomonReader(builder).read(file); - VehicleRoutingProblem p = builder.build(); - instances.add(new BenchmarkInstance("R2" + getInstanceNu(i + 1), p, bestKnown.get(i).doubleValue(), bestKnowVehicles.get(i).doubleValue())); - } - return instances; - } - - /** - * Returns a collection of {@link BenchmarkInstance} which are Solomon instances. - *

Note that this assumes that within the folder 'inputFolder' 8 RC1-instances are located with their original name, i.e. RC101.txt,RC102.txt,...,RC108.txt. - *

Note that unlike the original problems, a fixed-cost value of 1000 is set for each employed vehicle. - * - * @param inputFolder where solomon RC1 instances are located. It must end without '/' such as instances/solomon. - * @return a collection of {@link BenchmarkInstance} - */ - public static Collection getAllSolomonRC1(String inputFolder) { - List bestKnown = Arrays.asList(1696.94, 1554.75, 1261.67, 1135.48, 1629.44, 1424.73, 1230.48, 1139.82); - List bestKnowVehicles = Arrays.asList(14.0, 12.0, 11.0, 10.0, 13.0, 11.0, 11.0, 10.0); - Collection instances = new ArrayList(); - for (int i = 0; i < 8; i++) { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - String file = inputFolder + "/RC1" + getInstanceNu(i + 1) + ".txt"; - new SolomonReader(builder).read(file); - VehicleRoutingProblem p = builder.build(); - instances.add(new BenchmarkInstance("RC1" + getInstanceNu(i + 1), p, bestKnown.get(i).doubleValue(), bestKnowVehicles.get(i).doubleValue())); - } - return instances; - } - - /** - * Returns a collection of {@link BenchmarkInstance} which are Solomon instances. - *

Note that this assumes that within the folder 'inputFolder' 8 RC2-instances are located with their original name, i.e. RC201.txt,RC202.txt,...,RC208.txt. - *

Note that unlike the original problems, a fixed-cost value of 1000 is set for each employed vehicle. - * - * @param inputFolder - * @param inputFolder where solomon RC2 instances are located. It must end without '/' such as instances/solomon. - * @return a collection of {@link BenchmarkInstance} - */ - public static Collection getAllSolomonRC2(String inputFolder) { - List bestKnown = Arrays.asList(1406.94, 1365.65, 1049.62, 798.46, 1297.65, 1146.32, 1061.14, 828.14); - List bestKnowVehicles = Arrays.asList(4.0, 3.0, 3.0, 3.0, 4.0, 3.0, 3.0, 3.0); - Collection instances = new ArrayList(); - for (int i = 0; i < 8; i++) { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - String file = inputFolder + "/RC2" + getInstanceNu(i + 1) + ".txt"; - new SolomonReader(builder).read(file); - VehicleRoutingProblem p = builder.build(); - instances.add(new BenchmarkInstance("RC2" + getInstanceNu(i + 1), p, bestKnown.get(i).doubleValue(), bestKnowVehicles.get(i).doubleValue())); - } - return instances; - } -} diff --git a/jsprit-instances/src/test/java/com/graphhopper/jsprit/instance/reader/BelhaizaReaderTest.java b/jsprit-instances/src/test/java/com/graphhopper/jsprit/instance/reader/BelhaizaReaderTest.java deleted file mode 100644 index 39ce8a17a..000000000 --- a/jsprit-instances/src/test/java/com/graphhopper/jsprit/instance/reader/BelhaizaReaderTest.java +++ /dev/null @@ -1,194 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.instance.reader; - -import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; -import com.graphhopper.jsprit.core.algorithm.box.Jsprit; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem.FleetSize; -import com.graphhopper.jsprit.core.problem.job.Service; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.problem.solution.route.activity.TimeWindow; -import com.graphhopper.jsprit.core.problem.vehicle.Vehicle; -import com.graphhopper.jsprit.core.reporting.SolutionPrinter; -import com.graphhopper.jsprit.core.util.Solutions; -import org.junit.Test; - -import java.net.URL; -import java.util.ArrayList; -import java.util.List; - -import static org.junit.Assert.assertEquals; - - -public class BelhaizaReaderTest { - - @Test - public void whenReadingBelhaizaInstance_nuOfCustomersIsCorrect(){ - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new BelhaizaReader(builder).read(getPath()); - VehicleRoutingProblem vrp = builder.build(); - assertEquals(100,vrp.getJobs().values().size()); - } - - private String getPath() { - URL resource = getClass().getClassLoader().getResource("cm101.txt"); - if(resource == null) throw new IllegalStateException("file C101_solomon.txt does not exist"); - return resource.getPath(); - } - - @Test - public void whenReadingBelhaizaInstance_fleetSizeIsInfinite(){ - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new BelhaizaReader(builder).read(getPath()); - VehicleRoutingProblem vrp = builder.build(); - assertEquals(FleetSize.INFINITE,vrp.getFleetSize()); - } - - @Test - public void whenReadingBelhaizaInstance_vehicleCapacitiesAreCorrect(){ - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new BelhaizaReader(builder).read(getPath()); - VehicleRoutingProblem vrp = builder.build(); - for(Vehicle v : vrp.getVehicles()){ - assertEquals(200,v.getType().getCapacityDimensions().get(0)); - } - } - - @Test - public void whenReadingBelhaizaInstance_vehicleLocationsAreCorrect_and_correspondToDepotLocation(){ - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new BelhaizaReader(builder).read(getPath()); - VehicleRoutingProblem vrp = builder.build(); - for(Vehicle v : vrp.getVehicles()){ - assertEquals(40.0,v.getStartLocation().getCoordinate().getX(),0.01); - assertEquals(50.0,v.getStartLocation().getCoordinate().getY(),0.01); - } - } - - @Test - public void whenReadingBelhaizaInstance_demandOfCustomerOneIsCorrect(){ - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new BelhaizaReader(builder).read(getPath()); - VehicleRoutingProblem vrp = builder.build(); - assertEquals(10,vrp.getJobs().get("1").getSize().get(0)); - } - - @Test - public void whenReadingBelhaizaInstance_serviceDurationOfCustomerTwoIsCorrect(){ - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new BelhaizaReader(builder).read(getPath()); - VehicleRoutingProblem vrp = builder.build(); - assertEquals(90,((Service)vrp.getJobs().get("2")).getServiceDuration(),0.1); - } - - @Test - public void noTimeWindowsShouldBeCorrect(){ - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new BelhaizaReader(builder).read(getPath()); - VehicleRoutingProblem vrp = builder.build(); - assertEquals(5,((Service)vrp.getJobs().get("1")).getTimeWindows().size()); - } - - @Test - public void noTimeWindowsShouldBeCorrect2(){ - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new BelhaizaReader(builder).read(getPath()); - VehicleRoutingProblem vrp = builder.build(); - assertEquals(10,((Service)vrp.getJobs().get("2")).getTimeWindows().size()); - } - - @Test - public void firstTimeWindowShouldBeCorrect(){ - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new BelhaizaReader(builder).read(getPath()); - VehicleRoutingProblem vrp = builder.build(); - assertEquals(20.,((Service)vrp.getJobs().get("1")).getTimeWindows().iterator().next().getStart(),0.1); - assertEquals(31.,((Service)vrp.getJobs().get("1")).getTimeWindows().iterator().next().getEnd(),0.1); - } - - @Test - public void secondTimeWindowShouldBeCorrect(){ - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new BelhaizaReader(builder).read(getPath()); - VehicleRoutingProblem vrp = builder.build(); - List timeWindows = new ArrayList(((Service)vrp.getJobs().get("1")).getTimeWindows()); - assertEquals(118.,timeWindows.get(1).getStart(),0.1); - assertEquals(148.,timeWindows.get(1).getEnd(),0.1); - } - - @Test - public void thirdTimeWindowShouldBeCorrect(){ - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new BelhaizaReader(builder).read(getPath()); - VehicleRoutingProblem vrp = builder.build(); - List timeWindows = new ArrayList(((Service)vrp.getJobs().get("1")).getTimeWindows()); - assertEquals(235.,timeWindows.get(2).getStart(),0.1); - assertEquals(258.,timeWindows.get(2).getEnd(),0.1); - } - - @Test - public void fourthTimeWindowShouldBeCorrect(){ - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new BelhaizaReader(builder).read(getPath()); - VehicleRoutingProblem vrp = builder.build(); - List timeWindows = new ArrayList(((Service)vrp.getJobs().get("1")).getTimeWindows()); - assertEquals(343.,timeWindows.get(3).getStart(),0.1); - assertEquals(355.,timeWindows.get(3).getEnd(),0.1); - } - - @Test - public void fifthTimeWindowShouldBeCorrect(){ - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new BelhaizaReader(builder).read(getPath()); - VehicleRoutingProblem vrp = builder.build(); - List timeWindows = new ArrayList(((Service)vrp.getJobs().get("1")).getTimeWindows()); - assertEquals(441.,timeWindows.get(4).getStart(),0.1); - assertEquals(457.,timeWindows.get(4).getEnd(),0.1); - } - - @Test - public void testAlgo(){ - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new BelhaizaReader(builder).read(getPath()); - builder.setFleetSize(FleetSize.FINITE); - VehicleRoutingProblem vrp = builder.build(); - -// VehicleRoutingAlgorithm vra = Jsprit.createAlgorithm(vrp); - -// VehicleRoutingAlgorithm algorithm = new SchrimpfFactory().createAlgorithm(vrp); - - Jsprit.Builder vraBuilder = Jsprit.Builder.newInstance(vrp); - vraBuilder.setProperty(Jsprit.Strategy.CLUSTER_REGRET, "0.25"); - vraBuilder.setProperty(Jsprit.Strategy.RADIAL_REGRET, "0.25"); - vraBuilder.setProperty(Jsprit.Strategy.RANDOM_REGRET, "0."); - vraBuilder.setProperty(Jsprit.Strategy.WORST_REGRET, "0.25"); - vraBuilder.setProperty(Jsprit.Parameter.THRESHOLD_INI, "0.05"); - VehicleRoutingAlgorithm algorithm = vraBuilder.buildAlgorithm(); - algorithm.setMaxIterations(5000); -// VariationCoefficientTermination variation_coefficient = new VariationCoefficientTermination(200, 0.005); -// algorithm.setPrematureAlgorithmTermination(variation_coefficient); -// algorithm.addListener(variation_coefficient); - -// vra.setMaxIterations(5000); - VehicleRoutingProblemSolution solution = Solutions.bestOf(algorithm.searchSolutions()); - - SolutionPrinter.print(vrp,solution, SolutionPrinter.Print.VERBOSE); - } - -} diff --git a/jsprit-instances/src/test/java/com/graphhopper/jsprit/instance/reader/ChristophidesReaderTest.java b/jsprit-instances/src/test/java/com/graphhopper/jsprit/instance/reader/ChristophidesReaderTest.java deleted file mode 100644 index c97ece608..000000000 --- a/jsprit-instances/src/test/java/com/graphhopper/jsprit/instance/reader/ChristophidesReaderTest.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.instance.reader; - -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem.FleetSize; -import com.graphhopper.jsprit.core.problem.job.Service; -import com.graphhopper.jsprit.core.problem.vehicle.Vehicle; -import org.junit.Test; - -import java.net.URL; - -import static org.junit.Assert.assertEquals; - - -public class ChristophidesReaderTest { - - @Test - public void whenReadingInstance_nuOfCustomersIsCorrect() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new ChristofidesReader(builder).read(getPath("vrpnc1.txt")); - VehicleRoutingProblem vrp = builder.build(); - assertEquals(50, vrp.getJobs().values().size()); - } - - private String getPath(String string) { - URL resource = this.getClass().getClassLoader().getResource(string); - if (resource == null) throw new IllegalStateException("resource " + string + " does not exist"); - return resource.getPath(); - } - - @Test - public void whenReadingInstance_fleetSizeIsInfinite() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new ChristofidesReader(builder).read(getPath("vrpnc1.txt")); - VehicleRoutingProblem vrp = builder.build(); - assertEquals(FleetSize.INFINITE, vrp.getFleetSize()); - } - - @Test - public void whenReadingInstance_vehicleCapacitiesAreCorrect() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new ChristofidesReader(builder).read(getPath("vrpnc1.txt")); - VehicleRoutingProblem vrp = builder.build(); - for (Vehicle v : vrp.getVehicles()) { - assertEquals(160, v.getType().getCapacityDimensions().get(0)); - } - } - - @Test - public void whenReadingInstance_vehicleLocationsAreCorrect_and_correspondToDepotLocation() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new ChristofidesReader(builder).read(getPath("vrpnc1.txt")); - VehicleRoutingProblem vrp = builder.build(); - for (Vehicle v : vrp.getVehicles()) { - assertEquals(30.0, v.getStartLocation().getCoordinate().getX(), 0.01); - assertEquals(40.0, v.getStartLocation().getCoordinate().getY(), 0.01); - } - } - - @Test - public void whenReadingInstance_vehicleDurationsAreCorrect() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new ChristofidesReader(builder).read(getPath("vrpnc13.txt")); - VehicleRoutingProblem vrp = builder.build(); - for (Vehicle v : vrp.getVehicles()) { - assertEquals(0.0, v.getEarliestDeparture(), 0.01); - assertEquals(720.0, v.getLatestArrival() - v.getEarliestDeparture(), 0.01); - } - } - - @Test - public void whenReadingInstance_demandOfCustomerOneIsCorrect() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new ChristofidesReader(builder).read(getPath("vrpnc1.txt")); - VehicleRoutingProblem vrp = builder.build(); - assertEquals(7, vrp.getJobs().get("1").getSize().get(0)); - } - - @Test - public void whenReadingInstance_serviceDurationOfCustomerTwoIsCorrect() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new ChristofidesReader(builder).read(getPath("vrpnc13.txt")); - VehicleRoutingProblem vrp = builder.build(); - assertEquals(50.0, ((Service) vrp.getJobs().get("2")).getServiceDuration(), 0.1); - } - - -} diff --git a/jsprit-instances/src/test/java/com/graphhopper/jsprit/instance/reader/CordeauReaderTest.java b/jsprit-instances/src/test/java/com/graphhopper/jsprit/instance/reader/CordeauReaderTest.java deleted file mode 100644 index 98cde30fc..000000000 --- a/jsprit-instances/src/test/java/com/graphhopper/jsprit/instance/reader/CordeauReaderTest.java +++ /dev/null @@ -1,158 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.instance.reader; - -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem.FleetSize; -import com.graphhopper.jsprit.core.problem.job.Service; -import com.graphhopper.jsprit.core.problem.vehicle.Vehicle; -import org.junit.Test; - -import java.net.URL; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - - -public class CordeauReaderTest { - - @Test - public void testCordeauReader() { - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - new CordeauReader(vrpBuilder).read(getPath("p01")); - vrpBuilder.build(); - - } - - private String getPath(String string) { - URL resource = this.getClass().getClassLoader().getResource(string); - if (resource == null) throw new IllegalStateException("resource " + string + " does not exist"); - return resource.getPath(); - } - - @Test - public void whenReadingInstance_fleetSizeIsFinite() { - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - new CordeauReader(vrpBuilder).read(getPath("p01")); - VehicleRoutingProblem vrp = vrpBuilder.build(); - assertEquals(FleetSize.FINITE, vrp.getFleetSize()); - } - - @Test - public void testNuOfVehicles() { - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - new CordeauReader(vrpBuilder).read(getPath("p01")); - VehicleRoutingProblem vrp = vrpBuilder.build(); - - assertEquals(16, vrp.getVehicles().size()); - } - - @Test - public void whenReadingCordeauInstance_vehiclesHaveTheCorrectCapacity() { - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - new CordeauReader(vrpBuilder).read(getPath("p01")); - VehicleRoutingProblem vrp = vrpBuilder.build(); - for (Vehicle v : vrp.getVehicles()) { - assertEquals(80, v.getType().getCapacityDimensions().get(0)); - } - } - - @Test - public void whenReadingCordeauInstance_vehiclesHaveTheCorrectDuration() { - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - new CordeauReader(vrpBuilder).read(getPath("p08")); - VehicleRoutingProblem vrp = vrpBuilder.build(); - for (Vehicle v : vrp.getVehicles()) { - assertEquals(0.0, v.getEarliestDeparture(), 0.1); - assertEquals(310.0, v.getLatestArrival() - v.getEarliestDeparture(), 0.1); - } - } - - @Test - public void whenReadingCustomersCordeauInstance_customerOneShouldHaveCorrectCoordinates() { - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - new CordeauReader(vrpBuilder).read(getPath("p01")); - VehicleRoutingProblem vrp = vrpBuilder.build(); - Service service = (Service) vrp.getJobs().get("1"); - assertEquals(37.0, service.getLocation().getCoordinate().getX(), 0.1); - assertEquals(52.0, service.getLocation().getCoordinate().getY(), 0.1); - } - - @Test - public void whenReadingCustomersCordeauInstance_customerTwoShouldHaveCorrectServiceDuration() { - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - new CordeauReader(vrpBuilder).read(getPath("p01")); - VehicleRoutingProblem vrp = vrpBuilder.build(); - Service service = (Service) vrp.getJobs().get("2"); - assertEquals(0.0, service.getServiceDuration(), 0.1); - } - - @Test - public void whenReadingCustomersCordeauInstance_customerThreeShouldHaveCorrectDemand() { - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - new CordeauReader(vrpBuilder).read(getPath("p01")); - VehicleRoutingProblem vrp = vrpBuilder.build(); - Service service = (Service) vrp.getJobs().get("3"); - assertEquals(16.0, service.getSize().get(0), 0.1); - } - - @Test - public void whenReadingCustomersCordeauInstance_customerFortySevenShouldHaveCorrectDemand() { - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - new CordeauReader(vrpBuilder).read(getPath("p01")); - VehicleRoutingProblem vrp = vrpBuilder.build(); - Service service = (Service) vrp.getJobs().get("47"); - assertEquals(25.0, service.getSize().get(0), 0.1); - } - - @Test - public void testLocationsAndCapOfVehicles() { - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - new CordeauReader(vrpBuilder).read(getPath("p01")); - VehicleRoutingProblem vrp = vrpBuilder.build(); - boolean capacityOk = true; - boolean loc1ok = false; - boolean loc2ok = false; - boolean loc3ok = false; - boolean loc4ok = false; - for (Vehicle v : vrp.getVehicles()) { - if (v.getType().getCapacityDimensions().get(0) != 80) capacityOk = false; - if (v.getStartLocation().getCoordinate().getX() == 20.0 && v.getStartLocation().getCoordinate().getY() == 20.0) - loc1ok = true; - if (v.getStartLocation().getCoordinate().getX() == 30.0 && v.getStartLocation().getCoordinate().getY() == 40.0) - loc2ok = true; - if (v.getStartLocation().getCoordinate().getX() == 50.0 && v.getStartLocation().getCoordinate().getY() == 30.0) - loc3ok = true; - if (v.getStartLocation().getCoordinate().getX() == 60.0 && v.getStartLocation().getCoordinate().getY() == 50.0) - loc4ok = true; - } - assertTrue(capacityOk); - assertTrue(loc1ok); - assertTrue(loc2ok); - assertTrue(loc3ok); - assertTrue(loc4ok); - } - - @Test - public void testNuOfCustomers() { - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - new CordeauReader(vrpBuilder).read(getPath("p01")); - VehicleRoutingProblem vrp = vrpBuilder.build(); - assertEquals(50, vrp.getJobs().values().size()); - } -} diff --git a/jsprit-instances/src/test/java/com/graphhopper/jsprit/instance/reader/FigliozziTest.java b/jsprit-instances/src/test/java/com/graphhopper/jsprit/instance/reader/FigliozziTest.java deleted file mode 100644 index 145076cf9..000000000 --- a/jsprit-instances/src/test/java/com/graphhopper/jsprit/instance/reader/FigliozziTest.java +++ /dev/null @@ -1,478 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.graphhopper.jsprit.instance.reader; - - -import com.graphhopper.jsprit.core.problem.Location; -import com.graphhopper.jsprit.core.util.Coordinate; -import com.graphhopper.jsprit.core.util.Locations; -import junit.framework.Assert; -import org.junit.Before; -import org.junit.Test; - -import java.util.List; - -public class FigliozziTest { - - Locations locations; - - @Before - public void doBefore() { - final Coordinate from = Coordinate.newInstance(0, 0); - final Coordinate to = Coordinate.newInstance(100, 0); - - locations = new Locations() { - - @Override - public Coordinate getCoord(String id) { - if (id.equals("from")) return from; - if (id.equals("to")) return to; - return null; - } - }; - } - - @Test - public void factoryShouldReturnCorrectSpeedDistribution() { - List speedValues = Figliozzi.TimeDependentTransportCostsFactory.createSpeedValues(Figliozzi.TimeDependentTransportCostsFactory.SpeedDistribution.TD1a); - Assert.assertEquals(speedValues.get(0), 1., 0.01); - Assert.assertEquals(speedValues.get(1), 1.6, 0.01); - Assert.assertEquals(speedValues.get(2), 1.05, 0.01); - Assert.assertEquals(5, speedValues.size()); - } - - @Test - public void whenAskingForTD2a_factoryShouldReturnCorrectSpeedDistribution() { - List speedValues = Figliozzi.TimeDependentTransportCostsFactory.createSpeedValues(Figliozzi.TimeDependentTransportCostsFactory.SpeedDistribution.TD2a); - Assert.assertEquals(speedValues.get(0), 1., 0.01); - Assert.assertEquals(speedValues.get(1), 2., 0.01); - Assert.assertEquals(speedValues.get(2), 1.5, 0.01); - Assert.assertEquals(5, speedValues.size()); - } - - @Test - public void whenAskingForTD3a_factoryShouldReturnCorrectSpeedDistribution() { - List speedValues = Figliozzi.TimeDependentTransportCostsFactory.createSpeedValues(Figliozzi.TimeDependentTransportCostsFactory.SpeedDistribution.TD3a); - Assert.assertEquals(speedValues.get(0), 1., 0.01); - Assert.assertEquals(speedValues.get(1), 2.5, 0.01); - Assert.assertEquals(speedValues.get(2), 1.75, 0.01); - Assert.assertEquals(5, speedValues.size()); - } - - @Test - public void whenAskingForTD1b_factoryShouldReturnCorrectSpeedDistribution() { - List speedValues = Figliozzi.TimeDependentTransportCostsFactory.createSpeedValues(Figliozzi.TimeDependentTransportCostsFactory.SpeedDistribution.TD1b); - Assert.assertEquals(speedValues.get(0), 1.6, 0.01); - Assert.assertEquals(speedValues.get(1), 1., 0.01); - Assert.assertEquals(speedValues.get(2), 1.05, 0.01); - Assert.assertEquals(speedValues.get(3), 1., 0.01); - Assert.assertEquals(speedValues.get(4), 1.6, 0.01); - Assert.assertEquals(5, speedValues.size()); - } - - @Test - public void whenAskingForTD2b_factoryShouldReturnCorrectSpeedDistribution() { - List speedValues = Figliozzi.TimeDependentTransportCostsFactory.createSpeedValues(Figliozzi.TimeDependentTransportCostsFactory.SpeedDistribution.TD2b); - Assert.assertEquals(speedValues.get(0), 2., 0.01); - Assert.assertEquals(speedValues.get(1), 1., 0.01); - Assert.assertEquals(speedValues.get(2), 1.5, 0.01); - Assert.assertEquals(speedValues.get(3), 1., 0.01); - Assert.assertEquals(speedValues.get(4), 2., 0.01); - Assert.assertEquals(5, speedValues.size()); - } - - @Test - public void whenAskingForTD3b_factoryShouldReturnCorrectSpeedDistribution() { - List speedValues = Figliozzi.TimeDependentTransportCostsFactory.createSpeedValues(Figliozzi.TimeDependentTransportCostsFactory.SpeedDistribution.TD3b); - Assert.assertEquals(speedValues.get(0), 2.5, 0.01); - Assert.assertEquals(speedValues.get(1), 1., 0.01); - Assert.assertEquals(speedValues.get(2), 1.75, 0.01); - Assert.assertEquals(speedValues.get(3), 1., 0.01); - Assert.assertEquals(speedValues.get(4), 2.5, 0.01); - Assert.assertEquals(5, speedValues.size()); - } - - @Test - public void whenAskingForTD1c_factoryShouldReturnCorrectSpeedDistribution() { - List speedValues = Figliozzi.TimeDependentTransportCostsFactory.createSpeedValues(Figliozzi.TimeDependentTransportCostsFactory.SpeedDistribution.TD1c); - Assert.assertEquals(speedValues.get(0), 1.6, 0.01); - Assert.assertEquals(speedValues.get(1), 1.6, 0.01); - Assert.assertEquals(speedValues.get(2), 1.05, 0.01); - Assert.assertEquals(speedValues.get(3), 1., 0.01); - Assert.assertEquals(speedValues.get(4), 1., 0.01); - Assert.assertEquals(5, speedValues.size()); - } - - @Test - public void whenAskingForTD2c_factoryShouldReturnCorrectSpeedDistribution() { - List speedValues = Figliozzi.TimeDependentTransportCostsFactory.createSpeedValues(Figliozzi.TimeDependentTransportCostsFactory.SpeedDistribution.TD2c); - Assert.assertEquals(speedValues.get(0), 2., 0.01); - Assert.assertEquals(speedValues.get(1), 2., 0.01); - Assert.assertEquals(speedValues.get(2), 1.5, 0.01); - Assert.assertEquals(speedValues.get(3), 1., 0.01); - Assert.assertEquals(speedValues.get(4), 1., 0.01); - Assert.assertEquals(5, speedValues.size()); - } - - @Test - public void whenAskingForTD3c_factoryShouldReturnCorrectSpeedDistribution() { - List speedValues = Figliozzi.TimeDependentTransportCostsFactory.createSpeedValues(Figliozzi.TimeDependentTransportCostsFactory.SpeedDistribution.TD3c); - Assert.assertEquals(speedValues.get(0), 2.5, 0.01); - Assert.assertEquals(speedValues.get(1), 2.5, 0.01); - Assert.assertEquals(speedValues.get(2), 1.75, 0.01); - Assert.assertEquals(speedValues.get(3), 1., 0.01); - Assert.assertEquals(speedValues.get(4), 1., 0.01); - Assert.assertEquals(5, speedValues.size()); - } - - @Test - public void whenAskingForTD1d_factoryShouldReturnCorrectSpeedDistribution() { - List speedValues = Figliozzi.TimeDependentTransportCostsFactory.createSpeedValues(Figliozzi.TimeDependentTransportCostsFactory.SpeedDistribution.TD1d); - Assert.assertEquals(speedValues.get(0), 1., 0.01); - Assert.assertEquals(speedValues.get(1), 1., 0.01); - Assert.assertEquals(speedValues.get(2), 1.05, 0.01); - Assert.assertEquals(speedValues.get(3), 1.6, 0.01); - Assert.assertEquals(speedValues.get(4), 1.6, 0.01); - Assert.assertEquals(5, speedValues.size()); - } - - @Test - public void whenAskingForTD2d_factoryShouldReturnCorrectSpeedDistribution() { - List speedValues = Figliozzi.TimeDependentTransportCostsFactory.createSpeedValues(Figliozzi.TimeDependentTransportCostsFactory.SpeedDistribution.TD2d); - Assert.assertEquals(speedValues.get(0), 1., 0.01); - Assert.assertEquals(speedValues.get(1), 1., 0.01); - Assert.assertEquals(speedValues.get(2), 1.5, 0.01); - Assert.assertEquals(speedValues.get(3), 2., 0.01); - Assert.assertEquals(speedValues.get(4), 2., 0.01); - Assert.assertEquals(5, speedValues.size()); - } - - @Test - public void whenAskingForTD3d_factoryShouldReturnCorrectSpeedDistribution() { - List speedValues = Figliozzi.TimeDependentTransportCostsFactory.createSpeedValues(Figliozzi.TimeDependentTransportCostsFactory.SpeedDistribution.TD3d); - Assert.assertEquals(speedValues.get(0), 1., 0.01); - Assert.assertEquals(speedValues.get(1), 1., 0.01); - Assert.assertEquals(speedValues.get(2), 1.75, 0.01); - Assert.assertEquals(speedValues.get(3), 2.5, 0.01); - Assert.assertEquals(speedValues.get(4), 2.5, 0.01); - Assert.assertEquals(5, speedValues.size()); - } - - @Test - public void whenConstantTimeDistribution_forwardTimeShouldBeCalculate100() { - Figliozzi.TDCosts tdCosts = Figliozzi.TimeDependentTransportCostsFactory.createCosts(locations, Figliozzi.TimeDependentTransportCostsFactory.SpeedDistribution.CLASSIC, 100); - Assert.assertEquals(100., tdCosts.getTransportTime(loc("from"), loc("to"), 0., null, null), 0.01); - } - - private Location loc(String from) { - return Location.Builder.newInstance().setId(from).build(); - } - - @Test - public void whenTimeDistributionTD1a_forwardTimeShouldBeCalculate100() { - Figliozzi.TDCosts tdCosts = Figliozzi.TimeDependentTransportCostsFactory.createCosts(locations, Figliozzi.TimeDependentTransportCostsFactory.SpeedDistribution.TD1a, 100); - /* - 100 - (0,20) - 1. --> 20 - (20,40) 1.6 = s/t --> t = s / 1.6 = 20 * 1.6 = 32 : 52 --> 40 - (40,60) 1.05 = 21 : 73 --> 60 - (60,80) 1.6 = 20 * 1.6 = 32 --> 27 / 1.6 = 16.875 + 73 = -- 16.875 - - 20 - - */ - Assert.assertEquals(76.875, tdCosts.getTransportTime(loc("from"), loc("to"), 0., null, null), 0.01); - } - - @Test - public void whenTimeDistributionTD2a_forwardTimeShouldBeCalculate100() { - //(1.,2.,1.5,2.,1.) - Figliozzi.TDCosts tdCosts = Figliozzi.TimeDependentTransportCostsFactory.createCosts(locations, Figliozzi.TimeDependentTransportCostsFactory.SpeedDistribution.TD2a, 100); - /* - 100 - (0,20) - 1. --> 20 dist, 20 time - (20,40) 2. = 20 --> 40 dist, 20 time : 60 dist, 40 time - (40,60) 1.5 = 30 dist, 20 time : 90 dist, 60 time - (60,80) 2. = 10 dist, 5 time : 100 dist, 65 time - - 20 - - */ - Assert.assertEquals(65., tdCosts.getTransportTime(loc("from"), loc("to"), 0., null, null), 0.01); - } - - @Test - public void whenTimeDistributionTD3a_forwardTimeShouldBeCalculate100() { - //(1.,2.5,1.75,2.5,1.) - Figliozzi.TDCosts tdCosts = Figliozzi.TimeDependentTransportCostsFactory.createCosts(locations, Figliozzi.TimeDependentTransportCostsFactory.SpeedDistribution.TD3a, 100); - /* - 100 - (0,20) - 1. --> 20 dist, 20 time - (20,40) 2.5 = 20 --> 50 dist, 20 time : 70 dist, 40 time - (40,60) 1.75 = 30 dist, 17.1428571429 time : 100 dist, 57.1428571429 time - */ - Assert.assertEquals(57.1428571429, tdCosts.getTransportTime(loc("from"), loc("to"), 0., null, null), 0.01); - } - - @Test - public void whenTimeDistributionTD2a_backwardTimeShouldBeCalculate100() { - //(1.,2.,1.5,2.,1.) - Figliozzi.TDCosts tdCosts = Figliozzi.TimeDependentTransportCostsFactory.createCosts(locations, Figliozzi.TimeDependentTransportCostsFactory.SpeedDistribution.TD2a, 100); - /* - 100 - (0,20) - 1. --> 20 dist, 20 time - (20,40) 2. = 20 --> 40 dist, 20 time : 60 dist, 40 time - (40,60) 1.5 = 30 dist, 20 time : 90 dist, 60 time - (60,80) 2. = 10 dist, 5 time : 100 dist, 65 time - - 20 - - */ - Assert.assertEquals(65., tdCosts.getBackwardTransportTime(loc("from"), loc("to"), 100., null, null), 0.01); - } - - @Test - public void whenTimeDistributionTD1a_backwardTimeShouldBeCalculate100() { - Figliozzi.TDCosts tdCosts = Figliozzi.TimeDependentTransportCostsFactory.createCosts(locations, Figliozzi.TimeDependentTransportCostsFactory.SpeedDistribution.TD1a, 100); - /* - 100 - (0,20) - 1. --> 20 - (20,40) 1.6 = s/t --> t = s / 1.6 = 20 * 1.6 = 32 : 52 --> 40 - (40,60) 1.05 = 21 : 73 --> 60 - (60,80) 1.6 = 20 * 1.6 = 32 --> 27 / 1.6 = 16.875 + 73 = -- 16.875 - - 20 - - */ - Assert.assertEquals(76.875, tdCosts.getBackwardTransportTime(loc("from"), loc("to"), 100., null, null), 0.01); - } - - @Test - public void backwardTimeShouldBeCalculatedCorrectly() { - Figliozzi.TDCosts tdCosts = Figliozzi.TimeDependentTransportCostsFactory.createCosts(locations, Figliozzi.TimeDependentTransportCostsFactory.SpeedDistribution.CLASSIC, 100); - Assert.assertEquals(100., tdCosts.getBackwardTransportTime(loc("from"), loc("to"), 100., null, null), 0.01); - } - - @Test - public void whenTD1a_distanceShouldBe25PercentMore() { - Locations locations = new Locations() { - - @Override - public Coordinate getCoord(String id) { - if (id.equals("from")) return Coordinate.newInstance(0, 0); - if (id.equals("to")) return Coordinate.newInstance(125., 0); - return null; - } - - }; - Figliozzi.TDCosts tdCosts = Figliozzi.TimeDependentTransportCostsFactory.createCosts(locations, Figliozzi.TimeDependentTransportCostsFactory.SpeedDistribution.TD1a, 100); - double time = tdCosts.getTransportTime(loc("from"), loc("to"), 0., null, null); - Assert.assertEquals(100., time, 0.01); - } - - @Test - public void whenTD1b_distanceShouldBe25PercentMore() { - Locations locations = new Locations() { - - @Override - public Coordinate getCoord(String id) { - if (id.equals("from")) return Coordinate.newInstance(0, 0); - if (id.equals("to")) return Coordinate.newInstance(125., 0); - return null; - } - - }; - Figliozzi.TDCosts tdCosts = Figliozzi.TimeDependentTransportCostsFactory.createCosts(locations, Figliozzi.TimeDependentTransportCostsFactory.SpeedDistribution.TD1b, 100); - double time = tdCosts.getTransportTime(loc("from"), loc("to"), 0., null, null); - Assert.assertEquals(100., time, 0.01); - } - - @Test - public void whenTD1c_distanceShouldBe25PercentMore() { - Locations locations = new Locations() { - - @Override - public Coordinate getCoord(String id) { - if (id.equals("from")) return Coordinate.newInstance(0, 0); - if (id.equals("to")) return Coordinate.newInstance(125., 0); - return null; - } - - }; - Figliozzi.TDCosts tdCosts = Figliozzi.TimeDependentTransportCostsFactory.createCosts(locations, Figliozzi.TimeDependentTransportCostsFactory.SpeedDistribution.TD1c, 100); - double time = tdCosts.getTransportTime(loc("from"), loc("to"), 0., null, null); - Assert.assertEquals(100., time, 0.01); - } - - @Test - public void whenTD1d_distanceShouldBe25PercentMore() { - Locations locations = new Locations() { - - @Override - public Coordinate getCoord(String id) { - if (id.equals("from")) return Coordinate.newInstance(0, 0); - if (id.equals("to")) return Coordinate.newInstance(125., 0); - return null; - } - - }; - Figliozzi.TDCosts tdCosts = Figliozzi.TimeDependentTransportCostsFactory.createCosts(locations, Figliozzi.TimeDependentTransportCostsFactory.SpeedDistribution.TD1d, 100); - double time = tdCosts.getTransportTime(loc("from"), loc("to"), 0., null, null); - Assert.assertEquals(100., time, 0.01); - } - - @Test - public void whenTD2a_distanceShouldBe50PercentMore() { - Locations locations = new Locations() { - - @Override - public Coordinate getCoord(String id) { - if (id.equals("from")) return Coordinate.newInstance(0, 0); - if (id.equals("to")) return Coordinate.newInstance(150., 0); - return null; - } - - }; - Figliozzi.TDCosts tdCosts = Figliozzi.TimeDependentTransportCostsFactory.createCosts(locations, Figliozzi.TimeDependentTransportCostsFactory.SpeedDistribution.TD2a, 100); - double time = tdCosts.getTransportTime(loc("from"), loc("to"), 0., null, null); - Assert.assertEquals(100., time, 0.01); - } - - @Test - public void whenTD2b_distanceShouldBe50PercentMore() { - Locations locations = new Locations() { - - @Override - public Coordinate getCoord(String id) { - if (id.equals("from")) return Coordinate.newInstance(0, 0); - if (id.equals("to")) return Coordinate.newInstance(150., 0); - return null; - } - - }; - Figliozzi.TDCosts tdCosts = Figliozzi.TimeDependentTransportCostsFactory.createCosts(locations, Figliozzi.TimeDependentTransportCostsFactory.SpeedDistribution.TD2b, 100); - double time = tdCosts.getTransportTime(loc("from"), loc("to"), 0., null, null); - Assert.assertEquals(100., time, 0.01); - } - - @Test - public void whenTD2c_distanceShouldBe50PercentMore() { - Locations locations = new Locations() { - - @Override - public Coordinate getCoord(String id) { - if (id.equals("from")) return Coordinate.newInstance(0, 0); - if (id.equals("to")) return Coordinate.newInstance(150., 0); - return null; - } - - }; - Figliozzi.TDCosts tdCosts = Figliozzi.TimeDependentTransportCostsFactory.createCosts(locations, Figliozzi.TimeDependentTransportCostsFactory.SpeedDistribution.TD2c, 100); - double time = tdCosts.getTransportTime(loc("from"), loc("to"), 0., null, null); - Assert.assertEquals(100., time, 0.01); - } - - @Test - public void whenTD2d_distanceShouldBe50PercentMore() { - Locations locations = new Locations() { - - @Override - public Coordinate getCoord(String id) { - if (id.equals("from")) return Coordinate.newInstance(0, 0); - if (id.equals("to")) return Coordinate.newInstance(150., 0); - return null; - } - - }; - Figliozzi.TDCosts tdCosts = Figliozzi.TimeDependentTransportCostsFactory.createCosts(locations, Figliozzi.TimeDependentTransportCostsFactory.SpeedDistribution.TD2d, 100); - double time = tdCosts.getTransportTime(loc("from"), loc("to"), 0., null, null); - Assert.assertEquals(100., time, 0.01); - } - - @Test - public void whenTD3a_distanceShouldBe75PercentMore() { - Locations locations = new Locations() { - - @Override - public Coordinate getCoord(String id) { - if (id.equals("from")) return Coordinate.newInstance(0, 0); - if (id.equals("to")) return Coordinate.newInstance(175., 0); - return null; - } - - }; - Figliozzi.TDCosts tdCosts = Figliozzi.TimeDependentTransportCostsFactory.createCosts(locations, Figliozzi.TimeDependentTransportCostsFactory.SpeedDistribution.TD3a, 100); - double time = tdCosts.getTransportTime(loc("from"), loc("to"), 0., null, null); - Assert.assertEquals(100., time, 0.01); - } - - @Test - public void whenTD3b_distanceShouldBe75PercentMore() { - Locations locations = new Locations() { - - @Override - public Coordinate getCoord(String id) { - if (id.equals("from")) return Coordinate.newInstance(0, 0); - if (id.equals("to")) return Coordinate.newInstance(175., 0); - return null; - } - - }; - Figliozzi.TDCosts tdCosts = Figliozzi.TimeDependentTransportCostsFactory.createCosts(locations, Figliozzi.TimeDependentTransportCostsFactory.SpeedDistribution.TD3b, 100); - double time = tdCosts.getTransportTime(loc("from"), loc("to"), 0., null, null); - Assert.assertEquals(100., time, 0.01); - } - - @Test - public void whenTD3c_distanceShouldBe75PercentMore() { - Locations locations = new Locations() { - - @Override - public Coordinate getCoord(String id) { - if (id.equals("from")) return Coordinate.newInstance(0, 0); - if (id.equals("to")) return Coordinate.newInstance(175., 0); - return null; - } - - }; - Figliozzi.TDCosts tdCosts = Figliozzi.TimeDependentTransportCostsFactory.createCosts(locations, Figliozzi.TimeDependentTransportCostsFactory.SpeedDistribution.TD3c, 100); - double time = tdCosts.getTransportTime(loc("from"), loc("to"), 0., null, null); - Assert.assertEquals(100., time, 0.01); - } - - @Test - public void whenTD3d_distanceShouldBe75PercentMore() { - Locations locations = new Locations() { - - @Override - public Coordinate getCoord(String id) { - if (id.equals("from")) return Coordinate.newInstance(0, 0); - if (id.equals("to")) return Coordinate.newInstance(175., 0); - return null; - } - - }; - Figliozzi.TDCosts tdCosts = Figliozzi.TimeDependentTransportCostsFactory.createCosts(locations, Figliozzi.TimeDependentTransportCostsFactory.SpeedDistribution.TD3d, 100); - double time = tdCosts.getTransportTime(loc("from"), loc("to"), 0., null, null); - Assert.assertEquals(100., time, 0.01); - } -} - - - diff --git a/jsprit-instances/src/test/java/com/graphhopper/jsprit/instance/reader/GoldenReaderTest.java b/jsprit-instances/src/test/java/com/graphhopper/jsprit/instance/reader/GoldenReaderTest.java deleted file mode 100644 index a78ec5331..000000000 --- a/jsprit-instances/src/test/java/com/graphhopper/jsprit/instance/reader/GoldenReaderTest.java +++ /dev/null @@ -1,326 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.graphhopper.jsprit.instance.reader; - -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.job.Job; -import com.graphhopper.jsprit.core.problem.job.Service; -import com.graphhopper.jsprit.core.problem.vehicle.Vehicle; -import com.graphhopper.jsprit.core.util.Coordinate; -import com.graphhopper.jsprit.instance.reader.VrphGoldenReader.VrphType; -import org.junit.Test; - -import java.net.URL; - -import static org.junit.Assert.*; - -public class GoldenReaderTest { - - @Test - public void whenReadingInstance_itShouldReadCorrectNuOfVehicles() { - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrphGoldenReader(vrpBuilder, VrphType.HVRPD) - .read(getPath("cn_13mix.txt")); - VehicleRoutingProblem vrp = vrpBuilder.build(); - assertEquals(17, vrp.getVehicles().size()); - } - - private String getPath(String string) { - URL resource = this.getClass().getClassLoader().getResource(string); - if (resource == null) throw new IllegalStateException("resource " + string + " does not exist"); - return resource.getPath(); - } - - @Test - public void whenReadingInstance_itShouldReadCorrectNuOfType1Vehicles() { - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrphGoldenReader(vrpBuilder, VrphType.HVRPD) - .read(getPath("cn_13mix.txt")); - VehicleRoutingProblem vrp = vrpBuilder.build(); - int nuOfType1Vehicles = 0; - for (Vehicle v : vrp.getVehicles()) { - if (v.getType().getTypeId().equals("type_1")) { - nuOfType1Vehicles++; - } - } - assertEquals(4, nuOfType1Vehicles); - } - - @Test - public void whenReadingInstance_theSumOfType1VehicleShouldHvTheCorrectCapacity() { - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrphGoldenReader(vrpBuilder, VrphType.HVRPD) - .read(getPath("cn_13mix.txt")); - VehicleRoutingProblem vrp = vrpBuilder.build(); - int sumOfType1Cap = 0; - for (Vehicle v : vrp.getVehicles()) { - if (v.getType().getTypeId().equals("type_1")) { - sumOfType1Cap += v.getType().getCapacityDimensions().get(0); - } - } - assertEquals(80, sumOfType1Cap); - } - - @Test - public void whenReadingInstance_itShouldReadCorrectNuOfType2Vehicles() { - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrphGoldenReader(vrpBuilder, VrphType.HVRPD) - .read(getPath("cn_13mix.txt")); - VehicleRoutingProblem vrp = vrpBuilder.build(); - int nuOfType1Vehicles = 0; - for (Vehicle v : vrp.getVehicles()) { - if (v.getType().getTypeId().equals("type_2")) { - nuOfType1Vehicles++; - } - } - assertEquals(2, nuOfType1Vehicles); - } - - @Test - public void whenReadingInstance_theSumOfType2VehicleShouldHvTheCorrectCapacity() { - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrphGoldenReader(vrpBuilder, VrphType.HVRPD) - .read(getPath("cn_13mix.txt")); - VehicleRoutingProblem vrp = vrpBuilder.build(); - int sumOfType1Cap = 0; - for (Vehicle v : vrp.getVehicles()) { - if (v.getType().getTypeId().equals("type_2")) { - sumOfType1Cap += v.getType().getCapacityDimensions().get(0); - } - } - assertEquals(60, sumOfType1Cap); - } - - @Test - public void whenReadingInstance_itShouldReadCorrectNuOfType3Vehicles() { - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrphGoldenReader(vrpBuilder, VrphType.HVRPD) - .read(getPath("cn_13mix.txt")); - VehicleRoutingProblem vrp = vrpBuilder.build(); - int nuOfType1Vehicles = 0; - for (Vehicle v : vrp.getVehicles()) { - if (v.getType().getTypeId().equals("type_3")) { - nuOfType1Vehicles++; - } - } - assertEquals(4, nuOfType1Vehicles); - } - - @Test - public void whenReadingInstance_theSumOfType3VehicleShouldHvTheCorrectCapacity() { - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrphGoldenReader(vrpBuilder, VrphType.HVRPD) - .read(getPath("cn_13mix.txt")); - VehicleRoutingProblem vrp = vrpBuilder.build(); - int sumOfType1Cap = 0; - for (Vehicle v : vrp.getVehicles()) { - if (v.getType().getTypeId().equals("type_3")) { - sumOfType1Cap += v.getType().getCapacityDimensions().get(0); - } - } - assertEquals(160, sumOfType1Cap); - } - - @Test - public void whenReadingInstance_itShouldReadCorrectNuOfType4Vehicles() { - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrphGoldenReader(vrpBuilder, VrphType.HVRPD) - .read(getPath("cn_13mix.txt")); - VehicleRoutingProblem vrp = vrpBuilder.build(); - int nuOfType1Vehicles = 0; - for (Vehicle v : vrp.getVehicles()) { - if (v.getType().getTypeId().equals("type_4")) { - nuOfType1Vehicles++; - } - } - assertEquals(4, nuOfType1Vehicles); - } - - @Test - public void whenReadingInstance_theSumOfType4VehicleShouldHvTheCorrectCapacity() { - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrphGoldenReader(vrpBuilder, VrphType.HVRPD) - .read(getPath("cn_13mix.txt")); - VehicleRoutingProblem vrp = vrpBuilder.build(); - int sumOfType1Cap = 0; - for (Vehicle v : vrp.getVehicles()) { - if (v.getType().getTypeId().equals("type_4")) { - sumOfType1Cap += v.getType().getCapacityDimensions().get(0); - } - } - assertEquals(280, sumOfType1Cap); - } - - @Test - public void whenReadingInstance_itShouldReadCorrectNuOfType5Vehicles() { - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrphGoldenReader(vrpBuilder, VrphType.HVRPD) - .read(getPath("cn_13mix.txt")); - VehicleRoutingProblem vrp = vrpBuilder.build(); - int nuOfType1Vehicles = 0; - for (Vehicle v : vrp.getVehicles()) { - if (v.getType().getTypeId().equals("type_5")) { - nuOfType1Vehicles++; - } - } - assertEquals(2, nuOfType1Vehicles); - } - - @Test - public void whenReadingInstance_theSumOfType5VehicleShouldHvTheCorrectCapacity() { - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrphGoldenReader(vrpBuilder, VrphType.HVRPD) - .read(getPath("cn_13mix.txt")); - VehicleRoutingProblem vrp = vrpBuilder.build(); - int sumOfType1Cap = 0; - for (Vehicle v : vrp.getVehicles()) { - if (v.getType().getTypeId().equals("type_5")) { - sumOfType1Cap += v.getType().getCapacityDimensions().get(0); - } - } - assertEquals(240, sumOfType1Cap); - } - - @Test - public void whenReadingInstance_itShouldReadCorrectNuOfType6Vehicles() { - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrphGoldenReader(vrpBuilder, VrphType.HVRPD) - .read(getPath("cn_13mix.txt")); - VehicleRoutingProblem vrp = vrpBuilder.build(); - int nuOfType1Vehicles = 0; - for (Vehicle v : vrp.getVehicles()) { - if (v.getType().getTypeId().equals("type_6")) { - nuOfType1Vehicles++; - } - } - assertEquals(1, nuOfType1Vehicles); - } - - @Test - public void whenReadingInstance_theSumOfType6VehicleShouldHvTheCorrectCapacity() { - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrphGoldenReader(vrpBuilder, VrphType.HVRPD) - .read(getPath("cn_13mix.txt")); - VehicleRoutingProblem vrp = vrpBuilder.build(); - int sumOfType1Cap = 0; - for (Vehicle v : vrp.getVehicles()) { - if (v.getType().getTypeId().equals("type_6")) { - sumOfType1Cap += v.getType().getCapacityDimensions().get(0); - } - } - assertEquals(200, sumOfType1Cap); - } - - @Test - public void whenReadingInstance_vehicleShouldHvTheCorrectCoord() { - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrphGoldenReader(vrpBuilder, VrphType.HVRPD) - .read(getPath("cn_13mix.txt")); - VehicleRoutingProblem vrp = vrpBuilder.build(); - for (Vehicle v : vrp.getVehicles()) { - if (v.getStartLocation().getCoordinate().getX() != 40.0) { - assertFalse(true); - } - if (v.getStartLocation().getCoordinate().getY() != 40.0) { - assertFalse(true); - } - } - assertTrue(true); - } - - @Test - public void whenReadingInstance_service1MustHaveCorrectDemand() { - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrphGoldenReader(vrpBuilder, VrphType.HVRPD) - .read(getPath("cn_13mix.txt")); - VehicleRoutingProblem vrp = vrpBuilder.build(); - Job job = getJob("1", vrp); - assertEquals(18, job.getSize().get(0)); - } - - @Test - public void whenReadingInstance_service1MustHaveCorrectCoordinate() { - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrphGoldenReader(vrpBuilder, VrphType.HVRPD) - .read(getPath("cn_13mix.txt")); - VehicleRoutingProblem vrp = vrpBuilder.build(); - Coordinate coord = getCoord("1", vrp); - assertEquals(22.0, coord.getX(), 0.01); - assertEquals(22.0, coord.getY(), 0.01); - } - - @Test - public void whenReadingInstance_service15MustHaveCorrectCoordinate() { - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrphGoldenReader(vrpBuilder, VrphType.HVRPD) - .read(getPath("cn_13mix.txt")); - VehicleRoutingProblem vrp = vrpBuilder.build(); - Coordinate coord = getCoord("15", vrp); - assertEquals(62.0, coord.getX(), 0.01); - assertEquals(24.0, coord.getY(), 0.01); - } - - - @Test - public void whenReadingInstance_service50MustHaveCorrectCoordinate() { - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrphGoldenReader(vrpBuilder, VrphType.HVRPD) - .read(getPath("cn_13mix.txt")); - VehicleRoutingProblem vrp = vrpBuilder.build(); - Coordinate coord = getCoord("50", vrp); - assertEquals(15.0, coord.getX(), 0.01); - assertEquals(56.0, coord.getY(), 0.01); - } - - private Coordinate getCoord(String string, VehicleRoutingProblem vrp) { - Job j = getJob(string, vrp); - return ((Service) j).getLocation().getCoordinate(); - } - - @Test - public void whenReadingInstance_service4MustHaveCorrectDemand() { - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrphGoldenReader(vrpBuilder, VrphType.HVRPD) - .read(getPath("cn_13mix.txt")); - VehicleRoutingProblem vrp = vrpBuilder.build(); - Job job = getJob("4", vrp); - assertEquals(30, job.getSize().get(0)); - } - - @Test - public void whenReadingInstance_service50MustHaveCorrectDemand() { - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrphGoldenReader(vrpBuilder, VrphType.HVRPD) - .read(getPath("cn_13mix.txt")); - VehicleRoutingProblem vrp = vrpBuilder.build(); - Job job = getJob("50", vrp); - assertEquals(22, job.getSize().get(0)); - } - - private Job getJob(String string, VehicleRoutingProblem vrp) { - for (Job j : vrp.getJobs().values()) { - if (j.getId().equals(string)) { - return j; - } - } - return null; - } - - -} diff --git a/jsprit-instances/src/test/java/com/graphhopper/jsprit/instance/reader/LuiShenReaderTest.java b/jsprit-instances/src/test/java/com/graphhopper/jsprit/instance/reader/LuiShenReaderTest.java deleted file mode 100644 index 1180bedaa..000000000 --- a/jsprit-instances/src/test/java/com/graphhopper/jsprit/instance/reader/LuiShenReaderTest.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.instance.reader; - -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem.FleetSize; -import org.junit.Before; -import org.junit.Test; - -import static org.junit.Assert.assertEquals; - - -public class LuiShenReaderTest { - - VehicleRoutingProblem vrp; - - - @Before - public void doBefore() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new LuiShenReader(builder).read(this.getClass().getClassLoader().getResource("C101_solomon.txt").getPath(), - this.getClass().getClassLoader().getResource("C1_LuiShenVehicles.txt").getPath(), "a"); - vrp = builder.build(); - } - - @Test - public void testFleetSize() { - assertEquals(FleetSize.INFINITE, vrp.getFleetSize()); - } - - - @Test - public void testNuOfTypes() { - assertEquals(3, vrp.getTypes().size()); - } - - @Test - public void testNuOfRepresentativeVehicles() { - assertEquals(3, vrp.getVehicles().size()); - } - - @Test - public void testNuOfJobs() { - assertEquals(100, vrp.getJobs().values().size()); - } -} diff --git a/jsprit-instances/src/test/java/com/graphhopper/jsprit/instance/reader/SolomonReaderTest.java b/jsprit-instances/src/test/java/com/graphhopper/jsprit/instance/reader/SolomonReaderTest.java deleted file mode 100644 index 3f09b91da..000000000 --- a/jsprit-instances/src/test/java/com/graphhopper/jsprit/instance/reader/SolomonReaderTest.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.instance.reader; - -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem.FleetSize; -import com.graphhopper.jsprit.core.problem.job.Service; -import com.graphhopper.jsprit.core.problem.vehicle.Vehicle; -import org.junit.Test; - -import java.net.URL; - -import static org.junit.Assert.assertEquals; - - -public class SolomonReaderTest { - - @Test - public void whenReadingSolomonInstance_nuOfCustomersIsCorrect() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new SolomonReader(builder).read(getPath()); - VehicleRoutingProblem vrp = builder.build(); - assertEquals(100, vrp.getJobs().values().size()); - } - - private String getPath() { - URL resource = getClass().getClassLoader().getResource("C101_solomon.txt"); - if (resource == null) throw new IllegalStateException("file C101_solomon.txt does not exist"); - return resource.getPath(); - } - - @Test - public void whenReadingSolomonInstance_fleetSizeIsInfinite() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new SolomonReader(builder).read(getPath()); - VehicleRoutingProblem vrp = builder.build(); - assertEquals(FleetSize.INFINITE, vrp.getFleetSize()); - } - - @Test - public void whenReadingSolomonInstance_vehicleCapacitiesAreCorrect() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new SolomonReader(builder).read(getPath()); - VehicleRoutingProblem vrp = builder.build(); - for (Vehicle v : vrp.getVehicles()) { - assertEquals(200, v.getType().getCapacityDimensions().get(0)); - } - } - - @Test - public void whenReadingSolomonInstance_vehicleLocationsAreCorrect_and_correspondToDepotLocation() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new SolomonReader(builder).read(getPath()); - VehicleRoutingProblem vrp = builder.build(); - for (Vehicle v : vrp.getVehicles()) { - assertEquals(40.0, v.getStartLocation().getCoordinate().getX(), 0.01); - assertEquals(50.0, v.getStartLocation().getCoordinate().getY(), 0.01); - } - } - - @Test - public void whenReadingSolomonInstance_demandOfCustomerOneIsCorrect() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new SolomonReader(builder).read(getPath()); - VehicleRoutingProblem vrp = builder.build(); - assertEquals(10, vrp.getJobs().get("1").getSize().get(0)); - } - - @Test - public void whenReadingSolomonInstance_serviceDurationOfCustomerTwoIsCorrect() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new SolomonReader(builder).read(getPath()); - VehicleRoutingProblem vrp = builder.build(); - assertEquals(90, ((Service) vrp.getJobs().get("2")).getServiceDuration(), 0.1); - } - - @Test - public void whenReadingSolomonInstance_earliestServiceStartTimeOfCustomerSixtyTwoIsCorrect() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new SolomonReader(builder).read(getPath()); - VehicleRoutingProblem vrp = builder.build(); - assertEquals(262.0, ((Service) vrp.getJobs().get("62")).getTimeWindow().getStart(), 0.1); - } - - @Test - public void whenReadingSolomonInstance_latestServiceStartTimeOfCustomerEightySevenIsCorrect() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new SolomonReader(builder).read(getPath()); - VehicleRoutingProblem vrp = builder.build(); - assertEquals(144.0, ((Service) vrp.getJobs().get("87")).getTimeWindow().getEnd(), 0.1); - } - - -} diff --git a/jsprit-instances/src/test/resources/C101_solomon.txt b/jsprit-instances/src/test/resources/C101_solomon.txt deleted file mode 100644 index d7e6819e0..000000000 --- a/jsprit-instances/src/test/resources/C101_solomon.txt +++ /dev/null @@ -1,112 +0,0 @@ -C101 - -VEHICLE -NUMBER CAPACITY - 25 200 - -CUSTOMER -CUST NO. XCOORD. YCOORD. DEMAND READY TIME DUE DATE SERVICE TIME - - 0 40 50 0 0 1236 0 - 1 45 68 10 912 967 90 - 2 45 70 30 825 870 90 - 3 42 66 10 65 146 90 - 4 42 68 10 727 782 90 - 5 42 65 10 15 67 90 - 6 40 69 20 621 702 90 - 7 40 66 20 170 225 90 - 8 38 68 20 255 324 90 - 9 38 70 10 534 605 90 - 10 35 66 10 357 410 90 - 11 35 69 10 448 505 90 - 12 25 85 20 652 721 90 - 13 22 75 30 30 92 90 - 14 22 85 10 567 620 90 - 15 20 80 40 384 429 90 - 16 20 85 40 475 528 90 - 17 18 75 20 99 148 90 - 18 15 75 20 179 254 90 - 19 15 80 10 278 345 90 - 20 30 50 10 10 73 90 - 21 30 52 20 914 965 90 - 22 28 52 20 812 883 90 - 23 28 55 10 732 777 90 - 24 25 50 10 65 144 90 - 25 25 52 40 169 224 90 - 26 25 55 10 622 701 90 - 27 23 52 10 261 316 90 - 28 23 55 20 546 593 90 - 29 20 50 10 358 405 90 - 30 20 55 10 449 504 90 - 31 10 35 20 200 237 90 - 32 10 40 30 31 100 90 - 33 8 40 40 87 158 90 - 34 8 45 20 751 816 90 - 35 5 35 10 283 344 90 - 36 5 45 10 665 716 90 - 37 2 40 20 383 434 90 - 38 0 40 30 479 522 90 - 39 0 45 20 567 624 90 - 40 35 30 10 264 321 90 - 41 35 32 10 166 235 90 - 42 33 32 20 68 149 90 - 43 33 35 10 16 80 90 - 44 32 30 10 359 412 90 - 45 30 30 10 541 600 90 - 46 30 32 30 448 509 90 - 47 30 35 10 1054 1127 90 - 48 28 30 10 632 693 90 - 49 28 35 10 1001 1066 90 - 50 26 32 10 815 880 90 - 51 25 30 10 725 786 90 - 52 25 35 10 912 969 90 - 53 44 5 20 286 347 90 - 54 42 10 40 186 257 90 - 55 42 15 10 95 158 90 - 56 40 5 30 385 436 90 - 57 40 15 40 35 87 90 - 58 38 5 30 471 534 90 - 59 38 15 10 651 740 90 - 60 35 5 20 562 629 90 - 61 50 30 10 531 610 90 - 62 50 35 20 262 317 90 - 63 50 40 50 171 218 90 - 64 48 30 10 632 693 90 - 65 48 40 10 76 129 90 - 66 47 35 10 826 875 90 - 67 47 40 10 12 77 90 - 68 45 30 10 734 777 90 - 69 45 35 10 916 969 90 - 70 95 30 30 387 456 90 - 71 95 35 20 293 360 90 - 72 53 30 10 450 505 90 - 73 92 30 10 478 551 90 - 74 53 35 50 353 412 90 - 75 45 65 20 997 1068 90 - 76 90 35 10 203 260 90 - 77 88 30 10 574 643 90 - 78 88 35 20 109 170 90 - 79 87 30 10 668 731 90 - 80 85 25 10 769 820 90 - 81 85 35 30 47 124 90 - 82 75 55 20 369 420 90 - 83 72 55 10 265 338 90 - 84 70 58 20 458 523 90 - 85 68 60 30 555 612 90 - 86 66 55 10 173 238 90 - 87 65 55 20 85 144 90 - 88 65 60 30 645 708 90 - 89 63 58 10 737 802 90 - 90 60 55 10 20 84 90 - 91 60 60 10 836 889 90 - 92 67 85 20 368 441 90 - 93 65 85 40 475 518 90 - 94 65 82 10 285 336 90 - 95 62 80 30 196 239 90 - 96 60 80 10 95 156 90 - 97 60 85 30 561 622 90 - 98 58 75 20 30 84 90 - 99 55 80 10 743 820 90 - 100 55 85 20 647 726 90 - - diff --git a/jsprit-instances/src/test/resources/C1_LuiShenVehicles.txt b/jsprit-instances/src/test/resources/C1_LuiShenVehicles.txt deleted file mode 100644 index 9342bf92a..000000000 --- a/jsprit-instances/src/test/resources/C1_LuiShenVehicles.txt +++ /dev/null @@ -1,4 +0,0 @@ -Vehicle;Capacity;Cost_a;Cost_b;Cost_c -A;100;300;60;30 -B;200;800;160;80 -C;300;1350;270;135 diff --git a/jsprit-instances/src/test/resources/cm101.txt b/jsprit-instances/src/test/resources/cm101.txt deleted file mode 100644 index 33d8ce5fc..000000000 --- a/jsprit-instances/src/test/resources/cm101.txt +++ /dev/null @@ -1,103 +0,0 @@ -4 10 100 1 -0 200 -0 40 50 0 0 0 0 0 1236 -1 45 68 90 10 1 1 5 20 31 118 148 235 258 343 355 441 457 -2 45 70 90 30 1 1 10 61 94 163 187 238 252 313 350 410 439 498 527 616 631 698 744 803 844 920 939 -3 42 66 90 10 1 1 8 76 88 187 221 288 303 371 403 469 514 587 618 683 694 760 791 -4 42 68 90 10 1 1 7 64 110 168 201 253 281 333 357 415 463 540 580 644 668 -5 42 65 90 10 1 1 7 7 36 129 144 202 222 289 328 391 403 477 514 574 592 -6 40 69 90 20 1 1 7 122 153 247 288 362 392 446 483 536 561 629 665 744 784 -7 40 66 90 20 1 1 7 37 68 152 162 248 286 373 422 476 490 554 587 665 697 -8 38 68 90 20 1 1 8 34 73 127 152 209 250 312 322 389 407 494 514 600 629 686 717 -9 38 70 90 10 1 1 5 106 133 193 221 305 331 414 430 498 515 -10 35 66 90 10 1 1 7 82 116 172 198 256 290 344 388 466 510 568 601 691 706 -11 35 69 90 10 1 1 7 55 72 157 187 237 276 337 348 445 488 569 605 683 707 -12 25 85 90 20 1 1 7 87 105 202 212 307 335 391 424 503 519 608 642 722 752 -13 22 75 90 30 1 1 8 55 78 132 167 248 271 325 355 443 464 546 568 631 653 706 746 -14 22 85 90 10 1 1 5 100 147 234 276 343 391 444 470 533 574 -15 20 80 90 40 1 1 5 110 155 241 275 344 379 451 479 551 569 -16 20 85 90 40 1 1 6 4 16 73 88 170 206 267 278 349 392 451 465 -17 18 75 90 20 1 1 10 122 162 257 289 366 407 496 508 586 609 697 741 814 842 900 918 972 1006 1094 1127 -18 15 75 90 20 1 1 5 102 122 188 232 296 314 390 424 496 530 -19 15 80 90 10 1 1 7 42 59 156 181 256 267 365 414 472 520 615 653 710 732 -20 30 50 90 10 1 1 8 44 68 142 161 217 228 327 349 420 454 508 549 622 637 706 741 -21 30 52 90 20 1 1 8 76 107 175 195 245 272 333 353 408 420 490 505 568 607 692 722 -22 28 52 90 20 1 1 9 99 125 211 251 320 363 434 478 551 584 641 656 752 784 872 907 971 988 -23 28 55 90 10 1 1 5 84 115 202 220 300 324 402 443 538 552 -24 25 50 90 10 1 1 10 46 71 169 213 281 326 423 456 515 526 622 640 712 740 800 816 879 912 975 993 -25 25 52 90 40 1 1 5 56 97 161 185 266 311 396 406 475 512 -26 25 55 90 10 1 1 5 45 60 113 148 221 244 333 367 419 435 -27 23 52 90 10 1 1 5 113 146 215 228 322 349 430 472 530 565 -28 23 55 90 20 1 1 8 44 74 132 144 230 277 363 378 437 462 520 538 631 663 729 743 -29 20 50 90 10 1 1 6 88 102 159 196 265 284 362 401 482 493 551 582 -30 20 55 90 10 1 1 7 121 151 204 227 282 326 406 419 484 505 596 637 719 745 -31 10 35 90 20 1 1 6 24 66 122 138 226 250 327 344 431 453 513 560 -32 10 40 90 30 1 1 8 6 28 100 123 191 203 274 310 360 409 503 527 599 630 711 754 -33 8 40 90 40 1 1 5 19 34 117 163 219 231 325 337 433 447 -34 8 45 90 20 1 1 10 23 70 158 176 243 254 305 331 418 464 543 574 653 675 751 797 851 874 943 992 -35 5 35 90 10 1 1 10 47 67 146 193 264 277 336 384 473 496 591 639 721 765 837 867 940 981 1036 1057 -36 5 45 90 10 1 1 5 104 126 224 242 298 331 383 400 452 462 -37 2 40 90 20 1 1 8 111 128 181 201 275 291 357 402 472 489 572 608 705 723 806 848 -38 0 40 90 30 1 1 6 107 130 193 236 318 350 434 466 562 575 627 658 -39 0 45 90 20 1 1 10 97 136 209 233 294 340 393 406 479 524 616 642 702 719 809 837 907 952 1034 1077 -40 35 30 90 10 1 1 6 10 27 106 122 204 246 336 380 467 515 599 615 -41 35 32 90 10 1 1 5 70 109 172 205 263 298 362 377 473 488 -42 33 32 90 20 1 1 6 83 116 168 185 246 289 350 393 454 478 549 570 -43 33 35 90 10 1 1 10 11 29 80 104 164 200 264 289 366 399 466 500 556 584 637 686 749 795 891 912 -44 32 30 90 10 1 1 10 101 124 195 234 319 331 396 430 484 509 565 594 683 726 790 812 879 889 973 985 -45 30 30 90 10 1 1 7 91 102 176 190 266 312 376 413 477 498 586 634 701 745 -46 30 32 90 30 1 1 10 114 135 225 241 323 339 416 443 541 586 684 713 780 819 874 900 975 991 1042 1079 -47 30 35 90 10 1 1 5 1 34 92 135 227 275 341 380 455 504 -48 28 30 90 10 1 1 7 110 132 191 211 276 312 363 386 457 498 596 612 675 718 -49 28 35 90 10 1 1 10 37 64 138 161 221 255 320 361 454 467 555 592 645 691 767 783 864 881 944 964 -50 26 32 90 10 1 1 9 61 76 152 174 242 288 360 372 430 441 520 554 628 650 705 733 808 824 -51 25 30 90 10 1 1 9 17 51 114 143 213 228 292 322 401 449 523 545 602 638 688 727 795 821 -52 25 35 90 10 1 1 8 60 106 167 190 286 304 384 410 495 543 636 673 772 798 897 927 -53 44 5 90 20 1 1 8 119 166 226 248 310 348 413 423 502 517 593 630 686 715 787 823 -54 42 10 90 40 1 1 5 102 114 173 217 316 348 423 448 503 543 -55 42 15 90 10 1 1 7 31 49 148 179 264 304 363 374 450 498 554 603 681 698 -56 40 5 90 30 1 1 6 110 144 226 270 326 355 429 470 546 565 643 675 -57 40 15 90 40 1 1 5 83 112 164 201 276 312 400 415 505 551 -58 38 5 90 30 1 1 6 61 98 173 184 271 296 368 398 461 489 561 572 -59 38 15 90 10 1 1 9 45 71 149 194 290 321 407 454 553 584 661 678 733 748 812 838 929 966 -60 35 5 90 20 1 1 9 79 118 192 212 296 328 397 410 489 531 604 650 732 753 844 891 950 985 -61 50 30 90 10 1 1 10 68 92 168 197 248 272 358 401 494 530 604 622 713 735 805 817 873 903 968 1008 -62 50 35 90 20 1 1 7 29 77 169 201 272 313 378 424 515 553 640 685 736 753 -63 50 40 90 50 1 1 7 0 14 103 126 223 265 359 391 442 458 532 575 656 699 -64 48 30 90 10 1 1 8 8 33 85 124 192 232 295 314 388 398 461 495 578 608 697 712 -65 48 40 90 10 1 1 5 70 98 172 209 306 336 404 442 537 564 -66 47 35 90 10 1 1 7 44 64 155 189 284 330 391 418 491 507 588 620 703 720 -67 47 40 90 10 1 1 9 65 103 202 226 279 300 367 403 496 518 582 631 707 737 818 849 914 955 -68 45 30 90 10 1 1 8 110 147 234 270 340 389 451 466 555 594 657 697 783 827 911 936 -69 45 35 90 10 1 1 7 60 107 180 192 275 324 399 416 480 521 610 620 719 735 -70 95 30 90 30 1 1 9 22 49 125 164 243 284 356 400 499 540 636 654 720 750 809 833 888 932 -71 95 35 90 20 1 1 8 73 91 163 212 266 302 394 410 490 520 590 610 688 732 810 859 -72 53 30 90 10 1 1 7 28 68 141 160 230 269 340 366 462 496 548 574 624 642 -73 92 30 90 10 1 1 9 117 156 234 280 360 396 479 500 588 633 707 727 813 831 919 948 1016 1047 -74 53 35 90 50 1 1 5 45 56 109 145 228 256 323 357 414 438 -75 45 65 90 20 1 1 5 105 148 211 242 298 341 422 435 509 545 -76 90 35 90 10 1 1 6 74 105 159 205 295 331 401 422 503 538 631 672 -77 88 30 90 10 1 1 8 92 138 214 252 343 385 443 491 542 575 665 698 750 768 857 885 -78 88 35 90 20 1 1 8 63 86 148 185 251 268 364 377 456 481 546 559 626 665 755 797 -79 87 30 90 10 1 1 10 111 154 210 257 321 357 436 456 524 535 634 678 763 812 888 921 996 1014 1089 1120 -80 85 25 90 10 1 1 7 98 139 229 259 319 359 450 498 574 598 669 718 805 847 -81 85 35 90 30 1 1 7 27 40 100 138 201 218 289 302 356 387 470 508 599 639 -82 75 55 90 20 1 1 6 57 104 164 197 294 324 416 438 488 512 599 626 -83 72 55 90 10 1 1 5 105 115 196 235 324 361 450 488 558 588 -84 70 58 90 20 1 1 8 74 108 163 198 285 320 389 401 466 487 582 604 655 682 735 777 -85 68 60 90 30 1 1 8 36 54 147 158 216 238 311 348 440 473 551 599 655 689 766 787 -86 66 55 90 10 1 1 7 103 115 214 246 328 340 410 427 503 547 610 645 701 748 -87 65 55 90 20 1 1 10 22 49 100 145 215 232 303 349 413 446 497 507 576 596 649 691 748 784 878 921 -88 65 60 90 30 1 1 7 113 134 228 276 355 369 420 459 547 591 658 693 777 802 -89 63 58 90 10 1 1 8 98 133 221 232 282 298 394 418 498 524 611 660 746 794 861 908 -90 60 55 90 10 1 1 5 72 109 183 224 301 350 440 476 527 550 -91 60 60 90 10 1 1 9 26 46 102 140 191 235 311 325 424 448 515 542 633 649 748 763 843 870 -92 67 85 90 20 1 1 10 48 95 165 205 288 323 410 440 502 535 606 639 696 708 768 779 837 850 933 958 -93 65 85 90 40 1 1 8 25 73 152 183 258 297 391 439 521 563 659 683 759 792 851 884 -94 65 82 90 10 1 1 7 57 91 151 200 293 319 399 409 471 489 542 569 645 680 -95 62 80 90 30 1 1 7 81 105 170 214 300 330 400 431 518 552 646 692 769 790 -96 60 80 90 10 1 1 8 85 134 226 250 333 369 451 465 561 610 702 718 777 802 852 867 -97 60 85 90 30 1 1 8 49 85 153 183 235 248 311 336 428 473 555 565 660 678 741 776 -98 58 75 90 20 1 1 9 120 162 248 281 355 386 439 451 549 572 639 666 755 793 871 891 968 998 -99 55 80 90 10 1 1 10 74 90 188 215 309 336 403 414 475 495 552 599 650 681 738 781 834 872 928 958 -100 55 85 90 20 1 1 8 49 66 139 162 260 299 371 392 485 498 578 609 659 669 753 793 diff --git a/jsprit-instances/src/test/resources/cn_13mix.txt b/jsprit-instances/src/test/resources/cn_13mix.txt deleted file mode 100644 index 9e58fa134..000000000 --- a/jsprit-instances/src/test/resources/cn_13mix.txt +++ /dev/null @@ -1,73 +0,0 @@ -50 - 0 40 40 0 - 1 22 22 18 - 2 36 26 26 - 3 21 45 11 - 4 45 35 30 - 5 55 20 21 - 6 33 34 19 - 7 50 50 15 - 8 55 45 16 - 9 26 59 29 - 10 40 66 26 - 11 55 65 37 - 12 35 51 16 - 13 62 35 12 - 14 62 57 31 - 15 62 24 8 - 16 21 36 19 - 17 33 44 20 - 18 9 56 13 - 19 62 48 15 - 20 66 14 22 - 21 44 13 28 - 22 26 13 12 - 23 11 28 6 - 24 7 43 27 - 25 17 64 14 - 26 41 46 18 - 27 55 34 17 - 28 35 16 29 - 29 52 26 13 - 30 43 26 22 - 31 31 76 25 - 32 22 53 28 - 33 26 29 27 - 34 50 40 19 - 35 55 50 10 - 36 54 10 12 - 37 60 15 14 - 38 47 66 24 - 39 30 60 16 - 40 30 50 33 - 41 12 17 15 - 42 15 14 11 - 43 16 19 18 - 44 21 48 17 - 45 50 30 21 - 46 51 42 27 - 47 50 15 19 - 48 48 21 20 - 49 12 38 5 - 50 15 56 22 -//Vehicles characteristics: type, volume, fixed cost, variable cost, number available -6 -v 1 20 20 1.0 4 -v 2 30 35 1.1 2 -v 3 40 50 1.2 4 -v 4 70 120 1.7 4 -v 5 120 225 2.5 2 -v 6 200 400 3.2 1 - - -best solution with fixed costs: 588.784723 + 20 + 3*35 + 2*50 + 4*400 = 2413.78 - 2 27 13 807876 - 1 26 321656 - 2 17 12 774254 - 2 34 8 828825 - 1 46 573606 - 1 4 491422 - 9 39 31 10 38 11 14 19 35 7 5129601 - 11 2 28 22 1 43 42 41 23 16 33 6 5102713 - 10 40 32 9 25 50 18 24 49 3 44 5096803 - 11 30 48 21 47 36 37 20 15 5 29 45 5011089 diff --git a/jsprit-instances/src/test/resources/p01 b/jsprit-instances/src/test/resources/p01 deleted file mode 100644 index 591575719..000000000 --- a/jsprit-instances/src/test/resources/p01 +++ /dev/null @@ -1,59 +0,0 @@ -2 4 50 4 -0 80 -0 80 -0 80 -0 80 - 1 37 52 0 7 1 4 1 2 4 8 - 2 49 49 0 30 1 4 1 2 4 8 - 3 52 64 0 16 1 4 1 2 4 8 - 4 20 26 0 9 1 4 1 2 4 8 - 5 40 30 0 21 1 4 1 2 4 8 - 6 21 47 0 15 1 4 1 2 4 8 - 7 17 63 0 19 1 4 1 2 4 8 - 8 31 62 0 23 1 4 1 2 4 8 - 9 52 33 0 11 1 4 1 2 4 8 -10 51 21 0 5 1 4 1 2 4 8 -11 42 41 0 19 1 4 1 2 4 8 -12 31 32 0 29 1 4 1 2 4 8 -13 5 25 0 23 1 4 1 2 4 8 -14 12 42 0 21 1 4 1 2 4 8 -15 36 16 0 10 1 4 1 2 4 8 -16 52 41 0 15 1 4 1 2 4 8 -17 27 23 0 3 1 4 1 2 4 8 -18 17 33 0 41 1 4 1 2 4 8 -19 13 13 0 9 1 4 1 2 4 8 -20 57 58 0 28 1 4 1 2 4 8 -21 62 42 0 8 1 4 1 2 4 8 -22 42 57 0 8 1 4 1 2 4 8 -23 16 57 0 16 1 4 1 2 4 8 -24 8 52 0 10 1 4 1 2 4 8 -25 7 38 0 28 1 4 1 2 4 8 -26 27 68 0 7 1 4 1 2 4 8 -27 30 48 0 15 1 4 1 2 4 8 -28 43 67 0 14 1 4 1 2 4 8 -29 58 48 0 6 1 4 1 2 4 8 -30 58 27 0 19 1 4 1 2 4 8 -31 37 69 0 11 1 4 1 2 4 8 -32 38 46 0 12 1 4 1 2 4 8 -33 46 10 0 23 1 4 1 2 4 8 -34 61 33 0 26 1 4 1 2 4 8 -35 62 63 0 17 1 4 1 2 4 8 -36 63 69 0 6 1 4 1 2 4 8 -37 32 22 0 9 1 4 1 2 4 8 -38 45 35 0 15 1 4 1 2 4 8 -39 59 15 0 14 1 4 1 2 4 8 -40 5 6 0 7 1 4 1 2 4 8 -41 10 17 0 27 1 4 1 2 4 8 -42 21 10 0 13 1 4 1 2 4 8 -43 5 64 0 11 1 4 1 2 4 8 -44 30 15 0 16 1 4 1 2 4 8 -45 39 10 0 10 1 4 1 2 4 8 -46 32 39 0 5 1 4 1 2 4 8 -47 25 32 0 25 1 4 1 2 4 8 -48 25 55 0 17 1 4 1 2 4 8 -49 48 28 0 18 1 4 1 2 4 8 -50 56 37 0 10 1 4 1 2 4 8 -51 20 20 0 0 0 0 -52 30 40 0 0 0 0 -53 50 30 0 0 0 0 -54 60 50 0 0 0 0 diff --git a/jsprit-instances/src/test/resources/p08 b/jsprit-instances/src/test/resources/p08 deleted file mode 100644 index e272d5d8e..000000000 --- a/jsprit-instances/src/test/resources/p08 +++ /dev/null @@ -1,254 +0,0 @@ -2 14 249 2 -310 500 -310 500 - 1 -99 -97 0 6 1 2 1 2 - 2 -59 50 0 72 1 2 1 2 - 3 0 14 0 93 1 2 1 2 - 4 -17 -66 0 28 1 2 1 2 - 5 -69 -19 0 5 1 2 1 2 - 6 31 12 0 43 1 2 1 2 - 7 5 -41 0 1 1 2 1 2 - 8 -12 10 0 36 1 2 1 2 - 9 -64 70 0 53 1 2 1 2 - 10 -12 85 0 63 1 2 1 2 - 11 -18 64 0 25 1 2 1 2 - 12 -77 -16 0 50 1 2 1 2 - 13 -53 88 0 57 1 2 1 2 - 14 83 -24 0 1 1 2 1 2 - 15 24 41 0 66 1 2 1 2 - 16 17 21 0 37 1 2 1 2 - 17 42 96 0 51 1 2 1 2 - 18 -65 0 0 47 1 2 1 2 - 19 -47 -26 0 88 1 2 1 2 - 20 85 36 0 75 1 2 1 2 - 21 -35 -54 0 48 1 2 1 2 - 22 54 -21 0 40 1 2 1 2 - 23 64 -17 0 8 1 2 1 2 - 24 55 89 0 69 1 2 1 2 - 25 17 -25 0 93 1 2 1 2 - 26 -61 66 0 29 1 2 1 2 - 27 -61 26 0 5 1 2 1 2 - 28 17 -72 0 53 1 2 1 2 - 29 79 38 0 8 1 2 1 2 - 30 -62 -2 0 24 1 2 1 2 - 31 -90 -68 0 53 1 2 1 2 - 32 52 66 0 13 1 2 1 2 - 33 -54 -50 0 47 1 2 1 2 - 34 8 -84 0 57 1 2 1 2 - 35 37 -90 0 9 1 2 1 2 - 36 -83 49 0 74 1 2 1 2 - 37 35 -1 0 83 1 2 1 2 - 38 7 59 0 96 1 2 1 2 - 39 12 48 0 42 1 2 1 2 - 40 57 95 0 80 1 2 1 2 - 41 92 28 0 22 1 2 1 2 - 42 -3 97 0 56 1 2 1 2 - 43 -7 52 0 43 1 2 1 2 - 44 42 -15 0 12 1 2 1 2 - 45 77 -43 0 73 1 2 1 2 - 46 59 -49 0 32 1 2 1 2 - 47 25 91 0 8 1 2 1 2 - 48 69 -19 0 79 1 2 1 2 - 49 -82 -14 0 79 1 2 1 2 - 50 74 -70 0 4 1 2 1 2 - 51 69 59 0 14 1 2 1 2 - 52 29 33 0 17 1 2 1 2 - 53 -97 9 0 19 1 2 1 2 - 54 -58 9 0 44 1 2 1 2 - 55 28 93 0 5 1 2 1 2 - 56 7 73 0 37 1 2 1 2 - 57 -28 73 0 100 1 2 1 2 - 58 -76 55 0 62 1 2 1 2 - 59 41 42 0 90 1 2 1 2 - 60 92 40 0 57 1 2 1 2 - 61 -84 -29 0 44 1 2 1 2 - 62 -12 42 0 37 1 2 1 2 - 63 51 -45 0 80 1 2 1 2 - 64 -37 46 0 60 1 2 1 2 - 65 -97 35 0 95 1 2 1 2 - 66 14 89 0 56 1 2 1 2 - 67 60 58 0 56 1 2 1 2 - 68 -63 -75 0 9 1 2 1 2 - 69 -18 34 0 39 1 2 1 2 - 70 -46 -82 0 15 1 2 1 2 - 71 -86 -79 0 4 1 2 1 2 - 72 -43 -30 0 58 1 2 1 2 - 73 -44 7 0 73 1 2 1 2 - 74 -3 -20 0 5 1 2 1 2 - 75 36 41 0 12 1 2 1 2 - 76 -30 -94 0 3 1 2 1 2 - 77 79 -62 0 8 1 2 1 2 - 78 51 70 0 31 1 2 1 2 - 79 -61 -26 0 48 1 2 1 2 - 80 6 94 0 3 1 2 1 2 - 81 -19 -62 0 52 1 2 1 2 - 82 -20 51 0 99 1 2 1 2 - 83 -81 37 0 29 1 2 1 2 - 84 7 31 0 12 1 2 1 2 - 85 52 12 0 50 1 2 1 2 - 86 83 -91 0 98 1 2 1 2 - 87 -7 -92 0 4 1 2 1 2 - 88 82 -74 0 56 1 2 1 2 - 89 -70 85 0 24 1 2 1 2 - 90 -83 -30 0 33 1 2 1 2 - 91 71 -61 0 45 1 2 1 2 - 92 85 11 0 98 1 2 1 2 - 93 66 -48 0 4 1 2 1 2 - 94 78 -87 0 36 1 2 1 2 - 95 9 -79 0 72 1 2 1 2 - 96 -36 4 0 26 1 2 1 2 - 97 66 39 0 71 1 2 1 2 - 98 92 -17 0 84 1 2 1 2 - 99 -46 -79 0 21 1 2 1 2 -100 -30 -63 0 99 1 2 1 2 -101 -42 63 0 33 1 2 1 2 -102 20 42 0 84 1 2 1 2 -103 15 98 0 74 1 2 1 2 -104 1 -17 0 93 1 2 1 2 -105 64 20 0 25 1 2 1 2 -106 -96 85 0 39 1 2 1 2 -107 93 -29 0 42 1 2 1 2 -108 -40 -84 0 77 1 2 1 2 -109 86 35 0 68 1 2 1 2 -110 91 36 0 50 1 2 1 2 -111 62 -8 0 42 1 2 1 2 -112 -24 4 0 71 1 2 1 2 -113 11 96 0 85 1 2 1 2 -114 -53 62 0 78 1 2 1 2 -115 -28 -71 0 64 1 2 1 2 -116 7 -4 0 5 1 2 1 2 -117 95 -9 0 93 1 2 1 2 -118 -3 17 0 18 1 2 1 2 -119 53 -90 0 38 1 2 1 2 -120 58 -19 0 29 1 2 1 2 -121 -83 84 0 81 1 2 1 2 -122 -1 49 0 4 1 2 1 2 -123 -4 17 0 23 1 2 1 2 -124 -82 -3 0 11 1 2 1 2 -125 -43 47 0 86 1 2 1 2 -126 6 -6 0 2 1 2 1 2 -127 70 99 0 31 1 2 1 2 -128 68 -29 0 54 1 2 1 2 -129 -94 -30 0 87 1 2 1 2 -130 -94 -20 0 17 1 2 1 2 -131 -21 77 0 81 1 2 1 2 -132 64 37 0 72 1 2 1 2 -133 -70 -19 0 10 1 2 1 2 -134 88 65 0 50 1 2 1 2 -135 2 29 0 25 1 2 1 2 -136 33 57 0 71 1 2 1 2 -137 -70 6 0 85 1 2 1 2 -138 -38 -56 0 51 1 2 1 2 -139 -80 -95 0 29 1 2 1 2 -140 -5 -39 0 55 1 2 1 2 -141 8 -22 0 45 1 2 1 2 -142 -61 -76 0 100 1 2 1 2 -143 76 -22 0 38 1 2 1 2 -144 49 -71 0 11 1 2 1 2 -145 -30 -68 0 82 1 2 1 2 -146 1 34 0 50 1 2 1 2 -147 77 79 0 39 1 2 1 2 -148 -58 64 0 6 1 2 1 2 -149 82 -97 0 87 1 2 1 2 -150 -80 55 0 83 1 2 1 2 -151 81 -86 0 22 1 2 1 2 -152 39 -49 0 24 1 2 1 2 -153 -67 72 0 69 1 2 1 2 -154 -25 -89 0 97 1 2 1 2 -155 -44 -95 0 65 1 2 1 2 -156 32 -68 0 97 1 2 1 2 -157 -17 49 0 79 1 2 1 2 -158 93 49 0 79 1 2 1 2 -159 99 81 0 46 1 2 1 2 -160 10 -49 0 52 1 2 1 2 -161 63 -41 0 39 1 2 1 2 -162 38 39 0 94 1 2 1 2 -163 -28 39 0 97 1 2 1 2 -164 -2 -47 0 18 1 2 1 2 -165 38 8 0 3 1 2 1 2 -166 -42 -6 0 23 1 2 1 2 -167 -67 88 0 19 1 2 1 2 -168 19 93 0 40 1 2 1 2 -169 40 27 0 49 1 2 1 2 -170 -61 56 0 96 1 2 1 2 -171 43 33 0 58 1 2 1 2 -172 -18 -39 0 15 1 2 1 2 -173 -69 19 0 21 1 2 1 2 -174 75 -18 0 56 1 2 1 2 -175 31 85 0 67 1 2 1 2 -176 25 58 0 10 1 2 1 2 -177 -16 36 0 36 1 2 1 2 -178 91 15 0 84 1 2 1 2 -179 60 -39 0 59 1 2 1 2 -180 49 -47 0 85 1 2 1 2 -181 42 33 0 60 1 2 1 2 -182 16 -81 0 33 1 2 1 2 -183 -78 53 0 62 1 2 1 2 -184 53 -80 0 70 1 2 1 2 -185 -46 -26 0 79 1 2 1 2 -186 -25 -54 0 98 1 2 1 2 -187 69 -46 0 99 1 2 1 2 -188 0 -78 0 18 1 2 1 2 -189 -84 74 0 55 1 2 1 2 -190 -16 16 0 75 1 2 1 2 -191 -63 -14 0 94 1 2 1 2 -192 51 -77 0 89 1 2 1 2 -193 -39 61 0 13 1 2 1 2 -194 5 97 0 19 1 2 1 2 -195 -55 39 0 19 1 2 1 2 -196 70 -14 0 90 1 2 1 2 -197 0 95 0 35 1 2 1 2 -198 -45 7 0 76 1 2 1 2 -199 38 -24 0 3 1 2 1 2 -200 50 -37 0 11 1 2 1 2 -201 59 71 0 98 1 2 1 2 -202 -73 -96 0 92 1 2 1 2 -203 -29 72 0 1 1 2 1 2 -204 -47 12 0 2 1 2 1 2 -205 -88 -61 0 63 1 2 1 2 -206 -88 36 0 57 1 2 1 2 -207 -46 -3 0 50 1 2 1 2 -208 26 -37 0 19 1 2 1 2 -209 -39 -67 0 24 1 2 1 2 -210 92 27 0 14 1 2 1 2 -211 -80 -31 0 18 1 2 1 2 -212 93 -50 0 77 1 2 1 2 -213 -20 -5 0 28 1 2 1 2 -214 -22 73 0 72 1 2 1 2 -215 -4 -7 0 49 1 2 1 2 -216 54 -48 0 58 1 2 1 2 -217 -70 39 0 84 1 2 1 2 -218 54 -82 0 58 1 2 1 2 -219 29 41 0 41 1 2 1 2 -220 -87 51 0 98 1 2 1 2 -221 -96 -36 0 77 1 2 1 2 -222 49 8 0 57 1 2 1 2 -223 -5 54 0 39 1 2 1 2 -224 -26 43 0 99 1 2 1 2 -225 -11 60 0 83 1 2 1 2 -226 40 61 0 54 1 2 1 2 -227 82 35 0 86 1 2 1 2 -228 -92 12 0 2 1 2 1 2 -229 -93 -86 0 14 1 2 1 2 -230 -66 63 0 42 1 2 1 2 -231 -72 -87 0 14 1 2 1 2 -232 -57 -84 0 55 1 2 1 2 -233 23 52 0 2 1 2 1 2 -234 -56 -62 0 18 1 2 1 2 -235 -19 59 0 17 1 2 1 2 -236 63 -14 0 22 1 2 1 2 -237 -13 38 0 28 1 2 1 2 -238 -19 87 0 3 1 2 1 2 -239 44 -84 0 96 1 2 1 2 -240 98 -17 0 53 1 2 1 2 -241 -16 62 0 15 1 2 1 2 -242 3 66 0 36 1 2 1 2 -243 26 22 0 98 1 2 1 2 -244 -38 -81 0 78 1 2 1 2 -245 70 -80 0 92 1 2 1 2 -246 17 -35 0 65 1 2 1 2 -247 96 -83 0 64 1 2 1 2 -248 -77 80 0 43 1 2 1 2 -249 -14 44 0 50 1 2 1 2 -250 -33 33 0 0 0 0 -251 33 -33 0 0 0 0 diff --git a/jsprit-instances/src/test/resources/vrpnc1.txt b/jsprit-instances/src/test/resources/vrpnc1.txt deleted file mode 100644 index 92297dc3b..000000000 --- a/jsprit-instances/src/test/resources/vrpnc1.txt +++ /dev/null @@ -1,52 +0,0 @@ - 50 160 999999 0 - 30 40 - 37 52 7 - 49 49 30 - 52 64 16 - 20 26 9 - 40 30 21 - 21 47 15 - 17 63 19 - 31 62 23 - 52 33 11 - 51 21 5 - 42 41 19 - 31 32 29 - 5 25 23 - 12 42 21 - 36 16 10 - 52 41 15 - 27 23 3 - 17 33 41 - 13 13 9 - 57 58 28 - 62 42 8 - 42 57 8 - 16 57 16 - 8 52 10 - 7 38 28 - 27 68 7 - 30 48 15 - 43 67 14 - 58 48 6 - 58 27 19 - 37 69 11 - 38 46 12 - 46 10 23 - 61 33 26 - 62 63 17 - 63 69 6 - 32 22 9 - 45 35 15 - 59 15 14 - 5 6 7 - 10 17 27 - 21 10 13 - 5 64 11 - 30 15 16 - 39 10 10 - 32 39 5 - 25 32 25 - 25 55 17 - 48 28 18 - 56 37 10 diff --git a/jsprit-instances/src/test/resources/vrpnc13.txt b/jsprit-instances/src/test/resources/vrpnc13.txt deleted file mode 100644 index b3c8bfcdc..000000000 --- a/jsprit-instances/src/test/resources/vrpnc13.txt +++ /dev/null @@ -1,122 +0,0 @@ -120 200 720 50 - 10 45 - 25 1 25 - 25 3 7 - 31 5 13 - 32 5 6 - 31 7 14 - 32 9 5 - 34 9 11 - 46 9 19 - 35 7 5 - 34 6 15 - 35 5 15 - 47 6 17 - 40 5 13 - 39 3 12 - 36 3 18 - 73 6 13 - 73 8 18 - 24 36 12 - 76 6 17 - 76 10 4 - 76 13 7 - 78 3 12 - 78 9 13 - 79 3 8 - 79 5 16 - 79 11 15 - 82 3 6 - 82 7 5 - 90 15 9 - 84 3 11 - 84 5 10 - 84 9 3 - 85 1 7 - 87 5 2 - 85 8 4 - 87 7 4 - 86 41 18 - 86 44 14 - 86 46 12 - 85 55 17 - 89 43 20 - 89 46 14 - 89 52 16 - 92 42 10 - 92 52 9 - 94 42 11 - 94 44 7 - 94 48 13 - 96 42 5 - 99 46 4 - 99 50 21 - 83 80 13 - 83 83 11 - 85 81 12 - 85 85 14 - 85 89 10 - 87 80 8 - 87 86 16 - 90 77 19 - 90 88 5 - 93 82 17 - 93 84 7 - 93 89 16 - 94 86 14 - 95 80 17 - 99 89 13 - 37 83 17 - 50 80 13 - 35 85 14 - 35 87 16 - 44 86 7 - 46 89 13 - 46 83 9 - 46 87 11 - 46 89 35 - 48 83 5 - 50 85 28 - 50 88 7 - 54 86 3 - 54 90 10 - 10 35 7 - 10 40 12 - 18 30 11 - 17 35 10 - 16 38 8 - 14 40 11 - 15 42 21 - 11 42 4 - 18 40 15 - 21 39 16 - 20 40 4 - 18 41 16 - 20 44 7 - 22 44 10 - 16 45 9 - 20 45 11 - 25 45 17 - 30 55 12 - 20 50 11 - 22 51 7 - 18 49 9 - 16 48 11 - 20 55 12 - 18 53 7 - 14 50 8 - 15 51 6 - 16 54 5 - 28 33 12 - 33 38 13 - 30 50 7 - 13 40 7 - 15 36 8 - 18 31 11 - 25 37 13 - 30 46 11 - 25 52 10 - 16 33 7 - 25 35 4 - 5 40 20 - 5 50 13 diff --git a/jsprit-io/.gitignore b/jsprit-io/.gitignore deleted file mode 100644 index 30b951da3..000000000 --- a/jsprit-io/.gitignore +++ /dev/null @@ -1,18 +0,0 @@ -/bin -/target -/output -.DS_Store - -# IntelliJ -*.ipr -*.iws -*.iml -.idea - -# Eclipse -.project -.classpath -.settings - - - diff --git a/jsprit-io/LICENSE.md b/jsprit-io/LICENSE.md deleted file mode 100644 index f75caec51..000000000 --- a/jsprit-io/LICENSE.md +++ /dev/null @@ -1,203 +0,0 @@ - - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and -limitations under the License. diff --git a/jsprit-io/pom.xml b/jsprit-io/pom.xml deleted file mode 100644 index 306f50351..000000000 --- a/jsprit-io/pom.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - com.graphhopper - jsprit - 1.9-SNAPSHOT - - 4.0.0 - - jsprit-io - jar - - - - ${project.groupId} - jsprit-core - ${project.version} - - - - commons-configuration - commons-configuration - 1.9 - - - - xerces - xercesImpl - 2.12.2 - - - - - diff --git a/jsprit-io/src/main/java/com/graphhopper/jsprit/io/algorithm/AlgorithmConfig.java b/jsprit-io/src/main/java/com/graphhopper/jsprit/io/algorithm/AlgorithmConfig.java deleted file mode 100644 index c99ff56d9..000000000 --- a/jsprit-io/src/main/java/com/graphhopper/jsprit/io/algorithm/AlgorithmConfig.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.io.algorithm; - -import org.apache.commons.configuration.XMLConfiguration; - -public class AlgorithmConfig { - - private XMLConfiguration xmlConfig; - - public AlgorithmConfig() { - xmlConfig = new XMLConfiguration(); - - } - - public XMLConfiguration getXMLConfiguration() { - return xmlConfig; - } -} diff --git a/jsprit-io/src/main/java/com/graphhopper/jsprit/io/algorithm/AlgorithmConfigXmlReader.java b/jsprit-io/src/main/java/com/graphhopper/jsprit/io/algorithm/AlgorithmConfigXmlReader.java deleted file mode 100644 index 57b26fdc0..000000000 --- a/jsprit-io/src/main/java/com/graphhopper/jsprit/io/algorithm/AlgorithmConfigXmlReader.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.io.algorithm; - -import com.graphhopper.jsprit.core.util.Resource; -import org.apache.commons.configuration.ConfigurationException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.xml.sax.EntityResolver; -import org.xml.sax.InputSource; -import org.xml.sax.SAXException; - -import java.io.IOException; -import java.io.InputStream; -import java.net.URL; - - -public class AlgorithmConfigXmlReader { - - private static Logger log = LoggerFactory.getLogger(AlgorithmConfigXmlReader.class.getName()); - - private AlgorithmConfig algorithmConfig; - - private boolean schemaValidation = true; - - /** - * @param schemaValidation the schemaValidation to set - */ - public AlgorithmConfigXmlReader setSchemaValidation(boolean schemaValidation) { - this.schemaValidation = schemaValidation; - return this; - } - - public AlgorithmConfigXmlReader(AlgorithmConfig algorithmConfig) { - this.algorithmConfig = algorithmConfig; - } - - public void read(URL url) { - log.debug("read algorithm: " + url); - algorithmConfig.getXMLConfiguration().setURL(url); - algorithmConfig.getXMLConfiguration().setAttributeSplittingDisabled(true); - algorithmConfig.getXMLConfiguration().setDelimiterParsingDisabled(true); - - if (schemaValidation) { - final InputStream resource = Resource.getAsInputStream("algorithm_schema.xsd"); - if (resource != null) { - EntityResolver resolver = new EntityResolver() { - - @Override - public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException { - { - InputSource is = new InputSource(resource); - return is; - } - } - }; - algorithmConfig.getXMLConfiguration().setEntityResolver(resolver); - algorithmConfig.getXMLConfiguration().setSchemaValidation(true); - } else { - log.warn("cannot find schema-xsd file (algorithm_xml_schema.xsd). try to read xml without xml-file-validation."); - } - } - try { - algorithmConfig.getXMLConfiguration().load(); - } catch (ConfigurationException e) { - throw new RuntimeException(e); - } - } - - - public void read(String filename) { - log.debug("read algorithm-config from file " + filename); - URL url = Resource.getAsURL(filename); - read(url); - } - -} diff --git a/jsprit-io/src/main/java/com/graphhopper/jsprit/io/algorithm/InsertionFactory.java b/jsprit-io/src/main/java/com/graphhopper/jsprit/io/algorithm/InsertionFactory.java deleted file mode 100644 index 74f811463..000000000 --- a/jsprit-io/src/main/java/com/graphhopper/jsprit/io/algorithm/InsertionFactory.java +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.io.algorithm; - -import com.graphhopper.jsprit.core.algorithm.listener.VehicleRoutingAlgorithmListeners; -import com.graphhopper.jsprit.core.algorithm.recreate.InsertionBuilder; -import com.graphhopper.jsprit.core.algorithm.recreate.InsertionStrategy; -import com.graphhopper.jsprit.core.algorithm.state.StateManager; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.constraint.ConstraintManager; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleFleetManager; -import org.apache.commons.configuration.HierarchicalConfiguration; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.List; -import java.util.concurrent.ExecutorService; - - -class InsertionFactory { - - private static Logger log = LoggerFactory.getLogger(InsertionFactory.class.getName()); - - @SuppressWarnings("deprecation") - public static InsertionStrategy createInsertion(VehicleRoutingProblem vrp, HierarchicalConfiguration config, - VehicleFleetManager vehicleFleetManager, StateManager stateManager, List algorithmListeners, ExecutorService executorService, int nuOfThreads, ConstraintManager constraintManager, boolean addDefaultCostCalculators) { - - if (config.containsKey("[@name]")) { - String insertionName = config.getString("[@name]"); - if (!insertionName.equals("bestInsertion") && !insertionName.equals("regretInsertion")) { - throw new IllegalStateException(insertionName + " is not supported. use either \"bestInsertion\" or \"regretInsertion\""); - } - - - InsertionBuilder iBuilder = new InsertionBuilder(vrp, vehicleFleetManager, stateManager, constraintManager); - - if (executorService != null) { - iBuilder.setConcurrentMode(executorService, nuOfThreads); - } - - if (config.containsKey("level")) { - String level = config.getString("level"); - if (level.equals("local")) { - iBuilder.setLocalLevel(addDefaultCostCalculators); - } else if (level.equals("route")) { - int forwardLooking = 0; - int memory = 1; - String forward = config.getString("level[@forwardLooking]"); - String mem = config.getString("level[@memory]"); - if (forward != null) forwardLooking = Integer.parseInt(forward); - else - log.warn("parameter route[@forwardLooking] is missing. by default it is 0 which equals to local level"); - if (mem != null) memory = Integer.parseInt(mem); - else log.warn("parameter route[@memory] is missing. by default it is 1"); - iBuilder.setRouteLevel(forwardLooking, memory, addDefaultCostCalculators); - } else - throw new IllegalStateException("level " + level + " is not known. currently it only knows \"local\" or \"route\""); - } else iBuilder.setLocalLevel(addDefaultCostCalculators); - - if (config.containsKey("considerFixedCosts") || config.containsKey("considerFixedCost")) { - if (addDefaultCostCalculators) { - String val = config.getString("considerFixedCosts"); - if (val == null) val = config.getString("considerFixedCost"); - if (val.equals("true")) { - double fixedCostWeight = 0.5; - String weight = config.getString("considerFixedCosts[@weight]"); - if (weight == null) weight = config.getString("considerFixedCost[@weight]"); - if (weight != null) fixedCostWeight = Double.parseDouble(weight); - else - throw new IllegalStateException("fixedCostsParameter 'weight' must be set, e.g. true.\n" + - "this has to be changed in algorithm-config-xml-file."); - iBuilder.considerFixedCosts(fixedCostWeight); - } else if (val.equals("false")) { - - } else - throw new IllegalStateException("considerFixedCosts must either be true or false, i.e. true or \nfalse. " + - "if latter, you can also omit the tag. this has to be changed in algorithm-config-xml-file"); - } - } - String allowVehicleSwitch = config.getString("allowVehicleSwitch"); - if (allowVehicleSwitch != null) { - iBuilder.setAllowVehicleSwitch(Boolean.parseBoolean(allowVehicleSwitch)); - } - - if (insertionName.equals("regretInsertion")) { - iBuilder.setInsertionStrategy(InsertionBuilder.Strategy.REGRET); - - String fastRegret = config.getString("fastRegret"); - if (fastRegret != null) { - iBuilder.setFastRegret(Boolean.parseBoolean(fastRegret)); - } - } - return iBuilder.build(); - } else throw new IllegalStateException("cannot create insertionStrategy, since it has no name."); - } - - -} - - - diff --git a/jsprit-io/src/main/java/com/graphhopper/jsprit/io/algorithm/VehicleRoutingAlgorithms.java b/jsprit-io/src/main/java/com/graphhopper/jsprit/io/algorithm/VehicleRoutingAlgorithms.java deleted file mode 100644 index 07ebaa979..000000000 --- a/jsprit-io/src/main/java/com/graphhopper/jsprit/io/algorithm/VehicleRoutingAlgorithms.java +++ /dev/null @@ -1,944 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.io.algorithm; - - -import com.graphhopper.jsprit.core.algorithm.*; -import com.graphhopper.jsprit.core.algorithm.acceptor.*; -import com.graphhopper.jsprit.core.algorithm.listener.AlgorithmEndsListener; -import com.graphhopper.jsprit.core.algorithm.listener.VehicleRoutingAlgorithmListeners.PrioritizedVRAListener; -import com.graphhopper.jsprit.core.algorithm.listener.VehicleRoutingAlgorithmListeners.Priority; -import com.graphhopper.jsprit.core.algorithm.module.RuinAndRecreateModule; -import com.graphhopper.jsprit.core.algorithm.recreate.InsertionStrategy; -import com.graphhopper.jsprit.core.algorithm.recreate.listener.InsertionListener; -import com.graphhopper.jsprit.core.algorithm.ruin.ClusterRuinStrategyFactory; -import com.graphhopper.jsprit.core.algorithm.ruin.JobNeighborhoods; -import com.graphhopper.jsprit.core.algorithm.ruin.JobNeighborhoodsFactory; -import com.graphhopper.jsprit.core.algorithm.ruin.RadialRuinStrategyFactory; -import com.graphhopper.jsprit.core.algorithm.ruin.RandomRuinStrategyFactory; -import com.graphhopper.jsprit.core.algorithm.ruin.RuinStrategy; -import com.graphhopper.jsprit.core.algorithm.ruin.distance.AvgServiceAndShipmentDistance; -import com.graphhopper.jsprit.core.algorithm.ruin.distance.JobDistance; -import com.graphhopper.jsprit.core.algorithm.selector.SelectBest; -import com.graphhopper.jsprit.core.algorithm.selector.SelectRandomly; -import com.graphhopper.jsprit.core.algorithm.selector.SolutionSelector; -import com.graphhopper.jsprit.core.algorithm.state.*; -import com.graphhopper.jsprit.core.algorithm.termination.IterationWithoutImprovementTermination; -import com.graphhopper.jsprit.core.algorithm.termination.PrematureAlgorithmTermination; -import com.graphhopper.jsprit.core.algorithm.termination.TimeTermination; -import com.graphhopper.jsprit.core.algorithm.termination.VariationCoefficientTermination; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem.FleetSize; -import com.graphhopper.jsprit.core.problem.constraint.ConstraintManager; -import com.graphhopper.jsprit.core.problem.constraint.SwitchNotFeasible; -import com.graphhopper.jsprit.core.problem.solution.SolutionCostCalculator; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; -import com.graphhopper.jsprit.core.problem.solution.route.activity.End; -import com.graphhopper.jsprit.core.problem.solution.route.activity.ReverseActivityVisitor; -import com.graphhopper.jsprit.core.problem.solution.route.activity.TourActivity; -import com.graphhopper.jsprit.core.problem.vehicle.*; -import com.graphhopper.jsprit.core.util.ActivityTimeTracker; -import com.graphhopper.jsprit.io.algorithm.VehicleRoutingAlgorithms.TypedMap.*; -import org.apache.commons.configuration.HierarchicalConfiguration; -import org.apache.commons.configuration.XMLConfiguration; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.lang.Thread.UncaughtExceptionHandler; -import java.net.URL; -import java.util.*; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; - -public class VehicleRoutingAlgorithms { - - static class TypedMap { - - static interface AbstractKey { - - Class getType(); - } - - static class AcceptorKey implements AbstractKey { - - private ModKey modKey; - - public AcceptorKey(ModKey modKey) { - super(); - this.modKey = modKey; - } - - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result - + ((modKey == null) ? 0 : modKey.hashCode()); - return result; - } - - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (!(obj instanceof AcceptorKey)) - return false; - AcceptorKey other = (AcceptorKey) obj; - if (modKey == null) { - if (other.modKey != null) - return false; - } else if (!modKey.equals(other.modKey)) - return false; - return true; - } - - - @Override - public Class getType() { - return SolutionAcceptor.class; - } - - } - - static class SelectorKey implements AbstractKey { - - private ModKey modKey; - - public SelectorKey(ModKey modKey) { - super(); - this.modKey = modKey; - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result - + ((modKey == null) ? 0 : modKey.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - SelectorKey other = (SelectorKey) obj; - if (modKey == null) { - if (other.modKey != null) - return false; - } else if (!modKey.equals(other.modKey)) - return false; - return true; - } - - - @Override - public Class getType() { - return SolutionSelector.class; - } - - } - - static class StrategyModuleKey implements AbstractKey { - - private ModKey modKey; - - public StrategyModuleKey(ModKey modKey) { - super(); - this.modKey = modKey; - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result - + ((modKey == null) ? 0 : modKey.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - StrategyModuleKey other = (StrategyModuleKey) obj; - if (modKey == null) { - if (other.modKey != null) - return false; - } else if (!modKey.equals(other.modKey)) - return false; - return true; - } - - - @Override - public Class getType() { - return SearchStrategyModule.class; - } - - } - - static class RuinStrategyKey implements AbstractKey { - - private ModKey modKey; - - public RuinStrategyKey(ModKey modKey) { - super(); - this.modKey = modKey; - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result - + ((modKey == null) ? 0 : modKey.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - RuinStrategyKey other = (RuinStrategyKey) obj; - if (modKey == null) { - if (other.modKey != null) - return false; - } else if (!modKey.equals(other.modKey)) - return false; - return true; - } - - - @Override - public Class getType() { - return RuinStrategy.class; - } - - } - - static class InsertionStrategyKey implements AbstractKey { - - private ModKey modKey; - - public InsertionStrategyKey(ModKey modKey) { - super(); - this.modKey = modKey; - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result - + ((modKey == null) ? 0 : modKey.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - InsertionStrategyKey other = (InsertionStrategyKey) obj; - if (modKey == null) { - if (other.modKey != null) - return false; - } else if (!modKey.equals(other.modKey)) - return false; - return true; - } - - - @Override - public Class getType() { - return InsertionStrategy.class; - } - - } - - private Map, Object> map = new HashMap, Object>(); - - public T get(AbstractKey key) { - if (map.get(key) == null) return null; - return key.getType().cast(map.get(key)); - } - - public T put(AbstractKey key, T value) { - return key.getType().cast(map.put(key, key.getType().cast(value))); - } - - public Set> keySet() { - return map.keySet(); - } - } - - static class ModKey { - private String name; - private String id; - - public ModKey(String name, String id) { - super(); - this.name = name; - this.id = id; - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((id == null) ? 0 : id.hashCode()); - result = prime * result + ((name == null) ? 0 : name.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - ModKey other = (ModKey) obj; - if (id == null) { - if (other.id != null) - return false; - } else if (!id.equals(other.id)) - return false; - if (name == null) { - if (other.name != null) - return false; - } else if (!name.equals(other.name)) - return false; - return true; - } - - } - - private static Logger log = LoggerFactory.getLogger(VehicleRoutingAlgorithms.class.getName()); - - private VehicleRoutingAlgorithms() { - } - - /** - * Creates a {@link com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm} from a AlgorithConfig based on the input vrp. - * - * @param vrp the routing problem - * @param algorithmConfig the algorithm config - * @return {@link com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm} - */ - public static VehicleRoutingAlgorithm createAlgorithm(final VehicleRoutingProblem vrp, final AlgorithmConfig algorithmConfig) { - return createAlgo(vrp, algorithmConfig.getXMLConfiguration(), 0, null); - } - - public static VehicleRoutingAlgorithm createAlgorithm(final VehicleRoutingProblem vrp, int nThreads, final AlgorithmConfig algorithmConfig) { - return createAlgo(vrp, algorithmConfig.getXMLConfiguration(), nThreads, null); - } - - /** - * Read and creates a {@link VehicleRoutingAlgorithm} from an url. - * - * @param vrp the routing problem - * @param configURL config url - * @return {@link com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm} - */ - public static VehicleRoutingAlgorithm readAndCreateAlgorithm(final VehicleRoutingProblem vrp, final URL configURL) { - AlgorithmConfig algorithmConfig = new AlgorithmConfig(); - AlgorithmConfigXmlReader xmlReader = new AlgorithmConfigXmlReader(algorithmConfig); - xmlReader.read(configURL); - return createAlgo(vrp, algorithmConfig.getXMLConfiguration(), 0, null); - } - - public static VehicleRoutingAlgorithm readAndCreateAlgorithm(final VehicleRoutingProblem vrp, int nThreads, final URL configURL) { - AlgorithmConfig algorithmConfig = new AlgorithmConfig(); - AlgorithmConfigXmlReader xmlReader = new AlgorithmConfigXmlReader(algorithmConfig); - xmlReader.read(configURL); - return createAlgo(vrp, algorithmConfig.getXMLConfiguration(), nThreads, null); - } - - /** - * Read and creates {@link com.graphhopper.jsprit.core.problem.VehicleRoutingProblem} from config-file. - * - * @param vrp the routing problem - * @param configFileName the config filename (and location) - * @return {@link com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm} - */ - public static VehicleRoutingAlgorithm readAndCreateAlgorithm(final VehicleRoutingProblem vrp, final String configFileName) { - AlgorithmConfig algorithmConfig = new AlgorithmConfig(); - AlgorithmConfigXmlReader xmlReader = new AlgorithmConfigXmlReader(algorithmConfig); - xmlReader.read(configFileName); - return createAlgo(vrp, algorithmConfig.getXMLConfiguration(), 0, null); - } - - public static VehicleRoutingAlgorithm readAndCreateAlgorithm(final VehicleRoutingProblem vrp, final String configFileName, StateManager stateManager) { - AlgorithmConfig algorithmConfig = new AlgorithmConfig(); - AlgorithmConfigXmlReader xmlReader = new AlgorithmConfigXmlReader(algorithmConfig); - xmlReader.read(configFileName); - return createAlgo(vrp, algorithmConfig.getXMLConfiguration(), 0, stateManager); - } - - public static VehicleRoutingAlgorithm readAndCreateAlgorithm(final VehicleRoutingProblem vrp, int nThreads, final String configFileName, StateManager stateManager) { - AlgorithmConfig algorithmConfig = new AlgorithmConfig(); - AlgorithmConfigXmlReader xmlReader = new AlgorithmConfigXmlReader(algorithmConfig); - xmlReader.read(configFileName); - return createAlgo(vrp, algorithmConfig.getXMLConfiguration(), nThreads, stateManager); - } - - public static VehicleRoutingAlgorithm readAndCreateAlgorithm(VehicleRoutingProblem vrp, int nThreads, String configFileName) { - AlgorithmConfig algorithmConfig = new AlgorithmConfig(); - AlgorithmConfigXmlReader xmlReader = new AlgorithmConfigXmlReader(algorithmConfig); - xmlReader.read(configFileName); - return createAlgo(vrp, algorithmConfig.getXMLConfiguration(), nThreads, null); - } - - private static class OpenRouteStateVerifier implements StateUpdater, ReverseActivityVisitor { - - private End end; - - private boolean firstAct = true; - - private Vehicle vehicle; - - @Override - public void begin(VehicleRoute route) { - end = route.getEnd(); - vehicle = route.getVehicle(); - } - - @Override - public void visit(TourActivity activity) { - if (firstAct) { - firstAct = false; - if (!vehicle.isReturnToDepot()) { - assert activity.getLocation().getId().equals(end.getLocation().getId()) : "route end and last activity are not equal even route is open. this should not be."; - } - } - - } - - @Override - public void finish() { - firstAct = true; - } - - } - - private static VehicleRoutingAlgorithm createAlgo(final VehicleRoutingProblem vrp, XMLConfiguration config, int nuOfThreads, StateManager stateMan) { - //create state-manager - final StateManager stateManager; - if (stateMan != null) { - stateManager = stateMan; - } else { - stateManager = new StateManager(vrp); - } - stateManager.updateLoadStates(); - stateManager.updateTimeWindowStates(); - stateManager.updateSkillStates(); - stateManager.addStateUpdater(new UpdateEndLocationIfRouteIsOpen()); - stateManager.addStateUpdater(new OpenRouteStateVerifier()); -// stateManager.addStateUpdater(new UpdateActivityTimes(vrp.getTransportCosts())); -// stateManager.addStateUpdater(new UpdateVariableCosts(vrp.getActivityCosts(), vrp.getTransportCosts(), stateManager)); - - /* - * define constraints - */ - //constraint manager - ConstraintManager constraintManager = new ConstraintManager(vrp, stateManager); - constraintManager.addTimeWindowConstraint(); - constraintManager.addLoadConstraint(); - constraintManager.addSkillsConstraint(); - constraintManager.addConstraint(new SwitchNotFeasible(stateManager)); - - return readAndCreateAlgorithm(vrp, config, nuOfThreads, null, stateManager, constraintManager, true, true); - } - - public static VehicleRoutingAlgorithm readAndCreateAlgorithm(final VehicleRoutingProblem vrp, AlgorithmConfig config, - int nuOfThreads, SolutionCostCalculator solutionCostCalculator, final StateManager stateManager, ConstraintManager constraintManager, boolean addDefaultCostCalculators) { - return readAndCreateAlgorithm(vrp, config.getXMLConfiguration(), nuOfThreads, solutionCostCalculator, stateManager, constraintManager, addDefaultCostCalculators); - } - - - public static VehicleRoutingAlgorithm readAndCreateAlgorithm(final VehicleRoutingProblem vrp, AlgorithmConfig config, - int nuOfThreads, SolutionCostCalculator solutionCostCalculator, final StateManager stateManager, ConstraintManager constraintManager, boolean addDefaultCostCalculators, boolean addCoreConstraints) { - return readAndCreateAlgorithm(vrp, config.getXMLConfiguration(), nuOfThreads, solutionCostCalculator, stateManager, constraintManager, addDefaultCostCalculators, addCoreConstraints); - } - - private static VehicleRoutingAlgorithm readAndCreateAlgorithm(final VehicleRoutingProblem vrp, XMLConfiguration config, - int nuOfThreads, final SolutionCostCalculator solutionCostCalculator, final StateManager stateManager, ConstraintManager constraintManager, boolean addDefaultCostCalculators) { - - return readAndCreateAlgorithm(vrp, config, nuOfThreads, solutionCostCalculator, stateManager, constraintManager, addDefaultCostCalculators, true); - } - - private static VehicleRoutingAlgorithm readAndCreateAlgorithm(final VehicleRoutingProblem vrp, XMLConfiguration config, - int nuOfThreads, final SolutionCostCalculator solutionCostCalculator, final StateManager stateManager, ConstraintManager constraintManager, boolean addDefaultCostCalculators, boolean addCoreConstraints) { - // map to store constructed modules - TypedMap definedClasses = new TypedMap(); - - // algorithm listeners - Set algorithmListeners = new HashSet(); - - // insertion listeners - List insertionListeners = new ArrayList(); - - - //threading - final ExecutorService executorService; - if (nuOfThreads > 0) { - log.debug("setup executor-service with " + nuOfThreads + " threads"); - executorService = Executors.newFixedThreadPool(nuOfThreads); - algorithmListeners.add(new PrioritizedVRAListener(Priority.LOW, new AlgorithmEndsListener() { - - @Override - public void informAlgorithmEnds(VehicleRoutingProblem problem, Collection solutions) { - log.debug("shutdown executor-service"); - executorService.shutdown(); - } - })); - Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler() { - - @Override - public void uncaughtException(Thread arg0, Throwable arg1) { - System.err.println(arg1.toString()); - } - }); - Runtime.getRuntime().addShutdownHook(new Thread() { - public void run() { - if (!executorService.isShutdown()) { - System.err.println("shutdowHook shuts down executorService"); - executorService.shutdown(); - } - } - }); - } else executorService = null; - - - //create fleetmanager - final VehicleFleetManager vehicleFleetManager = createFleetManager(vrp); - - String switchString = config.getString("construction.insertion.allowVehicleSwitch"); - final boolean switchAllowed; - if (switchString != null) { - switchAllowed = Boolean.parseBoolean(switchString); - } else switchAllowed = true; - ActivityTimeTracker.ActivityPolicy activityPolicy; - if (stateManager.timeWindowUpdateIsActivated()) { - UpdateVehicleDependentPracticalTimeWindows timeWindowUpdater = new UpdateVehicleDependentPracticalTimeWindows(stateManager, vrp.getTransportCosts(), vrp.getActivityCosts()); - timeWindowUpdater.setVehiclesToUpdate(new UpdateVehicleDependentPracticalTimeWindows.VehiclesToUpdate() { - Map uniqueTypes = new HashMap(); - - @Override - public Collection get(VehicleRoute vehicleRoute) { - if (uniqueTypes.isEmpty()) { - for (Vehicle v : vrp.getVehicles()) { - if (!uniqueTypes.containsKey(v.getVehicleTypeIdentifier())) { - uniqueTypes.put(v.getVehicleTypeIdentifier(), v); - } - } - } - Collection vehicles = new ArrayList(); - vehicles.addAll(uniqueTypes.values()); - return vehicles; - } - }); - stateManager.addStateUpdater(timeWindowUpdater); - activityPolicy = ActivityTimeTracker.ActivityPolicy.AS_SOON_AS_TIME_WINDOW_OPENS; - } else { - activityPolicy = ActivityTimeTracker.ActivityPolicy.AS_SOON_AS_ARRIVED; - } - stateManager.addStateUpdater(new UpdateActivityTimes(vrp.getTransportCosts(), activityPolicy, vrp.getActivityCosts())); - stateManager.addStateUpdater(new UpdateVariableCosts(vrp.getActivityCosts(), vrp.getTransportCosts(), stateManager, activityPolicy)); - - final SolutionCostCalculator costCalculator; - if (solutionCostCalculator == null) costCalculator = getDefaultCostCalculator(stateManager); - else costCalculator = solutionCostCalculator; - - PrettyAlgorithmBuilder prettyAlgorithmBuilder = PrettyAlgorithmBuilder.newInstance(vrp, vehicleFleetManager, stateManager, constraintManager); - if(addCoreConstraints) - prettyAlgorithmBuilder.addCoreStateAndConstraintStuff(); - //construct initial solution creator - final InsertionStrategy initialInsertionStrategy = createInitialSolution(config, vrp, vehicleFleetManager, stateManager, algorithmListeners, definedClasses, executorService, nuOfThreads, costCalculator, constraintManager, addDefaultCostCalculators); - if (initialInsertionStrategy != null) - prettyAlgorithmBuilder.constructInitialSolutionWith(initialInsertionStrategy, costCalculator); - - //construct algorithm, i.e. search-strategies and its modules - int solutionMemory = config.getInt("strategy.memory"); - List strategyConfigs = config.configurationsAt("strategy.searchStrategies.searchStrategy"); - for (HierarchicalConfiguration strategyConfig : strategyConfigs) { - String name = getName(strategyConfig); - SolutionAcceptor acceptor = getAcceptor(strategyConfig, vrp, algorithmListeners, definedClasses, solutionMemory); - SolutionSelector selector = getSelector(strategyConfig, vrp, algorithmListeners, definedClasses); - - SearchStrategy strategy = new SearchStrategy(name, selector, acceptor, costCalculator); - strategy.setName(name); - List modulesConfig = strategyConfig.configurationsAt("modules.module"); - for (HierarchicalConfiguration moduleConfig : modulesConfig) { - SearchStrategyModule module = buildModule(moduleConfig, vrp, vehicleFleetManager, stateManager, algorithmListeners, definedClasses, executorService, nuOfThreads, constraintManager, addDefaultCostCalculators); - strategy.addModule(module); - } - prettyAlgorithmBuilder.withStrategy(strategy, strategyConfig.getDouble("probability")); - } - - //construct algorithm - VehicleRoutingAlgorithm metaAlgorithm = prettyAlgorithmBuilder.build(); - int maxIterations = getMaxIterations(config); - if (maxIterations > -1) metaAlgorithm.setMaxIterations(maxIterations); - - //define prematureBreak - PrematureAlgorithmTermination prematureAlgorithmTermination = getPrematureTermination(config, algorithmListeners); - if (prematureAlgorithmTermination != null) - metaAlgorithm.setPrematureAlgorithmTermination(prematureAlgorithmTermination); - else { - List terminationCriteria = config.configurationsAt("terminationCriteria.termination"); - for (HierarchicalConfiguration terminationConfig : terminationCriteria) { - PrematureAlgorithmTermination termination = getTerminationCriterion(terminationConfig, algorithmListeners); - if (termination != null) metaAlgorithm.addTerminationCriterion(termination); - } - } - for (PrioritizedVRAListener l : algorithmListeners) { - metaAlgorithm.getAlgorithmListeners().add(l); - } - return metaAlgorithm; - } - - private static int getMaxIterations(XMLConfiguration config) { - String maxIterationsString = config.getString("iterations"); - if (maxIterationsString == null) maxIterationsString = config.getString("maxIterations"); - if (maxIterationsString != null) return (Integer.parseInt(maxIterationsString)); - return -1; - } - - private static SolutionCostCalculator getDefaultCostCalculator(final StateManager stateManager) { - return new VariablePlusFixedSolutionCostCalculatorFactory(stateManager).createCalculator(); - } - - private static VehicleFleetManager createFleetManager(final VehicleRoutingProblem vrp) { - if (vrp.getFleetSize().equals(FleetSize.INFINITE)) { - return new InfiniteFleetManagerFactory(vrp.getVehicles()).createFleetManager(); - - } else if (vrp.getFleetSize().equals(FleetSize.FINITE)) { - return new FiniteFleetManagerFactory(vrp.getVehicles()).createFleetManager(); - } - throw new IllegalStateException("fleet size can only be infinite or finite. " + - "makes sure your config file contains one of these options"); - } - - private static PrematureAlgorithmTermination getTerminationCriterion(HierarchicalConfiguration config, Set algorithmListeners) { - String basedOn = config.getString("[@basedOn]"); - if (basedOn == null) { - log.debug("set default prematureBreak, i.e. no premature break at all."); - return null; - } - if (basedOn.equals("iterations")) { - log.debug("set prematureBreak based on iterations"); - String iter = config.getString("iterations"); - if (iter == null) throw new IllegalStateException("iterations is missing"); - int iterations = Integer.valueOf(iter); - return new IterationWithoutImprovementTermination(iterations); - } - if (basedOn.equals("time")) { - log.debug("set prematureBreak based on time"); - String timeString = config.getString("time"); - if (timeString == null) throw new IllegalStateException("time is missing"); - long time = Long.parseLong(timeString); - TimeTermination timeBreaker = new TimeTermination(time); - algorithmListeners.add(new PrioritizedVRAListener(Priority.LOW, timeBreaker)); - return timeBreaker; - } - if (basedOn.equals("variationCoefficient")) { - log.debug("set prematureBreak based on variation coefficient"); - String thresholdString = config.getString("threshold"); - String iterationsString = config.getString("iterations"); - if (thresholdString == null) throw new IllegalStateException("threshold is missing"); - if (iterationsString == null) throw new IllegalStateException("iterations is missing"); - double threshold = Double.valueOf(thresholdString); - int iterations = Integer.valueOf(iterationsString); - VariationCoefficientTermination variationCoefficientBreaker = new VariationCoefficientTermination(iterations, threshold); - algorithmListeners.add(new PrioritizedVRAListener(Priority.LOW, variationCoefficientBreaker)); - return variationCoefficientBreaker; - } - throw new IllegalStateException("prematureBreak basedOn " + basedOn + " is not defined"); - } - - private static PrematureAlgorithmTermination getPrematureTermination(XMLConfiguration config, Set algorithmListeners) { - String basedOn = config.getString("prematureBreak[@basedOn]"); - if (basedOn == null) { - log.debug("set default prematureBreak, i.e. no premature break at all."); - return null; - } - if (basedOn.equals("iterations")) { - log.debug("set prematureBreak based on iterations"); - String iter = config.getString("prematureBreak.iterations"); - if (iter == null) throw new IllegalStateException("prematureBreak.iterations is missing"); - int iterations = Integer.valueOf(iter); - return new IterationWithoutImprovementTermination(iterations); - } - if (basedOn.equals("time")) { - log.debug("set prematureBreak based on time"); - String timeString = config.getString("prematureBreak.time"); - if (timeString == null) throw new IllegalStateException("prematureBreak.time is missing"); - long time = Long.parseLong(timeString); - TimeTermination timeBreaker = new TimeTermination(time); - algorithmListeners.add(new PrioritizedVRAListener(Priority.LOW, timeBreaker)); - return timeBreaker; - } - if (basedOn.equals("variationCoefficient")) { - log.debug("set prematureBreak based on variation coefficient"); - String thresholdString = config.getString("prematureBreak.threshold"); - String iterationsString = config.getString("prematureBreak.iterations"); - if (thresholdString == null) throw new IllegalStateException("prematureBreak.threshold is missing"); - if (iterationsString == null) throw new IllegalStateException("prematureBreak.iterations is missing"); - double threshold = Double.valueOf(thresholdString); - int iterations = Integer.valueOf(iterationsString); - VariationCoefficientTermination variationCoefficientBreaker = new VariationCoefficientTermination(iterations, threshold); - algorithmListeners.add(new PrioritizedVRAListener(Priority.LOW, variationCoefficientBreaker)); - return variationCoefficientBreaker; - } - throw new IllegalStateException("prematureBreak basedOn " + basedOn + " is not defined"); - } - - private static String getName(HierarchicalConfiguration strategyConfig) { - if (strategyConfig.containsKey("[@name]")) { - return strategyConfig.getString("[@name]"); - } - return ""; - } - - private static InsertionStrategy createInitialSolution(XMLConfiguration config, final VehicleRoutingProblem vrp, VehicleFleetManager vehicleFleetManager, final StateManager routeStates, Set algorithmListeners, TypedMap definedClasses, ExecutorService executorService, int nuOfThreads, final SolutionCostCalculator solutionCostCalculator, ConstraintManager constraintManager, boolean addDefaultCostCalculators) { - List modConfigs = config.configurationsAt("construction.insertion"); - if (modConfigs == null) return null; - if (modConfigs.isEmpty()) return null; - if (modConfigs.size() != 1) throw new IllegalStateException("#construction.modules != 1. 1 expected"); - HierarchicalConfiguration modConfig = modConfigs.get(0); - String insertionName = modConfig.getString("[@name]"); - if (insertionName == null) throw new IllegalStateException("insertion[@name] is missing."); - String insertionId = modConfig.getString("[@id]"); - if (insertionId == null) insertionId = "noId"; - ModKey modKey = makeKey(insertionName, insertionId); - InsertionStrategyKey insertionStrategyKey = new InsertionStrategyKey(modKey); - InsertionStrategy insertionStrategy = definedClasses.get(insertionStrategyKey); - if (insertionStrategy == null) { - List prioListeners = new ArrayList(); - insertionStrategy = createInsertionStrategy(modConfig, vrp, vehicleFleetManager, routeStates, prioListeners, executorService, nuOfThreads, constraintManager, addDefaultCostCalculators); - algorithmListeners.addAll(prioListeners); - definedClasses.put(insertionStrategyKey, insertionStrategy); - } - return insertionStrategy; - } - - private static SolutionSelector getSelector(HierarchicalConfiguration strategyConfig, VehicleRoutingProblem vrp, Set algorithmListeners, TypedMap definedSelectors) { - String selectorName = strategyConfig.getString("selector[@name]"); - if (selectorName == null) - throw new IllegalStateException("no solutionSelector defined. define either \"selectRandomly\" or \"selectBest\""); - String selectorId = strategyConfig.getString("selector[@id]"); - if (selectorId == null) selectorId = "noId"; - ModKey modKey = makeKey(selectorName, selectorId); - SelectorKey selectorKey = new SelectorKey(modKey); - SolutionSelector definedSelector = definedSelectors.get(selectorKey); - if (definedSelector != null) { - return definedSelector; - } - if (selectorName.equals("selectRandomly")) { - SelectRandomly selector = SelectRandomly.getInstance(); - definedSelectors.put(selectorKey, selector); - return selector; - } - if (selectorName.equals("selectBest")) { - SelectBest selector = SelectBest.getInstance(); - definedSelectors.put(selectorKey, selector); - return selector; - } - throw new IllegalStateException("solutionSelector is not know. Currently, it only knows \"selectRandomly\" and \"selectBest\""); - } - - private static ModKey makeKey(String name, String id) { - return new ModKey(name, id); - } - - private static SolutionAcceptor getAcceptor(HierarchicalConfiguration strategyConfig, VehicleRoutingProblem vrp, Set algorithmListeners, TypedMap typedMap, int solutionMemory) { - String acceptorName = strategyConfig.getString("acceptor[@name]"); - if (acceptorName == null) throw new IllegalStateException("no solution acceptor is defined"); - String acceptorId = strategyConfig.getString("acceptor[@id]"); - if (acceptorId == null) acceptorId = "noId"; - AcceptorKey acceptorKey = new AcceptorKey(makeKey(acceptorName, acceptorId)); - SolutionAcceptor definedAcceptor = typedMap.get(acceptorKey); - if (definedAcceptor != null) return definedAcceptor; - if (acceptorName.equals("acceptNewRemoveWorst")) { - GreedyAcceptance acceptor = new GreedyAcceptance(solutionMemory); - typedMap.put(acceptorKey, acceptor); - return acceptor; - } - if (acceptorName.equals("acceptNewRemoveFirst")) { - AcceptNewRemoveFirst acceptor = new AcceptNewRemoveFirst(solutionMemory); - typedMap.put(acceptorKey, acceptor); - return acceptor; - } - if (acceptorName.equals("greedyAcceptance")) { - GreedyAcceptance acceptor = new GreedyAcceptance(solutionMemory); - typedMap.put(acceptorKey, acceptor); - return acceptor; - } - if (acceptorName.equals("schrimpfAcceptance")) { - String nuWarmupIterations = strategyConfig.getString("acceptor.warmup"); - double alpha = strategyConfig.getDouble("acceptor.alpha"); - SchrimpfAcceptance schrimpf = new SchrimpfAcceptance(solutionMemory, alpha); - if (nuWarmupIterations != null) { - SchrimpfInitialThresholdGenerator iniThresholdGenerator = new SchrimpfInitialThresholdGenerator(schrimpf, Integer.parseInt(nuWarmupIterations)); - algorithmListeners.add(new PrioritizedVRAListener(Priority.LOW, iniThresholdGenerator)); - } else { - double threshold = strategyConfig.getDouble("acceptor.initialThreshold"); - schrimpf.setInitialThreshold(threshold); - } - algorithmListeners.add(new PrioritizedVRAListener(Priority.LOW, schrimpf)); - typedMap.put(acceptorKey, schrimpf); - return schrimpf; - } - if (acceptorName.equals("experimentalSchrimpfAcceptance")) { - int iterOfSchrimpf = strategyConfig.getInt("acceptor.warmup"); - double alpha = strategyConfig.getDouble("acceptor.alpha"); - ExperimentalSchrimpfAcceptance schrimpf = new ExperimentalSchrimpfAcceptance(solutionMemory, alpha, iterOfSchrimpf); - algorithmListeners.add(new PrioritizedVRAListener(Priority.LOW, schrimpf)); - typedMap.put(acceptorKey, schrimpf); - return schrimpf; - } else { - throw new IllegalStateException("solution acceptor " + acceptorName + " is not known"); - } - } - - private static SearchStrategyModule buildModule(HierarchicalConfiguration moduleConfig, final VehicleRoutingProblem vrp, VehicleFleetManager vehicleFleetManager, - final StateManager routeStates, Set algorithmListeners, TypedMap definedClasses, ExecutorService executorService, int nuOfThreads, ConstraintManager constraintManager, boolean addDefaultCostCalculators) { - String moduleName = moduleConfig.getString("[@name]"); - if (moduleName == null) throw new IllegalStateException("module(-name) is missing."); - String moduleId = moduleConfig.getString("[@id]"); - if (moduleId == null) moduleId = "noId"; - ModKey modKey = makeKey(moduleName, moduleId); - StrategyModuleKey strategyModuleKey = new StrategyModuleKey(modKey); - SearchStrategyModule definedModule = definedClasses.get(strategyModuleKey); - if (definedModule != null) return definedModule; - - if (moduleName.equals("ruin_and_recreate")) { - String ruin_name = moduleConfig.getString("ruin[@name]"); - if (ruin_name == null) throw new IllegalStateException("module.ruin[@name] is missing."); - String ruin_id = moduleConfig.getString("ruin[@id]"); - if (ruin_id == null) ruin_id = "noId"; - final RuinStrategy ruin; - ModKey ruinKey = makeKey(ruin_name, ruin_id); - if (ruin_name.equals("randomRuin")) { - String shareToRuinString = moduleConfig.getString("ruin.share"); - if (shareToRuinString == null) throw new IllegalStateException("module.ruin.share is missing."); - double shareToRuin = Double.valueOf(shareToRuinString); - ruin = getRandomRuin(vrp, routeStates, definedClasses, ruinKey, shareToRuin); - } else if (ruin_name.equals("radialRuin")) { - String shareToRuinString = moduleConfig.getString("ruin.share"); - if (shareToRuinString == null) throw new IllegalStateException("module.ruin.share is missing."); - double shareToRuin = Double.valueOf(shareToRuinString); - JobDistance jobDistance = new AvgServiceAndShipmentDistance(vrp.getTransportCosts()); - ruin = getRadialRuin(vrp, routeStates, definedClasses, ruinKey, shareToRuin, jobDistance); - } else if (ruin_name.equals("clusterRuin")) { - String initialNumberJobsToRemoveString = moduleConfig.getString("ruin.initRemoveJobs"); - if (initialNumberJobsToRemoveString == null) throw new IllegalStateException("module.ruin.initRemoveJobs is missing."); - int initialNumberJobsToRemove = Integer.valueOf(initialNumberJobsToRemoveString); - ruin = getClusterRuin(vrp, routeStates, definedClasses, ruinKey, initialNumberJobsToRemove); - } else throw new IllegalStateException("ruin[@name] " + ruin_name + " is not known. Use either randomRuin or radialRuin."); - - String insertionName = moduleConfig.getString("insertion[@name]"); - if (insertionName == null) - throw new IllegalStateException("module.insertion[@name] is missing. set it to \"regretInsertion\" or \"bestInsertion\""); - String insertionId = moduleConfig.getString("insertion[@id]"); - if (insertionId == null) insertionId = "noId"; - ModKey insertionKey = makeKey(insertionName, insertionId); - InsertionStrategyKey insertionStrategyKey = new InsertionStrategyKey(insertionKey); - InsertionStrategy insertion = definedClasses.get(insertionStrategyKey); - if (insertion == null) { - List insertionConfigs = moduleConfig.configurationsAt("insertion"); - if (insertionConfigs.size() != 1) throw new IllegalStateException("this should be 1"); - List prioListeners = new ArrayList(); - insertion = createInsertionStrategy(insertionConfigs.get(0), vrp, vehicleFleetManager, routeStates, prioListeners, executorService, nuOfThreads, constraintManager, addDefaultCostCalculators); - algorithmListeners.addAll(prioListeners); - } - final InsertionStrategy final_insertion = insertion; - - RuinAndRecreateModule rrModule = new RuinAndRecreateModule("ruin_and_recreate", final_insertion, ruin); - return rrModule; - } - throw new NullPointerException("no module found with moduleName=" + moduleName + - "\n\tcheck config whether the correct names are used" + - "\n\tcurrently there are following modules available: " + - "\n\tbestInsertion" + - "\n\trandomRuin" + - "\n\tradialRuin" + - "\n\tclusterRuin"); - } - - private static RuinStrategy getRadialRuin(final VehicleRoutingProblem vrp, final StateManager routeStates, TypedMap definedClasses, ModKey modKey, double shareToRuin, JobDistance jobDistance) { - RuinStrategyKey stratKey = new RuinStrategyKey(modKey); - RuinStrategy ruin = definedClasses.get(stratKey); - if (ruin == null) { - ruin = new RadialRuinStrategyFactory(shareToRuin, jobDistance).createStrategy(vrp); - definedClasses.put(stratKey, ruin); - } - return ruin; - } - - private static RuinStrategy getClusterRuin(final VehicleRoutingProblem vrp, final StateManager routeStates, TypedMap definedClasses, ModKey modKey, int initialNumberJobsToRemove) { - JobNeighborhoods jobNeighborhoods = new JobNeighborhoodsFactory().createNeighborhoods(vrp, new AvgServiceAndShipmentDistance(vrp.getTransportCosts())); - RuinStrategyKey stratKey = new RuinStrategyKey(modKey); - RuinStrategy ruin = definedClasses.get(stratKey); - if (ruin == null) { - ruin = new ClusterRuinStrategyFactory(initialNumberJobsToRemove, jobNeighborhoods).createStrategy(vrp); - definedClasses.put(stratKey, ruin); - } - return ruin; - } - - private static RuinStrategy getRandomRuin(final VehicleRoutingProblem vrp, final StateManager routeStates, TypedMap definedClasses, ModKey modKey, double shareToRuin) { - RuinStrategyKey stratKey = new RuinStrategyKey(modKey); - RuinStrategy ruin = definedClasses.get(stratKey); - if (ruin == null) { - ruin = new RandomRuinStrategyFactory(shareToRuin).createStrategy(vrp); - definedClasses.put(stratKey, ruin); - } - return ruin; - } - - private static InsertionStrategy createInsertionStrategy(HierarchicalConfiguration moduleConfig, VehicleRoutingProblem vrp, VehicleFleetManager vehicleFleetManager, StateManager routeStates, List algorithmListeners, ExecutorService executorService, int nuOfThreads, ConstraintManager constraintManager, boolean addDefaultCostCalculators) { - return InsertionFactory.createInsertion(vrp, moduleConfig, vehicleFleetManager, routeStates, algorithmListeners, executorService, nuOfThreads, constraintManager, addDefaultCostCalculators); - } - - -} diff --git a/jsprit-io/src/main/java/com/graphhopper/jsprit/io/problem/Schema.java b/jsprit-io/src/main/java/com/graphhopper/jsprit/io/problem/Schema.java deleted file mode 100644 index 1635841e1..000000000 --- a/jsprit-io/src/main/java/com/graphhopper/jsprit/io/problem/Schema.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.io.problem; - -final class Schema { - - public static final String PROBLEM = "problem"; - public static final String VEHICLE = "vehicle"; - public static final String TYPES = "vehicleTypes"; - public static final String VEHICLES = "vehicles"; - public static final String SHIPMENTS = "shipments"; - public static final String SHIPMENT = "shipment"; - public static final String SERVICETIME = "serviceTime"; - public static final String PICKUP = "pickup"; - public static final String TYPE = "type"; - - - public void dot() { - - } - - public static class PathBuilder { - - StringBuilder stringBuilder = new StringBuilder(); - boolean justCreated = true; - - - public PathBuilder dot(String string) { - stringBuilder.append(".").append(string); - return this; - } - - public PathBuilder append(String string) { - stringBuilder.append(string); - return this; - } - - public String build() { - return stringBuilder.toString(); - } - - } - - public static PathBuilder builder() { - return new PathBuilder(); - } - - private Schema() { - - } -} diff --git a/jsprit-io/src/main/java/com/graphhopper/jsprit/io/problem/VrpXMLReader.java b/jsprit-io/src/main/java/com/graphhopper/jsprit/io/problem/VrpXMLReader.java deleted file mode 100644 index 504d39c44..000000000 --- a/jsprit-io/src/main/java/com/graphhopper/jsprit/io/problem/VrpXMLReader.java +++ /dev/null @@ -1,723 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.io.problem; - -import com.graphhopper.jsprit.core.problem.Location; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem.FleetSize; -import com.graphhopper.jsprit.core.problem.driver.Driver; -import com.graphhopper.jsprit.core.problem.driver.DriverImpl; -import com.graphhopper.jsprit.core.problem.job.*; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; -import com.graphhopper.jsprit.core.problem.solution.route.activity.TimeWindow; -import com.graphhopper.jsprit.core.problem.vehicle.Vehicle; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl.Builder; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; -import com.graphhopper.jsprit.core.util.Coordinate; -import com.graphhopper.jsprit.core.util.Resource; -import org.apache.commons.configuration.ConfigurationException; -import org.apache.commons.configuration.HierarchicalConfiguration; -import org.apache.commons.configuration.XMLConfiguration; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.xml.sax.EntityResolver; -import org.xml.sax.InputSource; -import org.xml.sax.SAXException; - -import java.io.IOException; -import java.io.InputStream; -import java.util.*; - -public class VrpXMLReader { - - public interface ServiceBuilderFactory { - Service.Builder createBuilder(String serviceType, String id, Integer size); - } - - static class DefaultServiceBuilderFactory implements ServiceBuilderFactory { - - @Override - public Service.Builder createBuilder(String serviceType, String id, Integer size) { - if (serviceType.equals("pickup")) { - if (size != null) return Pickup.Builder.newInstance(id).addSizeDimension(0, size); - else return Pickup.Builder.newInstance(id); - } else if (serviceType.equals("delivery")) { - if (size != null) return Delivery.Builder.newInstance(id).addSizeDimension(0, size); - else return Delivery.Builder.newInstance(id); - } else { - if (size != null) return Service.Builder.newInstance(id).addSizeDimension(0, size); - else return Service.Builder.newInstance(id); - - } - } - } - - private static Logger logger = LoggerFactory.getLogger(VrpXMLReader.class); - - private VehicleRoutingProblem.Builder vrpBuilder; - - private Map vehicleMap; - - private Map serviceMap; - - private Map shipmentMap; - - private Set freezedJobIds = new HashSet(); - - private boolean schemaValidation = true; - - private Collection solutions; - - private ServiceBuilderFactory serviceBuilderFactory = new DefaultServiceBuilderFactory(); - - - - /** - * @param schemaValidation the schemaValidation to set - */ - @SuppressWarnings("UnusedDeclaration") - public void setSchemaValidation(boolean schemaValidation) { - this.schemaValidation = schemaValidation; - } - - public VrpXMLReader(VehicleRoutingProblem.Builder vrpBuilder, Collection solutions) { - this.vrpBuilder = vrpBuilder; - this.vehicleMap = new LinkedHashMap(); - this.serviceMap = new LinkedHashMap(); - this.shipmentMap = new LinkedHashMap(); - this.solutions = solutions; - } - - public VrpXMLReader(VehicleRoutingProblem.Builder vrpBuilder) { - this.vrpBuilder = vrpBuilder; - this.vehicleMap = new LinkedHashMap(); - this.serviceMap = new LinkedHashMap(); - this.shipmentMap = new LinkedHashMap(); - this.solutions = null; - } - - public void read(String filename) { - logger.debug("read vrp: {}", filename); - XMLConfiguration xmlConfig = createXMLConfiguration(); - try { - xmlConfig.load(filename); - } catch (ConfigurationException e) { - throw new RuntimeException(e); - } - read(xmlConfig); - } - - public void read(InputStream fileContents) { - XMLConfiguration xmlConfig = createXMLConfiguration(); - try { - xmlConfig.load(fileContents); - } catch (ConfigurationException e) { - throw new RuntimeException(e); - } - read(xmlConfig); - } - - private XMLConfiguration createXMLConfiguration() { - XMLConfiguration xmlConfig = new XMLConfiguration(); - xmlConfig.setAttributeSplittingDisabled(true); - xmlConfig.setDelimiterParsingDisabled(true); - - if (schemaValidation) { - final InputStream resource = Resource.getAsInputStream("vrp_xml_schema.xsd"); - if (resource != null) { - EntityResolver resolver = new EntityResolver() { - - @Override - public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException { - { - InputSource is = new InputSource(resource); - return is; - } - } - }; - xmlConfig.setEntityResolver(resolver); - xmlConfig.setSchemaValidation(true); - } else { - logger.debug("cannot find schema-xsd file (vrp_xml_schema.xsd). try to read xml without xml-file-validation."); - } - } - return xmlConfig; - } - - private void read(XMLConfiguration xmlConfig) { - readProblemType(xmlConfig); - readVehiclesAndTheirTypes(xmlConfig); - - readShipments(xmlConfig); - readServices(xmlConfig); - - readInitialRoutes(xmlConfig); - readSolutions(xmlConfig); - - addJobsAndTheirLocationsToVrp(); - } - - private void addJobsAndTheirLocationsToVrp() { - for (Service service : serviceMap.values()) { - if (!freezedJobIds.contains(service.getId())) { - vrpBuilder.addJob(service); - } - } - for (Shipment shipment : shipmentMap.values()) { - if (!freezedJobIds.contains(shipment.getId())) { - vrpBuilder.addJob(shipment); - } - } - } - - private void readInitialRoutes(XMLConfiguration xmlConfig) { - List initialRouteConfigs = xmlConfig.configurationsAt("initialRoutes.route"); - for (HierarchicalConfiguration routeConfig : initialRouteConfigs) { - Driver driver = DriverImpl.noDriver(); - String vehicleId = routeConfig.getString("vehicleId"); - Vehicle vehicle = getVehicle(vehicleId); - if (vehicle == null) throw new IllegalArgumentException("vehicle is missing."); - String start = routeConfig.getString("start"); - if (start == null) throw new IllegalArgumentException("route start-time is missing."); - double departureTime = Double.parseDouble(start); - - VehicleRoute.Builder routeBuilder = VehicleRoute.Builder.newInstance(vehicle, driver); - routeBuilder.setDepartureTime(departureTime); - - List actConfigs = routeConfig.configurationsAt("act"); - for (HierarchicalConfiguration actConfig : actConfigs) { - String type = actConfig.getString("[@type]"); - if (type == null) throw new IllegalArgumentException("act[@type] is missing."); - double arrTime = 0.; - double endTime = 0.; - String arrTimeS = actConfig.getString("arrTime"); - if (arrTimeS != null) arrTime = Double.parseDouble(arrTimeS); - String endTimeS = actConfig.getString("endTime"); - if (endTimeS != null) endTime = Double.parseDouble(endTimeS); - - String serviceId = actConfig.getString("serviceId"); - if(type.equals("break")) { - Break currentbreak = getBreak(vehicleId); - routeBuilder.addBreak(currentbreak); - } - else { - if (serviceId != null) { - Service service = getService(serviceId); - if (service == null) - throw new IllegalArgumentException("service to serviceId " + serviceId + " is missing (reference in one of your initial routes). make sure you define the service you refer to here in ."); - //!!!since job is part of initial route, it does not belong to jobs in problem, i.e. variable jobs that can be assigned/scheduled - freezedJobIds.add(serviceId); - routeBuilder.addService(service); - } else { - String shipmentId = actConfig.getString("shipmentId"); - if (shipmentId == null) - throw new IllegalArgumentException("either serviceId or shipmentId is missing"); - Shipment shipment = getShipment(shipmentId); - if (shipment == null) - throw new IllegalArgumentException("shipment to shipmentId " + shipmentId + " is missing (reference in one of your initial routes). make sure you define the shipment you refer to here in ."); - freezedJobIds.add(shipmentId); - if (type.equals("pickupShipment")) { - routeBuilder.addPickup(shipment); - } else if (type.equals("deliverShipment")) { - routeBuilder.addDelivery(shipment); - } else - throw new IllegalArgumentException("type " + type + " is not supported. Use 'pickupShipment' or 'deliverShipment' here"); - } - } - } - VehicleRoute route = routeBuilder.build(); - vrpBuilder.addInitialVehicleRoute(route); - } - - } - - private void readSolutions(XMLConfiguration vrpProblem) { - if (solutions == null) return; - List solutionConfigs = vrpProblem.configurationsAt("solutions.solution"); - for (HierarchicalConfiguration solutionConfig : solutionConfigs) { - String totalCost = solutionConfig.getString("cost"); - double cost = -1; - if (totalCost != null) cost = Double.parseDouble(totalCost); - List routeConfigs = solutionConfig.configurationsAt("routes.route"); - List routes = new ArrayList(); - for (HierarchicalConfiguration routeConfig : routeConfigs) { - //! here, driverId is set to noDriver, no matter whats in driverId. - Driver driver = DriverImpl.noDriver(); - String vehicleId = routeConfig.getString("vehicleId"); - Vehicle vehicle = getVehicle(vehicleId); - if (vehicle == null) throw new IllegalArgumentException("vehicle is missing."); - String start = routeConfig.getString("start"); - if (start == null) throw new IllegalArgumentException("route start-time is missing."); - double departureTime = Double.parseDouble(start); - - String end = routeConfig.getString("end"); - if (end == null) throw new IllegalArgumentException("route end-time is missing."); - - VehicleRoute.Builder routeBuilder = VehicleRoute.Builder.newInstance(vehicle, driver); - routeBuilder.setDepartureTime(departureTime); - List actConfigs = routeConfig.configurationsAt("act"); - for (HierarchicalConfiguration actConfig : actConfigs) { - String type = actConfig.getString("[@type]"); - if (type == null) throw new IllegalArgumentException("act[@type] is missing."); - double arrTime = 0.; - double endTime = 0.; - String arrTimeS = actConfig.getString("arrTime"); - if (arrTimeS != null) arrTime = Double.parseDouble(arrTimeS); - String endTimeS = actConfig.getString("endTime"); - if (endTimeS != null) endTime = Double.parseDouble(endTimeS); - if(type.equals("break")) { - Break currentbreak = getBreak(vehicleId); - routeBuilder.addBreak(currentbreak); - } - else { - String serviceId = actConfig.getString("serviceId"); - if (serviceId != null) { - Service service = getService(serviceId); - routeBuilder.addService(service); - } else { - String shipmentId = actConfig.getString("shipmentId"); - if (shipmentId == null) - throw new IllegalArgumentException("either serviceId or shipmentId is missing"); - Shipment shipment = getShipment(shipmentId); - if (shipment == null) - throw new IllegalArgumentException("shipment with id " + shipmentId + " does not exist."); - if (type.equals("pickupShipment")) { - routeBuilder.addPickup(shipment); - } else if (type.equals("deliverShipment")) { - routeBuilder.addDelivery(shipment); - } else - throw new IllegalArgumentException("type " + type + " is not supported. Use 'pickupShipment' or 'deliverShipment' here"); - } - } - } - routes.add(routeBuilder.build()); - } - VehicleRoutingProblemSolution solution = new VehicleRoutingProblemSolution(routes, cost); - List unassignedJobConfigs = solutionConfig.configurationsAt("unassignedJobs.job"); - for (HierarchicalConfiguration unassignedJobConfig : unassignedJobConfigs) { - String jobId = unassignedJobConfig.getString("[@id]"); - Job job = getShipment(jobId); - if (job == null) job = getService(jobId); - if (job == null) throw new IllegalArgumentException("cannot find unassignedJob with id " + jobId); - solution.getUnassignedJobs().add(job); - } - - solutions.add(solution); - } - } - - private Shipment getShipment(String shipmentId) { - return shipmentMap.get(shipmentId); - } - - private Service getService(String serviceId) { - return serviceMap.get(serviceId); - } - - private Vehicle getVehicle(String vehicleId) { - return vehicleMap.get(vehicleId); - } - - private Break getBreak(String vehicleId) { - return vehicleMap.get(vehicleId).getBreak(); - } - - private void readProblemType(XMLConfiguration vrpProblem) { - String fleetSize = vrpProblem.getString("problemType.fleetSize"); - if (fleetSize == null) vrpBuilder.setFleetSize(FleetSize.INFINITE); - else if (fleetSize.toUpperCase().equals(FleetSize.INFINITE.toString())) - vrpBuilder.setFleetSize(FleetSize.INFINITE); - else vrpBuilder.setFleetSize(FleetSize.FINITE); - } - - private void readShipments(XMLConfiguration config) { - List shipmentConfigs = config.configurationsAt("shipments.shipment"); - for (HierarchicalConfiguration shipmentConfig : shipmentConfigs) { - String id = shipmentConfig.getString("[@id]"); - if (id == null) throw new IllegalArgumentException("shipment[@id] is missing."); - - String capacityString = shipmentConfig.getString("capacity-demand"); - boolean capacityDimensionsExist = shipmentConfig.containsKey("capacity-dimensions.dimension(0)"); - if (capacityString == null && !capacityDimensionsExist) { - throw new IllegalArgumentException("capacity of shipment is not set. use 'capacity-dimensions'"); - } - if (capacityString != null && capacityDimensionsExist) { - throw new IllegalArgumentException("either use capacity or capacity-dimension, not both. prefer the use of 'capacity-dimensions' over 'capacity'."); - } - - Shipment.Builder builder; - if (capacityString != null) { - builder = Shipment.Builder.newInstance(id).addSizeDimension(0, Integer.parseInt(capacityString)); - } else { - builder = Shipment.Builder.newInstance(id); - List dimensionConfigs = shipmentConfig.configurationsAt("capacity-dimensions.dimension"); - for (HierarchicalConfiguration dimension : dimensionConfigs) { - Integer index = dimension.getInt("[@index]"); - Integer value = dimension.getInt(""); - builder.addSizeDimension(index, value); - } - } - - //name - String name = shipmentConfig.getString("name"); - if (name != null) builder.setName(name); - - //pickup location - //pickup-locationId - Location.Builder pickupLocationBuilder = Location.Builder.newInstance(); - String pickupLocationId = shipmentConfig.getString("pickup.locationId"); - if (pickupLocationId == null) pickupLocationId = shipmentConfig.getString("pickup.location.id"); - if (pickupLocationId != null) { - pickupLocationBuilder.setId(pickupLocationId); - } - - //pickup-coord - Coordinate pickupCoord = getCoord(shipmentConfig, "pickup."); - if (pickupCoord == null) pickupCoord = getCoord(shipmentConfig, "pickup.location."); - if (pickupCoord != null) { - pickupLocationBuilder.setCoordinate(pickupCoord); - } - - //pickup.location.index - String pickupLocationIndex = shipmentConfig.getString("pickup.location.index"); - if (pickupLocationIndex != null) pickupLocationBuilder.setIndex(Integer.parseInt(pickupLocationIndex)); - builder.setPickupLocation(pickupLocationBuilder.build()); - - //pickup-serviceTime - String pickupServiceTime = shipmentConfig.getString("pickup.duration"); - if (pickupServiceTime != null) builder.setPickupServiceTime(Double.parseDouble(pickupServiceTime)); - - //pickup-tw - List pickupTWConfigs = shipmentConfig.configurationsAt("pickup.timeWindows.timeWindow"); - if (!pickupTWConfigs.isEmpty()) { - for (HierarchicalConfiguration pu_twConfig : pickupTWConfigs) { - builder.addPickupTimeWindow(TimeWindow.newInstance(pu_twConfig.getDouble("start"), pu_twConfig.getDouble("end"))); - } - } - - //delivery location - //delivery-locationId - Location.Builder deliveryLocationBuilder = Location.Builder.newInstance(); - String deliveryLocationId = shipmentConfig.getString("delivery.locationId"); - if (deliveryLocationId == null) deliveryLocationId = shipmentConfig.getString("delivery.location.id"); - if (deliveryLocationId != null) { - deliveryLocationBuilder.setId(deliveryLocationId); -// builder.setDeliveryLocationId(deliveryLocationId); - } - - //delivery-coord - Coordinate deliveryCoord = getCoord(shipmentConfig, "delivery."); - if (deliveryCoord == null) deliveryCoord = getCoord(shipmentConfig, "delivery.location."); - if (deliveryCoord != null) { - deliveryLocationBuilder.setCoordinate(deliveryCoord); - } - - String deliveryLocationIndex = shipmentConfig.getString("delivery.location.index"); - if (deliveryLocationIndex != null) - deliveryLocationBuilder.setIndex(Integer.parseInt(deliveryLocationIndex)); - builder.setDeliveryLocation(deliveryLocationBuilder.build()); - - //delivery-serviceTime - String deliveryServiceTime = shipmentConfig.getString("delivery.duration"); - if (deliveryServiceTime != null) builder.setDeliveryServiceTime(Double.parseDouble(deliveryServiceTime)); - - //delivery-tw - List deliveryTWConfigs = shipmentConfig.configurationsAt("delivery.timeWindows.timeWindow"); - if (!deliveryTWConfigs.isEmpty()) { - for (HierarchicalConfiguration dl_twConfig : deliveryTWConfigs) { - builder.addDeliveryTimeWindow(TimeWindow.newInstance(dl_twConfig.getDouble("start"), dl_twConfig.getDouble("end"))); - } - } - - //read skills - String skillString = shipmentConfig.getString("requiredSkills"); - if (skillString != null) { - String cleaned = skillString.replaceAll("\\s", ""); - String[] skillTokens = cleaned.split("[,;]"); - for (String skill : skillTokens) builder.addRequiredSkill(skill.toLowerCase()); - } - - //build shipment - Shipment shipment = builder.build(); -// vrpBuilder.addJob(shipment); - shipmentMap.put(shipment.getId(), shipment); - } - } - - private static Coordinate getCoord(HierarchicalConfiguration serviceConfig, String prefix) { - Coordinate pickupCoord = null; - if (serviceConfig.getString(prefix + "coord[@x]") != null && serviceConfig.getString(prefix + "coord[@y]") != null) { - double x = Double.parseDouble(serviceConfig.getString(prefix + "coord[@x]")); - double y = Double.parseDouble(serviceConfig.getString(prefix + "coord[@y]")); - pickupCoord = Coordinate.newInstance(x, y); - } - return pickupCoord; - } - - private void readServices(XMLConfiguration vrpProblem) { - List serviceConfigs = vrpProblem.configurationsAt("services.service"); - for (HierarchicalConfiguration serviceConfig : serviceConfigs) { - String id = serviceConfig.getString("[@id]"); - if (id == null) throw new IllegalArgumentException("service[@id] is missing."); - String type = serviceConfig.getString("[@type]"); - if (type == null) type = "service"; - - String capacityString = serviceConfig.getString("capacity-demand"); - boolean capacityDimensionsExist = serviceConfig.containsKey("capacity-dimensions.dimension(0)"); - if (capacityString == null && !capacityDimensionsExist) { - throw new IllegalArgumentException("capacity of service is not set. use 'capacity-dimensions'"); - } - if (capacityString != null && capacityDimensionsExist) { - throw new IllegalArgumentException("either use capacity or capacity-dimension, not both. prefer the use of 'capacity-dimensions' over 'capacity'."); - } - - Service.Builder builder; - if (capacityString != null) { - builder = serviceBuilderFactory.createBuilder(type, id, Integer.parseInt(capacityString)); - } else { - builder = serviceBuilderFactory.createBuilder(type, id, null); - List dimensionConfigs = serviceConfig.configurationsAt("capacity-dimensions.dimension"); - for (HierarchicalConfiguration dimension : dimensionConfigs) { - Integer index = dimension.getInt("[@index]"); - Integer value = dimension.getInt(""); - builder.addSizeDimension(index, value); - } - } - - //name - String name = serviceConfig.getString("name"); - if (name != null) builder.setName(name); - - //location - Location.Builder locationBuilder = Location.Builder.newInstance(); - String serviceLocationId = serviceConfig.getString("locationId"); - if (serviceLocationId == null) { - serviceLocationId = serviceConfig.getString("location.id"); - } - if (serviceLocationId != null) locationBuilder.setId(serviceLocationId); - - Coordinate serviceCoord = getCoord(serviceConfig, ""); - if (serviceCoord == null) serviceCoord = getCoord(serviceConfig, "location."); - if (serviceCoord != null) { - locationBuilder.setCoordinate(serviceCoord); - } - - String locationIndex = serviceConfig.getString("location.index"); - if (locationIndex != null) locationBuilder.setIndex(Integer.parseInt(locationIndex)); - builder.setLocation(locationBuilder.build()); - - if (serviceConfig.containsKey("duration")) { - builder.setServiceTime(serviceConfig.getDouble("duration")); - } - List deliveryTWConfigs = serviceConfig.configurationsAt("timeWindows.timeWindow"); - if (!deliveryTWConfigs.isEmpty()) { - for (HierarchicalConfiguration twConfig : deliveryTWConfigs) { - builder.addTimeWindow(TimeWindow.newInstance(twConfig.getDouble("start"), twConfig.getDouble("end"))); - } - } - - //read skills - String skillString = serviceConfig.getString("requiredSkills"); - if (skillString != null) { - String cleaned = skillString.replaceAll("\\s", ""); - String[] skillTokens = cleaned.split("[,;]"); - for (String skill : skillTokens) builder.addRequiredSkill(skill.toLowerCase()); - } - - //build service - Service service = builder.build(); - serviceMap.put(service.getId(), service); -// vrpBuilder.addJob(service); - - } - } - - private void readVehiclesAndTheirTypes(XMLConfiguration vrpProblem) { - - //read vehicle-types - Map types = new HashMap(); - List typeConfigs = vrpProblem.configurationsAt("vehicleTypes.type"); - for (HierarchicalConfiguration typeConfig : typeConfigs) { - String typeId = typeConfig.getString("id"); - if (typeId == null) throw new IllegalArgumentException("typeId is missing."); - - String capacityString = typeConfig.getString("capacity"); - boolean capacityDimensionsExist = typeConfig.containsKey("capacity-dimensions.dimension(0)"); - if (capacityString == null && !capacityDimensionsExist) { - throw new IllegalArgumentException("capacity of type is not set. use 'capacity-dimensions'"); - } - if (capacityString != null && capacityDimensionsExist) { - throw new IllegalArgumentException("either use capacity or capacity-dimension, not both. prefer the use of 'capacity-dimensions' over 'capacity'."); - } - - VehicleTypeImpl.Builder typeBuilder; - if (capacityString != null) { - typeBuilder = VehicleTypeImpl.Builder.newInstance(typeId).addCapacityDimension(0, Integer.parseInt(capacityString)); - } else { - typeBuilder = VehicleTypeImpl.Builder.newInstance(typeId); - List dimensionConfigs = typeConfig.configurationsAt("capacity-dimensions.dimension"); - for (HierarchicalConfiguration dimension : dimensionConfigs) { - Integer index = dimension.getInt("[@index]"); - Integer value = dimension.getInt(""); - typeBuilder.addCapacityDimension(index, value); - } - } - - Double fix = typeConfig.getDouble("costs.fixed"); - Double timeC = typeConfig.getDouble("costs.time"); - Double distC = typeConfig.getDouble("costs.distance"); - if(typeConfig.containsKey("costs.service")){ - Double serviceC = typeConfig.getDouble("costs.service"); - if (serviceC != null) typeBuilder.setCostPerServiceTime(serviceC); - } - - if(typeConfig.containsKey("costs.wait")){ - Double waitC = typeConfig.getDouble("costs.wait"); - if (waitC != null) typeBuilder.setCostPerWaitingTime(waitC); - } - - if (fix != null) typeBuilder.setFixedCost(fix); - if (timeC != null) typeBuilder.setCostPerTransportTime(timeC); - if (distC != null) typeBuilder.setCostPerDistance(distC); - VehicleType type = typeBuilder.build(); - String id = type.getTypeId(); - types.put(id, type); - } - - //read vehicles - List vehicleConfigs = vrpProblem.configurationsAt("vehicles.vehicle"); - boolean doNotWarnAgain = false; - for (HierarchicalConfiguration vehicleConfig : vehicleConfigs) { - String vehicleId = vehicleConfig.getString("id"); - if (vehicleId == null) throw new IllegalArgumentException("vehicleId is missing."); - Builder builder = VehicleImpl.Builder.newInstance(vehicleId); - String typeId = vehicleConfig.getString("typeId"); - if (typeId == null) throw new IllegalArgumentException("typeId is missing."); - String vType = vehicleConfig.getString("[@type]"); - if (vType != null) { - if (vType.equals("penalty")) { - typeId += "_penalty"; - } - } - VehicleType type = types.get(typeId); - if (type == null) throw new IllegalArgumentException("vehicleType with typeId " + typeId + " is missing."); - builder.setType(type); - - //read startlocation - Location.Builder startLocationBuilder = Location.Builder.newInstance(); - String locationId = vehicleConfig.getString("location.id"); - if (locationId == null) { - locationId = vehicleConfig.getString("startLocation.id"); - } - startLocationBuilder.setId(locationId); - String coordX = vehicleConfig.getString("location.coord[@x]"); - String coordY = vehicleConfig.getString("location.coord[@y]"); - if (coordX == null || coordY == null) { - coordX = vehicleConfig.getString("startLocation.coord[@x]"); - coordY = vehicleConfig.getString("startLocation.coord[@y]"); - } - if (coordX == null || coordY == null) { - if (!doNotWarnAgain) { - logger.debug("location.coord is missing. will not warn you again."); - doNotWarnAgain = true; - } - } else { - Coordinate coordinate = Coordinate.newInstance(Double.parseDouble(coordX), Double.parseDouble(coordY)); - startLocationBuilder.setCoordinate(coordinate); - } - String index = vehicleConfig.getString("startLocation.index"); - if (index == null) index = vehicleConfig.getString("location.index"); - if (index != null) { - startLocationBuilder.setIndex(Integer.parseInt(index)); - } - builder.setStartLocation(startLocationBuilder.build()); - - //read endlocation - Location.Builder endLocationBuilder = Location.Builder.newInstance(); - boolean hasEndLocation = false; - String endLocationId = vehicleConfig.getString("endLocation.id"); - if (endLocationId != null) { - hasEndLocation = true; - endLocationBuilder.setId(endLocationId); - } - String endCoordX = vehicleConfig.getString("endLocation.coord[@x]"); - String endCoordY = vehicleConfig.getString("endLocation.coord[@y]"); - if (endCoordX == null || endCoordY == null) { - if (!doNotWarnAgain) { - logger.debug("endLocation.coord is missing. will not warn you again."); - doNotWarnAgain = true; - } - } else { - Coordinate coordinate = Coordinate.newInstance(Double.parseDouble(endCoordX), Double.parseDouble(endCoordY)); - hasEndLocation = true; - endLocationBuilder.setCoordinate(coordinate); - } - String endLocationIndex = vehicleConfig.getString("endLocation.index"); - if (endLocationIndex != null) { - hasEndLocation = true; - endLocationBuilder.setIndex(Integer.parseInt(endLocationIndex)); - } - if (hasEndLocation) builder.setEndLocation(endLocationBuilder.build()); - - //read timeSchedule - String start = vehicleConfig.getString("timeSchedule.start"); - String end = vehicleConfig.getString("timeSchedule.end"); - if (start != null) builder.setEarliestStart(Double.parseDouble(start)); - if (end != null) builder.setLatestArrival(Double.parseDouble(end)); - - //read return2depot - String returnToDepot = vehicleConfig.getString("returnToDepot"); - if (returnToDepot != null) { - builder.setReturnToDepot(vehicleConfig.getBoolean("returnToDepot")); - } - - //read skills - String skillString = vehicleConfig.getString("skills"); - if (skillString != null) { - String cleaned = skillString.replaceAll("\\s", ""); - String[] skillTokens = cleaned.split("[,;]"); - for (String skill : skillTokens) builder.addSkill(skill.toLowerCase()); - } - - // read break - List breakTWConfigs = vehicleConfig.configurationsAt("breaks.timeWindows.timeWindow"); - if (!breakTWConfigs.isEmpty()) { - String breakDurationString = vehicleConfig.getString("breaks.duration"); - String id = vehicleConfig.getString("breaks.id"); - Break.Builder current_break = Break.Builder.newInstance(id); - current_break.setServiceTime(Double.parseDouble(breakDurationString)); - for (HierarchicalConfiguration twConfig : breakTWConfigs) { - current_break.addTimeWindow(TimeWindow.newInstance(twConfig.getDouble("start"), twConfig.getDouble("end"))); - } - builder.setBreak(current_break.build()); - } - - - //build vehicle - VehicleImpl vehicle = builder.build(); - vrpBuilder.addVehicle(vehicle); - vehicleMap.put(vehicleId, vehicle); - } - - } - - -} diff --git a/jsprit-io/src/main/java/com/graphhopper/jsprit/io/problem/VrpXMLWriter.java b/jsprit-io/src/main/java/com/graphhopper/jsprit/io/problem/VrpXMLWriter.java deleted file mode 100644 index 57ba77f2f..000000000 --- a/jsprit-io/src/main/java/com/graphhopper/jsprit/io/problem/VrpXMLWriter.java +++ /dev/null @@ -1,454 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.io.problem; - -import com.graphhopper.jsprit.core.problem.Location; -import com.graphhopper.jsprit.core.problem.Skills; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.job.Break; -import com.graphhopper.jsprit.core.problem.job.Job; -import com.graphhopper.jsprit.core.problem.job.Service; -import com.graphhopper.jsprit.core.problem.job.Shipment; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; -import com.graphhopper.jsprit.core.problem.solution.route.activity.TimeWindow; -import com.graphhopper.jsprit.core.problem.solution.route.activity.TourActivity; -import com.graphhopper.jsprit.core.problem.vehicle.Vehicle; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; -import com.graphhopper.jsprit.core.util.Solutions; -import com.graphhopper.jsprit.core.util.VehicleIndexComparator; -import org.apache.commons.configuration.ConfigurationException; -import org.apache.commons.configuration.XMLConfiguration; -import org.apache.xml.serialize.OutputFormat; -import org.apache.xml.serialize.XMLSerializer; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.w3c.dom.Document; -import org.w3c.dom.Element; - -import java.io.*; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.List; - - -public class VrpXMLWriter { - - static class XMLConf extends XMLConfiguration { - - - /** - * - */ - private static final long serialVersionUID = 1L; - - public Document createDoc() throws ConfigurationException { - return createDocument(); - } - } - - private Logger log = LoggerFactory.getLogger(VrpXMLWriter.class); - - private VehicleRoutingProblem vrp; - - private Collection solutions; - - private boolean onlyBestSolution = false; - - public VrpXMLWriter(VehicleRoutingProblem vrp, Collection solutions, boolean onlyBestSolution) { - this.vrp = vrp; - this.solutions = new ArrayList(solutions); - this.onlyBestSolution = onlyBestSolution; - } - - public VrpXMLWriter(VehicleRoutingProblem vrp, Collection solutions) { - this.vrp = vrp; - this.solutions = solutions; - } - - public VrpXMLWriter(VehicleRoutingProblem vrp) { - this.vrp = vrp; - this.solutions = null; - } - - private static Logger logger = LoggerFactory.getLogger(VrpXMLWriter.class); - - public void write(String filename) { - if (!filename.endsWith(".xml")) filename += ".xml"; - log.info("write vrp: " + filename); - XMLConf xmlConfig = createXMLConfiguration(); - - try { - xmlConfig.setFileName(filename); - Writer out = new FileWriter(filename); - XMLSerializer serializer = new XMLSerializer(out, createOutputFormat()); - serializer.serialize(xmlConfig.getDocument()); - out.close(); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - public OutputStream write() { - XMLConf xmlConfig = createXMLConfiguration(); - OutputStream out = new ByteArrayOutputStream(); - - try { - XMLSerializer serializer = new XMLSerializer(out, createOutputFormat()); - serializer.serialize(xmlConfig.getDocument()); - out.close(); - } catch (IOException e) { - throw new RuntimeException(e); - } - - return out; - } - - private XMLConf createXMLConfiguration() { - XMLConf xmlConfig = new XMLConf(); - xmlConfig.setRootElementName("problem"); - xmlConfig.setAttributeSplittingDisabled(true); - xmlConfig.setDelimiterParsingDisabled(true); - - writeProblemType(xmlConfig); - writeVehiclesAndTheirTypes(xmlConfig); - - //might be sorted? - List jobs = new ArrayList(); - jobs.addAll(vrp.getJobs().values()); - for (VehicleRoute r : vrp.getInitialVehicleRoutes()) { - jobs.addAll(r.getTourActivities().getJobs()); - } - - writeServices(xmlConfig, jobs); - writeShipments(xmlConfig, jobs); - - writeInitialRoutes(xmlConfig); - if(onlyBestSolution && solutions != null) { - VehicleRoutingProblemSolution solution = Solutions.bestOf(solutions); - solutions.clear(); - solutions.add(solution); - } - - writeSolutions(xmlConfig); - - - try { - Document document = xmlConfig.createDoc(); - - Element element = document.getDocumentElement(); - element.setAttribute("xmlns", "http://www.w3schools.com"); - element.setAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance"); - element.setAttribute("xsi:schemaLocation", "http://www.w3schools.com vrp_xml_schema.xsd"); - - } catch (ConfigurationException e) { - throw new RuntimeException(e); - } - return xmlConfig; - } - - private OutputFormat createOutputFormat() { - OutputFormat format = new OutputFormat(); - format.setIndenting(true); - format.setIndent(5); - return format; - } - - private void writeInitialRoutes(XMLConf xmlConfig) { - if (vrp.getInitialVehicleRoutes().isEmpty()) return; - String path = "initialRoutes.route"; - int routeCounter = 0; - for (VehicleRoute route : vrp.getInitialVehicleRoutes()) { - xmlConfig.setProperty(path + "(" + routeCounter + ").driverId", route.getDriver().getId()); - xmlConfig.setProperty(path + "(" + routeCounter + ").vehicleId", route.getVehicle().getId()); - xmlConfig.setProperty(path + "(" + routeCounter + ").start", route.getStart().getEndTime()); - int actCounter = 0; - for (TourActivity act : route.getTourActivities().getActivities()) { - xmlConfig.setProperty(path + "(" + routeCounter + ").act(" + actCounter + ")[@type]", act.getName()); - if (act instanceof TourActivity.JobActivity) { - Job job = ((TourActivity.JobActivity) act).getJob(); - if (job instanceof Service) { - xmlConfig.setProperty(path + "(" + routeCounter + ").act(" + actCounter + ").serviceId", job.getId()); - } else if (job instanceof Shipment) { - xmlConfig.setProperty(path + "(" + routeCounter + ").act(" + actCounter + ").shipmentId", job.getId()); - } else if (job instanceof Break) { - xmlConfig.setProperty(path + "(" + routeCounter + ").act(" + actCounter + ").breakId", job.getId()); - } else { - throw new IllegalStateException("cannot write solution correctly since job-type is not know. make sure you use either service or shipment, or another writer"); - } - } - xmlConfig.setProperty(path + "(" + routeCounter + ").act(" + actCounter + ").arrTime", act.getArrTime()); - xmlConfig.setProperty(path + "(" + routeCounter + ").act(" + actCounter + ").endTime", act.getEndTime()); - actCounter++; - } - xmlConfig.setProperty(path + "(" + routeCounter + ").end", route.getEnd().getArrTime()); - routeCounter++; - } - - } - - private void writeSolutions(XMLConf xmlConfig) { - if (solutions == null) return; - String solutionPath = "solutions.solution"; - int counter = 0; - for (VehicleRoutingProblemSolution solution : solutions) { - xmlConfig.setProperty(solutionPath + "(" + counter + ").cost", solution.getCost()); - int routeCounter = 0; - List list = new ArrayList(solution.getRoutes()); - Collections.sort(list , new VehicleIndexComparator()); - for (VehicleRoute route : list) { -// xmlConfig.setProperty(solutionPath + "(" + counter + ").routes.route(" + routeCounter + ").cost", route.getCost()); - xmlConfig.setProperty(solutionPath + "(" + counter + ").routes.route(" + routeCounter + ").driverId", route.getDriver().getId()); - xmlConfig.setProperty(solutionPath + "(" + counter + ").routes.route(" + routeCounter + ").vehicleId", route.getVehicle().getId()); - xmlConfig.setProperty(solutionPath + "(" + counter + ").routes.route(" + routeCounter + ").start", route.getStart().getEndTime()); - int actCounter = 0; - for (TourActivity act : route.getTourActivities().getActivities()) { - xmlConfig.setProperty(solutionPath + "(" + counter + ").routes.route(" + routeCounter + ").act(" + actCounter + ")[@type]", act.getName()); - if (act instanceof TourActivity.JobActivity) { - Job job = ((TourActivity.JobActivity) act).getJob(); - if (job instanceof Break) { - xmlConfig.setProperty(solutionPath + "(" + counter + ").routes.route(" + routeCounter + ").act(" + actCounter + ").breakId", job.getId()); - } else if (job instanceof Service) { - xmlConfig.setProperty(solutionPath + "(" + counter + ").routes.route(" + routeCounter + ").act(" + actCounter + ").serviceId", job.getId()); - } else if (job instanceof Shipment) { - xmlConfig.setProperty(solutionPath + "(" + counter + ").routes.route(" + routeCounter + ").act(" + actCounter + ").shipmentId", job.getId()); - } else { - throw new IllegalStateException("cannot write solution correctly since job-type is not know. make sure you use either service or shipment, or another writer"); - } - } - xmlConfig.setProperty(solutionPath + "(" + counter + ").routes.route(" + routeCounter + ").act(" + actCounter + ").arrTime", act.getArrTime()); - xmlConfig.setProperty(solutionPath + "(" + counter + ").routes.route(" + routeCounter + ").act(" + actCounter + ").endTime", act.getEndTime()); - actCounter++; - } - xmlConfig.setProperty(solutionPath + "(" + counter + ").routes.route(" + routeCounter + ").end", route.getEnd().getArrTime()); - routeCounter++; - } - int unassignedJobCounter = 0; - for (Job unassignedJob : solution.getUnassignedJobs()) { - xmlConfig.setProperty(solutionPath + "(" + counter + ").unassignedJobs.job(" + unassignedJobCounter + ")[@id]", unassignedJob.getId()); - unassignedJobCounter++; - } - counter++; - } - } - - private void writeServices(XMLConf xmlConfig, List jobs) { - String shipmentPathString = "services.service"; - int counter = 0; - for (Job j : jobs) { - if (!(j instanceof Service)) continue; - Service service = (Service) j; - xmlConfig.setProperty(shipmentPathString + "(" + counter + ")[@id]", service.getId()); - xmlConfig.setProperty(shipmentPathString + "(" + counter + ")[@type]", service.getType()); - if (service.getLocation().getId() != null) - xmlConfig.setProperty(shipmentPathString + "(" + counter + ").location.id", service.getLocation().getId()); - if (service.getLocation().getCoordinate() != null) { - xmlConfig.setProperty(shipmentPathString + "(" + counter + ").location.coord[@x]", service.getLocation().getCoordinate().getX()); - xmlConfig.setProperty(shipmentPathString + "(" + counter + ").location.coord[@y]", service.getLocation().getCoordinate().getY()); - } - if (service.getLocation().getIndex() != Location.NO_INDEX) { - xmlConfig.setProperty(shipmentPathString + "(" + counter + ").location.index", service.getLocation().getIndex()); - } - for (int i = 0; i < service.getSize().getNuOfDimensions(); i++) { - xmlConfig.setProperty(shipmentPathString + "(" + counter + ").capacity-dimensions.dimension(" + i + ")[@index]", i); - xmlConfig.setProperty(shipmentPathString + "(" + counter + ").capacity-dimensions.dimension(" + i + ")", service.getSize().get(i)); - } - - Collection tws = service.getTimeWindows(); - int index = 0; - xmlConfig.setProperty(shipmentPathString + "(" + counter + ").duration", service.getServiceDuration()); - for(TimeWindow tw : tws) { - xmlConfig.setProperty(shipmentPathString + "(" + counter + ").timeWindows.timeWindow(" + index + ").start", tw.getStart()); - xmlConfig.setProperty(shipmentPathString + "(" + counter + ").timeWindows.timeWindow(" + index + ").end", tw.getEnd()); - ++index; - } - - //skills - String skillString = getSkillString(service); - xmlConfig.setProperty(shipmentPathString + "(" + counter + ").requiredSkills", skillString); - - //name - if (service.getName() != null) { - if (!service.getName().equals("no-name")) { - xmlConfig.setProperty(shipmentPathString + "(" + counter + ").name", service.getName()); - } - } - counter++; - } - } - - private void writeShipments(XMLConf xmlConfig, List jobs) { - String shipmentPathString = "shipments.shipment"; - int counter = 0; - for (Job j : jobs) { - if (!(j instanceof Shipment)) continue; - Shipment shipment = (Shipment) j; - xmlConfig.setProperty(shipmentPathString + "(" + counter + ")[@id]", shipment.getId()); -// xmlConfig.setProperty(shipmentPathString + "("+counter+")[@type]", service.getType()); - if (shipment.getPickupLocation().getId() != null) - xmlConfig.setProperty(shipmentPathString + "(" + counter + ").pickup.location.id", shipment.getPickupLocation().getId()); - if (shipment.getPickupLocation().getCoordinate() != null) { - xmlConfig.setProperty(shipmentPathString + "(" + counter + ").pickup.location.coord[@x]", shipment.getPickupLocation().getCoordinate().getX()); - xmlConfig.setProperty(shipmentPathString + "(" + counter + ").pickup.location.coord[@y]", shipment.getPickupLocation().getCoordinate().getY()); - } - if (shipment.getPickupLocation().getIndex() != Location.NO_INDEX) { - xmlConfig.setProperty(shipmentPathString + "(" + counter + ").pickup.location.index", shipment.getPickupLocation().getIndex()); - } - - Collection pu_tws = shipment.getPickupTimeWindows(); - int index = 0; - xmlConfig.setProperty(shipmentPathString + "(" + counter + ").pickup.duration", shipment.getPickupServiceTime()); - for(TimeWindow tw : pu_tws) { - xmlConfig.setProperty(shipmentPathString + "(" + counter + ").pickup.timeWindows.timeWindow(" + index + ").start", tw.getStart()); - xmlConfig.setProperty(shipmentPathString + "(" + counter + ").pickup.timeWindows.timeWindow(" + index + ").end", tw.getEnd()); - ++index; - } - - if (shipment.getDeliveryLocation().getId() != null) - xmlConfig.setProperty(shipmentPathString + "(" + counter + ").delivery.location.id", shipment.getDeliveryLocation().getId()); - if (shipment.getDeliveryLocation().getCoordinate() != null) { - xmlConfig.setProperty(shipmentPathString + "(" + counter + ").delivery.location.coord[@x]", shipment.getDeliveryLocation().getCoordinate().getX()); - xmlConfig.setProperty(shipmentPathString + "(" + counter + ").delivery.location.coord[@y]", shipment.getDeliveryLocation().getCoordinate().getY()); - } - if (shipment.getDeliveryLocation().getIndex() != Location.NO_INDEX) { - xmlConfig.setProperty(shipmentPathString + "(" + counter + ").delivery.location.index", shipment.getDeliveryLocation().getIndex()); - } - - Collection del_tws = shipment.getDeliveryTimeWindows(); - xmlConfig.setProperty(shipmentPathString + "(" + counter + ").delivery.duration", shipment.getDeliveryServiceTime()); - index = 0; - for(TimeWindow tw : del_tws) { - xmlConfig.setProperty(shipmentPathString + "(" + counter + ").delivery.timeWindows.timeWindow(" + index + ").start", tw.getStart()); - xmlConfig.setProperty(shipmentPathString + "(" + counter + ").delivery.timeWindows.timeWindow(" + index + ").end", tw.getEnd()); - ++index; - } - - for (int i = 0; i < shipment.getSize().getNuOfDimensions(); i++) { - xmlConfig.setProperty(shipmentPathString + "(" + counter + ").capacity-dimensions.dimension(" + i + ")[@index]", i); - xmlConfig.setProperty(shipmentPathString + "(" + counter + ").capacity-dimensions.dimension(" + i + ")", shipment.getSize().get(i)); - } - - //skills - String skillString = getSkillString(shipment); - xmlConfig.setProperty(shipmentPathString + "(" + counter + ").requiredSkills", skillString); - - //name - if (shipment.getName() != null) { - if (!shipment.getName().equals("no-name")) { - xmlConfig.setProperty(shipmentPathString + "(" + counter + ").name", shipment.getName()); - } - } - counter++; - } - } - - private void writeProblemType(XMLConfiguration xmlConfig) { - xmlConfig.setProperty("problemType.fleetSize", vrp.getFleetSize()); - } - - private void writeVehiclesAndTheirTypes(XMLConfiguration xmlConfig) { - - //vehicles - String vehiclePathString = Schema.VEHICLES + "." + Schema.VEHICLE; - int counter = 0; - for (Vehicle vehicle : vrp.getVehicles()) { - xmlConfig.setProperty(vehiclePathString + "(" + counter + ").id", vehicle.getId()); - xmlConfig.setProperty(vehiclePathString + "(" + counter + ").typeId", vehicle.getType().getTypeId()); - xmlConfig.setProperty(vehiclePathString + "(" + counter + ").startLocation.id", vehicle.getStartLocation().getId()); - if (vehicle.getStartLocation().getCoordinate() != null) { - xmlConfig.setProperty(vehiclePathString + "(" + counter + ").startLocation.coord[@x]", vehicle.getStartLocation().getCoordinate().getX()); - xmlConfig.setProperty(vehiclePathString + "(" + counter + ").startLocation.coord[@y]", vehicle.getStartLocation().getCoordinate().getY()); - } - if (vehicle.getStartLocation().getIndex() != Location.NO_INDEX) { - xmlConfig.setProperty(vehiclePathString + "(" + counter + ").startLocation.index", vehicle.getStartLocation().getIndex()); - } - - xmlConfig.setProperty(vehiclePathString + "(" + counter + ").endLocation.id", vehicle.getEndLocation().getId()); - if (vehicle.getEndLocation().getCoordinate() != null) { - xmlConfig.setProperty(vehiclePathString + "(" + counter + ").endLocation.coord[@x]", vehicle.getEndLocation().getCoordinate().getX()); - xmlConfig.setProperty(vehiclePathString + "(" + counter + ").endLocation.coord[@y]", vehicle.getEndLocation().getCoordinate().getY()); - } - if (vehicle.getEndLocation().getIndex() != Location.NO_INDEX) { - xmlConfig.setProperty(vehiclePathString + "(" + counter + ").endLocation.index", vehicle.getEndLocation().getId()); - } - xmlConfig.setProperty(vehiclePathString + "(" + counter + ").timeSchedule.start", vehicle.getEarliestDeparture()); - xmlConfig.setProperty(vehiclePathString + "(" + counter + ").timeSchedule.end", vehicle.getLatestArrival()); - - if (vehicle.getBreak() != null) { - Collection tws = vehicle.getBreak().getTimeWindows(); - int index = 0; - xmlConfig.setProperty(vehiclePathString + "(" + counter + ").breaks.duration", vehicle.getBreak().getServiceDuration()); - for(TimeWindow tw : tws) { - xmlConfig.setProperty(vehiclePathString + "(" + counter + ").breaks.timeWindows.timeWindow(" + index + ").start", tw.getStart()); - xmlConfig.setProperty(vehiclePathString + "(" + counter + ").breaks.timeWindows.timeWindow(" + index + ").end", tw.getEnd()); - ++index; - } - } - xmlConfig.setProperty(vehiclePathString + "(" + counter + ").returnToDepot", vehicle.isReturnToDepot()); - - //write skills - String skillString = getSkillString(vehicle); - xmlConfig.setProperty(vehiclePathString + "(" + counter + ").skills", skillString); - - counter++; - } - - //types - String typePathString = Schema.builder().append(Schema.TYPES).dot(Schema.TYPE).build(); - int typeCounter = 0; - for (VehicleType type : vrp.getTypes()) { - xmlConfig.setProperty(typePathString + "(" + typeCounter + ").id", type.getTypeId()); - - for (int i = 0; i < type.getCapacityDimensions().getNuOfDimensions(); i++) { - xmlConfig.setProperty(typePathString + "(" + typeCounter + ").capacity-dimensions.dimension(" + i + ")[@index]", i); - xmlConfig.setProperty(typePathString + "(" + typeCounter + ").capacity-dimensions.dimension(" + i + ")", type.getCapacityDimensions().get(i)); - } - - xmlConfig.setProperty(typePathString + "(" + typeCounter + ").costs.fixed", type.getVehicleCostParams().fix); - xmlConfig.setProperty(typePathString + "(" + typeCounter + ").costs.distance", type.getVehicleCostParams().perDistanceUnit); - xmlConfig.setProperty(typePathString + "(" + typeCounter + ").costs.time", type.getVehicleCostParams().perTransportTimeUnit); - xmlConfig.setProperty(typePathString + "(" + typeCounter + ").costs.service", type.getVehicleCostParams().perServiceTimeUnit); - xmlConfig.setProperty(typePathString + "(" + typeCounter + ").costs.wait", type.getVehicleCostParams().perWaitingTimeUnit); - typeCounter++; - } - - - } - - private String getSkillString(Vehicle vehicle) { - return createSkillString(vehicle.getSkills()); - } - - private String getSkillString(Job job) { - return createSkillString(job.getRequiredSkills()); - } - - private String createSkillString(Skills skills) { - if (skills.values().size() == 0) return null; - String skillString = null; - for (String skill : skills.values()) { - if (skillString == null) skillString = skill; - else skillString += ", " + skill; - } - return skillString; - } - - -} - diff --git a/jsprit-io/src/main/resources/algorithm_schema.xsd b/jsprit-io/src/main/resources/algorithm_schema.xsd deleted file mode 100644 index d8bd7ec27..000000000 --- a/jsprit-io/src/main/resources/algorithm_schema.xsd +++ /dev/null @@ -1,285 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jsprit-io/src/main/resources/config.xml b/jsprit-io/src/main/resources/config.xml deleted file mode 100755 index 1c6e5ac1f..000000000 --- a/jsprit-io/src/main/resources/config.xml +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - 2000 - - - - - - - - 3 - - - - - - - - - 0.5 - - - - 0.5 - - - - - - - - - 0.3 - euclid - - - - 0.5 - - - - - - - - - - - --> - - - - - - - - - - diff --git a/jsprit-io/src/main/resources/greedySchrimpf.xml b/jsprit-io/src/main/resources/greedySchrimpf.xml deleted file mode 100755 index 773b031f3..000000000 --- a/jsprit-io/src/main/resources/greedySchrimpf.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - 2000 - - - - - - - 1 - - - - - - - - 0.5 - - - - - - 0.5 - - - - - - - - - 0.3 - - - - - - 0.5 - - - - - - - diff --git a/jsprit-io/src/main/resources/randomWalk.xml b/jsprit-io/src/main/resources/randomWalk.xml deleted file mode 100755 index bf3da3e39..000000000 --- a/jsprit-io/src/main/resources/randomWalk.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - 1 - - - - - - - - 0.5 - - - - - - 0.5 - - - - - - - - - 0.3 - - - - - - 0.5 - - - - - - - diff --git a/jsprit-io/src/main/resources/schrimpf.xml b/jsprit-io/src/main/resources/schrimpf.xml deleted file mode 100755 index 46d2bf82e..000000000 --- a/jsprit-io/src/main/resources/schrimpf.xml +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - 2000 - - - - - - - 1 - - - - - 0.4 - 100 - - - - - 0.5 - - - - - - 0.5 - - - - - - - - - 0.3 - - - - - - 0.5 - - - - - - - diff --git a/jsprit-io/src/main/resources/vrp_xml_schema.xsd b/jsprit-io/src/main/resources/vrp_xml_schema.xsd deleted file mode 100644 index 04a36b26d..000000000 --- a/jsprit-io/src/main/resources/vrp_xml_schema.xsd +++ /dev/null @@ -1,407 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jsprit-io/src/test/java/com/graphhopper/jsprit/io/algorithm/TestAlgorithmReader.java b/jsprit-io/src/test/java/com/graphhopper/jsprit/io/algorithm/TestAlgorithmReader.java deleted file mode 100644 index 3c69ab6ed..000000000 --- a/jsprit-io/src/test/java/com/graphhopper/jsprit/io/algorithm/TestAlgorithmReader.java +++ /dev/null @@ -1,286 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.io.algorithm; - -import com.graphhopper.jsprit.core.algorithm.SearchStrategy; -import com.graphhopper.jsprit.core.algorithm.SearchStrategyModule; -import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; -import com.graphhopper.jsprit.core.algorithm.acceptor.GreedyAcceptance; -import com.graphhopper.jsprit.core.algorithm.acceptor.SolutionAcceptor; -import com.graphhopper.jsprit.core.algorithm.listener.IterationEndsListener; -import com.graphhopper.jsprit.core.algorithm.listener.SearchStrategyModuleListener; -import com.graphhopper.jsprit.core.algorithm.ruin.RuinStrategy; -import com.graphhopper.jsprit.core.algorithm.ruin.listener.RuinListener; -import com.graphhopper.jsprit.core.algorithm.selector.SelectBest; -import com.graphhopper.jsprit.core.algorithm.selector.SolutionSelector; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.job.Job; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; -import com.graphhopper.jsprit.io.algorithm.VehicleRoutingAlgorithms.ModKey; -import com.graphhopper.jsprit.io.algorithm.VehicleRoutingAlgorithms.TypedMap.AcceptorKey; -import com.graphhopper.jsprit.io.algorithm.VehicleRoutingAlgorithms.TypedMap.RuinStrategyKey; -import com.graphhopper.jsprit.io.algorithm.VehicleRoutingAlgorithms.TypedMap.SelectorKey; -import com.graphhopper.jsprit.io.algorithm.VehicleRoutingAlgorithms.TypedMap.StrategyModuleKey; -import com.graphhopper.jsprit.io.problem.VrpXMLReader; -import junit.framework.Assert; -import org.apache.commons.configuration.ConfigurationException; -import org.junit.Before; -import org.junit.Test; - -import java.util.ArrayList; -import java.util.Collection; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - - -public class TestAlgorithmReader { - - AlgorithmConfig config; - - VehicleRoutingProblem vrp; - - Collection solutions; - - @Before - public void doBefore() throws ConfigurationException { - config = new AlgorithmConfig(); - new AlgorithmConfigXmlReader(config).setSchemaValidation(false).read(getClass().getResource("testConfig.xml")); - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - solutions = new ArrayList(); - new VrpXMLReader(vrpBuilder, solutions).read(getClass().getResourceAsStream("finiteVrp.xml")); - vrp = vrpBuilder.build(); - } - - @Test - public void itShouldReadMaxIterations() { - VehicleRoutingAlgorithm vra = VehicleRoutingAlgorithms.readAndCreateAlgorithm(vrp, getClass().getResource("algorithmConfigForReaderTest.xml")); - Assert.assertEquals(2000, vra.getMaxIterations()); - } - - static class IterationCounter implements IterationEndsListener { - - int iterations = 0; - - @Override - public void informIterationEnds(int i, VehicleRoutingProblem problem, Collection solutions) { - iterations = i; - } - - } - - @Test - public void whenSettingPrematureBreak_itShouldReadTermination() { - VehicleRoutingAlgorithm vra = VehicleRoutingAlgorithms.readAndCreateAlgorithm(vrp, getClass().getResource("algorithmConfigForReaderTest2.xml")); - IterationCounter iCounter = new IterationCounter(); - vra.addListener(iCounter); - vra.searchSolutions(); - Assert.assertEquals(100, iCounter.iterations); - } - - @Test - public void itShouldReadTermination() { - VehicleRoutingAlgorithm vra = VehicleRoutingAlgorithms.readAndCreateAlgorithm(vrp, getClass().getResource("algorithmConfigForReaderTest.xml")); - IterationCounter iCounter = new IterationCounter(); - vra.addListener(iCounter); - vra.searchSolutions(); - Assert.assertEquals(25, iCounter.iterations); - } - - - @Test - public void testTypedMap() { - VehicleRoutingAlgorithms.TypedMap typedMap = new VehicleRoutingAlgorithms.TypedMap(); - - String acceptorName = "acceptor"; - String acceptorId = "acceptorId"; - - ModKey key = new ModKey(acceptorName, acceptorId); - AcceptorKey accKey = new AcceptorKey(key); - - SolutionAcceptor acceptor = new GreedyAcceptance(1); - - typedMap.put(accKey, acceptor); - - assertEquals(acceptor, typedMap.get(accKey)); - - } - - @Test - public void testTypedMap2() { - VehicleRoutingAlgorithms.TypedMap typedMap = new VehicleRoutingAlgorithms.TypedMap(); - - String acceptorName = "acceptor"; - String acceptorId = "acceptorId"; - - String selectorName = "selector"; - String selectorId = "selectorId"; - - ModKey key = new ModKey(acceptorName, acceptorId); - AcceptorKey accKey = new AcceptorKey(key); - SolutionAcceptor acceptor = new GreedyAcceptance(1); - - SelectorKey selKey = new SelectorKey(new ModKey(selectorName, selectorId)); - SolutionSelector selector = new SelectBest(); - - typedMap.put(accKey, acceptor); - typedMap.put(selKey, selector); - - assertEquals(acceptor, typedMap.get(accKey)); - assertEquals(selector, typedMap.get(selKey)); - } - - @Test - public void testTypedMap3() { - VehicleRoutingAlgorithms.TypedMap typedMap = new VehicleRoutingAlgorithms.TypedMap(); - - String acceptorName = "acceptor"; - String acceptorId = "acceptorId"; - - String acceptorName2 = "acceptor2"; - String acceptorId2 = "acceptorId2"; - - String selectorName = "selector"; - String selectorId = "selectorId"; - - ModKey key = new ModKey(acceptorName, acceptorId); - AcceptorKey accKey = new AcceptorKey(key); - SolutionAcceptor acceptor = new GreedyAcceptance(1); - - SelectorKey selKey = new SelectorKey(new ModKey(selectorName, selectorId)); - SolutionSelector selector = new SelectBest(); - - AcceptorKey accKey2 = new AcceptorKey(new ModKey(acceptorName2, acceptorId2)); - SolutionAcceptor acceptor2 = new GreedyAcceptance(1); - - typedMap.put(accKey, acceptor); - typedMap.put(selKey, selector); - typedMap.put(accKey2, acceptor2); - - assertEquals(acceptor, typedMap.get(accKey)); - assertEquals(selector, typedMap.get(selKey)); - assertEquals(acceptor2, typedMap.get(accKey2)); - } - - @Test - public void testTypedMap4() { - VehicleRoutingAlgorithms.TypedMap typedMap = new VehicleRoutingAlgorithms.TypedMap(); - - String acceptorName = "acceptor"; - String acceptorId = "acceptorId"; - - ModKey key = new ModKey(acceptorName, acceptorId); - RuinStrategyKey accKey = new RuinStrategyKey(key); - RuinStrategy acceptor = new RuinStrategy() { - - @Override - public Collection ruin(Collection vehicleRoutes) { - return null; - } - - - @Override - public void addListener(RuinListener ruinListener) { - - } - - @Override - public void removeListener(RuinListener ruinListener) { - - } - - @Override - public Collection getListeners() { - return null; - } - - }; - - StrategyModuleKey moduleKey = new StrategyModuleKey(key); - SearchStrategyModule stratModule = new SearchStrategyModule() { - - @Override - public VehicleRoutingProblemSolution runAndGetSolution(VehicleRoutingProblemSolution vrpSolution) { - return null; - } - - @Override - public String getName() { - return null; - } - - @Override - public void addModuleListener( - SearchStrategyModuleListener moduleListener) { - - } - }; - - typedMap.put(accKey, acceptor); - typedMap.put(moduleKey, stratModule); - typedMap.put(moduleKey, stratModule); - - assertEquals(acceptor, typedMap.get(accKey)); - assertEquals(stratModule, typedMap.get(moduleKey)); - - } - - @Test - public void initialiseConstructionAlgoCorrectly() { - VehicleRoutingAlgorithms.createAlgorithm(vrp, config); - assertTrue(true); - } - - @Test - public void whenCreatingAlgorithm_nOfStrategiesIsCorrect() { - VehicleRoutingAlgorithm algo = VehicleRoutingAlgorithms.createAlgorithm(vrp, config); - assertEquals(3, algo.getSearchStrategyManager().getStrategies().size()); - } - - @Test - public void whenCreatingAlgorithm_nOfIterationsIsReadCorrectly() { - VehicleRoutingAlgorithm algo = VehicleRoutingAlgorithms.createAlgorithm(vrp, config); - assertEquals(10, algo.getMaxIterations()); - } - - @Test - public void whenCreatingAlgorithm_nOfStrategyModulesIsCorrect() { - VehicleRoutingAlgorithm algo = VehicleRoutingAlgorithms.createAlgorithm(vrp, config); - int nOfModules = 0; - for (SearchStrategy strat : algo.getSearchStrategyManager().getStrategies()) { - nOfModules += strat.getSearchStrategyModules().size(); - } - assertEquals(3, nOfModules); - } - - @Test - public void readerTest_whenReadingAlgoWithSchemaValidation_itReadsCorrectly() { - AlgorithmConfig algoConfig = new AlgorithmConfig(); - new AlgorithmConfigXmlReader(algoConfig).read(getClass().getResource("algorithmConfig.xml")); - - } - - @Test - public void readerTest_whenReadingAlgoWithSchemaValidationWithoutIterations_itReadsCorrectly() { - AlgorithmConfig algoConfig = new AlgorithmConfig(); - new AlgorithmConfigXmlReader(algoConfig).read(getClass().getResource("algorithmConfig_withoutIterations.xml")); - - } - -} diff --git a/jsprit-io/src/test/java/com/graphhopper/jsprit/io/problem/FiniteVehicleFleetManagerIdentifiesDistinctVehicle_IT.java b/jsprit-io/src/test/java/com/graphhopper/jsprit/io/problem/FiniteVehicleFleetManagerIdentifiesDistinctVehicle_IT.java deleted file mode 100644 index d7d033a55..000000000 --- a/jsprit-io/src/test/java/com/graphhopper/jsprit/io/problem/FiniteVehicleFleetManagerIdentifiesDistinctVehicle_IT.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.io.problem; - -import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; -import com.graphhopper.jsprit.core.algorithm.box.Jsprit; -import com.graphhopper.jsprit.core.algorithm.recreate.NoSolutionFoundException; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import org.junit.Test; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import static org.junit.Assert.assertTrue; - -public class FiniteVehicleFleetManagerIdentifiesDistinctVehicle_IT { - - @Test - public void whenEmployingVehicleWhereOnlyOneDistinctVehicleCanServeAParticularJobWith_jspritAlgorithmShouldFoundDistinctSolution() { - final List testFailed = new ArrayList(); - for (int i = 0; i < 10; i++) { - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(vrpBuilder).read(getClass().getResourceAsStream("biggerProblem.xml")); - VehicleRoutingProblem vrp = vrpBuilder.build(); - - VehicleRoutingAlgorithm vra = Jsprit.createAlgorithm(vrp); - vra.setMaxIterations(10); - try { - @SuppressWarnings("unused") - Collection solutions = vra.searchSolutions(); - } catch (NoSolutionFoundException e) { - testFailed.add(true); - } - } - assertTrue(testFailed.isEmpty()); - } - -} diff --git a/jsprit-io/src/test/java/com/graphhopper/jsprit/io/problem/InitialRoutesTest.java b/jsprit-io/src/test/java/com/graphhopper/jsprit/io/problem/InitialRoutesTest.java deleted file mode 100644 index 526bbc132..000000000 --- a/jsprit-io/src/test/java/com/graphhopper/jsprit/io/problem/InitialRoutesTest.java +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.graphhopper.jsprit.io.problem; - - -import com.graphhopper.jsprit.core.problem.AbstractActivity; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.job.Job; -import com.graphhopper.jsprit.core.problem.job.Service; -import com.graphhopper.jsprit.core.problem.job.Shipment; -import org.junit.Test; - -import java.util.List; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -public class InitialRoutesTest { - - - @Test - public void whenReading_jobMapShouldOnlyContainJob2() { - - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(vrpBuilder).read(getClass().getResourceAsStream("simpleProblem_iniRoutes.xml")); - VehicleRoutingProblem vrp = vrpBuilder.build(); - - assertEquals(1, getNuServices(vrp)); - assertTrue(vrp.getJobs().containsKey("2")); - } - - @Test - public void whenReadingProblem2_jobMapShouldContain_service2() { - - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(vrpBuilder).read(getClass().getResourceAsStream("simpleProblem_inclShipments_iniRoutes.xml")); - VehicleRoutingProblem vrp = vrpBuilder.build(); - - assertEquals(1, getNuServices(vrp)); - assertTrue(vrp.getJobs().containsKey("2")); - } - - @Test - public void whenReading_jobMapShouldContain_shipment4() { - - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(vrpBuilder).read(getClass().getResourceAsStream("simpleProblem_inclShipments_iniRoutes.xml")); - VehicleRoutingProblem vrp = vrpBuilder.build(); - - assertEquals(1, getNuShipments(vrp)); - assertTrue(vrp.getJobs().containsKey("4")); - } - - private int getNuShipments(VehicleRoutingProblem vrp) { - int nuShipments = 0; - for (Job job : vrp.getJobs().values()) { - if (job instanceof Shipment) nuShipments++; - } - return nuShipments; - } - - private int getNuServices(VehicleRoutingProblem vrp) { - int nuServices = 0; - for (Job job : vrp.getJobs().values()) { - if (job instanceof Service) nuServices++; - } - return nuServices; - } - - @Test - public void whenReading_thereShouldBeOnlyOneActAssociatedToJob2() { - - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(vrpBuilder).read(getClass().getResourceAsStream("simpleProblem_iniRoutes.xml")); - VehicleRoutingProblem vrp = vrpBuilder.build(); - - assertEquals(1, vrp.getActivities(vrp.getJobs().get("2")).size()); - } - - @Test - public void whenReading_thereShouldBeOnlyOneActAssociatedToJob2_v2() { - - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(vrpBuilder).read(getClass().getResourceAsStream("simpleProblem_inclShipments_iniRoutes.xml")); - VehicleRoutingProblem vrp = vrpBuilder.build(); - - assertEquals(1, vrp.getActivities(vrp.getJobs().get("2")).size()); - } - - @Test - public void whenReading_thereShouldBeTwoActsAssociatedToShipment4() { - - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(vrpBuilder).read(getClass().getResourceAsStream("simpleProblem_inclShipments_iniRoutes.xml")); - VehicleRoutingProblem vrp = vrpBuilder.build(); - - Job job = vrp.getJobs().get("4"); - List activities = vrp.getActivities(job); - - assertEquals(2, activities.size()); - } - - -} diff --git a/jsprit-io/src/test/java/com/graphhopper/jsprit/io/problem/VrpXMLReaderTest.java b/jsprit-io/src/test/java/com/graphhopper/jsprit/io/problem/VrpXMLReaderTest.java deleted file mode 100644 index ce322cbdb..000000000 --- a/jsprit-io/src/test/java/com/graphhopper/jsprit/io/problem/VrpXMLReaderTest.java +++ /dev/null @@ -1,640 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.io.problem; - -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem.FleetSize; -import com.graphhopper.jsprit.core.problem.job.Job; -import com.graphhopper.jsprit.core.problem.job.Service; -import com.graphhopper.jsprit.core.problem.job.Shipment; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.problem.solution.route.activity.DeliverShipment; -import com.graphhopper.jsprit.core.problem.solution.route.activity.PickupService; -import com.graphhopper.jsprit.core.problem.solution.route.activity.PickupShipment; -import com.graphhopper.jsprit.core.problem.solution.route.activity.TourActivity; -import com.graphhopper.jsprit.core.problem.vehicle.Vehicle; -import com.graphhopper.jsprit.core.util.Solutions; -import org.junit.Before; -import org.junit.Test; - -import java.io.InputStream; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.List; - -import static org.junit.Assert.*; - - -public class VrpXMLReaderTest { - - private InputStream inputStream; - - @Before - public void doBefore() { - inputStream = getClass().getResourceAsStream("finiteVrpForReaderTest.xml"); - } - - @Test - public void shouldReadNameOfService() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - Service s = (Service) vrp.getJobs().get("1"); - assertTrue(s.getName().equals("cleaning")); - } - - @Test - public void shouldReadNameOfShipment() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - Shipment s = (Shipment) vrp.getJobs().get("3"); - assertTrue(s.getName().equals("deliver-smth")); - } - - @Test - public void whenReadingVrp_problemTypeIsReadCorrectly() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - assertEquals(FleetSize.FINITE, vrp.getFleetSize()); - } - - @Test - public void whenReadingVrp_vehiclesAreReadCorrectly() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - assertEquals(5, vrp.getVehicles().size()); - assertTrue(idsInCollection(Arrays.asList("v1", "v2"), vrp.getVehicles())); - } - - @Test - public void whenReadingVrp_vehiclesAreReadCorrectly2() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - Vehicle v1 = getVehicle("v1", vrp.getVehicles()); - assertEquals(20, v1.getType().getCapacityDimensions().get(0)); - assertEquals(100.0, v1.getStartLocation().getCoordinate().getX(), 0.01); - assertEquals(0.0, v1.getEarliestDeparture(), 0.01); - assertEquals("depotLoc2", v1.getStartLocation().getId()); - assertNotNull(v1.getType()); - assertEquals("vehType", v1.getType().getTypeId()); - assertNotNull(v1.getStartLocation()); - assertEquals(1, v1.getStartLocation().getIndex()); - assertEquals(1000.0, v1.getLatestArrival(), 0.01); - } - - @Test - public void whenReadingVehicles_skill1ShouldBeAssigned() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - Vehicle v1 = getVehicle("v1", vrp.getVehicles()); - assertTrue(v1.getSkills().containsSkill("skill1")); - } - - @Test - public void whenReadingVehicles_skill2ShouldBeAssigned() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - Vehicle v1 = getVehicle("v1", vrp.getVehicles()); - assertTrue(v1.getSkills().containsSkill("skill2")); - } - - @Test - public void whenReadingVehicles_nuSkillsShouldBeCorrect() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - Vehicle v1 = getVehicle("v1", vrp.getVehicles()); - assertEquals(2, v1.getSkills().values().size()); - } - - @Test - public void whenReadingVehicles_nuSkillsOfV2ShouldBeCorrect() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - Vehicle v = getVehicle("v2", vrp.getVehicles()); - assertEquals(0, v.getSkills().values().size()); - } - - private Vehicle getVehicle(String string, Collection vehicles) { - for (Vehicle v : vehicles) if (string.equals(v.getId())) return v; - return null; - } - - private boolean idsInCollection(List asList, Collection vehicles) { - List ids = new ArrayList(asList); - for (Vehicle v : vehicles) { - if (ids.contains(v.getId())) ids.remove(v.getId()); - } - return ids.isEmpty(); - } - - @Test - public void whenReadingVrp_vehicleTypesAreReadCorrectly() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - assertEquals(3, vrp.getTypes().size()); - } - - @Test - public void whenReadingVrpWithInfiniteSize_itReadsCorrectly() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - assertEquals(FleetSize.FINITE, vrp.getFleetSize()); - } - - @Test - public void whenReadingJobs_nuOfJobsIsReadThemCorrectly() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - assertEquals(4, vrp.getJobs().size()); - } - - @Test - public void whenReadingServices_itReadsThemCorrectly() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - int servCounter = 0; - for (Job j : vrp.getJobs().values()) { - if (j instanceof Service) servCounter++; - } - assertEquals(2, servCounter); - } - - @Test - public void whenReadingService1_skill1ShouldBeAssigned() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - Service s = (Service) vrp.getJobs().get("1"); - assertTrue(s.getRequiredSkills().containsSkill("skill1")); - } - - @Test - public void whenReadingService1_skill2ShouldBeAssigned() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - Service s = (Service) vrp.getJobs().get("1"); - assertTrue(s.getRequiredSkills().containsSkill("skill2")); - } - - @Test - public void whenReadingService1_nuSkillsShouldBeCorrect() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - Service s = (Service) vrp.getJobs().get("1"); - assertEquals(2, s.getRequiredSkills().values().size()); - } - - @Test - public void whenReadingService2_nuSkillsOfV2ShouldBeCorrect() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - Service s = (Service) vrp.getJobs().get("2"); - assertEquals(0, s.getRequiredSkills().values().size()); - } - - @Test - public void whenReadingShipments_itReadsThemCorrectly() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - int shipCounter = 0; - for (Job j : vrp.getJobs().values()) { - if (j instanceof Shipment) shipCounter++; - } - assertEquals(2, shipCounter); - } - - @Test - public void whenReadingShipment3_skill1ShouldBeAssigned() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - Shipment s = (Shipment) vrp.getJobs().get("3"); - assertTrue(s.getRequiredSkills().containsSkill("skill1")); - } - - @Test - public void whenReadingShipment3_skill2ShouldBeAssigned() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - Shipment s = (Shipment) vrp.getJobs().get("3"); - assertTrue(s.getRequiredSkills().containsSkill("skill2")); - } - - @Test - public void whenReadingShipment3_nuSkillsShouldBeCorrect() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - Shipment s = (Shipment) vrp.getJobs().get("3"); - assertEquals(2, s.getRequiredSkills().values().size()); - } - - @Test - public void whenReadingShipment4_nuSkillsOfV2ShouldBeCorrect() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - Shipment s = (Shipment) vrp.getJobs().get("4"); - assertEquals(0, s.getRequiredSkills().values().size()); - } - - @Test - public void whenReadingServices_capOfService1IsReadCorrectly() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - Service s1 = (Service) vrp.getJobs().get("1"); - assertEquals(1, s1.getSize().get(0)); - } - - @Test - public void whenReadingServices_durationOfService1IsReadCorrectly() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - Service s1 = (Service) vrp.getJobs().get("1"); - assertEquals(10.0, s1.getServiceDuration(), 0.01); - } - - @Test - public void whenReadingServices_twOfService1IsReadCorrectly() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - Service s1 = (Service) vrp.getJobs().get("1"); - assertEquals(0.0, s1.getTimeWindow().getStart(), 0.01); - assertEquals(4000.0, s1.getTimeWindow().getEnd(), 0.01); - } - - @Test - public void whenReadingServices_typeOfService1IsReadCorrectly() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - Service s1 = (Service) vrp.getJobs().get("1"); - assertEquals("service", s1.getType()); - } - - @Test - public void whenReadingFile_v2MustNotReturnToDepot() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - Vehicle v = getVehicle("v2", vrp.getVehicles()); - assertFalse(v.isReturnToDepot()); - } - - @Test - public void whenReadingFile_v3HasTheCorrectStartLocation() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - Vehicle v3 = getVehicle("v3", vrp.getVehicles()); - assertEquals("startLoc", v3.getStartLocation().getId()); - assertNotNull(v3.getEndLocation()); - assertEquals(4, v3.getEndLocation().getIndex()); - } - - @Test - public void whenReadingFile_v3HasTheCorrectEndLocation() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - Vehicle v3 = getVehicle("v3", vrp.getVehicles()); - assertEquals("endLoc", v3.getEndLocation().getId()); - } - - @Test - public void whenReadingFile_v3HasTheCorrectEndLocationCoordinate() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - Vehicle v3 = getVehicle("v3", vrp.getVehicles()); - assertEquals(1000.0, v3.getEndLocation().getCoordinate().getX(), 0.01); - assertEquals(2000.0, v3.getEndLocation().getCoordinate().getY(), 0.01); - } - - @Test - public void whenReadingFile_v3HasTheCorrectStartLocationCoordinate() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - Vehicle v3 = getVehicle("v3", vrp.getVehicles()); - assertEquals(10.0, v3.getStartLocation().getCoordinate().getX(), 0.01); - assertEquals(100.0, v3.getStartLocation().getCoordinate().getY(), 0.01); - } - - @Test - public void whenReadingFile_v3HasTheCorrectLocationCoordinate() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - Vehicle v3 = getVehicle("v3", vrp.getVehicles()); - assertEquals(10.0, v3.getStartLocation().getCoordinate().getX(), 0.01); - assertEquals(100.0, v3.getStartLocation().getCoordinate().getY(), 0.01); - } - - @Test - public void whenReadingFile_v3HasTheCorrectLocationId() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - Vehicle v3 = getVehicle("v3", vrp.getVehicles()); - assertEquals("startLoc", v3.getStartLocation().getId()); - } - - @Test - public void whenReadingFile_v4HasTheCorrectStartLocation() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - Vehicle v = getVehicle("v4", vrp.getVehicles()); - assertEquals("startLoc", v.getStartLocation().getId()); - } - - @Test - public void whenReadingFile_v4HasTheCorrectEndLocation() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - Vehicle v = getVehicle("v4", vrp.getVehicles()); - assertEquals("endLoc", v.getEndLocation().getId()); - } - - @Test - public void whenReadingFile_v4HasTheCorrectEndLocationCoordinate() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - Vehicle v = getVehicle("v4", vrp.getVehicles()); - assertEquals(1000.0, v.getEndLocation().getCoordinate().getX(), 0.01); - assertEquals(2000.0, v.getEndLocation().getCoordinate().getY(), 0.01); - } - - @Test - public void whenReadingFile_v4HasTheCorrectStartLocationCoordinate() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - Vehicle v = getVehicle("v4", vrp.getVehicles()); - assertEquals(10.0, v.getStartLocation().getCoordinate().getX(), 0.01); - assertEquals(100.0, v.getStartLocation().getCoordinate().getY(), 0.01); - } - - @Test - public void whenReadingFile_v4HasTheCorrectLocationCoordinate() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - Vehicle v = getVehicle("v4", vrp.getVehicles()); - assertEquals(10.0, v.getStartLocation().getCoordinate().getX(), 0.01); - assertEquals(100.0, v.getStartLocation().getCoordinate().getY(), 0.01); - } - - @Test - public void whenReadingFile_v4HasTheCorrectLocationId() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - Vehicle v = getVehicle("v4", vrp.getVehicles()); - assertEquals("startLoc", v.getStartLocation().getId()); - } - - @Test - public void whenReadingJobs_capOfShipment3IsReadCorrectly() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - Shipment s = (Shipment) vrp.getJobs().get("3"); - assertEquals(10, s.getSize().get(0)); - } - - @Test - public void whenReadingJobs_pickupServiceTimeOfShipment3IsReadCorrectly() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - Shipment s = (Shipment) vrp.getJobs().get("3"); - assertEquals(10.0, s.getPickupServiceTime(), 0.01); - } - - @Test - public void whenReadingJobs_pickupTimeWindowOfShipment3IsReadCorrectly() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - Shipment s = (Shipment) vrp.getJobs().get("3"); - assertEquals(1000.0, s.getPickupTimeWindow().getStart(), 0.01); - assertEquals(4000.0, s.getPickupTimeWindow().getEnd(), 0.01); - } - - @Test - public void whenReadingJobs_deliveryTimeWindowOfShipment3IsReadCorrectly() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - Shipment s = (Shipment) vrp.getJobs().get("3"); - assertEquals(6000.0, s.getDeliveryTimeWindow().getStart(), 0.01); - assertEquals(10000.0, s.getDeliveryTimeWindow().getEnd(), 0.01); - } - - @Test - public void whenReadingJobs_deliveryServiceTimeOfShipment3IsReadCorrectly() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - Shipment s = (Shipment) vrp.getJobs().get("3"); - assertEquals(100.0, s.getDeliveryServiceTime(), 0.01); - } - - @Test - public void whenReadingJobs_deliveryCoordShipment3IsReadCorrectly() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - Shipment s = (Shipment) vrp.getJobs().get("3"); - assertEquals(10.0, s.getDeliveryLocation().getCoordinate().getX(), 0.01); - assertEquals(0.0, s.getDeliveryLocation().getCoordinate().getY(), 0.01); - } - - @Test - public void whenReadingJobs_pickupCoordShipment3IsReadCorrectly() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - Shipment s = (Shipment) vrp.getJobs().get("3"); - assertEquals(10.0, s.getPickupLocation().getCoordinate().getX(), 0.01); - assertEquals(10.0, s.getPickupLocation().getCoordinate().getY(), 0.01); - } - - @Test - public void whenReadingJobs_deliveryIdShipment3IsReadCorrectly() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - Shipment s = (Shipment) vrp.getJobs().get("3"); - assertEquals("i(9,9)", s.getDeliveryLocation().getId()); - } - - @Test - public void whenReadingJobs_pickupIdShipment3IsReadCorrectly() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - Shipment s = (Shipment) vrp.getJobs().get("3"); - assertEquals("i(3,9)", s.getPickupLocation().getId()); - } - - @Test - public void whenReadingJobs_pickupLocationIdShipment4IsReadCorrectly() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - Shipment s = (Shipment) vrp.getJobs().get("4"); - assertEquals("[x=10.0][y=10.0]", s.getPickupLocation().getId()); - } - - @Test - public void whenReadingJobs_deliveryLocationIdShipment4IsReadCorrectly() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - Shipment s = (Shipment) vrp.getJobs().get("4"); - assertEquals("[x=10.0][y=0.0]", s.getDeliveryLocation().getId()); - } - - @Test - public void whenReadingJobs_pickupServiceTimeOfShipment4IsReadCorrectly() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - Shipment s = (Shipment) vrp.getJobs().get("4"); - assertEquals(0.0, s.getPickupServiceTime(), 0.01); - } - - @Test - public void whenReadingJobs_deliveryServiceTimeOfShipment4IsReadCorrectly() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - Shipment s = (Shipment) vrp.getJobs().get("4"); - assertEquals(100.0, s.getDeliveryServiceTime(), 0.01); - } - - @Test - public void whenReadingFile_v5AndItsTypeHasTheCorrectCapacityDimensionValues() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(inputStream); - VehicleRoutingProblem vrp = builder.build(); - Vehicle v = getVehicle("v5", vrp.getVehicles()); - assertEquals(100, v.getType().getCapacityDimensions().get(0)); - assertEquals(1000, v.getType().getCapacityDimensions().get(1)); - assertEquals(10000, v.getType().getCapacityDimensions().get(2)); - assertEquals(0, v.getType().getCapacityDimensions().get(3)); - assertEquals(0, v.getType().getCapacityDimensions().get(5)); - assertEquals(100000, v.getType().getCapacityDimensions().get(10)); - } - - @Test - public void whenReadingInitialRouteWithShipment4_thisShipmentShouldNotAppearInJobMap() { //since it is not part of the problem anymore - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder).read(getClass().getResourceAsStream("finiteVrpWithInitialSolutionForReaderTest.xml")); - VehicleRoutingProblem vrp = builder.build(); - assertFalse(vrp.getJobs().containsKey("4")); - } - - @Test - public void whenReadingInitialRouteWithDepTime10_departureTimeOfRouteShouldBeReadCorrectly() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder).read(getClass().getResourceAsStream("finiteVrpWithInitialSolutionForReaderTest.xml")); - VehicleRoutingProblem vrp = builder.build(); - assertEquals(10., vrp.getInitialVehicleRoutes().iterator().next().getDepartureTime(), 0.01); - } - - @Test - public void whenReadingInitialRoute_nuInitialRoutesShouldBeCorrect() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(getClass().getResourceAsStream("finiteVrpWithInitialSolutionForReaderTest.xml")); - VehicleRoutingProblem vrp = builder.build(); - assertEquals(1, vrp.getInitialVehicleRoutes().size()); - } - - @Test - public void whenReadingInitialRoute_nuActivitiesShouldBeCorrect() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(builder, null).read(getClass().getResourceAsStream("finiteVrpWithInitialSolutionForReaderTest.xml")); - VehicleRoutingProblem vrp = builder.build(); - assertEquals(2, vrp.getInitialVehicleRoutes().iterator().next().getActivities().size()); - } - - @Test - public void testRead_ifReaderIsCalled_itReadsSuccessfullyV2() { - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - ArrayList solutions = new ArrayList(); - new VrpXMLReader(vrpBuilder, solutions).read(getClass().getResourceAsStream("finiteVrpWithShipmentsAndSolution.xml")); - VehicleRoutingProblem vrp = vrpBuilder.build(); - assertEquals(4, vrp.getJobs().size()); - assertEquals(1, solutions.size()); - - assertEquals(1, solutions.get(0).getRoutes().size()); - List activities = solutions.get(0).getRoutes().iterator().next().getTourActivities().getActivities(); - assertEquals(4, activities.size()); - assertTrue(activities.get(0) instanceof PickupService); - assertTrue(activities.get(1) instanceof PickupService); - assertTrue(activities.get(2) instanceof PickupShipment); - assertTrue(activities.get(3) instanceof DeliverShipment); - } - - @Test - public void testRead_ifReaderIsCalled_itReadsSuccessfully() { - new VrpXMLReader(VehicleRoutingProblem.Builder.newInstance(), new ArrayList()).read(getClass().getResourceAsStream("lui-shen-solution.xml")); - assertTrue(true); - } - - - @Test - public void unassignedJobShouldBeRead() { - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - ArrayList solutions = new ArrayList(); - new VrpXMLReader(vrpBuilder, solutions).read(getClass().getResourceAsStream("finiteVrpWithShipmentsAndSolution.xml")); - - VehicleRoutingProblemSolution solution = Solutions.bestOf(solutions); - assertEquals(1, solution.getUnassignedJobs().size()); - assertEquals("4", solution.getUnassignedJobs().iterator().next().getId()); - } -} - -// diff --git a/jsprit-io/src/test/java/com/graphhopper/jsprit/io/problem/VrpXMLWriterTest.java b/jsprit-io/src/test/java/com/graphhopper/jsprit/io/problem/VrpXMLWriterTest.java deleted file mode 100644 index 57f743261..000000000 --- a/jsprit-io/src/test/java/com/graphhopper/jsprit/io/problem/VrpXMLWriterTest.java +++ /dev/null @@ -1,632 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.graphhopper.jsprit.io.problem; - -import com.graphhopper.jsprit.core.problem.Location; -import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.job.Service; -import com.graphhopper.jsprit.core.problem.job.Shipment; -import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; -import com.graphhopper.jsprit.core.problem.solution.route.activity.TimeWindow; -import com.graphhopper.jsprit.core.problem.vehicle.Vehicle; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; -import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; -import com.graphhopper.jsprit.core.util.Coordinate; -import com.graphhopper.jsprit.core.util.Solutions; -import com.graphhopper.jsprit.io.util.TestUtils; -import org.junit.Assert; -import org.junit.Test; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import static org.junit.Assert.*; - -public class VrpXMLWriterTest { - - @Test - public void whenWritingServices_itWritesThemCorrectly() { - VehicleRoutingProblem.Builder builder = twoVehicleTypesAndImpls(); - - Service s1 = Service.Builder.newInstance("1").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc")).setServiceTime(2.0).build(); - Service s2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc2")).setServiceTime(4.0).build(); - - VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build(); - VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); - assertEquals(2, readVrp.getJobs().size()); - - Service s1_read = (Service) vrp.getJobs().get("1"); - assertEquals("1", s1_read.getId()); - Assert.assertEquals("loc", s1_read.getLocation().getId()); - assertEquals("service", s1_read.getType()); - assertEquals(2.0, s1_read.getServiceDuration(), 0.01); - } - - @Test - public void shouldWriteNameOfService() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - Service s1 = Service.Builder.newInstance("1").setName("cleaning").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc")).setServiceTime(2.0).build(); - - VehicleRoutingProblem vrp = builder.addJob(s1).build(); - VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); - Service s1_read = (Service) readVrp.getJobs().get("1"); - assertTrue(s1_read.getName().equals("cleaning")); - } - - @Test - public void shouldWriteNameOfShipment() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - Location pickLocation = Location.Builder.newInstance().setId("pick").setIndex(1).build(); - Shipment s1 = Shipment.Builder.newInstance("1").setName("cleaning") - .setPickupLocation(pickLocation) - .setDeliveryLocation(TestUtils.loc("del")).build(); - - VehicleRoutingProblem vrp = builder.addJob(s1).build(); - VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); - Shipment s1_read = (Shipment) readVrp.getJobs().get("1"); - assertTrue(s1_read.getName().equals("cleaning")); - Assert.assertEquals(1, s1_read.getPickupLocation().getIndex()); - } - - @Test - public void whenWritingServicesWithSeveralCapacityDimensions_itWritesThemCorrectly() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - - Service s1 = Service.Builder.newInstance("1") - .addSizeDimension(0, 20) - .addSizeDimension(1, 200) - .setLocation(TestUtils.loc("loc")).setServiceTime(2.0).build(); - Service s2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc2")).setServiceTime(4.0).build(); - - VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build(); - VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); - assertEquals(2, readVrp.getJobs().size()); - - Service s1_read = (Service) vrp.getJobs().get("1"); - - assertEquals(2, s1_read.getSize().getNuOfDimensions()); - assertEquals(20, s1_read.getSize().get(0)); - assertEquals(200, s1_read.getSize().get(1)); - - } - - @Test - public void whenWritingShipments_readingThemAgainMustReturnTheWrittenLocationIdsOfS1() { - VehicleRoutingProblem.Builder builder = twoVehicleTypesAndImpls(); - - Shipment s1 = Shipment.Builder.newInstance("1").addSizeDimension(0, 10) - .setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()) - .setDeliveryLocation(TestUtils.loc("delLoc")).setPickupTimeWindow(TimeWindow.newInstance(1, 2)) - .setDeliveryTimeWindow(TimeWindow.newInstance(3, 4)).build(); - Shipment s2 = Shipment.Builder.newInstance("2").addSizeDimension(0, 20) - .setPickupLocation(Location.Builder.newInstance().setId("pickLocation").build()) - .setDeliveryLocation(TestUtils.loc("delLocation")).setPickupTimeWindow(TimeWindow.newInstance(5, 6)) - .setDeliveryTimeWindow(TimeWindow.newInstance(7, 8)).build(); - - - VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build(); - VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); - assertEquals(2, readVrp.getJobs().size()); - - assertEquals("pickLoc", ((Shipment) readVrp.getJobs().get("1")).getPickupLocation().getId()); - assertEquals("delLoc", ((Shipment) readVrp.getJobs().get("1")).getDeliveryLocation().getId()); - - } - - @Test - public void whenWritingShipments_readingThemAgainMustReturnTheWrittenPickupTimeWindowsOfS1() { - VehicleRoutingProblem.Builder builder = twoVehicleTypesAndImpls(); - - Shipment s1 = Shipment.Builder.newInstance("1").addSizeDimension(0, 10) - .setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()) - .setDeliveryLocation(TestUtils.loc("delLoc")).setPickupTimeWindow(TimeWindow.newInstance(1, 2)) - .setDeliveryTimeWindow(TimeWindow.newInstance(3, 4)).build(); - Shipment s2 = Shipment.Builder.newInstance("2").addSizeDimension(0, 20) - .setPickupLocation(Location.Builder.newInstance().setId("pickLocation").build()) - .setDeliveryLocation(TestUtils.loc("delLocation")).setPickupTimeWindow(TimeWindow.newInstance(5, 6)) - .setDeliveryTimeWindow(TimeWindow.newInstance(7, 8)).build(); - - - VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build(); - VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); - assertEquals(2, readVrp.getJobs().size()); - - assertEquals(1.0, ((Shipment) readVrp.getJobs().get("1")).getPickupTimeWindow().getStart(), 0.01); - assertEquals(2.0, ((Shipment) readVrp.getJobs().get("1")).getPickupTimeWindow().getEnd(), 0.01); - - - } - - @Test - public void whenWritingShipments_readingThemAgainMustReturnTheWrittenDeliveryTimeWindowsOfS1() { - VehicleRoutingProblem.Builder builder = twoVehicleTypesAndImpls(); - - Shipment s1 = Shipment.Builder.newInstance("1").addSizeDimension(0, 10) - .setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()) - .setDeliveryLocation(TestUtils.loc("delLoc")).setPickupTimeWindow(TimeWindow.newInstance(1, 2)) - .setDeliveryTimeWindow(TimeWindow.newInstance(3, 4)).build(); - Shipment s2 = Shipment.Builder.newInstance("2").addSizeDimension(0, 20) - .setPickupLocation(Location.Builder.newInstance().setId("pickLocation").build()) - .setDeliveryLocation(TestUtils.loc("delLocation")).setPickupTimeWindow(TimeWindow.newInstance(5, 6)) - .setDeliveryTimeWindow(TimeWindow.newInstance(7, 8)).build(); - - - VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build(); - VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); - assertEquals(2, readVrp.getJobs().size()); - - assertEquals(3.0, ((Shipment) readVrp.getJobs().get("1")).getDeliveryTimeWindow().getStart(), 0.01); - assertEquals(4.0, ((Shipment) readVrp.getJobs().get("1")).getDeliveryTimeWindow().getEnd(), 0.01); - - } - - @Test - public void whenWritingShipments_readingThemAgainMustReturnTheWrittenDeliveryServiceTimeOfS1() { - VehicleRoutingProblem.Builder builder = twoVehicleTypesAndImpls(); - - Shipment s1 = Shipment.Builder.newInstance("1").addSizeDimension(0, 10) - .setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()) - .setDeliveryLocation(TestUtils.loc("delLoc")).setPickupTimeWindow(TimeWindow.newInstance(1, 2)) - .setDeliveryTimeWindow(TimeWindow.newInstance(3, 4)).setPickupServiceTime(100).setDeliveryServiceTime(50).build(); - Shipment s2 = Shipment.Builder.newInstance("2").addSizeDimension(0, 20) - .setPickupLocation(Location.Builder.newInstance().setId("pickLocation").build()) - .setDeliveryLocation(TestUtils.loc("delLocation")).setPickupTimeWindow(TimeWindow.newInstance(5, 6)) - .setDeliveryTimeWindow(TimeWindow.newInstance(7, 8)).build(); - - - VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build(); - VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); - assertEquals(2, readVrp.getJobs().size()); - - assertEquals(100.0, ((Shipment) readVrp.getJobs().get("1")).getPickupServiceTime(), 0.01); - assertEquals(50.0, ((Shipment) readVrp.getJobs().get("1")).getDeliveryServiceTime(), 0.01); - - } - - @Test - public void whenWritingShipments_readingThemAgainMustReturnTheWrittenLocationIdOfS1() { - VehicleRoutingProblem.Builder builder = twoVehicleTypesAndImpls(); - - Shipment s1 = Shipment.Builder.newInstance("1").addSizeDimension(0, 10) - .setPickupLocation(TestUtils.loc(Coordinate.newInstance(1, 2))).setDeliveryLocation(TestUtils.loc("delLoc")).setPickupTimeWindow(TimeWindow.newInstance(1, 2)) - .setDeliveryTimeWindow(TimeWindow.newInstance(3, 4)).setPickupServiceTime(100).setDeliveryServiceTime(50).build(); - Shipment s2 = Shipment.Builder.newInstance("2").addSizeDimension(0, 20) - .setPickupLocation(Location.Builder.newInstance().setId("pickLocation").build()) - .setDeliveryLocation(TestUtils.loc("delLocation")).setPickupTimeWindow(TimeWindow.newInstance(5, 6)) - .setDeliveryTimeWindow(TimeWindow.newInstance(7, 8)).build(); - - - VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build(); - VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); - assertEquals(2, readVrp.getJobs().size()); - - assertEquals("[x=1.0][y=2.0]", ((Shipment) readVrp.getJobs().get("1")).getPickupLocation().getId()); - } - - @Test - public void whenWritingVehicles_vehShouldHave3Skills() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build(); - VehicleImpl v = VehicleImpl.Builder.newInstance("v1").addSkill("SKILL5").addSkill("skill1").addSkill("Skill2") - .setStartLocation(TestUtils.loc("loc")).setType(type1).build(); - builder.addVehicle(v); - - VehicleRoutingProblem vrp = builder.build(); - VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); - Vehicle veh1 = getVehicle("v1", readVrp); - - assertEquals(3, veh1.getSkills().values().size()); - assertTrue(veh1.getSkills().containsSkill("skill5")); - assertTrue(veh1.getSkills().containsSkill("skill1")); - assertTrue(veh1.getSkills().containsSkill("skill2")); - } - - @Test - public void whenWritingVehicles_vehShouldHave0Skills() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build(); - VehicleImpl v = VehicleImpl.Builder.newInstance("v1").setStartLocation(TestUtils.loc("loc")).setType(type1).build(); - builder.addVehicle(v); - - VehicleRoutingProblem vrp = builder.build(); - VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); - Vehicle veh = getVehicle("v1", readVrp); - - assertEquals(0, veh.getSkills().values().size()); - } - - private Vehicle getVehicle(String v1, VehicleRoutingProblem readVrp) { - for (Vehicle v : readVrp.getVehicles()) { - if (v.getId().equals(v1)) return v; - } - return null; - } - - @Test - public void whenWritingShipments_shipmentShouldHaveCorrectNuSkills() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - - Shipment s = Shipment.Builder.newInstance("1").addRequiredSkill("skill1").addRequiredSkill("skill2").addRequiredSkill("skill3") - .addSizeDimension(0, 10) - .setPickupLocation(TestUtils.loc(Coordinate.newInstance(1, 2))) - .setDeliveryLocation(TestUtils.loc("delLoc", Coordinate.newInstance(5, 6))) - .setPickupTimeWindow(TimeWindow.newInstance(1, 2)) - .setDeliveryTimeWindow(TimeWindow.newInstance(3, 4)).setPickupServiceTime(100).setDeliveryServiceTime(50).build(); - - VehicleRoutingProblem vrp = builder.addJob(s).build(); - VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); - - assertEquals(3, readVrp.getJobs().get("1").getRequiredSkills().values().size()); - assertTrue(readVrp.getJobs().get("1").getRequiredSkills().containsSkill("skill1")); - assertTrue(readVrp.getJobs().get("1").getRequiredSkills().containsSkill("skill2")); - assertTrue(readVrp.getJobs().get("1").getRequiredSkills().containsSkill("skill3")); - } - - @Test - public void whenWritingShipments_readingThemAgainMustReturnTheWrittenLocationCoordinateOfS1() { - VehicleRoutingProblem.Builder builder = twoVehicleTypesAndImpls(); - - Shipment s1 = Shipment.Builder.newInstance("1").addSizeDimension(0, 10).setPickupLocation(TestUtils.loc(Coordinate.newInstance(1, 2))) - .setDeliveryLocation(TestUtils.loc("delLoc", Coordinate.newInstance(5, 6))) - .setPickupTimeWindow(TimeWindow.newInstance(1, 2)) - .setDeliveryTimeWindow(TimeWindow.newInstance(3, 4)).setPickupServiceTime(100).setDeliveryServiceTime(50).build(); - Shipment s2 = Shipment.Builder.newInstance("2").addSizeDimension(0, 20) - .setPickupLocation(Location.Builder.newInstance().setId("pickLocation").build()) - .setDeliveryLocation(TestUtils.loc("delLocation")) - .setPickupTimeWindow(TimeWindow.newInstance(5, 6)) - .setDeliveryTimeWindow(TimeWindow.newInstance(7, 8)).build(); - - - VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build(); - VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); - assertEquals(2, readVrp.getJobs().size()); - - assertEquals(1.0, ((Shipment) readVrp.getJobs().get("1")).getPickupLocation().getCoordinate().getX(), 0.01); - assertEquals(2.0, ((Shipment) readVrp.getJobs().get("1")).getPickupLocation().getCoordinate().getY(), 0.01); - - assertEquals(5.0, ((Shipment) readVrp.getJobs().get("1")).getDeliveryLocation().getCoordinate().getX(), 0.01); - assertEquals(6.0, ((Shipment) readVrp.getJobs().get("1")).getDeliveryLocation().getCoordinate().getY(), 0.01); - } - - @Test - public void whenWritingShipmentWithSeveralCapacityDimension_itShouldWriteAndReadItCorrectly() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - - Shipment s1 = Shipment.Builder.newInstance("1") - .setPickupLocation(TestUtils.loc(Coordinate.newInstance(1, 2))) - .setDeliveryLocation(TestUtils.loc("delLoc", Coordinate.newInstance(5, 6))) - .setPickupTimeWindow(TimeWindow.newInstance(1, 2)) - .setDeliveryTimeWindow(TimeWindow.newInstance(3, 4)).setPickupServiceTime(100).setDeliveryServiceTime(50) - .addSizeDimension(0, 10) - .addSizeDimension(2, 100) - .build(); - - Shipment s2 = Shipment.Builder.newInstance("2").addSizeDimension(0, 20) - .setPickupLocation(Location.Builder.newInstance().setId("pickLocation").build()) - .setDeliveryLocation(TestUtils.loc("delLocation")).setPickupTimeWindow(TimeWindow.newInstance(5, 6)) - .setDeliveryTimeWindow(TimeWindow.newInstance(7, 8)).build(); - - VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build(); - VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); - - assertEquals(3, (readVrp.getJobs().get("1")).getSize().getNuOfDimensions()); - assertEquals(10, (readVrp.getJobs().get("1")).getSize().get(0)); - assertEquals(0, (readVrp.getJobs().get("1")).getSize().get(1)); - assertEquals(100, (readVrp.getJobs().get("1")).getSize().get(2)); - - assertEquals(1, (readVrp.getJobs().get("2")).getSize().getNuOfDimensions()); - assertEquals(20, (readVrp.getJobs().get("2")).getSize().get(0)); - } - - @Test - public void whenWritingVehicleV1_itsStartLocationMustBeWrittenCorrectly() { - VehicleRoutingProblem.Builder builder = twoVehicleTypesAndImpls(); - - Service s1 = Service.Builder.newInstance("1").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc")).setServiceTime(2.0).build(); - Service s2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc2")).setServiceTime(4.0).build(); - - VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build(); - VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); - - Vehicle v = getVehicle("v1", readVrp.getVehicles()); - assertEquals("loc", v.getStartLocation().getId()); - assertEquals("loc", v.getEndLocation().getId()); - - } - - private VehicleRoutingProblem.Builder twoVehicleTypesAndImpls() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - - VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build(); - VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build(); - VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocation(TestUtils.loc("loc")).setType(type1).build(); - VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(TestUtils.loc("loc")).setType(type2).build(); - - builder.addVehicle(v1); - builder.addVehicle(v2); - return builder; - } - - @Test - public void whenWritingService_itShouldContain_bothSkills() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - - //skill names are case-insensitive - Service s = Service.Builder.newInstance("1").addRequiredSkill("skill1").addRequiredSkill("SKILL2").addSizeDimension(0, 1) - .setLocation(TestUtils.loc("loc")).setServiceTime(2.0).build(); - - VehicleRoutingProblem vrp = builder.addJob(s).build(); - - VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); - - assertEquals(2, readVrp.getJobs().get("1").getRequiredSkills().values().size()); - assertTrue(readVrp.getJobs().get("1").getRequiredSkills().containsSkill("skill1")); - assertTrue(readVrp.getJobs().get("1").getRequiredSkills().containsSkill("skill2")); - } - - - @Test - public void whenWritingVehicleV1_itDoesNotReturnToDepotMustBeWrittenCorrectly() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - - VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build(); - VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build(); - VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setReturnToDepot(false).setStartLocation(TestUtils.loc("loc")) - .setType(type1).build(); - VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(TestUtils.loc("loc")).setType(type2).build(); - - builder.addVehicle(v1); - builder.addVehicle(v2); - - Service s1 = Service.Builder.newInstance("1").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc")).setServiceTime(2.0).build(); - Service s2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc2")).setServiceTime(4.0).build(); - - VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build(); - VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); - - Vehicle v = getVehicle("v1", readVrp.getVehicles()); - assertFalse(v.isReturnToDepot()); - } - - @Test - public void whenWritingVehicleV1_readingAgainAssignsCorrectType() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - - VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build(); - VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build(); - VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setReturnToDepot(false).setStartLocation(TestUtils.loc("loc")).setType(type1).build(); - VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(TestUtils.loc("loc")).setType(type2).build(); - - builder.addVehicle(v1); - builder.addVehicle(v2); - - Service s1 = Service.Builder.newInstance("1").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc")).setServiceTime(2.0).build(); - Service s2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc2")).setServiceTime(4.0).build(); - - VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build(); - VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); - - Vehicle v = getVehicle("v1", readVrp.getVehicles()); - assertEquals("vehType", v.getType().getTypeId()); - } - - @Test - public void whenWritingVehicleV2_readingAgainAssignsCorrectType() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - - VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build(); - VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build(); - VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setReturnToDepot(false).setStartLocation(TestUtils.loc("loc")).setType(type1).build(); - VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(TestUtils.loc("loc")).setType(type2).build(); - - builder.addVehicle(v1); - builder.addVehicle(v2); - - Service s1 = Service.Builder.newInstance("1").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc")).setServiceTime(2.0).build(); - Service s2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc2")).setServiceTime(4.0).build(); - - VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build(); - VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); - - Vehicle v = getVehicle("v2", readVrp.getVehicles()); - assertEquals("vehType2", v.getType().getTypeId()); - assertEquals(200, v.getType().getCapacityDimensions().get(0)); - - } - - @Test - public void whenWritingVehicleV2_readingItsLocationsAgainReturnsCorrectLocations() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - - VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build(); - VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build(); - VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setReturnToDepot(false) - .setStartLocation(TestUtils.loc("loc")).setType(type1).build(); - VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2") - .setStartLocation(TestUtils.loc("startLoc", Coordinate.newInstance(1, 2))) - .setEndLocation(TestUtils.loc("endLoc", Coordinate.newInstance(4, 5))).setType(type2).build(); - - builder.addVehicle(v1); - builder.addVehicle(v2); - - Service s1 = Service.Builder.newInstance("1").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc")).setServiceTime(2.0).build(); - Service s2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc2")).setServiceTime(4.0).build(); - - VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build(); - VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); - - Vehicle v = getVehicle("v2", readVrp.getVehicles()); - assertEquals("startLoc", v.getStartLocation().getId()); - assertEquals("endLoc", v.getEndLocation().getId()); - assertEquals(1.0, v.getStartLocation().getCoordinate().getX(), 0.01); - assertEquals(2.0, v.getStartLocation().getCoordinate().getY(), 0.01); - assertEquals(4.0, v.getEndLocation().getCoordinate().getX(), 0.01); - assertEquals(5.0, v.getEndLocation().getCoordinate().getY(), 0.01); - } - - - @Test - public void whenWritingVehicleWithSeveralCapacityDimensions_itShouldBeWrittenAndRereadCorrectly() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - - VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("type") - .addCapacityDimension(0, 100) - .addCapacityDimension(1, 1000) - .addCapacityDimension(2, 10000) - .build(); - - VehicleImpl v2 = VehicleImpl.Builder.newInstance("v") - .setStartLocation(TestUtils.loc("startLoc", Coordinate.newInstance(1, 2))) - .setEndLocation(TestUtils.loc("endLoc", Coordinate.newInstance(4, 5))).setType(type2).build(); - builder.addVehicle(v2); - - VehicleRoutingProblem vrp = builder.build(); - VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); - - Vehicle v = getVehicle("v", readVrp.getVehicles()); - assertEquals(3, v.getType().getCapacityDimensions().getNuOfDimensions()); - assertEquals(100, v.getType().getCapacityDimensions().get(0)); - assertEquals(1000, v.getType().getCapacityDimensions().get(1)); - assertEquals(10000, v.getType().getCapacityDimensions().get(2)); - } - - @Test - public void whenWritingVehicleWithSeveralCapacityDimensions_itShouldBeWrittenAndRereadCorrectlyV2() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - - VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("type") - .addCapacityDimension(0, 100) - .addCapacityDimension(1, 1000) - .addCapacityDimension(10, 10000) - .build(); - - VehicleImpl v2 = VehicleImpl.Builder.newInstance("v") - .setStartLocation(TestUtils.loc("startLoc", Coordinate.newInstance(1, 2))) - .setEndLocation(TestUtils.loc("endLoc", Coordinate.newInstance(4, 5))).setType(type2).build(); - builder.addVehicle(v2); - - VehicleRoutingProblem vrp = builder.build(); - VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); - - Vehicle v = getVehicle("v", readVrp.getVehicles()); - assertEquals(11, v.getType().getCapacityDimensions().getNuOfDimensions()); - assertEquals(0, v.getType().getCapacityDimensions().get(9)); - assertEquals(10000, v.getType().getCapacityDimensions().get(10)); - } - - private Vehicle getVehicle(String string, Collection vehicles) { - for (Vehicle v : vehicles) if (string.equals(v.getId())) return v; - return null; - } - - @Test - public void solutionWithoutUnassignedJobsShouldBeWrittenCorrectly() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - - VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build(); - VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocation(TestUtils.loc("loc")).setType(type1).build(); - builder.addVehicle(v1); - - Service s1 = Service.Builder.newInstance("1").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc")).setServiceTime(2.0).build(); - Service s2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc2")).setServiceTime(4.0).build(); - - VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build(); - - VehicleRoute route = VehicleRoute.Builder.newInstance(v1).addService(s1).addService(s2).build(); - List routes = new ArrayList(); - routes.add(route); - VehicleRoutingProblemSolution solution = new VehicleRoutingProblemSolution(routes, 10.); - List solutions = new ArrayList(); - solutions.add(solution); - - List solutionsToRead = writeAndRereadXmlWithSolutions(vrp, solutions); - - assertEquals(1, solutionsToRead.size()); - assertEquals(10., Solutions.bestOf(solutionsToRead).getCost(), 0.01); - assertTrue(Solutions.bestOf(solutionsToRead).getUnassignedJobs().isEmpty()); - } - - @Test - public void solutionWithUnassignedJobsShouldBeWrittenCorrectly() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - - VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build(); - VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocation(TestUtils.loc("loc")).setType(type1).build(); - builder.addVehicle(v1); - - Service s1 = Service.Builder.newInstance("1").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc")).setServiceTime(2.0).build(); - Service s2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc2")).setServiceTime(4.0).build(); - - VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build(); - - VehicleRoute route = VehicleRoute.Builder.newInstance(v1).addService(s1).build(); - List routes = new ArrayList(); - routes.add(route); - VehicleRoutingProblemSolution solution = new VehicleRoutingProblemSolution(routes, 10.); - solution.getUnassignedJobs().add(s2); - List solutions = new ArrayList(); - solutions.add(solution); - - List solutionsToRead = writeAndRereadXmlWithSolutions(vrp, solutions); - - assertEquals(1, solutionsToRead.size()); - assertEquals(10., Solutions.bestOf(solutionsToRead).getCost(), 0.01); - assertEquals(1, Solutions.bestOf(solutionsToRead).getUnassignedJobs().size()); - assertEquals("2", Solutions.bestOf(solutionsToRead).getUnassignedJobs().iterator().next().getId()); - } - - @Test - public void outputStreamAndFileContentsAreEqual() throws IOException { - VehicleRoutingProblem.Builder builder = twoVehicleTypesAndImpls(); - VehicleRoutingProblem vrp = builder.build(); - - VrpXMLWriter vrpXMLWriter = new VrpXMLWriter(vrp, null); - ByteArrayOutputStream os = (ByteArrayOutputStream) vrpXMLWriter.write(); - - String outputStringFromFile = new String(os.toByteArray()); - String outputStringFromStream = new VrpXMLWriter(vrp, null).write().toString(); - - assertEquals(outputStringFromFile, outputStringFromStream); - - } - - private VehicleRoutingProblem writeAndRereadXml(VehicleRoutingProblem vrp) { - VrpXMLWriter vrpXMLWriter = new VrpXMLWriter(vrp, null); - ByteArrayOutputStream os = (ByteArrayOutputStream) vrpXMLWriter.write(); - ByteArrayInputStream is = new ByteArrayInputStream(os.toByteArray()); - VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(vrpToReadBuilder, null).read(is); - return vrpToReadBuilder.build(); - } - - private List writeAndRereadXmlWithSolutions(VehicleRoutingProblem vrp, List solutions) { - VrpXMLWriter vrpXMLWriter = new VrpXMLWriter(vrp, solutions); - ByteArrayOutputStream os = (ByteArrayOutputStream) vrpXMLWriter.write(); - ByteArrayInputStream is = new ByteArrayInputStream(os.toByteArray()); - VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance(); - List solutionsToRead = new ArrayList(); - new VrpXMLReader(vrpToReadBuilder, solutionsToRead).read(is); - return solutionsToRead; - } - -} diff --git a/jsprit-io/src/test/java/com/graphhopper/jsprit/io/util/TestUtils.java b/jsprit-io/src/test/java/com/graphhopper/jsprit/io/util/TestUtils.java deleted file mode 100644 index f778ad5c8..000000000 --- a/jsprit-io/src/test/java/com/graphhopper/jsprit/io/util/TestUtils.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.graphhopper.jsprit.io.util; - -import com.graphhopper.jsprit.core.problem.Location; -import com.graphhopper.jsprit.core.util.Coordinate; - -/** - * Created by schroeder on 19/12/14. - */ -public class TestUtils { - - public static Location loc(String id, Coordinate coordinate) { - return Location.Builder.newInstance().setId(id).setCoordinate(coordinate).build(); - } - - public static Location loc(String id) { - return Location.Builder.newInstance().setId(id).build(); - } - - public static Location loc(Coordinate coordinate) { - return Location.Builder.newInstance().setCoordinate(coordinate).build(); - } -} diff --git a/jsprit-io/src/test/resources/com/graphhopper/jsprit/io/algorithm/algorithmConfig.xml b/jsprit-io/src/test/resources/com/graphhopper/jsprit/io/algorithm/algorithmConfig.xml deleted file mode 100755 index e04ea9d7f..000000000 --- a/jsprit-io/src/test/resources/com/graphhopper/jsprit/io/algorithm/algorithmConfig.xml +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - 2000 - - - - - - - 1 - - - - - - - - 0.5 - - - - - - 0.5 - - - - - - - - - 0.3 - - - - - - 0.5 - - - - - - diff --git a/jsprit-io/src/test/resources/com/graphhopper/jsprit/io/algorithm/algorithmConfigForReaderTest.xml b/jsprit-io/src/test/resources/com/graphhopper/jsprit/io/algorithm/algorithmConfigForReaderTest.xml deleted file mode 100755 index 32dc119b5..000000000 --- a/jsprit-io/src/test/resources/com/graphhopper/jsprit/io/algorithm/algorithmConfigForReaderTest.xml +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - 2000 - - - - 100 - - - 25 - - - - - - - - - 1 - - - - - - - - 0.5 - - - - - - 0.5 - - - - - - - - - 0.3 - - - - - - 0.5 - - - - - - diff --git a/jsprit-io/src/test/resources/com/graphhopper/jsprit/io/algorithm/algorithmConfigForReaderTest2.xml b/jsprit-io/src/test/resources/com/graphhopper/jsprit/io/algorithm/algorithmConfigForReaderTest2.xml deleted file mode 100755 index 0a6d353de..000000000 --- a/jsprit-io/src/test/resources/com/graphhopper/jsprit/io/algorithm/algorithmConfigForReaderTest2.xml +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - 2000 - - - 100 - - - - - - - - - 1 - - - - - - - - 0.5 - - - - - - 0.5 - - - - - - - - - 0.3 - - - - - - 0.5 - - - - - - diff --git a/jsprit-io/src/test/resources/com/graphhopper/jsprit/io/algorithm/algorithmConfig_withoutIterations.xml b/jsprit-io/src/test/resources/com/graphhopper/jsprit/io/algorithm/algorithmConfig_withoutIterations.xml deleted file mode 100755 index bee7bafc1..000000000 --- a/jsprit-io/src/test/resources/com/graphhopper/jsprit/io/algorithm/algorithmConfig_withoutIterations.xml +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - 1 - - - - - - - - - 0.5 - - - - - - 0.5 - - - - - - - - - 0.3 - - - - - - 0.5 - - - - - - - diff --git a/jsprit-io/src/test/resources/com/graphhopper/jsprit/io/algorithm/finiteVrp.xml b/jsprit-io/src/test/resources/com/graphhopper/jsprit/io/algorithm/finiteVrp.xml deleted file mode 100644 index 3922801a8..000000000 --- a/jsprit-io/src/test/resources/com/graphhopper/jsprit/io/algorithm/finiteVrp.xml +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - FINITE - HETEROGENEOUS - - - - - v1 - - depotLoc2 - - - vehType - - 0.0 - 1000.0 - - - - v2 - - depotLoc - - - vehType2 - - 0.0 - 1000.0 - - - - - - vehType - 20 - - 0.0 - 0.0 - - - - - vehType2 - 200 - - 0.0 - 0.0 - - - - - - - - j(1,5) - - 1 - 0.0 - - - 0.0 - 4000.0 - - - - - - i(3,9) - - 1 - 0.0 - - - 0.0 - 4000.0 - - - - - - - - diff --git a/jsprit-io/src/test/resources/com/graphhopper/jsprit/io/algorithm/testConfig.xml b/jsprit-io/src/test/resources/com/graphhopper/jsprit/io/algorithm/testConfig.xml deleted file mode 100755 index 9976be6bb..000000000 --- a/jsprit-io/src/test/resources/com/graphhopper/jsprit/io/algorithm/testConfig.xml +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - 10 - - - - - - - 1 - - - - - - - - 0.5 - - - - - 0.4 - - - - - - - - - 0.1 - - - - - 0.4 - - - - - - - - - 0.3 - - - - - 0.2 - - - - - - - - - - - - - - - - - diff --git a/jsprit-io/src/test/resources/com/graphhopper/jsprit/io/problem/biggerProblem.xml b/jsprit-io/src/test/resources/com/graphhopper/jsprit/io/problem/biggerProblem.xml deleted file mode 100644 index df987d508..000000000 --- a/jsprit-io/src/test/resources/com/graphhopper/jsprit/io/problem/biggerProblem.xml +++ /dev/null @@ -1,662 +0,0 @@ - - - - - - FINITE - HOMOGENEOUS - - - - 18 - 3.5T - - [x=0.0][y=0.0] - - - - [x=0.0][y=0.0] - - - - 14400.0 - 46800.0 - - true - - - 19 - 3.5T - - [x=0.0][y=0.0] - - - - [x=0.0][y=0.0] - - - - 39600.0 - 64800.0 - - true - - - 20 - 3.5T - - [x=0.0][y=0.0] - - - - [x=0.0][y=0.0] - - - - 14400.0 - 46800.0 - - true - - - 7 - 1.5T - - [x=0.0][y=0.0] - - - - [x=0.0][y=0.0] - - - - 14400.0 - 46800.0 - - true - - - 23 - 5T - - [x=0.0][y=0.0] - - - - [x=0.0][y=0.0] - - - - 14400.0 - 46800.0 - - true - - - 11 - 3.5T - - [x=0.0][y=0.0] - - - - [x=0.0][y=0.0] - - - - 14400.0 - 46800.0 - - true - - - 3 - 1.5T - - [x=0.0][y=0.0] - - - - [x=0.0][y=0.0] - - - - 14400.0 - 46800.0 - - true - - - 1 - 1.5T - - [x=0.0][y=0.0] - - - - [x=0.0][y=0.0] - - - - 14400.0 - 46800.0 - - true - - - 12 - 3.5T - - [x=0.0][y=0.0] - - - - [x=0.0][y=0.0] - - - - 14400.0 - 46800.0 - - true - - - 22 - 5T - - [x=0.0][y=0.0] - - - - [x=0.0][y=0.0] - - - - 14400.0 - 46800.0 - - true - - - 15 - 3.5T - - [x=0.0][y=0.0] - - - - [x=0.0][y=0.0] - - - - 14400.0 - 46800.0 - - true - - - 16 - 3.5T - - [x=0.0][y=0.0] - - - - [x=0.0][y=0.0] - - - - 14400.0 - 46800.0 - - true - - - 9 - 1.5T - - [x=0.0][y=0.0] - - - - [x=0.0][y=0.0] - - - - 14400.0 - 46800.0 - - true - - - 4 - 1.5T - - [x=0.0][y=0.0] - - - - [x=0.0][y=0.0] - - - - 14400.0 - 46800.0 - - true - - - 2 - 1.5T - - [x=0.0][y=0.0] - - - - [x=0.0][y=0.0] - - - - 14400.0 - 46800.0 - - true - - - 24 - 5T - - [x=0.0][y=0.0] - - - - [x=0.0][y=0.0] - - - - 14400.0 - 46800.0 - - true - - - 5 - 1.5T - - [x=0.0][y=0.0] - - - - [x=0.0][y=0.0] - - - - 14400.0 - 46800.0 - - true - - - 17 - 3.5T - - [x=0.0][y=0.0] - - - - [x=0.0][y=0.0] - - - - 14400.0 - 46800.0 - - true - - - 25 - 5T - - [x=0.0][y=0.0] - - - - [x=0.0][y=0.0] - - - - 14400.0 - 46800.0 - - true - - - 13 - 3.5T - - [x=0.0][y=0.0] - - - - [x=0.0][y=0.0] - - - - 14400.0 - 46800.0 - - true - - - 27 - 8T - - [x=0.0][y=0.0] - - - - [x=0.0][y=0.0] - - - - 14400.0 - 46800.0 - - true - - - 6 - 1.5T - - [x=0.0][y=0.0] - - - - [x=0.0][y=0.0] - - - - 14400.0 - 46800.0 - - true - - - 10 - 1.5T - - [x=0.0][y=0.0] - - - - [x=0.0][y=0.0] - - - - 14400.0 - 46800.0 - - true - - - 8 - 1.5T - - [x=0.0][y=0.0] - - - - [x=0.0][y=0.0] - - - - 14400.0 - 46800.0 - - true - - - 26 - 8T - - [x=0.0][y=0.0] - - - - [x=0.0][y=0.0] - - - - 14400.0 - 46800.0 - - true - - - 14 - 3.5T - - [x=0.0][y=0.0] - - - - [x=0.0][y=0.0] - - - - 14400.0 - 46800.0 - - true - - - 21 - 5T - - [x=0.0][y=0.0] - - - - [x=0.0][y=0.0] - - - - 14400.0 - 46800.0 - - true - - - - - 1.5T - - 0 - - - 0.0 - 1.0 - - - - - 3.5T - - 0 - - - 0.0 - 1.0 - - - - - 5T - - 0 - - - 0.0 - 1.0 - - - - - 8T - - 0 - - - 0.0 - 1.0 - - - - - - - [x=1000.0][y=1000.0] - - - 0 - - 0.0 - - - 21600.0 - 36000.0 - - - - - [x=1000.0][y=1000.0] - - - 0 - - 0.0 - - - 21600.0 - 36000.0 - - - - - [x=1000.0][y=1000.0] - - - 0 - - 0.0 - - - 19800.0 - 21600.0 - - - - - [x=1000.0][y=1000.0] - - - 0 - - 0.0 - - - 21600.0 - 43200.0 - - - - - [x=1000.0][y=1000.0] - - - 0 - - 0.0 - - - 21600.0 - 43200.0 - - - - - [x=1000.0][y=1000.0] - - - 0 - - 0.0 - - - 21600.0 - 36000.0 - - - - - [x=1000.0][y=1000.0] - - - 0 - - 0.0 - - - 21600.0 - 36000.0 - - - - - [x=1000.0][y=1000.0] - - - 0 - - 0.0 - - - 54000.0 - 64800.0 - - - - - [x=1000.0][y=1000.0] - - - 0 - - 0.0 - - - 21600.0 - 50400.0 - - - - - diff --git a/jsprit-io/src/test/resources/com/graphhopper/jsprit/io/problem/finiteVrpForReaderTest.xml b/jsprit-io/src/test/resources/com/graphhopper/jsprit/io/problem/finiteVrpForReaderTest.xml deleted file mode 100644 index dd028c412..000000000 --- a/jsprit-io/src/test/resources/com/graphhopper/jsprit/io/problem/finiteVrpForReaderTest.xml +++ /dev/null @@ -1,238 +0,0 @@ - - - - - - - FINITE - HETEROGENEOUS - - - - - v1 - - depotLoc2 - - 1 - - vehType - - 0.0 - 1000.0 - - skill1; SKill2 - - - v2 - - depotLoc - - 2 - - false - vehType2 - - 0.0 - 1000.0 - - - - v3 - - startLoc - - 3 - - - endLoc - - 4 - - vehType2 - - 0.0 - 1000.0 - - - - v4 - - startLoc - - - - endLoc - - - vehType2 - - 0.0 - 1000.0 - - - - v5 - - startLoc - - - - endLoc - - - vehType3 - - 0.0 - 1000.0 - - - - - - vehType - - 20 - - - 0.0 - 0.0 - - - - - vehType2 - 200 - - 0.0 - 0.0 - - - - - vehType3 - - 100 - 1000 - 10000 - 100000 - - - 0.0 - 0.0 - - - - - - - - j(1,5) - cleaning - - - 1 - - 10.0 - - - 0.0 - 4000.0 - - - skill1, Skill2 - - - - i(3,9) - cleaning - - 1 - 0.0 - - - 0.0 - 4000.0 - - - - - - - - - deliver-smth - - i(3,9) - - 10.0 - - - 1000.0 - 4000.0 - - - - - i(9,9) - - 100.0 - - - 6000.0 - 10000.0 - - - - - 10 - - skill1, Skill2 - - - - - - - - 1000.0 - 4000.0 - - - - - - 100.0 - - - 6000.0 - 10000.0 - - - - - 10 - - deliver-smth - - - - diff --git a/jsprit-io/src/test/resources/com/graphhopper/jsprit/io/problem/finiteVrpWithInitialSolutionForReaderTest.xml b/jsprit-io/src/test/resources/com/graphhopper/jsprit/io/problem/finiteVrpWithInitialSolutionForReaderTest.xml deleted file mode 100644 index 5fba42b89..000000000 --- a/jsprit-io/src/test/resources/com/graphhopper/jsprit/io/problem/finiteVrpWithInitialSolutionForReaderTest.xml +++ /dev/null @@ -1,241 +0,0 @@ - - - - - - - FINITE - HETEROGENEOUS - - - - - v1 - - depotLoc2 - - - vehType - - 0.0 - 1000.0 - - - - v2 - - depotLoc - - - false - vehType2 - - 0.0 - 1000.0 - - - - v3 - - startLoc - - - - endLoc - - - vehType2 - - 0.0 - 1000.0 - - - - v4 - - startLoc - - - - endLoc - - - vehType2 - - 0.0 - 1000.0 - - - - v5 - - startLoc - - - - endLoc - - - vehType3 - - 0.0 - 1000.0 - - - - - - vehType - - 20 - - - 0.0 - 0.0 - - - - - vehType2 - 200 - - 0.0 - 0.0 - - - - - vehType3 - - 100 - 1000 - 10000 - 100000 - - - 0.0 - 0.0 - - - - - - - - j(1,5) - - - 1 - - 10.0 - - - 0.0 - 4000.0 - - - - - - i(3,9) - - 1 - 0.0 - - - 0.0 - 4000.0 - - - - - - - - - - i(3,9) - - 10.0 - - - 1000.0 - 4000.0 - - - - - i(9,9) - - 100.0 - - - 6000.0 - 10000.0 - - - - 10 - - - - - - - - 1000.0 - 4000.0 - - - - - - 100.0 - - - 6000.0 - 10000.0 - - - - - 10 - - - - - - - - noDriver - v1 - 10. - - 4 - - - 4 - - - - - - diff --git a/jsprit-io/src/test/resources/com/graphhopper/jsprit/io/problem/finiteVrpWithShipmentsAndSolution.xml b/jsprit-io/src/test/resources/com/graphhopper/jsprit/io/problem/finiteVrpWithShipmentsAndSolution.xml deleted file mode 100644 index 7e342b012..000000000 --- a/jsprit-io/src/test/resources/com/graphhopper/jsprit/io/problem/finiteVrpWithShipmentsAndSolution.xml +++ /dev/null @@ -1,183 +0,0 @@ - - - - - - - FINITE - HETEROGENEOUS - - - - - v1 - - depotLoc2 - - - vehType - - 0.0 - 1000.0 - - - - v2 - - depotLoc - - - vehType2 - - 0.0 - 1000.0 - - - - - - vehType - 20 - - 0.0 - 0.0 - - - - - vehType2 - 200 - - 0.0 - 0.0 - - - - - - - - j(1,5) - - 1 - 0.0 - - - 0.0 - 4000.0 - - - - - - i(3,9) - - 1 - 0.0 - - - 0.0 - 4000.0 - - - - - - i(3,9) - - 1 - 0.0 - - - 0.0 - 4000.0 - - - - - - - - - i(3,9) - - 0.0 - - - 0.0 - 4000.0 - - - - - i(9,9) - - 0.0 - - - 0.0 - 4000.0 - - - - 1 - - - - - - 100.0 - - - 0.0 - noDriver - v1 - 10.0 - - 1 - 20.0 - 30.0 - - - 2 - 40.0 - 80.0 - - - 3 - 40.0 - 80.0 - - - 3 - 40.0 - 80.0 - - 100.0 - - - - - - - - - diff --git a/jsprit-io/src/test/resources/com/graphhopper/jsprit/io/problem/lui-shen-solution.xml b/jsprit-io/src/test/resources/com/graphhopper/jsprit/io/problem/lui-shen-solution.xml deleted file mode 100644 index c9b5028a9..000000000 --- a/jsprit-io/src/test/resources/com/graphhopper/jsprit/io/problem/lui-shen-solution.xml +++ /dev/null @@ -1,1937 +0,0 @@ - - - - - - - INFINITE - HETEROGENEOUS - - - - A - A - - 0 - - - - 0.0 - 1236.0 - - - - B - B - - 0 - - - - 0.0 - 1236.0 - - - - C - C - - 0 - - - - 0.0 - 1236.0 - - - - - - A - 100 - - 300.0 - 1.0 - - - - - B - 200 - - 800.0 - 1.0 - - - - - C - 300 - - 1350.0 - 1.0 - - - - - - - 25 - - 40 - 90.0 - - - 169.0 - 224.0 - - - - - 26 - - 10 - 90.0 - - - 622.0 - 701.0 - - - - - 23 - - 10 - 90.0 - - - 732.0 - 777.0 - - - - - 24 - - 10 - 90.0 - - - 65.0 - 144.0 - - - - - 29 - - 10 - 90.0 - - - 358.0 - 405.0 - - - - - 27 - - 10 - 90.0 - - - 261.0 - 316.0 - - - - - 28 - - 20 - 90.0 - - - 546.0 - 593.0 - - - - - 33 - - 40 - 90.0 - - - 87.0 - 158.0 - - - - - 32 - - 30 - 90.0 - - - 31.0 - 100.0 - - - - - 31 - - 20 - 90.0 - - - 200.0 - 237.0 - - - - - 30 - - 10 - 90.0 - - - 449.0 - 504.0 - - - - - 12 - - 20 - 90.0 - - - 652.0 - 721.0 - - - - - 13 - - 30 - 90.0 - - - 30.0 - 92.0 - - - - - 14 - - 10 - 90.0 - - - 567.0 - 620.0 - - - - - 15 - - 40 - 90.0 - - - 384.0 - 429.0 - - - - - 16 - - 40 - 90.0 - - - 475.0 - 528.0 - - - - - 17 - - 20 - 90.0 - - - 99.0 - 148.0 - - - - - 18 - - 20 - 90.0 - - - 179.0 - 254.0 - - - - - 19 - - 10 - 90.0 - - - 278.0 - 345.0 - - - - - 20 - - 10 - 90.0 - - - 10.0 - 73.0 - - - - - 22 - - 20 - 90.0 - - - 812.0 - 883.0 - - - - - 21 - - 20 - 90.0 - - - 914.0 - 965.0 - - - - - 9 - - 10 - 90.0 - - - 534.0 - 605.0 - - - - - 7 - - 20 - 90.0 - - - 170.0 - 225.0 - - - - - 8 - - 20 - 90.0 - - - 255.0 - 324.0 - - - - - 5 - - 10 - 90.0 - - - 15.0 - 67.0 - - - - - 6 - - 20 - 90.0 - - - 621.0 - 702.0 - - - - - 3 - - 10 - 90.0 - - - 65.0 - 146.0 - - - - - 4 - - 10 - 90.0 - - - 727.0 - 782.0 - - - - - 1 - - 10 - 90.0 - - - 912.0 - 967.0 - - - - - 2 - - 30 - 90.0 - - - 825.0 - 870.0 - - - - - 11 - - 10 - 90.0 - - - 448.0 - 505.0 - - - - - 10 - - 10 - 90.0 - - - 357.0 - 410.0 - - - - - 99 - - 10 - 90.0 - - - 743.0 - 820.0 - - - - - 98 - - 20 - 90.0 - - - 30.0 - 84.0 - - - - - 97 - - 30 - 90.0 - - - 561.0 - 622.0 - - - - - 96 - - 10 - 90.0 - - - 95.0 - 156.0 - - - - - 95 - - 30 - 90.0 - - - 196.0 - 239.0 - - - - - 94 - - 10 - 90.0 - - - 285.0 - 336.0 - - - - - 93 - - 40 - 90.0 - - - 475.0 - 518.0 - - - - - 89 - - 10 - 90.0 - - - 737.0 - 802.0 - - - - - 92 - - 20 - 90.0 - - - 368.0 - 441.0 - - - - - 91 - - 10 - 90.0 - - - 836.0 - 889.0 - - - - - 90 - - 10 - 90.0 - - - 20.0 - 84.0 - - - - - 88 - - 30 - 90.0 - - - 645.0 - 708.0 - - - - - 87 - - 20 - 90.0 - - - 85.0 - 144.0 - - - - - 86 - - 10 - 90.0 - - - 173.0 - 238.0 - - - - - 85 - - 30 - 90.0 - - - 555.0 - 612.0 - - - - - 84 - - 20 - 90.0 - - - 458.0 - 523.0 - - - - - 83 - - 10 - 90.0 - - - 265.0 - 338.0 - - - - - 82 - - 20 - 90.0 - - - 369.0 - 420.0 - - - - - 81 - - 30 - 90.0 - - - 47.0 - 124.0 - - - - - 80 - - 10 - 90.0 - - - 769.0 - 820.0 - - - - - 78 - - 20 - 90.0 - - - 109.0 - 170.0 - - - - - 79 - - 10 - 90.0 - - - 668.0 - 731.0 - - - - - 69 - - 10 - 90.0 - - - 916.0 - 969.0 - - - - - 68 - - 10 - 90.0 - - - 734.0 - 777.0 - - - - - 67 - - 10 - 90.0 - - - 12.0 - 77.0 - - - - - 100 - - 20 - 90.0 - - - 647.0 - 726.0 - - - - - 72 - - 10 - 90.0 - - - 450.0 - 505.0 - - - - - 73 - - 10 - 90.0 - - - 478.0 - 551.0 - - - - - 70 - - 30 - 90.0 - - - 387.0 - 456.0 - - - - - 71 - - 20 - 90.0 - - - 293.0 - 360.0 - - - - - 76 - - 10 - 90.0 - - - 203.0 - 260.0 - - - - - 77 - - 10 - 90.0 - - - 574.0 - 643.0 - - - - - 74 - - 50 - 90.0 - - - 353.0 - 412.0 - - - - - 75 - - 20 - 90.0 - - - 997.0 - 1068.0 - - - - - 57 - - 40 - 90.0 - - - 35.0 - 87.0 - - - - - 56 - - 30 - 90.0 - - - 385.0 - 436.0 - - - - - 59 - - 10 - 90.0 - - - 651.0 - 740.0 - - - - - 58 - - 30 - 90.0 - - - 471.0 - 534.0 - - - - - 60 - - 20 - 90.0 - - - 562.0 - 629.0 - - - - - 61 - - 10 - 90.0 - - - 531.0 - 610.0 - - - - - 62 - - 20 - 90.0 - - - 262.0 - 317.0 - - - - - 63 - - 50 - 90.0 - - - 171.0 - 218.0 - - - - - 64 - - 10 - 90.0 - - - 632.0 - 693.0 - - - - - 65 - - 10 - 90.0 - - - 76.0 - 129.0 - - - - - 66 - - 10 - 90.0 - - - 826.0 - 875.0 - - - - - 49 - - 10 - 90.0 - - - 1001.0 - 1066.0 - - - - - 48 - - 10 - 90.0 - - - 632.0 - 693.0 - - - - - 47 - - 10 - 90.0 - - - 1054.0 - 1127.0 - - - - - 46 - - 30 - 90.0 - - - 448.0 - 509.0 - - - - - 45 - - 10 - 90.0 - - - 541.0 - 600.0 - - - - - 54 - - 40 - 90.0 - - - 186.0 - 257.0 - - - - - 55 - - 10 - 90.0 - - - 95.0 - 158.0 - - - - - 52 - - 10 - 90.0 - - - 912.0 - 969.0 - - - - - 53 - - 20 - 90.0 - - - 286.0 - 347.0 - - - - - 50 - - 10 - 90.0 - - - 815.0 - 880.0 - - - - - 51 - - 10 - 90.0 - - - 725.0 - 786.0 - - - - - 39 - - 20 - 90.0 - - - 567.0 - 624.0 - - - - - 38 - - 30 - 90.0 - - - 479.0 - 522.0 - - - - - 35 - - 10 - 90.0 - - - 283.0 - 344.0 - - - - - 34 - - 20 - 90.0 - - - 751.0 - 816.0 - - - - - 37 - - 20 - 90.0 - - - 383.0 - 434.0 - - - - - 36 - - 10 - 90.0 - - - 665.0 - 716.0 - - - - - 41 - - 10 - 90.0 - - - 166.0 - 235.0 - - - - - 42 - - 20 - 90.0 - - - 68.0 - 149.0 - - - - - 43 - - 10 - 90.0 - - - 16.0 - 80.0 - - - - - 44 - - 10 - 90.0 - - - 359.0 - 412.0 - - - - - 40 - - 10 - 90.0 - - - 264.0 - 321.0 - - - - - - - 7482.673139970934 - - - 370.48433957246027 - noDriver - A - 0.0 - - 77 - 12.206555615733702 - 102.2065556157337 - - - 75 - 103.2065556157337 - 193.2065556157337 - - - 72 - 198.5917204228682 - 352.0 - - - 82 - 357.8309518948453 - 540.0 - - - 71 - 543.0 - 633.0 - - - 74 - 635.0 - 725.0 - - - 78 - 728.0 - 824.0 - - - 76 - 829.3851648071345 - 919.3851648071345 - - - 79 - 921.3851648071345 - 1011.3851648071345 - - 1027.1965531079763 - - - 360.9658621457393 - noDriver - A - 0.0 - - 73 - 14.142135623730951 - 261.0 - - - 84 - 266.8309518948453 - 443.0 - - 462.8494332412792 - - - 336.11724276862367 - noDriver - A - 0.0 - - 30 - 10.0 - 100.0 - - - 34 - 105.0 - 195.0 - - - 35 - 197.0 - 287.0 - - - 37 - 289.0 - 379.0 - - 396.11724276862367 - - - 396.97072464514815 - noDriver - A - 0.0 - - 67 - 35.0 - 125.0 - - - 64 - 130.38516480713452 - 276.0 - - - 63 - 281.3851648071345 - 376.0 - - 421.1774279923061 - - - 420.72702457661836 - noDriver - A - 0.0 - - 65 - 35.05709628591621 - 185.0 - - - 66 - 195.19803902718556 - 475.0 - - - 68 - 477.0 - 567.0 - - - 70 - 570.0 - 660.0 - - - 69 - 670.4403065089106 - 760.4403065089106 - - 795.4974027948268 - - - 382.09803902718556 - noDriver - A - 0.0 - - 39 - 20.0 - 448.0 - - - 40 - 453.0 - 543.0 - - - 38 - 546.0 - 636.0 - - - 36 - 638.0 - 728.0 - - - 33 - 731.0 - 822.0 - - - 32 - 825.0 - 915.0 - - - 31 - 917.0 - 1007.0 - - 1017.1980390271856 - - - 382.08680693813784 - noDriver - A - 0.0 - - 42 - 31.622776601683793 - 121.6227766016838 - - - 43 - 123.6227766016838 - 213.6227766016838 - - - 41 - 219.0079414088183 - 309.0079414088183 - - - 45 - 314.0079414088183 - 404.0079414088183 - - 442.08680693813784 - - - 421.4526583493026 - noDriver - A - 0.0 - - 47 - 39.293765408777 - 473.0 - - - 48 - 475.0 - 569.0 - - - 49 - 574.0 - 664.0 - - - 46 - 669.0 - 759.0 - - - 44 - 762.0 - 852.0 - - 884.3882694814033 - - - 396.9751783773217 - noDriver - A - 0.0 - - 108 - 30.805843601498726 - 120.80584360149872 - - - 106 - 126.19100840863322 - 216.19100840863322 - - - 104 - 221.57617321576774 - 375.0 - - - 102 - 378.605551275464 - 468.605551275464 - - - 103 - 470.605551275464 - 565.0 - - 608.0116263352131 - - - 442.4061783214535 - noDriver - A - 0.0 - - 86 - 52.20153254455275 - 293.0 - - - 81 - 298.0 - 388.0 - - - 80 - 393.0 - 483.0 - - - 83 - 486.0 - 576.0 - - - 87 - 580.0 - 670.0 - - - 89 - 671.0 - 761.0 - - - 90 - 766.3851648071345 - 859.0 - - 910.478150704935 - - - 348.0936045857849 - noDriver - A - 0.0 - - 53 - 16.55294535724685 - 106.55294535724684 - - - 52 - 109.55294535724684 - 199.55294535724684 - - - 51 - 201.55294535724684 - 291.5529453572468 - - - 50 - 293.5529453572468 - 383.5529453572468 - - - 54 - 386.5529453572468 - 476.5529453572468 - - 498.0936045857848 - - - 398.9184017049979 - noDriver - A - 0.0 - - 56 - 20.591260281974 - 538.0 - - - 55 - 540.0 - 631.0 - - - 58 - 633.0 - 723.0 - - - 61 - 726.0 - 816.0 - - - 60 - 818.2360679774998 - 908.2360679774998 - - - 62 - 911.3983456376682 - 1002.0 - - - 59 - 1005.0 - 1095.0 - - - 57 - 1097.0 - 1187.0 - - 1205.02775637732 - - - 390.48077199598873 - noDriver - A - 0.0 - - 23 - 30.805843601498726 - 120.80584360149872 - - - 28 - 127.80584360149872 - 269.0 - - - 29 - 274.0 - 368.0 - - - 25 - 373.0 - 474.0 - - 510.0555127546399 - - - 440.799048628923 - noDriver - A - 0.0 - - 27 - 33.301651610693426 - 189.0 - - - 26 - 199.19803902718556 - 565.0 - - - 24 - 567.0 - 657.0 - - - 22 - 660.0 - 750.0 - - - 109 - 780.4138126514911 - 870.4138126514911 - - 903.9548323139879 - - - 417.70181023477153 - noDriver - A - 0.0 - - 91 - 47.43416490252569 - 137.43416490252568 - - - 88 - 140.43416490252568 - 230.43416490252568 - - - 93 - 256.0466618522571 - 355.0 - - - 92 - 358.0 - 459.0 - - - 94 - 464.8309518948453 - 554.8309518948454 - - 585.8793012873655 - - - 347.21360705502025 - noDriver - A - 0.0 - - 15 - 15.132745950421556 - 105.13274595042155 - - - 13 - 106.13274595042155 - 196.13274595042157 - - - 17 - 198.13274595042157 - 288.13274595042157 - - - 18 - 290.9611730751678 - 380.9611730751678 - - - 20 - 384.5667243506318 - 474.5667243506318 - - - 21 - 477.5667243506318 - 567.5667243506318 - - 587.2136070550204 - - - 398.51014755711293 - noDriver - A - 0.0 - - 19 - 20.09975124224178 - 624.0 - - - 16 - 626.2360679774998 - 716.2360679774998 - - - 14 - 718.4721359549997 - 817.0 - - - 12 - 820.605551275464 - 915.0 - - - 11 - 917.0 - 1007.0 - - - 85 - 1010.0 - 1100.0 - - 1115.8113883008418 - - - 386.9734483703083 - noDriver - A - 0.0 - - 100 - 20.615528128088304 - 110.6155281280883 - - - 97 - 115.6155281280883 - 205.6155281280883 - - - 96 - 206.6155281280883 - 296.6155281280883 - - - 95 - 302.0006929352228 - 645.0 - - - 98 - 648.0 - 738.0 - - 764.9258240356726 - - - 443.6982451160345 - noDriver - A - 0.0 - - 105 - 37.20215047547655 - 286.0 - - - 107 - 291.3851648071345 - 651.0 - - - 110 - 656.0 - 746.0 - - - 99 - 774.1602556806574 - 864.1602556806574 - - - 101 - 867.7658069561214 - 957.7658069561214 - - 980.1264867311194 - - - - - diff --git a/jsprit-io/src/test/resources/com/graphhopper/jsprit/io/problem/simpleProblem_inclShipments_iniRoutes.xml b/jsprit-io/src/test/resources/com/graphhopper/jsprit/io/problem/simpleProblem_inclShipments_iniRoutes.xml deleted file mode 100644 index 7241b0df9..000000000 --- a/jsprit-io/src/test/resources/com/graphhopper/jsprit/io/problem/simpleProblem_inclShipments_iniRoutes.xml +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - FINITE - HOMOGENEOUS - - - - veh1 - type1 - - [x=0.0][y=0.0] - - - - [x=0.0][y=0.0] - - - - 0.0 - 46800.0 - - true - - - veh2 - type1 - - [x=0.0][y=0.0] - - - - [x=0.0][y=0.0] - - - - 0.0 - 64800.0 - - true - - - - - type1 - - 0 - - - 0.0 - 1.0 - - - - - - - loc_s2 - - - 0 - - 0.0 - - - loc_s1 - - - 0 - - 0.0 - - - - - - - loc_pickup_shipment_3 - - - - loc_deliver_shipment_3 - - - - 0 - - - - - - loc_pickup_shipment_4 - - - - loc_deliver_shipment_4 - - - - 0 - - - - - - - - noDriver - veh1 - 0. - - 1 - - - - - - noDriver - veh2 - 0. - - 3 - - - 3 - - - - - diff --git a/jsprit-io/src/test/resources/com/graphhopper/jsprit/io/problem/simpleProblem_iniRoutes.xml b/jsprit-io/src/test/resources/com/graphhopper/jsprit/io/problem/simpleProblem_iniRoutes.xml deleted file mode 100644 index 73afd47cb..000000000 --- a/jsprit-io/src/test/resources/com/graphhopper/jsprit/io/problem/simpleProblem_iniRoutes.xml +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - FINITE - HOMOGENEOUS - - - - veh1 - type1 - - [x=0.0][y=0.0] - - - - [x=0.0][y=0.0] - - - - 0.0 - 46800.0 - - true - - - 2 - type1 - - [x=0.0][y=0.0] - - - - [x=0.0][y=0.0] - - - - 0.0 - 64800.0 - - true - - - - - type1 - - 0 - - - 0.0 - 1.0 - - - - - - - loc_s2 - - - 0 - - 0.0 - - - loc_s3 - - - 0 - - 0.0 - - - - - noDriver - veh1 - 0. - - 1 - - - - - - diff --git a/jsprit-io/src/test/resources/com/graphhopper/jsprit/io/problem/simpleProblem_iniRoutes_2.xml b/jsprit-io/src/test/resources/com/graphhopper/jsprit/io/problem/simpleProblem_iniRoutes_2.xml deleted file mode 100644 index 884be64c5..000000000 --- a/jsprit-io/src/test/resources/com/graphhopper/jsprit/io/problem/simpleProblem_iniRoutes_2.xml +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - FINITE - HOMOGENEOUS - - - - veh1 - type1 - - [x=0.0][y=0.0] - - - - [x=0.0][y=0.0] - - - - 0.0 - 46800.0 - - true - - - - - type1 - - 100 - - - 0.0 - 1.0 - - - - - - - - - loc_pickup_shipment_3 - - - - loc_deliver_shipment_3 - - - - 100 - - - - - - loc_pickup_shipment_4 - - - - loc_deliver_shipment_4 - - - - 50 - - - - - - - - noDriver - veh1 - 0. - - 3 - - - 3 - - - - - diff --git a/jsprit-io/src/test/resources/com/graphhopper/jsprit/io/problem/simpleProblem_iniRoutes_3.xml b/jsprit-io/src/test/resources/com/graphhopper/jsprit/io/problem/simpleProblem_iniRoutes_3.xml deleted file mode 100644 index 187454e9d..000000000 --- a/jsprit-io/src/test/resources/com/graphhopper/jsprit/io/problem/simpleProblem_iniRoutes_3.xml +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - FINITE - HOMOGENEOUS - - - - veh1 - type1 - - [x=5000.0][y=5000.0] - - - - 0.0 - 46800.0 - - true - - - veh2 - type1 - - [x=0.0][y=0.0] - - - - 0.0 - 64800.0 - - true - - - - - type1 - - 0 - - - 0.0 - 1.0 - - - - - - - loc_s2 - - - 0 - - 0.0 - - - loc_s3 - - - 0 - - 0.0 - - - - - noDriver - veh1 - 0. - - 1 - - - - - - diff --git a/pom.xml b/pom.xml index 994b3e52f..511a021fb 100644 --- a/pom.xml +++ b/pom.xml @@ -65,9 +65,6 @@ jsprit-core jsprit-analysis - jsprit-io - jsprit-examples - jsprit-instances @@ -153,17 +150,6 @@ - - - - org.apache.maven.plugins - maven-javadoc-plugin - 2.9.1 - - - - - junit @@ -191,7 +177,6 @@ selected-build jsprit-core - jsprit-io jsprit-analysis From 7b851f420d7f23e34f4569219251d1b808fa19e4 Mon Sep 17 00:00:00 2001 From: oblonski Date: Wed, 23 Mar 2022 14:55:12 +0100 Subject: [PATCH 135/191] code examples do not exist anymore --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2248e9da4..76b5bf8ce 100644 --- a/README.md +++ b/README.md @@ -18,10 +18,10 @@ It is lightweight, flexible and easy-to-use, and based on a single all-purpose [ Setting up the problem, defining additional constraints, modifying the algorithms and visualising the discovered solutions is as easy and handy as reading classical VRP instances to benchmark your algorithm. It is fit for change and extension due to a modular design and a comprehensive set of unit and integration-tests. [More features ...](https://github.com/graphhopper/jsprit/blob/master/docs/Features.textile) -The jsprit-project is maintained by [GraphHopper](https://graphhopper.com/). +The jsprit-project is maintained by [GraphHopper](https://graphhopper.com/). ## Getting Started with Documentation -Please visit [docs](https://github.com/graphhopper/jsprit/blob/master/docs/Home.md) to learn more.The best way to get to know jsprit is by looking at [code examples](https://github.com/graphhopper/jsprit/tree/master/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples). +Please visit [docs](https://github.com/graphhopper/jsprit/blob/master/docs/Home.md) to learn more. ## Modules and Dependencies Please read [Notice.md](https://github.com/graphhopper/jsprit/blob/master/NOTICE.md) to get to know the direct dependencies of each module. From a0732e8b5372a0b7b97c4a3f3685d117e6af5aa6 Mon Sep 17 00:00:00 2001 From: oblonski Date: Sun, 17 Apr 2022 19:42:18 +0200 Subject: [PATCH 136/191] if noise prob is zero, omit noise stuff --- .../jsprit/core/algorithm/box/Jsprit.java | 39 ++++++++++--------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java index 513f27597..0342489c7 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java @@ -441,32 +441,33 @@ private VehicleRoutingAlgorithm create(final VehicleRoutingProblem vrp) { jobNeighborhoods.initialise(); final double maxCosts; - if(properties.containsKey(Parameter.MAX_TRANSPORT_COSTS.toString())){ + if (properties.containsKey(Parameter.MAX_TRANSPORT_COSTS.toString())) { maxCosts = Double.parseDouble(getProperty(Parameter.MAX_TRANSPORT_COSTS.toString())); - } - else{ + } else { maxCosts = jobNeighborhoods.getMaxDistance(); } - IterationStartsListener noiseConfigurator; - if (noThreads > 1) { - ConcurrentInsertionNoiseMaker noiseMaker = new ConcurrentInsertionNoiseMaker(vrp, maxCosts, noiseLevel, noiseProbability); - noiseMaker.setRandom(random); - constraintManager.addConstraint(noiseMaker); - noiseConfigurator = noiseMaker; - } else { - InsertionNoiseMaker noiseMaker = new InsertionNoiseMaker(vrp, maxCosts, noiseLevel, noiseProbability); - noiseMaker.setRandom(random); - constraintManager.addConstraint(noiseMaker); - noiseConfigurator = noiseMaker; + IterationStartsListener noiseConfigurator = null; + if (noiseProbability > 0) { + if (noThreads > 1) { + ConcurrentInsertionNoiseMaker noiseMaker = new ConcurrentInsertionNoiseMaker(vrp, maxCosts, noiseLevel, noiseProbability); + noiseMaker.setRandom(random); + constraintManager.addConstraint(noiseMaker); + noiseConfigurator = noiseMaker; + } else { + InsertionNoiseMaker noiseMaker = new InsertionNoiseMaker(vrp, maxCosts, noiseLevel, noiseProbability); + noiseMaker.setRandom(random); + constraintManager.addConstraint(noiseMaker); + noiseConfigurator = noiseMaker; + } } RuinRadial radial = new RuinRadial(vrp, vrp.getJobs().size(), jobNeighborhoods); radial.setRandom(random); radial.setRuinShareFactory(new RuinShareFactoryImpl( - toInteger(properties.getProperty(Parameter.RADIAL_MIN_SHARE.toString())), - toInteger(properties.getProperty(Parameter.RADIAL_MAX_SHARE.toString())), - random) + toInteger(properties.getProperty(Parameter.RADIAL_MIN_SHARE.toString())), + toInteger(properties.getProperty(Parameter.RADIAL_MAX_SHARE.toString())), + random) ); final RuinRandom random_for_regret = new RuinRandom(vrp, 0.5); @@ -673,10 +674,10 @@ private VehicleRoutingAlgorithm create(final VehicleRoutingProblem vrp) { VehicleRoutingAlgorithm vra = prettyBuilder.build(); - if(schrimpfThreshold != null) { + if (schrimpfThreshold != null) { vra.addListener(schrimpfThreshold); } - vra.addListener(noiseConfigurator); + if (noiseConfigurator != null) vra.addListener(noiseConfigurator); vra.addListener(noise); vra.addListener(clusters); if (increasingAbsoluteFixedCosts != null) vra.addListener(increasingAbsoluteFixedCosts); From 9d57f69662edf5e965e3040b74d741f825aa1121 Mon Sep 17 00:00:00 2001 From: oblonski Date: Tue, 19 Apr 2022 10:21:37 +0200 Subject: [PATCH 137/191] make vars to avoid toDouble() and getProp() all the time --- .../jsprit/core/algorithm/box/Jsprit.java | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java index 0342489c7..32f92100c 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java @@ -483,27 +483,28 @@ private VehicleRoutingAlgorithm create(final VehicleRoutingProblem vrp) { random_for_best.setRuinShareFactory(new RuinShareFactoryImpl( toInteger(properties.getProperty(Parameter.RANDOM_BEST_MIN_SHARE.toString())), toInteger(properties.getProperty(Parameter.RANDOM_BEST_MAX_SHARE.toString())), - random) + random) ); final RuinWorst worst = new RuinWorst(vrp, (int) (vrp.getJobs().values().size() * 0.5)); worst.setRandom(random); worst.setRuinShareFactory(new RuinShareFactoryImpl( - toInteger(properties.getProperty(Parameter.WORST_MIN_SHARE.toString())), - toInteger(properties.getProperty(Parameter.WORST_MAX_SHARE.toString())), - random) + toInteger(properties.getProperty(Parameter.WORST_MIN_SHARE.toString())), + toInteger(properties.getProperty(Parameter.WORST_MAX_SHARE.toString())), + random) ); + double ruinWorstNoiseProb = toDouble(getProperty(Parameter.RUIN_WORST_NOISE_PROB.toString())); + double ruinWorstNoiseLevel = toDouble(getProperty(Parameter.RUIN_WORST_NOISE_LEVEL.toString())); IterationStartsListener noise = (i, problem, solutions) -> worst.setNoiseMaker(() -> { - if (random.nextDouble() < toDouble(getProperty(Parameter.RUIN_WORST_NOISE_PROB.toString()))) { - return toDouble(getProperty(Parameter.RUIN_WORST_NOISE_LEVEL.toString())) - * maxCosts * random.nextDouble(); + if (random.nextDouble() < ruinWorstNoiseProb) { + return ruinWorstNoiseLevel * maxCosts * random.nextDouble(); } else return 0.; }); final RuinClusters clusters = new RuinClusters(vrp, (int) (vrp.getJobs().values().size() * 0.5), jobNeighborhoods); clusters.setRandom(random); clusters.setRuinShareFactory(new RuinShareFactoryImpl( - toInteger(properties.getProperty(Parameter.WORST_MIN_SHARE.toString())), + toInteger(properties.getProperty(Parameter.WORST_MIN_SHARE.toString())), toInteger(properties.getProperty(Parameter.WORST_MAX_SHARE.toString())), random) ); From df1bb2ed2ca52757f79f7bd82f41d0bfddecbdf0 Mon Sep 17 00:00:00 2001 From: oblonski Date: Tue, 19 Apr 2022 13:01:52 +0200 Subject: [PATCH 138/191] correct typo --- .../algorithm/recreate/AbstractInsertionCalculator.java | 3 ++- .../jsprit/core/problem/constraint/ConstraintManager.java | 4 ++++ .../constraint/HardActivityLevelConstraintManager.java | 8 ++++++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/AbstractInsertionCalculator.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/AbstractInsertionCalculator.java index fc82d6ad9..317003a87 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/AbstractInsertionCalculator.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/AbstractInsertionCalculator.java @@ -35,7 +35,7 @@ */ abstract class AbstractInsertionCalculator implements JobInsertionCostsCalculator { - InsertionData checkRouteContraints(JobInsertionContext insertionContext, ConstraintManager constraintManager) { + InsertionData checkRouteConstraints(JobInsertionContext insertionContext, ConstraintManager constraintManager) { for (HardRouteConstraint hardRouteConstraint : constraintManager.getHardRouteConstraints()) { if (!hardRouteConstraint.fulfilled(insertionContext)) { InsertionData emptyInsertionData = new InsertionData.NoInsertionFound(); @@ -47,6 +47,7 @@ InsertionData checkRouteContraints(JobInsertionContext insertionContext, Constra } ConstraintsStatus fulfilled(JobInsertionContext iFacts, TourActivity prevAct, TourActivity newAct, TourActivity nextAct, double prevActDepTime, Collection failedActivityConstraints, ConstraintManager constraintManager) { + if (!constraintManager.hasHardActivityConstraints()) return ConstraintsStatus.FULFILLED; ConstraintsStatus notFulfilled = null; List failed = new ArrayList<>(); for (HardActivityConstraint c : constraintManager.getCriticalHardActivityConstraints()) { diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/constraint/ConstraintManager.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/constraint/ConstraintManager.java index 1275f8251..0ad0fa8f8 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/constraint/ConstraintManager.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/constraint/ConstraintManager.java @@ -77,6 +77,10 @@ public ConstraintManager(VehicleRoutingProblem vrp, RouteAndActivityStateGetter resolveConstraints(constraints); } + public boolean hasHardActivityConstraints() { + return actLevelConstraintManager.hasHardActivityConstraints(); + } + public Collection getHardRouteConstraints() { return hardRouteConstraintManager.getConstraints(); } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/constraint/HardActivityLevelConstraintManager.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/constraint/HardActivityLevelConstraintManager.java index ed092245b..b9a65b10f 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/constraint/HardActivityLevelConstraintManager.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/constraint/HardActivityLevelConstraintManager.java @@ -34,6 +34,8 @@ class HardActivityLevelConstraintManager implements HardActivityConstraint { private Collection lowPrioConstraints = new ArrayList(); + private int numActivityConstraints = 0; + public void addConstraint(HardActivityConstraint constraint, ConstraintManager.Priority priority) { if (priority.equals(ConstraintManager.Priority.CRITICAL)) { criticalConstraints.add(constraint); @@ -42,6 +44,11 @@ public void addConstraint(HardActivityConstraint constraint, ConstraintManager.P } else { lowPrioConstraints.add(constraint); } + numActivityConstraints++; + } + + boolean hasHardActivityConstraints() { + return numActivityConstraints != 0; } Collection getCriticalConstraints() { @@ -66,6 +73,7 @@ Collection getAllConstraints() { @Override public ConstraintsStatus fulfilled(JobInsertionContext iFacts, TourActivity prevAct, TourActivity newAct, TourActivity nextAct, double prevActDepTime) { + if (numActivityConstraints == 0) return ConstraintsStatus.FULFILLED; ConstraintsStatus notFulfilled = null; for (HardActivityConstraint c : criticalConstraints) { ConstraintsStatus status = c.fulfilled(iFacts, prevAct, newAct, nextAct, prevActDepTime); From 368aa872a8a48fbb12c859c22216f8a28285b619 Mon Sep 17 00:00:00 2001 From: oblonski Date: Tue, 19 Apr 2022 13:02:19 +0200 Subject: [PATCH 139/191] calc costs only if necessary --- .../algorithm/recreate/AdditionalAccessEgressCalculator.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/AdditionalAccessEgressCalculator.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/AdditionalAccessEgressCalculator.java index 9a938e6d2..affc72fa5 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/AdditionalAccessEgressCalculator.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/AdditionalAccessEgressCalculator.java @@ -47,6 +47,8 @@ public AdditionalAccessEgressCalculator(VehicleRoutingTransportCosts routingCost } public double getCosts(JobInsertionContext insertionContext) { + if (insertionContext.getRoute().isEmpty()) return 0.0; + if (insertionContext.getRoute().getVehicle() == insertionContext.getNewVehicle()) return 0.0; double delta_access = 0.0; double delta_egress = 0.0; VehicleRoute currentRoute = insertionContext.getRoute(); From 9e42bc83298e76d8a78eafe59e81adbe37de26be Mon Sep 17 00:00:00 2001 From: oblonski Date: Tue, 19 Apr 2022 13:02:49 +0200 Subject: [PATCH 140/191] correct typo --- .../core/algorithm/recreate/ServiceInsertionCalculator.java | 2 +- .../core/algorithm/recreate/ShipmentInsertionCalculator.java | 2 +- .../algorithm/recreate/ShipmentInsertionCalculatorFlex.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ServiceInsertionCalculator.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ServiceInsertionCalculator.java index 7cdfc2483..0650bd0d6 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ServiceInsertionCalculator.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ServiceInsertionCalculator.java @@ -102,7 +102,7 @@ public InsertionData getInsertionData(final VehicleRoute currentRoute, final Job /* check hard constraints at route level */ - InsertionData noInsertion = checkRouteContraints(insertionContext, constraintManager); + InsertionData noInsertion = checkRouteConstraints(insertionContext, constraintManager); if (noInsertion != null) return noInsertion; Collection failedActivityConstraints = new ArrayList<>(); diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculator.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculator.java index d3cbe2ef6..a09264151 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculator.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculator.java @@ -97,7 +97,7 @@ public InsertionData getInsertionData(final VehicleRoute currentRoute, final Job /* check hard route constraints */ - InsertionData noInsertion = checkRouteContraints(insertionContext, constraintManager); + InsertionData noInsertion = checkRouteConstraints(insertionContext, constraintManager); if (noInsertion != null) return noInsertion; /* check soft route constraints diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculatorFlex.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculatorFlex.java index ee151dbff..db506d88b 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculatorFlex.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculatorFlex.java @@ -115,7 +115,7 @@ public InsertionData getInsertionData(final VehicleRoute currentRoute, final Job /* check hard route constraints */ - InsertionData noInsertion = checkRouteContraints(insertionContext, constraintManager); + InsertionData noInsertion = checkRouteConstraints(insertionContext, constraintManager); if (noInsertion != null) return noInsertion; /* check soft route constraints From 985b693b154c733f5a4dff5214e027460583ad19 Mon Sep 17 00:00:00 2001 From: oblonski Date: Tue, 18 Oct 2022 10:50:40 +0200 Subject: [PATCH 141/191] remove completion service --- .../recreate/BestInsertionConcurrent.java | 45 ++++++++----------- .../recreate/RegretInsertionConcurrent.java | 16 +++---- 2 files changed, 27 insertions(+), 34 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/BestInsertionConcurrent.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/BestInsertionConcurrent.java index c7e6ae945..ce4d7c1c2 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/BestInsertionConcurrent.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/BestInsertionConcurrent.java @@ -18,7 +18,6 @@ package com.graphhopper.jsprit.core.algorithm.recreate; import com.graphhopper.jsprit.core.algorithm.recreate.InsertionData.NoInsertionFound; -import com.graphhopper.jsprit.core.algorithm.recreate.listener.InsertionListeners; import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; import com.graphhopper.jsprit.core.problem.driver.Driver; import com.graphhopper.jsprit.core.problem.job.Job; @@ -31,7 +30,10 @@ import java.util.Collection; import java.util.Collections; import java.util.List; -import java.util.concurrent.*; +import java.util.concurrent.Callable; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Future; /** @@ -41,11 +43,11 @@ public final class BestInsertionConcurrent extends AbstractInsertionStrategy { static class Batch { - List routes = new ArrayList(); + List routes = new ArrayList<>(); } - class Insertion { + static class Insertion { private final VehicleRoute route; @@ -67,7 +69,7 @@ public InsertionData getInsertionData() { } - private static Logger logger = LoggerFactory.getLogger(BestInsertionConcurrent.class); + private final static Logger logger = LoggerFactory.getLogger(BestInsertionConcurrent.class); private final static double NO_NEW_DEPARTURE_TIME_YET = -12345.12345; @@ -75,20 +77,17 @@ public InsertionData getInsertionData() { private final static Driver NO_NEW_DRIVER_YET = null; - private InsertionListeners insertionsListeners; + private final JobInsertionCostsCalculator bestInsertionCostCalculator; - private JobInsertionCostsCalculator bestInsertionCostCalculator; + private final int nuOfBatches; - private int nuOfBatches; - - private ExecutorCompletionService completionService; + private final ExecutorService executorService; public BestInsertionConcurrent(JobInsertionCostsCalculator jobInsertionCalculator, ExecutorService executorService, int nuOfBatches, VehicleRoutingProblem vehicleRoutingProblem) { super(vehicleRoutingProblem); - this.insertionsListeners = new InsertionListeners(); this.nuOfBatches = nuOfBatches; bestInsertionCostCalculator = jobInsertionCalculator; - completionService = new ExecutorCompletionService(executorService); + this.executorService = executorService; logger.debug("initialise {}", this); } @@ -99,29 +98,23 @@ public String toString() { @Override public Collection insertUnassignedJobs(Collection vehicleRoutes, Collection unassignedJobs) { - List badJobs = new ArrayList(unassignedJobs.size()); - List unassignedJobList = new ArrayList(unassignedJobs); + List badJobs = new ArrayList<>(unassignedJobs.size()); + List unassignedJobList = new ArrayList<>(unassignedJobs); Collections.shuffle(unassignedJobList, random); - Collections.sort(unassignedJobList, new AccordingToPriorities()); + unassignedJobList.sort(new AccordingToPriorities()); List batches = distributeRoutes(vehicleRoutes, nuOfBatches); + List> tasks = new ArrayList<>(batches.size()); List failedConstraintNames = new ArrayList<>(); for (final Job unassignedJob : unassignedJobList) { Insertion bestInsertion = null; double bestInsertionCost = Double.MAX_VALUE; for (final Batch batch : batches) { - completionService.submit(new Callable() { - - @Override - public Insertion call() throws Exception { - return getBestInsertion(batch, unassignedJob); - } - - }); + tasks.add(() -> getBestInsertion(batch, unassignedJob)); } try { + List> futureResponses = executorService.invokeAll(tasks); for (int i = 0; i < batches.size(); i++) { - Future futureIData = completionService.take(); - Insertion insertion = futureIData.get(); + Insertion insertion = futureResponses.get(i).get(); if (insertion.insertionData instanceof NoInsertionFound) { failedConstraintNames.addAll(insertion.getInsertionData().getFailedConstraintNames()); continue; @@ -173,7 +166,7 @@ private Insertion getBestInsertion(Batch batch, Job unassignedJob) { } private List distributeRoutes(Collection vehicleRoutes, int nuOfBatches) { - List batches = new ArrayList(); + List batches = new ArrayList<>(); for (int i = 0; i < nuOfBatches; i++) batches.add(new Batch()); /* * if route.size < nuOfBatches add as much routes as empty batches are available diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertionConcurrent.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertionConcurrent.java index e4d033768..065eebf64 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertionConcurrent.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertionConcurrent.java @@ -29,8 +29,8 @@ import java.util.Collection; import java.util.Iterator; import java.util.List; +import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; -import java.util.concurrent.ExecutorCompletionService; import java.util.concurrent.ExecutorService; import java.util.concurrent.Future; @@ -47,13 +47,13 @@ public class RegretInsertionConcurrent extends AbstractInsertionStrategy { - private static Logger logger = LoggerFactory.getLogger(RegretInsertionConcurrentFast.class); + private final static Logger logger = LoggerFactory.getLogger(RegretInsertionConcurrentFast.class); private ScoringFunction scoringFunction; private final JobInsertionCostsCalculator insertionCostsCalculator; - private final ExecutorCompletionService completionService; + private final ExecutorService executorService; /** * Sets the scoring function. @@ -71,7 +71,7 @@ public RegretInsertionConcurrent(JobInsertionCostsCalculator jobInsertionCalcula this.scoringFunction = new DefaultScorer(vehicleRoutingProblem); this.insertionCostsCalculator = jobInsertionCalculator; this.vrp = vehicleRoutingProblem; - completionService = new ExecutorCompletionService<>(executorService); + this.executorService = executorService; logger.debug("initialise " + this); } @@ -136,15 +136,15 @@ public Collection insertUnassignedJobs(Collection routes, Col private ScoredJob nextJob(final Collection routes, List unassignedJobList, List badJobList) { ScoredJob bestScoredJob = null; - + List> tasks = new ArrayList<>(unassignedJobList.size()); for (final Job unassignedJob : unassignedJobList) { - completionService.submit(() -> RegretInsertion.getScoredJob(routes, unassignedJob, insertionCostsCalculator, scoringFunction)); + tasks.add(() -> RegretInsertion.getScoredJob(routes, unassignedJob, insertionCostsCalculator, scoringFunction)); } try { + List> futureResponses = executorService.invokeAll(tasks); for (int i = 0; i < unassignedJobList.size(); i++) { - Future fsj = completionService.take(); - ScoredJob sJob = fsj.get(); + ScoredJob sJob = futureResponses.get(i).get(); if (sJob instanceof ScoredJob.BadJob) { badJobList.add(sJob); continue; From e5a8b92fb4c8138d0f2f2d366b1067c1cec49b87 Mon Sep 17 00:00:00 2001 From: oblonski Date: Wed, 19 Oct 2022 15:14:40 +0200 Subject: [PATCH 142/191] refine internal concurrency --- .../jsprit/core/algorithm/box/Jsprit.java | 6 +- .../recreate/BestInsertionConcurrent.java | 66 ++++--------------- 2 files changed, 15 insertions(+), 57 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java index 32f92100c..a1cdf9fb5 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java @@ -202,6 +202,7 @@ private Properties createDefaultProperties() { defaults.put(Strategy.WORST_BEST.toString(), "0."); defaults.put(Strategy.WORST_REGRET.toString(), "1."); + defaults.put(Strategy.CLUSTER_BEST.toString(), "0."); defaults.put(Strategy.CLUSTER_REGRET.toString(), "1."); @@ -400,8 +401,9 @@ private void ini(VehicleRoutingProblem vrp) { private VehicleRoutingAlgorithm create(final VehicleRoutingProblem vrp) { ini(vrp); + boolean isInfinite = vrp.getFleetSize().equals(VehicleRoutingProblem.FleetSize.INFINITE); if (vehicleFleetManager == null) { - if (vrp.getFleetSize().equals(VehicleRoutingProblem.FleetSize.INFINITE)) { + if (isInfinite) { vehicleFleetManager = new InfiniteFleetManagerFactory(vrp.getVehicles()).createFleetManager(); } else { FiniteFleetManagerFactory finiteFleetManagerFactory = new FiniteFleetManagerFactory(vrp.getVehicles()); @@ -579,7 +581,7 @@ private VehicleRoutingAlgorithm create(final VehicleRoutingProblem vrp) { regret.setRandom(random); AbstractInsertionStrategy best; - if (vrp.getJobs().size() < 250 || es == null) { + if ((vrp.getVehicles().size() == 1 && !isInfinite) || vrp.getJobs().size() < 100 || es == null) { BestInsertion bestInsertion = (BestInsertion) new InsertionStrategyBuilder(vrp, vehicleFleetManager, stateManager, constraintManager) .setInsertionStrategy(InsertionStrategyBuilder.Strategy.BEST) .considerFixedCosts(Double.valueOf(properties.getProperty(Parameter.FIXED_COST_PARAM.toString()))) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/BestInsertionConcurrent.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/BestInsertionConcurrent.java index ce4d7c1c2..91441d3b9 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/BestInsertionConcurrent.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/BestInsertionConcurrent.java @@ -42,11 +42,6 @@ public final class BestInsertionConcurrent extends AbstractInsertionStrategy { - static class Batch { - List routes = new ArrayList<>(); - - } - static class Insertion { private final VehicleRoute route; @@ -79,13 +74,10 @@ public InsertionData getInsertionData() { private final JobInsertionCostsCalculator bestInsertionCostCalculator; - private final int nuOfBatches; - private final ExecutorService executorService; public BestInsertionConcurrent(JobInsertionCostsCalculator jobInsertionCalculator, ExecutorService executorService, int nuOfBatches, VehicleRoutingProblem vehicleRoutingProblem) { super(vehicleRoutingProblem); - this.nuOfBatches = nuOfBatches; bestInsertionCostCalculator = jobInsertionCalculator; this.executorService = executorService; logger.debug("initialise {}", this); @@ -102,18 +94,17 @@ public Collection insertUnassignedJobs(Collection vehicleRout List unassignedJobList = new ArrayList<>(unassignedJobs); Collections.shuffle(unassignedJobList, random); unassignedJobList.sort(new AccordingToPriorities()); - List batches = distributeRoutes(vehicleRoutes, nuOfBatches); - List> tasks = new ArrayList<>(batches.size()); List failedConstraintNames = new ArrayList<>(); for (final Job unassignedJob : unassignedJobList) { Insertion bestInsertion = null; double bestInsertionCost = Double.MAX_VALUE; - for (final Batch batch : batches) { - tasks.add(() -> getBestInsertion(batch, unassignedJob)); + List> tasks = new ArrayList<>(vehicleRoutes.size()); + for (VehicleRoute route : vehicleRoutes) { + tasks.add(() -> getBestInsertion(route, unassignedJob)); } try { List> futureResponses = executorService.invokeAll(tasks); - for (int i = 0; i < batches.size(); i++) { + for (int i = 0; i < vehicleRoutes.size(); i++) { Insertion insertion = futureResponses.get(i).get(); if (insertion.insertionData instanceof NoInsertionFound) { failedConstraintNames.addAll(insertion.getInsertionData().getFailedConstraintNames()); @@ -129,12 +120,12 @@ public Collection insertUnassignedJobs(Collection vehicleRout } catch (ExecutionException e) { throw new RuntimeException(e); } + VehicleRoute newRoute = VehicleRoute.emptyRoute(); InsertionData newIData = bestInsertionCostCalculator.getInsertionData(newRoute, unassignedJob, NO_NEW_VEHICLE_YET, NO_NEW_DEPARTURE_TIME_YET, NO_NEW_DRIVER_YET, bestInsertionCost); if (newIData.getInsertionCost() < bestInsertionCost) { bestInsertion = new Insertion(newRoute, newIData); vehicleRoutes.add(newRoute); - batches.get(random.nextInt(batches.size())).routes.add(newRoute); } if (bestInsertion == null) { badJobs.add(unassignedJob); @@ -146,50 +137,15 @@ public Collection insertUnassignedJobs(Collection vehicleRout } - private Insertion getBestInsertion(Batch batch, Job unassignedJob) { - Insertion bestInsertion = null; + private Insertion getBestInsertion(VehicleRoute vehicleRoute, Job unassignedJob) { InsertionData empty = new InsertionData.NoInsertionFound(); - double bestInsertionCost = Double.MAX_VALUE; - for (VehicleRoute vehicleRoute : batch.routes) { - InsertionData iData = bestInsertionCostCalculator.getInsertionData(vehicleRoute, unassignedJob, NO_NEW_VEHICLE_YET, NO_NEW_DEPARTURE_TIME_YET, NO_NEW_DRIVER_YET, bestInsertionCost); - if (iData instanceof NoInsertionFound) { - empty.getFailedConstraintNames().addAll(iData.getFailedConstraintNames()); - continue; - } - if (iData.getInsertionCost() < bestInsertionCost) { - bestInsertion = new Insertion(vehicleRoute, iData); - bestInsertionCost = iData.getInsertionCost(); - } - } - if (bestInsertion == null) return new Insertion(null, empty); - return bestInsertion; - } - - private List distributeRoutes(Collection vehicleRoutes, int nuOfBatches) { - List batches = new ArrayList<>(); - for (int i = 0; i < nuOfBatches; i++) batches.add(new Batch()); - /* - * if route.size < nuOfBatches add as much routes as empty batches are available - * else add one empty route anyway - */ - if (vehicleRoutes.size() < nuOfBatches) { - int nOfNewRoutes = nuOfBatches - vehicleRoutes.size(); - for (int i = 0; i < nOfNewRoutes; i++) { - vehicleRoutes.add(VehicleRoute.emptyRoute()); - } + InsertionData iData = bestInsertionCostCalculator.getInsertionData(vehicleRoute, unassignedJob, NO_NEW_VEHICLE_YET, NO_NEW_DEPARTURE_TIME_YET, NO_NEW_DRIVER_YET, Double.MAX_VALUE); + if (iData instanceof NoInsertionFound) { + empty.getFailedConstraintNames().addAll(iData.getFailedConstraintNames()); + return new Insertion(null, empty); } else { - vehicleRoutes.add(VehicleRoute.emptyRoute()); - } - /* - * distribute routes to batches equally - */ - int count = 0; - for (VehicleRoute route : vehicleRoutes) { - if (count == nuOfBatches) count = 0; - batches.get(count).routes.add(route); - count++; + return new Insertion(vehicleRoute, iData); } - return batches; } From c74c519218ebd50b94ef5e52cbdce6e6b00b18b3 Mon Sep 17 00:00:00 2001 From: oblonski Date: Thu, 20 Oct 2022 10:33:50 +0200 Subject: [PATCH 143/191] clean up and simplify --- .../recreate/InsertionStrategyBuilder.java | 52 +++++++++---------- 1 file changed, 25 insertions(+), 27 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/InsertionStrategyBuilder.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/InsertionStrategyBuilder.java index 310047fc6..2936c1246 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/InsertionStrategyBuilder.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/InsertionStrategyBuilder.java @@ -23,30 +23,29 @@ import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; import com.graphhopper.jsprit.core.problem.constraint.ConstraintManager; import com.graphhopper.jsprit.core.problem.vehicle.VehicleFleetManager; +import com.graphhopper.jsprit.core.util.RandomNumberGeneration; import java.util.ArrayList; import java.util.List; +import java.util.Random; import java.util.concurrent.ExecutorService; public class InsertionStrategyBuilder { - private boolean fastRegret; - - public enum Strategy { REGRET, BEST } - private VehicleRoutingProblem vrp; + private final VehicleRoutingProblem vrp; - private StateManager stateManager; + private final StateManager stateManager; private boolean local = true; - private ConstraintManager constraintManager; + private final ConstraintManager constraintManager; - private VehicleFleetManager fleetManager; + private final VehicleFleetManager fleetManager; private double weightOfFixedCosts; @@ -62,12 +61,6 @@ public enum Strategy { private int nuOfThreads; - private double timeSlice; - - private int nNeighbors; - - private boolean timeScheduling = false; - private boolean allowVehicleSwitch = true; private boolean addDefaultCostCalc = true; @@ -82,6 +75,8 @@ public enum Strategy { private JobInsertionCostsCalculatorFactory breakInsertionCalculatorFactory; + private Random random = RandomNumberGeneration.getRandom(); + public InsertionStrategyBuilder(VehicleRoutingProblem vrp, VehicleFleetManager vehicleFleetManager, StateManager stateManager, ConstraintManager constraintManager) { super(); this.vrp = vrp; @@ -110,6 +105,11 @@ public InsertionStrategyBuilder setInsertionStrategy(Strategy strategy) { return this; } + public InsertionStrategyBuilder setRandom(Random random) { + this.random = random; + return this; + } + public InsertionStrategyBuilder setRouteLevel(int forwardLooking, int memory) { local = false; this.forwaredLooking = forwardLooking; @@ -136,13 +136,6 @@ public InsertionStrategyBuilder setLocalLevel() { return this; } - /** - * If addDefaulMarginalCostCalculation is false, no calculator is set which implicitly assumes that marginal cost calculation - * is controlled by your custom soft constraints. - * - * @param addDefaultMarginalCostCalculation - * @return - */ public InsertionStrategyBuilder setLocalLevel(boolean addDefaultMarginalCostCalculation) { local = true; addDefaultCostCalc = addDefaultMarginalCostCalculation; @@ -168,8 +161,8 @@ public InsertionStrategyBuilder setConcurrentMode(ExecutorService executor, int public InsertionStrategy build() { - List iListeners = new ArrayList(); - List algorithmListeners = new ArrayList(); + List iListeners = new ArrayList<>(); + List algorithmListeners = new ArrayList<>(); JobInsertionCostsCalculatorBuilder calcBuilder = new JobInsertionCostsCalculatorBuilder(iListeners, algorithmListeners); if (local) { calcBuilder.setLocalLevel(addDefaultCostCalc); @@ -190,27 +183,30 @@ public InsertionStrategy build() { if (considerFixedCosts) { calcBuilder.considerFixedCosts(weightOfFixedCosts); } - if (timeScheduling) { - calcBuilder.experimentalTimeScheduler(timeSlice, nNeighbors); - } calcBuilder.setAllowVehicleSwitch(allowVehicleSwitch); JobInsertionCostsCalculator costCalculator = calcBuilder.build(); InsertionStrategy insertion; if (strategy.equals(Strategy.BEST)) { if (executor == null) { - insertion = new BestInsertion(costCalculator, vrp); + BestInsertion bestInsertion = new BestInsertion(costCalculator, vrp); + bestInsertion.setRandom(random); + insertion = bestInsertion; } else { - insertion = new BestInsertionConcurrent(costCalculator, executor, nuOfThreads, vrp); + BestInsertionConcurrent bestInsertion = new BestInsertionConcurrent(costCalculator, executor, nuOfThreads, vrp); + bestInsertion.setRandom(random); + insertion = bestInsertion; } } else if (strategy.equals(Strategy.REGRET)) { if (executor == null) { if (isFastRegret) { RegretInsertionFast regret = new RegretInsertionFast(costCalculator, vrp, fleetManager); regret.setSwitchAllowed(allowVehicleSwitch); + regret.setRandom(random); insertion = regret; } else { RegretInsertion regret = new RegretInsertion(costCalculator, vrp); + regret.setRandom(random); insertion = regret; } @@ -218,9 +214,11 @@ public InsertionStrategy build() { if (isFastRegret) { RegretInsertionConcurrentFast regret = new RegretInsertionConcurrentFast(costCalculator, vrp, executor, fleetManager); regret.setSwitchAllowed(allowVehicleSwitch); + regret.setRandom(random); insertion = regret; } else { RegretInsertionConcurrent regret = new RegretInsertionConcurrent(costCalculator, vrp, executor); + regret.setRandom(random); insertion = regret; } From cf0275b748130c20591ae262417be8cbc07f2db7 Mon Sep 17 00:00:00 2001 From: oblonski Date: Thu, 20 Oct 2022 10:50:14 +0200 Subject: [PATCH 144/191] rm completion service --- .../core/algorithm/recreate/RegretInsertionConcurrent.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertionConcurrent.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertionConcurrent.java index 065eebf64..fe6e804aa 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertionConcurrent.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertionConcurrent.java @@ -46,8 +46,9 @@ */ public class RegretInsertionConcurrent extends AbstractInsertionStrategy { + private static final Logger logger = LoggerFactory.getLogger(RegretInsertionConcurrentFast.class); - private final static Logger logger = LoggerFactory.getLogger(RegretInsertionConcurrentFast.class); + private final ExecutorService executorService; private ScoringFunction scoringFunction; @@ -116,7 +117,7 @@ public Collection insertUnassignedJobs(Collection routes, Col while (!jobs.isEmpty()) { List unassignedJobList = new ArrayList<>(jobs); List badJobList = new ArrayList<>(); - ScoredJob bestScoredJob = nextJob(routes, unassignedJobList, badJobList); + ScoredJob bestScoredJob = calculateBestJob(routes, unassignedJobList, badJobList); if (bestScoredJob != null) { if (bestScoredJob.isNewRoute()) { routes.add(bestScoredJob.getRoute()); @@ -134,7 +135,7 @@ public Collection insertUnassignedJobs(Collection routes, Col return badJobs; } - private ScoredJob nextJob(final Collection routes, List unassignedJobList, List badJobList) { + private ScoredJob calculateBestJob(final Collection routes, List unassignedJobList, List badJobList) { ScoredJob bestScoredJob = null; List> tasks = new ArrayList<>(unassignedJobList.size()); for (final Job unassignedJob : unassignedJobList) { From 9998417be9b51770854b256a77ef2d566550367d Mon Sep 17 00:00:00 2001 From: oblonski Date: Thu, 20 Oct 2022 11:06:42 +0200 Subject: [PATCH 145/191] rm completion service --- .../core/algorithm/recreate/RegretInsertionConcurrent.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertionConcurrent.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertionConcurrent.java index fe6e804aa..73f56e374 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertionConcurrent.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertionConcurrent.java @@ -54,8 +54,6 @@ public class RegretInsertionConcurrent extends AbstractInsertionStrategy { private final JobInsertionCostsCalculator insertionCostsCalculator; - private final ExecutorService executorService; - /** * Sets the scoring function. *

From 2c5a16b40390178e99f95225847ac9fbd81affd5 Mon Sep 17 00:00:00 2001 From: oblonski Date: Fri, 5 May 2023 08:19:39 +0200 Subject: [PATCH 146/191] add new ruin strategy --- .../jsprit/core/algorithm/box/Jsprit.java | 37 ++++- .../core/algorithm/ruin/RuinTimeRelated.java | 156 ++++++++++++++++++ .../algorithm/ruin/RuinTimeRelatedTest.java | 80 +++++++++ 3 files changed, 265 insertions(+), 8 deletions(-) create mode 100644 jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinTimeRelated.java create mode 100644 jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinTimeRelatedTest.java diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java index a1cdf9fb5..d76452834 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java @@ -82,7 +82,10 @@ public enum Strategy { CLUSTER_BEST("cluster_best"), CLUSTER_REGRET("cluster_regret"), STRING_BEST("string_best"), - STRING_REGRET("string_regret"); + STRING_REGRET("string_regret"), + TIME_RELATED_REGRET("time_related_regret"), + TIME_RELATED_BEST("time_related_best"); + String strategyName; @@ -189,6 +192,10 @@ private Properties createDefaultProperties() { Properties defaults = new Properties(); defaults.put(Strategy.RADIAL_BEST.toString(), "0."); defaults.put(Strategy.RADIAL_REGRET.toString(), ".5"); + + defaults.put(Strategy.TIME_RELATED_BEST.toString(), "0."); + defaults.put(Strategy.TIME_RELATED_REGRET.toString(), "0."); + defaults.put(Strategy.RANDOM_BEST.toString(), ".5"); defaults.put(Strategy.RANDOM_REGRET.toString(), ".5"); @@ -466,18 +473,18 @@ private VehicleRoutingAlgorithm create(final VehicleRoutingProblem vrp) { RuinRadial radial = new RuinRadial(vrp, vrp.getJobs().size(), jobNeighborhoods); radial.setRandom(random); - radial.setRuinShareFactory(new RuinShareFactoryImpl( + RuinShareFactoryImpl radialRuinFactory = new RuinShareFactoryImpl( toInteger(properties.getProperty(Parameter.RADIAL_MIN_SHARE.toString())), toInteger(properties.getProperty(Parameter.RADIAL_MAX_SHARE.toString())), - random) - ); + random); + radial.setRuinShareFactory(radialRuinFactory); final RuinRandom random_for_regret = new RuinRandom(vrp, 0.5); random_for_regret.setRandom(random); random_for_regret.setRuinShareFactory(new RuinShareFactoryImpl( - toInteger(properties.getProperty(Parameter.RANDOM_REGRET_MIN_SHARE.toString())), - toInteger(properties.getProperty(Parameter.RANDOM_REGRET_MAX_SHARE.toString())), - random) + toInteger(properties.getProperty(Parameter.RANDOM_REGRET_MIN_SHARE.toString())), + toInteger(properties.getProperty(Parameter.RANDOM_REGRET_MAX_SHARE.toString())), + random) ); final RuinRandom random_for_best = new RuinRandom(vrp, 0.5); @@ -521,12 +528,16 @@ private VehicleRoutingAlgorithm create(final VehicleRoutingProblem vrp) { stringRuin.setStringLength(lMin, lMax); stringRuin.setRandom(random); + final RuinTimeRelated ruinTimeRelated = new RuinTimeRelated(vrp); + ruinTimeRelated.setRuinShareFactory(radialRuinFactory); + ruinTimeRelated.setRandom(random); + AbstractInsertionStrategy regret; final ScoringFunction scorer; boolean fastRegret = Boolean.parseBoolean(getProperty(Parameter.FAST_REGRET.toString())); if (es != null) { - if(fastRegret){ + if (fastRegret) { RegretInsertionConcurrentFast regretInsertion = (RegretInsertionConcurrentFast) new InsertionStrategyBuilder(vrp, vehicleFleetManager, stateManager, constraintManager) .setInsertionStrategy(InsertionStrategyBuilder.Strategy.REGRET) .setConcurrentMode(es, noThreads) @@ -624,6 +635,12 @@ private VehicleRoutingAlgorithm create(final VehicleRoutingProblem vrp) { SearchStrategy radialBest = new SearchStrategy(Strategy.RADIAL_BEST.toString(), new SelectBest(), acceptor, objectiveFunction); radialBest.addModule(configureModule(new RuinAndRecreateModule(Strategy.RADIAL_BEST.toString(), best, radial))); + SearchStrategy timeRelatedRegret = new SearchStrategy(Strategy.TIME_RELATED_REGRET.toString(), new SelectBest(), acceptor, objectiveFunction); + timeRelatedRegret.addModule(configureModule(new RuinAndRecreateModule(Strategy.TIME_RELATED_REGRET.toString(), regret, ruinTimeRelated))); + + SearchStrategy timeRelatedBest = new SearchStrategy(Strategy.TIME_RELATED_BEST.toString(), new SelectBest(), acceptor, objectiveFunction); + timeRelatedBest.addModule(configureModule(new RuinAndRecreateModule(Strategy.TIME_RELATED_BEST.toString(), best, ruinTimeRelated))); + SearchStrategy randomBest = new SearchStrategy(Strategy.RANDOM_BEST.toString(), new SelectBest(), acceptor, objectiveFunction); randomBest.addModule(configureModule(new RuinAndRecreateModule(Strategy.RANDOM_BEST.toString(), best, random_for_best))); @@ -655,6 +672,10 @@ private VehicleRoutingAlgorithm create(final VehicleRoutingProblem vrp) { } prettyBuilder.withStrategy(radialRegret, toDouble(getProperty(Strategy.RADIAL_REGRET.toString()))) .withStrategy(radialBest, toDouble(getProperty(Strategy.RADIAL_BEST.toString()))) + + .withStrategy(timeRelatedBest, toDouble(getProperty(Strategy.TIME_RELATED_BEST.toString()))) + .withStrategy(timeRelatedRegret, toDouble(getProperty(Strategy.TIME_RELATED_REGRET.toString()))) + .withStrategy(randomBest, toDouble(getProperty(Strategy.RANDOM_BEST.toString()))) .withStrategy(randomRegret, toDouble(getProperty(Strategy.RANDOM_REGRET.toString()))) .withStrategy(worstBest, toDouble(getProperty(Strategy.WORST_BEST.toString()))) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinTimeRelated.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinTimeRelated.java new file mode 100644 index 000000000..d1982bcad --- /dev/null +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinTimeRelated.java @@ -0,0 +1,156 @@ +/* + * Licensed to GraphHopper GmbH under one or more contributor + * license agreements. See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + * + * GraphHopper GmbH licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.graphhopper.jsprit.core.algorithm.ruin; + +import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; +import com.graphhopper.jsprit.core.problem.job.Job; +import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; +import com.graphhopper.jsprit.core.problem.solution.route.activity.TourActivity; +import com.graphhopper.jsprit.core.util.NoiseMaker; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + + +/** + * @author stefan schroeder + */ + +public final class RuinTimeRelated extends AbstractRuinStrategy { + + static class RelatednessToTourActivity { + + final double time; + + final TourActivity tourActivity; + + final VehicleRoute route; + + final double distance; + + public RelatednessToTourActivity(double relatednessToTarget, double distance, TourActivity tourActivity, VehicleRoute route) { + this.time = relatednessToTarget; + this.distance = distance; + this.tourActivity = tourActivity; + this.route = route; + } + } + + private static final Logger logger = LoggerFactory.getLogger(RuinTimeRelated.class); + + private final VehicleRoutingProblem vrp; + + private NoiseMaker noiseMaker = () -> 0; + + public void setNoiseMaker(NoiseMaker noiseMaker) { + this.noiseMaker = noiseMaker; + } + + public RuinTimeRelated(VehicleRoutingProblem vrp) { + super(vrp); + this.vrp = vrp; + this.ruinShareFactory = () -> (int) Math.max(50, Math.round(vrp.getJobs().size() * 0.3)); + logger.debug("initialise {}", this); + } + + /** + * Removes a fraction of jobs from vehicleRoutes. + *

+ *

The number of jobs is calculated as follows: Math.ceil(vrp.getJobs().values().size() * fractionOfAllNodes2beRuined). + */ + @Override + public Collection ruinRoutes(Collection vehicleRoutes) { + List unassignedJobs = new ArrayList<>(); + int totalActivities = 0; + for (VehicleRoute route : vehicleRoutes) { + totalActivities += route.getActivities().size(); + } + if (totalActivities == 0) return unassignedJobs; + int randomIndex = random.nextInt(totalActivities); + int numActs = 0; + TourActivity targetActivity = null; + for (VehicleRoute route : vehicleRoutes) { + if (numActs + route.getActivities().size() < randomIndex) { + numActs += route.getActivities().size(); + } else { + for (TourActivity activity : route.getActivities()) { + if (numActs == randomIndex) { + targetActivity = activity; + break; + } + numActs++; + } + if (targetActivity != null) { + break; + } + } + } + if (targetActivity == null) { + return unassignedJobs; + } + List neighborActivities = new ArrayList<>(); + long maxTime = 0; + double maxDistance = 0; + for (VehicleRoute route : vehicleRoutes) { + for (TourActivity activity : route.getActivities()) { + if (activity == targetActivity) continue; + long absTime = Math.abs((long) targetActivity.getArrTime() - (long) activity.getArrTime()); + maxTime = Math.max(maxTime, absTime); + double distance = Math.abs(vrp.getTransportCosts().getDistance(targetActivity.getLocation(), activity.getLocation(), 0, route.getVehicle())); + maxDistance = Math.max(maxDistance, distance); + neighborActivities.add(new RelatednessToTourActivity(absTime, distance, activity, route)); + } + } + final double maxT = maxTime; + final double maxD = maxTime; + final double timeI = 10; + final double distanceI; + double distanceInfluence = 1; + if (random.nextDouble() < 0.5) { + distanceI = 0; + } else distanceI = distanceInfluence; + neighborActivities.sort((o1, o2) -> { + double rO1 = relatedness(o1, maxD, maxT, timeI, distanceI); + double rO2 = relatedness(o2, maxD, maxT, timeI, distanceI); + return Double.compare(rO1, rO2); + }); + int toRemove = getRuinShareFactory().createNumberToBeRemoved(); + for (RelatednessToTourActivity neighborActivity : neighborActivities) { + if (toRemove == 0) break; + Job j = ((TourActivity.JobActivity) neighborActivity.tourActivity).getJob(); + if (removeJob(j, neighborActivity.route)) { + unassignedJobs.add(j); + toRemove--; + } + } + return unassignedJobs; + } + + private double relatedness(RelatednessToTourActivity o1, double maxDistance, double maxTime, double timeI, double distanceI) { + return timeI * o1.time / maxTime + distanceI * o1.distance / maxDistance; + } + + @Override + public String toString() { + return "[name=timeRelatedRuin]"; + } + +} diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinTimeRelatedTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinTimeRelatedTest.java new file mode 100644 index 000000000..a23e72609 --- /dev/null +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinTimeRelatedTest.java @@ -0,0 +1,80 @@ +/* + * Licensed to GraphHopper GmbH under one or more contributor + * license agreements. See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + * + * GraphHopper GmbH licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.graphhopper.jsprit.core.algorithm.ruin; + +import com.graphhopper.jsprit.core.problem.Location; +import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; +import com.graphhopper.jsprit.core.problem.job.Job; +import com.graphhopper.jsprit.core.problem.job.Service; +import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; +import com.graphhopper.jsprit.core.problem.solution.route.activity.TourActivity; +import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; +import com.graphhopper.jsprit.core.util.RandomNumberGeneration; +import org.junit.Test; + +import java.util.Arrays; +import java.util.Collection; +import java.util.Random; + +/** + * Created by schroeder on 06/03/15. + */ +public class RuinTimeRelatedTest { + + @Test + public void itShouldRuinTwoObviousClusters() { + Service s0 = Service.Builder.newInstance("s0").setLocation(Location.newInstance(9, 0)).build(); + Service s1 = Service.Builder.newInstance("s1").setLocation(Location.newInstance(9, 1)).build(); + Service s2 = Service.Builder.newInstance("s2").setLocation(Location.newInstance(9, 10)).build(); + Service s3 = Service.Builder.newInstance("s3").setLocation(Location.newInstance(9, 9)).build(); + Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance(9, 16)).build(); + Service s5 = Service.Builder.newInstance("s5").setLocation(Location.newInstance(9, 17)).build(); + Service s6 = Service.Builder.newInstance("s6").setLocation(Location.newInstance(9, 15.5)).build(); + Service s7 = Service.Builder.newInstance("s7").setLocation(Location.newInstance(9, 30)).build(); + + VehicleImpl v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(0, 0)).build(); + + VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(s1).addJob(s2) + .addJob(s6).addJob(s7).addJob(s0).addJob(s3).addJob(s4).addJob(s5).addVehicle(v).build(); + + VehicleRoute vr1 = VehicleRoute.Builder.newInstance(v).addService(s0).addService(s1).addService(s2).addService(s3).setJobActivityFactory(vrp.getJobActivityFactory()).build(); + long time = 0; + for (TourActivity act : vr1.getActivities()) { + time += 2; + act.setArrTime(time); + } + VehicleRoute vr2 = VehicleRoute.Builder.newInstance(v) + .addService(s6).addService(s7).addService(s4).addService(s5).setJobActivityFactory(vrp.getJobActivityFactory()).build(); + time = 0; + for (TourActivity act : vr2.getActivities()) { + time += 2; + act.setArrTime(time); + } + + RuinTimeRelated ruin = new RuinTimeRelated(vrp); + + Random r = RandomNumberGeneration.newInstance(); + ruin.setRandom(r); + Collection ruined = ruin.ruinRoutes(Arrays.asList(vr1, vr2)); + + + } + + +} From b63259bf5ea69454028a0292f1f908c3442ea22e Mon Sep 17 00:00:00 2001 From: Maks3w Date: Fri, 5 May 2023 09:32:44 +0200 Subject: [PATCH 147/191] Fix maxDistance relatedness in RuinTimeRelated --- .../graphhopper/jsprit/core/algorithm/ruin/RuinTimeRelated.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinTimeRelated.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinTimeRelated.java index d1982bcad..2657ace1d 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinTimeRelated.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinTimeRelated.java @@ -120,7 +120,7 @@ public Collection ruinRoutes(Collection vehicleRoutes) { } } final double maxT = maxTime; - final double maxD = maxTime; + final double maxD = maxDistance; final double timeI = 10; final double distanceI; double distanceInfluence = 1; From 7a28c8b848430c9b2947ca1e48bbae497de4138c Mon Sep 17 00:00:00 2001 From: oblonski Date: Fri, 5 May 2023 10:04:20 +0200 Subject: [PATCH 148/191] exclude that it divides by 0 --- .../core/algorithm/ruin/RuinTimeRelated.java | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinTimeRelated.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinTimeRelated.java index 2657ace1d..792729288 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinTimeRelated.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinTimeRelated.java @@ -121,15 +121,15 @@ public Collection ruinRoutes(Collection vehicleRoutes) { } final double maxT = maxTime; final double maxD = maxDistance; - final double timeI = 10; + final double timeInfluence = 10; final double distanceI; double distanceInfluence = 1; if (random.nextDouble() < 0.5) { distanceI = 0; } else distanceI = distanceInfluence; neighborActivities.sort((o1, o2) -> { - double rO1 = relatedness(o1, maxD, maxT, timeI, distanceI); - double rO2 = relatedness(o2, maxD, maxT, timeI, distanceI); + double rO1 = relatedness(o1, maxD, maxT, timeInfluence, distanceI); + double rO2 = relatedness(o2, maxD, maxT, timeInfluence, distanceI); return Double.compare(rO1, rO2); }); int toRemove = getRuinShareFactory().createNumberToBeRemoved(); @@ -144,8 +144,20 @@ public Collection ruinRoutes(Collection vehicleRoutes) { return unassignedJobs; } - private double relatedness(RelatednessToTourActivity o1, double maxDistance, double maxTime, double timeI, double distanceI) { - return timeI * o1.time / maxTime + distanceI * o1.distance / maxDistance; + private double relatedness(RelatednessToTourActivity o1, double maxDistance, double maxTime, double timeInfluence, double distanceInfluence) { + double time; + if (maxTime == 0) { + time = 0; + } else { + time = o1.time / maxTime; + } + double distance; + if (maxDistance == 0) { + distance = 0; + } else { + distance = o1.distance / maxDistance; + } + return timeInfluence * time + distanceInfluence * distance; } @Override From d4ed0bdc2f6b58965b124e0794b293229d948d1b Mon Sep 17 00:00:00 2001 From: Kai Martins-Turner Date: Mon, 22 May 2023 13:09:56 +0200 Subject: [PATCH 149/191] Fix link in README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 76b5bf8ce..0dbecf542 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ jsprit ====== -jsprit is a java based, open source toolkit for solving rich [Traveling Salesman Problems(TSP)](http://en.wikipedia.org/wiki/Travelling_salesman_problem") and [Vehicle Routing Problems(VRP)](http://neo.lcc.uma.es/vrp/vehicle-routing-problem/). +jsprit is a java based, open source toolkit for solving rich [Traveling Salesman Problems(TSP)](http://en.wikipedia.org/wiki/Travelling_salesman_problem) and [Vehicle Routing Problems(VRP)](http://neo.lcc.uma.es/vrp/vehicle-routing-problem/). It is lightweight, flexible and easy-to-use, and based on a single all-purpose [meta-heuristic](../docs/Meta-Heuristic.md) currently solving - Capacitated VRP From 8f72d7245adaf00ac2ed11d4a3d0a2aff7cf7da1 Mon Sep 17 00:00:00 2001 From: oblonski Date: Thu, 25 Jul 2024 17:02:21 +0200 Subject: [PATCH 150/191] make final --- .../graphhopper/jsprit/core/problem/VehicleRoutingProblem.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java index 8317ba18c..f53696008 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java @@ -538,7 +538,7 @@ public enum FleetSize { */ private final Map jobs; - private List jobsWithLocation; + private final List jobsWithLocation; private final Map allJobs; /** From f01fbe8e3c0e1343e91369dacf25688161b6296c Mon Sep 17 00:00:00 2001 From: oblonski Date: Thu, 25 Jul 2024 17:10:39 +0200 Subject: [PATCH 151/191] make final --- .../graphhopper/jsprit/core/problem/job/Activity.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Activity.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Activity.java index ba0df86c1..c03bc5230 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Activity.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Activity.java @@ -33,7 +33,7 @@ public static class Builder { private final Type activityType; - private Location location; + private final Location location; Collection timeWindows; @@ -59,13 +59,13 @@ public Activity build() { } } - private Location location; + private final Location location; - private Collection timeWindows; + private final Collection timeWindows; - private double serviceTime; + private final double serviceTime; - private Activity.Type activityType; + private final Activity.Type activityType; Activity(Builder builder) { location = builder.location; From 6ff58a417c51ecd148933780eac3c47006155cf1 Mon Sep 17 00:00:00 2001 From: oblonski Date: Thu, 14 Nov 2024 09:56:53 +0100 Subject: [PATCH 152/191] refactor regret scorer --- .../DefaultRegretScoringFunction.java | 46 +++++++++++ .../recreate/InsertionDataUpdater.java | 11 +-- .../algorithm/recreate/RegretInsertion.java | 81 +++---------------- .../recreate/RegretInsertionConcurrent.java | 15 ++-- .../RegretInsertionConcurrentFast.java | 14 ++-- .../recreate/RegretInsertionFast.java | 16 ++-- .../recreate/RegretScoringFunction.java | 26 ++++++ .../core/algorithm/recreate/Scorer.java | 74 ++++++++++++++--- 8 files changed, 181 insertions(+), 102 deletions(-) create mode 100644 jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/DefaultRegretScoringFunction.java create mode 100644 jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretScoringFunction.java diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/DefaultRegretScoringFunction.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/DefaultRegretScoringFunction.java new file mode 100644 index 000000000..cdeb8f9c6 --- /dev/null +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/DefaultRegretScoringFunction.java @@ -0,0 +1,46 @@ +/* + * Licensed to GraphHopper GmbH under one or more contributor + * license agreements. See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + * + * GraphHopper GmbH licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.graphhopper.jsprit.core.algorithm.recreate; + +import com.graphhopper.jsprit.core.problem.job.Job; + +public class DefaultRegretScoringFunction implements RegretScoringFunction { + + private final ScoringFunction scoringFunction; + + public DefaultRegretScoringFunction(ScoringFunction scoringFunction) { + this.scoringFunction = scoringFunction; + } + + @Override + public double score(InsertionData best, InsertionData secondBest, Job job) { + if (best == null) { + throw new IllegalStateException("cannot score job " + job.getId()); + } + double score; + if (secondBest == null) { //either there is only one vehicle or there are more vehicles, but they cannot load unassignedJob + //if only one vehicle, I want the job to be inserted with min iCosts + //if there are more vehicles, I want this job to be prioritized since there are no alternatives + score = (11 - job.getPriority()) * (Integer.MAX_VALUE - best.getInsertionCost()) + scoringFunction.score(best, job); + } else { + score = (11 - job.getPriority()) * (secondBest.getInsertionCost() - best.getInsertionCost()) + scoringFunction.score(best, job); + } + return score; + } +} diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/InsertionDataUpdater.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/InsertionDataUpdater.java index c065084d7..872eeec89 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/InsertionDataUpdater.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/InsertionDataUpdater.java @@ -68,16 +68,16 @@ static Comparator getComparator(){ }; } - static ScoredJob getBest(boolean switchAllowed, Set initialVehicleIds, VehicleFleetManager fleetManager, JobInsertionCostsCalculator insertionCostsCalculator, ScoringFunction scoringFunction, TreeSet[] priorityQueues, Map updates, List unassignedJobList, List badJobs) { + static ScoredJob getBest(boolean switchAllowed, Set initialVehicleIds, VehicleFleetManager fleetManager, JobInsertionCostsCalculator insertionCostsCalculator, RegretScoringFunction scoringFunction, TreeSet[] priorityQueues, Map updates, List unassignedJobList, List badJobs) { ScoredJob bestScoredJob = null; - for(Job j : unassignedJobList){ + for (Job j : unassignedJobList) { VehicleRoute bestRoute = null; InsertionData best = null; InsertionData secondBest = null; TreeSet priorityQueue = priorityQueues[j.getIndex()]; Iterator iterator = priorityQueue.iterator(); List failedConstraintNames = new ArrayList<>(); - while(iterator.hasNext()){ + while (iterator.hasNext()) { VersionedInsertionData versionedIData = iterator.next(); if(bestRoute != null){ if(versionedIData.getRoute() == bestRoute){ @@ -142,7 +142,7 @@ static ScoredJob getBest(boolean switchAllowed, Set initialVehicleIds, V badJobs.add(new ScoredJob.BadJob(j, failedConstraintNames)); continue; } - double score = score(j, best, secondBest, scoringFunction); + double score = scoringFunction.score(best, secondBest, j); ScoredJob scoredJob; if (bestRoute == emptyRoute) { scoredJob = new ScoredJob(j, score, best, bestRoute, true); @@ -158,8 +158,5 @@ else if(scoredJob.getScore() > bestScoredJob.getScore()){ return bestScoredJob; } - private static double score(Job unassignedJob, InsertionData best, InsertionData secondBest, ScoringFunction scoringFunction) { - return Scorer.score(unassignedJob,best,secondBest,scoringFunction); - } } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertion.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertion.java index 30a7a98a4..d3b7353cd 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertion.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertion.java @@ -43,13 +43,16 @@ public class RegretInsertion extends AbstractInsertionStrategy { + private static final Logger logger = LoggerFactory.getLogger(RegretInsertionFast.class); - private static Logger logger = LoggerFactory.getLogger(RegretInsertionFast.class); + private final JobInsertionCostsCalculator insertionCostsCalculator; - private ScoringFunction scoringFunction; + private RegretScoringFunction regretScoringFunction; - private JobInsertionCostsCalculator insertionCostsCalculator; + public void setRegretScoringFunction(RegretScoringFunction regretScoringFunction) { + this.regretScoringFunction = regretScoringFunction; + } /** * Sets the scoring function. @@ -59,12 +62,12 @@ public class RegretInsertion extends AbstractInsertionStrategy { * @param scoringFunction to score */ public void setScoringFunction(ScoringFunction scoringFunction) { - this.scoringFunction = scoringFunction; + this.regretScoringFunction = new DefaultRegretScoringFunction(scoringFunction); } public RegretInsertion(JobInsertionCostsCalculator jobInsertionCalculator, VehicleRoutingProblem vehicleRoutingProblem) { super(vehicleRoutingProblem); - this.scoringFunction = new DefaultScorer(vehicleRoutingProblem); + this.regretScoringFunction = new DefaultRegretScoringFunction(new DefaultScorer(vehicleRoutingProblem)); this.insertionCostsCalculator = jobInsertionCalculator; this.vrp = vehicleRoutingProblem; logger.debug("initialise {}", this); @@ -72,7 +75,7 @@ public RegretInsertion(JobInsertionCostsCalculator jobInsertionCalculator, Vehic @Override public String toString() { - return "[name=regretInsertion][additionalScorer=" + scoringFunction + "]"; + return "[name=regretInsertion][additionalScorer=" + regretScoringFunction + "]"; } @@ -83,7 +86,7 @@ public String toString() { */ @Override public Collection insertUnassignedJobs(Collection routes, Collection unassignedJobs) { - List badJobs = new ArrayList(unassignedJobs.size()); + List badJobs = new ArrayList<>(unassignedJobs.size()); Iterator jobIterator = unassignedJobs.iterator(); while (jobIterator.hasNext()){ @@ -109,7 +112,7 @@ public Collection insertUnassignedJobs(Collection routes, Col while (!jobs.isEmpty()) { List unassignedJobList = new ArrayList<>(jobs); List badJobList = new ArrayList<>(); - ScoredJob bestScoredJob = nextJob(routes, unassignedJobList, badJobList); + ScoredJob bestScoredJob = getBestScoredUnassignedJob(routes, unassignedJobList, badJobList); if (bestScoredJob != null) { if (bestScoredJob.isNewRoute()) { routes.add(bestScoredJob.getRoute()); @@ -134,10 +137,10 @@ private VehicleRoute findRoute(Collection routes, Job job) { return null; } - private ScoredJob nextJob(Collection routes, Collection unassignedJobList, List badJobs) { + private ScoredJob getBestScoredUnassignedJob(Collection routes, Collection unassignedJobList, List badJobs) { ScoredJob bestScoredJob = null; for (Job unassignedJob : unassignedJobList) { - ScoredJob scoredJob = getScoredJob(routes, unassignedJob, insertionCostsCalculator, scoringFunction); + ScoredJob scoredJob = Scorer.scoreUnassignedJob(routes, unassignedJob, insertionCostsCalculator, regretScoringFunction); if (scoredJob instanceof ScoredJob.BadJob) { badJobs.add(scoredJob); continue; @@ -156,63 +159,5 @@ private ScoredJob nextJob(Collection routes, Collection unass return bestScoredJob; } - static ScoredJob getScoredJob(Collection routes, Job unassignedJob, JobInsertionCostsCalculator insertionCostsCalculator, ScoringFunction scoringFunction) { - InsertionData best = null; - InsertionData secondBest = null; - VehicleRoute bestRoute = null; - List failedConstraintNames = new ArrayList<>(); - double benchmark = Double.MAX_VALUE; - for (VehicleRoute route : routes) { - if (secondBest != null) { - benchmark = secondBest.getInsertionCost(); - } - InsertionData iData = insertionCostsCalculator.getInsertionData(route, unassignedJob, NO_NEW_VEHICLE_YET, NO_NEW_DEPARTURE_TIME_YET, NO_NEW_DRIVER_YET, benchmark); - if (iData instanceof InsertionData.NoInsertionFound) { - failedConstraintNames.addAll(iData.getFailedConstraintNames()); - continue; - } - if (best == null) { - best = iData; - bestRoute = route; - } else if (iData.getInsertionCost() < best.getInsertionCost()) { - secondBest = best; - best = iData; - bestRoute = route; - } else if (secondBest == null || (iData.getInsertionCost() < secondBest.getInsertionCost())) { - secondBest = iData; - } - } - - VehicleRoute emptyRoute = VehicleRoute.emptyRoute(); - InsertionData iData = insertionCostsCalculator.getInsertionData(emptyRoute, unassignedJob, NO_NEW_VEHICLE_YET, NO_NEW_DEPARTURE_TIME_YET, NO_NEW_DRIVER_YET, benchmark); - if (!(iData instanceof InsertionData.NoInsertionFound)) { - if (best == null) { - best = iData; - bestRoute = emptyRoute; - } else if (iData.getInsertionCost() < best.getInsertionCost()) { - secondBest = best; - best = iData; - bestRoute = emptyRoute; - } else if (secondBest == null || (iData.getInsertionCost() < secondBest.getInsertionCost())) { - secondBest = iData; - } - } else failedConstraintNames.addAll(iData.getFailedConstraintNames()); - if (best == null) { - ScoredJob.BadJob badJob = new ScoredJob.BadJob(unassignedJob, failedConstraintNames); - return badJob; - } - double score = score(unassignedJob, best, secondBest, scoringFunction); - ScoredJob scoredJob; - if (bestRoute == emptyRoute) { - scoredJob = new ScoredJob(unassignedJob, score, best, bestRoute, true); - } else scoredJob = new ScoredJob(unassignedJob, score, best, bestRoute, false); - return scoredJob; - } - - - static double score(Job unassignedJob, InsertionData best, InsertionData secondBest, ScoringFunction scoringFunction) { - return Scorer.score(unassignedJob,best,secondBest,scoringFunction); - } - } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertionConcurrent.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertionConcurrent.java index 73f56e374..fa7bfaddf 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertionConcurrent.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertionConcurrent.java @@ -50,7 +50,7 @@ public class RegretInsertionConcurrent extends AbstractInsertionStrategy { private final ExecutorService executorService; - private ScoringFunction scoringFunction; + private RegretScoringFunction regretScoringFunction; private final JobInsertionCostsCalculator insertionCostsCalculator; @@ -62,12 +62,17 @@ public class RegretInsertionConcurrent extends AbstractInsertionStrategy { * @param scoringFunction to score */ public void setScoringFunction(ScoringFunction scoringFunction) { - this.scoringFunction = scoringFunction; + this.regretScoringFunction = new DefaultRegretScoringFunction(scoringFunction); + } + + public void setRegretScoringFunction(RegretScoringFunction regretScoringFunction) { + this.regretScoringFunction = regretScoringFunction; } public RegretInsertionConcurrent(JobInsertionCostsCalculator jobInsertionCalculator, VehicleRoutingProblem vehicleRoutingProblem, ExecutorService executorService) { super(vehicleRoutingProblem); - this.scoringFunction = new DefaultScorer(vehicleRoutingProblem); +// this.scoringFunction = new DefaultScorer(vehicleRoutingProblem); + this.regretScoringFunction = new DefaultRegretScoringFunction(new DefaultScorer(vehicleRoutingProblem)); this.insertionCostsCalculator = jobInsertionCalculator; this.vrp = vehicleRoutingProblem; this.executorService = executorService; @@ -76,7 +81,7 @@ public RegretInsertionConcurrent(JobInsertionCostsCalculator jobInsertionCalcula @Override public String toString() { - return "[name=regretInsertion][additionalScorer=" + scoringFunction + "]"; + return "[name=regretInsertion][additionalScorer=" + regretScoringFunction + "]"; } @@ -137,7 +142,7 @@ private ScoredJob calculateBestJob(final Collection routes, List> tasks = new ArrayList<>(unassignedJobList.size()); for (final Job unassignedJob : unassignedJobList) { - tasks.add(() -> RegretInsertion.getScoredJob(routes, unassignedJob, insertionCostsCalculator, scoringFunction)); + tasks.add(() -> Scorer.scoreUnassignedJob(routes, unassignedJob, insertionCostsCalculator, regretScoringFunction)); } try { diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertionConcurrentFast.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertionConcurrentFast.java index 6dbfd14fb..8e3ec97ed 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertionConcurrentFast.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertionConcurrentFast.java @@ -46,7 +46,7 @@ public class RegretInsertionConcurrentFast extends AbstractInsertionStrategy { private static Logger logger = LoggerFactory.getLogger(RegretInsertionConcurrentFast.class); - private ScoringFunction scoringFunction; + private RegretScoringFunction regretScoringFunction; private final JobInsertionCostsCalculator insertionCostsCalculator; @@ -69,12 +69,16 @@ public class RegretInsertionConcurrentFast extends AbstractInsertionStrategy { * @param scoringFunction to score */ public void setScoringFunction(ScoringFunction scoringFunction) { - this.scoringFunction = scoringFunction; + this.regretScoringFunction = new DefaultRegretScoringFunction(scoringFunction); + } + + public void setRegretScoringFunction(RegretScoringFunction regretScoringFunction) { + this.regretScoringFunction = regretScoringFunction; } public RegretInsertionConcurrentFast(JobInsertionCostsCalculator jobInsertionCalculator, VehicleRoutingProblem vehicleRoutingProblem, ExecutorService executorService, VehicleFleetManager fleetManager) { super(vehicleRoutingProblem); - this.scoringFunction = new DefaultScorer(vehicleRoutingProblem); + this.regretScoringFunction = new DefaultRegretScoringFunction(new DefaultScorer(vehicleRoutingProblem)); this.insertionCostsCalculator = jobInsertionCalculator; this.vrp = vehicleRoutingProblem; this.executor = executorService; @@ -85,7 +89,7 @@ public RegretInsertionConcurrentFast(JobInsertionCostsCalculator jobInsertionCal @Override public String toString() { - return "[name=regretInsertion][additionalScorer=" + scoringFunction + "]"; + return "[name=regretInsertion][additionalScorer=" + regretScoringFunction + "]"; } public void setSwitchAllowed(boolean switchAllowed) { @@ -149,7 +153,7 @@ public Collection insertUnassignedJobs(Collection routes, Col updateInsertionData(priorityQueues, routes, unassignedJobList, updateRound,firstRun,lastModified,updates); if(firstRun) firstRun = false; updateRound++; - ScoredJob bestScoredJob = InsertionDataUpdater.getBest(switchAllowed,initialVehicleIds,fleetManager, insertionCostsCalculator, scoringFunction, priorityQueues, updates, unassignedJobList, badJobList); + ScoredJob bestScoredJob = InsertionDataUpdater.getBest(switchAllowed, initialVehicleIds, fleetManager, insertionCostsCalculator, regretScoringFunction, priorityQueues, updates, unassignedJobList, badJobList); if (bestScoredJob != null) { if (bestScoredJob.isNewRoute()) { routes.add(bestScoredJob.getRoute()); diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertionFast.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertionFast.java index d805e55d9..8b29b359c 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertionFast.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertionFast.java @@ -42,7 +42,7 @@ public class RegretInsertionFast extends AbstractInsertionStrategy { private static Logger logger = LoggerFactory.getLogger(RegretInsertionFast.class); - private ScoringFunction scoringFunction; + private RegretScoringFunction regretScoringFunction; private JobInsertionCostsCalculator insertionCostsCalculator; @@ -56,7 +56,7 @@ public class RegretInsertionFast extends AbstractInsertionStrategy { public RegretInsertionFast(JobInsertionCostsCalculator jobInsertionCalculator, VehicleRoutingProblem vehicleRoutingProblem, VehicleFleetManager fleetManager) { super(vehicleRoutingProblem); - this.scoringFunction = new DefaultScorer(vehicleRoutingProblem); + this.regretScoringFunction = new DefaultRegretScoringFunction(new DefaultScorer(vehicleRoutingProblem)); this.insertionCostsCalculator = jobInsertionCalculator; this.fleetManager = fleetManager; this.vrp = vehicleRoutingProblem; @@ -72,14 +72,18 @@ public RegretInsertionFast(JobInsertionCostsCalculator jobInsertionCalculator, V * @param scoringFunction to score */ public void setScoringFunction(ScoringFunction scoringFunction) { - this.scoringFunction = scoringFunction; + this.regretScoringFunction = new DefaultRegretScoringFunction(scoringFunction); + } + + public void setRegretScoringFunction(RegretScoringFunction regretScoringFunction) { + this.regretScoringFunction = regretScoringFunction; } public void setSwitchAllowed(boolean switchAllowed) { this.switchAllowed = switchAllowed; } - public void setDependencyTypes(DependencyType[] dependencyTypes){ + public void setDependencyTypes(DependencyType[] dependencyTypes) { this.dependencyTypes = dependencyTypes; } @@ -93,7 +97,7 @@ private Set getInitialVehicleIds(VehicleRoutingProblem vehicleRoutingPro @Override public String toString() { - return "[name=regretInsertion][additionalScorer=" + scoringFunction + "]"; + return "[name=regretInsertion][additionalScorer=" + regretScoringFunction + "]"; } @@ -146,7 +150,7 @@ public Collection insertUnassignedJobs(Collection routes, Col // updates.put(lastModified,updateRound); } updateRound++; - ScoredJob bestScoredJob = InsertionDataUpdater.getBest(switchAllowed,initialVehicleIds,fleetManager,insertionCostsCalculator,scoringFunction,priorityQueues,updates,unassignedJobList,badJobList); + ScoredJob bestScoredJob = InsertionDataUpdater.getBest(switchAllowed, initialVehicleIds, fleetManager, insertionCostsCalculator, regretScoringFunction, priorityQueues, updates, unassignedJobList, badJobList); if (bestScoredJob != null) { if (bestScoredJob.isNewRoute()) { routes.add(bestScoredJob.getRoute()); diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretScoringFunction.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretScoringFunction.java new file mode 100644 index 000000000..e8d1b115b --- /dev/null +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretScoringFunction.java @@ -0,0 +1,26 @@ +/* + * Licensed to GraphHopper GmbH under one or more contributor + * license agreements. See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + * + * GraphHopper GmbH licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.graphhopper.jsprit.core.algorithm.recreate; + +import com.graphhopper.jsprit.core.problem.job.Job; + +public interface RegretScoringFunction { + + double score(InsertionData best, InsertionData secondBest, Job job); +} diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/Scorer.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/Scorer.java index a6607d26f..b5b71a5db 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/Scorer.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/Scorer.java @@ -18,25 +18,77 @@ package com.graphhopper.jsprit.core.algorithm.recreate; +import com.graphhopper.jsprit.core.problem.driver.Driver; import com.graphhopper.jsprit.core.problem.job.Job; +import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; +import com.graphhopper.jsprit.core.problem.vehicle.Vehicle; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; /** * Created by schroeder on 24/05/16. */ class Scorer { - static double score(Job unassignedJob, InsertionData best, InsertionData secondBest, ScoringFunction scoringFunction){ - if (best == null) { - throw new IllegalStateException("cannot insert job " + unassignedJob.getId()); + final static double NO_NEW_DEPARTURE_TIME_YET = -12345.12345; + + final static Vehicle NO_NEW_VEHICLE_YET = null; + + final static Driver NO_NEW_DRIVER_YET = null; + + + static ScoredJob scoreUnassignedJob(Collection routes, Job unassignedJob, JobInsertionCostsCalculator insertionCostsCalculator, RegretScoringFunction scoringFunction) { + InsertionData best = null; + InsertionData secondBest = null; + VehicleRoute bestRoute = null; + List failedConstraintNames = new ArrayList<>(); + double benchmark = Double.MAX_VALUE; + for (VehicleRoute route : routes) { + if (secondBest != null) { + benchmark = secondBest.getInsertionCost(); + } + InsertionData iData = insertionCostsCalculator.getInsertionData(route, unassignedJob, NO_NEW_VEHICLE_YET, NO_NEW_DEPARTURE_TIME_YET, NO_NEW_DRIVER_YET, benchmark); + if (iData instanceof InsertionData.NoInsertionFound) { + failedConstraintNames.addAll(iData.getFailedConstraintNames()); + continue; + } + if (best == null) { + best = iData; + bestRoute = route; + } else if (iData.getInsertionCost() < best.getInsertionCost()) { + secondBest = best; + best = iData; + bestRoute = route; + } else if (secondBest == null || (iData.getInsertionCost() < secondBest.getInsertionCost())) { + secondBest = iData; + } } - double score; - if (secondBest == null) { //either there is only one vehicle or there are more vehicles, but they cannot load unassignedJob - //if only one vehicle, I want the job to be inserted with min iCosts - //if there are more vehicles, I want this job to be prioritized since there are no alternatives - score = (11 - unassignedJob.getPriority()) * (Integer.MAX_VALUE - best.getInsertionCost()) + scoringFunction.score(best, unassignedJob); - } else { - score = (11 - unassignedJob.getPriority()) * (secondBest.getInsertionCost() - best.getInsertionCost()) + scoringFunction.score(best, unassignedJob); + + VehicleRoute emptyRoute = VehicleRoute.emptyRoute(); + InsertionData iData = insertionCostsCalculator.getInsertionData(emptyRoute, unassignedJob, NO_NEW_VEHICLE_YET, NO_NEW_DEPARTURE_TIME_YET, NO_NEW_DRIVER_YET, benchmark); + if (!(iData instanceof InsertionData.NoInsertionFound)) { + if (best == null) { + best = iData; + bestRoute = emptyRoute; + } else if (iData.getInsertionCost() < best.getInsertionCost()) { + secondBest = best; + best = iData; + bestRoute = emptyRoute; + } else if (secondBest == null || (iData.getInsertionCost() < secondBest.getInsertionCost())) { + secondBest = iData; + } + } else failedConstraintNames.addAll(iData.getFailedConstraintNames()); + if (best == null) { + ScoredJob.BadJob badJob = new ScoredJob.BadJob(unassignedJob, failedConstraintNames); + return badJob; } - return score; + double score = scoringFunction.score(best, secondBest, unassignedJob); + ScoredJob scoredJob; + if (bestRoute == emptyRoute) { + scoredJob = new ScoredJob(unassignedJob, score, best, bestRoute, true); + } else scoredJob = new ScoredJob(unassignedJob, score, best, bestRoute, false); + return scoredJob; } } From 0852ccaeda65a17641b17be215a34e7343d3ef08 Mon Sep 17 00:00:00 2001 From: oblonski Date: Thu, 14 Nov 2024 10:48:59 +0100 Subject: [PATCH 153/191] finalize --- .../algorithm/recreate/RegretInsertionConcurrentFast.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertionConcurrentFast.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertionConcurrentFast.java index 8e3ec97ed..f237626cf 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertionConcurrentFast.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertionConcurrentFast.java @@ -44,7 +44,7 @@ public class RegretInsertionConcurrentFast extends AbstractInsertionStrategy { - private static Logger logger = LoggerFactory.getLogger(RegretInsertionConcurrentFast.class); + private static final Logger logger = LoggerFactory.getLogger(RegretInsertionConcurrentFast.class); private RegretScoringFunction regretScoringFunction; @@ -52,9 +52,9 @@ public class RegretInsertionConcurrentFast extends AbstractInsertionStrategy { private final ExecutorService executor; - private VehicleFleetManager fleetManager; + private final VehicleFleetManager fleetManager; - private Set initialVehicleIds; + private final Set initialVehicleIds; private boolean switchAllowed = true; From 25507f8adae8f211f4007bfddcaba585736185fd Mon Sep 17 00:00:00 2001 From: oblonski Date: Thu, 14 Nov 2024 11:01:59 +0100 Subject: [PATCH 154/191] refactor regret scoring --- .../jsprit/core/algorithm/box/Jsprit.java | 30 ++++++++++++------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java index d76452834..bb38e80ae 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java @@ -175,6 +175,8 @@ public static class Builder { private ScoringFunction regretScorer = null; + private RegretScoringFunction regretScoringFunction = null; + private Map customStrategies = new HashMap<>(); private VehicleFleetManager fleetManager = null; @@ -318,6 +320,11 @@ public Builder setRegretScorer(ScoringFunction scoringFunction) { return this; } + public Builder setRegretScoringFunction(RegretScoringFunction scoringFunction) { + this.regretScoringFunction = scoringFunction; + return this; + } + public VehicleRoutingAlgorithm buildAlgorithm() { return new Jsprit(this).create(vrp); } @@ -382,6 +389,8 @@ public int createNumberToBeRemoved() { private ScoringFunction regretScorer; + private RegretScoringFunction regretScoringFunction; + private final Map customStrategies = new HashMap<>(); private VehicleFleetManager vehicleFleetManager; @@ -398,12 +407,18 @@ private Jsprit(Builder builder) { this.activityInsertion = builder.activityInsertionCalculator; this.acceptor = builder.solutionAcceptor; regretScorer = builder.regretScorer; + regretScoringFunction = builder.regretScoringFunction; customStrategies.putAll(builder.customStrategies); vehicleFleetManager = builder.fleetManager; } private void ini(VehicleRoutingProblem vrp) { - if (regretScorer == null) regretScorer = getRegretScorer(vrp); + if (regretScorer == null) { + regretScorer = getRegretScorer(vrp); + } + if (regretScoringFunction == null) { + regretScoringFunction = new DefaultRegretScoringFunction(regretScorer); + } } private VehicleRoutingAlgorithm create(final VehicleRoutingProblem vrp) { @@ -533,7 +548,6 @@ private VehicleRoutingAlgorithm create(final VehicleRoutingProblem vrp) { ruinTimeRelated.setRandom(random); AbstractInsertionStrategy regret; - final ScoringFunction scorer; boolean fastRegret = Boolean.parseBoolean(getProperty(Parameter.FAST_REGRET.toString())); if (es != null) { @@ -546,8 +560,7 @@ private VehicleRoutingAlgorithm create(final VehicleRoutingProblem vrp) { .setAllowVehicleSwitch(toBoolean(getProperty(Parameter.VEHICLE_SWITCH.toString()))) .setActivityInsertionCostCalculator(activityInsertion) .build(); - scorer = regretScorer; - regretInsertion.setScoringFunction(scorer); + regretInsertion.setRegretScoringFunction(regretScoringFunction); regretInsertion.setDependencyTypes(constraintManager.getDependencyTypes()); regret = regretInsertion; } @@ -559,8 +572,7 @@ private VehicleRoutingAlgorithm create(final VehicleRoutingProblem vrp) { .setAllowVehicleSwitch(toBoolean(getProperty(Parameter.VEHICLE_SWITCH.toString()))) .setActivityInsertionCostCalculator(activityInsertion) .build(); - scorer = regretScorer; - regretInsertion.setScoringFunction(scorer); + regretInsertion.setRegretScoringFunction(regretScoringFunction); regret = regretInsertion; } } else { @@ -572,8 +584,7 @@ private VehicleRoutingAlgorithm create(final VehicleRoutingProblem vrp) { .considerFixedCosts(toDouble(getProperty(Parameter.FIXED_COST_PARAM.toString()))) .setActivityInsertionCostCalculator(activityInsertion) .build(); - scorer = regretScorer; - regretInsertion.setScoringFunction(scorer); + regretInsertion.setRegretScoringFunction(regretScoringFunction); regretInsertion.setDependencyTypes(constraintManager.getDependencyTypes()); regret = regretInsertion; } @@ -584,8 +595,7 @@ private VehicleRoutingAlgorithm create(final VehicleRoutingProblem vrp) { .considerFixedCosts(toDouble(getProperty(Parameter.FIXED_COST_PARAM.toString()))) .setActivityInsertionCostCalculator(activityInsertion) .build(); - scorer = regretScorer; - regretInsertion.setScoringFunction(scorer); + regretInsertion.setRegretScoringFunction(regretScoringFunction); regret = regretInsertion; } } From 37cfd3cbd88310a39a92b0374b3a1c182ae2a7e3 Mon Sep 17 00:00:00 2001 From: oblonski Date: Fri, 22 Nov 2024 10:27:20 +0100 Subject: [PATCH 155/191] more info about initial solution --- .../jsprit/core/algorithm/InsertionInitialSolutionFactory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/InsertionInitialSolutionFactory.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/InsertionInitialSolutionFactory.java index dac82af7f..4709f3707 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/InsertionInitialSolutionFactory.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/InsertionInitialSolutionFactory.java @@ -50,7 +50,7 @@ public InsertionInitialSolutionFactory(InsertionStrategy insertionStrategy, Solu @Override public VehicleRoutingProblemSolution createSolution(final VehicleRoutingProblem vrp) { - logger.info("create initial solution"); + logger.info("create initial solution with " + insertion); List vehicleRoutes = new ArrayList<>(vrp.getInitialVehicleRoutes()); Collection badJobs = insertion.insertJobs(vehicleRoutes, getUnassignedJobs(vrp)); VehicleRoutingProblemSolution solution = new VehicleRoutingProblemSolution(vehicleRoutes, badJobs, Double.MAX_VALUE); From 100c9bc6768b80d85277b7ffb038afe908dcf60e Mon Sep 17 00:00:00 2001 From: Martijn van Exel Date: Sun, 19 Jan 2025 10:32:05 -0700 Subject: [PATCH 156/191] some dead links --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 0dbecf542..813d71dbb 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ jsprit ====== -jsprit is a java based, open source toolkit for solving rich [Traveling Salesman Problems(TSP)](http://en.wikipedia.org/wiki/Travelling_salesman_problem) and [Vehicle Routing Problems(VRP)](http://neo.lcc.uma.es/vrp/vehicle-routing-problem/). -It is lightweight, flexible and easy-to-use, and based on a single all-purpose [meta-heuristic](../docs/Meta-Heuristic.md) currently solving +jsprit is a java based, open source toolkit for solving rich [Traveling Salesman Problems(TSP)](http://en.wikipedia.org/wiki/Travelling_salesman_problem) and [Vehicle Routing Problems(VRP)](https://en.wikipedia.org/wiki/Vehicle_routing_problem). +It is lightweight, flexible and easy-to-use, and based on a single all-purpose [meta-heuristic](docs/Meta-Heuristic.md) currently solving - Capacitated VRP - Multiple Depot VRP From 775e098688ced0ac597e53c4c9337369cc91fb7b Mon Sep 17 00:00:00 2001 From: oblonski Date: Fri, 14 Feb 2025 20:22:13 +0100 Subject: [PATCH 157/191] Get rid of StateManager --- .../core/analysis/SolutionAnalyser.java | 934 +++++++----------- .../core/analysis/SolutionAnalyserTest.java | 227 +++-- 2 files changed, 481 insertions(+), 680 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/analysis/SolutionAnalyser.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/analysis/SolutionAnalyser.java index cdb82f5c5..4cdf96961 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/analysis/SolutionAnalyser.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/analysis/SolutionAnalyser.java @@ -18,20 +18,17 @@ package com.graphhopper.jsprit.core.analysis; -import com.graphhopper.jsprit.core.algorithm.VariablePlusFixedSolutionCostCalculatorFactory; -import com.graphhopper.jsprit.core.algorithm.state.*; import com.graphhopper.jsprit.core.problem.Capacity; import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; import com.graphhopper.jsprit.core.problem.cost.TransportDistance; -import com.graphhopper.jsprit.core.problem.cost.VehicleRoutingActivityCosts; -import com.graphhopper.jsprit.core.problem.cost.VehicleRoutingTransportCosts; +import com.graphhopper.jsprit.core.problem.job.Delivery; +import com.graphhopper.jsprit.core.problem.job.Job; +import com.graphhopper.jsprit.core.problem.job.Pickup; +import com.graphhopper.jsprit.core.problem.job.Service; import com.graphhopper.jsprit.core.problem.solution.SolutionCostCalculator; import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; import com.graphhopper.jsprit.core.problem.solution.route.activity.*; -import com.graphhopper.jsprit.core.util.ActivityTimeTracker; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import java.util.HashMap; import java.util.Map; @@ -42,586 +39,354 @@ */ public class SolutionAnalyser { - private final static String PICKUP_COUNT = "pickup-count"; - private final static String PICKUP_COUNT_AT_BEGINNING = "pickup-count-at-beginning"; + private static class RouteStates { + private final VehicleRoute route; - private final static String DELIVERY_COUNT = "delivery-count"; - - private final static String DELIVERY_COUNT_AT_END = "delivery-count-at-end"; - - private final static String LOAD_PICKED = "load-picked"; - - private final static String LOAD_DELIVERED = "load-delivered"; - - - - - private static class LoadAndActivityCounter implements StateUpdater, ActivityVisitor { - - private final StateManager stateManager; + private final VehicleRoutingProblem vrp; + private final TransportDistance distanceCalculator; - private int pickupCounter; + // States at each activity + private final Map loadStates = new HashMap<>(); + private final Map distanceStates = new HashMap<>(); + private final Map waitingTimeStates = new HashMap<>(); + private final Map transportTimeStates = new HashMap<>(); + private final Map skillViolationStates = new HashMap<>(); - private int pickupAtBeginningCounter; + private final Map timeViolationStates = new HashMap<>(); + private final Map lastTransportTimeStates = new HashMap<>(); - private int deliveryCounter; + private final Map lastTransportDistanceStates = new HashMap<>(); - private int deliverAtEndCounter; + private final Map lastTransportCostsStates = new HashMap<>(); - private Capacity pickedUp; + private final Map shipmentStates = new HashMap<>(); - private Capacity delivered; + private final Map backhaulStates = new HashMap<>(); - private StateId pickup_count_id; + private final Map variableCostStates = new HashMap<>(); + public Capacity loadAtBeginning; + public double totalVariableCost; - private StateId pickup_at_beginning_count_id; + // Route-level states + private Capacity maxLoad; + private double totalDistance; + private double totalTransportTime; + private double totalWaitingTime; + private double totalServiceTime; - private StateId delivery_count_id; + private double totalOperationTime; + private double totalTimeWindowViolation; + private int pickupCount; + private int deliveryCount; - private StateId delivery_at_end_count_id; + private int pickupCountAtBeginning; + private int deliveryCountAtEnd; + private Capacity totalPickupLoad; + private Capacity totalDeliveryLoad; - private StateId load_picked_id; + private boolean shipmentConstraintOnRouteViolated = false; - private StateId load_delivered_id; + private boolean backhaulConstraintOnRouteViolated = false; + private boolean skillViolation; + private Capacity loadAtEnd; - private VehicleRoute route; - private LoadAndActivityCounter(StateManager stateManager) { - this.stateManager = stateManager; - pickup_count_id = stateManager.createStateId(PICKUP_COUNT); - delivery_count_id = stateManager.createStateId(DELIVERY_COUNT); - load_picked_id = stateManager.createStateId(LOAD_PICKED); - load_delivered_id = stateManager.createStateId(LOAD_DELIVERED); - pickup_at_beginning_count_id = stateManager.createStateId(PICKUP_COUNT_AT_BEGINNING); - delivery_at_end_count_id = stateManager.createStateId(DELIVERY_COUNT_AT_END); + public RouteStates(VehicleRoute route, VehicleRoutingProblem vrp, TransportDistance distanceCalculator) { + this.route = route; + this.vrp = vrp; + this.distanceCalculator = distanceCalculator; + calculate(); } - @Override - public void begin(VehicleRoute route) { - this.route = route; - pickupCounter = 0; - pickupAtBeginningCounter = 0; - deliveryCounter = 0; - deliverAtEndCounter = 0; - pickedUp = Capacity.Builder.newInstance().build(); - delivered = Capacity.Builder.newInstance().build(); + public void calculate() { + calculateLoadAndActivityStates(); + calculateTimeAndCostStates(); + calculateDistanceStates(); + calculateBackhaulAndShipmentStates(); + calculateSkillStates(); } - @Override - public void visit(TourActivity activity) { - if (activity instanceof PickupActivity) { - pickupCounter++; - pickedUp = Capacity.addup(pickedUp, ((PickupActivity) activity).getJob().getSize()); - if (activity instanceof PickupService) { - deliverAtEndCounter++; - } - } else if (activity instanceof DeliveryActivity) { - deliveryCounter++; - delivered = Capacity.addup(delivered, ((DeliveryActivity) activity).getJob().getSize()); - if (activity instanceof DeliverService) { - pickupAtBeginningCounter++; + private void calculateSkillStates() { + boolean skillConstraintViolatedOnRoute = false; + for (TourActivity activity : route.getActivities()) { + boolean violatedAtActivity = false; + if (activity instanceof TourActivity.JobActivity) { + Set requiredForActivity = ((TourActivity.JobActivity) activity).getJob().getRequiredSkills().values(); + for (String skill : requiredForActivity) { + if (!route.getVehicle().getSkills().containsSkill(skill)) { + violatedAtActivity = true; + skillConstraintViolatedOnRoute = true; + } + } } + this.skillViolationStates.put(activity, violatedAtActivity); } + this.skillViolation = skillConstraintViolatedOnRoute; } - @Override - public void finish() { - stateManager.putRouteState(route, pickup_count_id, pickupCounter); - stateManager.putRouteState(route, delivery_count_id, deliveryCounter); - stateManager.putRouteState(route, load_picked_id, pickedUp); - stateManager.putRouteState(route, load_delivered_id, delivered); - stateManager.putRouteState(route, pickup_at_beginning_count_id, pickupAtBeginningCounter); - stateManager.putRouteState(route, delivery_at_end_count_id, deliverAtEndCounter); + private void calculateDistanceStates() { + double sumDistance = 0.; + TourActivity prevAct = route.getStart(); + for (TourActivity activity : route.getActivities()) { + double distance = distanceCalculator.getDistance(prevAct.getLocation(), activity.getLocation(), prevAct.getEndTime(), route.getVehicle()); + sumDistance += distance; + this.distanceStates.put(activity, sumDistance); + this.lastTransportDistanceStates.put(activity, distance); + prevAct = activity; + } + double distance = distanceCalculator.getDistance(prevAct.getLocation(), route.getEnd().getLocation(), prevAct.getEndTime(), route.getVehicle()); + this.lastTransportDistanceStates.put(route.getEnd(), distance); + sumDistance += distance; + this.totalDistance = sumDistance; } - } - - private static class BackhaulAndShipmentUpdater implements StateUpdater, ActivityVisitor { - - private final StateId backhaul_id; - private final StateId shipment_id; + private void calculateTimeAndCostStates() { + double currentTime = route.getDepartureTime(); + TourActivity prevAct = route.getStart(); + totalTransportTime = 0; + totalWaitingTime = 0; + totalServiceTime = 0; + totalTimeWindowViolation = 0; + waitingTimeStates.put(route.getStart(), 0d); + totalVariableCost = 0; + variableCostStates.put(route.getStart(), totalVariableCost); + timeViolationStates.put(route.getStart(), 0d); + + for (TourActivity activity : route.getActivities()) { + double transportCost = vrp.getTransportCosts().getTransportCost(prevAct.getLocation(), activity.getLocation(), currentTime, route.getDriver(), route.getVehicle()); + totalVariableCost += transportCost; + + double transportTime = getTransportTime(prevAct, activity, currentTime); + lastTransportTimeStates.put(activity, transportTime); + totalTransportTime += transportTime; + currentTime += transportTime; + transportTimeStates.put(activity, totalTransportTime); + + // Waiting time + double waitingTime = Math.max(0, activity.getTheoreticalEarliestOperationStartTime() - currentTime); + totalWaitingTime += waitingTime; + currentTime += waitingTime; + waitingTimeStates.put(activity, waitingTime); + + // Time window violation + double twViolation = Math.max(0, currentTime - activity.getTheoreticalLatestOperationStartTime()); + timeViolationStates.put(activity, twViolation); + totalTimeWindowViolation += twViolation; + + double activityCost = vrp.getActivityCosts().getActivityCost(activity, currentTime, route.getDriver(), route.getVehicle()); + totalVariableCost += activityCost; + variableCostStates.put(activity, totalVariableCost); + lastTransportCostsStates.put(activity, transportCost + activityCost); + + // Service time + double serviceTime = getActivityDuration(activity, currentTime); + totalServiceTime += serviceTime; + currentTime += serviceTime; + + prevAct = activity; + } - private final StateManager stateManager; + // Handle final leg to end location + double transportCost = vrp.getTransportCosts().getTransportCost(prevAct.getLocation(), route.getEnd().getLocation(), currentTime, route.getDriver(), route.getVehicle()); + totalVariableCost += transportCost; - private Map openShipments; + double transportTime = getTransportTime(prevAct, route.getEnd(), currentTime); + totalTransportTime += transportTime; + currentTime += transportTime; + lastTransportTimeStates.put(route.getEnd(), transportTime); - private VehicleRoute route; + double activityCost = vrp.getActivityCosts().getActivityCost(route.getEnd(), currentTime, route.getDriver(), route.getVehicle()); + totalVariableCost += activityCost; + variableCostStates.put(route.getEnd(), totalVariableCost); - private Boolean shipmentConstraintOnRouteViolated; + waitingTimeStates.put(route.getEnd(), 0d); - private Boolean backhaulConstraintOnRouteViolated; + double endTimeWindowViolation = Math.max(0, + currentTime - route.getEnd().getTheoreticalLatestOperationStartTime() + ); + timeViolationStates.put(route.getEnd(), endTimeWindowViolation); + totalTimeWindowViolation += endTimeWindowViolation; + totalOperationTime = currentTime; - private boolean pickupOccured; + } - private BackhaulAndShipmentUpdater(StateId backhaul_id, StateId shipment_id, StateManager stateManager) { - this.stateManager = stateManager; - this.backhaul_id = backhaul_id; - this.shipment_id = shipment_id; + private double getTransportTime(TourActivity from, TourActivity to, double departureTime) { + return vrp.getTransportCosts().getTransportTime( + from.getLocation(), + to.getLocation(), + departureTime, + route.getDriver(), + route.getVehicle() + ); } - @Override - public void begin(VehicleRoute route) { - this.route = route; - openShipments = new HashMap(); - pickupOccured = false; - shipmentConstraintOnRouteViolated = false; - backhaulConstraintOnRouteViolated = false; + private double getActivityDuration(TourActivity activity, double arrivalTime) { + return vrp.getActivityCosts().getActivityDuration( + activity, + arrivalTime, + route.getDriver(), + route.getVehicle() + ); } - @Override - public void visit(TourActivity activity) { - //shipment - if (activity instanceof PickupShipment) { - openShipments.put(((PickupShipment) activity).getJob().getId(), (PickupShipment) activity); - } else if (activity instanceof DeliverShipment) { - String jobId = ((DeliverShipment) activity).getJob().getId(); - if (!openShipments.containsKey(jobId)) { - //deliverShipment without pickupShipment - stateManager.putActivityState(activity, shipment_id, true); - shipmentConstraintOnRouteViolated = true; + private void calculateBackhaulAndShipmentStates() { + Map openShipments = new HashMap<>(); + boolean pickupOccured = false; + boolean shipmentConstraintOnRouteViolated = false; + boolean backhaulConstraintOnRouteViolated = false; + for (TourActivity activity : route.getActivities()) { + //shipment + if (activity instanceof PickupShipment) { + openShipments.put(((PickupShipment) activity).getJob().getId(), (PickupShipment) activity); + } else if (activity instanceof DeliverShipment) { + String jobId = ((DeliverShipment) activity).getJob().getId(); + if (!openShipments.containsKey(jobId)) { + //deliverShipment without pickupShipment + shipmentStates.put(activity, true); + shipmentConstraintOnRouteViolated = true; + } else { + PickupShipment removed = openShipments.remove(jobId); + shipmentStates.put(removed, false); + shipmentStates.put(activity, false); + } } else { - PickupShipment removed = openShipments.remove(jobId); - stateManager.putActivityState(removed, shipment_id, false); - stateManager.putActivityState(activity, shipment_id, false); + shipmentStates.put(activity, false); } - } else stateManager.putActivityState(activity, shipment_id, false); - - //backhaul - if (activity instanceof DeliverService && pickupOccured) { - stateManager.putActivityState(activity, backhaul_id, true); - backhaulConstraintOnRouteViolated = true; - } else { - if (activity instanceof PickupService || activity instanceof ServiceActivity || activity instanceof PickupShipment) { - pickupOccured = true; - stateManager.putActivityState(activity, backhaul_id, false); - } else stateManager.putActivityState(activity, backhaul_id, false); - } - } - @Override - public void finish() { - //shipment - //pickups without deliveries + //backhaul + if (activity instanceof DeliverService && pickupOccured) { + backhaulStates.put(activity, true); + backhaulConstraintOnRouteViolated = true; + } else { + if (activity instanceof PickupService || activity instanceof ServiceActivity || activity instanceof PickupShipment) { + pickupOccured = true; + backhaulStates.put(activity, false); + } else { + backhaulStates.put(activity, false); + } + } + } for (TourActivity act : openShipments.values()) { - stateManager.putActivityState(act, shipment_id, true); + shipmentStates.put(act, true); shipmentConstraintOnRouteViolated = true; } - stateManager.putRouteState(route, shipment_id, shipmentConstraintOnRouteViolated); - //backhaul - stateManager.putRouteState(route, backhaul_id, backhaulConstraintOnRouteViolated); - } - } - - private static class SumUpActivityTimes implements StateUpdater, ActivityVisitor { - - private StateId waiting_time_id; - - private StateId transport_time_id; + this.shipmentConstraintOnRouteViolated = shipmentConstraintOnRouteViolated; + this.backhaulConstraintOnRouteViolated = backhaulConstraintOnRouteViolated; - private StateId service_time_id; - - private StateId too_late_id; - - private StateManager stateManager; - - private final VehicleRoutingActivityCosts activityCosts; - - private ActivityTimeTracker.ActivityPolicy activityPolicy; - - private VehicleRoute route; - - double sum_waiting_time = 0.; - - double sum_transport_time = 0.; - - double sum_service_time = 0.; - - double sum_too_late = 0.; - - double prevActDeparture; - - private SumUpActivityTimes(StateId waiting_time_id, StateId transport_time_id, StateId service_time_id, StateId too_late_id, StateManager stateManager, ActivityTimeTracker.ActivityPolicy activityPolicy, VehicleRoutingActivityCosts activityCosts) { - this.waiting_time_id = waiting_time_id; - this.transport_time_id = transport_time_id; - this.service_time_id = service_time_id; - this.too_late_id = too_late_id; - this.stateManager = stateManager; - this.activityPolicy = activityPolicy; - this.activityCosts = activityCosts; - } - - @Override - public void begin(VehicleRoute route) { - this.route = route; - sum_waiting_time = 0.; - sum_transport_time = 0.; - sum_service_time = 0.; - sum_too_late = 0.; - prevActDeparture = route.getDepartureTime(); } - @Override - public void visit(TourActivity activity) { - //waiting time & toolate - double waitAtAct = 0.; - double tooLate = 0.; - if (activityPolicy.equals(ActivityTimeTracker.ActivityPolicy.AS_SOON_AS_TIME_WINDOW_OPENS)) { - waitAtAct = Math.max(0, activity.getTheoreticalEarliestOperationStartTime() - activity.getArrTime()); - tooLate = Math.max(0, activity.getArrTime() - activity.getTheoreticalLatestOperationStartTime()); + private void calculateLoadAndActivityStates() { + Capacity loadAtDepot = Capacity.Builder.newInstance().build(); + Capacity loadAtEnd = Capacity.Builder.newInstance().build(); + for (Job j : route.getTourActivities().getJobs()) { + if (j instanceof Delivery) { + loadAtDepot = Capacity.addup(loadAtDepot, j.getSize()); + } else if (j instanceof Pickup || j instanceof Service) { + loadAtEnd = Capacity.addup(loadAtEnd, j.getSize()); + } } - sum_waiting_time += waitAtAct; - sum_too_late += tooLate; - //transport time - double transportTime = activity.getArrTime() - prevActDeparture; - sum_transport_time += transportTime; - prevActDeparture = activity.getEndTime(); - //service time - sum_service_time += activityCosts.getActivityDuration(activity, activity.getArrTime(), route.getDriver(), route.getVehicle()); - - stateManager.putActivityState(activity, transport_time_id, sum_transport_time); - - } - - @Override - public void finish() { - sum_transport_time += route.getEnd().getArrTime() - prevActDeparture; - sum_too_late += Math.max(0, route.getEnd().getArrTime() - route.getEnd().getTheoreticalLatestOperationStartTime()); - stateManager.putRouteState(route, transport_time_id, sum_transport_time); - stateManager.putRouteState(route, waiting_time_id, sum_waiting_time); - stateManager.putRouteState(route, service_time_id, sum_service_time); - stateManager.putRouteState(route, too_late_id, sum_too_late); - } - } - - private static class LastTransportUpdater implements StateUpdater, ActivityVisitor { - private final StateManager stateManager; - private final VehicleRoutingTransportCosts transportCost; - private final TransportDistance distanceCalculator; - private final StateId last_transport_distance_id; - private final StateId last_transport_time_id; - private final StateId last_transport_cost_id; - private TourActivity prevAct; - private double prevActDeparture; - private VehicleRoute route; - - - private LastTransportUpdater(StateManager stateManager, VehicleRoutingTransportCosts transportCost, TransportDistance distanceCalculator, StateId last_distance_id, StateId last_time_id, StateId last_cost_id) { - this.stateManager = stateManager; - this.transportCost = transportCost; - this.distanceCalculator = distanceCalculator; - this.last_transport_distance_id = last_distance_id; - this.last_transport_time_id = last_time_id; - this.last_transport_cost_id = last_cost_id; - } - - @Override - public void begin(VehicleRoute route) { - this.route = route; - this.prevAct = route.getStart(); - this.prevActDeparture = route.getDepartureTime(); - } - - @Override - public void visit(TourActivity activity) { - stateManager.putActivityState(activity, last_transport_distance_id, distance(activity)); - stateManager.putActivityState(activity, last_transport_time_id, transportTime(activity)); - stateManager.putActivityState(activity, last_transport_cost_id, transportCost(activity)); - - prevAct = activity; - prevActDeparture = activity.getEndTime(); - } - - private double transportCost(TourActivity activity) { - return transportCost.getTransportCost(prevAct.getLocation(), activity.getLocation(), prevActDeparture, route.getDriver(), route.getVehicle()); - } + this.loadAtBeginning = loadAtDepot; + this.loadAtEnd = loadAtEnd; - private double transportTime(TourActivity activity) { - return activity.getArrTime() - prevActDeparture; - } - - private double distance(TourActivity activity) { - return distanceCalculator.getDistance(prevAct.getLocation(), activity.getLocation(),prevActDeparture, route.getVehicle()); - } - - @Override - public void finish() { - stateManager.putRouteState(route, last_transport_distance_id, distance(route.getEnd())); - stateManager.putRouteState(route, last_transport_time_id, transportTime(route.getEnd())); - stateManager.putRouteState(route, last_transport_cost_id, transportCost(route.getEnd())); - } - - } - - private static class DistanceUpdater implements StateUpdater, ActivityVisitor { - - private StateId distanceId; + Capacity maxLoad = Capacity.copyOf(loadAtDepot); + Capacity currentLoad = Capacity.copyOf(loadAtDepot); - private StateManager stateManager; + ActivityCounters counters = new ActivityCounters(); + LoadTracking loads = new LoadTracking(); - private double sumDistance = 0.; - - private TransportDistance distanceCalculator; - - private TourActivity prevAct; - - private VehicleRoute route; - - private DistanceUpdater(StateId distanceId, StateManager stateManager, TransportDistance distanceCalculator) { - this.distanceId = distanceId; - this.stateManager = stateManager; - this.distanceCalculator = distanceCalculator; + for (TourActivity activity : route.getActivities()) { + currentLoad = Capacity.addup(currentLoad, activity.getSize()); + maxLoad = Capacity.max(maxLoad, currentLoad); + this.loadStates.put(activity, currentLoad); + processActivity(activity, counters, loads); + } + this.maxLoad = maxLoad; + updateStateFromCounters(counters, loads); } - @Override - public void begin(VehicleRoute route) { - sumDistance = 0.; - this.route = route; - this.prevAct = route.getStart(); + private static class ActivityCounters { + int pickups = 0; + int pickupsAtBeginning = 0; + int deliveries = 0; + int deliveriesAtEnd = 0; } - @Override - public void visit(TourActivity activity) { - double distance = distanceCalculator.getDistance(prevAct.getLocation(), activity.getLocation(), prevAct.getEndTime(), route.getVehicle()); - sumDistance += distance; - stateManager.putActivityState(activity, distanceId, sumDistance); - prevAct = activity; + private static class LoadTracking { + Capacity pickedUp = Capacity.Builder.newInstance().build(); + Capacity delivered = Capacity.Builder.newInstance().build(); } - @Override - public void finish() { - double distance = distanceCalculator.getDistance(prevAct.getLocation(), route.getEnd().getLocation(),prevAct.getEndTime(), route.getVehicle()); - sumDistance += distance; - stateManager.putRouteState(route, distanceId, sumDistance); + private void processActivity(TourActivity activity, ActivityCounters counters, LoadTracking loads) { + if (activity instanceof PickupActivity) { + processPickupActivity((PickupActivity) activity, counters, loads); + } else if (activity instanceof DeliveryActivity) { + processDeliveryActivity((DeliveryActivity) activity, counters, loads); + } } - } - - private static class SkillUpdater implements StateUpdater, ActivityVisitor { - private StateManager stateManager; + private void processPickupActivity(PickupActivity activity, ActivityCounters counters, LoadTracking loads) { + counters.pickups++; + loads.pickedUp = Capacity.addup(loads.pickedUp, activity.getJob().getSize()); - private StateId skill_id; - - private VehicleRoute route; - - private boolean skillConstraintViolatedOnRoute; - - private SkillUpdater(StateManager stateManager, StateId skill_id) { - this.stateManager = stateManager; - this.skill_id = skill_id; + if (activity instanceof PickupService) { + counters.deliveriesAtEnd++; + } } - @Override - public void begin(VehicleRoute route) { - this.route = route; - skillConstraintViolatedOnRoute = false; - } + private void processDeliveryActivity(DeliveryActivity activity, ActivityCounters counters, LoadTracking loads) { + counters.deliveries++; + loads.delivered = Capacity.addup(loads.delivered, activity.getJob().getSize()); - @Override - public void visit(TourActivity activity) { - boolean violatedAtActivity = false; - if (activity instanceof TourActivity.JobActivity) { - Set requiredForActivity = ((TourActivity.JobActivity) activity).getJob().getRequiredSkills().values(); - for (String skill : requiredForActivity) { - if (!route.getVehicle().getSkills().containsSkill(skill)) { - violatedAtActivity = true; - skillConstraintViolatedOnRoute = true; - } - } + if (activity instanceof DeliverService) { + counters.pickupsAtBeginning++; } - stateManager.putActivityState(activity, skill_id, violatedAtActivity); } - @Override - public void finish() { - stateManager.putRouteState(route, skill_id, skillConstraintViolatedOnRoute); + private void updateStateFromCounters(ActivityCounters counters, LoadTracking loads) { + this.pickupCount = counters.pickups; + this.deliveryCount = counters.deliveries; + this.totalPickupLoad = loads.pickedUp; + this.totalDeliveryLoad = loads.delivered; + this.pickupCountAtBeginning = counters.pickupsAtBeginning; + this.deliveryCountAtEnd = counters.deliveriesAtEnd; } - } - - private static final Logger log = LoggerFactory.getLogger(SolutionAnalyser.class); - - private VehicleRoutingProblem vrp; - - private StateManager stateManager; - - private TransportDistance distanceCalculator; - private StateId waitingTimeId; - private StateId transportTimeId; - - private StateId serviceTimeId; - - private StateId distanceId; - - private StateId tooLateId; - - private StateId shipmentId; - - private StateId backhaulId; - - private StateId skillId; - - private StateId lastTransportDistanceId; - - private StateId lastTransportTimeId; - - private StateId lastTransportCostId; - - - private ActivityTimeTracker.ActivityPolicy activityPolicy; - - private final SolutionCostCalculator solutionCostCalculator; - - private Double tp_distance; - private Double tp_time; - private Double waiting_time; - private Double service_time; - private Double operation_time; - private Double tw_violation; - private Capacity cap_violation; - private Double fixed_costs; - private Double variable_transport_costs; - private Boolean hasSkillConstraintViolation; - private Boolean hasBackhaulConstraintViolation; - private Boolean hasShipmentConstraintViolation; - private Integer noPickups; - private Integer noPickupsAtBeginning; - private Integer noDeliveries; - private Integer noDeliveriesAtEnd; - private Capacity pickupLoad; - private Capacity pickupLoadAtBeginning; - private Capacity deliveryLoad; - private Capacity deliveryLoadAtEnd; + } - private double maxOperationTime; + private final VehicleRoutingProblem vrp; + private final TransportDistance distanceCalculator; - private Double total_costs; + private final VehicleRoutingProblemSolution solution; - private VehicleRoutingProblemSolution solution; + private final Map routeStatesMap = new HashMap<>(); /** - * @param vrp - * @param solution - * @param distanceCalculator * */ public SolutionAnalyser(VehicleRoutingProblem vrp, VehicleRoutingProblemSolution solution, TransportDistance distanceCalculator) { this.vrp = vrp; this.solution = solution; this.distanceCalculator = distanceCalculator; - initialise(); - this.solutionCostCalculator = new VariablePlusFixedSolutionCostCalculatorFactory(stateManager).createCalculator(); - refreshStates(); + calculate(); } public SolutionAnalyser(VehicleRoutingProblem vrp, VehicleRoutingProblemSolution solution, SolutionCostCalculator solutionCostCalculator, TransportDistance distanceCalculator) { this.vrp = vrp; this.solution = solution; this.distanceCalculator = distanceCalculator; - this.solutionCostCalculator = solutionCostCalculator; - initialise(); - refreshStates(); - } - - private void initialise() { - this.stateManager = new StateManager(vrp); - this.stateManager.updateTimeWindowStates(); - this.stateManager.updateLoadStates(); - this.stateManager.updateSkillStates(); - activityPolicy = ActivityTimeTracker.ActivityPolicy.AS_SOON_AS_TIME_WINDOW_OPENS; - this.stateManager.addStateUpdater(new UpdateActivityTimes(vrp.getTransportCosts(), activityPolicy, vrp.getActivityCosts())); - this.stateManager.addStateUpdater(new UpdateVariableCosts(vrp.getActivityCosts(), vrp.getTransportCosts(), stateManager)); - waitingTimeId = stateManager.createStateId("waiting-time"); - transportTimeId = stateManager.createStateId("transport-time"); - serviceTimeId = stateManager.createStateId("service-time"); - distanceId = stateManager.createStateId("distance"); - tooLateId = stateManager.createStateId("too-late"); - shipmentId = stateManager.createStateId("shipment"); - backhaulId = stateManager.createStateId("backhaul"); - skillId = stateManager.createStateId("skills-violated"); - lastTransportCostId = stateManager.createStateId("last-transport-cost"); - lastTransportDistanceId = stateManager.createStateId("last-transport-distance"); - lastTransportTimeId = stateManager.createStateId("last-transport-time"); - - stateManager.addStateUpdater(new SumUpActivityTimes(waitingTimeId, transportTimeId, serviceTimeId, tooLateId, stateManager, activityPolicy, vrp.getActivityCosts())); - stateManager.addStateUpdater(new DistanceUpdater(distanceId, stateManager, distanceCalculator)); - stateManager.addStateUpdater(new BackhaulAndShipmentUpdater(backhaulId, shipmentId, stateManager)); - stateManager.addStateUpdater(new SkillUpdater(stateManager, skillId)); - stateManager.addStateUpdater(new LoadAndActivityCounter(stateManager)); - stateManager.addStateUpdater(new LastTransportUpdater(stateManager, vrp.getTransportCosts(), distanceCalculator, lastTransportDistanceId, lastTransportTimeId, lastTransportCostId)); - } - - - private void refreshStates() { - stateManager.clear(); - stateManager.informInsertionStarts(solution.getRoutes(), null); - clearSolutionIndicators(); - recalculateSolutionIndicators(); - } - - private void recalculateSolutionIndicators() { + calculate(); + } + + private void calculate() { for (VehicleRoute route : solution.getRoutes()) { - maxOperationTime = Math.max(maxOperationTime,getOperationTime(route)); - tp_distance += getDistance(route); - tp_time += getTransportTime(route); - waiting_time += getWaitingTime(route); - service_time += getServiceTime(route); - operation_time += getOperationTime(route); - tw_violation += getTimeWindowViolation(route); - cap_violation = Capacity.addup(cap_violation, getCapacityViolation(route)); - fixed_costs += getFixedCosts(route); - variable_transport_costs += getVariableTransportCosts(route); - if (hasSkillConstraintViolation(route)) hasSkillConstraintViolation = true; - if (hasShipmentConstraintViolation(route)) hasShipmentConstraintViolation = true; - if (hasBackhaulConstraintViolation(route)) hasBackhaulConstraintViolation = true; - noPickups += getNumberOfPickups(route); - noPickupsAtBeginning += getNumberOfPickupsAtBeginning(route); - noDeliveries += getNumberOfDeliveries(route); - noDeliveriesAtEnd += getNumberOfDeliveriesAtEnd(route); - pickupLoad = Capacity.addup(pickupLoad, getLoadPickedUp(route)); - pickupLoadAtBeginning = Capacity.addup(pickupLoadAtBeginning, getLoadAtBeginning(route)); - deliveryLoad = Capacity.addup(deliveryLoad, getLoadDelivered(route)); - deliveryLoadAtEnd = Capacity.addup(deliveryLoadAtEnd, getLoadAtEnd(route)); + RouteStates routeStates = new RouteStates(route, vrp, distanceCalculator); + routeStatesMap.put(route, routeStates); } - total_costs = solutionCostCalculator.getCosts(this.solution); - } - - private void clearSolutionIndicators() { - maxOperationTime = 0.; - tp_distance = 0.; - tp_time = 0.; - waiting_time = 0.; - service_time = 0.; - operation_time = 0.; - tw_violation = 0.; - cap_violation = Capacity.Builder.newInstance().build(); - fixed_costs = 0.; - variable_transport_costs = 0.; - total_costs = 0.; - hasBackhaulConstraintViolation = false; - hasShipmentConstraintViolation = false; - hasSkillConstraintViolation = false; - noPickups = 0; - noPickupsAtBeginning = 0; - noDeliveries = 0; - noDeliveriesAtEnd = 0; - pickupLoad = Capacity.Builder.newInstance().build(); - pickupLoadAtBeginning = Capacity.Builder.newInstance().build(); - deliveryLoad = Capacity.Builder.newInstance().build(); - deliveryLoadAtEnd = Capacity.Builder.newInstance().build(); } - /** - * Sets the specified solution and calculates all necessary indicators again. - * - * @param newSolution to be analysed - */ - public void informSolutionChanged(VehicleRoutingProblemSolution newSolution) { - this.solution = newSolution; - refreshStates(); - } /** * @param route to get the load at beginning from @@ -629,7 +394,7 @@ public void informSolutionChanged(VehicleRoutingProblemSolution newSolution) { */ public Capacity getLoadAtBeginning(VehicleRoute route) { if (route == null) throw new IllegalArgumentException("route is missing."); - return stateManager.getRouteState(route, InternalStates.LOAD_AT_BEGINNING, Capacity.class); + return routeStatesMap.get(route).loadAtBeginning; } /** @@ -638,7 +403,7 @@ public Capacity getLoadAtBeginning(VehicleRoute route) { */ public Capacity getLoadAtEnd(VehicleRoute route) { if (route == null) throw new IllegalArgumentException("route is missing."); - return stateManager.getRouteState(route, InternalStates.LOAD_AT_END, Capacity.class); + return routeStatesMap.get(route).loadAtEnd; } /** @@ -647,7 +412,7 @@ public Capacity getLoadAtEnd(VehicleRoute route) { */ public Capacity getMaxLoad(VehicleRoute route) { if (route == null) throw new IllegalArgumentException("route is missing."); - return stateManager.getRouteState(route, InternalStates.MAXLOAD, Capacity.class); + return routeStatesMap.get(route).maxLoad; } /** @@ -662,7 +427,8 @@ public Capacity getLoadRightAfterActivity(TourActivity activity, VehicleRoute ro if (activity instanceof Start) return getLoadAtBeginning(route); if (activity instanceof End) return getLoadAtEnd(route); verifyThatRouteContainsAct(activity, route); - return stateManager.getActivityState(activity, InternalStates.LOAD, Capacity.class); + return routeStatesMap.get(route).loadStates.get(activity); +// return stateManager.getActivityState(activity, InternalStates.LOAD, Capacity.class); } private void verifyThatRouteContainsAct(TourActivity activity, VehicleRoute route) { @@ -682,11 +448,11 @@ public Capacity getLoadJustBeforeActivity(TourActivity activity, VehicleRoute ro if (activity instanceof Start) return getLoadAtBeginning(route); if (activity instanceof End) return getLoadAtEnd(route); verifyThatRouteContainsAct(activity, route); - Capacity afterAct = stateManager.getActivityState(activity, InternalStates.LOAD, Capacity.class); + Capacity afterAct = this.routeStatesMap.get(route).loadStates.get(activity); +// Capacity afterAct = stateManager.getActivityState(activity, InternalStates.LOAD, Capacity.class); if (afterAct != null && activity.getSize() != null) { return Capacity.subtract(afterAct, activity.getSize()); - } else if (afterAct != null) return afterAct; - else return null; + } else return afterAct; } /** @@ -695,7 +461,7 @@ public Capacity getLoadJustBeforeActivity(TourActivity activity, VehicleRoute ro */ public Integer getNumberOfPickups(VehicleRoute route) { if (route == null) throw new IllegalArgumentException("route is missing."); - return stateManager.getRouteState(route, stateManager.createStateId(PICKUP_COUNT), Integer.class); + return routeStatesMap.get(route).pickupCount; } /** @@ -704,7 +470,7 @@ public Integer getNumberOfPickups(VehicleRoute route) { */ public Integer getNumberOfDeliveries(VehicleRoute route) { if (route == null) throw new IllegalArgumentException("route is missing."); - return stateManager.getRouteState(route, stateManager.createStateId(DELIVERY_COUNT), Integer.class); + return routeStatesMap.get(route).deliveryCount; } /** @@ -713,7 +479,7 @@ public Integer getNumberOfDeliveries(VehicleRoute route) { */ public Capacity getLoadPickedUp(VehicleRoute route) { if (route == null) throw new IllegalArgumentException("route is missing."); - return stateManager.getRouteState(route, stateManager.createStateId(LOAD_PICKED), Capacity.class); + return routeStatesMap.get(route).totalPickupLoad; } /** @@ -722,7 +488,7 @@ public Capacity getLoadPickedUp(VehicleRoute route) { */ public Capacity getLoadDelivered(VehicleRoute route) { if (route == null) throw new IllegalArgumentException("route is missing."); - return stateManager.getRouteState(route, stateManager.createStateId(LOAD_DELIVERED), Capacity.class); + return routeStatesMap.get(route).totalDeliveryLoad; } /** @@ -779,7 +545,7 @@ public Capacity getCapacityViolationAfterActivity(TourActivity activity, Vehicle */ public Double getTimeWindowViolation(VehicleRoute route) { if (route == null) throw new IllegalArgumentException("route is missing."); - return stateManager.getRouteState(route, tooLateId, Double.class); + return routeStatesMap.get(route).totalTimeWindowViolation; } /** @@ -790,7 +556,7 @@ public Double getTimeWindowViolation(VehicleRoute route) { public Double getTimeWindowViolationAtActivity(TourActivity activity, VehicleRoute route) { if (route == null) throw new IllegalArgumentException("route is missing."); if (activity == null) throw new IllegalArgumentException("activity is missing."); - return Math.max(0, activity.getArrTime() - activity.getTheoreticalLatestOperationStartTime()); + return routeStatesMap.get(route).timeViolationStates.get(activity); } /** @@ -800,7 +566,7 @@ public Double getTimeWindowViolationAtActivity(TourActivity activity, VehicleRou */ public Boolean hasSkillConstraintViolation(VehicleRoute route) { if (route == null) throw new IllegalArgumentException("route is missing."); - return stateManager.getRouteState(route, skillId, Boolean.class); + return routeStatesMap.get(route).skillViolation; } /** @@ -816,7 +582,7 @@ public Boolean hasSkillConstraintViolationAtActivity(TourActivity activity, Vehi if (activity instanceof Start) return false; if (activity instanceof End) return false; verifyThatRouteContainsAct(activity, route); - return stateManager.getActivityState(activity, skillId, Boolean.class); + return routeStatesMap.get(route).skillViolationStates.get(activity); } /** @@ -831,7 +597,7 @@ public Boolean hasSkillConstraintViolationAtActivity(TourActivity activity, Vehi */ public Boolean hasBackhaulConstraintViolation(VehicleRoute route) { if (route == null) throw new IllegalArgumentException("route is missing."); - return stateManager.getRouteState(route, backhaulId, Boolean.class); + return routeStatesMap.get(route).backhaulConstraintOnRouteViolated; } /** @@ -846,7 +612,7 @@ public Boolean hasBackhaulConstraintViolationAtActivity(TourActivity activity, V if (activity instanceof Start) return false; if (activity instanceof End) return false; verifyThatRouteContainsAct(activity, route); - return stateManager.getActivityState(activity, backhaulId, Boolean.class); + return routeStatesMap.get(route).backhaulStates.get(activity); } /** @@ -859,7 +625,7 @@ public Boolean hasBackhaulConstraintViolationAtActivity(TourActivity activity, V */ public Boolean hasShipmentConstraintViolation(VehicleRoute route) { if (route == null) throw new IllegalArgumentException("route is missing."); - return stateManager.getRouteState(route, shipmentId, Boolean.class); + return routeStatesMap.get(route).shipmentConstraintOnRouteViolated; } /** @@ -877,7 +643,7 @@ public Boolean hasShipmentConstraintViolationAtActivity(TourActivity activity, V if (activity instanceof Start) return false; if (activity instanceof End) return false; verifyThatRouteContainsAct(activity, route); - return stateManager.getActivityState(activity, shipmentId, Boolean.class); + return routeStatesMap.get(route).shipmentStates.get(activity); } @@ -887,7 +653,7 @@ public Boolean hasShipmentConstraintViolationAtActivity(TourActivity activity, V */ public Double getOperationTime(VehicleRoute route) { if (route == null) throw new IllegalArgumentException("route is missing."); - return route.getEnd().getArrTime() - route.getStart().getEndTime(); + return routeStatesMap.get(route).totalOperationTime; } /** @@ -897,7 +663,7 @@ public Double getOperationTime(VehicleRoute route) { */ public Double getWaitingTime(VehicleRoute route) { if (route == null) throw new IllegalArgumentException("route is missing."); - return stateManager.getRouteState(route, waitingTimeId, Double.class); + return routeStatesMap.get(route).totalWaitingTime; } /** @@ -906,7 +672,7 @@ public Double getWaitingTime(VehicleRoute route) { */ public Double getTransportTime(VehicleRoute route) { if (route == null) throw new IllegalArgumentException("route is missing."); - return stateManager.getRouteState(route, transportTimeId, Double.class); + return routeStatesMap.get(route).totalTransportTime; } /** @@ -915,7 +681,7 @@ public Double getTransportTime(VehicleRoute route) { */ public Double getServiceTime(VehicleRoute route) { if (route == null) throw new IllegalArgumentException("route is missing."); - return stateManager.getRouteState(route, serviceTimeId, Double.class); + return routeStatesMap.get(route).totalServiceTime; } /** @@ -925,8 +691,7 @@ public Double getServiceTime(VehicleRoute route) { */ public Double getVariableTransportCosts(VehicleRoute route) { if (route == null) throw new IllegalArgumentException("route is missing."); - - return stateManager.getRouteState(route, InternalStates.COSTS, Double.class); + return routeStatesMap.get(route).totalVariableCost; } /** @@ -951,7 +716,7 @@ public Double getVariableTransportCostsAtActivity(TourActivity activity, Vehicle if (activity instanceof Start) return 0.; if (activity instanceof End) return getVariableTransportCosts(route); verifyThatRouteContainsAct(activity, route); - return stateManager.getActivityState(activity, InternalStates.COSTS, Double.class); + return routeStatesMap.get(route).variableCostStates.get(activity); } /** @@ -965,7 +730,7 @@ public Double getTransportTimeAtActivity(TourActivity activity, VehicleRoute rou if (activity instanceof Start) return 0.; if (activity instanceof End) return getTransportTime(route); verifyThatRouteContainsAct(activity, route); - return stateManager.getActivityState(activity, transportTimeId, Double.class); + return routeStatesMap.get(route).transportTimeStates.get(activity); } /** @@ -974,7 +739,11 @@ public Double getTransportTimeAtActivity(TourActivity activity, VehicleRoute rou * @return The transport time from the previous activity to this one. */ public Double getLastTransportTimeAtActivity(TourActivity activity, VehicleRoute route) { - return getLastTransport(activity, route, lastTransportTimeId); + if (route == null) throw new IllegalArgumentException("route is missing."); + if (activity == null) throw new IllegalArgumentException("activity is missing."); + if (activity instanceof Start) return 0.; + verifyThatRouteContainsAct(activity, route); + return routeStatesMap.get(route).lastTransportTimeStates.get(activity); } /** @@ -983,7 +752,11 @@ public Double getLastTransportTimeAtActivity(TourActivity activity, VehicleRoute * @return The transport distance from the previous activity to this one. */ public Double getLastTransportDistanceAtActivity(TourActivity activity, VehicleRoute route) { - return getLastTransport(activity, route, lastTransportDistanceId); + if (route == null) throw new IllegalArgumentException("route is missing."); + if (activity == null) throw new IllegalArgumentException("activity is missing."); + if (activity instanceof Start) return 0.; + verifyThatRouteContainsAct(activity, route); + return routeStatesMap.get(route).lastTransportDistanceStates.get(activity); } /** @@ -992,19 +765,14 @@ public Double getLastTransportDistanceAtActivity(TourActivity activity, VehicleR * @return The transport cost from the previous activity to this one. */ public Double getLastTransportCostAtActivity(TourActivity activity, VehicleRoute route) { - return getLastTransport(activity, route, lastTransportCostId); - } - - - private Double getLastTransport(TourActivity activity, VehicleRoute route, StateId id) { if (route == null) throw new IllegalArgumentException("route is missing."); if (activity == null) throw new IllegalArgumentException("activity is missing."); if (activity instanceof Start) return 0.; - if (activity instanceof End) return stateManager.getRouteState(route, id, Double.class); verifyThatRouteContainsAct(activity, route); - return stateManager.getActivityState(activity, id, Double.class); + return routeStatesMap.get(route).lastTransportCostsStates.get(activity); } + /** * @param activity to get the waiting from * @param route where activity should be part of @@ -1013,11 +781,7 @@ private Double getLastTransport(TourActivity activity, VehicleRoute route, State public Double getWaitingTimeAtActivity(TourActivity activity, VehicleRoute route) { if (route == null) throw new IllegalArgumentException("route is missing."); if (activity == null) throw new IllegalArgumentException("activity is missing."); - double waitingTime = 0.; - if (activityPolicy.equals(ActivityTimeTracker.ActivityPolicy.AS_SOON_AS_TIME_WINDOW_OPENS)) { - waitingTime = Math.max(0, activity.getTheoreticalEarliestOperationStartTime() - activity.getArrTime()); - } - return waitingTime; + return routeStatesMap.get(route).waitingTimeStates.get(activity); } /** @@ -1026,7 +790,7 @@ public Double getWaitingTimeAtActivity(TourActivity activity, VehicleRoute route */ public Double getDistance(VehicleRoute route) { if (route == null) throw new IllegalArgumentException("route is missing."); - return stateManager.getRouteState(route, distanceId, Double.class); + return routeStatesMap.get(route).totalDistance; } /** @@ -1039,14 +803,16 @@ public Double getDistanceAtActivity(TourActivity activity, VehicleRoute route) { if (activity instanceof Start) return 0.; if (activity instanceof End) return getDistance(route); verifyThatRouteContainsAct(activity, route); - return stateManager.getActivityState(activity, distanceId, Double.class); + return routeStatesMap.get(route).distanceStates.get(activity); } /** * @return number of pickups in specified solution (without load at beginning of each route) */ public Integer getNumberOfPickups() { - return noPickups; + return routeStatesMap.values().stream() + .mapToInt(rs -> rs.pickupCount) + .sum(); } /** @@ -1055,28 +821,34 @@ public Integer getNumberOfPickups() { */ public Integer getNumberOfPickupsAtBeginning(VehicleRoute route) { if (route == null) throw new IllegalArgumentException("route is missing."); - return stateManager.getRouteState(route, stateManager.createStateId(PICKUP_COUNT_AT_BEGINNING), Integer.class); + return routeStatesMap.get(route).pickupCountAtBeginning; } /** * @return number of pickups in specified solution at beginning of each route */ public Integer getNumberOfPickupsAtBeginning() { - return noPickupsAtBeginning; + return routeStatesMap.values().stream() + .mapToInt(rs -> rs.pickupCountAtBeginning) + .sum(); } /** * @return number of deliveries in specified solution (without load at end of each route) */ public Integer getNumberOfDeliveries() { - return noDeliveries; + return routeStatesMap.values().stream() + .mapToInt(rs -> rs.deliveryCount) + .sum(); } /** * @return number of deliveries in specified solution at end of each route */ public Integer getNumberOfDeliveriesAtEnd() { - return noDeliveriesAtEnd; + return routeStatesMap.values().stream() + .mapToInt(rs -> rs.deliveryCountAtEnd) + .sum(); } /** @@ -1085,35 +857,43 @@ public Integer getNumberOfDeliveriesAtEnd() { */ public Integer getNumberOfDeliveriesAtEnd(VehicleRoute route) { if (route == null) throw new IllegalArgumentException("route is missing."); - return stateManager.getRouteState(route, stateManager.createStateId(DELIVERY_COUNT_AT_END), Integer.class); + return routeStatesMap.get(route).deliveryCountAtEnd; } /** * @return load picked up in solution (without load at beginning of each route) */ public Capacity getLoadPickedUp() { - return pickupLoad; + return routeStatesMap.values().stream() + .map(rs -> rs.totalPickupLoad) + .reduce(Capacity.Builder.newInstance().build(), Capacity::addup); } /** * @return load picked up in solution at beginning of each route */ public Capacity getLoadAtBeginning() { - return pickupLoadAtBeginning; + return routeStatesMap.values().stream() + .map(rs -> rs.loadAtBeginning) + .reduce(Capacity.Builder.newInstance().build(), Capacity::addup); } /** * @return load delivered in solution (without load at end of each route) */ public Capacity getLoadDelivered() { - return deliveryLoad; + return routeStatesMap.values().stream() + .map(rs -> rs.totalDeliveryLoad) + .reduce(Capacity.Builder.newInstance().build(), Capacity::addup); } /** * @return load delivered in solution at end of each route */ public Capacity getLoadAtEnd() { - return deliveryLoadAtEnd; + return routeStatesMap.values().stream() + .map(rs -> rs.loadAtEnd) + .reduce(Capacity.Builder.newInstance().build(), Capacity::addup); } @@ -1121,93 +901,119 @@ public Capacity getLoadAtEnd() { * @return total distance for specified solution */ public Double getDistance() { - return tp_distance; + return routeStatesMap.values().stream() + .mapToDouble(rs -> rs.totalDistance) + .sum(); } /** * @return total operation time for specified solution */ public Double getOperationTime() { - return operation_time; + return routeStatesMap.values().stream() + .mapToDouble(rs -> rs.totalOperationTime) + .sum(); } - public Double getMaxOperationTime() { return maxOperationTime; } + public Double getMaxOperationTime() { + return routeStatesMap.values().stream() + .mapToDouble(rs -> rs.totalOperationTime) + .max() + .orElse(0.0); + } /** * @return total waiting time for specified solution */ public Double getWaitingTime() { - return waiting_time; + return routeStatesMap.values().stream() + .mapToDouble(rs -> rs.totalWaitingTime) + .sum(); } /** * @return total transportation time */ public Double getTransportTime() { - return tp_time; + return routeStatesMap.values().stream() + .mapToDouble(rs -> rs.totalTransportTime) + .sum(); } /** * @return total time window violation for specified solution */ public Double getTimeWindowViolation() { - return tw_violation; + return routeStatesMap.values().stream() + .mapToDouble(rs -> rs.totalTimeWindowViolation) + .sum(); } /** * @return total capacity violation for specified solution */ public Capacity getCapacityViolation() { - return cap_violation; + return routeStatesMap.values().stream() + .map(rs -> getCapacityViolation(rs.route)) + .reduce(Capacity.Builder.newInstance().build(), Capacity::addup); } /** * @return total service time for specified solution */ public Double getServiceTime() { - return service_time; + return routeStatesMap.values().stream() + .mapToDouble(rs -> rs.totalServiceTime) + .sum(); } /** * @return total fixed costs for specified solution */ public Double getFixedCosts() { - return fixed_costs; + return solution.getRoutes().stream() + .mapToDouble(this::getFixedCosts) + .sum(); } /** * @return total variable transport costs for specified solution */ public Double getVariableTransportCosts() { - return variable_transport_costs; + return routeStatesMap.values().stream() + .mapToDouble(rs -> rs.totalVariableCost) + .sum(); } /** * @return total costs defined by solutionCostCalculator */ public Double getTotalCosts() { - return total_costs; + return getFixedCosts() + getVariableTransportCosts(); } /** * @return true if at least one route in specified solution has shipment constraint violation */ public Boolean hasShipmentConstraintViolation() { - return hasShipmentConstraintViolation; + return routeStatesMap.values().stream() + .anyMatch(rs -> rs.shipmentConstraintOnRouteViolated); } /** * @return true if at least one route in specified solution has backhaul constraint violation */ public Boolean hasBackhaulConstraintViolation() { - return hasBackhaulConstraintViolation; + return routeStatesMap.values().stream() + .anyMatch(rs -> rs.backhaulConstraintOnRouteViolated); } /** * @return true if at least one route in specified solution has skill constraint violation */ public Boolean hasSkillConstraintViolation() { - return hasSkillConstraintViolation; + return routeStatesMap.values().stream() + .anyMatch(rs -> rs.skillViolation); } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/analysis/SolutionAnalyserTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/analysis/SolutionAnalyserTest.java index 28284bcff..2906154d4 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/analysis/SolutionAnalyserTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/analysis/SolutionAnalyserTest.java @@ -22,7 +22,6 @@ import com.graphhopper.jsprit.core.problem.Capacity; import com.graphhopper.jsprit.core.problem.Location; import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.cost.TransportDistance; import com.graphhopper.jsprit.core.problem.job.Delivery; import com.graphhopper.jsprit.core.problem.job.Pickup; import com.graphhopper.jsprit.core.problem.job.Service; @@ -38,11 +37,11 @@ import com.graphhopper.jsprit.core.util.Coordinate; import com.graphhopper.jsprit.core.util.ManhattanCosts; import com.graphhopper.jsprit.core.util.TestUtils; -import junit.framework.Assert; import org.junit.Before; import org.junit.Test; import java.util.Arrays; +import java.util.Collections; import java.util.Iterator; import java.util.List; @@ -169,7 +168,7 @@ public void buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore .addPickup(s1) .build(); - solution = new VehicleRoutingProblemSolution(Arrays.asList(route), 300); + solution = new VehicleRoutingProblemSolution(Collections.singletonList(route), 300); } /** @@ -215,7 +214,6 @@ private enum TransportCostsTestType { /** * Run multiple different tests for transport costs * - * @param type */ private void testTransportCosts(TransportCostsTestType type) { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); @@ -235,7 +233,7 @@ private void testTransportCosts(TransportCostsTestType type) { // get route 1 activities List activities = route1.getActivities(); - Assert.assertEquals(activities.size(), 4); + assertEquals(activities.size(), 4); // utility class to calculate manhattan distance class ManhattanDistance { @@ -255,18 +253,17 @@ private double calc(Coordinate from, Coordinate to) { // calculate last distance and time (Manhattan uses speed = 1 so distance = time) double dist = md.calc(last, current); - double time = dist; // test last distance if (type == TransportCostsTestType.LAST_DISTANCE) { double savedDist = analyser.getLastTransportDistanceAtActivity(activity, route1); - Assert.assertEquals(dist, savedDist, 1E-10); + assertEquals(dist, savedDist, 1E-10); } // test last time if (type == TransportCostsTestType.LAST_TIME) { double savedTime = analyser.getLastTransportTimeAtActivity(activity, route1); - Assert.assertEquals(time, savedTime, 1E-10); + assertEquals(dist, savedTime, 1E-10); } // test last cost @@ -280,29 +277,29 @@ private double calc(Coordinate from, Coordinate to) { } double cost = dist * perDistanceUnit; double savedCost = analyser.getLastTransportCostAtActivity(activity, route1); - Assert.assertEquals(cost, savedCost, 1E-10); + assertEquals(cost, savedCost, 1E-10); } // test total transport time at activity if (type == TransportCostsTestType.TRANSPORT_TIME_AT_ACTIVITY) { - totalTime += time; + totalTime += dist; double savedTransportTime = analyser.getTransportTimeAtActivity(activity, route1); - Assert.assertEquals(totalTime, savedTransportTime, 1E-10); + assertEquals(totalTime, savedTransportTime, 1E-10); } } } @Test public void constructionShouldWork() { - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); - Assert.assertTrue(true); + new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); + assertTrue(true); } @Test public void loadAtBeginningOfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(0, analyser.getLoadAtBeginning(route).get(0)); + assertEquals(0, analyser.getLoadAtBeginning(route).get(0)); } @Test @@ -312,14 +309,14 @@ public void loadAtBeginningOfRoute2ShouldWork() { iterator.next(); VehicleRoute route = iterator.next(); - Assert.assertEquals(0, analyser.getLoadAtBeginning(route).get(0)); + assertEquals(0, analyser.getLoadAtBeginning(route).get(0)); } @Test public void loadAtEnd_OfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(5, analyser.getLoadAtEnd(route).get(0)); + assertEquals(5, analyser.getLoadAtEnd(route).get(0)); } @Test @@ -329,112 +326,112 @@ public void loadAtEnd_OfRoute2ShouldWork() { iterator.next(); VehicleRoute route = iterator.next(); - Assert.assertEquals(5, analyser.getLoadAtEnd(route).get(0)); + assertEquals(5, analyser.getLoadAtEnd(route).get(0)); } @Test public void loadAfterActivity_ofStartActOfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(0, analyser.getLoadRightAfterActivity(route.getStart(), route).get(0)); + assertEquals(0, analyser.getLoadRightAfterActivity(route.getStart(), route).get(0)); } @Test public void loadAfterActivity_ofAct1ofRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(2, analyser.getLoadRightAfterActivity(route.getActivities().get(0), route).get(0)); + assertEquals(2, analyser.getLoadRightAfterActivity(route.getActivities().get(0), route).get(0)); } @Test public void loadAfterActivity_ofAct2ofRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(12, analyser.getLoadRightAfterActivity(route.getActivities().get(1), route).get(0)); + assertEquals(12, analyser.getLoadRightAfterActivity(route.getActivities().get(1), route).get(0)); } @Test public void loadAfterActivity_ofAct3ofRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(2, analyser.getLoadRightAfterActivity(route.getActivities().get(2), route).get(0)); + assertEquals(2, analyser.getLoadRightAfterActivity(route.getActivities().get(2), route).get(0)); } @Test public void loadAfterActivity_ofAct4ofRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(5, analyser.getLoadRightAfterActivity(route.getActivities().get(3), route).get(0)); + assertEquals(5, analyser.getLoadRightAfterActivity(route.getActivities().get(3), route).get(0)); } @Test public void loadAfterActivity_ofEndActOfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(5, analyser.getLoadRightAfterActivity(route.getEnd(), route).get(0)); + assertEquals(5, analyser.getLoadRightAfterActivity(route.getEnd(), route).get(0)); } @Test public void loadBeforeActivity_ofStartActOfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(0, analyser.getLoadJustBeforeActivity(route.getStart(), route).get(0)); + assertEquals(0, analyser.getLoadJustBeforeActivity(route.getStart(), route).get(0)); } @Test public void loadBeforeActivity_ofAct1ofRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(0, analyser.getLoadJustBeforeActivity(route.getActivities().get(0), route).get(0)); + assertEquals(0, analyser.getLoadJustBeforeActivity(route.getActivities().get(0), route).get(0)); } @Test public void loadBeforeActivity_ofAct2ofRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(2, analyser.getLoadJustBeforeActivity(route.getActivities().get(1), route).get(0)); + assertEquals(2, analyser.getLoadJustBeforeActivity(route.getActivities().get(1), route).get(0)); } @Test public void loadBeforeActivity_ofAct3ofRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(12, analyser.getLoadJustBeforeActivity(route.getActivities().get(2), route).get(0)); + assertEquals(12, analyser.getLoadJustBeforeActivity(route.getActivities().get(2), route).get(0)); } @Test public void loadBeforeActivity_ofAct4ofRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(2, analyser.getLoadJustBeforeActivity(route.getActivities().get(3), route).get(0)); + assertEquals(2, analyser.getLoadJustBeforeActivity(route.getActivities().get(3), route).get(0)); } @Test public void loadBeforeActivity_ofEndActOfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(5, analyser.getLoadJustBeforeActivity(route.getEnd(), route).get(0)); + assertEquals(5, analyser.getLoadJustBeforeActivity(route.getEnd(), route).get(0)); } @Test public void maxLoad_OfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(12, analyser.getMaxLoad(route).get(0)); + assertEquals(12, analyser.getMaxLoad(route).get(0)); } @Test public void pickupCount_OfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(3, analyser.getNumberOfPickups(route), 0.01); + assertEquals(3, analyser.getNumberOfPickups(route), 0.01); } @Test public void pickupCountAtBeginning_OfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(0, analyser.getNumberOfPickupsAtBeginning(route), 0.01); + assertEquals(0, analyser.getNumberOfPickupsAtBeginning(route), 0.01); } @Test @@ -442,7 +439,7 @@ public void pickupCount_OfRoute1OfAnotherSolutionShouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(4, analyser.getNumberOfPickups(route), 0.01); + assertEquals(4, analyser.getNumberOfPickups(route), 0.01); } @Test @@ -450,47 +447,47 @@ public void pickupCountAtBeginning_OfRoute1OfAnotherSolutionShouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(2, analyser.getNumberOfPickupsAtBeginning(route), 0.01); + assertEquals(2, analyser.getNumberOfPickupsAtBeginning(route), 0.01); } @Test public void pickupCount_onSolutionShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); - Assert.assertEquals(6, analyser.getNumberOfPickups(), 0.01); + assertEquals(6, analyser.getNumberOfPickups(), 0.01); } @Test public void pickupCountAtBeginning_onSolutionShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); - Assert.assertEquals(0, analyser.getNumberOfPickupsAtBeginning(), 0.01); + assertEquals(0, analyser.getNumberOfPickupsAtBeginning(), 0.01); } @Test public void pickupCount_onAnotherSolutionShouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); - Assert.assertEquals(4, analyser.getNumberOfPickups(), 0.01); + assertEquals(4, analyser.getNumberOfPickups(), 0.01); } @Test public void pickupCountAtBeginning_onAnotherSolutionShouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); - Assert.assertEquals(2, analyser.getNumberOfPickupsAtBeginning(), 0.01); + assertEquals(2, analyser.getNumberOfPickupsAtBeginning(), 0.01); } @Test public void pickupLoad_OfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(15, analyser.getLoadPickedUp(route).get(0), 0.01); + assertEquals(15, analyser.getLoadPickedUp(route).get(0), 0.01); } @Test public void pickupLoadAtBeginning_OfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(0, analyser.getLoadAtBeginning(route).get(0), 0.01); + assertEquals(0, analyser.getLoadAtBeginning(route).get(0), 0.01); } @Test @@ -498,7 +495,7 @@ public void pickupLoad_OfRoute1OfAnotherShouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(50, analyser.getLoadPickedUp(route).get(0), 0.01); + assertEquals(50, analyser.getLoadPickedUp(route).get(0), 0.01); } @Test @@ -506,47 +503,47 @@ public void pickupLoadAtBeginning_OfRoute1OfAnotherShouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(40, analyser.getLoadAtBeginning(route).get(0), 0.01); + assertEquals(40, analyser.getLoadAtBeginning(route).get(0), 0.01); } @Test public void pickupLoad_onSolutionShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); - Assert.assertEquals(30, analyser.getLoadPickedUp().get(0), 0.01); + assertEquals(30, analyser.getLoadPickedUp().get(0), 0.01); } @Test public void pickupLoadAtBeginning_onSolutionShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); - Assert.assertEquals(0, analyser.getLoadAtBeginning().get(0), 0.01); + assertEquals(0, analyser.getLoadAtBeginning().get(0), 0.01); } @Test public void pickupLoad_onAnotherSolutionShouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); - Assert.assertEquals(50, analyser.getLoadPickedUp().get(0), 0.01); + assertEquals(50, analyser.getLoadPickedUp().get(0), 0.01); } @Test public void pickupLoadAtBeginning_onAnotherSolutionShouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); - Assert.assertEquals(40, analyser.getLoadAtBeginning().get(0), 0.01); + assertEquals(40, analyser.getLoadAtBeginning().get(0), 0.01); } @Test public void deliveryCount_OfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(1, analyser.getNumberOfDeliveries(route), 0.01); + assertEquals(1, analyser.getNumberOfDeliveries(route), 0.01); } @Test public void deliveryCountAtEnd_OfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(2, analyser.getNumberOfDeliveriesAtEnd(route), 0.01); + assertEquals(2, analyser.getNumberOfDeliveriesAtEnd(route), 0.01); } @Test @@ -554,7 +551,7 @@ public void deliveryCount_OfRoute1OfAnotherSolutionShouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(4, analyser.getNumberOfDeliveries(route), 0.01); + assertEquals(4, analyser.getNumberOfDeliveries(route), 0.01); } @Test @@ -562,47 +559,47 @@ public void deliveryCountAtEnd_OfRoute1OfAnotherSolutionShouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(2, analyser.getNumberOfDeliveriesAtEnd(route), 0.01); + assertEquals(2, analyser.getNumberOfDeliveriesAtEnd(route), 0.01); } @Test public void deliveryCount_onSolutionShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); - Assert.assertEquals(2, analyser.getNumberOfDeliveries(), 0.01); + assertEquals(2, analyser.getNumberOfDeliveries(), 0.01); } @Test public void deliveryCountAtEnd_onSolutionShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); - Assert.assertEquals(4, analyser.getNumberOfDeliveriesAtEnd(), 0.01); + assertEquals(4, analyser.getNumberOfDeliveriesAtEnd(), 0.01); } @Test public void deliveryCount_onAnotherSolutionShouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); - Assert.assertEquals(4, analyser.getNumberOfDeliveries(), 0.01); + assertEquals(4, analyser.getNumberOfDeliveries(), 0.01); } @Test public void deliveryCountAtEnd_onAnotherSolutionShouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); - Assert.assertEquals(2, analyser.getNumberOfDeliveriesAtEnd(), 0.01); + assertEquals(2, analyser.getNumberOfDeliveriesAtEnd(), 0.01); } @Test public void deliveryLoad_OfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(10, analyser.getLoadDelivered(route).get(0), 0.01); + assertEquals(10, analyser.getLoadDelivered(route).get(0), 0.01); } @Test public void deliveryLoadAtEnd_OfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(5, analyser.getLoadAtEnd(route).get(0), 0.01); + assertEquals(5, analyser.getLoadAtEnd(route).get(0), 0.01); } @Test @@ -610,7 +607,7 @@ public void deliveryLoad_OfRoute1OfAnotherSolutionShouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(70, analyser.getLoadDelivered(route).get(0), 0.01); + assertEquals(70, analyser.getLoadDelivered(route).get(0), 0.01); } @Test @@ -618,153 +615,152 @@ public void deliveryLoadAtEnd_OfRoute1OfAnotherSolutionShouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(20, analyser.getLoadAtEnd(route).get(0), 0.01); + assertEquals(20, analyser.getLoadAtEnd(route).get(0), 0.01); } @Test public void deliveryLoad_onSolutionShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); - Assert.assertEquals(20, analyser.getLoadDelivered().get(0), 0.01); + assertEquals(20, analyser.getLoadDelivered().get(0), 0.01); } @Test public void deliveryLoadAtEnd_onSolutionShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); - Assert.assertEquals(10, analyser.getLoadAtEnd().get(0), 0.01); + assertEquals(10, analyser.getLoadAtEnd().get(0), 0.01); } @Test public void deliveryLoad_onAnotherSolutionShouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); - VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(70, analyser.getLoadDelivered().get(0), 0.01); + assertEquals(70, analyser.getLoadDelivered().get(0), 0.01); } @Test public void deliveryLoadAtEnd_onAnotherSolutionShouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); - Assert.assertEquals(20, analyser.getLoadAtEnd().get(0), 0.01); + assertEquals(20, analyser.getLoadAtEnd().get(0), 0.01); } @Test public void operationTime_OfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(46. + 40., analyser.getOperationTime(route), 0.01); + assertEquals(46. + 40., analyser.getOperationTime(route), 0.01); } @Test public void waitingTime_OfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(4., analyser.getWaitingTime(route), 0.01); + assertEquals(4., analyser.getWaitingTime(route), 0.01); } @Test public void transportTime_OfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(42., analyser.getTransportTime(route), 0.01); + assertEquals(42., analyser.getTransportTime(route), 0.01); } @Test public void serviceTime_OfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(40., analyser.getServiceTime(route), 0.01); + assertEquals(40., analyser.getServiceTime(route), 0.01); } @Test public void distance_OfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(42., analyser.getDistance(route), 0.01); + assertEquals(42., analyser.getDistance(route), 0.01); } @Test public void waitingTime_atStartActOfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(0, analyser.getWaitingTimeAtActivity(route.getStart(), route), 0.01); + assertEquals(0, analyser.getWaitingTimeAtActivity(route.getStart(), route), 0.01); } @Test public void waitingTime_ofAct1ofRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(4., analyser.getWaitingTimeAtActivity(route.getActivities().get(0), route), 0.01); + assertEquals(4., analyser.getWaitingTimeAtActivity(route.getActivities().get(0), route), 0.01); } @Test public void waitingTime_ofAct2ofRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(0., analyser.getWaitingTimeAtActivity(route.getActivities().get(1), route), 0.01); + assertEquals(0., analyser.getWaitingTimeAtActivity(route.getActivities().get(1), route), 0.01); } @Test public void waitingTime_ofAct3ofRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(0., analyser.getWaitingTimeAtActivity(route.getActivities().get(2), route), 0.01); + assertEquals(0., analyser.getWaitingTimeAtActivity(route.getActivities().get(2), route), 0.01); } @Test public void waitingTime_ofAct4ofRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(0., analyser.getWaitingTimeAtActivity(route.getActivities().get(3), route), 0.01); + assertEquals(0., analyser.getWaitingTimeAtActivity(route.getActivities().get(3), route), 0.01); } @Test public void waitingTime_ofEndActOfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(0., analyser.getWaitingTimeAtActivity(route.getEnd(), route), 0.01); + assertEquals(0., analyser.getWaitingTimeAtActivity(route.getEnd(), route), 0.01); } @Test public void distance_atStartActOfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(0, analyser.getDistanceAtActivity(route.getStart(), route), 0.01); + assertEquals(0, analyser.getDistanceAtActivity(route.getStart(), route), 0.01); } @Test public void distance_ofAct1ofRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(6., analyser.getDistanceAtActivity(route.getActivities().get(0), route), 0.01); + assertEquals(6., analyser.getDistanceAtActivity(route.getActivities().get(0), route), 0.01); } @Test public void distance_ofAct2ofRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(12., analyser.getDistanceAtActivity(route.getActivities().get(1), route), 0.01); + assertEquals(12., analyser.getDistanceAtActivity(route.getActivities().get(1), route), 0.01); } @Test public void distance_ofAct3ofRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(16., analyser.getDistanceAtActivity(route.getActivities().get(2), route), 0.01); + assertEquals(16., analyser.getDistanceAtActivity(route.getActivities().get(2), route), 0.01); } @Test public void distance_ofAct4ofRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(27., analyser.getDistanceAtActivity(route.getActivities().get(3), route), 0.01); + assertEquals(27., analyser.getDistanceAtActivity(route.getActivities().get(3), route), 0.01); } @Test public void distance_ofEndActOfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(42., analyser.getDistanceAtActivity(route.getEnd(), route), 0.01); + assertEquals(42., analyser.getDistanceAtActivity(route.getEnd(), route), 0.01); } @@ -772,105 +768,105 @@ public void distance_ofEndActOfRoute1ShouldWork() { public void lateArrivalTimes_atStartActOfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(0, analyser.getTimeWindowViolationAtActivity(route.getStart(), route), 0.01); + assertEquals(0, analyser.getTimeWindowViolationAtActivity(route.getStart(), route), 0.01); } @Test public void lateArrivalTimes_ofAct1ofRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(0., analyser.getTimeWindowViolationAtActivity(route.getActivities().get(0), route), 0.01); + assertEquals(0., analyser.getTimeWindowViolationAtActivity(route.getActivities().get(0), route), 0.01); } @Test public void lateArrivalTimes_ofAct2ofRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(0., analyser.getTimeWindowViolationAtActivity(route.getActivities().get(1), route), 0.01); + assertEquals(0., analyser.getTimeWindowViolationAtActivity(route.getActivities().get(1), route), 0.01); } @Test public void lateArrivalTimes_ofAct3ofRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(0., analyser.getTimeWindowViolationAtActivity(route.getActivities().get(2), route), 0.01); + assertEquals(0., analyser.getTimeWindowViolationAtActivity(route.getActivities().get(2), route), 0.01); } @Test public void lateArrivalTimes_ofAct4ofRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(0., analyser.getTimeWindowViolationAtActivity(route.getActivities().get(3), route), 0.01); + assertEquals(0., analyser.getTimeWindowViolationAtActivity(route.getActivities().get(3), route), 0.01); } @Test public void lateArrivalTimes_ofEndActOfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(0., analyser.getTimeWindowViolationAtActivity(route.getEnd(), route), 0.01); + assertEquals(0., analyser.getTimeWindowViolationAtActivity(route.getEnd(), route), 0.01); } @Test public void lateArrTimes_OfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(0., analyser.getTimeWindowViolation(route), 0.01); + assertEquals(0., analyser.getTimeWindowViolation(route), 0.01); } @Test public void variableTransportCosts_OfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(84., analyser.getVariableTransportCosts(route), 0.01); + assertEquals(84., analyser.getVariableTransportCosts(route), 0.01); } @Test public void fixedCosts_OfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(100., analyser.getFixedCosts(route), 0.01); + assertEquals(100., analyser.getFixedCosts(route), 0.01); } @Test public void transportCosts_atStartActOfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(0, analyser.getVariableTransportCostsAtActivity(route.getStart(), route), 0.01); + assertEquals(0, analyser.getVariableTransportCostsAtActivity(route.getStart(), route), 0.01); } @Test public void transportCosts_ofAct1ofRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(6. * 2., analyser.getVariableTransportCostsAtActivity(route.getActivities().get(0), route), 0.01); + assertEquals(6. * 2., analyser.getVariableTransportCostsAtActivity(route.getActivities().get(0), route), 0.01); } @Test public void transportCosts_ofAct2ofRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(12. * 2., analyser.getVariableTransportCostsAtActivity(route.getActivities().get(1), route), 0.01); + assertEquals(12. * 2., analyser.getVariableTransportCostsAtActivity(route.getActivities().get(1), route), 0.01); } @Test public void transportCosts_ofAct3ofRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(16. * 2., analyser.getVariableTransportCostsAtActivity(route.getActivities().get(2), route), 0.01); + assertEquals(16. * 2., analyser.getVariableTransportCostsAtActivity(route.getActivities().get(2), route), 0.01); } @Test public void transportCosts_ofAct4ofRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(27. * 2., analyser.getVariableTransportCostsAtActivity(route.getActivities().get(3), route), 0.01); + assertEquals(27. * 2., analyser.getVariableTransportCostsAtActivity(route.getActivities().get(3), route), 0.01); } @Test public void transportCosts_ofEndActOfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); - Assert.assertEquals(42. * 2., analyser.getVariableTransportCostsAtActivity(route.getEnd(), route), 0.01); + assertEquals(42. * 2., analyser.getVariableTransportCostsAtActivity(route.getEnd(), route), 0.01); } @Test @@ -879,7 +875,7 @@ public void capacityViolationAtBeginning_shouldWork() { VehicleRoute route = solution.getRoutes().iterator().next(); Capacity atBeginning = analyser.getCapacityViolationAtBeginning(route); for (int i = 0; i < atBeginning.getNuOfDimensions(); i++) { - assertTrue(atBeginning.get(i) == 0); + assertEquals(0, atBeginning.get(i)); } } @@ -889,7 +885,7 @@ public void capacityViolationAtEnd_shouldWork() { VehicleRoute route = solution.getRoutes().iterator().next(); Capacity atEnd = analyser.getCapacityViolationAtEnd(route); for (int i = 0; i < atEnd.getNuOfDimensions(); i++) { - assertTrue(atEnd.get(i) == 0); + assertEquals(0, atEnd.get(i)); } } @@ -920,7 +916,7 @@ public void capacityViolationAfterStart_shouldWork() { TourActivity act = route.getStart(); Capacity cap = analyser.getCapacityViolationAfterActivity(act, route); for (int i = 0; i < cap.getNuOfDimensions(); i++) { - assertTrue(cap.get(i) == 0); + assertEquals(0, cap.get(i)); } } @@ -1043,7 +1039,7 @@ public void capacityViolationAfterAct1_shouldWork() { TourActivity act = route.getActivities().get(0); Capacity cap = analyser.getCapacityViolationAfterActivity(act, route); for (int i = 0; i < cap.getNuOfDimensions(); i++) { - assertTrue(cap.get(i) == 0); + assertEquals(0, cap.get(i)); } } @@ -1054,7 +1050,7 @@ public void capacityViolationAfterAct2_shouldWork() { TourActivity act = route.getActivities().get(1); Capacity cap = analyser.getCapacityViolationAfterActivity(act, route); for (int i = 0; i < cap.getNuOfDimensions(); i++) { - assertTrue(cap.get(i) == 0); + assertEquals(0, cap.get(i)); } } @@ -1065,7 +1061,7 @@ public void capacityViolationAfterAct3_shouldWork() { TourActivity act = route.getActivities().get(2); Capacity cap = analyser.getCapacityViolationAfterActivity(act, route); for (int i = 0; i < cap.getNuOfDimensions(); i++) { - assertTrue(cap.get(i) == 0); + assertEquals(0, cap.get(i)); } } @@ -1076,7 +1072,7 @@ public void capacityViolationAfterAct4_shouldWork() { TourActivity act = route.getActivities().get(3); Capacity cap = analyser.getCapacityViolationAfterActivity(act, route); for (int i = 0; i < cap.getNuOfDimensions(); i++) { - assertTrue(cap.get(i) == 0); + assertEquals(0, cap.get(i)); } } @@ -1087,7 +1083,7 @@ public void capacityViolationAfterEnd_shouldWork() { TourActivity act = route.getEnd(); Capacity cap = analyser.getCapacityViolationAfterActivity(act, route); for (int i = 0; i < cap.getNuOfDimensions(); i++) { - assertTrue(cap.get(i) == 0); + assertEquals(0, cap.get(i)); } } @@ -1618,19 +1614,18 @@ public void skillViolationOnSolution_shouldWorkWhenNotViolated() { @Test public void shouldWorkWithRouteWithoutActivities() { - Vehicle vehicle = VehicleImpl.Builder.newInstance("vehicle").setStartLocation(Location.newInstance(0, 0)) - .setEndLocation(Location.newInstance(10, 0)).build(); - VehicleRoute vehicleRoute = VehicleRoute.Builder.newInstance(vehicle).build(); - - VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle).build(); - VehicleRoutingProblemSolution solution = new VehicleRoutingProblemSolution(Arrays.asList(vehicleRoute), 0); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() { - @Override - public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) { - return 100; - } - }); - + try { + Vehicle vehicle = VehicleImpl.Builder.newInstance("vehicle").setStartLocation(Location.newInstance(0, 0)) + .setEndLocation(Location.newInstance(10, 0)).build(); + VehicleRoute vehicleRoute = VehicleRoute.Builder.newInstance(vehicle).build(); + + VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle).build(); + VehicleRoutingProblemSolution solution = new VehicleRoutingProblemSolution(Collections.singletonList(vehicleRoute), 0); + new SolutionAnalyser(vrp, solution, (from, to, departureTime, vehicle1) -> 100); + assertTrue(true); + } catch (Exception e) { + fail(); + } } } From 287c5ce131cda99e7f32ded2d884585ff02d734e Mon Sep 17 00:00:00 2001 From: oblonski Date: Fri, 14 Feb 2025 20:51:01 +0100 Subject: [PATCH 158/191] Improve variable names --- .../jsprit/core/algorithm/SearchStrategyManager.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/SearchStrategyManager.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/SearchStrategyManager.java index 9de37e9b5..a19305989 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/SearchStrategyManager.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/SearchStrategyManager.java @@ -103,15 +103,15 @@ private void updateSumWeights() { public SearchStrategy getRandomStrategy() { if (random == null) throw new IllegalStateException("randomizer is null. make sure you set random object correctly"); - double randomFig = random.nextDouble(); - double sumProbabilities = 0.0; + double randomValue = random.nextDouble(); + double cumulativeProbability = 0.0; for (int i = 0; i < weights.size(); i++) { - sumProbabilities += weights.get(i) / sumWeights; - if (randomFig < sumProbabilities) { + cumulativeProbability += weights.get(i) / sumWeights; + if (randomValue < cumulativeProbability) { return strategies.get(i); } } - throw new IllegalStateException("no search-strategy found"); + return strategies.get(strategies.size() - 1); } public void addSearchStrategyListener(SearchStrategyListener strategyListener) { From 4812e110e50c2827b6968be1a0ef9c14a79c0288 Mon Sep 17 00:00:00 2001 From: oblonski Date: Sat, 15 Feb 2025 13:56:49 +0100 Subject: [PATCH 159/191] Add Job.Type enum to replace instanceof checks - Introduces Type enum (SHIPMENT, PICKUP_SERVICE, DELIVERY_SERVICE, BREAK_SERVICE) - Replaces instanceof type checks with semantic getType() method - Maintains backward compatibility with default implementation - Improves code readability and type safety - Makes adding new job types more straightforward Part of ongoing effort to reduce type checking and improve domain model clarity. --- .../toolbox/AlgorithmEventsRecorder.java | 11 +- .../algorithm/recreate/BreakScheduling.java | 2 +- .../core/algorithm/recreate/Inserter.java | 2 +- .../JobInsertionCostsCalculatorBuilder.java | 2 +- .../algorithm/recreate/RegretInsertion.java | 10 +- .../recreate/RegretInsertionConcurrent.java | 10 +- .../RegretInsertionConcurrentFast.java | 8 +- .../core/algorithm/state/UpdateLoads.java | 11 +- .../core/analysis/SolutionAnalyser.java | 7 +- .../core/problem/VehicleRoutingProblem.java | 9 +- .../MaxTimeInVehicleConstraint.java | 3 +- .../ServiceLoadRouteLevelConstraint.java | 7 +- .../jsprit/core/problem/job/Break.java | 3 + .../jsprit/core/problem/job/Delivery.java | 4 + .../jsprit/core/problem/job/Job.java | 38 ++ .../jsprit/core/problem/job/Pickup.java | 3 + .../jsprit/core/problem/job/Service.java | 7 +- .../jsprit/core/problem/job/Shipment.java | 4 + .../problem/solution/route/VehicleRoute.java | 10 +- .../activity/DefaultTourActivityFactory.java | 25 +- .../core/reporting/SolutionPrinter.java | 9 +- .../core/algorithm/recreate/TestInserter.java | 30 +- .../problem/VehicleRoutingProblemTest.java | 39 +- .../constraint/LoadConstraintTest.java | 387 +++++++++--------- .../ServiceLoadRouteLevelConstraintTest.java | 73 ++-- .../solution/route/TestVehicleRoute.java | 8 +- .../route/VehicleRouteBuilderTest.java | 190 +++++---- 27 files changed, 502 insertions(+), 410 deletions(-) diff --git a/jsprit-analysis/src/main/java/com/graphhopper/jsprit/analysis/toolbox/AlgorithmEventsRecorder.java b/jsprit-analysis/src/main/java/com/graphhopper/jsprit/analysis/toolbox/AlgorithmEventsRecorder.java index 6ca5e9a83..9d82c26f1 100644 --- a/jsprit-analysis/src/main/java/com/graphhopper/jsprit/analysis/toolbox/AlgorithmEventsRecorder.java +++ b/jsprit-analysis/src/main/java/com/graphhopper/jsprit/analysis/toolbox/AlgorithmEventsRecorder.java @@ -27,7 +27,6 @@ import com.graphhopper.jsprit.core.algorithm.ruin.listener.RuinListener; import com.graphhopper.jsprit.core.problem.AbstractActivity; import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.job.Delivery; import com.graphhopper.jsprit.core.problem.job.Job; import com.graphhopper.jsprit.core.problem.job.Service; import com.graphhopper.jsprit.core.problem.job.Shipment; @@ -145,7 +144,7 @@ private String getNodeId(TourActivity act) { Job job = ((TourActivity.JobActivity) act).getJob(); if (job instanceof Service) { nodeId = job.getId(); - } else if (job instanceof Shipment) { + } else if (job.getJobType().isShipment()) { if (act.getName().equals("pickupShipment")) nodeId = getFromNodeId((Shipment) job); else nodeId = getToNodeId((Shipment) job); } @@ -166,7 +165,7 @@ public void ruinEnds(Collection routes, Collection unassigned public void removed(Job job, VehicleRoute fromRoute) { if (!record()) return; if (job instanceof Service) removeService(job, fromRoute); - else if (job instanceof Shipment) removeShipment(job, fromRoute); + else if (job.getJobType().isShipment()) removeShipment(job, fromRoute); } private void removeShipment(Job job, VehicleRoute fromRoute) { @@ -309,7 +308,7 @@ private void addJob(Job job) { Service service = (Service) job; addNode(service.getId(), service.getLocation().getCoordinate()); markService(service); - } else if (job instanceof Shipment) { + } else if (job.getJobType().isShipment()) { Shipment shipment = (Shipment) job; String fromNodeId = getFromNodeId(shipment); addNode(fromNodeId, shipment.getPickupLocation().getCoordinate()); @@ -329,7 +328,7 @@ private void markShipment(Shipment shipment) { } private void markService(Service service) { - if (service instanceof Delivery) { + if (service.getJobType().isDelivery()) { markDelivery(service.getId()); } else { markPickup(service.getId()); @@ -407,7 +406,7 @@ public void informBeforeJobInsertion(Job job, InsertionData data, VehicleRoute r private void insertJob(Job job, InsertionData data, VehicleRoute route) { if (job instanceof Service) insertService(job, data, route); - else if (job instanceof Shipment) insertShipment(job, data, route); + else if (job.getJobType().isShipment()) insertShipment(job, data, route); } private void insertShipment(Job job, InsertionData data, VehicleRoute route) { diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/BreakScheduling.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/BreakScheduling.java index accd3594c..c283cdf31 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/BreakScheduling.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/BreakScheduling.java @@ -89,7 +89,7 @@ public void ruinEnds(Collection routes, Collection unassigned } List breaks = new ArrayList<>(); for (Job j : unassignedJobs) { - if (j instanceof Break) { + if (j.getJobType().isBreak()) { breaks.add((Break) j); } } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/Inserter.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/Inserter.java index 2f70c46e1..1e79be892 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/Inserter.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/Inserter.java @@ -103,7 +103,7 @@ public ShipmentInsertionHandler(VehicleRoutingProblem vehicleRoutingProblem) { @Override public void handleJobInsertion(Job job, InsertionData iData, VehicleRoute route) { - if (job instanceof Shipment) { + if (job.getJobType().isShipment()) { List acts = vehicleRoutingProblem.copyAndGetActivities(job); TourActivity pickupShipment = acts.get(0); TourActivity deliverShipment = acts.get(1); diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/JobInsertionCostsCalculatorBuilder.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/JobInsertionCostsCalculatorBuilder.java index faf760c04..6fbac2205 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/JobInsertionCostsCalculatorBuilder.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/JobInsertionCostsCalculatorBuilder.java @@ -260,7 +260,7 @@ public JobInsertionCostsCalculator build() { private void checkServicesOnly() { for (Job j : vrp.getJobs().values()) { - if (j instanceof Shipment) { + if (j.getJobType().isShipment()) { throw new UnsupportedOperationException("currently the 'insert-on-route-level' option is only available for services (i.e. service, pickup, delivery), \n" + "if you want to deal with shipments switch to option 'local-level' by either setting bestInsertionBuilder.setLocalLevel() or \n" + "by omitting the xml-tag 'route' when defining your insertionStrategy in algo-config.xml file"); diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertion.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertion.java index d3b7353cd..45259efdf 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertion.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertion.java @@ -19,7 +19,6 @@ package com.graphhopper.jsprit.core.algorithm.recreate; import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.job.Break; import com.graphhopper.jsprit.core.problem.job.Job; import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; import org.slf4j.Logger; @@ -91,12 +90,11 @@ public Collection insertUnassignedJobs(Collection routes, Col Iterator jobIterator = unassignedJobs.iterator(); while (jobIterator.hasNext()){ Job job = jobIterator.next(); - if(job instanceof Break){ - VehicleRoute route = findRoute(routes,job); - if(route == null){ + if (job.getJobType().isBreak()) { + VehicleRoute route = findRoute(routes, job); + if (route == null) { badJobs.add(job); - } - else { + } else { InsertionData iData = insertionCostsCalculator.getInsertionData(route, job, NO_NEW_VEHICLE_YET, NO_NEW_DEPARTURE_TIME_YET, NO_NEW_DRIVER_YET, Double.MAX_VALUE); if (iData instanceof InsertionData.NoInsertionFound) { badJobs.add(job); diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertionConcurrent.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertionConcurrent.java index fa7bfaddf..6788cc4a5 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertionConcurrent.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertionConcurrent.java @@ -19,7 +19,6 @@ package com.graphhopper.jsprit.core.algorithm.recreate; import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.job.Break; import com.graphhopper.jsprit.core.problem.job.Job; import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; import org.slf4j.Logger; @@ -99,12 +98,11 @@ public Collection insertUnassignedJobs(Collection routes, Col Iterator jobIterator = unassignedJobs.iterator(); while (jobIterator.hasNext()){ Job job = jobIterator.next(); - if(job instanceof Break){ - VehicleRoute route = findRoute(routes,job); - if(route == null){ + if (job.getJobType().isBreak()) { + VehicleRoute route = findRoute(routes, job); + if (route == null) { badJobs.add(job); - } - else { + } else { InsertionData iData = insertionCostsCalculator.getInsertionData(route, job, NO_NEW_VEHICLE_YET, NO_NEW_DEPARTURE_TIME_YET, NO_NEW_DRIVER_YET, Double.MAX_VALUE); if (iData instanceof InsertionData.NoInsertionFound) { badJobs.add(job); diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertionConcurrentFast.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertionConcurrentFast.java index f237626cf..41d643df6 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertionConcurrentFast.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertionConcurrentFast.java @@ -20,7 +20,6 @@ import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; import com.graphhopper.jsprit.core.problem.constraint.DependencyType; -import com.graphhopper.jsprit.core.problem.job.Break; import com.graphhopper.jsprit.core.problem.job.Job; import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; import com.graphhopper.jsprit.core.problem.vehicle.VehicleFleetManager; @@ -123,12 +122,11 @@ public Collection insertUnassignedJobs(Collection routes, Col Iterator jobIterator = unassignedJobs.iterator(); while (jobIterator.hasNext()){ Job job = jobIterator.next(); - if(job instanceof Break){ + if (job.getJobType().isBreak()) { VehicleRoute route = InsertionDataUpdater.findRoute(routes, job); - if(route == null){ + if (route == null) { badJobs.add(job); - } - else { + } else { InsertionData iData = insertionCostsCalculator.getInsertionData(route, job, NO_NEW_VEHICLE_YET, NO_NEW_DEPARTURE_TIME_YET, NO_NEW_DRIVER_YET, Double.MAX_VALUE); if (iData instanceof InsertionData.NoInsertionFound) { badJobs.add(job); diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/UpdateLoads.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/UpdateLoads.java index 502191b23..0d3465126 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/UpdateLoads.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/UpdateLoads.java @@ -21,10 +21,7 @@ import com.graphhopper.jsprit.core.algorithm.recreate.listener.InsertionStartsListener; import com.graphhopper.jsprit.core.algorithm.recreate.listener.JobInsertedListener; import com.graphhopper.jsprit.core.problem.Capacity; -import com.graphhopper.jsprit.core.problem.job.Delivery; import com.graphhopper.jsprit.core.problem.job.Job; -import com.graphhopper.jsprit.core.problem.job.Pickup; -import com.graphhopper.jsprit.core.problem.job.Service; import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; import com.graphhopper.jsprit.core.problem.solution.route.activity.ActivityVisitor; import com.graphhopper.jsprit.core.problem.solution.route.activity.TourActivity; @@ -80,9 +77,9 @@ void insertionStarts(VehicleRoute route) { Capacity loadAtDepot = Capacity.Builder.newInstance().build(); Capacity loadAtEnd = Capacity.Builder.newInstance().build(); for (Job j : route.getTourActivities().getJobs()) { - if (j instanceof Delivery) { + if (j.getJobType().isDelivery()) { loadAtDepot = Capacity.addup(loadAtDepot, j.getSize()); - } else if (j instanceof Pickup || j instanceof Service) { + } else if (j.getJobType().isPickup() || j.getJobType().isService()) { loadAtEnd = Capacity.addup(loadAtEnd, j.getSize()); } } @@ -99,11 +96,11 @@ public void informInsertionStarts(Collection vehicleRoutes, Collec @Override public void informJobInserted(Job job2insert, VehicleRoute inRoute, InsertionData insertionData) { - if (job2insert instanceof Delivery) { + if (job2insert.getJobType().isDelivery()) { Capacity loadAtDepot = stateManager.getRouteState(inRoute, InternalStates.LOAD_AT_BEGINNING, Capacity.class); if (loadAtDepot == null) loadAtDepot = defaultValue; stateManager.putTypedInternalRouteState(inRoute, InternalStates.LOAD_AT_BEGINNING, Capacity.addup(loadAtDepot, job2insert.getSize())); - } else if (job2insert instanceof Pickup || job2insert instanceof Service) { + } else if (job2insert.getJobType().isPickup() || job2insert.getJobType().isService()) { Capacity loadAtEnd = stateManager.getRouteState(inRoute, InternalStates.LOAD_AT_END, Capacity.class); if (loadAtEnd == null) loadAtEnd = defaultValue; stateManager.putTypedInternalRouteState(inRoute, InternalStates.LOAD_AT_END, Capacity.addup(loadAtEnd, job2insert.getSize())); diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/analysis/SolutionAnalyser.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/analysis/SolutionAnalyser.java index 4cdf96961..7d08426f7 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/analysis/SolutionAnalyser.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/analysis/SolutionAnalyser.java @@ -21,10 +21,7 @@ import com.graphhopper.jsprit.core.problem.Capacity; import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; import com.graphhopper.jsprit.core.problem.cost.TransportDistance; -import com.graphhopper.jsprit.core.problem.job.Delivery; import com.graphhopper.jsprit.core.problem.job.Job; -import com.graphhopper.jsprit.core.problem.job.Pickup; -import com.graphhopper.jsprit.core.problem.job.Service; import com.graphhopper.jsprit.core.problem.solution.SolutionCostCalculator; import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; @@ -280,9 +277,9 @@ private void calculateLoadAndActivityStates() { Capacity loadAtDepot = Capacity.Builder.newInstance().build(); Capacity loadAtEnd = Capacity.Builder.newInstance().build(); for (Job j : route.getTourActivities().getJobs()) { - if (j instanceof Delivery) { + if (j.getJobType().isDelivery()) { loadAtDepot = Capacity.addup(loadAtDepot, j.getSize()); - } else if (j instanceof Pickup || j instanceof Service) { + } else if (j.getJobType().isPickup() || j.getJobType().isService()) { loadAtEnd = Capacity.addup(loadAtEnd, j.getSize()); } } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java index f53696008..8d6342564 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java @@ -100,12 +100,11 @@ public static Builder newInstance() { @Override public List createActivities(Job job) { List acts = new ArrayList<>(); - if( job instanceof Break){ + if (job.getJobType().isBreak()) { acts.add(BreakActivity.newInstance((Break) job)); - } - else if (job instanceof Service) { + } else if (job instanceof Service) { acts.add(serviceActivityFactory.createActivity((Service) job)); - } else if (job instanceof Shipment) { + } else if (job.getJobType().isShipment()) { acts.add(shipmentActivityFactory.createPickup((Shipment) job)); acts.add(shipmentActivityFactory.createDelivery((Shipment) job)); } @@ -218,7 +217,7 @@ public Builder addJob(Job job) { public Builder addJob(AbstractJob job) { if (tentativeJobs.containsKey(job.getId())) throw new IllegalArgumentException("The vehicle routing problem already contains a service or shipment with id " + job.getId() + ". Please make sure you use unique ids for all services and shipments."); - if (!(job instanceof Service || job instanceof Shipment)) + if (!(job instanceof Service || job.getJobType().isShipment())) throw new IllegalArgumentException("Job must be either a service or a shipment."); tentativeJobs.put(job.getId(), job); addLocationToTentativeLocations(job); diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/constraint/MaxTimeInVehicleConstraint.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/constraint/MaxTimeInVehicleConstraint.java index 35945791e..683efa5a6 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/constraint/MaxTimeInVehicleConstraint.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/constraint/MaxTimeInVehicleConstraint.java @@ -24,7 +24,6 @@ import com.graphhopper.jsprit.core.problem.cost.TransportTime; import com.graphhopper.jsprit.core.problem.cost.VehicleRoutingActivityCosts; import com.graphhopper.jsprit.core.problem.job.Job; -import com.graphhopper.jsprit.core.problem.job.Shipment; import com.graphhopper.jsprit.core.problem.misc.JobInsertionContext; import com.graphhopper.jsprit.core.problem.solution.route.activity.DeliveryActivity; import com.graphhopper.jsprit.core.problem.solution.route.activity.End; @@ -121,7 +120,7 @@ else if(newActIsPickup){ for (Job openJob : openJobsAtNext.keySet()) { double slack = openJobsAtNext.get(openJob); double additionalTimeOfNewJob = additionalTimeOfNewAct; - if (openJob instanceof Shipment) { + if (openJob.getJobType().isShipment()) { Map openJobsAtNextOfPickup = Collections.emptyMap(); TourActivity nextAfterPickup; if (iFacts.getAssociatedActivities().size() == 1 && !iFacts.getRoute().isEmpty()) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/constraint/ServiceLoadRouteLevelConstraint.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/constraint/ServiceLoadRouteLevelConstraint.java index bfcfd9947..d3cfe4bda 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/constraint/ServiceLoadRouteLevelConstraint.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/constraint/ServiceLoadRouteLevelConstraint.java @@ -19,9 +19,6 @@ import com.graphhopper.jsprit.core.algorithm.state.InternalStates; import com.graphhopper.jsprit.core.problem.Capacity; -import com.graphhopper.jsprit.core.problem.job.Delivery; -import com.graphhopper.jsprit.core.problem.job.Pickup; -import com.graphhopper.jsprit.core.problem.job.Service; import com.graphhopper.jsprit.core.problem.misc.JobInsertionContext; import com.graphhopper.jsprit.core.problem.solution.route.state.RouteAndActivityStateGetter; @@ -53,13 +50,13 @@ public boolean fulfilled(JobInsertionContext insertionContext) { if (!maxLoadAtRoute.isLessOrEqual(capacityDimensions)) { return false; } - if (insertionContext.getJob() instanceof Delivery) { + if (insertionContext.getJob().getJobType().isDelivery()) { Capacity loadAtDepot = stateManager.getRouteState(insertionContext.getRoute(), InternalStates.LOAD_AT_BEGINNING, Capacity.class); if (loadAtDepot == null) loadAtDepot = defaultValue; if (!Capacity.addup(loadAtDepot, insertionContext.getJob().getSize()).isLessOrEqual(capacityDimensions)) { return false; } - } else if (insertionContext.getJob() instanceof Pickup || insertionContext.getJob() instanceof Service) { + } else if (insertionContext.getJob().getJobType().isPickup() || insertionContext.getJob().getJobType().isService()) { Capacity loadAtEnd = stateManager.getRouteState(insertionContext.getRoute(), InternalStates.LOAD_AT_END, Capacity.class); if (loadAtEnd == null) loadAtEnd = defaultValue; if (!Capacity.addup(loadAtEnd, insertionContext.getJob().getSize()).isLessOrEqual(capacityDimensions)) { diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Break.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Break.java index d81e7d4f2..ba81fd3af 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Break.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Break.java @@ -78,4 +78,7 @@ public boolean hasVariableLocation() { return variableLocation; } + public Type getJobType() { + return Type.BREAK_SERVICE; + } } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Delivery.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Delivery.java index 98e708bf9..2f3b62e78 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Delivery.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Delivery.java @@ -70,4 +70,8 @@ public Delivery build() { } + public Type getJobType() { + return Type.DELIVERY_SERVICE; + } + } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Job.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Job.java index 10538b072..4f95e2b11 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Job.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Job.java @@ -32,6 +32,44 @@ */ public interface Job extends HasId, HasIndex { + enum Type { + SHIPMENT, + SERVICE, + PICKUP_SERVICE, + DELIVERY_SERVICE, + BREAK_SERVICE; + + public boolean isShipment() { + return this == SHIPMENT; + } + + public boolean isService() { + return !isShipment(); + } + + public boolean isPickup() { + return this == PICKUP_SERVICE; + } + + public boolean isDelivery() { + return this == DELIVERY_SERVICE; + } + + public boolean isBreak() { + return this == BREAK_SERVICE; + } + } + + // Add default method for type to maintain backward compatibility + default Type getJobType() { + // Default implementation based on class type + if (this instanceof Shipment) return Type.SHIPMENT; + if (this instanceof Pickup) return Type.PICKUP_SERVICE; + if (this instanceof Delivery) return Type.DELIVERY_SERVICE; + if (this instanceof Break) return Type.BREAK_SERVICE; + if (this instanceof Service) return Type.SERVICE; + throw new IllegalStateException("Unknown job type: " + this.getClass()); + } /** * Returns the unique identifier (id) of a job. diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Pickup.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Pickup.java index bba2b437d..45789d904 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Pickup.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Pickup.java @@ -71,4 +71,7 @@ public Pickup build() { super(builder); } + public Type getJobType() { + return Type.PICKUP_SERVICE; + } } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Service.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Service.java index 0b24881c1..a43aac60c 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Service.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Service.java @@ -352,6 +352,10 @@ public String getType() { return type; } + public Type getJobType() { + return Type.SERVICE; + } + /** * Returns a string with the service's attributes. *

@@ -360,7 +364,7 @@ public String getType() { @Override public String toString() { return "[id=" + id + "][name=" + name + "][type=" + type + "][location=" + location - + "][capacity=" + size + "][serviceTime=" + serviceTime + "][timeWindows=" + + "][capacity=" + size + "][serviceTime=" + serviceTime + "][timeWindows=" + timeWindows + "]"; } @@ -429,4 +433,5 @@ public List getActivities() { return activities; } + } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Shipment.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Shipment.java index be95482bd..96dcafbdf 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Shipment.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Shipment.java @@ -537,4 +537,8 @@ public double getMaxTimeInVehicle() { public List getActivities() { return activities; } + + public Type getJobType() { + return Type.SHIPMENT; + } } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/VehicleRoute.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/VehicleRoute.java index ee14a75f5..9743d9479 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/VehicleRoute.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/VehicleRoute.java @@ -120,19 +120,19 @@ public static Builder newInstance(Vehicle vehicle) { private final Set openShipments = new HashSet(); private JobActivityFactory jobActivityFactory = new JobActivityFactory() { - + private final TourShipmentActivityFactory shipmentActivityFactory = new DefaultShipmentActivityFactory(); - + private final TourActivityFactory serviceActivityFactory = new DefaultTourActivityFactory(); @Override public List createActivities(Job job) { List acts = new ArrayList(); - if (job instanceof Break) { + if (job.getJobType().isBreak()) { acts.add(BreakActivity.newInstance((Break) job)); - } else if (job instanceof Service) { + } else if (job.getJobType().isService()) { acts.add(serviceActivityFactory.createActivity((Service) job)); - } else if (job instanceof Shipment) { + } else if (job.getJobType().isShipment()) { acts.add(shipmentActivityFactory.createPickup((Shipment) job)); acts.add(shipmentActivityFactory.createDelivery((Shipment) job)); } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/DefaultTourActivityFactory.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/DefaultTourActivityFactory.java index 19ac2fb2b..143c87914 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/DefaultTourActivityFactory.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/DefaultTourActivityFactory.java @@ -23,20 +23,23 @@ import com.graphhopper.jsprit.core.problem.job.Service; public class DefaultTourActivityFactory implements TourActivityFactory { - @Override public AbstractActivity createActivity(Service service) { - AbstractActivity act; - if (service instanceof Pickup) { - act = new PickupService((Pickup) service); - } else if (service instanceof Delivery) { - act = new DeliverService((Delivery) service); - } else { - if (service.getLocation() == null) { - act = new ActWithoutStaticLocation(service); - } else act = new PickupService(service); + if (service.getJobType().isPickup()) { + return new PickupService((Pickup) service); + } + + if (service.getJobType().isDelivery()) { + return new DeliverService((Delivery) service); } - return act; + + return createDefaultServiceActivity(service); + } + + private AbstractActivity createDefaultServiceActivity(Service service) { + return service.getLocation() == null + ? new ActWithoutStaticLocation(service) + : new PickupService(service); } } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/reporting/SolutionPrinter.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/reporting/SolutionPrinter.java index 35878ade9..fc92a9385 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/reporting/SolutionPrinter.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/reporting/SolutionPrinter.java @@ -18,10 +18,7 @@ package com.graphhopper.jsprit.core.reporting; import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; -import com.graphhopper.jsprit.core.problem.job.Break; import com.graphhopper.jsprit.core.problem.job.Job; -import com.graphhopper.jsprit.core.problem.job.Service; -import com.graphhopper.jsprit.core.problem.job.Shipment; import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; import com.graphhopper.jsprit.core.problem.solution.route.activity.TourActivity; @@ -207,13 +204,13 @@ private static Jobs getNuOfJobs(VehicleRoutingProblem problem) { int nServices = 0; int nBreaks = 0; for (Job j : problem.getJobs().values()) { - if (j instanceof Shipment) { + if (j.getJobType().isShipment()) { nShipments++; } - if (j instanceof Service) { + if (j.getJobType().isService()) { nServices++; } - if (j instanceof Break) { + if (j.getJobType().isBreak()) { nBreaks++; } } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/recreate/TestInserter.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/recreate/TestInserter.java index f2058161e..edbccd5c0 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/recreate/TestInserter.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/recreate/TestInserter.java @@ -24,6 +24,7 @@ import com.graphhopper.jsprit.core.problem.Location; import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; import com.graphhopper.jsprit.core.problem.driver.Driver; +import com.graphhopper.jsprit.core.problem.job.Job; import com.graphhopper.jsprit.core.problem.job.Service; import com.graphhopper.jsprit.core.problem.job.Shipment; import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; @@ -45,10 +46,21 @@ public class TestInserter { + private Service createMock() { + Service s = mock(Service.class); + when(s.getJobType()).thenReturn(Job.Type.SERVICE); + return s; + } + + private Shipment createShipmentMock() { + Shipment s = mock(Shipment.class); + when(s.getJobType()).thenReturn(Job.Type.SHIPMENT); + return s; + } @Test public void whenInsertingServiceAndRouteIsClosed_itInsertsCorrectly() { - Service service = mock(Service.class); + Service service = createMock(); Vehicle vehicle = mock(Vehicle.class); when(vehicle.getStartLocation()).thenReturn(loc("vehLoc")); when(vehicle.getEndLocation()).thenReturn(loc("vehLoc")); @@ -59,7 +71,7 @@ public void whenInsertingServiceAndRouteIsClosed_itInsertsCorrectly() { VehicleRoute route = VehicleRoute.Builder.newInstance(vehicle, mock(Driver.class)).addService(service).build(); //start - pick(shipment) - del(shipment) - end - Service serviceToInsert = mock(Service.class); + Service serviceToInsert = createMock(); when(serviceToInsert.getLocation()).thenReturn(loc("delLoc")); InsertionData iData = mock(InsertionData.class); @@ -85,7 +97,7 @@ private Location loc(String vehLoc) { @Test public void whenInsertingServiceAndRouteIsOpen_itInsertsCorrectlyAndSwitchesEndLocation() { - Service service = mock(Service.class); + Service service = createMock(); Vehicle vehicle = mock(Vehicle.class); when(vehicle.getStartLocation()).thenReturn(Location.newInstance("vehLoc")); when(vehicle.getEndLocation()).thenReturn(Location.newInstance("vehLoc")); @@ -95,7 +107,7 @@ public void whenInsertingServiceAndRouteIsOpen_itInsertsCorrectlyAndSwitchesEndL when(service.getTimeWindow()).thenReturn(mock(TimeWindow.class)); VehicleRoute route = VehicleRoute.Builder.newInstance(vehicle, mock(Driver.class)).addService(service).build(); - Service serviceToInsert = mock(Service.class); + Service serviceToInsert = createMock(); when(serviceToInsert.getLocation()).thenReturn(Location.Builder.newInstance().setId("delLoc").build()); InsertionData iData = mock(InsertionData.class); @@ -122,7 +134,7 @@ private List getTourActivities(Service serviceToInsert) { @Test public void whenInsertingShipmentAndRouteIsClosed_itInsertsCorrectly() { - Shipment shipment = mock(Shipment.class); + Shipment shipment = createShipmentMock(); Capacity capacity = Capacity.Builder.newInstance().build(); when(shipment.getSize()).thenReturn(capacity); Vehicle vehicle = mock(Vehicle.class); @@ -163,7 +175,7 @@ private List getTourActivities(Shipment shipmentToInsert) { @Test public void whenInsertingShipmentAndRouteIsOpen_itInsertsCorrectlyAndSwitchesEndLocation() { - Shipment shipment = mock(Shipment.class); + Shipment shipment = createShipmentMock(); Capacity capacity = Capacity.Builder.newInstance().build(); when(shipment.getSize()).thenReturn(capacity); Vehicle vehicle = mock(Vehicle.class); @@ -194,7 +206,7 @@ public void whenInsertingShipmentAndRouteIsOpen_itInsertsCorrectlyAndSwitchesEnd @Test public void whenSwitchingVehicleAndRouteIsClosed_newStartAndEndShouldBeTheLocationOfNewVehicle() { - Shipment shipment = mock(Shipment.class); + Shipment shipment = createShipmentMock(); Capacity capacity = Capacity.Builder.newInstance().build(); when(shipment.getSize()).thenReturn(capacity); Vehicle vehicle = VehicleImpl.Builder.newInstance("vehId").setStartLocation(Location.newInstance("vehLoc")).setType(mock(VehicleType.class)).build(); @@ -222,7 +234,7 @@ public void whenSwitchingVehicleAndRouteIsClosed_newStartAndEndShouldBeTheLocati @Test public void whenSwitchingVehicleAndRouteIsOpen_endLocationShouldBeTheLocationOfTheLastActivity() { - Shipment shipment = mock(Shipment.class); + Shipment shipment = createShipmentMock(); Capacity capacity = Capacity.Builder.newInstance().build(); when(shipment.getSize()).thenReturn(capacity); Vehicle vehicle = VehicleImpl.Builder.newInstance("vehId").setReturnToDepot(false).setStartLocation(Location.newInstance("vehLoc")).setType(mock(VehicleType.class)).build(); @@ -250,7 +262,7 @@ public void whenSwitchingVehicleAndRouteIsOpen_endLocationShouldBeTheLocationOfT @Test public void whenInsertingShipmentAtBeginningAndSwitchingVehicleAndRouteIsOpen_endLocationShouldBeTheLocationOfTheLastActivity() { - Shipment shipment = mock(Shipment.class); + Shipment shipment = createShipmentMock(); Capacity capacity = Capacity.Builder.newInstance().build(); when(shipment.getSize()).thenReturn(capacity); when(shipment.getDeliveryLocation()).thenReturn(Location.Builder.newInstance().setId("oldShipmentDelLoc").build()); diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblemTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblemTest.java index 0f437d32b..32d9183d6 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblemTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblemTest.java @@ -45,6 +45,25 @@ public class VehicleRoutingProblemTest { + Delivery createDeliveryMock() { + Delivery d = mock(Delivery.class); + when(d.getJobType()).thenReturn(Job.Type.DELIVERY_SERVICE); + return d; + } + + Service createServiceMock() { + Service d = mock(Service.class); + when(d.getJobType()).thenReturn(Job.Type.SERVICE); + return d; + } + + Pickup createPickupMock() { + Pickup d = mock(Pickup.class); + when(d.getJobType()).thenReturn(Job.Type.PICKUP_SERVICE); + return d; + } + + @Test public void whenBuildingWithInfiniteFleet_fleetSizeShouldBeInfinite() { VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); @@ -164,10 +183,10 @@ public void whenServicesAreAdded_vrpShouldContainThem() { @Test public void whenPickupsAreAdded_vrpShouldContainThem() { - Pickup s1 = mock(Pickup.class); + Pickup s1 = createPickupMock(); when(s1.getId()).thenReturn("s1"); when(s1.getLocation()).thenReturn(Location.Builder.newInstance().setIndex(1).build()); - Pickup s2 = mock(Pickup.class); + Pickup s2 = createPickupMock(); when(s2.getId()).thenReturn("s2"); when(s2.getLocation()).thenReturn(Location.Builder.newInstance().setIndex(1).build()); @@ -183,10 +202,10 @@ public void whenPickupsAreAdded_vrpShouldContainThem() { @Test public void whenPickupsAreAddedAllAtOnce_vrpShouldContainThem() { - Pickup s1 = mock(Pickup.class); + Pickup s1 = createPickupMock(); when(s1.getId()).thenReturn("s1"); when(s1.getLocation()).thenReturn(Location.Builder.newInstance().setIndex(1).build()); - Pickup s2 = mock(Pickup.class); + Pickup s2 = createPickupMock(); when(s2.getId()).thenReturn("s2"); when(s2.getLocation()).thenReturn(Location.Builder.newInstance().setIndex(1).build()); @@ -202,11 +221,11 @@ public void whenPickupsAreAddedAllAtOnce_vrpShouldContainThem() { @Test public void whenDelivieriesAreAdded_vrpShouldContainThem() { - Delivery s1 = mock(Delivery.class); + Delivery s1 = createDeliveryMock(); when(s1.getId()).thenReturn("s1"); when(s1.getSize()).thenReturn(Capacity.Builder.newInstance().build()); when(s1.getLocation()).thenReturn(Location.Builder.newInstance().setIndex(1).build()); - Delivery s2 = mock(Delivery.class); + Delivery s2 = createDeliveryMock(); when(s2.getId()).thenReturn("s2"); when(s2.getSize()).thenReturn(Capacity.Builder.newInstance().build()); when(s2.getLocation()).thenReturn(Location.Builder.newInstance().setIndex(1).build()); @@ -223,11 +242,11 @@ public void whenDelivieriesAreAdded_vrpShouldContainThem() { @Test public void whenDelivieriesAreAddedAllAtOnce_vrpShouldContainThem() { - Delivery s1 = mock(Delivery.class); + Delivery s1 = createDeliveryMock(); when(s1.getId()).thenReturn("s1"); when(s1.getSize()).thenReturn(Capacity.Builder.newInstance().build()); when(s1.getLocation()).thenReturn(Location.Builder.newInstance().setIndex(1).build()); - Delivery s2 = mock(Delivery.class); + Delivery s2 = createDeliveryMock(); when(s2.getId()).thenReturn("s2"); when(s2.getSize()).thenReturn(Capacity.Builder.newInstance().build()); when(s2.getLocation()).thenReturn(Location.Builder.newInstance().setIndex(1).build()); @@ -244,10 +263,10 @@ public void whenDelivieriesAreAddedAllAtOnce_vrpShouldContainThem() { @Test public void whenServicesAreAddedAllAtOnce_vrpShouldContainThem() { - Service s1 = mock(Service.class); + Service s1 = createServiceMock(); when(s1.getId()).thenReturn("s1"); when(s1.getLocation()).thenReturn(Location.Builder.newInstance().setIndex(1).build()); - Service s2 = mock(Service.class); + Service s2 = createServiceMock(); when(s2.getId()).thenReturn("s2"); when(s2.getLocation()).thenReturn(Location.Builder.newInstance().setIndex(1).build()); diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/LoadConstraintTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/LoadConstraintTest.java index f11db6aec..0773307e9 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/LoadConstraintTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/LoadConstraintTest.java @@ -29,7 +29,6 @@ import org.junit.Before; import org.junit.Test; -import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -116,8 +115,8 @@ public List createActivities(Job job) { */ @Test public void whenServiceRouteAndNewServiceFitsIn_itShouldReturnFulfilled() { - stateManager.informInsertionStarts(Arrays.asList(serviceRoute), Collections.emptyList()); - Service s = mock(Service.class); + stateManager.informInsertionStarts(Collections.singletonList(serviceRoute), Collections.emptyList()); + Service s = createMock(Capacity.Builder.newInstance().addDimension(0, 5).build()); when(s.getSize()).thenReturn(Capacity.Builder.newInstance().addDimension(0, 5).build()); ServiceLoadRouteLevelConstraint loadconstraint = new ServiceLoadRouteLevelConstraint(stateManager); @@ -125,17 +124,47 @@ public void whenServiceRouteAndNewServiceFitsIn_itShouldReturnFulfilled() { assertTrue(loadconstraint.fulfilled(context)); } + private static Service createMock(Capacity size) { + Service mock = mock(Service.class); + when(mock.getJobType()).thenReturn(Job.Type.SERVICE); + when(mock.getSize()).thenReturn(size); + return mock; + } + + private static Delivery createDeliveryMock(Capacity size) { + Delivery mock = mock(Delivery.class); + when(mock.getJobType()).thenReturn(Job.Type.DELIVERY_SERVICE); + when(mock.getSize()).thenReturn(size); + return mock; + } + + private static Pickup createPickupMock(Capacity size) { + Pickup mock = mock(Pickup.class); + when(mock.getJobType()).thenReturn(Job.Type.PICKUP_SERVICE); + when(mock.getSize()).thenReturn(size); + return mock; + } + + private Shipment createShipmentMock(Capacity size) { + Shipment shipment = mock(Shipment.class); + when(shipment.getJobType()).thenReturn(Job.Type.SHIPMENT); + when(shipment.getSize()).thenReturn(size); + return shipment; + } + + @Test public void whenServiceRouteAndNewServiceFitsInBetweenStartAndAct1_itShouldReturnFulfilled() { - stateManager.informInsertionStarts(Arrays.asList(serviceRoute), Collections.emptyList()); - Service s = mock(Service.class); - Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 5).build(); - when(s.getSize()).thenReturn(newSize); + stateManager.informInsertionStarts(Collections.singletonList(serviceRoute), Collections.emptyList()); + + Capacity size = Capacity.Builder.newInstance().addDimension(0, 5).build(); + Service s = createMock(size); + ServiceLoadActivityLevelConstraint loadConstraint = new ServiceLoadActivityLevelConstraint(stateManager); JobInsertionContext context = new JobInsertionContext(serviceRoute, s, serviceRoute.getVehicle(), null, 0.); ServiceActivity newAct = mock(ServiceActivity.class); - when(newAct.getSize()).thenReturn(newSize); + when(newAct.getSize()).thenReturn(size); HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, serviceRoute.getStart(), newAct, serviceRoute.getActivities().get(0), 0.); @@ -144,15 +173,15 @@ public void whenServiceRouteAndNewServiceFitsInBetweenStartAndAct1_itShouldRetur @Test public void whenServiceRouteAndNewServiceFitsInBetweenAc1AndAct2_itShouldReturnFulfilled() { - stateManager.informInsertionStarts(Arrays.asList(serviceRoute), Collections.emptyList()); - Service s = mock(Service.class); - Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 5).build(); - when(s.getSize()).thenReturn(newSize); + stateManager.informInsertionStarts(Collections.singletonList(serviceRoute), Collections.emptyList()); + Capacity size = Capacity.Builder.newInstance().addDimension(0, 5).build(); + Service s = createMock(size); + ServiceLoadActivityLevelConstraint loadConstraint = new ServiceLoadActivityLevelConstraint(stateManager); JobInsertionContext context = new JobInsertionContext(serviceRoute, s, serviceRoute.getVehicle(), null, 0.); ServiceActivity newAct = mock(ServiceActivity.class); - when(newAct.getSize()).thenReturn(newSize); + when(newAct.getSize()).thenReturn(size); HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, serviceRoute.getActivities().get(0), newAct, serviceRoute.getActivities().get(1), 0.); @@ -161,15 +190,15 @@ public void whenServiceRouteAndNewServiceFitsInBetweenAc1AndAct2_itShouldReturnF @Test public void whenServiceRouteAndNewServiceFitsInBetweenAc2AndEnd_itShouldReturnFulfilled() { - stateManager.informInsertionStarts(Arrays.asList(serviceRoute), Collections.emptyList()); - Service s = mock(Service.class); - Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 5).build(); - when(s.getSize()).thenReturn(newSize); + stateManager.informInsertionStarts(Collections.singletonList(serviceRoute), Collections.emptyList()); + Capacity size = Capacity.Builder.newInstance().addDimension(0, 5).build(); + Service s = createMock(size); + ServiceLoadActivityLevelConstraint loadConstraint = new ServiceLoadActivityLevelConstraint(stateManager); JobInsertionContext context = new JobInsertionContext(serviceRoute, s, serviceRoute.getVehicle(), null, 0.); ServiceActivity newAct = mock(ServiceActivity.class); - when(newAct.getSize()).thenReturn(newSize); + when(newAct.getSize()).thenReturn(size); HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, serviceRoute.getActivities().get(1), newAct, serviceRoute.getEnd(), 0.); @@ -181,15 +210,15 @@ public void whenServiceRouteAndNewServiceFitsInBetweenAc2AndEnd_itShouldReturnFu */ @Test public void whenServiceRouteAndNewServiceDoesNotFitInBetweenStartAndAct1_itShouldReturnFulfilled() { - stateManager.informInsertionStarts(Arrays.asList(serviceRoute), Collections.emptyList()); - Service s = mock(Service.class); - Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 6).build(); - when(s.getSize()).thenReturn(newSize); + stateManager.informInsertionStarts(Collections.singletonList(serviceRoute), Collections.emptyList()); + Capacity size = Capacity.Builder.newInstance().addDimension(0, 6).build(); + Service s = createMock(size); + ServiceLoadActivityLevelConstraint loadConstraint = new ServiceLoadActivityLevelConstraint(stateManager); JobInsertionContext context = new JobInsertionContext(serviceRoute, s, serviceRoute.getVehicle(), null, 0.); ServiceActivity newAct = mock(ServiceActivity.class); - when(newAct.getSize()).thenReturn(newSize); + when(newAct.getSize()).thenReturn(size); HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, serviceRoute.getStart(), newAct, serviceRoute.getActivities().get(0), 0.); @@ -198,15 +227,15 @@ public void whenServiceRouteAndNewServiceDoesNotFitInBetweenStartAndAct1_itShoul @Test public void whenServiceRouteAndNewServiceDoesNotFitInBetweenAc1AndAct2_itShouldReturnFulfilled() { - stateManager.informInsertionStarts(Arrays.asList(serviceRoute), Collections.emptyList()); - Service s = mock(Service.class); - Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 6).build(); - when(s.getSize()).thenReturn(newSize); + stateManager.informInsertionStarts(Collections.singletonList(serviceRoute), Collections.emptyList()); + Capacity size = Capacity.Builder.newInstance().addDimension(0, 6).build(); + Service s = createMock(size); + ServiceLoadActivityLevelConstraint loadConstraint = new ServiceLoadActivityLevelConstraint(stateManager); JobInsertionContext context = new JobInsertionContext(serviceRoute, s, serviceRoute.getVehicle(), null, 0.); ServiceActivity newAct = mock(ServiceActivity.class); - when(newAct.getSize()).thenReturn(newSize); + when(newAct.getSize()).thenReturn(size); HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, serviceRoute.getActivities().get(0), newAct, serviceRoute.getActivities().get(1), 0.); @@ -215,15 +244,15 @@ public void whenServiceRouteAndNewServiceDoesNotFitInBetweenAc1AndAct2_itShouldR @Test public void whenServiceRouteAndNewServiceDoesNotFitInBetweenAc2AndEnd_itShouldReturnFulfilled() { - stateManager.informInsertionStarts(Arrays.asList(serviceRoute), Collections.emptyList()); - Service s = mock(Service.class); - Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 6).build(); - when(s.getSize()).thenReturn(newSize); + stateManager.informInsertionStarts(Collections.singletonList(serviceRoute), Collections.emptyList()); + Capacity size = Capacity.Builder.newInstance().addDimension(0, 6).build(); + Service s = createMock(size); + ServiceLoadActivityLevelConstraint loadConstraint = new ServiceLoadActivityLevelConstraint(stateManager); JobInsertionContext context = new JobInsertionContext(serviceRoute, s, serviceRoute.getVehicle(), null, 0.); ServiceActivity newAct = mock(ServiceActivity.class); - when(newAct.getSize()).thenReturn(newSize); + when(newAct.getSize()).thenReturn(size); HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, serviceRoute.getActivities().get(1), newAct, serviceRoute.getEnd(), 0.); @@ -233,9 +262,9 @@ public void whenServiceRouteAndNewServiceDoesNotFitInBetweenAc2AndEnd_itShouldRe @Test public void whenServiceRouteAndNewServiceDoesNotFitIn_itShouldReturnFulfilled() { - stateManager.informInsertionStarts(Arrays.asList(serviceRoute), Collections.emptyList()); - Service s = mock(Service.class); - when(s.getSize()).thenReturn(Capacity.Builder.newInstance().addDimension(0, 6).build()); + stateManager.informInsertionStarts(Collections.singletonList(serviceRoute), Collections.emptyList()); + Service s = createMock(Capacity.Builder.newInstance().addDimension(0, 6).build()); + ServiceLoadRouteLevelConstraint loadconstraint = new ServiceLoadRouteLevelConstraint(stateManager); JobInsertionContext context = new JobInsertionContext(serviceRoute, s, serviceRoute.getVehicle(), null, 0.); @@ -249,9 +278,10 @@ public void whenServiceRouteAndNewServiceDoesNotFitIn_itShouldReturnFulfilled() */ @Test public void whenPDRouteRouteAndNewPickupFitsIn_itShouldReturnFulfilled() { - stateManager.informInsertionStarts(Arrays.asList(pickup_delivery_route), Collections.emptyList()); - Pickup s = mock(Pickup.class); - when(s.getSize()).thenReturn(Capacity.Builder.newInstance().addDimension(0, 10).build()); + stateManager.informInsertionStarts(Collections.singletonList(pickup_delivery_route), Collections.emptyList()); + + Pickup s = createPickupMock(Capacity.Builder.newInstance().addDimension(0, 10).build()); + ServiceLoadRouteLevelConstraint loadconstraint = new ServiceLoadRouteLevelConstraint(stateManager); JobInsertionContext context = new JobInsertionContext(pickup_delivery_route, s, serviceRoute.getVehicle(), null, 0.); @@ -260,9 +290,9 @@ public void whenPDRouteRouteAndNewPickupFitsIn_itShouldReturnFulfilled() { @Test public void whenPDRouteRouteAndNewDeliveryFitsIn_itShouldReturnFulfilled() { - stateManager.informInsertionStarts(Arrays.asList(pickup_delivery_route), Collections.emptyList()); - Delivery s = mock(Delivery.class); - when(s.getSize()).thenReturn(Capacity.Builder.newInstance().addDimension(0, 15).build()); + stateManager.informInsertionStarts(Collections.singletonList(pickup_delivery_route), Collections.emptyList()); + Delivery s = createDeliveryMock(Capacity.Builder.newInstance().addDimension(0, 15).build()); + ServiceLoadRouteLevelConstraint loadconstraint = new ServiceLoadRouteLevelConstraint(stateManager); JobInsertionContext context = new JobInsertionContext(pickup_delivery_route, s, serviceRoute.getVehicle(), null, 0.); @@ -271,9 +301,9 @@ public void whenPDRouteRouteAndNewDeliveryFitsIn_itShouldReturnFulfilled() { @Test public void whenPDRouteRouteAndNewPickupDoesNotFitIn_itShouldReturnNotFulfilled() { - stateManager.informInsertionStarts(Arrays.asList(pickup_delivery_route), Collections.emptyList()); - Pickup s = mock(Pickup.class); - when(s.getSize()).thenReturn(Capacity.Builder.newInstance().addDimension(0, 11).build()); + stateManager.informInsertionStarts(Collections.singletonList(pickup_delivery_route), Collections.emptyList()); + Pickup s = createPickupMock(Capacity.Builder.newInstance().addDimension(0, 11).build()); + ServiceLoadRouteLevelConstraint loadconstraint = new ServiceLoadRouteLevelConstraint(stateManager); JobInsertionContext context = new JobInsertionContext(pickup_delivery_route, s, serviceRoute.getVehicle(), null, 0.); @@ -282,9 +312,9 @@ public void whenPDRouteRouteAndNewPickupDoesNotFitIn_itShouldReturnNotFulfilled( @Test public void whenPDRouteRouteAndNewDeliveryDoesNotFitIn_itShouldReturnNotFulfilled() { - stateManager.informInsertionStarts(Arrays.asList(pickup_delivery_route), Collections.emptyList()); - Delivery s = mock(Delivery.class); - when(s.getSize()).thenReturn(Capacity.Builder.newInstance().addDimension(0, 16).build()); + stateManager.informInsertionStarts(Collections.singletonList(pickup_delivery_route), Collections.emptyList()); + Delivery s = createDeliveryMock(Capacity.Builder.newInstance().addDimension(0, 16).build()); + ServiceLoadRouteLevelConstraint loadconstraint = new ServiceLoadRouteLevelConstraint(stateManager); JobInsertionContext context = new JobInsertionContext(pickup_delivery_route, s, serviceRoute.getVehicle(), null, 0.); @@ -296,10 +326,9 @@ public void whenPDRouteRouteAndNewDeliveryDoesNotFitIn_itShouldReturnNotFulfille */ @Test public void whenPDRoute_newPickupShouldFitInBetweenStartAndAct1() { - stateManager.informInsertionStarts(Arrays.asList(pickup_delivery_route), Collections.emptyList()); - Pickup s = mock(Pickup.class); - Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 5).build(); - when(s.getSize()).thenReturn(newSize); + stateManager.informInsertionStarts(Collections.singletonList(pickup_delivery_route), Collections.emptyList()); + Pickup s = createPickupMock(Capacity.Builder.newInstance().addDimension(0, 5).build()); + ServiceLoadActivityLevelConstraint loadConstraint = new ServiceLoadActivityLevelConstraint(stateManager); JobInsertionContext context = new JobInsertionContext(pickup_delivery_route, s, pickup_delivery_route.getVehicle(), null, 0.); @@ -312,10 +341,9 @@ public void whenPDRoute_newPickupShouldFitInBetweenStartAndAct1() { @Test public void whenPDRoute_newPickupShouldFitInBetweenAct1AndAct2() { - stateManager.informInsertionStarts(Arrays.asList(pickup_delivery_route), Collections.emptyList()); - Pickup s = mock(Pickup.class); - Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 5).build(); - when(s.getSize()).thenReturn(newSize); + stateManager.informInsertionStarts(Collections.singletonList(pickup_delivery_route), Collections.emptyList()); + Pickup s = createPickupMock(Capacity.Builder.newInstance().addDimension(0, 5).build()); + ServiceLoadActivityLevelConstraint loadConstraint = new ServiceLoadActivityLevelConstraint(stateManager); JobInsertionContext context = new JobInsertionContext(pickup_delivery_route, s, pickup_delivery_route.getVehicle(), null, 0.); @@ -328,10 +356,9 @@ public void whenPDRoute_newPickupShouldFitInBetweenAct1AndAct2() { @Test public void whenPDRoute_newPickupShouldFitInBetweenAct2AndEnd() { - stateManager.informInsertionStarts(Arrays.asList(pickup_delivery_route), Collections.emptyList()); - Pickup s = mock(Pickup.class); - Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 10).build(); - when(s.getSize()).thenReturn(newSize); + stateManager.informInsertionStarts(Collections.singletonList(pickup_delivery_route), Collections.emptyList()); + Pickup s = createPickupMock(Capacity.Builder.newInstance().addDimension(0, 10).build()); + ServiceLoadActivityLevelConstraint loadConstraint = new ServiceLoadActivityLevelConstraint(stateManager); JobInsertionContext context = new JobInsertionContext(pickup_delivery_route, s, pickup_delivery_route.getVehicle(), null, 0.); @@ -347,10 +374,9 @@ public void whenPDRoute_newPickupShouldFitInBetweenAct2AndEnd() { */ @Test public void whenPDRoute_newPickupShouldNotFitInBetweenStartAndAct1() { - stateManager.informInsertionStarts(Arrays.asList(pickup_delivery_route), Collections.emptyList()); - Pickup s = mock(Pickup.class); - Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 6).build(); - when(s.getSize()).thenReturn(newSize); + stateManager.informInsertionStarts(Collections.singletonList(pickup_delivery_route), Collections.emptyList()); + Pickup s = createPickupMock(Capacity.Builder.newInstance().addDimension(0, 6).build()); + ServiceLoadActivityLevelConstraint loadConstraint = new ServiceLoadActivityLevelConstraint(stateManager); JobInsertionContext context = new JobInsertionContext(pickup_delivery_route, s, pickup_delivery_route.getVehicle(), null, 0.); @@ -363,10 +389,9 @@ public void whenPDRoute_newPickupShouldNotFitInBetweenStartAndAct1() { @Test public void whenPDRoute_newPickupShouldNotFitInBetweenAct1AndAct2() { - stateManager.informInsertionStarts(Arrays.asList(pickup_delivery_route), Collections.emptyList()); - Pickup s = mock(Pickup.class); - Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 6).build(); - when(s.getSize()).thenReturn(newSize); + stateManager.informInsertionStarts(Collections.singletonList(pickup_delivery_route), Collections.emptyList()); + Pickup s = createPickupMock(Capacity.Builder.newInstance().addDimension(0, 6).build()); + ServiceLoadActivityLevelConstraint loadConstraint = new ServiceLoadActivityLevelConstraint(stateManager); JobInsertionContext context = new JobInsertionContext(pickup_delivery_route, s, pickup_delivery_route.getVehicle(), null, 0.); @@ -379,10 +404,9 @@ public void whenPDRoute_newPickupShouldNotFitInBetweenAct1AndAct2() { @Test public void whenPDRoute_newPickupShouldNotFitInBetweenAct2AndEnd() { - stateManager.informInsertionStarts(Arrays.asList(pickup_delivery_route), Collections.emptyList()); - Pickup s = mock(Pickup.class); - Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 11).build(); - when(s.getSize()).thenReturn(newSize); + stateManager.informInsertionStarts(Collections.singletonList(pickup_delivery_route), Collections.emptyList()); + Pickup s = createPickupMock(Capacity.Builder.newInstance().addDimension(0, 11).build()); + ServiceLoadActivityLevelConstraint loadConstraint = new ServiceLoadActivityLevelConstraint(stateManager); JobInsertionContext context = new JobInsertionContext(pickup_delivery_route, s, pickup_delivery_route.getVehicle(), null, 0.); @@ -399,10 +423,9 @@ public void whenPDRoute_newPickupShouldNotFitInBetweenAct2AndEnd() { */ @Test public void whenPDRoute_newDeliveryShouldFitInBetweenStartAndAct1() { - stateManager.informInsertionStarts(Arrays.asList(pickup_delivery_route), Collections.emptyList()); - Delivery s = mock(Delivery.class); - Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 15).build(); - when(s.getSize()).thenReturn(newSize); + stateManager.informInsertionStarts(Collections.singletonList(pickup_delivery_route), Collections.emptyList()); + Delivery s = createDeliveryMock(Capacity.Builder.newInstance().addDimension(0, 15).build()); + ServiceLoadActivityLevelConstraint loadConstraint = new ServiceLoadActivityLevelConstraint(stateManager); JobInsertionContext context = new JobInsertionContext(pickup_delivery_route, s, pickup_delivery_route.getVehicle(), null, 0.); @@ -415,10 +438,9 @@ public void whenPDRoute_newDeliveryShouldFitInBetweenStartAndAct1() { @Test public void whenPDRoute_newDeliveryShouldNotFitInBetweenStartAndAct1() { - stateManager.informInsertionStarts(Arrays.asList(pickup_delivery_route), Collections.emptyList()); - Delivery s = mock(Delivery.class); - Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 16).build(); - when(s.getSize()).thenReturn(newSize); + stateManager.informInsertionStarts(Collections.singletonList(pickup_delivery_route), Collections.emptyList()); + Delivery s = createDeliveryMock(Capacity.Builder.newInstance().addDimension(0, 16).build()); + ServiceLoadActivityLevelConstraint loadConstraint = new ServiceLoadActivityLevelConstraint(stateManager); JobInsertionContext context = new JobInsertionContext(pickup_delivery_route, s, pickup_delivery_route.getVehicle(), null, 0.); @@ -431,10 +453,9 @@ public void whenPDRoute_newDeliveryShouldNotFitInBetweenStartAndAct1() { @Test public void whenPDRoute_newDeliveryShouldFitInBetweenAct1AndAct2() { - stateManager.informInsertionStarts(Arrays.asList(pickup_delivery_route), Collections.emptyList()); - Delivery s = mock(Delivery.class); - Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 5).build(); - when(s.getSize()).thenReturn(newSize); + stateManager.informInsertionStarts(Collections.singletonList(pickup_delivery_route), Collections.emptyList()); + Delivery s = createDeliveryMock(Capacity.Builder.newInstance().addDimension(0, 5).build()); + ServiceLoadActivityLevelConstraint loadConstraint = new ServiceLoadActivityLevelConstraint(stateManager); JobInsertionContext context = new JobInsertionContext(pickup_delivery_route, s, pickup_delivery_route.getVehicle(), null, 0.); @@ -447,10 +468,9 @@ public void whenPDRoute_newDeliveryShouldFitInBetweenAct1AndAct2() { @Test public void whenPDRoute_newDeliveryNotShouldFitInBetweenAct1AndAct2() { - stateManager.informInsertionStarts(Arrays.asList(pickup_delivery_route), Collections.emptyList()); - Delivery s = mock(Delivery.class); - Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 6).build(); - when(s.getSize()).thenReturn(newSize); + stateManager.informInsertionStarts(Collections.singletonList(pickup_delivery_route), Collections.emptyList()); + Delivery s = createDeliveryMock(Capacity.Builder.newInstance().addDimension(0, 6).build()); + ServiceLoadActivityLevelConstraint loadConstraint = new ServiceLoadActivityLevelConstraint(stateManager); JobInsertionContext context = new JobInsertionContext(pickup_delivery_route, s, pickup_delivery_route.getVehicle(), null, 0.); @@ -463,10 +483,9 @@ public void whenPDRoute_newDeliveryNotShouldFitInBetweenAct1AndAct2() { @Test public void whenPDRoute_newDeliveryShouldFitInBetweenAct2AndEnd() { - stateManager.informInsertionStarts(Arrays.asList(pickup_delivery_route), Collections.emptyList()); - Delivery s = mock(Delivery.class); - Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 5).build(); - when(s.getSize()).thenReturn(newSize); + stateManager.informInsertionStarts(Collections.singletonList(pickup_delivery_route), Collections.emptyList()); + Delivery s = createDeliveryMock(Capacity.Builder.newInstance().addDimension(0, 5).build()); + ServiceLoadActivityLevelConstraint loadConstraint = new ServiceLoadActivityLevelConstraint(stateManager); JobInsertionContext context = new JobInsertionContext(pickup_delivery_route, s, pickup_delivery_route.getVehicle(), null, 0.); @@ -479,10 +498,9 @@ public void whenPDRoute_newDeliveryShouldFitInBetweenAct2AndEnd() { @Test public void whenPDRoute_newDeliveryShouldNotFitInBetweenAct2AndEnd() { - stateManager.informInsertionStarts(Arrays.asList(pickup_delivery_route), Collections.emptyList()); - Delivery s = mock(Delivery.class); - Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 6).build(); - when(s.getSize()).thenReturn(newSize); + stateManager.informInsertionStarts(Collections.singletonList(pickup_delivery_route), Collections.emptyList()); + Delivery s = createDeliveryMock(Capacity.Builder.newInstance().addDimension(0, 6).build()); + ServiceLoadActivityLevelConstraint loadConstraint = new ServiceLoadActivityLevelConstraint(stateManager); JobInsertionContext context = new JobInsertionContext(pickup_delivery_route, s, pickup_delivery_route.getVehicle(), null, 0.); @@ -495,15 +513,15 @@ public void whenPDRoute_newDeliveryShouldNotFitInBetweenAct2AndEnd() { @Test public void whenPDRouteAndNewServiceFitsInBetweenAc1AndAct2_itShouldReturnFulfilled() { - stateManager.informInsertionStarts(Arrays.asList(pickup_delivery_route), Collections.emptyList()); - Service s = mock(Service.class); - Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 5).build(); - when(s.getSize()).thenReturn(newSize); + stateManager.informInsertionStarts(Collections.singletonList(pickup_delivery_route), Collections.emptyList()); + Capacity size = Capacity.Builder.newInstance().addDimension(0, 5).build(); + Service s = createMock(size); + ServiceLoadActivityLevelConstraint loadConstraint = new ServiceLoadActivityLevelConstraint(stateManager); JobInsertionContext context = new JobInsertionContext(serviceRoute, s, serviceRoute.getVehicle(), null, 0.); ServiceActivity newAct = mock(ServiceActivity.class); - when(newAct.getSize()).thenReturn(newSize); + when(newAct.getSize()).thenReturn(size); HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, serviceRoute.getActivities().get(0), newAct, serviceRoute.getActivities().get(1), 0.); @@ -512,15 +530,15 @@ public void whenPDRouteAndNewServiceFitsInBetweenAc1AndAct2_itShouldReturnFulfil @Test public void whenPDRouteAndNewServiceFitsInBetweenAc2AndEnd_itShouldReturnFulfilled() { - stateManager.informInsertionStarts(Arrays.asList(pickup_delivery_route), Collections.emptyList()); - Service s = mock(Service.class); - Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 5).build(); - when(s.getSize()).thenReturn(newSize); + stateManager.informInsertionStarts(Collections.singletonList(pickup_delivery_route), Collections.emptyList()); + Capacity size = Capacity.Builder.newInstance().addDimension(0, 5).build(); + Service s = createMock(size); + ServiceLoadActivityLevelConstraint loadConstraint = new ServiceLoadActivityLevelConstraint(stateManager); JobInsertionContext context = new JobInsertionContext(serviceRoute, s, serviceRoute.getVehicle(), null, 0.); ServiceActivity newAct = mock(ServiceActivity.class); - when(newAct.getSize()).thenReturn(newSize); + when(newAct.getSize()).thenReturn(size); HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, serviceRoute.getActivities().get(1), newAct, serviceRoute.getEnd(), 0.); @@ -532,15 +550,15 @@ public void whenPDRouteAndNewServiceFitsInBetweenAc2AndEnd_itShouldReturnFulfill */ @Test public void whenPDRouteAndNewServiceDoesNotFitInBetweenStartAndAct1_itShouldReturnFulfilled() { - stateManager.informInsertionStarts(Arrays.asList(serviceRoute), Collections.emptyList()); - Service s = mock(Service.class); - Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 6).build(); - when(s.getSize()).thenReturn(newSize); + stateManager.informInsertionStarts(Collections.singletonList(serviceRoute), Collections.emptyList()); + Capacity size = Capacity.Builder.newInstance().addDimension(0, 6).build(); + Service s = createMock(size); + ServiceLoadActivityLevelConstraint loadConstraint = new ServiceLoadActivityLevelConstraint(stateManager); JobInsertionContext context = new JobInsertionContext(serviceRoute, s, serviceRoute.getVehicle(), null, 0.); ServiceActivity newAct = mock(ServiceActivity.class); - when(newAct.getSize()).thenReturn(newSize); + when(newAct.getSize()).thenReturn(size); HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, serviceRoute.getStart(), newAct, serviceRoute.getActivities().get(0), 0.); @@ -549,15 +567,15 @@ public void whenPDRouteAndNewServiceDoesNotFitInBetweenStartAndAct1_itShouldRetu @Test public void whenPDRouteAndNewServiceDoesNotFitInBetweenAc1AndAct2_itShouldReturnFulfilled() { - stateManager.informInsertionStarts(Arrays.asList(pickup_delivery_route), Collections.emptyList()); - Service s = mock(Service.class); - Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 6).build(); - when(s.getSize()).thenReturn(newSize); + stateManager.informInsertionStarts(Collections.singletonList(pickup_delivery_route), Collections.emptyList()); + Capacity size = Capacity.Builder.newInstance().addDimension(0, 6).build(); + Service s = createMock(size); + ServiceLoadActivityLevelConstraint loadConstraint = new ServiceLoadActivityLevelConstraint(stateManager); JobInsertionContext context = new JobInsertionContext(serviceRoute, s, serviceRoute.getVehicle(), null, 0.); ServiceActivity newAct = mock(ServiceActivity.class); - when(newAct.getSize()).thenReturn(newSize); + when(newAct.getSize()).thenReturn(size); HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, serviceRoute.getActivities().get(0), newAct, serviceRoute.getActivities().get(1), 0.); @@ -566,15 +584,15 @@ public void whenPDRouteAndNewServiceDoesNotFitInBetweenAc1AndAct2_itShouldReturn @Test public void whenPDRouteAndNewServiceDoesNotFitInBetweenAc2AndEnd_itShouldReturnFulfilled() { - stateManager.informInsertionStarts(Arrays.asList(serviceRoute), Collections.emptyList()); - Service s = mock(Service.class); - Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 6).build(); - when(s.getSize()).thenReturn(newSize); + stateManager.informInsertionStarts(Collections.singletonList(serviceRoute), Collections.emptyList()); + Capacity size = Capacity.Builder.newInstance().addDimension(0, 6).build(); + Service s = createMock(size); + ServiceLoadActivityLevelConstraint loadConstraint = new ServiceLoadActivityLevelConstraint(stateManager); JobInsertionContext context = new JobInsertionContext(serviceRoute, s, serviceRoute.getVehicle(), null, 0.); ServiceActivity newAct = mock(ServiceActivity.class); - when(newAct.getSize()).thenReturn(newSize); + when(newAct.getSize()).thenReturn(size); HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, serviceRoute.getActivities().get(1), newAct, serviceRoute.getEnd(), 0.); @@ -584,9 +602,9 @@ public void whenPDRouteAndNewServiceDoesNotFitInBetweenAc2AndEnd_itShouldReturnF @Test public void whenPDRouteAndNewServiceDoesNotFitIn_itShouldReturnFulfilled() { - stateManager.informInsertionStarts(Arrays.asList(serviceRoute), Collections.emptyList()); - Service s = mock(Service.class); - when(s.getSize()).thenReturn(Capacity.Builder.newInstance().addDimension(0, 6).build()); + stateManager.informInsertionStarts(Collections.singletonList(serviceRoute), Collections.emptyList()); + Service s = createMock(Capacity.Builder.newInstance().addDimension(0, 6).build()); + ServiceLoadRouteLevelConstraint loadconstraint = new ServiceLoadRouteLevelConstraint(stateManager); JobInsertionContext context = new JobInsertionContext(serviceRoute, s, serviceRoute.getVehicle(), null, 0.); @@ -603,10 +621,10 @@ public void whenPDRouteAndNewServiceDoesNotFitIn_itShouldReturnFulfilled() { @Test public void whenShipmentRouteAndPickupOfNewShipmentShouldFitInBetweenStartAndAct1() { - stateManager.informInsertionStarts(Arrays.asList(shipment_route), Collections.emptyList()); - Shipment s = mock(Shipment.class); + stateManager.informInsertionStarts(Collections.singletonList(shipment_route), Collections.emptyList()); + Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 20).build(); - when(s.getSize()).thenReturn(newSize); + Shipment s = createShipmentMock(newSize); JobInsertionContext context = new JobInsertionContext(shipment_route, s, shipment_route.getVehicle(), null, 0.); @@ -620,10 +638,10 @@ public void whenShipmentRouteAndPickupOfNewShipmentShouldFitInBetweenStartAndAct @Test public void whenShipmentRouteAndPickupOfNewShipmentShouldNotFitInBetweenStartAndAct1() { - stateManager.informInsertionStarts(Arrays.asList(shipment_route), Collections.emptyList()); - Shipment s = mock(Shipment.class); + stateManager.informInsertionStarts(Collections.singletonList(shipment_route), Collections.emptyList()); + Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 21).build(); - when(s.getSize()).thenReturn(newSize); + Shipment s = createShipmentMock(newSize); JobInsertionContext context = new JobInsertionContext(shipment_route, s, shipment_route.getVehicle(), null, 0.); @@ -637,10 +655,10 @@ public void whenShipmentRouteAndPickupOfNewShipmentShouldNotFitInBetweenStartAnd @Test public void whenShipmentRouteAndPickupOfNewShipmentShouldFitInBetweenAct1AndAct2() { - stateManager.informInsertionStarts(Arrays.asList(shipment_route), Collections.emptyList()); - Shipment s = mock(Shipment.class); + stateManager.informInsertionStarts(Collections.singletonList(shipment_route), Collections.emptyList()); + Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 10).build(); - when(s.getSize()).thenReturn(newSize); + Shipment s = createShipmentMock(newSize); JobInsertionContext context = new JobInsertionContext(shipment_route, s, shipment_route.getVehicle(), null, 0.); @@ -654,10 +672,10 @@ public void whenShipmentRouteAndPickupOfNewShipmentShouldFitInBetweenAct1AndAct2 @Test public void whenShipmentRouteAndPickupOfNewShipmentShouldNotFitInBetweenAct1AndAct2() { - stateManager.informInsertionStarts(Arrays.asList(shipment_route), Collections.emptyList()); - Shipment s = mock(Shipment.class); + stateManager.informInsertionStarts(Collections.singletonList(shipment_route), Collections.emptyList()); + Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 11).build(); - when(s.getSize()).thenReturn(newSize); + Shipment s = createShipmentMock(newSize); JobInsertionContext context = new JobInsertionContext(shipment_route, s, shipment_route.getVehicle(), null, 0.); @@ -671,10 +689,10 @@ public void whenShipmentRouteAndPickupOfNewShipmentShouldNotFitInBetweenAct1AndA @Test public void whenShipmentRouteAndPickupOfNewShipmentShouldFitInBetweenAct2AndAct3() { - stateManager.informInsertionStarts(Arrays.asList(shipment_route), Collections.emptyList()); - Shipment s = mock(Shipment.class); + stateManager.informInsertionStarts(Collections.singletonList(shipment_route), Collections.emptyList()); + Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 5).build(); - when(s.getSize()).thenReturn(newSize); + Shipment s = createShipmentMock(newSize); JobInsertionContext context = new JobInsertionContext(shipment_route, s, shipment_route.getVehicle(), null, 0.); @@ -688,10 +706,10 @@ public void whenShipmentRouteAndPickupOfNewShipmentShouldFitInBetweenAct2AndAct3 @Test public void whenShipmentRouteAndPickupOfNewShipmentShouldNotFitInBetweenAct2AndAct3() { - stateManager.informInsertionStarts(Arrays.asList(shipment_route), Collections.emptyList()); - Shipment s = mock(Shipment.class); + stateManager.informInsertionStarts(Collections.singletonList(shipment_route), Collections.emptyList()); + Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 6).build(); - when(s.getSize()).thenReturn(newSize); + Shipment s = createShipmentMock(newSize); JobInsertionContext context = new JobInsertionContext(shipment_route, s, shipment_route.getVehicle(), null, 0.); @@ -705,10 +723,10 @@ public void whenShipmentRouteAndPickupOfNewShipmentShouldNotFitInBetweenAct2AndA @Test public void whenShipmentRouteAndPickupOfNewShipmentShouldFitInBetweenAct3AndAct4() { - stateManager.informInsertionStarts(Arrays.asList(shipment_route), Collections.emptyList()); - Shipment s = mock(Shipment.class); + stateManager.informInsertionStarts(Collections.singletonList(shipment_route), Collections.emptyList()); + Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 10).build(); - when(s.getSize()).thenReturn(newSize); + Shipment s = createShipmentMock(newSize); JobInsertionContext context = new JobInsertionContext(shipment_route, s, shipment_route.getVehicle(), null, 0.); @@ -722,10 +740,10 @@ public void whenShipmentRouteAndPickupOfNewShipmentShouldFitInBetweenAct3AndAct4 @Test public void whenShipmentRouteAndPickupOfNewShipmentShouldNotFitInBetweenAct3AndAct4() { - stateManager.informInsertionStarts(Arrays.asList(shipment_route), Collections.emptyList()); - Shipment s = mock(Shipment.class); + stateManager.informInsertionStarts(Collections.singletonList(shipment_route), Collections.emptyList()); + Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 11).build(); - when(s.getSize()).thenReturn(newSize); + Shipment s = createShipmentMock(newSize); JobInsertionContext context = new JobInsertionContext(shipment_route, s, shipment_route.getVehicle(), null, 0.); @@ -739,10 +757,10 @@ public void whenShipmentRouteAndPickupOfNewShipmentShouldNotFitInBetweenAct3AndA @Test public void whenShipmentRouteAndPickupOfNewShipmentShouldFitInBetweenAct4AndEnd() { - stateManager.informInsertionStarts(Arrays.asList(shipment_route), Collections.emptyList()); - Shipment s = mock(Shipment.class); + stateManager.informInsertionStarts(Collections.singletonList(shipment_route), Collections.emptyList()); + Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 20).build(); - when(s.getSize()).thenReturn(newSize); + Shipment s = createShipmentMock(newSize); JobInsertionContext context = new JobInsertionContext(shipment_route, s, shipment_route.getVehicle(), null, 0.); @@ -756,10 +774,10 @@ public void whenShipmentRouteAndPickupOfNewShipmentShouldFitInBetweenAct4AndEnd( @Test public void whenShipmentRouteAndPickupOfNewShipmentShouldNotFitInBetweenAct4AndEnd() { - stateManager.informInsertionStarts(Arrays.asList(shipment_route), Collections.emptyList()); - Shipment s = mock(Shipment.class); + stateManager.informInsertionStarts(Collections.singletonList(shipment_route), Collections.emptyList()); + Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 21).build(); - when(s.getSize()).thenReturn(newSize); + Shipment s = createShipmentMock(newSize); JobInsertionContext context = new JobInsertionContext(shipment_route, s, shipment_route.getVehicle(), null, 0.); @@ -771,16 +789,17 @@ public void whenShipmentRouteAndPickupOfNewShipmentShouldNotFitInBetweenAct4AndE } + /* deliverShipment */ @Test public void whenShipmentRouteAndDeliveryOfNewShipmentShouldFitInBetweenStartAndAct1() { - stateManager.informInsertionStarts(Arrays.asList(shipment_route), Collections.emptyList()); - Shipment s = mock(Shipment.class); + stateManager.informInsertionStarts(Collections.singletonList(shipment_route), Collections.emptyList()); + Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 20).build(); - when(s.getSize()).thenReturn(newSize); + Shipment s = createShipmentMock(newSize); JobInsertionContext context = new JobInsertionContext(shipment_route, s, shipment_route.getVehicle(), null, 0.); @@ -794,10 +813,10 @@ public void whenShipmentRouteAndDeliveryOfNewShipmentShouldFitInBetweenStartAndA @Test public void whenShipmentRouteAndDeliveryOfNewShipmentShouldNotFitInBetweenStartAndAct1() { - stateManager.informInsertionStarts(Arrays.asList(shipment_route), Collections.emptyList()); - Shipment s = mock(Shipment.class); + stateManager.informInsertionStarts(Collections.singletonList(shipment_route), Collections.emptyList()); + Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 21).build(); - when(s.getSize()).thenReturn(newSize); + Shipment s = createShipmentMock(newSize); JobInsertionContext context = new JobInsertionContext(shipment_route, s, shipment_route.getVehicle(), null, 0.); @@ -811,10 +830,10 @@ public void whenShipmentRouteAndDeliveryOfNewShipmentShouldNotFitInBetweenStartA @Test public void whenShipmentRouteAndDeliveryOfNewShipmentShouldFitInBetweenAct1AndAct2() { - stateManager.informInsertionStarts(Arrays.asList(shipment_route), Collections.emptyList()); - Shipment s = mock(Shipment.class); + stateManager.informInsertionStarts(Collections.singletonList(shipment_route), Collections.emptyList()); + Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 10).build(); - when(s.getSize()).thenReturn(newSize); + Shipment s = createShipmentMock(newSize); JobInsertionContext context = new JobInsertionContext(shipment_route, s, shipment_route.getVehicle(), null, 0.); @@ -828,10 +847,10 @@ public void whenShipmentRouteAndDeliveryOfNewShipmentShouldFitInBetweenAct1AndAc @Test public void whenShipmentRouteAndDeliveryOfNewShipmentShouldNotFitInBetweenAct1AndAct2() { - stateManager.informInsertionStarts(Arrays.asList(shipment_route), Collections.emptyList()); - Shipment s = mock(Shipment.class); + stateManager.informInsertionStarts(Collections.singletonList(shipment_route), Collections.emptyList()); + Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 11).build(); - when(s.getSize()).thenReturn(newSize); + Shipment s = createShipmentMock(newSize); JobInsertionContext context = new JobInsertionContext(shipment_route, s, shipment_route.getVehicle(), null, 0.); @@ -845,10 +864,10 @@ public void whenShipmentRouteAndDeliveryOfNewShipmentShouldNotFitInBetweenAct1An @Test public void whenShipmentRouteAndDeliveryOfNewShipmentShouldFitInBetweenAct2AndAct3() { - stateManager.informInsertionStarts(Arrays.asList(shipment_route), Collections.emptyList()); - Shipment s = mock(Shipment.class); + stateManager.informInsertionStarts(Collections.singletonList(shipment_route), Collections.emptyList()); + Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 5).build(); - when(s.getSize()).thenReturn(newSize); + Shipment s = createShipmentMock(newSize); JobInsertionContext context = new JobInsertionContext(shipment_route, s, shipment_route.getVehicle(), null, 0.); @@ -862,10 +881,10 @@ public void whenShipmentRouteAndDeliveryOfNewShipmentShouldFitInBetweenAct2AndAc @Test public void whenShipmentRouteAndDeliveryOfNewShipmentShouldNotFitInBetweenAct2AndAct3() { - stateManager.informInsertionStarts(Arrays.asList(shipment_route), Collections.emptyList()); - Shipment s = mock(Shipment.class); + stateManager.informInsertionStarts(Collections.singletonList(shipment_route), Collections.emptyList()); + Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 6).build(); - when(s.getSize()).thenReturn(newSize); + Shipment s = createShipmentMock(newSize); JobInsertionContext context = new JobInsertionContext(shipment_route, s, shipment_route.getVehicle(), null, 0.); @@ -879,10 +898,10 @@ public void whenShipmentRouteAndDeliveryOfNewShipmentShouldNotFitInBetweenAct2An @Test public void whenShipmentRouteAndDeliveryOfNewShipmentShouldFitInBetweenAct3AndAct4() { - stateManager.informInsertionStarts(Arrays.asList(shipment_route), Collections.emptyList()); - Shipment s = mock(Shipment.class); + stateManager.informInsertionStarts(Collections.singletonList(shipment_route), Collections.emptyList()); + Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 10).build(); - when(s.getSize()).thenReturn(newSize); + Shipment s = createShipmentMock(newSize); JobInsertionContext context = new JobInsertionContext(shipment_route, s, shipment_route.getVehicle(), null, 0.); @@ -896,10 +915,10 @@ public void whenShipmentRouteAndDeliveryOfNewShipmentShouldFitInBetweenAct3AndAc @Test public void whenShipmentRouteAndDeliveryOfNewShipmentShouldNotFitInBetweenAct3AndAct4() { - stateManager.informInsertionStarts(Arrays.asList(shipment_route), Collections.emptyList()); - Shipment s = mock(Shipment.class); + stateManager.informInsertionStarts(Collections.singletonList(shipment_route), Collections.emptyList()); + Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 11).build(); - when(s.getSize()).thenReturn(newSize); + Shipment s = createShipmentMock(newSize); JobInsertionContext context = new JobInsertionContext(shipment_route, s, shipment_route.getVehicle(), null, 0.); @@ -913,10 +932,10 @@ public void whenShipmentRouteAndDeliveryOfNewShipmentShouldNotFitInBetweenAct3An @Test public void whenShipmentRouteAndDeliveryOfNewShipmentShouldFitInBetweenAct4AndEnd() { - stateManager.informInsertionStarts(Arrays.asList(shipment_route), Collections.emptyList()); - Shipment s = mock(Shipment.class); + stateManager.informInsertionStarts(Collections.singletonList(shipment_route), Collections.emptyList()); + Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 20).build(); - when(s.getSize()).thenReturn(newSize); + Shipment s = createShipmentMock(newSize); JobInsertionContext context = new JobInsertionContext(shipment_route, s, shipment_route.getVehicle(), null, 0.); @@ -930,10 +949,10 @@ public void whenShipmentRouteAndDeliveryOfNewShipmentShouldFitInBetweenAct4AndEn @Test public void whenShipmentRouteAndDeliveryOfNewShipmentShouldNotFitInBetweenAct4AndEnd() { - stateManager.informInsertionStarts(Arrays.asList(shipment_route), Collections.emptyList()); - Shipment s = mock(Shipment.class); + stateManager.informInsertionStarts(Collections.singletonList(shipment_route), Collections.emptyList()); + Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 21).build(); - when(s.getSize()).thenReturn(newSize); + Shipment s = createShipmentMock(newSize); JobInsertionContext context = new JobInsertionContext(shipment_route, s, shipment_route.getVehicle(), null, 0.); diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/ServiceLoadRouteLevelConstraintTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/ServiceLoadRouteLevelConstraintTest.java index 39e2bdb22..63830a97e 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/ServiceLoadRouteLevelConstraintTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/ServiceLoadRouteLevelConstraintTest.java @@ -23,6 +23,7 @@ import com.graphhopper.jsprit.core.problem.Location; import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; import com.graphhopper.jsprit.core.problem.job.Delivery; +import com.graphhopper.jsprit.core.problem.job.Job; import com.graphhopper.jsprit.core.problem.job.Pickup; import com.graphhopper.jsprit.core.problem.job.Service; import com.graphhopper.jsprit.core.problem.misc.JobInsertionContext; @@ -35,7 +36,7 @@ import org.junit.Before; import org.junit.Test; -import java.util.Arrays; +import java.util.Collections; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; @@ -54,6 +55,27 @@ public class ServiceLoadRouteLevelConstraintTest { StateManager stateManager; + Delivery createDeliveryMock(Capacity size) { + Delivery d = mock(Delivery.class); + when(d.getSize()).thenReturn(size); + when(d.getJobType()).thenReturn(Job.Type.DELIVERY_SERVICE); + return d; + } + + Service createServiceMock(Capacity size) { + Service d = mock(Service.class); + when(d.getSize()).thenReturn(size); + when(d.getJobType()).thenReturn(Job.Type.SERVICE); + return d; + } + + Pickup createPickupMock(Capacity size) { + Pickup d = mock(Pickup.class); + when(d.getSize()).thenReturn(size); + when(d.getJobType()).thenReturn(Job.Type.PICKUP_SERVICE); + return d; + } + @Before public void doBefore() { VehicleType type = mock(VehicleType.class); @@ -79,8 +101,7 @@ public void doBefore() { @Test public void whenLoadPlusDeliverySizeDoesNotExceedsVehicleCapacity_itShouldReturnTrue() { - Service service = mock(Delivery.class); - when(service.getSize()).thenReturn(Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 1).addDimension(2, 1).build()); + Service service = createDeliveryMock(Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 1).addDimension(2, 1).build()); JobInsertionContext iContext = mock(JobInsertionContext.class); when(iContext.getJob()).thenReturn(service); @@ -92,8 +113,7 @@ public void whenLoadPlusDeliverySizeDoesNotExceedsVehicleCapacity_itShouldReturn @Test public void whenLoadPlusDeliverySizeExceedsVehicleCapacityInAllDimension_itShouldReturnFalse() { - Service service = mock(Delivery.class); - when(service.getSize()).thenReturn(Capacity.Builder.newInstance().addDimension(0, 3).addDimension(1, 3).addDimension(2, 3).build()); + Service service = createDeliveryMock(Capacity.Builder.newInstance().addDimension(0, 3).addDimension(1, 3).addDimension(2, 3).build()); JobInsertionContext iContext = mock(JobInsertionContext.class); when(iContext.getJob()).thenReturn(service); @@ -105,8 +125,7 @@ public void whenLoadPlusDeliverySizeExceedsVehicleCapacityInAllDimension_itShoul @Test public void whenLoadPlusDeliverySizeExceedsVehicleCapacityInOneDimension_itShouldReturnFalse() { - Service service = mock(Delivery.class); - when(service.getSize()).thenReturn(Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 1).addDimension(2, 3).build()); + Service service = createDeliveryMock(Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 1).addDimension(2, 3).build()); JobInsertionContext iContext = mock(JobInsertionContext.class); when(iContext.getJob()).thenReturn(service); @@ -118,8 +137,7 @@ public void whenLoadPlusDeliverySizeExceedsVehicleCapacityInOneDimension_itShoul @Test public void whenLoadPlusDeliverySizeJustFitIntoVehicle_itShouldReturnTrue() { - Service service = mock(Delivery.class); - when(service.getSize()).thenReturn(Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 2).addDimension(2, 2).build()); + Service service = createDeliveryMock(Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 2).addDimension(2, 2).build()); JobInsertionContext iContext = mock(JobInsertionContext.class); when(iContext.getJob()).thenReturn(service); @@ -131,8 +149,7 @@ public void whenLoadPlusDeliverySizeJustFitIntoVehicle_itShouldReturnTrue() { @Test public void whenLoadPlusPickupSizeDoesNotExceedsVehicleCapacity_itShouldReturnTrue() { - Service service = mock(Pickup.class); - when(service.getSize()).thenReturn(Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 1).addDimension(2, 1).build()); + Service service = createPickupMock(Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 1).addDimension(2, 1).build()); JobInsertionContext iContext = mock(JobInsertionContext.class); when(iContext.getJob()).thenReturn(service); @@ -144,8 +161,7 @@ public void whenLoadPlusPickupSizeDoesNotExceedsVehicleCapacity_itShouldReturnTr @Test public void whenLoadPlusPickupSizeExceedsVehicleCapacityInAllDimension_itShouldReturnFalse() { - Service service = mock(Pickup.class); - when(service.getSize()).thenReturn(Capacity.Builder.newInstance().addDimension(0, 3).addDimension(1, 3).addDimension(2, 3).build()); + Service service = createPickupMock(Capacity.Builder.newInstance().addDimension(0, 3).addDimension(1, 3).addDimension(2, 3).build()); JobInsertionContext iContext = mock(JobInsertionContext.class); when(iContext.getJob()).thenReturn(service); @@ -157,8 +173,7 @@ public void whenLoadPlusPickupSizeExceedsVehicleCapacityInAllDimension_itShouldR @Test public void whenLoadPlusPickupSizeExceedsVehicleCapacityInOneDimension_itShouldReturnFalse() { - Service service = mock(Pickup.class); - when(service.getSize()).thenReturn(Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 1).addDimension(2, 3).build()); + Service service = createPickupMock(Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 1).addDimension(2, 3).build()); JobInsertionContext iContext = mock(JobInsertionContext.class); when(iContext.getJob()).thenReturn(service); @@ -170,8 +185,7 @@ public void whenLoadPlusPickupSizeExceedsVehicleCapacityInOneDimension_itShouldR @Test public void whenLoadPlusPickupSizeJustFitIntoVehicle_itShouldReturnTrue() { - Service service = mock(Pickup.class); - when(service.getSize()).thenReturn(Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 2).addDimension(2, 2).build()); + Service service = createPickupMock(Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 2).addDimension(2, 2).build()); JobInsertionContext iContext = mock(JobInsertionContext.class); when(iContext.getJob()).thenReturn(service); @@ -183,8 +197,7 @@ public void whenLoadPlusPickupSizeJustFitIntoVehicle_itShouldReturnTrue() { @Test public void whenLoadPlusServiceSizeDoesNotExceedsVehicleCapacity_itShouldReturnTrue() { - Service service = mock(Service.class); - when(service.getSize()).thenReturn(Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 1).addDimension(2, 1).build()); + Service service = createServiceMock(Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 1).addDimension(2, 1).build()); JobInsertionContext iContext = mock(JobInsertionContext.class); when(iContext.getJob()).thenReturn(service); @@ -196,8 +209,7 @@ public void whenLoadPlusServiceSizeDoesNotExceedsVehicleCapacity_itShouldReturnT @Test public void whenLoadPlusServiceSizeExceedsVehicleCapacityInAllDimension_itShouldReturnFalse() { - Service service = mock(Service.class); - when(service.getSize()).thenReturn(Capacity.Builder.newInstance().addDimension(0, 3).addDimension(1, 3).addDimension(2, 3).build()); + Service service = createServiceMock(Capacity.Builder.newInstance().addDimension(0, 3).addDimension(1, 3).addDimension(2, 3).build()); JobInsertionContext iContext = mock(JobInsertionContext.class); when(iContext.getJob()).thenReturn(service); @@ -209,8 +221,7 @@ public void whenLoadPlusServiceSizeExceedsVehicleCapacityInAllDimension_itShould @Test public void whenLoadPlusServiceSizeExceedsVehicleCapacityInOneDimension_itShouldReturnFalse() { - Service service = mock(Service.class); - when(service.getSize()).thenReturn(Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 1).addDimension(2, 3).build()); + Service service = createServiceMock(Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 1).addDimension(2, 3).build()); JobInsertionContext iContext = mock(JobInsertionContext.class); when(iContext.getJob()).thenReturn(service); @@ -222,8 +233,7 @@ public void whenLoadPlusServiceSizeExceedsVehicleCapacityInOneDimension_itShould @Test public void whenLoadPlusServiceSizeJustFitIntoVehicle_itShouldReturnTrue() { - Service service = mock(Service.class); - when(service.getSize()).thenReturn(Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 2).addDimension(2, 2).build()); + Service service = createServiceMock(Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 2).addDimension(2, 2).build()); JobInsertionContext iContext = mock(JobInsertionContext.class); when(iContext.getJob()).thenReturn(service); @@ -235,8 +245,7 @@ public void whenLoadPlusServiceSizeJustFitIntoVehicle_itShouldReturnTrue() { @Test public void whenAddingAServiceAndNewVehicleDoesNotHaveTheCapacity_itShouldReturnFalse() { - Service service = mock(Service.class); - when(service.getSize()).thenReturn(Capacity.Builder.newInstance().addDimension(0, 2).build()); + Service service = createServiceMock(Capacity.Builder.newInstance().addDimension(0, 2).build()); Capacity atBeginning = Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 2).addDimension(2, 1).build(); Capacity atEnd = Capacity.Builder.newInstance().addDimension(0, 0).addDimension(1, 0).addDimension(2, 0).build(); @@ -263,8 +272,7 @@ public void whenAddingAServiceAndNewVehicleDoesNotHaveTheCapacity_itShouldReturn @Test public void whenAddingADeliveryAndNewVehicleDoesNotHaveTheCapacity_itShouldReturnFalse() { - Service service = mock(Delivery.class); - when(service.getSize()).thenReturn(Capacity.Builder.newInstance().addDimension(0, 2).build()); + Service service = createDeliveryMock(Capacity.Builder.newInstance().addDimension(0, 2).build()); Capacity atBeginning = Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 2).addDimension(2, 1).build(); Capacity atEnd = Capacity.Builder.newInstance().addDimension(0, 0).addDimension(1, 0).addDimension(2, 0).build(); @@ -291,8 +299,7 @@ public void whenAddingADeliveryAndNewVehicleDoesNotHaveTheCapacity_itShouldRetur @Test public void whenAddingAPickupAndNewVehicleDoesNotHaveTheCapacity_itShouldReturnFalse() { - Pickup service = mock(Pickup.class); - when(service.getSize()).thenReturn(Capacity.Builder.newInstance().addDimension(0, 2).build()); + Pickup service = createPickupMock(Capacity.Builder.newInstance().addDimension(0, 2).build()); Capacity atBeginning = Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 2).addDimension(2, 1).build(); Capacity atEnd = Capacity.Builder.newInstance().addDimension(0, 0).addDimension(1, 0).addDimension(2, 0).build(); @@ -329,7 +336,7 @@ public void whenNewVehicleCapacityIsNotSufficiant1_returnFalse() { VehicleRoute route = VehicleRoute.Builder.newInstance(vehicle).setJobActivityFactory(vrp.getJobActivityFactory()).addService(pickup2).build(); - stateManager.informInsertionStarts(Arrays.asList(route), null); + stateManager.informInsertionStarts(Collections.singletonList(route), null); JobInsertionContext iContext = new JobInsertionContext(route, pickup, vehicle, null, 0.); assertFalse(new ServiceLoadRouteLevelConstraint(stateManager).fulfilled(iContext)); } @@ -342,7 +349,7 @@ public void whenNewVehicleCapacityIsNotSufficiant2_returnFalse() { VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setType(type).setStartLocation(Location.newInstance("loc")).build(); VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle).addJob(service).addJob(serviceInRoute).build(); VehicleRoute route = VehicleRoute.Builder.newInstance(vehicle).setJobActivityFactory(vrp.getJobActivityFactory()).addService(serviceInRoute).build(); - stateManager.informInsertionStarts(Arrays.asList(route), null); + stateManager.informInsertionStarts(Collections.singletonList(route), null); JobInsertionContext iContext = new JobInsertionContext(route, service, vehicle, null, 0.); assertFalse(new ServiceLoadRouteLevelConstraint(stateManager).fulfilled(iContext)); diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/TestVehicleRoute.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/TestVehicleRoute.java index f5fdb91b4..ed23700e1 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/TestVehicleRoute.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/TestVehicleRoute.java @@ -306,7 +306,7 @@ public void whenAddingPickup_itShouldBeTreatedAsPickup() { TourActivity act = route.getActivities().get(0); assertTrue(act.getName().equals("pickup")); assertTrue(act instanceof PickupService); - assertTrue(((TourActivity.JobActivity) act).getJob() instanceof Pickup); + assertTrue(((TourActivity.JobActivity) act).getJob().getJobType().isPickup()); } @@ -320,7 +320,7 @@ public void whenAddingPickup_itShouldBeAdded() { TourActivity act = route.getActivities().get(0); assertTrue(act.getName().equals("pickup")); assertTrue(act instanceof PickupService); - assertTrue(((TourActivity.JobActivity) act).getJob() instanceof Pickup); + assertTrue(((TourActivity.JobActivity) act).getJob().getJobType().isPickup()); } @@ -334,7 +334,7 @@ public void whenAddingDelivery_itShouldBeTreatedAsDelivery() { TourActivity act = route.getActivities().get(0); assertTrue(act.getName().equals("delivery")); assertTrue(act instanceof DeliverService); - assertTrue(((TourActivity.JobActivity) act).getJob() instanceof Delivery); + assertTrue(((TourActivity.JobActivity) act).getJob().getJobType().isDelivery()); } @@ -348,7 +348,7 @@ public void whenAddingDelivery_itShouldBeAdded() { TourActivity act = route.getActivities().get(0); assertTrue(act.getName().equals("delivery")); assertTrue(act instanceof DeliverService); - assertTrue(((TourActivity.JobActivity) act).getJob() instanceof Delivery); + assertTrue(((TourActivity.JobActivity) act).getJob().getJobType().isDelivery()); } } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/VehicleRouteBuilderTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/VehicleRouteBuilderTest.java index dbb71cccb..d876416ac 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/VehicleRouteBuilderTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/VehicleRouteBuilderTest.java @@ -20,10 +20,12 @@ import com.graphhopper.jsprit.core.problem.Capacity; import com.graphhopper.jsprit.core.problem.Location; import com.graphhopper.jsprit.core.problem.driver.Driver; +import com.graphhopper.jsprit.core.problem.job.Job; import com.graphhopper.jsprit.core.problem.job.Shipment; import com.graphhopper.jsprit.core.problem.solution.route.activity.TimeWindow; import com.graphhopper.jsprit.core.problem.vehicle.Vehicle; import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; +import org.junit.Before; import org.junit.Test; import static org.junit.Assert.assertEquals; @@ -33,6 +35,32 @@ public class VehicleRouteBuilderTest { + private Driver driver; + private VehicleRoute.Builder builder; + private Capacity emptyCapacity; + private TimeWindow defaultTimeWindow; + + @Before + public void setUp() { + Vehicle vehicle = mock(Vehicle.class); + driver = mock(Driver.class); + builder = VehicleRoute.Builder.newInstance(vehicle, driver); + emptyCapacity = Capacity.Builder.newInstance().build(); + defaultTimeWindow = TimeWindow.newInstance(0., 10.); + } + + private Shipment createMockShipment(String deliveryLocationId) { + Shipment shipment = mock(Shipment.class); + when(shipment.getJobType()).thenReturn(Job.Type.SHIPMENT); + when(shipment.getSize()).thenReturn(emptyCapacity); + when(shipment.getPickupTimeWindow()).thenReturn(defaultTimeWindow); + when(shipment.getDeliveryTimeWindow()).thenReturn(defaultTimeWindow); + if (deliveryLocationId != null) { + when(shipment.getDeliveryLocation()).thenReturn(loc(deliveryLocationId)); + } + return shipment; + } + @Test(expected = IllegalArgumentException.class) public void whenDeliveryIsAddedBeforePickup_throwsException() { Shipment s = mock(Shipment.class); @@ -41,110 +69,83 @@ public void whenDeliveryIsAddedBeforePickup_throwsException() { } @Test(expected = IllegalArgumentException.class) - public void whenPickupIsAddedTwice_throwsException() { - Shipment s = mock(Shipment.class); - when(s.getSize()).thenReturn(Capacity.Builder.newInstance().build()); - when(s.getPickupTimeWindow()).thenReturn(TimeWindow.newInstance(0., 10.)); - VehicleRoute.Builder builder = VehicleRoute.Builder.newInstance(mock(Vehicle.class), mock(Driver.class)); - builder.addPickup(s); - builder.addPickup(s); + public void shouldThrowException_whenPickupIsAddedTwice() { + Shipment shipment = createMockShipment(null); + + builder.addPickup(shipment); + builder.addPickup(shipment); } @Test(expected = IllegalArgumentException.class) - public void whenShipmentIsPickedDeliveredAndDeliveredAgain_throwsException() { - Shipment s = mock(Shipment.class); - Capacity capacity = Capacity.Builder.newInstance().build(); - when(s.getSize()).thenReturn(capacity); - when(s.getPickupTimeWindow()).thenReturn(TimeWindow.newInstance(0.,10.)); - when(s.getDeliveryTimeWindow()).thenReturn(TimeWindow.newInstance(0.,10.)); - VehicleRoute.Builder builder = VehicleRoute.Builder.newInstance(mock(Vehicle.class), mock(Driver.class)); - builder.addPickup(s); - builder.addDelivery(s); - builder.addDelivery(s); + public void shouldThrowException_whenShipmentIsDeliveredTwice() { + Shipment shipment = createMockShipment(null); + + builder.addPickup(shipment); + builder.addDelivery(shipment); + builder.addDelivery(shipment); } @Test(expected = IllegalArgumentException.class) - public void whenShipmentIsPickedUpThoughButHasNotBeenDeliveredAndRouteIsBuilt_throwsException() { - Shipment s = mock(Shipment.class); - Capacity capacity = Capacity.Builder.newInstance().build(); - Shipment s2 = mock(Shipment.class); - when(s2.getSize()).thenReturn(capacity); - when(s.getSize()).thenReturn(capacity); - when(s2.getPickupTimeWindow()).thenReturn(TimeWindow.newInstance(0.,10.)); - when(s2.getDeliveryTimeWindow()).thenReturn(TimeWindow.newInstance(0.,10.)); - when(s.getPickupTimeWindow()).thenReturn(TimeWindow.newInstance(0.,10.)); - when(s.getDeliveryTimeWindow()).thenReturn(TimeWindow.newInstance(0.,10.)); - VehicleRoute.Builder builder = VehicleRoute.Builder.newInstance(mock(Vehicle.class), mock(Driver.class)); - builder.addPickup(s); - builder.addPickup(s2); - builder.addDelivery(s); + public void shouldThrowException_whenBuildingRouteWithUndeliveredShipment() { + Shipment shipment1 = createMockShipment(null); + Shipment shipment2 = createMockShipment(null); + + builder.addPickup(shipment1); + builder.addPickup(shipment2); + builder.addDelivery(shipment1); + builder.build(); } @Test - public void whenTwoShipmentsHaveBeenAdded_nuOfActivitiesMustEqualFour() { - Shipment s = mock(Shipment.class); - Shipment s2 = mock(Shipment.class); - Capacity capacity = Capacity.Builder.newInstance().build(); - when(s.getSize()).thenReturn(capacity); - when(s2.getSize()).thenReturn(capacity); - when(s2.getPickupTimeWindow()).thenReturn(TimeWindow.newInstance(0.,10.)); - when(s2.getDeliveryTimeWindow()).thenReturn(TimeWindow.newInstance(0.,10.)); - when(s.getPickupTimeWindow()).thenReturn(TimeWindow.newInstance(0.,10.)); - when(s.getDeliveryTimeWindow()).thenReturn(TimeWindow.newInstance(0.,10.)); - VehicleRoute.Builder builder = VehicleRoute.Builder.newInstance(mock(Vehicle.class), mock(Driver.class)); - builder.addPickup(s); - builder.addPickup(s2); - builder.addDelivery(s); - builder.addDelivery(s2); + public void shouldHaveFourActivities_whenTwoShipmentsAreAdded() { + Shipment shipment1 = createMockShipment(null); + Shipment shipment2 = createMockShipment(null); + + builder.addPickup(shipment1) + .addPickup(shipment2) + .addDelivery(shipment1) + .addDelivery(shipment2); + VehicleRoute route = builder.build(); + assertEquals(4, route.getTourActivities().getActivities().size()); } @Test - public void whenBuildingClosedRoute_routeEndShouldHaveLocationOfVehicle() { - Shipment s = mock(Shipment.class); - Shipment s2 = mock(Shipment.class); - Capacity capacity = Capacity.Builder.newInstance().build(); - when(s.getSize()).thenReturn(capacity); - when(s2.getSize()).thenReturn(capacity); - when(s2.getPickupTimeWindow()).thenReturn(TimeWindow.newInstance(0.,10.)); - when(s2.getDeliveryTimeWindow()).thenReturn(TimeWindow.newInstance(0.,10.)); - when(s.getPickupTimeWindow()).thenReturn(TimeWindow.newInstance(0.,10.)); - when(s.getDeliveryTimeWindow()).thenReturn(TimeWindow.newInstance(0.,10.)); + public void shouldUseVehicleLocation_whenBuildingClosedRoute() { + Shipment s = createMockShipment(null); + Shipment s2 = createMockShipment(null); + Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("vehLoc")).setEndLocation(Location.newInstance("vehLoc")) .build(); - VehicleRoute.Builder builder = VehicleRoute.Builder.newInstance(vehicle, mock(Driver.class)); - builder.addPickup(s); - builder.addPickup(s2); - builder.addDelivery(s); - builder.addDelivery(s2); - VehicleRoute route = builder.build(); + VehicleRoute route = VehicleRoute.Builder.newInstance(vehicle, driver) + .addPickup(s) + .addPickup(s2) + .addDelivery(s) + .addDelivery(s2) + .build(); + assertEquals("vehLoc", route.getEnd().getLocation().getId()); } @Test - public void whenBuildingOpenRoute_routeEndShouldHaveLocationOfLastActivity() { - Shipment s = mock(Shipment.class); - Shipment s2 = mock(Shipment.class); - Capacity capacity = Capacity.Builder.newInstance().build(); - when(s.getSize()).thenReturn(capacity); - when(s2.getSize()).thenReturn(capacity); - when(s2.getDeliveryLocation()).thenReturn(loc("delLoc")); - when(s.getPickupTimeWindow()).thenReturn(TimeWindow.newInstance(0.,10.)); - when(s.getDeliveryTimeWindow()).thenReturn(TimeWindow.newInstance(0.,10.)); - when(s2.getPickupTimeWindow()).thenReturn(TimeWindow.newInstance(0.,10.)); - when(s2.getDeliveryTimeWindow()).thenReturn(TimeWindow.newInstance(0.,10.)); + public void shouldUseLastActivityLocation_whenBuildingOpenRoute() { + Shipment s = createMockShipment(null); + Shipment s2 = createMockShipment("vehLoc"); + Vehicle vehicle = mock(Vehicle.class); when(vehicle.isReturnToDepot()).thenReturn(false); when(vehicle.getStartLocation()).thenReturn(loc("vehLoc")); - VehicleRoute.Builder builder = VehicleRoute.Builder.newInstance(vehicle, mock(Driver.class)); - builder.addPickup(s); - builder.addPickup(s2); - builder.addDelivery(s); - builder.addDelivery(s2); - VehicleRoute route = builder.build(); + + VehicleRoute route = VehicleRoute.Builder.newInstance(vehicle, mock(Driver.class)) + .addPickup(s) + .addPickup(s2) + .addDelivery(s) + .addDelivery(s2) + .build(); + assertEquals(route.getEnd().getLocation().getId(), s2.getDeliveryLocation().getId()); } @@ -153,27 +154,22 @@ private Location loc(String delLoc) { } @Test - public void whenSettingDepartureTime() { - Shipment s = mock(Shipment.class); - Shipment s2 = mock(Shipment.class); - Capacity capacity = Capacity.Builder.newInstance().build(); - when(s.getSize()).thenReturn(capacity); - when(s2.getSize()).thenReturn(capacity); - when(s2.getDeliveryLocation()).thenReturn(Location.Builder.newInstance().setId("delLoc").build()); - when(s.getPickupTimeWindow()).thenReturn(TimeWindow.newInstance(0.,10.)); - when(s.getDeliveryTimeWindow()).thenReturn(TimeWindow.newInstance(0.,10.)); - when(s2.getPickupTimeWindow()).thenReturn(TimeWindow.newInstance(0., 10.)); - when(s2.getDeliveryTimeWindow()).thenReturn(TimeWindow.newInstance(0.,10.)); + public void houldSetDepartureTimeCorrectly() { + Shipment s = createMockShipment(null); + Shipment s2 = createMockShipment("delLoc"); + Vehicle vehicle = mock(Vehicle.class); when(vehicle.isReturnToDepot()).thenReturn(false); when(vehicle.getStartLocation()).thenReturn(Location.Builder.newInstance().setId("vehLoc").build()); - VehicleRoute.Builder builder = VehicleRoute.Builder.newInstance(vehicle, mock(Driver.class)); - builder.addPickup(s); - builder.addPickup(s2); - builder.addDelivery(s); - builder.addDelivery(s2); - builder.setDepartureTime(100); - VehicleRoute route = builder.build(); + + VehicleRoute route = VehicleRoute.Builder.newInstance(vehicle, mock(Driver.class)) + .addPickup(s) + .addPickup(s2) + .addDelivery(s) + .addDelivery(s2) + .setDepartureTime(100) + .build(); + assertEquals(100.0, route.getDepartureTime(), 0.01); assertEquals(100.0, route.getStart().getEndTime(), 0.01); } From eccec9cb6939cc32f156a426019fb5dd55e3090d Mon Sep 17 00:00:00 2001 From: oblonski Date: Sun, 16 Feb 2025 09:17:27 +0100 Subject: [PATCH 160/191] Simplify --- .../core/algorithm/state/StateManager.java | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/StateManager.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/StateManager.java index 9a9fc901f..c57dcf732 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/StateManager.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/StateManager.java @@ -79,15 +79,15 @@ public class StateManager implements RouteAndActivityStateGetter, IterationStart private Object[][][] vehicleDependentActivityStates; - private Map routeStateMap; + private final Map routeStateMap; - private Map vehicleDependentRouteStateMap; + private final Map vehicleDependentRouteStateMap; private Object[][] routeStatesArr; private Object[][][] vehicleDependentRouteStatesArr; - private VehicleRoutingProblem vrp; + private final VehicleRoutingProblem vrp; private final boolean isIndexedBased; @@ -223,15 +223,18 @@ private void fill_twoDimArr(Object[][] states, Object o) { */ @Override public T getActivityState(TourActivity act, StateId stateId, Class type) { - if (act.getIndex() == 0) throw new IllegalStateException("activity index is 0. this should not be."); - if (act.getIndex() < 0) return null; - T state; + final int actIndex = act.getIndex(); + if (actIndex <= 0) { + if (actIndex == 0) throw new IllegalStateException("activity index is 0. this should not be."); + return null; + } + final int stateIndex = stateId.getIndex(); + final Object state = activityStates[actIndex][stateIndex]; try { - state = type.cast(activityStates[act.getIndex()][stateId.getIndex()]); + return type.cast(state); } catch (ClassCastException e) { - throw getClassCastException(e, stateId, type.toString(), activityStates[act.getIndex()][stateId.getIndex()].getClass().toString()); + throw getClassCastException(e, stateId, type.toString(), state.getClass().toString()); } - return state; } /** From 8af8024d66e41233957eb70378d23d645505a49d Mon Sep 17 00:00:00 2001 From: oblonski Date: Sun, 16 Feb 2025 11:26:16 +0100 Subject: [PATCH 161/191] perf: optimize array operations in StateManager - Add efficient array growth strategy with reuse - Improve state clearing using System.arraycopy - Add pre-allocated null array for faster clearing - Reduce memory allocations during resizing --- .../core/algorithm/state/StateManager.java | 226 +++++++++--------- 1 file changed, 117 insertions(+), 109 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/StateManager.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/StateManager.java index c57dcf732..146e62df3 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/StateManager.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/StateManager.java @@ -47,17 +47,22 @@ */ public class StateManager implements RouteAndActivityStateGetter, IterationStartsListener, RuinListener, InsertionStartsListener, JobInsertedListener, InsertionEndsListener { - private RouteActivityVisitor routeActivityVisitor = new RouteActivityVisitor(); + // Growth factor for array resizing + private static final double GROWTH_FACTOR = 1.5; + // Initial capacity - should be tuned based on typical usage + private static final int INITIAL_CAPACITY = 32; - private ReverseRouteActivityVisitor revRouteActivityVisitor = new ReverseRouteActivityVisitor(); + private final RouteActivityVisitor routeActivityVisitor = new RouteActivityVisitor(); - private Collection routeVisitors = new ArrayList<>(); + private final ReverseRouteActivityVisitor revRouteActivityVisitor = new ReverseRouteActivityVisitor(); - private RuinListeners ruinListeners = new RuinListeners(); + private final Collection routeVisitors = new ArrayList<>(); - private InsertionListeners insertionListeners = new InsertionListeners(); + private final RuinListeners ruinListeners = new RuinListeners(); - private Collection updaters = new ArrayList<>(); + private final InsertionListeners insertionListeners = new InsertionListeners(); + + private final Collection updaters = new ArrayList<>(); private boolean updateLoad = false; @@ -67,11 +72,11 @@ public class StateManager implements RouteAndActivityStateGetter, IterationStart private int stateIndexCounter; - private Map createdStateIds = new HashMap<>(); + private final Map createdStateIds = new HashMap<>(); - private int nuActivities; + private final int nuActivities; - private int nuVehicleTypeKeys; + private final int nuVehicleTypeKeys; private Object[] problemStates; @@ -79,20 +84,40 @@ public class StateManager implements RouteAndActivityStateGetter, IterationStart private Object[][][] vehicleDependentActivityStates; + private Object[] nullArray; + private final Map routeStateMap; private final Map vehicleDependentRouteStateMap; - private Object[][] routeStatesArr; + int getMaxIndexOfVehicleTypeIdentifiers() { + return nuVehicleTypeKeys; + } - private Object[][][] vehicleDependentRouteStatesArr; + private void incStateIndexCounter() { + stateIndexCounter++; + } - private final VehicleRoutingProblem vrp; - private final boolean isIndexedBased; + /** + * Constructs the stateManager with the specified VehicleRoutingProblem. + * + * @param vehicleRoutingProblem the corresponding VehicleRoutingProblem + */ + public StateManager(VehicleRoutingProblem vehicleRoutingProblem) { + stateIndexCounter = initialNoStates; + nuActivities = Math.max(10, vehicleRoutingProblem.getNuActivities() + 1); + nuVehicleTypeKeys = Math.max(3, getNuVehicleTypes(vehicleRoutingProblem) + 2); + routeStateMap = new HashMap<>(); + vehicleDependentRouteStateMap = new HashMap<>(); + initArrays(); + } - int getMaxIndexOfVehicleTypeIdentifiers() { - return nuVehicleTypeKeys; + private void initArrays() { + activityStates = new Object[nuActivities][StateManager.INITIAL_CAPACITY]; + vehicleDependentActivityStates = new Object[nuActivities][nuVehicleTypeKeys][StateManager.INITIAL_CAPACITY]; + problemStates = new Object[StateManager.INITIAL_CAPACITY]; + nullArray = new Object[StateManager.INITIAL_CAPACITY]; } /** @@ -106,44 +131,52 @@ int getMaxIndexOfVehicleTypeIdentifiers() { * @throws java.lang.IllegalStateException if name of state is already used internally */ public StateId createStateId(String name) { - if (createdStateIds.containsKey(name)) return createdStateIds.get(name); + // Check existing state + if (createdStateIds.containsKey(name)) { + return createdStateIds.get(name); + } + + // Check if we need to grow arrays if (stateIndexCounter >= activityStates[0].length) { - activityStates = new Object[nuActivities][stateIndexCounter + 1]; - vehicleDependentActivityStates = new Object[nuActivities][nuVehicleTypeKeys][stateIndexCounter + 1]; - routeStatesArr = new Object[vrp.getVehicles().size() + 2][stateIndexCounter+1]; - vehicleDependentRouteStatesArr = new Object[vrp.getVehicles().size() + 2][nuVehicleTypeKeys][stateIndexCounter+1]; - problemStates = new Object[stateIndexCounter+1]; + growArrays(); } + + // Create new state ID StateId id = StateFactory.createId(name, stateIndexCounter); incStateIndexCounter(); createdStateIds.put(name, id); return id; } - private void incStateIndexCounter() { - stateIndexCounter++; - } + private void growArrays() { + // Calculate new capacity + int oldCapacity = activityStates[0].length; + int newCapacity = Math.max((int) (oldCapacity * GROWTH_FACTOR), oldCapacity + 1); + // Create new arrays + Object[][] newActivityStates = new Object[nuActivities][newCapacity]; + Object[][][] newVehicleDependentActivityStates = new Object[nuActivities][nuVehicleTypeKeys][newCapacity]; + Object[] newProblemStates = new Object[newCapacity]; - /** - * Constructs the stateManager with the specified VehicleRoutingProblem. - * - * @param vehicleRoutingProblem the corresponding VehicleRoutingProblem - */ - public StateManager(VehicleRoutingProblem vehicleRoutingProblem) { - stateIndexCounter = initialNoStates; - int initialStateArrayLength = 30; - this.vrp = vehicleRoutingProblem; - nuActivities = Math.max(10, vrp.getNuActivities() + 1); - nuVehicleTypeKeys = Math.max(3, getNuVehicleTypes(vrp) + 2); - activityStates = new Object[nuActivities][initialStateArrayLength]; - vehicleDependentActivityStates = new Object[nuActivities][nuVehicleTypeKeys][initialStateArrayLength]; - isIndexedBased = false; - routeStateMap = new HashMap<>(); - vehicleDependentRouteStateMap = new HashMap<>(); - problemStates = new Object[initialStateArrayLength]; + // Copy existing data using System.arraycopy + copyStates(activityStates, newActivityStates); + copyStates(vehicleDependentActivityStates, newVehicleDependentActivityStates); + System.arraycopy(problemStates, 0, newProblemStates, 0, problemStates.length); + + // Assign new arrays + activityStates = newActivityStates; + vehicleDependentActivityStates = newVehicleDependentActivityStates; + problemStates = newProblemStates; + nullArray = new Object[newCapacity]; + } + + private void copyStates(Object[][] source, Object[][] target) { + for (int i = 0; i < source.length; i++) { + System.arraycopy(source[i], 0, target[i], 0, source[i].length); + } } + private int getNuVehicleTypes(VehicleRoutingProblem vrp) { int maxIndex = 0; for (Vehicle v : vrp.getVehicles()) { @@ -179,36 +212,42 @@ public T getProblemState(StateId stateId, Class type) { } /** - * Clears all states, i.e. set all value to null. + * Clears all states by setting all values to null. + * Uses optimized sequential clearing with System.arraycopy. */ public void clear() { - fill_twoDimArr(activityStates, null); - fill_threeDimArr(vehicleDependentActivityStates, null); - if(isIndexedBased) { - fill_twoDimArr(routeStatesArr, null); - fill_threeDimArr(vehicleDependentRouteStatesArr, null); - } - else{ - routeStateMap.clear(); - vehicleDependentRouteStateMap.clear(); - } - Arrays.fill(problemStates,null); + // Clear activity states + clearActivityStates(); + + // Clear vehicle dependent activity states + clearVehicleDependentStates(); + + // Clear maps + routeStateMap.clear(); + vehicleDependentRouteStateMap.clear(); + + // Clear problem states + System.arraycopy(nullArray, 0, problemStates, 0, problemStates.length); } - private void fill_threeDimArr(Object[][][] states, Object o) { - for (Object[][] twoDimArr : states) { - for (Object[] oneDimArr : twoDimArr) { - Arrays.fill(oneDimArr, o); - } + private void clearActivityStates() { + final int rowLength = activityStates[0].length; + for (int i = 0; i < activityStates.length; i++) { + System.arraycopy(nullArray, 0, activityStates[i], 0, rowLength); } } - private void fill_twoDimArr(Object[][] states, Object o) { - for (Object[] rows : states) { - Arrays.fill(rows, o); + private void clearVehicleDependentStates() { + final int innerLength = vehicleDependentActivityStates[0][0].length; + for (int i = 0; i < vehicleDependentActivityStates.length; i++) { + Object[][] middleArray = vehicleDependentActivityStates[i]; + for (int j = 0; j < middleArray.length; j++) { + System.arraycopy(nullArray, 0, middleArray[j], 0, innerLength); + } } } + /** * Returns associated state for the specified activity and stateId, or it returns null if no value is associated. *

If type class is not equal to the associated type class of the requested state value, it throws a ClassCastException.

@@ -299,21 +338,12 @@ private ClassCastException getClassCastException(ClassCastException e, StateId s public T getRouteState(VehicleRoute route, StateId stateId, Class type) { if (route == null) return null; T state = null; - if(isIndexedBased){ - try { - state = type.cast(routeStatesArr[route.getVehicle().getIndex()][stateId.getIndex()]); - } catch (ClassCastException e) { - throw getClassCastException(e,stateId,type.toString(),routeStatesArr[route.getVehicle().getIndex()][stateId.getIndex()].getClass().toString()); - } - } - else { - try { - if (routeStateMap.containsKey(route)) { - state = type.cast(routeStateMap.get(route)[stateId.getIndex()]); - } - } catch (ClassCastException e) { - throw getClassCastException(e, stateId, type.toString(), routeStateMap.get(route)[stateId.getIndex()].getClass().toString()); + try { + if (routeStateMap.containsKey(route)) { + state = type.cast(routeStateMap.get(route)[stateId.getIndex()]); } + } catch (ClassCastException e) { + throw getClassCastException(e, stateId, type.toString(), routeStateMap.get(route)[stateId.getIndex()].getClass().toString()); } return state; } @@ -349,21 +379,12 @@ public boolean hasRouteState(VehicleRoute route, Vehicle vehicle, StateId stateI public T getRouteState(VehicleRoute route, Vehicle vehicle, StateId stateId, Class type) { // if (route.isEmpty()) return null; T state = null; - if(isIndexedBased){ - try { - state = type.cast(vehicleDependentRouteStatesArr[route.getVehicle().getIndex()][vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()]); - } catch (ClassCastException e) { - throw getClassCastException(e, stateId, type.toString(), vehicleDependentRouteStatesArr[route.getVehicle().getIndex()][vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()].getClass().toString()); - } - } - else { - try { - if (vehicleDependentRouteStateMap.containsKey(route)) { - state = type.cast(vehicleDependentRouteStateMap.get(route)[vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()]); - } - } catch (ClassCastException e) { - throw getClassCastException(e, stateId, type.toString(), vehicleDependentRouteStateMap.get(route)[vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()].getClass().toString()); + try { + if (vehicleDependentRouteStateMap.containsKey(route)) { + state = type.cast(vehicleDependentRouteStateMap.get(route)[vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()]); } + } catch (ClassCastException e) { + throw getClassCastException(e, stateId, type.toString(), vehicleDependentRouteStateMap.get(route)[vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()].getClass().toString()); } return state; } @@ -454,30 +475,17 @@ public void putRouteState(VehicleRoute route, Vehicle vehicle, StateId state } void putTypedInternalRouteState(VehicleRoute route, StateId stateId, T state) { -// if (route.isEmpty()) return; - if(isIndexedBased){ - routeStatesArr[route.getVehicle().getIndex()][stateId.getIndex()] = state; - } - else { - if (!routeStateMap.containsKey(route)) { - routeStateMap.put(route, new Object[stateIndexCounter]); - } - routeStateMap.get(route)[stateId.getIndex()] = state; + if (!routeStateMap.containsKey(route)) { + routeStateMap.put(route, new Object[stateIndexCounter]); } + routeStateMap.get(route)[stateId.getIndex()] = state; } void putTypedInternalRouteState(VehicleRoute route, Vehicle vehicle, StateId stateId, T state) { -// if (route.isEmpty()) return; - if(isIndexedBased){ - vehicleDependentRouteStatesArr[route.getVehicle().getIndex()][vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()] = state; + if (!vehicleDependentRouteStateMap.containsKey(route)) { + vehicleDependentRouteStateMap.put(route, new Object[nuVehicleTypeKeys][stateIndexCounter]); } - else { - if (!vehicleDependentRouteStateMap.containsKey(route)) { - vehicleDependentRouteStateMap.put(route, new Object[nuVehicleTypeKeys][stateIndexCounter]); - } - vehicleDependentRouteStateMap.get(route)[vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()] = state; - } - + vehicleDependentRouteStateMap.get(route)[vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()] = state; } /** @@ -572,7 +580,7 @@ public void informInsertionStarts(Collection vehicleRoutes, Collec } public void reCalculateStates(VehicleRoute route){ - informInsertionStarts(Arrays.asList(route), Collections.emptyList()); + informInsertionStarts(Collections.singletonList(route), Collections.emptyList()); } @Override From 3842271c0090057386d4c7817f6bea406a9e444c Mon Sep 17 00:00:00 2001 From: oblonski Date: Sun, 16 Feb 2025 11:48:30 +0100 Subject: [PATCH 162/191] perf: use route indexing with Trove maps for state storage - Add index field to VehicleRoute for efficient state lookup - Replace HashMap with TIntObjectMap for better performance - Optimize route state access methods using indices - Reduce map operations and array lookups in hot methods --- jsprit-core/pom.xml | 6 + .../core/algorithm/state/StateManager.java | 144 ++++++++++++++---- .../problem/solution/route/VehicleRoute.java | 10 ++ 3 files changed, 134 insertions(+), 26 deletions(-) diff --git a/jsprit-core/pom.xml b/jsprit-core/pom.xml index fd262d0da..bdcfb8f88 100644 --- a/jsprit-core/pom.xml +++ b/jsprit-core/pom.xml @@ -30,6 +30,12 @@ + + net.sf.trove4j + trove4j + 3.0.3 + + org.apache.commons commons-math3 diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/StateManager.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/StateManager.java index 146e62df3..8338c6331 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/StateManager.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/StateManager.java @@ -34,6 +34,8 @@ import com.graphhopper.jsprit.core.problem.solution.route.activity.TourActivity; import com.graphhopper.jsprit.core.problem.solution.route.state.RouteAndActivityStateGetter; import com.graphhopper.jsprit.core.problem.vehicle.Vehicle; +import gnu.trove.map.TIntObjectMap; +import gnu.trove.map.hash.TIntObjectHashMap; import java.util.*; @@ -86,9 +88,16 @@ public class StateManager implements RouteAndActivityStateGetter, IterationStart private Object[] nullArray; - private final Map routeStateMap; +// private final Map routeStateMap; +// +// private final Map vehicleDependentRouteStateMap; + + private final TIntObjectMap routeStateMap; + private final TIntObjectMap vehicleDependentRouteStateMap; + + private int nextRouteIndex = 0; + private final Set availableIndices; - private final Map vehicleDependentRouteStateMap; int getMaxIndexOfVehicleTypeIdentifiers() { return nuVehicleTypeKeys; @@ -108,8 +117,9 @@ public StateManager(VehicleRoutingProblem vehicleRoutingProblem) { stateIndexCounter = initialNoStates; nuActivities = Math.max(10, vehicleRoutingProblem.getNuActivities() + 1); nuVehicleTypeKeys = Math.max(3, getNuVehicleTypes(vehicleRoutingProblem) + 2); - routeStateMap = new HashMap<>(); - vehicleDependentRouteStateMap = new HashMap<>(); + routeStateMap = new TIntObjectHashMap<>(51, 0.5f, -1); + vehicleDependentRouteStateMap = new TIntObjectHashMap<>(51, 0.5f, -1); + availableIndices = new HashSet<>(); initArrays(); } @@ -120,6 +130,33 @@ private void initArrays() { nullArray = new Object[StateManager.INITIAL_CAPACITY]; } + private int getOrCreateRouteIndex(VehicleRoute route) { + int index = route.getIndex(); + if (index == -1) { + // This should now happen less frequently since routes in solutions + // are pre-indexed at iteration start + if (!availableIndices.isEmpty()) { + index = availableIndices.iterator().next(); + availableIndices.remove(index); + } else { + index = nextRouteIndex++; + } + route.setIndex(index); + initializeRouteStates(index); + } + return index; + } + + public void releaseRouteIndex(VehicleRoute route) { + int index = route.getIndex(); + if (index != -1) { + routeStateMap.remove(index); + vehicleDependentRouteStateMap.remove(index); + availableIndices.add(index); + route.setIndex(-1); + } + } + /** * Create and returns a stateId with the specified state-name. *

@@ -337,15 +374,16 @@ private ClassCastException getClassCastException(ClassCastException e, StateId s @Override public T getRouteState(VehicleRoute route, StateId stateId, Class type) { if (route == null) return null; - T state = null; + int routeIndex = getOrCreateRouteIndex(route); + Object[] states = routeStateMap.get(routeIndex); + if (states == null) return null; + try { - if (routeStateMap.containsKey(route)) { - state = type.cast(routeStateMap.get(route)[stateId.getIndex()]); - } + return type.cast(states[stateId.getIndex()]); } catch (ClassCastException e) { - throw getClassCastException(e, stateId, type.toString(), routeStateMap.get(route)[stateId.getIndex()].getClass().toString()); + throw getClassCastException(e, stateId, type.toString(), + states[stateId.getIndex()].getClass().toString()); } - return state; } /** @@ -358,9 +396,12 @@ public T getRouteState(VehicleRoute route, StateId stateId, Class type) { */ @SuppressWarnings("UnusedDeclaration") public boolean hasRouteState(VehicleRoute route, Vehicle vehicle, StateId stateId) { - if (!vehicleDependentRouteStateMap.containsKey(route)) return false; - return vehicleDependentRouteStateMap.get(route)[vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()] != null; -// return vehicle_dependent_route_states[route.getActivities().get(0).getIndex()][vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()] != null; + int routeIndex = getOrCreateRouteIndex(route); + Object[][] states = vehicleDependentRouteStateMap.get(routeIndex); + if (states == null) { + return false; + } + return states[vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()] != null; } /** @@ -377,16 +418,25 @@ public boolean hasRouteState(VehicleRoute route, Vehicle vehicle, StateId stateI * @throws java.lang.IllegalStateException if !route.isEmpty() and act(0).getIndex()==0 since this suggests that act has no index at all */ public T getRouteState(VehicleRoute route, Vehicle vehicle, StateId stateId, Class type) { -// if (route.isEmpty()) return null; - T state = null; + int routeIndex = getOrCreateRouteIndex(route); + Object[][] states = vehicleDependentRouteStateMap.get(routeIndex); + if (states == null) { + return null; + } + + int vehicleTypeIndex = vehicle.getVehicleTypeIdentifier().getIndex(); + int stateIndex = stateId.getIndex(); + + Object state = states[vehicleTypeIndex][stateIndex]; + if (state == null) { + return null; + } + try { - if (vehicleDependentRouteStateMap.containsKey(route)) { - state = type.cast(vehicleDependentRouteStateMap.get(route)[vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()]); - } + return type.cast(state); } catch (ClassCastException e) { - throw getClassCastException(e, stateId, type.toString(), vehicleDependentRouteStateMap.get(route)[vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()].getClass().toString()); + throw getClassCastException(e, stateId, type.toString(), state.getClass().toString()); } - return state; } /** @@ -475,17 +525,25 @@ public void putRouteState(VehicleRoute route, Vehicle vehicle, StateId state } void putTypedInternalRouteState(VehicleRoute route, StateId stateId, T state) { - if (!routeStateMap.containsKey(route)) { - routeStateMap.put(route, new Object[stateIndexCounter]); + int routeIndex = getOrCreateRouteIndex(route); + Object[] states = routeStateMap.get(routeIndex); + if (states == null) { + states = new Object[stateIndexCounter]; + routeStateMap.put(routeIndex, states); } - routeStateMap.get(route)[stateId.getIndex()] = state; + states[stateId.getIndex()] = state; } void putTypedInternalRouteState(VehicleRoute route, Vehicle vehicle, StateId stateId, T state) { - if (!vehicleDependentRouteStateMap.containsKey(route)) { - vehicleDependentRouteStateMap.put(route, new Object[nuVehicleTypeKeys][stateIndexCounter]); + int routeIndex = getOrCreateRouteIndex(route); + Object[][] states = vehicleDependentRouteStateMap.get(routeIndex); + + if (states == null) { + states = new Object[nuVehicleTypeKeys][stateIndexCounter]; + vehicleDependentRouteStateMap.put(routeIndex, states); } - vehicleDependentRouteStateMap.get(route)[vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()] = state; + + states[vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()] = state; } /** @@ -585,7 +643,41 @@ public void reCalculateStates(VehicleRoute route){ @Override public void informIterationStarts(int i, VehicleRoutingProblem problem, Collection solutions) { + nextRouteIndex = 0; + availableIndices.clear(); clear(); + + // Assign new indices to all routes in all solutions + for (VehicleRoutingProblemSolution solution : solutions) { + Collection routes = solution.getRoutes(); + assignNewIndicesToRoutes(routes); + } + } + + private void assignNewIndicesToRoutes(Collection routes) { + for (VehicleRoute route : routes) { + // Reset any existing index + route.setIndex(-1); + + // Assign new sequential index + int newIndex = nextRouteIndex++; + route.setIndex(newIndex); + + // Pre-allocate state arrays for this route if needed + initializeRouteStates(newIndex); + } + } + + private void initializeRouteStates(int routeIndex) { + // Initialize route states if they will be needed + if (!routeStateMap.containsKey(routeIndex)) { + routeStateMap.put(routeIndex, new Object[stateIndexCounter]); + } + + if (!vehicleDependentRouteStateMap.containsKey(routeIndex)) { + vehicleDependentRouteStateMap.put(routeIndex, + new Object[nuVehicleTypeKeys][stateIndexCounter]); + } } @Override diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/VehicleRoute.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/VehicleRoute.java index 9743d9479..c36a4026c 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/VehicleRoute.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/VehicleRoute.java @@ -335,6 +335,8 @@ public VehicleRoute build() { private End end; + private int index = -1; + /** * Copy constructor copying a route. * @@ -361,6 +363,14 @@ private VehicleRoute(Builder builder) { this.end = builder.end; } + public int getIndex() { + return index; + } + + public void setIndex(int index) { + this.index = index; + } + /** * Returns an unmodifiable list of activities on this route (without start/end). * From 571c5bd4dc9d1cdd814871162d3a80c9d7cf7997 Mon Sep 17 00:00:00 2001 From: oblonski Date: Sun, 16 Feb 2025 17:02:47 +0100 Subject: [PATCH 163/191] fix: correct total operation time calculation in SolutionAnalyser --- .../core/analysis/SolutionAnalyser.java | 2 +- .../core/analysis/SolutionAnalyserTest.java | 23 +++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/analysis/SolutionAnalyser.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/analysis/SolutionAnalyser.java index 7d08426f7..315a18b5c 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/analysis/SolutionAnalyser.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/analysis/SolutionAnalyser.java @@ -204,7 +204,7 @@ private void calculateTimeAndCostStates() { ); timeViolationStates.put(route.getEnd(), endTimeWindowViolation); totalTimeWindowViolation += endTimeWindowViolation; - totalOperationTime = currentTime; + totalOperationTime = currentTime - route.getDepartureTime(); } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/analysis/SolutionAnalyserTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/analysis/SolutionAnalyserTest.java index 2906154d4..9120ee832 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/analysis/SolutionAnalyserTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/analysis/SolutionAnalyserTest.java @@ -651,6 +651,29 @@ public void operationTime_OfRoute1ShouldWork() { assertEquals(46. + 40., analyser.getOperationTime(route), 0.01); } + @Test + public void whenSettingStartTime_operationTimeShouldWork() { + VehicleType type = VehicleTypeImpl.Builder.newInstance("type").setFixedCost(100.).setCostPerDistance(2.).addCapacityDimension(0, 15).build(); + VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v2").setType(type) + .setEarliestStart(100) + .setStartLocation(Location.newInstance(5, 0)).build(); + Service service = Service.Builder.newInstance("s").setLocation(Location.newInstance(20, 0)).build(); + VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance() + .addVehicle(vehicle) + .addJob(service) + .setRoutingCost(new ManhattanCosts()) + .build(); + + VehicleRoute route = VehicleRoute.Builder.newInstance(vehicle) + .setJobActivityFactory(vrp.getJobActivityFactory()) + .addService(service) + .build(); + + SolutionAnalyser analyser = new SolutionAnalyser(vrp, new VehicleRoutingProblemSolution(Collections.singletonList(route), 300), vrp.getTransportCosts()); + assertEquals(30, analyser.getOperationTime(), 0.01); + assertEquals(30, analyser.getOperationTime(route), 0.01); + } + @Test public void waitingTime_OfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); From 3c6bb513ecb74bda2c5b82045506f3f426f878c3 Mon Sep 17 00:00:00 2001 From: oblonski Date: Mon, 17 Feb 2025 16:57:54 +0100 Subject: [PATCH 164/191] make field vars final --- .../core/problem/VehicleRoutingProblem.java | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java index 8d6342564..841539715 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java @@ -75,25 +75,25 @@ public static Builder newInstance() { private VehicleRoutingActivityCosts activityCosts = new WaitingTimeCosts(); - private Map jobs = new LinkedHashMap<>(); + private final Map jobs = new LinkedHashMap<>(); - private List jobsWithLocation = new ArrayList<>(); + private final List jobsWithLocation = new ArrayList<>(); - private Map tentativeJobs = new LinkedHashMap<>(); + private final Map tentativeJobs = new LinkedHashMap<>(); - private Map jobsInInitialRoutes = new LinkedHashMap<>(); + private final Map jobsInInitialRoutes = new LinkedHashMap<>(); - private Map tentative_coordinates = new HashMap<>(); + private final Map tentative_coordinates = new HashMap<>(); private FleetSize fleetSize = FleetSize.INFINITE; - private Map vehicleTypes = new HashMap<>(); + private final Map vehicleTypes = new HashMap<>(); - private Collection initialRoutes = new ArrayList<>(); + private final Collection initialRoutes = new ArrayList<>(); - private Set uniqueVehicles = new LinkedHashSet<>(); + private final Set uniqueVehicles = new LinkedHashSet<>(); - private Set addedVehicleIds = new LinkedHashSet<>(); + private final Set addedVehicleIds = new LinkedHashSet<>(); private JobActivityFactory jobActivityFactory = new JobActivityFactory() { @@ -119,9 +119,9 @@ public List createActivities(Job job) { private int vehicleTypeIdIndexCounter = 1; - private Map typeKeyIndices = new HashMap<>(); + private final Map typeKeyIndices = new HashMap<>(); - private Map> activityMap = new HashMap<>(); + private final Map> activityMap = new HashMap<>(); private final DefaultShipmentActivityFactory shipmentActivityFactory = new DefaultShipmentActivityFactory(); @@ -135,7 +135,7 @@ private void incVehicleTypeIdIndexCounter() { vehicleTypeIdIndexCounter++; } - private Set allLocations = new HashSet<>(); + private final Set allLocations = new HashSet<>(); /** * Returns the unmodifiable map of collected locations (mapped by their location-id). @@ -156,7 +156,7 @@ public Map getLocationMap() { * @return locations */ public Locations getLocations() { - return id -> tentative_coordinates.get(id); + return tentative_coordinates::get; } /** @@ -562,7 +562,7 @@ public enum FleetSize { private Map> activityMap; - private int nuActivities; + private final int nuActivities; private final JobActivityFactory jobActivityFactory = this::copyAndGetActivities; From 3293e7d27ca63f3f1619e61ca46ba7868b543144 Mon Sep 17 00:00:00 2001 From: oblonski Date: Mon, 17 Feb 2025 16:59:38 +0100 Subject: [PATCH 165/191] camelCase --- .../jsprit/core/problem/VehicleRoutingProblem.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java index 841539715..ca5386ded 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java @@ -83,7 +83,7 @@ public static Builder newInstance() { private final Map jobsInInitialRoutes = new LinkedHashMap<>(); - private final Map tentative_coordinates = new HashMap<>(); + private final Map tentativeCoordinates = new HashMap<>(); private FleetSize fleetSize = FleetSize.INFINITE; @@ -143,7 +143,7 @@ private void incVehicleTypeIdIndexCounter() { * @return map with locations */ public Map getLocationMap() { - return Collections.unmodifiableMap(tentative_coordinates); + return Collections.unmodifiableMap(tentativeCoordinates); } @@ -156,7 +156,7 @@ public Map getLocationMap() { * @return locations */ public Locations getLocations() { - return tentative_coordinates::get; + return tentativeCoordinates::get; } /** @@ -232,7 +232,7 @@ private void addLocationToTentativeLocations(Job job) { private void addLocationToTentativeLocations(Location location) { if (location == null) return; - tentative_coordinates.put(location.getId(), location.getCoordinate()); + tentativeCoordinates.put(location.getId(), location.getCoordinate()); allLocations.add(location); } @@ -447,7 +447,7 @@ public VehicleRoutingProblem build() { @Deprecated public Builder addLocation(String locationId, Coordinate coordinate) { - tentative_coordinates.put(locationId, coordinate); + tentativeCoordinates.put(locationId, coordinate); return this; } From a5eda536f9b522a3aa6af980e8850834ac709bf0 Mon Sep 17 00:00:00 2001 From: oblonski Date: Tue, 18 Feb 2025 19:50:18 +0100 Subject: [PATCH 166/191] make fields final and correct logger --- .../algorithm/recreate/RegretInsertion.java | 2 +- .../recreate/RegretInsertionFast.java | 39 +++++-------------- 2 files changed, 10 insertions(+), 31 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertion.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertion.java index 45259efdf..916247efa 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertion.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertion.java @@ -42,7 +42,7 @@ public class RegretInsertion extends AbstractInsertionStrategy { - private static final Logger logger = LoggerFactory.getLogger(RegretInsertionFast.class); + private static final Logger logger = LoggerFactory.getLogger(RegretInsertion.class); private final JobInsertionCostsCalculator insertionCostsCalculator; diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertionFast.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertionFast.java index 8b29b359c..6cb2532b7 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertionFast.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/RegretInsertionFast.java @@ -40,15 +40,15 @@ */ public class RegretInsertionFast extends AbstractInsertionStrategy { - private static Logger logger = LoggerFactory.getLogger(RegretInsertionFast.class); + private static final Logger logger = LoggerFactory.getLogger(RegretInsertionFast.class); private RegretScoringFunction regretScoringFunction; - private JobInsertionCostsCalculator insertionCostsCalculator; + private final JobInsertionCostsCalculator insertionCostsCalculator; - private VehicleFleetManager fleetManager; + private final VehicleFleetManager fleetManager; - private Set initialVehicleIds; + private final Set initialVehicleIds; private boolean switchAllowed = true; @@ -88,7 +88,7 @@ public void setDependencyTypes(DependencyType[] dependencyTypes) { } private Set getInitialVehicleIds(VehicleRoutingProblem vehicleRoutingProblem) { - Set ids = new HashSet(); + Set ids = new HashSet<>(); for(VehicleRoute r : vehicleRoutingProblem.getInitialVehicleRoutes()){ ids.add(r.getVehicle().getId()); } @@ -108,29 +108,8 @@ public String toString() { */ @Override public Collection insertUnassignedJobs(Collection routes, Collection unassignedJobs) { - List badJobs = new ArrayList(unassignedJobs.size()); - -// Iterator jobIterator = unassignedJobs.iterator(); -// while (jobIterator.hasNext()){ -// Job job = jobIterator.next(); -// if(job instanceof Break){ -// VehicleRoute route = InsertionDataUpdater.findRoute(routes, job); -// if(route == null){ -// badJobs.add(job); -// } -// else { -// InsertionData iData = insertionCostsCalculator.getInsertionData(route, job, NO_NEW_VEHICLE_YET, NO_NEW_DEPARTURE_TIME_YET, NO_NEW_DRIVER_YET, Double.MAX_VALUE); -// if (iData instanceof InsertionData.NoInsertionFound) { -// badJobs.add(job); -// } else { -// insertJob(job, iData, route); -// } -// } -// jobIterator.remove(); -// } -// } - - List jobs = new ArrayList(unassignedJobs); + List badJobs = new ArrayList<>(unassignedJobs.size()); + List jobs = new ArrayList<>(unassignedJobs); TreeSet[] priorityQueues = new TreeSet[vrp.getJobs().values().size() + 2]; VehicleRoute lastModified = null; boolean firstRun = true; @@ -181,7 +160,7 @@ private void updateInsertionData(TreeSet[] priorityQueue } else{ if(dependencyTypes == null || dependencyTypes[unassignedJob.getIndex()] == null){ - InsertionDataUpdater.update(switchAllowed, initialVehicleIds, fleetManager, insertionCostsCalculator, priorityQueues[unassignedJob.getIndex()], updateRound, unassignedJob, Arrays.asList(lastModified)); + InsertionDataUpdater.update(switchAllowed, initialVehicleIds, fleetManager, insertionCostsCalculator, priorityQueues[unassignedJob.getIndex()], updateRound, unassignedJob, Collections.singletonList(lastModified)); updates.put(lastModified,updateRound); } else { @@ -190,7 +169,7 @@ private void updateInsertionData(TreeSet[] priorityQueue InsertionDataUpdater.update(switchAllowed, initialVehicleIds, fleetManager, insertionCostsCalculator, priorityQueues[unassignedJob.getIndex()], updateRound, unassignedJob, routes); for(VehicleRoute r : routes) updates.put(r,updateRound); } else { - InsertionDataUpdater.update(switchAllowed, initialVehicleIds, fleetManager, insertionCostsCalculator, priorityQueues[unassignedJob.getIndex()], updateRound, unassignedJob, Arrays.asList(lastModified)); + InsertionDataUpdater.update(switchAllowed, initialVehicleIds, fleetManager, insertionCostsCalculator, priorityQueues[unassignedJob.getIndex()], updateRound, unassignedJob, Collections.singletonList(lastModified)); updates.put(lastModified,updateRound); } } From 06ead9c7aeee3cfd486ca32ed2696d8a07fbf59d Mon Sep 17 00:00:00 2001 From: oblonski Date: Tue, 18 Feb 2025 19:50:56 +0100 Subject: [PATCH 167/191] upgrade mockito version --- .../core/algorithm/SearchStrategyManagerTest.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/SearchStrategyManagerTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/SearchStrategyManagerTest.java index 92f2817a3..1797b306d 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/SearchStrategyManagerTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/SearchStrategyManagerTest.java @@ -31,7 +31,8 @@ import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; -import static org.mockito.Mockito.*; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; public class SearchStrategyManagerTest { @@ -76,7 +77,7 @@ public void itShouldReturnStrategy2() { Random mockedRandom = mock(Random.class); manager.setRandom(mockedRandom); - stub(mockedRandom.nextDouble()).toReturn(0.25); + when(mockedRandom.nextDouble()).thenReturn(0.25); assertThat(manager.getRandomStrategy(), is(mockedStrat2)); } @@ -95,7 +96,7 @@ public void whenStratWeightChanged_itShouldReturnStrategy1() { Random mockedRandom = mock(Random.class); manager.setRandom(mockedRandom); - stub(mockedRandom.nextDouble()).toReturn(0.25); + when(mockedRandom.nextDouble()).thenReturn(0.25); assertThat(manager.getRandomStrategy(), is(mockedStrat2)); @@ -118,7 +119,7 @@ public void itShouldReturnStrategy1() { Random mockedRandom = mock(Random.class); manager.setRandom(mockedRandom); - stub(mockedRandom.nextDouble()).toReturn(0.24); + when(mockedRandom.nextDouble()).thenReturn(0.24); assertThat(manager.getRandomStrategy(), is(mockedStrat1)); } @@ -137,7 +138,7 @@ public void whenRandomDices_0point1_returnsStrategy1() { Random mockedRandom = mock(Random.class); managerUnderTest.setRandom(mockedRandom); - stub(mockedRandom.nextDouble()).toReturn(0.1); + when(mockedRandom.nextDouble()).thenReturn(0.1); assertThat(managerUnderTest.getRandomStrategy(), is(mockedStrategy1)); From 2f575cb41780a55084fba4be6ef80bd125aa63ff Mon Sep 17 00:00:00 2001 From: oblonski Date: Tue, 18 Feb 2025 19:51:16 +0100 Subject: [PATCH 168/191] switch to jdk21 and upgrade mockito --- pom.xml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 511a021fb..d7adaf895 100644 --- a/pom.xml +++ b/pom.xml @@ -68,10 +68,12 @@ - 1.8 + 21 + 21 + 21 UTF-8 4.13.1 - 1.9.5 + 5.10.0 1.3 1.7.32 false @@ -160,7 +162,7 @@ org.mockito - mockito-all + mockito-core ${mockito.version} test From 70cb2d8b3a79281df889012d5e585a7a33ffb694 Mon Sep 17 00:00:00 2001 From: oblonski Date: Tue, 18 Feb 2025 20:41:50 +0100 Subject: [PATCH 169/191] switch to junit5 --- .../BuildCVRPAlgoFromScratch_IT.java | 18 +- .../core/algorithm/CVRPwithDeliveries_IT.java | 1 - .../core/algorithm/CVRPwithMatrix_IT.java | 23 +- .../core/algorithm/CVRPwithPickups_IT.java | 1 - .../algorithm/DeactivateTimeWindowsTest.java | 39 +- .../ExternalInitialSolutionIsInValidTest.java | 31 +- .../algorithm/IgnoreBreakTimeWindowTest.java | 67 +- .../core/algorithm/InitialRoutesTest.java | 93 +-- .../algorithm/MultipleTimeWindowsTest.java | 69 +- .../jsprit/core/algorithm/OpenRoutesTest.java | 107 +-- .../algorithm/PickupsAndDeliveries_IT.java | 1 - ...CostsHigherThanTimesAndFiniteFleet_IT.java | 1 - ...niteFleet_withTimeAndDistanceCosts_IT.java | 2 +- .../core/algorithm/RefuseCollection_IT.java | 2 - .../algorithm/SearchStrategyManagerTest.java | 136 ++-- .../core/algorithm/SearchStrategyTest.java | 148 ++-- .../core/algorithm/SolomonSkills_IT.java | 1 - .../jsprit/core/algorithm/Solomon_IT.java | 1 - .../core/algorithm/UnassignedJobListTest.java | 29 +- .../VariableDepartureAndWaitingTime_IT.java | 1 - .../VehicleRoutingAlgorithmTest.java | 62 +- .../acceptor/GreedyAcceptanceTest.java | 18 +- .../acceptor/SchrimpfAcceptanceTest.java | 97 ++- .../jsprit/core/algorithm/box/JspritTest.java | 190 ++--- .../module/RuinAndRecreateModuleTest.java | 24 +- ...icleTypeDependentServiceInsertionTest.java | 30 +- ...tionConsideringFixCostsCalculatorTest.java | 224 ++---- .../recreate/RegretInsertionTest.java | 226 +++--- ...erviceInsertionAndLoadConstraintsTest.java | 39 +- .../ShipmentInsertionCalculatorFlexTest.java | 114 +-- .../ShipmentInsertionCalculatorTest.java | 93 +-- .../algorithm/ruin/DBSCANClustererTest.java | 37 +- .../ruin/JobNeighborhoodsImplTest.java | 45 +- .../ruin/JobNeighborhoodsOptimizedTest.java | 74 +- ...ighborhoodsWithCapRestrictionImplTest.java | 42 +- .../core/algorithm/ruin/RuinBreakTest.java | 23 +- .../core/algorithm/ruin/RuinClustersTest.java | 28 +- .../core/algorithm/ruin/RuinRadialTest.java | 26 +- .../algorithm/ruin/RuinTimeRelatedTest.java | 25 +- .../core/algorithm/ruin/RuinWorstTest.java | 168 ++-- .../core/algorithm/ruin/StringUtilTest.java | 57 +- .../ruin/distance/AverageJobDistanceTest.java | 35 +- .../AvgServiceAndShipmentDistanceTest.java | 24 +- .../distance/JobDistanceAvgCostsTest.java | 93 ++- .../algorithm/selector/SelectBestTest.java | 19 +- .../selector/SelectRandomlyTest.java | 29 +- ...eliveryShipmentActivityConstraintTest.java | 41 +- .../core/algorithm/state/LoadStateTest.java | 117 +-- .../algorithm/state/StateManagerTest.java | 150 ++-- .../state/UpdateMaxTimeInVehicleTest.java | 202 ++--- .../state/UpdatePracticalTimeWindowTest.java | 37 +- .../state/UpdateRequiredSkillsTest.java | 28 +- .../state/UpdateVariableCostsTest.java | 4 +- .../UpdateVehicleDependentTimeWindowTest.java | 162 ++-- .../IterationsWithoutImprovementTest.java | 28 +- .../termination/TimeTerminationTest.java | 24 +- .../core/analysis/SolutionAnalyserTest.java | 742 +++++++++--------- .../jsprit/core/problem/CapacityTest.java | 178 +++-- .../jsprit/core/problem/LocationTest.java | 90 ++- .../jsprit/core/problem/SkillsTest.java | 37 +- .../problem/VehicleRoutingProblemTest.java | 341 ++++---- .../constraint/LoadConstraintTest.java | 393 +++------- .../MaxTimeInVehicleConstraintTest.java | 303 +++---- .../ServiceLoadRouteLevelConstraintTest.java | 121 +-- .../constraint/SkillConstraintTest.java | 43 +- .../SoftActivityConstraintManagerTest.java | 19 +- .../SoftRouteConstraintManagerTest.java | 18 +- .../VehicleDependentTimeWindowTest.java | 170 ++-- ...wWithStartTimeAndMaxOperationTimeTest.java | 171 ++-- .../VehicleDependentTraveledDistanceTest.java | 247 +++--- .../jsprit/core/problem/job/DeliveryTest.java | 109 ++- .../jsprit/core/problem/job/PickupTest.java | 109 ++- .../jsprit/core/problem/job/ServiceTest.java | 288 +++---- .../jsprit/core/problem/job/ShipmentTest.java | 495 ++++++------ .../problem/misc/JobInsertionContextTest.java | 40 +- .../VehicleRoutingProblemSolutionTest.java | 37 +- .../route/VehicleRouteBuilderTest.java | 142 ++-- .../route/activity/BreakActivityTest.java | 52 +- .../DefaultShipmentActivityFactoryTest.java | 22 +- .../DefaultTourActivityFactoryTest.java | 20 +- .../route/activity/DeliverServiceTest.java | 46 +- .../route/activity/DeliverShipmentTest.java | 55 +- .../solution/route/activity/EndTest.java | 36 +- .../route/activity/PickupServiceTest.java | 47 +- .../route/activity/PickupShipmentTest.java | 55 +- .../route/activity/ServiceActivityTest.java | 63 +- .../solution/route/activity/StartTest.java | 35 +- .../route/activity/TimeWindowTest.java | 4 +- .../route/activity/TimeWindowsImplTest.java | 48 +- .../FiniteVehicleFleetManagerFactoryTest.java | 13 +- .../core/problem/vehicle/VehicleImplTest.java | 195 +++-- .../problem/vehicle/VehicleTypeImplTest.java | 155 ++-- .../problem/vehicle/VehicleTypeKeyTest.java | 30 +- ...ehicleRoutingTransportCostsMatrixTest.java | 34 +- .../GreatCircleDistanceCalculatorTest.java | 38 +- .../jsprit/core/util/RandomUtilsTest.java | 26 +- .../jsprit/core/util/TimeTest.java | 103 ++- .../util/UnassignedJobReasonTrackerTest.java | 78 +- ...ehicleRoutingTransportCostsMatrixTest.java | 106 +-- pom.xml | 22 +- 100 files changed, 3992 insertions(+), 4790 deletions(-) diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/BuildCVRPAlgoFromScratch_IT.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/BuildCVRPAlgoFromScratch_IT.java index fff942ceb..d55169e7c 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/BuildCVRPAlgoFromScratch_IT.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/BuildCVRPAlgoFromScratch_IT.java @@ -37,22 +37,20 @@ import com.graphhopper.jsprit.core.problem.vehicle.VehicleFleetManager; import com.graphhopper.jsprit.core.util.ChristofidesReader; import com.graphhopper.jsprit.core.util.Solutions; -import org.junit.Before; -import org.junit.Test; -import org.junit.experimental.categories.Category; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import java.util.Collection; -import static org.junit.Assert.assertEquals; - -public class BuildCVRPAlgoFromScratch_IT { +class BuildCVRPAlgoFromScratch_IT { VehicleRoutingProblem vrp; VehicleRoutingAlgorithm vra; - @Before + @BeforeEach public void setup() { VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); new ChristofidesReader(builder).read(getClass().getResourceAsStream("vrpnc1.txt")); @@ -97,10 +95,10 @@ public double getCosts(VehicleRoutingProblemSolution solution) { } @Test - public void testVRA() { + void testVRA() { Collection solutions = vra.searchSolutions(); - assertEquals(530.0, Solutions.bestOf(solutions).getCost(), 50.0); - assertEquals(5, Solutions.bestOf(solutions).getRoutes().size()); + Assertions.assertEquals(530.0, Solutions.bestOf(solutions).getCost(), 50.0); + Assertions.assertEquals(5, Solutions.bestOf(solutions).getRoutes().size()); } } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/CVRPwithDeliveries_IT.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/CVRPwithDeliveries_IT.java index 8b3c4c28c..fdb15f12d 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/CVRPwithDeliveries_IT.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/CVRPwithDeliveries_IT.java @@ -24,7 +24,6 @@ import com.graphhopper.jsprit.core.util.JobType; import com.graphhopper.jsprit.core.util.Solutions; import org.junit.Test; -import org.junit.experimental.categories.Category; import java.util.Collection; diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/CVRPwithMatrix_IT.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/CVRPwithMatrix_IT.java index 343cba627..7cddd90d1 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/CVRPwithMatrix_IT.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/CVRPwithMatrix_IT.java @@ -27,35 +27,32 @@ import com.graphhopper.jsprit.core.problem.vehicle.Vehicle; import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; import com.graphhopper.jsprit.core.util.*; -import org.junit.Assert; -import org.junit.Test; -import org.junit.experimental.categories.Category; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; import java.util.ArrayList; import java.util.Collection; import java.util.List; -import static org.junit.Assert.*; - -public class CVRPwithMatrix_IT { +class CVRPwithMatrix_IT { private int index = 0; @Test - public void whenReturnToDepot_itShouldWorkWithMatrix() { + void whenReturnToDepot_itShouldWorkWithMatrix() { VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); new ChristofidesReader(vrpBuilder).setJobType(JobType.DELIVERY).read(getClass().getResourceAsStream("vrpnc1.txt")); VehicleRoutingProblem vrp_ = vrpBuilder.build(); VehicleRoutingProblem vrp = createVrpWithLocationIndecesAndMatrix(vrp_, true); VehicleRoutingAlgorithm vra = Jsprit.Builder.newInstance(vrp).setProperty(Jsprit.Parameter.FAST_REGRET,"true").buildAlgorithm(); Collection solutions = vra.searchSolutions(); - Assert.assertEquals(530.0, Solutions.bestOf(solutions).getCost(), 50.0); - assertEquals(5, Solutions.bestOf(solutions).getRoutes().size()); + Assertions.assertEquals(530.0, Solutions.bestOf(solutions).getCost(), 50.0); + Assertions.assertEquals(5, Solutions.bestOf(solutions).getRoutes().size()); } @Test - public void whenNotReturnToDepot_itShouldWorkWithMatrix() { + void whenNotReturnToDepot_itShouldWorkWithMatrix() { VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); new ChristofidesReader(vrpBuilder).setJobType(JobType.DELIVERY).read(getClass().getResourceAsStream("vrpnc1.txt")); VehicleRoutingProblem vrp_ = vrpBuilder.build(); @@ -63,14 +60,14 @@ public void whenNotReturnToDepot_itShouldWorkWithMatrix() { VehicleRoutingAlgorithm vra = Jsprit.Builder.newInstance(vrp).setProperty(Jsprit.Parameter.FAST_REGRET,"true").buildAlgorithm(); try { Collection solutions = vra.searchSolutions(); - assertTrue(true); + Assertions.assertTrue(true); } catch (Exception e) { - assertFalse(true); + Assertions.assertFalse(true); } } @Test - public void whenCalcTimeWithSolutionAnalyser_itShouldWork() { + void whenCalcTimeWithSolutionAnalyser_itShouldWork() { VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); new ChristofidesReader(vrpBuilder).setJobType(JobType.DELIVERY).read(getClass().getResourceAsStream("vrpnc1.txt")); VehicleRoutingProblem vrp_ = vrpBuilder.build(); diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/CVRPwithPickups_IT.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/CVRPwithPickups_IT.java index eef86be33..d12d2ccd8 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/CVRPwithPickups_IT.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/CVRPwithPickups_IT.java @@ -24,7 +24,6 @@ import com.graphhopper.jsprit.core.util.JobType; import com.graphhopper.jsprit.core.util.Solutions; import org.junit.Test; -import org.junit.experimental.categories.Category; import java.util.Collection; diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/DeactivateTimeWindowsTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/DeactivateTimeWindowsTest.java index db1508940..6d8c82194 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/DeactivateTimeWindowsTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/DeactivateTimeWindowsTest.java @@ -15,10 +15,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.graphhopper.jsprit.core.algorithm; - import com.graphhopper.jsprit.core.algorithm.box.Jsprit; import com.graphhopper.jsprit.core.algorithm.state.StateManager; import com.graphhopper.jsprit.core.problem.Location; @@ -30,48 +28,47 @@ import com.graphhopper.jsprit.core.problem.solution.route.activity.TimeWindow; import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; import com.graphhopper.jsprit.core.util.Solutions; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.Collection; -public class DeactivateTimeWindowsTest { +@DisplayName("Deactivate Time Windows Test") +class DeactivateTimeWindowsTest { VehicleRoutingProblem vrp; - @Before - public void doBefore(){ - Service service = Service.Builder.newInstance("s").setLocation(Location.newInstance(20, 0)) - .setTimeWindow(TimeWindow.newInstance(40, 50)).build(); + @BeforeEach + void doBefore() { + Service service = Service.Builder.newInstance("s").setLocation(Location.newInstance(20, 0)).setTimeWindow(TimeWindow.newInstance(40, 50)).build(); VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(0, 0)).build(); vrp = VehicleRoutingProblem.Builder.newInstance().addJob(service).addVehicle(vehicle).build(); - } @Test - public void activityTimesShouldConsiderTimeWindows() { - VehicleRoutingAlgorithm vra = Jsprit.createAlgorithm(vrp); //this should ignore any constraints + @DisplayName("Activity Times Should Consider Time Windows") + void activityTimesShouldConsiderTimeWindows() { + // this should ignore any constraints + VehicleRoutingAlgorithm vra = Jsprit.createAlgorithm(vrp); vra.setMaxIterations(10); Collection solutions = vra.searchSolutions(); - VehicleRoute route = Solutions.bestOf(solutions).getRoutes().iterator().next(); - Assert.assertEquals(40., route.getActivities().get(0).getEndTime(), 0.01); + Assertions.assertEquals(40., route.getActivities().get(0).getEndTime(), 0.01); } @Test - public void whenActivatingViaStateManager_activityTimesShouldConsiderTimeWindows() { + @DisplayName("When Activating Via State Manager _ activity Times Should Consider Time Windows") + void whenActivatingViaStateManager_activityTimesShouldConsiderTimeWindows() { StateManager stateManager = new StateManager(vrp); stateManager.updateTimeWindowStates(); ConstraintManager constraintManager = new ConstraintManager(vrp, stateManager); constraintManager.addTimeWindowConstraint(); - - VehicleRoutingAlgorithm vra = Jsprit.Builder.newInstance(vrp).addCoreStateAndConstraintStuff(true) - .setStateAndConstraintManager(stateManager,constraintManager).buildAlgorithm(); + VehicleRoutingAlgorithm vra = Jsprit.Builder.newInstance(vrp).addCoreStateAndConstraintStuff(true).setStateAndConstraintManager(stateManager, constraintManager).buildAlgorithm(); vra.setMaxIterations(10); Collection solutions = vra.searchSolutions(); - VehicleRoute route = Solutions.bestOf(solutions).getRoutes().iterator().next(); - Assert.assertEquals(40., route.getActivities().get(0).getEndTime(), 0.01); + Assertions.assertEquals(40., route.getActivities().get(0).getEndTime(), 0.01); } } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ExternalInitialSolutionIsInValidTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ExternalInitialSolutionIsInValidTest.java index 65db2e423..29e9491df 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ExternalInitialSolutionIsInValidTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ExternalInitialSolutionIsInValidTest.java @@ -15,7 +15,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.graphhopper.jsprit.core.algorithm; import com.graphhopper.jsprit.core.algorithm.box.Jsprit; @@ -25,43 +24,35 @@ import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; -import com.graphhopper.jsprit.core.util.Solutions; -import junit.framework.Assert; -import org.junit.Test; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.Arrays; -import java.util.Collection; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; -public class ExternalInitialSolutionIsInValidTest { +@DisplayName("External Initial Solution Is In Valid Test") +class ExternalInitialSolutionIsInValidTest { @Test - public void itShouldSolveProblemWithIniSolutionExternallyCreated() { - + @DisplayName("It Should Solve Problem With Ini Solution Externally Created") + void itShouldSolveProblemWithIniSolutionExternallyCreated() { Service s1 = Service.Builder.newInstance("s1").setLocation(Location.newInstance(10, 0)).build(); Service s2 = Service.Builder.newInstance("s2").setLocation(Location.newInstance(0, 10)).build(); - VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v1").setStartLocation(Location.newInstance(0, 0)).build(); - VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(s1).addJob(s2).addVehicle(vehicle).build(); - VehicleRoutingAlgorithm vra = Jsprit.createAlgorithm(vrp); - /* create ini sol */ VehicleRoute route1 = VehicleRoute.Builder.newInstance(vehicle).setJobActivityFactory(vrp.getJobActivityFactory()).addService(s1).build(); - vra.addInitialSolution(new VehicleRoutingProblemSolution(Arrays.asList(route1), 20.)); - try { vra.searchSolutions(); - Assert.assertTrue(true); - } - catch (Exception e){ - Assert.assertFalse(true); + assertTrue(true); + } catch (Exception e) { + assertFalse(true); } - } - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/IgnoreBreakTimeWindowTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/IgnoreBreakTimeWindowTest.java index 12b50a96f..f830af0e1 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/IgnoreBreakTimeWindowTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/IgnoreBreakTimeWindowTest.java @@ -15,7 +15,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.graphhopper.jsprit.core.algorithm; import com.graphhopper.jsprit.core.algorithm.box.Jsprit; @@ -31,23 +30,25 @@ import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; import com.graphhopper.jsprit.core.util.Solutions; -import junit.framework.Assert; -import org.junit.Test; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertTrue; /** * Created by schroeder on 08/01/16. */ -public class IgnoreBreakTimeWindowTest { +@DisplayName("Ignore Break Time Window Test") +class IgnoreBreakTimeWindowTest { @Test - public void doNotIgnoreBreakTW(){ + @DisplayName("Do Not Ignore Break TW") + void doNotIgnoreBreakTW() { VehicleTypeImpl.Builder vehicleTypeBuilder = VehicleTypeImpl.Builder.newInstance("vehicleType"); VehicleType vehicleType = vehicleTypeBuilder.setCostPerWaitingTime(0.8).build(); - - /* + /* * get a vehicle-builder and build a vehicle located at (10,10) with type "vehicleType" */ - VehicleImpl vehicle2; { VehicleImpl.Builder vehicleBuilder = VehicleImpl.Builder.newInstance("v2"); @@ -57,54 +58,30 @@ public void doNotIgnoreBreakTW(){ vehicleBuilder.setBreak(Break.Builder.newInstance("lunch").setTimeWindow(TimeWindow.newInstance(14, 14)).setServiceTime(1.).build()); vehicle2 = vehicleBuilder.build(); } - /* + /* * build services at the required locations, each with a capacity-demand of 1. */ - - - Service service4 = Service.Builder.newInstance("2").setLocation(Location.newInstance(0, 0)) - .setServiceTime(1.).setTimeWindow(TimeWindow.newInstance(17,17)).build(); - - Service service5 = Service.Builder.newInstance("3").setLocation(Location.newInstance(0, 0)) - .setServiceTime(1.).setTimeWindow(TimeWindow.newInstance(18, 18)).build(); - - Service service7 = Service.Builder.newInstance("4").setLocation(Location.newInstance(0, 0)) - .setServiceTime(1.).setTimeWindow(TimeWindow.newInstance(10, 10)).build(); - - Service service8 = Service.Builder.newInstance("5").setLocation(Location.newInstance(0, 0)) - .setServiceTime(1.).setTimeWindow(TimeWindow.newInstance(12, 12)).build(); - - Service service10 = Service.Builder.newInstance("6").setLocation(Location.newInstance(0, 0)) - .setServiceTime(1.).setTimeWindow(TimeWindow.newInstance(16, 16)).build(); - - Service service11 = Service.Builder.newInstance("7").setLocation(Location.newInstance(0, 0)) - .setServiceTime(1.).setTimeWindow(TimeWindow.newInstance(13, 13)).build(); - - VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance() - .addVehicle(vehicle2) - .addJob(service4) - .addJob(service5).addJob(service7) - .addJob(service8).addJob(service10).addJob(service11) - .setFleetSize(VehicleRoutingProblem.FleetSize.FINITE) - .build(); - + Service service4 = Service.Builder.newInstance("2").setLocation(Location.newInstance(0, 0)).setServiceTime(1.).setTimeWindow(TimeWindow.newInstance(17, 17)).build(); + Service service5 = Service.Builder.newInstance("3").setLocation(Location.newInstance(0, 0)).setServiceTime(1.).setTimeWindow(TimeWindow.newInstance(18, 18)).build(); + Service service7 = Service.Builder.newInstance("4").setLocation(Location.newInstance(0, 0)).setServiceTime(1.).setTimeWindow(TimeWindow.newInstance(10, 10)).build(); + Service service8 = Service.Builder.newInstance("5").setLocation(Location.newInstance(0, 0)).setServiceTime(1.).setTimeWindow(TimeWindow.newInstance(12, 12)).build(); + Service service10 = Service.Builder.newInstance("6").setLocation(Location.newInstance(0, 0)).setServiceTime(1.).setTimeWindow(TimeWindow.newInstance(16, 16)).build(); + Service service11 = Service.Builder.newInstance("7").setLocation(Location.newInstance(0, 0)).setServiceTime(1.).setTimeWindow(TimeWindow.newInstance(13, 13)).build(); + VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle2).addJob(service4).addJob(service5).addJob(service7).addJob(service8).addJob(service10).addJob(service11).setFleetSize(VehicleRoutingProblem.FleetSize.FINITE).build(); VehicleRoutingAlgorithm vra = Jsprit.createAlgorithm(vrp); vra.setMaxIterations(50); - VehicleRoutingProblemSolution solution = Solutions.bestOf(vra.searchSolutions()); - - - Assert.assertTrue(breakShouldBeTime(solution)); + assertTrue(breakShouldBeTime(solution)); } private boolean breakShouldBeTime(VehicleRoutingProblemSolution solution) { boolean inTime = true; - for(TourActivity act : solution.getRoutes().iterator().next().getActivities()){ - if(act instanceof BreakActivity){ - if(act.getEndTime() < ((BreakActivity) act).getJob().getTimeWindow().getStart()){ + for (TourActivity act : solution.getRoutes().iterator().next().getActivities()) { + if (act instanceof BreakActivity) { + if (act.getEndTime() < ((BreakActivity) act).getJob().getTimeWindow().getStart()) { inTime = false; } - if(act.getArrTime() > ((BreakActivity) act).getJob().getTimeWindow().getEnd()){ + if (act.getArrTime() > ((BreakActivity) act).getJob().getTimeWindow().getEnd()) { inTime = false; } } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/InitialRoutesTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/InitialRoutesTest.java index 42430d0b5..5c072571c 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/InitialRoutesTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/InitialRoutesTest.java @@ -15,10 +15,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.graphhopper.jsprit.core.algorithm; - import com.graphhopper.jsprit.core.algorithm.box.GreedySchrimpfFactory; import com.graphhopper.jsprit.core.algorithm.box.Jsprit; import com.graphhopper.jsprit.core.algorithm.box.Jsprit.Builder; @@ -43,34 +41,36 @@ import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; import com.graphhopper.jsprit.core.util.Coordinate; import com.graphhopper.jsprit.core.util.Solutions; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.Collection; -import static org.junit.Assert.*; +import static org.junit.jupiter.api.Assertions.*; -public class InitialRoutesTest { +@DisplayName("Initial Routes Test") +class InitialRoutesTest { private VehicleRoutingProblem vrp; private VehicleRoute initialRoute; - @Before - public void before(){ + @BeforeEach + void before() { VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - VehicleImpl v = VehicleImpl.Builder.newInstance("veh1").setStartLocation(Location.newInstance(0,0)).setLatestArrival(48600).build(); - Service s1 = Service.Builder.newInstance("s1").setLocation(Location.newInstance(1000,0)).build(); - Service s2 = Service.Builder.newInstance("s2").setLocation(Location.newInstance(1000,1000)).build(); + VehicleImpl v = VehicleImpl.Builder.newInstance("veh1").setStartLocation(Location.newInstance(0, 0)).setLatestArrival(48600).build(); + Service s1 = Service.Builder.newInstance("s1").setLocation(Location.newInstance(1000, 0)).build(); + Service s2 = Service.Builder.newInstance("s2").setLocation(Location.newInstance(1000, 1000)).build(); builder.addVehicle(v).addJob(s1).addJob(s2); initialRoute = VehicleRoute.Builder.newInstance(v).addService(s1).build(); builder.addInitialVehicleRoute(initialRoute); vrp = builder.build(); } - @Test - public void whenSolving_nuJobsInSolutionShouldBe2() { + @DisplayName("When Solving _ nu Jobs In Solution Should Be 2") + void whenSolving_nuJobsInSolutionShouldBe2() { VehicleRoutingAlgorithm vra = Jsprit.createAlgorithm(vrp); Collection solutions = vra.searchSolutions(); VehicleRoutingProblemSolution solution = Solutions.bestOf(solutions); @@ -78,7 +78,8 @@ public void whenSolving_nuJobsInSolutionShouldBe2() { } @Test - public void whenSolving_nuActsShouldBe2() { + @DisplayName("When Solving _ nu Acts Should Be 2") + void whenSolving_nuActsShouldBe2() { VehicleRoutingAlgorithm vra = new SchrimpfFactory().createAlgorithm(vrp); Collection solutions = vra.searchSolutions(); VehicleRoutingProblemSolution solution = Solutions.bestOf(solutions); @@ -86,7 +87,8 @@ public void whenSolving_nuActsShouldBe2() { } @Test - public void whenSolving_deliverService1_shouldBeInRoute() { + @DisplayName("When Solving _ deliver Service 1 _ should Be In Route") + void whenSolving_deliverService1_shouldBeInRoute() { VehicleRoutingAlgorithm vra = new SchrimpfFactory().createAlgorithm(vrp); Collection solutions = vra.searchSolutions(); VehicleRoutingProblemSolution solution = Solutions.bestOf(solutions); @@ -97,7 +99,8 @@ public void whenSolving_deliverService1_shouldBeInRoute() { private Job getInitialJob(String jobId, VehicleRoutingProblem vrp) { for (VehicleRoute r : vrp.getInitialVehicleRoutes()) { for (Job j : r.getTourActivities().getJobs()) { - if (j.getId().equals(jobId)) return j; + if (j.getId().equals(jobId)) + return j; } } return null; @@ -108,7 +111,8 @@ private boolean hasActivityIn(Collection routes, String jobId) { for (VehicleRoute route : routes) { for (TourActivity act : route.getActivities()) { if (act instanceof TourActivity.JobActivity) { - if (((TourActivity.JobActivity) act).getJob().getId().equals(jobId)) isInRoute = true; + if (((TourActivity.JobActivity) act).getJob().getId().equals(jobId)) + isInRoute = true; } } } @@ -127,58 +131,39 @@ private boolean hasActivityIn(VehicleRoutingProblemSolution solution, String veh return false; } - private boolean hasActivityIn(VehicleRoute route, String jobId) { boolean isInRoute = false; for (TourActivity act : route.getActivities()) { if (act instanceof TourActivity.JobActivity) { - if (((TourActivity.JobActivity) act).getJob().getId().equals(jobId)) isInRoute = true; + if (((TourActivity.JobActivity) act).getJob().getId().equals(jobId)) + isInRoute = true; } } return isInRoute; } @Test - public void whenSolving_deliverService2_shouldBeInRoute() { + @DisplayName("When Solving _ deliver Service 2 _ should Be In Route") + void whenSolving_deliverService2_shouldBeInRoute() { VehicleRoutingAlgorithm vra = new SchrimpfFactory().createAlgorithm(vrp); Collection solutions = vra.searchSolutions(); VehicleRoutingProblemSolution solution = Solutions.bestOf(solutions); - assertTrue(hasActivityIn(solution.getRoutes().iterator().next(), "s2")); } @Test - public void maxCapacityShouldNotBeExceeded() { + @DisplayName("Max Capacity Should Not Be Exceeded") + void maxCapacityShouldNotBeExceeded() { VehicleType type = VehicleTypeImpl.Builder.newInstance("type").addCapacityDimension(0, 100).build(); - VehicleImpl vehicle = VehicleImpl.Builder.newInstance("veh") - .setStartLocation(Location.Builder.newInstance().setId("start").setCoordinate(Coordinate.newInstance(0, 0)).build()) - .setType(type) - .build(); - - Shipment shipment = Shipment.Builder.newInstance("s") - .setPickupLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(10, 0)).setId("pick").build()) - .setDeliveryLocation(Location.Builder.newInstance().setId("del").setCoordinate(Coordinate.newInstance(0, 10)).build()) - .addSizeDimension(0, 100) - .build(); - - Shipment another_shipment = Shipment.Builder.newInstance("another_s") - .setPickupLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(10, 0)).setId("pick").build()) - .setDeliveryLocation(Location.Builder.newInstance().setId("del").setCoordinate(Coordinate.newInstance(0, 10)).build()) - .addSizeDimension(0, 50) - .build(); - + VehicleImpl vehicle = VehicleImpl.Builder.newInstance("veh").setStartLocation(Location.Builder.newInstance().setId("start").setCoordinate(Coordinate.newInstance(0, 0)).build()).setType(type).build(); + Shipment shipment = Shipment.Builder.newInstance("s").setPickupLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(10, 0)).setId("pick").build()).setDeliveryLocation(Location.Builder.newInstance().setId("del").setCoordinate(Coordinate.newInstance(0, 10)).build()).addSizeDimension(0, 100).build(); + Shipment another_shipment = Shipment.Builder.newInstance("another_s").setPickupLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(10, 0)).setId("pick").build()).setDeliveryLocation(Location.Builder.newInstance().setId("del").setCoordinate(Coordinate.newInstance(0, 10)).build()).addSizeDimension(0, 50).build(); VehicleRoute iniRoute = VehicleRoute.Builder.newInstance(vehicle).addPickup(shipment).addDelivery(shipment).build(); - - VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(shipment).addVehicle(vehicle).addJob(another_shipment) - .setFleetSize(VehicleRoutingProblem.FleetSize.FINITE).addInitialVehicleRoute(iniRoute).build(); - + VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(shipment).addVehicle(vehicle).addJob(another_shipment).setFleetSize(VehicleRoutingProblem.FleetSize.FINITE).addInitialVehicleRoute(iniRoute).build(); VehicleRoutingAlgorithm vra = new GreedySchrimpfFactory().createAlgorithm(vrp); vra.setMaxIterations(10); - Collection solutions = vra.searchSolutions(); - assertFalse(secondActIsPickup(solutions)); - } private boolean secondActIsPickup(Collection solutions) { @@ -188,7 +173,8 @@ private boolean secondActIsPickup(Collection solu } @Test - public void whenAllJobsInInitialRoute_itShouldWork() { + @DisplayName("When All Jobs In Initial Route _ it Should Work") + void whenAllJobsInInitialRoute_itShouldWork() { Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance(0, 10)).build(); VehicleImpl v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(0, 0)).build(); VehicleRoute iniRoute = VehicleRoute.Builder.newInstance(v).addService(s).build(); @@ -200,16 +186,14 @@ public void whenAllJobsInInitialRoute_itShouldWork() { } @Test - public void buildWithoutTimeConstraints() { + @DisplayName("Build Without Time Constraints") + void buildWithoutTimeConstraints() { Service s1 = Service.Builder.newInstance("s1").setLocation(Location.newInstance(0, 10)).addSizeDimension(0, 10).build(); Service s2 = Service.Builder.newInstance("s2").setLocation(Location.newInstance(10, 20)).addSizeDimension(0, 12).build(); - VehicleTypeImpl vt = VehicleTypeImpl.Builder.newInstance("vt").addCapacityDimension(0, 15).build(); VehicleImpl v = VehicleImpl.Builder.newInstance("v").setType(vt).setStartLocation(Location.newInstance(0, 0)).build(); - VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(s1).addJob(s2).addVehicle(v).build(); Builder algBuilder = Jsprit.Builder.newInstance(vrp).addCoreStateAndConstraintStuff(false); - // only required constraints StateManager stateManager = new StateManager(vrp); ConstraintManager constraintManager = new ConstraintManager(vrp, stateManager); @@ -218,17 +202,14 @@ public void buildWithoutTimeConstraints() { stateManager.updateLoadStates(); stateManager.addStateUpdater(new UpdateEndLocationIfRouteIsOpen()); stateManager.addStateUpdater(new UpdateVariableCosts(vrp.getActivityCosts(), vrp.getTransportCosts(), stateManager)); - algBuilder.setStateAndConstraintManager(stateManager, constraintManager); VehicleRoutingAlgorithm vra = algBuilder.buildAlgorithm(); vra.setMaxIterations(20); Collection searchSolutions = vra.searchSolutions(); VehicleRoutingProblemSolution bestOf = Solutions.bestOf(searchSolutions); - - //ensure 2 routes + // ensure 2 routes assertEquals(2, bestOf.getRoutes().size()); - - //ensure no time information in first service of first route + // ensure no time information in first service of first route assertEquals(0, bestOf.getRoutes().iterator().next().getActivities().iterator().next().getArrTime(), 0.001); } } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/MultipleTimeWindowsTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/MultipleTimeWindowsTest.java index 5ed0309d4..428c48c62 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/MultipleTimeWindowsTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/MultipleTimeWindowsTest.java @@ -15,7 +15,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.graphhopper.jsprit.core.algorithm; import com.graphhopper.jsprit.core.algorithm.box.Jsprit; @@ -25,73 +24,55 @@ import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; import com.graphhopper.jsprit.core.util.Solutions; -import junit.framework.Assert; -import org.junit.Test; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; /** * Created by schroeder on 26/05/15. */ -public class MultipleTimeWindowsTest { +@DisplayName("Multiple Time Windows Test") +class MultipleTimeWindowsTest { @Test - public void service2ShouldNotBeInserted(){ + @DisplayName("Service 2 Should Not Be Inserted") + void service2ShouldNotBeInserted() { Service s = Service.Builder.newInstance("s1").setLocation(Location.newInstance(10, 0)).build(); - - Service s2 = Service.Builder.newInstance("s2") - .addTimeWindow(50.,60.) - .setLocation(Location.newInstance(20, 0)).build(); - - VehicleImpl v = VehicleImpl.Builder.newInstance("v1").setStartLocation(Location.newInstance(0,0)) - .setEarliestStart(0.).setLatestArrival(40).build(); - + Service s2 = Service.Builder.newInstance("s2").addTimeWindow(50., 60.).setLocation(Location.newInstance(20, 0)).build(); + VehicleImpl v = VehicleImpl.Builder.newInstance("v1").setStartLocation(Location.newInstance(0, 0)).setEarliestStart(0.).setLatestArrival(40).build(); VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(s).addJob(s2).addVehicle(v).build(); VehicleRoutingAlgorithm algorithm = Jsprit.createAlgorithm(vrp); algorithm.setMaxIterations(100); VehicleRoutingProblemSolution solution = Solutions.bestOf(algorithm.searchSolutions()); - - Assert.assertEquals(1,solution.getUnassignedJobs().size()); + assertEquals(1, solution.getUnassignedJobs().size()); } @Test - public void service2ShouldBeInsertedIntoNewVehicle(){ - Service s = Service.Builder.newInstance("s1").setLocation(Location.newInstance(10,0)) - .addTimeWindow(5.,15.).build(); - - Service s2 = Service.Builder.newInstance("s2") - .addTimeWindow(50.,60.) - .setLocation(Location.newInstance(20, 0)).build(); - - VehicleImpl v = VehicleImpl.Builder.newInstance("v1").setStartLocation(Location.newInstance(0,0)) - .setEarliestStart(0.).setLatestArrival(40).build(); - - VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(Location.newInstance(0,0)) - .setEarliestStart(40.).setLatestArrival(80).build(); - + @DisplayName("Service 2 Should Be Inserted Into New Vehicle") + void service2ShouldBeInsertedIntoNewVehicle() { + Service s = Service.Builder.newInstance("s1").setLocation(Location.newInstance(10, 0)).addTimeWindow(5., 15.).build(); + Service s2 = Service.Builder.newInstance("s2").addTimeWindow(50., 60.).setLocation(Location.newInstance(20, 0)).build(); + VehicleImpl v = VehicleImpl.Builder.newInstance("v1").setStartLocation(Location.newInstance(0, 0)).setEarliestStart(0.).setLatestArrival(40).build(); + VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(Location.newInstance(0, 0)).setEarliestStart(40.).setLatestArrival(80).build(); VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(s).addJob(s2).addVehicle(v).addVehicle(v2).build(); VehicleRoutingAlgorithm algorithm = Jsprit.createAlgorithm(vrp); algorithm.setMaxIterations(100); VehicleRoutingProblemSolution solution = Solutions.bestOf(algorithm.searchSolutions()); - - Assert.assertEquals(0,solution.getUnassignedJobs().size()); - Assert.assertEquals(2, solution.getRoutes().size()); + assertEquals(0, solution.getUnassignedJobs().size()); + assertEquals(2, solution.getRoutes().size()); } @Test - public void service2ShouldBeInserted(){ - Service s = Service.Builder.newInstance("s1").setLocation(Location.newInstance(10,0)).build(); - - Service s2 = Service.Builder.newInstance("s2") - .addTimeWindow(50., 60.).addTimeWindow(15., 25) - .setLocation(Location.newInstance(20, 0)).build(); - - VehicleImpl v = VehicleImpl.Builder.newInstance("v1").setStartLocation(Location.newInstance(0,0)) - .setEarliestStart(0.).setLatestArrival(40).build(); - + @DisplayName("Service 2 Should Be Inserted") + void service2ShouldBeInserted() { + Service s = Service.Builder.newInstance("s1").setLocation(Location.newInstance(10, 0)).build(); + Service s2 = Service.Builder.newInstance("s2").addTimeWindow(50., 60.).addTimeWindow(15., 25).setLocation(Location.newInstance(20, 0)).build(); + VehicleImpl v = VehicleImpl.Builder.newInstance("v1").setStartLocation(Location.newInstance(0, 0)).setEarliestStart(0.).setLatestArrival(40).build(); VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(s).addJob(s2).addVehicle(v).build(); VehicleRoutingAlgorithm algorithm = Jsprit.createAlgorithm(vrp); algorithm.setMaxIterations(100); VehicleRoutingProblemSolution solution = Solutions.bestOf(algorithm.searchSolutions()); - - Assert.assertEquals(0,solution.getUnassignedJobs().size()); + assertEquals(0, solution.getUnassignedJobs().size()); } } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/OpenRoutesTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/OpenRoutesTest.java index c96b77fc1..b636bec14 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/OpenRoutesTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/OpenRoutesTest.java @@ -31,31 +31,27 @@ import com.graphhopper.jsprit.core.util.GreatCircleCosts; import com.graphhopper.jsprit.core.util.Solutions; import com.graphhopper.jsprit.core.util.TestUtils; -import org.junit.Assert; -import org.junit.Test; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.Collection; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; -public class OpenRoutesTest { +@DisplayName("Open Routes Test") +class OpenRoutesTest { @Test - public void whenDealingWithOpenRouteAndShipments_insertionShouldNotRequireRouteToBeClosed() { + @DisplayName("When Dealing With Open Route And Shipments _ insertion Should Not Require Route To Be Closed") + void whenDealingWithOpenRouteAndShipments_insertionShouldNotRequireRouteToBeClosed() { VehicleType type = VehicleTypeImpl.Builder.newInstance("type").build(); - - VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setLatestArrival(11.) - .setType(type).setReturnToDepot(false).setStartLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(0, 0)).build()).build(); - - Shipment shipment = Shipment.Builder.newInstance("s").setPickupLocation(TestUtils.loc(Coordinate.newInstance(5, 0))) - .setDeliveryLocation(TestUtils.loc(Coordinate.newInstance(10, 0))).build(); - + VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setLatestArrival(11.).setType(type).setReturnToDepot(false).setStartLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(0, 0)).build()).build(); + Shipment shipment = Shipment.Builder.newInstance("s").setPickupLocation(TestUtils.loc(Coordinate.newInstance(5, 0))).setDeliveryLocation(TestUtils.loc(Coordinate.newInstance(10, 0))).build(); VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(shipment).addVehicle(vehicle).build(); - VehicleRoutingAlgorithm vra = new SchrimpfFactory().createAlgorithm(vrp); vra.setMaxIterations(10); - try { @SuppressWarnings("unused") Collection solutions = vra.searchSolutions(); @@ -63,26 +59,17 @@ public void whenDealingWithOpenRouteAndShipments_insertionShouldNotRequireRouteT } catch (NoSolutionFoundException e) { assertFalse(true); } - } @Test - public void whenDealingWithOpenRoute_insertionShouldNotRequireRouteToBeClosed() { + @DisplayName("When Dealing With Open Route _ insertion Should Not Require Route To Be Closed") + void whenDealingWithOpenRoute_insertionShouldNotRequireRouteToBeClosed() { VehicleType type = VehicleTypeImpl.Builder.newInstance("type").build(); - VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setLatestArrival(9.) - .setType(type).setReturnToDepot(false) - .setStartLocation(TestUtils.loc(Coordinate.newInstance(0, 0))) - .build(); - - Service service = Service.Builder.newInstance("s") - .setLocation(TestUtils.loc(Coordinate.newInstance(5, 0))) - .build(); - + VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setLatestArrival(9.).setType(type).setReturnToDepot(false).setStartLocation(TestUtils.loc(Coordinate.newInstance(0, 0))).build(); + Service service = Service.Builder.newInstance("s").setLocation(TestUtils.loc(Coordinate.newInstance(5, 0))).build(); VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(service).addVehicle(vehicle).build(); - VehicleRoutingAlgorithm vra = new SchrimpfFactory().createAlgorithm(vrp); vra.setMaxIterations(10); - try { @SuppressWarnings("unused") Collection solutions = vra.searchSolutions(); @@ -90,73 +77,43 @@ public void whenDealingWithOpenRoute_insertionShouldNotRequireRouteToBeClosed() } catch (NoSolutionFoundException e) { assertFalse(true); } - } - @Test - public void whenDealingWithOpenRouteAndShipments_algorithmShouldCalculateCorrectCosts() { + @DisplayName("When Dealing With Open Route And Shipments _ algorithm Should Calculate Correct Costs") + void whenDealingWithOpenRouteAndShipments_algorithmShouldCalculateCorrectCosts() { VehicleType type = VehicleTypeImpl.Builder.newInstance("type").build(); - - VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setLatestArrival(20.) - .setType(type).setReturnToDepot(false).setStartLocation(Location.Builder.newInstance() - .setCoordinate(Coordinate.newInstance(0, 0)).build()).build(); - - Shipment shipment = Shipment.Builder.newInstance("s") - .setPickupLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(5, 0)).build()) - .setDeliveryLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(10, 0)).build()) - .build(); - + VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setLatestArrival(20.).setType(type).setReturnToDepot(false).setStartLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(0, 0)).build()).build(); + Shipment shipment = Shipment.Builder.newInstance("s").setPickupLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(5, 0)).build()).setDeliveryLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(10, 0)).build()).build(); VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(shipment).addVehicle(vehicle).build(); - VehicleRoutingAlgorithm vra = new SchrimpfFactory().createAlgorithm(vrp); vra.setMaxIterations(10); - Collection solutions = vra.searchSolutions(); - - Assert.assertEquals(10., Solutions.bestOf(solutions).getCost(), 0.01); - + Assertions.assertEquals(10., Solutions.bestOf(solutions).getCost(), 0.01); } @Test - public void whenDealingWithOpenRoute_algorithmShouldCalculateCorrectCosts() { + @DisplayName("When Dealing With Open Route _ algorithm Should Calculate Correct Costs") + void whenDealingWithOpenRoute_algorithmShouldCalculateCorrectCosts() { VehicleType type = VehicleTypeImpl.Builder.newInstance("type").build(); - VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setLatestArrival(10.) - .setType(type).setReturnToDepot(false).setStartLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(0, 0)).build()).build(); - - Service service = Service.Builder.newInstance("s") - .setLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(5, 0)).build()).build(); - + VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setLatestArrival(10.).setType(type).setReturnToDepot(false).setStartLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(0, 0)).build()).build(); + Service service = Service.Builder.newInstance("s").setLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(5, 0)).build()).build(); VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(service).addVehicle(vehicle).build(); - VehicleRoutingAlgorithm vra = new SchrimpfFactory().createAlgorithm(vrp); vra.setMaxIterations(10); - Collection solutions = vra.searchSolutions(); - - Assert.assertEquals(5., Solutions.bestOf(solutions).getCost(), 0.01); - + Assertions.assertEquals(5., Solutions.bestOf(solutions).getCost(), 0.01); } @Test - public void whenDealingWithOpenRouteAndGreatCircleCost_algorithmShouldRunWithoutException() { + @DisplayName("When Dealing With Open Route And Great Circle Cost _ algorithm Should Run Without Exception") + void whenDealingWithOpenRouteAndGreatCircleCost_algorithmShouldRunWithoutException() { VehicleType type = VehicleTypeImpl.Builder.newInstance("type").build(); - VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v") - .setType(type).setReturnToDepot(false) - .setStartLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(0, 0)).build()) - .build(); - - Service service = Service.Builder.newInstance("s") - .setLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(50, 0)).build()).build(); - - VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance() - .addJob(service).addVehicle(vehicle) - .setRoutingCost(new GreatCircleCosts()) - .build(); - + VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setType(type).setReturnToDepot(false).setStartLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(0, 0)).build()).build(); + Service service = Service.Builder.newInstance("s").setLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(50, 0)).build()).build(); + VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(service).addVehicle(vehicle).setRoutingCost(new GreatCircleCosts()).build(); VehicleRoutingAlgorithm vra = new SchrimpfFactory().createAlgorithm(vrp); vra.setMaxIterations(10); - try { @SuppressWarnings("UnusedDeclaration") Collection solutions = vra.searchSolutions(); @@ -164,9 +121,5 @@ public void whenDealingWithOpenRouteAndGreatCircleCost_algorithmShouldRunWithout } catch (Exception e) { assertTrue(false); } - - } - - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/PickupsAndDeliveries_IT.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/PickupsAndDeliveries_IT.java index ff8e4aedd..38e3cd9ba 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/PickupsAndDeliveries_IT.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/PickupsAndDeliveries_IT.java @@ -23,7 +23,6 @@ import com.graphhopper.jsprit.core.util.LiLimReader; import com.graphhopper.jsprit.core.util.Solutions; import org.junit.Test; -import org.junit.experimental.categories.Category; import java.util.Collection; diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/RefuseCollectionWithCostsHigherThanTimesAndFiniteFleet_IT.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/RefuseCollectionWithCostsHigherThanTimesAndFiniteFleet_IT.java index 6d88cef89..47ecee0b4 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/RefuseCollectionWithCostsHigherThanTimesAndFiniteFleet_IT.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/RefuseCollectionWithCostsHigherThanTimesAndFiniteFleet_IT.java @@ -28,7 +28,6 @@ import com.graphhopper.jsprit.core.util.Solutions; import com.graphhopper.jsprit.core.util.VehicleRoutingTransportCostsMatrix; import org.junit.Test; -import org.junit.experimental.categories.Category; import java.io.BufferedReader; import java.io.FileNotFoundException; diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/RefuseCollectionWithCostsHigherThanTimesAndFiniteFleet_withTimeAndDistanceCosts_IT.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/RefuseCollectionWithCostsHigherThanTimesAndFiniteFleet_withTimeAndDistanceCosts_IT.java index 59586e9ce..1ac73a53c 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/RefuseCollectionWithCostsHigherThanTimesAndFiniteFleet_withTimeAndDistanceCosts_IT.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/RefuseCollectionWithCostsHigherThanTimesAndFiniteFleet_withTimeAndDistanceCosts_IT.java @@ -16,6 +16,7 @@ * limitations under the License. */ package com.graphhopper.jsprit.core.algorithm; + import com.graphhopper.jsprit.core.algorithm.box.GreedySchrimpfFactory; import com.graphhopper.jsprit.core.algorithm.termination.IterationWithoutImprovementTermination; import com.graphhopper.jsprit.core.problem.Location; @@ -28,7 +29,6 @@ import com.graphhopper.jsprit.core.util.Solutions; import com.graphhopper.jsprit.core.util.VehicleRoutingTransportCostsMatrix; import org.junit.Test; -import org.junit.experimental.categories.Category; import java.io.BufferedReader; import java.io.FileNotFoundException; diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/RefuseCollection_IT.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/RefuseCollection_IT.java index fc4d5aabc..e9b6d50ac 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/RefuseCollection_IT.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/RefuseCollection_IT.java @@ -29,12 +29,10 @@ import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; - import com.graphhopper.jsprit.core.util.Solutions; import com.graphhopper.jsprit.core.util.VehicleRoutingTransportCostsMatrix; import org.junit.Assert; import org.junit.Test; -import org.junit.experimental.categories.Category; import java.io.BufferedReader; import java.io.IOException; diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/SearchStrategyManagerTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/SearchStrategyManagerTest.java index 1797b306d..b87db1f2d 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/SearchStrategyManagerTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/SearchStrategyManagerTest.java @@ -21,8 +21,9 @@ import com.graphhopper.jsprit.core.algorithm.selector.SolutionSelector; import com.graphhopper.jsprit.core.problem.solution.SolutionCostCalculator; import com.graphhopper.jsprit.core.util.RandomNumberGeneration; -import org.junit.Assert; -import org.junit.Test; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.ArrayList; import java.util.List; @@ -30,15 +31,17 @@ import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; - -public class SearchStrategyManagerTest { +@DisplayName("Search Strategy Manager Test") +class SearchStrategyManagerTest { @Test - public void StrategyManagerInAction_addingStrategy_IsSuccessful() { + @DisplayName("Strategy Manager In Action _ adding Strategy _ Is Successful") + void StrategyManagerInAction_addingStrategy_IsSuccessful() { SearchStrategyManager manager = new SearchStrategyManager(); SearchStrategy strat1 = mock(SearchStrategy.class); SearchStrategy strat2 = mock(SearchStrategy.class); @@ -49,24 +52,31 @@ public void StrategyManagerInAction_addingStrategy_IsSuccessful() { assertTrue(true); } - @Test(expected = IllegalStateException.class) - public void StrategyManagerInAction_strategyIsNull_throwsException() { - SearchStrategyManager manager = new SearchStrategyManager(); - manager.addStrategy(null, 1.0); - assertTrue(false); + @Test + @DisplayName("Strategy Manager In Action _ strategy Is Null _ throws Exception") + void StrategyManagerInAction_strategyIsNull_throwsException() { + assertThrows(IllegalStateException.class, () -> { + SearchStrategyManager manager = new SearchStrategyManager(); + manager.addStrategy(null, 1.0); + assertTrue(false); + }); } - @Test(expected = IllegalStateException.class) - public void StrategyManagerInAction_probabilityIsLowerThanZero_throwsException() { - SearchStrategyManager manager = new SearchStrategyManager(); - SearchStrategy strat = mock(SearchStrategy.class); - when(strat.getId()).thenReturn("strat1"); - manager.addStrategy(strat, -1.0); - assertTrue(false); + @Test + @DisplayName("Strategy Manager In Action _ probability Is Lower Than Zero _ throws Exception") + void StrategyManagerInAction_probabilityIsLowerThanZero_throwsException() { + assertThrows(IllegalStateException.class, () -> { + SearchStrategyManager manager = new SearchStrategyManager(); + SearchStrategy strat = mock(SearchStrategy.class); + when(strat.getId()).thenReturn("strat1"); + manager.addStrategy(strat, -1.0); + assertTrue(false); + }); } @Test - public void itShouldReturnStrategy2() { + @DisplayName("It Should Return Strategy 2") + void itShouldReturnStrategy2() { SearchStrategyManager manager = new SearchStrategyManager(); SearchStrategy mockedStrat1 = mock(SearchStrategy.class); SearchStrategy mockedStrat2 = mock(SearchStrategy.class); @@ -74,160 +84,134 @@ public void itShouldReturnStrategy2() { when(mockedStrat2.getId()).thenReturn("strat2"); manager.addStrategy(mockedStrat1, 0.5); manager.addStrategy(mockedStrat2, 1.5); - Random mockedRandom = mock(Random.class); manager.setRandom(mockedRandom); when(mockedRandom.nextDouble()).thenReturn(0.25); - assertThat(manager.getRandomStrategy(), is(mockedStrat2)); } @Test - public void whenStratWeightChanged_itShouldReturnStrategy1() { + @DisplayName("When Strat Weight Changed _ it Should Return Strategy 1") + void whenStratWeightChanged_itShouldReturnStrategy1() { SearchStrategyManager manager = new SearchStrategyManager(); SearchStrategy mockedStrat1 = mock(SearchStrategy.class); SearchStrategy mockedStrat2 = mock(SearchStrategy.class); - when(mockedStrat1.getId()).thenReturn("strat1"); when(mockedStrat2.getId()).thenReturn("strat2"); - manager.addStrategy(mockedStrat1, 0.5); manager.addStrategy(mockedStrat2, 1.5); - Random mockedRandom = mock(Random.class); manager.setRandom(mockedRandom); when(mockedRandom.nextDouble()).thenReturn(0.25); - assertThat(manager.getRandomStrategy(), is(mockedStrat2)); - manager.informStrategyWeightChanged("strat2", 1.4); - assertThat(manager.getRandomStrategy(), is(mockedStrat1)); } @Test - public void itShouldReturnStrategy1() { + @DisplayName("It Should Return Strategy 1") + void itShouldReturnStrategy1() { SearchStrategyManager manager = new SearchStrategyManager(); SearchStrategy mockedStrat1 = mock(SearchStrategy.class); SearchStrategy mockedStrat2 = mock(SearchStrategy.class); - when(mockedStrat1.getId()).thenReturn("strat1"); when(mockedStrat2.getId()).thenReturn("strat2"); - manager.addStrategy(mockedStrat1, 0.5); manager.addStrategy(mockedStrat2, 1.5); - Random mockedRandom = mock(Random.class); manager.setRandom(mockedRandom); when(mockedRandom.nextDouble()).thenReturn(0.24); - assertThat(manager.getRandomStrategy(), is(mockedStrat1)); } @Test - public void whenRandomDices_0point1_returnsStrategy1() { + @DisplayName("When Random Dices _ 0 point 1 _ returns Strategy 1") + void whenRandomDices_0point1_returnsStrategy1() { SearchStrategyManager managerUnderTest = new SearchStrategyManager(); SearchStrategy mockedStrategy1 = mock(SearchStrategy.class); SearchStrategy mockedStrategy2 = mock(SearchStrategy.class); - when(mockedStrategy1.getId()).thenReturn("strat1"); when(mockedStrategy2.getId()).thenReturn("strat2"); - managerUnderTest.addStrategy(mockedStrategy1, 0.2); managerUnderTest.addStrategy(mockedStrategy2, 0.8); - Random mockedRandom = mock(Random.class); managerUnderTest.setRandom(mockedRandom); when(mockedRandom.nextDouble()).thenReturn(0.1); - assertThat(managerUnderTest.getRandomStrategy(), is(mockedStrategy1)); - } @Test - public void whenRandomDices_0point5_returnsStrategy2() { + @DisplayName("When Random Dices _ 0 point 5 _ returns Strategy 2") + void whenRandomDices_0point5_returnsStrategy2() { SearchStrategyManager managerUnderTest = new SearchStrategyManager(); SearchStrategy mockedStrategy1 = mock(SearchStrategy.class); SearchStrategy mockedStrategy2 = mock(SearchStrategy.class); - when(mockedStrategy1.getId()).thenReturn("strat1"); when(mockedStrategy2.getId()).thenReturn("strat2"); - managerUnderTest.addStrategy(mockedStrategy1, 0.2); managerUnderTest.addStrategy(mockedStrategy2, 0.8); - Random mockedRandom = mock(Random.class); managerUnderTest.setRandom(mockedRandom); when(mockedRandom.nextDouble()).thenReturn(0.5); - assertThat(managerUnderTest.getRandomStrategy(), is(mockedStrategy2)); - } @Test - public void whenRandomDices_0point0_returnsStrategy1() { + @DisplayName("When Random Dices _ 0 point 0 _ returns Strategy 1") + void whenRandomDices_0point0_returnsStrategy1() { SearchStrategyManager managerUnderTest = new SearchStrategyManager(); SearchStrategy mockedStrategy1 = mock(SearchStrategy.class); SearchStrategy mockedStrategy2 = mock(SearchStrategy.class); - when(mockedStrategy1.getId()).thenReturn("strat1"); when(mockedStrategy2.getId()).thenReturn("strat2"); - managerUnderTest.addStrategy(mockedStrategy1, 0.2); managerUnderTest.addStrategy(mockedStrategy2, 0.8); - Random mockedRandom = mock(Random.class); managerUnderTest.setRandom(mockedRandom); when(mockedRandom.nextDouble()).thenReturn(0.0); - assertThat(managerUnderTest.getRandomStrategy(), is(mockedStrategy1)); - } - @Test(expected = IllegalStateException.class) - public void whenRandomIsNull_throwException() { - SearchStrategyManager managerUnderTest = new SearchStrategyManager(); - SearchStrategy mockedStrategy1 = mock(SearchStrategy.class); - SearchStrategy mockedStrategy2 = mock(SearchStrategy.class); - managerUnderTest.addStrategy(mockedStrategy1, 0.2); - managerUnderTest.addStrategy(mockedStrategy2, 0.8); - - when(mockedStrategy1.getId()).thenReturn("strat1"); - when(mockedStrategy2.getId()).thenReturn("strat2"); - - Random mockedRandom = null; - managerUnderTest.setRandom(mockedRandom); - managerUnderTest.getRandomStrategy(); - + @Test + @DisplayName("When Random Is Null _ throw Exception") + void whenRandomIsNull_throwException() { + assertThrows(IllegalStateException.class, () -> { + SearchStrategyManager managerUnderTest = new SearchStrategyManager(); + SearchStrategy mockedStrategy1 = mock(SearchStrategy.class); + SearchStrategy mockedStrategy2 = mock(SearchStrategy.class); + managerUnderTest.addStrategy(mockedStrategy1, 0.2); + managerUnderTest.addStrategy(mockedStrategy2, 0.8); + when(mockedStrategy1.getId()).thenReturn("strat1"); + when(mockedStrategy2.getId()).thenReturn("strat2"); + Random mockedRandom = null; + managerUnderTest.setRandom(mockedRandom); + managerUnderTest.getRandomStrategy(); + }); } @Test - public void strategyDrawShouldBeReproducible() { + @DisplayName("Strategy Draw Should Be Reproducible") + void strategyDrawShouldBeReproducible() { RandomNumberGeneration.reset(); SearchStrategyManager managerUnderTest = new SearchStrategyManager(); - SearchStrategy mockedStrategy1 = new SearchStrategy("strat1" - , mock(SolutionSelector.class), mock(SolutionAcceptor.class), mock(SolutionCostCalculator.class)); - SearchStrategy mockedStrategy2 = new SearchStrategy("strat2" - , mock(SolutionSelector.class), mock(SolutionAcceptor.class), mock(SolutionCostCalculator.class)); - + SearchStrategy mockedStrategy1 = new SearchStrategy("strat1", mock(SolutionSelector.class), mock(SolutionAcceptor.class), mock(SolutionCostCalculator.class)); + SearchStrategy mockedStrategy2 = new SearchStrategy("strat2", mock(SolutionSelector.class), mock(SolutionAcceptor.class), mock(SolutionCostCalculator.class)); managerUnderTest.addStrategy(mockedStrategy1, 0.2); managerUnderTest.addStrategy(mockedStrategy2, 0.8); List firstRecord = new ArrayList(); for (int i = 0; i < 1000; i++) { firstRecord.add(managerUnderTest.getRandomStrategy().getId()); } - RandomNumberGeneration.reset(); List secondRecord = new ArrayList(); for (int i = 0; i < 1000; i++) { secondRecord.add(managerUnderTest.getRandomStrategy().getId()); } - for (int i = 0; i < 1000; i++) { if (!firstRecord.get(i).equals(secondRecord.get(i))) { - Assert.assertFalse(true); + Assertions.assertFalse(true); } } - Assert.assertTrue(true); + Assertions.assertTrue(true); } } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/SearchStrategyTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/SearchStrategyTest.java index 0e6619426..4b3e86427 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/SearchStrategyTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/SearchStrategyTest.java @@ -23,43 +23,43 @@ import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; import com.graphhopper.jsprit.core.problem.solution.SolutionCostCalculator; import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import org.junit.Test; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.ArrayList; import java.util.Collection; import java.util.Random; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; +@DisplayName("Search Strategy Test") +class SearchStrategyTest { -public class SearchStrategyTest { - - @Test(expected = IllegalStateException.class) - public void whenANullModule_IsAdded_throwException() { - SolutionSelector select = mock(SolutionSelector.class); - SolutionAcceptor accept = mock(SolutionAcceptor.class); - SolutionCostCalculator calc = mock(SolutionCostCalculator.class); - - SearchStrategy strat = new SearchStrategy("strat", select, accept, calc); - strat.addModule(null); - + @Test + @DisplayName("When A Null Module _ Is Added _ throw Exception") + void whenANullModule_IsAdded_throwException() { + assertThrows(IllegalStateException.class, () -> { + SolutionSelector select = mock(SolutionSelector.class); + SolutionAcceptor accept = mock(SolutionAcceptor.class); + SolutionCostCalculator calc = mock(SolutionCostCalculator.class); + SearchStrategy strat = new SearchStrategy("strat", select, accept, calc); + strat.addModule(null); + }); } @Test - public void whenStratRunsWithOneModule_runItOnes() { + @DisplayName("When Strat Runs With One Module _ run It Ones") + void whenStratRunsWithOneModule_runItOnes() { SolutionSelector select = mock(SolutionSelector.class); SolutionAcceptor accept = mock(SolutionAcceptor.class); SolutionCostCalculator calc = mock(SolutionCostCalculator.class); - final VehicleRoutingProblem vrp = mock(VehicleRoutingProblem.class); final VehicleRoutingProblemSolution newSol = mock(VehicleRoutingProblemSolution.class); - when(select.selectSolution(null)).thenReturn(newSol); - final Collection runs = new ArrayList(); - SearchStrategy strat = new SearchStrategy("strat", select, accept, calc); SearchStrategyModule mod = new SearchStrategyModule() { @@ -75,32 +75,25 @@ public String getName() { } @Override - public void addModuleListener( - SearchStrategyModuleListener moduleListener) { - + public void addModuleListener(SearchStrategyModuleListener moduleListener) { } }; strat.addModule(mod); strat.run(vrp, null); - assertEquals(runs.size(), 1); } @Test - public void whenStratRunsWithTwoModule_runItTwice() { + @DisplayName("When Strat Runs With Two Module _ run It Twice") + void whenStratRunsWithTwoModule_runItTwice() { SolutionSelector select = mock(SolutionSelector.class); SolutionAcceptor accept = mock(SolutionAcceptor.class); SolutionCostCalculator calc = mock(SolutionCostCalculator.class); - final VehicleRoutingProblem vrp = mock(VehicleRoutingProblem.class); final VehicleRoutingProblemSolution newSol = mock(VehicleRoutingProblemSolution.class); - when(select.selectSolution(null)).thenReturn(newSol); - final Collection runs = new ArrayList(); - SearchStrategy strat = new SearchStrategy("strat", select, accept, calc); - SearchStrategyModule mod = new SearchStrategyModule() { @Override @@ -115,9 +108,7 @@ public String getName() { } @Override - public void addModuleListener( - SearchStrategyModuleListener moduleListener) { - + public void addModuleListener(SearchStrategyModuleListener moduleListener) { } }; SearchStrategyModule mod2 = new SearchStrategyModule() { @@ -134,35 +125,27 @@ public String getName() { } @Override - public void addModuleListener( - SearchStrategyModuleListener moduleListener) { - + public void addModuleListener(SearchStrategyModuleListener moduleListener) { } }; strat.addModule(mod); strat.addModule(mod2); strat.run(vrp, null); - assertEquals(runs.size(), 2); } @Test - public void whenStratRunsWithNModule_runItNTimes() { + @DisplayName("When Strat Runs With N Module _ run It N Times") + void whenStratRunsWithNModule_runItNTimes() { SolutionSelector select = mock(SolutionSelector.class); SolutionAcceptor accept = mock(SolutionAcceptor.class); SolutionCostCalculator calc = mock(SolutionCostCalculator.class); - final VehicleRoutingProblem vrp = mock(VehicleRoutingProblem.class); final VehicleRoutingProblemSolution newSol = mock(VehicleRoutingProblemSolution.class); - when(select.selectSolution(null)).thenReturn(newSol); - int N = new Random().nextInt(1000); - final Collection runs = new ArrayList(); - SearchStrategy strat = new SearchStrategy("strat", select, accept, calc); - for (int i = 0; i < N; i++) { SearchStrategyModule mod = new SearchStrategyModule() { @@ -178,9 +161,7 @@ public String getName() { } @Override - public void addModuleListener( - SearchStrategyModuleListener moduleListener) { - + public void addModuleListener(SearchStrategyModuleListener moduleListener) { } }; strat.addModule(mod); @@ -189,47 +170,40 @@ public void addModuleListener( assertEquals(runs.size(), N); } - @Test(expected = IllegalStateException.class) - public void whenSelectorDeliversNullSolution_throwException() { - SolutionSelector select = mock(SolutionSelector.class); - SolutionAcceptor accept = mock(SolutionAcceptor.class); - SolutionCostCalculator calc = mock(SolutionCostCalculator.class); - - final VehicleRoutingProblem vrp = mock(VehicleRoutingProblem.class); - - when(select.selectSolution(null)).thenReturn(null); - - int N = new Random().nextInt(1000); - - final Collection runs = new ArrayList(); - - SearchStrategy strat = new SearchStrategy("strat", select, accept, calc); - - for (int i = 0; i < N; i++) { - SearchStrategyModule mod = new SearchStrategyModule() { - - @Override - public VehicleRoutingProblemSolution runAndGetSolution(VehicleRoutingProblemSolution vrpSolution) { - runs.add(1); - return vrpSolution; - } - - @Override - public String getName() { - return null; - } - - @Override - public void addModuleListener( - SearchStrategyModuleListener moduleListener) { - - } - }; - strat.addModule(mod); - } - strat.run(vrp, null); - assertEquals(runs.size(), N); + @Test + @DisplayName("When Selector Delivers Null Solution _ throw Exception") + void whenSelectorDeliversNullSolution_throwException() { + assertThrows(IllegalStateException.class, () -> { + SolutionSelector select = mock(SolutionSelector.class); + SolutionAcceptor accept = mock(SolutionAcceptor.class); + SolutionCostCalculator calc = mock(SolutionCostCalculator.class); + final VehicleRoutingProblem vrp = mock(VehicleRoutingProblem.class); + when(select.selectSolution(null)).thenReturn(null); + int N = new Random().nextInt(1000); + final Collection runs = new ArrayList(); + SearchStrategy strat = new SearchStrategy("strat", select, accept, calc); + for (int i = 0; i < N; i++) { + SearchStrategyModule mod = new SearchStrategyModule() { + + @Override + public VehicleRoutingProblemSolution runAndGetSolution(VehicleRoutingProblemSolution vrpSolution) { + runs.add(1); + return vrpSolution; + } + + @Override + public String getName() { + return null; + } + + @Override + public void addModuleListener(SearchStrategyModuleListener moduleListener) { + } + }; + strat.addModule(mod); + } + strat.run(vrp, null); + assertEquals(runs.size(), N); + }); } - - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/SolomonSkills_IT.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/SolomonSkills_IT.java index 928ac039b..767f790e4 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/SolomonSkills_IT.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/SolomonSkills_IT.java @@ -32,7 +32,6 @@ import com.graphhopper.jsprit.core.util.Solutions; import com.graphhopper.jsprit.core.util.TestUtils; import org.junit.Test; -import org.junit.experimental.categories.Category; import java.util.Collection; diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/Solomon_IT.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/Solomon_IT.java index 055696f9e..a4af17804 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/Solomon_IT.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/Solomon_IT.java @@ -25,7 +25,6 @@ import com.graphhopper.jsprit.core.util.Solutions; import org.junit.Assert; import org.junit.Test; -import org.junit.experimental.categories.Category; import java.util.Collection; diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/UnassignedJobListTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/UnassignedJobListTest.java index 49c524b64..44d78ce41 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/UnassignedJobListTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/UnassignedJobListTest.java @@ -15,7 +15,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.graphhopper.jsprit.core.algorithm; import com.graphhopper.jsprit.core.algorithm.box.GreedySchrimpfFactory; @@ -27,64 +26,56 @@ import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; import com.graphhopper.jsprit.core.util.Solutions; import com.graphhopper.jsprit.core.util.UnassignedJobReasonTracker; -import org.junit.Test; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.Collection; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -public class UnassignedJobListTest { +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; +@DisplayName("Unassigned Job List Test") +class UnassignedJobListTest { @Test - public void job2ShouldBeInBadJobList_dueToTimeWindow() { + @DisplayName("Job 2 Should Be In Bad Job List _ due To Time Window") + void job2ShouldBeInBadJobList_dueToTimeWindow() { VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); builder.addVehicle(VehicleImpl.Builder.newInstance("v1").setEarliestStart(0).setLatestArrival(12).setStartLocation(Location.newInstance(1, 1)).build()); Service job1 = Service.Builder.newInstance("job1").setLocation(Location.newInstance(0, 0)).setTimeWindow(TimeWindow.newInstance(0, 12)).setServiceTime(1).build(); builder.addJob(job1); Service job2 = Service.Builder.newInstance("job2").setLocation(Location.newInstance(2, 2)).setTimeWindow(TimeWindow.newInstance(12, 24)).setServiceTime(1).build(); builder.addJob(job2); - VehicleRoutingProblem vrp = builder.build(); VehicleRoutingAlgorithm algorithm = new GreedySchrimpfFactory().createAlgorithm(vrp); algorithm.setMaxIterations(10); - UnassignedJobReasonTracker reasonTracker = new UnassignedJobReasonTracker(); algorithm.addListener(reasonTracker); - Collection solutions = algorithm.searchSolutions(); - VehicleRoutingProblemSolution solution = Solutions.bestOf(solutions); - assertTrue(!solution.getUnassignedJobs().contains(job1)); assertTrue(solution.getUnassignedJobs().contains(job2)); assertEquals(2, reasonTracker.getMostLikelyReasonCode("job2")); } @Test - public void job2ShouldBeInBadJobList_dueToSize() { + @DisplayName("Job 2 Should Be In Bad Job List _ due To Size") + void job2ShouldBeInBadJobList_dueToSize() { VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); builder.addVehicle(VehicleImpl.Builder.newInstance("v1").setEarliestStart(0).setLatestArrival(12).setStartLocation(Location.newInstance(1, 1)).build()); Service job1 = Service.Builder.newInstance("job1").setLocation(Location.newInstance(0, 0)).setTimeWindow(TimeWindow.newInstance(0, 12)).setServiceTime(1).build(); builder.addJob(job1); Service job2 = Service.Builder.newInstance("job2").setLocation(Location.newInstance(2, 2)).addSizeDimension(0, 10).setTimeWindow(TimeWindow.newInstance(0, 12)).setServiceTime(1).build(); builder.addJob(job2); - VehicleRoutingProblem vrp = builder.build(); - VehicleRoutingAlgorithm algorithm = new GreedySchrimpfFactory().createAlgorithm(vrp); algorithm.setMaxIterations(10); - UnassignedJobReasonTracker reasonTracker = new UnassignedJobReasonTracker(); algorithm.addListener(reasonTracker); - Collection solutions = algorithm.searchSolutions(); - VehicleRoutingProblemSolution solution = Solutions.bestOf(solutions); assertTrue(!solution.getUnassignedJobs().contains(job1)); assertTrue(solution.getUnassignedJobs().contains(job2)); assertEquals(3, reasonTracker.getMostLikelyReasonCode("job2")); } - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/VariableDepartureAndWaitingTime_IT.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/VariableDepartureAndWaitingTime_IT.java index 3232ca4e7..bc02005dd 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/VariableDepartureAndWaitingTime_IT.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/VariableDepartureAndWaitingTime_IT.java @@ -39,7 +39,6 @@ import junit.framework.Assert; import org.junit.Before; import org.junit.Test; -import org.junit.experimental.categories.Category; /** * Created by schroeder on 22/07/15. diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/VehicleRoutingAlgorithmTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/VehicleRoutingAlgorithmTest.java index 1deed4ccb..0c86ece6e 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/VehicleRoutingAlgorithmTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/VehicleRoutingAlgorithmTest.java @@ -21,33 +21,36 @@ import com.graphhopper.jsprit.core.algorithm.termination.PrematureAlgorithmTermination; import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import org.junit.Test; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.Arrays; import java.util.Collection; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -public class VehicleRoutingAlgorithmTest { +@DisplayName("Vehicle Routing Algorithm Test") +class VehicleRoutingAlgorithmTest { @Test - public void whenSettingIterations_itIsSetCorrectly() { - VehicleRoutingAlgorithm algorithm = new VehicleRoutingAlgorithm(mock(VehicleRoutingProblem.class), - mock(SearchStrategyManager.class)); + @DisplayName("When Setting Iterations _ it Is Set Correctly") + void whenSettingIterations_itIsSetCorrectly() { + VehicleRoutingAlgorithm algorithm = new VehicleRoutingAlgorithm(mock(VehicleRoutingProblem.class), mock(SearchStrategyManager.class)); algorithm.setMaxIterations(50); assertEquals(50, algorithm.getMaxIterations()); } @Test - public void whenSettingIterationsWithMaxIterations_itIsSetCorrectly() { - VehicleRoutingAlgorithm algorithm = new VehicleRoutingAlgorithm(mock(VehicleRoutingProblem.class), - mock(SearchStrategyManager.class)); + @DisplayName("When Setting Iterations With Max Iterations _ it Is Set Correctly") + void whenSettingIterationsWithMaxIterations_itIsSetCorrectly() { + VehicleRoutingAlgorithm algorithm = new VehicleRoutingAlgorithm(mock(VehicleRoutingProblem.class), mock(SearchStrategyManager.class)); algorithm.setMaxIterations(50); assertEquals(50, algorithm.getMaxIterations()); } + @DisplayName("Count Iterations") private static class CountIterations implements IterationStartsListener { private int countIterations = 0; @@ -60,14 +63,13 @@ public void informIterationStarts(int i, VehicleRoutingProblem problem, Collecti public int getCountIterations() { return countIterations; } - } @Test - public void whenSettingIterationsWithMaxIterations_iterAreExecutedCorrectly() { + @DisplayName("When Setting Iterations With Max Iterations _ iter Are Executed Correctly") + void whenSettingIterationsWithMaxIterations_iterAreExecutedCorrectly() { SearchStrategyManager stratManager = mock(SearchStrategyManager.class); - VehicleRoutingAlgorithm algorithm = new VehicleRoutingAlgorithm(mock(VehicleRoutingProblem.class), - stratManager); + VehicleRoutingAlgorithm algorithm = new VehicleRoutingAlgorithm(mock(VehicleRoutingProblem.class), stratManager); when(stratManager.getRandomStrategy()).thenReturn(mock(SearchStrategy.class)); when(stratManager.getWeights()).thenReturn(Arrays.asList(1.0)); algorithm.setMaxIterations(1000); @@ -78,10 +80,10 @@ public void whenSettingIterationsWithMaxIterations_iterAreExecutedCorrectly() { } @Test - public void whenSettingIterations_iterAreExecutedCorrectly() { + @DisplayName("When Setting Iterations _ iter Are Executed Correctly") + void whenSettingIterations_iterAreExecutedCorrectly() { SearchStrategyManager stratManager = mock(SearchStrategyManager.class); - VehicleRoutingAlgorithm algorithm = new VehicleRoutingAlgorithm(mock(VehicleRoutingProblem.class), - stratManager); + VehicleRoutingAlgorithm algorithm = new VehicleRoutingAlgorithm(mock(VehicleRoutingProblem.class), stratManager); when(stratManager.getRandomStrategy()).thenReturn(mock(SearchStrategy.class)); when(stratManager.getWeights()).thenReturn(Arrays.asList(1.0)); algorithm.setMaxIterations(1000); @@ -92,10 +94,10 @@ public void whenSettingIterations_iterAreExecutedCorrectly() { } @Test - public void whenSettingPrematureTermination_itIsExecutedCorrectly() { + @DisplayName("When Setting Premature Termination _ it Is Executed Correctly") + void whenSettingPrematureTermination_itIsExecutedCorrectly() { SearchStrategyManager stratManager = mock(SearchStrategyManager.class); - VehicleRoutingAlgorithm algorithm = new VehicleRoutingAlgorithm(mock(VehicleRoutingProblem.class), - stratManager); + VehicleRoutingAlgorithm algorithm = new VehicleRoutingAlgorithm(mock(VehicleRoutingProblem.class), stratManager); when(stratManager.getRandomStrategy()).thenReturn(mock(SearchStrategy.class)); when(stratManager.getWeights()).thenReturn(Arrays.asList(1.0)); algorithm.setMaxIterations(1000); @@ -105,7 +107,8 @@ public void whenSettingPrematureTermination_itIsExecutedCorrectly() { @Override public boolean isPrematureBreak(SearchStrategy.DiscoveredSolution discoveredSolution) { - if (nuOfIterations == 50) return true; + if (nuOfIterations == 50) + return true; nuOfIterations++; return false; } @@ -118,7 +121,8 @@ public boolean isPrematureBreak(SearchStrategy.DiscoveredSolution discoveredSolu } @Test - public void whenAddingPrematureTermination_itIsExecutedCorrectly() { + @DisplayName("When Adding Premature Termination _ it Is Executed Correctly") + void whenAddingPrematureTermination_itIsExecutedCorrectly() { SearchStrategyManager stratManager = mock(SearchStrategyManager.class); VehicleRoutingAlgorithm algorithm = new VehicleRoutingAlgorithm(mock(VehicleRoutingProblem.class), stratManager); when(stratManager.getRandomStrategy()).thenReturn(mock(SearchStrategy.class)); @@ -130,11 +134,11 @@ public void whenAddingPrematureTermination_itIsExecutedCorrectly() { @Override public boolean isPrematureBreak(SearchStrategy.DiscoveredSolution discoveredSolution) { - if (nuOfIterations == 50) return true; + if (nuOfIterations == 50) + return true; nuOfIterations++; return false; } - }; CountIterations counter = new CountIterations(); algorithm.addListener(counter); @@ -144,7 +148,8 @@ public boolean isPrematureBreak(SearchStrategy.DiscoveredSolution discoveredSolu } @Test - public void whenAddingPrematureTwoTerminationCriteria_itIsExecutedCorrectly() { + @DisplayName("When Adding Premature Two Termination Criteria _ it Is Executed Correctly") + void whenAddingPrematureTwoTerminationCriteria_itIsExecutedCorrectly() { SearchStrategyManager stratManager = mock(SearchStrategyManager.class); VehicleRoutingAlgorithm algorithm = new VehicleRoutingAlgorithm(mock(VehicleRoutingProblem.class), stratManager); when(stratManager.getRandomStrategy()).thenReturn(mock(SearchStrategy.class)); @@ -156,11 +161,11 @@ public void whenAddingPrematureTwoTerminationCriteria_itIsExecutedCorrectly() { @Override public boolean isPrematureBreak(SearchStrategy.DiscoveredSolution discoveredSolution) { - if (nuOfIterations == 50) return true; + if (nuOfIterations == 50) + return true; nuOfIterations++; return false; } - }; PrematureAlgorithmTermination termination2 = new PrematureAlgorithmTermination() { @@ -168,11 +173,11 @@ public boolean isPrematureBreak(SearchStrategy.DiscoveredSolution discoveredSolu @Override public boolean isPrematureBreak(SearchStrategy.DiscoveredSolution discoveredSolution) { - if (nuOfIterations == 25) return true; + if (nuOfIterations == 25) + return true; nuOfIterations++; return false; } - }; CountIterations counter = new CountIterations(); algorithm.addListener(counter); @@ -181,5 +186,4 @@ public boolean isPrematureBreak(SearchStrategy.DiscoveredSolution discoveredSolu algorithm.searchSolutions(); assertEquals(25, counter.getCountIterations()); } - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/acceptor/GreedyAcceptanceTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/acceptor/GreedyAcceptanceTest.java index c744dfdca..1cffdab56 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/acceptor/GreedyAcceptanceTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/acceptor/GreedyAcceptanceTest.java @@ -18,38 +18,34 @@ package com.graphhopper.jsprit.core.algorithm.acceptor; import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import org.junit.Test; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.ArrayList; import java.util.List; import static org.hamcrest.CoreMatchers.is; -import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; - -public class GreedyAcceptanceTest { +@DisplayName("Greedy Acceptance Test") +class GreedyAcceptanceTest { @Test - public void whenHavingNewSolAndLimitedMemory_removeWorstAndAddNew() { - + @DisplayName("When Having New Sol And Limited Memory _ remove Worst And Add New") + void whenHavingNewSolAndLimitedMemory_removeWorstAndAddNew() { VehicleRoutingProblemSolution sol1 = mock(VehicleRoutingProblemSolution.class); VehicleRoutingProblemSolution sol2 = mock(VehicleRoutingProblemSolution.class); when(sol1.getCost()).thenReturn(1.0); when(sol2.getCost()).thenReturn(2.0); - List solList = new ArrayList(); solList.add(sol1); solList.add(sol2); - VehicleRoutingProblemSolution sol3 = mock(VehicleRoutingProblemSolution.class); - new GreedyAcceptance(2).acceptSolution(solList, sol3); - assertEquals(2, solList.size()); assertThat(sol3, is(solList.get(1))); } - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/acceptor/SchrimpfAcceptanceTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/acceptor/SchrimpfAcceptanceTest.java index 7ff3342be..bdf18e527 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/acceptor/SchrimpfAcceptanceTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/acceptor/SchrimpfAcceptanceTest.java @@ -19,21 +19,24 @@ import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -public class SchrimpfAcceptanceTest { +@DisplayName("Schrimpf Acceptance Test") +class SchrimpfAcceptanceTest { protected SchrimpfAcceptance schrimpfAcceptance; + protected Collection memory; protected static VehicleRoutingProblemSolution createSolutionWithCost(double cost) { @@ -41,63 +44,71 @@ protected static VehicleRoutingProblemSolution createSolutionWithCost(double cos } @SuppressWarnings("deprecation") - @Before - public void setup() { + @BeforeEach + void setup() { schrimpfAcceptance = new SchrimpfAcceptance(1, 0.3); // we skip the warmup, but still want to test that the initialThreshold is set schrimpfAcceptance.setInitialThreshold(0.0); // create empty memory with an initial capacity of 1 memory = new ArrayList(1); // insert the initial (worst) solution, will be accepted anyway since its the first in the memory - assertTrue("Solution (initial cost = 2.0) should be accepted since the memory is empty", schrimpfAcceptance.acceptSolution(memory, createSolutionWithCost(2.0))); + assertTrue(schrimpfAcceptance.acceptSolution(memory, createSolutionWithCost(2.0)), "Solution (initial cost = 2.0) should be accepted since the memory is empty"); } @Test - public void respectsTheZeroThreshold_usingWorstCostSolution() { - assertFalse("Worst cost solution (2.1 > 2.0) should not be accepted", schrimpfAcceptance.acceptSolution(memory, createSolutionWithCost(2.1))); + @DisplayName("Respects The Zero Threshold _ using Worst Cost Solution") + void respectsTheZeroThreshold_usingWorstCostSolution() { + assertFalse(schrimpfAcceptance.acceptSolution(memory, createSolutionWithCost(2.1)), "Worst cost solution (2.1 > 2.0) should not be accepted"); } @Test - public void respectsTheZeroThreshold_usingBetterCostSolution() { - assertTrue("Better cost solution (1.9 < 2.0) should be accepted", schrimpfAcceptance.acceptSolution(memory, createSolutionWithCost(1.9))); + @DisplayName("Respects The Zero Threshold _ using Better Cost Solution") + void respectsTheZeroThreshold_usingBetterCostSolution() { + assertTrue(schrimpfAcceptance.acceptSolution(memory, createSolutionWithCost(1.9)), "Better cost solution (1.9 < 2.0) should be accepted"); } @Test - public void respectsTheZeroThreshold_usingSameCostSolution() { - assertFalse("Same cost solution (2.0 == 2.0) should not be accepted", schrimpfAcceptance.acceptSolution(memory, createSolutionWithCost(2.0))); + @DisplayName("Respects The Zero Threshold _ using Same Cost Solution") + void respectsTheZeroThreshold_usingSameCostSolution() { + assertFalse(schrimpfAcceptance.acceptSolution(memory, createSolutionWithCost(2.0)), "Same cost solution (2.0 == 2.0) should not be accepted"); } @Test - public void respectsTheNonZeroThreshold_usingWorstCostSolution() { + @DisplayName("Respects The Non Zero Threshold _ using Worst Cost Solution") + void respectsTheNonZeroThreshold_usingWorstCostSolution() { schrimpfAcceptance.setInitialThreshold(0.5); /* * it should be accepted since 2.1 < 2.0 + 0.5 (2.0 is the best solution found so far and 0.5 the ini threshold * since the threshold of 0.5 allows new solutions to be <0.5 worse than the current best solution */ - assertTrue("Worst cost solution (2.1 > 2.0) should be accepted", schrimpfAcceptance.acceptSolution(memory, createSolutionWithCost(2.1))); + assertTrue(schrimpfAcceptance.acceptSolution(memory, createSolutionWithCost(2.1)), "Worst cost solution (2.1 > 2.0) should be accepted"); } @Test - public void respectsTheNonZeroThreshold_usingBetterCostSolution() { + @DisplayName("Respects The Non Zero Threshold _ using Better Cost Solution") + void respectsTheNonZeroThreshold_usingBetterCostSolution() { schrimpfAcceptance.setInitialThreshold(0.5); - assertTrue("Better cost solution (1.0 < 2.0) should be accepted since the better cost bust the threshold", schrimpfAcceptance.acceptSolution(memory, createSolutionWithCost(1.0))); + assertTrue(schrimpfAcceptance.acceptSolution(memory, createSolutionWithCost(1.0)), "Better cost solution (1.0 < 2.0) should be accepted since the better cost bust the threshold"); } @Test - public void respectsTheNonZeroThreshold_usingBetterButBelowTheThresholdCostSolution() { + @DisplayName("Respects The Non Zero Threshold _ using Better But Below The Threshold Cost Solution") + void respectsTheNonZeroThreshold_usingBetterButBelowTheThresholdCostSolution() { schrimpfAcceptance.setInitialThreshold(0.5); - //new solution can also be in between 2.0 and 2.5, but it is even better than 2.0 --> thus true - assertTrue("Better cost solution (1.9 < 2.0) should not be accepted since the better cost is still below the threshold", schrimpfAcceptance.acceptSolution(memory, createSolutionWithCost(1.9))); + // new solution can also be in between 2.0 and 2.5, but it is even better than 2.0 --> thus true + assertTrue(schrimpfAcceptance.acceptSolution(memory, createSolutionWithCost(1.9)), "Better cost solution (1.9 < 2.0) should not be accepted since the better cost is still below the threshold"); } @Test - public void respectsTheNonZeroThreshold_usingSameCostSolution() { + @DisplayName("Respects The Non Zero Threshold _ using Same Cost Solution") + void respectsTheNonZeroThreshold_usingSameCostSolution() { schrimpfAcceptance.setInitialThreshold(0.5); - assertTrue("Same cost solution (2.0 == 2.0) should not be accepted", schrimpfAcceptance.acceptSolution(memory, createSolutionWithCost(2.0))); + assertTrue(schrimpfAcceptance.acceptSolution(memory, createSolutionWithCost(2.0)), "Same cost solution (2.0 == 2.0) should not be accepted"); } @Test - public void whenIniThresholdIsSetAndCurrentIterationIs0_itShouldJustAcceptSolution() { + @DisplayName("When Ini Threshold Is Set And Current Iteration Is 0 _ it Should Just Accept Solution") + void whenIniThresholdIsSetAndCurrentIterationIs0_itShouldJustAcceptSolution() { schrimpfAcceptance.setInitialThreshold(0.5); schrimpfAcceptance.informIterationStarts(0, mock(VehicleRoutingProblem.class), Collections.emptyList()); boolean accepted = schrimpfAcceptance.acceptSolution(memory, createSolutionWithCost(2.499999)); @@ -105,48 +116,50 @@ public void whenIniThresholdIsSetAndCurrentIterationIs0_itShouldJustAcceptSoluti } @Test - public void whenIniThresholdIsSetAndCurrentIterationIs500_itShouldJustAcceptSolution() { - //1000 is the default totalNuOfIterations + @DisplayName("When Ini Threshold Is Set And Current Iteration Is 500 _ it Should Just Accept Solution") + void whenIniThresholdIsSetAndCurrentIterationIs500_itShouldJustAcceptSolution() { + // 1000 is the default totalNuOfIterations schrimpfAcceptance.setInitialThreshold(0.5); schrimpfAcceptance.informIterationStarts(500, mock(VehicleRoutingProblem.class), Collections.emptyList()); - //according to the acceptance-function, it should just accept every solution less than 2.0 + 0.15749013123 - //threshold(500) = 0.15749013123 + // according to the acceptance-function, it should just accept every solution less than 2.0 + 0.15749013123 + // threshold(500) = 0.15749013123 boolean accepted = schrimpfAcceptance.acceptSolution(memory, createSolutionWithCost(2.15748)); assertTrue(accepted); } @Test - public void whenIniThresholdIsSetAndCurrentIterationIs500_itShouldJustNotAcceptSolution() { - //1000 is the default totalNuOfIterations + @DisplayName("When Ini Threshold Is Set And Current Iteration Is 500 _ it Should Just Not Accept Solution") + void whenIniThresholdIsSetAndCurrentIterationIs500_itShouldJustNotAcceptSolution() { + // 1000 is the default totalNuOfIterations schrimpfAcceptance.setInitialThreshold(0.5); schrimpfAcceptance.informIterationStarts(500, mock(VehicleRoutingProblem.class), Collections.emptyList()); - //according to the acceptance-function, it should just accept every solution less than 2.0 + 0.15749013123 - //threshold(500) = 0.15749013123 + // according to the acceptance-function, it should just accept every solution less than 2.0 + 0.15749013123 + // threshold(500) = 0.15749013123 boolean accepted = schrimpfAcceptance.acceptSolution(memory, createSolutionWithCost(2.1575)); assertFalse(accepted); } @Test - public void whenIniThresholdIsSetAndCurrentIterationIs1000_itShouldJustAcceptSolution() { - //1000 is the default totalNuOfIterations + @DisplayName("When Ini Threshold Is Set And Current Iteration Is 1000 _ it Should Just Accept Solution") + void whenIniThresholdIsSetAndCurrentIterationIs1000_itShouldJustAcceptSolution() { + // 1000 is the default totalNuOfIterations schrimpfAcceptance.setInitialThreshold(0.5); schrimpfAcceptance.informIterationStarts(1000, mock(VehicleRoutingProblem.class), Collections.emptyList()); - //according to the acceptance-function, it should just accept every solution less than 2.0 + 0.04960628287 - //threshold(1000)= 0.04960628287 + // according to the acceptance-function, it should just accept every solution less than 2.0 + 0.04960628287 + // threshold(1000)= 0.04960628287 boolean accepted = schrimpfAcceptance.acceptSolution(memory, createSolutionWithCost(2.0496)); assertTrue(accepted); } @Test - public void whenIniThresholdIsSetAndCurrentIterationIs1000_itShouldJustNotAcceptSolution() { - //1000 is the default totalNuOfIterations + @DisplayName("When Ini Threshold Is Set And Current Iteration Is 1000 _ it Should Just Not Accept Solution") + void whenIniThresholdIsSetAndCurrentIterationIs1000_itShouldJustNotAcceptSolution() { + // 1000 is the default totalNuOfIterations schrimpfAcceptance.setInitialThreshold(0.5); schrimpfAcceptance.informIterationStarts(1000, mock(VehicleRoutingProblem.class), Collections.emptyList()); - //according to the acceptance-function, it should just accept every solution less than 2.0 + 0.04960628287 - //threshold(1000)=0.04960628287 + // according to the acceptance-function, it should just accept every solution less than 2.0 + 0.04960628287 + // threshold(1000)=0.04960628287 boolean accepted = schrimpfAcceptance.acceptSolution(memory, createSolutionWithCost(2.0497)); assertFalse(accepted); } - - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/box/JspritTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/box/JspritTest.java index 7167b0fe0..c9426d9e8 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/box/JspritTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/box/JspritTest.java @@ -15,7 +15,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.graphhopper.jsprit.core.algorithm.box; import com.graphhopper.jsprit.core.algorithm.SearchStrategy; @@ -33,19 +32,22 @@ import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; import com.graphhopper.jsprit.core.util.RandomNumberGeneration; -import junit.framework.Assert; -import org.junit.Test; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.*; +import static org.junit.jupiter.api.Assertions.*; + /** * Created by schroeder on 06/03/15. */ -public class JspritTest { - +@DisplayName("Jsprit Test") +class JspritTest { @Test - public void whenRunningJspritWithSingleCustomer_itShouldWork() { + @DisplayName("When Running Jsprit With Single Customer _ it Should Work") + void whenRunningJspritWithSingleCustomer_itShouldWork() { Service s = Service.Builder.newInstance("s1").setLocation(Location.newInstance(1, 1)).build(); VehicleImpl v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(0, 0)).build(); VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addVehicle(v).addJob(s).build(); @@ -60,28 +62,27 @@ public void informSelectedStrategy(SearchStrategy.DiscoveredSolution discoveredS } private void count(String strategyId) { - if (!counts.containsKey(strategyId)) counts.put(strategyId, 1); + if (!counts.containsKey(strategyId)) + counts.put(strategyId, 1); counts.put(strategyId, counts.get(strategyId) + 1); } - }); try { vra.searchSolutions(); - Assert.assertTrue(true); + assertTrue(true); } catch (Exception e) { - Assert.assertTrue(false); + fail(); } - } @Test - public void whenActivatingStrat_itShouldBeReflected() { + @DisplayName("When Activating Strat _ it Should Be Reflected") + void whenActivatingStrat_itShouldBeReflected() { Service s = Service.Builder.newInstance("s1").setLocation(Location.newInstance(1, 1)).build(); Service s2 = Service.Builder.newInstance("s2").setLocation(Location.newInstance(1, 2)).build(); VehicleImpl v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(0, 0)).build(); VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addVehicle(v).addJob(s2).addJob(s).build(); - VehicleRoutingAlgorithm vra = Jsprit.Builder.newInstance(vrp) - .setProperty(Jsprit.Strategy.RADIAL_BEST, "100.").buildAlgorithm(); + VehicleRoutingAlgorithm vra = Jsprit.Builder.newInstance(vrp).setProperty(Jsprit.Strategy.RADIAL_BEST, "100.").buildAlgorithm(); vra.setMaxIterations(100); final Map counts = new HashMap(); vra.addListener(new StrategySelectedListener() { @@ -92,22 +93,22 @@ public void informSelectedStrategy(SearchStrategy.DiscoveredSolution discoveredS } private void count(String strategyId) { - if (!counts.containsKey(strategyId)) counts.put(strategyId, 1); + if (!counts.containsKey(strategyId)) + counts.put(strategyId, 1); Integer integer = counts.get(strategyId); counts.put(strategyId, integer + 1); } - }); vra.searchSolutions(); - Assert.assertTrue(counts.containsKey(Jsprit.Strategy.RADIAL_BEST.toString())); + assertTrue(counts.containsKey(Jsprit.Strategy.RADIAL_BEST.toString())); } @Test - public void whenActivatingStrat_itShouldBeReflectedV2() { + @DisplayName("When Activating Strat _ it Should Be Reflected V 2") + void whenActivatingStrat_itShouldBeReflectedV2() { Service s = Service.Builder.newInstance("s1").setLocation(Location.newInstance(1, 1)).build(); Service s2 = Service.Builder.newInstance("s2").setLocation(Location.newInstance(1, 2)).build(); Service s3 = Service.Builder.newInstance("s3").setLocation(Location.newInstance(1, 2)).build(); - VehicleImpl v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(0, 0)).build(); VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(s3).addVehicle(v).addJob(s2).addJob(s).build(); VehicleRoutingAlgorithm vra = Jsprit.createAlgorithm(vrp); @@ -121,22 +122,22 @@ public void informSelectedStrategy(SearchStrategy.DiscoveredSolution discoveredS } private void count(String strategyId) { - if (!counts.containsKey(strategyId)) counts.put(strategyId, 1); + if (!counts.containsKey(strategyId)) + counts.put(strategyId, 1); counts.put(strategyId, counts.get(strategyId) + 1); } - }); vra.searchSolutions(); - Assert.assertTrue(!counts.containsKey(Jsprit.Strategy.RADIAL_BEST)); + assertTrue(!counts.containsKey(Jsprit.Strategy.RADIAL_BEST)); } @Test - public void test_v4() { + @DisplayName("Test _ v 4") + void test_v4() { Service s = Service.Builder.newInstance("s1").setLocation(Location.newInstance(1, 1)).build(); Service s2 = Service.Builder.newInstance("s2").setLocation(Location.newInstance(1, 2)).build(); Service s3 = Service.Builder.newInstance("s3").setLocation(Location.newInstance(1, 2)).build(); Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance(1, 2)).build(); - VehicleImpl v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(0, 0)).build(); VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(s4).addJob(s3).addVehicle(v).addJob(s2).addJob(s).build(); VehicleRoutingAlgorithm vra = Jsprit.createAlgorithm(vrp); @@ -150,23 +151,22 @@ public void informSelectedStrategy(SearchStrategy.DiscoveredSolution discoveredS } private void count(String strategyId) { - if (!counts.containsKey(strategyId)) counts.put(strategyId, 1); + if (!counts.containsKey(strategyId)) + counts.put(strategyId, 1); counts.put(strategyId, counts.get(strategyId) + 1); } - }); vra.searchSolutions(); - Assert.assertTrue(!counts.containsKey(Jsprit.Strategy.RADIAL_BEST)); + assertTrue(!counts.containsKey(Jsprit.Strategy.RADIAL_BEST)); } - @Test - public void strategyDrawShouldBeReproducible() { + @DisplayName("Strategy Draw Should Be Reproducible") + void strategyDrawShouldBeReproducible() { Service s = Service.Builder.newInstance("s1").setLocation(Location.newInstance(1, 1)).build(); Service s2 = Service.Builder.newInstance("s2").setLocation(Location.newInstance(1, 2)).build(); Service s3 = Service.Builder.newInstance("s3").setLocation(Location.newInstance(1, 2)).build(); Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance(1, 2)).build(); - VehicleImpl v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(0, 0)).build(); VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(s4).addJob(s3).addVehicle(v).addJob(s2).addJob(s).build(); VehicleRoutingAlgorithm vra = Jsprit.createAlgorithm(vrp); @@ -178,10 +178,8 @@ public void strategyDrawShouldBeReproducible() { public void informSelectedStrategy(SearchStrategy.DiscoveredSolution discoveredSolution, VehicleRoutingProblem vehicleRoutingProblem, Collection vehicleRoutingProblemSolutions) { firstRecord.add(discoveredSolution.getStrategyId()); } - }); vra.searchSolutions(); - RandomNumberGeneration.reset(); VehicleRoutingAlgorithm second = Jsprit.createAlgorithm(vrp); second.setMaxIterations(100); @@ -192,26 +190,23 @@ public void informSelectedStrategy(SearchStrategy.DiscoveredSolution discoveredS public void informSelectedStrategy(SearchStrategy.DiscoveredSolution discoveredSolution, VehicleRoutingProblem vehicleRoutingProblem, Collection vehicleRoutingProblemSolutions) { secondRecord.add(discoveredSolution.getStrategyId()); } - }); second.searchSolutions(); - for (int i = 0; i < 100; i++) { if (!firstRecord.get(i).equals(secondRecord.get(i))) { - org.junit.Assert.assertFalse(true); + assertFalse(true); } } - org.junit.Assert.assertTrue(true); - + assertTrue(true); } @Test - public void strategyDrawShouldBeReproducibleV2() { + @DisplayName("Strategy Draw Should Be Reproducible V 2") + void strategyDrawShouldBeReproducibleV2() { Service s = Service.Builder.newInstance("s1").setLocation(Location.newInstance(1, 1)).build(); Service s2 = Service.Builder.newInstance("s2").setLocation(Location.newInstance(1, 2)).build(); Service s3 = Service.Builder.newInstance("s3").setLocation(Location.newInstance(1, 2)).build(); Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance(1, 2)).build(); - VehicleImpl v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(0, 0)).build(); VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(s4).addJob(s3).addVehicle(v).addJob(s2).addJob(s).build(); VehicleRoutingAlgorithm vra = Jsprit.Builder.newInstance(vrp).setProperty(Jsprit.Parameter.THREADS, "4").buildAlgorithm(); @@ -223,10 +218,8 @@ public void strategyDrawShouldBeReproducibleV2() { public void informSelectedStrategy(SearchStrategy.DiscoveredSolution discoveredSolution, VehicleRoutingProblem vehicleRoutingProblem, Collection vehicleRoutingProblemSolutions) { firstRecord.add(discoveredSolution.getStrategyId()); } - }); vra.searchSolutions(); - RandomNumberGeneration.reset(); VehicleRoutingAlgorithm second = Jsprit.Builder.newInstance(vrp).setProperty(Jsprit.Parameter.THREADS, "2").buildAlgorithm(); second.setMaxIterations(100); @@ -237,43 +230,36 @@ public void informSelectedStrategy(SearchStrategy.DiscoveredSolution discoveredS public void informSelectedStrategy(SearchStrategy.DiscoveredSolution discoveredSolution, VehicleRoutingProblem vehicleRoutingProblem, Collection vehicleRoutingProblemSolutions) { secondRecord.add(discoveredSolution.getStrategyId()); } - }); second.searchSolutions(); - for (int i = 0; i < 100; i++) { if (!firstRecord.get(i).equals(secondRecord.get(i))) { - org.junit.Assert.assertFalse(true); + assertFalse(true); } } - org.junit.Assert.assertTrue(true); - + assertTrue(true); } @Test - public void ruinedJobsShouldBeReproducible() { + @DisplayName("Ruined Jobs Should Be Reproducible") + void ruinedJobsShouldBeReproducible() { Service s = Service.Builder.newInstance("s1").setLocation(Location.newInstance(1, 1)).build(); Service s2 = Service.Builder.newInstance("s2").setLocation(Location.newInstance(1, 2)).build(); Service s3 = Service.Builder.newInstance("s3").setLocation(Location.newInstance(1, 2)).build(); Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance(1, 2)).build(); - VehicleImpl v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(0, 0)).build(); VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(s4).addJob(s3).addVehicle(v).addJob(s2).addJob(s).build(); - VehicleRoutingAlgorithm vra = Jsprit.Builder.newInstance(vrp) - .setProperty(Jsprit.Strategy.WORST_REGRET, "0.") - .setProperty(Jsprit.Strategy.WORST_BEST, "0.") - .setProperty(Jsprit.Parameter.THREADS, "2").buildAlgorithm(); + VehicleRoutingAlgorithm vra = Jsprit.Builder.newInstance(vrp).setProperty(Jsprit.Strategy.WORST_REGRET, "0.").setProperty(Jsprit.Strategy.WORST_BEST, "0.").setProperty(Jsprit.Parameter.THREADS, "2").buildAlgorithm(); vra.setMaxIterations(100); final List firstRecord = new ArrayList(); vra.addListener(new RuinListener() { + @Override public void ruinStarts(Collection routes) { - } @Override public void ruinEnds(Collection routes, Collection unassignedJobs) { - } @Override @@ -282,22 +268,17 @@ public void removed(Job job, VehicleRoute fromRoute) { } }); vra.searchSolutions(); - - VehicleRoutingAlgorithm second = Jsprit.Builder.newInstance(vrp).setProperty(Jsprit.Parameter.THREADS, "4") - .setProperty(Jsprit.Strategy.WORST_REGRET, "0.") - .setProperty(Jsprit.Strategy.WORST_BEST, "0.") - .buildAlgorithm(); + VehicleRoutingAlgorithm second = Jsprit.Builder.newInstance(vrp).setProperty(Jsprit.Parameter.THREADS, "4").setProperty(Jsprit.Strategy.WORST_REGRET, "0.").setProperty(Jsprit.Strategy.WORST_BEST, "0.").buildAlgorithm(); second.setMaxIterations(100); final List secondRecord = new ArrayList(); second.addListener(new RuinListener() { + @Override public void ruinStarts(Collection routes) { - } @Override public void ruinEnds(Collection routes, Collection unassignedJobs) { - } @Override @@ -306,37 +287,35 @@ public void removed(Job job, VehicleRoute fromRoute) { } }); second.searchSolutions(); - - Assert.assertEquals(secondRecord.size(), firstRecord.size()); + assertEquals(secondRecord.size(), firstRecord.size()); for (int i = 0; i < firstRecord.size(); i++) { if (!firstRecord.get(i).equals(secondRecord.get(i))) { - Assert.assertFalse(true); + assertFalse(true); } } - Assert.assertTrue(true); + assertTrue(true); } @Test - public void ruinedJobsShouldBeReproducibleV2() { + @DisplayName("Ruined Jobs Should Be Reproducible V 2") + void ruinedJobsShouldBeReproducibleV2() { Service s = Service.Builder.newInstance("s1").setLocation(Location.newInstance(1, 1)).build(); Service s2 = Service.Builder.newInstance("s2").setLocation(Location.newInstance(1, 2)).build(); Service s3 = Service.Builder.newInstance("s3").setLocation(Location.newInstance(1, 2)).build(); Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance(1, 2)).build(); - VehicleImpl v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(0, 0)).build(); VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(s4).addJob(s3).addVehicle(v).addJob(s2).addJob(s).build(); VehicleRoutingAlgorithm vra = Jsprit.createAlgorithm(vrp); vra.setMaxIterations(100); final List firstRecord = new ArrayList(); vra.addListener(new RuinListener() { + @Override public void ruinStarts(Collection routes) { - } @Override public void ruinEnds(Collection routes, Collection unassignedJobs) { - } @Override @@ -345,19 +324,17 @@ public void removed(Job job, VehicleRoute fromRoute) { } }); vra.searchSolutions(); - VehicleRoutingAlgorithm second = Jsprit.createAlgorithm(vrp); second.setMaxIterations(100); final List secondRecord = new ArrayList(); second.addListener(new RuinListener() { + @Override public void ruinStarts(Collection routes) { - } @Override public void ruinEnds(Collection routes, Collection unassignedJobs) { - } @Override @@ -366,75 +343,70 @@ public void removed(Job job, VehicleRoute fromRoute) { } }); second.searchSolutions(); - - Assert.assertEquals(secondRecord.size(), firstRecord.size()); + assertEquals(secondRecord.size(), firstRecord.size()); for (int i = 0; i < firstRecord.size(); i++) { if (!firstRecord.get(i).equals(secondRecord.get(i))) { - Assert.assertFalse(true); + assertFalse(true); } } - Assert.assertTrue(true); + assertTrue(true); } @Test - public void insertionShouldBeReproducible() { + @DisplayName("Insertion Should Be Reproducible") + void insertionShouldBeReproducible() { Service s = Service.Builder.newInstance("s1").setLocation(Location.newInstance(1, 1)).build(); Service s2 = Service.Builder.newInstance("s2").setLocation(Location.newInstance(1, 2)).build(); Service s3 = Service.Builder.newInstance("s3").setLocation(Location.newInstance(1, 2)).build(); Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance(1, 2)).build(); - VehicleImpl v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(0, 0)).build(); VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(s4).addJob(s3).addVehicle(v).addJob(s2).addJob(s).build(); - VehicleRoutingAlgorithm vra = Jsprit.createAlgorithm(vrp); vra.setMaxIterations(100); final List firstRecord = new ArrayList(); vra.addListener(new JobInsertedListener() { + @Override public void informJobInserted(Job job2insert, VehicleRoute inRoute, InsertionData insertionData) { firstRecord.add(job2insert.getId()); } }); vra.searchSolutions(); - VehicleRoutingAlgorithm second = Jsprit.createAlgorithm(vrp); second.setMaxIterations(100); final List secondRecord = new ArrayList(); second.addListener(new JobInsertedListener() { + @Override public void informJobInserted(Job job2insert, VehicleRoute inRoute, InsertionData insertionData) { secondRecord.add(job2insert.getId()); } }); second.searchSolutions(); - - Assert.assertEquals(secondRecord.size(), firstRecord.size()); + assertEquals(secondRecord.size(), firstRecord.size()); for (int i = 0; i < firstRecord.size(); i++) { if (!firstRecord.get(i).equals(secondRecord.get(i))) { - Assert.assertFalse(true); + assertFalse(true); } } - Assert.assertTrue(true); + assertTrue(true); } @Test - public void insertionShouldBeReproducibleV2() { + @DisplayName("Insertion Should Be Reproducible V 2") + void insertionShouldBeReproducibleV2() { Service s = Service.Builder.newInstance("s1").setLocation(Location.newInstance(1, 1)).build(); Service s2 = Service.Builder.newInstance("s2").setLocation(Location.newInstance(1, 1)).build(); Service s3 = Service.Builder.newInstance("s3").setLocation(Location.newInstance(1, 3)).build(); Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance(1, 4)).build(); - VehicleImpl v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(0, 0)).build(); VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().setFleetSize(VehicleRoutingProblem.FleetSize.FINITE).addJob(s4).addJob(s3).addVehicle(v).addJob(s2).addJob(s).build(); - - VehicleRoutingAlgorithm vra = Jsprit.Builder.newInstance(vrp) - .setProperty(Jsprit.Strategy.WORST_REGRET, "0.") - .setProperty(Jsprit.Strategy.WORST_BEST, "0.") - .setProperty(Jsprit.Parameter.THREADS, "4").buildAlgorithm(); + VehicleRoutingAlgorithm vra = Jsprit.Builder.newInstance(vrp).setProperty(Jsprit.Strategy.WORST_REGRET, "0.").setProperty(Jsprit.Strategy.WORST_BEST, "0.").setProperty(Jsprit.Parameter.THREADS, "4").buildAlgorithm(); vra.setMaxIterations(100); final List firstRecord = new ArrayList(); final List firstRecordCosts = new ArrayList(); vra.addListener(new BeforeJobInsertionListener() { + @Override public void informBeforeJobInsertion(Job job, InsertionData data, VehicleRoute route) { String id = job.getId(); @@ -443,15 +415,12 @@ public void informBeforeJobInsertion(Job job, InsertionData data, VehicleRoute r } }); vra.searchSolutions(); - - VehicleRoutingAlgorithm second = Jsprit.Builder.newInstance(vrp) - .setProperty(Jsprit.Strategy.WORST_REGRET, "0.") - .setProperty(Jsprit.Strategy.WORST_BEST, "0.") - .setProperty(Jsprit.Parameter.THREADS, "5").buildAlgorithm(); + VehicleRoutingAlgorithm second = Jsprit.Builder.newInstance(vrp).setProperty(Jsprit.Strategy.WORST_REGRET, "0.").setProperty(Jsprit.Strategy.WORST_BEST, "0.").setProperty(Jsprit.Parameter.THREADS, "5").buildAlgorithm(); second.setMaxIterations(100); final List secondRecord = new ArrayList(); final List secondRecordCosts = new ArrayList(); second.addListener(new BeforeJobInsertionListener() { + @Override public void informBeforeJobInsertion(Job job, InsertionData data, VehicleRoute route) { secondRecord.add(job.getId()); @@ -459,31 +428,28 @@ public void informBeforeJobInsertion(Job job, InsertionData data, VehicleRoute r } }); second.searchSolutions(); - -// for(int i=0;i routes = new ArrayList(); - regretInsertion.insertJobs(routes, vrp.getJobs().values()); - Assert.assertEquals(1, routes.size()); + assertEquals(1, routes.size()); } @Test - public void noJobsInRouteShouldBeCorrect() { + @DisplayName("No Jobs In Route Should Be Correct") + void noJobsInRouteShouldBeCorrect() { Service s1 = Service.Builder.newInstance("s1").setLocation(Location.newInstance(0, 10)).build(); Service s2 = Service.Builder.newInstance("s2").setLocation(Location.newInstance(0, 5)).build(); - VehicleImpl v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(0, 0)).build(); VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(s1).addJob(s2).addVehicle(v).build(); - VehicleFleetManager fm = new FiniteFleetManagerFactory(vrp.getVehicles()).createFleetManager(); JobInsertionCostsCalculator calculator = getCalculator(vrp); RegretInsertionFast regretInsertion = new RegretInsertionFast(calculator, vrp, fm); Collection routes = new ArrayList(); - regretInsertion.insertJobs(routes, vrp.getJobs().values()); - Assert.assertEquals(2, routes.iterator().next().getActivities().size()); + assertEquals(2, routes.iterator().next().getActivities().size()); } @Test - public void s1ShouldBeAddedFirst() { + @DisplayName("S 1 Should Be Added First") + void s1ShouldBeAddedFirst() { Service s1 = Service.Builder.newInstance("s1").setLocation(Location.newInstance(0, 10)).build(); Service s2 = Service.Builder.newInstance("s2").setLocation(Location.newInstance(0, 5)).build(); - VehicleImpl v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(0, 0)).build(); final VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(s1).addJob(s2).addVehicle(v).build(); - VehicleFleetManager fm = new FiniteFleetManagerFactory(vrp.getVehicles()).createFleetManager(); JobInsertionCostsCalculator calculator = getCalculator(vrp); RegretInsertionFast regretInsertion = new RegretInsertionFast(calculator, vrp, fm); Collection routes = new ArrayList(); - CkeckJobSequence position = new CkeckJobSequence(2, s1); regretInsertion.addListener(position); regretInsertion.insertJobs(routes, vrp.getJobs().values()); - Assert.assertTrue(position.isCorrect()); + assertTrue(position.isCorrect()); } @Test - public void solutionWithFastRegretMustBeCorrect() { + @DisplayName("Solution With Fast Regret Must Be Correct") + void solutionWithFastRegretMustBeCorrect() { Service s1 = Service.Builder.newInstance("s1").setLocation(Location.newInstance(0, 10)).build(); Service s2 = Service.Builder.newInstance("s2").setLocation(Location.newInstance(0, -10)).build(); - VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocation(Location.newInstance(0, 5)).build(); VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(Location.newInstance(0, -5)).build(); - final VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(s1).addJob(s2) - .addVehicle(v1).addVehicle(v2).setFleetSize(VehicleRoutingProblem.FleetSize.FINITE).build(); - + final VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(s1).addJob(s2).addVehicle(v1).addVehicle(v2).setFleetSize(VehicleRoutingProblem.FleetSize.FINITE).build(); StateManager stateManager = new StateManager(vrp); - ConstraintManager constraintManager = new ConstraintManager(vrp,stateManager); - - VehicleRoutingAlgorithm vra = Jsprit.Builder.newInstance(vrp) - .addCoreStateAndConstraintStuff(true) - .setProperty(Jsprit.Parameter.FAST_REGRET,"true") - .setStateAndConstraintManager(stateManager, constraintManager).buildAlgorithm(); - + ConstraintManager constraintManager = new ConstraintManager(vrp, stateManager); + VehicleRoutingAlgorithm vra = Jsprit.Builder.newInstance(vrp).addCoreStateAndConstraintStuff(true).setProperty(Jsprit.Parameter.FAST_REGRET, "true").setStateAndConstraintManager(stateManager, constraintManager).buildAlgorithm(); VehicleRoutingProblemSolution solution = Solutions.bestOf(vra.searchSolutions()); - - Assert.assertEquals(2, solution.getRoutes().size()); + assertEquals(2, solution.getRoutes().size()); } + @DisplayName("Job In Route Updater") static class JobInRouteUpdater implements StateUpdater, ActivityVisitor { private StateManager stateManager; @@ -148,22 +137,21 @@ public void begin(VehicleRoute route) { @Override public void visit(TourActivity activity) { - if(((TourActivity.JobActivity)activity).getJob().getId().equals("s1")){ - stateManager.putProblemState(job1AssignedId,Boolean.class,true); + if (((TourActivity.JobActivity) activity).getJob().getId().equals("s1")) { + stateManager.putProblemState(job1AssignedId, Boolean.class, true); } - if(((TourActivity.JobActivity)activity).getJob().getId().equals("s2")){ - stateManager.putProblemState(job2AssignedId,Boolean.class,true); + if (((TourActivity.JobActivity) activity).getJob().getId().equals("s2")) { + stateManager.putProblemState(job2AssignedId, Boolean.class, true); } - } @Override public void finish() { - } } - static class RouteConstraint implements HardRouteConstraint{ + @DisplayName("Route Constraint") + static class RouteConstraint implements HardRouteConstraint { private final StateId job1AssignedId; @@ -179,22 +167,26 @@ public RouteConstraint(StateId job1Assigned, StateId job2Assigned, StateManager @Override public boolean fulfilled(JobInsertionContext insertionContext) { - if(insertionContext.getJob().getId().equals("s1")){ - Boolean job2Assigned = stateManager.getProblemState(job2AssignedId,Boolean.class); - if(job2Assigned == null || job2Assigned == false) return true; + if (insertionContext.getJob().getId().equals("s1")) { + Boolean job2Assigned = stateManager.getProblemState(job2AssignedId, Boolean.class); + if (job2Assigned == null || job2Assigned == false) + return true; else { - for(Job j : insertionContext.getRoute().getTourActivities().getJobs()){ - if(j.getId().equals("s2")) return true; + for (Job j : insertionContext.getRoute().getTourActivities().getJobs()) { + if (j.getId().equals("s2")) + return true; } } return false; } - if(insertionContext.getJob().getId().equals("s2")){ - Boolean job1Assigned = stateManager.getProblemState(job1AssignedId,Boolean.class); - if(job1Assigned == null || job1Assigned == false) return true; + if (insertionContext.getJob().getId().equals("s2")) { + Boolean job1Assigned = stateManager.getProblemState(job1AssignedId, Boolean.class); + if (job1Assigned == null || job1Assigned == false) + return true; else { - for(Job j : insertionContext.getRoute().getTourActivities().getJobs()){ - if(j.getId().equals("s1")) return true; + for (Job j : insertionContext.getRoute().getTourActivities().getJobs()) { + if (j.getId().equals("s1")) + return true; } } return false; @@ -204,117 +196,83 @@ public boolean fulfilled(JobInsertionContext insertionContext) { } @Test - public void solutionWithConstraintAndWithFastRegretMustBeCorrect() { - Service s1 = Service.Builder.newInstance("s1").addSizeDimension(0,1).setLocation(Location.newInstance(0, 10)).build(); - Service s2 = Service.Builder.newInstance("s2").addSizeDimension(0,1).setLocation(Location.newInstance(0, -10)).build(); - Service s3 = Service.Builder.newInstance("s3").addSizeDimension(0,1).setLocation(Location.newInstance(0, -11)).build(); - Service s4 = Service.Builder.newInstance("s4").addSizeDimension(0,1).setLocation(Location.newInstance(0, 11)).build(); - - VehicleType type = VehicleTypeImpl.Builder.newInstance("type").addCapacityDimension(0,2).build(); + @DisplayName("Solution With Constraint And With Fast Regret Must Be Correct") + void solutionWithConstraintAndWithFastRegretMustBeCorrect() { + Service s1 = Service.Builder.newInstance("s1").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 10)).build(); + Service s2 = Service.Builder.newInstance("s2").addSizeDimension(0, 1).setLocation(Location.newInstance(0, -10)).build(); + Service s3 = Service.Builder.newInstance("s3").addSizeDimension(0, 1).setLocation(Location.newInstance(0, -11)).build(); + Service s4 = Service.Builder.newInstance("s4").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 11)).build(); + VehicleType type = VehicleTypeImpl.Builder.newInstance("type").addCapacityDimension(0, 2).build(); VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setType(type).setStartLocation(Location.newInstance(0, 10)).build(); VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setType(type).setStartLocation(Location.newInstance(0, -10)).build(); - final VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(s1).addJob(s2).addJob(s3).addJob(s4) - .addVehicle(v1).addVehicle(v2).setFleetSize(VehicleRoutingProblem.FleetSize.FINITE).build(); - + final VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(s1).addJob(s2).addJob(s3).addJob(s4).addVehicle(v1).addVehicle(v2).setFleetSize(VehicleRoutingProblem.FleetSize.FINITE).build(); final StateManager stateManager = new StateManager(vrp); StateId job1Assigned = stateManager.createStateId("job1-assigned"); StateId job2Assigned = stateManager.createStateId("job2-assigned"); - stateManager.addStateUpdater(new JobInRouteUpdater(stateManager,job1Assigned,job2Assigned)); - ConstraintManager constraintManager = new ConstraintManager(vrp,stateManager); - constraintManager.addConstraint(new RouteConstraint(job1Assigned,job2Assigned,stateManager)); + stateManager.addStateUpdater(new JobInRouteUpdater(stateManager, job1Assigned, job2Assigned)); + ConstraintManager constraintManager = new ConstraintManager(vrp, stateManager); + constraintManager.addConstraint(new RouteConstraint(job1Assigned, job2Assigned, stateManager)); constraintManager.setDependencyType("s1", DependencyType.INTRA_ROUTE); constraintManager.setDependencyType("s2", DependencyType.INTRA_ROUTE); - - VehicleRoutingAlgorithm vra = Jsprit.Builder.newInstance(vrp) - .addCoreStateAndConstraintStuff(true) - .setProperty(Jsprit.Parameter.FAST_REGRET, "true") - .setStateAndConstraintManager(stateManager, constraintManager) -// .setProperty(Jsprit.Strategy.CLUSTER_REGRET, "0.") -// .setProperty(Jsprit.Strategy.CLUSTER_BEST, "0.") -// .setProperty(Jsprit.Strategy.RADIAL_REGRET, "0.") -// .setProperty(Jsprit.Strategy.RADIAL_BEST, "0.") -// .setProperty(Jsprit.Strategy.RANDOM_REGRET, "1.") -// .setProperty(Jsprit.Strategy.RANDOM_BEST, "0.") -// .setProperty(Jsprit.Strategy.WORST_REGRET, "0.") -// .setProperty(Jsprit.Strategy.WORST_BEST, "0.") - .buildAlgorithm(); - + VehicleRoutingAlgorithm vra = Jsprit.Builder.newInstance(vrp).addCoreStateAndConstraintStuff(true).setProperty(Jsprit.Parameter.FAST_REGRET, "true").setStateAndConstraintManager(stateManager, constraintManager).buildAlgorithm(); VehicleRoutingProblemSolution solution = Solutions.bestOf(vra.searchSolutions()); - for(VehicleRoute route : solution.getRoutes()){ - if(route.getTourActivities().servesJob(s1)){ - if(!route.getTourActivities().servesJob(s2)){ - Assert.assertFalse(true); - } - else Assert.assertTrue(true); + for (VehicleRoute route : solution.getRoutes()) { + if (route.getTourActivities().servesJob(s1)) { + if (!route.getTourActivities().servesJob(s2)) { + assertFalse(true); + } else + assertTrue(true); } } -// Assert.assertEquals(1, solution.getRoutes().size()); + // Assert.assertEquals(1, solution.getRoutes().size()); } @Test - public void solutionWithConstraintAndWithFastRegretConcurrentMustBeCorrect() { - Service s1 = Service.Builder.newInstance("s1").addSizeDimension(0,1).setLocation(Location.newInstance(0, 10)).build(); - Service s2 = Service.Builder.newInstance("s2").addSizeDimension(0,1).setLocation(Location.newInstance(0, -10)).build(); - Service s3 = Service.Builder.newInstance("s3").addSizeDimension(0,1).setLocation(Location.newInstance(0, -11)).build(); - Service s4 = Service.Builder.newInstance("s4").addSizeDimension(0,1).setLocation(Location.newInstance(0, 11)).build(); - - VehicleType type = VehicleTypeImpl.Builder.newInstance("type").addCapacityDimension(0,2).build(); + @DisplayName("Solution With Constraint And With Fast Regret Concurrent Must Be Correct") + void solutionWithConstraintAndWithFastRegretConcurrentMustBeCorrect() { + Service s1 = Service.Builder.newInstance("s1").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 10)).build(); + Service s2 = Service.Builder.newInstance("s2").addSizeDimension(0, 1).setLocation(Location.newInstance(0, -10)).build(); + Service s3 = Service.Builder.newInstance("s3").addSizeDimension(0, 1).setLocation(Location.newInstance(0, -11)).build(); + Service s4 = Service.Builder.newInstance("s4").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 11)).build(); + VehicleType type = VehicleTypeImpl.Builder.newInstance("type").addCapacityDimension(0, 2).build(); VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setType(type).setStartLocation(Location.newInstance(0, 10)).build(); VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setType(type).setStartLocation(Location.newInstance(0, -10)).build(); - final VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(s1).addJob(s2).addJob(s3).addJob(s4) - .addVehicle(v1).addVehicle(v2).setFleetSize(VehicleRoutingProblem.FleetSize.FINITE).build(); - + final VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(s1).addJob(s2).addJob(s3).addJob(s4).addVehicle(v1).addVehicle(v2).setFleetSize(VehicleRoutingProblem.FleetSize.FINITE).build(); final StateManager stateManager = new StateManager(vrp); StateId job1Assigned = stateManager.createStateId("job1-assigned"); StateId job2Assigned = stateManager.createStateId("job2-assigned"); - stateManager.addStateUpdater(new JobInRouteUpdater(stateManager,job1Assigned,job2Assigned)); - ConstraintManager constraintManager = new ConstraintManager(vrp,stateManager); - constraintManager.addConstraint(new RouteConstraint(job1Assigned,job2Assigned,stateManager)); + stateManager.addStateUpdater(new JobInRouteUpdater(stateManager, job1Assigned, job2Assigned)); + ConstraintManager constraintManager = new ConstraintManager(vrp, stateManager); + constraintManager.addConstraint(new RouteConstraint(job1Assigned, job2Assigned, stateManager)); constraintManager.setDependencyType("s1", DependencyType.INTRA_ROUTE); constraintManager.setDependencyType("s2", DependencyType.INTRA_ROUTE); - - VehicleRoutingAlgorithm vra = Jsprit.Builder.newInstance(vrp) - .addCoreStateAndConstraintStuff(true) - .setProperty(Jsprit.Parameter.FAST_REGRET, "true") - .setProperty(Jsprit.Parameter.THREADS,"4") - .setStateAndConstraintManager(stateManager, constraintManager) - .buildAlgorithm(); - + VehicleRoutingAlgorithm vra = Jsprit.Builder.newInstance(vrp).addCoreStateAndConstraintStuff(true).setProperty(Jsprit.Parameter.FAST_REGRET, "true").setProperty(Jsprit.Parameter.THREADS, "4").setStateAndConstraintManager(stateManager, constraintManager).buildAlgorithm(); VehicleRoutingProblemSolution solution = Solutions.bestOf(vra.searchSolutions()); - for(VehicleRoute route : solution.getRoutes()){ - if(route.getTourActivities().servesJob(s1)){ - if(!route.getTourActivities().servesJob(s2)){ - Assert.assertFalse(true); - } - else Assert.assertTrue(true); + for (VehicleRoute route : solution.getRoutes()) { + if (route.getTourActivities().servesJob(s1)) { + if (!route.getTourActivities().servesJob(s2)) { + assertFalse(true); + } else + assertTrue(true); } } } @Test - public void shipment1ShouldBeAddedFirst() { - Shipment s1 = Shipment.Builder.newInstance("s1") - .setPickupLocation(Location.Builder.newInstance().setId("pick1").setCoordinate(Coordinate.newInstance(-1, 10)).build()) - .setDeliveryLocation(Location.Builder.newInstance().setId("del1").setCoordinate(Coordinate.newInstance(1, 10)).build()) - .build(); - - Shipment s2 = Shipment.Builder.newInstance("s2") - .setPickupLocation(Location.Builder.newInstance().setId("pick2").setCoordinate(Coordinate.newInstance(-1, 20)).build()) - .setDeliveryLocation(Location.Builder.newInstance().setId("del2").setCoordinate(Coordinate.newInstance(1, 20)).build()) - .build(); - + @DisplayName("Shipment 1 Should Be Added First") + void shipment1ShouldBeAddedFirst() { + Shipment s1 = Shipment.Builder.newInstance("s1").setPickupLocation(Location.Builder.newInstance().setId("pick1").setCoordinate(Coordinate.newInstance(-1, 10)).build()).setDeliveryLocation(Location.Builder.newInstance().setId("del1").setCoordinate(Coordinate.newInstance(1, 10)).build()).build(); + Shipment s2 = Shipment.Builder.newInstance("s2").setPickupLocation(Location.Builder.newInstance().setId("pick2").setCoordinate(Coordinate.newInstance(-1, 20)).build()).setDeliveryLocation(Location.Builder.newInstance().setId("del2").setCoordinate(Coordinate.newInstance(1, 20)).build()).build(); VehicleImpl v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(0, 0)).build()).build(); final VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(s1).addJob(s2).addVehicle(v).build(); - VehicleFleetManager fm = new FiniteFleetManagerFactory(vrp.getVehicles()).createFleetManager(); JobInsertionCostsCalculator calculator = getShipmentCalculator(vrp); RegretInsertionFast regretInsertion = new RegretInsertionFast(calculator, vrp, fm); Collection routes = new ArrayList(); - CkeckJobSequence position = new CkeckJobSequence(2, s2); regretInsertion.addListener(position); regretInsertion.insertJobs(routes, vrp.getJobs().values()); - Assert.assertTrue(position.isCorrect()); + assertTrue(position.isCorrect()); } private JobInsertionCostsCalculator getShipmentCalculator(final VehicleRoutingProblem vrp) { @@ -332,7 +290,7 @@ public InsertionData getInsertionData(VehicleRoute currentRoute, Job newJob, Veh }; } - + @DisplayName("Ckeck Job Sequence") static class CkeckJobSequence implements BeforeJobInsertionListener { int atPosition; @@ -411,13 +369,11 @@ private double getCost(Location loc1, Location loc2) { return vrp.getTransportCosts().getTransportCost(loc1, loc2, 0., null, null); } }; - -// LocalActivityInsertionCostsCalculator local = new LocalActivityInsertionCostsCalculator(vrp.getTransportCosts(),vrp.getActivityCosts()); -// StateManager stateManager = new StateManager(vrp); -// ConstraintManager manager = new ConstraintManager(vrp,stateManager); -// ServiceInsertionCalculator calculator = new ServiceInsertionCalculator(vrp.getTransportCosts(), local, manager); -// calculator.setJobActivityFactory(vrp.getJobActivityFactory()); -// return calculator; + // LocalActivityInsertionCostsCalculator local = new LocalActivityInsertionCostsCalculator(vrp.getTransportCosts(),vrp.getActivityCosts()); + // StateManager stateManager = new StateManager(vrp); + // ConstraintManager manager = new ConstraintManager(vrp,stateManager); + // ServiceInsertionCalculator calculator = new ServiceInsertionCalculator(vrp.getTransportCosts(), local, manager); + // calculator.setJobActivityFactory(vrp.getJobActivityFactory()); + // return calculator; } - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/recreate/ServiceInsertionAndLoadConstraintsTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/recreate/ServiceInsertionAndLoadConstraintsTest.java index 3536558a1..ea208f0be 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/recreate/ServiceInsertionAndLoadConstraintsTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/recreate/ServiceInsertionAndLoadConstraintsTest.java @@ -43,17 +43,18 @@ import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; import com.graphhopper.jsprit.core.util.CostFactory; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.Arrays; import java.util.List; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.Mockito.mock; - -public class ServiceInsertionAndLoadConstraintsTest { +@DisplayName("Service Insertion And Load Constraints Test") +class ServiceInsertionAndLoadConstraintsTest { VehicleRoutingTransportCosts routingCosts; @@ -68,7 +69,6 @@ public double getActivityCost(TourActivity tourAct, double arrivalTime, Driver d public double getActivityDuration(TourActivity tourAct, double arrivalTime, Driver driver, Vehicle vehicle) { return tourAct.getOperationTime(); } - }; HardActivityConstraint hardActivityLevelConstraint = new HardActivityConstraint() { @@ -85,19 +85,17 @@ public ConstraintsStatus fulfilled(JobInsertionContext iFacts, TourActivity prev public boolean fulfilled(JobInsertionContext insertionContext) { return true; } - }; ActivityInsertionCostsCalculator activityInsertionCostsCalculator; -// ShipmentInsertionCalculator insertionCalculator; - + // ShipmentInsertionCalculator insertionCalculator; VehicleRoutingProblem vehicleRoutingProblem; Vehicle vehicle; - @Before - public void doBefore() { + @BeforeEach + void doBefore() { routingCosts = CostFactory.createManhattanCosts(); VehicleType type = VehicleTypeImpl.Builder.newInstance("t").addCapacityDimension(0, 2).setCostPerDistance(1).build(); vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("0,0")).setType(type).build(); @@ -109,51 +107,40 @@ public void doBefore() { private void createInsertionCalculator(HardRouteConstraint hardRouteLevelConstraint) { ConstraintManager constraintManager = new ConstraintManager(mock(VehicleRoutingProblem.class), mock(RouteAndActivityStateGetter.class)); constraintManager.addConstraint(hardRouteLevelConstraint); -// insertionCalculator = new ShipmentInsertionCalculator(routingCosts, activityCosts, activityInsertionCostsCalculator, constraintManager, ); + // insertionCalculator = new ShipmentInsertionCalculator(routingCosts, activityCosts, activityInsertionCostsCalculator, constraintManager, ); } @Test - public void whenInsertingServiceWhileNoCapIsAvailable_itMustReturnTheCorrectInsertionIndex() { + @DisplayName("When Inserting Service While No Cap Is Available _ it Must Return The Correct Insertion Index") + void whenInsertingServiceWhileNoCapIsAvailable_itMustReturnTheCorrectInsertionIndex() { Delivery delivery = (Delivery) Delivery.Builder.newInstance("del").addSizeDimension(0, 41).setLocation(Location.newInstance("10,10")).build(); Pickup pickup = (Pickup) Pickup.Builder.newInstance("pick").addSizeDimension(0, 15).setLocation(Location.newInstance("0,10")).build(); - VehicleType type = VehicleTypeImpl.Builder.newInstance("t").addCapacityDimension(0, 50).setCostPerDistance(1).build(); VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("0,0")).setType(type).build(); - final VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(delivery).addJob(pickup).addVehicle(vehicle).build(); - VehicleRoute route = VehicleRoute.emptyRoute(); route.setVehicleAndDepartureTime(vehicle, 0.0); - Inserter inserter = new Inserter(new InsertionListeners(), vrp); inserter.insertJob(delivery, new InsertionData(0, 0, 0, vehicle, null), route); - JobActivityFactory activityFactory = new JobActivityFactory() { + @Override public List createActivities(Job job) { return vrp.copyAndGetActivities(job); } }; - StateManager stateManager = new StateManager(vrp); stateManager.updateLoadStates(); - ConstraintManager constraintManager = new ConstraintManager(vrp, stateManager); constraintManager.addLoadConstraint(); stateManager.informInsertionStarts(Arrays.asList(route), null); - JobCalculatorSwitcher switcher = new JobCalculatorSwitcher(); ServiceInsertionCalculator serviceInsertionCalc = new ServiceInsertionCalculator(routingCosts, activityCosts, activityInsertionCostsCalculator, constraintManager, activityFactory); ShipmentInsertionCalculator insertionCalculator = new ShipmentInsertionCalculator(routingCosts, activityCosts, activityInsertionCostsCalculator, constraintManager, activityFactory); - - switcher.put(Pickup.class, serviceInsertionCalc); switcher.put(Delivery.class, serviceInsertionCalc); switcher.put(Shipment.class, insertionCalculator); - InsertionData iData = switcher.getInsertionData(route, pickup, vehicle, 0, DriverImpl.noDriver(), Double.MAX_VALUE); - assertEquals(1, iData.getDeliveryInsertionIndex()); } - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculatorFlexTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculatorFlexTest.java index 916577006..12fdde35e 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculatorFlexTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculatorFlexTest.java @@ -46,21 +46,22 @@ import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; import com.graphhopper.jsprit.core.util.CostFactory; -import org.junit.Before; -import org.junit.Ignore; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; - -public class ShipmentInsertionCalculatorFlexTest { +@DisplayName("Shipment Insertion Calculator Flex Test") +class ShipmentInsertionCalculatorFlexTest { VehicleRoutingTransportCosts routingCosts; @@ -77,7 +78,6 @@ public double getActivityCost(TourActivity tourAct, double arrivalTime, Driver d public double getActivityDuration(TourActivity tourAct, double arrivalTime, Driver driver, Vehicle vehicle) { return tourAct.getOperationTime(); } - }; HardRouteConstraint hardRouteLevelConstraint = new HardRouteConstraint() { @@ -86,7 +86,6 @@ public double getActivityDuration(TourActivity tourAct, double arrivalTime, Driv public boolean fulfilled(JobInsertionContext insertionContext) { return true; } - }; ActivityInsertionCostsCalculator activityInsertionCostsCalculator; @@ -97,8 +96,8 @@ public boolean fulfilled(JobInsertionContext insertionContext) { ConstraintManager constraintManager; - @Before - public void doBefore() { + @BeforeEach + void doBefore() { routingCosts = CostFactory.createManhattanCosts(); VehicleType type = VehicleTypeImpl.Builder.newInstance("t").addCapacityDimension(0, 2).setCostPerDistance(1).build(); vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("0,0")).setType(type).build(); @@ -108,14 +107,14 @@ public void doBefore() { vehicleRoutingProblem = mock(VehicleRoutingProblem.class); } -// private void createInsertionCalculator(HardRouteConstraint hardRouteLevelConstraint) { -// ConstraintManager constraintManager = new ConstraintManager(mock(VehicleRoutingProblem.class), mock(RouteAndActivityStateGetter.class)); -// constraintManager.addConstraint(hardRouteLevelConstraint); -// insertionCalculator = new ShipmentInsertionCalculator(routingCosts, activityCosts, activityInsertionCostsCalculator, constraintManager, ); -// } - + // private void createInsertionCalculator(HardRouteConstraint hardRouteLevelConstraint) { + // ConstraintManager constraintManager = new ConstraintManager(mock(VehicleRoutingProblem.class), mock(RouteAndActivityStateGetter.class)); + // constraintManager.addConstraint(hardRouteLevelConstraint); + // insertionCalculator = new ShipmentInsertionCalculator(routingCosts, activityCosts, activityInsertionCostsCalculator, constraintManager, ); + // } @Test - public void whenCalculatingInsertionCostsOfShipment_itShouldReturnCorrectCostValue() { + @DisplayName("When Calculating Insertion Costs Of Shipment _ it Should Return Correct Cost Value") + void whenCalculatingInsertionCostsOfShipment_itShouldReturnCorrectCostValue() { Shipment shipment = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("0,10").build()).setDeliveryLocation(Location.newInstance("10,0")).build(); VehicleRoute route = VehicleRoute.emptyRoute(); JobActivityFactory activityFactory = mock(JobActivityFactory.class); @@ -130,13 +129,13 @@ public void whenCalculatingInsertionCostsOfShipment_itShouldReturnCorrectCostVal } @Test - public void whenCalculatingInsertionIntoExistingRoute_itShouldReturnCorrectCosts() { + @DisplayName("When Calculating Insertion Into Existing Route _ it Should Return Correct Costs") + void whenCalculatingInsertionIntoExistingRoute_itShouldReturnCorrectCosts() { Shipment shipment = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("0,10").build()).setDeliveryLocation(Location.newInstance("10,0")).build(); Shipment shipment2 = Shipment.Builder.newInstance("s2").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("10,10").build()).setDeliveryLocation(Location.newInstance("0,0")).build(); VehicleRoute route = VehicleRoute.emptyRoute(); when(vehicleRoutingProblem.copyAndGetActivities(shipment)).thenReturn(getTourActivities(shipment)); new Inserter(new InsertionListeners(), vehicleRoutingProblem).insertJob(shipment, new InsertionData(0, 0, 0, vehicle, null), route); - JobActivityFactory activityFactory = mock(JobActivityFactory.class); List activities = new ArrayList(); activities.add(new PickupShipment(shipment2)); @@ -144,7 +143,6 @@ public void whenCalculatingInsertionIntoExistingRoute_itShouldReturnCorrectCosts when(activityFactory.createActivities(shipment2)).thenReturn(activities); insertionCalculator = new ShipmentInsertionCalculatorFlex(routingCosts, activityCosts, activityInsertionCostsCalculator, constraintManager); insertionCalculator.setJobActivityFactory(activityFactory); - InsertionData iData = insertionCalculator.getInsertionData(route, shipment2, vehicle, 0.0, null, Double.MAX_VALUE); assertEquals(0.0, iData.getInsertionCost(), 0.05); assertEquals(1, iData.getPickupInsertionIndex()); @@ -161,13 +159,13 @@ private List getTourActivities(Shipment shipment) { } @Test - public void whenInsertingShipmentInRouteWithNotEnoughCapacity_itShouldReturnNoInsertion() { + @DisplayName("When Inserting Shipment In Route With Not Enough Capacity _ it Should Return No Insertion") + void whenInsertingShipmentInRouteWithNotEnoughCapacity_itShouldReturnNoInsertion() { Shipment shipment = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("0,10").build()).setDeliveryLocation(Location.newInstance("10,0")).build(); Shipment shipment2 = Shipment.Builder.newInstance("s2").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("10,10").build()).setDeliveryLocation(Location.newInstance("0,0")).build(); VehicleRoute route = VehicleRoute.emptyRoute(); when(vehicleRoutingProblem.copyAndGetActivities(shipment)).thenReturn(getTourActivities(shipment)); new Inserter(new InsertionListeners(), vehicleRoutingProblem).insertJob(shipment, new InsertionData(0, 0, 0, vehicle, null), route); - constraintManager = new ConstraintManager(mock(VehicleRoutingProblem.class), mock(RouteAndActivityStateGetter.class)); constraintManager.addConstraint(new HardRouteConstraint() { @@ -175,9 +173,7 @@ public void whenInsertingShipmentInRouteWithNotEnoughCapacity_itShouldReturnNoIn public boolean fulfilled(JobInsertionContext insertionContext) { return false; } - }); - JobActivityFactory activityFactory = mock(JobActivityFactory.class); List activities = new ArrayList(); activities.add(new PickupShipment(shipment2)); @@ -185,26 +181,22 @@ public boolean fulfilled(JobInsertionContext insertionContext) { when(activityFactory.createActivities(shipment2)).thenReturn(activities); insertionCalculator = new ShipmentInsertionCalculatorFlex(routingCosts, activityCosts, activityInsertionCostsCalculator, constraintManager); insertionCalculator.setJobActivityFactory(activityFactory); - InsertionData iData = insertionCalculator.getInsertionData(route, shipment2, vehicle, 0.0, null, Double.MAX_VALUE); assertTrue(iData instanceof InsertionData.NoInsertionFound); - } - @Test - public void whenInsertingThirdShipment_itShouldCalcCorrectVal() { + @DisplayName("When Inserting Third Shipment _ it Should Calc Correct Val") + void whenInsertingThirdShipment_itShouldCalcCorrectVal() { Shipment shipment = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("0,10").build()).setDeliveryLocation(Location.newInstance("10,0")).build(); Shipment shipment2 = Shipment.Builder.newInstance("s2").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("10,10").build()).setDeliveryLocation(Location.newInstance("0,0")).build(); Shipment shipment3 = Shipment.Builder.newInstance("s3").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("0,0").build()).setDeliveryLocation(Location.newInstance("9,10")).build(); - VehicleRoute route = VehicleRoute.emptyRoute(); when(vehicleRoutingProblem.copyAndGetActivities(shipment)).thenReturn(getTourActivities(shipment)); when(vehicleRoutingProblem.copyAndGetActivities(shipment2)).thenReturn(getTourActivities(shipment2)); Inserter inserter = new Inserter(new InsertionListeners(), vehicleRoutingProblem); inserter.insertJob(shipment, new InsertionData(0, 0, 0, vehicle, null), route); inserter.insertJob(shipment2, new InsertionData(0, 1, 2, vehicle, null), route); - JobActivityFactory activityFactory = mock(JobActivityFactory.class); List activities = new ArrayList(); activities.add(new PickupShipment(shipment3)); @@ -212,7 +204,6 @@ public void whenInsertingThirdShipment_itShouldCalcCorrectVal() { when(activityFactory.createActivities(shipment3)).thenReturn(activities); insertionCalculator = new ShipmentInsertionCalculatorFlex(routingCosts, activityCosts, activityInsertionCostsCalculator, constraintManager); insertionCalculator.setJobActivityFactory(activityFactory); - InsertionData iData = insertionCalculator.getInsertionData(route, shipment3, vehicle, 0.0, null, Double.MAX_VALUE); assertEquals(0.0, iData.getInsertionCost(), 0.05); assertEquals(0, iData.getPickupInsertionIndex()); @@ -220,7 +211,8 @@ public void whenInsertingThirdShipment_itShouldCalcCorrectVal() { } @Test - public void whenInsertingThirdShipment_itShouldCalcCorrectVal2() { + @DisplayName("When Inserting Third Shipment _ it Should Calc Correct Val 2") + void whenInsertingThirdShipment_itShouldCalcCorrectVal2() { Shipment shipment = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("0,10").build()).setDeliveryLocation(Location.newInstance("10,0")).build(); Shipment shipment2 = Shipment.Builder.newInstance("s2").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("10,10").build()).setDeliveryLocation(Location.newInstance("0,0")).build(); Shipment shipment3 = Shipment.Builder.newInstance("s3").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("0,0").build()).setDeliveryLocation(Location.newInstance("9,9")).build(); @@ -230,7 +222,6 @@ public void whenInsertingThirdShipment_itShouldCalcCorrectVal2() { Inserter inserter = new Inserter(new InsertionListeners(), vehicleRoutingProblem); inserter.insertJob(shipment, new InsertionData(0, 0, 0, vehicle, null), route); inserter.insertJob(shipment2, new InsertionData(0, 1, 2, vehicle, null), route); - JobActivityFactory activityFactory = mock(JobActivityFactory.class); List activities = new ArrayList(); activities.add(new PickupShipment(shipment3)); @@ -238,8 +229,6 @@ public void whenInsertingThirdShipment_itShouldCalcCorrectVal2() { when(activityFactory.createActivities(shipment3)).thenReturn(activities); insertionCalculator = new ShipmentInsertionCalculatorFlex(routingCosts, activityCosts, activityInsertionCostsCalculator, constraintManager); insertionCalculator.setJobActivityFactory(activityFactory); - - InsertionData iData = insertionCalculator.getInsertionData(route, shipment3, vehicle, 0.0, null, Double.MAX_VALUE); assertEquals(2.0, iData.getInsertionCost(), 0.05); assertEquals(0, iData.getPickupInsertionIndex()); @@ -247,107 +236,81 @@ public void whenInsertingThirdShipment_itShouldCalcCorrectVal2() { } @Test - public void whenInstertingShipmentWithLoadConstraintWhereCapIsNotSufficient_capConstraintsAreFulfilled() { + @DisplayName("When Insterting Shipment With Load Constraint Where Cap Is Not Sufficient _ cap Constraints Are Fulfilled") + void whenInstertingShipmentWithLoadConstraintWhereCapIsNotSufficient_capConstraintsAreFulfilled() { Shipment shipment = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("0,10").build()).setDeliveryLocation(Location.newInstance("10,0")).build(); Shipment shipment2 = Shipment.Builder.newInstance("s2").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("10,10").build()).setDeliveryLocation(Location.newInstance("0,0")).build(); Shipment shipment3 = Shipment.Builder.newInstance("s3").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("0,0").build()).setDeliveryLocation(Location.newInstance("9,9")).build(); - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); VehicleRoutingProblem vrp = vrpBuilder.addJob(shipment).addJob(shipment2).addJob(shipment3).build(); - VehicleRoute route = VehicleRoute.emptyRoute(); route.setVehicleAndDepartureTime(vehicle, 0.0); - Inserter inserter = new Inserter(new InsertionListeners(), vrp); inserter.insertJob(shipment, new InsertionData(0, 0, 0, vehicle, null), route); inserter.insertJob(shipment2, new InsertionData(0, 1, 2, vehicle, null), route); - StateManager stateManager = new StateManager(vrp); stateManager.updateLoadStates(); stateManager.informInsertionStarts(Arrays.asList(route), null); - ConstraintManager constraintManager = new ConstraintManager(vrp, stateManager); constraintManager.addConstraint(new PickupAndDeliverShipmentLoadActivityLevelConstraint(stateManager), ConstraintManager.Priority.CRITICAL); constraintManager.addConstraint(new ShipmentPickupsFirstConstraint(), ConstraintManager.Priority.CRITICAL); - - ShipmentInsertionCalculatorFlex insertionCalculator = new ShipmentInsertionCalculatorFlex(routingCosts, activityCosts, - activityInsertionCostsCalculator, constraintManager); + ShipmentInsertionCalculatorFlex insertionCalculator = new ShipmentInsertionCalculatorFlex(routingCosts, activityCosts, activityInsertionCostsCalculator, constraintManager); insertionCalculator.setJobActivityFactory(vrp.getJobActivityFactory()); - InsertionData iData = insertionCalculator.getInsertionData(route, shipment3, vehicle, 0.0, DriverImpl.noDriver(), Double.MAX_VALUE); assertTrue(iData instanceof InsertionData.NoInsertionFound); - } - @Ignore + @Disabled @Test - public void whenInsertingShipmentWithLoadConstraintWhereCapIsNotSufficient_capConstraintsAreFulfilledV2() { + @DisplayName("When Inserting Shipment With Load Constraint Where Cap Is Not Sufficient _ cap Constraints Are Fulfilled V 2") + void whenInsertingShipmentWithLoadConstraintWhereCapIsNotSufficient_capConstraintsAreFulfilledV2() { Shipment shipment = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("0,10").build()).setDeliveryLocation(Location.newInstance("10,0")).build(); Shipment shipment2 = Shipment.Builder.newInstance("s2").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("10,10").build()).setDeliveryLocation(Location.newInstance("0,0")).build(); Shipment shipment3 = Shipment.Builder.newInstance("s3").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("0,0").build()).setDeliveryLocation(Location.newInstance("9,9")).build(); - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); VehicleRoutingProblem vrp = vrpBuilder.addJob(shipment).addJob(shipment2).addJob(shipment3).build(); - VehicleRoute route = VehicleRoute.emptyRoute(); route.setVehicleAndDepartureTime(vehicle, 0.0); - Inserter inserter = new Inserter(new InsertionListeners(), vrp); inserter.insertJob(shipment, new InsertionData(0, 0, 0, vehicle, null), route); inserter.insertJob(shipment2, new InsertionData(0, 1, 2, vehicle, null), route); - StateManager stateManager = new StateManager(vrp); stateManager.updateLoadStates(); stateManager.informInsertionStarts(Arrays.asList(route), null); - ConstraintManager constraintManager = new ConstraintManager(vrp, stateManager); constraintManager.addConstraint(new PickupAndDeliverShipmentLoadActivityLevelConstraint(stateManager), ConstraintManager.Priority.CRITICAL); -// constraintManager.addConstraint(new ShipmentPickupsFirstConstraint(), ConstraintManager.Priority.CRITICAL); - - ShipmentInsertionCalculatorFlex insertionCalculator = new ShipmentInsertionCalculatorFlex(routingCosts, activityCosts, - activityInsertionCostsCalculator, constraintManager); + // constraintManager.addConstraint(new ShipmentPickupsFirstConstraint(), ConstraintManager.Priority.CRITICAL); + ShipmentInsertionCalculatorFlex insertionCalculator = new ShipmentInsertionCalculatorFlex(routingCosts, activityCosts, activityInsertionCostsCalculator, constraintManager); insertionCalculator.setEvalIndexPickup(0); insertionCalculator.setEvalIndexDelivery(3); insertionCalculator.setJobActivityFactory(vrp.getJobActivityFactory()); - InsertionData iData = insertionCalculator.getInsertionData(route, shipment3, vehicle, 0.0, DriverImpl.noDriver(), Double.MAX_VALUE); assertTrue(iData instanceof InsertionData.NoInsertionFound); - } - @Test - public void whenInsertingServiceWhileNoCapIsAvailable_itMustReturnNoInsertionData() { + @DisplayName("When Inserting Service While No Cap Is Available _ it Must Return No Insertion Data") + void whenInsertingServiceWhileNoCapIsAvailable_itMustReturnNoInsertionData() { Shipment shipment = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("0,10").build()).setDeliveryLocation(Location.newInstance("0,0")).build(); Shipment shipment2 = Shipment.Builder.newInstance("s2").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("10,10").build()).setDeliveryLocation(Location.newInstance("0,0")).build(); - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); VehicleRoutingProblem vrp = vrpBuilder.addJob(shipment).addJob(shipment2).build(); - VehicleRoute route = VehicleRoute.emptyRoute(); route.setVehicleAndDepartureTime(vehicle, 0.0); - Inserter inserter = new Inserter(new InsertionListeners(), vrp); - inserter.insertJob(shipment, new InsertionData(0, 0, 0, vehicle, null), route); inserter.insertJob(shipment2, new InsertionData(0, 1, 2, vehicle, null), route); - StateManager stateManager = new StateManager(vrp); stateManager.updateLoadStates(); stateManager.informInsertionStarts(Arrays.asList(route), null); - ConstraintManager constraintManager = new ConstraintManager(vrp, stateManager); constraintManager.addLoadConstraint(); - stateManager.informInsertionStarts(Arrays.asList(route), null); - Pickup service = (Pickup) Pickup.Builder.newInstance("pick").addSizeDimension(0, 1).setLocation(Location.newInstance("5,5")).build(); - JobActivityFactory activityFactory = mock(JobActivityFactory.class); List activities = new ArrayList(); activities.add(new PickupService(service)); when(activityFactory.createActivities(service)).thenReturn(activities); - JobCalculatorSwitcher switcher = new JobCalculatorSwitcher(); ServiceInsertionCalculator serviceInsertionCalc = new ServiceInsertionCalculator(routingCosts, activityCosts, activityInsertionCostsCalculator, constraintManager, activityFactory); ShipmentInsertionCalculatorFlex insertionCalculator = new ShipmentInsertionCalculatorFlex(routingCosts, activityCosts, activityInsertionCostsCalculator, constraintManager); @@ -355,13 +318,8 @@ public void whenInsertingServiceWhileNoCapIsAvailable_itMustReturnNoInsertionDat switcher.put(Pickup.class, serviceInsertionCalc); switcher.put(Service.class, serviceInsertionCalc); switcher.put(Shipment.class, insertionCalculator); - - InsertionData iData = switcher.getInsertionData(route, service, vehicle, 0, DriverImpl.noDriver(), Double.MAX_VALUE); -// routeActVisitor.visit(route); - + // routeActVisitor.visit(route); assertEquals(3, iData.getDeliveryInsertionIndex()); } - - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculatorTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculatorTest.java index 274bb5fe3..9995fea54 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculatorTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculatorTest.java @@ -46,20 +46,21 @@ import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; import com.graphhopper.jsprit.core.util.CostFactory; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; - -public class ShipmentInsertionCalculatorTest { +@DisplayName("Shipment Insertion Calculator Test") +class ShipmentInsertionCalculatorTest { VehicleRoutingTransportCosts routingCosts; @@ -76,7 +77,6 @@ public double getActivityCost(TourActivity tourAct, double arrivalTime, Driver d public double getActivityDuration(TourActivity tourAct, double arrivalTime, Driver driver, Vehicle vehicle) { return tourAct.getOperationTime(); } - }; HardRouteConstraint hardRouteLevelConstraint = new HardRouteConstraint() { @@ -85,7 +85,6 @@ public double getActivityDuration(TourActivity tourAct, double arrivalTime, Driv public boolean fulfilled(JobInsertionContext insertionContext) { return true; } - }; ActivityInsertionCostsCalculator activityInsertionCostsCalculator; @@ -96,8 +95,8 @@ public boolean fulfilled(JobInsertionContext insertionContext) { ConstraintManager constraintManager; - @Before - public void doBefore() { + @BeforeEach + void doBefore() { routingCosts = CostFactory.createManhattanCosts(); VehicleType type = VehicleTypeImpl.Builder.newInstance("t").addCapacityDimension(0, 2).setCostPerDistance(1).build(); vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("0,0")).setType(type).build(); @@ -107,14 +106,14 @@ public void doBefore() { vehicleRoutingProblem = mock(VehicleRoutingProblem.class); } -// private void createInsertionCalculator(HardRouteConstraint hardRouteLevelConstraint) { -// ConstraintManager constraintManager = new ConstraintManager(mock(VehicleRoutingProblem.class), mock(RouteAndActivityStateGetter.class)); -// constraintManager.addConstraint(hardRouteLevelConstraint); -// insertionCalculator = new ShipmentInsertionCalculator(routingCosts, activityCosts, activityInsertionCostsCalculator, constraintManager, ); -// } - + // private void createInsertionCalculator(HardRouteConstraint hardRouteLevelConstraint) { + // ConstraintManager constraintManager = new ConstraintManager(mock(VehicleRoutingProblem.class), mock(RouteAndActivityStateGetter.class)); + // constraintManager.addConstraint(hardRouteLevelConstraint); + // insertionCalculator = new ShipmentInsertionCalculator(routingCosts, activityCosts, activityInsertionCostsCalculator, constraintManager, ); + // } @Test - public void whenCalculatingInsertionCostsOfShipment_itShouldReturnCorrectCostValue() { + @DisplayName("When Calculating Insertion Costs Of Shipment _ it Should Return Correct Cost Value") + void whenCalculatingInsertionCostsOfShipment_itShouldReturnCorrectCostValue() { Shipment shipment = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("0,10").build()).setDeliveryLocation(Location.newInstance("10,0")).build(); VehicleRoute route = VehicleRoute.emptyRoute(); JobActivityFactory activityFactory = mock(JobActivityFactory.class); @@ -128,20 +127,19 @@ public void whenCalculatingInsertionCostsOfShipment_itShouldReturnCorrectCostVal } @Test - public void whenCalculatingInsertionIntoExistingRoute_itShouldReturnCorrectCosts() { + @DisplayName("When Calculating Insertion Into Existing Route _ it Should Return Correct Costs") + void whenCalculatingInsertionIntoExistingRoute_itShouldReturnCorrectCosts() { Shipment shipment = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("0,10").build()).setDeliveryLocation(Location.newInstance("10,0")).build(); Shipment shipment2 = Shipment.Builder.newInstance("s2").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("10,10").build()).setDeliveryLocation(Location.newInstance("0,0")).build(); VehicleRoute route = VehicleRoute.emptyRoute(); when(vehicleRoutingProblem.copyAndGetActivities(shipment)).thenReturn(getTourActivities(shipment)); new Inserter(new InsertionListeners(), vehicleRoutingProblem).insertJob(shipment, new InsertionData(0, 0, 0, vehicle, null), route); - JobActivityFactory activityFactory = mock(JobActivityFactory.class); List activities = new ArrayList(); activities.add(new PickupShipment(shipment2)); activities.add(new DeliverShipment(shipment2)); when(activityFactory.createActivities(shipment2)).thenReturn(activities); insertionCalculator = new ShipmentInsertionCalculator(routingCosts, activityCosts, activityInsertionCostsCalculator, constraintManager, activityFactory); - InsertionData iData = insertionCalculator.getInsertionData(route, shipment2, vehicle, 0.0, null, Double.MAX_VALUE); assertEquals(0.0, iData.getInsertionCost(), 0.05); assertEquals(1, iData.getPickupInsertionIndex()); @@ -158,13 +156,13 @@ private List getTourActivities(Shipment shipment) { } @Test - public void whenInsertingShipmentInRouteWithNotEnoughCapacity_itShouldReturnNoInsertion() { + @DisplayName("When Inserting Shipment In Route With Not Enough Capacity _ it Should Return No Insertion") + void whenInsertingShipmentInRouteWithNotEnoughCapacity_itShouldReturnNoInsertion() { Shipment shipment = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("0,10").build()).setDeliveryLocation(Location.newInstance("10,0")).build(); Shipment shipment2 = Shipment.Builder.newInstance("s2").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("10,10").build()).setDeliveryLocation(Location.newInstance("0,0")).build(); VehicleRoute route = VehicleRoute.emptyRoute(); when(vehicleRoutingProblem.copyAndGetActivities(shipment)).thenReturn(getTourActivities(shipment)); new Inserter(new InsertionListeners(), vehicleRoutingProblem).insertJob(shipment, new InsertionData(0, 0, 0, vehicle, null), route); - constraintManager = new ConstraintManager(mock(VehicleRoutingProblem.class), mock(RouteAndActivityStateGetter.class)); constraintManager.addConstraint(new HardRouteConstraint() { @@ -172,42 +170,35 @@ public void whenInsertingShipmentInRouteWithNotEnoughCapacity_itShouldReturnNoIn public boolean fulfilled(JobInsertionContext insertionContext) { return false; } - }); - JobActivityFactory activityFactory = mock(JobActivityFactory.class); List activities = new ArrayList(); activities.add(new PickupShipment(shipment2)); activities.add(new DeliverShipment(shipment2)); when(activityFactory.createActivities(shipment2)).thenReturn(activities); insertionCalculator = new ShipmentInsertionCalculator(routingCosts, activityCosts, activityInsertionCostsCalculator, constraintManager, activityFactory); - InsertionData iData = insertionCalculator.getInsertionData(route, shipment2, vehicle, 0.0, null, Double.MAX_VALUE); assertTrue(iData instanceof InsertionData.NoInsertionFound); - } - @Test - public void whenInsertingThirdShipment_itShouldCalcCorrectVal() { + @DisplayName("When Inserting Third Shipment _ it Should Calc Correct Val") + void whenInsertingThirdShipment_itShouldCalcCorrectVal() { Shipment shipment = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("0,10").build()).setDeliveryLocation(Location.newInstance("10,0")).build(); Shipment shipment2 = Shipment.Builder.newInstance("s2").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("10,10").build()).setDeliveryLocation(Location.newInstance("0,0")).build(); Shipment shipment3 = Shipment.Builder.newInstance("s3").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("0,0").build()).setDeliveryLocation(Location.newInstance("9,10")).build(); - VehicleRoute route = VehicleRoute.emptyRoute(); when(vehicleRoutingProblem.copyAndGetActivities(shipment)).thenReturn(getTourActivities(shipment)); when(vehicleRoutingProblem.copyAndGetActivities(shipment2)).thenReturn(getTourActivities(shipment2)); Inserter inserter = new Inserter(new InsertionListeners(), vehicleRoutingProblem); inserter.insertJob(shipment, new InsertionData(0, 0, 0, vehicle, null), route); inserter.insertJob(shipment2, new InsertionData(0, 1, 2, vehicle, null), route); - JobActivityFactory activityFactory = mock(JobActivityFactory.class); List activities = new ArrayList(); activities.add(new PickupShipment(shipment3)); activities.add(new DeliverShipment(shipment3)); when(activityFactory.createActivities(shipment3)).thenReturn(activities); insertionCalculator = new ShipmentInsertionCalculator(routingCosts, activityCosts, activityInsertionCostsCalculator, constraintManager, activityFactory); - InsertionData iData = insertionCalculator.getInsertionData(route, shipment3, vehicle, 0.0, null, Double.MAX_VALUE); assertEquals(0.0, iData.getInsertionCost(), 0.05); assertEquals(0, iData.getPickupInsertionIndex()); @@ -215,7 +206,8 @@ public void whenInsertingThirdShipment_itShouldCalcCorrectVal() { } @Test - public void whenInsertingThirdShipment_itShouldCalcCorrectVal2() { + @DisplayName("When Inserting Third Shipment _ it Should Calc Correct Val 2") + void whenInsertingThirdShipment_itShouldCalcCorrectVal2() { Shipment shipment = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("0,10").build()).setDeliveryLocation(Location.newInstance("10,0")).build(); Shipment shipment2 = Shipment.Builder.newInstance("s2").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("10,10").build()).setDeliveryLocation(Location.newInstance("0,0")).build(); Shipment shipment3 = Shipment.Builder.newInstance("s3").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("0,0").build()).setDeliveryLocation(Location.newInstance("9,9")).build(); @@ -225,15 +217,12 @@ public void whenInsertingThirdShipment_itShouldCalcCorrectVal2() { Inserter inserter = new Inserter(new InsertionListeners(), vehicleRoutingProblem); inserter.insertJob(shipment, new InsertionData(0, 0, 0, vehicle, null), route); inserter.insertJob(shipment2, new InsertionData(0, 1, 2, vehicle, null), route); - JobActivityFactory activityFactory = mock(JobActivityFactory.class); List activities = new ArrayList(); activities.add(new PickupShipment(shipment3)); activities.add(new DeliverShipment(shipment3)); when(activityFactory.createActivities(shipment3)).thenReturn(activities); insertionCalculator = new ShipmentInsertionCalculator(routingCosts, activityCosts, activityInsertionCostsCalculator, constraintManager, activityFactory); - - InsertionData iData = insertionCalculator.getInsertionData(route, shipment3, vehicle, 0.0, null, Double.MAX_VALUE); assertEquals(2.0, iData.getInsertionCost(), 0.05); assertEquals(0, iData.getPickupInsertionIndex()); @@ -241,82 +230,60 @@ public void whenInsertingThirdShipment_itShouldCalcCorrectVal2() { } @Test - public void whenInstertingShipmentWithLoadConstraintWhereCapIsNotSufficient_capConstraintsAreFulfilled() { + @DisplayName("When Insterting Shipment With Load Constraint Where Cap Is Not Sufficient _ cap Constraints Are Fulfilled") + void whenInstertingShipmentWithLoadConstraintWhereCapIsNotSufficient_capConstraintsAreFulfilled() { Shipment shipment = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("0,10").build()).setDeliveryLocation(Location.newInstance("10,0")).build(); Shipment shipment2 = Shipment.Builder.newInstance("s2").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("10,10").build()).setDeliveryLocation(Location.newInstance("0,0")).build(); Shipment shipment3 = Shipment.Builder.newInstance("s3").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("0,0").build()).setDeliveryLocation(Location.newInstance("9,9")).build(); - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); VehicleRoutingProblem vrp = vrpBuilder.addJob(shipment).addJob(shipment2).addJob(shipment3).build(); - VehicleRoute route = VehicleRoute.emptyRoute(); route.setVehicleAndDepartureTime(vehicle, 0.0); - Inserter inserter = new Inserter(new InsertionListeners(), vrp); inserter.insertJob(shipment, new InsertionData(0, 0, 0, vehicle, null), route); inserter.insertJob(shipment2, new InsertionData(0, 1, 2, vehicle, null), route); - StateManager stateManager = new StateManager(vrp); stateManager.updateLoadStates(); stateManager.informInsertionStarts(Arrays.asList(route), null); - ConstraintManager constraintManager = new ConstraintManager(vrp, stateManager); constraintManager.addConstraint(new PickupAndDeliverShipmentLoadActivityLevelConstraint(stateManager), ConstraintManager.Priority.CRITICAL); constraintManager.addConstraint(new ShipmentPickupsFirstConstraint(), ConstraintManager.Priority.CRITICAL); - - ShipmentInsertionCalculator insertionCalculator = new ShipmentInsertionCalculator(routingCosts, activityCosts, - activityInsertionCostsCalculator, constraintManager, vrp.getJobActivityFactory()); - + ShipmentInsertionCalculator insertionCalculator = new ShipmentInsertionCalculator(routingCosts, activityCosts, activityInsertionCostsCalculator, constraintManager, vrp.getJobActivityFactory()); InsertionData iData = insertionCalculator.getInsertionData(route, shipment3, vehicle, 0.0, DriverImpl.noDriver(), Double.MAX_VALUE); assertTrue(iData instanceof InsertionData.NoInsertionFound); - } @Test - public void whenInsertingServiceWhileNoCapIsAvailable_itMustReturnNoInsertionData() { + @DisplayName("When Inserting Service While No Cap Is Available _ it Must Return No Insertion Data") + void whenInsertingServiceWhileNoCapIsAvailable_itMustReturnNoInsertionData() { Shipment shipment = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("0,10").build()).setDeliveryLocation(Location.newInstance("0,0")).build(); Shipment shipment2 = Shipment.Builder.newInstance("s2").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("10,10").build()).setDeliveryLocation(Location.newInstance("0,0")).build(); - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); VehicleRoutingProblem vrp = vrpBuilder.addJob(shipment).addJob(shipment2).build(); - VehicleRoute route = VehicleRoute.emptyRoute(); route.setVehicleAndDepartureTime(vehicle, 0.0); - Inserter inserter = new Inserter(new InsertionListeners(), vrp); - inserter.insertJob(shipment, new InsertionData(0, 0, 0, vehicle, null), route); inserter.insertJob(shipment2, new InsertionData(0, 1, 2, vehicle, null), route); - StateManager stateManager = new StateManager(vrp); stateManager.updateLoadStates(); stateManager.informInsertionStarts(Arrays.asList(route), null); - ConstraintManager constraintManager = new ConstraintManager(vrp, stateManager); constraintManager.addLoadConstraint(); - stateManager.informInsertionStarts(Arrays.asList(route), null); - Pickup service = (Pickup) Pickup.Builder.newInstance("pick").addSizeDimension(0, 1).setLocation(Location.newInstance("5,5")).build(); - JobActivityFactory activityFactory = mock(JobActivityFactory.class); List activities = new ArrayList(); activities.add(new PickupService(service)); when(activityFactory.createActivities(service)).thenReturn(activities); - JobCalculatorSwitcher switcher = new JobCalculatorSwitcher(); ServiceInsertionCalculator serviceInsertionCalc = new ServiceInsertionCalculator(routingCosts, activityCosts, activityInsertionCostsCalculator, constraintManager, activityFactory); ShipmentInsertionCalculator insertionCalculator = new ShipmentInsertionCalculator(routingCosts, activityCosts, activityInsertionCostsCalculator, constraintManager, activityFactory); switcher.put(Pickup.class, serviceInsertionCalc); switcher.put(Service.class, serviceInsertionCalc); switcher.put(Shipment.class, insertionCalculator); - - InsertionData iData = switcher.getInsertionData(route, service, vehicle, 0, DriverImpl.noDriver(), Double.MAX_VALUE); -// routeActVisitor.visit(route); - + // routeActVisitor.visit(route); assertEquals(3, iData.getDeliveryInsertionIndex()); } - - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/DBSCANClustererTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/DBSCANClustererTest.java index 4634144f8..f3ab71ac0 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/DBSCANClustererTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/DBSCANClustererTest.java @@ -15,7 +15,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.graphhopper.jsprit.core.algorithm.ruin; import com.graphhopper.jsprit.core.problem.Location; @@ -24,66 +23,62 @@ import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; import com.graphhopper.jsprit.core.util.EuclideanCosts; -import junit.framework.Assert; -import org.junit.Test; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.List; +import static org.junit.jupiter.api.Assertions.assertEquals; + /** * Created by schroeder on 06/03/15. */ -public class DBSCANClustererTest { +@DisplayName("Dbscan Clusterer Test") +class DBSCANClustererTest { @Test - public void itShouldReturnOneClusterOfSizeTwo() { + @DisplayName("It Should Return One Cluster Of Size Two") + void itShouldReturnOneClusterOfSizeTwo() { Service s1 = Service.Builder.newInstance("s1").setLocation(Location.newInstance(1, 1)).build(); Service s2 = Service.Builder.newInstance("s2").setLocation(Location.newInstance(10, 10)).build(); Service s3 = Service.Builder.newInstance("s3").setLocation(Location.newInstance(9, 9)).build(); - VehicleImpl v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(0, 0)).build(); VehicleRoute r = VehicleRoute.Builder.newInstance(v).addService(s1).addService(s2).addService(s3).build(); - DBSCANClusterer c = new DBSCANClusterer(new EuclideanCosts()); c.setEpsDistance(3); List cluster = c.getRandomCluster(r); - Assert.assertEquals(2, cluster.size()); - + assertEquals(2, cluster.size()); } @Test - public void itShouldReturnOneCluster() { + @DisplayName("It Should Return One Cluster") + void itShouldReturnOneCluster() { Service s1 = Service.Builder.newInstance("s1").setLocation(Location.newInstance(1, 1)).build(); Service s2 = Service.Builder.newInstance("s2").setLocation(Location.newInstance(10, 10)).build(); Service s3 = Service.Builder.newInstance("s3").setLocation(Location.newInstance(9, 9)).build(); - VehicleImpl v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(0, 0)).build(); VehicleRoute r = VehicleRoute.Builder.newInstance(v).addService(s1).addService(s2).addService(s3).build(); - DBSCANClusterer c = new DBSCANClusterer(new EuclideanCosts()); c.setEpsDistance(3); List> cluster = c.getClusters(r); - Assert.assertEquals(1, cluster.size()); - + assertEquals(1, cluster.size()); } @Test - public void itShouldReturnTwoClusters() { + @DisplayName("It Should Return Two Clusters") + void itShouldReturnTwoClusters() { Service s0 = Service.Builder.newInstance("s0").setLocation(Location.newInstance(9, 0)).build(); Service s1 = Service.Builder.newInstance("s1").setLocation(Location.newInstance(9, 1)).build(); Service s2 = Service.Builder.newInstance("s2").setLocation(Location.newInstance(9, 10)).build(); Service s3 = Service.Builder.newInstance("s3").setLocation(Location.newInstance(9, 9)).build(); Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance(9, 16)).build(); Service s5 = Service.Builder.newInstance("s5").setLocation(Location.newInstance(9, 17)).build(); - VehicleImpl v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(0, 0)).build(); - VehicleRoute r = VehicleRoute.Builder.newInstance(v).addService(s1).addService(s2).addService(s3) - .addService(s0).addService(s4).addService(s5).build(); - + VehicleRoute r = VehicleRoute.Builder.newInstance(v).addService(s1).addService(s2).addService(s3).addService(s0).addService(s4).addService(s5).build(); DBSCANClusterer c = new DBSCANClusterer(new EuclideanCosts()); c.setMinPts(1); c.setEpsDistance(2); List> cluster = c.getClusters(r); - Assert.assertEquals(3, cluster.size()); - + assertEquals(3, cluster.size()); } } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsImplTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsImplTest.java index 2d18868aa..d476c6fc0 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsImplTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsImplTest.java @@ -23,50 +23,55 @@ import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; import com.graphhopper.jsprit.core.problem.job.Job; import com.graphhopper.jsprit.core.problem.job.Service; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.ArrayList; import java.util.Iterator; import java.util.List; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; - -public class JobNeighborhoodsImplTest { +@DisplayName("Job Neighborhoods Impl Test") +class JobNeighborhoodsImplTest { VehicleRoutingProblem vrp; JobDistance jobDistance; Service target; + Service s2; + Service s3; + Service s4; + Service s5; + Service s6; + Service s7; - @Before - public void doBefore() { + @BeforeEach + void doBefore() { VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); target = Service.Builder.newInstance("s1").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 5)).build(); s2 = Service.Builder.newInstance("s2").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 4)).build(); s3 = Service.Builder.newInstance("s3").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 3)).build(); s4 = Service.Builder.newInstance("s4").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 2)).build(); - s5 = Service.Builder.newInstance("s5").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 6)).build(); s6 = Service.Builder.newInstance("s6").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 7)).build(); s7 = Service.Builder.newInstance("s7").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 8)).build(); - vrp = builder.addJob(target).addJob(s2).addJob(s3).addJob(s4).addJob(s5).addJob(s6).addJob(s7).build(); - jobDistance = new EuclideanServiceDistance(); } @Test - public void whenRequestingNeighborhoodOfTargetJob_nNeighborsShouldBeTwo() { + @DisplayName("When Requesting Neighborhood Of Target Job _ n Neighbors Should Be Two") + void whenRequestingNeighborhoodOfTargetJob_nNeighborsShouldBeTwo() { JobNeighborhoodsImpl jn = new JobNeighborhoodsImpl(vrp, jobDistance); jn.initialise(); Iterator iter = jn.getNearestNeighborsIterator(2, target); @@ -78,7 +83,8 @@ public void whenRequestingNeighborhoodOfTargetJob_nNeighborsShouldBeTwo() { } @Test - public void whenRequestingNeighborhoodOfTargetJob_s2ShouldBeNeighbor() { + @DisplayName("When Requesting Neighborhood Of Target Job _ s 2 Should Be Neighbor") + void whenRequestingNeighborhoodOfTargetJob_s2ShouldBeNeighbor() { JobNeighborhoodsImpl jn = new JobNeighborhoodsImpl(vrp, jobDistance); jn.initialise(); Iterator iter = jn.getNearestNeighborsIterator(2, target); @@ -90,7 +96,8 @@ public void whenRequestingNeighborhoodOfTargetJob_s2ShouldBeNeighbor() { } @Test - public void whenRequestingNeighborhoodOfTargetJob_s4ShouldBeNeighbor() { + @DisplayName("When Requesting Neighborhood Of Target Job _ s 4 Should Be Neighbor") + void whenRequestingNeighborhoodOfTargetJob_s4ShouldBeNeighbor() { JobNeighborhoodsImpl jn = new JobNeighborhoodsImpl(vrp, jobDistance); jn.initialise(); Iterator iter = jn.getNearestNeighborsIterator(2, target); @@ -102,7 +109,8 @@ public void whenRequestingNeighborhoodOfTargetJob_s4ShouldBeNeighbor() { } @Test - public void whenRequestingNeighborhoodOfTargetJob_sizeShouldBe4() { + @DisplayName("When Requesting Neighborhood Of Target Job _ size Should Be 4") + void whenRequestingNeighborhoodOfTargetJob_sizeShouldBe4() { JobNeighborhoodsImpl jn = new JobNeighborhoodsImpl(vrp, jobDistance); jn.initialise(); Iterator iter = jn.getNearestNeighborsIterator(4, target); @@ -114,7 +122,8 @@ public void whenRequestingNeighborhoodOfTargetJob_sizeShouldBe4() { } @Test - public void whenRequestingMoreNeighborsThanExisting_itShouldReturnMaxNeighbors() { + @DisplayName("When Requesting More Neighbors Than Existing _ it Should Return Max Neighbors") + void whenRequestingMoreNeighborsThanExisting_itShouldReturnMaxNeighbors() { JobNeighborhoodsImpl jn = new JobNeighborhoodsImpl(vrp, jobDistance); jn.initialise(); Iterator iter = jn.getNearestNeighborsIterator(100, target); @@ -126,10 +135,10 @@ public void whenRequestingMoreNeighborsThanExisting_itShouldReturnMaxNeighbors() } @Test - public void whenRequestingNeighborhoodOfTargetJob_itShouldReturntheMaxDistance() { + @DisplayName("When Requesting Neighborhood Of Target Job _ it Should Returnthe Max Distance") + void whenRequestingNeighborhoodOfTargetJob_itShouldReturntheMaxDistance() { JobNeighborhoodsImpl jn = new JobNeighborhoodsImpl(vrp, jobDistance); jn.initialise(); assertEquals(6, jn.getMaxDistance(), 0.01); } - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsOptimizedTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsOptimizedTest.java index db80d59a2..36697434a 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsOptimizedTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsOptimizedTest.java @@ -24,56 +24,59 @@ import com.graphhopper.jsprit.core.problem.job.Break; import com.graphhopper.jsprit.core.problem.job.Job; import com.graphhopper.jsprit.core.problem.job.Service; - -import junit.framework.Assert; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.ArrayList; import java.util.Iterator; import java.util.List; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; -public class JobNeighborhoodsOptimizedTest { +@DisplayName("Job Neighborhoods Optimized Test") +class JobNeighborhoodsOptimizedTest { VehicleRoutingProblem vrp; JobDistance jobDistance; Service target; + Service s2; + Service s3; + Service s4; + Service s5; + Service s6; + Service s7; + Break b1; - @Before - public void doBefore() { + @BeforeEach + void doBefore() { VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); target = Service.Builder.newInstance("s1").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 5)).build(); s2 = Service.Builder.newInstance("s2").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 4)).build(); s3 = Service.Builder.newInstance("s3").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 3)).build(); s4 = Service.Builder.newInstance("s4").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 2)).build(); - s5 = Service.Builder.newInstance("s5").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 6)).build(); s6 = Service.Builder.newInstance("s6").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 7)).build(); s7 = Service.Builder.newInstance("s7").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 8)).build(); - b1 = Break.Builder.newInstance("b1").build(); - vrp = builder.addJob(target).addJob(s2).addJob(s3).addJob(s4).addJob(s5).addJob(s6).addJob(s7).build(); - jobDistance = new EuclideanServiceDistance(); } @Test - public void whenRequestingNeighborhoodOfTargetJob_nNeighborsShouldBeTwo() { - JobNeighborhoodsOptimized jn = new JobNeighborhoodsOptimized(vrp,jobDistance,2); + @DisplayName("When Requesting Neighborhood Of Target Job _ n Neighbors Should Be Two") + void whenRequestingNeighborhoodOfTargetJob_nNeighborsShouldBeTwo() { + JobNeighborhoodsOptimized jn = new JobNeighborhoodsOptimized(vrp, jobDistance, 2); jn.initialise(); Iterator iter = jn.getNearestNeighborsIterator(2, target); List services = new ArrayList(); @@ -84,8 +87,9 @@ public void whenRequestingNeighborhoodOfTargetJob_nNeighborsShouldBeTwo() { } @Test - public void whenRequestingNeighborhoodOfTargetJob_s2ShouldBeNeighbor() { - JobNeighborhoodsOptimized jn = new JobNeighborhoodsOptimized(vrp,jobDistance,2); + @DisplayName("When Requesting Neighborhood Of Target Job _ s 2 Should Be Neighbor") + void whenRequestingNeighborhoodOfTargetJob_s2ShouldBeNeighbor() { + JobNeighborhoodsOptimized jn = new JobNeighborhoodsOptimized(vrp, jobDistance, 2); jn.initialise(); Iterator iter = jn.getNearestNeighborsIterator(2, target); List services = new ArrayList(); @@ -96,8 +100,9 @@ public void whenRequestingNeighborhoodOfTargetJob_s2ShouldBeNeighbor() { } @Test - public void whenRequestingNeighborhoodOfTargetJob_s4ShouldBeNeighbor() { - JobNeighborhoodsOptimized jn = new JobNeighborhoodsOptimized(vrp,jobDistance,2); + @DisplayName("When Requesting Neighborhood Of Target Job _ s 4 Should Be Neighbor") + void whenRequestingNeighborhoodOfTargetJob_s4ShouldBeNeighbor() { + JobNeighborhoodsOptimized jn = new JobNeighborhoodsOptimized(vrp, jobDistance, 2); jn.initialise(); Iterator iter = jn.getNearestNeighborsIterator(2, target); List services = new ArrayList(); @@ -108,8 +113,9 @@ public void whenRequestingNeighborhoodOfTargetJob_s4ShouldBeNeighbor() { } @Test - public void whenRequestingNeighborhoodOfTargetJob_sizeShouldBe4() { - JobNeighborhoodsOptimized jn = new JobNeighborhoodsOptimized(vrp,jobDistance,4); + @DisplayName("When Requesting Neighborhood Of Target Job _ size Should Be 4") + void whenRequestingNeighborhoodOfTargetJob_sizeShouldBe4() { + JobNeighborhoodsOptimized jn = new JobNeighborhoodsOptimized(vrp, jobDistance, 4); jn.initialise(); Iterator iter = jn.getNearestNeighborsIterator(4, target); List services = new ArrayList(); @@ -120,23 +126,25 @@ public void whenRequestingNeighborhoodOfTargetJob_sizeShouldBe4() { } @Test - public void whenRequestingNeighborhoodOfTargetJob_neighborsShouldBeCorrect() { - JobNeighborhoodsOptimized jn = new JobNeighborhoodsOptimized(vrp,jobDistance,4); + @DisplayName("When Requesting Neighborhood Of Target Job _ neighbors Should Be Correct") + void whenRequestingNeighborhoodOfTargetJob_neighborsShouldBeCorrect() { + JobNeighborhoodsOptimized jn = new JobNeighborhoodsOptimized(vrp, jobDistance, 4); jn.initialise(); Iterator iter = jn.getNearestNeighborsIterator(4, s7); List services = new ArrayList(); while (iter.hasNext()) { services.add((Service) iter.next()); } - Assert.assertEquals(s6,services.get(0)); - Assert.assertEquals(s5,services.get(1)); - Assert.assertEquals(target,services.get(2)); - Assert.assertEquals(s2,services.get(3)); + assertEquals(s6, services.get(0)); + assertEquals(s5, services.get(1)); + assertEquals(target, services.get(2)); + assertEquals(s2, services.get(3)); } @Test - public void whenRequestingMoreNeighborsThanExisting_itShouldReturnMaxNeighbors() { - JobNeighborhoodsOptimized jn = new JobNeighborhoodsOptimized(vrp,jobDistance,2); + @DisplayName("When Requesting More Neighbors Than Existing _ it Should Return Max Neighbors") + void whenRequestingMoreNeighborsThanExisting_itShouldReturnMaxNeighbors() { + JobNeighborhoodsOptimized jn = new JobNeighborhoodsOptimized(vrp, jobDistance, 2); jn.initialise(); Iterator iter = jn.getNearestNeighborsIterator(100, target); List services = new ArrayList(); @@ -147,8 +155,9 @@ public void whenRequestingMoreNeighborsThanExisting_itShouldReturnMaxNeighbors() } @Test - public void whenRequestingNeighborsForZeroIndexBreak_itShouldReturnEmptyIterator() { - JobNeighborhoodsOptimized jn = new JobNeighborhoodsOptimized(vrp,jobDistance,2); + @DisplayName("When Requesting Neighbors For Zero Index Break _ it Should Return Empty Iterator") + void whenRequestingNeighborsForZeroIndexBreak_itShouldReturnEmptyIterator() { + JobNeighborhoodsOptimized jn = new JobNeighborhoodsOptimized(vrp, jobDistance, 2); jn.initialise(); Iterator iter = jn.getNearestNeighborsIterator(100, b1); List services = new ArrayList(); @@ -157,5 +166,4 @@ public void whenRequestingNeighborsForZeroIndexBreak_itShouldReturnEmptyIterator } assertEquals(0, services.size()); } - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsWithCapRestrictionImplTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsWithCapRestrictionImplTest.java index 0851fdadd..125e19f34 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsWithCapRestrictionImplTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/JobNeighborhoodsWithCapRestrictionImplTest.java @@ -23,50 +23,55 @@ import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; import com.graphhopper.jsprit.core.problem.job.Job; import com.graphhopper.jsprit.core.problem.job.Service; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.ArrayList; import java.util.Iterator; import java.util.List; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; - -public class JobNeighborhoodsWithCapRestrictionImplTest { +@DisplayName("Job Neighborhoods With Cap Restriction Impl Test") +class JobNeighborhoodsWithCapRestrictionImplTest { VehicleRoutingProblem vrp; JobDistance jobDistance; Service target; + Service s2; + Service s3; + Service s4; + Service s5; + Service s6; + Service s7; - @Before - public void doBefore() { + @BeforeEach + void doBefore() { VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); target = Service.Builder.newInstance("s1").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 5)).build(); s2 = Service.Builder.newInstance("s2").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 4)).build(); s3 = Service.Builder.newInstance("s3").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 3)).build(); s4 = Service.Builder.newInstance("s4").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 2)).build(); - s5 = Service.Builder.newInstance("s5").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 6)).build(); s6 = Service.Builder.newInstance("s6").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 7)).build(); s7 = Service.Builder.newInstance("s7").addSizeDimension(0, 1).setLocation(Location.newInstance(0, 8)).build(); - vrp = builder.addJob(target).addJob(s2).addJob(s3).addJob(s4).addJob(s5).addJob(s6).addJob(s7).build(); - jobDistance = new EuclideanServiceDistance(); } @Test - public void whenRequestingNeighborhoodOfTargetJob_nNeighborsShouldBeTwo() { + @DisplayName("When Requesting Neighborhood Of Target Job _ n Neighbors Should Be Two") + void whenRequestingNeighborhoodOfTargetJob_nNeighborsShouldBeTwo() { JobNeighborhoodsImplWithCapRestriction jn = new JobNeighborhoodsImplWithCapRestriction(vrp, jobDistance, 2); jn.initialise(); Iterator iter = jn.getNearestNeighborsIterator(2, target); @@ -78,7 +83,8 @@ public void whenRequestingNeighborhoodOfTargetJob_nNeighborsShouldBeTwo() { } @Test - public void whenRequestingNeighborhoodOfTargetJob_s2ShouldBeNeighbor() { + @DisplayName("When Requesting Neighborhood Of Target Job _ s 2 Should Be Neighbor") + void whenRequestingNeighborhoodOfTargetJob_s2ShouldBeNeighbor() { JobNeighborhoodsImplWithCapRestriction jn = new JobNeighborhoodsImplWithCapRestriction(vrp, jobDistance, 2); jn.initialise(); Iterator iter = jn.getNearestNeighborsIterator(2, target); @@ -90,7 +96,8 @@ public void whenRequestingNeighborhoodOfTargetJob_s2ShouldBeNeighbor() { } @Test - public void whenRequestingNeighborhoodOfTargetJob_s4ShouldBeNeighbor() { + @DisplayName("When Requesting Neighborhood Of Target Job _ s 4 Should Be Neighbor") + void whenRequestingNeighborhoodOfTargetJob_s4ShouldBeNeighbor() { JobNeighborhoodsImplWithCapRestriction jn = new JobNeighborhoodsImplWithCapRestriction(vrp, jobDistance, 2); jn.initialise(); Iterator iter = jn.getNearestNeighborsIterator(2, target); @@ -102,7 +109,8 @@ public void whenRequestingNeighborhoodOfTargetJob_s4ShouldBeNeighbor() { } @Test - public void whenRequestingNeighborhoodOfTargetJob_sizeShouldBe4() { + @DisplayName("When Requesting Neighborhood Of Target Job _ size Should Be 4") + void whenRequestingNeighborhoodOfTargetJob_sizeShouldBe4() { JobNeighborhoodsImplWithCapRestriction jn = new JobNeighborhoodsImplWithCapRestriction(vrp, jobDistance, 4); jn.initialise(); Iterator iter = jn.getNearestNeighborsIterator(4, target); @@ -114,7 +122,8 @@ public void whenRequestingNeighborhoodOfTargetJob_sizeShouldBe4() { } @Test - public void whenRequestingMoreNeighborsThanExisting_itShouldReturnMaxNeighbors() { + @DisplayName("When Requesting More Neighbors Than Existing _ it Should Return Max Neighbors") + void whenRequestingMoreNeighborsThanExisting_itShouldReturnMaxNeighbors() { JobNeighborhoodsImplWithCapRestriction jn = new JobNeighborhoodsImplWithCapRestriction(vrp, jobDistance, 2); jn.initialise(); Iterator iter = jn.getNearestNeighborsIterator(100, target); @@ -124,5 +133,4 @@ public void whenRequestingMoreNeighborsThanExisting_itShouldReturnMaxNeighbors() } assertEquals(2, services.size()); } - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinBreakTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinBreakTest.java index 02586d63a..550d339c1 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinBreakTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinBreakTest.java @@ -15,7 +15,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.graphhopper.jsprit.core.algorithm.ruin; import com.graphhopper.jsprit.core.problem.Location; @@ -26,31 +25,35 @@ import com.graphhopper.jsprit.core.problem.solution.route.activity.BreakActivity; import com.graphhopper.jsprit.core.problem.solution.route.activity.TourActivity; import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; -import junit.framework.Assert; -import org.junit.Test; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + /** * Created by schroeder on 04/08/15. */ -public class RuinBreakTest { +@DisplayName("Ruin Break Test") +class RuinBreakTest { @Test - public void itShouldRuinBreaks() { + @DisplayName("It Should Ruin Breaks") + void itShouldRuinBreaks() { Break aBreak = Break.Builder.newInstance("break").build(); - VehicleImpl v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("loc")) - .setBreak(aBreak).build(); + VehicleImpl v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("loc")).setBreak(aBreak).build(); VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().setFleetSize(VehicleRoutingProblem.FleetSize.FINITE).addVehicle(v).build(); VehicleRoute route = VehicleRoute.Builder.newInstance(v).setJobActivityFactory(vrp.getJobActivityFactory()).addService(aBreak).build(); TourActivity tourActivity = route.getActivities().get(0); - Assert.assertTrue(tourActivity instanceof BreakActivity); + assertTrue(tourActivity instanceof BreakActivity); RuinBreaks ruinBreaks = new RuinBreaks(); List unassigned = new ArrayList(); ruinBreaks.ruinEnds(Arrays.asList(route), unassigned); - Assert.assertEquals(1, unassigned.size()); - Assert.assertEquals(aBreak, unassigned.get(0)); + assertEquals(1, unassigned.size()); + assertEquals(aBreak, unassigned.get(0)); } } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinClustersTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinClustersTest.java index 93e23eb22..f37c9c52d 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinClustersTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinClustersTest.java @@ -15,7 +15,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.graphhopper.jsprit.core.algorithm.ruin; import com.graphhopper.jsprit.core.algorithm.ruin.distance.AvgServiceAndShipmentDistance; @@ -26,20 +25,24 @@ import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; import com.graphhopper.jsprit.core.util.RandomNumberGeneration; -import junit.framework.Assert; -import org.junit.Test; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.Arrays; import java.util.Collection; import java.util.Random; +import static org.junit.jupiter.api.Assertions.assertEquals; + /** * Created by schroeder on 06/03/15. */ -public class RuinClustersTest { +@DisplayName("Ruin Clusters Test") +class RuinClustersTest { @Test - public void itShouldRuinTwoObviousClusters() { + @DisplayName("It Should Ruin Two Obvious Clusters") + void itShouldRuinTwoObviousClusters() { Service s0 = Service.Builder.newInstance("s0").setLocation(Location.newInstance(9, 0)).build(); Service s1 = Service.Builder.newInstance("s1").setLocation(Location.newInstance(9, 1)).build(); Service s2 = Service.Builder.newInstance("s2").setLocation(Location.newInstance(9, 10)).build(); @@ -48,25 +51,16 @@ public void itShouldRuinTwoObviousClusters() { Service s5 = Service.Builder.newInstance("s5").setLocation(Location.newInstance(9, 17)).build(); Service s6 = Service.Builder.newInstance("s6").setLocation(Location.newInstance(9, 15.5)).build(); Service s7 = Service.Builder.newInstance("s7").setLocation(Location.newInstance(9, 30)).build(); - VehicleImpl v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(0, 0)).build(); - - VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(s1).addJob(s2) - .addJob(s6).addJob(s7).addJob(s0).addJob(s3).addJob(s4).addJob(s5).addVehicle(v).build(); - + VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(s1).addJob(s2).addJob(s6).addJob(s7).addJob(s0).addJob(s3).addJob(s4).addJob(s5).addVehicle(v).build(); VehicleRoute vr1 = VehicleRoute.Builder.newInstance(v).addService(s0).addService(s1).addService(s2).addService(s3).setJobActivityFactory(vrp.getJobActivityFactory()).build(); - VehicleRoute vr2 = VehicleRoute.Builder.newInstance(v) - .addService(s6).addService(s7).addService(s4).addService(s5).setJobActivityFactory(vrp.getJobActivityFactory()).build(); - + VehicleRoute vr2 = VehicleRoute.Builder.newInstance(v).addService(s6).addService(s7).addService(s4).addService(s5).setJobActivityFactory(vrp.getJobActivityFactory()).build(); JobNeighborhoods n = new JobNeighborhoodsFactory().createNeighborhoods(vrp, new AvgServiceAndShipmentDistance(vrp.getTransportCosts())); n.initialise(); RuinClusters rc = new RuinClusters(vrp, 5, n); Random r = RandomNumberGeneration.newInstance(); rc.setRandom(r); Collection ruined = rc.ruinRoutes(Arrays.asList(vr1, vr2)); - Assert.assertEquals(5, ruined.size()); - + assertEquals(5, ruined.size()); } - - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinRadialTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinRadialTest.java index 9b2d7b2f3..6c86c8499 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinRadialTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinRadialTest.java @@ -15,7 +15,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.graphhopper.jsprit.core.algorithm.ruin; import com.graphhopper.jsprit.core.problem.Location; @@ -25,29 +24,31 @@ import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; import com.graphhopper.jsprit.core.util.Coordinate; -import org.junit.Test; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.Arrays; import java.util.Iterator; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; /** * Created by schroeder on 30/01/15. */ -public class RuinRadialTest { +@DisplayName("Ruin Radial Test") +class RuinRadialTest { @Test - public void whenNoJobHasLocation_itShouldStillWork() { + @DisplayName("When No Job Has Location _ it Should Still Work") + void whenNoJobHasLocation_itShouldStillWork() { Service s1 = Service.Builder.newInstance("s1").build(); Service s2 = Service.Builder.newInstance("s2").build(); Service s3 = Service.Builder.newInstance("s3").build(); - VehicleImpl v = VehicleImpl.Builder.newInstance("v") - .setStartLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(0, 0)).build()).build(); + VehicleImpl v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(0, 0)).build()).build(); VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(s1).addJob(s2).addJob(s3).addVehicle(v).build(); - RuinRadial ruinRadial = new RuinRadial(vrp, 1, new JobNeighborhoods() { + @Override public Iterator getNearestNeighborsIterator(int nNeighbors, Job neighborTo) { return null; @@ -55,7 +56,6 @@ public Iterator getNearestNeighborsIterator(int nNeighbors, Job neighborTo) @Override public void initialise() { - } @Override @@ -63,16 +63,12 @@ public double getMaxDistance() { return 0; } }); - VehicleRoute route = VehicleRoute.Builder.newInstance(v).addService(s1).addService(s2).addService(s3).setJobActivityFactory(vrp.getJobActivityFactory()).build(); try { ruinRadial.ruinRoutes(Arrays.asList(route)); } catch (Exception e) { - assertFalse("error when ruining routes with radial ruin", true); + assertFalse(true, "error when ruining routes with radial ruin"); } assertTrue(true); - } - - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinTimeRelatedTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinTimeRelatedTest.java index a23e72609..4a524f67d 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinTimeRelatedTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinTimeRelatedTest.java @@ -15,7 +15,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.graphhopper.jsprit.core.algorithm.ruin; import com.graphhopper.jsprit.core.problem.Location; @@ -26,7 +25,8 @@ import com.graphhopper.jsprit.core.problem.solution.route.activity.TourActivity; import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; import com.graphhopper.jsprit.core.util.RandomNumberGeneration; -import org.junit.Test; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.Arrays; import java.util.Collection; @@ -35,10 +35,12 @@ /** * Created by schroeder on 06/03/15. */ -public class RuinTimeRelatedTest { +@DisplayName("Ruin Time Related Test") +class RuinTimeRelatedTest { @Test - public void itShouldRuinTwoObviousClusters() { + @DisplayName("It Should Ruin Two Obvious Clusters") + void itShouldRuinTwoObviousClusters() { Service s0 = Service.Builder.newInstance("s0").setLocation(Location.newInstance(9, 0)).build(); Service s1 = Service.Builder.newInstance("s1").setLocation(Location.newInstance(9, 1)).build(); Service s2 = Service.Builder.newInstance("s2").setLocation(Location.newInstance(9, 10)).build(); @@ -47,34 +49,23 @@ public void itShouldRuinTwoObviousClusters() { Service s5 = Service.Builder.newInstance("s5").setLocation(Location.newInstance(9, 17)).build(); Service s6 = Service.Builder.newInstance("s6").setLocation(Location.newInstance(9, 15.5)).build(); Service s7 = Service.Builder.newInstance("s7").setLocation(Location.newInstance(9, 30)).build(); - VehicleImpl v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(0, 0)).build(); - - VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(s1).addJob(s2) - .addJob(s6).addJob(s7).addJob(s0).addJob(s3).addJob(s4).addJob(s5).addVehicle(v).build(); - + VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(s1).addJob(s2).addJob(s6).addJob(s7).addJob(s0).addJob(s3).addJob(s4).addJob(s5).addVehicle(v).build(); VehicleRoute vr1 = VehicleRoute.Builder.newInstance(v).addService(s0).addService(s1).addService(s2).addService(s3).setJobActivityFactory(vrp.getJobActivityFactory()).build(); long time = 0; for (TourActivity act : vr1.getActivities()) { time += 2; act.setArrTime(time); } - VehicleRoute vr2 = VehicleRoute.Builder.newInstance(v) - .addService(s6).addService(s7).addService(s4).addService(s5).setJobActivityFactory(vrp.getJobActivityFactory()).build(); + VehicleRoute vr2 = VehicleRoute.Builder.newInstance(v).addService(s6).addService(s7).addService(s4).addService(s5).setJobActivityFactory(vrp.getJobActivityFactory()).build(); time = 0; for (TourActivity act : vr2.getActivities()) { time += 2; act.setArrTime(time); } - RuinTimeRelated ruin = new RuinTimeRelated(vrp); - Random r = RandomNumberGeneration.newInstance(); ruin.setRandom(r); Collection ruined = ruin.ruinRoutes(Arrays.asList(vr1, vr2)); - - } - - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinWorstTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinWorstTest.java index 61eb24854..56d42a569 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinWorstTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinWorstTest.java @@ -15,7 +15,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.graphhopper.jsprit.core.algorithm.ruin; import com.graphhopper.jsprit.core.problem.Location; @@ -26,192 +25,143 @@ import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; import com.graphhopper.jsprit.core.util.Coordinate; -import org.junit.Test; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.Arrays; import java.util.Collection; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; /** * Created by schroeder on 30/01/15. */ -public class RuinWorstTest { +@DisplayName("Ruin Worst Test") +class RuinWorstTest { @Test - public void itShouldRemoveCorrectNumber() { - Service s1 = Service.Builder.newInstance("s1") - .setLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(1, 1)).build()).build(); - Service s2 = Service.Builder.newInstance("s2") - .setLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(3, 1)).build()).build(); - Service s3 = Service.Builder.newInstance("s3") - .setLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(10, 10)).build()).build(); - VehicleImpl v = VehicleImpl.Builder.newInstance("v") - .setStartLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(0, 0)).build()).build(); + @DisplayName("It Should Remove Correct Number") + void itShouldRemoveCorrectNumber() { + Service s1 = Service.Builder.newInstance("s1").setLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(1, 1)).build()).build(); + Service s2 = Service.Builder.newInstance("s2").setLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(3, 1)).build()).build(); + Service s3 = Service.Builder.newInstance("s3").setLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(10, 10)).build()).build(); + VehicleImpl v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(0, 0)).build()).build(); VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(s1).addJob(s2).addJob(s3).addVehicle(v).build(); RuinWorst worst = new RuinWorst(vrp, 1); - VehicleRoute route = VehicleRoute.Builder.newInstance(v).addService(s1).addService(s2).addService(s3).setJobActivityFactory(vrp.getJobActivityFactory()).build(); Collection unassigned = worst.ruinRoutes(Arrays.asList(route)); assertEquals(1, unassigned.size()); - } @Test - public void itShouldRemoveWorst() { - Service s1 = Service.Builder.newInstance("s1") - .setLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(1, 1)).build()).build(); - Service s2 = Service.Builder.newInstance("s2") - .setLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(3, 1)).build()).build(); - Service s3 = Service.Builder.newInstance("s3") - .setLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(10, 10)).build()).build(); - VehicleImpl v = VehicleImpl.Builder.newInstance("v") - .setStartLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(0, 0)).build()).build(); + @DisplayName("It Should Remove Worst") + void itShouldRemoveWorst() { + Service s1 = Service.Builder.newInstance("s1").setLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(1, 1)).build()).build(); + Service s2 = Service.Builder.newInstance("s2").setLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(3, 1)).build()).build(); + Service s3 = Service.Builder.newInstance("s3").setLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(10, 10)).build()).build(); + VehicleImpl v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(0, 0)).build()).build(); VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(s1).addJob(s2).addJob(s3).addVehicle(v).build(); RuinWorst worst = new RuinWorst(vrp, 1); - VehicleRoute route = VehicleRoute.Builder.newInstance(v).addService(s1).addService(s2).addService(s3).setJobActivityFactory(vrp.getJobActivityFactory()).build(); Collection unassigned = worst.ruinRoutes(Arrays.asList(route)); assertEquals(s3, unassigned.iterator().next()); - } @Test - public void itShouldRemoveWorstTwo() { - Service s1 = Service.Builder.newInstance("s1") - .setLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(1, 1)).build()).build(); - Service s2 = Service.Builder.newInstance("s2") - .setLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(3, 1)).build()).build(); - Service s3 = Service.Builder.newInstance("s3") - .setLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(10, 10)).build()).build(); - VehicleImpl v = VehicleImpl.Builder.newInstance("v") - .setStartLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(0, 0)).build()).build(); + @DisplayName("It Should Remove Worst Two") + void itShouldRemoveWorstTwo() { + Service s1 = Service.Builder.newInstance("s1").setLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(1, 1)).build()).build(); + Service s2 = Service.Builder.newInstance("s2").setLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(3, 1)).build()).build(); + Service s3 = Service.Builder.newInstance("s3").setLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(10, 10)).build()).build(); + VehicleImpl v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(0, 0)).build()).build(); VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(s1).addJob(s2).addJob(s3).addVehicle(v).build(); RuinWorst worst = new RuinWorst(vrp, 1); worst.setRuinShareFactory(new RuinShareFactory() { + @Override public int createNumberToBeRemoved() { return 2; } }); - VehicleRoute route = VehicleRoute.Builder.newInstance(v).addService(s1).addService(s2).addService(s3).setJobActivityFactory(vrp.getJobActivityFactory()).build(); Collection unassigned = worst.ruinRoutes(Arrays.asList(route)); - assertTrue(unassigned.size() == 2); assertTrue(unassigned.contains(s2)); assertTrue(unassigned.contains(s3)); - } @Test - public void itShouldRemoveShipment() { - Service s1 = Service.Builder.newInstance("s1") - .setLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(1, 1)).build()).build(); - Service s2 = Service.Builder.newInstance("s2") - .setLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(3, 1)).build()).build(); - Service s3 = Service.Builder.newInstance("s3") - .setLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(10, 10)).build()).build(); - Shipment shipment = Shipment.Builder.newInstance("ship1") - .setPickupLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(2, 2)).build()) - .setDeliveryLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(9, 9)).build()).build(); - VehicleImpl v = VehicleImpl.Builder.newInstance("v") - .setStartLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(0, 0)).build()).build(); - VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance() - .addJob(shipment).addJob(s1).addJob(s2).addJob(s3).addVehicle(v).build(); + @DisplayName("It Should Remove Shipment") + void itShouldRemoveShipment() { + Service s1 = Service.Builder.newInstance("s1").setLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(1, 1)).build()).build(); + Service s2 = Service.Builder.newInstance("s2").setLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(3, 1)).build()).build(); + Service s3 = Service.Builder.newInstance("s3").setLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(10, 10)).build()).build(); + Shipment shipment = Shipment.Builder.newInstance("ship1").setPickupLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(2, 2)).build()).setDeliveryLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(9, 9)).build()).build(); + VehicleImpl v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(0, 0)).build()).build(); + VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(shipment).addJob(s1).addJob(s2).addJob(s3).addVehicle(v).build(); RuinWorst worst = new RuinWorst(vrp, 1); worst.setRuinShareFactory(new RuinShareFactory() { + @Override public int createNumberToBeRemoved() { return 1; } }); - - VehicleRoute route = VehicleRoute.Builder.newInstance(v) - .addPickup(shipment).addService(s1).addService(s2).addService(s3).addDelivery(shipment) - .setJobActivityFactory(vrp.getJobActivityFactory()).build(); + VehicleRoute route = VehicleRoute.Builder.newInstance(v).addPickup(shipment).addService(s1).addService(s2).addService(s3).addDelivery(shipment).setJobActivityFactory(vrp.getJobActivityFactory()).build(); Collection unassigned = worst.ruinRoutes(Arrays.asList(route)); - assertTrue(unassigned.size() == 1); assertTrue(unassigned.contains(shipment)); - } @Test - public void itShouldRemoveShipmentFromSecondRoute() { - Service s1 = Service.Builder.newInstance("s1") - .setLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(1, 1)).build()).build(); - Service s2 = Service.Builder.newInstance("s2") - .setLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(3, 1)).build()).build(); - Service s3 = Service.Builder.newInstance("s3") - .setLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(10, 10)).build()).build(); - Shipment shipment = Shipment.Builder.newInstance("ship1") - .setPickupLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(3, 1)).build()) - .setDeliveryLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(10, 10.1)).build()).build(); - VehicleImpl v = VehicleImpl.Builder.newInstance("v") - .setStartLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(0, 0)).build()).build(); - VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2") - .setStartLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(0, 0)).build()).build(); - VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance() - .addJob(shipment).addJob(s1).addJob(s2).addJob(s3).addVehicle(v).addVehicle(v2).build(); + @DisplayName("It Should Remove Shipment From Second Route") + void itShouldRemoveShipmentFromSecondRoute() { + Service s1 = Service.Builder.newInstance("s1").setLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(1, 1)).build()).build(); + Service s2 = Service.Builder.newInstance("s2").setLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(3, 1)).build()).build(); + Service s3 = Service.Builder.newInstance("s3").setLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(10, 10)).build()).build(); + Shipment shipment = Shipment.Builder.newInstance("ship1").setPickupLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(3, 1)).build()).setDeliveryLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(10, 10.1)).build()).build(); + VehicleImpl v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(0, 0)).build()).build(); + VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(0, 0)).build()).build(); + VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(shipment).addJob(s1).addJob(s2).addJob(s3).addVehicle(v).addVehicle(v2).build(); RuinWorst worst = new RuinWorst(vrp, 1); worst.setRuinShareFactory(new RuinShareFactory() { + @Override public int createNumberToBeRemoved() { return 1; } }); - - VehicleRoute route1 = VehicleRoute.Builder.newInstance(v) - .addService(s1).addService(s2).addService(s3) - .setJobActivityFactory(vrp.getJobActivityFactory()).build(); - VehicleRoute route2 = VehicleRoute.Builder.newInstance(v2) - .addPickup(shipment).addDelivery(shipment).build(); + VehicleRoute route1 = VehicleRoute.Builder.newInstance(v).addService(s1).addService(s2).addService(s3).setJobActivityFactory(vrp.getJobActivityFactory()).build(); + VehicleRoute route2 = VehicleRoute.Builder.newInstance(v2).addPickup(shipment).addDelivery(shipment).build(); Collection unassigned = worst.ruinRoutes(Arrays.asList(route1, route2)); - assertTrue(unassigned.size() == 1); assertTrue(unassigned.contains(shipment)); - } @Test - public void itShouldRemoveServiceAndShipmentFromSecondRoute() { - Service s1 = Service.Builder.newInstance("s1") - .setLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(1, 1)).build()).build(); - Service s2 = Service.Builder.newInstance("s2") - .setLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(3, 1)).build()).build(); - Service s3 = Service.Builder.newInstance("s3") - .setLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(10, 10)).build()).build(); - Shipment shipment = Shipment.Builder.newInstance("ship1") - .setPickupLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(3, 1)).build()) - .setDeliveryLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(10, 10.1)).build()).build(); - VehicleImpl v = VehicleImpl.Builder.newInstance("v") - .setStartLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(0, 0)).build()).build(); - VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2") - .setStartLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(0, 0)).build()).build(); - VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance() - .addJob(shipment).addJob(s1).addJob(s2).addJob(s3).addVehicle(v).addVehicle(v2).build(); + @DisplayName("It Should Remove Service And Shipment From Second Route") + void itShouldRemoveServiceAndShipmentFromSecondRoute() { + Service s1 = Service.Builder.newInstance("s1").setLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(1, 1)).build()).build(); + Service s2 = Service.Builder.newInstance("s2").setLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(3, 1)).build()).build(); + Service s3 = Service.Builder.newInstance("s3").setLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(10, 10)).build()).build(); + Shipment shipment = Shipment.Builder.newInstance("ship1").setPickupLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(3, 1)).build()).setDeliveryLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(10, 10.1)).build()).build(); + VehicleImpl v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(0, 0)).build()).build(); + VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(0, 0)).build()).build(); + VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(shipment).addJob(s1).addJob(s2).addJob(s3).addVehicle(v).addVehicle(v2).build(); RuinWorst worst = new RuinWorst(vrp, 1); worst.setRuinShareFactory(new RuinShareFactory() { + @Override public int createNumberToBeRemoved() { return 2; } }); - - VehicleRoute route1 = VehicleRoute.Builder.newInstance(v) - .addService(s1).addService(s2).addService(s3) - .setJobActivityFactory(vrp.getJobActivityFactory()).build(); - VehicleRoute route2 = VehicleRoute.Builder.newInstance(v2) - .addPickup(shipment).addDelivery(shipment).build(); + VehicleRoute route1 = VehicleRoute.Builder.newInstance(v).addService(s1).addService(s2).addService(s3).setJobActivityFactory(vrp.getJobActivityFactory()).build(); + VehicleRoute route2 = VehicleRoute.Builder.newInstance(v2).addPickup(shipment).addDelivery(shipment).build(); Collection unassigned = worst.ruinRoutes(Arrays.asList(route1, route2)); - assertTrue(unassigned.size() == 2); assertTrue(unassigned.contains(shipment)); assertTrue(unassigned.contains(s3)); - } - - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/StringUtilTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/StringUtilTest.java index 9a8cbbf41..8093351a7 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/StringUtilTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/StringUtilTest.java @@ -15,73 +15,78 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.graphhopper.jsprit.core.algorithm.ruin; -import org.junit.Assert; -import org.junit.Test; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.List; /** * Created by schroeder on 13/01/17. */ -public class StringUtilTest { +@DisplayName("String Util Test") +class StringUtilTest { @Test - public void test() { + @DisplayName("Test") + void test() { int stringLength = 4; int seedIndex = 4; int noActivities = 10; List bounds = StringUtil.getLowerBoundsOfAllStrings(stringLength, seedIndex, noActivities); - Assert.assertEquals(4, bounds.size()); - Assert.assertEquals(1, (int) bounds.get(0)); - Assert.assertEquals(2, (int) bounds.get(1)); - Assert.assertEquals(3, (int) bounds.get(2)); - Assert.assertEquals(4, (int) bounds.get(3)); - + Assertions.assertEquals(4, bounds.size()); + Assertions.assertEquals(1, (int) bounds.get(0)); + Assertions.assertEquals(2, (int) bounds.get(1)); + Assertions.assertEquals(3, (int) bounds.get(2)); + Assertions.assertEquals(4, (int) bounds.get(3)); } @Test - public void test2() { + @DisplayName("Test 2") + void test2() { int stringLength = 4; int seedIndex = 2; int noActivities = 10; List bounds = StringUtil.getLowerBoundsOfAllStrings(stringLength, seedIndex, noActivities); - Assert.assertEquals(3, bounds.size()); - Assert.assertEquals(0, (int) bounds.get(0)); - Assert.assertEquals(1, (int) bounds.get(1)); - Assert.assertEquals(2, (int) bounds.get(2)); + Assertions.assertEquals(3, bounds.size()); + Assertions.assertEquals(0, (int) bounds.get(0)); + Assertions.assertEquals(1, (int) bounds.get(1)); + Assertions.assertEquals(2, (int) bounds.get(2)); } @Test - public void test3() { + @DisplayName("Test 3") + void test3() { int stringLength = 4; int seedIndex = 0; int noActivities = 10; List bounds = StringUtil.getLowerBoundsOfAllStrings(stringLength, seedIndex, noActivities); - Assert.assertEquals(1, bounds.size()); - Assert.assertEquals(0, (int) bounds.get(0)); + Assertions.assertEquals(1, bounds.size()); + Assertions.assertEquals(0, (int) bounds.get(0)); } @Test - public void test4() { + @DisplayName("Test 4") + void test4() { int stringLength = 4; int seedIndex = 9; int noActivities = 10; List bounds = StringUtil.getLowerBoundsOfAllStrings(stringLength, seedIndex, noActivities); - Assert.assertEquals(1, bounds.size()); - Assert.assertEquals(6, (int) bounds.get(0)); + Assertions.assertEquals(1, bounds.size()); + Assertions.assertEquals(6, (int) bounds.get(0)); } @Test - public void test5() { + @DisplayName("Test 5") + void test5() { int stringLength = 4; int seedIndex = 8; int noActivities = 10; List bounds = StringUtil.getLowerBoundsOfAllStrings(stringLength, seedIndex, noActivities); - Assert.assertEquals(2, bounds.size()); - Assert.assertEquals(5, (int) bounds.get(0)); - Assert.assertEquals(6, (int) bounds.get(1)); + Assertions.assertEquals(2, bounds.size()); + Assertions.assertEquals(5, (int) bounds.get(0)); + Assertions.assertEquals(6, (int) bounds.get(1)); } } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/distance/AverageJobDistanceTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/distance/AverageJobDistanceTest.java index 4de9efc79..44e559d72 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/distance/AverageJobDistanceTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/distance/AverageJobDistanceTest.java @@ -23,42 +23,38 @@ import com.graphhopper.jsprit.core.util.Coordinate; import com.graphhopper.jsprit.core.util.CrowFlyCosts; import com.graphhopper.jsprit.core.util.Locations; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - - -public class AverageJobDistanceTest { +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; +@DisplayName("Average Job Distance Test") +class AverageJobDistanceTest { private CrowFlyCosts routingCosts; - @Before - public void doBefore() { + @BeforeEach + void doBefore() { Locations locations = new Locations() { @Override public Coordinate getCoord(String id) { - //assume: locationId="x,y" + // assume: locationId="x,y" String[] splitted = id.split(","); - return Coordinate.newInstance(Double.parseDouble(splitted[0]), - Double.parseDouble(splitted[1])); + return Coordinate.newInstance(Double.parseDouble(splitted[0]), Double.parseDouble(splitted[1])); } - }; routingCosts = new CrowFlyCosts(locations); - } @Test - public void distanceOfTwoEqualShipmentsShouldBeSmallerThanAnyOtherDistance() { + @DisplayName("Distance Of Two Equal Shipments Should Be Smaller Than Any Other Distance") + void distanceOfTwoEqualShipmentsShouldBeSmallerThanAnyOtherDistance() { Shipment s1 = Shipment.Builder.newInstance("s1").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("0,0").build()).setDeliveryLocation(Location.newInstance("10,10")).build(); Shipment s2 = Shipment.Builder.newInstance("s2").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("0,0").build()).setDeliveryLocation(Location.newInstance("10,10")).build(); - double dist = new AvgServiceAndShipmentDistance(routingCosts).getDistance(s1, s2); - for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { Shipment other1 = Shipment.Builder.newInstance("s1").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("0,0").build()).setDeliveryLocation(Location.newInstance(i + "," + j)).build(); @@ -69,12 +65,11 @@ public void distanceOfTwoEqualShipmentsShouldBeSmallerThanAnyOtherDistance() { } } - @Test - public void whenServicesHaveSameLocation_distanceShouldBeZero() { + @DisplayName("When Services Have Same Location _ distance Should Be Zero") + void whenServicesHaveSameLocation_distanceShouldBeZero() { Service s1 = Service.Builder.newInstance("s1").addSizeDimension(0, 1).setLocation(Location.newInstance("10,0")).build(); Service s2 = Service.Builder.newInstance("s2").addSizeDimension(0, 1).setLocation(Location.newInstance("10,0")).build(); - double dist = new AvgServiceAndShipmentDistance(routingCosts).getDistance(s1, s2); assertEquals(0.0, dist, 0.01); } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/distance/AvgServiceAndShipmentDistanceTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/distance/AvgServiceAndShipmentDistanceTest.java index 61c933f85..190f71bbe 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/distance/AvgServiceAndShipmentDistanceTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/distance/AvgServiceAndShipmentDistanceTest.java @@ -15,39 +15,43 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.graphhopper.jsprit.core.algorithm.ruin.distance; import com.graphhopper.jsprit.core.problem.Location; import com.graphhopper.jsprit.core.problem.job.Service; import com.graphhopper.jsprit.core.problem.job.Shipment; import com.graphhopper.jsprit.core.util.EuclideanCosts; -import org.junit.Assert; -import org.junit.Test; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; -public class AvgServiceAndShipmentDistanceTest { +@DisplayName("Avg Service And Shipment Distance Test") +class AvgServiceAndShipmentDistanceTest { @Test - public void avgDistanceBetweenTwoServicesTest() { + @DisplayName("Avg Distance Between Two Services Test") + void avgDistanceBetweenTwoServicesTest() { Service s1 = Service.Builder.newInstance("s1").setLocation(Location.newInstance(10, 0)).build(); Service s2 = Service.Builder.newInstance("s2").setLocation(Location.newInstance(20, 0)).build(); AvgServiceAndShipmentDistance distance = new AvgServiceAndShipmentDistance(new EuclideanCosts()); - Assert.assertEquals(10d, distance.getDistance(s1, s2), 0.01); + Assertions.assertEquals(10d, distance.getDistance(s1, s2), 0.01); } @Test - public void avgDistanceBetweenServiceAndShipmentTest() { + @DisplayName("Avg Distance Between Service And Shipment Test") + void avgDistanceBetweenServiceAndShipmentTest() { Service s1 = Service.Builder.newInstance("s1").setLocation(Location.newInstance(10, 0)).build(); Shipment shipment = Shipment.Builder.newInstance("shipment").setPickupLocation(Location.newInstance(20, 0)).setDeliveryLocation(Location.newInstance(30, 0)).build(); AvgServiceAndShipmentDistance distance = new AvgServiceAndShipmentDistance(new EuclideanCosts()); - Assert.assertEquals(15d, distance.getDistance(s1, shipment), 0.01); + Assertions.assertEquals(15d, distance.getDistance(s1, shipment), 0.01); } @Test - public void avgDistanceBetweenShipmentAndShipmentTest() { + @DisplayName("Avg Distance Between Shipment And Shipment Test") + void avgDistanceBetweenShipmentAndShipmentTest() { Shipment shipment1 = Shipment.Builder.newInstance("shipment1").setPickupLocation(Location.newInstance(20, 0)).setDeliveryLocation(Location.newInstance(30, 0)).build(); Shipment shipment2 = Shipment.Builder.newInstance("shipment2").setPickupLocation(Location.newInstance(40, 0)).setDeliveryLocation(Location.newInstance(50, 0)).build(); AvgServiceAndShipmentDistance distance = new AvgServiceAndShipmentDistance(new EuclideanCosts()); - Assert.assertEquals(20d, distance.getDistance(shipment1, shipment2), 0.01); + Assertions.assertEquals(20d, distance.getDistance(shipment1, shipment2), 0.01); } } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/distance/JobDistanceAvgCostsTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/distance/JobDistanceAvgCostsTest.java index 3bede0692..f46e5a0cf 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/distance/JobDistanceAvgCostsTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/ruin/distance/JobDistanceAvgCostsTest.java @@ -22,10 +22,13 @@ import com.graphhopper.jsprit.core.problem.driver.Driver; import com.graphhopper.jsprit.core.problem.job.Service; import com.graphhopper.jsprit.core.problem.vehicle.Vehicle; -import org.junit.Test; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertThrows; -public class JobDistanceAvgCostsTest { +@DisplayName("Job Distance Avg Costs Test") +class JobDistanceAvgCostsTest { public static void main(String[] args) { VehicleRoutingTransportCosts costs = new VehicleRoutingTransportCosts() { @@ -37,27 +40,23 @@ public double getDistance(Location from, Location to, double departureTime, Vehi @Override public double getBackwardTransportTime(Location from, Location to, double arrivalTime, Driver driver, Vehicle vehicle) { - return 0; } @Override - public double getBackwardTransportCost(Location from, Location to, - double arrivalTime, Driver driver, Vehicle vehicle) { + public double getBackwardTransportCost(Location from, Location to, double arrivalTime, Driver driver, Vehicle vehicle) { return 0; } @Override - public double getTransportCost(Location from, Location to, - double departureTime, Driver driver, Vehicle vehicle) { + public double getTransportCost(Location from, Location to, double departureTime, Driver driver, Vehicle vehicle) { @SuppressWarnings("unused") String vehicleId = vehicle.getId(); return 0; } @Override - public double getTransportTime(Location from, Location to, - double departureTime, Driver driver, Vehicle vehicle) { + public double getTransportTime(Location from, Location to, double departureTime, Driver driver, Vehicle vehicle) { return 0; } }; @@ -65,44 +64,42 @@ public double getTransportTime(Location from, Location to, c.getDistance(Service.Builder.newInstance("1").addSizeDimension(0, 1).setLocation(Location.newInstance("foo")).build(), Service.Builder.newInstance("2").addSizeDimension(0, 2).setLocation(Location.newInstance("foo")).build()); } - @Test(expected = NullPointerException.class) - public void whenVehicleAndDriverIsNull_And_CostsDoesNotProvideAMethodForThis_throwException() { -// (expected=NullPointerException.class) - VehicleRoutingTransportCosts costs = new VehicleRoutingTransportCosts() { - - @Override - public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) { - return 0; - } - - @Override - public double getBackwardTransportTime(Location from, Location to, double arrivalTime, Driver driver, Vehicle vehicle) { - - return 0; - } - - @Override - public double getBackwardTransportCost(Location from, Location to, - double arrivalTime, Driver driver, Vehicle vehicle) { - return 0; - } - - @Override - public double getTransportCost(Location from, Location to, - double departureTime, Driver driver, Vehicle vehicle) { - @SuppressWarnings("unused") - String vehicleId = vehicle.getId(); - return 0; - } - - @Override - public double getTransportTime(Location from, Location to, - double departureTime, Driver driver, Vehicle vehicle) { - return 0; - } - }; - AvgServiceDistance c = new AvgServiceDistance(costs); - c.getDistance(Service.Builder.newInstance("1").addSizeDimension(0, 1).setLocation(Location.newInstance("loc")).build(), Service.Builder.newInstance("2").addSizeDimension(0, 2).setLocation(Location.newInstance("loc")).build()); + @Test + @DisplayName("When Vehicle And Driver Is Null _ And _ Costs Does Not Provide A Method For This _ throw Exception") + void whenVehicleAndDriverIsNull_And_CostsDoesNotProvideAMethodForThis_throwException() { + assertThrows(NullPointerException.class, () -> { + // (expected=NullPointerException.class) + VehicleRoutingTransportCosts costs = new VehicleRoutingTransportCosts() { + + @Override + public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) { + return 0; + } + + @Override + public double getBackwardTransportTime(Location from, Location to, double arrivalTime, Driver driver, Vehicle vehicle) { + return 0; + } + + @Override + public double getBackwardTransportCost(Location from, Location to, double arrivalTime, Driver driver, Vehicle vehicle) { + return 0; + } + + @Override + public double getTransportCost(Location from, Location to, double departureTime, Driver driver, Vehicle vehicle) { + @SuppressWarnings("unused") + String vehicleId = vehicle.getId(); + return 0; + } + + @Override + public double getTransportTime(Location from, Location to, double departureTime, Driver driver, Vehicle vehicle) { + return 0; + } + }; + AvgServiceDistance c = new AvgServiceDistance(costs); + c.getDistance(Service.Builder.newInstance("1").addSizeDimension(0, 1).setLocation(Location.newInstance("loc")).build(), Service.Builder.newInstance("2").addSizeDimension(0, 2).setLocation(Location.newInstance("loc")).build()); + }); } - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/selector/SelectBestTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/selector/SelectBestTest.java index 26b7dce72..0248cd39f 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/selector/SelectBestTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/selector/SelectBestTest.java @@ -18,22 +18,24 @@ package com.graphhopper.jsprit.core.algorithm.selector; import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import org.junit.Test; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.Arrays; import java.util.Collections; import static org.hamcrest.CoreMatchers.is; -import static org.junit.Assert.assertNull; import static org.junit.Assert.assertThat; +import static org.junit.jupiter.api.Assertions.assertNull; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; - -public class SelectBestTest { +@DisplayName("Select Best Test") +class SelectBestTest { @Test - public void whenHaving2Solutions_selectBest() { + @DisplayName("When Having 2 Solutions _ select Best") + void whenHaving2Solutions_selectBest() { VehicleRoutingProblemSolution sol1 = mock(VehicleRoutingProblemSolution.class); VehicleRoutingProblemSolution sol2 = mock(VehicleRoutingProblemSolution.class); when(sol1.getCost()).thenReturn(1.0); @@ -42,15 +44,16 @@ public void whenHaving2Solutions_selectBest() { } @Test - public void whenHavingOnly1Solutions_selectThisOne() { + @DisplayName("When Having Only 1 Solutions _ select This One") + void whenHavingOnly1Solutions_selectThisOne() { VehicleRoutingProblemSolution sol1 = mock(VehicleRoutingProblemSolution.class); when(sol1.getCost()).thenReturn(1.0); assertThat(new SelectBest().selectSolution(Arrays.asList(sol1)), is(sol1)); } @Test - public void whenHavingNoSolutions_returnNull() { + @DisplayName("When Having No Solutions _ return Null") + void whenHavingNoSolutions_returnNull() { assertNull(new SelectBest().selectSolution(Collections.emptyList())); } - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/selector/SelectRandomlyTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/selector/SelectRandomlyTest.java index a67a3f506..109a0dd38 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/selector/SelectRandomlyTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/selector/SelectRandomlyTest.java @@ -18,64 +18,57 @@ package com.graphhopper.jsprit.core.algorithm.selector; import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; -import org.junit.Test; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.Arrays; import java.util.Collections; import java.util.Random; import static org.hamcrest.CoreMatchers.is; -import static org.junit.Assert.assertNull; import static org.junit.Assert.assertThat; +import static org.junit.jupiter.api.Assertions.assertNull; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; - -public class SelectRandomlyTest { +@DisplayName("Select Randomly Test") +class SelectRandomlyTest { @Test - public void whenHaving2Solutions_selectSecond() { + @DisplayName("When Having 2 Solutions _ select Second") + void whenHaving2Solutions_selectSecond() { VehicleRoutingProblemSolution sol1 = mock(VehicleRoutingProblemSolution.class); VehicleRoutingProblemSolution sol2 = mock(VehicleRoutingProblemSolution.class); - when(sol1.getCost()).thenReturn(1.0); when(sol2.getCost()).thenReturn(2.0); - Random random = mock(Random.class); when(random.nextInt(2)).thenReturn(1); - SelectRandomly selectRandomly = new SelectRandomly(); selectRandomly.setRandom(random); - assertThat(selectRandomly.selectSolution(Arrays.asList(sol1, sol2)), is(sol2)); } @Test - public void whenHaving2Solutions_selectFirst() { - + @DisplayName("When Having 2 Solutions _ select First") + void whenHaving2Solutions_selectFirst() { VehicleRoutingProblemSolution sol1 = mock(VehicleRoutingProblemSolution.class); VehicleRoutingProblemSolution sol2 = mock(VehicleRoutingProblemSolution.class); - when(sol1.getCost()).thenReturn(1.0); when(sol2.getCost()).thenReturn(2.0); - Random random = mock(Random.class); when(random.nextInt(2)).thenReturn(0); - SelectRandomly selectRandomly = new SelectRandomly(); selectRandomly.setRandom(random); - assertThat(selectRandomly.selectSolution(Arrays.asList(sol1, sol2)), is(sol1)); } @Test - public void whenHavingNoSolutions_returnNull() { + @DisplayName("When Having No Solutions _ return Null") + void whenHavingNoSolutions_returnNull() { Random random = mock(Random.class); when(random.nextInt(2)).thenReturn(0); - SelectRandomly selectRandomly = new SelectRandomly(); selectRandomly.setRandom(random); - assertNull(selectRandomly.selectSolution(Collections.emptyList())); } } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/state/HardPickupAndDeliveryShipmentActivityConstraintTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/state/HardPickupAndDeliveryShipmentActivityConstraintTest.java index 83e38675b..c2afc4e43 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/state/HardPickupAndDeliveryShipmentActivityConstraintTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/state/HardPickupAndDeliveryShipmentActivityConstraintTest.java @@ -31,13 +31,14 @@ import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; - -public class HardPickupAndDeliveryShipmentActivityConstraintTest { +@DisplayName("Hard Pickup And Delivery Shipment Activity Constraint Test") +class HardPickupAndDeliveryShipmentActivityConstraintTest { VehicleImpl vehicle; @@ -55,56 +56,48 @@ public class HardPickupAndDeliveryShipmentActivityConstraintTest { VehicleRoutingProblem vrp; - @Before - public void doBefore() { + @BeforeEach + void doBefore() { s1 = Service.Builder.newInstance("s1").setLocation(Location.newInstance("loc")).build(); s2 = Service.Builder.newInstance("s2").setLocation(Location.newInstance("loc")).build(); shipment = Shipment.Builder.newInstance("shipment").setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).setDeliveryLocation(Location.newInstance("delLoc")).addSizeDimension(0, 1).build(); - - -// when(vehicle.getCapacity()).thenReturn(2); + // when(vehicle.getCapacity()).thenReturn(2); VehicleType type = VehicleTypeImpl.Builder.newInstance("t").addCapacityDimension(0, 2).build(); vehicle = VehicleImpl.Builder.newInstance("v").setType(type).setStartLocation(Location.newInstance("start")).build(); - vrp = VehicleRoutingProblem.Builder.newInstance().addJob(s1).addJob(s2).addJob(shipment).addVehicle(vehicle).build(); - stateManager = new StateManager(vrp); - iFacts = new JobInsertionContext(null, null, vehicle, null, 0.0); constraint = new PickupAndDeliverShipmentLoadActivityLevelConstraint(stateManager); } @Test - public void whenPickupActivityIsInsertedAndLoadIsSufficient_returnFullFilled() { + @DisplayName("When Pickup Activity Is Inserted And Load Is Sufficient _ return Full Filled") + void whenPickupActivityIsInsertedAndLoadIsSufficient_returnFullFilled() { PickupService pickupService = (PickupService) vrp.getActivities(s1).get(0); PickupService anotherService = (PickupService) vrp.getActivities(s2).get(0); PickupShipment pickupShipment = (PickupShipment) vrp.getActivities(shipment).get(0); - assertEquals(ConstraintsStatus.FULFILLED, constraint.fulfilled(iFacts, pickupService, pickupShipment, anotherService, 0.0)); } @Test - public void whenPickupActivityIsInsertedAndLoadIsNotSufficient_returnNOT_FullFilled() { + @DisplayName("When Pickup Activity Is Inserted And Load Is Not Sufficient _ return NOT _ Full Filled") + void whenPickupActivityIsInsertedAndLoadIsNotSufficient_returnNOT_FullFilled() { PickupService pickupService = (PickupService) vrp.getActivities(s1).get(0); PickupService anotherService = (PickupService) vrp.getActivities(s2).get(0); PickupShipment pickupShipment = (PickupShipment) vrp.getActivities(shipment).get(0); - stateManager.putInternalTypedActivityState(pickupService, InternalStates.LOAD, Capacity.Builder.newInstance().addDimension(0, 2).build()); -// when(stateManager.getActivityState(pickupService, StateFactory.LOAD)).thenReturn(StateFactory.createState(2.0)); + // when(stateManager.getActivityState(pickupService, StateFactory.LOAD)).thenReturn(StateFactory.createState(2.0)); assertEquals(ConstraintsStatus.NOT_FULFILLED, constraint.fulfilled(iFacts, pickupService, pickupShipment, anotherService, 0.0)); } @Test - public void whenDeliveryActivityIsInsertedAndLoadIsSufficient_returnFullFilled() { + @DisplayName("When Delivery Activity Is Inserted And Load Is Sufficient _ return Full Filled") + void whenDeliveryActivityIsInsertedAndLoadIsSufficient_returnFullFilled() { PickupService pickupService = (PickupService) vrp.getActivities(s1).get(0); PickupService anotherService = (PickupService) vrp.getActivities(s2).get(0); - DeliverShipment deliverShipment = (DeliverShipment) vrp.getActivities(shipment).get(1); - stateManager.putInternalTypedActivityState(pickupService, InternalStates.LOAD, Capacity.Builder.newInstance().addDimension(0, 1).build()); -// stateManager.putInternalActivityState(pickupService, StateFactory.LOAD, StateFactory.createState(1)); + // stateManager.putInternalActivityState(pickupService, StateFactory.LOAD, StateFactory.createState(1)); assertEquals(ConstraintsStatus.FULFILLED, constraint.fulfilled(iFacts, pickupService, deliverShipment, anotherService, 0.0)); } - - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/state/LoadStateTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/state/LoadStateTest.java index a7e52ec9d..66d0eafb6 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/state/LoadStateTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/state/LoadStateTest.java @@ -15,7 +15,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.graphhopper.jsprit.core.algorithm.state; import com.graphhopper.jsprit.core.problem.*; @@ -23,21 +22,23 @@ import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; import com.graphhopper.jsprit.core.problem.vehicle.Vehicle; import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.Arrays; import java.util.Collections; import java.util.List; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; /** * Unit tests to test correct calc of load states */ -public class LoadStateTest { +@DisplayName("Load State Test") +class LoadStateTest { private VehicleRoute serviceRoute; @@ -47,31 +48,27 @@ public class LoadStateTest { private StateManager stateManager; - @Before - public void doBefore() { + @BeforeEach + void doBefore() { Vehicle vehicle = mock(Vehicle.class); VehicleType type = mock(VehicleType.class); when(type.getCapacityDimensions()).thenReturn(Capacity.Builder.newInstance().addDimension(0, 20).build()); when(vehicle.getType()).thenReturn(type); - VehicleRoutingProblem.Builder serviceProblemBuilder = VehicleRoutingProblem.Builder.newInstance(); Service s1 = Service.Builder.newInstance("s").addSizeDimension(0, 10).setLocation(Location.newInstance("loc")).build(); Service s2 = Service.Builder.newInstance("s2").addSizeDimension(0, 5).setLocation(Location.newInstance("loc")).build(); serviceProblemBuilder.addJob(s1).addJob(s2); final VehicleRoutingProblem serviceProblem = serviceProblemBuilder.build(); - final VehicleRoutingProblem.Builder pdProblemBuilder = VehicleRoutingProblem.Builder.newInstance(); Pickup pickup = (Pickup) Pickup.Builder.newInstance("pick").addSizeDimension(0, 10).setLocation(Location.newInstance("loc")).build(); Delivery delivery = (Delivery) Delivery.Builder.newInstance("del").addSizeDimension(0, 5).setLocation(Location.newInstance("loc")).build(); pdProblemBuilder.addJob(pickup).addJob(delivery); final VehicleRoutingProblem pdProblem = pdProblemBuilder.build(); - final VehicleRoutingProblem.Builder shipmentProblemBuilder = VehicleRoutingProblem.Builder.newInstance(); Shipment shipment1 = Shipment.Builder.newInstance("s1").addSizeDimension(0, 10).setPickupLocation(Location.Builder.newInstance().setId("pick").build()).setDeliveryLocation(Location.newInstance("del")).build(); Shipment shipment2 = Shipment.Builder.newInstance("s2").addSizeDimension(0, 5).setPickupLocation(Location.Builder.newInstance().setId("pick").build()).setDeliveryLocation(Location.newInstance("del")).build(); shipmentProblemBuilder.addJob(shipment1).addJob(shipment2).build(); final VehicleRoutingProblem shipmentProblem = shipmentProblemBuilder.build(); - VehicleRoute.Builder serviceRouteBuilder = VehicleRoute.Builder.newInstance(vehicle); serviceRouteBuilder.setJobActivityFactory(new JobActivityFactory() { @@ -79,87 +76,91 @@ public void doBefore() { public List createActivities(Job job) { return serviceProblem.copyAndGetActivities(job); } - }); serviceRoute = serviceRouteBuilder.addService(s1).addService(s2).build(); - VehicleRoute.Builder pdRouteBuilder = VehicleRoute.Builder.newInstance(vehicle); pdRouteBuilder.setJobActivityFactory(new JobActivityFactory() { + @Override public List createActivities(Job job) { return pdProblem.copyAndGetActivities(job); } }); pickup_delivery_route = pdRouteBuilder.addService(pickup).addService(delivery).build(); - VehicleRoute.Builder shipmentRouteBuilder = VehicleRoute.Builder.newInstance(vehicle); shipmentRouteBuilder.setJobActivityFactory(new JobActivityFactory() { + @Override public List createActivities(Job job) { return shipmentProblem.copyAndGetActivities(job); } }); shipment_route = shipmentRouteBuilder.addPickup(shipment1).addPickup(shipment2).addDelivery(shipment2).addDelivery(shipment1).build(); - VehicleRoutingProblem vrpMock = mock(VehicleRoutingProblem.class); when(vrpMock.getFleetSize()).thenReturn(VehicleRoutingProblem.FleetSize.FINITE); stateManager = new StateManager(vrpMock); stateManager.updateLoadStates(); - } - @Test - public void loadAtEndShouldBe15() { + @DisplayName("Load At End Should Be 15") + void loadAtEndShouldBe15() { stateManager.informInsertionStarts(Arrays.asList(serviceRoute), Collections.emptyList()); Capacity routeState = stateManager.getRouteState(serviceRoute, InternalStates.LOAD_AT_END, Capacity.class); assertEquals(15, routeState.get(0)); } @Test - public void loadAtBeginningShouldBe0() { + @DisplayName("Load At Beginning Should Be 0") + void loadAtBeginningShouldBe0() { stateManager.informInsertionStarts(Arrays.asList(serviceRoute), Collections.emptyList()); Capacity routeState = stateManager.getRouteState(serviceRoute, InternalStates.LOAD_AT_BEGINNING, Capacity.class); assertEquals(0, routeState.get(0)); } @Test - public void loadAtAct1ShouldBe10() { + @DisplayName("Load At Act 1 Should Be 10") + void loadAtAct1ShouldBe10() { stateManager.informInsertionStarts(Arrays.asList(serviceRoute), Collections.emptyList()); Capacity atAct1 = stateManager.getActivityState(serviceRoute.getActivities().get(0), InternalStates.LOAD, Capacity.class); assertEquals(10, atAct1.get(0)); } @Test - public void loadAtAct2ShouldBe15() { + @DisplayName("Load At Act 2 Should Be 15") + void loadAtAct2ShouldBe15() { stateManager.informInsertionStarts(Arrays.asList(serviceRoute), Collections.emptyList()); Capacity atAct2 = stateManager.getActivityState(serviceRoute.getActivities().get(1), InternalStates.LOAD, Capacity.class); assertEquals(15, atAct2.get(0)); } @Test - public void futureMaxLoatAtAct1ShouldBe15() { + @DisplayName("Future Max Loat At Act 1 Should Be 15") + void futureMaxLoatAtAct1ShouldBe15() { stateManager.informInsertionStarts(Arrays.asList(serviceRoute), Collections.emptyList()); Capacity atAct1 = stateManager.getActivityState(serviceRoute.getActivities().get(0), InternalStates.FUTURE_MAXLOAD, Capacity.class); assertEquals(15, atAct1.get(0)); } @Test - public void futureMaxLoatAtAct2ShouldBe15() { + @DisplayName("Future Max Loat At Act 2 Should Be 15") + void futureMaxLoatAtAct2ShouldBe15() { stateManager.informInsertionStarts(Arrays.asList(serviceRoute), Collections.emptyList()); Capacity atAct2 = stateManager.getActivityState(serviceRoute.getActivities().get(1), InternalStates.FUTURE_MAXLOAD, Capacity.class); assertEquals(15, atAct2.get(0)); } @Test - public void pastMaxLoatAtAct1ShouldBe0() { + @DisplayName("Past Max Loat At Act 1 Should Be 0") + void pastMaxLoatAtAct1ShouldBe0() { stateManager.informInsertionStarts(Arrays.asList(serviceRoute), Collections.emptyList()); Capacity atAct1 = stateManager.getActivityState(serviceRoute.getActivities().get(0), InternalStates.PAST_MAXLOAD, Capacity.class); assertEquals(10, atAct1.get(0)); } @Test - public void pastMaxLoatAtAct2ShouldBe10() { + @DisplayName("Past Max Loat At Act 2 Should Be 10") + void pastMaxLoatAtAct2ShouldBe10() { stateManager.informInsertionStarts(Arrays.asList(serviceRoute), Collections.emptyList()); Capacity atAct2 = stateManager.getActivityState(serviceRoute.getActivities().get(1), InternalStates.PAST_MAXLOAD, Capacity.class); assertEquals(15, atAct2.get(0)); @@ -170,56 +171,64 @@ public void pastMaxLoatAtAct2ShouldBe10() { pickup 10 and deliver 5 */ @Test - public void when_pdroute_loadAtEndShouldBe10() { + @DisplayName("When _ pdroute _ load At End Should Be 10") + void when_pdroute_loadAtEndShouldBe10() { stateManager.informInsertionStarts(Arrays.asList(pickup_delivery_route), Collections.emptyList()); Capacity routeState = stateManager.getRouteState(pickup_delivery_route, InternalStates.LOAD_AT_END, Capacity.class); assertEquals(10, routeState.get(0)); } @Test - public void when_pdroute_loadAtBeginningShouldBe5() { + @DisplayName("When _ pdroute _ load At Beginning Should Be 5") + void when_pdroute_loadAtBeginningShouldBe5() { stateManager.informInsertionStarts(Arrays.asList(pickup_delivery_route), Collections.emptyList()); Capacity routeState = stateManager.getRouteState(pickup_delivery_route, InternalStates.LOAD_AT_BEGINNING, Capacity.class); assertEquals(5, routeState.get(0)); } @Test - public void when_pdroute_loadAtAct1ShouldBe15() { + @DisplayName("When _ pdroute _ load At Act 1 Should Be 15") + void when_pdroute_loadAtAct1ShouldBe15() { stateManager.informInsertionStarts(Arrays.asList(pickup_delivery_route), Collections.emptyList()); Capacity atAct1 = stateManager.getActivityState(pickup_delivery_route.getActivities().get(0), InternalStates.LOAD, Capacity.class); assertEquals(15, atAct1.get(0)); } @Test - public void when_pdroute_loadAtAct2ShouldBe10() { + @DisplayName("When _ pdroute _ load At Act 2 Should Be 10") + void when_pdroute_loadAtAct2ShouldBe10() { stateManager.informInsertionStarts(Arrays.asList(pickup_delivery_route), Collections.emptyList()); Capacity atAct2 = stateManager.getActivityState(pickup_delivery_route.getActivities().get(1), InternalStates.LOAD, Capacity.class); assertEquals(10, atAct2.get(0)); } @Test - public void when_pdroute_futureMaxLoatAtAct1ShouldBe15() { + @DisplayName("When _ pdroute _ future Max Loat At Act 1 Should Be 15") + void when_pdroute_futureMaxLoatAtAct1ShouldBe15() { stateManager.informInsertionStarts(Arrays.asList(pickup_delivery_route), Collections.emptyList()); Capacity atAct1 = stateManager.getActivityState(pickup_delivery_route.getActivities().get(0), InternalStates.FUTURE_MAXLOAD, Capacity.class); assertEquals(15, atAct1.get(0)); } @Test - public void when_pdroute_futureMaxLoatAtAct2ShouldBe10() { + @DisplayName("When _ pdroute _ future Max Loat At Act 2 Should Be 10") + void when_pdroute_futureMaxLoatAtAct2ShouldBe10() { stateManager.informInsertionStarts(Arrays.asList(pickup_delivery_route), Collections.emptyList()); Capacity atAct2 = stateManager.getActivityState(pickup_delivery_route.getActivities().get(1), InternalStates.FUTURE_MAXLOAD, Capacity.class); assertEquals(10, atAct2.get(0)); } @Test - public void when_pdroute_pastMaxLoatAtAct1ShouldBe15() { + @DisplayName("When _ pdroute _ past Max Loat At Act 1 Should Be 15") + void when_pdroute_pastMaxLoatAtAct1ShouldBe15() { stateManager.informInsertionStarts(Arrays.asList(pickup_delivery_route), Collections.emptyList()); Capacity atAct1 = stateManager.getActivityState(pickup_delivery_route.getActivities().get(0), InternalStates.PAST_MAXLOAD, Capacity.class); assertEquals(15, atAct1.get(0)); } @Test - public void when_pdroute_pastMaxLoatAtAct2ShouldBe10() { + @DisplayName("When _ pdroute _ past Max Loat At Act 2 Should Be 10") + void when_pdroute_pastMaxLoatAtAct2ShouldBe10() { stateManager.informInsertionStarts(Arrays.asList(pickup_delivery_route), Collections.emptyList()); Capacity atAct2 = stateManager.getActivityState(pickup_delivery_route.getActivities().get(1), InternalStates.PAST_MAXLOAD, Capacity.class); assertEquals(15, atAct2.get(0)); @@ -233,98 +242,112 @@ public void when_pdroute_pastMaxLoatAtAct2ShouldBe10() { */ @Test - public void when_shipmentroute_loadAtEndShouldBe0() { + @DisplayName("When _ shipmentroute _ load At End Should Be 0") + void when_shipmentroute_loadAtEndShouldBe0() { stateManager.informInsertionStarts(Arrays.asList(shipment_route), Collections.emptyList()); Capacity routeState = stateManager.getRouteState(shipment_route, InternalStates.LOAD_AT_END, Capacity.class); assertEquals(0, routeState.get(0)); } @Test - public void when_shipmentroute_loadAtBeginningShouldBe0() { + @DisplayName("When _ shipmentroute _ load At Beginning Should Be 0") + void when_shipmentroute_loadAtBeginningShouldBe0() { stateManager.informInsertionStarts(Arrays.asList(shipment_route), Collections.emptyList()); Capacity routeState = stateManager.getRouteState(shipment_route, InternalStates.LOAD_AT_BEGINNING, Capacity.class); assertEquals(0, routeState.get(0)); } @Test - public void when_shipmentroute_loadAtAct1ShouldBe10() { + @DisplayName("When _ shipmentroute _ load At Act 1 Should Be 10") + void when_shipmentroute_loadAtAct1ShouldBe10() { stateManager.informInsertionStarts(Arrays.asList(shipment_route), Collections.emptyList()); Capacity atAct1 = stateManager.getActivityState(shipment_route.getActivities().get(0), InternalStates.LOAD, Capacity.class); assertEquals(10, atAct1.get(0)); } @Test - public void when_shipmentroute_loadAtAct2ShouldBe15() { + @DisplayName("When _ shipmentroute _ load At Act 2 Should Be 15") + void when_shipmentroute_loadAtAct2ShouldBe15() { stateManager.informInsertionStarts(Arrays.asList(shipment_route), Collections.emptyList()); Capacity atAct2 = stateManager.getActivityState(shipment_route.getActivities().get(1), InternalStates.LOAD, Capacity.class); assertEquals(15, atAct2.get(0)); } @Test - public void when_shipmentroute_loadAtAct3ShouldBe10() { + @DisplayName("When _ shipmentroute _ load At Act 3 Should Be 10") + void when_shipmentroute_loadAtAct3ShouldBe10() { stateManager.informInsertionStarts(Arrays.asList(shipment_route), Collections.emptyList()); Capacity atAct = stateManager.getActivityState(shipment_route.getActivities().get(2), InternalStates.LOAD, Capacity.class); assertEquals(10, atAct.get(0)); } @Test - public void when_shipmentroute_loadAtAct4ShouldBe0() { + @DisplayName("When _ shipmentroute _ load At Act 4 Should Be 0") + void when_shipmentroute_loadAtAct4ShouldBe0() { stateManager.informInsertionStarts(Arrays.asList(shipment_route), Collections.emptyList()); Capacity atAct = stateManager.getActivityState(shipment_route.getActivities().get(3), InternalStates.LOAD, Capacity.class); assertEquals(0, atAct.get(0)); } @Test - public void when_shipmentroute_futureMaxLoatAtAct1ShouldBe15() { + @DisplayName("When _ shipmentroute _ future Max Loat At Act 1 Should Be 15") + void when_shipmentroute_futureMaxLoatAtAct1ShouldBe15() { stateManager.informInsertionStarts(Arrays.asList(shipment_route), Collections.emptyList()); Capacity atAct1 = stateManager.getActivityState(shipment_route.getActivities().get(0), InternalStates.FUTURE_MAXLOAD, Capacity.class); assertEquals(15, atAct1.get(0)); } @Test - public void when_shipmentroute_futureMaxLoatAtAct2ShouldBe15() { + @DisplayName("When _ shipmentroute _ future Max Loat At Act 2 Should Be 15") + void when_shipmentroute_futureMaxLoatAtAct2ShouldBe15() { stateManager.informInsertionStarts(Arrays.asList(shipment_route), Collections.emptyList()); Capacity atAct2 = stateManager.getActivityState(shipment_route.getActivities().get(1), InternalStates.FUTURE_MAXLOAD, Capacity.class); assertEquals(15, atAct2.get(0)); } @Test - public void when_shipmentroute_futureMaxLoatAtAct3ShouldBe10() { + @DisplayName("When _ shipmentroute _ future Max Loat At Act 3 Should Be 10") + void when_shipmentroute_futureMaxLoatAtAct3ShouldBe10() { stateManager.informInsertionStarts(Arrays.asList(shipment_route), Collections.emptyList()); Capacity atAct = stateManager.getActivityState(shipment_route.getActivities().get(2), InternalStates.FUTURE_MAXLOAD, Capacity.class); assertEquals(10, atAct.get(0)); } @Test - public void when_shipmentroute_futureMaxLoatAtAct4ShouldBe0() { + @DisplayName("When _ shipmentroute _ future Max Loat At Act 4 Should Be 0") + void when_shipmentroute_futureMaxLoatAtAct4ShouldBe0() { stateManager.informInsertionStarts(Arrays.asList(shipment_route), Collections.emptyList()); Capacity atAct = stateManager.getActivityState(shipment_route.getActivities().get(3), InternalStates.FUTURE_MAXLOAD, Capacity.class); assertEquals(0, atAct.get(0)); } @Test - public void when_shipmentroute_pastMaxLoatAtAct1ShouldBe10() { + @DisplayName("When _ shipmentroute _ past Max Loat At Act 1 Should Be 10") + void when_shipmentroute_pastMaxLoatAtAct1ShouldBe10() { stateManager.informInsertionStarts(Arrays.asList(shipment_route), Collections.emptyList()); Capacity atAct1 = stateManager.getActivityState(shipment_route.getActivities().get(0), InternalStates.PAST_MAXLOAD, Capacity.class); assertEquals(10, atAct1.get(0)); } @Test - public void when_shipmentroute_pastMaxLoatAtAct2ShouldBe10() { + @DisplayName("When _ shipmentroute _ past Max Loat At Act 2 Should Be 10") + void when_shipmentroute_pastMaxLoatAtAct2ShouldBe10() { stateManager.informInsertionStarts(Arrays.asList(shipment_route), Collections.emptyList()); Capacity atAct2 = stateManager.getActivityState(shipment_route.getActivities().get(1), InternalStates.PAST_MAXLOAD, Capacity.class); assertEquals(15, atAct2.get(0)); } @Test - public void when_shipmentroute_pastMaxLoatAtAct3ShouldBe15() { + @DisplayName("When _ shipmentroute _ past Max Loat At Act 3 Should Be 15") + void when_shipmentroute_pastMaxLoatAtAct3ShouldBe15() { stateManager.informInsertionStarts(Arrays.asList(shipment_route), Collections.emptyList()); Capacity atAct = stateManager.getActivityState(shipment_route.getActivities().get(2), InternalStates.PAST_MAXLOAD, Capacity.class); assertEquals(15, atAct.get(0)); } @Test - public void when_shipmentroute_pastMaxLoatAtAct4ShouldBe15() { + @DisplayName("When _ shipmentroute _ past Max Loat At Act 4 Should Be 15") + void when_shipmentroute_pastMaxLoatAtAct4ShouldBe15() { stateManager.informInsertionStarts(Arrays.asList(shipment_route), Collections.emptyList()); Capacity atAct = stateManager.getActivityState(shipment_route.getActivities().get(3), InternalStates.PAST_MAXLOAD, Capacity.class); assertEquals(15, atAct.get(0)); diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/state/StateManagerTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/state/StateManagerTest.java index 40c89edc5..d20fa4188 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/state/StateManagerTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/state/StateManagerTest.java @@ -27,19 +27,21 @@ import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.ArrayList; import java.util.List; -import static org.junit.Assert.*; +import static org.junit.jupiter.api.Assertions.*; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -public class StateManagerTest { +@DisplayName("State Manager Test") +class StateManagerTest { + @DisplayName("Act Fac") static class ActFac implements JobActivityFactory { @Override @@ -58,14 +60,15 @@ private VehicleRoute getRoute(Vehicle vehicle) { private VehicleRoutingProblem vrpMock; - @Before - public void doBefore(){ + @BeforeEach + void doBefore() { vrpMock = mock(VehicleRoutingProblem.class); when(vrpMock.getFleetSize()).thenReturn(VehicleRoutingProblem.FleetSize.INFINITE); } @Test - public void whenInternalRouteStateIsSet_itMustBeSetCorrectly() { + @DisplayName("When Internal Route State Is Set _ it Must Be Set Correctly") + void whenInternalRouteStateIsSet_itMustBeSetCorrectly() { VehicleRoute route = getRoute(mock(Vehicle.class)); StateManager stateManager = new StateManager(vrpMock); StateId id = InternalStates.COSTS; @@ -74,7 +77,8 @@ public void whenInternalRouteStateIsSet_itMustBeSetCorrectly() { } @Test - public void whenInternalRouteStateIsNotSet_itShouldReturnNull() { + @DisplayName("When Internal Route State Is Not Set _ it Should Return Null") + void whenInternalRouteStateIsNotSet_itShouldReturnNull() { VehicleRoute route = getRoute(mock(Vehicle.class)); StateManager stateManager = new StateManager(vrpMock); StateId id = InternalStates.COSTS; @@ -83,11 +87,11 @@ public void whenInternalRouteStateIsNotSet_itShouldReturnNull() { } @Test - public void whenVehicleDependentInternalRouteStateIsSet_itMustBeSetCorrectly() { + @DisplayName("When Vehicle Dependent Internal Route State Is Set _ it Must Be Set Correctly") + void whenVehicleDependentInternalRouteStateIsSet_itMustBeSetCorrectly() { VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("loc")).build(); - //noinspection UnusedDeclaration + // noinspection UnusedDeclaration VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle).build(); - VehicleRoute route = getRoute(vehicle); StateManager stateManager = new StateManager(vrpMock); StateId id = InternalStates.COSTS; @@ -96,11 +100,11 @@ public void whenVehicleDependentInternalRouteStateIsSet_itMustBeSetCorrectly() { } @Test - public void whenVehicleDependentInternalRouteStateIsNotSet_itMustBeSetCorrectly() { + @DisplayName("When Vehicle Dependent Internal Route State Is Not Set _ it Must Be Set Correctly") + void whenVehicleDependentInternalRouteStateIsNotSet_itMustBeSetCorrectly() { VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("loc")).build(); - //noinspection UnusedDeclaration + // noinspection UnusedDeclaration VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle).build(); - VehicleRoute route = getRoute(vehicle); StateManager stateManager = new StateManager(vrpMock); StateId id = InternalStates.COSTS; @@ -109,7 +113,8 @@ public void whenVehicleDependentInternalRouteStateIsNotSet_itMustBeSetCorrectly( } @Test - public void whenRouteStateIsSetWithGenericMethodAndBoolean_itMustBeSetCorrectly() { + @DisplayName("When Route State Is Set With Generic Method And Boolean _ it Must Be Set Correctly") + void whenRouteStateIsSetWithGenericMethodAndBoolean_itMustBeSetCorrectly() { VehicleRoute route = getRoute(mock(Vehicle.class)); StateManager stateManager = new StateManager(vrpMock); StateId id = stateManager.createStateId("myState"); @@ -118,7 +123,8 @@ public void whenRouteStateIsSetWithGenericMethodAndBoolean_itMustBeSetCorrectly( } @Test - public void whenRouteStateIsSetWithGenericMethodAndInteger_itMustBeSetCorrectly() { + @DisplayName("When Route State Is Set With Generic Method And Integer _ it Must Be Set Correctly") + void whenRouteStateIsSetWithGenericMethodAndInteger_itMustBeSetCorrectly() { VehicleRoute route = getRoute(mock(Vehicle.class)); StateManager stateManager = new StateManager(vrpMock); StateId id = stateManager.createStateId("myState"); @@ -129,7 +135,8 @@ public void whenRouteStateIsSetWithGenericMethodAndInteger_itMustBeSetCorrectly( } @Test - public void whenRouteStateIsSetWithGenericMethodAndCapacity_itMustBeSetCorrectly() { + @DisplayName("When Route State Is Set With Generic Method And Capacity _ it Must Be Set Correctly") + void whenRouteStateIsSetWithGenericMethodAndCapacity_itMustBeSetCorrectly() { VehicleRoute route = getRoute(mock(Vehicle.class)); StateManager stateManager = new StateManager(vrpMock); StateId id = stateManager.createStateId("myState"); @@ -139,9 +146,9 @@ public void whenRouteStateIsSetWithGenericMethodAndCapacity_itMustBeSetCorrectly assertEquals(500, getCap.get(0)); } - @Test - public void whenActivityStateIsSetWithGenericMethodAndBoolean_itMustBeSetCorrectly() { + @DisplayName("When Activity State Is Set With Generic Method And Boolean _ it Must Be Set Correctly") + void whenActivityStateIsSetWithGenericMethodAndBoolean_itMustBeSetCorrectly() { TourActivity activity = mock(TourActivity.class); when(activity.getIndex()).thenReturn(1); StateManager stateManager = new StateManager(vrpMock); @@ -151,7 +158,8 @@ public void whenActivityStateIsSetWithGenericMethodAndBoolean_itMustBeSetCorrect } @Test - public void whenActivityStateIsSetWithGenericMethodAndInteger_itMustBeSetCorrectly() { + @DisplayName("When Activity State Is Set With Generic Method And Integer _ it Must Be Set Correctly") + void whenActivityStateIsSetWithGenericMethodAndInteger_itMustBeSetCorrectly() { TourActivity activity = mock(TourActivity.class); when(activity.getIndex()).thenReturn(1); StateManager stateManager = new StateManager(vrpMock); @@ -163,7 +171,8 @@ public void whenActivityStateIsSetWithGenericMethodAndInteger_itMustBeSetCorrect } @Test - public void whenActivityStateIsSetWithGenericMethodAndCapacity_itMustBeSetCorrectly() { + @DisplayName("When Activity State Is Set With Generic Method And Capacity _ it Must Be Set Correctly") + void whenActivityStateIsSetWithGenericMethodAndCapacity_itMustBeSetCorrectly() { TourActivity activity = mock(TourActivity.class); when(activity.getIndex()).thenReturn(1); StateManager stateManager = new StateManager(vrpMock); @@ -175,7 +184,8 @@ public void whenActivityStateIsSetWithGenericMethodAndCapacity_itMustBeSetCorrec } @Test - public void whenProblemStateIsSet_itMustBeSetCorrectly() { + @DisplayName("When Problem State Is Set _ it Must Be Set Correctly") + void whenProblemStateIsSet_itMustBeSetCorrectly() { StateManager stateManager = new StateManager(vrpMock); StateId id = stateManager.createStateId("problemState"); stateManager.putProblemState(id, Boolean.class, true); @@ -183,18 +193,22 @@ public void whenProblemStateIsSet_itMustBeSetCorrectly() { assertTrue(problemState); } - @Test(expected = NullPointerException.class) - public void whenProblemStateIsSetAndStateManagerClearedAfterwards_itThrowsException() { - StateManager stateManager = new StateManager(vrpMock); - StateId id = stateManager.createStateId("problemState"); - stateManager.putProblemState(id, Boolean.class, true); - stateManager.clear(); - @SuppressWarnings("unused") - boolean problemState = stateManager.getProblemState(id, Boolean.class); + @Test + @DisplayName("When Problem State Is Set And State Manager Cleared Afterwards _ it Throws Exception") + void whenProblemStateIsSetAndStateManagerClearedAfterwards_itThrowsException() { + assertThrows(NullPointerException.class, () -> { + StateManager stateManager = new StateManager(vrpMock); + StateId id = stateManager.createStateId("problemState"); + stateManager.putProblemState(id, Boolean.class, true); + stateManager.clear(); + @SuppressWarnings("unused") + boolean problemState = stateManager.getProblemState(id, Boolean.class); + }); } @Test - public void whenProblemStateIsSetAndStateManagerClearedAfterwards_itReturnsNull() { + @DisplayName("When Problem State Is Set And State Manager Cleared Afterwards _ it Returns Null") + void whenProblemStateIsSetAndStateManagerClearedAfterwards_itReturnsNull() { StateManager stateManager = new StateManager(vrpMock); StateId id = stateManager.createStateId("problemState"); stateManager.putProblemState(id, Boolean.class, true); @@ -204,34 +218,38 @@ public void whenProblemStateIsSetAndStateManagerClearedAfterwards_itReturnsNull( } @Test - public void whenCreatingNewState_itShouldHaveAnIndex() { + @DisplayName("When Creating New State _ it Should Have An Index") + void whenCreatingNewState_itShouldHaveAnIndex() { StateManager stateManager = new StateManager(vrpMock); StateId stateId = stateManager.createStateId("foo-state"); - Assert.assertEquals(21, stateId.getIndex()); + assertEquals(21, stateId.getIndex()); } @Test - public void whenCreatingNewStates_theyShouldHaveAnIndex() { + @DisplayName("When Creating New States _ they Should Have An Index") + void whenCreatingNewStates_theyShouldHaveAnIndex() { StateManager stateManager = new StateManager(vrpMock); StateId fooState = stateManager.createStateId("foo-state"); StateId foofooState = stateManager.createStateId("foo-foo-state"); - Assert.assertEquals(21, fooState.getIndex()); - Assert.assertEquals(22, foofooState.getIndex()); + assertEquals(21, fooState.getIndex()); + assertEquals(22, foofooState.getIndex()); } @Test - public void whenCreatingTwoStatesWithTheSameName_theyShouldHaveTheSameIndex() { + @DisplayName("When Creating Two States With The Same Name _ they Should Have The Same Index") + void whenCreatingTwoStatesWithTheSameName_theyShouldHaveTheSameIndex() { StateManager stateManager = new StateManager(vrpMock); StateId fooState = stateManager.createStateId("foo-state"); StateId foofooState = stateManager.createStateId("foo-state"); - Assert.assertEquals(21, fooState.getIndex()); - Assert.assertEquals(21, foofooState.getIndex()); + assertEquals(21, fooState.getIndex()); + assertEquals(21, foofooState.getIndex()); } @Test - public void whenCreatingAVehicleDependentRouteState_itShouldBeMemorized() { + @DisplayName("When Creating A Vehicle Dependent Route State _ it Should Be Memorized") + void whenCreatingAVehicleDependentRouteState_itShouldBeMemorized() { VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("loc")).build(); - //noinspection UnusedDeclaration + // noinspection UnusedDeclaration VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle).build(); VehicleRoute route = getRoute(vehicle); StateManager stateManager = new StateManager(vrpMock); @@ -243,9 +261,10 @@ public void whenCreatingAVehicleDependentRouteState_itShouldBeMemorized() { } @Test - public void whenCreatingAVehicleDependentActivityState_itShouldBeMemorized() { + @DisplayName("When Creating A Vehicle Dependent Activity State _ it Should Be Memorized") + void whenCreatingAVehicleDependentActivityState_itShouldBeMemorized() { VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("loc")).build(); - //noinspection UnusedDeclaration + // noinspection UnusedDeclaration VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle).build(); StateManager stateManager = new StateManager(vrpMock); StateId id = stateManager.createStateId("myState"); @@ -258,9 +277,10 @@ public void whenCreatingAVehicleDependentActivityState_itShouldBeMemorized() { } @Test - public void whenMemorizingVehicleInfo_itShouldBeMemorized() { + @DisplayName("When Memorizing Vehicle Info _ it Should Be Memorized") + void whenMemorizingVehicleInfo_itShouldBeMemorized() { VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("loc")).build(); - //noinspection UnusedDeclaration + // noinspection UnusedDeclaration VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle).build(); VehicleRoute route = getRoute(vehicle); StateManager stateManager = new StateManager(vrpMock); @@ -271,16 +291,15 @@ public void whenMemorizingVehicleInfo_itShouldBeMemorized() { } @Test - public void whenMemorizingTwoVehicleInfoForRoute_itShouldBeMemorized() { + @DisplayName("When Memorizing Two Vehicle Info For Route _ it Should Be Memorized") + void whenMemorizingTwoVehicleInfoForRoute_itShouldBeMemorized() { VehicleType type = VehicleTypeImpl.Builder.newInstance("t").setCostPerDistance(4.).build(); VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("loc")).build(); VehicleImpl vehicle2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(Location.newInstance("loc")).setType(type).build(); VehicleRoute route = getRoute(vehicle); - - //getting the indices created in vrpBuilder + // getting the indices created in vrpBuilder VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); VehicleRoutingProblem vrp = vrpBuilder.addVehicle(vehicle).addVehicle(vehicle2).build(); - StateManager stateManager = new StateManager(vrp); StateId id = stateManager.createStateId("vehicleParam"); double distanceParam = vehicle.getType().getVehicleCostParams().perDistanceUnit; @@ -291,15 +310,14 @@ public void whenMemorizingTwoVehicleInfoForRoute_itShouldBeMemorized() { } @Test - public void whenMemorizingTwoVehicleInfoForAct_itShouldBeMemorized() { + @DisplayName("When Memorizing Two Vehicle Info For Act _ it Should Be Memorized") + void whenMemorizingTwoVehicleInfoForAct_itShouldBeMemorized() { VehicleType type = VehicleTypeImpl.Builder.newInstance("t").setCostPerDistance(4.).build(); VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("loc")).build(); VehicleImpl vehicle2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(Location.newInstance("loc")).setType(type).build(); - - //getting the indices created in vrpBuilder + // getting the indices created in vrpBuilder VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); VehicleRoutingProblem vrp = vrpBuilder.addVehicle(vehicle).addVehicle(vehicle2).build(); - TourActivity act = mock(TourActivity.class); when(act.getIndex()).thenReturn(1); StateManager stateManager = new StateManager(vrp); @@ -307,21 +325,19 @@ public void whenMemorizingTwoVehicleInfoForAct_itShouldBeMemorized() { double distanceParam = vehicle.getType().getVehicleCostParams().perDistanceUnit; stateManager.putActivityState(act, vehicle, id, distanceParam); stateManager.putActivityState(act, vehicle2, id, vehicle2.getType().getVehicleCostParams().perDistanceUnit); - assertEquals(1., stateManager.getActivityState(act, vehicle, id, Double.class), 0.01); assertEquals(4., stateManager.getActivityState(act, vehicle2, id, Double.class), 0.01); } @Test - public void whenClearing_arrElementsShouldBeNull() { + @DisplayName("When Clearing _ arr Elements Should Be Null") + void whenClearing_arrElementsShouldBeNull() { VehicleType type = VehicleTypeImpl.Builder.newInstance("t").setCostPerDistance(4.).build(); VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("loc")).build(); VehicleImpl vehicle2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(Location.newInstance("loc")).setType(type).build(); - - //getting the indices created in vrpBuilder + // getting the indices created in vrpBuilder VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); VehicleRoutingProblem vrp = vrpBuilder.addVehicle(vehicle).addVehicle(vehicle2).build(); - TourActivity act = mock(TourActivity.class); when(act.getIndex()).thenReturn(1); StateManager stateManager = new StateManager(vrp); @@ -329,31 +345,27 @@ public void whenClearing_arrElementsShouldBeNull() { double distanceParam = vehicle.getType().getVehicleCostParams().perDistanceUnit; stateManager.putActivityState(act, vehicle, id, distanceParam); stateManager.putActivityState(act, vehicle2, id, vehicle2.getType().getVehicleCostParams().perDistanceUnit); - stateManager.clear(); - assertNull(stateManager.getActivityState(act, vehicle, id, Double.class)); assertNull(stateManager.getActivityState(act, vehicle2, id, Double.class)); } @Test - public void arrayIniShouldWork(){ + @DisplayName("Array Ini Should Work") + void arrayIniShouldWork() { VehicleType type = VehicleTypeImpl.Builder.newInstance("t").setCostPerDistance(4.).build(); VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("loc")).build(); VehicleImpl vehicle2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(Location.newInstance("loc")).setType(type).build(); - - //getting the indices created in vrpBuilder + // getting the indices created in vrpBuilder VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); VehicleRoutingProblem vrp = vrpBuilder.setFleetSize(VehicleRoutingProblem.FleetSize.FINITE).addVehicle(vehicle).addVehicle(vehicle2).build(); - VehicleRoute route = mock(VehicleRoute.class); when(route.getVehicle()).thenReturn(vehicle2); - StateManager stateManager = new StateManager(vrp); StateId myState = null; - for(int i=0;i<10;i++){ - myState = stateManager.createStateId("myState"+i); + for (int i = 0; i < 10; i++) { + myState = stateManager.createStateId("myState" + i); } - stateManager.putTypedInternalRouteState(route,myState,1.); + stateManager.putTypedInternalRouteState(route, myState, 1.); } } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/state/UpdateMaxTimeInVehicleTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/state/UpdateMaxTimeInVehicleTest.java index 75aaf1453..bb70a84a7 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/state/UpdateMaxTimeInVehicleTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/state/UpdateMaxTimeInVehicleTest.java @@ -15,7 +15,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.graphhopper.jsprit.core.algorithm.state; import com.graphhopper.jsprit.core.problem.Location; @@ -30,9 +29,10 @@ import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.Arrays; import java.util.Collection; @@ -40,7 +40,8 @@ /** * Created by schroeder on 15/09/16. */ -public class UpdateMaxTimeInVehicleTest { +@DisplayName("Update Max Time In Vehicle Test") +class UpdateMaxTimeInVehicleTest { private VehicleRoute route; @@ -62,142 +63,113 @@ public class UpdateMaxTimeInVehicleTest { private StateId openJobsId; - @Before - public void doBefore() { + @BeforeEach + void doBefore() { VehicleType type = VehicleTypeImpl.Builder.newInstance("t").build(); - - v = VehicleImpl.Builder.newInstance("v0").setStartLocation(Location.newInstance(0, 0)) - .setType(type).build(); - - vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(0,0)) - .setEndLocation(Location.newInstance(0,50)).setType(type).build(); - - vehicle2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(Location.newInstance(0,10)) - .setEndLocation(Location.newInstance(0,40)).setType(type).build(); - + v = VehicleImpl.Builder.newInstance("v0").setStartLocation(Location.newInstance(0, 0)).setType(type).build(); + vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(0, 0)).setEndLocation(Location.newInstance(0, 50)).setType(type).build(); + vehicle2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(Location.newInstance(0, 10)).setEndLocation(Location.newInstance(0, 40)).setType(type).build(); Pickup service = Pickup.Builder.newInstance("s").setLocation(Location.newInstance(0, 10)).build(); Pickup service2 = Pickup.Builder.newInstance("s2").setLocation(Location.newInstance(0, 20)).build(); - Pickup service3 = Pickup.Builder.newInstance("s3").setLocation(Location.newInstance(0, 30)).build(); Pickup service4 = Pickup.Builder.newInstance("s4").setLocation(Location.newInstance(0, 40)).build(); - - Delivery d1 = Delivery.Builder.newInstance("d1").setLocation(Location.newInstance(10,0)).build(); - - Shipment shipment = Shipment.Builder.newInstance("shipment").setPickupLocation(Location.newInstance(20,0)) - .setDeliveryLocation(Location.newInstance(40,0)) - .setMaxTimeInVehicle(20d) - .build(); - - Delivery d2 = Delivery.Builder.newInstance("d2").setLocation(Location.newInstance(30,0)).setServiceTime(10).build(); - - - vrp = VehicleRoutingProblem.Builder.newInstance().addVehicle(v).addVehicle(vehicle).addVehicle(vehicle2).addJob(service) - .addJob(service2).addJob(service3).addJob(service4) - .addJob(d1).addJob(shipment).addJob(d2) - .build(); - - route = VehicleRoute.Builder.newInstance(vehicle).setJobActivityFactory(vrp.getJobActivityFactory()) - .addService(service).addService(service2).addService(service3).addService(service4).build(); - - route2 = VehicleRoute.Builder.newInstance(v).setJobActivityFactory(vrp.getJobActivityFactory()) - .addDelivery(d1).addPickup(shipment).addDelivery(shipment).build(); - + Delivery d1 = Delivery.Builder.newInstance("d1").setLocation(Location.newInstance(10, 0)).build(); + Shipment shipment = Shipment.Builder.newInstance("shipment").setPickupLocation(Location.newInstance(20, 0)).setDeliveryLocation(Location.newInstance(40, 0)).setMaxTimeInVehicle(20d).build(); + Delivery d2 = Delivery.Builder.newInstance("d2").setLocation(Location.newInstance(30, 0)).setServiceTime(10).build(); + vrp = VehicleRoutingProblem.Builder.newInstance().addVehicle(v).addVehicle(vehicle).addVehicle(vehicle2).addJob(service).addJob(service2).addJob(service3).addJob(service4).addJob(d1).addJob(shipment).addJob(d2).build(); + route = VehicleRoute.Builder.newInstance(vehicle).setJobActivityFactory(vrp.getJobActivityFactory()).addService(service).addService(service2).addService(service3).addService(service4).build(); + route2 = VehicleRoute.Builder.newInstance(v).setJobActivityFactory(vrp.getJobActivityFactory()).addDelivery(d1).addPickup(shipment).addDelivery(shipment).build(); stateManager = new StateManager(vrp); - stateManager.addStateUpdater(new UpdateActivityTimes(vrp.getTransportCosts(),vrp.getActivityCosts())); + stateManager.addStateUpdater(new UpdateActivityTimes(vrp.getTransportCosts(), vrp.getActivityCosts())); stateManager.informInsertionStarts(Arrays.asList(route), null); - minSlackId = stateManager.createStateId("min-slack-id"); openJobsId = stateManager.createStateId("open-jobs-id"); - -// Map maxTimes = new HashMap<>(); -// maxTimes.put("s",40d); -// maxTimes.put("shipment",20d); + // Map maxTimes = new HashMap<>(); + // maxTimes.put("s",40d); + // maxTimes.put("shipment",20d); maxTimeInVehicleConstraint = new UpdateMaxTimeInVehicle(stateManager, minSlackId, vrp.getTransportCosts(), vrp.getActivityCosts(), openJobsId); maxTimeInVehicleConstraint.setVehiclesToUpdate(new UpdateVehicleDependentPracticalTimeWindows.VehiclesToUpdate() { + @Override public Collection get(VehicleRoute route) { - return Arrays.asList((Vehicle)vehicle,(Vehicle)vehicle2,v); + return Arrays.asList((Vehicle) vehicle, (Vehicle) vehicle2, v); } }); stateManager.addStateUpdater(maxTimeInVehicleConstraint); } -// @Test -// public void testVehicle(){ -// stateManager.informInsertionStarts(Arrays.asList(route), null); -// for(TourActivity act : route.getActivities()){ -// String jobId = ((TourActivity.JobActivity)act).getJob().getId(); -// if(jobId.equals("s4")){ -// Double slackTime = stateManager.getActivityState(act,route.getVehicle(), minSlackId,Double.class); -// Assert.assertEquals(40, slackTime, 0.001); -// } -// if(jobId.equals("s3")){ -// Double slackTime = stateManager.getActivityState(act,route.getVehicle(), minSlackId,Double.class); -// Assert.assertEquals(30, slackTime, 0.001); -// } -// if(jobId.equals("s2")){ -// Double slackTime = stateManager.getActivityState(act,route.getVehicle(), minSlackId,Double.class); -// Assert.assertEquals(20, slackTime, 0.001); -// } -// if(jobId.equals("s")){ -// Double slackTime = stateManager.getActivityState(act,route.getVehicle(), minSlackId,Double.class); -// Assert.assertEquals(Double.MAX_VALUE, slackTime, 0.001); -// } -// } -// Double slackTime = stateManager.getRouteState(route,route.getVehicle(), minSlackId,Double.class); -// Assert.assertNotNull(slackTime); -// Assert.assertEquals(50,slackTime,0.001); -// } -// -// @Test -// public void testVehicle2(){ -// stateManager.informInsertionStarts(Arrays.asList(route), null); -// for(TourActivity act : route.getActivities()){ -// String jobId = ((TourActivity.JobActivity)act).getJob().getId(); -// if(jobId.equals("s4")){ -// Double slackTime = stateManager.getActivityState(act,vehicle2, minSlackId,Double.class); -// Assert.assertEquals(40, slackTime, 0.001); -// } -// if(jobId.equals("s3")){ -// Double slackTime = stateManager.getActivityState(act,vehicle2, minSlackId,Double.class); -// Assert.assertEquals(30, slackTime, 0.001); -// } -// if(jobId.equals("s2")){ -// Double slackTime = stateManager.getActivityState(act,vehicle2, minSlackId,Double.class); -// Assert.assertEquals(20, slackTime, 0.001); -// } -// if(jobId.equals("s")){ -// Double slackTime = stateManager.getActivityState(act,vehicle2, minSlackId,Double.class); -// Assert.assertEquals(Double.MAX_VALUE, slackTime, 0.001); -// } -// } -// Double slackTime = stateManager.getRouteState(route,vehicle2, minSlackId,Double.class); -// Assert.assertNotNull(slackTime); -// Assert.assertEquals(40,slackTime,0.001); -// } - + // @Test + // public void testVehicle(){ + // stateManager.informInsertionStarts(Arrays.asList(route), null); + // for(TourActivity act : route.getActivities()){ + // String jobId = ((TourActivity.JobActivity)act).getJob().getId(); + // if(jobId.equals("s4")){ + // Double slackTime = stateManager.getActivityState(act,route.getVehicle(), minSlackId,Double.class); + // Assert.assertEquals(40, slackTime, 0.001); + // } + // if(jobId.equals("s3")){ + // Double slackTime = stateManager.getActivityState(act,route.getVehicle(), minSlackId,Double.class); + // Assert.assertEquals(30, slackTime, 0.001); + // } + // if(jobId.equals("s2")){ + // Double slackTime = stateManager.getActivityState(act,route.getVehicle(), minSlackId,Double.class); + // Assert.assertEquals(20, slackTime, 0.001); + // } + // if(jobId.equals("s")){ + // Double slackTime = stateManager.getActivityState(act,route.getVehicle(), minSlackId,Double.class); + // Assert.assertEquals(Double.MAX_VALUE, slackTime, 0.001); + // } + // } + // Double slackTime = stateManager.getRouteState(route,route.getVehicle(), minSlackId,Double.class); + // Assert.assertNotNull(slackTime); + // Assert.assertEquals(50,slackTime,0.001); + // } + // + // @Test + // public void testVehicle2(){ + // stateManager.informInsertionStarts(Arrays.asList(route), null); + // for(TourActivity act : route.getActivities()){ + // String jobId = ((TourActivity.JobActivity)act).getJob().getId(); + // if(jobId.equals("s4")){ + // Double slackTime = stateManager.getActivityState(act,vehicle2, minSlackId,Double.class); + // Assert.assertEquals(40, slackTime, 0.001); + // } + // if(jobId.equals("s3")){ + // Double slackTime = stateManager.getActivityState(act,vehicle2, minSlackId,Double.class); + // Assert.assertEquals(30, slackTime, 0.001); + // } + // if(jobId.equals("s2")){ + // Double slackTime = stateManager.getActivityState(act,vehicle2, minSlackId,Double.class); + // Assert.assertEquals(20, slackTime, 0.001); + // } + // if(jobId.equals("s")){ + // Double slackTime = stateManager.getActivityState(act,vehicle2, minSlackId,Double.class); + // Assert.assertEquals(Double.MAX_VALUE, slackTime, 0.001); + // } + // } + // Double slackTime = stateManager.getRouteState(route,vehicle2, minSlackId,Double.class); + // Assert.assertNotNull(slackTime); + // Assert.assertEquals(40,slackTime,0.001); + // } @Test - public void testWithShipment(){ + @DisplayName("Test With Shipment") + void testWithShipment() { stateManager.informInsertionStarts(Arrays.asList(route2), null); - for(TourActivity act : route2.getActivities()){ - String jobId = ((TourActivity.JobActivity)act).getJob().getId(); - if(jobId.equals("d1")){ + for (TourActivity act : route2.getActivities()) { + String jobId = ((TourActivity.JobActivity) act).getJob().getId(); + if (jobId.equals("d1")) { Double slackTime = stateManager.getActivityState(act, v, minSlackId, Double.class); - Assert.assertEquals(Double.MAX_VALUE, slackTime, 0.001); + Assertions.assertEquals(Double.MAX_VALUE, slackTime, 0.001); } - if(jobId.equals("shipment")){ - if(act instanceof PickupActivity){ + if (jobId.equals("shipment")) { + if (act instanceof PickupActivity) { Double slackTime = stateManager.getActivityState(act, v, minSlackId, Double.class); - Assert.assertEquals(Double.MAX_VALUE, slackTime, 0.001); - } - else{ + Assertions.assertEquals(Double.MAX_VALUE, slackTime, 0.001); + } else { Double slackTime = stateManager.getActivityState(act, v, minSlackId, Double.class); - Assert.assertEquals(0, slackTime, 0.001); + Assertions.assertEquals(0, slackTime, 0.001); } - } } } - - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/state/UpdatePracticalTimeWindowTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/state/UpdatePracticalTimeWindowTest.java index 5878e12c6..d02a0181e 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/state/UpdatePracticalTimeWindowTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/state/UpdatePracticalTimeWindowTest.java @@ -35,16 +35,18 @@ import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; import com.graphhopper.jsprit.core.util.CostFactory; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.List; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -public class UpdatePracticalTimeWindowTest { +@DisplayName("Update Practical Time Window Test") +class UpdatePracticalTimeWindowTest { private VehicleRoutingTransportCosts routingCosts; @@ -56,56 +58,49 @@ public class UpdatePracticalTimeWindowTest { private VehicleRoute route; - @Before - public void doBefore() { - + @BeforeEach + void doBefore() { routingCosts = CostFactory.createManhattanCosts(); activityCosts = new WaitingTimeCosts(); - VehicleRoutingProblem vrpMock = mock(VehicleRoutingProblem.class); when(vrpMock.getFleetSize()).thenReturn(VehicleRoutingProblem.FleetSize.FINITE); stateManager = new StateManager(vrpMock); - reverseActivityVisitor = new ReverseRouteActivityVisitor(); reverseActivityVisitor.addActivityVisitor(new UpdatePracticalTimeWindows(stateManager, routingCosts, activityCosts)); - Pickup pickup = (Pickup) Pickup.Builder.newInstance("pick").setLocation(Location.newInstance("0,20")).setTimeWindow(TimeWindow.newInstance(0, 30)).build(); Delivery delivery = (Delivery) Delivery.Builder.newInstance("del").setLocation(Location.newInstance("20,20")).setTimeWindow(TimeWindow.newInstance(10, 40)).build(); Pickup pickup2 = (Pickup) Pickup.Builder.newInstance("pick2").setLocation(Location.newInstance("20,0")).setTimeWindow(TimeWindow.newInstance(20, 50)).build(); - Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("0,0")).setType(mock(VehicleType.class)).build(); - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); final VehicleRoutingProblem vrp = vrpBuilder.addJob(pickup).addJob(pickup2).addJob(delivery).build(); - route = VehicleRoute.Builder.newInstance(vehicle, mock(Driver.class)).setJobActivityFactory(new JobActivityFactory() { + @Override public List createActivities(Job job) { return vrp.copyAndGetActivities(job); } - }) - .addService(pickup).addService(delivery).addService(pickup2).build(); - + }).addService(pickup).addService(delivery).addService(pickup2).build(); reverseActivityVisitor.visit(route); - } @Test - public void whenVehicleRouteHasPickupAndDeliveryAndPickup_latestStartTimeOfAct3MustBeCorrect() { + @DisplayName("When Vehicle Route Has Pickup And Delivery And Pickup _ latest Start Time Of Act 3 Must Be Correct") + void whenVehicleRouteHasPickupAndDeliveryAndPickup_latestStartTimeOfAct3MustBeCorrect() { assertEquals(50., route.getActivities().get(2).getTheoreticalLatestOperationStartTime(), 0.01); assertEquals(50., stateManager.getActivityState(route.getActivities().get(2), InternalStates.LATEST_OPERATION_START_TIME, Double.class), 0.01); } @Test - public void whenVehicleRouteHasPickupAndDeliveryAndPickup_latestStartTimeOfAct2MustBeCorrect() { + @DisplayName("When Vehicle Route Has Pickup And Delivery And Pickup _ latest Start Time Of Act 2 Must Be Correct") + void whenVehicleRouteHasPickupAndDeliveryAndPickup_latestStartTimeOfAct2MustBeCorrect() { assertEquals(40., route.getActivities().get(1).getTheoreticalLatestOperationStartTime(), 0.01); assertEquals(30., stateManager.getActivityState(route.getActivities().get(1), InternalStates.LATEST_OPERATION_START_TIME, Double.class), 0.01); } @Test - public void whenVehicleRouteHasPickupAndDeliveryAndPickup_latestStartTimeOfAct1MustBeCorrect() { + @DisplayName("When Vehicle Route Has Pickup And Delivery And Pickup _ latest Start Time Of Act 1 Must Be Correct") + void whenVehicleRouteHasPickupAndDeliveryAndPickup_latestStartTimeOfAct1MustBeCorrect() { assertEquals(30., route.getActivities().get(0).getTheoreticalLatestOperationStartTime(), 0.01); assertEquals(10., stateManager.getActivityState(route.getActivities().get(0), InternalStates.LATEST_OPERATION_START_TIME, Double.class), 0.01); } - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/state/UpdateRequiredSkillsTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/state/UpdateRequiredSkillsTest.java index bfa8bf272..d1e6bd014 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/state/UpdateRequiredSkillsTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/state/UpdateRequiredSkillsTest.java @@ -15,7 +15,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.graphhopper.jsprit.core.algorithm.state; import com.graphhopper.jsprit.core.problem.Location; @@ -26,51 +25,48 @@ import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; -import junit.framework.Assert; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.Arrays; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.*; /** * Tests skill updater */ -public class UpdateRequiredSkillsTest { +@DisplayName("Update Required Skills Test") +class UpdateRequiredSkillsTest { private VehicleRoute route; private StateManager stateManager; - @Before - public void doBefore() { + @BeforeEach + void doBefore() { VehicleType type = VehicleTypeImpl.Builder.newInstance("t").build(); VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("start")).setType(type).build(); Service service = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")).addRequiredSkill("skill1").build(); Service service2 = Service.Builder.newInstance("s2").setLocation(Location.newInstance("loc")).addRequiredSkill("skill1").addRequiredSkill("skill2").addRequiredSkill("skill3").build(); Service service3 = Service.Builder.newInstance("s3").setLocation(Location.newInstance("loc")).addRequiredSkill("skill4").addRequiredSkill("skill5").build(); - VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle).addJob(service) - .addJob(service2).addJob(service3).build(); + VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle).addJob(service).addJob(service2).addJob(service3).build(); route = VehicleRoute.Builder.newInstance(vehicle).setJobActivityFactory(vrp.getJobActivityFactory()).addService(service).addService(service2).addService(service3).build(); - stateManager = new StateManager(vrp); stateManager.updateSkillStates(); stateManager.informInsertionStarts(Arrays.asList(route), null); } @Test - public void whenUpdatingRoute_skillsAtRouteLevelShouldContainAllSkills() { + @DisplayName("When Updating Route _ skills At Route Level Should Contain All Skills") + void whenUpdatingRoute_skillsAtRouteLevelShouldContainAllSkills() { Skills skills = stateManager.getRouteState(route, InternalStates.SKILLS, Skills.class); assertNotNull(skills); - Assert.assertEquals(5, skills.values().size()); + assertEquals(5, skills.values().size()); assertTrue(skills.containsSkill("skill1")); assertTrue(skills.containsSkill("skill2")); assertTrue(skills.containsSkill("skill3")); assertTrue(skills.containsSkill("skill4")); assertTrue(skills.containsSkill("skill5")); } - - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/state/UpdateVariableCostsTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/state/UpdateVariableCostsTest.java index 977d0d773..302759d56 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/state/UpdateVariableCostsTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/state/UpdateVariableCostsTest.java @@ -17,6 +17,8 @@ */ package com.graphhopper.jsprit.core.algorithm.state; -public class UpdateVariableCostsTest { +import org.junit.jupiter.api.DisplayName; +@DisplayName("Update Variable Costs Test") +class UpdateVariableCostsTest { } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/state/UpdateVehicleDependentTimeWindowTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/state/UpdateVehicleDependentTimeWindowTest.java index a07d61e57..d05ba951b 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/state/UpdateVehicleDependentTimeWindowTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/state/UpdateVehicleDependentTimeWindowTest.java @@ -15,7 +15,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.graphhopper.jsprit.core.algorithm.state; import com.graphhopper.jsprit.core.problem.AbstractActivity; @@ -35,18 +34,19 @@ import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; import com.graphhopper.jsprit.core.util.Coordinate; import com.graphhopper.jsprit.core.util.CostFactory; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.*; -import static org.junit.Assert.*; +import static org.junit.jupiter.api.Assertions.*; /** * unit tests to test vehicle dependent time window updater */ -public class UpdateVehicleDependentTimeWindowTest { +@DisplayName("Update Vehicle Dependent Time Window Test") +class UpdateVehicleDependentTimeWindowTest { private StateManager stateManager; @@ -68,47 +68,34 @@ public class UpdateVehicleDependentTimeWindowTest { private VehicleRoutingProblem vrp; - @Before - public void doBefore() { + @BeforeEach + void doBefore() { VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - routingCosts = CostFactory.createEuclideanCosts(); activityCosts = new WaitingTimeCosts(); vrpBuilder.setRoutingCost(routingCosts); - vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("0,0")).setEarliestStart(0.).setLatestArrival(100.).build(); - vehicle2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(Location.newInstance("0,0")).setEarliestStart(0.).setLatestArrival(60.).build(); - vehicle3 = VehicleImpl.Builder.newInstance("v3").setStartLocation(Location.newInstance("40,0")).setEarliestStart(0.).setLatestArrival(100.).build(); - equivalentOf3 = VehicleImpl.Builder.newInstance("v4").setStartLocation(Location.newInstance("40,0")).setEarliestStart(0.).setLatestArrival(100.).build(); - vrpBuilder.addVehicle(vehicle).addVehicle(vehicle2).addVehicle(vehicle3).addVehicle(equivalentOf3); - Collection vehicles = new ArrayList(); vehicles.add(vehicle); vehicles.add(vehicle2); vehicles.add(vehicle3); - - fleetManager = new FiniteFleetManagerFactory(vehicles).createFleetManager(); - Service service = Service.Builder.newInstance("s1").setLocation(Location.newInstance("10,0")).build(); Service service2 = Service.Builder.newInstance("s2").setLocation(Location.newInstance("20,0")).build(); Service service3 = Service.Builder.newInstance("s3").setLocation(Location.newInstance("30,0")).build(); - vrpBuilder.addJob(service).addJob(service2).addJob(service3); vrp = vrpBuilder.build(); - route = VehicleRoute.Builder.newInstance(vehicle).setJobActivityFactory(new JobActivityFactory() { + @Override public List createActivities(Job job) { return vrp.copyAndGetActivities(job); } }).addService(service).addService(service2).addService(service3).build(); - - stateManager = new StateManager(vrp); UpdateVehicleDependentPracticalTimeWindows updater = new UpdateVehicleDependentPracticalTimeWindows(stateManager, routingCosts, activityCosts); updater.setVehiclesToUpdate(new UpdateVehicleDependentPracticalTimeWindows.VehiclesToUpdate() { @@ -120,17 +107,16 @@ public Collection get(VehicleRoute route) { vehicles.addAll(fleetManager.getAvailableVehicles(route.getVehicle())); return vehicles; } - }); stateManager.addStateUpdater(updater); stateManager.informInsertionStarts(Arrays.asList(route), Collections.emptyList()); } @Test - public void whenSwitchIsNotAllowed_itShouldCalOnlyStatesOfCurrentVehicle() { + @DisplayName("When Switch Is Not Allowed _ it Should Cal Only States Of Current Vehicle") + void whenSwitchIsNotAllowed_itShouldCalOnlyStatesOfCurrentVehicle() { stateManager = new StateManager(vrp); UpdateVehicleDependentPracticalTimeWindows updater = new UpdateVehicleDependentPracticalTimeWindows(stateManager, routingCosts, activityCosts); - stateManager.addStateUpdater(updater); stateManager.informInsertionStarts(Arrays.asList(route), Collections.emptyList()); assertTrue(stateManager.hasActivityState(route.getActivities().get(0), vehicle, InternalStates.LATEST_OPERATION_START_TIME)); @@ -138,135 +124,109 @@ public void whenSwitchIsNotAllowed_itShouldCalOnlyStatesOfCurrentVehicle() { } @Test - public void stateManagerShouldHaveMemorizedCorrectLatestEndOfAct3() { - assertEquals(70., stateManager.getActivityState(route.getActivities().get(2), vehicle, - InternalStates.LATEST_OPERATION_START_TIME, Double.class), 0.01); - + @DisplayName("State Manager Should Have Memorized Correct Latest End Of Act 3") + void stateManagerShouldHaveMemorizedCorrectLatestEndOfAct3() { + assertEquals(70., stateManager.getActivityState(route.getActivities().get(2), vehicle, InternalStates.LATEST_OPERATION_START_TIME, Double.class), 0.01); } @Test - public void stateManagerShouldHaveMemorizedCorrectLatestEndOfAct3_v2() { - assertEquals(70., stateManager.getActivityState(route.getActivities().get(2), vehicle, - InternalStates.LATEST_OPERATION_START_TIME, Double.class), 0.01); + @DisplayName("State Manager Should Have Memorized Correct Latest End Of Act 3 _ v 2") + void stateManagerShouldHaveMemorizedCorrectLatestEndOfAct3_v2() { + assertEquals(70., stateManager.getActivityState(route.getActivities().get(2), vehicle, InternalStates.LATEST_OPERATION_START_TIME, Double.class), 0.01); } @Test - public void stateManagerShouldHaveMemorizedCorrectLatestEndOfAct3WithVehicle2() { - assertEquals(30., stateManager.getActivityState(route.getActivities().get(2), vehicle2, - InternalStates.LATEST_OPERATION_START_TIME, Double.class), 0.01); + @DisplayName("State Manager Should Have Memorized Correct Latest End Of Act 3 With Vehicle 2") + void stateManagerShouldHaveMemorizedCorrectLatestEndOfAct3WithVehicle2() { + assertEquals(30., stateManager.getActivityState(route.getActivities().get(2), vehicle2, InternalStates.LATEST_OPERATION_START_TIME, Double.class), 0.01); } @Test - public void stateManagerShouldHaveMemorizedCorrectLatestEndOfAct3WithVehicle3() { - assertEquals(90., stateManager.getActivityState(route.getActivities().get(2), vehicle3, - InternalStates.LATEST_OPERATION_START_TIME, Double.class), 0.01); + @DisplayName("State Manager Should Have Memorized Correct Latest End Of Act 3 With Vehicle 3") + void stateManagerShouldHaveMemorizedCorrectLatestEndOfAct3WithVehicle3() { + assertEquals(90., stateManager.getActivityState(route.getActivities().get(2), vehicle3, InternalStates.LATEST_OPERATION_START_TIME, Double.class), 0.01); } @Test - public void stateManagerShouldHaveMemorizedCorrectLatestEndOfAct2() { - assertEquals(60., stateManager.getActivityState(route.getActivities().get(1), vehicle, - InternalStates.LATEST_OPERATION_START_TIME, Double.class), 0.01); + @DisplayName("State Manager Should Have Memorized Correct Latest End Of Act 2") + void stateManagerShouldHaveMemorizedCorrectLatestEndOfAct2() { + assertEquals(60., stateManager.getActivityState(route.getActivities().get(1), vehicle, InternalStates.LATEST_OPERATION_START_TIME, Double.class), 0.01); } @Test - public void stateManagerShouldHaveMemorizedCorrectLatestEndOfAct2_v2() { - assertEquals(60., stateManager.getActivityState(route.getActivities().get(1), vehicle, - InternalStates.LATEST_OPERATION_START_TIME, Double.class), 0.01); + @DisplayName("State Manager Should Have Memorized Correct Latest End Of Act 2 _ v 2") + void stateManagerShouldHaveMemorizedCorrectLatestEndOfAct2_v2() { + assertEquals(60., stateManager.getActivityState(route.getActivities().get(1), vehicle, InternalStates.LATEST_OPERATION_START_TIME, Double.class), 0.01); } @Test - public void stateManagerShouldHaveMemorizedCorrectLatestEndOfAct2WithVehicle2() { - assertEquals(20., stateManager.getActivityState(route.getActivities().get(1), vehicle2, - InternalStates.LATEST_OPERATION_START_TIME, Double.class), 0.01); + @DisplayName("State Manager Should Have Memorized Correct Latest End Of Act 2 With Vehicle 2") + void stateManagerShouldHaveMemorizedCorrectLatestEndOfAct2WithVehicle2() { + assertEquals(20., stateManager.getActivityState(route.getActivities().get(1), vehicle2, InternalStates.LATEST_OPERATION_START_TIME, Double.class), 0.01); } @Test - public void stateManagerShouldHaveMemorizedCorrectLatestEndOfAct2WithVehicle3() { - assertEquals(80., stateManager.getActivityState(route.getActivities().get(1), vehicle3, - InternalStates.LATEST_OPERATION_START_TIME, Double.class), 0.01); + @DisplayName("State Manager Should Have Memorized Correct Latest End Of Act 2 With Vehicle 3") + void stateManagerShouldHaveMemorizedCorrectLatestEndOfAct2WithVehicle3() { + assertEquals(80., stateManager.getActivityState(route.getActivities().get(1), vehicle3, InternalStates.LATEST_OPERATION_START_TIME, Double.class), 0.01); } @Test - public void stateManagerShouldHaveMemorizedCorrectLatestEndOfAct2WithEquivalentOfVehicle3() { - assertEquals(80., stateManager.getActivityState(route.getActivities().get(1), equivalentOf3, - InternalStates.LATEST_OPERATION_START_TIME, Double.class), 0.01); + @DisplayName("State Manager Should Have Memorized Correct Latest End Of Act 2 With Equivalent Of Vehicle 3") + void stateManagerShouldHaveMemorizedCorrectLatestEndOfAct2WithEquivalentOfVehicle3() { + assertEquals(80., stateManager.getActivityState(route.getActivities().get(1), equivalentOf3, InternalStates.LATEST_OPERATION_START_TIME, Double.class), 0.01); } @Test - public void stateManagerShouldHaveMemorizedCorrectLatestEndOfAct1WithVehicle2() { - assertEquals(10., stateManager.getActivityState(route.getActivities().get(0), vehicle2, - InternalStates.LATEST_OPERATION_START_TIME, Double.class), 0.01); + @DisplayName("State Manager Should Have Memorized Correct Latest End Of Act 1 With Vehicle 2") + void stateManagerShouldHaveMemorizedCorrectLatestEndOfAct1WithVehicle2() { + assertEquals(10., stateManager.getActivityState(route.getActivities().get(0), vehicle2, InternalStates.LATEST_OPERATION_START_TIME, Double.class), 0.01); } @Test - public void stateManagerShouldHaveMemorizedCorrectLatestEndOfAct1WithVehicle3() { - assertEquals(70., stateManager.getActivityState(route.getActivities().get(0), vehicle3, - InternalStates.LATEST_OPERATION_START_TIME, Double.class), 0.01); + @DisplayName("State Manager Should Have Memorized Correct Latest End Of Act 1 With Vehicle 3") + void stateManagerShouldHaveMemorizedCorrectLatestEndOfAct1WithVehicle3() { + assertEquals(70., stateManager.getActivityState(route.getActivities().get(0), vehicle3, InternalStates.LATEST_OPERATION_START_TIME, Double.class), 0.01); } - @Test - public void twUpdateShouldWorkWithMultipleTWs(){ + @DisplayName("Tw Update Should Work With Multiple T Ws") + void twUpdateShouldWorkWithMultipleTWs() { // VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("0,0")).setEarliestStart(0.).setLatestArrival(100.).build(); - Service service = Service.Builder.newInstance("s1").setLocation(Location.newInstance("10,0")) - .addTimeWindow(10,20).addTimeWindow(30,40).build(); - Service service2 = Service.Builder.newInstance("s2") - .addTimeWindow(20,30).addTimeWindow(40,60).addTimeWindow(70,80).setLocation(Location.newInstance("20,0")).build(); - - VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(service).addJob(service2).addVehicle(vehicle) - .setRoutingCost(routingCosts).build(); - - VehicleRoute route = VehicleRoute.Builder.newInstance(vehicle).setJobActivityFactory(vrp.getJobActivityFactory()) - .addService(service).addService(service2, TimeWindow.newInstance(70, 80)).build(); - + Service service = Service.Builder.newInstance("s1").setLocation(Location.newInstance("10,0")).addTimeWindow(10, 20).addTimeWindow(30, 40).build(); + Service service2 = Service.Builder.newInstance("s2").addTimeWindow(20, 30).addTimeWindow(40, 60).addTimeWindow(70, 80).setLocation(Location.newInstance("20,0")).build(); + VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(service).addJob(service2).addVehicle(vehicle).setRoutingCost(routingCosts).build(); + VehicleRoute route = VehicleRoute.Builder.newInstance(vehicle).setJobActivityFactory(vrp.getJobActivityFactory()).addService(service).addService(service2, TimeWindow.newInstance(70, 80)).build(); StateManager stateManager = new StateManager(vrp); - UpdateVehicleDependentPracticalTimeWindows updater = new UpdateVehicleDependentPracticalTimeWindows(stateManager,routingCosts,activityCosts); + UpdateVehicleDependentPracticalTimeWindows updater = new UpdateVehicleDependentPracticalTimeWindows(stateManager, routingCosts, activityCosts); updater.setVehiclesToUpdate(new UpdateVehicleDependentPracticalTimeWindows.VehiclesToUpdate() { @Override public Collection get(VehicleRoute route) { Collection vehicles = new ArrayList(); vehicles.add(route.getVehicle()); -// vehicles.addAll(fleetManager.getAvailableVehicles(route.getVehicle())); + // vehicles.addAll(fleetManager.getAvailableVehicles(route.getVehicle())); return vehicles; } - }); stateManager.addStateUpdater(updater); stateManager.informInsertionStarts(Arrays.asList(route), Collections.emptyList()); - - assertEquals(80.,stateManager.getActivityState(route.getActivities().get(1),vehicle, - InternalStates.LATEST_OPERATION_START_TIME, Double.class),0.01); + assertEquals(80., stateManager.getActivityState(route.getActivities().get(1), vehicle, InternalStates.LATEST_OPERATION_START_TIME, Double.class), 0.01); } @Test - public void updateOfOpenRoutesShouldBeDoneCorrectly(){ - VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v") - .setReturnToDepot(false) - .setStartLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(0, 0)).build()) - .setLatestArrival(51) - .build(); - - Service service = Service.Builder.newInstance("s") - .setLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(50, 0)).build()).build(); - - VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance() - .addJob(service).addVehicle(vehicle).setFleetSize(VehicleRoutingProblem.FleetSize.FINITE) - .build(); - - VehicleRoute route = VehicleRoute.Builder.newInstance(vehicle) - .setJobActivityFactory(vrp.getJobActivityFactory()).addService(service).build(); - + @DisplayName("Update Of Open Routes Should Be Done Correctly") + void updateOfOpenRoutesShouldBeDoneCorrectly() { + VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setReturnToDepot(false).setStartLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(0, 0)).build()).setLatestArrival(51).build(); + Service service = Service.Builder.newInstance("s").setLocation(Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(50, 0)).build()).build(); + VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(service).addVehicle(vehicle).setFleetSize(VehicleRoutingProblem.FleetSize.FINITE).build(); + VehicleRoute route = VehicleRoute.Builder.newInstance(vehicle).setJobActivityFactory(vrp.getJobActivityFactory()).addService(service).build(); stateManager = new StateManager(vrp); UpdateVehicleDependentPracticalTimeWindows updater = new UpdateVehicleDependentPracticalTimeWindows(stateManager, vrp.getTransportCosts(), vrp.getActivityCosts()); stateManager.addStateUpdater(updater); stateManager.reCalculateStates(route); - - Double activityState = stateManager.getActivityState(route.getActivities().get(0),route.getVehicle(), InternalStates.LATEST_OPERATION_START_TIME, Double.class); - Assert.assertEquals(51d, activityState, 0.01); - + Double activityState = stateManager.getActivityState(route.getActivities().get(0), route.getVehicle(), InternalStates.LATEST_OPERATION_START_TIME, Double.class); + assertEquals(51d, activityState, 0.01); } - - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/termination/IterationsWithoutImprovementTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/termination/IterationsWithoutImprovementTest.java index 8cdd708a4..4517a1058 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/termination/IterationsWithoutImprovementTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/termination/IterationsWithoutImprovementTest.java @@ -15,21 +15,22 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.graphhopper.jsprit.core.algorithm.termination; - import com.graphhopper.jsprit.core.algorithm.SearchStrategy; -import junit.framework.Assert; -import org.junit.Test; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -public class IterationsWithoutImprovementTest { +@DisplayName("Iterations Without Improvement Test") +class IterationsWithoutImprovementTest { @Test - public void itShouldTerminateAfter100() { + @DisplayName("It Should Terminate After 100") + void itShouldTerminateAfter100() { IterationWithoutImprovementTermination termination = new IterationWithoutImprovementTermination(100); SearchStrategy.DiscoveredSolution discoveredSolution = mock(SearchStrategy.DiscoveredSolution.class); when(discoveredSolution.isAccepted()).thenReturn(false); @@ -41,11 +42,12 @@ public void itShouldTerminateAfter100() { break; } } - Assert.assertEquals(100, terminatedAfter); + assertEquals(100, terminatedAfter); } @Test - public void itShouldTerminateAfter1() { + @DisplayName("It Should Terminate After 1") + void itShouldTerminateAfter1() { IterationWithoutImprovementTermination termination = new IterationWithoutImprovementTermination(1); SearchStrategy.DiscoveredSolution discoveredSolution = mock(SearchStrategy.DiscoveredSolution.class); when(discoveredSolution.isAccepted()).thenReturn(false); @@ -57,23 +59,25 @@ public void itShouldTerminateAfter1() { break; } } - Assert.assertEquals(1, terminatedAfter); + assertEquals(1, terminatedAfter); } @Test - public void itShouldTerminateAfter150() { + @DisplayName("It Should Terminate After 150") + void itShouldTerminateAfter150() { IterationWithoutImprovementTermination termination = new IterationWithoutImprovementTermination(100); SearchStrategy.DiscoveredSolution discoveredSolution = mock(SearchStrategy.DiscoveredSolution.class); int terminatedAfter = 0; for (int i = 0; i < 200; i++) { when(discoveredSolution.isAccepted()).thenReturn(false); - if (i == 49) when(discoveredSolution.isAccepted()).thenReturn(true); + if (i == 49) + when(discoveredSolution.isAccepted()).thenReturn(true); boolean terminate = termination.isPrematureBreak(discoveredSolution); if (terminate) { terminatedAfter = i; break; } } - Assert.assertEquals(150, terminatedAfter); + assertEquals(150, terminatedAfter); } } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/termination/TimeTerminationTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/termination/TimeTerminationTest.java index 095405b71..dae22eec2 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/termination/TimeTerminationTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/termination/TimeTerminationTest.java @@ -15,42 +15,50 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.graphhopper.jsprit.core.algorithm.termination; -import junit.framework.Assert; -import org.junit.Test; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; /** * Created by schroeder on 16.12.14. */ -public class TimeTerminationTest { +@DisplayName("Time Termination Test") +class TimeTerminationTest { @Test - public void whenTimeThreshold2000msAndCurrentTime0_itShouldNotBreak() { + @DisplayName("When Time Threshold 2000 ms And Current Time 0 _ it Should Not Break") + void whenTimeThreshold2000msAndCurrentTime0_itShouldNotBreak() { long threshold = 2000; TimeTermination tt = new TimeTermination(threshold); tt.setTimeGetter(new TimeTermination.TimeGetter() { + @Override public long getCurrentTime() { return 0; } }); tt.start(0); - Assert.assertFalse(tt.isPrematureBreak(null)); + assertFalse(tt.isPrematureBreak(null)); } @Test - public void whenTimeThreshold2000msAndCurrentTime2000ms_itShouldBreak() { + @DisplayName("When Time Threshold 2000 ms And Current Time 2000 ms _ it Should Break") + void whenTimeThreshold2000msAndCurrentTime2000ms_itShouldBreak() { long threshold = 2000; TimeTermination tt = new TimeTermination(threshold); tt.setTimeGetter(new TimeTermination.TimeGetter() { + @Override public long getCurrentTime() { return 2001; } }); tt.start(0); - Assert.assertTrue(tt.isPrematureBreak(null)); + assertTrue(tt.isPrematureBreak(null)); } } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/analysis/SolutionAnalyserTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/analysis/SolutionAnalyserTest.java index 9120ee832..e3fb9a48d 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/analysis/SolutionAnalyserTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/analysis/SolutionAnalyserTest.java @@ -15,10 +15,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.graphhopper.jsprit.core.analysis; - import com.graphhopper.jsprit.core.problem.Capacity; import com.graphhopper.jsprit.core.problem.Location; import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; @@ -37,137 +35,56 @@ import com.graphhopper.jsprit.core.util.Coordinate; import com.graphhopper.jsprit.core.util.ManhattanCosts; import com.graphhopper.jsprit.core.util.TestUtils; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.Arrays; import java.util.Collections; import java.util.Iterator; import java.util.List; -import static org.junit.Assert.*; +import static org.junit.jupiter.api.Assertions.*; -public class SolutionAnalyserTest { +@DisplayName("Solution Analyser Test") +class SolutionAnalyserTest { private VehicleRoutingProblem vrp; private VehicleRoutingProblemSolution solution; - - @Before - public void doBefore() { - + @BeforeEach + void doBefore() { VehicleType type = VehicleTypeImpl.Builder.newInstance("type").setFixedCost(100.).setCostPerDistance(2.).addCapacityDimension(0, 15).build(); - - VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v1").setType(type) - .setStartLocation(Location.newInstance(-5, 0)) - .addSkill("skill1").addSkill("skill2") - .build(); - - VehicleImpl vehicle2 = VehicleImpl.Builder.newInstance("v2").setType(type) - .setStartLocation(Location.newInstance(5, 0)).build(); - - Service s1 = Service.Builder.newInstance("s1") - .setTimeWindow(TimeWindow.newInstance(10, 20)) - .setLocation(Location.newInstance(-10, 1)).addSizeDimension(0, 2) - .addRequiredSkill("skill1") - .build(); - Service s2 = Service.Builder.newInstance("s2") - .setLocation(Location.newInstance(-10, 10)) - .addSizeDimension(0, 3) - .addRequiredSkill("skill2").addRequiredSkill("skill1") - .build(); - Shipment shipment1 = Shipment.Builder.newInstance("ship1") - .setPickupLocation(TestUtils.loc(Coordinate.newInstance(-15, 2))) - .setDeliveryLocation(TestUtils.loc(Coordinate.newInstance(-16, 5))) - .addSizeDimension(0, 10) - .setPickupServiceTime(20.) - .setDeliveryServiceTime(20.) - .addRequiredSkill("skill3") - .build(); - - Service s3 = Service.Builder.newInstance("s3") - .setTimeWindow(TimeWindow.newInstance(10, 20)) - .setLocation(TestUtils.loc(Coordinate.newInstance(10, 1))).addSizeDimension(0, 2).build(); - + VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v1").setType(type).setStartLocation(Location.newInstance(-5, 0)).addSkill("skill1").addSkill("skill2").build(); + VehicleImpl vehicle2 = VehicleImpl.Builder.newInstance("v2").setType(type).setStartLocation(Location.newInstance(5, 0)).build(); + Service s1 = Service.Builder.newInstance("s1").setTimeWindow(TimeWindow.newInstance(10, 20)).setLocation(Location.newInstance(-10, 1)).addSizeDimension(0, 2).addRequiredSkill("skill1").build(); + Service s2 = Service.Builder.newInstance("s2").setLocation(Location.newInstance(-10, 10)).addSizeDimension(0, 3).addRequiredSkill("skill2").addRequiredSkill("skill1").build(); + Shipment shipment1 = Shipment.Builder.newInstance("ship1").setPickupLocation(TestUtils.loc(Coordinate.newInstance(-15, 2))).setDeliveryLocation(TestUtils.loc(Coordinate.newInstance(-16, 5))).addSizeDimension(0, 10).setPickupServiceTime(20.).setDeliveryServiceTime(20.).addRequiredSkill("skill3").build(); + Service s3 = Service.Builder.newInstance("s3").setTimeWindow(TimeWindow.newInstance(10, 20)).setLocation(TestUtils.loc(Coordinate.newInstance(10, 1))).addSizeDimension(0, 2).build(); Service s4 = Service.Builder.newInstance("s4").setLocation(TestUtils.loc(Coordinate.newInstance(10, 10))).addSizeDimension(0, 3).build(); - - Shipment shipment2 = Shipment.Builder.newInstance("ship2").setPickupLocation(TestUtils.loc(Coordinate.newInstance(15, 2))) - .setPickupServiceTime(20.).setDeliveryServiceTime(20.) - .setDeliveryLocation(TestUtils.loc(Coordinate.newInstance(16, 5))).addSizeDimension(0, 10).build(); - - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle) - .addVehicle(vehicle2) - .addJob(s1) - .addJob(s2).addJob(shipment1).addJob(s3).addJob(s4).addJob(shipment2).setFleetSize(VehicleRoutingProblem.FleetSize.INFINITE); + Shipment shipment2 = Shipment.Builder.newInstance("ship2").setPickupLocation(TestUtils.loc(Coordinate.newInstance(15, 2))).setPickupServiceTime(20.).setDeliveryServiceTime(20.).setDeliveryLocation(TestUtils.loc(Coordinate.newInstance(16, 5))).addSizeDimension(0, 10).build(); + VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle).addVehicle(vehicle2).addJob(s1).addJob(s2).addJob(shipment1).addJob(s3).addJob(s4).addJob(shipment2).setFleetSize(VehicleRoutingProblem.FleetSize.INFINITE); vrpBuilder.setRoutingCost(new ManhattanCosts(vrpBuilder.getLocations())); vrp = vrpBuilder.build(); - - VehicleRoute route1 = VehicleRoute.Builder.newInstance(vehicle).setJobActivityFactory(vrp.getJobActivityFactory()) - .addService(s1).addPickup(shipment1).addDelivery(shipment1).addService(s2).build(); - - VehicleRoute route2 = VehicleRoute.Builder.newInstance(vehicle).setJobActivityFactory(vrp.getJobActivityFactory()) - .addService(s3).addPickup(shipment2).addDelivery(shipment2).addService(s4).build(); - + VehicleRoute route1 = VehicleRoute.Builder.newInstance(vehicle).setJobActivityFactory(vrp.getJobActivityFactory()).addService(s1).addPickup(shipment1).addDelivery(shipment1).addService(s2).build(); + VehicleRoute route2 = VehicleRoute.Builder.newInstance(vehicle).setJobActivityFactory(vrp.getJobActivityFactory()).addService(s3).addPickup(shipment2).addDelivery(shipment2).addService(s4).build(); solution = new VehicleRoutingProblemSolution(Arrays.asList(route1, route2), 42); } - public void buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore() { VehicleType type = VehicleTypeImpl.Builder.newInstance("type").setFixedCost(100.).setCostPerDistance(2.).addCapacityDimension(0, 15).build(); - - VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v1").setType(type) - .setStartLocation(Location.newInstance(-5, 0)) - .setLatestArrival(150.) - .build(); - - Pickup s1 = Pickup.Builder.newInstance("s1") - .setTimeWindow(TimeWindow.newInstance(10, 20)) - .setLocation(Location.newInstance(-10, 1)) - .addSizeDimension(0, 10) - .build(); - Delivery s2 = Delivery.Builder.newInstance("s2") - .setLocation(Location.newInstance(-10, 10)) - .setTimeWindow(TimeWindow.newInstance(10, 20)) - .addSizeDimension(0, 20) - .build(); - Shipment shipment1 = Shipment.Builder.newInstance("ship1").setPickupLocation(TestUtils.loc(Coordinate.newInstance(-15, 2))) - .setDeliveryLocation(TestUtils.loc(Coordinate.newInstance(-16, 5))) - .addSizeDimension(0, 15) - .setPickupServiceTime(20.).setDeliveryServiceTime(20.) - .setPickupTimeWindow(TimeWindow.newInstance(10, 20)).setDeliveryTimeWindow(TimeWindow.newInstance(10, 20)) - .build(); - - Pickup s3 = Pickup.Builder.newInstance("s3") - .setTimeWindow(TimeWindow.newInstance(10, 20)) - .setLocation(TestUtils.loc(Coordinate.newInstance(10, 1))) - .addSizeDimension(0, 10) - .build(); - Delivery s4 = Delivery.Builder.newInstance("s4").setLocation(Location.newInstance(10, 10)) - .addSizeDimension(0, 20) - .setTimeWindow(TimeWindow.newInstance(10, 20)) - .build(); - Shipment shipment2 = Shipment.Builder.newInstance("ship2").setPickupLocation(TestUtils.loc(Coordinate.newInstance(15, 2))) - .setPickupServiceTime(20.).setDeliveryServiceTime(20.) - .setDeliveryLocation(TestUtils.loc(Coordinate.newInstance(16, 5))) - .setPickupTimeWindow(TimeWindow.newInstance(10, 20)).setDeliveryTimeWindow(TimeWindow.newInstance(10, 20)) - .addSizeDimension(0, 15).build(); - - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle) - .addJob(s1) - .addJob(s2).addJob(shipment1).addJob(s3).addJob(s4).addJob(shipment2).setFleetSize(VehicleRoutingProblem.FleetSize.FINITE); + VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v1").setType(type).setStartLocation(Location.newInstance(-5, 0)).setLatestArrival(150.).build(); + Pickup s1 = Pickup.Builder.newInstance("s1").setTimeWindow(TimeWindow.newInstance(10, 20)).setLocation(Location.newInstance(-10, 1)).addSizeDimension(0, 10).build(); + Delivery s2 = Delivery.Builder.newInstance("s2").setLocation(Location.newInstance(-10, 10)).setTimeWindow(TimeWindow.newInstance(10, 20)).addSizeDimension(0, 20).build(); + Shipment shipment1 = Shipment.Builder.newInstance("ship1").setPickupLocation(TestUtils.loc(Coordinate.newInstance(-15, 2))).setDeliveryLocation(TestUtils.loc(Coordinate.newInstance(-16, 5))).addSizeDimension(0, 15).setPickupServiceTime(20.).setDeliveryServiceTime(20.).setPickupTimeWindow(TimeWindow.newInstance(10, 20)).setDeliveryTimeWindow(TimeWindow.newInstance(10, 20)).build(); + Pickup s3 = Pickup.Builder.newInstance("s3").setTimeWindow(TimeWindow.newInstance(10, 20)).setLocation(TestUtils.loc(Coordinate.newInstance(10, 1))).addSizeDimension(0, 10).build(); + Delivery s4 = Delivery.Builder.newInstance("s4").setLocation(Location.newInstance(10, 10)).addSizeDimension(0, 20).setTimeWindow(TimeWindow.newInstance(10, 20)).build(); + Shipment shipment2 = Shipment.Builder.newInstance("ship2").setPickupLocation(TestUtils.loc(Coordinate.newInstance(15, 2))).setPickupServiceTime(20.).setDeliveryServiceTime(20.).setDeliveryLocation(TestUtils.loc(Coordinate.newInstance(16, 5))).setPickupTimeWindow(TimeWindow.newInstance(10, 20)).setDeliveryTimeWindow(TimeWindow.newInstance(10, 20)).addSizeDimension(0, 15).build(); + VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle).addJob(s1).addJob(s2).addJob(shipment1).addJob(s3).addJob(s4).addJob(shipment2).setFleetSize(VehicleRoutingProblem.FleetSize.FINITE); vrpBuilder.setRoutingCost(new ManhattanCosts(vrpBuilder.getLocations())); vrp = vrpBuilder.build(); - - VehicleRoute route = VehicleRoute.Builder.newInstance(vehicle).setJobActivityFactory(vrp.getJobActivityFactory()) - .addPickup(s3) - .addPickup(shipment2).addDelivery(shipment2) - .addDelivery(s4) - .addDelivery(s2) - .addPickup(shipment1).addDelivery(shipment1) - .addPickup(s1) - .build(); - + VehicleRoute route = VehicleRoute.Builder.newInstance(vehicle).setJobActivityFactory(vrp.getJobActivityFactory()).addPickup(s3).addPickup(shipment2).addDelivery(shipment2).addDelivery(s4).addDelivery(s2).addPickup(shipment1).addDelivery(shipment1).addPickup(s1).build(); solution = new VehicleRoutingProblemSolution(Collections.singletonList(route), 300); } @@ -175,7 +92,8 @@ public void buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore * Test the last transport costs at an activity are correct. */ @Test - public void lastTransportCostsOfRoute1ShouldWork() { + @DisplayName("Last Transport Costs Of Route 1 Should Work") + void lastTransportCostsOfRoute1ShouldWork() { testTransportCosts(TransportCostsTestType.LAST_COST); } @@ -183,16 +101,17 @@ public void lastTransportCostsOfRoute1ShouldWork() { * Test the last transport distance at an activity are correct. */ @Test - public void lastTransportDistanceOfRoute1ShouldWork() { + @DisplayName("Last Transport Distance Of Route 1 Should Work") + void lastTransportDistanceOfRoute1ShouldWork() { testTransportCosts(TransportCostsTestType.LAST_DISTANCE); } - /** * Test the last transport time at an activity are correct. */ @Test - public void lastTransportTimeOfRoute1ShouldWork() { + @DisplayName("Last Transport Time Of Route 1 Should Work") + void lastTransportTimeOfRoute1ShouldWork() { testTransportCosts(TransportCostsTestType.LAST_TIME); } @@ -200,72 +119,54 @@ public void lastTransportTimeOfRoute1ShouldWork() { * Test the last transport time at an activity are correct. */ @Test - public void transportTimeAtActivityOfRoute1ShouldWork() { + @DisplayName("Transport Time At Activity Of Route 1 Should Work") + void transportTimeAtActivityOfRoute1ShouldWork() { testTransportCosts(TransportCostsTestType.TRANSPORT_TIME_AT_ACTIVITY); } private enum TransportCostsTestType { - LAST_COST, - LAST_TIME, - LAST_DISTANCE, - TRANSPORT_TIME_AT_ACTIVITY, + + LAST_COST, LAST_TIME, LAST_DISTANCE, TRANSPORT_TIME_AT_ACTIVITY } /** * Run multiple different tests for transport costs - * */ private void testTransportCosts(TransportCostsTestType type) { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); - // this should be the path taken by route 1 including depots - Coordinate[] route1Path = new Coordinate[]{ - Coordinate.newInstance(-5, 0), - Coordinate.newInstance(-10, 1), - Coordinate.newInstance(-15, 2), - Coordinate.newInstance(-16, 5), - Coordinate.newInstance(-10, 10), - Coordinate.newInstance(-5, 0) - - }; - + Coordinate[] route1Path = new Coordinate[]{Coordinate.newInstance(-5, 0), Coordinate.newInstance(-10, 1), Coordinate.newInstance(-15, 2), Coordinate.newInstance(-16, 5), Coordinate.newInstance(-10, 10), Coordinate.newInstance(-5, 0)}; VehicleRoute route1 = solution.getRoutes().iterator().next(); - // get route 1 activities List activities = route1.getActivities(); assertEquals(activities.size(), 4); - // utility class to calculate manhattan distance + @DisplayName("Manhattan Distance") class ManhattanDistance { + private double calc(Coordinate from, Coordinate to) { - return Math.abs(from.getX() - to.getX()) - + Math.abs(from.getY() - to.getY()); + return Math.abs(from.getX() - to.getX()) + Math.abs(from.getY() - to.getY()); } } ManhattanDistance md = new ManhattanDistance(); - // loop over all activities on route and do tests double totalTime = 0; for (int i = 0; i < activities.size(); i++) { TourActivity activity = activities.get(i); Coordinate last = route1Path[i]; Coordinate current = route1Path[i + 1]; - // calculate last distance and time (Manhattan uses speed = 1 so distance = time) double dist = md.calc(last, current); - // test last distance if (type == TransportCostsTestType.LAST_DISTANCE) { double savedDist = analyser.getLastTransportDistanceAtActivity(activity, route1); assertEquals(dist, savedDist, 1E-10); } - // test last time if (type == TransportCostsTestType.LAST_TIME) { double savedTime = analyser.getLastTransportTimeAtActivity(activity, route1); assertEquals(dist, savedTime, 1E-10); } - // test last cost if (type == TransportCostsTestType.LAST_COST) { double perDistanceUnit = 1; @@ -279,7 +180,6 @@ private double calc(Coordinate from, Coordinate to) { double savedCost = analyser.getLastTransportCostAtActivity(activity, route1); assertEquals(cost, savedCost, 1E-10); } - // test total transport time at activity if (type == TransportCostsTestType.TRANSPORT_TIME_AT_ACTIVITY) { totalTime += dist; @@ -290,152 +190,171 @@ private double calc(Coordinate from, Coordinate to) { } @Test - public void constructionShouldWork() { + @DisplayName("Construction Should Work") + void constructionShouldWork() { new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); assertTrue(true); } @Test - public void loadAtBeginningOfRoute1ShouldWork() { + @DisplayName("Load At Beginning Of Route 1 Should Work") + void loadAtBeginningOfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(0, analyser.getLoadAtBeginning(route).get(0)); } @Test - public void loadAtBeginningOfRoute2ShouldWork() { + @DisplayName("Load At Beginning Of Route 2 Should Work") + void loadAtBeginningOfRoute2ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); Iterator iterator = solution.getRoutes().iterator(); iterator.next(); VehicleRoute route = iterator.next(); - assertEquals(0, analyser.getLoadAtBeginning(route).get(0)); } @Test - public void loadAtEnd_OfRoute1ShouldWork() { + @DisplayName("Load At End _ Of Route 1 Should Work") + void loadAtEnd_OfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(5, analyser.getLoadAtEnd(route).get(0)); } @Test - public void loadAtEnd_OfRoute2ShouldWork() { + @DisplayName("Load At End _ Of Route 2 Should Work") + void loadAtEnd_OfRoute2ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); Iterator iterator = solution.getRoutes().iterator(); iterator.next(); VehicleRoute route = iterator.next(); - assertEquals(5, analyser.getLoadAtEnd(route).get(0)); } @Test - public void loadAfterActivity_ofStartActOfRoute1ShouldWork() { + @DisplayName("Load After Activity _ of Start Act Of Route 1 Should Work") + void loadAfterActivity_ofStartActOfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(0, analyser.getLoadRightAfterActivity(route.getStart(), route).get(0)); } @Test - public void loadAfterActivity_ofAct1ofRoute1ShouldWork() { + @DisplayName("Load After Activity _ of Act 1 of Route 1 Should Work") + void loadAfterActivity_ofAct1ofRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(2, analyser.getLoadRightAfterActivity(route.getActivities().get(0), route).get(0)); } @Test - public void loadAfterActivity_ofAct2ofRoute1ShouldWork() { + @DisplayName("Load After Activity _ of Act 2 of Route 1 Should Work") + void loadAfterActivity_ofAct2ofRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(12, analyser.getLoadRightAfterActivity(route.getActivities().get(1), route).get(0)); } @Test - public void loadAfterActivity_ofAct3ofRoute1ShouldWork() { + @DisplayName("Load After Activity _ of Act 3 of Route 1 Should Work") + void loadAfterActivity_ofAct3ofRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(2, analyser.getLoadRightAfterActivity(route.getActivities().get(2), route).get(0)); } @Test - public void loadAfterActivity_ofAct4ofRoute1ShouldWork() { + @DisplayName("Load After Activity _ of Act 4 of Route 1 Should Work") + void loadAfterActivity_ofAct4ofRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(5, analyser.getLoadRightAfterActivity(route.getActivities().get(3), route).get(0)); } @Test - public void loadAfterActivity_ofEndActOfRoute1ShouldWork() { + @DisplayName("Load After Activity _ of End Act Of Route 1 Should Work") + void loadAfterActivity_ofEndActOfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(5, analyser.getLoadRightAfterActivity(route.getEnd(), route).get(0)); } @Test - public void loadBeforeActivity_ofStartActOfRoute1ShouldWork() { + @DisplayName("Load Before Activity _ of Start Act Of Route 1 Should Work") + void loadBeforeActivity_ofStartActOfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(0, analyser.getLoadJustBeforeActivity(route.getStart(), route).get(0)); } @Test - public void loadBeforeActivity_ofAct1ofRoute1ShouldWork() { + @DisplayName("Load Before Activity _ of Act 1 of Route 1 Should Work") + void loadBeforeActivity_ofAct1ofRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(0, analyser.getLoadJustBeforeActivity(route.getActivities().get(0), route).get(0)); } @Test - public void loadBeforeActivity_ofAct2ofRoute1ShouldWork() { + @DisplayName("Load Before Activity _ of Act 2 of Route 1 Should Work") + void loadBeforeActivity_ofAct2ofRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(2, analyser.getLoadJustBeforeActivity(route.getActivities().get(1), route).get(0)); } @Test - public void loadBeforeActivity_ofAct3ofRoute1ShouldWork() { + @DisplayName("Load Before Activity _ of Act 3 of Route 1 Should Work") + void loadBeforeActivity_ofAct3ofRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(12, analyser.getLoadJustBeforeActivity(route.getActivities().get(2), route).get(0)); } @Test - public void loadBeforeActivity_ofAct4ofRoute1ShouldWork() { + @DisplayName("Load Before Activity _ of Act 4 of Route 1 Should Work") + void loadBeforeActivity_ofAct4ofRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(2, analyser.getLoadJustBeforeActivity(route.getActivities().get(3), route).get(0)); } @Test - public void loadBeforeActivity_ofEndActOfRoute1ShouldWork() { + @DisplayName("Load Before Activity _ of End Act Of Route 1 Should Work") + void loadBeforeActivity_ofEndActOfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(5, analyser.getLoadJustBeforeActivity(route.getEnd(), route).get(0)); } @Test - public void maxLoad_OfRoute1ShouldWork() { + @DisplayName("Max Load _ Of Route 1 Should Work") + void maxLoad_OfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(12, analyser.getMaxLoad(route).get(0)); } @Test - public void pickupCount_OfRoute1ShouldWork() { + @DisplayName("Pickup Count _ Of Route 1 Should Work") + void pickupCount_OfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(3, analyser.getNumberOfPickups(route), 0.01); } @Test - public void pickupCountAtBeginning_OfRoute1ShouldWork() { + @DisplayName("Pickup Count At Beginning _ Of Route 1 Should Work") + void pickupCountAtBeginning_OfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(0, analyser.getNumberOfPickupsAtBeginning(route), 0.01); } @Test - public void pickupCount_OfRoute1OfAnotherSolutionShouldWork() { + @DisplayName("Pickup Count _ Of Route 1 Of Another Solution Should Work") + void pickupCount_OfRoute1OfAnotherSolutionShouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -443,7 +362,8 @@ public void pickupCount_OfRoute1OfAnotherSolutionShouldWork() { } @Test - public void pickupCountAtBeginning_OfRoute1OfAnotherSolutionShouldWork() { + @DisplayName("Pickup Count At Beginning _ Of Route 1 Of Another Solution Should Work") + void pickupCountAtBeginning_OfRoute1OfAnotherSolutionShouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -451,47 +371,54 @@ public void pickupCountAtBeginning_OfRoute1OfAnotherSolutionShouldWork() { } @Test - public void pickupCount_onSolutionShouldWork() { + @DisplayName("Pickup Count _ on Solution Should Work") + void pickupCount_onSolutionShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); assertEquals(6, analyser.getNumberOfPickups(), 0.01); } @Test - public void pickupCountAtBeginning_onSolutionShouldWork() { + @DisplayName("Pickup Count At Beginning _ on Solution Should Work") + void pickupCountAtBeginning_onSolutionShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); assertEquals(0, analyser.getNumberOfPickupsAtBeginning(), 0.01); } @Test - public void pickupCount_onAnotherSolutionShouldWork() { + @DisplayName("Pickup Count _ on Another Solution Should Work") + void pickupCount_onAnotherSolutionShouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); assertEquals(4, analyser.getNumberOfPickups(), 0.01); } @Test - public void pickupCountAtBeginning_onAnotherSolutionShouldWork() { + @DisplayName("Pickup Count At Beginning _ on Another Solution Should Work") + void pickupCountAtBeginning_onAnotherSolutionShouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); assertEquals(2, analyser.getNumberOfPickupsAtBeginning(), 0.01); } @Test - public void pickupLoad_OfRoute1ShouldWork() { + @DisplayName("Pickup Load _ Of Route 1 Should Work") + void pickupLoad_OfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(15, analyser.getLoadPickedUp(route).get(0), 0.01); } @Test - public void pickupLoadAtBeginning_OfRoute1ShouldWork() { + @DisplayName("Pickup Load At Beginning _ Of Route 1 Should Work") + void pickupLoadAtBeginning_OfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(0, analyser.getLoadAtBeginning(route).get(0), 0.01); } @Test - public void pickupLoad_OfRoute1OfAnotherShouldWork() { + @DisplayName("Pickup Load _ Of Route 1 Of Another Should Work") + void pickupLoad_OfRoute1OfAnotherShouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -499,7 +426,8 @@ public void pickupLoad_OfRoute1OfAnotherShouldWork() { } @Test - public void pickupLoadAtBeginning_OfRoute1OfAnotherShouldWork() { + @DisplayName("Pickup Load At Beginning _ Of Route 1 Of Another Should Work") + void pickupLoadAtBeginning_OfRoute1OfAnotherShouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -507,47 +435,54 @@ public void pickupLoadAtBeginning_OfRoute1OfAnotherShouldWork() { } @Test - public void pickupLoad_onSolutionShouldWork() { + @DisplayName("Pickup Load _ on Solution Should Work") + void pickupLoad_onSolutionShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); assertEquals(30, analyser.getLoadPickedUp().get(0), 0.01); } @Test - public void pickupLoadAtBeginning_onSolutionShouldWork() { + @DisplayName("Pickup Load At Beginning _ on Solution Should Work") + void pickupLoadAtBeginning_onSolutionShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); assertEquals(0, analyser.getLoadAtBeginning().get(0), 0.01); } @Test - public void pickupLoad_onAnotherSolutionShouldWork() { + @DisplayName("Pickup Load _ on Another Solution Should Work") + void pickupLoad_onAnotherSolutionShouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); assertEquals(50, analyser.getLoadPickedUp().get(0), 0.01); } @Test - public void pickupLoadAtBeginning_onAnotherSolutionShouldWork() { + @DisplayName("Pickup Load At Beginning _ on Another Solution Should Work") + void pickupLoadAtBeginning_onAnotherSolutionShouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); assertEquals(40, analyser.getLoadAtBeginning().get(0), 0.01); } @Test - public void deliveryCount_OfRoute1ShouldWork() { + @DisplayName("Delivery Count _ Of Route 1 Should Work") + void deliveryCount_OfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(1, analyser.getNumberOfDeliveries(route), 0.01); } @Test - public void deliveryCountAtEnd_OfRoute1ShouldWork() { + @DisplayName("Delivery Count At End _ Of Route 1 Should Work") + void deliveryCountAtEnd_OfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(2, analyser.getNumberOfDeliveriesAtEnd(route), 0.01); } @Test - public void deliveryCount_OfRoute1OfAnotherSolutionShouldWork() { + @DisplayName("Delivery Count _ Of Route 1 Of Another Solution Should Work") + void deliveryCount_OfRoute1OfAnotherSolutionShouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -555,7 +490,8 @@ public void deliveryCount_OfRoute1OfAnotherSolutionShouldWork() { } @Test - public void deliveryCountAtEnd_OfRoute1OfAnotherSolutionShouldWork() { + @DisplayName("Delivery Count At End _ Of Route 1 Of Another Solution Should Work") + void deliveryCountAtEnd_OfRoute1OfAnotherSolutionShouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -563,47 +499,54 @@ public void deliveryCountAtEnd_OfRoute1OfAnotherSolutionShouldWork() { } @Test - public void deliveryCount_onSolutionShouldWork() { + @DisplayName("Delivery Count _ on Solution Should Work") + void deliveryCount_onSolutionShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); assertEquals(2, analyser.getNumberOfDeliveries(), 0.01); } @Test - public void deliveryCountAtEnd_onSolutionShouldWork() { + @DisplayName("Delivery Count At End _ on Solution Should Work") + void deliveryCountAtEnd_onSolutionShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); assertEquals(4, analyser.getNumberOfDeliveriesAtEnd(), 0.01); } @Test - public void deliveryCount_onAnotherSolutionShouldWork() { + @DisplayName("Delivery Count _ on Another Solution Should Work") + void deliveryCount_onAnotherSolutionShouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); assertEquals(4, analyser.getNumberOfDeliveries(), 0.01); } @Test - public void deliveryCountAtEnd_onAnotherSolutionShouldWork() { + @DisplayName("Delivery Count At End _ on Another Solution Should Work") + void deliveryCountAtEnd_onAnotherSolutionShouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); assertEquals(2, analyser.getNumberOfDeliveriesAtEnd(), 0.01); } @Test - public void deliveryLoad_OfRoute1ShouldWork() { + @DisplayName("Delivery Load _ Of Route 1 Should Work") + void deliveryLoad_OfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(10, analyser.getLoadDelivered(route).get(0), 0.01); } @Test - public void deliveryLoadAtEnd_OfRoute1ShouldWork() { + @DisplayName("Delivery Load At End _ Of Route 1 Should Work") + void deliveryLoadAtEnd_OfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(5, analyser.getLoadAtEnd(route).get(0), 0.01); } @Test - public void deliveryLoad_OfRoute1OfAnotherSolutionShouldWork() { + @DisplayName("Delivery Load _ Of Route 1 Of Another Solution Should Work") + void deliveryLoad_OfRoute1OfAnotherSolutionShouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -611,7 +554,8 @@ public void deliveryLoad_OfRoute1OfAnotherSolutionShouldWork() { } @Test - public void deliveryLoadAtEnd_OfRoute1OfAnotherSolutionShouldWork() { + @DisplayName("Delivery Load At End _ Of Route 1 Of Another Solution Should Work") + void deliveryLoadAtEnd_OfRoute1OfAnotherSolutionShouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -619,281 +563,307 @@ public void deliveryLoadAtEnd_OfRoute1OfAnotherSolutionShouldWork() { } @Test - public void deliveryLoad_onSolutionShouldWork() { + @DisplayName("Delivery Load _ on Solution Should Work") + void deliveryLoad_onSolutionShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); assertEquals(20, analyser.getLoadDelivered().get(0), 0.01); } @Test - public void deliveryLoadAtEnd_onSolutionShouldWork() { + @DisplayName("Delivery Load At End _ on Solution Should Work") + void deliveryLoadAtEnd_onSolutionShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); assertEquals(10, analyser.getLoadAtEnd().get(0), 0.01); } @Test - public void deliveryLoad_onAnotherSolutionShouldWork() { + @DisplayName("Delivery Load _ on Another Solution Should Work") + void deliveryLoad_onAnotherSolutionShouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); assertEquals(70, analyser.getLoadDelivered().get(0), 0.01); } @Test - public void deliveryLoadAtEnd_onAnotherSolutionShouldWork() { + @DisplayName("Delivery Load At End _ on Another Solution Should Work") + void deliveryLoadAtEnd_onAnotherSolutionShouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); assertEquals(20, analyser.getLoadAtEnd().get(0), 0.01); } @Test - public void operationTime_OfRoute1ShouldWork() { + @DisplayName("Operation Time _ Of Route 1 Should Work") + void operationTime_OfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(46. + 40., analyser.getOperationTime(route), 0.01); } @Test - public void whenSettingStartTime_operationTimeShouldWork() { + @DisplayName("When Setting Start Time _ operation Time Should Work") + void whenSettingStartTime_operationTimeShouldWork() { VehicleType type = VehicleTypeImpl.Builder.newInstance("type").setFixedCost(100.).setCostPerDistance(2.).addCapacityDimension(0, 15).build(); - VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v2").setType(type) - .setEarliestStart(100) - .setStartLocation(Location.newInstance(5, 0)).build(); + VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v2").setType(type).setEarliestStart(100).setStartLocation(Location.newInstance(5, 0)).build(); Service service = Service.Builder.newInstance("s").setLocation(Location.newInstance(20, 0)).build(); - VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance() - .addVehicle(vehicle) - .addJob(service) - .setRoutingCost(new ManhattanCosts()) - .build(); - - VehicleRoute route = VehicleRoute.Builder.newInstance(vehicle) - .setJobActivityFactory(vrp.getJobActivityFactory()) - .addService(service) - .build(); - + VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle).addJob(service).setRoutingCost(new ManhattanCosts()).build(); + VehicleRoute route = VehicleRoute.Builder.newInstance(vehicle).setJobActivityFactory(vrp.getJobActivityFactory()).addService(service).build(); SolutionAnalyser analyser = new SolutionAnalyser(vrp, new VehicleRoutingProblemSolution(Collections.singletonList(route), 300), vrp.getTransportCosts()); assertEquals(30, analyser.getOperationTime(), 0.01); assertEquals(30, analyser.getOperationTime(route), 0.01); } @Test - public void waitingTime_OfRoute1ShouldWork() { + @DisplayName("Waiting Time _ Of Route 1 Should Work") + void waitingTime_OfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(4., analyser.getWaitingTime(route), 0.01); } @Test - public void transportTime_OfRoute1ShouldWork() { + @DisplayName("Transport Time _ Of Route 1 Should Work") + void transportTime_OfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(42., analyser.getTransportTime(route), 0.01); } @Test - public void serviceTime_OfRoute1ShouldWork() { + @DisplayName("Service Time _ Of Route 1 Should Work") + void serviceTime_OfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(40., analyser.getServiceTime(route), 0.01); } @Test - public void distance_OfRoute1ShouldWork() { + @DisplayName("Distance _ Of Route 1 Should Work") + void distance_OfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(42., analyser.getDistance(route), 0.01); } @Test - public void waitingTime_atStartActOfRoute1ShouldWork() { + @DisplayName("Waiting Time _ at Start Act Of Route 1 Should Work") + void waitingTime_atStartActOfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(0, analyser.getWaitingTimeAtActivity(route.getStart(), route), 0.01); } @Test - public void waitingTime_ofAct1ofRoute1ShouldWork() { + @DisplayName("Waiting Time _ of Act 1 of Route 1 Should Work") + void waitingTime_ofAct1ofRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(4., analyser.getWaitingTimeAtActivity(route.getActivities().get(0), route), 0.01); } @Test - public void waitingTime_ofAct2ofRoute1ShouldWork() { + @DisplayName("Waiting Time _ of Act 2 of Route 1 Should Work") + void waitingTime_ofAct2ofRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(0., analyser.getWaitingTimeAtActivity(route.getActivities().get(1), route), 0.01); } @Test - public void waitingTime_ofAct3ofRoute1ShouldWork() { + @DisplayName("Waiting Time _ of Act 3 of Route 1 Should Work") + void waitingTime_ofAct3ofRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(0., analyser.getWaitingTimeAtActivity(route.getActivities().get(2), route), 0.01); } @Test - public void waitingTime_ofAct4ofRoute1ShouldWork() { + @DisplayName("Waiting Time _ of Act 4 of Route 1 Should Work") + void waitingTime_ofAct4ofRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(0., analyser.getWaitingTimeAtActivity(route.getActivities().get(3), route), 0.01); } @Test - public void waitingTime_ofEndActOfRoute1ShouldWork() { + @DisplayName("Waiting Time _ of End Act Of Route 1 Should Work") + void waitingTime_ofEndActOfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(0., analyser.getWaitingTimeAtActivity(route.getEnd(), route), 0.01); } @Test - public void distance_atStartActOfRoute1ShouldWork() { + @DisplayName("Distance _ at Start Act Of Route 1 Should Work") + void distance_atStartActOfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(0, analyser.getDistanceAtActivity(route.getStart(), route), 0.01); } @Test - public void distance_ofAct1ofRoute1ShouldWork() { + @DisplayName("Distance _ of Act 1 of Route 1 Should Work") + void distance_ofAct1ofRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(6., analyser.getDistanceAtActivity(route.getActivities().get(0), route), 0.01); } @Test - public void distance_ofAct2ofRoute1ShouldWork() { + @DisplayName("Distance _ of Act 2 of Route 1 Should Work") + void distance_ofAct2ofRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(12., analyser.getDistanceAtActivity(route.getActivities().get(1), route), 0.01); } @Test - public void distance_ofAct3ofRoute1ShouldWork() { + @DisplayName("Distance _ of Act 3 of Route 1 Should Work") + void distance_ofAct3ofRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(16., analyser.getDistanceAtActivity(route.getActivities().get(2), route), 0.01); } @Test - public void distance_ofAct4ofRoute1ShouldWork() { + @DisplayName("Distance _ of Act 4 of Route 1 Should Work") + void distance_ofAct4ofRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(27., analyser.getDistanceAtActivity(route.getActivities().get(3), route), 0.01); } @Test - public void distance_ofEndActOfRoute1ShouldWork() { + @DisplayName("Distance _ of End Act Of Route 1 Should Work") + void distance_ofEndActOfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(42., analyser.getDistanceAtActivity(route.getEnd(), route), 0.01); } - @Test - public void lateArrivalTimes_atStartActOfRoute1ShouldWork() { + @DisplayName("Late Arrival Times _ at Start Act Of Route 1 Should Work") + void lateArrivalTimes_atStartActOfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(0, analyser.getTimeWindowViolationAtActivity(route.getStart(), route), 0.01); } @Test - public void lateArrivalTimes_ofAct1ofRoute1ShouldWork() { + @DisplayName("Late Arrival Times _ of Act 1 of Route 1 Should Work") + void lateArrivalTimes_ofAct1ofRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(0., analyser.getTimeWindowViolationAtActivity(route.getActivities().get(0), route), 0.01); } @Test - public void lateArrivalTimes_ofAct2ofRoute1ShouldWork() { + @DisplayName("Late Arrival Times _ of Act 2 of Route 1 Should Work") + void lateArrivalTimes_ofAct2ofRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(0., analyser.getTimeWindowViolationAtActivity(route.getActivities().get(1), route), 0.01); } @Test - public void lateArrivalTimes_ofAct3ofRoute1ShouldWork() { + @DisplayName("Late Arrival Times _ of Act 3 of Route 1 Should Work") + void lateArrivalTimes_ofAct3ofRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(0., analyser.getTimeWindowViolationAtActivity(route.getActivities().get(2), route), 0.01); } @Test - public void lateArrivalTimes_ofAct4ofRoute1ShouldWork() { + @DisplayName("Late Arrival Times _ of Act 4 of Route 1 Should Work") + void lateArrivalTimes_ofAct4ofRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(0., analyser.getTimeWindowViolationAtActivity(route.getActivities().get(3), route), 0.01); } @Test - public void lateArrivalTimes_ofEndActOfRoute1ShouldWork() { + @DisplayName("Late Arrival Times _ of End Act Of Route 1 Should Work") + void lateArrivalTimes_ofEndActOfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(0., analyser.getTimeWindowViolationAtActivity(route.getEnd(), route), 0.01); } @Test - public void lateArrTimes_OfRoute1ShouldWork() { + @DisplayName("Late Arr Times _ Of Route 1 Should Work") + void lateArrTimes_OfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(0., analyser.getTimeWindowViolation(route), 0.01); } @Test - public void variableTransportCosts_OfRoute1ShouldWork() { + @DisplayName("Variable Transport Costs _ Of Route 1 Should Work") + void variableTransportCosts_OfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(84., analyser.getVariableTransportCosts(route), 0.01); } @Test - public void fixedCosts_OfRoute1ShouldWork() { + @DisplayName("Fixed Costs _ Of Route 1 Should Work") + void fixedCosts_OfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(100., analyser.getFixedCosts(route), 0.01); } @Test - public void transportCosts_atStartActOfRoute1ShouldWork() { + @DisplayName("Transport Costs _ at Start Act Of Route 1 Should Work") + void transportCosts_atStartActOfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(0, analyser.getVariableTransportCostsAtActivity(route.getStart(), route), 0.01); } @Test - public void transportCosts_ofAct1ofRoute1ShouldWork() { + @DisplayName("Transport Costs _ of Act 1 of Route 1 Should Work") + void transportCosts_ofAct1ofRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(6. * 2., analyser.getVariableTransportCostsAtActivity(route.getActivities().get(0), route), 0.01); } @Test - public void transportCosts_ofAct2ofRoute1ShouldWork() { + @DisplayName("Transport Costs _ of Act 2 of Route 1 Should Work") + void transportCosts_ofAct2ofRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(12. * 2., analyser.getVariableTransportCostsAtActivity(route.getActivities().get(1), route), 0.01); } @Test - public void transportCosts_ofAct3ofRoute1ShouldWork() { + @DisplayName("Transport Costs _ of Act 3 of Route 1 Should Work") + void transportCosts_ofAct3ofRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(16. * 2., analyser.getVariableTransportCostsAtActivity(route.getActivities().get(2), route), 0.01); } @Test - public void transportCosts_ofAct4ofRoute1ShouldWork() { + @DisplayName("Transport Costs _ of Act 4 of Route 1 Should Work") + void transportCosts_ofAct4ofRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(27. * 2., analyser.getVariableTransportCostsAtActivity(route.getActivities().get(3), route), 0.01); } @Test - public void transportCosts_ofEndActOfRoute1ShouldWork() { + @DisplayName("Transport Costs _ of End Act Of Route 1 Should Work") + void transportCosts_ofEndActOfRoute1ShouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); assertEquals(42. * 2., analyser.getVariableTransportCostsAtActivity(route.getEnd(), route), 0.01); } @Test - public void capacityViolationAtBeginning_shouldWork() { + @DisplayName("Capacity Violation At Beginning _ should Work") + void capacityViolationAtBeginning_shouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Capacity atBeginning = analyser.getCapacityViolationAtBeginning(route); @@ -903,7 +873,8 @@ public void capacityViolationAtBeginning_shouldWork() { } @Test - public void capacityViolationAtEnd_shouldWork() { + @DisplayName("Capacity Violation At End _ should Work") + void capacityViolationAtEnd_shouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Capacity atEnd = analyser.getCapacityViolationAtEnd(route); @@ -913,9 +884,9 @@ public void capacityViolationAtEnd_shouldWork() { } @Test - public void capacityViolationOnRoute_shouldWorkWhenViolated() { + @DisplayName("Capacity Violation On Route _ should Work When Violated") + void capacityViolationOnRoute_shouldWorkWhenViolated() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Capacity cap = analyser.getCapacityViolation(route); @@ -923,9 +894,9 @@ public void capacityViolationOnRoute_shouldWorkWhenViolated() { } @Test - public void capacityViolationAtEnd_shouldWorkWhenViolated() { + @DisplayName("Capacity Violation At End _ should Work When Violated") + void capacityViolationAtEnd_shouldWorkWhenViolated() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Capacity atEnd = analyser.getCapacityViolationAtEnd(route); @@ -933,7 +904,8 @@ public void capacityViolationAtEnd_shouldWorkWhenViolated() { } @Test - public void capacityViolationAfterStart_shouldWork() { + @DisplayName("Capacity Violation After Start _ should Work") + void capacityViolationAfterStart_shouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); TourActivity act = route.getStart(); @@ -943,22 +915,20 @@ public void capacityViolationAfterStart_shouldWork() { } } - @Test - public void capacityViolationAtBeginning_shouldWorkWhenViolated() { + @DisplayName("Capacity Violation At Beginning _ should Work When Violated") + void capacityViolationAtBeginning_shouldWorkWhenViolated() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Capacity cap = analyser.getCapacityViolationAtBeginning(route); assertEquals(25, cap.get(0)); } - @Test - public void capacityViolationAfterStart_shouldWorkWhenViolated() { + @DisplayName("Capacity Violation After Start _ should Work When Violated") + void capacityViolationAfterStart_shouldWorkWhenViolated() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Capacity cap = analyser.getCapacityViolationAfterActivity(route.getStart(), route); @@ -966,9 +936,9 @@ public void capacityViolationAfterStart_shouldWorkWhenViolated() { } @Test - public void capacityViolationAfterAct1_shouldWorkWhenViolated() { + @DisplayName("Capacity Violation After Act 1 _ should Work When Violated") + void capacityViolationAfterAct1_shouldWorkWhenViolated() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Capacity cap = analyser.getCapacityViolationAfterActivity(route.getActivities().get(0), route); @@ -976,9 +946,9 @@ public void capacityViolationAfterAct1_shouldWorkWhenViolated() { } @Test - public void capacityViolationAfterAct2_shouldWorkWhenViolated() { + @DisplayName("Capacity Violation After Act 2 _ should Work When Violated") + void capacityViolationAfterAct2_shouldWorkWhenViolated() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Capacity cap = analyser.getCapacityViolationAfterActivity(route.getActivities().get(1), route); @@ -986,9 +956,9 @@ public void capacityViolationAfterAct2_shouldWorkWhenViolated() { } @Test - public void capacityViolationAfterAct3_shouldWorkWhenViolated() { + @DisplayName("Capacity Violation After Act 3 _ should Work When Violated") + void capacityViolationAfterAct3_shouldWorkWhenViolated() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Capacity cap = analyser.getCapacityViolationAfterActivity(route.getActivities().get(2), route); @@ -996,9 +966,9 @@ public void capacityViolationAfterAct3_shouldWorkWhenViolated() { } @Test - public void capacityViolationAfterAct4_shouldWorkWhenViolated() { + @DisplayName("Capacity Violation After Act 4 _ should Work When Violated") + void capacityViolationAfterAct4_shouldWorkWhenViolated() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Capacity cap = analyser.getCapacityViolationAfterActivity(route.getActivities().get(3), route); @@ -1006,9 +976,9 @@ public void capacityViolationAfterAct4_shouldWorkWhenViolated() { } @Test - public void capacityViolationAfterAct5_shouldWorkWhenViolated() { + @DisplayName("Capacity Violation After Act 5 _ should Work When Violated") + void capacityViolationAfterAct5_shouldWorkWhenViolated() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Capacity cap = analyser.getCapacityViolationAfterActivity(route.getActivities().get(4), route); @@ -1016,9 +986,9 @@ public void capacityViolationAfterAct5_shouldWorkWhenViolated() { } @Test - public void capacityViolationAfterAct6_shouldWorkWhenViolated() { + @DisplayName("Capacity Violation After Act 6 _ should Work When Violated") + void capacityViolationAfterAct6_shouldWorkWhenViolated() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Capacity cap = analyser.getCapacityViolationAfterActivity(route.getActivities().get(5), route); @@ -1026,9 +996,9 @@ public void capacityViolationAfterAct6_shouldWorkWhenViolated() { } @Test - public void capacityViolationAfterAct7_shouldWorkWhenViolated() { + @DisplayName("Capacity Violation After Act 7 _ should Work When Violated") + void capacityViolationAfterAct7_shouldWorkWhenViolated() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Capacity cap = analyser.getCapacityViolationAfterActivity(route.getActivities().get(6), route); @@ -1036,9 +1006,9 @@ public void capacityViolationAfterAct7_shouldWorkWhenViolated() { } @Test - public void capacityViolationAfterAct8_shouldWorkWhenViolated() { + @DisplayName("Capacity Violation After Act 8 _ should Work When Violated") + void capacityViolationAfterAct8_shouldWorkWhenViolated() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Capacity cap = analyser.getCapacityViolationAfterActivity(route.getActivities().get(7), route); @@ -1046,9 +1016,9 @@ public void capacityViolationAfterAct8_shouldWorkWhenViolated() { } @Test - public void capacityViolationAfterEnd_shouldWorkWhenViolated() { + @DisplayName("Capacity Violation After End _ should Work When Violated") + void capacityViolationAfterEnd_shouldWorkWhenViolated() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Capacity cap = analyser.getCapacityViolationAfterActivity(route.getEnd(), route); @@ -1056,7 +1026,8 @@ public void capacityViolationAfterEnd_shouldWorkWhenViolated() { } @Test - public void capacityViolationAfterAct1_shouldWork() { + @DisplayName("Capacity Violation After Act 1 _ should Work") + void capacityViolationAfterAct1_shouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); TourActivity act = route.getActivities().get(0); @@ -1067,7 +1038,8 @@ public void capacityViolationAfterAct1_shouldWork() { } @Test - public void capacityViolationAfterAct2_shouldWork() { + @DisplayName("Capacity Violation After Act 2 _ should Work") + void capacityViolationAfterAct2_shouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); TourActivity act = route.getActivities().get(1); @@ -1078,7 +1050,8 @@ public void capacityViolationAfterAct2_shouldWork() { } @Test - public void capacityViolationAfterAct3_shouldWork() { + @DisplayName("Capacity Violation After Act 3 _ should Work") + void capacityViolationAfterAct3_shouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); TourActivity act = route.getActivities().get(2); @@ -1089,7 +1062,8 @@ public void capacityViolationAfterAct3_shouldWork() { } @Test - public void capacityViolationAfterAct4_shouldWork() { + @DisplayName("Capacity Violation After Act 4 _ should Work") + void capacityViolationAfterAct4_shouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); TourActivity act = route.getActivities().get(3); @@ -1100,7 +1074,8 @@ public void capacityViolationAfterAct4_shouldWork() { } @Test - public void capacityViolationAfterEnd_shouldWork() { + @DisplayName("Capacity Violation After End _ should Work") + void capacityViolationAfterEnd_shouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); TourActivity act = route.getEnd(); @@ -1111,7 +1086,8 @@ public void capacityViolationAfterEnd_shouldWork() { } @Test - public void timeWindowViolation_shouldWork() { + @DisplayName("Time Window Violation _ should Work") + void timeWindowViolation_shouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Double violation = analyser.getTimeWindowViolation(route); @@ -1119,9 +1095,9 @@ public void timeWindowViolation_shouldWork() { } @Test - public void timeWindowViolation_shouldWorkWhenViolated() { + @DisplayName("Time Window Violation _ should Work When Violated") + void timeWindowViolation_shouldWorkWhenViolated() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Double violation = analyser.getTimeWindowViolation(route); @@ -1129,9 +1105,9 @@ public void timeWindowViolation_shouldWorkWhenViolated() { } @Test - public void timeWindowViolationAtStart_shouldWorkWhenViolated() { + @DisplayName("Time Window Violation At Start _ should Work When Violated") + void timeWindowViolationAtStart_shouldWorkWhenViolated() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Double violation = analyser.getTimeWindowViolationAtActivity(route.getStart(), route); @@ -1139,9 +1115,9 @@ public void timeWindowViolationAtStart_shouldWorkWhenViolated() { } @Test - public void timeWindowViolationAtAct1_shouldWorkWhenViolated() { + @DisplayName("Time Window Violation At Act 1 _ should Work When Violated") + void timeWindowViolationAtAct1_shouldWorkWhenViolated() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Double violation = analyser.getTimeWindowViolationAtActivity(route.getActivities().get(0), route); @@ -1149,9 +1125,9 @@ public void timeWindowViolationAtAct1_shouldWorkWhenViolated() { } @Test - public void timeWindowViolationAtAct2_shouldWorkWhenViolated() { + @DisplayName("Time Window Violation At Act 2 _ should Work When Violated") + void timeWindowViolationAtAct2_shouldWorkWhenViolated() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Double violation = analyser.getTimeWindowViolationAtActivity(route.getActivities().get(1), route); @@ -1159,9 +1135,9 @@ public void timeWindowViolationAtAct2_shouldWorkWhenViolated() { } @Test - public void timeWindowViolationAtAct3_shouldWorkWhenViolated() { + @DisplayName("Time Window Violation At Act 3 _ should Work When Violated") + void timeWindowViolationAtAct3_shouldWorkWhenViolated() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Double violation = analyser.getTimeWindowViolationAtActivity(route.getActivities().get(2), route); @@ -1169,9 +1145,9 @@ public void timeWindowViolationAtAct3_shouldWorkWhenViolated() { } @Test - public void timeWindowViolationAtAct4_shouldWorkWhenViolated() { + @DisplayName("Time Window Violation At Act 4 _ should Work When Violated") + void timeWindowViolationAtAct4_shouldWorkWhenViolated() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Double violation = analyser.getTimeWindowViolationAtActivity(route.getActivities().get(3), route); @@ -1179,9 +1155,9 @@ public void timeWindowViolationAtAct4_shouldWorkWhenViolated() { } @Test - public void timeWindowViolationAtAct5_shouldWorkWhenViolated() { + @DisplayName("Time Window Violation At Act 5 _ should Work When Violated") + void timeWindowViolationAtAct5_shouldWorkWhenViolated() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Double violation = analyser.getTimeWindowViolationAtActivity(route.getActivities().get(4), route); @@ -1189,9 +1165,9 @@ public void timeWindowViolationAtAct5_shouldWorkWhenViolated() { } @Test - public void timeWindowViolationAtAct6_shouldWorkWhenViolated() { + @DisplayName("Time Window Violation At Act 6 _ should Work When Violated") + void timeWindowViolationAtAct6_shouldWorkWhenViolated() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Double violation = analyser.getTimeWindowViolationAtActivity(route.getActivities().get(5), route); @@ -1199,9 +1175,9 @@ public void timeWindowViolationAtAct6_shouldWorkWhenViolated() { } @Test - public void timeWindowViolationAtAct7_shouldWorkWhenViolated() { + @DisplayName("Time Window Violation At Act 7 _ should Work When Violated") + void timeWindowViolationAtAct7_shouldWorkWhenViolated() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Double violation = analyser.getTimeWindowViolationAtActivity(route.getActivities().get(6), route); @@ -1209,9 +1185,9 @@ public void timeWindowViolationAtAct7_shouldWorkWhenViolated() { } @Test - public void timeWindowViolationAtAct8_shouldWorkWhenViolated() { + @DisplayName("Time Window Violation At Act 8 _ should Work When Violated") + void timeWindowViolationAtAct8_shouldWorkWhenViolated() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Double violation = analyser.getTimeWindowViolationAtActivity(route.getActivities().get(7), route); @@ -1219,9 +1195,9 @@ public void timeWindowViolationAtAct8_shouldWorkWhenViolated() { } @Test - public void timeWindowViolationAtEnd_shouldWorkWhenViolated() { + @DisplayName("Time Window Violation At End _ should Work When Violated") + void timeWindowViolationAtEnd_shouldWorkWhenViolated() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Double violation = analyser.getTimeWindowViolationAtActivity(route.getEnd(), route); @@ -1229,7 +1205,8 @@ public void timeWindowViolationAtEnd_shouldWorkWhenViolated() { } @Test - public void backhaulViolation_shouldWorkWhenViolated() { + @DisplayName("Backhaul Violation _ should Work When Violated") + void backhaulViolation_shouldWorkWhenViolated() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1238,7 +1215,8 @@ public void backhaulViolation_shouldWorkWhenViolated() { } @Test - public void backhaulViolationAtStart_shouldWork() { + @DisplayName("Backhaul Violation At Start _ should Work") + void backhaulViolationAtStart_shouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); @@ -1247,10 +1225,9 @@ public void backhaulViolationAtStart_shouldWork() { } @Test - public void backhaulViolationAtAct1_shouldWork() { + @DisplayName("Backhaul Violation At Act 1 _ should Work") + void backhaulViolationAtAct1_shouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); - - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Boolean violation = analyser.hasBackhaulConstraintViolationAtActivity(route.getActivities().get(0), route); @@ -1258,9 +1235,9 @@ public void backhaulViolationAtAct1_shouldWork() { } @Test - public void backhaulViolationAtAct2_shouldWork() { + @DisplayName("Backhaul Violation At Act 2 _ should Work") + void backhaulViolationAtAct2_shouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Boolean violation = analyser.hasBackhaulConstraintViolationAtActivity(route.getActivities().get(1), route); @@ -1268,9 +1245,9 @@ public void backhaulViolationAtAct2_shouldWork() { } @Test - public void backhaulViolationAtAct3_shouldWork() { + @DisplayName("Backhaul Violation At Act 3 _ should Work") + void backhaulViolationAtAct3_shouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Boolean violation = analyser.hasBackhaulConstraintViolationAtActivity(route.getActivities().get(2), route); @@ -1278,9 +1255,9 @@ public void backhaulViolationAtAct3_shouldWork() { } @Test - public void backhaulViolationAtAct4_shouldWork() { + @DisplayName("Backhaul Violation At Act 4 _ should Work") + void backhaulViolationAtAct4_shouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Boolean violation = analyser.hasBackhaulConstraintViolationAtActivity(route.getActivities().get(3), route); @@ -1288,9 +1265,9 @@ public void backhaulViolationAtAct4_shouldWork() { } @Test - public void backhaulViolationAtAct5_shouldWork() { + @DisplayName("Backhaul Violation At Act 5 _ should Work") + void backhaulViolationAtAct5_shouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Boolean violation = analyser.hasBackhaulConstraintViolationAtActivity(route.getActivities().get(4), route); @@ -1298,9 +1275,9 @@ public void backhaulViolationAtAct5_shouldWork() { } @Test - public void backhaulViolationAtAct6_shouldWork() { + @DisplayName("Backhaul Violation At Act 6 _ should Work") + void backhaulViolationAtAct6_shouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Boolean violation = analyser.hasBackhaulConstraintViolationAtActivity(route.getActivities().get(5), route); @@ -1308,9 +1285,9 @@ public void backhaulViolationAtAct6_shouldWork() { } @Test - public void backhaulViolationAtAct7_shouldWork() { + @DisplayName("Backhaul Violation At Act 7 _ should Work") + void backhaulViolationAtAct7_shouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Boolean violation = analyser.hasBackhaulConstraintViolationAtActivity(route.getActivities().get(6), route); @@ -1318,9 +1295,9 @@ public void backhaulViolationAtAct7_shouldWork() { } @Test - public void backhaulViolationAtAct8_shouldWork() { + @DisplayName("Backhaul Violation At Act 8 _ should Work") + void backhaulViolationAtAct8_shouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Boolean violation = analyser.hasBackhaulConstraintViolationAtActivity(route.getActivities().get(7), route); @@ -1328,9 +1305,9 @@ public void backhaulViolationAtAct8_shouldWork() { } @Test - public void backhaulViolationAtEnd_shouldWork() { + @DisplayName("Backhaul Violation At End _ should Work") + void backhaulViolationAtEnd_shouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Boolean violation = analyser.hasBackhaulConstraintViolationAtActivity(route.getEnd(), route); @@ -1338,9 +1315,9 @@ public void backhaulViolationAtEnd_shouldWork() { } @Test - public void shipmentViolationAtStart_shouldWork() { + @DisplayName("Shipment Violation At Start _ should Work") + void shipmentViolationAtStart_shouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Boolean violation = analyser.hasShipmentConstraintViolationAtActivity(route.getStart(), route); @@ -1348,9 +1325,9 @@ public void shipmentViolationAtStart_shouldWork() { } @Test - public void shipmentViolationAtAct1_shouldWork() { + @DisplayName("Shipment Violation At Act 1 _ should Work") + void shipmentViolationAtAct1_shouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Boolean violation = analyser.hasBackhaulConstraintViolationAtActivity(route.getActivities().get(0), route); @@ -1358,9 +1335,9 @@ public void shipmentViolationAtAct1_shouldWork() { } @Test - public void shipmentViolationAtAct2_shouldWork() { + @DisplayName("Shipment Violation At Act 2 _ should Work") + void shipmentViolationAtAct2_shouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Boolean violation = analyser.hasBackhaulConstraintViolationAtActivity(route.getActivities().get(1), route); @@ -1368,9 +1345,9 @@ public void shipmentViolationAtAct2_shouldWork() { } @Test - public void shipmentViolationAtAct3_shouldWork() { + @DisplayName("Shipment Violation At Act 3 _ should Work") + void shipmentViolationAtAct3_shouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Boolean violation = analyser.hasBackhaulConstraintViolationAtActivity(route.getActivities().get(2), route); @@ -1378,9 +1355,9 @@ public void shipmentViolationAtAct3_shouldWork() { } @Test - public void shipmentViolationAtAct4_shouldWork() { + @DisplayName("Shipment Violation At Act 4 _ should Work") + void shipmentViolationAtAct4_shouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Boolean violation = analyser.hasBackhaulConstraintViolationAtActivity(route.getActivities().get(3), route); @@ -1388,9 +1365,9 @@ public void shipmentViolationAtAct4_shouldWork() { } @Test - public void shipmentViolationAtAct5_shouldWork() { + @DisplayName("Shipment Violation At Act 5 _ should Work") + void shipmentViolationAtAct5_shouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Boolean violation = analyser.hasBackhaulConstraintViolationAtActivity(route.getActivities().get(4), route); @@ -1398,9 +1375,9 @@ public void shipmentViolationAtAct5_shouldWork() { } @Test - public void shipmentViolationAtAct6_shouldWork() { + @DisplayName("Shipment Violation At Act 6 _ should Work") + void shipmentViolationAtAct6_shouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Boolean violation = analyser.hasBackhaulConstraintViolationAtActivity(route.getActivities().get(5), route); @@ -1408,9 +1385,9 @@ public void shipmentViolationAtAct6_shouldWork() { } @Test - public void shipmentViolationAtAct7_shouldWork() { + @DisplayName("Shipment Violation At Act 7 _ should Work") + void shipmentViolationAtAct7_shouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Boolean violation = analyser.hasBackhaulConstraintViolationAtActivity(route.getActivities().get(6), route); @@ -1418,9 +1395,9 @@ public void shipmentViolationAtAct7_shouldWork() { } @Test - public void shipmentViolationAtAct8_shouldWork() { + @DisplayName("Shipment Violation At Act 8 _ should Work") + void shipmentViolationAtAct8_shouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Boolean violation = analyser.hasBackhaulConstraintViolationAtActivity(route.getActivities().get(7), route); @@ -1428,9 +1405,9 @@ public void shipmentViolationAtAct8_shouldWork() { } @Test - public void shipmentViolationAtEnd_shouldWork() { + @DisplayName("Shipment Violation At End _ should Work") + void shipmentViolationAtEnd_shouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Boolean violation = analyser.hasBackhaulConstraintViolationAtActivity(route.getEnd(), route); @@ -1438,9 +1415,9 @@ public void shipmentViolationAtEnd_shouldWork() { } @Test - public void shipmentViolation_shouldWork() { + @DisplayName("Shipment Violation _ should Work") + void shipmentViolation_shouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Boolean violation = analyser.hasShipmentConstraintViolation(route); @@ -1448,89 +1425,84 @@ public void shipmentViolation_shouldWork() { } @Test - public void shipmentViolation_shouldWorkWhenViolated() { + @DisplayName("Shipment Violation _ should Work When Violated") + void shipmentViolation_shouldWorkWhenViolated() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); VehicleRoute route = solution.getRoutes().iterator().next(); TourActivity deliverShipment = route.getActivities().get(2); route.getTourActivities().removeActivity(deliverShipment); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); - Boolean violation = analyser.hasShipmentConstraintViolation(route); assertTrue(violation); } @Test - public void shipmentViolationAtActivity_shouldWorkWhenRemovingDelivery() { + @DisplayName("Shipment Violation At Activity _ should Work When Removing Delivery") + void shipmentViolationAtActivity_shouldWorkWhenRemovingDelivery() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); VehicleRoute route = solution.getRoutes().iterator().next(); TourActivity deliverShipment = route.getActivities().get(2); route.getTourActivities().removeActivity(deliverShipment); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); - Boolean violation = analyser.hasShipmentConstraintViolationAtActivity(route.getActivities().get(1), route); assertTrue(violation); } @Test - public void shipmentViolation_shouldWorkWhenRemovingDelivery() { + @DisplayName("Shipment Violation _ should Work When Removing Delivery") + void shipmentViolation_shouldWorkWhenRemovingDelivery() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); VehicleRoute route = solution.getRoutes().iterator().next(); TourActivity deliverShipment = route.getActivities().get(2); route.getTourActivities().removeActivity(deliverShipment); assertFalse(route.getActivities().contains(deliverShipment)); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); - Boolean violation = analyser.hasShipmentConstraintViolation(route); assertTrue(violation); } @Test - public void shipmentViolationAtActivity_shouldWorkWhenRemovingPickup() { + @DisplayName("Shipment Violation At Activity _ should Work When Removing Pickup") + void shipmentViolationAtActivity_shouldWorkWhenRemovingPickup() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); VehicleRoute route = solution.getRoutes().iterator().next(); TourActivity pickupShipment = route.getActivities().get(1); route.getTourActivities().removeActivity(pickupShipment); assertFalse(route.getActivities().contains(pickupShipment)); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); - Boolean violation = analyser.hasShipmentConstraintViolationAtActivity(route.getActivities().get(1), route); assertTrue(violation); } @Test - public void shipmentViolationOnRoute_shouldWorkWhenRemovingPickup() { + @DisplayName("Shipment Violation On Route _ should Work When Removing Pickup") + void shipmentViolationOnRoute_shouldWorkWhenRemovingPickup() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); VehicleRoute route = solution.getRoutes().iterator().next(); TourActivity pickupShipment = route.getActivities().get(1); route.getTourActivities().removeActivity(pickupShipment); assertFalse(route.getActivities().contains(pickupShipment)); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); - Boolean violation = analyser.hasShipmentConstraintViolation(route); assertTrue(violation); } @Test - public void shipmentViolationOnSolution_shouldWorkWhenRemovingPickup() { + @DisplayName("Shipment Violation On Solution _ should Work When Removing Pickup") + void shipmentViolationOnSolution_shouldWorkWhenRemovingPickup() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); VehicleRoute route = solution.getRoutes().iterator().next(); TourActivity pickupShipment = route.getActivities().get(1); route.getTourActivities().removeActivity(pickupShipment); assertFalse(route.getActivities().contains(pickupShipment)); - SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); - Boolean violation = analyser.hasShipmentConstraintViolation(); assertTrue(violation); } @Test - public void skillViolationOnRoute_shouldWorkWhenViolated() { + @DisplayName("Skill Violation On Route _ should Work When Violated") + void skillViolationOnRoute_shouldWorkWhenViolated() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Boolean violated = analyser.hasSkillConstraintViolation(route); @@ -1538,7 +1510,8 @@ public void skillViolationOnRoute_shouldWorkWhenViolated() { } @Test - public void skillViolationAtStart_shouldWork() { + @DisplayName("Skill Violation At Start _ should Work") + void skillViolationAtStart_shouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Boolean violated = analyser.hasSkillConstraintViolationAtActivity(route.getStart(), route); @@ -1546,7 +1519,8 @@ public void skillViolationAtStart_shouldWork() { } @Test - public void skillViolationAtAct1_shouldWork() { + @DisplayName("Skill Violation At Act 1 _ should Work") + void skillViolationAtAct1_shouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Boolean violated = analyser.hasSkillConstraintViolationAtActivity(route.getActivities().get(0), route); @@ -1554,7 +1528,8 @@ public void skillViolationAtAct1_shouldWork() { } @Test - public void skillViolationAtAct2_shouldWork() { + @DisplayName("Skill Violation At Act 2 _ should Work") + void skillViolationAtAct2_shouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Boolean violated = analyser.hasSkillConstraintViolationAtActivity(route.getActivities().get(1), route); @@ -1562,7 +1537,8 @@ public void skillViolationAtAct2_shouldWork() { } @Test - public void skillViolationAtAct3_shouldWork() { + @DisplayName("Skill Violation At Act 3 _ should Work") + void skillViolationAtAct3_shouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Boolean violated = analyser.hasSkillConstraintViolationAtActivity(route.getActivities().get(2), route); @@ -1570,7 +1546,8 @@ public void skillViolationAtAct3_shouldWork() { } @Test - public void skillViolationAtAct4_shouldWork() { + @DisplayName("Skill Violation At Act 4 _ should Work") + void skillViolationAtAct4_shouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Boolean violated = analyser.hasSkillConstraintViolationAtActivity(route.getActivities().get(3), route); @@ -1578,18 +1555,18 @@ public void skillViolationAtAct4_shouldWork() { } @Test - public void skillViolationAtEnd_shouldWork() { + @DisplayName("Skill Violation At End _ should Work") + void skillViolationAtEnd_shouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); VehicleRoute route = solution.getRoutes().iterator().next(); Boolean violated = analyser.hasSkillConstraintViolationAtActivity(route.getEnd(), route); assertFalse(violated); } - @Test - public void skillViolationOnRoute_shouldWorkWhenNotViolated() { + @DisplayName("Skill Violation On Route _ should Work When Not Violated") + void skillViolationOnRoute_shouldWorkWhenNotViolated() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); - Iterator iterator = solution.getRoutes().iterator(); iterator.next(); VehicleRoute route = iterator.next(); @@ -1598,21 +1575,24 @@ public void skillViolationOnRoute_shouldWorkWhenNotViolated() { } @Test - public void skillViolationOnSolution_shouldWork() { + @DisplayName("Skill Violation On Solution _ should Work") + void skillViolationOnSolution_shouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); Boolean violated = analyser.hasSkillConstraintViolation(); assertTrue(violated); } @Test - public void backhaulViolationOnSolution_shouldWork() { + @DisplayName("Backhaul Violation On Solution _ should Work") + void backhaulViolationOnSolution_shouldWork() { SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); Boolean violated = analyser.hasBackhaulConstraintViolation(); assertFalse(violated); } @Test - public void backhaulViolationOnSolution_shouldWorkWhenViolated() { + @DisplayName("Backhaul Violation On Solution _ should Work When Violated") + void backhaulViolationOnSolution_shouldWorkWhenViolated() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); Boolean violated = analyser.hasBackhaulConstraintViolation(); @@ -1620,7 +1600,8 @@ public void backhaulViolationOnSolution_shouldWorkWhenViolated() { } @Test - public void shipmentViolationOnSolution_shouldWork() { + @DisplayName("Shipment Violation On Solution _ should Work") + void shipmentViolationOnSolution_shouldWork() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); Boolean violated = analyser.hasShipmentConstraintViolation(); @@ -1628,7 +1609,8 @@ public void shipmentViolationOnSolution_shouldWork() { } @Test - public void skillViolationOnSolution_shouldWorkWhenNotViolated() { + @DisplayName("Skill Violation On Solution _ should Work When Not Violated") + void skillViolationOnSolution_shouldWorkWhenNotViolated() { buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore(); SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts()); Boolean violated = analyser.hasSkillConstraintViolation(); @@ -1636,12 +1618,11 @@ public void skillViolationOnSolution_shouldWorkWhenNotViolated() { } @Test - public void shouldWorkWithRouteWithoutActivities() { + @DisplayName("Should Work With Route Without Activities") + void shouldWorkWithRouteWithoutActivities() { try { - Vehicle vehicle = VehicleImpl.Builder.newInstance("vehicle").setStartLocation(Location.newInstance(0, 0)) - .setEndLocation(Location.newInstance(10, 0)).build(); + Vehicle vehicle = VehicleImpl.Builder.newInstance("vehicle").setStartLocation(Location.newInstance(0, 0)).setEndLocation(Location.newInstance(10, 0)).build(); VehicleRoute vehicleRoute = VehicleRoute.Builder.newInstance(vehicle).build(); - VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle).build(); VehicleRoutingProblemSolution solution = new VehicleRoutingProblemSolution(Collections.singletonList(vehicleRoute), 0); new SolutionAnalyser(vrp, solution, (from, to, departureTime, vehicle1) -> 100); @@ -1650,5 +1631,4 @@ public void shouldWorkWithRouteWithoutActivities() { fail(); } } - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/CapacityTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/CapacityTest.java index f8e5f089f..a5173fd77 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/CapacityTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/CapacityTest.java @@ -17,17 +17,19 @@ */ package com.graphhopper.jsprit.core.problem; -import org.junit.Assert; -import org.junit.Test; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.Random; -import static org.junit.Assert.*; +import static org.junit.jupiter.api.Assertions.*; -public class CapacityTest { +@DisplayName("Capacity Test") +class CapacityTest { @Test - public void whenSettingSimplyOneCapDimension_nuOfDimensionMustBeCorrect() { + @DisplayName("When Setting Simply One Cap Dimension _ nu Of Dimension Must Be Correct") + void whenSettingSimplyOneCapDimension_nuOfDimensionMustBeCorrect() { Capacity.Builder capBuilder = Capacity.Builder.newInstance(); capBuilder.addDimension(0, 4); Capacity cap = capBuilder.build(); @@ -35,7 +37,8 @@ public void whenSettingSimplyOneCapDimension_nuOfDimensionMustBeCorrect() { } @Test - public void whenSettingTwoCapDimension_nuOfDimensionMustBeCorrect() { + @DisplayName("When Setting Two Cap Dimension _ nu Of Dimension Must Be Correct") + void whenSettingTwoCapDimension_nuOfDimensionMustBeCorrect() { Capacity.Builder capBuilder = Capacity.Builder.newInstance(); capBuilder.addDimension(0, 4); capBuilder.addDimension(1, 10); @@ -44,7 +47,8 @@ public void whenSettingTwoCapDimension_nuOfDimensionMustBeCorrect() { } @Test - public void whenSettingRandomNuOfCapDimension_nuOfDimensionMustBeCorrect() { + @DisplayName("When Setting Random Nu Of Cap Dimension _ nu Of Dimension Must Be Correct") + void whenSettingRandomNuOfCapDimension_nuOfDimensionMustBeCorrect() { Random rand = new Random(); int nuOfCapDimensions = 1 + rand.nextInt(100); Capacity.Builder capBuilder = Capacity.Builder.newInstance(); @@ -54,7 +58,8 @@ public void whenSettingRandomNuOfCapDimension_nuOfDimensionMustBeCorrect() { } @Test - public void whenSettingOneDimValue_valueMustBeCorrect() { + @DisplayName("When Setting One Dim Value _ value Must Be Correct") + void whenSettingOneDimValue_valueMustBeCorrect() { Capacity.Builder capBuilder = Capacity.Builder.newInstance(); capBuilder.addDimension(0, 4); Capacity cap = capBuilder.build(); @@ -62,7 +67,8 @@ public void whenSettingOneDimValue_valueMustBeCorrect() { } @Test - public void whenGettingIndexWhichIsHigherThanNuOfCapDimensions_itShouldReturn0() { + @DisplayName("When Getting Index Which Is Higher Than Nu Of Cap Dimensions _ it Should Return 0") + void whenGettingIndexWhichIsHigherThanNuOfCapDimensions_itShouldReturn0() { Capacity.Builder capBuilder = Capacity.Builder.newInstance(); capBuilder.addDimension(0, 4); Capacity cap = capBuilder.build(); @@ -70,7 +76,8 @@ public void whenGettingIndexWhichIsHigherThanNuOfCapDimensions_itShouldReturn0() } @Test - public void whenSettingNoDim_DefaultIsOneDimWithDimValueOfZero() { + @DisplayName("When Setting No Dim _ Default Is One Dim With Dim Value Of Zero") + void whenSettingNoDim_DefaultIsOneDimWithDimValueOfZero() { Capacity.Builder capBuilder = Capacity.Builder.newInstance(); Capacity cap = capBuilder.build(); assertEquals(1, cap.getNuOfDimensions()); @@ -78,36 +85,38 @@ public void whenSettingNoDim_DefaultIsOneDimWithDimValueOfZero() { } @Test - public void whenCopyingCapacityWithTwoCapDim_copiedObjShouldHvSameNuOfDims() { + @DisplayName("When Copying Capacity With Two Cap Dim _ copied Obj Should Hv Same Nu Of Dims") + void whenCopyingCapacityWithTwoCapDim_copiedObjShouldHvSameNuOfDims() { Capacity.Builder capBuilder = Capacity.Builder.newInstance(); capBuilder.addDimension(0, 4); capBuilder.addDimension(1, 10); Capacity cap = capBuilder.build(); - Capacity copiedCapacity = Capacity.copyOf(cap); assertEquals(2, copiedCapacity.getNuOfDimensions()); } @Test - public void whenCopyingCapacityWithTwoCapDim_copiedObjShouldHvSameValues() { + @DisplayName("When Copying Capacity With Two Cap Dim _ copied Obj Should Hv Same Values") + void whenCopyingCapacityWithTwoCapDim_copiedObjShouldHvSameValues() { Capacity.Builder capBuilder = Capacity.Builder.newInstance(); capBuilder.addDimension(0, 4); capBuilder.addDimension(1, 10); Capacity cap = capBuilder.build(); - Capacity copiedCapacity = Capacity.copyOf(cap); assertEquals(4, copiedCapacity.get(0)); assertEquals(10, copiedCapacity.get(1)); } @Test - public void whenCopyingNull_itShouldReturnNull() { + @DisplayName("When Copying Null _ it Should Return Null") + void whenCopyingNull_itShouldReturnNull() { Capacity nullCap = Capacity.copyOf(null); assertTrue(nullCap == null); } @Test - public void whenAddingUpTwoOneDimensionalCapacities_itShouldReturnCorrectCapacityValues() { + @DisplayName("When Adding Up Two One Dimensional Capacities _ it Should Return Correct Capacity Values") + void whenAddingUpTwoOneDimensionalCapacities_itShouldReturnCorrectCapacityValues() { Capacity cap1 = Capacity.Builder.newInstance().addDimension(0, 1).build(); Capacity cap2 = Capacity.Builder.newInstance().addDimension(0, 2).build(); Capacity result = Capacity.addup(cap1, cap2); @@ -115,7 +124,8 @@ public void whenAddingUpTwoOneDimensionalCapacities_itShouldReturnCorrectCapacit } @Test - public void whenAddingUpTwoOneDimensionalCapacities_itShouldReturnCorrectNuOfDimensions() { + @DisplayName("When Adding Up Two One Dimensional Capacities _ it Should Return Correct Nu Of Dimensions") + void whenAddingUpTwoOneDimensionalCapacities_itShouldReturnCorrectNuOfDimensions() { Capacity cap1 = Capacity.Builder.newInstance().addDimension(0, 1).build(); Capacity cap2 = Capacity.Builder.newInstance().addDimension(0, 2).build(); Capacity result = Capacity.addup(cap1, cap2); @@ -123,7 +133,8 @@ public void whenAddingUpTwoOneDimensionalCapacities_itShouldReturnCorrectNuOfDim } @Test - public void whenAddingUpTwoThreeDimensionalCapacities_itShouldReturnCorrectNuOfDimensions() { + @DisplayName("When Adding Up Two Three Dimensional Capacities _ it Should Return Correct Nu Of Dimensions") + void whenAddingUpTwoThreeDimensionalCapacities_itShouldReturnCorrectNuOfDimensions() { Capacity cap1 = Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 2).addDimension(2, 3).build(); Capacity cap2 = Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 3).addDimension(2, 4).build(); Capacity result = Capacity.addup(cap1, cap2); @@ -131,7 +142,8 @@ public void whenAddingUpTwoThreeDimensionalCapacities_itShouldReturnCorrectNuOfD } @Test - public void whenAddingUpTwoThreeDimensionalCapacities_itShouldReturnCorrectCapValues() { + @DisplayName("When Adding Up Two Three Dimensional Capacities _ it Should Return Correct Cap Values") + void whenAddingUpTwoThreeDimensionalCapacities_itShouldReturnCorrectCapValues() { Capacity cap1 = Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 2).addDimension(2, 3).build(); Capacity cap2 = Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 3).addDimension(2, 4).build(); Capacity result = Capacity.addup(cap1, cap2); @@ -148,16 +160,19 @@ public void whenAddingUpTwoCapacitiesWithDifferentNuOfDimensions_itShouldAddThem assertEquals(2, result.get(1)); } - @Test(expected = NullPointerException.class) - public void whenOneOfArgsIsNullWhenAdding_itShouldThrowException() { - Capacity cap1 = Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 2).build(); - @SuppressWarnings("unused") - Capacity result = Capacity.addup(cap1, null); + @Test + @DisplayName("When One Of Args Is Null When Adding _ it Should Throw Exception") + void whenOneOfArgsIsNullWhenAdding_itShouldThrowException() { + assertThrows(NullPointerException.class, () -> { + Capacity cap1 = Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 2).build(); + @SuppressWarnings("unused") + Capacity result = Capacity.addup(cap1, null); + }); } - @Test - public void whenSubtractingTwoOneDimensionalCapacities_itShouldReturnCorrectCapacityValues() { + @DisplayName("When Subtracting Two One Dimensional Capacities _ it Should Return Correct Capacity Values") + void whenSubtractingTwoOneDimensionalCapacities_itShouldReturnCorrectCapacityValues() { Capacity cap1 = Capacity.Builder.newInstance().addDimension(0, 1).build(); Capacity cap2 = Capacity.Builder.newInstance().addDimension(0, 2).build(); Capacity result = Capacity.subtract(cap2, cap1); @@ -165,7 +180,8 @@ public void whenSubtractingTwoOneDimensionalCapacities_itShouldReturnCorrectCapa } @Test - public void whenSubtractingTwoOneDimensionalCapacities_itShouldReturnCorrectNuOfDimensions() { + @DisplayName("When Subtracting Two One Dimensional Capacities _ it Should Return Correct Nu Of Dimensions") + void whenSubtractingTwoOneDimensionalCapacities_itShouldReturnCorrectNuOfDimensions() { Capacity cap1 = Capacity.Builder.newInstance().addDimension(0, 1).build(); Capacity cap2 = Capacity.Builder.newInstance().addDimension(0, 2).build(); Capacity result = Capacity.subtract(cap2, cap1); @@ -173,7 +189,8 @@ public void whenSubtractingTwoOneDimensionalCapacities_itShouldReturnCorrectNuOf } @Test - public void whenSubtractingTwoThreeDimensionalCapacities_itShouldReturnCorrectNuOfDimensions() { + @DisplayName("When Subtracting Two Three Dimensional Capacities _ it Should Return Correct Nu Of Dimensions") + void whenSubtractingTwoThreeDimensionalCapacities_itShouldReturnCorrectNuOfDimensions() { Capacity cap1 = Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 2).addDimension(2, 3).build(); Capacity cap2 = Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 3).addDimension(2, 4).build(); Capacity result = Capacity.subtract(cap2, cap1); @@ -181,7 +198,8 @@ public void whenSubtractingTwoThreeDimensionalCapacities_itShouldReturnCorrectNu } @Test - public void whenSubtractingTwoThreeDimensionalCapacities_itShouldReturnCorrectCapValues() { + @DisplayName("When Subtracting Two Three Dimensional Capacities _ it Should Return Correct Cap Values") + void whenSubtractingTwoThreeDimensionalCapacities_itShouldReturnCorrectCapValues() { Capacity cap1 = Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 2).addDimension(2, 3).build(); Capacity cap2 = Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 3).addDimension(2, 4).build(); Capacity result = Capacity.subtract(cap2, cap1); @@ -191,7 +209,8 @@ public void whenSubtractingTwoThreeDimensionalCapacities_itShouldReturnCorrectCa } @Test - public void whenSubtractingTwoCapacitiesWithDifferentNuOfDimensions_itShouldSubtractCorrectly() { + @DisplayName("When Subtracting Two Capacities With Different Nu Of Dimensions _ it Should Subtract Correctly") + void whenSubtractingTwoCapacitiesWithDifferentNuOfDimensions_itShouldSubtractCorrectly() { Capacity cap1 = Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 2).build(); Capacity cap2 = Capacity.Builder.newInstance().addDimension(0, 2).build(); Capacity result = Capacity.subtract(cap2, cap1); @@ -199,15 +218,19 @@ public void whenSubtractingTwoCapacitiesWithDifferentNuOfDimensions_itShouldSubt assertEquals(-2, result.get(1)); } - @Test(expected = NullPointerException.class) - public void whenOneOfArgsIsNullWhenSubtracting_itShouldThrowException() { - Capacity cap1 = Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 2).build(); - @SuppressWarnings("unused") - Capacity result = Capacity.subtract(cap1, null); + @Test + @DisplayName("When One Of Args Is Null When Subtracting _ it Should Throw Exception") + void whenOneOfArgsIsNullWhenSubtracting_itShouldThrowException() { + assertThrows(NullPointerException.class, () -> { + Capacity cap1 = Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 2).build(); + @SuppressWarnings("unused") + Capacity result = Capacity.subtract(cap1, null); + }); } @Test - public void whenSubtractingBiggerFromLower_itShouldSubtractCorrectly() { + @DisplayName("When Subtracting Bigger From Lower _ it Should Subtract Correctly") + void whenSubtractingBiggerFromLower_itShouldSubtractCorrectly() { Capacity cap1 = Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 2).addDimension(2, 3).build(); Capacity cap2 = Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 3).addDimension(2, 4).build(); Capacity result = Capacity.subtract(cap1, cap2); @@ -217,57 +240,65 @@ public void whenSubtractingBiggerFromLower_itShouldSubtractCorrectly() { } @Test - public void whenOneCapIsLessThanAnother_itShouldReturnCorrectBoolean() { + @DisplayName("When One Cap Is Less Than Another _ it Should Return Correct Boolean") + void whenOneCapIsLessThanAnother_itShouldReturnCorrectBoolean() { Capacity cap1 = Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 2).addDimension(2, 3).build(); Capacity cap2 = Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 3).addDimension(2, 4).build(); assertTrue(cap1.isLessOrEqual(cap2)); } @Test - public void whenOneCapIsLessThanAnother_itShouldReturnCorrectBoolean_v2() { + @DisplayName("When One Cap Is Less Than Another _ it Should Return Correct Boolean _ v 2") + void whenOneCapIsLessThanAnother_itShouldReturnCorrectBoolean_v2() { Capacity cap1 = Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 2).addDimension(2, 4).build(); Capacity cap2 = Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 3).addDimension(2, 4).build(); assertTrue(cap1.isLessOrEqual(cap2)); } @Test - public void whenOneCapIsLessThanAnother_itShouldReturnCorrectBoolean_v3() { + @DisplayName("When One Cap Is Less Than Another _ it Should Return Correct Boolean _ v 3") + void whenOneCapIsLessThanAnother_itShouldReturnCorrectBoolean_v3() { Capacity cap1 = Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 3).addDimension(2, 4).build(); Capacity cap2 = Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 3).addDimension(2, 4).build(); assertTrue(cap1.isLessOrEqual(cap2)); } @Test - public void whenOneCapIsBiggerThanAnother_itShouldReturnCorrectBoolean() { + @DisplayName("When One Cap Is Bigger Than Another _ it Should Return Correct Boolean") + void whenOneCapIsBiggerThanAnother_itShouldReturnCorrectBoolean() { Capacity cap1 = Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 3).addDimension(2, 4).build(); Capacity cap2 = Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 4).addDimension(2, 4).build(); assertFalse(cap2.isLessOrEqual(cap1)); } @Test - public void whenOneCapIsBiggerThanAnother_greaterOrEqualShouldReturnTrue() { + @DisplayName("When One Cap Is Bigger Than Another _ greater Or Equal Should Return True") + void whenOneCapIsBiggerThanAnother_greaterOrEqualShouldReturnTrue() { Capacity cap1 = Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 3).addDimension(2, 4).build(); Capacity cap2 = Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 4).addDimension(2, 4).build(); assertTrue(cap2.isGreaterOrEqual(cap1)); } @Test - public void whenOneCapIsBiggerThanAnother_greaterOrEqualShouldReturnTrue_v2() { + @DisplayName("When One Cap Is Bigger Than Another _ greater Or Equal Should Return True _ v 2") + void whenOneCapIsBiggerThanAnother_greaterOrEqualShouldReturnTrue_v2() { Capacity cap1 = Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 3).addDimension(2, 4).build(); - //which is zero-cap + // which is zero-cap Capacity cap2 = Capacity.Builder.newInstance().build(); assertTrue(cap1.isGreaterOrEqual(cap2)); } @Test - public void whenOneCapIsEqualToAnother_greaterOrEqualShouldReturnTrue() { + @DisplayName("When One Cap Is Equal To Another _ greater Or Equal Should Return True") + void whenOneCapIsEqualToAnother_greaterOrEqualShouldReturnTrue() { Capacity cap1 = Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 3).addDimension(2, 4).build(); Capacity cap2 = Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 3).addDimension(2, 4).build(); assertTrue(cap2.isGreaterOrEqual(cap1)); } @Test - public void whenAddingTwo_itShouldReturnCorrectCap() { + @DisplayName("When Adding Two _ it Should Return Correct Cap") + void whenAddingTwo_itShouldReturnCorrectCap() { int wheelChairSpace = 0; int passengerSeats = 1; Capacity cap1 = Capacity.Builder.newInstance().addDimension(wheelChairSpace, 2).addDimension(passengerSeats, 10).build(); @@ -280,7 +311,8 @@ public void whenAddingTwo_itShouldReturnCorrectCap() { } @Test - public void whenAddingTwo_itShouldReturnCorrectCap_v2() { + @DisplayName("When Adding Two _ it Should Return Correct Cap _ v 2") + void whenAddingTwo_itShouldReturnCorrectCap_v2() { int wheelChairSpace = 0; int passengerSeats = 1; int weight = 2; @@ -295,7 +327,8 @@ public void whenAddingTwo_itShouldReturnCorrectCap_v2() { } @Test - public void whenInvertingCap_itShouldBeDoneCorrectly() { + @DisplayName("When Inverting Cap _ it Should Be Done Correctly") + void whenInvertingCap_itShouldBeDoneCorrectly() { Capacity cap = Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 3).addDimension(2, 4).build(); Capacity inverted = Capacity.invert(cap); assertEquals(-2, inverted.get(0)); @@ -304,7 +337,8 @@ public void whenInvertingCap_itShouldBeDoneCorrectly() { } @Test - public void whenDeterminingTheMaximumOfTwoCapacities_itShouldReturnCapWithMaxOfEachDimension() { + @DisplayName("When Determining The Maximum Of Two Capacities _ it Should Return Cap With Max Of Each Dimension") + void whenDeterminingTheMaximumOfTwoCapacities_itShouldReturnCapWithMaxOfEachDimension() { Capacity cap1 = Capacity.Builder.newInstance().addDimension(0, 3).addDimension(1, 3).build(); Capacity cap2 = Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 4).build(); assertEquals(3, Capacity.max(cap1, cap2).get(0)); @@ -312,7 +346,8 @@ public void whenDeterminingTheMaximumOfTwoCapacities_itShouldReturnCapWithMaxOfE } @Test - public void whenDeterminingTheMaximumOfTwoCapacities_itShouldReturnCapWithMaxOfEachDimension_v2() { + @DisplayName("When Determining The Maximum Of Two Capacities _ it Should Return Cap With Max Of Each Dimension _ v 2") + void whenDeterminingTheMaximumOfTwoCapacities_itShouldReturnCapWithMaxOfEachDimension_v2() { Capacity cap1 = Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 3).build(); Capacity cap2 = Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 4).build(); assertEquals(2, Capacity.max(cap1, cap2).get(0)); @@ -320,7 +355,8 @@ public void whenDeterminingTheMaximumOfTwoCapacities_itShouldReturnCapWithMaxOfE } @Test - public void whenDeterminingTheMaximumOfTwoCapacities_itShouldReturnCapWithMaxOfEachDimension_v3() { + @DisplayName("When Determining The Maximum Of Two Capacities _ it Should Return Cap With Max Of Each Dimension _ v 3") + void whenDeterminingTheMaximumOfTwoCapacities_itShouldReturnCapWithMaxOfEachDimension_v3() { Capacity cap1 = Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 3).addDimension(2, 3).build(); Capacity cap2 = Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 4).build(); assertEquals(2, Capacity.max(cap1, cap2).get(0)); @@ -329,58 +365,68 @@ public void whenDeterminingTheMaximumOfTwoCapacities_itShouldReturnCapWithMaxOfE } @Test - public void whenDividingTwoCapacities_itShouldReturn05() { + @DisplayName("When Dividing Two Capacities _ it Should Return 05") + void whenDividingTwoCapacities_itShouldReturn05() { Capacity cap1 = Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 2).build(); Capacity cap2 = Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 4).build(); assertEquals(0.5, Capacity.divide(cap1, cap2), 0.001); } @Test - public void whenDividingTwoEqualCapacities_itShouldReturn10() { + @DisplayName("When Dividing Two Equal Capacities _ it Should Return 10") + void whenDividingTwoEqualCapacities_itShouldReturn10() { Capacity cap1 = Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 4).build(); Capacity cap2 = Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 4).build(); assertEquals(1.0, Capacity.divide(cap1, cap2), 0.001); } @Test - public void whenDividingTwoCapacities_itShouldReturn00() { + @DisplayName("When Dividing Two Capacities _ it Should Return 00") + void whenDividingTwoCapacities_itShouldReturn00() { Capacity cap1 = Capacity.Builder.newInstance().addDimension(0, 0).addDimension(1, 0).build(); Capacity cap2 = Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 4).build(); assertEquals(0.0, Capacity.divide(cap1, cap2), 0.001); } - @Test(expected = IllegalArgumentException.class) - public void whenDividingByAZeroDim_itShouldThrowException() { - Capacity cap1 = Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 2).build(); - Capacity cap2 = Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 0).build(); - Capacity.divide(cap1, cap2); + @Test + @DisplayName("When Dividing By A Zero Dim _ it Should Throw Exception") + void whenDividingByAZeroDim_itShouldThrowException() { + assertThrows(IllegalArgumentException.class, () -> { + Capacity cap1 = Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 2).build(); + Capacity cap2 = Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 0).build(); + Capacity.divide(cap1, cap2); + }); } @Test - public void whenBothDimOfNominatorAndDenominatorAreZero_divisionShouldIgnoreThisDim() { + @DisplayName("When Both Dim Of Nominator And Denominator Are Zero _ division Should Ignore This Dim") + void whenBothDimOfNominatorAndDenominatorAreZero_divisionShouldIgnoreThisDim() { Capacity cap1 = Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 2).addDimension(3, 0).build(); Capacity cap2 = Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 4).addDimension(3, 0).build(); assertEquals(0.5, Capacity.divide(cap1, cap2), 0.001); } @Test - public void whenDividingZeroCaps_itShouldReturnZero() { + @DisplayName("When Dividing Zero Caps _ it Should Return Zero") + void whenDividingZeroCaps_itShouldReturnZero() { Capacity cap1 = Capacity.Builder.newInstance().build(); Capacity cap2 = Capacity.Builder.newInstance().build(); assertEquals(0.0, Capacity.divide(cap1, cap2), 0.001); } @Test - public void shouldBeEqual(){ + @DisplayName("Should Be Equal") + void shouldBeEqual() { Capacity cap1 = Capacity.Builder.newInstance().build(); Capacity cap2 = Capacity.Builder.newInstance().build(); - Assert.assertTrue(cap1.equals(cap2)); + assertTrue(cap1.equals(cap2)); } @Test - public void shouldBeEqual2(){ - Capacity cap1 = Capacity.Builder.newInstance().addDimension(0,10).addDimension(1,100).addDimension(2,1000).build(); - Capacity cap2 = Capacity.Builder.newInstance().addDimension(0,10).addDimension(2, 1000).addDimension(1,100).build(); - Assert.assertTrue(cap1.equals(cap2)); + @DisplayName("Should Be Equal 2") + void shouldBeEqual2() { + Capacity cap1 = Capacity.Builder.newInstance().addDimension(0, 10).addDimension(1, 100).addDimension(2, 1000).build(); + Capacity cap2 = Capacity.Builder.newInstance().addDimension(0, 10).addDimension(2, 1000).addDimension(1, 100).build(); + assertTrue(cap1.equals(cap2)); } } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/LocationTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/LocationTest.java index 4dc9bf677..8c0608812 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/LocationTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/LocationTest.java @@ -15,95 +15,105 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.graphhopper.jsprit.core.problem; import com.graphhopper.jsprit.core.util.Coordinate; -import org.junit.Assert; -import org.junit.Test; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.HashMap; import java.util.Map; -import static org.junit.Assert.*; +import static org.junit.jupiter.api.Assertions.*; /** * Created by schroeder on 16.12.14. */ -public class LocationTest { +@DisplayName("Location Test") +class LocationTest { @Test - public void whenIndexSet_buildLocation() { + @DisplayName("When Index Set _ build Location") + void whenIndexSet_buildLocation() { Location l = Location.Builder.newInstance().setIndex(1).build(); - Assert.assertEquals(1, l.getIndex()); - Assert.assertTrue(true); + assertEquals(1, l.getIndex()); + assertTrue(true); } @Test - public void whenNameSet_buildLocation() { + @DisplayName("When Name Set _ build Location") + void whenNameSet_buildLocation() { Location l = Location.Builder.newInstance().setName("mystreet 6a").setIndex(1).build(); - Assert.assertEquals("mystreet 6a", l.getName()); + assertEquals(l.getName(), "mystreet 6a"); } @Test - public void whenIndexSetWitFactory_returnCorrectLocation() { + @DisplayName("When Index Set Wit Factory _ return Correct Location") + void whenIndexSetWitFactory_returnCorrectLocation() { Location l = Location.newInstance(1); - Assert.assertEquals(1, l.getIndex()); - Assert.assertTrue(true); + assertEquals(1, l.getIndex()); + assertTrue(true); } - @Test(expected = IllegalArgumentException.class) - public void whenIndexSmallerZero_throwException() { - Location l = Location.Builder.newInstance().setIndex(-1).build(); + @Test + @DisplayName("When Index Smaller Zero _ throw Exception") + void whenIndexSmallerZero_throwException() { + assertThrows(IllegalArgumentException.class, () -> { + Location l = Location.Builder.newInstance().setIndex(-1).build(); + }); } - @Test(expected = IllegalArgumentException.class) - public void whenCoordinateAndIdAndIndexNotSet_throwException() { - Location l = Location.Builder.newInstance().build(); + @Test + @DisplayName("When Coordinate And Id And Index Not Set _ throw Exception") + void whenCoordinateAndIdAndIndexNotSet_throwException() { + assertThrows(IllegalArgumentException.class, () -> { + Location l = Location.Builder.newInstance().build(); + }); } @Test - public void whenIdSet_build() { + @DisplayName("When Id Set _ build") + void whenIdSet_build() { Location l = Location.Builder.newInstance().setId("id").build(); - Assert.assertEquals("id", l.getId()); - Assert.assertTrue(true); + assertEquals(l.getId(), "id"); + assertTrue(true); } @Test - public void whenIdSetWithFactory_returnCorrectLocation() { + @DisplayName("When Id Set With Factory _ return Correct Location") + void whenIdSetWithFactory_returnCorrectLocation() { Location l = Location.newInstance("id"); - Assert.assertEquals("id", l.getId()); - Assert.assertTrue(true); + assertEquals(l.getId(), "id"); + assertTrue(true); } @Test - public void whenCoordinateSet_build() { + @DisplayName("When Coordinate Set _ build") + void whenCoordinateSet_build() { Location l = Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(10, 20)).build(); - Assert.assertEquals(10., l.getCoordinate().getX(), 0.001); - Assert.assertEquals(20., l.getCoordinate().getY(), 0.001); - Assert.assertTrue(true); + assertEquals(10., l.getCoordinate().getX(), 0.001); + assertEquals(20., l.getCoordinate().getY(), 0.001); + assertTrue(true); } @Test - public void whenCoordinateSetWithFactory_returnCorrectLocation() { - // Location l = Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(10,20)).build(); + @DisplayName("When Coordinate Set With Factory _ return Correct Location") + void whenCoordinateSetWithFactory_returnCorrectLocation() { + // Location l = Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(10,20)).build(); Location l = Location.newInstance(10, 20); - Assert.assertEquals(10., l.getCoordinate().getX(), 0.001); - Assert.assertEquals(20., l.getCoordinate().getY(), 0.001); - Assert.assertTrue(true); + assertEquals(10., l.getCoordinate().getX(), 0.001); + assertEquals(20., l.getCoordinate().getY(), 0.001); + assertTrue(true); } - @Test - public void whenSettingUserData_itIsAssociatedWithTheLocation() { - Location one = Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(10, 20)) - .setUserData(new HashMap()).build(); + @DisplayName("When Setting User Data _ it Is Associated With The Location") + void whenSettingUserData_itIsAssociatedWithTheLocation() { + Location one = Location.Builder.newInstance().setCoordinate(Coordinate.newInstance(10, 20)).setUserData(new HashMap()).build(); Location two = Location.Builder.newInstance().setIndex(1).setUserData(42).build(); Location three = Location.Builder.newInstance().setIndex(2).build(); - assertTrue(one.getUserData() instanceof Map); assertEquals(42, two.getUserData()); assertNull(three.getUserData()); } - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/SkillsTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/SkillsTest.java index b13c8bce2..f063b18ce 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/SkillsTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/SkillsTest.java @@ -15,44 +15,49 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.graphhopper.jsprit.core.problem; -import org.junit.Test; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.HashSet; import java.util.Set; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertTrue; /** * Created by schroeder on 01.07.14. */ -public class SkillsTest { +@DisplayName("Skills Test") +class SkillsTest { @Test - public void whenSkillsAdded_theyShouldBeinSkillSet() { + @DisplayName("When Skills Added _ they Should Bein Skill Set") + void whenSkillsAdded_theyShouldBeinSkillSet() { Skills skills = Skills.Builder.newInstance().addSkill("skill1").addSkill("skill2").build(); assertTrue(skills.containsSkill("skill1")); assertTrue(skills.containsSkill("skill2")); } @Test - public void whenSkillsAddedCaseInsensitive_theyShouldBeinSkillSet() { + @DisplayName("When Skills Added Case Insensitive _ they Should Bein Skill Set") + void whenSkillsAddedCaseInsensitive_theyShouldBeinSkillSet() { Skills skills = Skills.Builder.newInstance().addSkill("skill1").addSkill("skill2").build(); assertTrue(skills.containsSkill("skilL1")); assertTrue(skills.containsSkill("skIll2")); } @Test - public void whenSkillsAddedCaseInsensitive2_theyShouldBeinSkillSet() { + @DisplayName("When Skills Added Case Insensitive 2 _ they Should Bein Skill Set") + void whenSkillsAddedCaseInsensitive2_theyShouldBeinSkillSet() { Skills skills = Skills.Builder.newInstance().addSkill("Skill1").addSkill("skill2").build(); assertTrue(skills.containsSkill("skilL1")); assertTrue(skills.containsSkill("skIll2")); } @Test - public void whenSkillsAddedThroughAddAll_theyShouldBeinSkillSet() { + @DisplayName("When Skills Added Through Add All _ they Should Bein Skill Set") + void whenSkillsAddedThroughAddAll_theyShouldBeinSkillSet() { Set skillSet = new HashSet(); skillSet.add("skill1"); skillSet.add("skill2"); @@ -62,7 +67,8 @@ public void whenSkillsAddedThroughAddAll_theyShouldBeinSkillSet() { } @Test - public void whenSkillsAddedThroughAddAllCaseInsensitive_theyShouldBeinSkillSet() { + @DisplayName("When Skills Added Through Add All Case Insensitive _ they Should Bein Skill Set") + void whenSkillsAddedThroughAddAllCaseInsensitive_theyShouldBeinSkillSet() { Set skillSet = new HashSet(); skillSet.add("skill1"); skillSet.add("skill2"); @@ -72,7 +78,8 @@ public void whenSkillsAddedThroughAddAllCaseInsensitive_theyShouldBeinSkillSet() } @Test - public void whenSkillsAddedThroughAddAllCaseInsensitive2_theyShouldBeinSkillSet() { + @DisplayName("When Skills Added Through Add All Case Insensitive 2 _ they Should Bein Skill Set") + void whenSkillsAddedThroughAddAllCaseInsensitive2_theyShouldBeinSkillSet() { Set skillSet = new HashSet(); skillSet.add("skill1"); skillSet.add("Skill2"); @@ -82,7 +89,8 @@ public void whenSkillsAddedThroughAddAllCaseInsensitive2_theyShouldBeinSkillSet( } @Test - public void whenSkillsAddedPrecedingWhitespaceShouldNotMatter() { + @DisplayName("When Skills Added Preceding Whitespace Should Not Matter") + void whenSkillsAddedPrecedingWhitespaceShouldNotMatter() { Set skillSet = new HashSet(); skillSet.add(" skill1"); skillSet.add("Skill2"); @@ -92,7 +100,8 @@ public void whenSkillsAddedPrecedingWhitespaceShouldNotMatter() { } @Test - public void whenSkillsAddedTrailingWhitespaceShouldNotMatter() { + @DisplayName("When Skills Added Trailing Whitespace Should Not Matter") + void whenSkillsAddedTrailingWhitespaceShouldNotMatter() { Set skillSet = new HashSet(); skillSet.add("skill1 "); skillSet.add("Skill2"); @@ -102,9 +111,9 @@ public void whenSkillsAddedTrailingWhitespaceShouldNotMatter() { } @Test - public void whenSkillsAddedTrailingWhitespaceShouldNotMatter2() { + @DisplayName("When Skills Added Trailing Whitespace Should Not Matter 2") + void whenSkillsAddedTrailingWhitespaceShouldNotMatter2() { Skills skills = Skills.Builder.newInstance().addSkill("skill1 ").build(); assertTrue(skills.containsSkill("skill1")); } - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblemTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblemTest.java index 32d9183d6..121783f3d 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblemTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblemTest.java @@ -31,19 +31,21 @@ import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; import com.graphhopper.jsprit.core.util.Coordinate; import com.graphhopper.jsprit.core.util.TestUtils; -import org.junit.Test; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; -import static org.junit.Assert.*; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.junit.jupiter.api.Assertions.*; import static org.junit.matchers.JUnitMatchers.hasItem; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; - -public class VehicleRoutingProblemTest { +@DisplayName("Vehicle Routing Problem Test") +class VehicleRoutingProblemTest { Delivery createDeliveryMock() { Delivery d = mock(Delivery.class); @@ -63,9 +65,9 @@ Pickup createPickupMock() { return d; } - @Test - public void whenBuildingWithInfiniteFleet_fleetSizeShouldBeInfinite() { + @DisplayName("When Building With Infinite Fleet _ fleet Size Should Be Infinite") + void whenBuildingWithInfiniteFleet_fleetSizeShouldBeInfinite() { VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); builder.setFleetSize(FleetSize.INFINITE); VehicleRoutingProblem vrp = builder.build(); @@ -73,7 +75,8 @@ public void whenBuildingWithInfiniteFleet_fleetSizeShouldBeInfinite() { } @Test - public void whenBuildingWithFiniteFleet_fleetSizeShouldBeFinite() { + @DisplayName("When Building With Finite Fleet _ fleet Size Should Be Finite") + void whenBuildingWithFiniteFleet_fleetSizeShouldBeFinite() { VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); builder.setFleetSize(FleetSize.FINITE); VehicleRoutingProblem vrp = builder.build(); @@ -81,82 +84,70 @@ public void whenBuildingWithFiniteFleet_fleetSizeShouldBeFinite() { } @Test - public void whenBuildingWithFourVehicles_vrpShouldContainTheCorrectNuOfVehicles() { + @DisplayName("When Building With Four Vehicles _ vrp Should Contain The Correct Nu Of Vehicles") + void whenBuildingWithFourVehicles_vrpShouldContainTheCorrectNuOfVehicles() { VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocation(Location.newInstance("start")).build(); VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(Location.newInstance("start")).build(); VehicleImpl v3 = VehicleImpl.Builder.newInstance("v3").setStartLocation(Location.newInstance("start")).build(); VehicleImpl v4 = VehicleImpl.Builder.newInstance("v4").setStartLocation(Location.newInstance("start")).build(); - builder.addVehicle(v1).addVehicle(v2).addVehicle(v3).addVehicle(v4); - VehicleRoutingProblem vrp = builder.build(); assertEquals(4, vrp.getVehicles().size()); assertEquals(1, vrp.getAllLocations().size()); - } @Test - public void whenAddingFourVehiclesAllAtOnce_vrpShouldContainTheCorrectNuOfVehicles() { + @DisplayName("When Adding Four Vehicles All At Once _ vrp Should Contain The Correct Nu Of Vehicles") + void whenAddingFourVehiclesAllAtOnce_vrpShouldContainTheCorrectNuOfVehicles() { VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocation(Location.newInstance("start")).build(); VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(Location.newInstance("start")).build(); VehicleImpl v3 = VehicleImpl.Builder.newInstance("v3").setStartLocation(Location.newInstance("start")).build(); VehicleImpl v4 = VehicleImpl.Builder.newInstance("v4").setStartLocation(Location.newInstance("start")).build(); - builder.addAllVehicles(Arrays.asList(v1, v2, v3, v4)); - VehicleRoutingProblem vrp = builder.build(); assertEquals(4, vrp.getVehicles().size()); - } @Test - public void whenBuildingWithFourVehiclesAndTwoTypes_vrpShouldContainTheCorrectNuOfTypes() { + @DisplayName("When Building With Four Vehicles And Two Types _ vrp Should Contain The Correct Nu Of Types") + void whenBuildingWithFourVehiclesAndTwoTypes_vrpShouldContainTheCorrectNuOfTypes() { VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("type1").build(); VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("type2").build(); - VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocation(Location.newInstance("yo")).setType(type1).build(); VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(Location.newInstance("yo")).setType(type1).build(); VehicleImpl v3 = VehicleImpl.Builder.newInstance("v3").setStartLocation(Location.newInstance("yo")).setType(type2).build(); VehicleImpl v4 = VehicleImpl.Builder.newInstance("v4").setStartLocation(Location.newInstance("yo")).setType(type2).build(); - builder.addVehicle(v1).addVehicle(v2).addVehicle(v3).addVehicle(v4); - VehicleRoutingProblem vrp = builder.build(); assertEquals(2, vrp.getTypes().size()); - } @Test - public void whenShipmentsAreAdded_vrpShouldContainThem() { + @DisplayName("When Shipments Are Added _ vrp Should Contain Them") + void whenShipmentsAreAdded_vrpShouldContainThem() { Shipment s = Shipment.Builder.newInstance("s").addSizeDimension(0, 10).setPickupLocation(Location.Builder.newInstance().setId("foofoo").build()).setDeliveryLocation(Location.newInstance("foo")).build(); Shipment s2 = Shipment.Builder.newInstance("s2").addSizeDimension(0, 100).setPickupLocation(Location.Builder.newInstance().setId("foofoo").build()).setDeliveryLocation(Location.newInstance("foo")).build(); VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); vrpBuilder.addJob(s); vrpBuilder.addJob(s2); VehicleRoutingProblem vrp = vrpBuilder.build(); - assertEquals(2, vrp.getJobs().size()); assertEquals(s, vrp.getJobs().get("s")); assertEquals(s2, vrp.getJobs().get("s2")); - assertEquals(2,vrp.getAllLocations().size()); + assertEquals(2, vrp.getAllLocations().size()); } @Test - public void whenServicesWithNoLocationAreAdded_vrpShouldKnowThat() { + @DisplayName("When Services With No Location Are Added _ vrp Should Know That") + void whenServicesWithNoLocationAreAdded_vrpShouldKnowThat() { Service s1 = Service.Builder.newInstance("s1").setLocation(Location.Builder.newInstance().setIndex(1).build()).build(); Service s2 = Service.Builder.newInstance("s2").build(); - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); vrpBuilder.addJob(s1).addJob(s2); - VehicleRoutingProblem vrp = vrpBuilder.build(); - assertEquals(2, vrp.getJobs().size()); assertEquals(s1, vrp.getJobs().get("s1")); assertEquals(s2, vrp.getJobs().get("s2")); @@ -165,62 +156,56 @@ public void whenServicesWithNoLocationAreAdded_vrpShouldKnowThat() { } @Test - public void whenServicesAreAdded_vrpShouldContainThem() { + @DisplayName("When Services Are Added _ vrp Should Contain Them") + void whenServicesAreAdded_vrpShouldContainThem() { Service s1 = Service.Builder.newInstance("s1").setLocation(Location.Builder.newInstance().setIndex(1).build()).build(); Service s2 = Service.Builder.newInstance("s2").setLocation(Location.Builder.newInstance().setIndex(1).build()).build(); - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); vrpBuilder.addJob(s1).addJob(s2); - VehicleRoutingProblem vrp = vrpBuilder.build(); - assertEquals(2, vrp.getJobs().size()); assertEquals(s1, vrp.getJobs().get("s1")); assertEquals(s2, vrp.getJobs().get("s2")); - assertEquals(1,vrp.getAllLocations().size()); + assertEquals(1, vrp.getAllLocations().size()); } - @Test - public void whenPickupsAreAdded_vrpShouldContainThem() { + @DisplayName("When Pickups Are Added _ vrp Should Contain Them") + void whenPickupsAreAdded_vrpShouldContainThem() { Pickup s1 = createPickupMock(); when(s1.getId()).thenReturn("s1"); when(s1.getLocation()).thenReturn(Location.Builder.newInstance().setIndex(1).build()); Pickup s2 = createPickupMock(); when(s2.getId()).thenReturn("s2"); when(s2.getLocation()).thenReturn(Location.Builder.newInstance().setIndex(1).build()); - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); vrpBuilder.addJob(s1).addJob(s2); - VehicleRoutingProblem vrp = vrpBuilder.build(); - assertEquals(2, vrp.getJobs().size()); assertEquals(s1, vrp.getJobs().get("s1")); assertEquals(s2, vrp.getJobs().get("s2")); } @Test - public void whenPickupsAreAddedAllAtOnce_vrpShouldContainThem() { + @DisplayName("When Pickups Are Added All At Once _ vrp Should Contain Them") + void whenPickupsAreAddedAllAtOnce_vrpShouldContainThem() { Pickup s1 = createPickupMock(); when(s1.getId()).thenReturn("s1"); when(s1.getLocation()).thenReturn(Location.Builder.newInstance().setIndex(1).build()); Pickup s2 = createPickupMock(); when(s2.getId()).thenReturn("s2"); when(s2.getLocation()).thenReturn(Location.Builder.newInstance().setIndex(1).build()); - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); vrpBuilder.addAllJobs(Arrays.asList(s1, s2)); - VehicleRoutingProblem vrp = vrpBuilder.build(); - assertEquals(2, vrp.getJobs().size()); assertEquals(s1, vrp.getJobs().get("s1")); assertEquals(s2, vrp.getJobs().get("s2")); } @Test - public void whenDelivieriesAreAdded_vrpShouldContainThem() { + @DisplayName("When Delivieries Are Added _ vrp Should Contain Them") + void whenDelivieriesAreAdded_vrpShouldContainThem() { Delivery s1 = createDeliveryMock(); when(s1.getId()).thenReturn("s1"); when(s1.getSize()).thenReturn(Capacity.Builder.newInstance().build()); @@ -229,19 +214,17 @@ public void whenDelivieriesAreAdded_vrpShouldContainThem() { when(s2.getId()).thenReturn("s2"); when(s2.getSize()).thenReturn(Capacity.Builder.newInstance().build()); when(s2.getLocation()).thenReturn(Location.Builder.newInstance().setIndex(1).build()); - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); vrpBuilder.addJob(s1).addJob(s2); - VehicleRoutingProblem vrp = vrpBuilder.build(); - assertEquals(2, vrp.getJobs().size()); assertEquals(s1, vrp.getJobs().get("s1")); assertEquals(s2, vrp.getJobs().get("s2")); } @Test - public void whenDelivieriesAreAddedAllAtOnce_vrpShouldContainThem() { + @DisplayName("When Delivieries Are Added All At Once _ vrp Should Contain Them") + void whenDelivieriesAreAddedAllAtOnce_vrpShouldContainThem() { Delivery s1 = createDeliveryMock(); when(s1.getId()).thenReturn("s1"); when(s1.getSize()).thenReturn(Capacity.Builder.newInstance().build()); @@ -250,43 +233,37 @@ public void whenDelivieriesAreAddedAllAtOnce_vrpShouldContainThem() { when(s2.getId()).thenReturn("s2"); when(s2.getSize()).thenReturn(Capacity.Builder.newInstance().build()); when(s2.getLocation()).thenReturn(Location.Builder.newInstance().setIndex(1).build()); - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); vrpBuilder.addAllJobs(Arrays.asList(s1, s2)); - VehicleRoutingProblem vrp = vrpBuilder.build(); - assertEquals(2, vrp.getJobs().size()); assertEquals(s1, vrp.getJobs().get("s1")); assertEquals(s2, vrp.getJobs().get("s2")); } @Test - public void whenServicesAreAddedAllAtOnce_vrpShouldContainThem() { + @DisplayName("When Services Are Added All At Once _ vrp Should Contain Them") + void whenServicesAreAddedAllAtOnce_vrpShouldContainThem() { Service s1 = createServiceMock(); when(s1.getId()).thenReturn("s1"); when(s1.getLocation()).thenReturn(Location.Builder.newInstance().setIndex(1).build()); Service s2 = createServiceMock(); when(s2.getId()).thenReturn("s2"); when(s2.getLocation()).thenReturn(Location.Builder.newInstance().setIndex(1).build()); - Collection services = new ArrayList(); services.add(s1); services.add(s2); - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); vrpBuilder.addAllJobs(services); - VehicleRoutingProblem vrp = vrpBuilder.build(); - assertEquals(2, vrp.getJobs().size()); assertEquals(s1, vrp.getJobs().get("s1")); assertEquals(s2, vrp.getJobs().get("s2")); } - @Test - public void whenSettingActivityCosts_vrpShouldContainIt() { + @DisplayName("When Setting Activity Costs _ vrp Should Contain It") + void whenSettingActivityCosts_vrpShouldContainIt() { VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); builder.setActivityCosts(new VehicleRoutingActivityCosts() { @@ -299,17 +276,15 @@ public double getActivityCost(TourActivity tourAct, double arrivalTime, Driver d public double getActivityDuration(TourActivity tourAct, double arrivalTime, Driver driver, Vehicle vehicle) { return tourAct.getOperationTime(); } - }); - VehicleRoutingProblem problem = builder.build(); assertEquals(4.0, problem.getActivityCosts().getActivityCost(null, 0.0, null, null), 0.01); } @Test - public void whenSettingRoutingCosts_vprShouldContainIt() { + @DisplayName("When Setting Routing Costs _ vpr Should Contain It") + void whenSettingRoutingCosts_vprShouldContainIt() { VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - builder.setRoutingCost(new AbstractForwardVehicleRoutingTransportCosts() { @Override @@ -318,18 +293,15 @@ public double getDistance(Location from, Location to, double departureTime, Vehi } @Override - public double getTransportTime(Location from, Location to, - double departureTime, Driver driver, Vehicle vehicle) { + public double getTransportTime(Location from, Location to, double departureTime, Driver driver, Vehicle vehicle) { return 0; } @Override - public double getTransportCost(Location from, Location to, - double departureTime, Driver driver, Vehicle vehicle) { + public double getTransportCost(Location from, Location to, double departureTime, Driver driver, Vehicle vehicle) { return 4.0; } }); - VehicleRoutingProblem problem = builder.build(); assertEquals(4.0, problem.getTransportCosts().getTransportCost(loc(""), loc(""), 0.0, null, null), 0.01); } @@ -338,111 +310,107 @@ private Location loc(String i) { return Location.Builder.newInstance().setId(i).build(); } - @Test(expected = IllegalArgumentException.class) - public void whenAddingVehiclesWithSameId_itShouldThrowException(){ - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - VehicleType type = VehicleTypeImpl.Builder.newInstance("type").build(); - VehicleImpl vehicle1 = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("loc")).setType(type).build(); - VehicleImpl vehicle2 = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("loc")).setType(type).build(); - builder.addVehicle(vehicle1); - builder.addVehicle(vehicle2); + @Test + @DisplayName("When Adding Vehicles With Same Id _ it Should Throw Exception") + void whenAddingVehiclesWithSameId_itShouldThrowException() { + assertThrows(IllegalArgumentException.class, () -> { + VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); + VehicleType type = VehicleTypeImpl.Builder.newInstance("type").build(); + VehicleImpl vehicle1 = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("loc")).setType(type).build(); + VehicleImpl vehicle2 = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("loc")).setType(type).build(); + builder.addVehicle(vehicle1); + builder.addVehicle(vehicle2); + }); } - @Test(expected = IllegalArgumentException.class) - public void whenAddingVehicleTypesWithSameIdButDifferentCosts_itShouldThrowException() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - VehicleType type1 = VehicleTypeImpl.Builder.newInstance("type").build(); - VehicleType type2 = VehicleTypeImpl.Builder.newInstance("type").setCostPerServiceTime(2d).build(); - VehicleImpl vehicle1 = VehicleImpl.Builder.newInstance("v1").setStartLocation(Location.newInstance("loc")).setType(type1).build(); - VehicleImpl vehicle2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(Location.newInstance("loc")).setType(type2).build(); - builder.addVehicle(vehicle1); - builder.addVehicle(vehicle2); + @Test + @DisplayName("When Adding Vehicle Types With Same Id But Different Costs _ it Should Throw Exception") + void whenAddingVehicleTypesWithSameIdButDifferentCosts_itShouldThrowException() { + assertThrows(IllegalArgumentException.class, () -> { + VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); + VehicleType type1 = VehicleTypeImpl.Builder.newInstance("type").build(); + VehicleType type2 = VehicleTypeImpl.Builder.newInstance("type").setCostPerServiceTime(2d).build(); + VehicleImpl vehicle1 = VehicleImpl.Builder.newInstance("v1").setStartLocation(Location.newInstance("loc")).setType(type1).build(); + VehicleImpl vehicle2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(Location.newInstance("loc")).setType(type2).build(); + builder.addVehicle(vehicle1); + builder.addVehicle(vehicle2); + }); } - @Test(expected = IllegalArgumentException.class) - public void whenBuildingProblemWithSameBreakId_itShouldThrowException(){ - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - VehicleType type = VehicleTypeImpl.Builder.newInstance("type").build(); - VehicleImpl vehicle1 = VehicleImpl.Builder.newInstance("v1").setStartLocation(Location.newInstance("loc")).setType(type) - .setBreak(Break.Builder.newInstance("break").build()) - .build(); - VehicleImpl vehicle2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(Location.newInstance("loc")).setType(type) - .setBreak(Break.Builder.newInstance("break").build()) - .build(); - builder.addVehicle(vehicle1); - builder.addVehicle(vehicle2); - builder.setFleetSize(FleetSize.FINITE); - builder.build(); + @Test + @DisplayName("When Building Problem With Same Break Id _ it Should Throw Exception") + void whenBuildingProblemWithSameBreakId_itShouldThrowException() { + assertThrows(IllegalArgumentException.class, () -> { + VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); + VehicleType type = VehicleTypeImpl.Builder.newInstance("type").build(); + VehicleImpl vehicle1 = VehicleImpl.Builder.newInstance("v1").setStartLocation(Location.newInstance("loc")).setType(type).setBreak(Break.Builder.newInstance("break").build()).build(); + VehicleImpl vehicle2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(Location.newInstance("loc")).setType(type).setBreak(Break.Builder.newInstance("break").build()).build(); + builder.addVehicle(vehicle1); + builder.addVehicle(vehicle2); + builder.setFleetSize(FleetSize.FINITE); + builder.build(); + }); } @Test - public void whenAddingAVehicle_getAddedVehicleTypesShouldReturnItsType() { + @DisplayName("When Adding A Vehicle _ get Added Vehicle Types Should Return Its Type") + void whenAddingAVehicle_getAddedVehicleTypesShouldReturnItsType() { VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); VehicleType type = VehicleTypeImpl.Builder.newInstance("type").build(); VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("loc")).setType(type).build(); builder.addVehicle(vehicle); - assertEquals(1, builder.getAddedVehicleTypes().size()); assertEquals(type, builder.getAddedVehicleTypes().iterator().next()); - - } @Test - public void whenAddingTwoVehicleWithSameType_getAddedVehicleTypesShouldReturnOnlyOneType() { + @DisplayName("When Adding Two Vehicle With Same Type _ get Added Vehicle Types Should Return Only One Type") + void whenAddingTwoVehicleWithSameType_getAddedVehicleTypesShouldReturnOnlyOneType() { VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); VehicleType type = VehicleTypeImpl.Builder.newInstance("type").build(); VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("loc")).setType(type).build(); VehicleImpl vehicle2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(Location.newInstance("loc")).setType(type).build(); - builder.addVehicle(vehicle); builder.addVehicle(vehicle2); - assertEquals(1, builder.getAddedVehicleTypes().size()); assertEquals(type, builder.getAddedVehicleTypes().iterator().next()); } @Test - public void whenAddingTwoVehicleWithDiffType_getAddedVehicleTypesShouldReturnTheseType() { + @DisplayName("When Adding Two Vehicle With Diff Type _ get Added Vehicle Types Should Return These Type") + void whenAddingTwoVehicleWithDiffType_getAddedVehicleTypesShouldReturnTheseType() { VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); VehicleType type = VehicleTypeImpl.Builder.newInstance("type").build(); VehicleType type2 = VehicleTypeImpl.Builder.newInstance("type2").build(); - VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("loc")).setType(type).build(); VehicleImpl vehicle2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(Location.newInstance("loc")).setType(type2).build(); - builder.addVehicle(vehicle); builder.addVehicle(vehicle2); - assertEquals(2, builder.getAddedVehicleTypes().size()); - } - @Test - public void whenAddingVehicleWithDiffStartAndEnd_startLocationMustBeRegisteredInLocationMap() { - VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("start")) - .setEndLocation(Location.newInstance("end")).build(); - + @DisplayName("When Adding Vehicle With Diff Start And End _ start Location Must Be Registered In Location Map") + void whenAddingVehicleWithDiffStartAndEnd_startLocationMustBeRegisteredInLocationMap() { + VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("start")).setEndLocation(Location.newInstance("end")).build(); VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); vrpBuilder.addVehicle(vehicle); assertTrue(vrpBuilder.getLocationMap().containsKey("start")); } @Test - public void whenAddingVehicleWithDiffStartAndEnd_endLocationMustBeRegisteredInLocationMap() { - VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("start")) - .setEndLocation(Location.newInstance("end")).build(); - + @DisplayName("When Adding Vehicle With Diff Start And End _ end Location Must Be Registered In Location Map") + void whenAddingVehicleWithDiffStartAndEnd_endLocationMustBeRegisteredInLocationMap() { + VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("start")).setEndLocation(Location.newInstance("end")).build(); VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); vrpBuilder.addVehicle(vehicle); assertTrue(vrpBuilder.getLocationMap().containsKey("end")); } @Test - public void whenAddingInitialRoute_itShouldBeAddedCorrectly() { - VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v") - .setStartLocation(Location.newInstance("start")).setEndLocation(Location.newInstance("end")).build(); + @DisplayName("When Adding Initial Route _ it Should Be Added Correctly") + void whenAddingInitialRoute_itShouldBeAddedCorrectly() { + VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("start")).setEndLocation(Location.newInstance("end")).build(); VehicleRoute route = VehicleRoute.Builder.newInstance(vehicle, DriverImpl.noDriver()).build(); VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); vrpBuilder.addInitialVehicleRoute(route); @@ -451,144 +419,125 @@ public void whenAddingInitialRoute_itShouldBeAddedCorrectly() { } @Test - public void whenAddingInitialRoutes_theyShouldBeAddedCorrectly() { - VehicleImpl vehicle1 = VehicleImpl.Builder.newInstance("v") - .setStartLocation(Location.newInstance("start")).setEndLocation(Location.newInstance("end")).build(); + @DisplayName("When Adding Initial Routes _ they Should Be Added Correctly") + void whenAddingInitialRoutes_theyShouldBeAddedCorrectly() { + VehicleImpl vehicle1 = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("start")).setEndLocation(Location.newInstance("end")).build(); VehicleRoute route1 = VehicleRoute.Builder.newInstance(vehicle1, DriverImpl.noDriver()).build(); - - VehicleImpl vehicle2 = VehicleImpl.Builder.newInstance("v") - .setStartLocation(Location.newInstance("start")).setEndLocation(Location.newInstance("end")).build(); + VehicleImpl vehicle2 = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("start")).setEndLocation(Location.newInstance("end")).build(); VehicleRoute route2 = VehicleRoute.Builder.newInstance(vehicle2, DriverImpl.noDriver()).build(); - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); vrpBuilder.addInitialVehicleRoutes(Arrays.asList(route1, route2)); - VehicleRoutingProblem vrp = vrpBuilder.build(); assertEquals(2, vrp.getInitialVehicleRoutes().size()); - assertEquals(2,vrp.getAllLocations().size()); + assertEquals(2, vrp.getAllLocations().size()); } @Test - public void whenAddingInitialRoute_locationOfVehicleMustBeMemorized() { + @DisplayName("When Adding Initial Route _ location Of Vehicle Must Be Memorized") + void whenAddingInitialRoute_locationOfVehicleMustBeMemorized() { Location start = TestUtils.loc("start", Coordinate.newInstance(0, 1)); Location end = Location.newInstance("end"); - VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v") - .setStartLocation(start) - .setEndLocation(end).build(); + VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(start).setEndLocation(end).build(); VehicleRoute route = VehicleRoute.Builder.newInstance(vehicle, DriverImpl.noDriver()).build(); VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); vrpBuilder.addInitialVehicleRoute(route); VehicleRoutingProblem vrp = vrpBuilder.build(); - assertThat(vrp.getAllLocations(),hasItem(start)); - assertThat(vrp.getAllLocations(),hasItem(end)); + assertThat(vrp.getAllLocations(), hasItem(start)); + assertThat(vrp.getAllLocations(), hasItem(end)); } @Test - public void whenAddingJobAndInitialRouteWithThatJobAfterwards_thisJobShouldNotBeInFinalJobMap() { + @DisplayName("When Adding Job And Initial Route With That Job Afterwards _ this Job Should Not Be In Final Job Map") + void whenAddingJobAndInitialRouteWithThatJobAfterwards_thisJobShouldNotBeInFinalJobMap() { Service service = Service.Builder.newInstance("myService").setLocation(Location.newInstance("loc")).build(); VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); vrpBuilder.addJob(service); - VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v") - .setStartLocation(TestUtils.loc("start", Coordinate.newInstance(0, 1))) - .setEndLocation(Location.newInstance("end")).build(); + VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(TestUtils.loc("start", Coordinate.newInstance(0, 1))).setEndLocation(Location.newInstance("end")).build(); VehicleRoute initialRoute = VehicleRoute.Builder.newInstance(vehicle).addService(service).build(); vrpBuilder.addInitialVehicleRoute(initialRoute); VehicleRoutingProblem vrp = vrpBuilder.build(); assertFalse(vrp.getJobs().containsKey("myService")); - assertEquals(3,vrp.getAllLocations().size()); + assertEquals(3, vrp.getAllLocations().size()); } @Test - public void whenAddingTwoJobs_theyShouldHaveProperIndeces() { + @DisplayName("When Adding Two Jobs _ they Should Have Proper Indeces") + void whenAddingTwoJobs_theyShouldHaveProperIndeces() { Service service = Service.Builder.newInstance("myService").setLocation(Location.newInstance("loc")).build(); - Shipment shipment = Shipment.Builder.newInstance("shipment").setPickupLocation(Location.Builder.newInstance().setId("pick").build()) - .setDeliveryLocation(Location.newInstance("del")).build(); + Shipment shipment = Shipment.Builder.newInstance("shipment").setPickupLocation(Location.Builder.newInstance().setId("pick").build()).setDeliveryLocation(Location.newInstance("del")).build(); VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); vrpBuilder.addJob(service); vrpBuilder.addJob(shipment); VehicleRoutingProblem vrp = vrpBuilder.build(); - assertEquals(1, service.getIndex()); assertEquals(2, shipment.getIndex()); - assertEquals(3,vrp.getAllLocations().size()); - + assertEquals(3, vrp.getAllLocations().size()); } - @Test(expected = IllegalArgumentException.class) - public void whenAddingTwoServicesWithTheSameId_itShouldThrowException() { - Service service1 = Service.Builder.newInstance("myService").setLocation(Location.newInstance("loc")).build(); - Service service2 = Service.Builder.newInstance("myService").setLocation(Location.newInstance("loc")).build(); - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - vrpBuilder.addJob(service1); - vrpBuilder.addJob(service2); - @SuppressWarnings("UnusedDeclaration") VehicleRoutingProblem vrp = vrpBuilder.build(); + @Test + @DisplayName("When Adding Two Services With The Same Id _ it Should Throw Exception") + void whenAddingTwoServicesWithTheSameId_itShouldThrowException() { + assertThrows(IllegalArgumentException.class, () -> { + Service service1 = Service.Builder.newInstance("myService").setLocation(Location.newInstance("loc")).build(); + Service service2 = Service.Builder.newInstance("myService").setLocation(Location.newInstance("loc")).build(); + VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); + vrpBuilder.addJob(service1); + vrpBuilder.addJob(service2); + @SuppressWarnings("UnusedDeclaration") + VehicleRoutingProblem vrp = vrpBuilder.build(); + }); } - @Test(expected = IllegalArgumentException.class) - public void whenAddingTwoShipmentsWithTheSameId_itShouldThrowException() { - Shipment shipment1 = Shipment.Builder.newInstance("shipment").setPickupLocation(Location.Builder.newInstance().setId("pick").build()) - .setDeliveryLocation(Location.newInstance("del")).build(); - Shipment shipment2 = Shipment.Builder.newInstance("shipment").setPickupLocation(Location.Builder.newInstance().setId("pick").build()) - .setDeliveryLocation(Location.newInstance("del")).build(); - VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); - vrpBuilder.addJob(shipment1); - vrpBuilder.addJob(shipment2); - @SuppressWarnings("UnusedDeclaration") VehicleRoutingProblem vrp = vrpBuilder.build(); - + @Test + @DisplayName("When Adding Two Shipments With The Same Id _ it Should Throw Exception") + void whenAddingTwoShipmentsWithTheSameId_itShouldThrowException() { + assertThrows(IllegalArgumentException.class, () -> { + Shipment shipment1 = Shipment.Builder.newInstance("shipment").setPickupLocation(Location.Builder.newInstance().setId("pick").build()).setDeliveryLocation(Location.newInstance("del")).build(); + Shipment shipment2 = Shipment.Builder.newInstance("shipment").setPickupLocation(Location.Builder.newInstance().setId("pick").build()).setDeliveryLocation(Location.newInstance("del")).build(); + VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); + vrpBuilder.addJob(shipment1); + vrpBuilder.addJob(shipment2); + @SuppressWarnings("UnusedDeclaration") + VehicleRoutingProblem vrp = vrpBuilder.build(); + }); } @Test - public void whenAddingTwoVehicles_theyShouldHaveProperIndices() { - VehicleImpl veh1 = VehicleImpl.Builder.newInstance("v1").setStartLocation(TestUtils.loc("start", Coordinate.newInstance(0, 1))) - .setEndLocation(Location.newInstance("end")).build(); - VehicleImpl veh2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(TestUtils.loc("start", Coordinate.newInstance(0, 1))) - .setEndLocation(Location.newInstance("end")).build(); - + @DisplayName("When Adding Two Vehicles _ they Should Have Proper Indices") + void whenAddingTwoVehicles_theyShouldHaveProperIndices() { + VehicleImpl veh1 = VehicleImpl.Builder.newInstance("v1").setStartLocation(TestUtils.loc("start", Coordinate.newInstance(0, 1))).setEndLocation(Location.newInstance("end")).build(); + VehicleImpl veh2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(TestUtils.loc("start", Coordinate.newInstance(0, 1))).setEndLocation(Location.newInstance("end")).build(); VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); vrpBuilder.addVehicle(veh1); vrpBuilder.addVehicle(veh2); vrpBuilder.build(); - assertEquals(1, veh1.getIndex()); assertEquals(2, veh2.getIndex()); - } @Test - public void whenAddingTwoVehiclesWithSameTypeIdentifier_typeIdentifiersShouldHaveSameIndices() { - VehicleImpl veh1 = VehicleImpl.Builder.newInstance("v1") - .setStartLocation(TestUtils.loc("start", Coordinate.newInstance(0, 1))) - .setEndLocation(Location.newInstance("end")).build(); - VehicleImpl veh2 = VehicleImpl.Builder.newInstance("v2") - .setStartLocation(TestUtils.loc("start", Coordinate.newInstance(0, 1))) - .setEndLocation(Location.newInstance("end")).build(); - + @DisplayName("When Adding Two Vehicles With Same Type Identifier _ type Identifiers Should Have Same Indices") + void whenAddingTwoVehiclesWithSameTypeIdentifier_typeIdentifiersShouldHaveSameIndices() { + VehicleImpl veh1 = VehicleImpl.Builder.newInstance("v1").setStartLocation(TestUtils.loc("start", Coordinate.newInstance(0, 1))).setEndLocation(Location.newInstance("end")).build(); + VehicleImpl veh2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(TestUtils.loc("start", Coordinate.newInstance(0, 1))).setEndLocation(Location.newInstance("end")).build(); VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); vrpBuilder.addVehicle(veh1); vrpBuilder.addVehicle(veh2); vrpBuilder.build(); - assertEquals(1, veh1.getVehicleTypeIdentifier().getIndex()); assertEquals(1, veh2.getVehicleTypeIdentifier().getIndex()); - } @Test - public void whenAddingTwoVehiclesDifferentTypeIdentifier_typeIdentifiersShouldHaveDifferentIndices() { - VehicleImpl veh1 = VehicleImpl.Builder.newInstance("v1") - .setStartLocation(TestUtils.loc("start", Coordinate.newInstance(0, 1))) - .setEndLocation(Location.newInstance("end")).build(); - VehicleImpl veh2 = VehicleImpl.Builder.newInstance("v2") - .setStartLocation(TestUtils.loc("startLoc", Coordinate.newInstance(0, 1))) - .setEndLocation(Location.newInstance("end")).build(); - + @DisplayName("When Adding Two Vehicles Different Type Identifier _ type Identifiers Should Have Different Indices") + void whenAddingTwoVehiclesDifferentTypeIdentifier_typeIdentifiersShouldHaveDifferentIndices() { + VehicleImpl veh1 = VehicleImpl.Builder.newInstance("v1").setStartLocation(TestUtils.loc("start", Coordinate.newInstance(0, 1))).setEndLocation(Location.newInstance("end")).build(); + VehicleImpl veh2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(TestUtils.loc("startLoc", Coordinate.newInstance(0, 1))).setEndLocation(Location.newInstance("end")).build(); VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); vrpBuilder.addVehicle(veh1); vrpBuilder.addVehicle(veh2); vrpBuilder.build(); - assertEquals(1, veh1.getVehicleTypeIdentifier().getIndex()); assertEquals(2, veh2.getVehicleTypeIdentifier().getIndex()); - } } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/LoadConstraintTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/LoadConstraintTest.java index 0773307e9..512c54a14 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/LoadConstraintTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/LoadConstraintTest.java @@ -15,7 +15,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.graphhopper.jsprit.core.problem.constraint; import com.graphhopper.jsprit.core.algorithm.state.StateManager; @@ -26,20 +25,22 @@ import com.graphhopper.jsprit.core.problem.solution.route.activity.*; import com.graphhopper.jsprit.core.problem.vehicle.Vehicle; import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.Collections; import java.util.List; -import static org.junit.Assert.*; +import static org.junit.jupiter.api.Assertions.*; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; /** * unit tests to test load constraints */ -public class LoadConstraintTest { +@DisplayName("Load Constraint Test") +class LoadConstraintTest { private VehicleRoute serviceRoute; @@ -49,31 +50,27 @@ public class LoadConstraintTest { private StateManager stateManager; - @Before - public void doBefore() { + @BeforeEach + void doBefore() { Vehicle vehicle = mock(Vehicle.class); VehicleType type = mock(VehicleType.class); when(type.getCapacityDimensions()).thenReturn(Capacity.Builder.newInstance().addDimension(0, 20).build()); when(vehicle.getType()).thenReturn(type); - VehicleRoutingProblem.Builder serviceProblemBuilder = VehicleRoutingProblem.Builder.newInstance(); Service s1 = Service.Builder.newInstance("s").addSizeDimension(0, 10).setLocation(Location.newInstance("loc")).build(); Service s2 = Service.Builder.newInstance("s2").addSizeDimension(0, 5).setLocation(Location.newInstance("loc")).build(); serviceProblemBuilder.addJob(s1).addJob(s2); final VehicleRoutingProblem serviceProblem = serviceProblemBuilder.build(); - final VehicleRoutingProblem.Builder pdProblemBuilder = VehicleRoutingProblem.Builder.newInstance(); Pickup pickup = (Pickup) Pickup.Builder.newInstance("pick").addSizeDimension(0, 10).setLocation(Location.newInstance("loc")).build(); Delivery delivery = (Delivery) Delivery.Builder.newInstance("del").addSizeDimension(0, 5).setLocation(Location.newInstance("loc")).build(); pdProblemBuilder.addJob(pickup).addJob(delivery); final VehicleRoutingProblem pdProblem = pdProblemBuilder.build(); - final VehicleRoutingProblem.Builder shipmentProblemBuilder = VehicleRoutingProblem.Builder.newInstance(); Shipment shipment1 = Shipment.Builder.newInstance("s1").addSizeDimension(0, 10).setPickupLocation(Location.Builder.newInstance().setId("pick").build()).setDeliveryLocation(Location.newInstance("del")).build(); Shipment shipment2 = Shipment.Builder.newInstance("s2").addSizeDimension(0, 5).setPickupLocation(Location.Builder.newInstance().setId("pick").build()).setDeliveryLocation(Location.newInstance("del")).build(); shipmentProblemBuilder.addJob(shipment1).addJob(shipment2).build(); final VehicleRoutingProblem shipmentProblem = shipmentProblemBuilder.build(); - VehicleRoute.Builder serviceRouteBuilder = VehicleRoute.Builder.newInstance(vehicle); serviceRouteBuilder.setJobActivityFactory(new JobActivityFactory() { @@ -81,45 +78,42 @@ public void doBefore() { public List createActivities(Job job) { return serviceProblem.copyAndGetActivities(job); } - }); serviceRoute = serviceRouteBuilder.addService(s1).addService(s2).build(); - VehicleRoute.Builder pdRouteBuilder = VehicleRoute.Builder.newInstance(vehicle); pdRouteBuilder.setJobActivityFactory(new JobActivityFactory() { + @Override public List createActivities(Job job) { return pdProblem.copyAndGetActivities(job); } }); pickup_delivery_route = pdRouteBuilder.addService(pickup).addService(delivery).build(); - VehicleRoute.Builder shipmentRouteBuilder = VehicleRoute.Builder.newInstance(vehicle); shipmentRouteBuilder.setJobActivityFactory(new JobActivityFactory() { + @Override public List createActivities(Job job) { return shipmentProblem.copyAndGetActivities(job); } }); shipment_route = shipmentRouteBuilder.addPickup(shipment1).addPickup(shipment2).addDelivery(shipment2).addDelivery(shipment1).build(); - VehicleRoutingProblem vrpMock = mock(VehicleRoutingProblem.class); when(vrpMock.getFleetSize()).thenReturn(VehicleRoutingProblem.FleetSize.FINITE); stateManager = new StateManager(vrpMock); stateManager.updateLoadStates(); } - /* serviceroute */ @Test - public void whenServiceRouteAndNewServiceFitsIn_itShouldReturnFulfilled() { + @DisplayName("When Service Route And New Service Fits In _ it Should Return Fulfilled") + void whenServiceRouteAndNewServiceFitsIn_itShouldReturnFulfilled() { stateManager.informInsertionStarts(Collections.singletonList(serviceRoute), Collections.emptyList()); Service s = createMock(Capacity.Builder.newInstance().addDimension(0, 5).build()); when(s.getSize()).thenReturn(Capacity.Builder.newInstance().addDimension(0, 5).build()); ServiceLoadRouteLevelConstraint loadconstraint = new ServiceLoadRouteLevelConstraint(stateManager); - JobInsertionContext context = new JobInsertionContext(serviceRoute, s, serviceRoute.getVehicle(), null, 0.); assertTrue(loadconstraint.fulfilled(context)); } @@ -152,56 +146,45 @@ private Shipment createShipmentMock(Capacity size) { return shipment; } - @Test - public void whenServiceRouteAndNewServiceFitsInBetweenStartAndAct1_itShouldReturnFulfilled() { + @DisplayName("When Service Route And New Service Fits In Between Start And Act 1 _ it Should Return Fulfilled") + void whenServiceRouteAndNewServiceFitsInBetweenStartAndAct1_itShouldReturnFulfilled() { stateManager.informInsertionStarts(Collections.singletonList(serviceRoute), Collections.emptyList()); - Capacity size = Capacity.Builder.newInstance().addDimension(0, 5).build(); Service s = createMock(size); - ServiceLoadActivityLevelConstraint loadConstraint = new ServiceLoadActivityLevelConstraint(stateManager); - JobInsertionContext context = new JobInsertionContext(serviceRoute, s, serviceRoute.getVehicle(), null, 0.); ServiceActivity newAct = mock(ServiceActivity.class); when(newAct.getSize()).thenReturn(size); - HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, serviceRoute.getStart(), newAct, serviceRoute.getActivities().get(0), 0.); - assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, status); } @Test - public void whenServiceRouteAndNewServiceFitsInBetweenAc1AndAct2_itShouldReturnFulfilled() { + @DisplayName("When Service Route And New Service Fits In Between Ac 1 And Act 2 _ it Should Return Fulfilled") + void whenServiceRouteAndNewServiceFitsInBetweenAc1AndAct2_itShouldReturnFulfilled() { stateManager.informInsertionStarts(Collections.singletonList(serviceRoute), Collections.emptyList()); Capacity size = Capacity.Builder.newInstance().addDimension(0, 5).build(); Service s = createMock(size); - ServiceLoadActivityLevelConstraint loadConstraint = new ServiceLoadActivityLevelConstraint(stateManager); - JobInsertionContext context = new JobInsertionContext(serviceRoute, s, serviceRoute.getVehicle(), null, 0.); ServiceActivity newAct = mock(ServiceActivity.class); when(newAct.getSize()).thenReturn(size); - HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, serviceRoute.getActivities().get(0), newAct, serviceRoute.getActivities().get(1), 0.); - assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, status); } @Test - public void whenServiceRouteAndNewServiceFitsInBetweenAc2AndEnd_itShouldReturnFulfilled() { + @DisplayName("When Service Route And New Service Fits In Between Ac 2 And End _ it Should Return Fulfilled") + void whenServiceRouteAndNewServiceFitsInBetweenAc2AndEnd_itShouldReturnFulfilled() { stateManager.informInsertionStarts(Collections.singletonList(serviceRoute), Collections.emptyList()); Capacity size = Capacity.Builder.newInstance().addDimension(0, 5).build(); Service s = createMock(size); - ServiceLoadActivityLevelConstraint loadConstraint = new ServiceLoadActivityLevelConstraint(stateManager); - JobInsertionContext context = new JobInsertionContext(serviceRoute, s, serviceRoute.getVehicle(), null, 0.); ServiceActivity newAct = mock(ServiceActivity.class); when(newAct.getSize()).thenReturn(size); - HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, serviceRoute.getActivities().get(1), newAct, serviceRoute.getEnd(), 0.); - assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, status); } @@ -209,64 +192,53 @@ public void whenServiceRouteAndNewServiceFitsInBetweenAc2AndEnd_itShouldReturnFu service does not fit in at act level */ @Test - public void whenServiceRouteAndNewServiceDoesNotFitInBetweenStartAndAct1_itShouldReturnFulfilled() { + @DisplayName("When Service Route And New Service Does Not Fit In Between Start And Act 1 _ it Should Return Fulfilled") + void whenServiceRouteAndNewServiceDoesNotFitInBetweenStartAndAct1_itShouldReturnFulfilled() { stateManager.informInsertionStarts(Collections.singletonList(serviceRoute), Collections.emptyList()); Capacity size = Capacity.Builder.newInstance().addDimension(0, 6).build(); Service s = createMock(size); - ServiceLoadActivityLevelConstraint loadConstraint = new ServiceLoadActivityLevelConstraint(stateManager); - JobInsertionContext context = new JobInsertionContext(serviceRoute, s, serviceRoute.getVehicle(), null, 0.); ServiceActivity newAct = mock(ServiceActivity.class); when(newAct.getSize()).thenReturn(size); - HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, serviceRoute.getStart(), newAct, serviceRoute.getActivities().get(0), 0.); - assertEquals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED, status); } @Test - public void whenServiceRouteAndNewServiceDoesNotFitInBetweenAc1AndAct2_itShouldReturnFulfilled() { + @DisplayName("When Service Route And New Service Does Not Fit In Between Ac 1 And Act 2 _ it Should Return Fulfilled") + void whenServiceRouteAndNewServiceDoesNotFitInBetweenAc1AndAct2_itShouldReturnFulfilled() { stateManager.informInsertionStarts(Collections.singletonList(serviceRoute), Collections.emptyList()); Capacity size = Capacity.Builder.newInstance().addDimension(0, 6).build(); Service s = createMock(size); - ServiceLoadActivityLevelConstraint loadConstraint = new ServiceLoadActivityLevelConstraint(stateManager); - JobInsertionContext context = new JobInsertionContext(serviceRoute, s, serviceRoute.getVehicle(), null, 0.); ServiceActivity newAct = mock(ServiceActivity.class); when(newAct.getSize()).thenReturn(size); - HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, serviceRoute.getActivities().get(0), newAct, serviceRoute.getActivities().get(1), 0.); - assertEquals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED, status); } @Test - public void whenServiceRouteAndNewServiceDoesNotFitInBetweenAc2AndEnd_itShouldReturnFulfilled() { + @DisplayName("When Service Route And New Service Does Not Fit In Between Ac 2 And End _ it Should Return Fulfilled") + void whenServiceRouteAndNewServiceDoesNotFitInBetweenAc2AndEnd_itShouldReturnFulfilled() { stateManager.informInsertionStarts(Collections.singletonList(serviceRoute), Collections.emptyList()); Capacity size = Capacity.Builder.newInstance().addDimension(0, 6).build(); Service s = createMock(size); - ServiceLoadActivityLevelConstraint loadConstraint = new ServiceLoadActivityLevelConstraint(stateManager); - JobInsertionContext context = new JobInsertionContext(serviceRoute, s, serviceRoute.getVehicle(), null, 0.); ServiceActivity newAct = mock(ServiceActivity.class); when(newAct.getSize()).thenReturn(size); - HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, serviceRoute.getActivities().get(1), newAct, serviceRoute.getEnd(), 0.); - assertEquals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED, status); } - @Test - public void whenServiceRouteAndNewServiceDoesNotFitIn_itShouldReturnFulfilled() { + @DisplayName("When Service Route And New Service Does Not Fit In _ it Should Return Fulfilled") + void whenServiceRouteAndNewServiceDoesNotFitIn_itShouldReturnFulfilled() { stateManager.informInsertionStarts(Collections.singletonList(serviceRoute), Collections.emptyList()); Service s = createMock(Capacity.Builder.newInstance().addDimension(0, 6).build()); - ServiceLoadRouteLevelConstraint loadconstraint = new ServiceLoadRouteLevelConstraint(stateManager); - JobInsertionContext context = new JobInsertionContext(serviceRoute, s, serviceRoute.getVehicle(), null, 0.); assertFalse(loadconstraint.fulfilled(context)); } @@ -277,46 +249,41 @@ public void whenServiceRouteAndNewServiceDoesNotFitIn_itShouldReturnFulfilled() delivery 5 */ @Test - public void whenPDRouteRouteAndNewPickupFitsIn_itShouldReturnFulfilled() { + @DisplayName("When PD Route Route And New Pickup Fits In _ it Should Return Fulfilled") + void whenPDRouteRouteAndNewPickupFitsIn_itShouldReturnFulfilled() { stateManager.informInsertionStarts(Collections.singletonList(pickup_delivery_route), Collections.emptyList()); - Pickup s = createPickupMock(Capacity.Builder.newInstance().addDimension(0, 10).build()); - ServiceLoadRouteLevelConstraint loadconstraint = new ServiceLoadRouteLevelConstraint(stateManager); - JobInsertionContext context = new JobInsertionContext(pickup_delivery_route, s, serviceRoute.getVehicle(), null, 0.); assertTrue(loadconstraint.fulfilled(context)); } @Test - public void whenPDRouteRouteAndNewDeliveryFitsIn_itShouldReturnFulfilled() { + @DisplayName("When PD Route Route And New Delivery Fits In _ it Should Return Fulfilled") + void whenPDRouteRouteAndNewDeliveryFitsIn_itShouldReturnFulfilled() { stateManager.informInsertionStarts(Collections.singletonList(pickup_delivery_route), Collections.emptyList()); Delivery s = createDeliveryMock(Capacity.Builder.newInstance().addDimension(0, 15).build()); - ServiceLoadRouteLevelConstraint loadconstraint = new ServiceLoadRouteLevelConstraint(stateManager); - JobInsertionContext context = new JobInsertionContext(pickup_delivery_route, s, serviceRoute.getVehicle(), null, 0.); assertTrue(loadconstraint.fulfilled(context)); } @Test - public void whenPDRouteRouteAndNewPickupDoesNotFitIn_itShouldReturnNotFulfilled() { + @DisplayName("When PD Route Route And New Pickup Does Not Fit In _ it Should Return Not Fulfilled") + void whenPDRouteRouteAndNewPickupDoesNotFitIn_itShouldReturnNotFulfilled() { stateManager.informInsertionStarts(Collections.singletonList(pickup_delivery_route), Collections.emptyList()); Pickup s = createPickupMock(Capacity.Builder.newInstance().addDimension(0, 11).build()); - ServiceLoadRouteLevelConstraint loadconstraint = new ServiceLoadRouteLevelConstraint(stateManager); - JobInsertionContext context = new JobInsertionContext(pickup_delivery_route, s, serviceRoute.getVehicle(), null, 0.); assertFalse(loadconstraint.fulfilled(context)); } @Test - public void whenPDRouteRouteAndNewDeliveryDoesNotFitIn_itShouldReturnNotFulfilled() { + @DisplayName("When PD Route Route And New Delivery Does Not Fit In _ it Should Return Not Fulfilled") + void whenPDRouteRouteAndNewDeliveryDoesNotFitIn_itShouldReturnNotFulfilled() { stateManager.informInsertionStarts(Collections.singletonList(pickup_delivery_route), Collections.emptyList()); Delivery s = createDeliveryMock(Capacity.Builder.newInstance().addDimension(0, 16).build()); - ServiceLoadRouteLevelConstraint loadconstraint = new ServiceLoadRouteLevelConstraint(stateManager); - JobInsertionContext context = new JobInsertionContext(pickup_delivery_route, s, serviceRoute.getVehicle(), null, 0.); assertFalse(loadconstraint.fulfilled(context)); } @@ -325,47 +292,38 @@ public void whenPDRouteRouteAndNewDeliveryDoesNotFitIn_itShouldReturnNotFulfille pick fits in between activities */ @Test - public void whenPDRoute_newPickupShouldFitInBetweenStartAndAct1() { + @DisplayName("When PD Route _ new Pickup Should Fit In Between Start And Act 1") + void whenPDRoute_newPickupShouldFitInBetweenStartAndAct1() { stateManager.informInsertionStarts(Collections.singletonList(pickup_delivery_route), Collections.emptyList()); Pickup s = createPickupMock(Capacity.Builder.newInstance().addDimension(0, 5).build()); - ServiceLoadActivityLevelConstraint loadConstraint = new ServiceLoadActivityLevelConstraint(stateManager); - JobInsertionContext context = new JobInsertionContext(pickup_delivery_route, s, pickup_delivery_route.getVehicle(), null, 0.); PickupService newAct = new PickupService(s); - HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, pickup_delivery_route.getStart(), newAct, pickup_delivery_route.getActivities().get(0), 0.); - assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, status); } @Test - public void whenPDRoute_newPickupShouldFitInBetweenAct1AndAct2() { + @DisplayName("When PD Route _ new Pickup Should Fit In Between Act 1 And Act 2") + void whenPDRoute_newPickupShouldFitInBetweenAct1AndAct2() { stateManager.informInsertionStarts(Collections.singletonList(pickup_delivery_route), Collections.emptyList()); Pickup s = createPickupMock(Capacity.Builder.newInstance().addDimension(0, 5).build()); - ServiceLoadActivityLevelConstraint loadConstraint = new ServiceLoadActivityLevelConstraint(stateManager); - JobInsertionContext context = new JobInsertionContext(pickup_delivery_route, s, pickup_delivery_route.getVehicle(), null, 0.); PickupService newAct = new PickupService(s); - HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, pickup_delivery_route.getActivities().get(0), newAct, pickup_delivery_route.getActivities().get(1), 0.); - assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, status); } @Test - public void whenPDRoute_newPickupShouldFitInBetweenAct2AndEnd() { + @DisplayName("When PD Route _ new Pickup Should Fit In Between Act 2 And End") + void whenPDRoute_newPickupShouldFitInBetweenAct2AndEnd() { stateManager.informInsertionStarts(Collections.singletonList(pickup_delivery_route), Collections.emptyList()); Pickup s = createPickupMock(Capacity.Builder.newInstance().addDimension(0, 10).build()); - ServiceLoadActivityLevelConstraint loadConstraint = new ServiceLoadActivityLevelConstraint(stateManager); - JobInsertionContext context = new JobInsertionContext(pickup_delivery_route, s, pickup_delivery_route.getVehicle(), null, 0.); PickupService newAct = new PickupService(s); - HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, pickup_delivery_route.getActivities().get(1), newAct, pickup_delivery_route.getEnd(), 0.); - assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, status); } @@ -373,175 +331,141 @@ public void whenPDRoute_newPickupShouldFitInBetweenAct2AndEnd() { pickup does not fit in between activities */ @Test - public void whenPDRoute_newPickupShouldNotFitInBetweenStartAndAct1() { + @DisplayName("When PD Route _ new Pickup Should Not Fit In Between Start And Act 1") + void whenPDRoute_newPickupShouldNotFitInBetweenStartAndAct1() { stateManager.informInsertionStarts(Collections.singletonList(pickup_delivery_route), Collections.emptyList()); Pickup s = createPickupMock(Capacity.Builder.newInstance().addDimension(0, 6).build()); - ServiceLoadActivityLevelConstraint loadConstraint = new ServiceLoadActivityLevelConstraint(stateManager); - JobInsertionContext context = new JobInsertionContext(pickup_delivery_route, s, pickup_delivery_route.getVehicle(), null, 0.); PickupService newAct = new PickupService(s); - HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, pickup_delivery_route.getStart(), newAct, pickup_delivery_route.getActivities().get(0), 0.); - assertEquals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED, status); } @Test - public void whenPDRoute_newPickupShouldNotFitInBetweenAct1AndAct2() { + @DisplayName("When PD Route _ new Pickup Should Not Fit In Between Act 1 And Act 2") + void whenPDRoute_newPickupShouldNotFitInBetweenAct1AndAct2() { stateManager.informInsertionStarts(Collections.singletonList(pickup_delivery_route), Collections.emptyList()); Pickup s = createPickupMock(Capacity.Builder.newInstance().addDimension(0, 6).build()); - ServiceLoadActivityLevelConstraint loadConstraint = new ServiceLoadActivityLevelConstraint(stateManager); - JobInsertionContext context = new JobInsertionContext(pickup_delivery_route, s, pickup_delivery_route.getVehicle(), null, 0.); PickupService newAct = new PickupService(s); - HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, pickup_delivery_route.getActivities().get(0), newAct, pickup_delivery_route.getActivities().get(1), 0.); - assertEquals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED, status); } @Test - public void whenPDRoute_newPickupShouldNotFitInBetweenAct2AndEnd() { + @DisplayName("When PD Route _ new Pickup Should Not Fit In Between Act 2 And End") + void whenPDRoute_newPickupShouldNotFitInBetweenAct2AndEnd() { stateManager.informInsertionStarts(Collections.singletonList(pickup_delivery_route), Collections.emptyList()); Pickup s = createPickupMock(Capacity.Builder.newInstance().addDimension(0, 11).build()); - ServiceLoadActivityLevelConstraint loadConstraint = new ServiceLoadActivityLevelConstraint(stateManager); - JobInsertionContext context = new JobInsertionContext(pickup_delivery_route, s, pickup_delivery_route.getVehicle(), null, 0.); PickupService newAct = new PickupService(s); - HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, pickup_delivery_route.getActivities().get(1), newAct, pickup_delivery_route.getEnd(), 0.); - assertEquals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED, status); } - /* pick fits in between activities */ @Test - public void whenPDRoute_newDeliveryShouldFitInBetweenStartAndAct1() { + @DisplayName("When PD Route _ new Delivery Should Fit In Between Start And Act 1") + void whenPDRoute_newDeliveryShouldFitInBetweenStartAndAct1() { stateManager.informInsertionStarts(Collections.singletonList(pickup_delivery_route), Collections.emptyList()); Delivery s = createDeliveryMock(Capacity.Builder.newInstance().addDimension(0, 15).build()); - ServiceLoadActivityLevelConstraint loadConstraint = new ServiceLoadActivityLevelConstraint(stateManager); - JobInsertionContext context = new JobInsertionContext(pickup_delivery_route, s, pickup_delivery_route.getVehicle(), null, 0.); DeliverService newAct = new DeliverService(s); - HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, pickup_delivery_route.getStart(), newAct, pickup_delivery_route.getActivities().get(0), 0.); - assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, status); } @Test - public void whenPDRoute_newDeliveryShouldNotFitInBetweenStartAndAct1() { + @DisplayName("When PD Route _ new Delivery Should Not Fit In Between Start And Act 1") + void whenPDRoute_newDeliveryShouldNotFitInBetweenStartAndAct1() { stateManager.informInsertionStarts(Collections.singletonList(pickup_delivery_route), Collections.emptyList()); Delivery s = createDeliveryMock(Capacity.Builder.newInstance().addDimension(0, 16).build()); - ServiceLoadActivityLevelConstraint loadConstraint = new ServiceLoadActivityLevelConstraint(stateManager); - JobInsertionContext context = new JobInsertionContext(pickup_delivery_route, s, pickup_delivery_route.getVehicle(), null, 0.); DeliverService newAct = new DeliverService(s); - HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, pickup_delivery_route.getStart(), newAct, pickup_delivery_route.getActivities().get(0), 0.); - assertEquals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED_BREAK, status); } @Test - public void whenPDRoute_newDeliveryShouldFitInBetweenAct1AndAct2() { + @DisplayName("When PD Route _ new Delivery Should Fit In Between Act 1 And Act 2") + void whenPDRoute_newDeliveryShouldFitInBetweenAct1AndAct2() { stateManager.informInsertionStarts(Collections.singletonList(pickup_delivery_route), Collections.emptyList()); Delivery s = createDeliveryMock(Capacity.Builder.newInstance().addDimension(0, 5).build()); - ServiceLoadActivityLevelConstraint loadConstraint = new ServiceLoadActivityLevelConstraint(stateManager); - JobInsertionContext context = new JobInsertionContext(pickup_delivery_route, s, pickup_delivery_route.getVehicle(), null, 0.); DeliverService newAct = new DeliverService(s); - HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, pickup_delivery_route.getActivities().get(0), newAct, pickup_delivery_route.getActivities().get(1), 0.); - assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, status); } @Test - public void whenPDRoute_newDeliveryNotShouldFitInBetweenAct1AndAct2() { + @DisplayName("When PD Route _ new Delivery Not Should Fit In Between Act 1 And Act 2") + void whenPDRoute_newDeliveryNotShouldFitInBetweenAct1AndAct2() { stateManager.informInsertionStarts(Collections.singletonList(pickup_delivery_route), Collections.emptyList()); Delivery s = createDeliveryMock(Capacity.Builder.newInstance().addDimension(0, 6).build()); - ServiceLoadActivityLevelConstraint loadConstraint = new ServiceLoadActivityLevelConstraint(stateManager); - JobInsertionContext context = new JobInsertionContext(pickup_delivery_route, s, pickup_delivery_route.getVehicle(), null, 0.); DeliverService newAct = new DeliverService(s); - HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, pickup_delivery_route.getActivities().get(0), newAct, pickup_delivery_route.getActivities().get(1), 0.); - assertEquals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED_BREAK, status); } @Test - public void whenPDRoute_newDeliveryShouldFitInBetweenAct2AndEnd() { + @DisplayName("When PD Route _ new Delivery Should Fit In Between Act 2 And End") + void whenPDRoute_newDeliveryShouldFitInBetweenAct2AndEnd() { stateManager.informInsertionStarts(Collections.singletonList(pickup_delivery_route), Collections.emptyList()); Delivery s = createDeliveryMock(Capacity.Builder.newInstance().addDimension(0, 5).build()); - ServiceLoadActivityLevelConstraint loadConstraint = new ServiceLoadActivityLevelConstraint(stateManager); - JobInsertionContext context = new JobInsertionContext(pickup_delivery_route, s, pickup_delivery_route.getVehicle(), null, 0.); DeliverService newAct = new DeliverService(s); - HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, pickup_delivery_route.getActivities().get(1), newAct, pickup_delivery_route.getEnd(), 0.); - assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, status); } @Test - public void whenPDRoute_newDeliveryShouldNotFitInBetweenAct2AndEnd() { + @DisplayName("When PD Route _ new Delivery Should Not Fit In Between Act 2 And End") + void whenPDRoute_newDeliveryShouldNotFitInBetweenAct2AndEnd() { stateManager.informInsertionStarts(Collections.singletonList(pickup_delivery_route), Collections.emptyList()); Delivery s = createDeliveryMock(Capacity.Builder.newInstance().addDimension(0, 6).build()); - ServiceLoadActivityLevelConstraint loadConstraint = new ServiceLoadActivityLevelConstraint(stateManager); - JobInsertionContext context = new JobInsertionContext(pickup_delivery_route, s, pickup_delivery_route.getVehicle(), null, 0.); DeliverService newAct = new DeliverService(s); - HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, pickup_delivery_route.getActivities().get(1), newAct, pickup_delivery_route.getEnd(), 0.); - assertEquals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED_BREAK, status); } @Test - public void whenPDRouteAndNewServiceFitsInBetweenAc1AndAct2_itShouldReturnFulfilled() { + @DisplayName("When PD Route And New Service Fits In Between Ac 1 And Act 2 _ it Should Return Fulfilled") + void whenPDRouteAndNewServiceFitsInBetweenAc1AndAct2_itShouldReturnFulfilled() { stateManager.informInsertionStarts(Collections.singletonList(pickup_delivery_route), Collections.emptyList()); Capacity size = Capacity.Builder.newInstance().addDimension(0, 5).build(); Service s = createMock(size); - ServiceLoadActivityLevelConstraint loadConstraint = new ServiceLoadActivityLevelConstraint(stateManager); - JobInsertionContext context = new JobInsertionContext(serviceRoute, s, serviceRoute.getVehicle(), null, 0.); ServiceActivity newAct = mock(ServiceActivity.class); when(newAct.getSize()).thenReturn(size); - HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, serviceRoute.getActivities().get(0), newAct, serviceRoute.getActivities().get(1), 0.); - assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, status); } @Test - public void whenPDRouteAndNewServiceFitsInBetweenAc2AndEnd_itShouldReturnFulfilled() { + @DisplayName("When PD Route And New Service Fits In Between Ac 2 And End _ it Should Return Fulfilled") + void whenPDRouteAndNewServiceFitsInBetweenAc2AndEnd_itShouldReturnFulfilled() { stateManager.informInsertionStarts(Collections.singletonList(pickup_delivery_route), Collections.emptyList()); Capacity size = Capacity.Builder.newInstance().addDimension(0, 5).build(); Service s = createMock(size); - ServiceLoadActivityLevelConstraint loadConstraint = new ServiceLoadActivityLevelConstraint(stateManager); - JobInsertionContext context = new JobInsertionContext(serviceRoute, s, serviceRoute.getVehicle(), null, 0.); ServiceActivity newAct = mock(ServiceActivity.class); when(newAct.getSize()).thenReturn(size); - HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, serviceRoute.getActivities().get(1), newAct, serviceRoute.getEnd(), 0.); - assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, status); } @@ -549,419 +473,324 @@ public void whenPDRouteAndNewServiceFitsInBetweenAc2AndEnd_itShouldReturnFulfill service does not fit in at act level */ @Test - public void whenPDRouteAndNewServiceDoesNotFitInBetweenStartAndAct1_itShouldReturnFulfilled() { + @DisplayName("When PD Route And New Service Does Not Fit In Between Start And Act 1 _ it Should Return Fulfilled") + void whenPDRouteAndNewServiceDoesNotFitInBetweenStartAndAct1_itShouldReturnFulfilled() { stateManager.informInsertionStarts(Collections.singletonList(serviceRoute), Collections.emptyList()); Capacity size = Capacity.Builder.newInstance().addDimension(0, 6).build(); Service s = createMock(size); - ServiceLoadActivityLevelConstraint loadConstraint = new ServiceLoadActivityLevelConstraint(stateManager); - JobInsertionContext context = new JobInsertionContext(serviceRoute, s, serviceRoute.getVehicle(), null, 0.); ServiceActivity newAct = mock(ServiceActivity.class); when(newAct.getSize()).thenReturn(size); - HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, serviceRoute.getStart(), newAct, serviceRoute.getActivities().get(0), 0.); - assertEquals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED, status); } @Test - public void whenPDRouteAndNewServiceDoesNotFitInBetweenAc1AndAct2_itShouldReturnFulfilled() { + @DisplayName("When PD Route And New Service Does Not Fit In Between Ac 1 And Act 2 _ it Should Return Fulfilled") + void whenPDRouteAndNewServiceDoesNotFitInBetweenAc1AndAct2_itShouldReturnFulfilled() { stateManager.informInsertionStarts(Collections.singletonList(pickup_delivery_route), Collections.emptyList()); Capacity size = Capacity.Builder.newInstance().addDimension(0, 6).build(); Service s = createMock(size); - ServiceLoadActivityLevelConstraint loadConstraint = new ServiceLoadActivityLevelConstraint(stateManager); - JobInsertionContext context = new JobInsertionContext(serviceRoute, s, serviceRoute.getVehicle(), null, 0.); ServiceActivity newAct = mock(ServiceActivity.class); when(newAct.getSize()).thenReturn(size); - HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, serviceRoute.getActivities().get(0), newAct, serviceRoute.getActivities().get(1), 0.); - assertEquals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED, status); } @Test - public void whenPDRouteAndNewServiceDoesNotFitInBetweenAc2AndEnd_itShouldReturnFulfilled() { + @DisplayName("When PD Route And New Service Does Not Fit In Between Ac 2 And End _ it Should Return Fulfilled") + void whenPDRouteAndNewServiceDoesNotFitInBetweenAc2AndEnd_itShouldReturnFulfilled() { stateManager.informInsertionStarts(Collections.singletonList(serviceRoute), Collections.emptyList()); Capacity size = Capacity.Builder.newInstance().addDimension(0, 6).build(); Service s = createMock(size); - ServiceLoadActivityLevelConstraint loadConstraint = new ServiceLoadActivityLevelConstraint(stateManager); - JobInsertionContext context = new JobInsertionContext(serviceRoute, s, serviceRoute.getVehicle(), null, 0.); ServiceActivity newAct = mock(ServiceActivity.class); when(newAct.getSize()).thenReturn(size); - HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, serviceRoute.getActivities().get(1), newAct, serviceRoute.getEnd(), 0.); - assertEquals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED, status); } - @Test - public void whenPDRouteAndNewServiceDoesNotFitIn_itShouldReturnFulfilled() { + @DisplayName("When PD Route And New Service Does Not Fit In _ it Should Return Fulfilled") + void whenPDRouteAndNewServiceDoesNotFitIn_itShouldReturnFulfilled() { stateManager.informInsertionStarts(Collections.singletonList(serviceRoute), Collections.emptyList()); Service s = createMock(Capacity.Builder.newInstance().addDimension(0, 6).build()); - ServiceLoadRouteLevelConstraint loadconstraint = new ServiceLoadRouteLevelConstraint(stateManager); - JobInsertionContext context = new JobInsertionContext(serviceRoute, s, serviceRoute.getVehicle(), null, 0.); assertFalse(loadconstraint.fulfilled(context)); } -/* + /* shipment route shipment1 10 shipment2 5 pickup(s1) pickup(s2) delivery(s2) deliver(s1) */ - @Test - public void whenShipmentRouteAndPickupOfNewShipmentShouldFitInBetweenStartAndAct1() { + @DisplayName("When Shipment Route And Pickup Of New Shipment Should Fit In Between Start And Act 1") + void whenShipmentRouteAndPickupOfNewShipmentShouldFitInBetweenStartAndAct1() { stateManager.informInsertionStarts(Collections.singletonList(shipment_route), Collections.emptyList()); - Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 20).build(); Shipment s = createShipmentMock(newSize); - JobInsertionContext context = new JobInsertionContext(shipment_route, s, shipment_route.getVehicle(), null, 0.); - PickupShipment newAct = new PickupShipment(s); PickupAndDeliverShipmentLoadActivityLevelConstraint loadConstraint = new PickupAndDeliverShipmentLoadActivityLevelConstraint(stateManager); HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, shipment_route.getStart(), newAct, shipment_route.getActivities().get(0), 0.); - assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, status); - } @Test - public void whenShipmentRouteAndPickupOfNewShipmentShouldNotFitInBetweenStartAndAct1() { + @DisplayName("When Shipment Route And Pickup Of New Shipment Should Not Fit In Between Start And Act 1") + void whenShipmentRouteAndPickupOfNewShipmentShouldNotFitInBetweenStartAndAct1() { stateManager.informInsertionStarts(Collections.singletonList(shipment_route), Collections.emptyList()); - Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 21).build(); Shipment s = createShipmentMock(newSize); - JobInsertionContext context = new JobInsertionContext(shipment_route, s, shipment_route.getVehicle(), null, 0.); - PickupShipment newAct = new PickupShipment(s); PickupAndDeliverShipmentLoadActivityLevelConstraint loadConstraint = new PickupAndDeliverShipmentLoadActivityLevelConstraint(stateManager); HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, shipment_route.getStart(), newAct, shipment_route.getActivities().get(0), 0.); - assertEquals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED, status); - } @Test - public void whenShipmentRouteAndPickupOfNewShipmentShouldFitInBetweenAct1AndAct2() { + @DisplayName("When Shipment Route And Pickup Of New Shipment Should Fit In Between Act 1 And Act 2") + void whenShipmentRouteAndPickupOfNewShipmentShouldFitInBetweenAct1AndAct2() { stateManager.informInsertionStarts(Collections.singletonList(shipment_route), Collections.emptyList()); - Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 10).build(); Shipment s = createShipmentMock(newSize); - JobInsertionContext context = new JobInsertionContext(shipment_route, s, shipment_route.getVehicle(), null, 0.); - PickupShipment newAct = new PickupShipment(s); PickupAndDeliverShipmentLoadActivityLevelConstraint loadConstraint = new PickupAndDeliverShipmentLoadActivityLevelConstraint(stateManager); HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, shipment_route.getActivities().get(0), newAct, shipment_route.getActivities().get(1), 0.); - assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, status); - } @Test - public void whenShipmentRouteAndPickupOfNewShipmentShouldNotFitInBetweenAct1AndAct2() { + @DisplayName("When Shipment Route And Pickup Of New Shipment Should Not Fit In Between Act 1 And Act 2") + void whenShipmentRouteAndPickupOfNewShipmentShouldNotFitInBetweenAct1AndAct2() { stateManager.informInsertionStarts(Collections.singletonList(shipment_route), Collections.emptyList()); - Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 11).build(); Shipment s = createShipmentMock(newSize); - JobInsertionContext context = new JobInsertionContext(shipment_route, s, shipment_route.getVehicle(), null, 0.); - PickupShipment newAct = new PickupShipment(s); PickupAndDeliverShipmentLoadActivityLevelConstraint loadConstraint = new PickupAndDeliverShipmentLoadActivityLevelConstraint(stateManager); HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, shipment_route.getActivities().get(0), newAct, shipment_route.getActivities().get(1), 0.); - assertEquals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED, status); - } @Test - public void whenShipmentRouteAndPickupOfNewShipmentShouldFitInBetweenAct2AndAct3() { + @DisplayName("When Shipment Route And Pickup Of New Shipment Should Fit In Between Act 2 And Act 3") + void whenShipmentRouteAndPickupOfNewShipmentShouldFitInBetweenAct2AndAct3() { stateManager.informInsertionStarts(Collections.singletonList(shipment_route), Collections.emptyList()); - Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 5).build(); Shipment s = createShipmentMock(newSize); - JobInsertionContext context = new JobInsertionContext(shipment_route, s, shipment_route.getVehicle(), null, 0.); - PickupShipment newAct = new PickupShipment(s); PickupAndDeliverShipmentLoadActivityLevelConstraint loadConstraint = new PickupAndDeliverShipmentLoadActivityLevelConstraint(stateManager); HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, shipment_route.getActivities().get(1), newAct, shipment_route.getActivities().get(2), 0.); - assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, status); - } @Test - public void whenShipmentRouteAndPickupOfNewShipmentShouldNotFitInBetweenAct2AndAct3() { + @DisplayName("When Shipment Route And Pickup Of New Shipment Should Not Fit In Between Act 2 And Act 3") + void whenShipmentRouteAndPickupOfNewShipmentShouldNotFitInBetweenAct2AndAct3() { stateManager.informInsertionStarts(Collections.singletonList(shipment_route), Collections.emptyList()); - Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 6).build(); Shipment s = createShipmentMock(newSize); - JobInsertionContext context = new JobInsertionContext(shipment_route, s, shipment_route.getVehicle(), null, 0.); - PickupShipment newAct = new PickupShipment(s); PickupAndDeliverShipmentLoadActivityLevelConstraint loadConstraint = new PickupAndDeliverShipmentLoadActivityLevelConstraint(stateManager); HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, shipment_route.getActivities().get(1), newAct, shipment_route.getActivities().get(2), 0.); - assertEquals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED, status); - } @Test - public void whenShipmentRouteAndPickupOfNewShipmentShouldFitInBetweenAct3AndAct4() { + @DisplayName("When Shipment Route And Pickup Of New Shipment Should Fit In Between Act 3 And Act 4") + void whenShipmentRouteAndPickupOfNewShipmentShouldFitInBetweenAct3AndAct4() { stateManager.informInsertionStarts(Collections.singletonList(shipment_route), Collections.emptyList()); - Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 10).build(); Shipment s = createShipmentMock(newSize); - JobInsertionContext context = new JobInsertionContext(shipment_route, s, shipment_route.getVehicle(), null, 0.); - PickupShipment newAct = new PickupShipment(s); PickupAndDeliverShipmentLoadActivityLevelConstraint loadConstraint = new PickupAndDeliverShipmentLoadActivityLevelConstraint(stateManager); HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, shipment_route.getActivities().get(2), newAct, shipment_route.getActivities().get(3), 0.); - assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, status); - } @Test - public void whenShipmentRouteAndPickupOfNewShipmentShouldNotFitInBetweenAct3AndAct4() { + @DisplayName("When Shipment Route And Pickup Of New Shipment Should Not Fit In Between Act 3 And Act 4") + void whenShipmentRouteAndPickupOfNewShipmentShouldNotFitInBetweenAct3AndAct4() { stateManager.informInsertionStarts(Collections.singletonList(shipment_route), Collections.emptyList()); - Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 11).build(); Shipment s = createShipmentMock(newSize); - JobInsertionContext context = new JobInsertionContext(shipment_route, s, shipment_route.getVehicle(), null, 0.); - PickupShipment newAct = new PickupShipment(s); PickupAndDeliverShipmentLoadActivityLevelConstraint loadConstraint = new PickupAndDeliverShipmentLoadActivityLevelConstraint(stateManager); HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, shipment_route.getActivities().get(2), newAct, shipment_route.getActivities().get(3), 0.); - assertEquals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED, status); - } @Test - public void whenShipmentRouteAndPickupOfNewShipmentShouldFitInBetweenAct4AndEnd() { + @DisplayName("When Shipment Route And Pickup Of New Shipment Should Fit In Between Act 4 And End") + void whenShipmentRouteAndPickupOfNewShipmentShouldFitInBetweenAct4AndEnd() { stateManager.informInsertionStarts(Collections.singletonList(shipment_route), Collections.emptyList()); - Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 20).build(); Shipment s = createShipmentMock(newSize); - JobInsertionContext context = new JobInsertionContext(shipment_route, s, shipment_route.getVehicle(), null, 0.); - PickupShipment newAct = new PickupShipment(s); PickupAndDeliverShipmentLoadActivityLevelConstraint loadConstraint = new PickupAndDeliverShipmentLoadActivityLevelConstraint(stateManager); HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, shipment_route.getActivities().get(3), newAct, shipment_route.getEnd(), 0.); - assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, status); - } @Test - public void whenShipmentRouteAndPickupOfNewShipmentShouldNotFitInBetweenAct4AndEnd() { + @DisplayName("When Shipment Route And Pickup Of New Shipment Should Not Fit In Between Act 4 And End") + void whenShipmentRouteAndPickupOfNewShipmentShouldNotFitInBetweenAct4AndEnd() { stateManager.informInsertionStarts(Collections.singletonList(shipment_route), Collections.emptyList()); - Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 21).build(); Shipment s = createShipmentMock(newSize); - JobInsertionContext context = new JobInsertionContext(shipment_route, s, shipment_route.getVehicle(), null, 0.); - PickupShipment newAct = new PickupShipment(s); PickupAndDeliverShipmentLoadActivityLevelConstraint loadConstraint = new PickupAndDeliverShipmentLoadActivityLevelConstraint(stateManager); HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, shipment_route.getActivities().get(3), newAct, shipment_route.getEnd(), 0.); - assertEquals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED, status); - } - /* deliverShipment */ - @Test - public void whenShipmentRouteAndDeliveryOfNewShipmentShouldFitInBetweenStartAndAct1() { + @DisplayName("When Shipment Route And Delivery Of New Shipment Should Fit In Between Start And Act 1") + void whenShipmentRouteAndDeliveryOfNewShipmentShouldFitInBetweenStartAndAct1() { stateManager.informInsertionStarts(Collections.singletonList(shipment_route), Collections.emptyList()); - Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 20).build(); Shipment s = createShipmentMock(newSize); - JobInsertionContext context = new JobInsertionContext(shipment_route, s, shipment_route.getVehicle(), null, 0.); - DeliverShipment newAct = new DeliverShipment(s); PickupAndDeliverShipmentLoadActivityLevelConstraint loadConstraint = new PickupAndDeliverShipmentLoadActivityLevelConstraint(stateManager); HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, shipment_route.getStart(), newAct, shipment_route.getActivities().get(0), 0.); - assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, status); - } @Test - public void whenShipmentRouteAndDeliveryOfNewShipmentShouldNotFitInBetweenStartAndAct1() { + @DisplayName("When Shipment Route And Delivery Of New Shipment Should Not Fit In Between Start And Act 1") + void whenShipmentRouteAndDeliveryOfNewShipmentShouldNotFitInBetweenStartAndAct1() { stateManager.informInsertionStarts(Collections.singletonList(shipment_route), Collections.emptyList()); - Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 21).build(); Shipment s = createShipmentMock(newSize); - JobInsertionContext context = new JobInsertionContext(shipment_route, s, shipment_route.getVehicle(), null, 0.); - DeliverShipment newAct = new DeliverShipment(s); PickupAndDeliverShipmentLoadActivityLevelConstraint loadConstraint = new PickupAndDeliverShipmentLoadActivityLevelConstraint(stateManager); HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, shipment_route.getStart(), newAct, shipment_route.getActivities().get(0), 0.); - assertEquals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED_BREAK, status); - } @Test - public void whenShipmentRouteAndDeliveryOfNewShipmentShouldFitInBetweenAct1AndAct2() { + @DisplayName("When Shipment Route And Delivery Of New Shipment Should Fit In Between Act 1 And Act 2") + void whenShipmentRouteAndDeliveryOfNewShipmentShouldFitInBetweenAct1AndAct2() { stateManager.informInsertionStarts(Collections.singletonList(shipment_route), Collections.emptyList()); - Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 10).build(); Shipment s = createShipmentMock(newSize); - JobInsertionContext context = new JobInsertionContext(shipment_route, s, shipment_route.getVehicle(), null, 0.); - DeliverShipment newAct = new DeliverShipment(s); PickupAndDeliverShipmentLoadActivityLevelConstraint loadConstraint = new PickupAndDeliverShipmentLoadActivityLevelConstraint(stateManager); HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, shipment_route.getActivities().get(0), newAct, shipment_route.getActivities().get(1), 0.); - assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, status); - } @Test - public void whenShipmentRouteAndDeliveryOfNewShipmentShouldNotFitInBetweenAct1AndAct2() { + @DisplayName("When Shipment Route And Delivery Of New Shipment Should Not Fit In Between Act 1 And Act 2") + void whenShipmentRouteAndDeliveryOfNewShipmentShouldNotFitInBetweenAct1AndAct2() { stateManager.informInsertionStarts(Collections.singletonList(shipment_route), Collections.emptyList()); - Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 11).build(); Shipment s = createShipmentMock(newSize); - JobInsertionContext context = new JobInsertionContext(shipment_route, s, shipment_route.getVehicle(), null, 0.); - DeliverShipment newAct = new DeliverShipment(s); PickupAndDeliverShipmentLoadActivityLevelConstraint loadConstraint = new PickupAndDeliverShipmentLoadActivityLevelConstraint(stateManager); HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, shipment_route.getActivities().get(0), newAct, shipment_route.getActivities().get(1), 0.); - assertEquals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED_BREAK, status); - } @Test - public void whenShipmentRouteAndDeliveryOfNewShipmentShouldFitInBetweenAct2AndAct3() { + @DisplayName("When Shipment Route And Delivery Of New Shipment Should Fit In Between Act 2 And Act 3") + void whenShipmentRouteAndDeliveryOfNewShipmentShouldFitInBetweenAct2AndAct3() { stateManager.informInsertionStarts(Collections.singletonList(shipment_route), Collections.emptyList()); - Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 5).build(); Shipment s = createShipmentMock(newSize); - JobInsertionContext context = new JobInsertionContext(shipment_route, s, shipment_route.getVehicle(), null, 0.); - DeliverShipment newAct = new DeliverShipment(s); PickupAndDeliverShipmentLoadActivityLevelConstraint loadConstraint = new PickupAndDeliverShipmentLoadActivityLevelConstraint(stateManager); HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, shipment_route.getActivities().get(1), newAct, shipment_route.getActivities().get(2), 0.); - assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, status); - } @Test - public void whenShipmentRouteAndDeliveryOfNewShipmentShouldNotFitInBetweenAct2AndAct3() { + @DisplayName("When Shipment Route And Delivery Of New Shipment Should Not Fit In Between Act 2 And Act 3") + void whenShipmentRouteAndDeliveryOfNewShipmentShouldNotFitInBetweenAct2AndAct3() { stateManager.informInsertionStarts(Collections.singletonList(shipment_route), Collections.emptyList()); - Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 6).build(); Shipment s = createShipmentMock(newSize); - JobInsertionContext context = new JobInsertionContext(shipment_route, s, shipment_route.getVehicle(), null, 0.); - DeliverShipment newAct = new DeliverShipment(s); PickupAndDeliverShipmentLoadActivityLevelConstraint loadConstraint = new PickupAndDeliverShipmentLoadActivityLevelConstraint(stateManager); HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, shipment_route.getActivities().get(1), newAct, shipment_route.getActivities().get(2), 0.); - assertEquals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED_BREAK, status); - } @Test - public void whenShipmentRouteAndDeliveryOfNewShipmentShouldFitInBetweenAct3AndAct4() { + @DisplayName("When Shipment Route And Delivery Of New Shipment Should Fit In Between Act 3 And Act 4") + void whenShipmentRouteAndDeliveryOfNewShipmentShouldFitInBetweenAct3AndAct4() { stateManager.informInsertionStarts(Collections.singletonList(shipment_route), Collections.emptyList()); - Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 10).build(); Shipment s = createShipmentMock(newSize); - JobInsertionContext context = new JobInsertionContext(shipment_route, s, shipment_route.getVehicle(), null, 0.); - DeliverShipment newAct = new DeliverShipment(s); PickupAndDeliverShipmentLoadActivityLevelConstraint loadConstraint = new PickupAndDeliverShipmentLoadActivityLevelConstraint(stateManager); HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, shipment_route.getActivities().get(2), newAct, shipment_route.getActivities().get(3), 0.); - assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, status); - } @Test - public void whenShipmentRouteAndDeliveryOfNewShipmentShouldNotFitInBetweenAct3AndAct4() { + @DisplayName("When Shipment Route And Delivery Of New Shipment Should Not Fit In Between Act 3 And Act 4") + void whenShipmentRouteAndDeliveryOfNewShipmentShouldNotFitInBetweenAct3AndAct4() { stateManager.informInsertionStarts(Collections.singletonList(shipment_route), Collections.emptyList()); - Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 11).build(); Shipment s = createShipmentMock(newSize); - JobInsertionContext context = new JobInsertionContext(shipment_route, s, shipment_route.getVehicle(), null, 0.); - DeliverShipment newAct = new DeliverShipment(s); PickupAndDeliverShipmentLoadActivityLevelConstraint loadConstraint = new PickupAndDeliverShipmentLoadActivityLevelConstraint(stateManager); HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, shipment_route.getActivities().get(2), newAct, shipment_route.getActivities().get(3), 0.); - assertEquals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED_BREAK, status); - } @Test - public void whenShipmentRouteAndDeliveryOfNewShipmentShouldFitInBetweenAct4AndEnd() { + @DisplayName("When Shipment Route And Delivery Of New Shipment Should Fit In Between Act 4 And End") + void whenShipmentRouteAndDeliveryOfNewShipmentShouldFitInBetweenAct4AndEnd() { stateManager.informInsertionStarts(Collections.singletonList(shipment_route), Collections.emptyList()); - Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 20).build(); Shipment s = createShipmentMock(newSize); - JobInsertionContext context = new JobInsertionContext(shipment_route, s, shipment_route.getVehicle(), null, 0.); - DeliverShipment newAct = new DeliverShipment(s); PickupAndDeliverShipmentLoadActivityLevelConstraint loadConstraint = new PickupAndDeliverShipmentLoadActivityLevelConstraint(stateManager); HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, shipment_route.getActivities().get(3), newAct, shipment_route.getEnd(), 0.); - assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, status); - } @Test - public void whenShipmentRouteAndDeliveryOfNewShipmentShouldNotFitInBetweenAct4AndEnd() { + @DisplayName("When Shipment Route And Delivery Of New Shipment Should Not Fit In Between Act 4 And End") + void whenShipmentRouteAndDeliveryOfNewShipmentShouldNotFitInBetweenAct4AndEnd() { stateManager.informInsertionStarts(Collections.singletonList(shipment_route), Collections.emptyList()); - Capacity newSize = Capacity.Builder.newInstance().addDimension(0, 21).build(); Shipment s = createShipmentMock(newSize); - JobInsertionContext context = new JobInsertionContext(shipment_route, s, shipment_route.getVehicle(), null, 0.); - DeliverShipment newAct = new DeliverShipment(s); PickupAndDeliverShipmentLoadActivityLevelConstraint loadConstraint = new PickupAndDeliverShipmentLoadActivityLevelConstraint(stateManager); HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, shipment_route.getActivities().get(3), newAct, shipment_route.getEnd(), 0.); - assertEquals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED_BREAK, status); - } - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/MaxTimeInVehicleConstraintTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/MaxTimeInVehicleConstraintTest.java index 95def3f0d..adb9ccdcd 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/MaxTimeInVehicleConstraintTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/MaxTimeInVehicleConstraintTest.java @@ -15,7 +15,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.graphhopper.jsprit.core.problem.constraint; import com.graphhopper.jsprit.core.algorithm.state.StateId; @@ -35,16 +34,18 @@ import com.graphhopper.jsprit.core.problem.solution.route.activity.TourActivity; import com.graphhopper.jsprit.core.problem.vehicle.Vehicle; import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.*; /** * Created by schroeder on 19/09/16. */ -public class MaxTimeInVehicleConstraintTest { +@DisplayName("Max Time In Vehicle Constraint Test") +class MaxTimeInVehicleConstraintTest { Delivery d1; @@ -64,357 +65,285 @@ public class MaxTimeInVehicleConstraintTest { VehicleRoutingProblem vrp; - @Before - public void doBefore(){ - + @BeforeEach + void doBefore() { } private void ini(double maxTimeShipment, double maxTimeDelivery, double maxTimePickup) { - d1 = Delivery.Builder.newInstance("d1").setLocation(Location.newInstance(10,0)).build(); - - s1 = Shipment.Builder.newInstance("s1").setPickupLocation(Location.newInstance(20,0)) - .setDeliveryLocation(Location.newInstance(40, 0)).setMaxTimeInVehicle(maxTimeShipment).build(); - - s2 = Shipment.Builder.newInstance("s2").setPickupLocation(Location.newInstance(20,0)) - .setDeliveryLocation(Location.newInstance(40, 0)).setMaxTimeInVehicle(maxTimeShipment).build(); - - d2 = Delivery.Builder.newInstance("d2") - .setMaxTimeInVehicle(maxTimeDelivery) - .setLocation(Location.newInstance(30, 0)).setServiceTime(10).build(); - + d1 = Delivery.Builder.newInstance("d1").setLocation(Location.newInstance(10, 0)).build(); + s1 = Shipment.Builder.newInstance("s1").setPickupLocation(Location.newInstance(20, 0)).setDeliveryLocation(Location.newInstance(40, 0)).setMaxTimeInVehicle(maxTimeShipment).build(); + s2 = Shipment.Builder.newInstance("s2").setPickupLocation(Location.newInstance(20, 0)).setDeliveryLocation(Location.newInstance(40, 0)).setMaxTimeInVehicle(maxTimeShipment).build(); + d2 = Delivery.Builder.newInstance("d2").setMaxTimeInVehicle(maxTimeDelivery).setLocation(Location.newInstance(30, 0)).setServiceTime(10).build(); p1 = Pickup.Builder.newInstance("p1").setLocation(Location.newInstance(10, 0)).build(); - p2 = Pickup.Builder.newInstance("p2") -// .setMaxTimeInVehicle(maxTimePickup) - .setLocation(Location.newInstance(20, 0)).build(); - - v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(0,0)).build(); - - vrp = VehicleRoutingProblem.Builder.newInstance().addJob(d1).addJob(s1).addJob(d2).addJob(p1).addJob(p2) - .addVehicle(v).build(); - - route = VehicleRoute.Builder.newInstance(v).setJobActivityFactory(vrp.getJobActivityFactory()) - .addDelivery(d1).addPickup(s1).addDelivery(s1).build(); + p2 = Pickup.Builder.newInstance("p2").setLocation(Location.newInstance(20, 0)).build(); + v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(0, 0)).build(); + vrp = VehicleRoutingProblem.Builder.newInstance().addJob(d1).addJob(s1).addJob(d2).addJob(p1).addJob(p2).addVehicle(v).build(); + route = VehicleRoute.Builder.newInstance(v).setJobActivityFactory(vrp.getJobActivityFactory()).addDelivery(d1).addPickup(s1).addDelivery(s1).build(); } @Test - public void shiftOfExistingShipmentsShouldWork(){ - Vehicle v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(0,0)).build(); - - Shipment s1 = Shipment.Builder.newInstance("s1").setPickupLocation(Location.newInstance(20,0)) - .setDeliveryLocation(Location.newInstance(40,0)).setMaxTimeInVehicle(20).build(); - - Shipment s2 = Shipment.Builder.newInstance("s2").setPickupLocation(Location.newInstance(20,0)) - .setPickupServiceTime(10) - .setDeliveryLocation(Location.newInstance(40,0)).setMaxTimeInVehicle(20).build(); - + @DisplayName("Shift Of Existing Shipments Should Work") + void shiftOfExistingShipmentsShouldWork() { + Vehicle v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(0, 0)).build(); + Shipment s1 = Shipment.Builder.newInstance("s1").setPickupLocation(Location.newInstance(20, 0)).setDeliveryLocation(Location.newInstance(40, 0)).setMaxTimeInVehicle(20).build(); + Shipment s2 = Shipment.Builder.newInstance("s2").setPickupLocation(Location.newInstance(20, 0)).setPickupServiceTime(10).setDeliveryLocation(Location.newInstance(40, 0)).setMaxTimeInVehicle(20).build(); VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(s1).addJob(s2).addVehicle(v).build(); - - VehicleRoute route = VehicleRoute.Builder.newInstance(v).setJobActivityFactory(vrp.getJobActivityFactory()) - .addPickup(s1).addDelivery(s1).build(); - + VehicleRoute route = VehicleRoute.Builder.newInstance(v).setJobActivityFactory(vrp.getJobActivityFactory()).addPickup(s1).addDelivery(s1).build(); StateManager stateManager = new StateManager(vrp); StateId minSlackId = stateManager.createStateId("min-slack-id"); StateId openJobsId = stateManager.createStateId("open-jobs-id"); - UpdateMaxTimeInVehicle updater = new UpdateMaxTimeInVehicle(stateManager, minSlackId, vrp.getTransportCosts(), vrp.getActivityCosts(), openJobsId); stateManager.addStateUpdater(updater); stateManager.addStateUpdater(new UpdateActivityTimes(vrp.getTransportCosts(), vrp.getActivityCosts())); - stateManager.informInsertionStarts(Arrays.asList(route),new ArrayList()); - + stateManager.informInsertionStarts(Arrays.asList(route), new ArrayList()); MaxTimeInVehicleConstraint constraint = new MaxTimeInVehicleConstraint(vrp.getTransportCosts(), vrp.getActivityCosts(), minSlackId, stateManager, vrp, openJobsId); - JobInsertionContext c = new JobInsertionContext(route,s2,v,route.getDriver(),0.); + JobInsertionContext c = new JobInsertionContext(route, s2, v, route.getDriver(), 0.); List acts = vrp.getActivities(s2); - c.getAssociatedActivities().add(acts.get(0)); c.getAssociatedActivities().add(acts.get(1)); - - Assert.assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, constraint.fulfilled(c, route.getStart(), acts.get(0), route.getActivities().get(0), 0)); - Assert.assertEquals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED, constraint.fulfilled(c, act(route, 0), acts.get(0), act(route, 1), 20)); - Assert.assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, constraint.fulfilled(c, act(route,1), acts.get(0), route.getEnd(), 40)); - - //insert pickup at 0 + Assertions.assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, constraint.fulfilled(c, route.getStart(), acts.get(0), route.getActivities().get(0), 0)); + Assertions.assertEquals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED, constraint.fulfilled(c, act(route, 0), acts.get(0), act(route, 1), 20)); + Assertions.assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, constraint.fulfilled(c, act(route, 1), acts.get(0), route.getEnd(), 40)); + // insert pickup at 0 c.setRelatedActivityContext(new ActivityContext()); c.getRelatedActivityContext().setArrivalTime(20); c.getRelatedActivityContext().setEndTime(30); c.getRelatedActivityContext().setInsertionIndex(0); - - Assert.assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, constraint.fulfilled(c, acts.get(0), acts.get(1), act(route,0), 30)); - Assert.assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, constraint.fulfilled(c, act(route,0), acts.get(1), act(route,1), 30)); + Assertions.assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, constraint.fulfilled(c, acts.get(0), acts.get(1), act(route, 0), 30)); + Assertions.assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, constraint.fulfilled(c, act(route, 0), acts.get(1), act(route, 1), 30)); } - private TourActivity act(VehicleRoute route, int index){ + private TourActivity act(VehicleRoute route, int index) { return route.getActivities().get(index); } @Test - public void insertingDeliveryAtAnyPositionShouldWork(){ + @DisplayName("Inserting Delivery At Any Position Should Work") + void insertingDeliveryAtAnyPositionShouldWork() { ini(30d, Double.MAX_VALUE, Double.MAX_VALUE); StateManager stateManager = new StateManager(vrp); StateId latestStartId = stateManager.createStateId("latest-start-id"); StateId openJobsId = stateManager.createStateId("open-jobs-id"); - UpdateMaxTimeInVehicle updater = new UpdateMaxTimeInVehicle(stateManager, latestStartId, vrp.getTransportCosts(), vrp.getActivityCosts(), openJobsId); stateManager.addStateUpdater(updater); stateManager.addStateUpdater(new UpdateActivityTimes(vrp.getTransportCosts(), vrp.getActivityCosts())); - stateManager.informInsertionStarts(Arrays.asList(route),new ArrayList()); - + stateManager.informInsertionStarts(Arrays.asList(route), new ArrayList()); MaxTimeInVehicleConstraint constraint = new MaxTimeInVehicleConstraint(vrp.getTransportCosts(), vrp.getActivityCosts(), latestStartId, stateManager, vrp, openJobsId); - JobInsertionContext c = new JobInsertionContext(route,d2,v,route.getDriver(),0.); + JobInsertionContext c = new JobInsertionContext(route, d2, v, route.getDriver(), 0.); List acts = vrp.getActivities(d2); c.getAssociatedActivities().add(acts.get(0)); - - Assert.assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, constraint.fulfilled(c, route.getStart(), acts.get(0), route.getActivities().get(0), 0)); - Assert.assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, constraint.fulfilled(c, route.getActivities().get(0), acts.get(0), route.getActivities().get(1), 10)); - Assert.assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, constraint.fulfilled(c, route.getActivities().get(1), acts.get(0), route.getActivities().get(2), 20)); - Assert.assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, constraint.fulfilled(c, route.getActivities().get(2), acts.get(0), route.getEnd(), 40)); - + Assertions.assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, constraint.fulfilled(c, route.getStart(), acts.get(0), route.getActivities().get(0), 0)); + Assertions.assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, constraint.fulfilled(c, route.getActivities().get(0), acts.get(0), route.getActivities().get(1), 10)); + Assertions.assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, constraint.fulfilled(c, route.getActivities().get(1), acts.get(0), route.getActivities().get(2), 20)); + Assertions.assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, constraint.fulfilled(c, route.getActivities().get(2), acts.get(0), route.getEnd(), 40)); } @Test - public void insertingD2JustAfterStartShouldWork() { + @DisplayName("Inserting D 2 Just After Start Should Work") + void insertingD2JustAfterStartShouldWork() { ini(20d, 30, Double.MAX_VALUE); - StateManager stateManager = new StateManager(vrp); StateId latestStartId = stateManager.createStateId("latest-start-id"); StateId openJobsId = stateManager.createStateId("open-jobs-id"); - UpdateMaxTimeInVehicle updater = new UpdateMaxTimeInVehicle(stateManager, latestStartId, vrp.getTransportCosts(), vrp.getActivityCosts(), openJobsId); stateManager.addStateUpdater(updater); stateManager.addStateUpdater(new UpdateActivityTimes(vrp.getTransportCosts(), vrp.getActivityCosts())); stateManager.informInsertionStarts(Arrays.asList(route), new ArrayList()); - MaxTimeInVehicleConstraint constraint = new MaxTimeInVehicleConstraint(vrp.getTransportCosts(), vrp.getActivityCosts(), latestStartId, stateManager, vrp, openJobsId); JobInsertionContext c = new JobInsertionContext(route, d2, v, route.getDriver(), 0.); List acts = vrp.getActivities(d2); c.getAssociatedActivities().add(acts.get(0)); - - Assert.assertEquals("inserting d2 just after start should work", HardActivityConstraint.ConstraintsStatus.FULFILLED, constraint.fulfilled(c, route.getStart(), acts.get(0), route.getActivities().get(0), 0)); + Assertions.assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, constraint.fulfilled(c, route.getStart(), acts.get(0), route.getActivities().get(0), 0), "inserting d2 just after start should work"); } @Test - public void insertingD2AfterFirstDeliveryShouldWork() { + @DisplayName("Inserting D 2 After First Delivery Should Work") + void insertingD2AfterFirstDeliveryShouldWork() { ini(20d, 30, Double.MAX_VALUE); - StateManager stateManager = new StateManager(vrp); StateId latestStartId = stateManager.createStateId("latest-start-id"); StateId openJobsId = stateManager.createStateId("open-jobs-id"); - UpdateMaxTimeInVehicle updater = new UpdateMaxTimeInVehicle(stateManager, latestStartId, vrp.getTransportCosts(), vrp.getActivityCosts(), openJobsId); stateManager.addStateUpdater(updater); stateManager.addStateUpdater(new UpdateActivityTimes(vrp.getTransportCosts(), vrp.getActivityCosts())); stateManager.informInsertionStarts(Arrays.asList(route), new ArrayList()); - MaxTimeInVehicleConstraint constraint = new MaxTimeInVehicleConstraint(vrp.getTransportCosts(), vrp.getActivityCosts(), latestStartId, stateManager, vrp, openJobsId); JobInsertionContext c = new JobInsertionContext(route, d2, v, route.getDriver(), 0.); List acts = vrp.getActivities(d2); c.getAssociatedActivities().add(acts.get(0)); - - - Assert.assertEquals("inserting d2 after first delivery should work", HardActivityConstraint.ConstraintsStatus.FULFILLED, constraint.fulfilled(c, route.getActivities().get(0), acts.get(0), route.getActivities().get(1), 10)); + Assertions.assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, constraint.fulfilled(c, route.getActivities().get(0), acts.get(0), route.getActivities().get(1), 10), "inserting d2 after first delivery should work"); } @Test - public void insertingDeliveryInBetweenShipmentShouldFail(){ + @DisplayName("Inserting Delivery In Between Shipment Should Fail") + void insertingDeliveryInBetweenShipmentShouldFail() { ini(20d, 30, Double.MAX_VALUE); - StateManager stateManager = new StateManager(vrp); StateId latestStartId = stateManager.createStateId("latest-start-id"); StateId openJobsId = stateManager.createStateId("open-jobs-id"); - UpdateMaxTimeInVehicle updater = new UpdateMaxTimeInVehicle(stateManager, latestStartId, vrp.getTransportCosts(), vrp.getActivityCosts(), openJobsId); stateManager.addStateUpdater(updater); stateManager.addStateUpdater(new UpdateActivityTimes(vrp.getTransportCosts(), vrp.getActivityCosts())); - stateManager.informInsertionStarts(Arrays.asList(route),new ArrayList()); - + stateManager.informInsertionStarts(Arrays.asList(route), new ArrayList()); MaxTimeInVehicleConstraint constraint = new MaxTimeInVehicleConstraint(vrp.getTransportCosts(), vrp.getActivityCosts(), latestStartId, stateManager, vrp, openJobsId); - JobInsertionContext c = new JobInsertionContext(route,d2,v,route.getDriver(),0.); + JobInsertionContext c = new JobInsertionContext(route, d2, v, route.getDriver(), 0.); List acts = vrp.getActivities(d2); c.getAssociatedActivities().add(acts.get(0)); - - Assert.assertEquals("inserting d2 between pickup and delivery shipment should fail due to max-in-vehicle constraint of shipment", HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED, constraint.fulfilled(c, route.getActivities().get(1), acts.get(0), route.getActivities().get(2), 20)); - Assert.assertEquals("inserting d2 at end should fail", HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED, constraint.fulfilled(c, route.getActivities().get(2), acts.get(0), route.getEnd(), 40)); + Assertions.assertEquals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED, constraint.fulfilled(c, route.getActivities().get(1), acts.get(0), route.getActivities().get(2), 20), "inserting d2 between pickup and delivery shipment should fail due to max-in-vehicle constraint of shipment"); + Assertions.assertEquals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED, constraint.fulfilled(c, route.getActivities().get(2), acts.get(0), route.getEnd(), 40), "inserting d2 at end should fail"); } - - @Test - public void insertingPickupShipmentAtAnyPositionShouldWork(){ + @DisplayName("Inserting Pickup Shipment At Any Position Should Work") + void insertingPickupShipmentAtAnyPositionShouldWork() { ini(25d, Double.MAX_VALUE, Double.MAX_VALUE); - VehicleRoute r = VehicleRoute.Builder.newInstance(v).setJobActivityFactory(vrp.getJobActivityFactory()) - .addDelivery(d1).addDelivery(d2).build(); - + VehicleRoute r = VehicleRoute.Builder.newInstance(v).setJobActivityFactory(vrp.getJobActivityFactory()).addDelivery(d1).addDelivery(d2).build(); StateManager stateManager = new StateManager(vrp); StateId latestStartId = stateManager.createStateId("latest-start-id"); StateId openJobsId = stateManager.createStateId("open-jobs-id"); - UpdateMaxTimeInVehicle updater = new UpdateMaxTimeInVehicle(stateManager, latestStartId, vrp.getTransportCosts(), vrp.getActivityCosts(), openJobsId); stateManager.addStateUpdater(updater); stateManager.addStateUpdater(new UpdateActivityTimes(vrp.getTransportCosts(), vrp.getActivityCosts())); - stateManager.informInsertionStarts(Arrays.asList(r),new ArrayList()); - + stateManager.informInsertionStarts(Arrays.asList(r), new ArrayList()); MaxTimeInVehicleConstraint constraint = new MaxTimeInVehicleConstraint(vrp.getTransportCosts(), vrp.getActivityCosts(), latestStartId, stateManager, vrp, openJobsId); - JobInsertionContext c = new JobInsertionContext(r, s1,v,r.getDriver(),0.); + JobInsertionContext c = new JobInsertionContext(r, s1, v, r.getDriver(), 0.); List acts = vrp.getActivities(s1); c.getAssociatedActivities().add(acts.get(0)); c.getAssociatedActivities().add(acts.get(1)); - - - Assert.assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, constraint.fulfilled(c, r.getStart(), acts.get(0), r.getActivities().get(0), 0)); - Assert.assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, constraint.fulfilled(c, r.getActivities().get(0), acts.get(0), r.getActivities().get(1), 10)); - Assert.assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, constraint.fulfilled(c, r.getActivities().get(1), acts.get(0), r.getEnd(), 40)); + Assertions.assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, constraint.fulfilled(c, r.getStart(), acts.get(0), r.getActivities().get(0), 0)); + Assertions.assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, constraint.fulfilled(c, r.getActivities().get(0), acts.get(0), r.getActivities().get(1), 10)); + Assertions.assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, constraint.fulfilled(c, r.getActivities().get(1), acts.get(0), r.getEnd(), 40)); } @Test - public void insertingPickupShipmentShouldWork() { - + @DisplayName("Inserting Pickup Shipment Should Work") + void insertingPickupShipmentShouldWork() { ini(30, Double.MAX_VALUE, Double.MAX_VALUE); - VehicleRoute r = VehicleRoute.Builder.newInstance(v).setJobActivityFactory(vrp.getJobActivityFactory()) - .addPickup(p1).addDelivery(d2).build(); - + VehicleRoute r = VehicleRoute.Builder.newInstance(v).setJobActivityFactory(vrp.getJobActivityFactory()).addPickup(p1).addDelivery(d2).build(); StateManager stateManager = new StateManager(vrp); StateId latestStartId = stateManager.createStateId("latest-start-id"); StateId openJobsId = stateManager.createStateId("open-jobs-id"); - UpdateMaxTimeInVehicle updater = new UpdateMaxTimeInVehicle(stateManager, latestStartId, vrp.getTransportCosts(), vrp.getActivityCosts(), openJobsId); stateManager.addStateUpdater(updater); stateManager.addStateUpdater(new UpdateActivityTimes(vrp.getTransportCosts(), vrp.getActivityCosts())); stateManager.informInsertionStarts(Arrays.asList(r), new ArrayList()); - MaxTimeInVehicleConstraint constraint = new MaxTimeInVehicleConstraint(vrp.getTransportCosts(), vrp.getActivityCosts(), latestStartId, stateManager, vrp, openJobsId); JobInsertionContext c = new JobInsertionContext(r, s1, v, r.getDriver(), 0.); List acts = vrp.getActivities(s1); c.getAssociatedActivities().add(acts.get(0)); c.getAssociatedActivities().add(acts.get(1)); - - - Assert.assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, constraint.fulfilled(c, r.getStart(), acts.get(0), r.getActivities().get(0), 0)); - Assert.assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, constraint.fulfilled(c, r.getActivities().get(0), acts.get(0), r.getActivities().get(1), 10)); - Assert.assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, constraint.fulfilled(c, r.getActivities().get(1), acts.get(0), r.getEnd(), 30)); - + Assertions.assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, constraint.fulfilled(c, r.getStart(), acts.get(0), r.getActivities().get(0), 0)); + Assertions.assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, constraint.fulfilled(c, r.getActivities().get(0), acts.get(0), r.getActivities().get(1), 10)); + Assertions.assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, constraint.fulfilled(c, r.getActivities().get(1), acts.get(0), r.getEnd(), 30)); } @Test - public void insertingPickupShipmentShouldWork2() { - + @DisplayName("Inserting Pickup Shipment Should Work 2") + void insertingPickupShipmentShouldWork2() { ini(30, 30, Double.MAX_VALUE); - VehicleRoute r = VehicleRoute.Builder.newInstance(v).setJobActivityFactory(vrp.getJobActivityFactory()) - .addPickup(p1).addDelivery(d2).build(); - + VehicleRoute r = VehicleRoute.Builder.newInstance(v).setJobActivityFactory(vrp.getJobActivityFactory()).addPickup(p1).addDelivery(d2).build(); StateManager stateManager = new StateManager(vrp); StateId latestStartId = stateManager.createStateId("latest-start-id"); StateId openJobsId = stateManager.createStateId("open-jobs-id"); - UpdateMaxTimeInVehicle updater = new UpdateMaxTimeInVehicle(stateManager, latestStartId, vrp.getTransportCosts(), vrp.getActivityCosts(), openJobsId); stateManager.addStateUpdater(updater); stateManager.addStateUpdater(new UpdateActivityTimes(vrp.getTransportCosts(), vrp.getActivityCosts())); stateManager.informInsertionStarts(Arrays.asList(r), new ArrayList()); - MaxTimeInVehicleConstraint constraint = new MaxTimeInVehicleConstraint(vrp.getTransportCosts(), vrp.getActivityCosts(), latestStartId, stateManager, vrp, openJobsId); JobInsertionContext c = new JobInsertionContext(r, s1, v, r.getDriver(), 0.); List acts = vrp.getActivities(s1); c.getAssociatedActivities().add(acts.get(0)); c.getAssociatedActivities().add(acts.get(1)); - - Assert.assertEquals("pickup shipment cannot happen at first pos. since d2 has max in-vehicle time", HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED, constraint.fulfilled(c, r.getStart(), acts.get(0), r.getActivities().get(0), 0)); - Assert.assertEquals("pickup shipment can happen at second pos.", HardActivityConstraint.ConstraintsStatus.FULFILLED, constraint.fulfilled(c, r.getActivities().get(0), acts.get(0), r.getActivities().get(1), 10)); - Assert.assertEquals("d2 has been delivered so pickup shipment is possible", HardActivityConstraint.ConstraintsStatus.FULFILLED, constraint.fulfilled(c, r.getActivities().get(1), acts.get(0), r.getEnd(), 30)); + Assertions.assertEquals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED, constraint.fulfilled(c, r.getStart(), acts.get(0), r.getActivities().get(0), 0), "pickup shipment cannot happen at first pos. since d2 has max in-vehicle time"); + Assertions.assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, constraint.fulfilled(c, r.getActivities().get(0), acts.get(0), r.getActivities().get(1), 10), "pickup shipment can happen at second pos."); + Assertions.assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, constraint.fulfilled(c, r.getActivities().get(1), acts.get(0), r.getEnd(), 30), "d2 has been delivered so pickup shipment is possible"); } @Test - public void testOpenRoutes() { + @DisplayName("Test Open Routes") + void testOpenRoutes() { /* max time of deliveries and shipment should not be influenced at all by open routes when pickups are supported it should matter */ - Assert.assertTrue(true); + Assertions.assertTrue(true); } -// @Test(expected = UnsupportedOperationException.class) -// public void insertingPickupShouldWork(){ -// ini(30, Double.MAX_VALUE, 30); -// VehicleRoute r = VehicleRoute.Builder.newInstance(v).setJobActivityFactory(vrp.getJobActivityFactory()) -// .addPickup(p1).addPickup(s1).addDelivery(s1).build(); -// -// StateManager stateManager = new StateManager(vrp); -// StateId latestStartId = stateManager.createStateId("latest-start-id"); -// -// UpdateMaxTimeInVehicle updater = new UpdateMaxTimeInVehicle(stateManager, latestStartId, vrp.getTransportCosts(), vrp.getActivityCosts()); -// stateManager.addStateUpdater(updater); -// stateManager.informInsertionStarts(Arrays.asList(r), new ArrayList()); -// -// MaxTimeInVehicleConstraint constraint = new MaxTimeInVehicleConstraint(vrp.getTransportCosts(), vrp.getActivityCosts(), latestStartId, stateManager, vrp); -// JobInsertionContext c = new JobInsertionContext(r, p2, v, r.getDriver(), 0.); -// List acts = vrp.getActivities(p2); -// c.getAssociatedActivities().add(acts.get(0)); -// -// -// Assert.assertEquals("p2 cannot be done at first pos. due to its own max in-vehicle time restriction",HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED, constraint.fulfilled(c, r.getStart(), acts.get(0), r.getActivities().get(0), 0)); -// Assert.assertEquals("p2 cannot be done at second pos. due to its own max in-vehicle time restriction",HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED, constraint.fulfilled(c, r.getActivities().get(0), acts.get(0), r.getActivities().get(1), 10)); -// Assert.assertEquals("p2 cannot be done at third pos. due to its own max in-vehicle time restriction", HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED, constraint.fulfilled(c, r.getActivities().get(1), acts.get(0), r.getActivities().get(2), 20)); -// Assert.assertEquals("p2 can be done at last", HardActivityConstraint.ConstraintsStatus.FULFILLED, constraint.fulfilled(c, r.getActivities().get(2), acts.get(0), r.getEnd(), 40)); -// } - + // @Test(expected = UnsupportedOperationException.class) + // public void insertingPickupShouldWork(){ + // ini(30, Double.MAX_VALUE, 30); + // VehicleRoute r = VehicleRoute.Builder.newInstance(v).setJobActivityFactory(vrp.getJobActivityFactory()) + // .addPickup(p1).addPickup(s1).addDelivery(s1).build(); + // + // StateManager stateManager = new StateManager(vrp); + // StateId latestStartId = stateManager.createStateId("latest-start-id"); + // + // UpdateMaxTimeInVehicle updater = new UpdateMaxTimeInVehicle(stateManager, latestStartId, vrp.getTransportCosts(), vrp.getActivityCosts()); + // stateManager.addStateUpdater(updater); + // stateManager.informInsertionStarts(Arrays.asList(r), new ArrayList()); + // + // MaxTimeInVehicleConstraint constraint = new MaxTimeInVehicleConstraint(vrp.getTransportCosts(), vrp.getActivityCosts(), latestStartId, stateManager, vrp); + // JobInsertionContext c = new JobInsertionContext(r, p2, v, r.getDriver(), 0.); + // List acts = vrp.getActivities(p2); + // c.getAssociatedActivities().add(acts.get(0)); + // + // + // Assert.assertEquals("p2 cannot be done at first pos. due to its own max in-vehicle time restriction",HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED, constraint.fulfilled(c, r.getStart(), acts.get(0), r.getActivities().get(0), 0)); + // Assert.assertEquals("p2 cannot be done at second pos. due to its own max in-vehicle time restriction",HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED, constraint.fulfilled(c, r.getActivities().get(0), acts.get(0), r.getActivities().get(1), 10)); + // Assert.assertEquals("p2 cannot be done at third pos. due to its own max in-vehicle time restriction", HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED, constraint.fulfilled(c, r.getActivities().get(1), acts.get(0), r.getActivities().get(2), 20)); + // Assert.assertEquals("p2 can be done at last", HardActivityConstraint.ConstraintsStatus.FULFILLED, constraint.fulfilled(c, r.getActivities().get(2), acts.get(0), r.getEnd(), 40)); + // } @Test - public void whenPickupIsInsertedAt0_insertingDeliveryShipmentShouldFailWhereConstraintIsBroken(){ + @DisplayName("When Pickup Is Inserted At 0 _ inserting Delivery Shipment Should Fail Where Constraint Is Broken") + void whenPickupIsInsertedAt0_insertingDeliveryShipmentShouldFailWhereConstraintIsBroken() { ini(25d, Double.MAX_VALUE, Double.MAX_VALUE); - VehicleRoute r = VehicleRoute.Builder.newInstance(v).setJobActivityFactory(vrp.getJobActivityFactory()) - .addDelivery(d1).addDelivery(d2).build(); - + VehicleRoute r = VehicleRoute.Builder.newInstance(v).setJobActivityFactory(vrp.getJobActivityFactory()).addDelivery(d1).addDelivery(d2).build(); StateManager stateManager = new StateManager(vrp); StateId latestStartId = stateManager.createStateId("latest-start-id"); StateId openJobsId = stateManager.createStateId("open-jobs-id"); - UpdateMaxTimeInVehicle updater = new UpdateMaxTimeInVehicle(stateManager, latestStartId, vrp.getTransportCosts(), vrp.getActivityCosts(), openJobsId); stateManager.addStateUpdater(updater); stateManager.addStateUpdater(new UpdateActivityTimes(vrp.getTransportCosts(), vrp.getActivityCosts())); - stateManager.informInsertionStarts(Arrays.asList(r),new ArrayList()); - + stateManager.informInsertionStarts(Arrays.asList(r), new ArrayList()); MaxTimeInVehicleConstraint constraint = new MaxTimeInVehicleConstraint(vrp.getTransportCosts(), vrp.getActivityCosts(), latestStartId, stateManager, vrp, openJobsId); - JobInsertionContext c = new JobInsertionContext(r, s1,v,r.getDriver(),0.); + JobInsertionContext c = new JobInsertionContext(r, s1, v, r.getDriver(), 0.); List acts = vrp.getActivities(s1); c.getAssociatedActivities().add(acts.get(0)); c.getAssociatedActivities().add(acts.get(1)); - ActivityContext ac = new ActivityContext(); ac.setArrivalTime(20); ac.setEndTime(20); c.setRelatedActivityContext(ac); - - Assert.assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, constraint.fulfilled(c, acts.get(0), acts.get(1), r.getActivities().get(0), 20)); - Assert.assertEquals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED, constraint.fulfilled(c, r.getActivities().get(0), acts.get(1), r.getActivities().get(1), 30)); - Assert.assertEquals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED, constraint.fulfilled(c, r.getActivities().get(1), acts.get(1), r.getEnd(), 40)); + Assertions.assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, constraint.fulfilled(c, acts.get(0), acts.get(1), r.getActivities().get(0), 20)); + Assertions.assertEquals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED, constraint.fulfilled(c, r.getActivities().get(0), acts.get(1), r.getActivities().get(1), 30)); + Assertions.assertEquals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED, constraint.fulfilled(c, r.getActivities().get(1), acts.get(1), r.getEnd(), 40)); } @Test - public void whenPickupIsInsertedAt1_insertingDeliveryShipmentShouldFailWhereConstraintIsBroken(){ + @DisplayName("When Pickup Is Inserted At 1 _ inserting Delivery Shipment Should Fail Where Constraint Is Broken") + void whenPickupIsInsertedAt1_insertingDeliveryShipmentShouldFailWhereConstraintIsBroken() { ini(25d, Double.MAX_VALUE, Double.MAX_VALUE); - VehicleRoute r = VehicleRoute.Builder.newInstance(v).setJobActivityFactory(vrp.getJobActivityFactory()) - .addDelivery(d1).addDelivery(d2).build(); - + VehicleRoute r = VehicleRoute.Builder.newInstance(v).setJobActivityFactory(vrp.getJobActivityFactory()).addDelivery(d1).addDelivery(d2).build(); StateManager stateManager = new StateManager(vrp); StateId latestStartId = stateManager.createStateId("latest-start-id"); StateId openJobsId = stateManager.createStateId("open-jobs-id"); - - Map maxTimes = new HashMap<>(); - maxTimes.put("s1",25d); + Map maxTimes = new HashMap<>(); + maxTimes.put("s1", 25d); UpdateMaxTimeInVehicle updater = new UpdateMaxTimeInVehicle(stateManager, latestStartId, vrp.getTransportCosts(), vrp.getActivityCosts(), openJobsId); stateManager.addStateUpdater(updater); stateManager.addStateUpdater(new UpdateActivityTimes(vrp.getTransportCosts(), vrp.getActivityCosts())); - stateManager.informInsertionStarts(Arrays.asList(r),new ArrayList()); - + stateManager.informInsertionStarts(Arrays.asList(r), new ArrayList()); MaxTimeInVehicleConstraint constraint = new MaxTimeInVehicleConstraint(vrp.getTransportCosts(), vrp.getActivityCosts(), latestStartId, stateManager, vrp, openJobsId); - JobInsertionContext c = new JobInsertionContext(r, s1,v,r.getDriver(),0.); + JobInsertionContext c = new JobInsertionContext(r, s1, v, r.getDriver(), 0.); List acts = vrp.getActivities(s1); c.getAssociatedActivities().add(acts.get(0)); c.getAssociatedActivities().add(acts.get(1)); - ActivityContext ac = new ActivityContext(); ac.setArrivalTime(20); ac.setEndTime(20); c.setRelatedActivityContext(ac); - - Assert.assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, constraint.fulfilled(c, acts.get(0), acts.get(1), r.getActivities().get(1), 20)); - Assert.assertEquals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED, constraint.fulfilled(c, r.getActivities().get(1), acts.get(1), r.getEnd(), 40)); -// Assert.assertEquals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED, constraint.fulfilled(c, r.getActivities().get(1), acts.get(1), r.getEnd(), 40)); + Assertions.assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, constraint.fulfilled(c, acts.get(0), acts.get(1), r.getActivities().get(1), 20)); + Assertions.assertEquals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED, constraint.fulfilled(c, r.getActivities().get(1), acts.get(1), r.getEnd(), 40)); + // Assert.assertEquals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED, constraint.fulfilled(c, r.getActivities().get(1), acts.get(1), r.getEnd(), 40)); } } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/ServiceLoadRouteLevelConstraintTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/ServiceLoadRouteLevelConstraintTest.java index 63830a97e..6f6a417b1 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/ServiceLoadRouteLevelConstraintTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/ServiceLoadRouteLevelConstraintTest.java @@ -33,17 +33,19 @@ import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.Collections; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -public class ServiceLoadRouteLevelConstraintTest { +@DisplayName("Service Load Route Level Constraint Test") +class ServiceLoadRouteLevelConstraintTest { private Vehicle vehicle; @@ -76,23 +78,19 @@ Pickup createPickupMock(Capacity size) { return d; } - @Before - public void doBefore() { + @BeforeEach + void doBefore() { VehicleType type = mock(VehicleType.class); when(type.getCapacityDimensions()).thenReturn(Capacity.Builder.newInstance().addDimension(0, 3).addDimension(1, 3).addDimension(2, 3).build()); vehicle = mock(Vehicle.class); when(vehicle.getType()).thenReturn(type); - route = mock(VehicleRoute.class); - Capacity currentLoad = Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 1).addDimension(2, 1).build(); stateGetter = mock(RouteAndActivityStateGetter.class); when(stateGetter.getRouteState(route, InternalStates.LOAD_AT_BEGINNING, Capacity.class)).thenReturn(currentLoad); when(stateGetter.getRouteState(route, InternalStates.LOAD_AT_END, Capacity.class)).thenReturn(currentLoad); when(stateGetter.getRouteState(route, InternalStates.MAXLOAD, Capacity.class)).thenReturn(currentLoad); - constraint = new ServiceLoadRouteLevelConstraint(stateGetter); - VehicleRoutingProblem vrpMock = mock(VehicleRoutingProblem.class); when(vrpMock.getFleetSize()).thenReturn(VehicleRoutingProblem.FleetSize.INFINITE); stateManager = new StateManager(vrpMock); @@ -100,249 +98,220 @@ public void doBefore() { } @Test - public void whenLoadPlusDeliverySizeDoesNotExceedsVehicleCapacity_itShouldReturnTrue() { + @DisplayName("When Load Plus Delivery Size Does Not Exceeds Vehicle Capacity _ it Should Return True") + void whenLoadPlusDeliverySizeDoesNotExceedsVehicleCapacity_itShouldReturnTrue() { Service service = createDeliveryMock(Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 1).addDimension(2, 1).build()); - JobInsertionContext iContext = mock(JobInsertionContext.class); when(iContext.getJob()).thenReturn(service); when(iContext.getRoute()).thenReturn(route); when(iContext.getNewVehicle()).thenReturn(vehicle); - assertTrue(constraint.fulfilled(iContext)); } @Test - public void whenLoadPlusDeliverySizeExceedsVehicleCapacityInAllDimension_itShouldReturnFalse() { + @DisplayName("When Load Plus Delivery Size Exceeds Vehicle Capacity In All Dimension _ it Should Return False") + void whenLoadPlusDeliverySizeExceedsVehicleCapacityInAllDimension_itShouldReturnFalse() { Service service = createDeliveryMock(Capacity.Builder.newInstance().addDimension(0, 3).addDimension(1, 3).addDimension(2, 3).build()); - JobInsertionContext iContext = mock(JobInsertionContext.class); when(iContext.getJob()).thenReturn(service); when(iContext.getRoute()).thenReturn(route); when(iContext.getNewVehicle()).thenReturn(vehicle); - assertFalse(constraint.fulfilled(iContext)); } @Test - public void whenLoadPlusDeliverySizeExceedsVehicleCapacityInOneDimension_itShouldReturnFalse() { + @DisplayName("When Load Plus Delivery Size Exceeds Vehicle Capacity In One Dimension _ it Should Return False") + void whenLoadPlusDeliverySizeExceedsVehicleCapacityInOneDimension_itShouldReturnFalse() { Service service = createDeliveryMock(Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 1).addDimension(2, 3).build()); - JobInsertionContext iContext = mock(JobInsertionContext.class); when(iContext.getJob()).thenReturn(service); when(iContext.getRoute()).thenReturn(route); when(iContext.getNewVehicle()).thenReturn(vehicle); - assertFalse(constraint.fulfilled(iContext)); } @Test - public void whenLoadPlusDeliverySizeJustFitIntoVehicle_itShouldReturnTrue() { + @DisplayName("When Load Plus Delivery Size Just Fit Into Vehicle _ it Should Return True") + void whenLoadPlusDeliverySizeJustFitIntoVehicle_itShouldReturnTrue() { Service service = createDeliveryMock(Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 2).addDimension(2, 2).build()); - JobInsertionContext iContext = mock(JobInsertionContext.class); when(iContext.getJob()).thenReturn(service); when(iContext.getRoute()).thenReturn(route); when(iContext.getNewVehicle()).thenReturn(vehicle); - assertTrue(constraint.fulfilled(iContext)); } @Test - public void whenLoadPlusPickupSizeDoesNotExceedsVehicleCapacity_itShouldReturnTrue() { + @DisplayName("When Load Plus Pickup Size Does Not Exceeds Vehicle Capacity _ it Should Return True") + void whenLoadPlusPickupSizeDoesNotExceedsVehicleCapacity_itShouldReturnTrue() { Service service = createPickupMock(Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 1).addDimension(2, 1).build()); - JobInsertionContext iContext = mock(JobInsertionContext.class); when(iContext.getJob()).thenReturn(service); when(iContext.getRoute()).thenReturn(route); when(iContext.getNewVehicle()).thenReturn(vehicle); - assertTrue(constraint.fulfilled(iContext)); } @Test - public void whenLoadPlusPickupSizeExceedsVehicleCapacityInAllDimension_itShouldReturnFalse() { + @DisplayName("When Load Plus Pickup Size Exceeds Vehicle Capacity In All Dimension _ it Should Return False") + void whenLoadPlusPickupSizeExceedsVehicleCapacityInAllDimension_itShouldReturnFalse() { Service service = createPickupMock(Capacity.Builder.newInstance().addDimension(0, 3).addDimension(1, 3).addDimension(2, 3).build()); - JobInsertionContext iContext = mock(JobInsertionContext.class); when(iContext.getJob()).thenReturn(service); when(iContext.getRoute()).thenReturn(route); when(iContext.getNewVehicle()).thenReturn(vehicle); - assertFalse(constraint.fulfilled(iContext)); } @Test - public void whenLoadPlusPickupSizeExceedsVehicleCapacityInOneDimension_itShouldReturnFalse() { + @DisplayName("When Load Plus Pickup Size Exceeds Vehicle Capacity In One Dimension _ it Should Return False") + void whenLoadPlusPickupSizeExceedsVehicleCapacityInOneDimension_itShouldReturnFalse() { Service service = createPickupMock(Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 1).addDimension(2, 3).build()); - JobInsertionContext iContext = mock(JobInsertionContext.class); when(iContext.getJob()).thenReturn(service); when(iContext.getRoute()).thenReturn(route); when(iContext.getNewVehicle()).thenReturn(vehicle); - assertFalse(constraint.fulfilled(iContext)); } @Test - public void whenLoadPlusPickupSizeJustFitIntoVehicle_itShouldReturnTrue() { + @DisplayName("When Load Plus Pickup Size Just Fit Into Vehicle _ it Should Return True") + void whenLoadPlusPickupSizeJustFitIntoVehicle_itShouldReturnTrue() { Service service = createPickupMock(Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 2).addDimension(2, 2).build()); - JobInsertionContext iContext = mock(JobInsertionContext.class); when(iContext.getJob()).thenReturn(service); when(iContext.getRoute()).thenReturn(route); when(iContext.getNewVehicle()).thenReturn(vehicle); - assertTrue(constraint.fulfilled(iContext)); } @Test - public void whenLoadPlusServiceSizeDoesNotExceedsVehicleCapacity_itShouldReturnTrue() { + @DisplayName("When Load Plus Service Size Does Not Exceeds Vehicle Capacity _ it Should Return True") + void whenLoadPlusServiceSizeDoesNotExceedsVehicleCapacity_itShouldReturnTrue() { Service service = createServiceMock(Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 1).addDimension(2, 1).build()); - JobInsertionContext iContext = mock(JobInsertionContext.class); when(iContext.getJob()).thenReturn(service); when(iContext.getRoute()).thenReturn(route); when(iContext.getNewVehicle()).thenReturn(vehicle); - assertTrue(constraint.fulfilled(iContext)); } @Test - public void whenLoadPlusServiceSizeExceedsVehicleCapacityInAllDimension_itShouldReturnFalse() { + @DisplayName("When Load Plus Service Size Exceeds Vehicle Capacity In All Dimension _ it Should Return False") + void whenLoadPlusServiceSizeExceedsVehicleCapacityInAllDimension_itShouldReturnFalse() { Service service = createServiceMock(Capacity.Builder.newInstance().addDimension(0, 3).addDimension(1, 3).addDimension(2, 3).build()); - JobInsertionContext iContext = mock(JobInsertionContext.class); when(iContext.getJob()).thenReturn(service); when(iContext.getRoute()).thenReturn(route); when(iContext.getNewVehicle()).thenReturn(vehicle); - assertFalse(constraint.fulfilled(iContext)); } @Test - public void whenLoadPlusServiceSizeExceedsVehicleCapacityInOneDimension_itShouldReturnFalse() { + @DisplayName("When Load Plus Service Size Exceeds Vehicle Capacity In One Dimension _ it Should Return False") + void whenLoadPlusServiceSizeExceedsVehicleCapacityInOneDimension_itShouldReturnFalse() { Service service = createServiceMock(Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 1).addDimension(2, 3).build()); - JobInsertionContext iContext = mock(JobInsertionContext.class); when(iContext.getJob()).thenReturn(service); when(iContext.getRoute()).thenReturn(route); when(iContext.getNewVehicle()).thenReturn(vehicle); - assertFalse(constraint.fulfilled(iContext)); } @Test - public void whenLoadPlusServiceSizeJustFitIntoVehicle_itShouldReturnTrue() { + @DisplayName("When Load Plus Service Size Just Fit Into Vehicle _ it Should Return True") + void whenLoadPlusServiceSizeJustFitIntoVehicle_itShouldReturnTrue() { Service service = createServiceMock(Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 2).addDimension(2, 2).build()); - JobInsertionContext iContext = mock(JobInsertionContext.class); when(iContext.getJob()).thenReturn(service); when(iContext.getRoute()).thenReturn(route); when(iContext.getNewVehicle()).thenReturn(vehicle); - assertTrue(constraint.fulfilled(iContext)); } @Test - public void whenAddingAServiceAndNewVehicleDoesNotHaveTheCapacity_itShouldReturnFalse() { + @DisplayName("When Adding A Service And New Vehicle Does Not Have The Capacity _ it Should Return False") + void whenAddingAServiceAndNewVehicleDoesNotHaveTheCapacity_itShouldReturnFalse() { Service service = createServiceMock(Capacity.Builder.newInstance().addDimension(0, 2).build()); - Capacity atBeginning = Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 2).addDimension(2, 1).build(); Capacity atEnd = Capacity.Builder.newInstance().addDimension(0, 0).addDimension(1, 0).addDimension(2, 0).build(); - RouteAndActivityStateGetter stateGetter = mock(RouteAndActivityStateGetter.class); when(stateGetter.getRouteState(route, InternalStates.LOAD_AT_BEGINNING, Capacity.class)).thenReturn(atBeginning); when(stateGetter.getRouteState(route, InternalStates.LOAD_AT_END, Capacity.class)).thenReturn(atEnd); when(stateGetter.getRouteState(route, InternalStates.MAXLOAD, Capacity.class)).thenReturn(atBeginning); - JobInsertionContext iContext = mock(JobInsertionContext.class); when(iContext.getJob()).thenReturn(service); when(iContext.getRoute()).thenReturn(route); - VehicleType type = mock(VehicleType.class); when(type.getCapacityDimensions()).thenReturn(Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 1).addDimension(2, 2).build()); Vehicle vehicle = mock(Vehicle.class); when(vehicle.getType()).thenReturn(type); - when(iContext.getNewVehicle()).thenReturn(vehicle); - ServiceLoadRouteLevelConstraint constraint = new ServiceLoadRouteLevelConstraint(stateGetter); assertFalse(constraint.fulfilled(iContext)); } @Test - public void whenAddingADeliveryAndNewVehicleDoesNotHaveTheCapacity_itShouldReturnFalse() { + @DisplayName("When Adding A Delivery And New Vehicle Does Not Have The Capacity _ it Should Return False") + void whenAddingADeliveryAndNewVehicleDoesNotHaveTheCapacity_itShouldReturnFalse() { Service service = createDeliveryMock(Capacity.Builder.newInstance().addDimension(0, 2).build()); - Capacity atBeginning = Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 2).addDimension(2, 1).build(); Capacity atEnd = Capacity.Builder.newInstance().addDimension(0, 0).addDimension(1, 0).addDimension(2, 0).build(); - RouteAndActivityStateGetter stateGetter = mock(RouteAndActivityStateGetter.class); when(stateGetter.getRouteState(route, InternalStates.LOAD_AT_BEGINNING, Capacity.class)).thenReturn(atBeginning); when(stateGetter.getRouteState(route, InternalStates.LOAD_AT_END, Capacity.class)).thenReturn(atEnd); when(stateGetter.getRouteState(route, InternalStates.MAXLOAD, Capacity.class)).thenReturn(atBeginning); - JobInsertionContext iContext = mock(JobInsertionContext.class); when(iContext.getJob()).thenReturn(service); when(iContext.getRoute()).thenReturn(route); - VehicleType type = mock(VehicleType.class); when(type.getCapacityDimensions()).thenReturn(Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 1).addDimension(2, 2).build()); vehicle = mock(Vehicle.class); when(vehicle.getType()).thenReturn(type); - when(iContext.getNewVehicle()).thenReturn(vehicle); - ServiceLoadRouteLevelConstraint constraint = new ServiceLoadRouteLevelConstraint(stateGetter); assertFalse(constraint.fulfilled(iContext)); } @Test - public void whenAddingAPickupAndNewVehicleDoesNotHaveTheCapacity_itShouldReturnFalse() { + @DisplayName("When Adding A Pickup And New Vehicle Does Not Have The Capacity _ it Should Return False") + void whenAddingAPickupAndNewVehicleDoesNotHaveTheCapacity_itShouldReturnFalse() { Pickup service = createPickupMock(Capacity.Builder.newInstance().addDimension(0, 2).build()); - Capacity atBeginning = Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 2).addDimension(2, 1).build(); Capacity atEnd = Capacity.Builder.newInstance().addDimension(0, 0).addDimension(1, 0).addDimension(2, 0).build(); - RouteAndActivityStateGetter stateGetter = mock(RouteAndActivityStateGetter.class); when(stateGetter.getRouteState(route, InternalStates.LOAD_AT_BEGINNING, Capacity.class)).thenReturn(atBeginning); when(stateGetter.getRouteState(route, InternalStates.LOAD_AT_END, Capacity.class)).thenReturn(atEnd); when(stateGetter.getRouteState(route, InternalStates.MAXLOAD, Capacity.class)).thenReturn(atBeginning); - JobInsertionContext iContext = mock(JobInsertionContext.class); when(iContext.getJob()).thenReturn(service); when(iContext.getRoute()).thenReturn(route); - VehicleType type = mock(VehicleType.class); when(type.getCapacityDimensions()).thenReturn(Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 1).addDimension(2, 2).build()); vehicle = mock(Vehicle.class); when(vehicle.getType()).thenReturn(type); - when(iContext.getNewVehicle()).thenReturn(vehicle); - ServiceLoadRouteLevelConstraint constraint = new ServiceLoadRouteLevelConstraint(stateGetter); assertFalse(constraint.fulfilled(iContext)); } @Test - public void whenNewVehicleCapacityIsNotSufficiant1_returnFalse() { + @DisplayName("When New Vehicle Capacity Is Not Sufficiant 1 _ return False") + void whenNewVehicleCapacityIsNotSufficiant1_returnFalse() { final Service pickup = createPickup("pick", 2); final Service pickup2 = createPickup("pick2", 3); - VehicleType type = VehicleTypeImpl.Builder.newInstance("type").addCapacityDimension(0, 3).build(); VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setType(type).setStartLocation(Location.newInstance("loc")).build(); - VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle).addJob(pickup).addJob(pickup2).build(); - VehicleRoute route = VehicleRoute.Builder.newInstance(vehicle).setJobActivityFactory(vrp.getJobActivityFactory()).addService(pickup2).build(); - stateManager.informInsertionStarts(Collections.singletonList(route), null); JobInsertionContext iContext = new JobInsertionContext(route, pickup, vehicle, null, 0.); assertFalse(new ServiceLoadRouteLevelConstraint(stateManager).fulfilled(iContext)); } @Test - public void whenNewVehicleCapacityIsNotSufficiant2_returnFalse() { + @DisplayName("When New Vehicle Capacity Is Not Sufficiant 2 _ return False") + void whenNewVehicleCapacityIsNotSufficiant2_returnFalse() { Pickup service = (Pickup) createPickup("pick", 2); Service serviceInRoute = createPickup("pick1", 3); VehicleType type = VehicleTypeImpl.Builder.newInstance("type").addCapacityDimension(0, 3).build(); @@ -351,14 +320,10 @@ public void whenNewVehicleCapacityIsNotSufficiant2_returnFalse() { VehicleRoute route = VehicleRoute.Builder.newInstance(vehicle).setJobActivityFactory(vrp.getJobActivityFactory()).addService(serviceInRoute).build(); stateManager.informInsertionStarts(Collections.singletonList(route), null); JobInsertionContext iContext = new JobInsertionContext(route, service, vehicle, null, 0.); - assertFalse(new ServiceLoadRouteLevelConstraint(stateManager).fulfilled(iContext)); } - private Service createPickup(String string, int i) { return Pickup.Builder.newInstance(string).addSizeDimension(0, i).setLocation(Location.newInstance("loc")).build(); } - - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/SkillConstraintTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/SkillConstraintTest.java index d5f5b8e16..ef98b5a5b 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/SkillConstraintTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/SkillConstraintTest.java @@ -15,7 +15,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.graphhopper.jsprit.core.problem.constraint; import com.graphhopper.jsprit.core.algorithm.state.StateManager; @@ -27,16 +26,17 @@ import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.Arrays; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; -public class SkillConstraintTest { +@DisplayName("Skill Constraint Test") +class SkillConstraintTest { private HardRouteConstraint skillConstraint; @@ -48,58 +48,55 @@ public class SkillConstraintTest { private VehicleRoutingProblem vrp; - @Before - public void doBefore() { + @BeforeEach + void doBefore() { VehicleType type = VehicleTypeImpl.Builder.newInstance("t").build(); vehicle = VehicleImpl.Builder.newInstance("v").addSkill("skill1").addSkill("skill2").addSkill("skill3").addSkill("skill4").setStartLocation(Location.newInstance("start")).setType(type).build(); vehicle2 = VehicleImpl.Builder.newInstance("v2").addSkill("skill4").addSkill("skill5").setStartLocation(Location.newInstance("start")).setType(type).build(); - Service service = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")).addRequiredSkill("skill1").build(); Service service2 = Service.Builder.newInstance("s2").setLocation(Location.newInstance("loc")).addRequiredSkill("skill1").addRequiredSkill("skill2").addRequiredSkill("skill3").build(); - Service service3 = Service.Builder.newInstance("s3").setLocation(Location.newInstance("loc")).addRequiredSkill("skill4").addRequiredSkill("skill5").build(); Service service4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("loc")).addRequiredSkill("skill1").build(); - - vrp = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle).addVehicle(vehicle2).addJob(service) - .addJob(service2).addJob(service3).addJob(service4).build(); - + vrp = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle).addVehicle(vehicle2).addJob(service).addJob(service2).addJob(service3).addJob(service4).build(); route = VehicleRoute.Builder.newInstance(vehicle).setJobActivityFactory(vrp.getJobActivityFactory()).addService(service).addService(service2).build(); - StateManager stateManager = new StateManager(vrp); stateManager.updateSkillStates(); stateManager.informInsertionStarts(Arrays.asList(route), null); - skillConstraint = new HardSkillConstraint(stateManager); } @Test - public void whenJobToBeInsertedRequiresSkillsThatNewVehicleDoesNotHave_itShouldReturnFalse() { + @DisplayName("When Job To Be Inserted Requires Skills That New Vehicle Does Not Have _ it Should Return False") + void whenJobToBeInsertedRequiresSkillsThatNewVehicleDoesNotHave_itShouldReturnFalse() { JobInsertionContext insertionContext = new JobInsertionContext(route, vrp.getJobs().get("s3"), vehicle, route.getDriver(), 0.); assertFalse(skillConstraint.fulfilled(insertionContext)); } @Test - public void whenJobToBeInsertedRequiresSkillsThatVehicleHave_itShouldReturnTrue() { + @DisplayName("When Job To Be Inserted Requires Skills That Vehicle Have _ it Should Return True") + void whenJobToBeInsertedRequiresSkillsThatVehicleHave_itShouldReturnTrue() { JobInsertionContext insertionContext = new JobInsertionContext(route, vrp.getJobs().get("s4"), vehicle, route.getDriver(), 0.); assertTrue(skillConstraint.fulfilled(insertionContext)); } @Test - public void whenRouteToBeOvertakenRequiresSkillsThatVehicleDoesNotHave_itShouldReturnFalse() { + @DisplayName("When Route To Be Overtaken Requires Skills That Vehicle Does Not Have _ it Should Return False") + void whenRouteToBeOvertakenRequiresSkillsThatVehicleDoesNotHave_itShouldReturnFalse() { JobInsertionContext insertionContext = new JobInsertionContext(route, vrp.getJobs().get("s3"), vehicle2, route.getDriver(), 0.); assertFalse(skillConstraint.fulfilled(insertionContext)); } @Test - public void whenRouteToBeOvertakenRequiresSkillsThatVehicleDoesNotHave2_itShouldReturnFalse() { + @DisplayName("When Route To Be Overtaken Requires Skills That Vehicle Does Not Have 2 _ it Should Return False") + void whenRouteToBeOvertakenRequiresSkillsThatVehicleDoesNotHave2_itShouldReturnFalse() { JobInsertionContext insertionContext = new JobInsertionContext(route, vrp.getJobs().get("s4"), vehicle2, route.getDriver(), 0.); assertFalse(skillConstraint.fulfilled(insertionContext)); } @Test - public void whenRouteToBeOvertakenRequiresSkillsThatVehicleDoesHave_itShouldReturnTrue() { + @DisplayName("When Route To Be Overtaken Requires Skills That Vehicle Does Have _ it Should Return True") + void whenRouteToBeOvertakenRequiresSkillsThatVehicleDoesHave_itShouldReturnTrue() { JobInsertionContext insertionContext = new JobInsertionContext(route, vrp.getJobs().get("s4"), vehicle, route.getDriver(), 0.); assertTrue(skillConstraint.fulfilled(insertionContext)); } - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/SoftActivityConstraintManagerTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/SoftActivityConstraintManagerTest.java index a6d6478db..f305bde6e 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/SoftActivityConstraintManagerTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/SoftActivityConstraintManagerTest.java @@ -19,16 +19,19 @@ import com.graphhopper.jsprit.core.problem.misc.JobInsertionContext; import com.graphhopper.jsprit.core.problem.solution.route.activity.TourActivity; -import org.junit.Test; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -public class SoftActivityConstraintManagerTest { +@DisplayName("Soft Activity Constraint Manager Test") +class SoftActivityConstraintManagerTest { @Test - public void whenAddingSoftConstraint_managerShouldHaveIt() { + @DisplayName("When Adding Soft Constraint _ manager Should Have It") + void whenAddingSoftConstraint_managerShouldHaveIt() { SoftActivityConstraint c = mock(SoftActivityConstraint.class); SoftActivityConstraintManager man = new SoftActivityConstraintManager(); assertEquals(0, man.getConstraints().size()); @@ -37,7 +40,8 @@ public void whenAddingSoftConstraint_managerShouldHaveIt() { } @Test - public void whenAddingTwoSoftConstraints_managerShouldHaveIt() { + @DisplayName("When Adding Two Soft Constraints _ manager Should Have It") + void whenAddingTwoSoftConstraints_managerShouldHaveIt() { SoftActivityConstraint c1 = mock(SoftActivityConstraint.class); SoftActivityConstraint c2 = mock(SoftActivityConstraint.class); SoftActivityConstraintManager man = new SoftActivityConstraintManager(); @@ -48,7 +52,8 @@ public void whenAddingTwoSoftConstraints_managerShouldHaveIt() { } @Test - public void whenAddingTwoSoftConstrainta_managerShouldSumCostsCorrectly() { + @DisplayName("When Adding Two Soft Constrainta _ manager Should Sum Costs Correctly") + void whenAddingTwoSoftConstrainta_managerShouldSumCostsCorrectly() { SoftActivityConstraint c1 = mock(SoftActivityConstraint.class); JobInsertionContext iContext = mock(JobInsertionContext.class); TourActivity act_i = mock(TourActivity.class); @@ -57,9 +62,7 @@ public void whenAddingTwoSoftConstrainta_managerShouldSumCostsCorrectly() { when(c1.getCosts(iContext, act_i, act_k, act_j, 0.0)).thenReturn(1.0); SoftActivityConstraint c2 = mock(SoftActivityConstraint.class); when(c2.getCosts(iContext, act_i, act_k, act_j, 0.0)).thenReturn(2.0); - SoftActivityConstraintManager man = new SoftActivityConstraintManager(); - man.addConstraint(c1); man.addConstraint(c2); assertEquals(3.0, man.getCosts(iContext, act_i, act_k, act_j, 0.0), 0.01); diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/SoftRouteConstraintManagerTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/SoftRouteConstraintManagerTest.java index 0de9ebf2c..af0dc4ab6 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/SoftRouteConstraintManagerTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/SoftRouteConstraintManagerTest.java @@ -18,16 +18,19 @@ package com.graphhopper.jsprit.core.problem.constraint; import com.graphhopper.jsprit.core.problem.misc.JobInsertionContext; -import org.junit.Test; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -public class SoftRouteConstraintManagerTest { +@DisplayName("Soft Route Constraint Manager Test") +class SoftRouteConstraintManagerTest { @Test - public void whenAddingSoftRouteConstraint_managerShouldHaveIt() { + @DisplayName("When Adding Soft Route Constraint _ manager Should Have It") + void whenAddingSoftRouteConstraint_managerShouldHaveIt() { SoftRouteConstraint c = mock(SoftRouteConstraint.class); SoftRouteConstraintManager man = new SoftRouteConstraintManager(); assertEquals(0, man.getConstraints().size()); @@ -36,7 +39,8 @@ public void whenAddingSoftRouteConstraint_managerShouldHaveIt() { } @Test - public void whenAddingTwoSoftRouteConstraint_managerShouldHaveIt() { + @DisplayName("When Adding Two Soft Route Constraint _ manager Should Have It") + void whenAddingTwoSoftRouteConstraint_managerShouldHaveIt() { SoftRouteConstraint c1 = mock(SoftRouteConstraint.class); SoftRouteConstraint c2 = mock(SoftRouteConstraint.class); SoftRouteConstraintManager man = new SoftRouteConstraintManager(); @@ -47,14 +51,14 @@ public void whenAddingTwoSoftRouteConstraint_managerShouldHaveIt() { } @Test - public void whenAddingTwoSoftRouteConstraint_managerShouldSumCostsCorrectly() { + @DisplayName("When Adding Two Soft Route Constraint _ manager Should Sum Costs Correctly") + void whenAddingTwoSoftRouteConstraint_managerShouldSumCostsCorrectly() { SoftRouteConstraint c1 = mock(SoftRouteConstraint.class); JobInsertionContext iContext = mock(JobInsertionContext.class); when(c1.getCosts(iContext)).thenReturn(1.0); SoftRouteConstraint c2 = mock(SoftRouteConstraint.class); when(c2.getCosts(iContext)).thenReturn(2.0); SoftRouteConstraintManager man = new SoftRouteConstraintManager(); - man.addConstraint(c1); man.addConstraint(c2); assertEquals(3.0, man.getCosts(iContext), 0.01); diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/VehicleDependentTimeWindowTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/VehicleDependentTimeWindowTest.java index 2de2a3ce4..4fc8baee9 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/VehicleDependentTimeWindowTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/VehicleDependentTimeWindowTest.java @@ -15,7 +15,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.graphhopper.jsprit.core.problem.constraint; import com.graphhopper.jsprit.core.algorithm.state.InternalStates; @@ -33,17 +32,19 @@ import com.graphhopper.jsprit.core.problem.solution.route.activity.PickupService; import com.graphhopper.jsprit.core.problem.vehicle.*; import com.graphhopper.jsprit.core.util.CostFactory; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.*; -import static org.junit.Assert.*; +import static org.junit.jupiter.api.Assertions.*; /** * unit tests to test vehicle dependent time-windows */ -public class VehicleDependentTimeWindowTest { +@DisplayName("Vehicle Dependent Time Window Test") +class VehicleDependentTimeWindowTest { private StateManager stateManager; @@ -58,58 +59,40 @@ public class VehicleDependentTimeWindowTest { private VehicleRoutingActivityCosts activityCosts; private VehicleImpl v3; + private VehicleImpl v4; + private VehicleImpl v5; + private VehicleImpl v6; - @Before - public void doBefore() { + @BeforeEach + void doBefore() { VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); routingCosts = CostFactory.createEuclideanCosts(); - activityCosts = new WaitingTimeCosts(); - vrpBuilder.setRoutingCost(routingCosts); - VehicleType type = VehicleTypeImpl.Builder.newInstance("type").build(); - vehicle = VehicleImpl.Builder.newInstance("v").setType(type).setStartLocation(Location.newInstance("0,0")) - .setEarliestStart(0.).setLatestArrival(100.).build(); - - v2 = VehicleImpl.Builder.newInstance("v2").setType(type).setStartLocation(Location.newInstance("0,0")) - .setEarliestStart(0.).setLatestArrival(60.).build(); - - v3 = VehicleImpl.Builder.newInstance("v3").setType(type).setStartLocation(Location.newInstance("0,0")) - .setEarliestStart(0.).setLatestArrival(50.).build(); - - v4 = VehicleImpl.Builder.newInstance("v4").setType(type).setStartLocation(Location.newInstance("0,0")) - .setEarliestStart(0.).setLatestArrival(10.).build(); - - v5 = VehicleImpl.Builder.newInstance("v5").setType(type).setStartLocation(Location.newInstance("0,0")) - .setEarliestStart(60.).setLatestArrival(100.).build(); - - v6 = VehicleImpl.Builder.newInstance("v6").setType(type).setStartLocation(Location.newInstance("0,0")) - .setEndLocation(Location.newInstance("40,0")).setEarliestStart(0.).setLatestArrival(40.).build(); - + vehicle = VehicleImpl.Builder.newInstance("v").setType(type).setStartLocation(Location.newInstance("0,0")).setEarliestStart(0.).setLatestArrival(100.).build(); + v2 = VehicleImpl.Builder.newInstance("v2").setType(type).setStartLocation(Location.newInstance("0,0")).setEarliestStart(0.).setLatestArrival(60.).build(); + v3 = VehicleImpl.Builder.newInstance("v3").setType(type).setStartLocation(Location.newInstance("0,0")).setEarliestStart(0.).setLatestArrival(50.).build(); + v4 = VehicleImpl.Builder.newInstance("v4").setType(type).setStartLocation(Location.newInstance("0,0")).setEarliestStart(0.).setLatestArrival(10.).build(); + v5 = VehicleImpl.Builder.newInstance("v5").setType(type).setStartLocation(Location.newInstance("0,0")).setEarliestStart(60.).setLatestArrival(100.).build(); + v6 = VehicleImpl.Builder.newInstance("v6").setType(type).setStartLocation(Location.newInstance("0,0")).setEndLocation(Location.newInstance("40,0")).setEarliestStart(0.).setLatestArrival(40.).build(); vrpBuilder.addVehicle(vehicle).addVehicle(v2).addVehicle(v3).addVehicle(v4).addVehicle(v5).addVehicle(v6); - Service service = Service.Builder.newInstance("s1").setLocation(Location.newInstance("10,0")).build(); Service service2 = Service.Builder.newInstance("s2").setLocation(Location.newInstance("20,0")).build(); Service service3 = Service.Builder.newInstance("s3").setLocation(Location.newInstance("30,0")).build(); - vrpBuilder.addJob(service).addJob(service2).addJob(service3); final VehicleRoutingProblem vrp = vrpBuilder.build(); - route = VehicleRoute.Builder.newInstance(vehicle).setJobActivityFactory(new JobActivityFactory() { @Override public List createActivities(Job job) { return vrp.copyAndGetActivities(job); } - }).addService(service).addService(service2).addService(service3).build(); - stateManager = new StateManager(vrp); - Collection vehicles = new ArrayList(); vehicles.add(vehicle); vehicles.add(v2); @@ -117,9 +100,7 @@ public List createActivities(Job job) { vehicles.add(v4); vehicles.add(v5); vehicles.add(v6); - final VehicleFleetManager fleetManager = new FiniteFleetManagerFactory(vehicles).createFleetManager(); - UpdateVehicleDependentPracticalTimeWindows timeWindow_updater = new UpdateVehicleDependentPracticalTimeWindows(stateManager, routingCosts, activityCosts); timeWindow_updater.setVehiclesToUpdate(new UpdateVehicleDependentPracticalTimeWindows.VehiclesToUpdate() { @@ -130,7 +111,6 @@ public Collection get(VehicleRoute route) { vehicles.addAll(fleetManager.getAvailableVehicles(route.getVehicle())); return vehicles; } - }); stateManager.addStateUpdater(timeWindow_updater); stateManager.addStateUpdater(new UpdateActivityTimes(routingCosts, activityCosts)); @@ -138,207 +118,155 @@ public Collection get(VehicleRoute route) { } @Test - public void stateManagerShouldHaveMemorizedCorrectLatestEndOfAct3() { - assertEquals(70., stateManager.getActivityState(route.getActivities().get(2), - vehicle, InternalStates.LATEST_OPERATION_START_TIME, Double.class), 0.01); + @DisplayName("State Manager Should Have Memorized Correct Latest End Of Act 3") + void stateManagerShouldHaveMemorizedCorrectLatestEndOfAct3() { + assertEquals(70., stateManager.getActivityState(route.getActivities().get(2), vehicle, InternalStates.LATEST_OPERATION_START_TIME, Double.class), 0.01); } @Test - public void stateManagerShouldHaveMemorizedCorrectLatestEndOfAct2() { - assertEquals(60., stateManager.getActivityState(route.getActivities().get(1), - vehicle, InternalStates.LATEST_OPERATION_START_TIME, Double.class), 0.01); + @DisplayName("State Manager Should Have Memorized Correct Latest End Of Act 2") + void stateManagerShouldHaveMemorizedCorrectLatestEndOfAct2() { + assertEquals(60., stateManager.getActivityState(route.getActivities().get(1), vehicle, InternalStates.LATEST_OPERATION_START_TIME, Double.class), 0.01); } @Test - public void stateManagerShouldHaveMemorizedCorrectLatestEndOfAct1() { - assertEquals(50., stateManager.getActivityState(route.getActivities().get(0), - vehicle, InternalStates.LATEST_OPERATION_START_TIME, Double.class), 0.01); + @DisplayName("State Manager Should Have Memorized Correct Latest End Of Act 1") + void stateManagerShouldHaveMemorizedCorrectLatestEndOfAct1() { + assertEquals(50., stateManager.getActivityState(route.getActivities().get(0), vehicle, InternalStates.LATEST_OPERATION_START_TIME, Double.class), 0.01); } @Test - public void whenNewJobIsInsertedWithOldVeh_itJustShouldReturnTrue() { - + @DisplayName("When New Job Is Inserted With Old Veh _ it Just Should Return True") + void whenNewJobIsInsertedWithOldVeh_itJustShouldReturnTrue() { Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("50,0")).build(); PickupService serviceAct = new PickupService(s4); - JobInsertionContext insertionContext = new JobInsertionContext(route, s4, vehicle, route.getDriver(), 0.); - HardActivityConstraint twConstraint = new VehicleDependentTimeWindowConstraints(stateManager, routingCosts, activityCosts); - HardActivityConstraint.ConstraintsStatus status = twConstraint.fulfilled(insertionContext, route.getActivities().get(2), serviceAct, route.getEnd(), 30.); assertTrue(status.equals(HardActivityConstraint.ConstraintsStatus.FULFILLED)); - } @Test - public void whenNewJobIsInsertedWithOldVeh_itJustShouldReturnFalse() { - + @DisplayName("When New Job Is Inserted With Old Veh _ it Just Should Return False") + void whenNewJobIsInsertedWithOldVeh_itJustShouldReturnFalse() { Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("1000,0")).build(); PickupService serviceAct = new PickupService(s4); - JobInsertionContext insertionContext = new JobInsertionContext(route, s4, vehicle, route.getDriver(), 0.); - HardActivityConstraint twConstraint = new VehicleDependentTimeWindowConstraints(stateManager, routingCosts, activityCosts); - HardActivityConstraint.ConstraintsStatus status = twConstraint.fulfilled(insertionContext, route.getActivities().get(2), serviceAct, route.getEnd(), 30.); assertFalse(status.equals(HardActivityConstraint.ConstraintsStatus.FULFILLED)); - } @Test - public void whenNewJobIsInsertedInBetweenAct1And2WithOldVeh_itJustShouldReturnTrue() { - + @DisplayName("When New Job Is Inserted In Between Act 1 And 2 With Old Veh _ it Just Should Return True") + void whenNewJobIsInsertedInBetweenAct1And2WithOldVeh_itJustShouldReturnTrue() { Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("50,0")).build(); PickupService serviceAct = new PickupService(s4); - JobInsertionContext insertionContext = new JobInsertionContext(route, s4, vehicle, route.getDriver(), 0.); - HardActivityConstraint twConstraint = new VehicleDependentTimeWindowConstraints(stateManager, routingCosts, activityCosts); /* driverTime = 10 + 10 + 30 + 20 + 30 = 100 */ -// System.out.println("latest act1 " + stateManager.getActivityState()); + // System.out.println("latest act1 " + stateManager.getActivityState()); HardActivityConstraint.ConstraintsStatus status = twConstraint.fulfilled(insertionContext, route.getActivities().get(1), serviceAct, route.getActivities().get(2), 20.); assertTrue(status.equals(HardActivityConstraint.ConstraintsStatus.FULFILLED)); - } @Test - public void whenNewJobIsInsertedInBetweenAct1And2WithOldVeh_itJustShouldReturnFalse() { - + @DisplayName("When New Job Is Inserted In Between Act 1 And 2 With Old Veh _ it Just Should Return False") + void whenNewJobIsInsertedInBetweenAct1And2WithOldVeh_itJustShouldReturnFalse() { Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("51,0")).build(); PickupService serviceAct = new PickupService(s4); - JobInsertionContext insertionContext = new JobInsertionContext(route, s4, vehicle, route.getDriver(), 0.); - /* driverTime = 10 + 10 + 31 + 21 + 30 = 102 */ - HardActivityConstraint twConstraint = new VehicleDependentTimeWindowConstraints(stateManager, routingCosts, activityCosts); - HardActivityConstraint.ConstraintsStatus status = twConstraint.fulfilled(insertionContext, route.getActivities().get(1), serviceAct, route.getActivities().get(2), 20.); assertFalse(status.equals(HardActivityConstraint.ConstraintsStatus.FULFILLED)); - } @Test - public void whenJobIsInsertedAlongWithNewVehicleThatNeedsToBeHomeAt60_itShouldReturnFalse() { - + @DisplayName("When Job Is Inserted Along With New Vehicle That Needs To Be Home At 60 _ it Should Return False") + void whenJobIsInsertedAlongWithNewVehicleThatNeedsToBeHomeAt60_itShouldReturnFalse() { assertEquals(60., route.getEnd().getArrTime(), 0.01); - Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("40,0")).build(); PickupService serviceAct = new PickupService(s4); - JobInsertionContext insertionContext = new JobInsertionContext(route, s4, v2, route.getDriver(), 0.); - HardActivityConstraint twConstraint = new VehicleDependentTimeWindowConstraints(stateManager, routingCosts, activityCosts); - HardActivityConstraint.ConstraintsStatus status = twConstraint.fulfilled(insertionContext, route.getActivities().get(2), serviceAct, route.getEnd(), 30.); - assertFalse(status.equals(HardActivityConstraint.ConstraintsStatus.FULFILLED)); - } @Test - public void whenJobIsInsertedAlongWithNewVehicleThatNeedsToBeHomeAt50_itShouldReturnFalse() { - + @DisplayName("When Job Is Inserted Along With New Vehicle That Needs To Be Home At 50 _ it Should Return False") + void whenJobIsInsertedAlongWithNewVehicleThatNeedsToBeHomeAt50_itShouldReturnFalse() { assertEquals(60., route.getEnd().getArrTime(), 0.01); - Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("40,0")).build(); PickupService serviceAct = new PickupService(s4); - JobInsertionContext insertionContext = new JobInsertionContext(route, s4, v3, route.getDriver(), 0.); - HardActivityConstraint twConstraint = new VehicleDependentTimeWindowConstraints(stateManager, routingCosts, activityCosts); - HardActivityConstraint.ConstraintsStatus status = twConstraint.fulfilled(insertionContext, route.getActivities().get(2), serviceAct, route.getEnd(), 30.); assertFalse(status.equals(HardActivityConstraint.ConstraintsStatus.FULFILLED)); - } @Test - public void whenJobIsInsertedAlongWithNewVehicleThatNeedsToBeHomeAt10_itShouldReturnFalse() { - + @DisplayName("When Job Is Inserted Along With New Vehicle That Needs To Be Home At 10 _ it Should Return False") + void whenJobIsInsertedAlongWithNewVehicleThatNeedsToBeHomeAt10_itShouldReturnFalse() { assertEquals(60., route.getEnd().getArrTime(), 0.01); - Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("40,0")).build(); PickupService serviceAct = new PickupService(s4); - JobInsertionContext insertionContext = new JobInsertionContext(route, s4, v4, route.getDriver(), 0.); - HardActivityConstraint twConstraint = new VehicleDependentTimeWindowConstraints(stateManager, routingCosts, activityCosts); - HardActivityConstraint.ConstraintsStatus status = twConstraint.fulfilled(insertionContext, route.getActivities().get(2), serviceAct, route.getEnd(), 30.); assertFalse(status.equals(HardActivityConstraint.ConstraintsStatus.FULFILLED)); - } @Test - public void whenJobIsInsertedAlongWithV6BetweenS2AndS3_itShouldReturnFalse() { - + @DisplayName("When Job Is Inserted Along With V 6 Between S 2 And S 3 _ it Should Return False") + void whenJobIsInsertedAlongWithV6BetweenS2AndS3_itShouldReturnFalse() { assertEquals(60., route.getEnd().getArrTime(), 0.01); - Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("40,0")).build(); PickupService serviceAct = new PickupService(s4); - JobInsertionContext insertionContext = new JobInsertionContext(route, s4, v6, route.getDriver(), 0.); - HardActivityConstraint twConstraint = new VehicleDependentTimeWindowConstraints(stateManager, routingCosts, activityCosts); - HardActivityConstraint.ConstraintsStatus status = twConstraint.fulfilled(insertionContext, route.getActivities().get(1), serviceAct, route.getActivities().get(2), 30.); assertFalse(status.equals(HardActivityConstraint.ConstraintsStatus.FULFILLED)); - } @Test - public void whenJobIsInsertedAlongWithV6BetweenS1AndS2_itShouldReturnFalse() { - + @DisplayName("When Job Is Inserted Along With V 6 Between S 1 And S 2 _ it Should Return False") + void whenJobIsInsertedAlongWithV6BetweenS1AndS2_itShouldReturnFalse() { assertEquals(60., route.getEnd().getArrTime(), 0.01); - Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("40,0")).build(); PickupService serviceAct = new PickupService(s4); - JobInsertionContext insertionContext = new JobInsertionContext(route, s4, v6, route.getDriver(), 0.); - HardActivityConstraint twConstraint = new VehicleDependentTimeWindowConstraints(stateManager, routingCosts, activityCosts); - HardActivityConstraint.ConstraintsStatus status = twConstraint.fulfilled(insertionContext, route.getActivities().get(0), serviceAct, route.getActivities().get(1), 10.); assertFalse(status.equals(HardActivityConstraint.ConstraintsStatus.FULFILLED)); - } @Test - public void whenJobIsInsertedAlongWithV6AtTheEndOfRoute_itShouldReturnTrue() { - + @DisplayName("When Job Is Inserted Along With V 6 At The End Of Route _ it Should Return True") + void whenJobIsInsertedAlongWithV6AtTheEndOfRoute_itShouldReturnTrue() { assertEquals(60., route.getEnd().getArrTime(), 0.01); - Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("40,0")).build(); PickupService serviceAct = new PickupService(s4); - JobInsertionContext insertionContext = new JobInsertionContext(route, s4, v6, route.getDriver(), 0.); - HardActivityConstraint twConstraint = new VehicleDependentTimeWindowConstraints(stateManager, routingCosts, activityCosts); - HardActivityConstraint.ConstraintsStatus status = twConstraint.fulfilled(insertionContext, route.getActivities().get(2), serviceAct, route.getEnd(), 30.); assertTrue(status.equals(HardActivityConstraint.ConstraintsStatus.FULFILLED)); } @Test - public void whenJobIsInsertedAlongWithNewVehicleThatCanOnlyStartAt60_itShouldReturnFalse() { + @DisplayName("When Job Is Inserted Along With New Vehicle That Can Only Start At 60 _ it Should Return False") + void whenJobIsInsertedAlongWithNewVehicleThatCanOnlyStartAt60_itShouldReturnFalse() { assertEquals(60., route.getEnd().getArrTime(), 0.01); - Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("40,0")).build(); PickupService serviceAct = new PickupService(s4); - JobInsertionContext insertionContext = new JobInsertionContext(route, s4, v5, route.getDriver(), 60.); - HardActivityConstraint twConstraint = new VehicleDependentTimeWindowConstraints(stateManager, routingCosts, activityCosts); - HardActivityConstraint.ConstraintsStatus status = twConstraint.fulfilled(insertionContext, route.getActivities().get(2), serviceAct, route.getEnd(), 90.); assertFalse(status.equals(HardActivityConstraint.ConstraintsStatus.FULFILLED)); - } - - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/VehicleDependentTimeWindowWithStartTimeAndMaxOperationTimeTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/VehicleDependentTimeWindowWithStartTimeAndMaxOperationTimeTest.java index 373b0edd2..eeb1e9146 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/VehicleDependentTimeWindowWithStartTimeAndMaxOperationTimeTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/VehicleDependentTimeWindowWithStartTimeAndMaxOperationTimeTest.java @@ -15,7 +15,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.graphhopper.jsprit.core.problem.constraint; import com.graphhopper.jsprit.core.algorithm.state.InternalStates; @@ -33,17 +32,19 @@ import com.graphhopper.jsprit.core.problem.solution.route.activity.PickupService; import com.graphhopper.jsprit.core.problem.vehicle.*; import com.graphhopper.jsprit.core.util.CostFactory; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.*; -import static org.junit.Assert.*; +import static org.junit.jupiter.api.Assertions.*; /** * unit tests to test vehicle dependent time-windows */ -public class VehicleDependentTimeWindowWithStartTimeAndMaxOperationTimeTest { +@DisplayName("Vehicle Dependent Time Window With Start Time And Max Operation Time Test") +class VehicleDependentTimeWindowWithStartTimeAndMaxOperationTimeTest { private StateManager stateManager; @@ -58,56 +59,40 @@ public class VehicleDependentTimeWindowWithStartTimeAndMaxOperationTimeTest { private VehicleRoutingActivityCosts activityCosts; private VehicleImpl v3; + private VehicleImpl v4; + private VehicleImpl v5; + private VehicleImpl v6; - @Before - public void doBefore() { + @BeforeEach + void doBefore() { VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance(); routingCosts = CostFactory.createEuclideanCosts(); activityCosts = new WaitingTimeCosts(); vrpBuilder.setRoutingCost(routingCosts); - VehicleType type = VehicleTypeImpl.Builder.newInstance("type").build(); - vehicle = VehicleImpl.Builder.newInstance("v").setType(type).setStartLocation(Location.newInstance("0,0")) - .setEarliestStart(0.).setLatestArrival(100.).build(); - - v2 = VehicleImpl.Builder.newInstance("v2").setType(type).setStartLocation(Location.newInstance("0,0")) - .setEarliestStart(0.).setLatestArrival(60.).build(); - - v3 = VehicleImpl.Builder.newInstance("v3").setType(type).setStartLocation(Location.newInstance("0,0")) - .setEarliestStart(0.).setLatestArrival(50.).build(); - - v4 = VehicleImpl.Builder.newInstance("v4").setType(type).setStartLocation(Location.newInstance("0,0")) - .setEarliestStart(0.).setLatestArrival(10.).build(); - - v5 = VehicleImpl.Builder.newInstance("v5").setType(type).setStartLocation(Location.newInstance("0,0")) - .setEarliestStart(60.).setLatestArrival(100.).build(); - - v6 = VehicleImpl.Builder.newInstance("v6").setType(type).setStartLocation(Location.newInstance("0,0")) - .setEndLocation(Location.newInstance("40,0")).setEarliestStart(0.).setLatestArrival(40.).build(); - + vehicle = VehicleImpl.Builder.newInstance("v").setType(type).setStartLocation(Location.newInstance("0,0")).setEarliestStart(0.).setLatestArrival(100.).build(); + v2 = VehicleImpl.Builder.newInstance("v2").setType(type).setStartLocation(Location.newInstance("0,0")).setEarliestStart(0.).setLatestArrival(60.).build(); + v3 = VehicleImpl.Builder.newInstance("v3").setType(type).setStartLocation(Location.newInstance("0,0")).setEarliestStart(0.).setLatestArrival(50.).build(); + v4 = VehicleImpl.Builder.newInstance("v4").setType(type).setStartLocation(Location.newInstance("0,0")).setEarliestStart(0.).setLatestArrival(10.).build(); + v5 = VehicleImpl.Builder.newInstance("v5").setType(type).setStartLocation(Location.newInstance("0,0")).setEarliestStart(60.).setLatestArrival(100.).build(); + v6 = VehicleImpl.Builder.newInstance("v6").setType(type).setStartLocation(Location.newInstance("0,0")).setEndLocation(Location.newInstance("40,0")).setEarliestStart(0.).setLatestArrival(40.).build(); vrpBuilder.addVehicle(vehicle).addVehicle(v2).addVehicle(v3).addVehicle(v4).addVehicle(v5).addVehicle(v6); - Service service = Service.Builder.newInstance("s1").setLocation(Location.newInstance("10,0")).build(); Service service2 = Service.Builder.newInstance("s2").setLocation(Location.newInstance("20,0")).build(); Service service3 = Service.Builder.newInstance("s3").setLocation(Location.newInstance("30,0")).build(); - vrpBuilder.addJob(service).addJob(service2).addJob(service3); final VehicleRoutingProblem vrp = vrpBuilder.build(); - route = VehicleRoute.Builder.newInstance(vehicle).setJobActivityFactory(new JobActivityFactory() { @Override public List createActivities(Job job) { return vrp.copyAndGetActivities(job); } - }).addService(service).addService(service2).addService(service3).build(); - stateManager = new StateManager(vrp); - Collection vehicles = new ArrayList(); vehicles.add(vehicle); vehicles.add(v2); @@ -115,9 +100,8 @@ public List createActivities(Job job) { vehicles.add(v4); vehicles.add(v5); vehicles.add(v6); - final VehicleFleetManager fleetManager = new FiniteFleetManagerFactory(vehicles).createFleetManager(); -// stateManager.updateTimeWindowStates(); + // stateManager.updateTimeWindowStates(); UpdateVehicleDependentPracticalTimeWindows timeWindow_updater = new UpdateVehicleDependentPracticalTimeWindows(stateManager, routingCosts, activityCosts); timeWindow_updater.setVehiclesToUpdate(new UpdateVehicleDependentPracticalTimeWindows.VehiclesToUpdate() { @@ -128,215 +112,162 @@ public Collection get(VehicleRoute route) { vehicles.addAll(fleetManager.getAvailableVehicles(route.getVehicle())); return vehicles; } - }); stateManager.addStateUpdater(timeWindow_updater); - stateManager.addStateUpdater(new UpdateActivityTimes(routingCosts,activityCosts)); + stateManager.addStateUpdater(new UpdateActivityTimes(routingCosts, activityCosts)); stateManager.informInsertionStarts(Arrays.asList(route), Collections.emptyList()); } @Test - public void stateManagerShouldHaveMemorizedCorrectLatestEndOfAct3() { - assertEquals(70., stateManager.getActivityState(route.getActivities().get(2), - vehicle, InternalStates.LATEST_OPERATION_START_TIME, Double.class), 0.01); + @DisplayName("State Manager Should Have Memorized Correct Latest End Of Act 3") + void stateManagerShouldHaveMemorizedCorrectLatestEndOfAct3() { + assertEquals(70., stateManager.getActivityState(route.getActivities().get(2), vehicle, InternalStates.LATEST_OPERATION_START_TIME, Double.class), 0.01); } @Test - public void stateManagerShouldHaveMemorizedCorrectLatestEndOfAct2() { - assertEquals(60., stateManager.getActivityState(route.getActivities().get(1), - vehicle, InternalStates.LATEST_OPERATION_START_TIME, Double.class), 0.01); + @DisplayName("State Manager Should Have Memorized Correct Latest End Of Act 2") + void stateManagerShouldHaveMemorizedCorrectLatestEndOfAct2() { + assertEquals(60., stateManager.getActivityState(route.getActivities().get(1), vehicle, InternalStates.LATEST_OPERATION_START_TIME, Double.class), 0.01); } @Test - public void stateManagerShouldHaveMemorizedCorrectLatestEndOfAct1() { - assertEquals(50., stateManager.getActivityState(route.getActivities().get(0), - vehicle, InternalStates.LATEST_OPERATION_START_TIME, Double.class), 0.01); + @DisplayName("State Manager Should Have Memorized Correct Latest End Of Act 1") + void stateManagerShouldHaveMemorizedCorrectLatestEndOfAct1() { + assertEquals(50., stateManager.getActivityState(route.getActivities().get(0), vehicle, InternalStates.LATEST_OPERATION_START_TIME, Double.class), 0.01); } @Test - public void whenNewJobIsInsertedWithOldVeh_itJustShouldReturnTrue() { - + @DisplayName("When New Job Is Inserted With Old Veh _ it Just Should Return True") + void whenNewJobIsInsertedWithOldVeh_itJustShouldReturnTrue() { Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("50,0")).build(); PickupService serviceAct = new PickupService(s4); - JobInsertionContext insertionContext = new JobInsertionContext(route, s4, vehicle, route.getDriver(), 0.); - HardActivityConstraint twConstraint = new VehicleDependentTimeWindowConstraints(stateManager, routingCosts, activityCosts); - HardActivityConstraint.ConstraintsStatus status = twConstraint.fulfilled(insertionContext, route.getActivities().get(2), serviceAct, route.getEnd(), 30.); assertTrue(status.equals(HardActivityConstraint.ConstraintsStatus.FULFILLED)); - } @Test - public void whenNewJobIsInsertedWithOldVeh_itJustShouldReturnFalse() { - + @DisplayName("When New Job Is Inserted With Old Veh _ it Just Should Return False") + void whenNewJobIsInsertedWithOldVeh_itJustShouldReturnFalse() { Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("1000,0")).build(); PickupService serviceAct = new PickupService(s4); - JobInsertionContext insertionContext = new JobInsertionContext(route, s4, vehicle, route.getDriver(), 0.); - HardActivityConstraint twConstraint = new VehicleDependentTimeWindowConstraints(stateManager, routingCosts, activityCosts); - HardActivityConstraint.ConstraintsStatus status = twConstraint.fulfilled(insertionContext, route.getActivities().get(2), serviceAct, route.getEnd(), 30.); assertFalse(status.equals(HardActivityConstraint.ConstraintsStatus.FULFILLED)); - } @Test - public void whenNewJobIsInsertedInBetweenAct1And2WithOldVeh_itJustShouldReturnTrue() { - + @DisplayName("When New Job Is Inserted In Between Act 1 And 2 With Old Veh _ it Just Should Return True") + void whenNewJobIsInsertedInBetweenAct1And2WithOldVeh_itJustShouldReturnTrue() { Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("50,0")).build(); PickupService serviceAct = new PickupService(s4); - JobInsertionContext insertionContext = new JobInsertionContext(route, s4, vehicle, route.getDriver(), 0.); - HardActivityConstraint twConstraint = new VehicleDependentTimeWindowConstraints(stateManager, routingCosts, activityCosts); /* driverTime = 10 + 10 + 30 + 20 + 30 = 100 */ -// System.out.println("latest act1 " + stateManager.getActivityState()); + // System.out.println("latest act1 " + stateManager.getActivityState()); HardActivityConstraint.ConstraintsStatus status = twConstraint.fulfilled(insertionContext, route.getActivities().get(1), serviceAct, route.getActivities().get(2), 20.); assertTrue(status.equals(HardActivityConstraint.ConstraintsStatus.FULFILLED)); - } @Test - public void whenNewJobIsInsertedInBetweenAct1And2WithOldVeh_itJustShouldReturnFalse() { - + @DisplayName("When New Job Is Inserted In Between Act 1 And 2 With Old Veh _ it Just Should Return False") + void whenNewJobIsInsertedInBetweenAct1And2WithOldVeh_itJustShouldReturnFalse() { Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("51,0")).build(); PickupService serviceAct = new PickupService(s4); - JobInsertionContext insertionContext = new JobInsertionContext(route, s4, vehicle, route.getDriver(), 0.); - /* driverTime = 10 + 10 + 31 + 21 + 30 = 102 */ - HardActivityConstraint twConstraint = new VehicleDependentTimeWindowConstraints(stateManager, routingCosts, activityCosts); - HardActivityConstraint.ConstraintsStatus status = twConstraint.fulfilled(insertionContext, route.getActivities().get(1), serviceAct, route.getActivities().get(2), 20.); assertFalse(status.equals(HardActivityConstraint.ConstraintsStatus.FULFILLED)); - } @Test - public void whenJobIsInsertedAlongWithNewVehicleThatNeedsToBeHomeAt60_itShouldReturnFalse() { - + @DisplayName("When Job Is Inserted Along With New Vehicle That Needs To Be Home At 60 _ it Should Return False") + void whenJobIsInsertedAlongWithNewVehicleThatNeedsToBeHomeAt60_itShouldReturnFalse() { assertEquals(60., route.getEnd().getArrTime(), 0.01); - Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("40,0")).build(); PickupService serviceAct = new PickupService(s4); - JobInsertionContext insertionContext = new JobInsertionContext(route, s4, v2, route.getDriver(), 0.); - HardActivityConstraint twConstraint = new VehicleDependentTimeWindowConstraints(stateManager, routingCosts, activityCosts); - HardActivityConstraint.ConstraintsStatus status = twConstraint.fulfilled(insertionContext, route.getActivities().get(2), serviceAct, route.getEnd(), 30.); - assertFalse(status.equals(HardActivityConstraint.ConstraintsStatus.FULFILLED)); - } @Test - public void whenJobIsInsertedAlongWithNewVehicleThatNeedsToBeHomeAt50_itShouldReturnFalse() { - + @DisplayName("When Job Is Inserted Along With New Vehicle That Needs To Be Home At 50 _ it Should Return False") + void whenJobIsInsertedAlongWithNewVehicleThatNeedsToBeHomeAt50_itShouldReturnFalse() { assertEquals(60., route.getEnd().getArrTime(), 0.01); - Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("40,0")).build(); PickupService serviceAct = new PickupService(s4); - JobInsertionContext insertionContext = new JobInsertionContext(route, s4, v3, route.getDriver(), 0.); - HardActivityConstraint twConstraint = new VehicleDependentTimeWindowConstraints(stateManager, routingCosts, activityCosts); - HardActivityConstraint.ConstraintsStatus status = twConstraint.fulfilled(insertionContext, route.getActivities().get(2), serviceAct, route.getEnd(), 30.); assertFalse(status.equals(HardActivityConstraint.ConstraintsStatus.FULFILLED)); - } @Test - public void whenJobIsInsertedAlongWithNewVehicleThatNeedsToBeHomeAt10_itShouldReturnFalse() { - + @DisplayName("When Job Is Inserted Along With New Vehicle That Needs To Be Home At 10 _ it Should Return False") + void whenJobIsInsertedAlongWithNewVehicleThatNeedsToBeHomeAt10_itShouldReturnFalse() { assertEquals(60., route.getEnd().getArrTime(), 0.01); - Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("40,0")).build(); PickupService serviceAct = new PickupService(s4); - JobInsertionContext insertionContext = new JobInsertionContext(route, s4, v4, route.getDriver(), 0.); - HardActivityConstraint twConstraint = new VehicleDependentTimeWindowConstraints(stateManager, routingCosts, activityCosts); - HardActivityConstraint.ConstraintsStatus status = twConstraint.fulfilled(insertionContext, route.getActivities().get(2), serviceAct, route.getEnd(), 30.); assertFalse(status.equals(HardActivityConstraint.ConstraintsStatus.FULFILLED)); - } @Test - public void whenJobIsInsertedAlongWithV6BetweenS2AndS3_itShouldReturnFalse() { - + @DisplayName("When Job Is Inserted Along With V 6 Between S 2 And S 3 _ it Should Return False") + void whenJobIsInsertedAlongWithV6BetweenS2AndS3_itShouldReturnFalse() { assertEquals(60., route.getEnd().getArrTime(), 0.01); - Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("40,0")).build(); PickupService serviceAct = new PickupService(s4); - JobInsertionContext insertionContext = new JobInsertionContext(route, s4, v6, route.getDriver(), 0.); - HardActivityConstraint twConstraint = new VehicleDependentTimeWindowConstraints(stateManager, routingCosts, activityCosts); - HardActivityConstraint.ConstraintsStatus status = twConstraint.fulfilled(insertionContext, route.getActivities().get(1), serviceAct, route.getActivities().get(2), 30.); assertFalse(status.equals(HardActivityConstraint.ConstraintsStatus.FULFILLED)); - } @Test - public void whenJobIsInsertedAlongWithV6BetweenS1AndS2_itShouldReturnFalse() { - + @DisplayName("When Job Is Inserted Along With V 6 Between S 1 And S 2 _ it Should Return False") + void whenJobIsInsertedAlongWithV6BetweenS1AndS2_itShouldReturnFalse() { assertEquals(60., route.getEnd().getArrTime(), 0.01); - Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("40,0")).build(); PickupService serviceAct = new PickupService(s4); - JobInsertionContext insertionContext = new JobInsertionContext(route, s4, v6, route.getDriver(), 0.); - HardActivityConstraint twConstraint = new VehicleDependentTimeWindowConstraints(stateManager, routingCosts, activityCosts); - HardActivityConstraint.ConstraintsStatus status = twConstraint.fulfilled(insertionContext, route.getActivities().get(0), serviceAct, route.getActivities().get(1), 10.); assertFalse(status.equals(HardActivityConstraint.ConstraintsStatus.FULFILLED)); - } @Test - public void whenJobIsInsertedAlongWithV6AtTheEndOfRoute_itShouldReturnTrue() { - + @DisplayName("When Job Is Inserted Along With V 6 At The End Of Route _ it Should Return True") + void whenJobIsInsertedAlongWithV6AtTheEndOfRoute_itShouldReturnTrue() { assertEquals(60., route.getEnd().getArrTime(), 0.01); - Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("40,0")).build(); PickupService serviceAct = new PickupService(s4); - JobInsertionContext insertionContext = new JobInsertionContext(route, s4, v6, route.getDriver(), 0.); - HardActivityConstraint twConstraint = new VehicleDependentTimeWindowConstraints(stateManager, routingCosts, activityCosts); - HardActivityConstraint.ConstraintsStatus status = twConstraint.fulfilled(insertionContext, route.getActivities().get(2), serviceAct, route.getEnd(), 30.); assertTrue(status.equals(HardActivityConstraint.ConstraintsStatus.FULFILLED)); } @Test - public void whenJobIsInsertedAlongWithNewVehicleThatCanOnlyStartAt60_itShouldReturnFalse() { + @DisplayName("When Job Is Inserted Along With New Vehicle That Can Only Start At 60 _ it Should Return False") + void whenJobIsInsertedAlongWithNewVehicleThatCanOnlyStartAt60_itShouldReturnFalse() { assertEquals(60., route.getEnd().getArrTime(), 0.01); - Service s4 = Service.Builder.newInstance("s4").setLocation(Location.newInstance("40,0")).build(); PickupService serviceAct = new PickupService(s4); - JobInsertionContext insertionContext = new JobInsertionContext(route, s4, v5, route.getDriver(), 60.); - HardActivityConstraint twConstraint = new VehicleDependentTimeWindowConstraints(stateManager, routingCosts, activityCosts); - HardActivityConstraint.ConstraintsStatus status = twConstraint.fulfilled(insertionContext, route.getActivities().get(2), serviceAct, route.getEnd(), 90.); assertFalse(status.equals(HardActivityConstraint.ConstraintsStatus.FULFILLED)); - } - - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/VehicleDependentTraveledDistanceTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/VehicleDependentTraveledDistanceTest.java index 3dbfc8d5e..b42a3311e 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/VehicleDependentTraveledDistanceTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/VehicleDependentTraveledDistanceTest.java @@ -15,10 +15,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.graphhopper.jsprit.core.problem.constraint; - import com.graphhopper.jsprit.core.algorithm.state.StateId; import com.graphhopper.jsprit.core.algorithm.state.StateManager; import com.graphhopper.jsprit.core.algorithm.state.VehicleDependentTraveledDistance; @@ -37,9 +35,10 @@ import com.graphhopper.jsprit.core.problem.vehicle.Vehicle; import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; import com.graphhopper.jsprit.core.util.ManhattanCosts; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.Arrays; import java.util.Collections; @@ -49,7 +48,8 @@ /** * Created by schroeder on 18/05/16. */ -public class VehicleDependentTraveledDistanceTest { +@DisplayName("Vehicle Dependent Traveled Distance Test") +class VehicleDependentTraveledDistanceTest { StateManager stateManager; @@ -71,58 +71,39 @@ public class VehicleDependentTraveledDistanceTest { Map maxDistanceMap; - - @Before - public void doBefore() { + @BeforeEach + void doBefore() { vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(0, 0)).build(); vehicle2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(Location.newInstance(10, 10)).build(); - maxDistanceMap = new HashMap<>(); maxDistanceMap.put(vehicle, 200d); maxDistanceMap.put(vehicle2, 200d); - d1 = Delivery.Builder.newInstance("d1").setLocation(Location.newInstance(10, 10)).build(); d2 = Delivery.Builder.newInstance("d2").setLocation(Location.newInstance(20, 15)).build(); pickup = Pickup.Builder.newInstance("pickup").setLocation(Location.newInstance(50, 50)).build(); - s1 = Shipment.Builder.newInstance("s1").setPickupLocation(Location.newInstance(35, 30)) - .setDeliveryLocation(Location.newInstance(20, 25)).build(); - + s1 = Shipment.Builder.newInstance("s1").setPickupLocation(Location.newInstance(35, 30)).setDeliveryLocation(Location.newInstance(20, 25)).build(); newDelivery = Delivery.Builder.newInstance("new").setLocation(Location.newInstance(-10, 10)).build(); - - vrp = VehicleRoutingProblem.Builder.newInstance() - .setRoutingCost(new ManhattanCosts()).addVehicle(vehicle).addVehicle(vehicle2) - .addJob(d1).addJob(d2).addJob(s1).addJob(pickup).addJob(newDelivery).build(); - - route = VehicleRoute.Builder.newInstance(vehicle).setJobActivityFactory(vrp.getJobActivityFactory()) - .addDelivery(d1).addDelivery(d2).addPickup(s1).addPickup(pickup).addDelivery(s1).build(); - + vrp = VehicleRoutingProblem.Builder.newInstance().setRoutingCost(new ManhattanCosts()).addVehicle(vehicle).addVehicle(vehicle2).addJob(d1).addJob(d2).addJob(s1).addJob(pickup).addJob(newDelivery).build(); + route = VehicleRoute.Builder.newInstance(vehicle).setJobActivityFactory(vrp.getJobActivityFactory()).addDelivery(d1).addDelivery(d2).addPickup(s1).addPickup(pickup).addDelivery(s1).build(); stateManager = new StateManager(vrp); - traveledDistanceId = stateManager.createStateId("traveledDistance"); - - VehicleDependentTraveledDistance traveledDistance = - new VehicleDependentTraveledDistance(vrp.getTransportCosts(), stateManager, traveledDistanceId, Arrays.asList(vehicle, vehicle2)); - + VehicleDependentTraveledDistance traveledDistance = new VehicleDependentTraveledDistance(vrp.getTransportCosts(), stateManager, traveledDistanceId, Arrays.asList(vehicle, vehicle2)); stateManager.addStateUpdater(traveledDistance); stateManager.informInsertionStarts(Arrays.asList(route), Collections.emptyList()); } @Test - public void whenEndLocationIsSet_constraintShouldWork() { - VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(0, 0)) - .setEndLocation(Location.newInstance(10, 0)).build(); + @DisplayName("When End Location Is Set _ constraint Should Work") + void whenEndLocationIsSet_constraintShouldWork() { + VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(0, 0)).setEndLocation(Location.newInstance(10, 0)).build(); Pickup pickup = Pickup.Builder.newInstance("pickup").setLocation(Location.newInstance(10, 0)).build(); vrp = VehicleRoutingProblem.Builder.newInstance().addVehicle(vehicle).addJob(pickup).build(); route = VehicleRoute.emptyRoute(); maxDistanceMap = new HashMap<>(); maxDistanceMap.put(vehicle, 5d); - - MaxDistanceConstraint maxDistanceConstraint = - new MaxDistanceConstraint(new StateManager(vrp), traveledDistanceId, vrp.getTransportCosts(), maxDistanceMap); + MaxDistanceConstraint maxDistanceConstraint = new MaxDistanceConstraint(new StateManager(vrp), traveledDistanceId, vrp.getTransportCosts(), maxDistanceMap); JobInsertionContext context = new JobInsertionContext(route, pickup, vehicle, null, 0); - Assert.assertTrue(maxDistanceConstraint.fulfilled(context, - new Start(vehicle.getStartLocation(), 0, Double.MAX_VALUE), vrp.getActivities(pickup).get(0), - new End(vehicle.getEndLocation(), 0, Double.MAX_VALUE), 0).equals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED)); + Assertions.assertTrue(maxDistanceConstraint.fulfilled(context, new Start(vehicle.getStartLocation(), 0, Double.MAX_VALUE), vrp.getActivities(pickup).get(0), new End(vehicle.getEndLocation(), 0, Double.MAX_VALUE), 0).equals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED)); } /* @@ -132,36 +113,35 @@ public void whenEndLocationIsSet_constraintShouldWork() { vehicle2 (max distance): 180.0 */ @Test - public void insertNewInVehicleShouldFail() { - MaxDistanceConstraint maxDistanceConstraint = - new MaxDistanceConstraint(stateManager, traveledDistanceId, vrp.getTransportCosts(), maxDistanceMap); + @DisplayName("Insert New In Vehicle Should Fail") + void insertNewInVehicleShouldFail() { + MaxDistanceConstraint maxDistanceConstraint = new MaxDistanceConstraint(stateManager, traveledDistanceId, vrp.getTransportCosts(), maxDistanceMap); JobInsertionContext context = new JobInsertionContext(route, newDelivery, vehicle, null, 0); - Assert.assertTrue(maxDistanceConstraint.fulfilled(context, route.getStart(), newAct(), act(0), 0).equals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED)); - Assert.assertTrue(maxDistanceConstraint.fulfilled(context, act(0), newAct(), act(1), 0).equals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED)); - Assert.assertTrue(maxDistanceConstraint.fulfilled(context, act(1), newAct(), act(2), 0).equals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED)); - Assert.assertTrue(maxDistanceConstraint.fulfilled(context, act(2), newAct(), act(3), 0).equals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED)); - Assert.assertTrue(maxDistanceConstraint.fulfilled(context, act(3), newAct(), act(4), 0).equals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED)); - Assert.assertTrue(maxDistanceConstraint.fulfilled(context, act(4), newAct(), route.getEnd(), 0).equals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED)); + Assertions.assertTrue(maxDistanceConstraint.fulfilled(context, route.getStart(), newAct(), act(0), 0).equals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED)); + Assertions.assertTrue(maxDistanceConstraint.fulfilled(context, act(0), newAct(), act(1), 0).equals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED)); + Assertions.assertTrue(maxDistanceConstraint.fulfilled(context, act(1), newAct(), act(2), 0).equals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED)); + Assertions.assertTrue(maxDistanceConstraint.fulfilled(context, act(2), newAct(), act(3), 0).equals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED)); + Assertions.assertTrue(maxDistanceConstraint.fulfilled(context, act(3), newAct(), act(4), 0).equals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED)); + Assertions.assertTrue(maxDistanceConstraint.fulfilled(context, act(4), newAct(), route.getEnd(), 0).equals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED)); } - @Test - public void insertNewInVehicle2ShouldBeCorrect() { - //current distance vehicle2: 160 allowed: 200 - MaxDistanceConstraint maxDistanceConstraint = - new MaxDistanceConstraint(stateManager, traveledDistanceId, vrp.getTransportCosts(), maxDistanceMap); + @DisplayName("Insert New In Vehicle 2 Should Be Correct") + void insertNewInVehicle2ShouldBeCorrect() { + // current distance vehicle2: 160 allowed: 200 + MaxDistanceConstraint maxDistanceConstraint = new MaxDistanceConstraint(stateManager, traveledDistanceId, vrp.getTransportCosts(), maxDistanceMap); JobInsertionContext context = new JobInsertionContext(route, newDelivery, vehicle2, null, 0); - Assert.assertTrue(maxDistanceConstraint.fulfilled(context, route.getStart(), newAct(), act(0), 0).equals(HardActivityConstraint.ConstraintsStatus.FULFILLED)); - //additional distance: 20+35-15=40 - Assert.assertTrue(maxDistanceConstraint.fulfilled(context, act(0), newAct(), act(1), 0).equals(HardActivityConstraint.ConstraintsStatus.FULFILLED)); - //additional distance: 35+65-30=70 - Assert.assertTrue(maxDistanceConstraint.fulfilled(context, act(1), newAct(), act(2), 0).equals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED)); - //additional distance: 65+100-35 - Assert.assertTrue(maxDistanceConstraint.fulfilled(context, act(2), newAct(), act(3), 0).equals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED)); - //additional distance: 100+45-55 - Assert.assertTrue(maxDistanceConstraint.fulfilled(context, act(3), newAct(), act(4), 0).equals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED)); - //additional distance: 45+20-25 - Assert.assertTrue(maxDistanceConstraint.fulfilled(context, act(4), newAct(), route.getEnd(), 0).equals(HardActivityConstraint.ConstraintsStatus.FULFILLED)); + Assertions.assertTrue(maxDistanceConstraint.fulfilled(context, route.getStart(), newAct(), act(0), 0).equals(HardActivityConstraint.ConstraintsStatus.FULFILLED)); + // additional distance: 20+35-15=40 + Assertions.assertTrue(maxDistanceConstraint.fulfilled(context, act(0), newAct(), act(1), 0).equals(HardActivityConstraint.ConstraintsStatus.FULFILLED)); + // additional distance: 35+65-30=70 + Assertions.assertTrue(maxDistanceConstraint.fulfilled(context, act(1), newAct(), act(2), 0).equals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED)); + // additional distance: 65+100-35 + Assertions.assertTrue(maxDistanceConstraint.fulfilled(context, act(2), newAct(), act(3), 0).equals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED)); + // additional distance: 100+45-55 + Assertions.assertTrue(maxDistanceConstraint.fulfilled(context, act(3), newAct(), act(4), 0).equals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED)); + // additional distance: 45+20-25 + Assertions.assertTrue(maxDistanceConstraint.fulfilled(context, act(4), newAct(), route.getEnd(), 0).equals(HardActivityConstraint.ConstraintsStatus.FULFILLED)); } private TourActivity act(int i) { @@ -173,155 +153,122 @@ private TourActivity newAct() { } @Test - public void traveledDistanceShouldBeCorrect() { - Assert.assertEquals(20d, stateManager.getActivityState(route.getActivities().get(0), vehicle, traveledDistanceId, Double.class), 0.01); - Assert.assertEquals(35d, stateManager.getActivityState(route.getActivities().get(1), vehicle, traveledDistanceId, Double.class), 0.01); - Assert.assertEquals(65d, stateManager.getActivityState(route.getActivities().get(2), vehicle, traveledDistanceId, Double.class), 0.01); - Assert.assertEquals(100d, stateManager.getActivityState(route.getActivities().get(3), vehicle, traveledDistanceId, Double.class), 0.01); - Assert.assertEquals(155d, stateManager.getActivityState(route.getActivities().get(4), vehicle, traveledDistanceId, Double.class), 0.01); - + @DisplayName("Traveled Distance Should Be Correct") + void traveledDistanceShouldBeCorrect() { + Assertions.assertEquals(20d, stateManager.getActivityState(route.getActivities().get(0), vehicle, traveledDistanceId, Double.class), 0.01); + Assertions.assertEquals(35d, stateManager.getActivityState(route.getActivities().get(1), vehicle, traveledDistanceId, Double.class), 0.01); + Assertions.assertEquals(65d, stateManager.getActivityState(route.getActivities().get(2), vehicle, traveledDistanceId, Double.class), 0.01); + Assertions.assertEquals(100d, stateManager.getActivityState(route.getActivities().get(3), vehicle, traveledDistanceId, Double.class), 0.01); + Assertions.assertEquals(155d, stateManager.getActivityState(route.getActivities().get(4), vehicle, traveledDistanceId, Double.class), 0.01); } @Test - public void traveledDistanceWithVehicle2ShouldBeCorrect() { - Assert.assertEquals(0d, stateManager.getActivityState(route.getActivities().get(0), vehicle2, traveledDistanceId, Double.class), 0.01); - Assert.assertEquals(15d, stateManager.getActivityState(route.getActivities().get(1), vehicle2, traveledDistanceId, Double.class), 0.01); - Assert.assertEquals(45d, stateManager.getActivityState(route.getActivities().get(2), vehicle2, traveledDistanceId, Double.class), 0.01); - Assert.assertEquals(80d, stateManager.getActivityState(route.getActivities().get(3), vehicle2, traveledDistanceId, Double.class), 0.01); - Assert.assertEquals(135d, stateManager.getActivityState(route.getActivities().get(4), vehicle2, traveledDistanceId, Double.class), 0.01); - + @DisplayName("Traveled Distance With Vehicle 2 Should Be Correct") + void traveledDistanceWithVehicle2ShouldBeCorrect() { + Assertions.assertEquals(0d, stateManager.getActivityState(route.getActivities().get(0), vehicle2, traveledDistanceId, Double.class), 0.01); + Assertions.assertEquals(15d, stateManager.getActivityState(route.getActivities().get(1), vehicle2, traveledDistanceId, Double.class), 0.01); + Assertions.assertEquals(45d, stateManager.getActivityState(route.getActivities().get(2), vehicle2, traveledDistanceId, Double.class), 0.01); + Assertions.assertEquals(80d, stateManager.getActivityState(route.getActivities().get(3), vehicle2, traveledDistanceId, Double.class), 0.01); + Assertions.assertEquals(135d, stateManager.getActivityState(route.getActivities().get(4), vehicle2, traveledDistanceId, Double.class), 0.01); } @Test - public void distanceOfShipmentInRoute() { + @DisplayName("Distance Of Shipment In Route") + void distanceOfShipmentInRoute() { double traveledDistanceBeforePickup = stateManager.getActivityState(route.getActivities().get(2), vehicle, traveledDistanceId, Double.class); double traveledDistanceBeforeDelivery = stateManager.getActivityState(route.getActivities().get(4), vehicle, traveledDistanceId, Double.class); - Assert.assertEquals(90d, traveledDistanceBeforeDelivery - traveledDistanceBeforePickup, 0.01); + Assertions.assertEquals(90d, traveledDistanceBeforeDelivery - traveledDistanceBeforePickup, 0.01); } @Test - public void distanceOfShipmentInRouteVehicle2() { + @DisplayName("Distance Of Shipment In Route Vehicle 2") + void distanceOfShipmentInRouteVehicle2() { double traveledDistanceBeforePickup = stateManager.getActivityState(route.getActivities().get(2), vehicle2, traveledDistanceId, Double.class); double traveledDistanceBeforeDelivery = stateManager.getActivityState(route.getActivities().get(4), vehicle2, traveledDistanceId, Double.class); - Assert.assertEquals(90d, traveledDistanceBeforeDelivery - traveledDistanceBeforePickup, 0.01); + Assertions.assertEquals(90d, traveledDistanceBeforeDelivery - traveledDistanceBeforePickup, 0.01); } @Test - public void distanceOfPickupInRoute() { + @DisplayName("Distance Of Pickup In Route") + void distanceOfPickupInRoute() { double traveledDistanceBeforePickup = stateManager.getActivityState(route.getActivities().get(3), vehicle, traveledDistanceId, Double.class); double total = stateManager.getRouteState(route, vehicle, traveledDistanceId, Double.class); - Assert.assertEquals(100d, total - traveledDistanceBeforePickup, 0.01); + Assertions.assertEquals(100d, total - traveledDistanceBeforePickup, 0.01); } @Test - public void distanceOfPickupInRouteVehicle2() { + @DisplayName("Distance Of Pickup In Route Vehicle 2") + void distanceOfPickupInRouteVehicle2() { double traveledDistanceBeforePickup = stateManager.getActivityState(route.getActivities().get(3), vehicle2, traveledDistanceId, Double.class); double total = stateManager.getRouteState(route, vehicle2, traveledDistanceId, Double.class); - Assert.assertEquals(80d, total - traveledDistanceBeforePickup, 0.01); + Assertions.assertEquals(80d, total - traveledDistanceBeforePickup, 0.01); } @Test - public void distanceToTravelShouldBeCorrect() { + @DisplayName("Distance To Travel Should Be Correct") + void distanceToTravelShouldBeCorrect() { double total = stateManager.getRouteState(route, vehicle, traveledDistanceId, Double.class); - Assert.assertEquals(180d, total - stateManager.getActivityState(route.getActivities().get(0), vehicle, traveledDistanceId, Double.class), 0.01); - Assert.assertEquals(165d, total - stateManager.getActivityState(route.getActivities().get(1), vehicle, traveledDistanceId, Double.class), 0.01); - Assert.assertEquals(135d, total - stateManager.getActivityState(route.getActivities().get(2), vehicle, traveledDistanceId, Double.class), 0.01); - Assert.assertEquals(100d, total - stateManager.getActivityState(route.getActivities().get(3), vehicle, traveledDistanceId, Double.class), 0.01); - Assert.assertEquals(45d, total - stateManager.getActivityState(route.getActivities().get(4), vehicle, traveledDistanceId, Double.class), 0.01); - + Assertions.assertEquals(180d, total - stateManager.getActivityState(route.getActivities().get(0), vehicle, traveledDistanceId, Double.class), 0.01); + Assertions.assertEquals(165d, total - stateManager.getActivityState(route.getActivities().get(1), vehicle, traveledDistanceId, Double.class), 0.01); + Assertions.assertEquals(135d, total - stateManager.getActivityState(route.getActivities().get(2), vehicle, traveledDistanceId, Double.class), 0.01); + Assertions.assertEquals(100d, total - stateManager.getActivityState(route.getActivities().get(3), vehicle, traveledDistanceId, Double.class), 0.01); + Assertions.assertEquals(45d, total - stateManager.getActivityState(route.getActivities().get(4), vehicle, traveledDistanceId, Double.class), 0.01); } @Test - public void distanceToTravelShouldBeCorrectVehicle2() { + @DisplayName("Distance To Travel Should Be Correct Vehicle 2") + void distanceToTravelShouldBeCorrectVehicle2() { double total = stateManager.getRouteState(route, vehicle2, traveledDistanceId, Double.class); - Assert.assertEquals(160d, total - stateManager.getActivityState(route.getActivities().get(0), vehicle2, traveledDistanceId, Double.class), 0.01); - Assert.assertEquals(145d, total - stateManager.getActivityState(route.getActivities().get(1), vehicle2, traveledDistanceId, Double.class), 0.01); - Assert.assertEquals(115d, total - stateManager.getActivityState(route.getActivities().get(2), vehicle2, traveledDistanceId, Double.class), 0.01); - Assert.assertEquals(80d, total - stateManager.getActivityState(route.getActivities().get(3), vehicle2, traveledDistanceId, Double.class), 0.01); - Assert.assertEquals(25d, total - stateManager.getActivityState(route.getActivities().get(4), vehicle2, traveledDistanceId, Double.class), 0.01); - + Assertions.assertEquals(160d, total - stateManager.getActivityState(route.getActivities().get(0), vehicle2, traveledDistanceId, Double.class), 0.01); + Assertions.assertEquals(145d, total - stateManager.getActivityState(route.getActivities().get(1), vehicle2, traveledDistanceId, Double.class), 0.01); + Assertions.assertEquals(115d, total - stateManager.getActivityState(route.getActivities().get(2), vehicle2, traveledDistanceId, Double.class), 0.01); + Assertions.assertEquals(80d, total - stateManager.getActivityState(route.getActivities().get(3), vehicle2, traveledDistanceId, Double.class), 0.01); + Assertions.assertEquals(25d, total - stateManager.getActivityState(route.getActivities().get(4), vehicle2, traveledDistanceId, Double.class), 0.01); } @Test - public void whenAddingDeliverShipment_constraintShouldWork() { - Shipment shipment = Shipment.Builder.newInstance("s") - .setPickupLocation(Location.newInstance(0, 3)) - .setDeliveryLocation(Location.newInstance(4, 0)) - .build(); - VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v") - .setStartLocation(Location.newInstance(0, 0)) - .build(); - final VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance() - .addJob(shipment) - .addVehicle(vehicle) - .build(); + @DisplayName("When Adding Deliver Shipment _ constraint Should Work") + void whenAddingDeliverShipment_constraintShouldWork() { + Shipment shipment = Shipment.Builder.newInstance("s").setPickupLocation(Location.newInstance(0, 3)).setDeliveryLocation(Location.newInstance(4, 0)).build(); + VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(0, 0)).build(); + final VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(shipment).addVehicle(vehicle).build(); VehicleRoute route = VehicleRoute.emptyRoute(); JobInsertionContext context = new JobInsertionContext(route, shipment, vehicle, null, 0); context.getAssociatedActivities().add(vrp.getActivities(shipment).get(0)); context.getAssociatedActivities().add(vrp.getActivities(shipment).get(1)); maxDistanceMap = new HashMap<>(); maxDistanceMap.put(vehicle, 12d); - StateManager stateManager = new StateManager(vrp); - MaxDistanceConstraint maxDistanceConstraint = - new MaxDistanceConstraint(stateManager, traveledDistanceId, vrp.getTransportCosts(), maxDistanceMap); - Assert.assertTrue(maxDistanceConstraint.fulfilled(context, - new Start(vehicle.getStartLocation(), 0, Double.MAX_VALUE), - vrp.getActivities(shipment).get(0), - new End(vehicle.getEndLocation(), 0, Double.MAX_VALUE), - 0).equals(HardActivityConstraint.ConstraintsStatus.FULFILLED)); - + MaxDistanceConstraint maxDistanceConstraint = new MaxDistanceConstraint(stateManager, traveledDistanceId, vrp.getTransportCosts(), maxDistanceMap); + Assertions.assertTrue(maxDistanceConstraint.fulfilled(context, new Start(vehicle.getStartLocation(), 0, Double.MAX_VALUE), vrp.getActivities(shipment).get(0), new End(vehicle.getEndLocation(), 0, Double.MAX_VALUE), 0).equals(HardActivityConstraint.ConstraintsStatus.FULFILLED)); ActivityContext pickupContext = new ActivityContext(); pickupContext.setArrivalTime(3); pickupContext.setEndTime(3); pickupContext.setInsertionIndex(0); context.setRelatedActivityContext(pickupContext); - Assert.assertTrue(maxDistanceConstraint.fulfilled(context, - vrp.getActivities(shipment).get(0), - vrp.getActivities(shipment).get(1), - new End(vehicle.getEndLocation(), 0, Double.MAX_VALUE), - 3).equals(HardActivityConstraint.ConstraintsStatus.FULFILLED)); + Assertions.assertTrue(maxDistanceConstraint.fulfilled(context, vrp.getActivities(shipment).get(0), vrp.getActivities(shipment).get(1), new End(vehicle.getEndLocation(), 0, Double.MAX_VALUE), 3).equals(HardActivityConstraint.ConstraintsStatus.FULFILLED)); } @Test - public void whenAddingDeliverShipmentWithVehDiffStartEndLocs_constraintShouldWork() { - Shipment shipment = Shipment.Builder.newInstance("s") - .setPickupLocation(Location.newInstance(0, 1)) - .setDeliveryLocation(Location.newInstance(4, 1)) - .build(); - VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v") - .setStartLocation(Location.newInstance(0, 0)) - .setEndLocation(Location.newInstance(0, 4)) - .build(); - final VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance() - .addJob(shipment) - .addVehicle(vehicle) - .build(); + @DisplayName("When Adding Deliver Shipment With Veh Diff Start End Locs _ constraint Should Work") + void whenAddingDeliverShipmentWithVehDiffStartEndLocs_constraintShouldWork() { + Shipment shipment = Shipment.Builder.newInstance("s").setPickupLocation(Location.newInstance(0, 1)).setDeliveryLocation(Location.newInstance(4, 1)).build(); + VehicleImpl vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(0, 0)).setEndLocation(Location.newInstance(0, 4)).build(); + final VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().addJob(shipment).addVehicle(vehicle).build(); VehicleRoute route = VehicleRoute.emptyRoute(); JobInsertionContext context = new JobInsertionContext(route, shipment, vehicle, null, 0); context.getAssociatedActivities().add(vrp.getActivities(shipment).get(0)); context.getAssociatedActivities().add(vrp.getActivities(shipment).get(1)); maxDistanceMap = new HashMap<>(); maxDistanceMap.put(vehicle, 10d); - StateManager stateManager = new StateManager(vrp); - MaxDistanceConstraint maxDistanceConstraint = - new MaxDistanceConstraint(stateManager, traveledDistanceId, vrp.getTransportCosts(), maxDistanceMap); - Assert.assertTrue(maxDistanceConstraint.fulfilled(context, - new Start(vehicle.getStartLocation(), 0, Double.MAX_VALUE), - vrp.getActivities(shipment).get(0), - new End(vehicle.getEndLocation(), 0, Double.MAX_VALUE), - 0).equals(HardActivityConstraint.ConstraintsStatus.FULFILLED)); - + MaxDistanceConstraint maxDistanceConstraint = new MaxDistanceConstraint(stateManager, traveledDistanceId, vrp.getTransportCosts(), maxDistanceMap); + Assertions.assertTrue(maxDistanceConstraint.fulfilled(context, new Start(vehicle.getStartLocation(), 0, Double.MAX_VALUE), vrp.getActivities(shipment).get(0), new End(vehicle.getEndLocation(), 0, Double.MAX_VALUE), 0).equals(HardActivityConstraint.ConstraintsStatus.FULFILLED)); ActivityContext pickupContext = new ActivityContext(); pickupContext.setArrivalTime(1); pickupContext.setEndTime(1); pickupContext.setInsertionIndex(0); context.setRelatedActivityContext(pickupContext); - Assert.assertTrue(maxDistanceConstraint.fulfilled(context, - vrp.getActivities(shipment).get(0), - vrp.getActivities(shipment).get(1), - new End(vehicle.getEndLocation(), 0, Double.MAX_VALUE), - 1).equals(HardActivityConstraint.ConstraintsStatus.FULFILLED)); + Assertions.assertTrue(maxDistanceConstraint.fulfilled(context, vrp.getActivities(shipment).get(0), vrp.getActivities(shipment).get(1), new End(vehicle.getEndLocation(), 0, Double.MAX_VALUE), 1).equals(HardActivityConstraint.ConstraintsStatus.FULFILLED)); } } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/job/DeliveryTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/job/DeliveryTest.java index 3ee2dadc6..c3727e0f3 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/job/DeliveryTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/job/DeliveryTest.java @@ -18,118 +18,115 @@ package com.graphhopper.jsprit.core.problem.job; import com.graphhopper.jsprit.core.problem.Location; -import org.junit.Assert; -import org.junit.Test; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.HashMap; import java.util.Map; -import static org.junit.Assert.*; +import static org.junit.jupiter.api.Assertions.*; -public class DeliveryTest { +@DisplayName("Delivery Test") +class DeliveryTest { - @Test(expected = IllegalArgumentException.class) - public void whenNeitherLocationIdNorCoordIsSet_itThrowsException() { - Delivery.Builder.newInstance("p").build(); + @Test + @DisplayName("When Neither Location Id Nor Coord Is Set _ it Throws Exception") + void whenNeitherLocationIdNorCoordIsSet_itThrowsException() { + assertThrows(IllegalArgumentException.class, () -> { + Delivery.Builder.newInstance("p").build(); + }); } @Test - public void whenAddingTwoCapDimension_nuOfDimsShouldBeTwo() { - Delivery one = Delivery.Builder.newInstance("s").setLocation(Location.newInstance("foofoo")) - .addSizeDimension(0, 2) - .addSizeDimension(1, 4) - .build(); + @DisplayName("When Adding Two Cap Dimension _ nu Of Dims Should Be Two") + void whenAddingTwoCapDimension_nuOfDimsShouldBeTwo() { + Delivery one = Delivery.Builder.newInstance("s").setLocation(Location.newInstance("foofoo")).addSizeDimension(0, 2).addSizeDimension(1, 4).build(); assertEquals(2, one.getSize().getNuOfDimensions()); assertEquals(2, one.getSize().get(0)); assertEquals(4, one.getSize().get(1)); - } @Test - public void whenPickupIsBuiltWithoutSpecifyingCapacity_itShouldHvCapWithOneDimAndDimValOfZero() { - Delivery one = Delivery.Builder.newInstance("s").setLocation(Location.newInstance("foofoo")) - .build(); + @DisplayName("When Pickup Is Built Without Specifying Capacity _ it Should Hv Cap With One Dim And Dim Val Of Zero") + void whenPickupIsBuiltWithoutSpecifyingCapacity_itShouldHvCapWithOneDimAndDimValOfZero() { + Delivery one = Delivery.Builder.newInstance("s").setLocation(Location.newInstance("foofoo")).build(); assertEquals(1, one.getSize().getNuOfDimensions()); assertEquals(0, one.getSize().get(0)); } @Test - public void whenPickupIsBuiltWithConstructorWhereSizeIsSpecified_capacityShouldBeSetCorrectly() { - Delivery one = Delivery.Builder.newInstance("s").addSizeDimension(0, 1).setLocation(Location.newInstance("foofoo")) - .build(); + @DisplayName("When Pickup Is Built With Constructor Where Size Is Specified _ capacity Should Be Set Correctly") + void whenPickupIsBuiltWithConstructorWhereSizeIsSpecified_capacityShouldBeSetCorrectly() { + Delivery one = Delivery.Builder.newInstance("s").addSizeDimension(0, 1).setLocation(Location.newInstance("foofoo")).build(); assertEquals(1, one.getSize().getNuOfDimensions()); assertEquals(1, one.getSize().get(0)); } @Test - public void whenAddingSkills_theyShouldBeAddedCorrectly() { - Delivery s = Delivery.Builder.newInstance("s").setLocation(Location.newInstance("loc")) - .addRequiredSkill("drill").addRequiredSkill("screwdriver").build(); + @DisplayName("When Adding Skills _ they Should Be Added Correctly") + void whenAddingSkills_theyShouldBeAddedCorrectly() { + Delivery s = Delivery.Builder.newInstance("s").setLocation(Location.newInstance("loc")).addRequiredSkill("drill").addRequiredSkill("screwdriver").build(); assertTrue(s.getRequiredSkills().containsSkill("drill")); assertTrue(s.getRequiredSkills().containsSkill("ScrewDriver")); } @Test - public void whenAddingSkillsCaseSens_theyShouldBeAddedCorrectly() { - Delivery s = Delivery.Builder.newInstance("s").setLocation(Location.newInstance("loc")) - .addRequiredSkill("DriLl").addRequiredSkill("screwDriver").build(); + @DisplayName("When Adding Skills Case Sens _ they Should Be Added Correctly") + void whenAddingSkillsCaseSens_theyShouldBeAddedCorrectly() { + Delivery s = Delivery.Builder.newInstance("s").setLocation(Location.newInstance("loc")).addRequiredSkill("DriLl").addRequiredSkill("screwDriver").build(); assertTrue(s.getRequiredSkills().containsSkill("drill")); assertTrue(s.getRequiredSkills().containsSkill("drilL")); } @Test - public void whenAddingSkillsCaseSensV2_theyShouldBeAddedCorrectly() { - Delivery s = Delivery.Builder.newInstance("s").setLocation(Location.newInstance("loc")) - .addRequiredSkill("screwDriver").build(); + @DisplayName("When Adding Skills Case Sens V 2 _ they Should Be Added Correctly") + void whenAddingSkillsCaseSensV2_theyShouldBeAddedCorrectly() { + Delivery s = Delivery.Builder.newInstance("s").setLocation(Location.newInstance("loc")).addRequiredSkill("screwDriver").build(); assertFalse(s.getRequiredSkills().containsSkill("drill")); assertFalse(s.getRequiredSkills().containsSkill("drilL")); } @Test - public void nameShouldBeAssigned() { - Delivery s = Delivery.Builder.newInstance("s").setLocation(Location.newInstance("loc")) - .setName("name").build(); - assertEquals("name", s.getName()); + @DisplayName("Name Should Be Assigned") + void nameShouldBeAssigned() { + Delivery s = Delivery.Builder.newInstance("s").setLocation(Location.newInstance("loc")).setName("name").build(); + assertEquals(s.getName(), "name"); } @Test - public void whenSettingPriorities_itShouldBeSetCorrectly(){ - Delivery s = Delivery.Builder.newInstance("s").setLocation(Location.newInstance("loc")) - .setPriority(3).build(); - Assert.assertEquals(3, s.getPriority()); + @DisplayName("When Setting Priorities _ it Should Be Set Correctly") + void whenSettingPriorities_itShouldBeSetCorrectly() { + Delivery s = Delivery.Builder.newInstance("s").setLocation(Location.newInstance("loc")).setPriority(3).build(); + assertEquals(3, s.getPriority()); } @Test - public void whenNotSettingPriorities_defaultShouldBe(){ - Delivery s = Delivery.Builder.newInstance("s").setLocation(Location.newInstance("loc")) - .build(); - Assert.assertEquals(2, s.getPriority()); + @DisplayName("When Not Setting Priorities _ default Should Be") + void whenNotSettingPriorities_defaultShouldBe() { + Delivery s = Delivery.Builder.newInstance("s").setLocation(Location.newInstance("loc")).build(); + assertEquals(2, s.getPriority()); } @Test - public void whenAddingMaxTimeInVehicle_itShouldBeSet(){ - Delivery s = Delivery.Builder.newInstance("s").setLocation(Location.newInstance("loc")) - .setMaxTimeInVehicle(10) - .build(); - Assert.assertEquals(10, s.getMaxTimeInVehicle(),0.001); + @DisplayName("When Adding Max Time In Vehicle _ it Should Be Set") + void whenAddingMaxTimeInVehicle_itShouldBeSet() { + Delivery s = Delivery.Builder.newInstance("s").setLocation(Location.newInstance("loc")).setMaxTimeInVehicle(10).build(); + assertEquals(10, s.getMaxTimeInVehicle(), 0.001); } @Test - public void whenNotAddingMaxTimeInVehicle_itShouldBeDefault(){ - Delivery s = Delivery.Builder.newInstance("s").setLocation(Location.newInstance("loc")) - .build(); - Assert.assertEquals(Double.MAX_VALUE, s.getMaxTimeInVehicle(),0.001); + @DisplayName("When Not Adding Max Time In Vehicle _ it Should Be Default") + void whenNotAddingMaxTimeInVehicle_itShouldBeDefault() { + Delivery s = Delivery.Builder.newInstance("s").setLocation(Location.newInstance("loc")).build(); + assertEquals(Double.MAX_VALUE, s.getMaxTimeInVehicle(), 0.001); } - @Test - public void whenSettingUserData_itIsAssociatedWithTheJob() { - Delivery one = Delivery.Builder.newInstance("s").setLocation(Location.newInstance("loc")) - .setUserData(new HashMap()).build(); - Delivery two = Delivery.Builder.newInstance("s2").setLocation(Location.newInstance("loc")).setUserData(42) - .build(); + @DisplayName("When Setting User Data _ it Is Associated With The Job") + void whenSettingUserData_itIsAssociatedWithTheJob() { + Delivery one = Delivery.Builder.newInstance("s").setLocation(Location.newInstance("loc")).setUserData(new HashMap()).build(); + Delivery two = Delivery.Builder.newInstance("s2").setLocation(Location.newInstance("loc")).setUserData(42).build(); Delivery three = Delivery.Builder.newInstance("s3").setLocation(Location.newInstance("loc")).build(); - assertTrue(one.getUserData() instanceof Map); assertEquals(42, two.getUserData()); assertNull(three.getUserData()); diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/job/PickupTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/job/PickupTest.java index b480b5296..238ed36ef 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/job/PickupTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/job/PickupTest.java @@ -18,120 +18,119 @@ package com.graphhopper.jsprit.core.problem.job; import com.graphhopper.jsprit.core.problem.Location; -import org.junit.Assert; -import org.junit.Test; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.HashMap; import java.util.Map; -import static org.junit.Assert.*; +import static org.junit.jupiter.api.Assertions.*; -public class PickupTest { +@DisplayName("Pickup Test") +class PickupTest { - @Test(expected = IllegalArgumentException.class) - public void whenNeitherLocationIdNorCoordIsSet_itThrowsException() { - Pickup.Builder.newInstance("p").build(); + @Test + @DisplayName("When Neither Location Id Nor Coord Is Set _ it Throws Exception") + void whenNeitherLocationIdNorCoordIsSet_itThrowsException() { + assertThrows(IllegalArgumentException.class, () -> { + Pickup.Builder.newInstance("p").build(); + }); } @Test - public void whenAddingTwoCapDimension_nuOfDimsShouldBeTwo() { - Pickup one = Pickup.Builder.newInstance("s").setLocation(Location.newInstance("foofoo")) - .addSizeDimension(0, 2) - .addSizeDimension(1, 4) - .build(); + @DisplayName("When Adding Two Cap Dimension _ nu Of Dims Should Be Two") + void whenAddingTwoCapDimension_nuOfDimsShouldBeTwo() { + Pickup one = Pickup.Builder.newInstance("s").setLocation(Location.newInstance("foofoo")).addSizeDimension(0, 2).addSizeDimension(1, 4).build(); assertEquals(2, one.getSize().getNuOfDimensions()); assertEquals(2, one.getSize().get(0)); assertEquals(4, one.getSize().get(1)); - } @Test - public void whenPickupIsBuiltWithoutSpecifyingCapacity_itShouldHvCapWithOneDimAndDimValOfZero() { - Pickup one = Pickup.Builder.newInstance("s").setLocation(Location.newInstance("foofoo")) - .build(); + @DisplayName("When Pickup Is Built Without Specifying Capacity _ it Should Hv Cap With One Dim And Dim Val Of Zero") + void whenPickupIsBuiltWithoutSpecifyingCapacity_itShouldHvCapWithOneDimAndDimValOfZero() { + Pickup one = Pickup.Builder.newInstance("s").setLocation(Location.newInstance("foofoo")).build(); assertEquals(1, one.getSize().getNuOfDimensions()); assertEquals(0, one.getSize().get(0)); } @Test - public void whenPickupIsBuiltWithConstructorWhereSizeIsSpecified_capacityShouldBeSetCorrectly() { - Pickup one = Pickup.Builder.newInstance("s").addSizeDimension(0, 1).setLocation(Location.newInstance("foofoo")) - .build(); + @DisplayName("When Pickup Is Built With Constructor Where Size Is Specified _ capacity Should Be Set Correctly") + void whenPickupIsBuiltWithConstructorWhereSizeIsSpecified_capacityShouldBeSetCorrectly() { + Pickup one = Pickup.Builder.newInstance("s").addSizeDimension(0, 1).setLocation(Location.newInstance("foofoo")).build(); assertEquals(1, one.getSize().getNuOfDimensions()); assertEquals(1, one.getSize().get(0)); } @Test - public void whenAddingSkills_theyShouldBeAddedCorrectly() { - Pickup s = Pickup.Builder.newInstance("s").setLocation(Location.newInstance("loc")) - .addRequiredSkill("drill").addRequiredSkill("screwdriver").build(); + @DisplayName("When Adding Skills _ they Should Be Added Correctly") + void whenAddingSkills_theyShouldBeAddedCorrectly() { + Pickup s = Pickup.Builder.newInstance("s").setLocation(Location.newInstance("loc")).addRequiredSkill("drill").addRequiredSkill("screwdriver").build(); assertTrue(s.getRequiredSkills().containsSkill("drill")); assertTrue(s.getRequiredSkills().containsSkill("drill")); assertTrue(s.getRequiredSkills().containsSkill("ScrewDriver")); } @Test - public void whenAddingSkillsCaseSens_theyShouldBeAddedCorrectly() { - Pickup s = Pickup.Builder.newInstance("s").setLocation(Location.newInstance("loc")) - .addRequiredSkill("DriLl").addRequiredSkill("screwDriver").build(); + @DisplayName("When Adding Skills Case Sens _ they Should Be Added Correctly") + void whenAddingSkillsCaseSens_theyShouldBeAddedCorrectly() { + Pickup s = Pickup.Builder.newInstance("s").setLocation(Location.newInstance("loc")).addRequiredSkill("DriLl").addRequiredSkill("screwDriver").build(); assertTrue(s.getRequiredSkills().containsSkill("drill")); assertTrue(s.getRequiredSkills().containsSkill("drilL")); } @Test - public void whenAddingSkillsCaseSensV2_theyShouldBeAddedCorrectly() { - Pickup s = Pickup.Builder.newInstance("s").setLocation(Location.newInstance("loc")) - .addRequiredSkill("screwDriver").build(); + @DisplayName("When Adding Skills Case Sens V 2 _ they Should Be Added Correctly") + void whenAddingSkillsCaseSensV2_theyShouldBeAddedCorrectly() { + Pickup s = Pickup.Builder.newInstance("s").setLocation(Location.newInstance("loc")).addRequiredSkill("screwDriver").build(); assertFalse(s.getRequiredSkills().containsSkill("drill")); assertFalse(s.getRequiredSkills().containsSkill("drilL")); } @Test - public void nameShouldBeAssigned() { - Pickup s = Pickup.Builder.newInstance("s").setLocation(Location.newInstance("loc")) - .setName("name").build(); - assertEquals("name", s.getName()); + @DisplayName("Name Should Be Assigned") + void nameShouldBeAssigned() { + Pickup s = Pickup.Builder.newInstance("s").setLocation(Location.newInstance("loc")).setName("name").build(); + assertEquals(s.getName(), "name"); } - @Test - public void whenSettingPriorities_itShouldBeSetCorrectly(){ - Pickup s = Pickup.Builder.newInstance("s").setLocation(Location.newInstance("loc")) - .setPriority(3).build(); - Assert.assertEquals(3, s.getPriority()); + @DisplayName("When Setting Priorities _ it Should Be Set Correctly") + void whenSettingPriorities_itShouldBeSetCorrectly() { + Pickup s = Pickup.Builder.newInstance("s").setLocation(Location.newInstance("loc")).setPriority(3).build(); + assertEquals(3, s.getPriority()); } @Test - public void whenNotSettingPriorities_defaultShouldBe(){ - Pickup s = Pickup.Builder.newInstance("s").setLocation(Location.newInstance("loc")) - .build(); - Assert.assertEquals(2, s.getPriority()); + @DisplayName("When Not Setting Priorities _ default Should Be") + void whenNotSettingPriorities_defaultShouldBe() { + Pickup s = Pickup.Builder.newInstance("s").setLocation(Location.newInstance("loc")).build(); + assertEquals(2, s.getPriority()); } @Test - public void whenSettingUserData_itIsAssociatedWithTheJob() { - Pickup one = Pickup.Builder.newInstance("s").setLocation(Location.newInstance("loc")) - .setUserData(new HashMap()).build(); + @DisplayName("When Setting User Data _ it Is Associated With The Job") + void whenSettingUserData_itIsAssociatedWithTheJob() { + Pickup one = Pickup.Builder.newInstance("s").setLocation(Location.newInstance("loc")).setUserData(new HashMap()).build(); Pickup two = Pickup.Builder.newInstance("s2").setLocation(Location.newInstance("loc")).setUserData(42).build(); Pickup three = Pickup.Builder.newInstance("s3").setLocation(Location.newInstance("loc")).build(); - assertTrue(one.getUserData() instanceof Map); assertEquals(42, two.getUserData()); assertNull(three.getUserData()); } - @Test(expected = UnsupportedOperationException.class) - public void whenAddingMaxTimeInVehicle_itShouldThrowEx(){ - Pickup s = Pickup.Builder.newInstance("s").setLocation(Location.newInstance("loc")) - .setMaxTimeInVehicle(10) - .build(); + @Test + @DisplayName("When Adding Max Time In Vehicle _ it Should Throw Ex") + void whenAddingMaxTimeInVehicle_itShouldThrowEx() { + assertThrows(UnsupportedOperationException.class, () -> { + Pickup s = Pickup.Builder.newInstance("s").setLocation(Location.newInstance("loc")).setMaxTimeInVehicle(10).build(); + }); } @Test - public void whenNotAddingMaxTimeInVehicle_itShouldBeDefault(){ - Pickup s = Pickup.Builder.newInstance("s").setLocation(Location.newInstance("loc")) - .build(); - Assert.assertEquals(Double.MAX_VALUE, s.getMaxTimeInVehicle(),0.001); + @DisplayName("When Not Adding Max Time In Vehicle _ it Should Be Default") + void whenNotAddingMaxTimeInVehicle_itShouldBeDefault() { + Pickup s = Pickup.Builder.newInstance("s").setLocation(Location.newInstance("loc")).build(); + assertEquals(Double.MAX_VALUE, s.getMaxTimeInVehicle(), 0.001); } - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/job/ServiceTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/job/ServiceTest.java index 2a1e4960b..ecb3ba6d5 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/job/ServiceTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/job/ServiceTest.java @@ -19,297 +19,307 @@ import com.graphhopper.jsprit.core.problem.Location; import com.graphhopper.jsprit.core.problem.solution.route.activity.TimeWindow; -import org.junit.Assert; -import org.junit.Test; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; +import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.Is.is; import static org.hamcrest.core.IsCollectionContaining.hasItem; -import static org.junit.Assert.*; +import static org.junit.jupiter.api.Assertions.*; -public class ServiceTest { +@DisplayName("Service Test") +class ServiceTest { @Test - public void whenTwoServicesHaveTheSameId_theirReferencesShouldBeUnEqual() { + @DisplayName("When Two Services Have The Same Id _ their References Should Be Un Equal") + void whenTwoServicesHaveTheSameId_theirReferencesShouldBeUnEqual() { Service one = Service.Builder.newInstance("service").addSizeDimension(0, 10).setLocation(Location.newInstance("foo")).build(); Service two = Service.Builder.newInstance("service").addSizeDimension(0, 10).setLocation(Location.newInstance("fo")).build(); - assertTrue(one != two); } @Test - public void whenTwoServicesHaveTheSameId_theyShouldBeEqual() { + @DisplayName("When Two Services Have The Same Id _ they Should Be Equal") + void whenTwoServicesHaveTheSameId_theyShouldBeEqual() { Service one = Service.Builder.newInstance("service").addSizeDimension(0, 10).setLocation(Location.newInstance("foo")).build(); Service two = Service.Builder.newInstance("service").addSizeDimension(0, 10).setLocation(Location.newInstance("fo")).build(); - assertTrue(one.equals(two)); } @Test - public void noName() { + @DisplayName("No Name") + void noName() { Set serviceSet = new HashSet(); Service one = Service.Builder.newInstance("service").addSizeDimension(0, 10).setLocation(Location.newInstance("foo")).build(); Service two = Service.Builder.newInstance("service").addSizeDimension(0, 10).setLocation(Location.newInstance("fo")).build(); serviceSet.add(one); - // assertTrue(serviceSet.contains(two)); + // assertTrue(serviceSet.contains(two)); serviceSet.remove(two); assertTrue(serviceSet.isEmpty()); } - @Test(expected = IllegalArgumentException.class) - public void whenCapacityDimValueIsNegative_throwIllegalStateExpception() { - @SuppressWarnings("unused") - Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("foo")).addSizeDimension(0, -10).build(); + @Test + @DisplayName("When Capacity Dim Value Is Negative _ throw Illegal State Expception") + void whenCapacityDimValueIsNegative_throwIllegalStateExpception() { + assertThrows(IllegalArgumentException.class, () -> { + @SuppressWarnings("unused") + Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("foo")).addSizeDimension(0, -10).build(); + }); } @Test - public void whenAddingTwoCapDimension_nuOfDimsShouldBeTwo() { - Service one = Service.Builder.newInstance("s").setLocation(Location.newInstance("foofoo")) - .addSizeDimension(0, 2) - .addSizeDimension(1, 4) - .build(); + @DisplayName("When Adding Two Cap Dimension _ nu Of Dims Should Be Two") + void whenAddingTwoCapDimension_nuOfDimsShouldBeTwo() { + Service one = Service.Builder.newInstance("s").setLocation(Location.newInstance("foofoo")).addSizeDimension(0, 2).addSizeDimension(1, 4).build(); assertEquals(2, one.getSize().getNuOfDimensions()); } @Test - public void whenShipmentIsBuiltWithoutSpecifyingCapacity_itShouldHvCapWithOneDimAndDimValOfZero() { - Service one = Service.Builder.newInstance("s").setLocation(Location.newInstance("foofoo")) - .build(); + @DisplayName("When Shipment Is Built Without Specifying Capacity _ it Should Hv Cap With One Dim And Dim Val Of Zero") + void whenShipmentIsBuiltWithoutSpecifyingCapacity_itShouldHvCapWithOneDimAndDimValOfZero() { + Service one = Service.Builder.newInstance("s").setLocation(Location.newInstance("foofoo")).build(); assertEquals(1, one.getSize().getNuOfDimensions()); assertEquals(0, one.getSize().get(0)); } @Test - public void whenShipmentIsBuiltWithConstructorWhereSizeIsSpecified_capacityShouldBeSetCorrectly() { - Service one = Service.Builder.newInstance("s").addSizeDimension(0, 1).setLocation(Location.newInstance("foofoo")) - .build(); + @DisplayName("When Shipment Is Built With Constructor Where Size Is Specified _ capacity Should Be Set Correctly") + void whenShipmentIsBuiltWithConstructorWhereSizeIsSpecified_capacityShouldBeSetCorrectly() { + Service one = Service.Builder.newInstance("s").addSizeDimension(0, 1).setLocation(Location.newInstance("foofoo")).build(); assertEquals(1, one.getSize().getNuOfDimensions()); assertEquals(1, one.getSize().get(0)); } @Test - public void whenCallingForNewInstanceOfBuilder_itShouldReturnBuilderCorrectly() { + @DisplayName("When Calling For New Instance Of Builder _ it Should Return Builder Correctly") + void whenCallingForNewInstanceOfBuilder_itShouldReturnBuilderCorrectly() { Service.Builder builder = Service.Builder.newInstance("s"); assertNotNull(builder); } @Test - public void whenSettingNoType_itShouldReturn_service() { + @DisplayName("When Setting No Type _ it Should Return _ service") + void whenSettingNoType_itShouldReturn_service() { Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")).build(); - assertEquals("service", s.getType()); + assertEquals(s.getType(), "service"); } @Test - public void whenSettingLocation_itShouldBeSetCorrectly() { + @DisplayName("When Setting Location _ it Should Be Set Correctly") + void whenSettingLocation_itShouldBeSetCorrectly() { Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")).build(); - assertEquals("loc", s.getLocation().getId()); - assertEquals("loc", s.getLocation().getId()); + assertEquals(s.getLocation().getId(), "loc"); + assertEquals(s.getLocation().getId(), "loc"); } @Test - public void whenSettingLocation_itShouldWork() { + @DisplayName("When Setting Location _ it Should Work") + void whenSettingLocation_itShouldWork() { Service s = Service.Builder.newInstance("s").setLocation(Location.Builder.newInstance().setId("loc").build()).build(); - assertEquals("loc", s.getLocation().getId()); - assertEquals("loc", s.getLocation().getId()); + assertEquals(s.getLocation().getId(), "loc"); + assertEquals(s.getLocation().getId(), "loc"); } - @Test - public void whenSettingLocationCoord_itShouldBeSetCorrectly() { + @DisplayName("When Setting Location Coord _ it Should Be Set Correctly") + void whenSettingLocationCoord_itShouldBeSetCorrectly() { Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance(1, 2)).build(); assertEquals(1.0, s.getLocation().getCoordinate().getX(), 0.01); assertEquals(2.0, s.getLocation().getCoordinate().getY(), 0.01); - assertEquals(1.0,s.getLocation().getCoordinate().getX(),0.01); - assertEquals(2.0,s.getLocation().getCoordinate().getY(),0.01); + assertEquals(1.0, s.getLocation().getCoordinate().getX(), 0.01); + assertEquals(2.0, s.getLocation().getCoordinate().getY(), 0.01); } -// @Test(expected = IllegalArgumentException.class) -// public void whenSettingNeitherLocationIdNorCoord_throwsException() { -// @SuppressWarnings("unused") -// Service s = Service.Builder.newInstance("s").build(); -// } - - @Test(expected = IllegalArgumentException.class) - public void whenServiceTimeSmallerZero_throwIllegalStateException() { - @SuppressWarnings("unused") - Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")).setServiceTime(-1).build(); + // @Test(expected = IllegalArgumentException.class) + // public void whenSettingNeitherLocationIdNorCoord_throwsException() { + // @SuppressWarnings("unused") + // Service s = Service.Builder.newInstance("s").build(); + // } + @Test + @DisplayName("When Service Time Smaller Zero _ throw Illegal State Exception") + void whenServiceTimeSmallerZero_throwIllegalStateException() { + assertThrows(IllegalArgumentException.class, () -> { + @SuppressWarnings("unused") + Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")).setServiceTime(-1).build(); + }); } @Test - public void whenSettingServiceTime_itShouldBeSetCorrectly() { + @DisplayName("When Setting Service Time _ it Should Be Set Correctly") + void whenSettingServiceTime_itShouldBeSetCorrectly() { Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")).setServiceTime(1).build(); assertEquals(1.0, s.getServiceDuration(), 0.01); } - @Test(expected = IllegalArgumentException.class) - public void whenTimeWindowIsNull_throwException() { - @SuppressWarnings("unused") - Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")).setTimeWindow(null).build(); + @Test + @DisplayName("When Time Window Is Null _ throw Exception") + void whenTimeWindowIsNull_throwException() { + assertThrows(IllegalArgumentException.class, () -> { + @SuppressWarnings("unused") + Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")).setTimeWindow(null).build(); + }); } @Test - public void whenSettingTimeWindow_itShouldBeSetCorrectly() { + @DisplayName("When Setting Time Window _ it Should Be Set Correctly") + void whenSettingTimeWindow_itShouldBeSetCorrectly() { Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")).setTimeWindow(TimeWindow.newInstance(1.0, 2.0)).build(); assertEquals(1.0, s.getTimeWindow().getStart(), 0.01); assertEquals(2.0, s.getTimeWindow().getEnd(), 0.01); } @Test - public void whenAddingSkills_theyShouldBeAddedCorrectly() { - Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")) - .addRequiredSkill("drill").addRequiredSkill("screwdriver").build(); + @DisplayName("When Adding Skills _ they Should Be Added Correctly") + void whenAddingSkills_theyShouldBeAddedCorrectly() { + Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")).addRequiredSkill("drill").addRequiredSkill("screwdriver").build(); assertTrue(s.getRequiredSkills().containsSkill("drill")); assertTrue(s.getRequiredSkills().containsSkill("drill")); assertTrue(s.getRequiredSkills().containsSkill("ScrewDriver")); } @Test - public void whenAddingSkillsCaseSens_theyShouldBeAddedCorrectly() { - Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")) - .addRequiredSkill("DriLl").addRequiredSkill("screwDriver").build(); + @DisplayName("When Adding Skills Case Sens _ they Should Be Added Correctly") + void whenAddingSkillsCaseSens_theyShouldBeAddedCorrectly() { + Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")).addRequiredSkill("DriLl").addRequiredSkill("screwDriver").build(); assertTrue(s.getRequiredSkills().containsSkill("drill")); assertTrue(s.getRequiredSkills().containsSkill("drilL")); } @Test - public void whenAddingSeveralTimeWindows_itShouldBeSetCorrectly(){ + @DisplayName("When Adding Several Time Windows _ it Should Be Set Correctly") + void whenAddingSeveralTimeWindows_itShouldBeSetCorrectly() { TimeWindow tw1 = TimeWindow.newInstance(1.0, 2.0); TimeWindow tw2 = TimeWindow.newInstance(3.0, 5.0); - Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")) - .addTimeWindow(tw1) - .addTimeWindow(tw2) - .build(); + Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")).addTimeWindow(tw1).addTimeWindow(tw2).build(); assertEquals(2, s.getTimeWindows().size()); - assertThat(s.getTimeWindows(),hasItem(is(tw1))); - assertThat(s.getTimeWindows(),hasItem(is(tw2))); + assertThat(s.getTimeWindows(), hasItem(is(tw1))); + assertThat(s.getTimeWindows(), hasItem(is(tw2))); } @Test - public void whenAddingTimeWindow_itShouldBeSetCorrectly(){ - Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")) - .addTimeWindow(TimeWindow.newInstance(1.0, 2.0)).build(); + @DisplayName("When Adding Time Window _ it Should Be Set Correctly") + void whenAddingTimeWindow_itShouldBeSetCorrectly() { + Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")).addTimeWindow(TimeWindow.newInstance(1.0, 2.0)).build(); assertEquals(1.0, s.getTimeWindow().getStart(), 0.01); assertEquals(2.0, s.getTimeWindow().getEnd(), 0.01); } - - - @Test - public void whenAddingSkillsCaseSensV2_theyShouldBeAddedCorrectly() { - Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")) - .addRequiredSkill("screwDriver").build(); + @DisplayName("When Adding Skills Case Sens V 2 _ they Should Be Added Correctly") + void whenAddingSkillsCaseSensV2_theyShouldBeAddedCorrectly() { + Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")).addRequiredSkill("screwDriver").build(); assertFalse(s.getRequiredSkills().containsSkill("drill")); assertFalse(s.getRequiredSkills().containsSkill("drilL")); } @Test - public void nameShouldBeAssigned() { - Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")) - .setName("name").build(); - assertEquals("name", s.getName()); + @DisplayName("Name Should Be Assigned") + void nameShouldBeAssigned() { + Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")).setName("name").build(); + assertEquals(s.getName(), "name"); } @Test - public void shouldKnowMultipleTimeWindows() { - Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")) - .addTimeWindow(TimeWindow.newInstance(0., 10.)).addTimeWindow(TimeWindow.newInstance(20., 30.)) - .setName("name").build(); + @DisplayName("Should Know Multiple Time Windows") + void shouldKnowMultipleTimeWindows() { + Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")).addTimeWindow(TimeWindow.newInstance(0., 10.)).addTimeWindow(TimeWindow.newInstance(20., 30.)).setName("name").build(); assertEquals(2, s.getTimeWindows().size()); } - @Test(expected = IllegalArgumentException.class) - public void whenMultipleTWOverlap_throwEx() { - Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")) - .addTimeWindow(TimeWindow.newInstance(0., 10.)) - .addTimeWindow(TimeWindow.newInstance(5., 30.)) - .setName("name").build(); + @Test + @DisplayName("When Multiple TW Overlap _ throw Ex") + void whenMultipleTWOverlap_throwEx() { + assertThrows(IllegalArgumentException.class, () -> { + Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")).addTimeWindow(TimeWindow.newInstance(0., 10.)).addTimeWindow(TimeWindow.newInstance(5., 30.)).setName("name").build(); + }); } - @Test(expected = IllegalArgumentException.class) - public void whenMultipleTWOverlap2_throwEx() { - Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")) - .addTimeWindow(TimeWindow.newInstance(20., 30.)) - .addTimeWindow(TimeWindow.newInstance(0., 25.)) - .setName("name").build(); + @Test + @DisplayName("When Multiple TW Overlap 2 _ throw Ex") + void whenMultipleTWOverlap2_throwEx() { + assertThrows(IllegalArgumentException.class, () -> { + Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")).addTimeWindow(TimeWindow.newInstance(20., 30.)).addTimeWindow(TimeWindow.newInstance(0., 25.)).setName("name").build(); + }); } @Test - public void whenSettingPriorities_itShouldBeSetCorrectly(){ - Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")) - .setPriority(1).build(); - Assert.assertEquals(1, s.getPriority()); + @DisplayName("When Setting Priorities _ it Should Be Set Correctly") + void whenSettingPriorities_itShouldBeSetCorrectly() { + Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")).setPriority(1).build(); + assertEquals(1, s.getPriority()); } @Test - public void whenSettingPriorities_itShouldBeSetCorrectly2(){ - Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")) - .setPriority(3).build(); - Assert.assertEquals(3, s.getPriority()); + @DisplayName("When Setting Priorities _ it Should Be Set Correctly 2") + void whenSettingPriorities_itShouldBeSetCorrectly2() { + Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")).setPriority(3).build(); + assertEquals(3, s.getPriority()); } @Test - public void whenSettingPriorities_itShouldBeSetCorrectly3() { - Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")) - .setPriority(10).build(); - Assert.assertEquals(10, s.getPriority()); + @DisplayName("When Setting Priorities _ it Should Be Set Correctly 3") + void whenSettingPriorities_itShouldBeSetCorrectly3() { + Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")).setPriority(10).build(); + assertEquals(10, s.getPriority()); } @Test - public void whenNotSettingPriorities_defaultShouldBe2(){ - Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")) - .build(); - Assert.assertEquals(2, s.getPriority()); + @DisplayName("When Not Setting Priorities _ default Should Be 2") + void whenNotSettingPriorities_defaultShouldBe2() { + Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")).build(); + assertEquals(2, s.getPriority()); } - @Test(expected = IllegalArgumentException.class) - public void whenSettingIncorrectPriorities_itShouldThrowException(){ - Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")) - .setPriority(30).build(); - + @Test + @DisplayName("When Setting Incorrect Priorities _ it Should Throw Exception") + void whenSettingIncorrectPriorities_itShouldThrowException() { + assertThrows(IllegalArgumentException.class, () -> { + Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")).setPriority(30).build(); + }); } - @Test(expected = IllegalArgumentException.class) - public void whenSettingIncorrectPriorities_itShouldThrowException2(){ - Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")) - .setPriority(0).build(); - + @Test + @DisplayName("When Setting Incorrect Priorities _ it Should Throw Exception 2") + void whenSettingIncorrectPriorities_itShouldThrowException2() { + assertThrows(IllegalArgumentException.class, () -> { + Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")).setPriority(0).build(); + }); } - @Test(expected = UnsupportedOperationException.class) - public void whenAddingMaxTimeInVehicle_itShouldThrowEx(){ - Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")) - .setMaxTimeInVehicle(10) - .build(); + @Test + @DisplayName("When Adding Max Time In Vehicle _ it Should Throw Ex") + void whenAddingMaxTimeInVehicle_itShouldThrowEx() { + assertThrows(UnsupportedOperationException.class, () -> { + Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")).setMaxTimeInVehicle(10).build(); + }); } @Test - public void whenNotAddingMaxTimeInVehicle_itShouldBeDefault(){ - Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")) - .build(); - Assert.assertEquals(Double.MAX_VALUE, s.getMaxTimeInVehicle(),0.001); + @DisplayName("When Not Adding Max Time In Vehicle _ it Should Be Default") + void whenNotAddingMaxTimeInVehicle_itShouldBeDefault() { + Service s = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")).build(); + assertEquals(Double.MAX_VALUE, s.getMaxTimeInVehicle(), 0.001); } - @Test - public void whenSettingUserData_itIsAssociatedWithTheJob() { - Service one = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")) - .setUserData(new HashMap()).build(); - Service two = Service.Builder.newInstance("s2").setLocation(Location.newInstance("loc")).setUserData(42) - .build(); + @DisplayName("When Setting User Data _ it Is Associated With The Job") + void whenSettingUserData_itIsAssociatedWithTheJob() { + Service one = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")).setUserData(new HashMap()).build(); + Service two = Service.Builder.newInstance("s2").setLocation(Location.newInstance("loc")).setUserData(42).build(); Service three = Service.Builder.newInstance("s3").setLocation(Location.newInstance("loc")).build(); - assertTrue(one.getUserData() instanceof Map); assertEquals(42, two.getUserData()); assertNull(three.getUserData()); } @Test - public void testServiceActivity() { + @DisplayName("Test Service Activity") + void testServiceActivity() { Service one = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")).build(); assertEquals(1, one.getActivities().size()); assertEquals(Activity.Type.SERVICE, one.getActivities().get(0).getActivityType()); diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/job/ShipmentTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/job/ShipmentTest.java index 214381611..aacaf12bd 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/job/ShipmentTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/job/ShipmentTest.java @@ -21,125 +21,134 @@ import com.graphhopper.jsprit.core.problem.solution.route.activity.TimeWindow; import com.graphhopper.jsprit.core.util.Coordinate; import com.graphhopper.jsprit.core.util.TestUtils; -import org.junit.Assert; -import org.junit.Test; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.HashMap; import java.util.Map; +import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.Is.is; import static org.hamcrest.core.IsCollectionContaining.hasItem; -import static org.junit.Assert.*; +import static org.junit.jupiter.api.Assertions.*; -public class ShipmentTest { +@DisplayName("Shipment Test") +class ShipmentTest { @Test - public void whenTwoShipmentsHaveTheSameId_theyReferencesShouldBeUnEqual() { - Shipment one = Shipment.Builder.newInstance("s").addSizeDimension(0, 10).setPickupLocation(Location.Builder.newInstance().setId("foo").build()). - setDeliveryLocation(TestUtils.loc("foofoo")).setPickupServiceTime(10).setDeliveryServiceTime(20).build(); - Shipment two = Shipment.Builder.newInstance("s").addSizeDimension(0, 10).setPickupLocation(Location.Builder.newInstance().setId("foo").build()). - setDeliveryLocation(TestUtils.loc("foofoo")).setPickupServiceTime(10).setDeliveryServiceTime(20).build(); - + @DisplayName("When Two Shipments Have The Same Id _ they References Should Be Un Equal") + void whenTwoShipmentsHaveTheSameId_theyReferencesShouldBeUnEqual() { + Shipment one = Shipment.Builder.newInstance("s").addSizeDimension(0, 10).setPickupLocation(Location.Builder.newInstance().setId("foo").build()).setDeliveryLocation(TestUtils.loc("foofoo")).setPickupServiceTime(10).setDeliveryServiceTime(20).build(); + Shipment two = Shipment.Builder.newInstance("s").addSizeDimension(0, 10).setPickupLocation(Location.Builder.newInstance().setId("foo").build()).setDeliveryLocation(TestUtils.loc("foofoo")).setPickupServiceTime(10).setDeliveryServiceTime(20).build(); assertTrue(one != two); } @Test - public void whenTwoShipmentsHaveTheSameId_theyShouldBeEqual() { - Shipment one = Shipment.Builder.newInstance("s").addSizeDimension(0, 10).setPickupLocation(Location.Builder.newInstance().setId("foo").build()). - setDeliveryLocation(TestUtils.loc("foofoo")).setPickupServiceTime(10).setDeliveryServiceTime(20).build(); - Shipment two = Shipment.Builder.newInstance("s").addSizeDimension(0, 10).setPickupLocation(Location.Builder.newInstance().setId("foo").build()). - setDeliveryLocation(TestUtils.loc("foofoo")).setPickupServiceTime(10).setDeliveryServiceTime(20).build(); - + @DisplayName("When Two Shipments Have The Same Id _ they Should Be Equal") + void whenTwoShipmentsHaveTheSameId_theyShouldBeEqual() { + Shipment one = Shipment.Builder.newInstance("s").addSizeDimension(0, 10).setPickupLocation(Location.Builder.newInstance().setId("foo").build()).setDeliveryLocation(TestUtils.loc("foofoo")).setPickupServiceTime(10).setDeliveryServiceTime(20).build(); + Shipment two = Shipment.Builder.newInstance("s").addSizeDimension(0, 10).setPickupLocation(Location.Builder.newInstance().setId("foo").build()).setDeliveryLocation(TestUtils.loc("foofoo")).setPickupServiceTime(10).setDeliveryServiceTime(20).build(); assertTrue(one.equals(two)); } @Test - public void whenShipmentIsInstantiatedWithASizeOf10_theSizeShouldBe10() { - Shipment one = Shipment.Builder.newInstance("s").addSizeDimension(0, 10).setPickupLocation(Location.Builder.newInstance().setId("foo").build()). - setDeliveryLocation(TestUtils.loc("foofoo")).setPickupServiceTime(10).setDeliveryServiceTime(20).build(); + @DisplayName("When Shipment Is Instantiated With A Size Of 10 _ the Size Should Be 10") + void whenShipmentIsInstantiatedWithASizeOf10_theSizeShouldBe10() { + Shipment one = Shipment.Builder.newInstance("s").addSizeDimension(0, 10).setPickupLocation(Location.Builder.newInstance().setId("foo").build()).setDeliveryLocation(TestUtils.loc("foofoo")).setPickupServiceTime(10).setDeliveryServiceTime(20).build(); assertEquals(10, one.getSize().get(0)); } - @Test(expected = IllegalArgumentException.class) - public void whenShipmentIsBuiltWithNegativeDemand_itShouldThrowException() { - @SuppressWarnings("unused") - Shipment one = Shipment.Builder.newInstance("s").addSizeDimension(0, -10) - .setPickupLocation(Location.Builder.newInstance().setId("foo").build()) - .setDeliveryLocation(TestUtils.loc("foofoo")).build(); + @Test + @DisplayName("When Shipment Is Built With Negative Demand _ it Should Throw Exception") + void whenShipmentIsBuiltWithNegativeDemand_itShouldThrowException() { + assertThrows(IllegalArgumentException.class, () -> { + @SuppressWarnings("unused") + Shipment one = Shipment.Builder.newInstance("s").addSizeDimension(0, -10).setPickupLocation(Location.Builder.newInstance().setId("foo").build()).setDeliveryLocation(TestUtils.loc("foofoo")).build(); + }); } - @Test(expected = IllegalArgumentException.class) - public void whenShipmentIsBuiltWithNegativeDemand_itShouldThrowException_v2() { - @SuppressWarnings("unused") - Shipment one = Shipment.Builder.newInstance("s").addSizeDimension(0, -10) - .setPickupLocation(Location.Builder.newInstance().setId("foo").build()) - .setDeliveryLocation(TestUtils.loc("foofoo")).build(); + @Test + @DisplayName("When Shipment Is Built With Negative Demand _ it Should Throw Exception _ v 2") + void whenShipmentIsBuiltWithNegativeDemand_itShouldThrowException_v2() { + assertThrows(IllegalArgumentException.class, () -> { + @SuppressWarnings("unused") + Shipment one = Shipment.Builder.newInstance("s").addSizeDimension(0, -10).setPickupLocation(Location.Builder.newInstance().setId("foo").build()).setDeliveryLocation(TestUtils.loc("foofoo")).build(); + }); } - @Test(expected = IllegalArgumentException.class) - public void whenIdIsNull_itShouldThrowException() { - @SuppressWarnings("unused") - Shipment one = Shipment.Builder.newInstance(null).addSizeDimension(0, 10) - .setPickupLocation(Location.Builder.newInstance().setId("foo").build()) - .setDeliveryLocation(TestUtils.loc("foofoo")).build(); + @Test + @DisplayName("When Id Is Null _ it Should Throw Exception") + void whenIdIsNull_itShouldThrowException() { + assertThrows(IllegalArgumentException.class, () -> { + @SuppressWarnings("unused") + Shipment one = Shipment.Builder.newInstance(null).addSizeDimension(0, 10).setPickupLocation(Location.Builder.newInstance().setId("foo").build()).setDeliveryLocation(TestUtils.loc("foofoo")).build(); + }); } @Test - public void whenCallingForANewBuilderInstance_itShouldReturnBuilderCorrectly() { + @DisplayName("When Calling For A New Builder Instance _ it Should Return Builder Correctly") + void whenCallingForANewBuilderInstance_itShouldReturnBuilderCorrectly() { Shipment.Builder builder = Shipment.Builder.newInstance("s"); assertNotNull(builder); } - @Test(expected = IllegalArgumentException.class) - public void whenNeitherPickupLocationIdNorPickupCoord_itThrowsException() { - @SuppressWarnings("unused") - Shipment s = Shipment.Builder.newInstance("s").setDeliveryLocation(TestUtils.loc("delLoc")).build(); + @Test + @DisplayName("When Neither Pickup Location Id Nor Pickup Coord _ it Throws Exception") + void whenNeitherPickupLocationIdNorPickupCoord_itThrowsException() { + assertThrows(IllegalArgumentException.class, () -> { + @SuppressWarnings("unused") + Shipment s = Shipment.Builder.newInstance("s").setDeliveryLocation(TestUtils.loc("delLoc")).build(); + }); } - @Test(expected = IllegalArgumentException.class) - public void whenNeitherDeliveryLocationIdNorDeliveryCoord_itThrowsException() { - @SuppressWarnings("unused") - Shipment s = Shipment.Builder.newInstance("s").setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build(); + @Test + @DisplayName("When Neither Delivery Location Id Nor Delivery Coord _ it Throws Exception") + void whenNeitherDeliveryLocationIdNorDeliveryCoord_itThrowsException() { + assertThrows(IllegalArgumentException.class, () -> { + @SuppressWarnings("unused") + Shipment s = Shipment.Builder.newInstance("s").setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build(); + }); } @Test - public void whenPickupLocationIdIsSet_itShouldBeDoneCorrectly() { + @DisplayName("When Pickup Location Id Is Set _ it Should Be Done Correctly") + void whenPickupLocationIdIsSet_itShouldBeDoneCorrectly() { Shipment s = Shipment.Builder.newInstance("s").setDeliveryLocation(TestUtils.loc("delLoc")).setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build(); - assertEquals("pickLoc", s.getPickupLocation().getId()); - assertEquals("pickLoc", s.getPickupLocation().getId()); + assertEquals(s.getPickupLocation().getId(), "pickLoc"); + assertEquals(s.getPickupLocation().getId(), "pickLoc"); } - @Test(expected = IllegalArgumentException.class) - public void whenPickupLocationIsNull_itThrowsException() { - @SuppressWarnings("unused") - Shipment.Builder builder = Shipment.Builder.newInstance("s").setPickupLocation(Location.Builder.newInstance().setId(null).build()); + @Test + @DisplayName("When Pickup Location Is Null _ it Throws Exception") + void whenPickupLocationIsNull_itThrowsException() { + assertThrows(IllegalArgumentException.class, () -> { + @SuppressWarnings("unused") + Shipment.Builder builder = Shipment.Builder.newInstance("s").setPickupLocation(Location.Builder.newInstance().setId(null).build()); + }); } @Test - public void whenPickupCoordIsSet_itShouldBeDoneCorrectly() { - Shipment s = Shipment.Builder.newInstance("s") - .setDeliveryLocation(TestUtils.loc("delLoc")).setPickupLocation(Location.Builder.newInstance().setId("pickLoc").setCoordinate(Coordinate.newInstance(1, 2)).build()).build(); + @DisplayName("When Pickup Coord Is Set _ it Should Be Done Correctly") + void whenPickupCoordIsSet_itShouldBeDoneCorrectly() { + Shipment s = Shipment.Builder.newInstance("s").setDeliveryLocation(TestUtils.loc("delLoc")).setPickupLocation(Location.Builder.newInstance().setId("pickLoc").setCoordinate(Coordinate.newInstance(1, 2)).build()).build(); assertEquals(1.0, s.getPickupLocation().getCoordinate().getX(), 0.01); assertEquals(2.0, s.getPickupLocation().getCoordinate().getY(), 0.01); assertEquals(1.0, s.getPickupLocation().getCoordinate().getX(), 0.01); assertEquals(2.0, s.getPickupLocation().getCoordinate().getY(), 0.01); } - @Test - public void whenDeliveryLocationIdIsSet_itShouldBeDoneCorrectly() { - Shipment s = Shipment.Builder.newInstance("s") - .setDeliveryLocation(TestUtils.loc("delLoc")).setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build(); - assertEquals("delLoc", s.getDeliveryLocation().getId()); - assertEquals("delLoc", s.getDeliveryLocation().getId()); + @DisplayName("When Delivery Location Id Is Set _ it Should Be Done Correctly") + void whenDeliveryLocationIdIsSet_itShouldBeDoneCorrectly() { + Shipment s = Shipment.Builder.newInstance("s").setDeliveryLocation(TestUtils.loc("delLoc")).setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build(); + assertEquals(s.getDeliveryLocation().getId(), "delLoc"); + assertEquals(s.getDeliveryLocation().getId(), "delLoc"); } - @Test - public void whenDeliveryCoordIsSet_itShouldBeDoneCorrectly() { - Shipment s = Shipment.Builder.newInstance("s").setDeliveryLocation(TestUtils.loc("delLoc", Coordinate.newInstance(1, 2))) - .setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()) - .build(); + @DisplayName("When Delivery Coord Is Set _ it Should Be Done Correctly") + void whenDeliveryCoordIsSet_itShouldBeDoneCorrectly() { + Shipment s = Shipment.Builder.newInstance("s").setDeliveryLocation(TestUtils.loc("delLoc", Coordinate.newInstance(1, 2))).setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build(); assertEquals(1.0, s.getDeliveryLocation().getCoordinate().getX(), 0.01); assertEquals(2.0, s.getDeliveryLocation().getCoordinate().getY(), 0.01); assertEquals(1.0, s.getDeliveryLocation().getCoordinate().getX(), 0.01); @@ -147,330 +156,324 @@ public void whenDeliveryCoordIsSet_itShouldBeDoneCorrectly() { } @Test - public void whenPickupServiceTimeIsNotSet_itShouldBeZero() { - Shipment s = Shipment.Builder.newInstance("s") - .setDeliveryLocation(TestUtils.loc("delLoc")).setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build(); + @DisplayName("When Pickup Service Time Is Not Set _ it Should Be Zero") + void whenPickupServiceTimeIsNotSet_itShouldBeZero() { + Shipment s = Shipment.Builder.newInstance("s").setDeliveryLocation(TestUtils.loc("delLoc")).setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build(); assertEquals(0.0, s.getPickupServiceTime(), 0.01); } @Test - public void whenDeliveryServiceTimeIsNotSet_itShouldBeZero() { - Shipment s = Shipment.Builder.newInstance("s") - .setDeliveryLocation(TestUtils.loc("delLoc")).setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build(); + @DisplayName("When Delivery Service Time Is Not Set _ it Should Be Zero") + void whenDeliveryServiceTimeIsNotSet_itShouldBeZero() { + Shipment s = Shipment.Builder.newInstance("s").setDeliveryLocation(TestUtils.loc("delLoc")).setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build(); assertEquals(0.0, s.getDeliveryServiceTime(), 0.01); } @Test - public void whenPickupServiceTimeIsSet_itShouldBeDoneCorrectly() { - Shipment s = Shipment.Builder.newInstance("s") - .setPickupServiceTime(2.0) - .setDeliveryLocation(TestUtils.loc("delLoc")).setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build(); + @DisplayName("When Pickup Service Time Is Set _ it Should Be Done Correctly") + void whenPickupServiceTimeIsSet_itShouldBeDoneCorrectly() { + Shipment s = Shipment.Builder.newInstance("s").setPickupServiceTime(2.0).setDeliveryLocation(TestUtils.loc("delLoc")).setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build(); assertEquals(2.0, s.getPickupServiceTime(), 0.01); } - @Test(expected = IllegalArgumentException.class) - public void whenPickupServiceIsSmallerThanZero_itShouldThrowException() { - @SuppressWarnings("unused") - Shipment s = Shipment.Builder.newInstance("s").setPickupServiceTime(-2.0) - .setDeliveryLocation(TestUtils.loc("delLoc")).setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build(); + @Test + @DisplayName("When Pickup Service Is Smaller Than Zero _ it Should Throw Exception") + void whenPickupServiceIsSmallerThanZero_itShouldThrowException() { + assertThrows(IllegalArgumentException.class, () -> { + @SuppressWarnings("unused") + Shipment s = Shipment.Builder.newInstance("s").setPickupServiceTime(-2.0).setDeliveryLocation(TestUtils.loc("delLoc")).setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build(); + }); } @Test - public void whenDeliveryServiceTimeIsSet_itShouldBeDoneCorrectly() { - Shipment s = Shipment.Builder.newInstance("s").setDeliveryServiceTime(2.0) - .setDeliveryLocation(TestUtils.loc("delLoc")).setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build(); + @DisplayName("When Delivery Service Time Is Set _ it Should Be Done Correctly") + void whenDeliveryServiceTimeIsSet_itShouldBeDoneCorrectly() { + Shipment s = Shipment.Builder.newInstance("s").setDeliveryServiceTime(2.0).setDeliveryLocation(TestUtils.loc("delLoc")).setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build(); assertEquals(2.0, s.getDeliveryServiceTime(), 0.01); } - @Test(expected = IllegalArgumentException.class) - public void whenDeliveryServiceIsSmallerThanZero_itShouldThrowException() { - @SuppressWarnings("unused") - Shipment s = Shipment.Builder.newInstance("s").setDeliveryServiceTime(-2.0).setDeliveryLocation(TestUtils.loc("delLoc")).setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build(); + @Test + @DisplayName("When Delivery Service Is Smaller Than Zero _ it Should Throw Exception") + void whenDeliveryServiceIsSmallerThanZero_itShouldThrowException() { + assertThrows(IllegalArgumentException.class, () -> { + @SuppressWarnings("unused") + Shipment s = Shipment.Builder.newInstance("s").setDeliveryServiceTime(-2.0).setDeliveryLocation(TestUtils.loc("delLoc")).setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build(); + }); } @Test - public void whenPickupTimeWindowIsNotSet_itShouldBeTheDefaultOne() { + @DisplayName("When Pickup Time Window Is Not Set _ it Should Be The Default One") + void whenPickupTimeWindowIsNotSet_itShouldBeTheDefaultOne() { Shipment s = Shipment.Builder.newInstance("s").setDeliveryLocation(TestUtils.loc("delLoc")).setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build(); assertEquals(0.0, s.getPickupTimeWindow().getStart(), 0.01); assertEquals(Double.MAX_VALUE, s.getPickupTimeWindow().getEnd(), 0.01); } - @Test(expected = IllegalArgumentException.class) - public void whenPickupTimeWindowIsNull_itShouldThrowException() { - @SuppressWarnings("unused") - Shipment s = Shipment.Builder.newInstance("s").setPickupTimeWindow(null).setDeliveryLocation(TestUtils.loc("delLoc")).setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build(); + @Test + @DisplayName("When Pickup Time Window Is Null _ it Should Throw Exception") + void whenPickupTimeWindowIsNull_itShouldThrowException() { + assertThrows(IllegalArgumentException.class, () -> { + @SuppressWarnings("unused") + Shipment s = Shipment.Builder.newInstance("s").setPickupTimeWindow(null).setDeliveryLocation(TestUtils.loc("delLoc")).setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build(); + }); } @Test - public void whenPickupTimeWindowIsSet_itShouldBeDoneCorrectly() { - Shipment s = Shipment.Builder.newInstance("s").setPickupTimeWindow(TimeWindow.newInstance(1, 2)) - .setDeliveryLocation(TestUtils.loc("delLoc")).setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build(); + @DisplayName("When Pickup Time Window Is Set _ it Should Be Done Correctly") + void whenPickupTimeWindowIsSet_itShouldBeDoneCorrectly() { + Shipment s = Shipment.Builder.newInstance("s").setPickupTimeWindow(TimeWindow.newInstance(1, 2)).setDeliveryLocation(TestUtils.loc("delLoc")).setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build(); assertEquals(1.0, s.getPickupTimeWindow().getStart(), 0.01); assertEquals(2.0, s.getPickupTimeWindow().getEnd(), 0.01); } @Test - public void whenDeliveryTimeWindowIsNotSet_itShouldBeTheDefaultOne() { + @DisplayName("When Delivery Time Window Is Not Set _ it Should Be The Default One") + void whenDeliveryTimeWindowIsNotSet_itShouldBeTheDefaultOne() { Shipment s = Shipment.Builder.newInstance("s").setDeliveryLocation(TestUtils.loc("delLoc")).setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build(); assertEquals(0.0, s.getDeliveryTimeWindow().getStart(), 0.01); assertEquals(Double.MAX_VALUE, s.getDeliveryTimeWindow().getEnd(), 0.01); } - @Test(expected = IllegalArgumentException.class) - public void whenDeliveryTimeWindowIsNull_itShouldThrowException() { - @SuppressWarnings("unused") - Shipment s = Shipment.Builder.newInstance("s").setDeliveryTimeWindow(null).setDeliveryLocation(TestUtils.loc("delLoc")).setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build(); + @Test + @DisplayName("When Delivery Time Window Is Null _ it Should Throw Exception") + void whenDeliveryTimeWindowIsNull_itShouldThrowException() { + assertThrows(IllegalArgumentException.class, () -> { + @SuppressWarnings("unused") + Shipment s = Shipment.Builder.newInstance("s").setDeliveryTimeWindow(null).setDeliveryLocation(TestUtils.loc("delLoc")).setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build(); + }); } @Test - public void whenDeliveryTimeWindowIsSet_itShouldBeDoneCorrectly() { - Shipment s = Shipment.Builder.newInstance("s").setDeliveryTimeWindow(TimeWindow.newInstance(1, 2)) - .setDeliveryLocation(TestUtils.loc("delLoc")).setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build(); + @DisplayName("When Delivery Time Window Is Set _ it Should Be Done Correctly") + void whenDeliveryTimeWindowIsSet_itShouldBeDoneCorrectly() { + Shipment s = Shipment.Builder.newInstance("s").setDeliveryTimeWindow(TimeWindow.newInstance(1, 2)).setDeliveryLocation(TestUtils.loc("delLoc")).setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build(); assertEquals(1.0, s.getDeliveryTimeWindow().getStart(), 0.01); assertEquals(2.0, s.getDeliveryTimeWindow().getEnd(), 0.01); } @Test - public void whenUsingAddDeliveryTimeWindow_itShouldBeDoneCorrectly() { - Shipment s = Shipment.Builder.newInstance("s").addDeliveryTimeWindow(TimeWindow.newInstance(1, 2)) - .setDeliveryLocation(TestUtils.loc("delLoc")).setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build(); + @DisplayName("When Using Add Delivery Time Window _ it Should Be Done Correctly") + void whenUsingAddDeliveryTimeWindow_itShouldBeDoneCorrectly() { + Shipment s = Shipment.Builder.newInstance("s").addDeliveryTimeWindow(TimeWindow.newInstance(1, 2)).setDeliveryLocation(TestUtils.loc("delLoc")).setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build(); assertEquals(1.0, s.getDeliveryTimeWindow().getStart(), 0.01); assertEquals(2.0, s.getDeliveryTimeWindow().getEnd(), 0.01); } @Test - public void whenUsingAddDeliveryTimeWindow2_itShouldBeDoneCorrectly() { - Shipment s = Shipment.Builder.newInstance("s").addDeliveryTimeWindow(1, 2) - .setDeliveryLocation(TestUtils.loc("delLoc")).setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build(); + @DisplayName("When Using Add Delivery Time Window 2 _ it Should Be Done Correctly") + void whenUsingAddDeliveryTimeWindow2_itShouldBeDoneCorrectly() { + Shipment s = Shipment.Builder.newInstance("s").addDeliveryTimeWindow(1, 2).setDeliveryLocation(TestUtils.loc("delLoc")).setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build(); assertEquals(1.0, s.getDeliveryTimeWindow().getStart(), 0.01); assertEquals(2.0, s.getDeliveryTimeWindow().getEnd(), 0.01); } @Test - public void whenAddingMultipleDeliveryTimeWindows_itShouldBeDoneCorrectly() { - TimeWindow tw1 = TimeWindow.newInstance(1,2); - TimeWindow tw2 = TimeWindow.newInstance(4,5); - Shipment s = Shipment.Builder.newInstance("s").addDeliveryTimeWindow(tw1).addDeliveryTimeWindow(tw2) - .setDeliveryLocation(TestUtils.loc("delLoc")).setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build(); - assertEquals(s.getDeliveryTimeWindows().size(),2); - assertThat(s.getDeliveryTimeWindows(),hasItem(is(tw1))); - assertThat(s.getDeliveryTimeWindows(),hasItem(is(tw2))); + @DisplayName("When Adding Multiple Delivery Time Windows _ it Should Be Done Correctly") + void whenAddingMultipleDeliveryTimeWindows_itShouldBeDoneCorrectly() { + TimeWindow tw1 = TimeWindow.newInstance(1, 2); + TimeWindow tw2 = TimeWindow.newInstance(4, 5); + Shipment s = Shipment.Builder.newInstance("s").addDeliveryTimeWindow(tw1).addDeliveryTimeWindow(tw2).setDeliveryLocation(TestUtils.loc("delLoc")).setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build(); + assertEquals(s.getDeliveryTimeWindows().size(), 2); + assertThat(s.getDeliveryTimeWindows(), hasItem(is(tw1))); + assertThat(s.getDeliveryTimeWindows(), hasItem(is(tw2))); } - @Test(expected = IllegalArgumentException.class) - public void whenAddingMultipleOverlappingDeliveryTimeWindows_itShouldThrowException() { - Shipment s = Shipment.Builder.newInstance("s").addDeliveryTimeWindow(1, 3).addDeliveryTimeWindow(2,5) - .setDeliveryLocation(TestUtils.loc("delLoc")).setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build(); - assertEquals(1.0, s.getDeliveryTimeWindow().getStart(), 0.01); - assertEquals(2.0, s.getDeliveryTimeWindow().getEnd(), 0.01); + @Test + @DisplayName("When Adding Multiple Overlapping Delivery Time Windows _ it Should Throw Exception") + void whenAddingMultipleOverlappingDeliveryTimeWindows_itShouldThrowException() { + assertThrows(IllegalArgumentException.class, () -> { + Shipment s = Shipment.Builder.newInstance("s").addDeliveryTimeWindow(1, 3).addDeliveryTimeWindow(2, 5).setDeliveryLocation(TestUtils.loc("delLoc")).setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build(); + assertEquals(1.0, s.getDeliveryTimeWindow().getStart(), 0.01); + assertEquals(2.0, s.getDeliveryTimeWindow().getEnd(), 0.01); + }); } - - @Test - public void whenUsingAddPickupTimeWindow_itShouldBeDoneCorrectly() { - Shipment s = Shipment.Builder.newInstance("s").addPickupTimeWindow(TimeWindow.newInstance(1, 2)) - .setDeliveryLocation(TestUtils.loc("delLoc")).setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build(); + @DisplayName("When Using Add Pickup Time Window _ it Should Be Done Correctly") + void whenUsingAddPickupTimeWindow_itShouldBeDoneCorrectly() { + Shipment s = Shipment.Builder.newInstance("s").addPickupTimeWindow(TimeWindow.newInstance(1, 2)).setDeliveryLocation(TestUtils.loc("delLoc")).setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build(); assertEquals(1.0, s.getPickupTimeWindow().getStart(), 0.01); assertEquals(2.0, s.getPickupTimeWindow().getEnd(), 0.01); } @Test - public void whenUsingAddPickupTimeWindow2_itShouldBeDoneCorrectly() { - Shipment s = Shipment.Builder.newInstance("s").addPickupTimeWindow(1, 2) - .setDeliveryLocation(TestUtils.loc("delLoc")).setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build(); + @DisplayName("When Using Add Pickup Time Window 2 _ it Should Be Done Correctly") + void whenUsingAddPickupTimeWindow2_itShouldBeDoneCorrectly() { + Shipment s = Shipment.Builder.newInstance("s").addPickupTimeWindow(1, 2).setDeliveryLocation(TestUtils.loc("delLoc")).setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build(); assertEquals(1.0, s.getPickupTimeWindow().getStart(), 0.01); assertEquals(2.0, s.getPickupTimeWindow().getEnd(), 0.01); } @Test - public void whenAddingMultiplePickupTimeWindows_itShouldBeDoneCorrectly() { - TimeWindow tw1 = TimeWindow.newInstance(1,2); - TimeWindow tw2 = TimeWindow.newInstance(4,5); - Shipment s = Shipment.Builder.newInstance("s").addPickupTimeWindow(tw1).addPickupTimeWindow(tw2) - .setDeliveryLocation(TestUtils.loc("delLoc")).setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build(); - assertEquals(s.getPickupTimeWindows().size(),2); + @DisplayName("When Adding Multiple Pickup Time Windows _ it Should Be Done Correctly") + void whenAddingMultiplePickupTimeWindows_itShouldBeDoneCorrectly() { + TimeWindow tw1 = TimeWindow.newInstance(1, 2); + TimeWindow tw2 = TimeWindow.newInstance(4, 5); + Shipment s = Shipment.Builder.newInstance("s").addPickupTimeWindow(tw1).addPickupTimeWindow(tw2).setDeliveryLocation(TestUtils.loc("delLoc")).setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build(); + assertEquals(s.getPickupTimeWindows().size(), 2); assertThat(s.getPickupTimeWindows(), hasItem(is(tw1))); assertThat(s.getPickupTimeWindows(), hasItem(is(tw2))); } - @Test(expected = IllegalArgumentException.class) - public void whenAddingMultipleOverlappingPickupTimeWindows_itShouldThrowException() { - Shipment s = Shipment.Builder.newInstance("s").addPickupTimeWindow(1, 3).addPickupTimeWindow(2,5) - .setDeliveryLocation(TestUtils.loc("delLoc")).setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build(); - assertEquals(1.0, s.getPickupTimeWindow().getStart(), 0.01); - assertEquals(2.0, s.getPickupTimeWindow().getEnd(), 0.01); + @Test + @DisplayName("When Adding Multiple Overlapping Pickup Time Windows _ it Should Throw Exception") + void whenAddingMultipleOverlappingPickupTimeWindows_itShouldThrowException() { + assertThrows(IllegalArgumentException.class, () -> { + Shipment s = Shipment.Builder.newInstance("s").addPickupTimeWindow(1, 3).addPickupTimeWindow(2, 5).setDeliveryLocation(TestUtils.loc("delLoc")).setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).build(); + assertEquals(1.0, s.getPickupTimeWindow().getStart(), 0.01); + assertEquals(2.0, s.getPickupTimeWindow().getEnd(), 0.01); + }); } - - - @Test(expected = IllegalArgumentException.class) - public void whenShipmentHasNegativeCapacityVal_throwIllegalStateExpception() { - @SuppressWarnings("unused") - Shipment one = Shipment.Builder.newInstance("s").setPickupLocation(Location.Builder.newInstance().setId("foo").build()) - .setDeliveryLocation(TestUtils.loc("foofoo")) - .addSizeDimension(0, -2) - .build(); + @Test + @DisplayName("When Shipment Has Negative Capacity Val _ throw Illegal State Expception") + void whenShipmentHasNegativeCapacityVal_throwIllegalStateExpception() { + assertThrows(IllegalArgumentException.class, () -> { + @SuppressWarnings("unused") + Shipment one = Shipment.Builder.newInstance("s").setPickupLocation(Location.Builder.newInstance().setId("foo").build()).setDeliveryLocation(TestUtils.loc("foofoo")).addSizeDimension(0, -2).build(); + }); } @Test - public void whenAddingTwoCapDimension_nuOfDimsShouldBeTwo() { - Shipment one = Shipment.Builder.newInstance("s").setPickupLocation(Location.Builder.newInstance().setId("foo").build()) - .setDeliveryLocation(TestUtils.loc("foofoo")) - .addSizeDimension(0, 2) - .addSizeDimension(1, 4) - .build(); + @DisplayName("When Adding Two Cap Dimension _ nu Of Dims Should Be Two") + void whenAddingTwoCapDimension_nuOfDimsShouldBeTwo() { + Shipment one = Shipment.Builder.newInstance("s").setPickupLocation(Location.Builder.newInstance().setId("foo").build()).setDeliveryLocation(TestUtils.loc("foofoo")).addSizeDimension(0, 2).addSizeDimension(1, 4).build(); assertEquals(2, one.getSize().getNuOfDimensions()); } @Test - public void whenShipmentIsBuiltWithoutSpecifyingCapacity_itShouldHvCapWithOneDimAndDimValOfZero() { - Shipment one = Shipment.Builder.newInstance("s") - .setPickupLocation(Location.Builder.newInstance().setId("foo").setCoordinate(Coordinate.newInstance(0, 0)).build()) - .setDeliveryLocation(TestUtils.loc("foofoo")).build(); + @DisplayName("When Shipment Is Built Without Specifying Capacity _ it Should Hv Cap With One Dim And Dim Val Of Zero") + void whenShipmentIsBuiltWithoutSpecifyingCapacity_itShouldHvCapWithOneDimAndDimValOfZero() { + Shipment one = Shipment.Builder.newInstance("s").setPickupLocation(Location.Builder.newInstance().setId("foo").setCoordinate(Coordinate.newInstance(0, 0)).build()).setDeliveryLocation(TestUtils.loc("foofoo")).build(); assertEquals(1, one.getSize().getNuOfDimensions()); assertEquals(0, one.getSize().get(0)); } @Test - public void whenShipmentIsBuiltWithConstructorWhereSizeIsSpecified_capacityShouldBeSetCorrectly() { - Shipment one = Shipment.Builder.newInstance("s").addSizeDimension(0, 1) - .setPickupLocation(Location.Builder.newInstance().setId("foo").setCoordinate(Coordinate.newInstance(0, 0)).build()) - .setDeliveryLocation(TestUtils.loc("foofoo")).build(); + @DisplayName("When Shipment Is Built With Constructor Where Size Is Specified _ capacity Should Be Set Correctly") + void whenShipmentIsBuiltWithConstructorWhereSizeIsSpecified_capacityShouldBeSetCorrectly() { + Shipment one = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setPickupLocation(Location.Builder.newInstance().setId("foo").setCoordinate(Coordinate.newInstance(0, 0)).build()).setDeliveryLocation(TestUtils.loc("foofoo")).build(); assertEquals(1, one.getSize().getNuOfDimensions()); assertEquals(1, one.getSize().get(0)); } @Test - public void whenAddingSkills_theyShouldBeAddedCorrectly() { - Shipment s = Shipment.Builder.newInstance("s").setPickupLocation(Location.Builder.newInstance().setId("loc").build()) - .setDeliveryLocation(TestUtils.loc("delLoc")) - .addRequiredSkill("drill").addRequiredSkill("screwdriver").build(); + @DisplayName("When Adding Skills _ they Should Be Added Correctly") + void whenAddingSkills_theyShouldBeAddedCorrectly() { + Shipment s = Shipment.Builder.newInstance("s").setPickupLocation(Location.Builder.newInstance().setId("loc").build()).setDeliveryLocation(TestUtils.loc("delLoc")).addRequiredSkill("drill").addRequiredSkill("screwdriver").build(); assertTrue(s.getRequiredSkills().containsSkill("drill")); assertTrue(s.getRequiredSkills().containsSkill("drill")); assertTrue(s.getRequiredSkills().containsSkill("ScrewDriver")); } @Test - public void whenAddingSkillsCaseSens_theyShouldBeAddedCorrectly() { - Shipment s = Shipment.Builder.newInstance("s") - .setPickupLocation(Location.Builder.newInstance().setId("pick").build()) - .setDeliveryLocation(TestUtils.loc("del")) - .addRequiredSkill("DriLl").addRequiredSkill("screwDriver").build(); + @DisplayName("When Adding Skills Case Sens _ they Should Be Added Correctly") + void whenAddingSkillsCaseSens_theyShouldBeAddedCorrectly() { + Shipment s = Shipment.Builder.newInstance("s").setPickupLocation(Location.Builder.newInstance().setId("pick").build()).setDeliveryLocation(TestUtils.loc("del")).addRequiredSkill("DriLl").addRequiredSkill("screwDriver").build(); assertTrue(s.getRequiredSkills().containsSkill("drill")); assertTrue(s.getRequiredSkills().containsSkill("drilL")); } @Test - public void whenAddingSkillsCaseSensV2_theyShouldBeAddedCorrectly() { - Shipment s = Shipment.Builder.newInstance("s").setPickupLocation(Location.Builder.newInstance().setId("loc").build()) - .setDeliveryLocation(TestUtils.loc("del")) - .addRequiredSkill("screwDriver").build(); + @DisplayName("When Adding Skills Case Sens V 2 _ they Should Be Added Correctly") + void whenAddingSkillsCaseSensV2_theyShouldBeAddedCorrectly() { + Shipment s = Shipment.Builder.newInstance("s").setPickupLocation(Location.Builder.newInstance().setId("loc").build()).setDeliveryLocation(TestUtils.loc("del")).addRequiredSkill("screwDriver").build(); assertFalse(s.getRequiredSkills().containsSkill("drill")); assertFalse(s.getRequiredSkills().containsSkill("drilL")); } @Test - public void nameShouldBeAssigned() { - Shipment s = Shipment.Builder.newInstance("s").setPickupLocation(Location.Builder.newInstance().setId("loc").build()) - .setDeliveryLocation(TestUtils.loc("del")) - .setName("name").build(); - assertEquals("name", s.getName()); + @DisplayName("Name Should Be Assigned") + void nameShouldBeAssigned() { + Shipment s = Shipment.Builder.newInstance("s").setPickupLocation(Location.Builder.newInstance().setId("loc").build()).setDeliveryLocation(TestUtils.loc("del")).setName("name").build(); + assertEquals(s.getName(), "name"); } @Test - public void whenSettingLocation_itShouldWork() { - Shipment s = Shipment.Builder.newInstance("s").setPickupLocation(Location.Builder.newInstance().setId("loc").build()) - .setDeliveryLocation(Location.Builder.newInstance().setId("del").build()).build(); - assertEquals("loc", s.getPickupLocation().getId()); - assertEquals("loc", s.getPickupLocation().getId()); - assertEquals("del", s.getDeliveryLocation().getId()); - assertEquals("del", s.getDeliveryLocation().getId()); + @DisplayName("When Setting Location _ it Should Work") + void whenSettingLocation_itShouldWork() { + Shipment s = Shipment.Builder.newInstance("s").setPickupLocation(Location.Builder.newInstance().setId("loc").build()).setDeliveryLocation(Location.Builder.newInstance().setId("del").build()).build(); + assertEquals(s.getPickupLocation().getId(), "loc"); + assertEquals(s.getPickupLocation().getId(), "loc"); + assertEquals(s.getDeliveryLocation().getId(), "del"); + assertEquals(s.getDeliveryLocation().getId(), "del"); } @Test - public void whenSettingPriorities_itShouldBeSetCorrectly(){ - Shipment s = Shipment.Builder.newInstance("s").setPickupLocation(Location.newInstance("loc")) - .setDeliveryLocation(Location.newInstance("loc")) - .setPriority(1).build(); - Assert.assertEquals(1, s.getPriority()); + @DisplayName("When Setting Priorities _ it Should Be Set Correctly") + void whenSettingPriorities_itShouldBeSetCorrectly() { + Shipment s = Shipment.Builder.newInstance("s").setPickupLocation(Location.newInstance("loc")).setDeliveryLocation(Location.newInstance("loc")).setPriority(1).build(); + assertEquals(1, s.getPriority()); } @Test - public void whenSettingPriorities_itShouldBeSetCorrectly2(){ - Shipment s = Shipment.Builder.newInstance("s").setPickupLocation(Location.newInstance("loc")) - .setDeliveryLocation(Location.newInstance("loc")) - .setPriority(3).build(); - Assert.assertEquals(3, s.getPriority()); + @DisplayName("When Setting Priorities _ it Should Be Set Correctly 2") + void whenSettingPriorities_itShouldBeSetCorrectly2() { + Shipment s = Shipment.Builder.newInstance("s").setPickupLocation(Location.newInstance("loc")).setDeliveryLocation(Location.newInstance("loc")).setPriority(3).build(); + assertEquals(3, s.getPriority()); } @Test - public void whenSettingPriorities_itShouldBeSetCorrectly3() { - Shipment s = Shipment.Builder.newInstance("s").setPickupLocation(Location.newInstance("loc")) - .setDeliveryLocation(Location.newInstance("loc")) - .setPriority(10).build(); - Assert.assertEquals(10, s.getPriority()); + @DisplayName("When Setting Priorities _ it Should Be Set Correctly 3") + void whenSettingPriorities_itShouldBeSetCorrectly3() { + Shipment s = Shipment.Builder.newInstance("s").setPickupLocation(Location.newInstance("loc")).setDeliveryLocation(Location.newInstance("loc")).setPriority(10).build(); + assertEquals(10, s.getPriority()); } @Test - public void whenNotSettingPriorities_defaultShouldBe2(){ - Shipment s = Shipment.Builder.newInstance("s").setPickupLocation(Location.newInstance("loc")) - .setDeliveryLocation(Location.newInstance("loc")) - .build(); - Assert.assertEquals(2, s.getPriority()); + @DisplayName("When Not Setting Priorities _ default Should Be 2") + void whenNotSettingPriorities_defaultShouldBe2() { + Shipment s = Shipment.Builder.newInstance("s").setPickupLocation(Location.newInstance("loc")).setDeliveryLocation(Location.newInstance("loc")).build(); + assertEquals(2, s.getPriority()); } - @Test(expected = IllegalArgumentException.class) - public void whenSettingIncorrectPriorities_itShouldThrowException(){ - Shipment s = Shipment.Builder.newInstance("s").setPickupLocation(Location.newInstance("loc")) - .setDeliveryLocation(Location.newInstance("loc")) - .setPriority(30).build(); - + @Test + @DisplayName("When Setting Incorrect Priorities _ it Should Throw Exception") + void whenSettingIncorrectPriorities_itShouldThrowException() { + assertThrows(IllegalArgumentException.class, () -> { + Shipment s = Shipment.Builder.newInstance("s").setPickupLocation(Location.newInstance("loc")).setDeliveryLocation(Location.newInstance("loc")).setPriority(30).build(); + }); } - @Test(expected = IllegalArgumentException.class) - public void whenSettingIncorrectPriorities_itShouldThrowException2(){ - Shipment s = Shipment.Builder.newInstance("s").setPickupLocation(Location.newInstance("loc")) - .setDeliveryLocation(Location.newInstance("loc")) - .setPriority(0).build(); - + @Test + @DisplayName("When Setting Incorrect Priorities _ it Should Throw Exception 2") + void whenSettingIncorrectPriorities_itShouldThrowException2() { + assertThrows(IllegalArgumentException.class, () -> { + Shipment s = Shipment.Builder.newInstance("s").setPickupLocation(Location.newInstance("loc")).setDeliveryLocation(Location.newInstance("loc")).setPriority(0).build(); + }); } @Test - public void whenSettingUserData_itIsAssociatedWithTheJob() { - Shipment one = Shipment.Builder.newInstance("s").setPickupLocation(Location.newInstance("loc")) - .setDeliveryLocation(Location.newInstance("loc")).setUserData(new HashMap()).build(); - Shipment two = Shipment.Builder.newInstance("s2").setPickupLocation(Location.newInstance("loc")) - .setDeliveryLocation(Location.newInstance("loc")).setUserData(42).build(); - Shipment three = Shipment.Builder.newInstance("s3").setPickupLocation(Location.newInstance("loc")) - .setDeliveryLocation(Location.newInstance("loc")).build(); - + @DisplayName("When Setting User Data _ it Is Associated With The Job") + void whenSettingUserData_itIsAssociatedWithTheJob() { + Shipment one = Shipment.Builder.newInstance("s").setPickupLocation(Location.newInstance("loc")).setDeliveryLocation(Location.newInstance("loc")).setUserData(new HashMap()).build(); + Shipment two = Shipment.Builder.newInstance("s2").setPickupLocation(Location.newInstance("loc")).setDeliveryLocation(Location.newInstance("loc")).setUserData(42).build(); + Shipment three = Shipment.Builder.newInstance("s3").setPickupLocation(Location.newInstance("loc")).setDeliveryLocation(Location.newInstance("loc")).build(); assertTrue(one.getUserData() instanceof Map); assertEquals(42, two.getUserData()); assertNull(three.getUserData()); } + @Test - public void whenAddingMaxTimeInVehicle_itShouldBeSet(){ - Shipment s = Shipment.Builder.newInstance("s").setPickupLocation(Location.newInstance("loc")).setDeliveryLocation(Location.newInstance("loc")) - .setMaxTimeInVehicle(10) - .build(); - Assert.assertEquals(10, s.getMaxTimeInVehicle(),0.001); + @DisplayName("When Adding Max Time In Vehicle _ it Should Be Set") + void whenAddingMaxTimeInVehicle_itShouldBeSet() { + Shipment s = Shipment.Builder.newInstance("s").setPickupLocation(Location.newInstance("loc")).setDeliveryLocation(Location.newInstance("loc")).setMaxTimeInVehicle(10).build(); + assertEquals(10, s.getMaxTimeInVehicle(), 0.001); } @Test - public void whenNotAddingMaxTimeInVehicle_itShouldBeDefault(){ - Shipment s = Shipment.Builder.newInstance("s").setPickupLocation(Location.newInstance("loc")).setDeliveryLocation(Location.newInstance("loc")) - .build(); - Assert.assertEquals(Double.MAX_VALUE, s.getMaxTimeInVehicle(),0.001); + @DisplayName("When Not Adding Max Time In Vehicle _ it Should Be Default") + void whenNotAddingMaxTimeInVehicle_itShouldBeDefault() { + Shipment s = Shipment.Builder.newInstance("s").setPickupLocation(Location.newInstance("loc")).setDeliveryLocation(Location.newInstance("loc")).build(); + assertEquals(Double.MAX_VALUE, s.getMaxTimeInVehicle(), 0.001); } @Test - public void testShipmentActivities() { - Job job = Shipment.Builder.newInstance("s").setPickupLocation(Location.newInstance("loc")).setDeliveryLocation(Location.newInstance("loc")) - .build(); + @DisplayName("Test Shipment Activities") + void testShipmentActivities() { + Job job = Shipment.Builder.newInstance("s").setPickupLocation(Location.newInstance("loc")).setDeliveryLocation(Location.newInstance("loc")).build(); assertEquals(2, job.getActivities().size()); assertEquals(Activity.Type.PICKUP, job.getActivities().get(0).getActivityType()); assertEquals(Activity.Type.DELIVERY, job.getActivities().get(1).getActivityType()); } - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/misc/JobInsertionContextTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/misc/JobInsertionContextTest.java index 8f0926450..359a75b75 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/misc/JobInsertionContextTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/misc/JobInsertionContextTest.java @@ -15,23 +15,23 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.graphhopper.jsprit.core.problem.misc; - import com.graphhopper.jsprit.core.problem.driver.Driver; import com.graphhopper.jsprit.core.problem.job.Job; import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; import com.graphhopper.jsprit.core.problem.solution.route.activity.TourActivity; import com.graphhopper.jsprit.core.problem.vehicle.Vehicle; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.mockito.Mockito.mock; -public class JobInsertionContextTest { +@DisplayName("Job Insertion Context Test") +class JobInsertionContextTest { VehicleRoute route; @@ -45,8 +45,8 @@ public class JobInsertionContextTest { JobInsertionContext context; - @Before - public void doBefore() { + @BeforeEach + void doBefore() { route = mock(VehicleRoute.class); job = mock(Job.class); vehicle = mock(Vehicle.class); @@ -56,41 +56,47 @@ public void doBefore() { } @Test - public void routeShouldBeAssigned() { + @DisplayName("Route Should Be Assigned") + void routeShouldBeAssigned() { assertEquals(route, context.getRoute()); } @Test - public void jobShouldBeAssigned() { + @DisplayName("Job Should Be Assigned") + void jobShouldBeAssigned() { assertEquals(job, context.getJob()); } @Test - public void vehicleShouldBeAssigned() { + @DisplayName("Vehicle Should Be Assigned") + void vehicleShouldBeAssigned() { assertEquals(vehicle, context.getNewVehicle()); } @Test - public void driverShouldBeAssigned() { + @DisplayName("Driver Should Be Assigned") + void driverShouldBeAssigned() { assertEquals(driver, context.getNewDriver()); } @Test - public void depTimeShouldBeAssigned() { + @DisplayName("Dep Time Should Be Assigned") + void depTimeShouldBeAssigned() { assertEquals(0., context.getNewDepTime(), 0.001); } @Test - public void relatedActivitiesShouldBeAssigned() { + @DisplayName("Related Activities Should Be Assigned") + void relatedActivitiesShouldBeAssigned() { context.getAssociatedActivities().add(mock(TourActivity.class)); context.getAssociatedActivities().add(mock(TourActivity.class)); assertEquals(2, context.getAssociatedActivities().size()); } @Test - public void relatedActivityContextShouldBeAssigned() { + @DisplayName("Related Activity Context Should Be Assigned") + void relatedActivityContextShouldBeAssigned() { context.setRelatedActivityContext(mock(ActivityContext.class)); assertNotNull(context.getRelatedActivityContext()); } - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/VehicleRoutingProblemSolutionTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/VehicleRoutingProblemSolutionTest.java index 628cbe6fb..ca5bba8e7 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/VehicleRoutingProblemSolutionTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/VehicleRoutingProblemSolutionTest.java @@ -19,43 +19,48 @@ import com.graphhopper.jsprit.core.problem.job.Job; import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; -import org.junit.Assert; -import org.junit.Test; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.Mockito.mock; -public class VehicleRoutingProblemSolutionTest { +@DisplayName("Vehicle Routing Problem Solution Test") +class VehicleRoutingProblemSolutionTest { @Test - public void whenCreatingSolutionWithTwoRoutes_solutionShouldContainTheseRoutes() { + @DisplayName("When Creating Solution With Two Routes _ solution Should Contain These Routes") + void whenCreatingSolutionWithTwoRoutes_solutionShouldContainTheseRoutes() { VehicleRoute r1 = mock(VehicleRoute.class); VehicleRoute r2 = mock(VehicleRoute.class); - VehicleRoutingProblemSolution sol = new VehicleRoutingProblemSolution(Arrays.asList(r1, r2), 0.0); assertEquals(2, sol.getRoutes().size()); } @Test - public void whenSettingSolutionCostsTo10_solutionCostsShouldBe10() { + @DisplayName("When Setting Solution Costs To 10 _ solution Costs Should Be 10") + void whenSettingSolutionCostsTo10_solutionCostsShouldBe10() { VehicleRoutingProblemSolution sol = new VehicleRoutingProblemSolution(Collections.emptyList(), 10.0); assertEquals(10.0, sol.getCost(), 0.01); } @Test - public void whenCreatingSolWithCostsOf10AndSettingCostsAfterwardsTo20_solutionCostsShouldBe20() { + @DisplayName("When Creating Sol With Costs Of 10 And Setting Costs Afterwards To 20 _ solution Costs Should Be 20") + void whenCreatingSolWithCostsOf10AndSettingCostsAfterwardsTo20_solutionCostsShouldBe20() { VehicleRoutingProblemSolution sol = new VehicleRoutingProblemSolution(Collections.emptyList(), 10.0); sol.setCost(20.0); assertEquals(20.0, sol.getCost(), 0.01); } @Test - public void sizeOfBadJobsShouldBeCorrect() { + @DisplayName("Size Of Bad Jobs Should Be Correct") + void sizeOfBadJobsShouldBeCorrect() { Job badJob = mock(Job.class); List badJobs = new ArrayList(); badJobs.add(badJob); @@ -64,7 +69,8 @@ public void sizeOfBadJobsShouldBeCorrect() { } @Test - public void sizeOfBadJobsShouldBeCorrect_2() { + @DisplayName("Size Of Bad Jobs Should Be Correct _ 2") + void sizeOfBadJobsShouldBeCorrect_2() { Job badJob = mock(Job.class); List badJobs = new ArrayList(); badJobs.add(badJob); @@ -74,22 +80,23 @@ public void sizeOfBadJobsShouldBeCorrect_2() { } @Test - public void badJobsShouldBeCorrect() { + @DisplayName("Bad Jobs Should Be Correct") + void badJobsShouldBeCorrect() { Job badJob = mock(Job.class); List badJobs = new ArrayList(); badJobs.add(badJob); VehicleRoutingProblemSolution sol = new VehicleRoutingProblemSolution(Collections.emptyList(), badJobs, 10.0); - Assert.assertEquals(badJob, sol.getUnassignedJobs().iterator().next()); + Assertions.assertEquals(badJob, sol.getUnassignedJobs().iterator().next()); } @Test - public void badJobsShouldBeCorrect_2() { + @DisplayName("Bad Jobs Should Be Correct _ 2") + void badJobsShouldBeCorrect_2() { Job badJob = mock(Job.class); List badJobs = new ArrayList(); badJobs.add(badJob); VehicleRoutingProblemSolution sol = new VehicleRoutingProblemSolution(Collections.emptyList(), 10.0); sol.getUnassignedJobs().addAll(badJobs); - Assert.assertEquals(badJob, sol.getUnassignedJobs().iterator().next()); + Assertions.assertEquals(badJob, sol.getUnassignedJobs().iterator().next()); } - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/VehicleRouteBuilderTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/VehicleRouteBuilderTest.java index d876416ac..6195fe614 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/VehicleRouteBuilderTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/VehicleRouteBuilderTest.java @@ -25,23 +25,28 @@ import com.graphhopper.jsprit.core.problem.solution.route.activity.TimeWindow; import com.graphhopper.jsprit.core.problem.vehicle.Vehicle; import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; - -public class VehicleRouteBuilderTest { +@DisplayName("Vehicle Route Builder Test") +class VehicleRouteBuilderTest { private Driver driver; + private VehicleRoute.Builder builder; + private Capacity emptyCapacity; + private TimeWindow defaultTimeWindow; - @Before - public void setUp() { + @BeforeEach + void setUp() { Vehicle vehicle = mock(Vehicle.class); driver = mock(Driver.class); builder = VehicleRoute.Builder.newInstance(vehicle, driver); @@ -61,91 +66,79 @@ private Shipment createMockShipment(String deliveryLocationId) { return shipment; } - @Test(expected = IllegalArgumentException.class) - public void whenDeliveryIsAddedBeforePickup_throwsException() { - Shipment s = mock(Shipment.class); - VehicleRoute.Builder builder = VehicleRoute.Builder.newInstance(mock(Vehicle.class), mock(Driver.class)); - builder.addDelivery(s); + @Test + @DisplayName("When Delivery Is Added Before Pickup _ throws Exception") + void whenDeliveryIsAddedBeforePickup_throwsException() { + assertThrows(IllegalArgumentException.class, () -> { + Shipment s = mock(Shipment.class); + VehicleRoute.Builder builder = VehicleRoute.Builder.newInstance(mock(Vehicle.class), mock(Driver.class)); + builder.addDelivery(s); + }); } - @Test(expected = IllegalArgumentException.class) - public void shouldThrowException_whenPickupIsAddedTwice() { - Shipment shipment = createMockShipment(null); - - builder.addPickup(shipment); - builder.addPickup(shipment); + @Test + @DisplayName("Should Throw Exception _ when Pickup Is Added Twice") + void shouldThrowException_whenPickupIsAddedTwice() { + assertThrows(IllegalArgumentException.class, () -> { + Shipment shipment = createMockShipment(null); + builder.addPickup(shipment); + builder.addPickup(shipment); + }); } - @Test(expected = IllegalArgumentException.class) - public void shouldThrowException_whenShipmentIsDeliveredTwice() { - Shipment shipment = createMockShipment(null); - - builder.addPickup(shipment); - builder.addDelivery(shipment); - builder.addDelivery(shipment); + @Test + @DisplayName("Should Throw Exception _ when Shipment Is Delivered Twice") + void shouldThrowException_whenShipmentIsDeliveredTwice() { + assertThrows(IllegalArgumentException.class, () -> { + Shipment shipment = createMockShipment(null); + builder.addPickup(shipment); + builder.addDelivery(shipment); + builder.addDelivery(shipment); + }); } - @Test(expected = IllegalArgumentException.class) - public void shouldThrowException_whenBuildingRouteWithUndeliveredShipment() { - Shipment shipment1 = createMockShipment(null); - Shipment shipment2 = createMockShipment(null); - - builder.addPickup(shipment1); - builder.addPickup(shipment2); - builder.addDelivery(shipment1); - - builder.build(); + @Test + @DisplayName("Should Throw Exception _ when Building Route With Undelivered Shipment") + void shouldThrowException_whenBuildingRouteWithUndeliveredShipment() { + assertThrows(IllegalArgumentException.class, () -> { + Shipment shipment1 = createMockShipment(null); + Shipment shipment2 = createMockShipment(null); + builder.addPickup(shipment1); + builder.addPickup(shipment2); + builder.addDelivery(shipment1); + builder.build(); + }); } @Test - public void shouldHaveFourActivities_whenTwoShipmentsAreAdded() { + @DisplayName("Should Have Four Activities _ when Two Shipments Are Added") + void shouldHaveFourActivities_whenTwoShipmentsAreAdded() { Shipment shipment1 = createMockShipment(null); Shipment shipment2 = createMockShipment(null); - - builder.addPickup(shipment1) - .addPickup(shipment2) - .addDelivery(shipment1) - .addDelivery(shipment2); - + builder.addPickup(shipment1).addPickup(shipment2).addDelivery(shipment1).addDelivery(shipment2); VehicleRoute route = builder.build(); - assertEquals(4, route.getTourActivities().getActivities().size()); } @Test - public void shouldUseVehicleLocation_whenBuildingClosedRoute() { + @DisplayName("Should Use Vehicle Location _ when Building Closed Route") + void shouldUseVehicleLocation_whenBuildingClosedRoute() { Shipment s = createMockShipment(null); Shipment s2 = createMockShipment(null); - - Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("vehLoc")).setEndLocation(Location.newInstance("vehLoc")) - .build(); - - VehicleRoute route = VehicleRoute.Builder.newInstance(vehicle, driver) - .addPickup(s) - .addPickup(s2) - .addDelivery(s) - .addDelivery(s2) - .build(); - - assertEquals("vehLoc", route.getEnd().getLocation().getId()); + Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("vehLoc")).setEndLocation(Location.newInstance("vehLoc")).build(); + VehicleRoute route = VehicleRoute.Builder.newInstance(vehicle, driver).addPickup(s).addPickup(s2).addDelivery(s).addDelivery(s2).build(); + assertEquals(route.getEnd().getLocation().getId(), "vehLoc"); } @Test - public void shouldUseLastActivityLocation_whenBuildingOpenRoute() { + @DisplayName("Should Use Last Activity Location _ when Building Open Route") + void shouldUseLastActivityLocation_whenBuildingOpenRoute() { Shipment s = createMockShipment(null); Shipment s2 = createMockShipment("vehLoc"); - Vehicle vehicle = mock(Vehicle.class); when(vehicle.isReturnToDepot()).thenReturn(false); when(vehicle.getStartLocation()).thenReturn(loc("vehLoc")); - - VehicleRoute route = VehicleRoute.Builder.newInstance(vehicle, mock(Driver.class)) - .addPickup(s) - .addPickup(s2) - .addDelivery(s) - .addDelivery(s2) - .build(); - + VehicleRoute route = VehicleRoute.Builder.newInstance(vehicle, mock(Driver.class)).addPickup(s).addPickup(s2).addDelivery(s).addDelivery(s2).build(); assertEquals(route.getEnd().getLocation().getId(), s2.getDeliveryLocation().getId()); } @@ -154,26 +147,15 @@ private Location loc(String delLoc) { } @Test - public void houldSetDepartureTimeCorrectly() { + @DisplayName("Hould Set Departure Time Correctly") + void houldSetDepartureTimeCorrectly() { Shipment s = createMockShipment(null); Shipment s2 = createMockShipment("delLoc"); - Vehicle vehicle = mock(Vehicle.class); when(vehicle.isReturnToDepot()).thenReturn(false); when(vehicle.getStartLocation()).thenReturn(Location.Builder.newInstance().setId("vehLoc").build()); - - VehicleRoute route = VehicleRoute.Builder.newInstance(vehicle, mock(Driver.class)) - .addPickup(s) - .addPickup(s2) - .addDelivery(s) - .addDelivery(s2) - .setDepartureTime(100) - .build(); - + VehicleRoute route = VehicleRoute.Builder.newInstance(vehicle, mock(Driver.class)).addPickup(s).addPickup(s2).addDelivery(s).addDelivery(s2).setDepartureTime(100).build(); assertEquals(100.0, route.getDepartureTime(), 0.01); assertEquals(100.0, route.getStart().getEndTime(), 0.01); } - - - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/BreakActivityTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/BreakActivityTest.java index 9f42f335e..7f4ec43f2 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/BreakActivityTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/BreakActivityTest.java @@ -20,90 +20,92 @@ import com.graphhopper.jsprit.core.problem.Location; import com.graphhopper.jsprit.core.problem.job.Break; import com.graphhopper.jsprit.core.problem.job.Service; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; -import static org.junit.Assert.*; +import static org.junit.jupiter.api.Assertions.*; - -public class BreakActivityTest { +@DisplayName("Break Activity Test") +class BreakActivityTest { private Break service; private BreakActivity serviceActivity; - @Before - public void doBefore() { - service = Break.Builder.newInstance("service") - .setTimeWindow(TimeWindow.newInstance(1., 2.)).setServiceTime(3).build(); + @BeforeEach + void doBefore() { + service = Break.Builder.newInstance("service").setTimeWindow(TimeWindow.newInstance(1., 2.)).setServiceTime(3).build(); serviceActivity = BreakActivity.newInstance(service); serviceActivity.setTheoreticalEarliestOperationStartTime(service.getTimeWindow().getStart()); serviceActivity.setTheoreticalLatestOperationStartTime(service.getTimeWindow().getEnd()); } @Test - public void whenCallingCapacity_itShouldReturnCorrectCapacity() { + @DisplayName("When Calling Capacity _ it Should Return Correct Capacity") + void whenCallingCapacity_itShouldReturnCorrectCapacity() { assertEquals(0, serviceActivity.getSize().get(0)); } @Test - public void hasVariableLocationShouldBeTrue() { + @DisplayName("Has Variable Location Should Be True") + void hasVariableLocationShouldBeTrue() { Break aBreak = (Break) serviceActivity.getJob(); assertTrue(aBreak.hasVariableLocation()); } - @Test - public void whenStartIsIniWithEarliestStart_itShouldBeSetCorrectly() { + @DisplayName("When Start Is Ini With Earliest Start _ it Should Be Set Correctly") + void whenStartIsIniWithEarliestStart_itShouldBeSetCorrectly() { assertEquals(1., serviceActivity.getTheoreticalEarliestOperationStartTime(), 0.01); } @Test - public void whenStartIsIniWithLatestStart_itShouldBeSetCorrectly() { + @DisplayName("When Start Is Ini With Latest Start _ it Should Be Set Correctly") + void whenStartIsIniWithLatestStart_itShouldBeSetCorrectly() { assertEquals(2., serviceActivity.getTheoreticalLatestOperationStartTime(), 0.01); } @Test - public void whenSettingArrTime_itShouldBeSetCorrectly() { + @DisplayName("When Setting Arr Time _ it Should Be Set Correctly") + void whenSettingArrTime_itShouldBeSetCorrectly() { serviceActivity.setArrTime(4.0); assertEquals(4., serviceActivity.getArrTime(), 0.01); } @Test - public void whenSettingEndTime_itShouldBeSetCorrectly() { + @DisplayName("When Setting End Time _ it Should Be Set Correctly") + void whenSettingEndTime_itShouldBeSetCorrectly() { serviceActivity.setEndTime(5.0); assertEquals(5., serviceActivity.getEndTime(), 0.01); } - @Test - public void whenCopyingStart_itShouldBeDoneCorrectly() { + @DisplayName("When Copying Start _ it Should Be Done Correctly") + void whenCopyingStart_itShouldBeDoneCorrectly() { BreakActivity copy = (BreakActivity) serviceActivity.duplicate(); assertEquals(1., copy.getTheoreticalEarliestOperationStartTime(), 0.01); assertEquals(2., copy.getTheoreticalLatestOperationStartTime(), 0.01); assertTrue(copy != serviceActivity); } - @Test - public void whenTwoDeliveriesHaveTheSameUnderlyingJob_theyAreEqual() { + @DisplayName("When Two Deliveries Have The Same Underlying Job _ they Are Equal") + void whenTwoDeliveriesHaveTheSameUnderlyingJob_theyAreEqual() { Service s1 = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")).build(); Service s2 = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")).build(); - ServiceActivity d1 = ServiceActivity.newInstance(s1); ServiceActivity d2 = ServiceActivity.newInstance(s2); - assertTrue(d1.equals(d2)); } @Test - public void whenTwoDeliveriesHaveTheDifferentUnderlyingJob_theyAreNotEqual() { + @DisplayName("When Two Deliveries Have The Different Underlying Job _ they Are Not Equal") + void whenTwoDeliveriesHaveTheDifferentUnderlyingJob_theyAreNotEqual() { Service s1 = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")).build(); Service s2 = Service.Builder.newInstance("s1").setLocation(Location.newInstance("loc")).build(); - ServiceActivity d1 = ServiceActivity.newInstance(s1); ServiceActivity d2 = ServiceActivity.newInstance(s2); - assertFalse(d1.equals(d2)); } } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/DefaultShipmentActivityFactoryTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/DefaultShipmentActivityFactoryTest.java index c613601e8..9269cd29b 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/DefaultShipmentActivityFactoryTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/DefaultShipmentActivityFactoryTest.java @@ -19,28 +19,30 @@ import com.graphhopper.jsprit.core.problem.Location; import com.graphhopper.jsprit.core.problem.job.Shipment; -import org.junit.Test; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; -public class DefaultShipmentActivityFactoryTest { +@DisplayName("Default Shipment Activity Factory Test") +class DefaultShipmentActivityFactoryTest { @Test - public void whenCreatingPickupActivityWithShipment_itShouldReturnPickupShipment() { + @DisplayName("When Creating Pickup Activity With Shipment _ it Should Return Pickup Shipment") + void whenCreatingPickupActivityWithShipment_itShouldReturnPickupShipment() { DefaultShipmentActivityFactory factory = new DefaultShipmentActivityFactory(); - Shipment shipment = Shipment.Builder.newInstance("s") - .setPickupLocation(Location.Builder.newInstance().setId("pLoc").build()).setDeliveryLocation(Location.newInstance("dLoc")).build(); + Shipment shipment = Shipment.Builder.newInstance("s").setPickupLocation(Location.Builder.newInstance().setId("pLoc").build()).setDeliveryLocation(Location.newInstance("dLoc")).build(); TourActivity act = factory.createPickup(shipment); assertNotNull(act); assertTrue(act instanceof PickupShipment); } @Test - public void whenCreatingDeliverActivityWithShipment_itShouldReturnDeliverShipment() { + @DisplayName("When Creating Deliver Activity With Shipment _ it Should Return Deliver Shipment") + void whenCreatingDeliverActivityWithShipment_itShouldReturnDeliverShipment() { DefaultShipmentActivityFactory factory = new DefaultShipmentActivityFactory(); - Shipment shipment = Shipment.Builder.newInstance("s") - .setPickupLocation(Location.Builder.newInstance().setId("pLoc").build()).setDeliveryLocation(Location.newInstance("dLoc")).build(); + Shipment shipment = Shipment.Builder.newInstance("s").setPickupLocation(Location.Builder.newInstance().setId("pLoc").build()).setDeliveryLocation(Location.newInstance("dLoc")).build(); TourActivity act = factory.createDelivery(shipment); assertNotNull(act); assertTrue(act instanceof DeliverShipment); diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/DefaultTourActivityFactoryTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/DefaultTourActivityFactoryTest.java index c28dce48b..cf969471a 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/DefaultTourActivityFactoryTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/DefaultTourActivityFactoryTest.java @@ -21,15 +21,18 @@ import com.graphhopper.jsprit.core.problem.job.Delivery; import com.graphhopper.jsprit.core.problem.job.Pickup; import com.graphhopper.jsprit.core.problem.job.Service; -import org.junit.Test; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; -public class DefaultTourActivityFactoryTest { +@DisplayName("Default Tour Activity Factory Test") +class DefaultTourActivityFactoryTest { @Test - public void whenCreatingActivityWithService_itShouldReturnPickupService() { + @DisplayName("When Creating Activity With Service _ it Should Return Pickup Service") + void whenCreatingActivityWithService_itShouldReturnPickupService() { DefaultTourActivityFactory factory = new DefaultTourActivityFactory(); Service service = Service.Builder.newInstance("service").setLocation(Location.newInstance("loc")).build(); TourActivity act = factory.createActivity(service); @@ -38,7 +41,8 @@ public void whenCreatingActivityWithService_itShouldReturnPickupService() { } @Test - public void whenCreatingActivityWithPickup_itShouldReturnPickupService() { + @DisplayName("When Creating Activity With Pickup _ it Should Return Pickup Service") + void whenCreatingActivityWithPickup_itShouldReturnPickupService() { DefaultTourActivityFactory factory = new DefaultTourActivityFactory(); Pickup service = (Pickup) Pickup.Builder.newInstance("service").setLocation(Location.newInstance("loc")).build(); TourActivity act = factory.createActivity(service); @@ -47,12 +51,12 @@ public void whenCreatingActivityWithPickup_itShouldReturnPickupService() { } @Test - public void whenCreatingActivityWithDelivery_itShouldReturnDeliverService() { + @DisplayName("When Creating Activity With Delivery _ it Should Return Deliver Service") + void whenCreatingActivityWithDelivery_itShouldReturnDeliverService() { DefaultTourActivityFactory factory = new DefaultTourActivityFactory(); Delivery service = (Delivery) Delivery.Builder.newInstance("service").setLocation(Location.newInstance("loc")).build(); TourActivity act = factory.createActivity(service); assertNotNull(act); assertTrue(act instanceof DeliverService); } - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/DeliverServiceTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/DeliverServiceTest.java index 19c14f4fd..2d5ef5f15 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/DeliverServiceTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/DeliverServiceTest.java @@ -19,72 +19,78 @@ import com.graphhopper.jsprit.core.problem.Location; import com.graphhopper.jsprit.core.problem.job.Delivery; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; -public class DeliverServiceTest { +@DisplayName("Deliver Service Test") +class DeliverServiceTest { private Delivery service; private DeliverService deliver; - @Before - public void doBefore() { - service = Delivery.Builder.newInstance("service").setLocation(Location.newInstance("loc")). - setTimeWindow(TimeWindow.newInstance(1., 2.)). - addSizeDimension(0, 10).addSizeDimension(1, 100).addSizeDimension(2, 1000).build(); + @BeforeEach + void doBefore() { + service = Delivery.Builder.newInstance("service").setLocation(Location.newInstance("loc")).setTimeWindow(TimeWindow.newInstance(1., 2.)).addSizeDimension(0, 10).addSizeDimension(1, 100).addSizeDimension(2, 1000).build(); deliver = new DeliverService(service); deliver.setTheoreticalEarliestOperationStartTime(service.getTimeWindow().getStart()); deliver.setTheoreticalLatestOperationStartTime(service.getTimeWindow().getEnd()); } @Test - public void whenCallingCapacity_itShouldReturnCorrectCapacity() { + @DisplayName("When Calling Capacity _ it Should Return Correct Capacity") + void whenCallingCapacity_itShouldReturnCorrectCapacity() { assertEquals(-10, deliver.getSize().get(0)); assertEquals(-100, deliver.getSize().get(1)); assertEquals(-1000, deliver.getSize().get(2)); } @Test - public void whenStartIsIniWithEarliestStart_itShouldBeSetCorrectly() { + @DisplayName("When Start Is Ini With Earliest Start _ it Should Be Set Correctly") + void whenStartIsIniWithEarliestStart_itShouldBeSetCorrectly() { assertEquals(1., deliver.getTheoreticalEarliestOperationStartTime(), 0.01); } @Test - public void whenStartIsIniWithLatestStart_itShouldBeSetCorrectly() { + @DisplayName("When Start Is Ini With Latest Start _ it Should Be Set Correctly") + void whenStartIsIniWithLatestStart_itShouldBeSetCorrectly() { assertEquals(2., deliver.getTheoreticalLatestOperationStartTime(), 0.01); } @Test - public void whenSettingArrTime_itShouldBeSetCorrectly() { + @DisplayName("When Setting Arr Time _ it Should Be Set Correctly") + void whenSettingArrTime_itShouldBeSetCorrectly() { deliver.setArrTime(4.0); assertEquals(4., deliver.getArrTime(), 0.01); } @Test - public void whenSettingEndTime_itShouldBeSetCorrectly() { + @DisplayName("When Setting End Time _ it Should Be Set Correctly") + void whenSettingEndTime_itShouldBeSetCorrectly() { deliver.setEndTime(5.0); assertEquals(5., deliver.getEndTime(), 0.01); } @Test - public void whenIniLocationId_itShouldBeSetCorrectly() { - assertEquals("loc", deliver.getLocation().getId()); + @DisplayName("When Ini Location Id _ it Should Be Set Correctly") + void whenIniLocationId_itShouldBeSetCorrectly() { + assertEquals(deliver.getLocation().getId(), "loc"); } @Test - public void whenCopyingStart_itShouldBeDoneCorrectly() { + @DisplayName("When Copying Start _ it Should Be Done Correctly") + void whenCopyingStart_itShouldBeDoneCorrectly() { DeliverService copy = (DeliverService) deliver.duplicate(); assertEquals(1., copy.getTheoreticalEarliestOperationStartTime(), 0.01); assertEquals(2., copy.getTheoreticalLatestOperationStartTime(), 0.01); - assertEquals("loc", copy.getLocation().getId()); + assertEquals(copy.getLocation().getId(), "loc"); assertEquals(-10, copy.getSize().get(0)); assertEquals(-100, copy.getSize().get(1)); assertEquals(-1000, copy.getSize().get(2)); assertTrue(copy != deliver); } - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/DeliverShipmentTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/DeliverShipmentTest.java index 4c0b16678..3a5d3142f 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/DeliverShipmentTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/DeliverShipmentTest.java @@ -19,82 +19,85 @@ import com.graphhopper.jsprit.core.problem.Location; import com.graphhopper.jsprit.core.problem.job.Shipment; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; -public class DeliverShipmentTest { +@DisplayName("Deliver Shipment Test") +class DeliverShipmentTest { private DeliverShipment deliver; - @Before - public void doBefore() { - Shipment shipment = Shipment.Builder.newInstance("shipment").setPickupLocation(Location.Builder.newInstance().setId("pickupLoc").build()) - .setDeliveryLocation(Location.newInstance("deliveryLoc")) - .setPickupTimeWindow(TimeWindow.newInstance(1., 2.)) - .setDeliveryTimeWindow(TimeWindow.newInstance(3., 4.)) - .addSizeDimension(0, 10).addSizeDimension(1, 100).addSizeDimension(2, 1000).build(); + @BeforeEach + void doBefore() { + Shipment shipment = Shipment.Builder.newInstance("shipment").setPickupLocation(Location.Builder.newInstance().setId("pickupLoc").build()).setDeliveryLocation(Location.newInstance("deliveryLoc")).setPickupTimeWindow(TimeWindow.newInstance(1., 2.)).setDeliveryTimeWindow(TimeWindow.newInstance(3., 4.)).addSizeDimension(0, 10).addSizeDimension(1, 100).addSizeDimension(2, 1000).build(); deliver = new DeliverShipment(shipment); deliver.setTheoreticalEarliestOperationStartTime(shipment.getDeliveryTimeWindow().getStart()); deliver.setTheoreticalLatestOperationStartTime(shipment.getDeliveryTimeWindow().getEnd()); } @Test - public void whenCallingCapacity_itShouldReturnCorrectCapacity() { + @DisplayName("When Calling Capacity _ it Should Return Correct Capacity") + void whenCallingCapacity_itShouldReturnCorrectCapacity() { assertEquals(-10, deliver.getSize().get(0)); assertEquals(-100, deliver.getSize().get(1)); assertEquals(-1000, deliver.getSize().get(2)); } @Test - public void whenStartIsIniWithEarliestStart_itShouldBeSetCorrectly() { + @DisplayName("When Start Is Ini With Earliest Start _ it Should Be Set Correctly") + void whenStartIsIniWithEarliestStart_itShouldBeSetCorrectly() { assertEquals(3., deliver.getTheoreticalEarliestOperationStartTime(), 0.01); } @Test - public void whenStartIsIniWithLatestStart_itShouldBeSetCorrectly() { + @DisplayName("When Start Is Ini With Latest Start _ it Should Be Set Correctly") + void whenStartIsIniWithLatestStart_itShouldBeSetCorrectly() { assertEquals(4., deliver.getTheoreticalLatestOperationStartTime(), 0.01); } @Test - public void whenSettingArrTime_itShouldBeSetCorrectly() { + @DisplayName("When Setting Arr Time _ it Should Be Set Correctly") + void whenSettingArrTime_itShouldBeSetCorrectly() { deliver.setArrTime(4.0); assertEquals(4., deliver.getArrTime(), 0.01); } @Test - public void whenSettingEndTime_itShouldBeSetCorrectly() { + @DisplayName("When Setting End Time _ it Should Be Set Correctly") + void whenSettingEndTime_itShouldBeSetCorrectly() { deliver.setEndTime(5.0); assertEquals(5., deliver.getEndTime(), 0.01); } @Test - public void whenIniLocationId_itShouldBeSetCorrectly() { - assertEquals("deliveryLoc", deliver.getLocation().getId()); + @DisplayName("When Ini Location Id _ it Should Be Set Correctly") + void whenIniLocationId_itShouldBeSetCorrectly() { + assertEquals(deliver.getLocation().getId(), "deliveryLoc"); } @Test - public void whenCopyingStart_itShouldBeDoneCorrectly() { + @DisplayName("When Copying Start _ it Should Be Done Correctly") + void whenCopyingStart_itShouldBeDoneCorrectly() { DeliverShipment copy = (DeliverShipment) deliver.duplicate(); assertEquals(3., copy.getTheoreticalEarliestOperationStartTime(), 0.01); assertEquals(4., copy.getTheoreticalLatestOperationStartTime(), 0.01); - assertEquals("deliveryLoc", copy.getLocation().getId()); + assertEquals(copy.getLocation().getId(), "deliveryLoc"); assertEquals(-10, copy.getSize().get(0)); assertEquals(-100, copy.getSize().get(1)); assertEquals(-1000, copy.getSize().get(2)); assertTrue(copy != deliver); } - @Test - public void whenGettingCapacity_itShouldReturnItCorrectly() { - Shipment shipment = Shipment.Builder.newInstance("s").setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).setDeliveryLocation(Location.newInstance("delLoc")) - .addSizeDimension(0, 10).addSizeDimension(1, 100).build(); + @DisplayName("When Getting Capacity _ it Should Return It Correctly") + void whenGettingCapacity_itShouldReturnItCorrectly() { + Shipment shipment = Shipment.Builder.newInstance("s").setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).setDeliveryLocation(Location.newInstance("delLoc")).addSizeDimension(0, 10).addSizeDimension(1, 100).build(); PickupShipment pick = new PickupShipment(shipment); assertEquals(10, pick.getSize().get(0)); assertEquals(100, pick.getSize().get(1)); } - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/EndTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/EndTest.java index c4257deeb..a4c5029a2 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/EndTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/EndTest.java @@ -17,64 +17,70 @@ */ package com.graphhopper.jsprit.core.problem.solution.route.activity; -import org.junit.Test; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; -public class EndTest { +@DisplayName("End Test") +class EndTest { @Test - public void whenCallingCapacity_itShouldReturnEmptyCapacity() { + @DisplayName("When Calling Capacity _ it Should Return Empty Capacity") + void whenCallingCapacity_itShouldReturnEmptyCapacity() { End end = End.newInstance("loc", 0., 0.); assertEquals(0, end.getSize().get(0)); } @Test - public void whenStartIsIniWithEarliestStart_itShouldBeSetCorrectly() { + @DisplayName("When Start Is Ini With Earliest Start _ it Should Be Set Correctly") + void whenStartIsIniWithEarliestStart_itShouldBeSetCorrectly() { End end = End.newInstance("loc", 1., 2.); assertEquals(1., end.getTheoreticalEarliestOperationStartTime(), 0.01); } @Test - public void whenStartIsIniWithLatestStart_itShouldBeSetCorrectly() { + @DisplayName("When Start Is Ini With Latest Start _ it Should Be Set Correctly") + void whenStartIsIniWithLatestStart_itShouldBeSetCorrectly() { End end = End.newInstance("loc", 1., 2.); assertEquals(2., end.getTheoreticalLatestOperationStartTime(), 0.01); } @Test - public void whenSettingEndTime_itShouldBeSetCorrectly() { + @DisplayName("When Setting End Time _ it Should Be Set Correctly") + void whenSettingEndTime_itShouldBeSetCorrectly() { End end = End.newInstance("loc", 1., 2.); end.setEndTime(4.0); assertEquals(4., end.getEndTime(), 0.01); } - @Test - public void whenSettingEarliestStart_itShouldBeSetCorrectly() { + @DisplayName("When Setting Earliest Start _ it Should Be Set Correctly") + void whenSettingEarliestStart_itShouldBeSetCorrectly() { End end = End.newInstance("loc", 1., 2.); end.setTheoreticalEarliestOperationStartTime(5.); assertEquals(5., end.getTheoreticalEarliestOperationStartTime(), 0.01); } @Test - public void whenSettingLatestStart_itShouldBeSetCorrectly() { + @DisplayName("When Setting Latest Start _ it Should Be Set Correctly") + void whenSettingLatestStart_itShouldBeSetCorrectly() { End end = End.newInstance("loc", 1., 2.); end.setTheoreticalLatestOperationStartTime(5.); assertEquals(5., end.getTheoreticalLatestOperationStartTime(), 0.01); } @Test - public void whenCopyingEnd_itShouldBeDoneCorrectly() { + @DisplayName("When Copying End _ it Should Be Done Correctly") + void whenCopyingEnd_itShouldBeDoneCorrectly() { End end = End.newInstance("loc", 1., 2.); end.setTheoreticalEarliestOperationStartTime(3.); end.setTheoreticalLatestOperationStartTime(5.); - End copy = End.copyOf(end); assertEquals(3., copy.getTheoreticalEarliestOperationStartTime(), 0.01); assertEquals(5., copy.getTheoreticalLatestOperationStartTime(), 0.01); - assertEquals("loc", copy.getLocation().getId()); + assertEquals(copy.getLocation().getId(), "loc"); assertTrue(copy != end); } - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/PickupServiceTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/PickupServiceTest.java index cb69738db..c36b13ce1 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/PickupServiceTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/PickupServiceTest.java @@ -19,73 +19,78 @@ import com.graphhopper.jsprit.core.problem.Location; import com.graphhopper.jsprit.core.problem.job.Service; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; -public class PickupServiceTest { +@DisplayName("Pickup Service Test") +class PickupServiceTest { private Service service; private PickupService pickup; - @Before - public void doBefore() { - service = Service.Builder.newInstance("service").setLocation(Location.newInstance("loc")). - setTimeWindow(TimeWindow.newInstance(1., 2.)). - addSizeDimension(0, 10).addSizeDimension(1, 100).addSizeDimension(2, 1000).build(); + @BeforeEach + void doBefore() { + service = Service.Builder.newInstance("service").setLocation(Location.newInstance("loc")).setTimeWindow(TimeWindow.newInstance(1., 2.)).addSizeDimension(0, 10).addSizeDimension(1, 100).addSizeDimension(2, 1000).build(); pickup = new PickupService(service); pickup.setTheoreticalEarliestOperationStartTime(service.getTimeWindow().getStart()); pickup.setTheoreticalLatestOperationStartTime(service.getTimeWindow().getEnd()); } @Test - public void whenCallingCapacity_itShouldReturnCorrectCapacity() { + @DisplayName("When Calling Capacity _ it Should Return Correct Capacity") + void whenCallingCapacity_itShouldReturnCorrectCapacity() { assertEquals(10, pickup.getSize().get(0)); assertEquals(100, pickup.getSize().get(1)); assertEquals(1000, pickup.getSize().get(2)); } - @Test - public void whenStartIsIniWithEarliestStart_itShouldBeSetCorrectly() { + @DisplayName("When Start Is Ini With Earliest Start _ it Should Be Set Correctly") + void whenStartIsIniWithEarliestStart_itShouldBeSetCorrectly() { assertEquals(1., pickup.getTheoreticalEarliestOperationStartTime(), 0.01); } @Test - public void whenStartIsIniWithLatestStart_itShouldBeSetCorrectly() { + @DisplayName("When Start Is Ini With Latest Start _ it Should Be Set Correctly") + void whenStartIsIniWithLatestStart_itShouldBeSetCorrectly() { assertEquals(2., pickup.getTheoreticalLatestOperationStartTime(), 0.01); } @Test - public void whenSettingArrTime_itShouldBeSetCorrectly() { + @DisplayName("When Setting Arr Time _ it Should Be Set Correctly") + void whenSettingArrTime_itShouldBeSetCorrectly() { pickup.setArrTime(4.0); assertEquals(4., pickup.getArrTime(), 0.01); } @Test - public void whenSettingEndTime_itShouldBeSetCorrectly() { + @DisplayName("When Setting End Time _ it Should Be Set Correctly") + void whenSettingEndTime_itShouldBeSetCorrectly() { pickup.setEndTime(5.0); assertEquals(5., pickup.getEndTime(), 0.01); } @Test - public void whenIniLocationId_itShouldBeSetCorrectly() { - assertEquals("loc", pickup.getLocation().getId()); + @DisplayName("When Ini Location Id _ it Should Be Set Correctly") + void whenIniLocationId_itShouldBeSetCorrectly() { + assertEquals(pickup.getLocation().getId(), "loc"); } @Test - public void whenCopyingStart_itShouldBeDoneCorrectly() { + @DisplayName("When Copying Start _ it Should Be Done Correctly") + void whenCopyingStart_itShouldBeDoneCorrectly() { PickupService copy = (PickupService) pickup.duplicate(); assertEquals(1., copy.getTheoreticalEarliestOperationStartTime(), 0.01); assertEquals(2., copy.getTheoreticalLatestOperationStartTime(), 0.01); - assertEquals("loc", copy.getLocation().getId()); + assertEquals(copy.getLocation().getId(), "loc"); assertEquals(10, copy.getSize().get(0)); assertEquals(100, copy.getSize().get(1)); assertEquals(1000, copy.getSize().get(2)); assertTrue(copy != pickup); } - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/PickupShipmentTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/PickupShipmentTest.java index 822bc903d..312ae25f4 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/PickupShipmentTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/PickupShipmentTest.java @@ -19,82 +19,85 @@ import com.graphhopper.jsprit.core.problem.Location; import com.graphhopper.jsprit.core.problem.job.Shipment; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; -public class PickupShipmentTest { +@DisplayName("Pickup Shipment Test") +class PickupShipmentTest { private PickupShipment pickup; - @Before - public void doBefore() { - Shipment shipment = Shipment.Builder.newInstance("shipment").setPickupLocation(Location.Builder.newInstance().setId("pickupLoc").build()) - .setDeliveryLocation(Location.newInstance("deliveryLoc")) - .setPickupTimeWindow(TimeWindow.newInstance(1., 2.)) - .setDeliveryTimeWindow(TimeWindow.newInstance(3., 4.)) - .addSizeDimension(0, 10).addSizeDimension(1, 100).addSizeDimension(2, 1000).build(); + @BeforeEach + void doBefore() { + Shipment shipment = Shipment.Builder.newInstance("shipment").setPickupLocation(Location.Builder.newInstance().setId("pickupLoc").build()).setDeliveryLocation(Location.newInstance("deliveryLoc")).setPickupTimeWindow(TimeWindow.newInstance(1., 2.)).setDeliveryTimeWindow(TimeWindow.newInstance(3., 4.)).addSizeDimension(0, 10).addSizeDimension(1, 100).addSizeDimension(2, 1000).build(); pickup = new PickupShipment(shipment); pickup.setTheoreticalEarliestOperationStartTime(shipment.getPickupTimeWindow().getStart()); pickup.setTheoreticalLatestOperationStartTime(shipment.getPickupTimeWindow().getEnd()); } @Test - public void whenCallingCapacity_itShouldReturnCorrectCapacity() { + @DisplayName("When Calling Capacity _ it Should Return Correct Capacity") + void whenCallingCapacity_itShouldReturnCorrectCapacity() { assertEquals(10, pickup.getSize().get(0)); assertEquals(100, pickup.getSize().get(1)); assertEquals(1000, pickup.getSize().get(2)); } @Test - public void whenStartIsIniWithEarliestStart_itShouldBeSetCorrectly() { + @DisplayName("When Start Is Ini With Earliest Start _ it Should Be Set Correctly") + void whenStartIsIniWithEarliestStart_itShouldBeSetCorrectly() { assertEquals(1., pickup.getTheoreticalEarliestOperationStartTime(), 0.01); } @Test - public void whenStartIsIniWithLatestStart_itShouldBeSetCorrectly() { + @DisplayName("When Start Is Ini With Latest Start _ it Should Be Set Correctly") + void whenStartIsIniWithLatestStart_itShouldBeSetCorrectly() { assertEquals(2., pickup.getTheoreticalLatestOperationStartTime(), 0.01); } @Test - public void whenSettingArrTime_itShouldBeSetCorrectly() { + @DisplayName("When Setting Arr Time _ it Should Be Set Correctly") + void whenSettingArrTime_itShouldBeSetCorrectly() { pickup.setArrTime(4.0); assertEquals(4., pickup.getArrTime(), 0.01); } @Test - public void whenSettingEndTime_itShouldBeSetCorrectly() { + @DisplayName("When Setting End Time _ it Should Be Set Correctly") + void whenSettingEndTime_itShouldBeSetCorrectly() { pickup.setEndTime(5.0); assertEquals(5., pickup.getEndTime(), 0.01); } @Test - public void whenIniLocationId_itShouldBeSetCorrectly() { - assertEquals("pickupLoc", pickup.getLocation().getId()); + @DisplayName("When Ini Location Id _ it Should Be Set Correctly") + void whenIniLocationId_itShouldBeSetCorrectly() { + assertEquals(pickup.getLocation().getId(), "pickupLoc"); } @Test - public void whenCopyingStart_itShouldBeDoneCorrectly() { + @DisplayName("When Copying Start _ it Should Be Done Correctly") + void whenCopyingStart_itShouldBeDoneCorrectly() { PickupShipment copy = (PickupShipment) pickup.duplicate(); assertEquals(1., copy.getTheoreticalEarliestOperationStartTime(), 0.01); assertEquals(2., copy.getTheoreticalLatestOperationStartTime(), 0.01); - assertEquals("pickupLoc", copy.getLocation().getId()); + assertEquals(copy.getLocation().getId(), "pickupLoc"); assertEquals(10, copy.getSize().get(0)); assertEquals(100, copy.getSize().get(1)); assertEquals(1000, copy.getSize().get(2)); assertTrue(copy != pickup); } - @Test - public void whenGettingCapacity_itShouldReturnItCorrectly() { - Shipment shipment = Shipment.Builder.newInstance("s").setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).setDeliveryLocation(Location.newInstance("delLoc")) - .addSizeDimension(0, 10).addSizeDimension(1, 100).build(); + @DisplayName("When Getting Capacity _ it Should Return It Correctly") + void whenGettingCapacity_itShouldReturnItCorrectly() { + Shipment shipment = Shipment.Builder.newInstance("s").setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()).setDeliveryLocation(Location.newInstance("delLoc")).addSizeDimension(0, 10).addSizeDimension(1, 100).build(); PickupShipment pick = new PickupShipment(shipment); assertEquals(10, pick.getSize().get(0)); assertEquals(100, pick.getSize().get(1)); } - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/ServiceActivityTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/ServiceActivityTest.java index 4dedf751a..7d8a32d10 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/ServiceActivityTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/ServiceActivityTest.java @@ -19,93 +19,94 @@ import com.graphhopper.jsprit.core.problem.Location; import com.graphhopper.jsprit.core.problem.job.Service; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; -import static org.junit.Assert.*; +import static org.junit.jupiter.api.Assertions.*; - -public class ServiceActivityTest { +@DisplayName("Service Activity Test") +class ServiceActivityTest { private Service service; private ServiceActivity serviceActivity; - @Before - public void doBefore() { - service = Service.Builder.newInstance("service").setLocation(Location.newInstance("loc")). - setTimeWindow(TimeWindow.newInstance(1., 2.)). - addSizeDimension(0, 10).addSizeDimension(1, 100).addSizeDimension(2, 1000).build(); + @BeforeEach + void doBefore() { + service = Service.Builder.newInstance("service").setLocation(Location.newInstance("loc")).setTimeWindow(TimeWindow.newInstance(1., 2.)).addSizeDimension(0, 10).addSizeDimension(1, 100).addSizeDimension(2, 1000).build(); serviceActivity = ServiceActivity.newInstance(service); serviceActivity.setTheoreticalEarliestOperationStartTime(service.getTimeWindow().getStart()); serviceActivity.setTheoreticalLatestOperationStartTime(service.getTimeWindow().getEnd()); } @Test - public void whenCallingCapacity_itShouldReturnCorrectCapacity() { - Assert.assertEquals(10, serviceActivity.getSize().get(0)); - Assert.assertEquals(100, serviceActivity.getSize().get(1)); - Assert.assertEquals(1000, serviceActivity.getSize().get(2)); + @DisplayName("When Calling Capacity _ it Should Return Correct Capacity") + void whenCallingCapacity_itShouldReturnCorrectCapacity() { + assertEquals(10, serviceActivity.getSize().get(0)); + assertEquals(100, serviceActivity.getSize().get(1)); + assertEquals(1000, serviceActivity.getSize().get(2)); } - @Test - public void whenStartIsIniWithEarliestStart_itShouldBeSetCorrectly() { + @DisplayName("When Start Is Ini With Earliest Start _ it Should Be Set Correctly") + void whenStartIsIniWithEarliestStart_itShouldBeSetCorrectly() { assertEquals(1., serviceActivity.getTheoreticalEarliestOperationStartTime(), 0.01); } @Test - public void whenStartIsIniWithLatestStart_itShouldBeSetCorrectly() { + @DisplayName("When Start Is Ini With Latest Start _ it Should Be Set Correctly") + void whenStartIsIniWithLatestStart_itShouldBeSetCorrectly() { assertEquals(2., serviceActivity.getTheoreticalLatestOperationStartTime(), 0.01); } @Test - public void whenSettingArrTime_itShouldBeSetCorrectly() { + @DisplayName("When Setting Arr Time _ it Should Be Set Correctly") + void whenSettingArrTime_itShouldBeSetCorrectly() { serviceActivity.setArrTime(4.0); assertEquals(4., serviceActivity.getArrTime(), 0.01); } @Test - public void whenSettingEndTime_itShouldBeSetCorrectly() { + @DisplayName("When Setting End Time _ it Should Be Set Correctly") + void whenSettingEndTime_itShouldBeSetCorrectly() { serviceActivity.setEndTime(5.0); assertEquals(5., serviceActivity.getEndTime(), 0.01); } @Test - public void whenIniLocationId_itShouldBeSetCorrectly() { - assertEquals("loc", serviceActivity.getLocation().getId()); + @DisplayName("When Ini Location Id _ it Should Be Set Correctly") + void whenIniLocationId_itShouldBeSetCorrectly() { + assertEquals(serviceActivity.getLocation().getId(), "loc"); } @Test - public void whenCopyingStart_itShouldBeDoneCorrectly() { + @DisplayName("When Copying Start _ it Should Be Done Correctly") + void whenCopyingStart_itShouldBeDoneCorrectly() { ServiceActivity copy = (ServiceActivity) serviceActivity.duplicate(); assertEquals(1., copy.getTheoreticalEarliestOperationStartTime(), 0.01); assertEquals(2., copy.getTheoreticalLatestOperationStartTime(), 0.01); - assertEquals("loc", copy.getLocation().getId()); + assertEquals(copy.getLocation().getId(), "loc"); assertTrue(copy != serviceActivity); } - @Test - public void whenTwoDeliveriesHaveTheSameUnderlyingJob_theyAreEqual() { + @DisplayName("When Two Deliveries Have The Same Underlying Job _ they Are Equal") + void whenTwoDeliveriesHaveTheSameUnderlyingJob_theyAreEqual() { Service s1 = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")).build(); Service s2 = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")).build(); - ServiceActivity d1 = ServiceActivity.newInstance(s1); ServiceActivity d2 = ServiceActivity.newInstance(s2); - assertTrue(d1.equals(d2)); } @Test - public void whenTwoDeliveriesHaveTheDifferentUnderlyingJob_theyAreNotEqual() { + @DisplayName("When Two Deliveries Have The Different Underlying Job _ they Are Not Equal") + void whenTwoDeliveriesHaveTheDifferentUnderlyingJob_theyAreNotEqual() { Service s1 = Service.Builder.newInstance("s").setLocation(Location.newInstance("loc")).build(); Service s2 = Service.Builder.newInstance("s1").setLocation(Location.newInstance("loc")).build(); - ServiceActivity d1 = ServiceActivity.newInstance(s1); ServiceActivity d2 = ServiceActivity.newInstance(s2); - assertFalse(d1.equals(d2)); } } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/StartTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/StartTest.java index 054f11617..5e4b05c38 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/StartTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/StartTest.java @@ -17,63 +17,70 @@ */ package com.graphhopper.jsprit.core.problem.solution.route.activity; -import org.junit.Test; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; -public class StartTest { +@DisplayName("Start Test") +class StartTest { @Test - public void whenCallingCapacity_itShouldReturnEmptyCapacity() { + @DisplayName("When Calling Capacity _ it Should Return Empty Capacity") + void whenCallingCapacity_itShouldReturnEmptyCapacity() { Start start = Start.newInstance("loc", 0., 0.); assertEquals(0, start.getSize().get(0)); } @Test - public void whenStartIsIniWithEarliestStart_itShouldBeSetCorrectly() { + @DisplayName("When Start Is Ini With Earliest Start _ it Should Be Set Correctly") + void whenStartIsIniWithEarliestStart_itShouldBeSetCorrectly() { Start start = Start.newInstance("loc", 1., 2.); assertEquals(1., start.getTheoreticalEarliestOperationStartTime(), 0.01); } @Test - public void whenStartIsIniWithLatestStart_itShouldBeSetCorrectly() { + @DisplayName("When Start Is Ini With Latest Start _ it Should Be Set Correctly") + void whenStartIsIniWithLatestStart_itShouldBeSetCorrectly() { Start start = Start.newInstance("loc", 1., 2.); assertEquals(2., start.getTheoreticalLatestOperationStartTime(), 0.01); } @Test - public void whenSettingStartEndTime_itShouldBeSetCorrectly() { + @DisplayName("When Setting Start End Time _ it Should Be Set Correctly") + void whenSettingStartEndTime_itShouldBeSetCorrectly() { Start start = Start.newInstance("loc", 1., 2.); start.setEndTime(4.0); assertEquals(4., start.getEndTime(), 0.01); } @Test - public void whenSettingEarliestStart_itShouldBeSetCorrectly() { + @DisplayName("When Setting Earliest Start _ it Should Be Set Correctly") + void whenSettingEarliestStart_itShouldBeSetCorrectly() { Start start = Start.newInstance("loc", 1., 2.); start.setTheoreticalEarliestOperationStartTime(5.); assertEquals(5., start.getTheoreticalEarliestOperationStartTime(), 0.01); } @Test - public void whenSettingLatestStart_itShouldBeSetCorrectly() { + @DisplayName("When Setting Latest Start _ it Should Be Set Correctly") + void whenSettingLatestStart_itShouldBeSetCorrectly() { Start start = Start.newInstance("loc", 1., 2.); start.setTheoreticalLatestOperationStartTime(5.); assertEquals(5., start.getTheoreticalLatestOperationStartTime(), 0.01); } @Test - public void whenCopyingStart_itShouldBeDoneCorrectly() { + @DisplayName("When Copying Start _ it Should Be Done Correctly") + void whenCopyingStart_itShouldBeDoneCorrectly() { Start start = Start.newInstance("loc", 1., 2.); start.setTheoreticalEarliestOperationStartTime(3.); start.setTheoreticalLatestOperationStartTime(5.); - Start copy = Start.copyOf(start); assertEquals(3., copy.getTheoreticalEarliestOperationStartTime(), 0.01); assertEquals(5., copy.getTheoreticalLatestOperationStartTime(), 0.01); - assertEquals("loc", copy.getLocation().getId()); + assertEquals(copy.getLocation().getId(), "loc"); assertTrue(copy != start); } - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TimeWindowTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TimeWindowTest.java index f033f9f83..65b201724 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TimeWindowTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TimeWindowTest.java @@ -17,6 +17,8 @@ */ package com.graphhopper.jsprit.core.problem.solution.route.activity; -public class TimeWindowTest { +import org.junit.jupiter.api.DisplayName; +@DisplayName("Time Window Test") +class TimeWindowTest { } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TimeWindowsImplTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TimeWindowsImplTest.java index 0780458bf..2fc6a748d 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TimeWindowsImplTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TimeWindowsImplTest.java @@ -15,34 +15,46 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.graphhopper.jsprit.core.problem.solution.route.activity; -import org.junit.Test; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertThrows; /** * Created by schroeder on 18/12/15. */ -public class TimeWindowsImplTest { +@DisplayName("Time Windows Impl Test") +class TimeWindowsImplTest { - @Test(expected = IllegalArgumentException.class) - public void overlappingTW_shouldThrowException(){ - TimeWindowsImpl tws = new TimeWindowsImpl(); - tws.add(TimeWindow.newInstance(50, 100)); - tws.add(TimeWindow.newInstance(90,150)); + @Test + @DisplayName("Overlapping TW _ should Throw Exception") + void overlappingTW_shouldThrowException() { + assertThrows(IllegalArgumentException.class, () -> { + TimeWindowsImpl tws = new TimeWindowsImpl(); + tws.add(TimeWindow.newInstance(50, 100)); + tws.add(TimeWindow.newInstance(90, 150)); + }); } - @Test(expected = IllegalArgumentException.class) - public void overlappingTW2_shouldThrowException(){ - TimeWindowsImpl tws = new TimeWindowsImpl(); - tws.add(TimeWindow.newInstance(50, 100)); - tws.add(TimeWindow.newInstance(40,150)); + @Test + @DisplayName("Overlapping TW 2 _ should Throw Exception") + void overlappingTW2_shouldThrowException() { + assertThrows(IllegalArgumentException.class, () -> { + TimeWindowsImpl tws = new TimeWindowsImpl(); + tws.add(TimeWindow.newInstance(50, 100)); + tws.add(TimeWindow.newInstance(40, 150)); + }); } - @Test(expected = IllegalArgumentException.class) - public void overlappingTW3_shouldThrowException(){ - TimeWindowsImpl tws = new TimeWindowsImpl(); - tws.add(TimeWindow.newInstance(50, 100)); - tws.add(TimeWindow.newInstance(50, 100)); + @Test + @DisplayName("Overlapping TW 3 _ should Throw Exception") + void overlappingTW3_shouldThrowException() { + assertThrows(IllegalArgumentException.class, () -> { + TimeWindowsImpl tws = new TimeWindowsImpl(); + tws.add(TimeWindow.newInstance(50, 100)); + tws.add(TimeWindow.newInstance(50, 100)); + }); } } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/vehicle/FiniteVehicleFleetManagerFactoryTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/vehicle/FiniteVehicleFleetManagerFactoryTest.java index ad601a23f..dc995253c 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/vehicle/FiniteVehicleFleetManagerFactoryTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/vehicle/FiniteVehicleFleetManagerFactoryTest.java @@ -17,14 +17,15 @@ */ package com.graphhopper.jsprit.core.problem.vehicle; -import org.junit.Test; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; -public class FiniteVehicleFleetManagerFactoryTest { +@DisplayName("Finite Vehicle Fleet Manager Factory Test") +class FiniteVehicleFleetManagerFactoryTest { @Test - public void whenFiniteVehicleManagerIsCreated_itShouldReturnCorrectManager() { -// VehicleFleetManager vfm = new FiniteFleetManagerFactory(Arrays.asList(mock(Vehicle.class))).createFleetManager(); - + @DisplayName("When Finite Vehicle Manager Is Created _ it Should Return Correct Manager") + void whenFiniteVehicleManagerIsCreated_itShouldReturnCorrectManager() { + // VehicleFleetManager vfm = new FiniteFleetManagerFactory(Arrays.asList(mock(Vehicle.class))).createFleetManager(); } - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleImplTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleImplTest.java index ae09e4483..712d6c746 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleImplTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleImplTest.java @@ -17,35 +17,35 @@ */ package com.graphhopper.jsprit.core.problem.vehicle; - import com.graphhopper.jsprit.core.problem.Location; import com.graphhopper.jsprit.core.problem.job.Break; import com.graphhopper.jsprit.core.problem.solution.route.activity.TimeWindow; -import org.junit.Test; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.HashMap; import java.util.Map; -import static org.junit.Assert.*; - - -public class VehicleImplTest { +import static org.junit.jupiter.api.Assertions.*; +@DisplayName("Vehicle Impl Test") +class VehicleImplTest { - @Test(expected = IllegalArgumentException.class) - public void whenVehicleIsBuiltWithoutSettingNeitherLocationNorCoord_itThrowsAnIllegalStateException() { - @SuppressWarnings("unused") - Vehicle v = VehicleImpl.Builder.newInstance("v").build(); + @Test + @DisplayName("When Vehicle Is Built Without Setting Neither Location Nor Coord _ it Throws An Illegal State Exception") + void whenVehicleIsBuiltWithoutSettingNeitherLocationNorCoord_itThrowsAnIllegalStateException() { + assertThrows(IllegalArgumentException.class, () -> { + @SuppressWarnings("unused") + Vehicle v = VehicleImpl.Builder.newInstance("v").build(); + }); } - @Test - public void whenAddingDriverBreak_itShouldBeAddedCorrectly() { + @DisplayName("When Adding Driver Break _ it Should Be Added Correctly") + void whenAddingDriverBreak_itShouldBeAddedCorrectly() { VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("type").build(); Break aBreak = Break.Builder.newInstance("break").setTimeWindow(TimeWindow.newInstance(100, 200)).setServiceTime(30).build(); - Vehicle v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("start")) - .setType(type1).setEndLocation(Location.newInstance("start")) - .setBreak(aBreak).build(); + Vehicle v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("start")).setType(type1).setEndLocation(Location.newInstance("start")).setBreak(aBreak).build(); assertNotNull(v.getBreak()); assertEquals(100., v.getBreak().getTimeWindow().getStart(), 0.1); assertEquals(200., v.getBreak().getTimeWindow().getEnd(), 0.1); @@ -53,223 +53,246 @@ public void whenAddingDriverBreak_itShouldBeAddedCorrectly() { } @Test - public void buildingANewVehicleBasedOnAnotherOneShouldWork() { + @DisplayName("Building A New Vehicle Based On Another One Should Work") + void buildingANewVehicleBasedOnAnotherOneShouldWork() { VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("type").build(); Break aBreak = Break.Builder.newInstance("break").setTimeWindow(TimeWindow.newInstance(100, 200)).setServiceTime(30).build(); - Vehicle v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("start")) - .setType(type1).setEndLocation(Location.newInstance("start")) - .setBreak(aBreak).build(); - + Vehicle v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("start")).setType(type1).setEndLocation(Location.newInstance("start")).setBreak(aBreak).build(); Vehicle newVehicle = VehicleImpl.Builder.newInstance(v).setStartLocation(Location.newInstance("newStartLocation")).build(); assertNotNull(newVehicle.getBreak()); assertEquals(100., newVehicle.getBreak().getTimeWindow().getStart(), 0.1); assertEquals(200., newVehicle.getBreak().getTimeWindow().getEnd(), 0.1); assertEquals(30., newVehicle.getBreak().getServiceDuration(), 0.1); - assertEquals("newStartLocation", newVehicle.getStartLocation().getId()); + assertEquals(newVehicle.getStartLocation().getId(), "newStartLocation"); assertEquals(type1, newVehicle.getType()); } - @Test - public void whenAddingSkills_theyShouldBeAddedCorrectly() { + @DisplayName("When Adding Skills _ they Should Be Added Correctly") + void whenAddingSkills_theyShouldBeAddedCorrectly() { VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("type").build(); - Vehicle v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("start")).setType(type1).setEndLocation(Location.newInstance("start")) - .addSkill("drill").addSkill("screwdriver").build(); + Vehicle v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("start")).setType(type1).setEndLocation(Location.newInstance("start")).addSkill("drill").addSkill("screwdriver").build(); assertTrue(v.getSkills().containsSkill("drill")); assertTrue(v.getSkills().containsSkill("drill")); assertTrue(v.getSkills().containsSkill("screwdriver")); } @Test - public void whenAddingSkillsCaseSens_theyShouldBeAddedCorrectly() { + @DisplayName("When Adding Skills Case Sens _ they Should Be Added Correctly") + void whenAddingSkillsCaseSens_theyShouldBeAddedCorrectly() { VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("type").build(); - Vehicle v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("start")).setType(type1).setEndLocation(Location.newInstance("start")) - .addSkill("drill").addSkill("screwdriver").build(); + Vehicle v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("start")).setType(type1).setEndLocation(Location.newInstance("start")).addSkill("drill").addSkill("screwdriver").build(); assertTrue(v.getSkills().containsSkill("drill")); assertTrue(v.getSkills().containsSkill("dRill")); assertTrue(v.getSkills().containsSkill("ScrewDriver")); } - @Test - public void whenVehicleIsBuiltToReturnToDepot_itShouldReturnToDepot() { + @DisplayName("When Vehicle Is Built To Return To Depot _ it Should Return To Depot") + void whenVehicleIsBuiltToReturnToDepot_itShouldReturnToDepot() { Vehicle v = VehicleImpl.Builder.newInstance("v").setReturnToDepot(true).setStartLocation(Location.newInstance("loc")).build(); assertTrue(v.isReturnToDepot()); } @Test - public void whenVehicleIsBuiltToNotReturnToDepot_itShouldNotReturnToDepot() { + @DisplayName("When Vehicle Is Built To Not Return To Depot _ it Should Not Return To Depot") + void whenVehicleIsBuiltToNotReturnToDepot_itShouldNotReturnToDepot() { Vehicle v = VehicleImpl.Builder.newInstance("v").setReturnToDepot(false).setStartLocation(Location.newInstance("loc")).build(); assertFalse(v.isReturnToDepot()); } @Test - public void whenVehicleIsBuiltWithLocation_itShouldHvTheCorrectLocation() { + @DisplayName("When Vehicle Is Built With Location _ it Should Hv The Correct Location") + void whenVehicleIsBuiltWithLocation_itShouldHvTheCorrectLocation() { Vehicle v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("loc")).build(); - assertEquals("loc", v.getStartLocation().getId()); + assertEquals(v.getStartLocation().getId(), "loc"); } @Test - public void whenVehicleIsBuiltWithCoord_itShouldHvTheCorrectCoord() { + @DisplayName("When Vehicle Is Built With Coord _ it Should Hv The Correct Coord") + void whenVehicleIsBuiltWithCoord_itShouldHvTheCorrectCoord() { Vehicle v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(1, 2)).build(); assertEquals(1.0, v.getStartLocation().getCoordinate().getX(), 0.01); assertEquals(2.0, v.getStartLocation().getCoordinate().getY(), 0.01); } @Test - public void whenVehicleIsBuiltAndEarliestStartIsNotSet_itShouldSetTheDefaultOfZero() { + @DisplayName("When Vehicle Is Built And Earliest Start Is Not Set _ it Should Set The Default Of Zero") + void whenVehicleIsBuiltAndEarliestStartIsNotSet_itShouldSetTheDefaultOfZero() { Vehicle v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(1, 2)).build(); assertEquals(0.0, v.getEarliestDeparture(), 0.01); } @Test - public void whenVehicleIsBuiltAndEarliestStartSet_itShouldBeSetCorrectly() { + @DisplayName("When Vehicle Is Built And Earliest Start Set _ it Should Be Set Correctly") + void whenVehicleIsBuiltAndEarliestStartSet_itShouldBeSetCorrectly() { Vehicle v = VehicleImpl.Builder.newInstance("v").setEarliestStart(10.0).setStartLocation(Location.newInstance(1, 2)).build(); assertEquals(10.0, v.getEarliestDeparture(), 0.01); } @Test - public void whenVehicleIsBuiltAndLatestArrivalIsNotSet_itShouldSetDefaultOfDoubleMaxValue() { + @DisplayName("When Vehicle Is Built And Latest Arrival Is Not Set _ it Should Set Default Of Double Max Value") + void whenVehicleIsBuiltAndLatestArrivalIsNotSet_itShouldSetDefaultOfDoubleMaxValue() { Vehicle v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(1, 2)).build(); assertEquals(Double.MAX_VALUE, v.getLatestArrival(), 0.01); } @Test - public void whenVehicleIsBuiltAndLatestArrivalIsSet_itShouldBeSetCorrectly() { + @DisplayName("When Vehicle Is Built And Latest Arrival Is Set _ it Should Be Set Correctly") + void whenVehicleIsBuiltAndLatestArrivalIsSet_itShouldBeSetCorrectly() { Vehicle v = VehicleImpl.Builder.newInstance("v").setLatestArrival(30.0).setStartLocation(Location.newInstance(1, 2)).build(); assertEquals(30.0, v.getLatestArrival(), 0.01); } @Test - public void whenNoVehicleIsCreate_itShouldHvTheCorrectId() { + @DisplayName("When No Vehicle Is Create _ it Should Hv The Correct Id") + void whenNoVehicleIsCreate_itShouldHvTheCorrectId() { Vehicle v = VehicleImpl.createNoVehicle(); - assertEquals("noVehicle", v.getId()); + assertEquals(v.getId(), "noVehicle"); } @Test - public void whenStartLocationIsSet_itIsDoneCorrectly() { + @DisplayName("When Start Location Is Set _ it Is Done Correctly") + void whenStartLocationIsSet_itIsDoneCorrectly() { Vehicle v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("startLoc")).build(); - assertEquals("startLoc", v.getStartLocation().getId()); + assertEquals(v.getStartLocation().getId(), "startLoc"); } - @Test(expected = IllegalArgumentException.class) - public void whenStartLocationIsNull_itThrowsException() { - @SuppressWarnings("unused") - Vehicle v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(null)).build(); + @Test + @DisplayName("When Start Location Is Null _ it Throws Exception") + void whenStartLocationIsNull_itThrowsException() { + assertThrows(IllegalArgumentException.class, () -> { + @SuppressWarnings("unused") + Vehicle v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(null)).build(); + }); } @Test - public void whenStartLocationCoordIsSet_itIsDoneCorrectly() { + @DisplayName("When Start Location Coord Is Set _ it Is Done Correctly") + void whenStartLocationCoordIsSet_itIsDoneCorrectly() { Vehicle v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(1, 2)).build(); assertEquals(1.0, v.getStartLocation().getCoordinate().getX(), 0.01); assertEquals(2.0, v.getStartLocation().getCoordinate().getY(), 0.01); } @Test - public void whenEndLocationIsSet_itIsDoneCorrectly() { + @DisplayName("When End Location Is Set _ it Is Done Correctly") + void whenEndLocationIsSet_itIsDoneCorrectly() { Vehicle v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("startLoc")).setEndLocation(Location.newInstance("endLoc")).build(); - assertEquals("startLoc", v.getStartLocation().getId()); - assertEquals("endLoc", v.getEndLocation().getId()); + assertEquals(v.getStartLocation().getId(), "startLoc"); + assertEquals(v.getEndLocation().getId(), "endLoc"); } @Test - public void whenEndLocationCoordIsSet_itIsDoneCorrectly() { + @DisplayName("When End Location Coord Is Set _ it Is Done Correctly") + void whenEndLocationCoordIsSet_itIsDoneCorrectly() { Vehicle v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("startLoc")).setEndLocation(Location.newInstance(1, 2)).build(); assertEquals(1.0, v.getEndLocation().getCoordinate().getX(), 0.01); assertEquals(2.0, v.getEndLocation().getCoordinate().getY(), 0.01); } - @Test - public void whenNeitherEndLocationIdNorEndLocationCoordAreSet_endLocationIdMustBeEqualToStartLocationId() { + @DisplayName("When Neither End Location Id Nor End Location Coord Are Set _ end Location Id Must Be Equal To Start Location Id") + void whenNeitherEndLocationIdNorEndLocationCoordAreSet_endLocationIdMustBeEqualToStartLocationId() { Vehicle v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("startLoc")).build(); - assertEquals("startLoc", v.getEndLocation().getId()); + assertEquals(v.getEndLocation().getId(), "startLoc"); } @Test - public void whenNeitherEndLocationIdNorEndLocationCoordAreSet_endLocationCoordMustBeEqualToStartLocationCoord() { + @DisplayName("When Neither End Location Id Nor End Location Coord Are Set _ end Location Coord Must Be Equal To Start Location Coord") + void whenNeitherEndLocationIdNorEndLocationCoordAreSet_endLocationCoordMustBeEqualToStartLocationCoord() { Vehicle v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("startLoc")).build(); assertEquals(v.getEndLocation().getCoordinate(), v.getStartLocation().getCoordinate()); } @Test - public void whenNeitherEndLocationIdNorEndLocationCoordAreSet_endLocationCoordMustBeEqualToStartLocationCoordV2() { + @DisplayName("When Neither End Location Id Nor End Location Coord Are Set _ end Location Coord Must Be Equal To Start Location Coord V 2") + void whenNeitherEndLocationIdNorEndLocationCoordAreSet_endLocationCoordMustBeEqualToStartLocationCoordV2() { Vehicle v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(1.0, 2.0)).build(); assertEquals(v.getEndLocation().getCoordinate(), v.getStartLocation().getCoordinate()); } @Test - public void whenEndLocationCoordinateIsSetButNoId_idMustBeCoordToString() { + @DisplayName("When End Location Coordinate Is Set But No Id _ id Must Be Coord To String") + void whenEndLocationCoordinateIsSetButNoId_idMustBeCoordToString() { Vehicle v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(1.0, 2.0)).setEndLocation(Location.newInstance(3.0, 4.0)).build(); assertEquals(v.getEndLocation().getCoordinate().toString(), v.getEndLocation().getId()); } - @Test(expected = IllegalArgumentException.class) - public void whenEndLocationIdIsSpecifiedANDReturnToDepotIsFalse_itShouldThrowException() { - @SuppressWarnings("unused") - Vehicle v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(1.0, 2.0)).setEndLocation(Location.newInstance("endLoc")).setReturnToDepot(false).build(); + @Test + @DisplayName("When End Location Id Is Specified AND Return To Depot Is False _ it Should Throw Exception") + void whenEndLocationIdIsSpecifiedANDReturnToDepotIsFalse_itShouldThrowException() { + assertThrows(IllegalArgumentException.class, () -> { + @SuppressWarnings("unused") + Vehicle v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(1.0, 2.0)).setEndLocation(Location.newInstance("endLoc")).setReturnToDepot(false).build(); + }); } - @Test(expected = IllegalArgumentException.class) - public void whenEndLocationCoordIsSpecifiedANDReturnToDepotIsFalse_itShouldThrowException() { - @SuppressWarnings("unused") - Vehicle v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(1.0, 2.0)).setEndLocation(Location.newInstance(3, 4)).setReturnToDepot(false).build(); + @Test + @DisplayName("When End Location Coord Is Specified AND Return To Depot Is False _ it Should Throw Exception") + void whenEndLocationCoordIsSpecifiedANDReturnToDepotIsFalse_itShouldThrowException() { + assertThrows(IllegalArgumentException.class, () -> { + @SuppressWarnings("unused") + Vehicle v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(1.0, 2.0)).setEndLocation(Location.newInstance(3, 4)).setReturnToDepot(false).build(); + }); } @Test - public void whenEndLocationCoordIsNotSpecifiedANDReturnToDepotIsFalse_endLocationCoordMustBeStartLocationCoord() { + @DisplayName("When End Location Coord Is Not Specified AND Return To Depot Is False _ end Location Coord Must Be Start Location Coord") + void whenEndLocationCoordIsNotSpecifiedANDReturnToDepotIsFalse_endLocationCoordMustBeStartLocationCoord() { Vehicle v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(1.0, 2.0)).setReturnToDepot(false).build(); assertEquals(v.getStartLocation().getCoordinate(), v.getEndLocation().getCoordinate()); } @Test - public void whenEndLocationIdIsNotSpecifiedANDReturnToDepotIsFalse_endLocationIdMustBeStartLocationId() { + @DisplayName("When End Location Id Is Not Specified AND Return To Depot Is False _ end Location Id Must Be Start Location Id") + void whenEndLocationIdIsNotSpecifiedANDReturnToDepotIsFalse_endLocationIdMustBeStartLocationId() { Vehicle v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(1.0, 2.0)).setReturnToDepot(false).build(); assertEquals(v.getStartLocation().getCoordinate().toString(), v.getEndLocation().getId()); } - @Test(expected = IllegalArgumentException.class) - public void whenStartAndEndAreUnequalANDReturnToDepotIsFalse_itShouldThrowException() { - @SuppressWarnings("unused") - Vehicle v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("start")).setEndLocation(Location.newInstance("end")).setReturnToDepot(false).build(); + @Test + @DisplayName("When Start And End Are Unequal AND Return To Depot Is False _ it Should Throw Exception") + void whenStartAndEndAreUnequalANDReturnToDepotIsFalse_itShouldThrowException() { + assertThrows(IllegalArgumentException.class, () -> { + @SuppressWarnings("unused") + Vehicle v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("start")).setEndLocation(Location.newInstance("end")).setReturnToDepot(false).build(); + }); } @Test - public void whenStartAndEndAreEqualANDReturnToDepotIsFalse_itShouldThrowException() { + @DisplayName("When Start And End Are Equal AND Return To Depot Is False _ it Should Throw Exception") + void whenStartAndEndAreEqualANDReturnToDepotIsFalse_itShouldThrowException() { @SuppressWarnings("unused") Vehicle v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("start")).setEndLocation(Location.newInstance("start")).setReturnToDepot(false).build(); assertTrue(true); } @Test - public void whenTwoVehiclesHaveTheSameId_theyShouldBeEqual() { + @DisplayName("When Two Vehicles Have The Same Id _ they Should Be Equal") + void whenTwoVehiclesHaveTheSameId_theyShouldBeEqual() { Vehicle v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("start")).setEndLocation(Location.newInstance("start")).setReturnToDepot(false).build(); Vehicle v2 = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("start")).setEndLocation(Location.newInstance("start")).setReturnToDepot(false).build(); assertTrue(v.equals(v2)); } - @Test - public void whenAddingSkillsCaseSensV2_theyShouldBeAddedCorrectly() { + @DisplayName("When Adding Skills Case Sens V 2 _ they Should Be Added Correctly") + void whenAddingSkillsCaseSensV2_theyShouldBeAddedCorrectly() { VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("type").build(); - Vehicle v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("start")).setType(type1).setEndLocation(Location.newInstance("start")) - .addSkill("drill").build(); + Vehicle v = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance("start")).setType(type1).setEndLocation(Location.newInstance("start")).addSkill("drill").build(); assertFalse(v.getSkills().containsSkill("ScrewDriver")); } @Test - public void whenSettingUserData_itIsAssociatedWithTheVehicle() { + @DisplayName("When Setting User Data _ it Is Associated With The Vehicle") + void whenSettingUserData_itIsAssociatedWithTheVehicle() { VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("type").build(); - Vehicle one = VehicleImpl.Builder.newInstance("v").setType(type1) - .setStartLocation(Location.newInstance("start")).setUserData(new HashMap()).build(); - Vehicle two = VehicleImpl.Builder.newInstance("v").setType(type1) - .setStartLocation(Location.newInstance("start")).setUserData(42).build(); - Vehicle three = VehicleImpl.Builder.newInstance("v").setType(type1) - .setStartLocation(Location.newInstance("start")).build(); - + Vehicle one = VehicleImpl.Builder.newInstance("v").setType(type1).setStartLocation(Location.newInstance("start")).setUserData(new HashMap()).build(); + Vehicle two = VehicleImpl.Builder.newInstance("v").setType(type1).setStartLocation(Location.newInstance("start")).setUserData(42).build(); + Vehicle three = VehicleImpl.Builder.newInstance("v").setType(type1).setStartLocation(Location.newInstance("start")).build(); assertTrue(one.getUserData() instanceof Map); assertEquals(42, two.getUserData()); assertNull(three.getUserData()); } - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleTypeImplTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleTypeImplTest.java index 168797dde..22392872f 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleTypeImplTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleTypeImplTest.java @@ -17,100 +17,117 @@ */ package com.graphhopper.jsprit.core.problem.vehicle; -import org.junit.Test; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.HashMap; import java.util.Map; -import static org.junit.Assert.*; +import static org.junit.jupiter.api.Assertions.*; -public class VehicleTypeImplTest { +@DisplayName("Vehicle Type Impl Test") +class VehicleTypeImplTest { - @Test(expected = IllegalArgumentException.class) - public void whenTypeHasNegativeCapacityVal_throwIllegalStateExpception() { - @SuppressWarnings("unused") - VehicleTypeImpl type = VehicleTypeImpl.Builder.newInstance("t").addCapacityDimension(0, -10).build(); + @Test + @DisplayName("When Type Has Negative Capacity Val _ throw Illegal State Expception") + void whenTypeHasNegativeCapacityVal_throwIllegalStateExpception() { + assertThrows(IllegalArgumentException.class, () -> { + @SuppressWarnings("unused") + VehicleTypeImpl type = VehicleTypeImpl.Builder.newInstance("t").addCapacityDimension(0, -10).build(); + }); } @Test - public void whenAddingTwoCapDimension_nuOfDimsShouldBeTwo() { - VehicleTypeImpl type = VehicleTypeImpl.Builder.newInstance("t") - .addCapacityDimension(0, 2) - .addCapacityDimension(1, 4) - .build(); + @DisplayName("When Adding Two Cap Dimension _ nu Of Dims Should Be Two") + void whenAddingTwoCapDimension_nuOfDimsShouldBeTwo() { + VehicleTypeImpl type = VehicleTypeImpl.Builder.newInstance("t").addCapacityDimension(0, 2).addCapacityDimension(1, 4).build(); assertEquals(2, type.getCapacityDimensions().getNuOfDimensions()); } @Test - public void whenAddingTwoCapDimension_dimValuesMustBeCorrect() { - VehicleTypeImpl type = VehicleTypeImpl.Builder.newInstance("t") - .addCapacityDimension(0, 2) - .addCapacityDimension(1, 4) - .build(); + @DisplayName("When Adding Two Cap Dimension _ dim Values Must Be Correct") + void whenAddingTwoCapDimension_dimValuesMustBeCorrect() { + VehicleTypeImpl type = VehicleTypeImpl.Builder.newInstance("t").addCapacityDimension(0, 2).addCapacityDimension(1, 4).build(); assertEquals(2, type.getCapacityDimensions().get(0)); assertEquals(4, type.getCapacityDimensions().get(1)); } @Test - public void whenTypeIsBuiltWithoutSpecifyingCapacity_itShouldHvCapWithOneDim() { + @DisplayName("When Type Is Built Without Specifying Capacity _ it Should Hv Cap With One Dim") + void whenTypeIsBuiltWithoutSpecifyingCapacity_itShouldHvCapWithOneDim() { VehicleTypeImpl type = VehicleTypeImpl.Builder.newInstance("t").build(); assertEquals(1, type.getCapacityDimensions().getNuOfDimensions()); } @Test - public void whenTypeIsBuiltWithoutSpecifyingCapacity_itShouldHvCapDimValOfZero() { + @DisplayName("When Type Is Built Without Specifying Capacity _ it Should Hv Cap Dim Val Of Zero") + void whenTypeIsBuiltWithoutSpecifyingCapacity_itShouldHvCapDimValOfZero() { VehicleTypeImpl type = VehicleTypeImpl.Builder.newInstance("t").build(); assertEquals(0, type.getCapacityDimensions().get(0)); } @Test - public void whenCallingStaticNewBuilderInstance_itShouldReturnNewBuilderInstance() { + @DisplayName("When Calling Static New Builder Instance _ it Should Return New Builder Instance") + void whenCallingStaticNewBuilderInstance_itShouldReturnNewBuilderInstance() { VehicleTypeImpl.Builder builder = VehicleTypeImpl.Builder.newInstance("foo"); assertNotNull(builder); } @Test - public void whenBuildingTypeJustByCallingNewInstance_typeIdMustBeCorrect() { + @DisplayName("When Building Type Just By Calling New Instance _ type Id Must Be Correct") + void whenBuildingTypeJustByCallingNewInstance_typeIdMustBeCorrect() { VehicleTypeImpl type = VehicleTypeImpl.Builder.newInstance("foo").build(); - assertEquals("foo", type.getTypeId()); + assertEquals(type.getTypeId(), "foo"); } @Test - public void whenBuildingTypeJustByCallingNewInstance_capMustBeCorrect() { + @DisplayName("When Building Type Just By Calling New Instance _ cap Must Be Correct") + void whenBuildingTypeJustByCallingNewInstance_capMustBeCorrect() { VehicleTypeImpl type = VehicleTypeImpl.Builder.newInstance("foo").build(); assertEquals(0, type.getCapacityDimensions().get(0)); } - @Test(expected = IllegalArgumentException.class) - public void whenBuildingTypeWithCapSmallerThanZero_throwIllegalStateException() { - @SuppressWarnings("unused") - VehicleTypeImpl type = VehicleTypeImpl.Builder.newInstance("foo").addCapacityDimension(0, -10).build(); + @Test + @DisplayName("When Building Type With Cap Smaller Than Zero _ throw Illegal State Exception") + void whenBuildingTypeWithCapSmallerThanZero_throwIllegalStateException() { + assertThrows(IllegalArgumentException.class, () -> { + @SuppressWarnings("unused") + VehicleTypeImpl type = VehicleTypeImpl.Builder.newInstance("foo").addCapacityDimension(0, -10).build(); + }); } - @Test(expected = IllegalArgumentException.class) - public void whenBuildingTypeWithNullId_throwIllegalStateException() { - @SuppressWarnings("unused") - VehicleTypeImpl type = VehicleTypeImpl.Builder.newInstance(null).addCapacityDimension(0, 10).build(); + @Test + @DisplayName("When Building Type With Null Id _ throw Illegal State Exception") + void whenBuildingTypeWithNullId_throwIllegalStateException() { + assertThrows(IllegalArgumentException.class, () -> { + @SuppressWarnings("unused") + VehicleTypeImpl type = VehicleTypeImpl.Builder.newInstance(null).addCapacityDimension(0, 10).build(); + }); } - @Test - public void whenSettingMaxVelocity_itShouldBeSetCorrectly() { + @DisplayName("When Setting Max Velocity _ it Should Be Set Correctly") + void whenSettingMaxVelocity_itShouldBeSetCorrectly() { VehicleTypeImpl type = VehicleTypeImpl.Builder.newInstance("type").setMaxVelocity(10).build(); assertEquals(10, type.getMaxVelocity(), 0.0); } - - @Test(expected = IllegalArgumentException.class) - public void whenMaxVelocitySmallerThanZero_itShouldThrowException() { - @SuppressWarnings("unused") - VehicleTypeImpl type = VehicleTypeImpl.Builder.newInstance("type").setMaxVelocity(-10).build(); + @Test + @DisplayName("When Max Velocity Smaller Than Zero _ it Should Throw Exception") + void whenMaxVelocitySmallerThanZero_itShouldThrowException() { + assertThrows(IllegalArgumentException.class, () -> { + @SuppressWarnings("unused") + VehicleTypeImpl type = VehicleTypeImpl.Builder.newInstance("type").setMaxVelocity(-10).build(); + }); } - @Test(expected = IllegalArgumentException.class) - public void whenFixedCostsSmallerThanZero_itShouldThrowException() { - @SuppressWarnings("unused") - VehicleTypeImpl type = VehicleTypeImpl.Builder.newInstance("type").setFixedCost(-10).build(); + @Test + @DisplayName("When Fixed Costs Smaller Than Zero _ it Should Throw Exception") + void whenFixedCostsSmallerThanZero_itShouldThrowException() { + assertThrows(IllegalArgumentException.class, () -> { + @SuppressWarnings("unused") + VehicleTypeImpl type = VehicleTypeImpl.Builder.newInstance("type").setFixedCost(-10).build(); + }); } public void whenSettingFixedCosts_itShouldBeSetCorrectly() { @@ -118,74 +135,84 @@ public void whenSettingFixedCosts_itShouldBeSetCorrectly() { assertEquals(10.0, type.getVehicleCostParams().fix, 0.0); } - @Test(expected = IllegalArgumentException.class) - public void whenPerDistanceCostsSmallerThanZero_itShouldThrowException() { - @SuppressWarnings("unused") - VehicleTypeImpl type = VehicleTypeImpl.Builder.newInstance("type").setCostPerDistance(-10).build(); + @Test + @DisplayName("When Per Distance Costs Smaller Than Zero _ it Should Throw Exception") + void whenPerDistanceCostsSmallerThanZero_itShouldThrowException() { + assertThrows(IllegalArgumentException.class, () -> { + @SuppressWarnings("unused") + VehicleTypeImpl type = VehicleTypeImpl.Builder.newInstance("type").setCostPerDistance(-10).build(); + }); } @Test - public void whenSettingPerDistanceCosts_itShouldBeSetCorrectly() { + @DisplayName("When Setting Per Distance Costs _ it Should Be Set Correctly") + void whenSettingPerDistanceCosts_itShouldBeSetCorrectly() { VehicleTypeImpl type = VehicleTypeImpl.Builder.newInstance("type").setCostPerDistance(10).build(); assertEquals(10.0, type.getVehicleCostParams().perDistanceUnit, 0.0); } - @Test(expected = IllegalArgumentException.class) - public void whenPerTimeCostsSmallerThanZero_itShouldThrowException() { - @SuppressWarnings("unused") - VehicleTypeImpl type = VehicleTypeImpl.Builder.newInstance("type").setCostPerTime(-10).build(); + @Test + @DisplayName("When Per Time Costs Smaller Than Zero _ it Should Throw Exception") + void whenPerTimeCostsSmallerThanZero_itShouldThrowException() { + assertThrows(IllegalArgumentException.class, () -> { + @SuppressWarnings("unused") + VehicleTypeImpl type = VehicleTypeImpl.Builder.newInstance("type").setCostPerTime(-10).build(); + }); } - @Test - public void whenHavingTwoTypesWithTheSameId_theyShouldBeEqual() { + @DisplayName("When Having Two Types With The Same Id _ they Should Be Equal") + void whenHavingTwoTypesWithTheSameId_theyShouldBeEqual() { VehicleTypeImpl type = VehicleTypeImpl.Builder.newInstance("type").setCostPerTime(10).build(); VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("type").setCostPerTime(10).build(); assertTrue(type.equals(type2)); } @Test - public void whenAddingProfile_itShouldBeCorrect() { + @DisplayName("When Adding Profile _ it Should Be Correct") + void whenAddingProfile_itShouldBeCorrect() { VehicleTypeImpl type = VehicleTypeImpl.Builder.newInstance("type").setProfile("car").build(); - assertEquals("car", type.getProfile()); + assertEquals(type.getProfile(), "car"); } - @Test - public void whenSettingUserData_itIsAssociatedWithTheVehicleType() { - VehicleType one = VehicleTypeImpl.Builder.newInstance("type").setUserData(new HashMap()) - .build(); + @DisplayName("When Setting User Data _ it Is Associated With The Vehicle Type") + void whenSettingUserData_itIsAssociatedWithTheVehicleType() { + VehicleType one = VehicleTypeImpl.Builder.newInstance("type").setUserData(new HashMap()).build(); VehicleType two = VehicleTypeImpl.Builder.newInstance("type").setUserData(42).build(); VehicleType three = VehicleTypeImpl.Builder.newInstance("type").build(); - assertTrue(one.getUserData() instanceof Map); assertEquals(42, two.getUserData()); assertNull(three.getUserData()); } @Test - public void typesShouldBeEqual() { + @DisplayName("Types Should Be Equal") + void typesShouldBeEqual() { VehicleType one = VehicleTypeImpl.Builder.newInstance("type").setFixedCost(100).build(); VehicleType two = VehicleTypeImpl.Builder.newInstance("type").setFixedCost(100).build(); assertTrue(one.equals(two)); } @Test - public void typesShouldBeNotEqual() { + @DisplayName("Types Should Be Not Equal") + void typesShouldBeNotEqual() { VehicleType one = VehicleTypeImpl.Builder.newInstance("type").build(); VehicleType two = VehicleTypeImpl.Builder.newInstance("type").setFixedCost(100).build(); assertFalse(one.equals(two)); } @Test - public void typesShouldBeNotEqual2() { + @DisplayName("Types Should Be Not Equal 2") + void typesShouldBeNotEqual2() { VehicleType one = VehicleTypeImpl.Builder.newInstance("type").addCapacityDimension(0, 10).build(); VehicleType two = VehicleTypeImpl.Builder.newInstance("type").addCapacityDimension(0, 20).build(); assertFalse(one.equals(two)); } @Test - public void typesShouldBeEqual2() { + @DisplayName("Types Should Be Equal 2") + void typesShouldBeEqual2() { VehicleType one = VehicleTypeImpl.Builder.newInstance("type").addCapacityDimension(0, 10).build(); VehicleType two = VehicleTypeImpl.Builder.newInstance("type").addCapacityDimension(0, 10).build(); assertTrue(one.equals(two)); diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleTypeKeyTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleTypeKeyTest.java index 9f195433f..9bc9f2e3e 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleTypeKeyTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/vehicle/VehicleTypeKeyTest.java @@ -15,33 +15,31 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.graphhopper.jsprit.core.problem.vehicle; - import com.graphhopper.jsprit.core.problem.Location; -import org.junit.Test; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; -public class VehicleTypeKeyTest { +@DisplayName("Vehicle Type Key Test") +class VehicleTypeKeyTest { @Test - public void typeIdentifierShouldBeEqual() { - Vehicle v1 = VehicleImpl.Builder.newInstance("v1").setStartLocation(Location.newInstance("start")).addSkill("skill1").addSkill("skill2") - .addSkill("skill3").build(); - Vehicle v2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(Location.newInstance("start")).addSkill("skill2").addSkill("skill1") - .addSkill("skill3").build(); + @DisplayName("Type Identifier Should Be Equal") + void typeIdentifierShouldBeEqual() { + Vehicle v1 = VehicleImpl.Builder.newInstance("v1").setStartLocation(Location.newInstance("start")).addSkill("skill1").addSkill("skill2").addSkill("skill3").build(); + Vehicle v2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(Location.newInstance("start")).addSkill("skill2").addSkill("skill1").addSkill("skill3").build(); assertTrue(v1.getVehicleTypeIdentifier().equals(v2.getVehicleTypeIdentifier())); } @Test - public void typeIdentifierShouldNotBeEqual() { - Vehicle v1 = VehicleImpl.Builder.newInstance("v1").setStartLocation(Location.newInstance("start")).addSkill("skill1").addSkill("skill2") - .build(); - Vehicle v2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(Location.newInstance("start")).addSkill("skill2").addSkill("skill1") - .addSkill("skill3").build(); + @DisplayName("Type Identifier Should Not Be Equal") + void typeIdentifierShouldNotBeEqual() { + Vehicle v1 = VehicleImpl.Builder.newInstance("v1").setStartLocation(Location.newInstance("start")).addSkill("skill1").addSkill("skill2").build(); + Vehicle v2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(Location.newInstance("start")).addSkill("skill2").addSkill("skill1").addSkill("skill3").build(); assertFalse(v1.getVehicleTypeIdentifier().equals(v2.getVehicleTypeIdentifier())); } } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/util/FastVehicleRoutingTransportCostsMatrixTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/util/FastVehicleRoutingTransportCostsMatrixTest.java index 4e1361eec..62c9f4242 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/util/FastVehicleRoutingTransportCostsMatrixTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/util/FastVehicleRoutingTransportCostsMatrixTest.java @@ -21,16 +21,19 @@ import com.graphhopper.jsprit.core.problem.vehicle.Vehicle; import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; -import org.junit.Test; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -public class FastVehicleRoutingTransportCostsMatrixTest { +@DisplayName("Fast Vehicle Routing Transport Costs Matrix Test") +class FastVehicleRoutingTransportCostsMatrixTest { @Test - public void whenAddingDistanceToSymmetricMatrix_itShouldReturnCorrectValues() { + @DisplayName("When Adding Distance To Symmetric Matrix _ it Should Return Correct Values") + void whenAddingDistanceToSymmetricMatrix_itShouldReturnCorrectValues() { FastVehicleRoutingTransportCostsMatrix.Builder matrixBuilder = FastVehicleRoutingTransportCostsMatrix.Builder.newInstance(3, true); matrixBuilder.addTransportDistance(1, 2, 2.); FastVehicleRoutingTransportCostsMatrix matrix = matrixBuilder.build(); @@ -40,9 +43,9 @@ public void whenAddingDistanceToSymmetricMatrix_itShouldReturnCorrectValues() { assertEquals(2., matrix.getDistance(2, 1), 0.1); } - @Test - public void whenAddingDistanceToAsymmetricMatrix_itShouldReturnCorrectValues() { + @DisplayName("When Adding Distance To Asymmetric Matrix _ it Should Return Correct Values") + void whenAddingDistanceToAsymmetricMatrix_itShouldReturnCorrectValues() { FastVehicleRoutingTransportCostsMatrix.Builder matrixBuilder = FastVehicleRoutingTransportCostsMatrix.Builder.newInstance(3, false); matrixBuilder.addTransportDistance(1, 2, 2.); FastVehicleRoutingTransportCostsMatrix matrix = matrixBuilder.build(); @@ -53,9 +56,9 @@ private Location loc(int index) { return Location.Builder.newInstance().setIndex(index).build(); } - @Test - public void whenAddingTimeToSymmetricMatrix_itShouldReturnCorrectValues() { + @DisplayName("When Adding Time To Symmetric Matrix _ it Should Return Correct Values") + void whenAddingTimeToSymmetricMatrix_itShouldReturnCorrectValues() { FastVehicleRoutingTransportCostsMatrix.Builder matrixBuilder = FastVehicleRoutingTransportCostsMatrix.Builder.newInstance(3, true); matrixBuilder.addTransportTime(1, 2, 2.); FastVehicleRoutingTransportCostsMatrix matrix = matrixBuilder.build(); @@ -64,19 +67,20 @@ public void whenAddingTimeToSymmetricMatrix_itShouldReturnCorrectValues() { } @Test - public void whenAddingTimeAndDistanceToSymmetricMatrix_itShouldReturnCorrectValues2() { + @DisplayName("When Adding Time And Distance To Symmetric Matrix _ it Should Return Correct Values 2") + void whenAddingTimeAndDistanceToSymmetricMatrix_itShouldReturnCorrectValues2() { FastVehicleRoutingTransportCostsMatrix.Builder matrixBuilder = FastVehicleRoutingTransportCostsMatrix.Builder.newInstance(3, true); matrixBuilder.addTransportTimeAndDistance(1, 2, 2., 100.); FastVehicleRoutingTransportCostsMatrix matrix = matrixBuilder.build(); assertEquals(2., matrix.getTransportTime(loc(1), loc(2), 0.0, null, null), 0.1); assertEquals(2., matrix.getTransportTime(loc(2), loc(1), 0.0, null, null), 0.1); - assertEquals(100., matrix.getDistance(loc(1), loc(2), 0.0, null), 0.1); assertEquals(100., matrix.getDistance(loc(2), loc(1), 0.0, null), 0.1); } @Test - public void whenAddingTimeToAsymmetricMatrix_itShouldReturnCorrectValues() { + @DisplayName("When Adding Time To Asymmetric Matrix _ it Should Return Correct Values") + void whenAddingTimeToAsymmetricMatrix_itShouldReturnCorrectValues() { FastVehicleRoutingTransportCostsMatrix.Builder matrixBuilder = FastVehicleRoutingTransportCostsMatrix.Builder.newInstance(3, false); matrixBuilder.addTransportTime(1, 2, 2.); FastVehicleRoutingTransportCostsMatrix matrix = matrixBuilder.build(); @@ -84,7 +88,8 @@ public void whenAddingTimeToAsymmetricMatrix_itShouldReturnCorrectValues() { } @Test - public void whenAddingTimeAndDistanceToSymmetricMatrix_itShouldReturnCorrectValues() { + @DisplayName("When Adding Time And Distance To Symmetric Matrix _ it Should Return Correct Values") + void whenAddingTimeAndDistanceToSymmetricMatrix_itShouldReturnCorrectValues() { FastVehicleRoutingTransportCostsMatrix.Builder matrixBuilder = FastVehicleRoutingTransportCostsMatrix.Builder.newInstance(3, true); matrixBuilder.addTransportDistance(1, 2, 20.); matrixBuilder.addTransportTime(1, 2, 2.); @@ -97,7 +102,8 @@ public void whenAddingTimeAndDistanceToSymmetricMatrix_itShouldReturnCorrectValu } @Test - public void whenAddingTimeAndDistanceToAsymmetricMatrix_itShouldReturnCorrectValues() { + @DisplayName("When Adding Time And Distance To Asymmetric Matrix _ it Should Return Correct Values") + void whenAddingTimeAndDistanceToAsymmetricMatrix_itShouldReturnCorrectValues() { FastVehicleRoutingTransportCostsMatrix.Builder matrixBuilder = FastVehicleRoutingTransportCostsMatrix.Builder.newInstance(3, false); matrixBuilder.addTransportTime(1, 2, 2.); matrixBuilder.addTransportTime(2, 1, 8.); @@ -108,6 +114,4 @@ public void whenAddingTimeAndDistanceToAsymmetricMatrix_itShouldReturnCorrectVal assertEquals(4., matrix.getTransportCost(loc(1), loc(2), 0.0, null, vehicle), 0.1); assertEquals(16., matrix.getTransportCost(loc(2), loc(1), 0.0, null, vehicle), 0.1); } - - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/util/GreatCircleDistanceCalculatorTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/util/GreatCircleDistanceCalculatorTest.java index c41da9734..8afd49081 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/util/GreatCircleDistanceCalculatorTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/util/GreatCircleDistanceCalculatorTest.java @@ -15,47 +15,39 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.graphhopper.jsprit.core.util; -import junit.framework.Assert; -import org.junit.Test; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; /** * Created by schroeder on 28.11.14. */ -public class GreatCircleDistanceCalculatorTest { +@DisplayName("Great Circle Distance Calculator Test") +class GreatCircleDistanceCalculatorTest { @Test - public void test() { + @DisplayName("Test") + void test() { double lon1 = 8.3858333; double lat1 = 49.0047222; - double lon2 = 12.1333333; double lat2 = 54.0833333; - - double greatCircle = GreatCircleDistanceCalculator.calculateDistance( - Coordinate.newInstance(lon1, lat1), - Coordinate.newInstance(lon2, lat2), - DistanceUnit.Kilometer - ); - Assert.assertEquals(600, greatCircle, 30.); + double greatCircle = GreatCircleDistanceCalculator.calculateDistance(Coordinate.newInstance(lon1, lat1), Coordinate.newInstance(lon2, lat2), DistanceUnit.Kilometer); + assertEquals(600, greatCircle, 30.); } @Test - public void testMeter() { + @DisplayName("Test Meter") + void testMeter() { double lon1 = 8.3858333; double lat1 = 49.0047222; - double lon2 = 12.1333333; double lat2 = 54.0833333; - - double greatCircle = GreatCircleDistanceCalculator.calculateDistance( - Coordinate.newInstance(lon1, lat1), - Coordinate.newInstance(lon2, lat2), - DistanceUnit.Meter - ); - Assert.assertEquals(600000, greatCircle, 30000.); + double greatCircle = GreatCircleDistanceCalculator.calculateDistance(Coordinate.newInstance(lon1, lat1), Coordinate.newInstance(lon2, lat2), DistanceUnit.Meter); + assertEquals(600000, greatCircle, 30000.); } - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/util/RandomUtilsTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/util/RandomUtilsTest.java index 9a2f57ddf..36c89d759 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/util/RandomUtilsTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/util/RandomUtilsTest.java @@ -15,48 +15,50 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.graphhopper.jsprit.core.util; import com.graphhopper.jsprit.core.problem.job.Job; -import junit.framework.Assert; -import org.junit.Test; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.Arrays; import java.util.Collection; import java.util.List; import java.util.Random; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; /** * Created by schroeder on 14/01/15. */ -public class RandomUtilsTest { +@DisplayName("Random Utils Test") +class RandomUtilsTest { @Test - public void shouldReturnSingleJob() { + @DisplayName("Should Return Single Job") + void shouldReturnSingleJob() { Job job = mock(Job.class); Collection jobs = Arrays.asList(job); - Assert.assertEquals(job, RandomUtils.nextItem(jobs, RandomNumberGeneration.getRandom())); + assertEquals(job, RandomUtils.nextItem(jobs, RandomNumberGeneration.getRandom())); } @Test - public void shouldReturnSingleJob_() { + @DisplayName("Should Return Single Job _") + void shouldReturnSingleJob_() { Job job = mock(Job.class); Collection jobs = Arrays.asList(job); - Assert.assertEquals(job, RandomUtils.nextJob(jobs, RandomNumberGeneration.getRandom())); + assertEquals(job, RandomUtils.nextJob(jobs, RandomNumberGeneration.getRandom())); } @Test - public void shouldReturnJob3() { + @DisplayName("Should Return Job 3") + void shouldReturnJob3() { Job job3 = mock(Job.class); List jobs = Arrays.asList(mock(Job.class), mock(Job.class), job3); Random random = mock(Random.class); when(random.nextInt(jobs.size())).thenReturn(2); - Assert.assertEquals(job3, RandomUtils.nextJob(jobs, random)); + assertEquals(job3, RandomUtils.nextJob(jobs, random)); } - - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/util/TimeTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/util/TimeTest.java index 97186e1ac..6fc10f9ed 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/util/TimeTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/util/TimeTest.java @@ -17,167 +17,196 @@ */ package com.graphhopper.jsprit.core.util; -import org.junit.Test; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; -public class TimeTest { +@DisplayName("Time Test") +class TimeTest { @Test - public void sixAM_shouldBeParsedCorrectly() { + @DisplayName("Six AM _ should Be Parsed Correctly") + void sixAM_shouldBeParsedCorrectly() { double sec = Time.parseTimeToSeconds("6AM"); assertEquals(6. * 3600., sec, 0.01); } @Test - public void sixAMWithWhiteSpace_shouldBeParsedCorrectly() { + @DisplayName("Six AM With White Space _ should Be Parsed Correctly") + void sixAMWithWhiteSpace_shouldBeParsedCorrectly() { double sec = Time.parseTimeToSeconds("6 AM"); assertEquals(6. * 3600., sec, 0.01); } @Test - public void sixaMWithWhiteSpace_shouldBeParsedCorrectly() { + @DisplayName("Sixa M With White Space _ should Be Parsed Correctly") + void sixaMWithWhiteSpace_shouldBeParsedCorrectly() { double sec = Time.parseTimeToSeconds("6 aM"); assertEquals(6. * 3600., sec, 0.01); } @Test - public void sixamWithWhiteSpace_shouldBeParsedCorrectly() { + @DisplayName("Sixam With White Space _ should Be Parsed Correctly") + void sixamWithWhiteSpace_shouldBeParsedCorrectly() { double sec = Time.parseTimeToSeconds("6 am"); assertEquals(6. * 3600., sec, 0.01); } @Test - public void sixAmWithWhiteSpace_shouldBeParsedCorrectly() { + @DisplayName("Six Am With White Space _ should Be Parsed Correctly") + void sixAmWithWhiteSpace_shouldBeParsedCorrectly() { double sec = Time.parseTimeToSeconds("6 Am"); assertEquals(6. * 3600., sec, 0.01); } - @Test - public void sixPM_shouldBeParsedCorrectly() { + @DisplayName("Six PM _ should Be Parsed Correctly") + void sixPM_shouldBeParsedCorrectly() { double sec = Time.parseTimeToSeconds("6PM"); assertEquals(6. * 3600. + 12. * 3600., sec, 0.01); } @Test - public void sixPMWithWhiteSpace_shouldBeParsedCorrectly() { + @DisplayName("Six PM With White Space _ should Be Parsed Correctly") + void sixPMWithWhiteSpace_shouldBeParsedCorrectly() { double sec = Time.parseTimeToSeconds("6 PM"); assertEquals(6. * 3600. + 12. * 3600., sec, 0.01); } @Test - public void sixpMWithWhiteSpace_shouldBeParsedCorrectly() { + @DisplayName("Sixp M With White Space _ should Be Parsed Correctly") + void sixpMWithWhiteSpace_shouldBeParsedCorrectly() { double sec = Time.parseTimeToSeconds("6 pM"); assertEquals(6. * 3600. + 12. * 3600., sec, 0.01); } @Test - public void sixpmWithWhiteSpace_shouldBeParsedCorrectly() { + @DisplayName("Sixpm With White Space _ should Be Parsed Correctly") + void sixpmWithWhiteSpace_shouldBeParsedCorrectly() { double sec = Time.parseTimeToSeconds("6 pm"); assertEquals(6. * 3600. + 12. * 3600., sec, 0.01); } @Test - public void sixPmWithWhiteSpace_shouldBeParsedCorrectly() { + @DisplayName("Six Pm With White Space _ should Be Parsed Correctly") + void sixPmWithWhiteSpace_shouldBeParsedCorrectly() { double sec = Time.parseTimeToSeconds("6 Pm"); assertEquals(6. * 3600. + 12. * 3600, sec, 0.01); } @Test - public void sixAMWithLeadingZero_shouldBeParsedCorrectly() { + @DisplayName("Six AM With Leading Zero _ should Be Parsed Correctly") + void sixAMWithLeadingZero_shouldBeParsedCorrectly() { double sec = Time.parseTimeToSeconds("06AM"); assertEquals(6. * 3600., sec, 0.01); } @Test - public void sixHour_twelveMin_AM_shouldBeParsedCorrectly() { + @DisplayName("Six Hour _ twelve Min _ AM _ should Be Parsed Correctly") + void sixHour_twelveMin_AM_shouldBeParsedCorrectly() { double sec = Time.parseTimeToSeconds("6:12AM"); assertEquals(6. * 3600. + 12. * 60., sec, 0.01); } @Test - public void sixHour_sixMin_AM_shouldBeParsedCorrectly() { + @DisplayName("Six Hour _ six Min _ AM _ should Be Parsed Correctly") + void sixHour_sixMin_AM_shouldBeParsedCorrectly() { double sec = Time.parseTimeToSeconds("6:6AM"); assertEquals(6. * 3600. + 6. * 60., sec, 0.01); } @Test - public void sixHour_sixMinWithLeadingZero_AM_shouldBeParsedCorrectly() { + @DisplayName("Six Hour _ six Min With Leading Zero _ AM _ should Be Parsed Correctly") + void sixHour_sixMinWithLeadingZero_AM_shouldBeParsedCorrectly() { double sec = Time.parseTimeToSeconds("6:06AM"); assertEquals(6. * 3600. + 6. * 60., sec, 0.01); } - @Test - public void sixHour_twelveMin_PM_shouldBeParsedCorrectly() { + @DisplayName("Six Hour _ twelve Min _ PM _ should Be Parsed Correctly") + void sixHour_twelveMin_PM_shouldBeParsedCorrectly() { double sec = Time.parseTimeToSeconds("6:12PM"); assertEquals(6. * 3600. + 12. * 60. + 12. * 3600., sec, 0.01); } @Test - public void sixHour_sixMin_PM_shouldBeParsedCorrectly() { + @DisplayName("Six Hour _ six Min _ PM _ should Be Parsed Correctly") + void sixHour_sixMin_PM_shouldBeParsedCorrectly() { double sec = Time.parseTimeToSeconds("6:6PM"); assertEquals(6. * 3600. + 6. * 60. + 12. * 3600., sec, 0.01); } @Test - public void sixHour_sixMinWithLeadingZero_PM_shouldBeParsedCorrectly() { + @DisplayName("Six Hour _ six Min With Leading Zero _ PM _ should Be Parsed Correctly") + void sixHour_sixMinWithLeadingZero_PM_shouldBeParsedCorrectly() { double sec = Time.parseTimeToSeconds("6:06PM"); assertEquals(6. * 3600. + 6. * 60. + 12. * 3600., sec, 0.01); } @Test - public void sixHour_sixMinWithLeadingZero_twelveSec_PM_shouldBeParsedCorrectly() { + @DisplayName("Six Hour _ six Min With Leading Zero _ twelve Sec _ PM _ should Be Parsed Correctly") + void sixHour_sixMinWithLeadingZero_twelveSec_PM_shouldBeParsedCorrectly() { double sec = Time.parseTimeToSeconds("6:06:12PM"); assertEquals(6. * 3600. + 6. * 60. + 12. * 3600. + 12., sec, 0.01); } @Test - public void sixHour_sixMinWithLeadingZero_twelveSec_shouldBeParsedCorrectly() { + @DisplayName("Six Hour _ six Min With Leading Zero _ twelve Sec _ should Be Parsed Correctly") + void sixHour_sixMinWithLeadingZero_twelveSec_shouldBeParsedCorrectly() { double sec = Time.parseTimeToSeconds("6:06:12"); assertEquals(6. * 3600. + 6. * 60. + 12., sec, 0.01); } @Test - public void sixHour_sixMinWithLeadingZero_sixSecWithLeadingZero_shouldBeParsedCorrectly() { + @DisplayName("Six Hour _ six Min With Leading Zero _ six Sec With Leading Zero _ should Be Parsed Correctly") + void sixHour_sixMinWithLeadingZero_sixSecWithLeadingZero_shouldBeParsedCorrectly() { double sec = Time.parseTimeToSeconds("6:06:06"); assertEquals(6. * 3600. + 6. * 60. + 6., sec, 0.01); } - @Test(expected = IllegalArgumentException.class) - public void whenTimeStringHasNoDigit_itThrowsException() { - Time.parseTimeToSeconds("PM"); + @Test + @DisplayName("When Time String Has No Digit _ it Throws Exception") + void whenTimeStringHasNoDigit_itThrowsException() { + assertThrows(IllegalArgumentException.class, () -> { + Time.parseTimeToSeconds("PM"); + }); } - @Test(expected = IllegalArgumentException.class) - public void whenTimeStringHasMilliSeconds_itThrowsException() { - Time.parseTimeToSeconds("01:00:12:01PM"); + @Test + @DisplayName("When Time String Has Milli Seconds _ it Throws Exception") + void whenTimeStringHasMilliSeconds_itThrowsException() { + assertThrows(IllegalArgumentException.class, () -> { + Time.parseTimeToSeconds("01:00:12:01PM"); + }); } @Test - public void zeroHour_zeroMinWithLeadingZero_oneSecWithLeadingZero_shouldBeParsedCorrectly() { + @DisplayName("Zero Hour _ zero Min With Leading Zero _ one Sec With Leading Zero _ should Be Parsed Correctly") + void zeroHour_zeroMinWithLeadingZero_oneSecWithLeadingZero_shouldBeParsedCorrectly() { double sec = Time.parseTimeToSeconds("0:00:01"); assertEquals(1., sec, 0.01); } @Test - public void whenSecIs3600_shouldReturnCorrectTimeString() { + @DisplayName("When Sec Is 3600 _ should Return Correct Time String") + void whenSecIs3600_shouldReturnCorrectTimeString() { String time = Time.parseSecondsToTime(3600); assertEquals(3600., Time.parseTimeToSeconds(time), 0.01); } @Test - public void whenSecIs4000_shouldReturnCorrectTimeString() { + @DisplayName("When Sec Is 4000 _ should Return Correct Time String") + void whenSecIs4000_shouldReturnCorrectTimeString() { String time = Time.parseSecondsToTime(4000); assertEquals(4000., Time.parseTimeToSeconds(time), 0.01); } @Test - public void whenSecIs86399_shouldReturnCorrectTimeString() { + @DisplayName("When Sec Is 86399 _ should Return Correct Time String") + void whenSecIs86399_shouldReturnCorrectTimeString() { String time = Time.parseSecondsToTime(86399); assertEquals(86399., Time.parseTimeToSeconds(time), 0.01); } - - } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/util/UnassignedJobReasonTrackerTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/util/UnassignedJobReasonTrackerTest.java index 0b8f639f6..c545687dc 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/util/UnassignedJobReasonTrackerTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/util/UnassignedJobReasonTrackerTest.java @@ -15,7 +15,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.graphhopper.jsprit.core.util; import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm; @@ -34,9 +33,10 @@ import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; import org.apache.commons.math3.stat.Frequency; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; import java.util.HashMap; import java.util.Iterator; @@ -45,12 +45,13 @@ /** * Created by schroeder on 06/02/17. */ -public class UnassignedJobReasonTrackerTest { +@DisplayName("Unassigned Job Reason Tracker Test") +class UnassignedJobReasonTrackerTest { Vehicle vehicle; - @Before - public void doBefore() { + @BeforeEach + void doBefore() { VehicleTypeImpl.Builder vehicleTypeBuilder = VehicleTypeImpl.Builder.newInstance("vehicleType").addCapacityDimension(0, 1); VehicleType vehicleType = vehicleTypeBuilder.build(); VehicleImpl.Builder vehicleBuilder = VehicleImpl.Builder.newInstance("vehicle"); @@ -61,61 +62,50 @@ public void doBefore() { } @Test - public void shouldReturnCorrectCapacityReasonCode() { + @DisplayName("Should Return Correct Capacity Reason Code") + void shouldReturnCorrectCapacityReasonCode() { Service service = Service.Builder.newInstance("1").addSizeDimension(0, 5).setLocation(Location.newInstance(5, 7)).build(); - - VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().setFleetSize(VehicleRoutingProblem.FleetSize.FINITE).addVehicle(vehicle).addJob(service) - .build(); - + VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().setFleetSize(VehicleRoutingProblem.FleetSize.FINITE).addVehicle(vehicle).addJob(service).build(); VehicleRoutingAlgorithm vra = Jsprit.createAlgorithm(vrp); UnassignedJobReasonTracker reasonTracker = new UnassignedJobReasonTracker(); vra.addListener(reasonTracker); - VehicleRoutingProblemSolution solution = Solutions.bestOf(vra.searchSolutions()); - Assert.assertEquals(1, solution.getUnassignedJobs().size()); - Assert.assertEquals(3, reasonTracker.getMostLikelyReasonCode(solution.getUnassignedJobs().iterator().next().getId())); + Assertions.assertEquals(1, solution.getUnassignedJobs().size()); + Assertions.assertEquals(3, reasonTracker.getMostLikelyReasonCode(solution.getUnassignedJobs().iterator().next().getId())); } @Test - public void shouldReturnCorrectSkillReasonCode() { + @DisplayName("Should Return Correct Skill Reason Code") + void shouldReturnCorrectSkillReasonCode() { Service service = Service.Builder.newInstance("1").addSizeDimension(0, 1).addRequiredSkill("ice").setLocation(Location.newInstance(5, 7)).build(); - - VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().setFleetSize(VehicleRoutingProblem.FleetSize.FINITE).addVehicle(vehicle).addJob(service) - .build(); - + VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().setFleetSize(VehicleRoutingProblem.FleetSize.FINITE).addVehicle(vehicle).addJob(service).build(); VehicleRoutingAlgorithm vra = Jsprit.createAlgorithm(vrp); UnassignedJobReasonTracker reasonTracker = new UnassignedJobReasonTracker(); vra.addListener(reasonTracker); - VehicleRoutingProblemSolution solution = Solutions.bestOf(vra.searchSolutions()); - Assert.assertEquals(1, solution.getUnassignedJobs().size()); - Assert.assertEquals(1, reasonTracker.getMostLikelyReasonCode(solution.getUnassignedJobs().iterator().next().getId())); + Assertions.assertEquals(1, solution.getUnassignedJobs().size()); + Assertions.assertEquals(1, reasonTracker.getMostLikelyReasonCode(solution.getUnassignedJobs().iterator().next().getId())); } @Test - public void shouldReturnCorrectTWReasonCode() { + @DisplayName("Should Return Correct TW Reason Code") + void shouldReturnCorrectTWReasonCode() { Service service = Service.Builder.newInstance("1").addSizeDimension(0, 1).setTimeWindow(TimeWindow.newInstance(110, 200)).setLocation(Location.newInstance(5, 7)).build(); - - VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().setFleetSize(VehicleRoutingProblem.FleetSize.FINITE).addVehicle(vehicle).addJob(service) - .build(); - + VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().setFleetSize(VehicleRoutingProblem.FleetSize.FINITE).addVehicle(vehicle).addJob(service).build(); VehicleRoutingAlgorithm vra = Jsprit.createAlgorithm(vrp); UnassignedJobReasonTracker reasonTracker = new UnassignedJobReasonTracker(); vra.addListener(reasonTracker); - VehicleRoutingProblemSolution solution = Solutions.bestOf(vra.searchSolutions()); - Assert.assertEquals(1, solution.getUnassignedJobs().size()); - Assert.assertEquals(2, reasonTracker.getMostLikelyReasonCode(solution.getUnassignedJobs().iterator().next().getId())); + Assertions.assertEquals(1, solution.getUnassignedJobs().size()); + Assertions.assertEquals(2, reasonTracker.getMostLikelyReasonCode(solution.getUnassignedJobs().iterator().next().getId())); } @Test - public void shouldReturnCorrectMaxDistanceReasonCode() { + @DisplayName("Should Return Correct Max Distance Reason Code") + void shouldReturnCorrectMaxDistanceReasonCode() { Service service = Service.Builder.newInstance("1").setLocation(Location.newInstance(51, 0)).build(); - Vehicle vehicle = VehicleImpl.Builder.newInstance("v").setStartLocation(Location.newInstance(0, 0)).build(); - final VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance().setFleetSize(VehicleRoutingProblem.FleetSize.FINITE).addVehicle(vehicle).addJob(service).build(); - StateManager stateManager = new StateManager(vrp); ConstraintManager constraintManager = new ConstraintManager(vrp, stateManager); StateId maxDistance = stateManager.createStateId("max-distance"); @@ -123,19 +113,17 @@ public void shouldReturnCorrectMaxDistanceReasonCode() { distMap.put(vehicle, 100d); MaxDistanceConstraint distanceConstraint = new MaxDistanceConstraint(stateManager, maxDistance, vrp.getTransportCosts(), distMap); constraintManager.addConstraint(distanceConstraint, ConstraintManager.Priority.CRITICAL); - - VehicleRoutingAlgorithm vra = Jsprit.Builder.newInstance(vrp).setStateAndConstraintManager(stateManager, constraintManager) - .buildAlgorithm(); + VehicleRoutingAlgorithm vra = Jsprit.Builder.newInstance(vrp).setStateAndConstraintManager(stateManager, constraintManager).buildAlgorithm(); UnassignedJobReasonTracker reasonTracker = new UnassignedJobReasonTracker(); vra.addListener(reasonTracker); - VehicleRoutingProblemSolution solution = Solutions.bestOf(vra.searchSolutions()); - Assert.assertEquals(1, solution.getUnassignedJobs().size()); - Assert.assertEquals(4, reasonTracker.getMostLikelyReasonCode(solution.getUnassignedJobs().iterator().next().getId())); + Assertions.assertEquals(1, solution.getUnassignedJobs().size()); + Assertions.assertEquals(4, reasonTracker.getMostLikelyReasonCode(solution.getUnassignedJobs().iterator().next().getId())); } @Test - public void getMostLikelyTest() { + @DisplayName("Get Most Likely Test") + void getMostLikelyTest() { Frequency frequency = new Frequency(); frequency.addValue("a"); frequency.addValue("b"); @@ -144,16 +132,16 @@ public void getMostLikelyTest() { frequency.addValue("a"); frequency.addValue("a"); frequency.addValue("a"); - Assert.assertEquals("a", UnassignedJobReasonTracker.getMostLikelyFailedConstraintName(frequency)); + Assertions.assertEquals(UnassignedJobReasonTracker.getMostLikelyFailedConstraintName(frequency), "a"); } @Test - public void testFreq() { + @DisplayName("Test Freq") + void testFreq() { Frequency frequency = new Frequency(); frequency.addValue("VehicleDependentTimeWindowHardActivityConstraint"); frequency.addValue("b"); frequency.addValue("VehicleDependentTimeWindowHardActivityConstraint"); - Iterator, Long>> entryIterator = frequency.entrySetIterator(); while (entryIterator.hasNext()) { Map.Entry, Long> e = entryIterator.next(); diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/util/VehicleRoutingTransportCostsMatrixTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/util/VehicleRoutingTransportCostsMatrixTest.java index 6ec6d80c6..269884ef6 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/util/VehicleRoutingTransportCostsMatrixTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/util/VehicleRoutingTransportCostsMatrixTest.java @@ -21,16 +21,20 @@ import com.graphhopper.jsprit.core.problem.vehicle.Vehicle; import com.graphhopper.jsprit.core.problem.vehicle.VehicleType; import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl; -import org.junit.Test; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -public class VehicleRoutingTransportCostsMatrixTest { +@DisplayName("Vehicle Routing Transport Costs Matrix Test") +class VehicleRoutingTransportCostsMatrixTest { @Test - public void whenAddingDistanceToSymmetricMatrix_itShouldReturnCorrectValues() { + @DisplayName("When Adding Distance To Symmetric Matrix _ it Should Return Correct Values") + void whenAddingDistanceToSymmetricMatrix_itShouldReturnCorrectValues() { VehicleRoutingTransportCostsMatrix.Builder matrixBuilder = VehicleRoutingTransportCostsMatrix.Builder.newInstance(true); matrixBuilder.addTransportDistance("1", "2", 2.); VehicleRoutingTransportCostsMatrix matrix = matrixBuilder.build(); @@ -41,7 +45,8 @@ public void whenAddingDistanceToSymmetricMatrix_itShouldReturnCorrectValues() { } @Test - public void whenAddingDistanceToSymmetricMatrixUsingStringAsKey_itShouldReturnCorrectValues() { + @DisplayName("When Adding Distance To Symmetric Matrix Using String As Key _ it Should Return Correct Values") + void whenAddingDistanceToSymmetricMatrixUsingStringAsKey_itShouldReturnCorrectValues() { VehicleRoutingTransportCostsMatrix.Builder matrixBuilder = VehicleRoutingTransportCostsMatrix.Builder.newInstance(true); matrixBuilder.addTransportDistance("from", "to", 2.); VehicleRoutingTransportCostsMatrix matrix = matrixBuilder.build(); @@ -52,13 +57,13 @@ public void whenAddingDistanceToSymmetricMatrixUsingStringAsKey_itShouldReturnCo } @Test - public void whenAddingDistanceToSymmetricMatrixWhereKeyAlreadyExists_itShouldOverrideValues() { + @DisplayName("When Adding Distance To Symmetric Matrix Where Key Already Exists _ it Should Override Values") + void whenAddingDistanceToSymmetricMatrixWhereKeyAlreadyExists_itShouldOverrideValues() { VehicleRoutingTransportCostsMatrix.Builder matrixBuilder = VehicleRoutingTransportCostsMatrix.Builder.newInstance(true); matrixBuilder.addTransportDistance("from", "to", 2.); - //overide + // overide matrixBuilder.addTransportDistance("from", "to", 4.); VehicleRoutingTransportCostsMatrix matrix = matrixBuilder.build(); - assertEquals(4., matrix.getTransportCost(loc("from"), loc("to"), 0.0, null, null), 0.1); assertEquals(4., matrix.getDistance("from", "to"), 0.1); assertEquals(4., matrix.getTransportCost(loc("to"), loc("from"), 0.0, null, null), 0.1); @@ -66,13 +71,13 @@ public void whenAddingDistanceToSymmetricMatrixWhereKeyAlreadyExists_itShouldOve } @Test - public void whenAddingDistanceToSymmetricMatrixWhereReverseKeyAlreadyExists_itShouldOverrideValues() { + @DisplayName("When Adding Distance To Symmetric Matrix Where Reverse Key Already Exists _ it Should Override Values") + void whenAddingDistanceToSymmetricMatrixWhereReverseKeyAlreadyExists_itShouldOverrideValues() { VehicleRoutingTransportCostsMatrix.Builder matrixBuilder = VehicleRoutingTransportCostsMatrix.Builder.newInstance(true); matrixBuilder.addTransportDistance("from", "to", 2.); - //overide + // overide matrixBuilder.addTransportDistance("to", "from", 4.); VehicleRoutingTransportCostsMatrix matrix = matrixBuilder.build(); - assertEquals(4., matrix.getTransportCost(loc("from"), loc("to"), 0.0, null, null), 0.1); assertEquals(4., matrix.getDistance("from", "to"), 0.1); assertEquals(4., matrix.getTransportCost(loc("to"), loc("from"), 0.0, null, null), 0.1); @@ -80,7 +85,8 @@ public void whenAddingDistanceToSymmetricMatrixWhereReverseKeyAlreadyExists_itSh } @Test - public void whenAddingDistanceToAsymmetricMatrix_itShouldReturnCorrectValues() { + @DisplayName("When Adding Distance To Asymmetric Matrix _ it Should Return Correct Values") + void whenAddingDistanceToAsymmetricMatrix_itShouldReturnCorrectValues() { VehicleRoutingTransportCostsMatrix.Builder matrixBuilder = VehicleRoutingTransportCostsMatrix.Builder.newInstance(false); matrixBuilder.addTransportDistance("1", "2", 2.); VehicleRoutingTransportCostsMatrix matrix = matrixBuilder.build(); @@ -91,16 +97,20 @@ private Location loc(String s) { return Location.Builder.newInstance().setId(s).build(); } - @Test(expected = IllegalStateException.class) - public void whenRequestingRelationThatDoesNotExist_itShouldThrowException() { - VehicleRoutingTransportCostsMatrix.Builder matrixBuilder = VehicleRoutingTransportCostsMatrix.Builder.newInstance(false); - matrixBuilder.addTransportDistance("1", "2", 2.); - VehicleRoutingTransportCostsMatrix matrix = matrixBuilder.build(); - matrix.getTransportCost(loc("2"), loc("1"), 0.0, null, null); + @Test + @DisplayName("When Requesting Relation That Does Not Exist _ it Should Throw Exception") + void whenRequestingRelationThatDoesNotExist_itShouldThrowException() { + assertThrows(IllegalStateException.class, () -> { + VehicleRoutingTransportCostsMatrix.Builder matrixBuilder = VehicleRoutingTransportCostsMatrix.Builder.newInstance(false); + matrixBuilder.addTransportDistance("1", "2", 2.); + VehicleRoutingTransportCostsMatrix matrix = matrixBuilder.build(); + matrix.getTransportCost(loc("2"), loc("1"), 0.0, null, null); + }); } @Test - public void whenAddingDistanceToAsymmetricMatrixUsingStringAsKey_itShouldReturnCorrectValues() { + @DisplayName("When Adding Distance To Asymmetric Matrix Using String As Key _ it Should Return Correct Values") + void whenAddingDistanceToAsymmetricMatrixUsingStringAsKey_itShouldReturnCorrectValues() { VehicleRoutingTransportCostsMatrix.Builder matrixBuilder = VehicleRoutingTransportCostsMatrix.Builder.newInstance(false); matrixBuilder.addTransportDistance("from", "to", 2.); matrixBuilder.addTransportDistance("to", "from", 4.); @@ -110,7 +120,8 @@ public void whenAddingDistanceToAsymmetricMatrixUsingStringAsKey_itShouldReturnC } @Test - public void whenAddingTimeToSymmetricMatrix_itShouldReturnCorrectValues() { + @DisplayName("When Adding Time To Symmetric Matrix _ it Should Return Correct Values") + void whenAddingTimeToSymmetricMatrix_itShouldReturnCorrectValues() { VehicleRoutingTransportCostsMatrix.Builder matrixBuilder = VehicleRoutingTransportCostsMatrix.Builder.newInstance(true); matrixBuilder.addTransportTime("1", "2", 2.); VehicleRoutingTransportCostsMatrix matrix = matrixBuilder.build(); @@ -119,7 +130,8 @@ public void whenAddingTimeToSymmetricMatrix_itShouldReturnCorrectValues() { } @Test - public void whenAddingTimeToSymmetricMatrixUsingStringAsKey_itShouldReturnCorrectValues() { + @DisplayName("When Adding Time To Symmetric Matrix Using String As Key _ it Should Return Correct Values") + void whenAddingTimeToSymmetricMatrixUsingStringAsKey_itShouldReturnCorrectValues() { VehicleRoutingTransportCostsMatrix.Builder matrixBuilder = VehicleRoutingTransportCostsMatrix.Builder.newInstance(true); matrixBuilder.addTransportTime("from", "to", 2.); VehicleRoutingTransportCostsMatrix matrix = matrixBuilder.build(); @@ -128,23 +140,28 @@ public void whenAddingTimeToSymmetricMatrixUsingStringAsKey_itShouldReturnCorrec } @Test - public void whenAddingTimeToAsymmetricMatrix_itShouldReturnCorrectValues() { + @DisplayName("When Adding Time To Asymmetric Matrix _ it Should Return Correct Values") + void whenAddingTimeToAsymmetricMatrix_itShouldReturnCorrectValues() { VehicleRoutingTransportCostsMatrix.Builder matrixBuilder = VehicleRoutingTransportCostsMatrix.Builder.newInstance(false); matrixBuilder.addTransportTime("1", "2", 2.); VehicleRoutingTransportCostsMatrix matrix = matrixBuilder.build(); assertEquals(2., matrix.getTransportTime(loc("1"), loc("2"), 0.0, null, null), 0.1); } - @Test(expected = IllegalStateException.class) - public void whenRequestingTimeOfRelationThatDoesNotExist_itShouldThrowException() { - VehicleRoutingTransportCostsMatrix.Builder matrixBuilder = VehicleRoutingTransportCostsMatrix.Builder.newInstance(false); - matrixBuilder.addTransportTime("1", "2", 2.); - VehicleRoutingTransportCostsMatrix matrix = matrixBuilder.build(); - matrix.getTransportTime(loc("2"), loc("1"), 0.0, null, null); + @Test + @DisplayName("When Requesting Time Of Relation That Does Not Exist _ it Should Throw Exception") + void whenRequestingTimeOfRelationThatDoesNotExist_itShouldThrowException() { + assertThrows(IllegalStateException.class, () -> { + VehicleRoutingTransportCostsMatrix.Builder matrixBuilder = VehicleRoutingTransportCostsMatrix.Builder.newInstance(false); + matrixBuilder.addTransportTime("1", "2", 2.); + VehicleRoutingTransportCostsMatrix matrix = matrixBuilder.build(); + matrix.getTransportTime(loc("2"), loc("1"), 0.0, null, null); + }); } @Test - public void whenAddingTimeToAsymmetricMatrixUsingStringAsKey_itShouldReturnCorrectValues() { + @DisplayName("When Adding Time To Asymmetric Matrix Using String As Key _ it Should Return Correct Values") + void whenAddingTimeToAsymmetricMatrixUsingStringAsKey_itShouldReturnCorrectValues() { VehicleRoutingTransportCostsMatrix.Builder matrixBuilder = VehicleRoutingTransportCostsMatrix.Builder.newInstance(false); matrixBuilder.addTransportTime("from", "to", 2.); matrixBuilder.addTransportTime("to", "from", 4.); @@ -154,7 +171,8 @@ public void whenAddingTimeToAsymmetricMatrixUsingStringAsKey_itShouldReturnCorre } @Test - public void whenAddingTimeToAsymmetricMatrixUsingStringAsKey_itShouldReturnCorrectCostValues() { + @DisplayName("When Adding Time To Asymmetric Matrix Using String As Key _ it Should Return Correct Cost Values") + void whenAddingTimeToAsymmetricMatrixUsingStringAsKey_itShouldReturnCorrectCostValues() { VehicleType type = VehicleTypeImpl.Builder.newInstance("t").setCostPerDistance(0.).setCostPerTime(1.).build(); Vehicle vehicle = mock(Vehicle.class); when(vehicle.getType()).thenReturn(type); @@ -162,14 +180,15 @@ public void whenAddingTimeToAsymmetricMatrixUsingStringAsKey_itShouldReturnCorre matrixBuilder.addTransportTime("from", "to", 2.); matrixBuilder.addTransportTime("to", "from", 4.); VehicleRoutingTransportCostsMatrix matrix = matrixBuilder.build(); -// assertEquals(2.,matrix.getTransportTime("from", "to", 0.0, null, null),0.1); -// assertEquals(4.,matrix.getTransportTime("to", "from", 0.0, null, null),0.1); + // assertEquals(2.,matrix.getTransportTime("from", "to", 0.0, null, null),0.1); + // assertEquals(4.,matrix.getTransportTime("to", "from", 0.0, null, null),0.1); assertEquals(2., matrix.getTransportCost(loc("from"), loc("to"), 0.0, null, vehicle), 0.1); assertEquals(4., matrix.getTransportCost(loc("to"), loc("from"), 0.0, null, vehicle), 0.1); } @Test - public void whenAddingTimeAndDistanceToSymmetricMatrix_itShouldReturnCorrectValues() { + @DisplayName("When Adding Time And Distance To Symmetric Matrix _ it Should Return Correct Values") + void whenAddingTimeAndDistanceToSymmetricMatrix_itShouldReturnCorrectValues() { VehicleRoutingTransportCostsMatrix.Builder matrixBuilder = VehicleRoutingTransportCostsMatrix.Builder.newInstance(true); matrixBuilder.addTransportDistance("1", "2", 20.); matrixBuilder.addTransportTime("1", "2", 2.); @@ -182,7 +201,8 @@ public void whenAddingTimeAndDistanceToSymmetricMatrix_itShouldReturnCorrectValu } @Test - public void whenAddingTimeAndDistanceToSymmetricMatrixUsingStringAsKey_itShouldReturnCorrectValues() { + @DisplayName("When Adding Time And Distance To Symmetric Matrix Using String As Key _ it Should Return Correct Values") + void whenAddingTimeAndDistanceToSymmetricMatrixUsingStringAsKey_itShouldReturnCorrectValues() { VehicleRoutingTransportCostsMatrix.Builder matrixBuilder = VehicleRoutingTransportCostsMatrix.Builder.newInstance(true); matrixBuilder.addTransportTime("from", "to", 2.); Vehicle vehicle = mock(Vehicle.class); @@ -194,7 +214,8 @@ public void whenAddingTimeAndDistanceToSymmetricMatrixUsingStringAsKey_itShouldR } @Test - public void whenAddingTimeAndDistanceToAsymmetricMatrix_itShouldReturnCorrectValues() { + @DisplayName("When Adding Time And Distance To Asymmetric Matrix _ it Should Return Correct Values") + void whenAddingTimeAndDistanceToAsymmetricMatrix_itShouldReturnCorrectValues() { VehicleRoutingTransportCostsMatrix.Builder matrixBuilder = VehicleRoutingTransportCostsMatrix.Builder.newInstance(false); matrixBuilder.addTransportTime("1", "2", 2.); matrixBuilder.addTransportTime("2", "1", 8.); @@ -207,7 +228,8 @@ public void whenAddingTimeAndDistanceToAsymmetricMatrix_itShouldReturnCorrectVal } @Test - public void whenAddingTimeAndDistanceToAsymmetricMatrixUsingStringAsKey_itShouldReturnCorrectValues() { + @DisplayName("When Adding Time And Distance To Asymmetric Matrix Using String As Key _ it Should Return Correct Values") + void whenAddingTimeAndDistanceToAsymmetricMatrixUsingStringAsKey_itShouldReturnCorrectValues() { VehicleRoutingTransportCostsMatrix.Builder matrixBuilder = VehicleRoutingTransportCostsMatrix.Builder.newInstance(false); matrixBuilder.addTransportTime("from", "to", 2.); matrixBuilder.addTransportDistance("from", "to", 1.); @@ -221,9 +243,9 @@ public void whenAddingTimeAndDistanceToAsymmetricMatrixUsingStringAsKey_itShould assertEquals(11., matrix.getTransportCost(loc("to"), loc("from"), 0.0, null, vehicle), 0.1); } - @Test - public void whenAddingTimeAndDistanceToAsymmetricMatrixUsingStringAsKey_itShouldReturnCorrectCostValues() { + @DisplayName("When Adding Time And Distance To Asymmetric Matrix Using String As Key _ it Should Return Correct Cost Values") + void whenAddingTimeAndDistanceToAsymmetricMatrixUsingStringAsKey_itShouldReturnCorrectCostValues() { VehicleType type = VehicleTypeImpl.Builder.newInstance("t").setCostPerDistance(2.).setCostPerTime(1.).build(); Vehicle vehicle = mock(Vehicle.class); when(vehicle.getType()).thenReturn(type); @@ -233,21 +255,18 @@ public void whenAddingTimeAndDistanceToAsymmetricMatrixUsingStringAsKey_itShould matrixBuilder.addTransportTime("to", "from", 4.); matrixBuilder.addTransportDistance("to", "from", 5.); VehicleRoutingTransportCostsMatrix matrix = matrixBuilder.build(); - assertEquals(8., matrix.getTransportCost(loc("from"), loc("to"), 0.0, null, vehicle), 0.1); assertEquals(14., matrix.getTransportCost(loc("to"), loc("from"), 0.0, null, vehicle), 0.1); } @Test - public void whenAddingTimeAndDistanceToSymmetricMatrixUsingStringAsKey_and_overridesEntry_itShouldReturnCorrectValues() { + @DisplayName("When Adding Time And Distance To Symmetric Matrix Using String As Key _ and _ overrides Entry _ it Should Return Correct Values") + void whenAddingTimeAndDistanceToSymmetricMatrixUsingStringAsKey_and_overridesEntry_itShouldReturnCorrectValues() { VehicleRoutingTransportCostsMatrix.Builder matrixBuilder = VehicleRoutingTransportCostsMatrix.Builder.newInstance(true); - matrixBuilder.addTransportDistance("from", "to", 1.); matrixBuilder.addTransportTime("from", "to", 2.); - matrixBuilder.addTransportDistance("to", "from", 1.); matrixBuilder.addTransportTime("to", "from", 2.); - VehicleRoutingTransportCostsMatrix matrix = matrixBuilder.build(); Vehicle vehicle = mock(Vehicle.class); VehicleType type = VehicleTypeImpl.Builder.newInstance("t").setCostPerDistance(1.).setCostPerTime(0.).build(); @@ -257,5 +276,4 @@ public void whenAddingTimeAndDistanceToSymmetricMatrixUsingStringAsKey_and_overr assertEquals(1., matrix.getTransportCost(loc("from"), loc("to"), 0.0, null, vehicle), 0.1); assertEquals(1., matrix.getTransportCost(loc("to"), loc("from"), 0.0, null, vehicle), 0.1); } - } diff --git a/pom.xml b/pom.xml index d7adaf895..b066b4157 100644 --- a/pom.xml +++ b/pom.xml @@ -72,7 +72,7 @@ 21 21 UTF-8 - 4.13.1 + 5.10.2 5.10.0 1.3 1.7.32 @@ -153,9 +153,25 @@ + + + + org.junit.jupiter + junit-jupiter-api + ${junit.version} + test + + + + org.junit.jupiter + junit-jupiter-engine + ${junit.version} + test + + - junit - junit + org.junit.vintage + junit-vintage-engine ${junit.version} test From ce0607adccd268643e4f5884628ebbb7af14543a Mon Sep 17 00:00:00 2001 From: oblonski Date: Tue, 18 Feb 2025 20:45:09 +0100 Subject: [PATCH 170/191] update maven-surefire --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index b066b4157..0e899bad5 100644 --- a/pom.xml +++ b/pom.xml @@ -116,7 +116,7 @@ org.apache.maven.plugins maven-surefire-plugin - 2.19.1 + 3.2.5 -Xmx100m -Xms100m From 3ae6bffa6887da2ec1798ee7b5a89a9680e3b2f3 Mon Sep 17 00:00:00 2001 From: oblonski Date: Tue, 18 Feb 2025 20:49:09 +0100 Subject: [PATCH 171/191] update maven compiler plugin --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 0e899bad5..c942768b1 100644 --- a/pom.xml +++ b/pom.xml @@ -104,7 +104,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.5.1 + 3.11.0 -XDignore.symbol.file true From 72fe4c042f8210bc94cdd366f4a2ea6b63b8c121 Mon Sep 17 00:00:00 2001 From: oblonski Date: Tue, 18 Feb 2025 20:49:27 +0100 Subject: [PATCH 172/191] switch to jdk21 --- .github/workflows/build.yml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 08ec80aaf..558b793bd 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -10,12 +10,11 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - name: Set up Java - uses: actions/setup-java@v2 + - uses: actions/checkout@v4 + - name: Set up JDK 21 + uses: actions/setup-java@v4 with: - java-version: '8' - distribution: 'zulu' - cache: maven + java-version: '21' + distribution: 'temurin' - name: Build with Maven run: mvn --batch-mode --update-snapshots verify From 815d459944c45f4a306ada2c2535a6ea88fb315c Mon Sep 17 00:00:00 2001 From: oblonski Date: Wed, 19 Feb 2025 10:19:26 +0100 Subject: [PATCH 173/191] build on master and publish to GitHub packages on tags --- .github/workflows/build.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 558b793bd..270e54ab8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -4,6 +4,8 @@ on: push: branches: - master + tags: + - '*' jobs: build: @@ -18,3 +20,9 @@ jobs: distribution: 'temurin' - name: Build with Maven run: mvn --batch-mode --update-snapshots verify + - name: Publish to GitHub Packages + if: startsWith(github.ref, 'refs/tags/') + run: mvn --batch-mode deploy + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + From e7d39198b9001368d16ef4442fa6ec76138f8c07 Mon Sep 17 00:00:00 2001 From: oblonski Date: Wed, 19 Feb 2025 10:34:19 +0100 Subject: [PATCH 174/191] build and test, and release to github packages --- .github/workflows/build.yml | 20 ++++++++++++-------- pom.xml | 6 +++++- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 270e54ab8..d1d241fa2 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,11 +1,11 @@ -name: GitHub CI +name: Build and test +on: push -on: - push: - branches: - - master - tags: - - '*' +env: + # we use these in .ci.maven.settings.xml, which is needed to authenticate for core (!) GitHub packages + MAVEN_SETTINGS_USERNAME_FOR_GITHUB: ${{ secrets.MAVEN_SETTINGS_USERNAME_FOR_GITHUB }} + MAVEN_SETTINGS_PASSWORD_FOR_GITHUB: ${{ secrets.MAVEN_SETTINGS_PASSWORD_FOR_GITHUB }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} jobs: build: @@ -18,11 +18,15 @@ jobs: with: java-version: '21' distribution: 'temurin' + server-id: github - name: Build with Maven run: mvn --batch-mode --update-snapshots verify + - name: Set jsprit version (tagged only) + run: mvn versions:set -DnewVersion=${{ github.ref_name }} -DgenerateBackupPoms=false --no-transfer-progress + if: startsWith(github.ref, 'refs/tags/') - name: Publish to GitHub Packages if: startsWith(github.ref, 'refs/tags/') - run: mvn --batch-mode deploy + run: mvn --batch-mode deploy -B --no-transfer-progress -DskipTests -P release env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/pom.xml b/pom.xml index c942768b1..bbbba9c33 100644 --- a/pom.xml +++ b/pom.xml @@ -186,7 +186,11 @@ - + + github + GitHub GraphHopper Apache Maven Packages + https://maven.pkg.github.com/graphhopper/jsprit + From a253adf34011691b401600ffbbbf19c87492d67e Mon Sep 17 00:00:00 2001 From: oblonski Date: Wed, 19 Feb 2025 10:41:52 +0100 Subject: [PATCH 175/191] rm release profile --- pom.xml | 142 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 71 insertions(+), 71 deletions(-) diff --git a/pom.xml b/pom.xml index bbbba9c33..0fc1bb68e 100644 --- a/pom.xml +++ b/pom.xml @@ -194,76 +194,76 @@ - - - selected-build - - jsprit-core - jsprit-analysis - - - - release - - false - - - - - org.apache.maven.plugins - maven-gpg-plugin - 1.6 - - - sign-artifacts - verify - - sign - - - - - - org.sonatype.plugins - nexus-staging-maven-plugin - 1.6.7 - true - - ossrh - https://oss.sonatype.org/ - true - - - - - org.apache.maven.plugins - maven-javadoc-plugin - 2.10.3 - - - attach-javadocs - - jar - - - - - - org.apache.maven.plugins - maven-source-plugin - 3.0.0 - - - attach-sources - - jar-no-fork - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From b1e66d173739f9c6b158be742ae18bb12031d3f6 Mon Sep 17 00:00:00 2001 From: oblonski Date: Wed, 19 Feb 2025 10:53:23 +0100 Subject: [PATCH 176/191] fix: remove Maven prerequisites and unused release profile - Replace prerequisites with maven-enforcer-plugin - Remove unused release profile activation - Clean up Maven build warnings --- .github/workflows/build.yml | 2 +- pom.xml | 24 ++++++++++++++++++++---- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d1d241fa2..1543013d7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -26,7 +26,7 @@ jobs: if: startsWith(github.ref, 'refs/tags/') - name: Publish to GitHub Packages if: startsWith(github.ref, 'refs/tags/') - run: mvn --batch-mode deploy -B --no-transfer-progress -DskipTests -P release + run: mvn --batch-mode deploy -B --no-transfer-progress -DskipTests env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/pom.xml b/pom.xml index 0fc1bb68e..4a8afa379 100644 --- a/pom.xml +++ b/pom.xml @@ -45,10 +45,6 @@ - - 3.3.0 - - scm:git:git@github.com:graphhopper/jsprit.git scm:git:https://github.com/graphhopper/jsprit.git @@ -101,6 +97,26 @@ + + org.apache.maven.plugins + maven-enforcer-plugin + 3.4.1 + + + enforce-maven + + enforce + + + + + [3.6.0,) + + + + + + org.apache.maven.plugins maven-compiler-plugin From 4f80f66fe98d332f359cb2fb3d3c025a1e7790e3 Mon Sep 17 00:00:00 2001 From: oblonski Date: Wed, 19 Feb 2025 13:34:46 +0100 Subject: [PATCH 177/191] fix: revert optimize array operations --- .../core/algorithm/state/StateManager.java | 333 ++++++------------ 1 file changed, 114 insertions(+), 219 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/StateManager.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/StateManager.java index 8338c6331..73dc97f8b 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/StateManager.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/StateManager.java @@ -34,8 +34,6 @@ import com.graphhopper.jsprit.core.problem.solution.route.activity.TourActivity; import com.graphhopper.jsprit.core.problem.solution.route.state.RouteAndActivityStateGetter; import com.graphhopper.jsprit.core.problem.vehicle.Vehicle; -import gnu.trove.map.TIntObjectMap; -import gnu.trove.map.hash.TIntObjectHashMap; import java.util.*; @@ -49,22 +47,17 @@ */ public class StateManager implements RouteAndActivityStateGetter, IterationStartsListener, RuinListener, InsertionStartsListener, JobInsertedListener, InsertionEndsListener { - // Growth factor for array resizing - private static final double GROWTH_FACTOR = 1.5; - // Initial capacity - should be tuned based on typical usage - private static final int INITIAL_CAPACITY = 32; + private RouteActivityVisitor routeActivityVisitor = new RouteActivityVisitor(); - private final RouteActivityVisitor routeActivityVisitor = new RouteActivityVisitor(); + private ReverseRouteActivityVisitor revRouteActivityVisitor = new ReverseRouteActivityVisitor(); - private final ReverseRouteActivityVisitor revRouteActivityVisitor = new ReverseRouteActivityVisitor(); + private Collection routeVisitors = new ArrayList<>(); - private final Collection routeVisitors = new ArrayList<>(); + private RuinListeners ruinListeners = new RuinListeners(); - private final RuinListeners ruinListeners = new RuinListeners(); + private InsertionListeners insertionListeners = new InsertionListeners(); - private final InsertionListeners insertionListeners = new InsertionListeners(); - - private final Collection updaters = new ArrayList<>(); + private Collection updaters = new ArrayList<>(); private boolean updateLoad = false; @@ -74,11 +67,11 @@ public class StateManager implements RouteAndActivityStateGetter, IterationStart private int stateIndexCounter; - private final Map createdStateIds = new HashMap<>(); + private Map createdStateIds = new HashMap<>(); - private final int nuActivities; + private int nuActivities; - private final int nuVehicleTypeKeys; + private int nuVehicleTypeKeys; private Object[] problemStates; @@ -86,77 +79,22 @@ public class StateManager implements RouteAndActivityStateGetter, IterationStart private Object[][][] vehicleDependentActivityStates; - private Object[] nullArray; + private final Map routeStateMap; + + private final Map vehicleDependentRouteStateMap; -// private final Map routeStateMap; -// -// private final Map vehicleDependentRouteStateMap; + private Object[][] routeStatesArr; - private final TIntObjectMap routeStateMap; - private final TIntObjectMap vehicleDependentRouteStateMap; + private Object[][][] vehicleDependentRouteStatesArr; - private int nextRouteIndex = 0; - private final Set availableIndices; + private final VehicleRoutingProblem vrp; + private final boolean isIndexedBased; int getMaxIndexOfVehicleTypeIdentifiers() { return nuVehicleTypeKeys; } - private void incStateIndexCounter() { - stateIndexCounter++; - } - - - /** - * Constructs the stateManager with the specified VehicleRoutingProblem. - * - * @param vehicleRoutingProblem the corresponding VehicleRoutingProblem - */ - public StateManager(VehicleRoutingProblem vehicleRoutingProblem) { - stateIndexCounter = initialNoStates; - nuActivities = Math.max(10, vehicleRoutingProblem.getNuActivities() + 1); - nuVehicleTypeKeys = Math.max(3, getNuVehicleTypes(vehicleRoutingProblem) + 2); - routeStateMap = new TIntObjectHashMap<>(51, 0.5f, -1); - vehicleDependentRouteStateMap = new TIntObjectHashMap<>(51, 0.5f, -1); - availableIndices = new HashSet<>(); - initArrays(); - } - - private void initArrays() { - activityStates = new Object[nuActivities][StateManager.INITIAL_CAPACITY]; - vehicleDependentActivityStates = new Object[nuActivities][nuVehicleTypeKeys][StateManager.INITIAL_CAPACITY]; - problemStates = new Object[StateManager.INITIAL_CAPACITY]; - nullArray = new Object[StateManager.INITIAL_CAPACITY]; - } - - private int getOrCreateRouteIndex(VehicleRoute route) { - int index = route.getIndex(); - if (index == -1) { - // This should now happen less frequently since routes in solutions - // are pre-indexed at iteration start - if (!availableIndices.isEmpty()) { - index = availableIndices.iterator().next(); - availableIndices.remove(index); - } else { - index = nextRouteIndex++; - } - route.setIndex(index); - initializeRouteStates(index); - } - return index; - } - - public void releaseRouteIndex(VehicleRoute route) { - int index = route.getIndex(); - if (index != -1) { - routeStateMap.remove(index); - vehicleDependentRouteStateMap.remove(index); - availableIndices.add(index); - route.setIndex(-1); - } - } - /** * Create and returns a stateId with the specified state-name. *

@@ -168,51 +106,43 @@ public void releaseRouteIndex(VehicleRoute route) { * @throws java.lang.IllegalStateException if name of state is already used internally */ public StateId createStateId(String name) { - // Check existing state - if (createdStateIds.containsKey(name)) { - return createdStateIds.get(name); - } - - // Check if we need to grow arrays + if (createdStateIds.containsKey(name)) return createdStateIds.get(name); if (stateIndexCounter >= activityStates[0].length) { - growArrays(); + activityStates = new Object[nuActivities][stateIndexCounter + 1]; + vehicleDependentActivityStates = new Object[nuActivities][nuVehicleTypeKeys][stateIndexCounter + 1]; + routeStatesArr = new Object[vrp.getVehicles().size() + 2][stateIndexCounter + 1]; + vehicleDependentRouteStatesArr = new Object[vrp.getVehicles().size() + 2][nuVehicleTypeKeys][stateIndexCounter + 1]; + problemStates = new Object[stateIndexCounter + 1]; } - - // Create new state ID StateId id = StateFactory.createId(name, stateIndexCounter); incStateIndexCounter(); createdStateIds.put(name, id); return id; } - private void growArrays() { - // Calculate new capacity - int oldCapacity = activityStates[0].length; - int newCapacity = Math.max((int) (oldCapacity * GROWTH_FACTOR), oldCapacity + 1); - - // Create new arrays - Object[][] newActivityStates = new Object[nuActivities][newCapacity]; - Object[][][] newVehicleDependentActivityStates = new Object[nuActivities][nuVehicleTypeKeys][newCapacity]; - Object[] newProblemStates = new Object[newCapacity]; - - // Copy existing data using System.arraycopy - copyStates(activityStates, newActivityStates); - copyStates(vehicleDependentActivityStates, newVehicleDependentActivityStates); - System.arraycopy(problemStates, 0, newProblemStates, 0, problemStates.length); - - // Assign new arrays - activityStates = newActivityStates; - vehicleDependentActivityStates = newVehicleDependentActivityStates; - problemStates = newProblemStates; - nullArray = new Object[newCapacity]; + private void incStateIndexCounter() { + stateIndexCounter++; } - private void copyStates(Object[][] source, Object[][] target) { - for (int i = 0; i < source.length; i++) { - System.arraycopy(source[i], 0, target[i], 0, source[i].length); - } - } + /** + * Constructs the stateManager with the specified VehicleRoutingProblem. + * + * @param vehicleRoutingProblem the corresponding VehicleRoutingProblem + */ + public StateManager(VehicleRoutingProblem vehicleRoutingProblem) { + stateIndexCounter = initialNoStates; + int initialStateArrayLength = 30; + this.vrp = vehicleRoutingProblem; + nuActivities = Math.max(10, vrp.getNuActivities() + 1); + nuVehicleTypeKeys = Math.max(3, getNuVehicleTypes(vrp) + 2); + activityStates = new Object[nuActivities][initialStateArrayLength]; + vehicleDependentActivityStates = new Object[nuActivities][nuVehicleTypeKeys][initialStateArrayLength]; + isIndexedBased = false; + routeStateMap = new HashMap<>(); + vehicleDependentRouteStateMap = new HashMap<>(); + problemStates = new Object[initialStateArrayLength]; + } private int getNuVehicleTypes(VehicleRoutingProblem vrp) { int maxIndex = 0; @@ -249,41 +179,34 @@ public T getProblemState(StateId stateId, Class type) { } /** - * Clears all states by setting all values to null. - * Uses optimized sequential clearing with System.arraycopy. + * Clears all states, i.e. set all value to null. */ public void clear() { - // Clear activity states - clearActivityStates(); - - // Clear vehicle dependent activity states - clearVehicleDependentStates(); - - // Clear maps - routeStateMap.clear(); - vehicleDependentRouteStateMap.clear(); - - // Clear problem states - System.arraycopy(nullArray, 0, problemStates, 0, problemStates.length); - } - - private void clearActivityStates() { - final int rowLength = activityStates[0].length; - for (int i = 0; i < activityStates.length; i++) { - System.arraycopy(nullArray, 0, activityStates[i], 0, rowLength); + fill_twoDimArr(activityStates, null); + fill_threeDimArr(vehicleDependentActivityStates, null); + if (isIndexedBased) { + fill_twoDimArr(routeStatesArr, null); + fill_threeDimArr(vehicleDependentRouteStatesArr, null); + } else { + routeStateMap.clear(); + vehicleDependentRouteStateMap.clear(); } + Arrays.fill(problemStates, null); } - private void clearVehicleDependentStates() { - final int innerLength = vehicleDependentActivityStates[0][0].length; - for (int i = 0; i < vehicleDependentActivityStates.length; i++) { - Object[][] middleArray = vehicleDependentActivityStates[i]; - for (int j = 0; j < middleArray.length; j++) { - System.arraycopy(nullArray, 0, middleArray[j], 0, innerLength); + private void fill_threeDimArr(Object[][][] states, Object o) { + for (Object[][] twoDimArr : states) { + for (Object[] oneDimArr : twoDimArr) { + Arrays.fill(oneDimArr, o); } } } + private void fill_twoDimArr(Object[][] states, Object o) { + for (Object[] rows : states) { + Arrays.fill(rows, o); + } + } /** * Returns associated state for the specified activity and stateId, or it returns null if no value is associated. @@ -374,16 +297,23 @@ private ClassCastException getClassCastException(ClassCastException e, StateId s @Override public T getRouteState(VehicleRoute route, StateId stateId, Class type) { if (route == null) return null; - int routeIndex = getOrCreateRouteIndex(route); - Object[] states = routeStateMap.get(routeIndex); - if (states == null) return null; - - try { - return type.cast(states[stateId.getIndex()]); - } catch (ClassCastException e) { - throw getClassCastException(e, stateId, type.toString(), - states[stateId.getIndex()].getClass().toString()); + T state = null; + if (isIndexedBased) { + try { + state = type.cast(routeStatesArr[route.getVehicle().getIndex()][stateId.getIndex()]); + } catch (ClassCastException e) { + throw getClassCastException(e, stateId, type.toString(), routeStatesArr[route.getVehicle().getIndex()][stateId.getIndex()].getClass().toString()); + } + } else { + try { + if (routeStateMap.containsKey(route)) { + state = type.cast(routeStateMap.get(route)[stateId.getIndex()]); + } + } catch (ClassCastException e) { + throw getClassCastException(e, stateId, type.toString(), routeStateMap.get(route)[stateId.getIndex()].getClass().toString()); + } } + return state; } /** @@ -396,12 +326,9 @@ public T getRouteState(VehicleRoute route, StateId stateId, Class type) { */ @SuppressWarnings("UnusedDeclaration") public boolean hasRouteState(VehicleRoute route, Vehicle vehicle, StateId stateId) { - int routeIndex = getOrCreateRouteIndex(route); - Object[][] states = vehicleDependentRouteStateMap.get(routeIndex); - if (states == null) { - return false; - } - return states[vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()] != null; + if (!vehicleDependentRouteStateMap.containsKey(route)) return false; + return vehicleDependentRouteStateMap.get(route)[vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()] != null; +// return vehicle_dependent_route_states[route.getActivities().get(0).getIndex()][vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()] != null; } /** @@ -418,25 +345,24 @@ public boolean hasRouteState(VehicleRoute route, Vehicle vehicle, StateId stateI * @throws java.lang.IllegalStateException if !route.isEmpty() and act(0).getIndex()==0 since this suggests that act has no index at all */ public T getRouteState(VehicleRoute route, Vehicle vehicle, StateId stateId, Class type) { - int routeIndex = getOrCreateRouteIndex(route); - Object[][] states = vehicleDependentRouteStateMap.get(routeIndex); - if (states == null) { - return null; - } - - int vehicleTypeIndex = vehicle.getVehicleTypeIdentifier().getIndex(); - int stateIndex = stateId.getIndex(); - - Object state = states[vehicleTypeIndex][stateIndex]; - if (state == null) { - return null; - } - - try { - return type.cast(state); - } catch (ClassCastException e) { - throw getClassCastException(e, stateId, type.toString(), state.getClass().toString()); +// if (route.isEmpty()) return null; + T state = null; + if (isIndexedBased) { + try { + state = type.cast(vehicleDependentRouteStatesArr[route.getVehicle().getIndex()][vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()]); + } catch (ClassCastException e) { + throw getClassCastException(e, stateId, type.toString(), vehicleDependentRouteStatesArr[route.getVehicle().getIndex()][vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()].getClass().toString()); + } + } else { + try { + if (vehicleDependentRouteStateMap.containsKey(route)) { + state = type.cast(vehicleDependentRouteStateMap.get(route)[vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()]); + } + } catch (ClassCastException e) { + throw getClassCastException(e, stateId, type.toString(), vehicleDependentRouteStateMap.get(route)[vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()].getClass().toString()); + } } + return state; } /** @@ -525,25 +451,28 @@ public void putRouteState(VehicleRoute route, Vehicle vehicle, StateId state } void putTypedInternalRouteState(VehicleRoute route, StateId stateId, T state) { - int routeIndex = getOrCreateRouteIndex(route); - Object[] states = routeStateMap.get(routeIndex); - if (states == null) { - states = new Object[stateIndexCounter]; - routeStateMap.put(routeIndex, states); +// if (route.isEmpty()) return; + if (isIndexedBased) { + routeStatesArr[route.getVehicle().getIndex()][stateId.getIndex()] = state; + } else { + if (!routeStateMap.containsKey(route)) { + routeStateMap.put(route, new Object[stateIndexCounter]); + } + routeStateMap.get(route)[stateId.getIndex()] = state; } - states[stateId.getIndex()] = state; } void putTypedInternalRouteState(VehicleRoute route, Vehicle vehicle, StateId stateId, T state) { - int routeIndex = getOrCreateRouteIndex(route); - Object[][] states = vehicleDependentRouteStateMap.get(routeIndex); - - if (states == null) { - states = new Object[nuVehicleTypeKeys][stateIndexCounter]; - vehicleDependentRouteStateMap.put(routeIndex, states); +// if (route.isEmpty()) return; + if (isIndexedBased) { + vehicleDependentRouteStatesArr[route.getVehicle().getIndex()][vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()] = state; + } else { + if (!vehicleDependentRouteStateMap.containsKey(route)) { + vehicleDependentRouteStateMap.put(route, new Object[nuVehicleTypeKeys][stateIndexCounter]); + } + vehicleDependentRouteStateMap.get(route)[vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()] = state; } - states[vehicle.getVehicleTypeIdentifier().getIndex()][stateId.getIndex()] = state; } /** @@ -638,46 +567,12 @@ public void informInsertionStarts(Collection vehicleRoutes, Collec } public void reCalculateStates(VehicleRoute route){ - informInsertionStarts(Collections.singletonList(route), Collections.emptyList()); + informInsertionStarts(Arrays.asList(route), Collections.emptyList()); } @Override public void informIterationStarts(int i, VehicleRoutingProblem problem, Collection solutions) { - nextRouteIndex = 0; - availableIndices.clear(); clear(); - - // Assign new indices to all routes in all solutions - for (VehicleRoutingProblemSolution solution : solutions) { - Collection routes = solution.getRoutes(); - assignNewIndicesToRoutes(routes); - } - } - - private void assignNewIndicesToRoutes(Collection routes) { - for (VehicleRoute route : routes) { - // Reset any existing index - route.setIndex(-1); - - // Assign new sequential index - int newIndex = nextRouteIndex++; - route.setIndex(newIndex); - - // Pre-allocate state arrays for this route if needed - initializeRouteStates(newIndex); - } - } - - private void initializeRouteStates(int routeIndex) { - // Initialize route states if they will be needed - if (!routeStateMap.containsKey(routeIndex)) { - routeStateMap.put(routeIndex, new Object[stateIndexCounter]); - } - - if (!vehicleDependentRouteStateMap.containsKey(routeIndex)) { - vehicleDependentRouteStateMap.put(routeIndex, - new Object[nuVehicleTypeKeys][stateIndexCounter]); - } } @Override From d2576be01014dcfc2309219df04f2cab0fc3c2d0 Mon Sep 17 00:00:00 2001 From: oblonski Date: Mon, 28 Apr 2025 10:27:19 +0200 Subject: [PATCH 178/191] change to linked hash map --- .../graphhopper/jsprit/core/problem/VehicleRoutingProblem.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java index ca5386ded..979b984d9 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/VehicleRoutingProblem.java @@ -578,7 +578,7 @@ private VehicleRoutingProblem(Builder builder) { this.activityMap = builder.activityMap; this.nuActivities = builder.activityIndexCounter; this.allLocations = builder.allLocations; - this.allJobs = new HashMap<>(jobs); + this.allJobs = new LinkedHashMap<>(jobs); this.allJobs.putAll(builder.jobsInInitialRoutes); logger.info("setup problem: {}", this); } From 138422af3bb67a2dcac98aff0dec4986258b340e Mon Sep 17 00:00:00 2001 From: oblonski Date: Wed, 30 Apr 2025 13:46:59 +0200 Subject: [PATCH 179/191] optimize --- .../core/algorithm/recreate/Inserter.java | 2 +- .../recreate/ShipmentInsertionCalculator.java | 5 +- .../jsprit/core/problem/Capacity.java | 211 ++++++++---- .../route/activity/TourActivities.java | 309 +++++++----------- 4 files changed, 280 insertions(+), 247 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/Inserter.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/Inserter.java index 1e79be892..ac8556b9a 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/Inserter.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/Inserter.java @@ -70,7 +70,7 @@ public void handleJobInsertion(Job job, InsertionData iData, VehicleRoute route) if (job instanceof Service) { route.setVehicleAndDepartureTime(iData.getSelectedVehicle(), iData.getVehicleDepartureTime()); if (!iData.getSelectedVehicle().isReturnToDepot()) { - if (iData.getDeliveryInsertionIndex() >= route.getTourActivities().getActivities().size()) { + if (iData.getDeliveryInsertionIndex() >= route.getTourActivities().size()) { setEndLocation(route, (Service) job); } } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculator.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculator.java index a09264151..19681d893 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculator.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculator.java @@ -128,11 +128,12 @@ public InsertionData getInsertionData(final VehicleRoute currentRoute, final Job boolean tourEnd = false; //pickupShipmentLoop List activities = currentRoute.getTourActivities().getActivities(); + int activitiesSize = activities.size(); List failedActivityConstraints = new ArrayList<>(); while (!tourEnd) { TourActivity nextAct; - if (i < activities.size()) { + if (i < activitiesSize) { nextAct = activities.get(i); } else { nextAct = end; @@ -182,7 +183,7 @@ else if (pickupShipmentConstraintStatus.equals(ConstraintsStatus.FULFILLED)) { boolean tourEnd_deliveryLoop = false; while (!tourEnd_deliveryLoop) { TourActivity nextAct_deliveryLoop; - if (j < activities.size()) { + if (j < activitiesSize) { nextAct_deliveryLoop = activities.get(j); } else { nextAct_deliveryLoop = end; diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/Capacity.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/Capacity.java index f19a0ad59..231b8a4c5 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/Capacity.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/Capacity.java @@ -28,6 +28,9 @@ */ public class Capacity { + // Pre-allocate a common instance for performance + private static final Capacity ZERO = new Capacity(new int[1]); + /** * Adds up two capacities, i.e. sums up each and every capacity dimension, and returns the resulting Capacity. *

@@ -40,11 +43,20 @@ public class Capacity { */ public static Capacity addup(Capacity cap1, Capacity cap2) { if (cap1 == null || cap2 == null) throw new NullPointerException("arguments must not be null"); - Capacity.Builder capacityBuilder = Capacity.Builder.newInstance(); - for (int i = 0; i < Math.max(cap1.getNuOfDimensions(), cap2.getNuOfDimensions()); i++) { - capacityBuilder.addDimension(i, cap1.get(i) + cap2.get(i)); + + // Special case handling for better performance + if (cap1.isZero()) return copyOf(cap2); + if (cap2.isZero()) return copyOf(cap1); + + int maxDimension = Math.max(cap1.getNuOfDimensions(), cap2.getNuOfDimensions()); + int[] newDimensions = new int[maxDimension]; + + // Process all dimensions in one loop + for (int i = 0; i < maxDimension; i++) { + newDimensions[i] = cap1.get(i) + cap2.get(i); } - return capacityBuilder.build(); + + return new Capacity(newDimensions); } /** @@ -54,16 +66,22 @@ public static Capacity addup(Capacity cap1, Capacity cap2) { * @param cap2subtract capacity to subtract * @return new capacity * @throws NullPointerException if one of the args is null - * @throws IllegalStateException if number of capacityDimensions of cap1 and cap2 are different (i.e. cap1.getNuOfDimension() != cap2.getNuOfDimension()). */ public static Capacity subtract(Capacity cap, Capacity cap2subtract) { if (cap == null || cap2subtract == null) throw new NullPointerException("arguments must not be null"); - Capacity.Builder capacityBuilder = Capacity.Builder.newInstance(); - for (int i = 0; i < Math.max(cap.getNuOfDimensions(), cap2subtract.getNuOfDimensions()); i++) { - int dimValue = cap.get(i) - cap2subtract.get(i); - capacityBuilder.addDimension(i, dimValue); + + // Special case handling for better performance + if (cap2subtract.isZero()) return copyOf(cap); + + int maxDimension = Math.max(cap.getNuOfDimensions(), cap2subtract.getNuOfDimensions()); + int[] newDimensions = new int[maxDimension]; + + // Process all dimensions in one loop + for (int i = 0; i < maxDimension; i++) { + newDimensions[i] = cap.get(i) - cap2subtract.get(i); } - return capacityBuilder.build(); + + return new Capacity(newDimensions); } /** @@ -75,12 +93,18 @@ public static Capacity subtract(Capacity cap, Capacity cap2subtract) { */ public static Capacity invert(Capacity cap2invert) { if (cap2invert == null) throw new NullPointerException("arguments must not be null"); - Capacity.Builder capacityBuilder = Capacity.Builder.newInstance(); + + // Special case handling for better performance + if (cap2invert.isZero()) return ZERO; + + int[] newDimensions = new int[cap2invert.getNuOfDimensions()]; + + // Process all dimensions in one loop for (int i = 0; i < cap2invert.getNuOfDimensions(); i++) { - int dimValue = cap2invert.get(i) * -1; - capacityBuilder.addDimension(i, dimValue); + newDimensions[i] = -cap2invert.get(i); } - return capacityBuilder.build(); + + return new Capacity(newDimensions); } /** @@ -98,14 +122,19 @@ public static Capacity invert(Capacity cap2invert) { public static double divide(Capacity numerator, Capacity denominator) { int nuOfDimensions = 0; double sumQuotients = 0.0; - for (int index = 0; index < Math.max(numerator.getNuOfDimensions(), denominator.getNuOfDimensions()); index++) { - if (numerator.get(index) != 0 && denominator.get(index) == 0) { + int maxDim = Math.max(numerator.getNuOfDimensions(), denominator.getNuOfDimensions()); + + for (int index = 0; index < maxDim; index++) { + int num = numerator.get(index); + int denom = denominator.get(index); + + if (num != 0 && denom == 0) { throw new IllegalArgumentException("numerator > 0 and denominator = 0. cannot divide by 0"); - } else if (numerator.get(index) == 0 && denominator.get(index) == 0) { + } else if (num == 0 && denom == 0) { continue; } else { nuOfDimensions++; - sumQuotients += (double) numerator.get(index) / (double) denominator.get(index); + sumQuotients += (double) num / (double) denom; } } if (nuOfDimensions > 0) return sumQuotients / (double) nuOfDimensions; @@ -120,7 +149,11 @@ public static double divide(Capacity numerator, Capacity denominator) { */ public static Capacity copyOf(Capacity capacity) { if (capacity == null) return null; - return new Capacity(capacity); + if (capacity.isZero()) return ZERO; + + int[] newDimensions = new int[capacity.getNuOfDimensions()]; + System.arraycopy(capacity.dimensions, 0, newDimensions, 0, capacity.getNuOfDimensions()); + return new Capacity(newDimensions); } /** @@ -129,11 +162,9 @@ public static Capacity copyOf(Capacity capacity) { * @author schroeder */ public static class Builder { - - /** - * default is 1 dimension with size of zero - */ - private int[] dimensions = new int[1]; + private static final int DEFAULT_CAPACITY = 10; + private int[] dimensions; + private int maxIndex = -1; /** * Returns a new instance of Capacity with one dimension and a value/size of 0 @@ -145,6 +176,18 @@ public static Builder newInstance() { } Builder() { + dimensions = new int[DEFAULT_CAPACITY]; + } + + /** + * Sets initial capacity for more efficient building when dimension count is known + * + * @param capacity the initial capacity + * @return this builder + */ + public Builder withCapacity(int capacity) { + this.dimensions = new int[capacity]; + return this; } /** @@ -158,20 +201,25 @@ public static Builder newInstance() { * @return this builder */ public Builder addDimension(int index, int dimValue) { - if (index < dimensions.length) { - dimensions[index] = dimValue; - } else { - int requiredSize = index + 1; - int[] newDimensions = new int[requiredSize]; - copy(dimensions, newDimensions); - newDimensions[index] = dimValue; - this.dimensions = newDimensions; + ensureCapacity(index + 1); + dimensions[index] = dimValue; + if (index > maxIndex) { + maxIndex = index; } return this; } - private void copy(int[] from, int[] to) { - System.arraycopy(from, 0, to, 0, dimensions.length); + /** + * Ensures the dimensions array has sufficient capacity + * Grows by factor 1.5x for better amortized performance + */ + private void ensureCapacity(int requiredSize) { + if (requiredSize > dimensions.length) { + int newSize = Math.max(requiredSize, dimensions.length + (dimensions.length >> 1)); + int[] newDimensions = new int[newSize]; + System.arraycopy(dimensions, 0, newDimensions, 0, dimensions.length); + dimensions = newDimensions; + } } /** @@ -180,28 +228,44 @@ private void copy(int[] from, int[] to) { * @return Capacity */ public Capacity build() { - return new Capacity(this); - } + // Special case for empty or zero-only capacity + boolean isZero = true; + for (int i = 0; i <= maxIndex; i++) { + if (dimensions[i] != 0) { + isZero = false; + break; + } + } + if (isZero && maxIndex < 0) { + return ZERO; + } + // Create right-sized array for the final capacity + int[] rightSizedDimensions = new int[maxIndex + 1]; + System.arraycopy(dimensions, 0, rightSizedDimensions, 0, maxIndex + 1); + return new Capacity(rightSizedDimensions); + } } - private int[] dimensions; + private final int[] dimensions; + private final boolean isZero; // Cache for quick zero checks /** - * copy constructor - * - * @param capacity capacity to be copied + * Private constructor that takes ownership of the provided array */ - private Capacity(Capacity capacity) { - this.dimensions = new int[capacity.getNuOfDimensions()]; - for (int i = 0; i < capacity.getNuOfDimensions(); i++) { - this.dimensions[i] = capacity.get(i); - } - } + private Capacity(int[] dimensions) { + this.dimensions = dimensions; - private Capacity(Builder builder) { - dimensions = builder.dimensions; + // Precompute if this capacity is all zeros + boolean allZeros = true; + for (int dim : dimensions) { + if (dim != 0) { + allZeros = false; + break; + } + } + this.isZero = allZeros; } /** @@ -213,7 +277,6 @@ public int getNuOfDimensions() { return dimensions.length; } - /** * Returns value of capacity-dimension with specified index. *

@@ -236,7 +299,10 @@ public int get(int index) { */ public boolean isLessOrEqual(Capacity toCompare) { if (toCompare == null) throw new NullPointerException(); - for (int i = 0; i < this.getNuOfDimensions(); i++) { + + // We can't use isZero as a fast path since dimensions can be negative + int maxDim = Math.max(this.getNuOfDimensions(), toCompare.getNuOfDimensions()); + for (int i = 0; i < maxDim; i++) { if (this.get(i) > toCompare.get(i)) return false; } return true; @@ -251,12 +317,24 @@ public boolean isLessOrEqual(Capacity toCompare) { */ public boolean isGreaterOrEqual(Capacity toCompare) { if (toCompare == null) throw new NullPointerException(); - for (int i = 0; i < Math.max(this.getNuOfDimensions(), toCompare.getNuOfDimensions()); i++) { + + // We can't use isZero as a fast path since dimensions can be negative + int maxDim = Math.max(this.getNuOfDimensions(), toCompare.getNuOfDimensions()); + for (int i = 0; i < maxDim; i++) { if (this.get(i) < toCompare.get(i)) return false; } return true; } + /** + * Check if this is a zero capacity (all dimensions are zero) + * + * @return true if all dimensions are zero + */ + public boolean isZero() { + return isZero; + } + @Override public String toString() { StringBuilder string = new StringBuilder("[noDimensions=" + getNuOfDimensions() + "]"); @@ -275,20 +353,35 @@ public String toString() { */ public static Capacity max(Capacity cap1, Capacity cap2) { if (cap1 == null || cap2 == null) throw new IllegalArgumentException("arg must not be null"); - Capacity.Builder toReturnBuilder = Capacity.Builder.newInstance(); - for (int i = 0; i < Math.max(cap1.getNuOfDimensions(), cap2.getNuOfDimensions()); i++) { - toReturnBuilder.addDimension(i, Math.max(cap1.get(i), cap2.get(i))); + + int maxDim = Math.max(cap1.getNuOfDimensions(), cap2.getNuOfDimensions()); + int[] newDimensions = new int[maxDim]; + + for (int i = 0; i < maxDim; i++) { + newDimensions[i] = Math.max(cap1.get(i), cap2.get(i)); } - return toReturnBuilder.build(); + + return new Capacity(newDimensions); } + /** + * Return the minimum, i.e. the minimum of each capacity dimension. + * + * @param cap1 first capacity to compare + * @param cap2 second capacity to compare + * @return capacity minimum of each capacity dimension + */ public static Capacity min(Capacity cap1, Capacity cap2) { if (cap1 == null || cap2 == null) throw new IllegalArgumentException("arg must not be null"); - Capacity.Builder toReturnBuilder = Capacity.Builder.newInstance(); - for (int i = 0; i < Math.max(cap1.getNuOfDimensions(), cap2.getNuOfDimensions()); i++) { - toReturnBuilder.addDimension(i, Math.min(cap1.get(i), cap2.get(i))); + + int maxDim = Math.max(cap1.getNuOfDimensions(), cap2.getNuOfDimensions()); + int[] newDimensions = new int[maxDim]; + + for (int i = 0; i < maxDim; i++) { + newDimensions[i] = Math.min(cap1.get(i), cap2.get(i)); } - return toReturnBuilder.build(); + + return new Capacity(newDimensions); } @Override diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TourActivities.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TourActivities.java index 22b9db330..34e1c490b 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TourActivities.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TourActivities.java @@ -1,281 +1,220 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// +// Source code recreated from a .class file by IntelliJ IDEA +// (powered by FernFlower decompiler) +// + package com.graphhopper.jsprit.core.problem.solution.route.activity; import com.graphhopper.jsprit.core.problem.job.Job; -import com.graphhopper.jsprit.core.problem.solution.route.activity.TourActivity.JobActivity; import java.util.*; - -/** - * @author stefan schroeder - */ - public class TourActivities { + private final ArrayList tourActivities = new ArrayList<>(); + private final Set jobs = new HashSet<>(); + private ReverseActivityIterator backward; + // Cache size to avoid frequent ArrayList.size() calls + private int cachedSize = 0; public static TourActivities copyOf(TourActivities tourActivities) { return new TourActivities(tourActivities); } - public static class ReverseActivityIterator implements Iterator { - - private List acts; - private int currentIndex; - - public ReverseActivityIterator(List acts) { - super(); - this.acts = acts; - currentIndex = acts.size() - 1; - } - - @Override - public boolean hasNext() { - return currentIndex >= 0; - } - - @Override - public TourActivity next() { - TourActivity act = acts.get(currentIndex); - currentIndex--; - return act; - } - - public void reset() { - currentIndex = acts.size() - 1; - } - - @Override - public void remove() { - throw new UnsupportedOperationException(); - } - } - - private final ArrayList tourActivities = new ArrayList<>(); - - private final Set jobs = new HashSet<>(); - - private ReverseActivityIterator backward; - private TourActivities(TourActivities tour2copy) { for (TourActivity tourAct : tour2copy.getActivities()) { TourActivity newAct = tourAct.duplicate(); this.tourActivities.add(newAct); - addJob(newAct); + this.addJob(newAct); } + this.cachedSize = this.tourActivities.size(); } public TourActivities() { } public List getActivities() { - return Collections.unmodifiableList(tourActivities); + return Collections.unmodifiableList(this.tourActivities); } public Iterator iterator() { - final Iterator iterator = tourActivities.iterator(); + final Iterator iterator = this.tourActivities.iterator(); return new Iterator() { private TourActivity lastReturned = null; - @Override public boolean hasNext() { return iterator.hasNext(); } - @Override public TourActivity next() { - return lastReturned = iterator.next(); + return this.lastReturned = (TourActivity) iterator.next(); } - @Override public void remove() { - if (lastReturned instanceof JobActivity) { - throw new IllegalStateException("Cannot remove JobActivities via iterator. " - + "Use TourActivities.removeActivity(), or alternatively, consider TourActivities.removeJob()"); + if (this.lastReturned instanceof TourActivity.JobActivity) { + throw new IllegalStateException("Cannot remove JobActivities via iterator. Use TourActivities.removeActivity(), or alternatively, consider TourActivities.removeJob()"); } else { iterator.remove(); + TourActivities.this.cachedSize--; // Update cached size on removal } } }; } public boolean isEmpty() { - return (tourActivities.size() == 0); + return this.cachedSize == 0; } public Collection getJobs() { - return Collections.unmodifiableSet(jobs); + return Collections.unmodifiableSet(this.jobs); } - /** - * @param job that needs to be looked up - * @return true if job is in jobList, otherwise false. - */ public boolean servesJob(Job job) { - return jobs.contains(job); + return this.jobs.contains(job); } - @Override public String toString() { - return "[nuOfActivities=" + tourActivities.size() + "]"; + return "[nuOfActivities=" + this.cachedSize + "]"; } - /** - * Removes job AND belonging activity from tour. Note that if job is a Service, it is assumed that there is only one belonging activity, - * thus, it stops trying to remove activities once the first is found. - * If you want to always look for belonging activities to be removed in the entire route, use removeJob(Job job, boolean enforceEntireRoute) - * - * @param job to be removed - * @return true if job has been removed, otherwise false. - */ public boolean removeJob(Job job) { - boolean jobRemoved; - if (!jobs.contains(job)) { + if (!this.jobs.contains(job)) { return false; } else { - jobRemoved = jobs.remove(job); - } - boolean activityRemoved = false; - Iterator iterator = tourActivities.iterator(); - while (iterator.hasNext()) { - TourActivity c = iterator.next(); - if (c instanceof JobActivity) { - Job underlyingJob = ((JobActivity) c).getJob(); - if (job.equals(underlyingJob)) { - iterator.remove(); - activityRemoved = true; + boolean jobRemoved = this.jobs.remove(job); + boolean activityRemoved = false; + Iterator iterator = this.tourActivities.iterator(); + + while (iterator.hasNext()) { + TourActivity c = (TourActivity) iterator.next(); + if (c instanceof TourActivity.JobActivity) { + Job underlyingJob = ((TourActivity.JobActivity) c).getJob(); + if (job.equals(underlyingJob)) { + iterator.remove(); + this.cachedSize--; // Update cached size on removal + activityRemoved = true; + } } } - } - assert jobRemoved == activityRemoved : "job removed, but belonging activity not."; - return activityRemoved; - } + assert jobRemoved == activityRemoved : "job removed, but belonging activity not."; + return activityRemoved; + } + } - /** - * Removes activity from this activity sequence. Removes its corresponding job as well, if there are no other activities - * related to this job. - * - * @param activity to be removed - * @return true if activity has been removed, false otherwise - */ public boolean removeActivity(TourActivity activity) { - if (!(activity instanceof JobActivity)) { - //assumes that an activity can be added only once to tourActivities - return tourActivities.remove(activity); - } + if (!(activity instanceof TourActivity.JobActivity)) { + boolean removed = this.tourActivities.remove(activity); + if (removed) { + this.cachedSize--; // Update cached size on removal + } + return removed; + } else { + Job job = ((TourActivity.JobActivity) activity).getJob(); + boolean jobIsAlsoAssociateToOtherActs = false; + boolean actRemoved = false; + + for (TourActivity act : new ArrayList<>(this.tourActivities)) { + if (act == activity) { + this.tourActivities.remove(act); + this.cachedSize--; // Update cached size on removal + if (jobIsAlsoAssociateToOtherActs) { + return true; + } - Job job = ((JobActivity) activity).getJob(); - boolean jobIsAlsoAssociateToOtherActs = false; - boolean actRemoved = false; - for (TourActivity act : new ArrayList<>(tourActivities)) { - if (act == activity) { - tourActivities.remove(act); - if (jobIsAlsoAssociateToOtherActs) { - // other activities also refer to job --> do not remove job - // thus no need to iterate any further - return true; - } - actRemoved = true; - } else { - if (act instanceof JobActivity && ((JobActivity) act).getJob().equals(job)) { + actRemoved = true; + } else if (act instanceof TourActivity.JobActivity && ((TourActivity.JobActivity) act).getJob().equals(job)) { if (actRemoved) { - // other activities also refer to job --> do not remove job - // thus no need to iterate any further return true; } + jobIsAlsoAssociateToOtherActs = true; } } + + if (actRemoved) { + this.jobs.remove(job); + } + + return actRemoved; } - if (actRemoved) { - jobs.remove(job); - } - return actRemoved; } - - /** - * Inserts the specified activity add the specified insertionIndex. Shifts the element currently at that position (if any) and - * any subsequent elements to the right (adds one to their indices). - *

If specified activity instanceof JobActivity, it adds job to jobList. - *

If insertionIndex > tourActivitiies.size(), it just adds the specified act at the end. - * - * @param insertionIndex index where activity needs to be inserted - * @param act activity to be inserted - * @throws IndexOutOfBoundsException if insertionIndex < 0; - */ public void addActivity(int insertionIndex, TourActivity act) { - assert insertionIndex >= 0 : "insertionIndex < 0, this cannot be"; - /* - * if 1 --> between start and act(0) --> act(0) - * if 2 && 2 <= acts.size --> between act(0) and act(1) --> act(1) - * if 2 && 2 > acts.size --> at actEnd - * ... - * - */ - if (insertionIndex < tourActivities.size()) { - tourActivities.add(insertionIndex, act); - } else if (insertionIndex >= tourActivities.size()) { - tourActivities.add(act); + // Update cached size on addition + if (insertionIndex < this.cachedSize) { + this.tourActivities.add(insertionIndex, act); + } else { + this.tourActivities.add(act); } - addJob(act); + this.cachedSize++; // Update cached size on addition + + this.addJob(act); } - /** - * Adds specified activity at the end of activity-list. - *

If act instanceof JobActivity, it adds underlying job also. - * - * @param act to be added - * @throws IllegalArgumentException if activity-list already contains act. - */ public void addActivity(TourActivity act) { - if (tourActivities.contains(act)) - throw new IllegalArgumentException("act " + act + " already in tour. cannot add act twice."); - tourActivities.add(act); - addJob(act); + if (this.tourActivities.contains(act)) { + throw new IllegalArgumentException("act " + String.valueOf(act) + " already in tour. cannot add act twice."); + } else { + this.tourActivities.add(act); + this.cachedSize++; // Update cached size on addition + this.addJob(act); + } } private void addJob(TourActivity act) { - if (act instanceof JobActivity) { - Job job = ((JobActivity) act).getJob(); -// if(job instanceof Service) assert !jobs.contains(job); - jobs.add(job); + if (act instanceof TourActivity.JobActivity) { + Job job = ((TourActivity.JobActivity) act).getJob(); + this.jobs.add(job); } } - /** - * Returns number of jobs assiciated to activities in this activity sequence. - * - * @return no. of jobs - */ public int jobSize() { - return jobs.size(); + return this.jobs.size(); + } + + // Added method to get size without calling ArrayList.size() + public int size() { + return this.cachedSize; } public Iterator reverseActivityIterator() { - if (backward == null) backward = new ReverseActivityIterator(tourActivities); - else backward.reset(); - return backward; + if (this.backward == null) { + this.backward = new ReverseActivityIterator(this.tourActivities); + } else { + this.backward.reset(); + } + + return this.backward; } + public static class ReverseActivityIterator implements Iterator { + private final List acts; + private int currentIndex; + public ReverseActivityIterator(List acts) { + this.acts = acts; + this.currentIndex = acts.size() - 1; + } + + public boolean hasNext() { + return this.currentIndex >= 0; + } + + public TourActivity next() { + TourActivity act = (TourActivity) this.acts.get(this.currentIndex); + --this.currentIndex; + return act; + } + + public void reset() { + this.currentIndex = this.acts.size() - 1; + } + + public void remove() { + throw new UnsupportedOperationException(); + } + } } From 05f150e6674e19cedd0b226244a65126b6dc1f14 Mon Sep 17 00:00:00 2001 From: oblonski Date: Thu, 15 May 2025 11:50:15 +0200 Subject: [PATCH 180/191] introduce en-route pickup and delivery --- .../jsprit/analysis/toolbox/Plotter.java | 8 + .../JobInsertionCostsCalculatorBuilder.java | 2 + .../recreate/ShipmentInsertionCalculator.java | 17 +- .../core/algorithm/state/UpdateLoads.java | 12 +- .../core/analysis/SolutionAnalyser.java | 5 +- ...erShipmentLoadActivityLevelConstraint.java | 21 +- .../ServiceLoadActivityLevelConstraint.java | 22 +- .../ServiceLoadRouteLevelConstraint.java | 4 +- .../jsprit/core/problem/job/Activity.java | 2 +- .../core/problem/job/EnRouteDelivery.java | 87 +++ .../core/problem/job/EnRoutePickup.java | 87 +++ .../jsprit/core/problem/job/Job.java | 25 +- .../activity/DefaultTourActivityFactory.java | 12 +- .../route/activity/DeliverService.java | 4 +- .../activity/EnRouteDeliveryActivity.java | 132 +++++ .../route/activity/EnRoutePickupActivity.java | 128 +++++ .../core/reporting/SolutionPrinter.java | 516 ++++++++++++++---- 17 files changed, 947 insertions(+), 137 deletions(-) create mode 100644 jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/EnRouteDelivery.java create mode 100644 jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/EnRoutePickup.java create mode 100644 jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/EnRouteDeliveryActivity.java create mode 100644 jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/EnRoutePickupActivity.java diff --git a/jsprit-analysis/src/main/java/com/graphhopper/jsprit/analysis/toolbox/Plotter.java b/jsprit-analysis/src/main/java/com/graphhopper/jsprit/analysis/toolbox/Plotter.java index 00b69c800..47ee3550d 100644 --- a/jsprit-analysis/src/main/java/com/graphhopper/jsprit/analysis/toolbox/Plotter.java +++ b/jsprit-analysis/src/main/java/com/graphhopper/jsprit/analysis/toolbox/Plotter.java @@ -519,6 +519,14 @@ private void addJob(XYSeries activities, Job job) { activities.add(dataItem); addLabel(job, dataItem); switch (act.getActivityType()) { + case EN_ROUTE_DELIVERY: + markItem(dataItem, Activity.DELIVERY); + containsDeliveryAct = true; + break; + case EN_ROUTE_PICKUP: + markItem(dataItem, Activity.PICKUP); + containsPickupAct = true; + break; case PICKUP: markItem(dataItem, Activity.PICKUP); containsPickupAct = true; diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/JobInsertionCostsCalculatorBuilder.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/JobInsertionCostsCalculatorBuilder.java index 6fbac2205..fa3d07586 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/JobInsertionCostsCalculatorBuilder.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/JobInsertionCostsCalculatorBuilder.java @@ -321,6 +321,8 @@ public List createActivities(Job job) { switcher.put(Service.class, serviceInsertion); switcher.put(Pickup.class, serviceInsertion); switcher.put(Delivery.class, serviceInsertion); + switcher.put(EnRoutePickup.class, serviceInsertion); + switcher.put(EnRouteDelivery.class, serviceInsertion); switcher.put(Break.class, breakInsertion); CalculatorPlusListeners calculatorPlusListeners = new CalculatorPlusListeners(switcher); diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculator.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculator.java index 19681d893..d6f9b7eaa 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculator.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculator.java @@ -45,7 +45,7 @@ final class ShipmentInsertionCalculator extends AbstractInsertionCalculator { - private static final Logger logger = LoggerFactory.getLogger(ShipmentInsertionCalculator.class); + private static final Logger LOGGER = LoggerFactory.getLogger(ShipmentInsertionCalculator.class); private final ConstraintManager constraintManager; @@ -73,7 +73,7 @@ public ShipmentInsertionCalculator(VehicleRoutingTransportCosts routingCosts, Ve this.activityCosts = activityCosts; additionalAccessEgressCalculator = new AdditionalAccessEgressCalculator(routingCosts); this.activityFactory = jobActivityFactory; - logger.debug("initialise {}", this); + LOGGER.debug("initialise {}", this); } @Override @@ -87,6 +87,8 @@ public String toString() { */ @Override public InsertionData getInsertionData(final VehicleRoute currentRoute, final Job jobToInsert, final Vehicle newVehicle, double newVehicleDepartureTime, final Driver newDriver, final double bestKnownCosts) { + LOGGER.trace("shipment-id: " + jobToInsert.getId() + " Starting insertion evaluation into vehicle {} with departure time {}", newVehicle.getId(), newVehicleDepartureTime); + JobInsertionContext insertionContext = new JobInsertionContext(currentRoute, jobToInsert, newVehicle, newDriver, newVehicleDepartureTime); Shipment shipment = (Shipment) jobToInsert; TourActivity pickupShipment = activityFactory.createActivities(shipment).get(0); @@ -139,6 +141,7 @@ public InsertionData getInsertionData(final VehicleRoute currentRoute, final Job nextAct = end; tourEnd = true; } + LOGGER.trace("Evaluating pickup at position {}", i); boolean pickupInsertionNotFulfilledBreak = true; for(TimeWindow pickupTimeWindow : shipment.getPickupTimeWindows()) { @@ -189,6 +192,7 @@ else if (pickupShipmentConstraintStatus.equals(ConstraintsStatus.FULFILLED)) { nextAct_deliveryLoop = end; tourEnd_deliveryLoop = true; } + LOGGER.trace("Evaluating delivery at position {}", j); boolean deliveryInsertionNotFulfilledBreak = true; for (TimeWindow deliveryTimeWindow : shipment.getDeliveryTimeWindows()) { @@ -203,6 +207,8 @@ else if (pickupShipmentConstraintStatus.equals(ConstraintsStatus.FULFILLED)) { double deliveryAIC = calculate(insertionContext, prevAct_deliveryLoop, deliverShipment, nextAct_deliveryLoop, prevActEndTime_deliveryLoop); double totalActivityInsertionCosts = pickupAIC + deliveryAIC + additionalICostsAtRouteLevel + additionalPickupICosts + additionalDeliveryICosts; + LOGGER.trace("Position cost: {}, feasible: {}", totalActivityInsertionCosts, true); + if (totalActivityInsertionCosts < bestCost) { bestCost = totalActivityInsertionCosts; pickupInsertionIndex = i; @@ -212,10 +218,14 @@ else if (pickupShipmentConstraintStatus.equals(ConstraintsStatus.FULFILLED)) { } deliveryInsertionNotFulfilledBreak = false; } else if (deliverShipmentConstraintStatus.equals(ConstraintsStatus.NOT_FULFILLED)) { + LOGGER.trace("Position cost: {}, feasible: {}", -1, false); deliveryInsertionNotFulfilledBreak = false; } } - if (deliveryInsertionNotFulfilledBreak) break; + if (deliveryInsertionNotFulfilledBreak) { + LOGGER.trace("Position cost: {}, feasible: {}", -1, false); + break; + } //update prevAct and endTime double nextActArrTime = prevActEndTime_deliveryLoop + transportCosts.getTransportTime(prevAct_deliveryLoop.getLocation(), nextAct_deliveryLoop.getLocation(), prevActEndTime_deliveryLoop, newDriver, newVehicle); prevActEndTime_deliveryLoop = Math.max(nextActArrTime, nextAct_deliveryLoop.getTheoreticalEarliestOperationStartTime()) + activityCosts.getActivityDuration(nextAct_deliveryLoop,nextActArrTime,newDriver,newVehicle); @@ -233,6 +243,7 @@ else if (pickupShipmentConstraintStatus.equals(ConstraintsStatus.FULFILLED)) { i++; } if (pickupInsertionIndex == InsertionData.NO_INDEX) { + LOGGER.trace("Position cost: {}, feasible: {}", -1, false); InsertionData emptyInsertionData = new InsertionData.NoInsertionFound(); for (HardConstraint failed : failedActivityConstraints) { emptyInsertionData.addFailedConstrainName(failed.getClass().getSimpleName()); diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/UpdateLoads.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/UpdateLoads.java index 0d3465126..6f599d0da 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/UpdateLoads.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/UpdateLoads.java @@ -41,7 +41,7 @@ */ class UpdateLoads implements ActivityVisitor, StateUpdater, InsertionStartsListener, JobInsertedListener { - private StateManager stateManager; + private final StateManager stateManager; /* * default has one dimension with a value of zero @@ -77,9 +77,10 @@ void insertionStarts(VehicleRoute route) { Capacity loadAtDepot = Capacity.Builder.newInstance().build(); Capacity loadAtEnd = Capacity.Builder.newInstance().build(); for (Job j : route.getTourActivities().getJobs()) { - if (j.getJobType().isDelivery()) { + if (j.isPickedUpAtVehicleStart()) { loadAtDepot = Capacity.addup(loadAtDepot, j.getSize()); - } else if (j.getJobType().isPickup() || j.getJobType().isService()) { + } + if (j.isDeliveredToVehicleEnd()) { loadAtEnd = Capacity.addup(loadAtEnd, j.getSize()); } } @@ -96,11 +97,12 @@ public void informInsertionStarts(Collection vehicleRoutes, Collec @Override public void informJobInserted(Job job2insert, VehicleRoute inRoute, InsertionData insertionData) { - if (job2insert.getJobType().isDelivery()) { + if (job2insert.isPickedUpAtVehicleStart()) { Capacity loadAtDepot = stateManager.getRouteState(inRoute, InternalStates.LOAD_AT_BEGINNING, Capacity.class); if (loadAtDepot == null) loadAtDepot = defaultValue; stateManager.putTypedInternalRouteState(inRoute, InternalStates.LOAD_AT_BEGINNING, Capacity.addup(loadAtDepot, job2insert.getSize())); - } else if (job2insert.getJobType().isPickup() || job2insert.getJobType().isService()) { + } + if (job2insert.isDeliveredToVehicleEnd()) { Capacity loadAtEnd = stateManager.getRouteState(inRoute, InternalStates.LOAD_AT_END, Capacity.class); if (loadAtEnd == null) loadAtEnd = defaultValue; stateManager.putTypedInternalRouteState(inRoute, InternalStates.LOAD_AT_END, Capacity.addup(loadAtEnd, job2insert.getSize())); diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/analysis/SolutionAnalyser.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/analysis/SolutionAnalyser.java index 315a18b5c..b5d9a86a9 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/analysis/SolutionAnalyser.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/analysis/SolutionAnalyser.java @@ -277,9 +277,10 @@ private void calculateLoadAndActivityStates() { Capacity loadAtDepot = Capacity.Builder.newInstance().build(); Capacity loadAtEnd = Capacity.Builder.newInstance().build(); for (Job j : route.getTourActivities().getJobs()) { - if (j.getJobType().isDelivery()) { + if (j.isPickedUpAtVehicleStart()) { loadAtDepot = Capacity.addup(loadAtDepot, j.getSize()); - } else if (j.getJobType().isPickup() || j.getJobType().isService()) { + } + if (j.isDeliveredToVehicleEnd()) { loadAtEnd = Capacity.addup(loadAtEnd, j.getSize()); } } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/constraint/PickupAndDeliverShipmentLoadActivityLevelConstraint.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/constraint/PickupAndDeliverShipmentLoadActivityLevelConstraint.java index c2333d0e6..a3e425bb4 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/constraint/PickupAndDeliverShipmentLoadActivityLevelConstraint.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/constraint/PickupAndDeliverShipmentLoadActivityLevelConstraint.java @@ -60,7 +60,7 @@ public PickupAndDeliverShipmentLoadActivityLevelConstraint(RouteAndActivityState */ @Override public ConstraintsStatus fulfilled(JobInsertionContext iFacts, TourActivity prevAct, TourActivity newAct, TourActivity nextAct, double prevActDepTime) { - if (!(newAct instanceof PickupShipment) && !(newAct instanceof DeliverShipment)) { + if (!isShipmentPickup(newAct) && !isShipmentDelivery(newAct)) { return ConstraintsStatus.FULFILLED; } Capacity loadAtPrevAct; @@ -71,17 +71,28 @@ public ConstraintsStatus fulfilled(JobInsertionContext iFacts, TourActivity prev loadAtPrevAct = stateManager.getActivityState(prevAct, InternalStates.LOAD, Capacity.class); if (loadAtPrevAct == null) loadAtPrevAct = defaultValue; } - if (newAct instanceof PickupShipment) { - if (!Capacity.addup(loadAtPrevAct, newAct.getSize()).isLessOrEqual(iFacts.getNewVehicle().getType().getCapacityDimensions())) { + if (isShipmentPickup(newAct)) { + Capacity addUp = Capacity.addup(loadAtPrevAct, newAct.getSize()); + if (!addUp.isLessOrEqual(iFacts.getNewVehicle().getType().getCapacityDimensions())) { return ConstraintsStatus.NOT_FULFILLED; } } - if (newAct instanceof DeliverShipment) { - if (!Capacity.addup(loadAtPrevAct, Capacity.invert(newAct.getSize())).isLessOrEqual(iFacts.getNewVehicle().getType().getCapacityDimensions())) + if (isShipmentDelivery(newAct)) { + Capacity invert = Capacity.invert(newAct.getSize()); + Capacity addUp = Capacity.addup(loadAtPrevAct, invert); + if (!addUp.isLessOrEqual(iFacts.getNewVehicle().getType().getCapacityDimensions())) return ConstraintsStatus.NOT_FULFILLED_BREAK; } return ConstraintsStatus.FULFILLED; } + private static boolean isShipmentDelivery(TourActivity newAct) { + return newAct instanceof DeliverShipment; + } + + private static boolean isShipmentPickup(TourActivity newAct) { + return newAct instanceof PickupShipment; + } + } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/constraint/ServiceLoadActivityLevelConstraint.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/constraint/ServiceLoadActivityLevelConstraint.java index b53fd4386..7a16448db 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/constraint/ServiceLoadActivityLevelConstraint.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/constraint/ServiceLoadActivityLevelConstraint.java @@ -19,8 +19,10 @@ import com.graphhopper.jsprit.core.algorithm.state.InternalStates; import com.graphhopper.jsprit.core.problem.Capacity; +import com.graphhopper.jsprit.core.problem.job.Job; import com.graphhopper.jsprit.core.problem.misc.JobInsertionContext; -import com.graphhopper.jsprit.core.problem.solution.route.activity.*; +import com.graphhopper.jsprit.core.problem.solution.route.activity.Start; +import com.graphhopper.jsprit.core.problem.solution.route.activity.TourActivity; import com.graphhopper.jsprit.core.problem.solution.route.state.RouteAndActivityStateGetter; @@ -57,16 +59,18 @@ public ConstraintsStatus fulfilled(JobInsertionContext iFacts, TourActivity prev if (futureMaxLoad == null) futureMaxLoad = defaultValue; prevMaxLoad = stateManager.getActivityState(prevAct, InternalStates.PAST_MAXLOAD, Capacity.class); if (prevMaxLoad == null) prevMaxLoad = defaultValue; - } - if (newAct instanceof PickupService || newAct instanceof ServiceActivity) { - if (!Capacity.addup(newAct.getSize(), futureMaxLoad).isLessOrEqual(iFacts.getNewVehicle().getType().getCapacityDimensions())) { - return ConstraintsStatus.NOT_FULFILLED; + if (newAct instanceof TourActivity.JobActivity) { + Job j = ((TourActivity.JobActivity) newAct).getJob(); + if (j.isDeliveredToVehicleEnd()) { + if (!Capacity.addup(newAct.getSize(), futureMaxLoad).isLessOrEqual(iFacts.getNewVehicle().getType().getCapacityDimensions())) { + return ConstraintsStatus.NOT_FULFILLED; + } } - } - if (newAct instanceof DeliverService) { - if (!Capacity.addup(Capacity.invert(newAct.getSize()), prevMaxLoad).isLessOrEqual(iFacts.getNewVehicle().getType().getCapacityDimensions())) { - return ConstraintsStatus.NOT_FULFILLED_BREAK; + if (j.isPickedUpAtVehicleStart()) { + if (!Capacity.addup(Capacity.invert(newAct.getSize()), prevMaxLoad).isLessOrEqual(iFacts.getNewVehicle().getType().getCapacityDimensions())) { + return ConstraintsStatus.NOT_FULFILLED_BREAK; + } } } return ConstraintsStatus.FULFILLED; diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/constraint/ServiceLoadRouteLevelConstraint.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/constraint/ServiceLoadRouteLevelConstraint.java index d3cfe4bda..f0eb4c296 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/constraint/ServiceLoadRouteLevelConstraint.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/constraint/ServiceLoadRouteLevelConstraint.java @@ -50,13 +50,13 @@ public boolean fulfilled(JobInsertionContext insertionContext) { if (!maxLoadAtRoute.isLessOrEqual(capacityDimensions)) { return false; } - if (insertionContext.getJob().getJobType().isDelivery()) { + if (insertionContext.getJob().isPickedUpAtVehicleStart()) { Capacity loadAtDepot = stateManager.getRouteState(insertionContext.getRoute(), InternalStates.LOAD_AT_BEGINNING, Capacity.class); if (loadAtDepot == null) loadAtDepot = defaultValue; if (!Capacity.addup(loadAtDepot, insertionContext.getJob().getSize()).isLessOrEqual(capacityDimensions)) { return false; } - } else if (insertionContext.getJob().getJobType().isPickup() || insertionContext.getJob().getJobType().isService()) { + } else if (insertionContext.getJob().isDeliveredToVehicleEnd()) { Capacity loadAtEnd = stateManager.getRouteState(insertionContext.getRoute(), InternalStates.LOAD_AT_END, Capacity.class); if (loadAtEnd == null) loadAtEnd = defaultValue; if (!Capacity.addup(loadAtEnd, insertionContext.getJob().getSize()).isLessOrEqual(capacityDimensions)) { diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Activity.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Activity.java index c03bc5230..bbc35bef7 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Activity.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Activity.java @@ -26,7 +26,7 @@ public class Activity { public enum Type { - PICKUP, DELIVERY, SERVICE, BREAK; + PICKUP, EN_ROUTE_PICKUP, EN_ROUTE_DELIVERY, DELIVERY, SERVICE, BREAK; } public static class Builder { diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/EnRouteDelivery.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/EnRouteDelivery.java new file mode 100644 index 000000000..5c3ee7e3d --- /dev/null +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/EnRouteDelivery.java @@ -0,0 +1,87 @@ +/* + * Licensed to GraphHopper GmbH under one or more contributor + * license agreements. See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + * + * GraphHopper GmbH licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.graphhopper.jsprit.core.problem.job; + + +/** + * Delivery extends Service and is intended to model a Service where smth is UNLOADED (i.e. delivered) from a transport unit. + * + * @author schroeder + */ +public class EnRouteDelivery extends Service { + + public static class Builder extends Service.Builder { + + /** + * Returns a new instance of builder that builds a delivery. + * + * @param id the id of the delivery + * @return the builder + */ + public static Builder newInstance(String id) { + return new Builder(id); + } + + Builder(String id) { + super(id); + } + + + public Builder setMaxTimeInVehicle(double maxTimeInVehicle) { + if (maxTimeInVehicle < 0) throw new IllegalArgumentException("maxTimeInVehicle should not be negative"); + this.maxTimeInVehicle = maxTimeInVehicle; + return this; + } + + /** + * Builds Delivery. + * + * @return delivery + * @throws IllegalArgumentException if neither locationId nor coord is set + */ + public EnRouteDelivery build() { + if (location == null) throw new IllegalArgumentException("location is missing"); + this.setType("en_route_delivery"); + super.capacity = super.capacityBuilder.build(); + super.skills = super.skillBuilder.build(); + super.activity = new Activity.Builder(location, Activity.Type.EN_ROUTE_DELIVERY).setTimeWindows(timeWindows.getTimeWindows()).setServiceTime(serviceTime).build(); + return new EnRouteDelivery(this); + } + + } + + EnRouteDelivery(Builder builder) { + super(builder); + + } + + public Type getJobType() { + return Type.EN_ROUTE_DELIVERY; + } + + @Override + public boolean isPickedUpAtVehicleStart() { + return false; + } + + @Override + public boolean isDeliveredToVehicleEnd() { + return false; + } + +} diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/EnRoutePickup.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/EnRoutePickup.java new file mode 100644 index 000000000..731a78cc4 --- /dev/null +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/EnRoutePickup.java @@ -0,0 +1,87 @@ +/* + * Licensed to GraphHopper GmbH under one or more contributor + * license agreements. See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + * + * GraphHopper GmbH licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.graphhopper.jsprit.core.problem.job; + + +/** + * Pickup extends Service and is intended to model a Service where smth is LOADED (i.e. picked up) to a transport unit. + * + * @author schroeder + */ +public class EnRoutePickup extends Service { + + public static class Builder extends Service.Builder { + + /** + * Returns a new instance of builder that builds a pickup. + * + * @param id the id of the pickup + * @return the builder + */ + public static Builder newInstance(String id) { + return new Builder(id); + } + + Builder(String id) { + super(id); + } + + public Builder setMaxTimeInVehicle(double maxTimeInVehicle) { + throw new UnsupportedOperationException("maxTimeInVehicle is not yet supported for Pickups and Services (only for Deliveries and Shipments)"); +// if(maxTimeInVehicle < 0) throw new IllegalArgumentException("maxTimeInVehicle should be positive"); +// this.maxTimeInVehicle = maxTimeInVehicle; +// return this; + } + + /** + * Builds Pickup. + *

+ *

Pickup type is "pickup" + * + * @return pickup + * @throws IllegalArgumentException if neither locationId nor coordinate has been set + */ + public EnRoutePickup build() { + if (location == null) throw new IllegalArgumentException("location is missing"); + this.setType("en-route-pickup"); + super.capacity = super.capacityBuilder.build(); + super.skills = super.skillBuilder.build(); + super.activity = new Activity.Builder(location, Activity.Type.EN_ROUTE_PICKUP).setTimeWindows(timeWindows.getTimeWindows()).setServiceTime(serviceTime).build(); + return new EnRoutePickup(this); + } + + } + + EnRoutePickup(Builder builder) { + super(builder); + } + + public Type getJobType() { + return Type.EN_ROUTE_PICKUP; + } + + @Override + public boolean isPickedUpAtVehicleStart() { + return false; + } + + @Override + public boolean isDeliveredToVehicleEnd() { + return false; + } +} diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Job.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Job.java index 4f95e2b11..5778facad 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Job.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/job/Job.java @@ -37,7 +37,9 @@ enum Type { SERVICE, PICKUP_SERVICE, DELIVERY_SERVICE, - BREAK_SERVICE; + BREAK_SERVICE, + EN_ROUTE_DELIVERY, + EN_ROUTE_PICKUP; public boolean isShipment() { return this == SHIPMENT; @@ -71,6 +73,27 @@ default Type getJobType() { throw new IllegalStateException("Unknown job type: " + this.getClass()); } + /** + * Indicates whether this job is picked up at the vehicle's start location. + * By default, only Delivery jobs are picked up at the vehicle's start location. + * + * @return true if job is picked up at vehicle start, false otherwise + */ + default boolean isPickedUpAtVehicleStart() { + return this instanceof Delivery; + } + + /** + * Indicates whether this job is delivered to the vehicle's end location. + * By default, only Pickup and Service jobs are delivered to the vehicle's end location. + * + * @return true if job is delivered to vehicle end, false otherwise + */ + default boolean isDeliveredToVehicleEnd() { + return this instanceof Pickup || (this instanceof Service && !(this instanceof Delivery)); + } + + /** * Returns the unique identifier (id) of a job. * diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/DefaultTourActivityFactory.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/DefaultTourActivityFactory.java index 143c87914..5dc3b68a0 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/DefaultTourActivityFactory.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/DefaultTourActivityFactory.java @@ -18,13 +18,19 @@ package com.graphhopper.jsprit.core.problem.solution.route.activity; import com.graphhopper.jsprit.core.problem.AbstractActivity; -import com.graphhopper.jsprit.core.problem.job.Delivery; -import com.graphhopper.jsprit.core.problem.job.Pickup; -import com.graphhopper.jsprit.core.problem.job.Service; +import com.graphhopper.jsprit.core.problem.job.*; public class DefaultTourActivityFactory implements TourActivityFactory { @Override public AbstractActivity createActivity(Service service) { + if (service.getJobType().equals(Job.Type.EN_ROUTE_DELIVERY)) { + return new EnRouteDeliveryActivity((EnRouteDelivery) service); + } + + if (service.getJobType().equals(Job.Type.EN_ROUTE_PICKUP)) { + return new EnRoutePickupActivity((EnRoutePickup) service); + } + if (service.getJobType().isPickup()) { return new PickupService((Pickup) service); } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/DeliverService.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/DeliverService.java index 9b06ec6cb..697b6f4e4 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/DeliverService.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/DeliverService.java @@ -24,9 +24,9 @@ public final class DeliverService extends AbstractActivity implements DeliveryActivity { - private Delivery delivery; + private final Delivery delivery; - private Capacity capacity; + private final Capacity capacity; private double arrTime; diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/EnRouteDeliveryActivity.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/EnRouteDeliveryActivity.java new file mode 100644 index 000000000..65dd9e38e --- /dev/null +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/EnRouteDeliveryActivity.java @@ -0,0 +1,132 @@ +/* + * Licensed to GraphHopper GmbH under one or more contributor + * license agreements. See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + * + * GraphHopper GmbH licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.graphhopper.jsprit.core.problem.solution.route.activity; + +import com.graphhopper.jsprit.core.problem.AbstractActivity; +import com.graphhopper.jsprit.core.problem.Capacity; +import com.graphhopper.jsprit.core.problem.Location; +import com.graphhopper.jsprit.core.problem.job.EnRouteDelivery; + +public final class EnRouteDeliveryActivity extends AbstractActivity implements DeliveryActivity { + + private final EnRouteDelivery delivery; + + private final Capacity capacity; + + private double arrTime; + + private double endTime; + + private double theoreticalEarliest = 0; + + private double theoreticalLatest = Double.MAX_VALUE; + + public EnRouteDeliveryActivity(EnRouteDelivery delivery) { + super(); + this.delivery = delivery; + capacity = Capacity.invert(delivery.getSize()); + } + + private EnRouteDeliveryActivity(EnRouteDeliveryActivity deliveryActivity) { + this.delivery = deliveryActivity.getJob(); + this.arrTime = deliveryActivity.getArrTime(); + this.endTime = deliveryActivity.getEndTime(); + capacity = deliveryActivity.getSize(); + setIndex(deliveryActivity.getIndex()); + this.theoreticalEarliest = deliveryActivity.getTheoreticalEarliestOperationStartTime(); + this.theoreticalLatest = deliveryActivity.getTheoreticalLatestOperationStartTime(); + } + + @Override + public String getName() { + return delivery.getType(); + } + + @Override + public Location getLocation() { + return delivery.getLocation(); + } + + @Override + public void setTheoreticalEarliestOperationStartTime(double earliest) { + theoreticalEarliest = earliest; + } + + @Override + public void setTheoreticalLatestOperationStartTime(double latest) { + theoreticalLatest = latest; + } + + + @Override + public double getTheoreticalEarliestOperationStartTime() { + return theoreticalEarliest; + } + + @Override + public double getTheoreticalLatestOperationStartTime() { + return theoreticalLatest; + } + + @Override + public double getOperationTime() { + return delivery.getServiceDuration(); + } + + @Override + public double getArrTime() { + return arrTime; + } + + @Override + public double getEndTime() { + return endTime; + } + + @Override + public void setArrTime(double arrTime) { + this.arrTime = arrTime; + } + + @Override + public void setEndTime(double endTime) { + this.endTime = endTime; + } + + @Override + public TourActivity duplicate() { + return new EnRouteDeliveryActivity(this); + } + + @Override + public EnRouteDelivery getJob() { + return delivery; + } + + public String toString() { + return "[type=" + getName() + "][locationId=" + getLocation().getId() + + "][size=" + getSize().toString() + + "][twStart=" + Activities.round(getTheoreticalEarliestOperationStartTime()) + + "][twEnd=" + Activities.round(getTheoreticalLatestOperationStartTime()) + "]"; + } + + @Override + public Capacity getSize() { + return capacity; + } +} diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/EnRoutePickupActivity.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/EnRoutePickupActivity.java new file mode 100644 index 000000000..19696c949 --- /dev/null +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/EnRoutePickupActivity.java @@ -0,0 +1,128 @@ +/* + * Licensed to GraphHopper GmbH under one or more contributor + * license agreements. See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + * + * GraphHopper GmbH licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.graphhopper.jsprit.core.problem.solution.route.activity; + +import com.graphhopper.jsprit.core.problem.AbstractActivity; +import com.graphhopper.jsprit.core.problem.Capacity; +import com.graphhopper.jsprit.core.problem.Location; +import com.graphhopper.jsprit.core.problem.job.EnRoutePickup; + +public final class EnRoutePickupActivity extends AbstractActivity implements PickupActivity { + + private final EnRoutePickup pickup; + + private double arrTime; + + private double depTime; + + private double theoreticalEarliest = 0; + + private double theoreticalLatest = Double.MAX_VALUE; + + public EnRoutePickupActivity(EnRoutePickup pickup) { + super(); + this.pickup = pickup; + } + + private EnRoutePickupActivity(EnRoutePickupActivity pickupActivity) { + this.pickup = pickupActivity.getJob(); + this.arrTime = pickupActivity.getArrTime(); + this.depTime = pickupActivity.getEndTime(); + setIndex(pickupActivity.getIndex()); + this.theoreticalEarliest = pickupActivity.getTheoreticalEarliestOperationStartTime(); + this.theoreticalLatest = pickupActivity.getTheoreticalLatestOperationStartTime(); + } + + @Override + public String getName() { + return pickup.getType(); + } + + @Override + public Location getLocation() { + return pickup.getLocation(); + } + + @Override + public double getTheoreticalEarliestOperationStartTime() { + return theoreticalEarliest; + } + + @Override + public double getTheoreticalLatestOperationStartTime() { + return theoreticalLatest; + } + + @Override + public void setTheoreticalEarliestOperationStartTime(double earliest) { + this.theoreticalEarliest = earliest; + } + + @Override + public void setTheoreticalLatestOperationStartTime(double latest) { + this.theoreticalLatest = latest; + } + + @Override + public double getOperationTime() { + return pickup.getServiceDuration(); + } + + @Override + public double getArrTime() { + return arrTime; + } + + @Override + public double getEndTime() { + return depTime; + } + + @Override + public void setArrTime(double arrTime) { + this.arrTime = arrTime; + } + + @Override + public void setEndTime(double endTime) { + this.depTime = endTime; + } + + @Override + public TourActivity duplicate() { + return new EnRoutePickupActivity(this); + } + + @Override + public EnRoutePickup getJob() { + return pickup; + } + + public String toString() { + return "[type=" + getName() + "][locationId=" + getLocation().getId() + + "][size=" + getSize().toString() + + "][twStart=" + Activities.round(getTheoreticalEarliestOperationStartTime()) + + "][twEnd=" + Activities.round(getTheoreticalLatestOperationStartTime()) + "]"; + } + + @Override + public Capacity getSize() { + return pickup.getSize(); + } + +} diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/reporting/SolutionPrinter.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/reporting/SolutionPrinter.java index fc92a9385..c9d3c6d6c 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/reporting/SolutionPrinter.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/reporting/SolutionPrinter.java @@ -17,22 +17,31 @@ */ package com.graphhopper.jsprit.core.reporting; +import com.graphhopper.jsprit.core.problem.Capacity; import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem; import com.graphhopper.jsprit.core.problem.job.Job; import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution; import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; +import com.graphhopper.jsprit.core.problem.solution.route.activity.DeliveryActivity; +import com.graphhopper.jsprit.core.problem.solution.route.activity.PickupActivity; +import com.graphhopper.jsprit.core.problem.solution.route.activity.ServiceActivity; import com.graphhopper.jsprit.core.problem.solution.route.activity.TourActivity; +import com.graphhopper.jsprit.core.problem.solution.route.activity.TourActivity.JobActivity; +import com.graphhopper.jsprit.core.util.VehicleIndexComparator; import java.io.PrintWriter; import java.util.ArrayList; -import java.util.Collections; import java.util.List; - +import java.util.Map; +import java.util.TreeMap; /** - * Printer to print the details of a vehicle-routing-problem solution. + * Enhanced printer to print the details of a vehicle-routing-problem solution. + *

+ * Supports all job types including EnRoutePickup and EnRouteDelivery. * * @author stefan schroeder + * @author [your name] */ public class SolutionPrinter { @@ -41,33 +50,40 @@ public class SolutionPrinter { /** * Enum to indicate verbose-level. - *

- *

- * Print.CONCISE and Print.VERBOSE are available. - * - * @author stefan schroeder */ public enum Print { - - CONCISE, VERBOSE + CONCISE, // Basic information + VERBOSE, // Detailed information + DETAILED // Most comprehensive output including capacity tracking } - private static class Jobs { + /** + * Class to store job counts by type + */ + private static class JobCounts { int nServices; int nShipments; int nBreaks; + int nEnRoutePickups; + int nEnRouteDeliveries; + int nOthers; - public Jobs(int nServices, int nShipments, int nBreaks) { - super(); - this.nServices = nServices; - this.nShipments = nShipments; - this.nBreaks = nBreaks; + public JobCounts() { + this.nServices = 0; + this.nShipments = 0; + this.nBreaks = 0; + this.nEnRoutePickups = 0; + this.nEnRouteDeliveries = 0; + this.nOthers = 0; } - } + public int getTotal() { + return nServices + nShipments + nBreaks + nEnRoutePickups + nEnRouteDeliveries + nOthers; + } + } /** - * Prints costs and #vehicles to stdout (out.println). + * Prints costs and #vehicles to stdout. * * @param solution the solution to be printed */ @@ -88,10 +104,11 @@ public static void print(PrintWriter out, VehicleRoutingProblemSolution solution } /** - * Prints costs and #vehicles to the to stdout (out.println). + * Prints solution details to stdout. * - * @param out the destination writer + * @param problem the routing problem * @param solution the solution to be printed + * @param print the verbosity level */ public static void print(VehicleRoutingProblem problem, VehicleRoutingProblemSolution solution, Print print) { print(SYSTEM_OUT_AS_PRINT_WRITER, problem, solution, print); @@ -99,122 +116,413 @@ public static void print(VehicleRoutingProblem problem, VehicleRoutingProblemSol } /** - * Prints costs and #vehicles to the given writer + * Prints solution details to the given writer. * * @param out the destination writer + * @param problem the routing problem * @param solution the solution to be printed + * @param print the verbosity level */ public static void print(PrintWriter out, VehicleRoutingProblem problem, VehicleRoutingProblemSolution solution, Print print) { - String leftAlign = "| %-13s | %-8s | %n"; + // Print problem summary + printProblemSummary(out, problem); - out.format("+--------------------------+%n"); - out.printf("| problem |%n"); - out.format("+---------------+----------+%n"); - out.printf("| indicator | value |%n"); - out.format("+---------------+----------+%n"); + // Print solution summary + printSolutionSummary(out, solution); - out.format(leftAlign, "noJobs", problem.getJobs().values().size()); - Jobs jobs = getNuOfJobs(problem); - out.format(leftAlign, "noServices", jobs.nServices); - out.format(leftAlign, "noShipments", jobs.nShipments); - out.format(leftAlign, "noBreaks", jobs.nBreaks); - out.format(leftAlign, "fleetsize", problem.getFleetSize().toString()); - out.format("+--------------------------+%n"); + // Print detailed information if requested + if (print == Print.VERBOSE || print == Print.DETAILED) { + printRouteDetails(out, problem, solution, print == Print.DETAILED); + } + } + /** + * Prints a summary of the problem. + * + * @param out the destination writer + * @param problem the problem to summarize + */ + private static void printProblemSummary(PrintWriter out, VehicleRoutingProblem problem) { + String leftAlign = "| %-20s | %-15s |%n"; - String leftAlignSolution = "| %-13s | %-40s | %n"; - out.format("+----------------------------------------------------------+%n"); - out.printf("| solution |%n"); - out.format("+---------------+------------------------------------------+%n"); - out.printf("| indicator | value |%n"); - out.format("+---------------+------------------------------------------+%n"); - out.format(leftAlignSolution, "costs", solution.getCost()); - out.format(leftAlignSolution, "noVehicles", solution.getRoutes().size()); - out.format(leftAlignSolution, "unassgndJobs", solution.getUnassignedJobs().size()); - out.format("+----------------------------------------------------------+%n"); + out.format("+--------------------------------------+%n"); + out.printf("| PROBLEM SUMMARY |%n"); + out.format("+----------------------+---------------+%n"); + out.printf("| Metric | Value |%n"); + out.format("+----------------------+---------------+%n"); - if (print.equals(Print.VERBOSE)) { - printVerbose(out, problem, solution); + JobCounts jobs = countJobsByType(problem); + out.format(leftAlign, "Total Jobs", jobs.getTotal()); + out.format(leftAlign, "Services", jobs.nServices); + out.format(leftAlign, "Shipments", jobs.nShipments); + out.format(leftAlign, "Breaks", jobs.nBreaks); + out.format(leftAlign, "EnRoutePickups", jobs.nEnRoutePickups); + out.format(leftAlign, "EnRouteDeliveries", jobs.nEnRouteDeliveries); + if (jobs.nOthers > 0) { + out.format(leftAlign, "Other Job Types", jobs.nOthers); } + out.format(leftAlign, "Fleet Size", problem.getFleetSize().toString()); + out.format(leftAlign, "Vehicle Types", problem.getTypes().size()); + out.format("+--------------------------------------+%n"); + out.println(); } - private static void printVerbose(VehicleRoutingProblem problem, VehicleRoutingProblemSolution solution) { - printVerbose(SYSTEM_OUT_AS_PRINT_WRITER, problem, solution); - SYSTEM_OUT_AS_PRINT_WRITER.flush(); + /** + * Prints a summary of the solution. + * + * @param out the destination writer + * @param solution the solution to summarize + */ + private static void printSolutionSummary(PrintWriter out, VehicleRoutingProblemSolution solution) { + String leftAlign = "| %-20s | %-30s |%n"; + + out.format("+------------------------------------------------------+%n"); + out.printf("| SOLUTION SUMMARY |%n"); + out.format("+----------------------+--------------------------------+%n"); + out.printf("| Metric | Value |%n"); + out.format("+----------------------+--------------------------------+%n"); + out.format(leftAlign, "Total Cost", String.format("%.2f", solution.getCost())); + out.format(leftAlign, "Vehicles Used", solution.getRoutes().size()); + out.format(leftAlign, "Unassigned Jobs", solution.getUnassignedJobs().size()); + + // Count activities by type + Map activityCounts = countActivitiesByType(solution); + for (Map.Entry entry : activityCounts.entrySet()) { + out.format(leftAlign, entry.getKey(), entry.getValue()); + } + + out.format("+------------------------------------------------------+%n"); + out.println(); } - private static void printVerbose(PrintWriter out, VehicleRoutingProblem problem, VehicleRoutingProblemSolution solution) { - String leftAlgin = "| %-7s | %-20s | %-21s | %-15s | %-15s | %-15s | %-15s |%n"; - out.format("+--------------------------------------------------------------------------------------------------------------------------------+%n"); - out.printf("| detailed solution |%n"); - out.format("+---------+----------------------+-----------------------+-----------------+-----------------+-----------------+-----------------+%n"); - out.printf("| route | vehicle | activity | job | arrTime | endTime | costs |%n"); - int routeNu = 1; - - List list = new ArrayList(solution.getRoutes()); - Collections.sort(list , new com.graphhopper.jsprit.core.util.VehicleIndexComparator()); - for (VehicleRoute route : list) { - out.format("+---------+----------------------+-----------------------+-----------------+-----------------+-----------------+-----------------+%n"); - double costs = 0; - out.format(leftAlgin, routeNu, getVehicleString(route), route.getStart().getName(), "-", "undef", Math.round(route.getStart().getEndTime()), - Math.round(costs)); + /** + * Prints detailed information about each route. + * + * @param out the destination writer + * @param problem the routing problem + * @param solution the solution to be printed + * @param trackCapacity whether to track and show capacity changes + */ + private static void printRouteDetails(PrintWriter out, VehicleRoutingProblem problem, + VehicleRoutingProblemSolution solution, boolean trackCapacity) { + // Define table format based on whether we're tracking capacity + String header; + String headerSeparator; + String rowFormat; + + if (trackCapacity) { + header = "| %-5s | %-15s | %-20s | %-20s | %-8s | %-8s | %-10s | %-25s |%n"; + headerSeparator = "+-------+-----------------+----------------------+----------------------+----------+----------+------------+---------------------------+%n"; + rowFormat = "| %-5s | %-15s | %-20s | %-20s | %-8s | %-8s | %-10.2f | %-25s |%n"; + + out.format(headerSeparator); + out.printf("| ROUTE DETAILS (With Capacity Tracking) |%n"); + out.format(headerSeparator); + out.printf(header, "Route", "Vehicle", "Activity", "Job ID", "ArrTime", "EndTime", "Cost", "Load"); + } else { + header = "| %-5s | %-15s | %-20s | %-20s | %-8s | %-8s | %-10s |%n"; + headerSeparator = "+-------+-----------------+----------------------+----------------------+----------+----------+------------+%n"; + rowFormat = "| %-5s | %-15s | %-20s | %-20s | %-8s | %-8s | %-10.2f |%n"; + + out.format(headerSeparator); + out.printf("| ROUTE DETAILS |%n"); + out.format(headerSeparator); + out.printf(header, "Route", "Vehicle", "Activity", "Job ID", "ArrTime", "EndTime", "Cost"); + } + + out.format(headerSeparator); + + // Sort routes for consistent output + List sortedRoutes = new ArrayList<>(solution.getRoutes()); + sortedRoutes.sort(new VehicleIndexComparator()); + + int routeIdx = 1; + for (VehicleRoute route : sortedRoutes) { + // Initialize tracking variables + double routeCost = 0; TourActivity prevAct = route.getStart(); + + // Initialize capacity tracking + Capacity currentCapacity = getLoadAtBeginning(route); // Start with zero capacity + + // Print route start + if (trackCapacity) { + out.printf(rowFormat, routeIdx, route.getVehicle().getId(), + route.getStart().getName(), "-", + "START", formatTime(route.getStart().getEndTime()), + routeCost, formatCapacity(currentCapacity)); + } else { + out.printf(rowFormat, routeIdx, route.getVehicle().getId(), + route.getStart().getName(), "-", + "START", formatTime(route.getStart().getEndTime()), + routeCost); + } + + // Print each activity for (TourActivity act : route.getActivities()) { - String jobId; - if (act instanceof TourActivity.JobActivity) { - jobId = ((TourActivity.JobActivity) act).getJob().getId(); + // Get job ID + String jobId = getJobId(act); + + // Calculate cost of this activity + double actCost = calculateActivityCost(problem, prevAct, act, route); + routeCost += actCost; + + // Update capacity if tracking + if (trackCapacity) { + currentCapacity = updateCapacity(currentCapacity, act); + + out.printf(rowFormat, routeIdx, route.getVehicle().getId(), + act.getName(), jobId, + formatTime(act.getArrTime()), formatTime(act.getEndTime()), + routeCost, formatCapacity(currentCapacity)); } else { - jobId = "-"; + out.printf(rowFormat, routeIdx, route.getVehicle().getId(), + act.getName(), jobId, + formatTime(act.getArrTime()), formatTime(act.getEndTime()), + routeCost); } - double c = problem.getTransportCosts().getTransportCost(prevAct.getLocation(), act.getLocation(), prevAct.getEndTime(), route.getDriver(), - route.getVehicle()); - c += problem.getActivityCosts().getActivityCost(act, act.getArrTime(), route.getDriver(), route.getVehicle()); - costs += c; - out.format(leftAlgin, routeNu, getVehicleString(route), act.getName(), jobId, Math.round(act.getArrTime()), - Math.round(act.getEndTime()), Math.round(costs)); + prevAct = act; } - double c = problem.getTransportCosts().getTransportCost(prevAct.getLocation(), route.getEnd().getLocation(), prevAct.getEndTime(), - route.getDriver(), route.getVehicle()); - c += problem.getActivityCosts().getActivityCost(route.getEnd(), route.getEnd().getArrTime(), route.getDriver(), route.getVehicle()); - costs += c; - out.format(leftAlgin, routeNu, getVehicleString(route), route.getEnd().getName(), "-", Math.round(route.getEnd().getArrTime()), "undef", - Math.round(costs)); - routeNu++; - } - out.format("+--------------------------------------------------------------------------------------------------------------------------------+%n"); + + // Print route end + double endCost = calculateActivityCost(problem, prevAct, route.getEnd(), route); + routeCost += endCost; + + if (trackCapacity) { + out.printf(rowFormat, routeIdx, route.getVehicle().getId(), + route.getEnd().getName(), "-", + formatTime(route.getEnd().getArrTime()), "END", + routeCost, formatCapacity(currentCapacity)); + } else { + out.printf(rowFormat, routeIdx, route.getVehicle().getId(), + route.getEnd().getName(), "-", + formatTime(route.getEnd().getArrTime()), "END", + routeCost); + } + + out.format(headerSeparator); + routeIdx++; + } + + // Print unassigned jobs + printUnassignedJobs(out, solution); + } + + private static Capacity getLoadAtBeginning(VehicleRoute route) { + Capacity current = Capacity.Builder.newInstance().build(); + for (Job j : route.getTourActivities().getJobs()) { + if (j.isPickedUpAtVehicleStart()) { + current = Capacity.addup(current, j.getSize()); + } + } + return current; + } + + /** + * Prints unassigned jobs if any exist. + * + * @param out the destination writer + * @param solution the solution containing unassigned jobs + */ + private static void printUnassignedJobs(PrintWriter out, VehicleRoutingProblemSolution solution) { if (!solution.getUnassignedJobs().isEmpty()) { - out.format("+----------------+%n"); - out.format("| unassignedJobs |%n"); - out.format("+----------------+%n"); - String unassignedJobAlgin = "| %-14s |%n"; - for (Job j : solution.getUnassignedJobs()) { - out.format(unassignedJobAlgin, j.getId()); + out.format("+------------------+----------------------+%n"); + out.format("| UNASSIGNED JOBS |%n"); + out.format("+------------------+----------------------+%n"); + out.format("| %-16s | %-20s |%n", "Job ID", "Job Type"); + out.format("+------------------+----------------------+%n"); + + for (Job job : solution.getUnassignedJobs()) { + out.format("| %-16s | %-20s |%n", job.getId(), getJobTypeName(job)); } - out.format("+----------------+%n"); + + out.format("+------------------+----------------------+%n"); } } - private static String getVehicleString(VehicleRoute route) { - return route.getVehicle().getId(); + /** + * Counts activities by type in the given solution. + * + * @param solution the solution to analyze + * @return a map of activity types to counts + */ + private static Map countActivitiesByType(VehicleRoutingProblemSolution solution) { + Map counts = new TreeMap<>(); // TreeMap for sorted keys + + for (VehicleRoute route : solution.getRoutes()) { + for (TourActivity act : route.getActivities()) { + String actType = act.getName(); + counts.put(actType, counts.getOrDefault(actType, 0) + 1); + } + } + + return counts; } - private static Jobs getNuOfJobs(VehicleRoutingProblem problem) { - int nShipments = 0; - int nServices = 0; - int nBreaks = 0; - for (Job j : problem.getJobs().values()) { - if (j.getJobType().isShipment()) { - nShipments++; + /** + * Counts jobs by type in the given problem. + * + * @param problem the problem to analyze + * @return job counts by type + */ + private static JobCounts countJobsByType(VehicleRoutingProblem problem) { + JobCounts counts = new JobCounts(); + + for (Job job : problem.getJobs().values()) { + if (job.getJobType().isService()) { + counts.nServices++; + } else if (job.getJobType().isShipment()) { + counts.nShipments++; + } else if (job.getJobType().isBreak()) { + counts.nBreaks++; + } else { + // Check for EnRoutePickup and EnRouteDelivery using class name + // This approach avoids direct dependencies on these classes if not in classpath + String jobClassName = job.getClass().getSimpleName(); + if ("EnRoutePickup".equals(jobClassName)) { + counts.nEnRoutePickups++; + } else if ("EnRouteDelivery".equals(jobClassName)) { + counts.nEnRouteDeliveries++; + } else { + counts.nOthers++; + } } - if (j.getJobType().isService()) { - nServices++; + } + + return counts; + } + + /** + * Gets the job ID from an activity. + * + * @param act the activity + * @return the job ID or "-" if no job is associated + */ + private static String getJobId(TourActivity act) { + if (act instanceof JobActivity) { + return ((JobActivity) act).getJob().getId(); + } + return "-"; + } + + /** + * Gets a descriptive name for the job type. + * + * @param job the job + * @return a descriptive name for the job type + */ + private static String getJobTypeName(Job job) { + if (job.getJobType().isService()) { + return "Service"; + } else if (job.getJobType().isShipment()) { + return "Shipment"; + } else if (job.getJobType().isBreak()) { + return "Break"; + } else { + // Check for EnRoutePickup and EnRouteDelivery using class name + String jobClassName = job.getClass().getSimpleName(); + if ("EnRoutePickup".equals(jobClassName)) { + return "EnRoutePickup"; + } else if ("EnRouteDelivery".equals(jobClassName)) { + return "EnRouteDelivery"; + } else { + return jobClassName; } - if (j.getJobType().isBreak()) { - nBreaks++; + } + } + + /** + * Calculates the cost of an activity. + * + * @param problem the routing problem + * @param prevAct the previous activity + * @param act the current activity + * @param route the route + * @return the cost of the activity + */ + private static double calculateActivityCost(VehicleRoutingProblem problem, TourActivity prevAct, + TourActivity act, VehicleRoute route) { + double transportCost = problem.getTransportCosts().getTransportCost( + prevAct.getLocation(), act.getLocation(), prevAct.getEndTime(), + route.getDriver(), route.getVehicle()); + + double activityCost = problem.getActivityCosts().getActivityCost( + act, act.getArrTime(), route.getDriver(), route.getVehicle()); + + return transportCost + activityCost; + } + + /** + * Updates capacity tracking based on activity type. + * + * @param currentCapacity the current capacity state + * @param act the activity to process + * @return the updated capacity + */ + private static Capacity updateCapacity(Capacity currentCapacity, TourActivity act) { + if (!(act instanceof JobActivity)) { + return currentCapacity; + } + + Job job = ((JobActivity) act).getJob(); + Capacity jobCapacity = job.getSize(); + Capacity newCapacity = Capacity.copyOf(currentCapacity); + + String actName = act.getName().toLowerCase(); + String actClassName = act.getClass().getSimpleName(); + + // Handle different activity types for capacity tracking + if (act instanceof PickupActivity || actClassName.contains("EnRoutePickupActivity")) { + // Pickup activities increase capacity + newCapacity = Capacity.addup(newCapacity, jobCapacity); + } else if (act instanceof DeliveryActivity) { + // Standard delivery decreases capacity + newCapacity = Capacity.subtract(newCapacity, jobCapacity); + } else if (actClassName.contains("EnRouteDeliveryActivity")) { + // EnRouteDelivery adds its capacity (which is typically negative) + newCapacity = Capacity.addup(newCapacity, jobCapacity); + } else if (act instanceof ServiceActivity) { + // Service is typically pickup, so add capacity + newCapacity = Capacity.addup(newCapacity, jobCapacity); + } + + return newCapacity; + } + + /** + * Formats capacity to a readable string. + * + * @param capacity the capacity object + * @return formatted capacity string + */ + private static String formatCapacity(Capacity capacity) { + if (capacity == null || capacity.isZero()) { + return "[0]"; + } + + StringBuilder sb = new StringBuilder(); + sb.append("["); + for (int i = 0; i < capacity.getNuOfDimensions(); i++) { + if (i > 0) { + sb.append(", "); } + sb.append(capacity.get(i)); } - return new Jobs(nServices, nShipments, nBreaks); + + return sb.append("]").toString(); } + /** + * Formats a time value to a readable string. + * + * @param time the time value + * @return formatted time string + */ + private static String formatTime(double time) { + if (time == Double.MAX_VALUE || time == -Double.MAX_VALUE) { + return "-"; + } + return String.format("%.0f", time); + } } From d8066b3197a1d5f60bd83bc236029ae8edad94bf Mon Sep 17 00:00:00 2001 From: oblonski Date: Thu, 15 May 2025 12:06:18 +0200 Subject: [PATCH 181/191] introduce en-route pickup and delivery - fix tests --- .../constraint/LoadConstraintTest.java | 19 +++++++++++++++++++ .../ServiceLoadRouteLevelConstraintTest.java | 6 ++++++ 2 files changed, 25 insertions(+) diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/LoadConstraintTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/LoadConstraintTest.java index 512c54a14..e5c8d8f25 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/LoadConstraintTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/LoadConstraintTest.java @@ -122,6 +122,8 @@ private static Service createMock(Capacity size) { Service mock = mock(Service.class); when(mock.getJobType()).thenReturn(Job.Type.SERVICE); when(mock.getSize()).thenReturn(size); + when(mock.isDeliveredToVehicleEnd()).thenReturn(true); + when(mock.isPickedUpAtVehicleStart()).thenReturn(false); return mock; } @@ -129,6 +131,8 @@ private static Delivery createDeliveryMock(Capacity size) { Delivery mock = mock(Delivery.class); when(mock.getJobType()).thenReturn(Job.Type.DELIVERY_SERVICE); when(mock.getSize()).thenReturn(size); + when(mock.isDeliveredToVehicleEnd()).thenReturn(false); + when(mock.isPickedUpAtVehicleStart()).thenReturn(true); return mock; } @@ -136,6 +140,8 @@ private static Pickup createPickupMock(Capacity size) { Pickup mock = mock(Pickup.class); when(mock.getJobType()).thenReturn(Job.Type.PICKUP_SERVICE); when(mock.getSize()).thenReturn(size); + when(mock.isDeliveredToVehicleEnd()).thenReturn(true); + when(mock.isPickedUpAtVehicleStart()).thenReturn(false); return mock; } @@ -143,6 +149,8 @@ private Shipment createShipmentMock(Capacity size) { Shipment shipment = mock(Shipment.class); when(shipment.getJobType()).thenReturn(Job.Type.SHIPMENT); when(shipment.getSize()).thenReturn(size); + when(shipment.isDeliveredToVehicleEnd()).thenReturn(false); + when(shipment.isPickedUpAtVehicleStart()).thenReturn(false); return shipment; } @@ -156,6 +164,7 @@ void whenServiceRouteAndNewServiceFitsInBetweenStartAndAct1_itShouldReturnFulfil JobInsertionContext context = new JobInsertionContext(serviceRoute, s, serviceRoute.getVehicle(), null, 0.); ServiceActivity newAct = mock(ServiceActivity.class); when(newAct.getSize()).thenReturn(size); + when(newAct.getJob()).thenReturn(s); HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, serviceRoute.getStart(), newAct, serviceRoute.getActivities().get(0), 0.); assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, status); } @@ -170,6 +179,7 @@ void whenServiceRouteAndNewServiceFitsInBetweenAc1AndAct2_itShouldReturnFulfille JobInsertionContext context = new JobInsertionContext(serviceRoute, s, serviceRoute.getVehicle(), null, 0.); ServiceActivity newAct = mock(ServiceActivity.class); when(newAct.getSize()).thenReturn(size); + when(newAct.getJob()).thenReturn(s); HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, serviceRoute.getActivities().get(0), newAct, serviceRoute.getActivities().get(1), 0.); assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, status); } @@ -184,6 +194,7 @@ void whenServiceRouteAndNewServiceFitsInBetweenAc2AndEnd_itShouldReturnFulfilled JobInsertionContext context = new JobInsertionContext(serviceRoute, s, serviceRoute.getVehicle(), null, 0.); ServiceActivity newAct = mock(ServiceActivity.class); when(newAct.getSize()).thenReturn(size); + when(newAct.getJob()).thenReturn(s); HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, serviceRoute.getActivities().get(1), newAct, serviceRoute.getEnd(), 0.); assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, status); } @@ -201,6 +212,7 @@ void whenServiceRouteAndNewServiceDoesNotFitInBetweenStartAndAct1_itShouldReturn JobInsertionContext context = new JobInsertionContext(serviceRoute, s, serviceRoute.getVehicle(), null, 0.); ServiceActivity newAct = mock(ServiceActivity.class); when(newAct.getSize()).thenReturn(size); + when(newAct.getJob()).thenReturn(s); HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, serviceRoute.getStart(), newAct, serviceRoute.getActivities().get(0), 0.); assertEquals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED, status); } @@ -215,6 +227,7 @@ void whenServiceRouteAndNewServiceDoesNotFitInBetweenAc1AndAct2_itShouldReturnFu JobInsertionContext context = new JobInsertionContext(serviceRoute, s, serviceRoute.getVehicle(), null, 0.); ServiceActivity newAct = mock(ServiceActivity.class); when(newAct.getSize()).thenReturn(size); + when(newAct.getJob()).thenReturn(s); HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, serviceRoute.getActivities().get(0), newAct, serviceRoute.getActivities().get(1), 0.); assertEquals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED, status); } @@ -229,6 +242,7 @@ void whenServiceRouteAndNewServiceDoesNotFitInBetweenAc2AndEnd_itShouldReturnFul JobInsertionContext context = new JobInsertionContext(serviceRoute, s, serviceRoute.getVehicle(), null, 0.); ServiceActivity newAct = mock(ServiceActivity.class); when(newAct.getSize()).thenReturn(size); + when(newAct.getJob()).thenReturn(s); HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, serviceRoute.getActivities().get(1), newAct, serviceRoute.getEnd(), 0.); assertEquals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED, status); } @@ -451,6 +465,7 @@ void whenPDRouteAndNewServiceFitsInBetweenAc1AndAct2_itShouldReturnFulfilled() { JobInsertionContext context = new JobInsertionContext(serviceRoute, s, serviceRoute.getVehicle(), null, 0.); ServiceActivity newAct = mock(ServiceActivity.class); when(newAct.getSize()).thenReturn(size); + when(newAct.getJob()).thenReturn(s); HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, serviceRoute.getActivities().get(0), newAct, serviceRoute.getActivities().get(1), 0.); assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, status); } @@ -465,6 +480,7 @@ void whenPDRouteAndNewServiceFitsInBetweenAc2AndEnd_itShouldReturnFulfilled() { JobInsertionContext context = new JobInsertionContext(serviceRoute, s, serviceRoute.getVehicle(), null, 0.); ServiceActivity newAct = mock(ServiceActivity.class); when(newAct.getSize()).thenReturn(size); + when(newAct.getJob()).thenReturn(s); HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, serviceRoute.getActivities().get(1), newAct, serviceRoute.getEnd(), 0.); assertEquals(HardActivityConstraint.ConstraintsStatus.FULFILLED, status); } @@ -482,6 +498,7 @@ void whenPDRouteAndNewServiceDoesNotFitInBetweenStartAndAct1_itShouldReturnFulfi JobInsertionContext context = new JobInsertionContext(serviceRoute, s, serviceRoute.getVehicle(), null, 0.); ServiceActivity newAct = mock(ServiceActivity.class); when(newAct.getSize()).thenReturn(size); + when(newAct.getJob()).thenReturn(s); HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, serviceRoute.getStart(), newAct, serviceRoute.getActivities().get(0), 0.); assertEquals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED, status); } @@ -496,6 +513,7 @@ void whenPDRouteAndNewServiceDoesNotFitInBetweenAc1AndAct2_itShouldReturnFulfill JobInsertionContext context = new JobInsertionContext(serviceRoute, s, serviceRoute.getVehicle(), null, 0.); ServiceActivity newAct = mock(ServiceActivity.class); when(newAct.getSize()).thenReturn(size); + when(newAct.getJob()).thenReturn(s); HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, serviceRoute.getActivities().get(0), newAct, serviceRoute.getActivities().get(1), 0.); assertEquals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED, status); } @@ -510,6 +528,7 @@ void whenPDRouteAndNewServiceDoesNotFitInBetweenAc2AndEnd_itShouldReturnFulfille JobInsertionContext context = new JobInsertionContext(serviceRoute, s, serviceRoute.getVehicle(), null, 0.); ServiceActivity newAct = mock(ServiceActivity.class); when(newAct.getSize()).thenReturn(size); + when(newAct.getJob()).thenReturn(s); HardActivityConstraint.ConstraintsStatus status = loadConstraint.fulfilled(context, serviceRoute.getActivities().get(1), newAct, serviceRoute.getEnd(), 0.); assertEquals(HardActivityConstraint.ConstraintsStatus.NOT_FULFILLED, status); } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/ServiceLoadRouteLevelConstraintTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/ServiceLoadRouteLevelConstraintTest.java index 6f6a417b1..135aaa1cf 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/ServiceLoadRouteLevelConstraintTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/problem/constraint/ServiceLoadRouteLevelConstraintTest.java @@ -61,6 +61,8 @@ Delivery createDeliveryMock(Capacity size) { Delivery d = mock(Delivery.class); when(d.getSize()).thenReturn(size); when(d.getJobType()).thenReturn(Job.Type.DELIVERY_SERVICE); + when(d.isDeliveredToVehicleEnd()).thenReturn(false); + when(d.isPickedUpAtVehicleStart()).thenReturn(true); return d; } @@ -68,6 +70,8 @@ Service createServiceMock(Capacity size) { Service d = mock(Service.class); when(d.getSize()).thenReturn(size); when(d.getJobType()).thenReturn(Job.Type.SERVICE); + when(d.isDeliveredToVehicleEnd()).thenReturn(true); + when(d.isPickedUpAtVehicleStart()).thenReturn(false); return d; } @@ -75,6 +79,8 @@ Pickup createPickupMock(Capacity size) { Pickup d = mock(Pickup.class); when(d.getSize()).thenReturn(size); when(d.getJobType()).thenReturn(Job.Type.PICKUP_SERVICE); + when(d.isDeliveredToVehicleEnd()).thenReturn(true); + when(d.isPickedUpAtVehicleStart()).thenReturn(false); return d; } From 0c7224d0fd7a650454869fa03ad545726f634a9b Mon Sep 17 00:00:00 2001 From: oblonski Date: Sat, 17 May 2025 13:22:04 +0200 Subject: [PATCH 182/191] add job filter to control ruin strategies --- .../jsprit/core/algorithm/box/Jsprit.java | 32 ++++-- .../algorithm/ruin/AbstractRuinStrategy.java | 32 ++++++ .../jsprit/core/algorithm/ruin/JobFilter.java | 27 ++++++ .../core/algorithm/ruin/RuinRadial.java | 3 +- .../core/algorithm/ruin/RuinRandom.java | 8 +- .../jsprit/core/algorithm/ruin/RuinWorst.java | 97 +++++++++++-------- 6 files changed, 149 insertions(+), 50 deletions(-) create mode 100644 jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/JobFilter.java diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java index bb38e80ae..4a36b9244 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java @@ -54,6 +54,7 @@ public class Jsprit { private final ActivityInsertionCostsCalculator activityInsertion; + private final JobFilter jobFilter; public enum Construction { @@ -181,6 +182,8 @@ public static class Builder { private VehicleFleetManager fleetManager = null; + private JobFilter jobFilter = null; + public static Builder newInstance(VehicleRoutingProblem vrp) { return new Builder(vrp); } @@ -325,6 +328,11 @@ public Builder setRegretScoringFunction(RegretScoringFunction scoringFunction) { return this; } + public Builder setJobFilter(JobFilter jobFilter) { + this.jobFilter = jobFilter; + return this; + } + public VehicleRoutingAlgorithm buildAlgorithm() { return new Jsprit(this).create(vrp); } @@ -406,6 +414,7 @@ private Jsprit(Builder builder) { this.random = builder.random; this.activityInsertion = builder.activityInsertionCalculator; this.acceptor = builder.solutionAcceptor; + this.jobFilter = builder.jobFilter; regretScorer = builder.regretScorer; regretScoringFunction = builder.regretScoringFunction; customStrategies.putAll(builder.customStrategies); @@ -488,23 +497,26 @@ private VehicleRoutingAlgorithm create(final VehicleRoutingProblem vrp) { RuinRadial radial = new RuinRadial(vrp, vrp.getJobs().size(), jobNeighborhoods); radial.setRandom(random); + radial.setJobFilter(jobFilter); RuinShareFactoryImpl radialRuinFactory = new RuinShareFactoryImpl( toInteger(properties.getProperty(Parameter.RADIAL_MIN_SHARE.toString())), toInteger(properties.getProperty(Parameter.RADIAL_MAX_SHARE.toString())), random); radial.setRuinShareFactory(radialRuinFactory); - final RuinRandom random_for_regret = new RuinRandom(vrp, 0.5); - random_for_regret.setRandom(random); - random_for_regret.setRuinShareFactory(new RuinShareFactoryImpl( + final RuinRandom randomForRegret = new RuinRandom(vrp, 0.5); + randomForRegret.setJobFilter(jobFilter); + randomForRegret.setRandom(random); + randomForRegret.setRuinShareFactory(new RuinShareFactoryImpl( toInteger(properties.getProperty(Parameter.RANDOM_REGRET_MIN_SHARE.toString())), toInteger(properties.getProperty(Parameter.RANDOM_REGRET_MAX_SHARE.toString())), random) ); - final RuinRandom random_for_best = new RuinRandom(vrp, 0.5); - random_for_best.setRandom(random); - random_for_best.setRuinShareFactory(new RuinShareFactoryImpl( + final RuinRandom randomForBest = new RuinRandom(vrp, 0.5); + randomForBest.setRandom(random); + randomForBest.setJobFilter(jobFilter); + randomForBest.setRuinShareFactory(new RuinShareFactoryImpl( toInteger(properties.getProperty(Parameter.RANDOM_BEST_MIN_SHARE.toString())), toInteger(properties.getProperty(Parameter.RANDOM_BEST_MAX_SHARE.toString())), random) @@ -512,6 +524,7 @@ private VehicleRoutingAlgorithm create(final VehicleRoutingProblem vrp) { final RuinWorst worst = new RuinWorst(vrp, (int) (vrp.getJobs().values().size() * 0.5)); worst.setRandom(random); + worst.setJobFilter(jobFilter); worst.setRuinShareFactory(new RuinShareFactoryImpl( toInteger(properties.getProperty(Parameter.WORST_MIN_SHARE.toString())), toInteger(properties.getProperty(Parameter.WORST_MAX_SHARE.toString())), @@ -527,6 +540,7 @@ private VehicleRoutingAlgorithm create(final VehicleRoutingProblem vrp) { final RuinClusters clusters = new RuinClusters(vrp, (int) (vrp.getJobs().values().size() * 0.5), jobNeighborhoods); clusters.setRandom(random); + clusters.setJobFilter(jobFilter); clusters.setRuinShareFactory(new RuinShareFactoryImpl( toInteger(properties.getProperty(Parameter.WORST_MIN_SHARE.toString())), toInteger(properties.getProperty(Parameter.WORST_MAX_SHARE.toString())), @@ -542,10 +556,12 @@ private VehicleRoutingAlgorithm create(final VehicleRoutingProblem vrp) { stringRuin.setNoRoutes(kMin, kMax); stringRuin.setStringLength(lMin, lMax); stringRuin.setRandom(random); + stringRuin.setJobFilter(jobFilter); final RuinTimeRelated ruinTimeRelated = new RuinTimeRelated(vrp); ruinTimeRelated.setRuinShareFactory(radialRuinFactory); ruinTimeRelated.setRandom(random); + ruinTimeRelated.setJobFilter(jobFilter); AbstractInsertionStrategy regret; @@ -652,10 +668,10 @@ private VehicleRoutingAlgorithm create(final VehicleRoutingProblem vrp) { timeRelatedBest.addModule(configureModule(new RuinAndRecreateModule(Strategy.TIME_RELATED_BEST.toString(), best, ruinTimeRelated))); SearchStrategy randomBest = new SearchStrategy(Strategy.RANDOM_BEST.toString(), new SelectBest(), acceptor, objectiveFunction); - randomBest.addModule(configureModule(new RuinAndRecreateModule(Strategy.RANDOM_BEST.toString(), best, random_for_best))); + randomBest.addModule(configureModule(new RuinAndRecreateModule(Strategy.RANDOM_BEST.toString(), best, randomForBest))); SearchStrategy randomRegret = new SearchStrategy(Strategy.RANDOM_REGRET.toString(), new SelectBest(), acceptor, objectiveFunction); - randomRegret.addModule(configureModule(new RuinAndRecreateModule(Strategy.RANDOM_REGRET.toString(), regret, random_for_regret))); + randomRegret.addModule(configureModule(new RuinAndRecreateModule(Strategy.RANDOM_REGRET.toString(), regret, randomForRegret))); SearchStrategy worstRegret = new SearchStrategy(Strategy.WORST_REGRET.toString(), new SelectBest(), acceptor, objectiveFunction); worstRegret.addModule(configureModule(new RuinAndRecreateModule(Strategy.WORST_REGRET.toString(), regret, worst))); diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/AbstractRuinStrategy.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/AbstractRuinStrategy.java index 4049baaea..b6e232216 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/AbstractRuinStrategy.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/AbstractRuinStrategy.java @@ -28,7 +28,9 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.util.ArrayList; import java.util.Collection; +import java.util.List; import java.util.Random; public abstract class AbstractRuinStrategy implements RuinStrategy { @@ -41,6 +43,10 @@ public abstract class AbstractRuinStrategy implements RuinStrategy { protected VehicleRoutingProblem vrp; + protected JobFilter jobFilter = job -> true; + + private boolean usingDefaultFilter = true; + public void setRandom(Random random) { this.random = random; } @@ -110,4 +116,30 @@ protected boolean removeJob(Job job, VehicleRoute route) { } return false; } + + public void setJobFilter(JobFilter filter) { + if (filter == null) { + this.jobFilter = job -> true; + this.usingDefaultFilter = true; + } else { + this.jobFilter = filter; + this.usingDefaultFilter = false; + } + } + + protected Collection filterJobs(Collection jobs) { + if (usingDefaultFilter) { + return jobs; // Return original collection without copying + } + + List filteredJobs = new ArrayList<>(); + for (Job job : jobs) { + if (jobFilter.accept(job)) { + filteredJobs.add(job); + } + } + + // If no jobs match the filter, fall back to all jobs + return filteredJobs.isEmpty() ? jobs : filteredJobs; + } } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/JobFilter.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/JobFilter.java new file mode 100644 index 000000000..4d5c91eba --- /dev/null +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/JobFilter.java @@ -0,0 +1,27 @@ +/* + * Licensed to GraphHopper GmbH under one or more contributor + * license agreements. See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + * + * GraphHopper GmbH licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.graphhopper.jsprit.core.algorithm.ruin; + +import com.graphhopper.jsprit.core.problem.job.Job; + +public interface JobFilter { + + boolean accept(Job job); + +} diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinRadial.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinRadial.java index eec3369f5..660308c3b 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinRadial.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinRadial.java @@ -102,7 +102,8 @@ public Collection ruinRoutes(Collection vehicleRoutes) { if (nOfJobs2BeRemoved == 0 || jobs.isEmpty()) { return Collections.emptyList(); } - Job randomJob = RandomUtils.nextJob(jobs, random); + Collection filteredJobs = filterJobs(jobs); + Job randomJob = RandomUtils.nextJob(filteredJobs, random); return ruinRoutes(vehicleRoutes, randomJob, nOfJobs2BeRemoved); } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinRandom.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinRandom.java index 385e4c6a6..2e294ec34 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinRandom.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinRandom.java @@ -72,10 +72,12 @@ public Collection ruinRoutes(Collection vehicleRoutes) { } private void ruin(Collection vehicleRoutes, int nOfJobs2BeRemoved, List unassignedJobs) { - ArrayList availableJobs = new ArrayList<>(vrp.getJobs().values()); - Collections.shuffle(availableJobs, random); + Collection availableJobs = vrp.getJobs().values(); + Collection filteredJobs = filterJobs(availableJobs); + List shuffledJobs = new ArrayList<>(filteredJobs); + Collections.shuffle(shuffledJobs, random); int removed = 0; - for (Job job : availableJobs) { + for (Job job : shuffledJobs) { if (removed == nOfJobs2BeRemoved) break; if (removeJob(job, vehicleRoutes)) { unassignedJobs.add(job); diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinWorst.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinWorst.java index 04a6bd255..9d551592c 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinWorst.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinWorst.java @@ -81,55 +81,76 @@ private void ruin(Collection vehicleRoutes, int nOfJobs2BeRemoved, } } - private Job getWorst(Collection copied) { + private Job getWorst(Collection routes) { + if (routes.isEmpty()) return null; + Job worst = null; double bestSavings = Double.MIN_VALUE; + Map savingsMap = new HashMap<>(); - for (VehicleRoute route : copied) { + // Calculate savings for all jobs across all routes + for (VehicleRoute route : routes) { if (route.isEmpty()) continue; - Map savingsMap = new HashMap<>(); - TourActivity actBefore = route.getStart(); - TourActivity actToEval = null; - for (TourActivity act : route.getActivities()) { - if (!(act instanceof TourActivity.JobActivity)) { - continue; - } - - if (actToEval == null) { - actToEval = act; - continue; - } - double savings = savings(route, actBefore, actToEval, act); - Job job = ((TourActivity.JobActivity) actToEval).getJob(); - if (!savingsMap.containsKey(job)) { - savingsMap.put(job, savings); - } else { - double s = savingsMap.get(job); - savingsMap.put(job, s + savings); - } - actBefore = actToEval; - actToEval = act; + + calculateSavingsForRoute(route, savingsMap); + } + + // If no jobs have been evaluated, return null + if (savingsMap.isEmpty()) return null; + + // Find the job with highest savings (worst job to keep) + for (Map.Entry entry : savingsMap.entrySet()) { + Job job = entry.getKey(); + double savings = entry.getValue(); + + // Skip jobs that don't pass the filter + if (!jobFilter.accept(job)) { + continue; } + + if (savings > bestSavings) { + bestSavings = savings; + worst = job; + } + } + + return worst; + } + + private void calculateSavingsForRoute(VehicleRoute route, Map savingsMap) { + if (route.isEmpty()) return; + + TourActivity actBefore = route.getStart(); + TourActivity actToEval = null; + + for (TourActivity act : route.getActivities()) { + if (!(act instanceof TourActivity.JobActivity)) { + continue; + } + if (actToEval == null) { + actToEval = act; continue; } + + double savings = savings(route, actBefore, actToEval, act); + Job job = ((TourActivity.JobActivity) actToEval).getJob(); + + // Add to savings map + savingsMap.merge(job, savings, Double::sum); + + actBefore = actToEval; + actToEval = act; + } + + // Process the last activity + if (actToEval != null) { double savings = savings(route, actBefore, actToEval, route.getEnd()); Job job = ((TourActivity.JobActivity) actToEval).getJob(); - if (!savingsMap.containsKey(job)) { - savingsMap.put(job, savings); - } else { - double s = savingsMap.get(job); - savingsMap.put(job, s + savings); - } - //getCounts best - for (Job j : savingsMap.keySet()) { - if (savingsMap.get(j) > bestSavings) { - bestSavings = savingsMap.get(j); - worst = j; - } - } + + // Add to savings map + savingsMap.merge(job, savings, Double::sum); } - return worst; } private double savings(VehicleRoute route, TourActivity actBefore, TourActivity actToEval, TourActivity act) { From 2a0d3d602fe161210be5c414052594b5beb3fea1 Mon Sep 17 00:00:00 2001 From: oblonski Date: Sat, 17 May 2025 14:46:58 +0200 Subject: [PATCH 183/191] add job filter to control ruin strategies --- .../com/graphhopper/jsprit/core/algorithm/ruin/RuinString.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinString.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinString.java index 8452dde2d..ab8491b6b 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinString.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinString.java @@ -95,7 +95,8 @@ public Collection ruinRoutes(Collection vehicleRoutes) { noStrings = Math.min(noStrings, vehicleRoutes.size()); Set unassignedJobs = new HashSet<>(); Set ruinedRoutes = new HashSet<>(); - Job prevJob = RandomUtils.nextJob(vrp.getJobs().values(), random); + Collection filteredJobs = filterJobs(vrp.getJobs().values()); + Job prevJob = RandomUtils.nextJob(filteredJobs, random); Iterator neighborhoodIterator = jobNeighborhoods.getNearestNeighborsIterator(kMax * lMax, prevJob); while (neighborhoodIterator.hasNext() && ruinedRoutes.size() <= noStrings) { if (!unassignedJobs.contains(prevJob)) { From f6a62af55012827a372832b2eeecf887460a2e60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Schr=C3=B6der?= Date: Sat, 17 May 2025 19:09:29 +0200 Subject: [PATCH 184/191] Delete .editorconfig --- .editorconfig | 13 ------------- 1 file changed, 13 deletions(-) delete mode 100644 .editorconfig diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 7852a87c7..000000000 --- a/.editorconfig +++ /dev/null @@ -1,13 +0,0 @@ -root = true - -[*] -indent_style = space -indent_size = 4 -insert_final_newline = true -charset = utf-8 -end_of_line = lf -trim_trailing_whitespace = true -max_line_length = 120 - -[.travis.yml] -indent_size = 2 From 11fb30ef3434b1eaccc45aca8b3a5de1c53f9415 Mon Sep 17 00:00:00 2001 From: oblonski Date: Wed, 21 May 2025 20:12:53 +0200 Subject: [PATCH 185/191] introduce tabu list for evaluated jobs --- .gitignore | 4 +++- .../jsprit/core/algorithm/ruin/RuinWorst.java | 11 +++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index ad4df13a5..3980ca96f 100644 --- a/.gitignore +++ b/.gitignore @@ -12,4 +12,6 @@ # Eclipse .project .classpath -/.settings/ +/.settings/s + +.editorconfig diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinWorst.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinWorst.java index 9d551592c..b89b6e2ad 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinWorst.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/ruin/RuinWorst.java @@ -71,17 +71,20 @@ public Collection ruinRoutes(Collection vehicleRoutes) { private void ruin(Collection vehicleRoutes, int nOfJobs2BeRemoved, List unassignedJobs) { int toRemove = nOfJobs2BeRemoved; + Set tabu = new HashSet<>(); while (toRemove > 0) { - Job worst = getWorst(vehicleRoutes); + Job worst = getWorst(vehicleRoutes, tabu); if (worst == null) break; if (removeJob(worst, vehicleRoutes)) { unassignedJobs.add(worst); + } else { + tabu.add(worst); } toRemove--; } } - private Job getWorst(Collection routes) { + private Job getWorst(Collection routes, Set tabu) { if (routes.isEmpty()) return null; Job worst = null; @@ -103,6 +106,10 @@ private Job getWorst(Collection routes) { Job job = entry.getKey(); double savings = entry.getValue(); + if (tabu.contains(job) || !vrp.getJobs().containsKey(job.getId())) { + continue; + } + // Skip jobs that don't pass the filter if (!jobFilter.accept(job)) { continue; From 58e3e386076a076e19cfa2ebc0742ef1bff5aaad Mon Sep 17 00:00:00 2001 From: oblonski Date: Wed, 21 May 2025 20:13:32 +0200 Subject: [PATCH 186/191] allow negative noise --- .../core/algorithm/box/InsertionNoiseMaker.java | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/InsertionNoiseMaker.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/InsertionNoiseMaker.java index 284910309..3fe73f454 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/InsertionNoiseMaker.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/InsertionNoiseMaker.java @@ -50,25 +50,17 @@ class InsertionNoiseMaker implements SoftActivityConstraint, IterationStartsList this.noiseLevel = noiseLevel; this.noiseProbability = noiseProbability; this.maxCosts = maxCosts; -// randomArray = new Random[vrp.getNuActivities() + 2]; -// for (int i = 0; i < randomArray.length; i++) { -// Random r = new Random(); -// r.setSeed(random.nextLong()); -// randomArray[i] = r; -// } } @Override public void informIterationStarts(int i, VehicleRoutingProblem problem, Collection solutions) { - if (random.nextDouble() < noiseProbability) { - makeNoise = true; - } else makeNoise = false; + } @Override public double getCosts(JobInsertionContext iFacts, TourActivity prevAct, TourActivity newAct, TourActivity nextAct, double prevActDepTime) { - if (makeNoise) { - return noiseLevel * maxCosts * random.nextDouble(); + if (random.nextDouble() < noiseProbability) { + return noiseLevel * maxCosts * random.nextGaussian(); } return 0; } From e60f7c683c308a1b509adc884eaf74ffdd77b577 Mon Sep 17 00:00:00 2001 From: oblonski Date: Wed, 21 May 2025 20:29:44 +0200 Subject: [PATCH 187/191] revert allow negative noise --- .../jsprit/core/algorithm/box/InsertionNoiseMaker.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/InsertionNoiseMaker.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/InsertionNoiseMaker.java index 3fe73f454..56160a36d 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/InsertionNoiseMaker.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/InsertionNoiseMaker.java @@ -60,7 +60,7 @@ public void informIterationStarts(int i, VehicleRoutingProblem problem, Collecti @Override public double getCosts(JobInsertionContext iFacts, TourActivity prevAct, TourActivity newAct, TourActivity nextAct, double prevActDepTime) { if (random.nextDouble() < noiseProbability) { - return noiseLevel * maxCosts * random.nextGaussian(); + return noiseLevel * maxCosts * random.nextDouble(); } return 0; } From f59b2c44dbe1a6b01b282f7905d81e0a781f2c8f Mon Sep 17 00:00:00 2001 From: oblonski Date: Thu, 22 May 2025 09:30:34 +0200 Subject: [PATCH 188/191] allow access to job calculator factories and rename switcher to selector --- .../jsprit/core/algorithm/box/Jsprit.java | 42 ++++++++- .../recreate/AbstractInsertionCalculator.java | 88 ++++++++++++++----- .../algorithm/recreate/InsertionData.java | 2 +- ...itcher.java => JobCalculatorSelector.java} | 4 +- .../JobInsertionCostsCalculatorBuilder.java | 20 ++--- .../recreate/ShipmentInsertionCalculator.java | 15 +--- ...erviceInsertionAndLoadConstraintsTest.java | 2 +- .../ShipmentInsertionCalculatorFlexTest.java | 2 +- .../ShipmentInsertionCalculatorTest.java | 2 +- 9 files changed, 125 insertions(+), 52 deletions(-) rename jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/{JobCalculatorSwitcher.java => JobCalculatorSelector.java} (89%) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java index 4a36b9244..a81289eda 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java @@ -184,6 +184,10 @@ public static class Builder { private JobFilter jobFilter = null; + private ServiceInsertionCalculatorFactory serviceCalculatorFactory = null; + private ShipmentInsertionCalculatorFactory shipmentCalculatorFactory = null; + + public static Builder newInstance(VehicleRoutingProblem vrp) { return new Builder(vrp); } @@ -333,6 +337,22 @@ public Builder setJobFilter(JobFilter jobFilter) { return this; } + /** + * Set a custom service insertion calculator factory + */ + public Builder setServiceInsertionCalculatorFactory(ServiceInsertionCalculatorFactory factory) { + this.serviceCalculatorFactory = factory; + return this; + } + + /** + * Set a custom shipment insertion calculator factory + */ + public Builder setShipmentInsertionCalculatorFactory(ShipmentInsertionCalculatorFactory factory) { + this.shipmentCalculatorFactory = factory; + return this; + } + public VehicleRoutingAlgorithm buildAlgorithm() { return new Jsprit(this).create(vrp); } @@ -401,6 +421,10 @@ public int createNumberToBeRemoved() { private final Map customStrategies = new HashMap<>(); + private final ServiceInsertionCalculatorFactory serviceCalculatorFactory; + + private final ShipmentInsertionCalculatorFactory shipmentCalculatorFactory; + private VehicleFleetManager vehicleFleetManager; private Jsprit(Builder builder) { @@ -415,6 +439,8 @@ private Jsprit(Builder builder) { this.activityInsertion = builder.activityInsertionCalculator; this.acceptor = builder.solutionAcceptor; this.jobFilter = builder.jobFilter; + this.shipmentCalculatorFactory = builder.shipmentCalculatorFactory; + this.serviceCalculatorFactory = builder.serviceCalculatorFactory; regretScorer = builder.regretScorer; regretScoringFunction = builder.regretScoringFunction; customStrategies.putAll(builder.customStrategies); @@ -575,6 +601,8 @@ private VehicleRoutingAlgorithm create(final VehicleRoutingProblem vrp) { .considerFixedCosts(toDouble(getProperty(Parameter.FIXED_COST_PARAM.toString()))) .setAllowVehicleSwitch(toBoolean(getProperty(Parameter.VEHICLE_SWITCH.toString()))) .setActivityInsertionCostCalculator(activityInsertion) + .setServiceInsertionCalculator(this.serviceCalculatorFactory) + .setShipmentInsertionCalculatorFactory(this.shipmentCalculatorFactory) .build(); regretInsertion.setRegretScoringFunction(regretScoringFunction); regretInsertion.setDependencyTypes(constraintManager.getDependencyTypes()); @@ -587,6 +615,8 @@ private VehicleRoutingAlgorithm create(final VehicleRoutingProblem vrp) { .considerFixedCosts(toDouble(getProperty(Parameter.FIXED_COST_PARAM.toString()))) .setAllowVehicleSwitch(toBoolean(getProperty(Parameter.VEHICLE_SWITCH.toString()))) .setActivityInsertionCostCalculator(activityInsertion) + .setServiceInsertionCalculator(this.serviceCalculatorFactory) + .setShipmentInsertionCalculatorFactory(this.shipmentCalculatorFactory) .build(); regretInsertion.setRegretScoringFunction(regretScoringFunction); regret = regretInsertion; @@ -599,6 +629,8 @@ private VehicleRoutingAlgorithm create(final VehicleRoutingProblem vrp) { .setAllowVehicleSwitch(toBoolean(getProperty(Parameter.VEHICLE_SWITCH.toString()))) .considerFixedCosts(toDouble(getProperty(Parameter.FIXED_COST_PARAM.toString()))) .setActivityInsertionCostCalculator(activityInsertion) + .setServiceInsertionCalculator(this.serviceCalculatorFactory) + .setShipmentInsertionCalculatorFactory(this.shipmentCalculatorFactory) .build(); regretInsertion.setRegretScoringFunction(regretScoringFunction); regretInsertion.setDependencyTypes(constraintManager.getDependencyTypes()); @@ -610,7 +642,9 @@ private VehicleRoutingAlgorithm create(final VehicleRoutingProblem vrp) { .setAllowVehicleSwitch(toBoolean(getProperty(Parameter.VEHICLE_SWITCH.toString()))) .considerFixedCosts(toDouble(getProperty(Parameter.FIXED_COST_PARAM.toString()))) .setActivityInsertionCostCalculator(activityInsertion) - .build(); + .setServiceInsertionCalculator(this.serviceCalculatorFactory) + .setShipmentInsertionCalculatorFactory(this.shipmentCalculatorFactory) + .build(); regretInsertion.setRegretScoringFunction(regretScoringFunction); regret = regretInsertion; } @@ -624,6 +658,8 @@ private VehicleRoutingAlgorithm create(final VehicleRoutingProblem vrp) { .considerFixedCosts(Double.valueOf(properties.getProperty(Parameter.FIXED_COST_PARAM.toString()))) .setAllowVehicleSwitch(toBoolean(getProperty(Parameter.VEHICLE_SWITCH.toString()))) .setActivityInsertionCostCalculator(activityInsertion) + .setServiceInsertionCalculator(this.serviceCalculatorFactory) + .setShipmentInsertionCalculatorFactory(this.shipmentCalculatorFactory) .build(); best = bestInsertion; } else { @@ -633,6 +669,8 @@ private VehicleRoutingAlgorithm create(final VehicleRoutingProblem vrp) { .setAllowVehicleSwitch(toBoolean(getProperty(Parameter.VEHICLE_SWITCH.toString()))) .setConcurrentMode(es, noThreads) .setActivityInsertionCostCalculator(activityInsertion) + .setServiceInsertionCalculator(this.serviceCalculatorFactory) + .setShipmentInsertionCalculatorFactory(this.shipmentCalculatorFactory) .build(); best = bestInsertion; } @@ -736,7 +774,7 @@ private VehicleRoutingAlgorithm create(final VehicleRoutingProblem vrp) { vra.addListener(new BreakScheduling(vrp, stateManager, constraintManager)); } handleExecutorShutdown(vra); - vra.setMaxIterations(Integer.valueOf(properties.getProperty(Parameter.ITERATIONS.toString()))); + vra.setMaxIterations(Integer.parseInt(properties.getProperty(Parameter.ITERATIONS.toString()))); return vra; diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/AbstractInsertionCalculator.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/AbstractInsertionCalculator.java index 317003a87..2fbff399d 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/AbstractInsertionCalculator.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/AbstractInsertionCalculator.java @@ -1,21 +1,3 @@ -/* - * Licensed to GraphHopper GmbH under one or more contributor - * license agreements. See the NOTICE file distributed with this work for - * additional information regarding copyright ownership. - * - * GraphHopper GmbH licenses this file to you under the Apache License, - * Version 2.0 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - package com.graphhopper.jsprit.core.algorithm.recreate; import com.graphhopper.jsprit.core.problem.constraint.ConstraintManager; @@ -24,18 +6,26 @@ import com.graphhopper.jsprit.core.problem.constraint.HardConstraint; import com.graphhopper.jsprit.core.problem.constraint.HardRouteConstraint; import com.graphhopper.jsprit.core.problem.misc.JobInsertionContext; +import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute; +import com.graphhopper.jsprit.core.problem.solution.route.activity.End; +import com.graphhopper.jsprit.core.problem.solution.route.activity.Start; import com.graphhopper.jsprit.core.problem.solution.route.activity.TourActivity; +import com.graphhopper.jsprit.core.problem.vehicle.Vehicle; import java.util.ArrayList; import java.util.Collection; import java.util.List; /** - * Created by schroeder on 06/02/17. + * Enhanced AbstractInsertionCalculator with more common functionality moved up + * to simplify implementation of concrete calculators. */ -abstract class AbstractInsertionCalculator implements JobInsertionCostsCalculator { +public abstract class AbstractInsertionCalculator implements JobInsertionCostsCalculator { - InsertionData checkRouteConstraints(JobInsertionContext insertionContext, ConstraintManager constraintManager) { + /** + * Check if route constraints are fulfilled + */ + protected InsertionData checkRouteConstraints(JobInsertionContext insertionContext, ConstraintManager constraintManager) { for (HardRouteConstraint hardRouteConstraint : constraintManager.getHardRouteConstraints()) { if (!hardRouteConstraint.fulfilled(insertionContext)) { InsertionData emptyInsertionData = new InsertionData.NoInsertionFound(); @@ -46,7 +36,10 @@ InsertionData checkRouteConstraints(JobInsertionContext insertionContext, Constr return null; } - ConstraintsStatus fulfilled(JobInsertionContext iFacts, TourActivity prevAct, TourActivity newAct, TourActivity nextAct, double prevActDepTime, Collection failedActivityConstraints, ConstraintManager constraintManager) { + /** + * Check if activity constraints are fulfilled + */ + protected ConstraintsStatus fulfilled(JobInsertionContext iFacts, TourActivity prevAct, TourActivity newAct, TourActivity nextAct, double prevActDepTime, Collection failedActivityConstraints, ConstraintManager constraintManager) { if (!constraintManager.hasHardActivityConstraints()) return ConstraintsStatus.FULFILLED; ConstraintsStatus notFulfilled = null; List failed = new ArrayList<>(); @@ -94,4 +87,53 @@ ConstraintsStatus fulfilled(JobInsertionContext iFacts, TourActivity prevAct, To return ConstraintsStatus.FULFILLED; } -} + /** + * Creates a Start activity for a vehicle at a given departure time + */ + protected Start createStartActivity(Vehicle vehicle, double departureTime) { + Start start = new Start(vehicle.getStartLocation(), vehicle.getEarliestDeparture(), vehicle.getLatestArrival()); + start.setEndTime(departureTime); + return start; + } + + /** + * Creates an End activity for a vehicle + */ + protected End createEndActivity(Vehicle vehicle) { + return new End(vehicle.getEndLocation(), 0.0, vehicle.getLatestArrival()); + } + + /** + * Creates a NoInsertionFound result with failed constraint information + */ + protected InsertionData createNoInsertionFoundResult(Collection failedConstraints) { + InsertionData emptyInsertionData = new InsertionData.NoInsertionFound(); + for (HardConstraint failed : failedConstraints) { + emptyInsertionData.addFailedConstrainName(failed.getClass().getSimpleName()); + } + return emptyInsertionData; + } + + /** + * Adds events to insertion data for a job that requires two activities (like Shipment) + */ + protected void addActivitiesAndVehicleSwitch(InsertionData insertionData, VehicleRoute route, + Vehicle vehicle, TourActivity firstActivity, int firstActivityIndex, + TourActivity secondActivity, int secondActivityIndex, + double departureTime) { + // Order matters here - we need to insert second activity before first to maintain indices + insertionData.getEvents().add(new InsertActivity(route, vehicle, secondActivity, secondActivityIndex)); + insertionData.getEvents().add(new InsertActivity(route, vehicle, firstActivity, firstActivityIndex)); + insertionData.getEvents().add(new SwitchVehicle(route, vehicle, departureTime)); + } + + /** + * Adds events to insertion data for a job that requires a single activity (like Service) + */ + protected void addActivityAndVehicleSwitch(InsertionData insertionData, VehicleRoute route, + Vehicle vehicle, TourActivity activity, int activityIndex, + double departureTime) { + insertionData.getEvents().add(new InsertActivity(route, vehicle, activity, activityIndex)); + insertionData.getEvents().add(new SwitchVehicle(route, vehicle, departureTime)); + } +} \ No newline at end of file diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/InsertionData.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/InsertionData.java index fd78b3e9e..579063f4a 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/InsertionData.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/InsertionData.java @@ -54,7 +54,7 @@ public static InsertionData createEmptyInsertionData() { return noInsertion; } - static int NO_INDEX = -1; + public static int NO_INDEX = -1; private final double insertionCost; diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/JobCalculatorSwitcher.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/JobCalculatorSelector.java similarity index 89% rename from jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/JobCalculatorSwitcher.java rename to jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/JobCalculatorSelector.java index da8c7a9e6..8c65eb136 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/JobCalculatorSwitcher.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/JobCalculatorSelector.java @@ -26,9 +26,9 @@ import java.util.Map; -class JobCalculatorSwitcher implements JobInsertionCostsCalculator { +class JobCalculatorSelector implements JobInsertionCostsCalculator { - private Map, JobInsertionCostsCalculator> calcMap = new HashMap, JobInsertionCostsCalculator>(); + private final Map, JobInsertionCostsCalculator> calcMap = new HashMap, JobInsertionCostsCalculator>(); void put(Class jobClass, JobInsertionCostsCalculator jic) { calcMap.put(jobClass, jic); diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/JobInsertionCostsCalculatorBuilder.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/JobInsertionCostsCalculatorBuilder.java index fa3d07586..e75979397 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/JobInsertionCostsCalculatorBuilder.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/JobInsertionCostsCalculatorBuilder.java @@ -316,16 +316,16 @@ public List createActivities(Job job) { JobInsertionCostsCalculator serviceInsertion = serviceCalculatorFactory.create(vrp, actInsertionCalc, activityFactory, constraintManager); JobInsertionCostsCalculator breakInsertion = breakCalculatorFactory.create(vrp, actInsertionCalc, activityFactory, constraintManager); - JobCalculatorSwitcher switcher = new JobCalculatorSwitcher(); - switcher.put(Shipment.class, shipmentInsertion); - switcher.put(Service.class, serviceInsertion); - switcher.put(Pickup.class, serviceInsertion); - switcher.put(Delivery.class, serviceInsertion); - switcher.put(EnRoutePickup.class, serviceInsertion); - switcher.put(EnRouteDelivery.class, serviceInsertion); - switcher.put(Break.class, breakInsertion); - - CalculatorPlusListeners calculatorPlusListeners = new CalculatorPlusListeners(switcher); + JobCalculatorSelector jobCalculatorSelector = new JobCalculatorSelector(); + jobCalculatorSelector.put(Shipment.class, shipmentInsertion); + jobCalculatorSelector.put(Service.class, serviceInsertion); + jobCalculatorSelector.put(Pickup.class, serviceInsertion); + jobCalculatorSelector.put(Delivery.class, serviceInsertion); + jobCalculatorSelector.put(EnRoutePickup.class, serviceInsertion); + jobCalculatorSelector.put(EnRouteDelivery.class, serviceInsertion); + jobCalculatorSelector.put(Break.class, breakInsertion); + + CalculatorPlusListeners calculatorPlusListeners = new CalculatorPlusListeners(jobCalculatorSelector); if (configLocal != null) { calculatorPlusListeners.insertionListener.add(configLocal); } diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculator.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculator.java index d6f9b7eaa..af8da2407 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculator.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculator.java @@ -115,10 +115,9 @@ public InsertionData getInsertionData(final VehicleRoute currentRoute, final Job TimeWindow bestPickupTimeWindow = null; TimeWindow bestDeliveryTimeWindow = null; - Start start = new Start(newVehicle.getStartLocation(), newVehicle.getEarliestDeparture(), newVehicle.getLatestArrival()); - start.setEndTime(newVehicleDepartureTime); + Start start = createStartActivity(newVehicle, newVehicleDepartureTime); - End end = new End(newVehicle.getEndLocation(), 0.0, newVehicle.getLatestArrival()); + End end = createEndActivity(newVehicle); ActivityContext pickupContext = new ActivityContext(); @@ -244,11 +243,7 @@ else if (pickupShipmentConstraintStatus.equals(ConstraintsStatus.FULFILLED)) { } if (pickupInsertionIndex == InsertionData.NO_INDEX) { LOGGER.trace("Position cost: {}, feasible: {}", -1, false); - InsertionData emptyInsertionData = new InsertionData.NoInsertionFound(); - for (HardConstraint failed : failedActivityConstraints) { - emptyInsertionData.addFailedConstrainName(failed.getClass().getSimpleName()); - } - return emptyInsertionData; + return createNoInsertionFoundResult(failedActivityConstraints); } InsertionData insertionData = new InsertionData(bestCost, pickupInsertionIndex, deliveryInsertionIndex, newVehicle, newDriver); pickupShipment.setTheoreticalEarliestOperationStartTime(bestPickupTimeWindow.getStart()); @@ -256,9 +251,7 @@ else if (pickupShipmentConstraintStatus.equals(ConstraintsStatus.FULFILLED)) { deliverShipment.setTheoreticalEarliestOperationStartTime(bestDeliveryTimeWindow.getStart()); deliverShipment.setTheoreticalLatestOperationStartTime(bestDeliveryTimeWindow.getEnd()); insertionData.setVehicleDepartureTime(newVehicleDepartureTime); - insertionData.getEvents().add(new InsertActivity(currentRoute, newVehicle, deliverShipment, deliveryInsertionIndex)); - insertionData.getEvents().add(new InsertActivity(currentRoute, newVehicle, pickupShipment, pickupInsertionIndex)); - insertionData.getEvents().add(new SwitchVehicle(currentRoute, newVehicle, newVehicleDepartureTime)); + addActivitiesAndVehicleSwitch(insertionData, currentRoute, newVehicle, pickupShipment, pickupInsertionIndex, deliverShipment, deliveryInsertionIndex, newVehicleDepartureTime); return insertionData; } diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/recreate/ServiceInsertionAndLoadConstraintsTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/recreate/ServiceInsertionAndLoadConstraintsTest.java index ea208f0be..ffd740273 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/recreate/ServiceInsertionAndLoadConstraintsTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/recreate/ServiceInsertionAndLoadConstraintsTest.java @@ -134,7 +134,7 @@ public List createActivities(Job job) { ConstraintManager constraintManager = new ConstraintManager(vrp, stateManager); constraintManager.addLoadConstraint(); stateManager.informInsertionStarts(Arrays.asList(route), null); - JobCalculatorSwitcher switcher = new JobCalculatorSwitcher(); + JobCalculatorSelector switcher = new JobCalculatorSelector(); ServiceInsertionCalculator serviceInsertionCalc = new ServiceInsertionCalculator(routingCosts, activityCosts, activityInsertionCostsCalculator, constraintManager, activityFactory); ShipmentInsertionCalculator insertionCalculator = new ShipmentInsertionCalculator(routingCosts, activityCosts, activityInsertionCostsCalculator, constraintManager, activityFactory); switcher.put(Pickup.class, serviceInsertionCalc); diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculatorFlexTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculatorFlexTest.java index 12fdde35e..b3504026c 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculatorFlexTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculatorFlexTest.java @@ -311,7 +311,7 @@ void whenInsertingServiceWhileNoCapIsAvailable_itMustReturnNoInsertionData() { List activities = new ArrayList(); activities.add(new PickupService(service)); when(activityFactory.createActivities(service)).thenReturn(activities); - JobCalculatorSwitcher switcher = new JobCalculatorSwitcher(); + JobCalculatorSelector switcher = new JobCalculatorSelector(); ServiceInsertionCalculator serviceInsertionCalc = new ServiceInsertionCalculator(routingCosts, activityCosts, activityInsertionCostsCalculator, constraintManager, activityFactory); ShipmentInsertionCalculatorFlex insertionCalculator = new ShipmentInsertionCalculatorFlex(routingCosts, activityCosts, activityInsertionCostsCalculator, constraintManager); insertionCalculator.setJobActivityFactory(activityFactory); diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculatorTest.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculatorTest.java index 9995fea54..9a43f1914 100644 --- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculatorTest.java +++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculatorTest.java @@ -276,7 +276,7 @@ void whenInsertingServiceWhileNoCapIsAvailable_itMustReturnNoInsertionData() { List activities = new ArrayList(); activities.add(new PickupService(service)); when(activityFactory.createActivities(service)).thenReturn(activities); - JobCalculatorSwitcher switcher = new JobCalculatorSwitcher(); + JobCalculatorSelector switcher = new JobCalculatorSelector(); ServiceInsertionCalculator serviceInsertionCalc = new ServiceInsertionCalculator(routingCosts, activityCosts, activityInsertionCostsCalculator, constraintManager, activityFactory); ShipmentInsertionCalculator insertionCalculator = new ShipmentInsertionCalculator(routingCosts, activityCosts, activityInsertionCostsCalculator, constraintManager, activityFactory); switcher.put(Pickup.class, serviceInsertionCalc); From 7b4731d4c67348bb7b262ad1caf62c9d862085a1 Mon Sep 17 00:00:00 2001 From: oblonski Date: Thu, 22 May 2025 09:34:41 +0200 Subject: [PATCH 189/191] allow access to job calculator factories and rename switcher to selector --- .../graphhopper/jsprit/core/algorithm/box/Jsprit.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java index a81289eda..06d363a33 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java @@ -184,8 +184,9 @@ public static class Builder { private JobFilter jobFilter = null; - private ServiceInsertionCalculatorFactory serviceCalculatorFactory = null; - private ShipmentInsertionCalculatorFactory shipmentCalculatorFactory = null; + private JobInsertionCostsCalculatorFactory serviceCalculatorFactory = null; + + private JobInsertionCostsCalculatorFactory shipmentCalculatorFactory = null; public static Builder newInstance(VehicleRoutingProblem vrp) { @@ -421,9 +422,9 @@ public int createNumberToBeRemoved() { private final Map customStrategies = new HashMap<>(); - private final ServiceInsertionCalculatorFactory serviceCalculatorFactory; + private final JobInsertionCostsCalculatorFactory serviceCalculatorFactory; - private final ShipmentInsertionCalculatorFactory shipmentCalculatorFactory; + private final JobInsertionCostsCalculatorFactory shipmentCalculatorFactory; private VehicleFleetManager vehicleFleetManager; From a855cc5ec658acf8b3884fe697bfd0dcb6f32af7 Mon Sep 17 00:00:00 2001 From: oblonski Date: Thu, 22 May 2025 09:36:08 +0200 Subject: [PATCH 190/191] allow access to job calculator factories and rename switcher to selector --- .../com/graphhopper/jsprit/core/algorithm/box/Jsprit.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java index 06d363a33..c0de26937 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/box/Jsprit.java @@ -341,7 +341,7 @@ public Builder setJobFilter(JobFilter jobFilter) { /** * Set a custom service insertion calculator factory */ - public Builder setServiceInsertionCalculatorFactory(ServiceInsertionCalculatorFactory factory) { + public Builder setServiceInsertionCalculatorFactory(JobInsertionCostsCalculatorFactory factory) { this.serviceCalculatorFactory = factory; return this; } @@ -349,7 +349,7 @@ public Builder setServiceInsertionCalculatorFactory(ServiceInsertionCalculatorFa /** * Set a custom shipment insertion calculator factory */ - public Builder setShipmentInsertionCalculatorFactory(ShipmentInsertionCalculatorFactory factory) { + public Builder setShipmentInsertionCalculatorFactory(JobInsertionCostsCalculatorFactory factory) { this.shipmentCalculatorFactory = factory; return this; } From 90ca2e5a365c5b10168279f15da80cdb72090441 Mon Sep 17 00:00:00 2001 From: oblonski Date: Tue, 24 Jun 2025 00:08:35 +0200 Subject: [PATCH 191/191] fix removal bug in open deliveries --- .../jsprit/core/algorithm/state/UpdateMaxTimeInVehicle.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/UpdateMaxTimeInVehicle.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/UpdateMaxTimeInVehicle.java index 94abbd0cb..f6b875eaa 100644 --- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/UpdateMaxTimeInVehicle.java +++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/state/UpdateMaxTimeInVehicle.java @@ -204,8 +204,7 @@ public void finish(List activities, Job ignore) { for (TourActivity act : acts) { Job job = ((TourActivity.JobActivity) act).getJob(); if (act instanceof ServiceActivity || act instanceof PickupActivity) { - String jobId = job.getId(); - openDeliveries.remove(jobId); + openDeliveries.remove(job); double minSlackTime = minSlackTime(openDeliveries); double latestStart = actStart(act, v) + minSlackTime; stateManager.putActivityState(act, v, minSlackId, latestStart);