diff --git a/.gitignore b/.gitignore
index 82606be8..ad4df13a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,4 +11,5 @@
# Eclipse
.project
-.classpath
\ No newline at end of file
+.classpath
+/.settings/
diff --git a/.travis.yml b/.travis.yml
index 40e6f9fc..26e49a8f 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,23 +1,66 @@
language: java
-jdk:
- - openjdk7
- - oraclejdk7
- - oraclejdk8
+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
+ - jdk: oraclejdk9
+ env: JVM=latest
+ sudo: required
+ dist: trusty
+ group: edge
+ allow_failures:
+ - jdk: oraclejdk9
-deploy:
- provider: script
- script: "cp .travis.settings.xml $HOME/.m2/settings.xml && mvn deploy"
- skip_cleanup: true
- on:
- tags: true
+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
-# do not install anything instead return true via unix command true
install: true
-script: mvn clean test
+
+script:
+ - mvn clean test verify -B
+ - mvn clean package
+
notifications:
email:
- github@graphhopper.com
-# enable container-based stack
-sudo: false
+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
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 6a23c154..ddc7df8e 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
@@ -109,7 +109,7 @@ public class Skills {
* @return true if skill is included, false otherwise
*/
public boolean containsSkill(String skill) {
- return skills.contains(skill.toLowerCase());
+ return skills.contains(skill.trim().toLowerCase());// trim to be consistent with addSkill()
}
@Override
diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/cost/AbstractForwardVehicleRoutingTransportCosts.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/cost/AbstractForwardVehicleRoutingTransportCosts.java
index ac9f9379..c35cb119 100644
--- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/cost/AbstractForwardVehicleRoutingTransportCosts.java
+++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/cost/AbstractForwardVehicleRoutingTransportCosts.java
@@ -22,6 +22,9 @@ import com.graphhopper.jsprit.core.problem.driver.Driver;
import com.graphhopper.jsprit.core.problem.vehicle.Vehicle;
public abstract class AbstractForwardVehicleRoutingTransportCosts implements VehicleRoutingTransportCosts {
+
+ @Override
+ public abstract double getDistance(Location from, Location to, double departureTime, Vehicle vehicle);
@Override
public abstract double getTransportTime(Location from, Location to, double departureTime, Driver driver, Vehicle vehicle);
diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/cost/VehicleRoutingTransportCosts.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/cost/VehicleRoutingTransportCosts.java
index e449f5c1..4b5814c4 100644
--- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/cost/VehicleRoutingTransportCosts.java
+++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/cost/VehicleRoutingTransportCosts.java
@@ -27,6 +27,6 @@ package com.graphhopper.jsprit.core.problem.cost;
* @author schroeder
*/
-public interface VehicleRoutingTransportCosts extends TransportTime, TransportCost {
+public interface VehicleRoutingTransportCosts extends TransportTime, TransportCost, TransportDistance {
}
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 ab54929e..af4e6b85 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
@@ -17,8 +17,6 @@
*/
package com.graphhopper.jsprit.core.problem.job;
-import java.util.Collection;
-
import com.graphhopper.jsprit.core.problem.AbstractJob;
import com.graphhopper.jsprit.core.problem.Capacity;
import com.graphhopper.jsprit.core.problem.Location;
@@ -28,6 +26,8 @@ import com.graphhopper.jsprit.core.problem.solution.route.activity.TimeWindows;
import com.graphhopper.jsprit.core.problem.solution.route.activity.TimeWindowsImpl;
import com.graphhopper.jsprit.core.util.Coordinate;
+import java.util.Collection;
+
/**
* Service implementation of a job.
*
@@ -72,8 +72,6 @@ public class Service extends AbstractJob {
protected double serviceTime;
- protected TimeWindow timeWindow = TimeWindow.newInstance(0.0, Double.MAX_VALUE);
-
protected Capacity.Builder capacityBuilder = Capacity.Builder.newInstance();
protected Capacity capacity;
@@ -93,10 +91,12 @@ public class Service extends AbstractJob {
private int priority = 2;
protected Object userData;
- protected double maxTimeInVehicle = Double.MAX_VALUE;Builder(String id){
+ protected double maxTimeInVehicle = Double.MAX_VALUE;
+
+ Builder(String id){
this.id = id;
timeWindows = new TimeWindowsImpl();
- timeWindows.add(timeWindow);
+ timeWindows.add(TimeWindow.newInstance(0.0, Double.MAX_VALUE));
}
/**
@@ -174,7 +174,6 @@ public class Service extends AbstractJob {
public Builder setTimeWindow(TimeWindow tw){
if(tw == null) throw new IllegalArgumentException("time-window arg must not be null");
- this.timeWindow = tw;
this.timeWindows = new TimeWindowsImpl();
timeWindows.add(tw);
return this;
@@ -194,6 +193,11 @@ public class Service extends AbstractJob {
return addTimeWindow(TimeWindow.newInstance(earliest, latest));
}
+ public Builder addAllTimeWindows(Collection timeWindows) {
+ for (TimeWindow tw : timeWindows) addTimeWindow(tw);
+ return this;
+ }
+
/**
* Builds the service.
*
@@ -227,7 +231,7 @@ public class Service extends AbstractJob {
public Builder addAllSizeDimensions(Capacity size){
for(int i=0;i getTimeWindows(){
- return timeWindowManager.getTimeWindows();
+ return timeWindows.getTimeWindows();
}
@Override
@@ -327,7 +329,7 @@ public class Service extends AbstractJob {
*
*/
public TimeWindow getTimeWindow() {
- return timeWindowManager.getTimeWindows().iterator().next();
+ return timeWindows.getTimeWindows().iterator().next();
}
/**
@@ -344,10 +346,11 @@ public class Service extends AbstractJob {
*/
@Override
public String toString() {
- return "[id=" + id + "][name=" + name + "][type=" + type + "][location=" + location + "][capacity=" + size + "][serviceTime=" + serviceTime + "][timeWindow=" + timeWindow + "]";
+ return "[id=" + id + "][name=" + name + "][type=" + type + "][location=" + location
+ + "][capacity=" + size + "][serviceTime=" + serviceTime + "][timeWindows="
+ + timeWindows + "]";
}
-
@Override
public int hashCode() {
final int prime = 31;
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 22c551cd..a3eeaaf6 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
@@ -17,8 +17,6 @@
*/
package com.graphhopper.jsprit.core.problem.job;
-import java.util.Collection;
-
import com.graphhopper.jsprit.core.problem.AbstractJob;
import com.graphhopper.jsprit.core.problem.Capacity;
import com.graphhopper.jsprit.core.problem.Location;
@@ -26,6 +24,8 @@ import com.graphhopper.jsprit.core.problem.Skills;
import com.graphhopper.jsprit.core.problem.solution.route.activity.TimeWindow;
import com.graphhopper.jsprit.core.problem.solution.route.activity.TimeWindowsImpl;
+import java.util.Collection;
+
/**
* Shipment is an implementation of Job and consists of a pickup and a delivery of something.
@@ -61,10 +61,6 @@ public class Shipment extends AbstractJob {
private double deliveryServiceTime = 0.0;
- private TimeWindow deliveryTimeWindow = TimeWindow.newInstance(0.0, Double.MAX_VALUE);
-
- private TimeWindow pickupTimeWindow = TimeWindow.newInstance(0.0, Double.MAX_VALUE);
-
private Capacity.Builder capacityBuilder = Capacity.Builder.newInstance();
private Capacity capacity;
@@ -107,9 +103,9 @@ public class Shipment extends AbstractJob {
if (id == null) throw new IllegalArgumentException("id must not be null");
this.id = id;
pickupTimeWindows = new TimeWindowsImpl();
- pickupTimeWindows.add(pickupTimeWindow);
+ pickupTimeWindows.add(TimeWindow.newInstance(0.0, Double.MAX_VALUE));
deliveryTimeWindows = new TimeWindowsImpl();
- deliveryTimeWindows.add(deliveryTimeWindow);
+ deliveryTimeWindows.add(TimeWindow.newInstance(0.0, Double.MAX_VALUE));
}
/**
@@ -169,7 +165,6 @@ public class Shipment extends AbstractJob {
*/
public Builder setPickupTimeWindow(TimeWindow timeWindow) {
if (timeWindow == null) throw new IllegalArgumentException("delivery time-window must not be null");
- this.pickupTimeWindow = timeWindow;
this.pickupTimeWindows = new TimeWindowsImpl();
this.pickupTimeWindows.add(timeWindow);
return this;
@@ -215,7 +210,6 @@ public class Shipment extends AbstractJob {
*/
public Builder setDeliveryTimeWindow(TimeWindow timeWindow) {
if (timeWindow == null) throw new IllegalArgumentException("delivery time-window must not be null");
- this.deliveryTimeWindow = timeWindow;
this.deliveryTimeWindows = new TimeWindowsImpl();
this.deliveryTimeWindows.add(timeWindow);
return this;
@@ -235,6 +229,13 @@ public class Shipment extends AbstractJob {
return this;
}
+ public Builder addAllSizeDimensions(Capacity size) {
+ for (int i = 0; i < size.getNuOfDimensions(); i++) {
+ addSizeDimension(i, size.get(i));
+ }
+ return this;
+ }
+
/**
* Builds the shipment.
@@ -257,6 +258,13 @@ public class Shipment extends AbstractJob {
return this;
}
+ public Builder addAllRequiredSkills(Skills skills) {
+ for (String s : skills.values()) {
+ addRequiredSkill(s);
+ }
+ return this;
+ }
+
public Builder setName(String name) {
this.name = name;
return this;
@@ -277,6 +285,11 @@ public class Shipment extends AbstractJob {
return this;
}
+ public Builder addAllDeliveryTimeWindows(Collection timeWindow) {
+ for (TimeWindow tw : timeWindow) addDeliveryTimeWindow(tw);
+ return this;
+ }
+
public Builder addPickupTimeWindow(TimeWindow timeWindow) {
if(timeWindow == null) throw new IllegalArgumentException("time-window arg must not be null");
if(!pickupTimeWindowAdded){
@@ -291,6 +304,11 @@ public class Shipment extends AbstractJob {
return addPickupTimeWindow(TimeWindow.newInstance(earliest, latest));
}
+ public Builder addAllPickupTimeWindows(Collection timeWindow) {
+ for (TimeWindow tw : timeWindow) addPickupTimeWindow(tw);
+ return this;
+ }
+
/**
* Set priority to shipment. Only 1 (high) to 10 (low) are allowed.
*
@@ -325,10 +343,6 @@ public class Shipment extends AbstractJob {
private final double deliveryServiceTime;
- private final TimeWindow deliveryTimeWindow;
-
- private final TimeWindow pickupTimeWindow;
-
private final Capacity capacity;
private final Skills skills;
@@ -351,9 +365,7 @@ public class Shipment extends AbstractJob {
setUserData(builder.userData);
this.id = builder.id;
this.pickupServiceTime = builder.pickupServiceTime;
- this.pickupTimeWindow = builder.pickupTimeWindow;
this.deliveryServiceTime = builder.deliveryServiceTime;
- this.deliveryTimeWindow = builder.deliveryTimeWindow;
this.capacity = builder.capacity;
this.skills = builder.skills;
this.name = builder.name;
@@ -424,6 +436,21 @@ public class Shipment extends AbstractJob {
return pickupTimeWindows.getTimeWindows();
}
+
+ /**
+ * Returns a string with the shipment's attributes.
+ *
+ *
String is built as follows: [attr1=val1][attr2=val2]...
+ */
+ @Override
+ public String toString() {
+ return "[id=" + id + "][name=" + name + "][pickupLocation=" + pickupLocation_
+ + "][deliveryLocation=" + deliveryLocation_ + "][capacity=" + capacity
+ + "][pickupServiceTime=" + pickupServiceTime + "][deliveryServiceTime="
+ + deliveryServiceTime + "][pickupTimeWindows=" + pickupTimeWindows
+ + "][deliveryTimeWindows=" + deliveryTimeWindows + "]";
+ }
+
@Override
public int hashCode() {
diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TimeWindowsImpl.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TimeWindowsImpl.java
index 25e5a578..84b8f37c 100644
--- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TimeWindowsImpl.java
+++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/solution/route/activity/TimeWindowsImpl.java
@@ -48,4 +48,12 @@ public class TimeWindowsImpl implements TimeWindows {
return Collections.unmodifiableCollection(timeWindows);
}
+ @Override
+ public String toString() {
+ StringBuffer sb = new StringBuffer(timeWindows.size() * 60);
+ for (TimeWindow tw : timeWindows) {
+ sb.append("[timeWindow=").append(tw).append("]");
+ }
+ return sb.toString();
+ }
}
diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/Coordinate.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/Coordinate.java
index 53c20147..6c1c26c8 100644
--- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/Coordinate.java
+++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/Coordinate.java
@@ -23,9 +23,9 @@ public class Coordinate {
return new Coordinate(x, y);
}
- private double x;
+ private final double x;
- private double y;
+ private final double y;
public Coordinate(double x, double y) {
super();
diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/CrowFlyCosts.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/CrowFlyCosts.java
index 6d75ca7c..5ed4b217 100644
--- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/CrowFlyCosts.java
+++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/CrowFlyCosts.java
@@ -22,7 +22,6 @@ package com.graphhopper.jsprit.core.util;
import com.graphhopper.jsprit.core.problem.Location;
import com.graphhopper.jsprit.core.problem.cost.AbstractForwardVehicleRoutingTransportCosts;
-import com.graphhopper.jsprit.core.problem.cost.TransportDistance;
import com.graphhopper.jsprit.core.problem.driver.Driver;
import com.graphhopper.jsprit.core.problem.vehicle.Vehicle;
@@ -30,7 +29,7 @@ import com.graphhopper.jsprit.core.problem.vehicle.Vehicle;
/**
* @author stefan schroeder
*/
-public class CrowFlyCosts extends AbstractForwardVehicleRoutingTransportCosts implements TransportDistance {
+public class CrowFlyCosts extends AbstractForwardVehicleRoutingTransportCosts {
public int speed = 1;
diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/EuclideanCosts.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/EuclideanCosts.java
index d8f981e7..265ac70e 100644
--- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/EuclideanCosts.java
+++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/EuclideanCosts.java
@@ -22,7 +22,6 @@ package com.graphhopper.jsprit.core.util;
import com.graphhopper.jsprit.core.problem.Location;
import com.graphhopper.jsprit.core.problem.cost.AbstractForwardVehicleRoutingTransportCosts;
-import com.graphhopper.jsprit.core.problem.cost.TransportDistance;
import com.graphhopper.jsprit.core.problem.driver.Driver;
import com.graphhopper.jsprit.core.problem.vehicle.Vehicle;
@@ -30,7 +29,7 @@ import com.graphhopper.jsprit.core.problem.vehicle.Vehicle;
/**
* @author stefan schroeder
*/
-public class EuclideanCosts extends AbstractForwardVehicleRoutingTransportCosts implements TransportDistance {
+public class EuclideanCosts extends AbstractForwardVehicleRoutingTransportCosts {
public int speed = 1;
@@ -59,14 +58,7 @@ public class EuclideanCosts extends AbstractForwardVehicleRoutingTransportCosts
}
private double calculateDistance(Location fromLocation, Location toLocation) {
- Coordinate from = null;
- Coordinate to = null;
- if (fromLocation.getCoordinate() != null & toLocation.getCoordinate() != null) {
- from = fromLocation.getCoordinate();
- to = toLocation.getCoordinate();
- }
- if (from == null || to == null) throw new NullPointerException();
- return calculateDistance(from, to);
+ return calculateDistance(fromLocation.getCoordinate(), toLocation.getCoordinate());
}
private double calculateDistance(Coordinate from, Coordinate to) {
diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/FastVehicleRoutingTransportCostsMatrix.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/FastVehicleRoutingTransportCostsMatrix.java
index 28a0422c..abbf27c6 100644
--- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/FastVehicleRoutingTransportCostsMatrix.java
+++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/FastVehicleRoutingTransportCostsMatrix.java
@@ -19,7 +19,6 @@ package com.graphhopper.jsprit.core.util;
import com.graphhopper.jsprit.core.problem.Location;
import com.graphhopper.jsprit.core.problem.cost.AbstractForwardVehicleRoutingTransportCosts;
-import com.graphhopper.jsprit.core.problem.cost.TransportDistance;
import com.graphhopper.jsprit.core.problem.driver.Driver;
import com.graphhopper.jsprit.core.problem.vehicle.Vehicle;
import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl;
@@ -32,7 +31,7 @@ import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl;
*
* @author schroeder
*/
-public class FastVehicleRoutingTransportCostsMatrix extends AbstractForwardVehicleRoutingTransportCosts implements TransportDistance {
+public class FastVehicleRoutingTransportCostsMatrix extends AbstractForwardVehicleRoutingTransportCosts {
/**
* Builder that builds the matrix.
diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/GreatCircleCosts.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/GreatCircleCosts.java
index 7d26d18a..0ecbc62d 100644
--- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/GreatCircleCosts.java
+++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/GreatCircleCosts.java
@@ -20,7 +20,6 @@ package com.graphhopper.jsprit.core.util;
import com.graphhopper.jsprit.core.problem.Location;
import com.graphhopper.jsprit.core.problem.cost.AbstractForwardVehicleRoutingTransportCosts;
-import com.graphhopper.jsprit.core.problem.cost.TransportDistance;
import com.graphhopper.jsprit.core.problem.driver.Driver;
import com.graphhopper.jsprit.core.problem.vehicle.Vehicle;
@@ -28,7 +27,7 @@ import com.graphhopper.jsprit.core.problem.vehicle.Vehicle;
* @author stefan schroeder
*/
-public class GreatCircleCosts extends AbstractForwardVehicleRoutingTransportCosts implements TransportDistance {
+public class GreatCircleCosts extends AbstractForwardVehicleRoutingTransportCosts {
private double speed = 1.;
diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/ManhattanCosts.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/ManhattanCosts.java
index bbb50b18..971821f8 100644
--- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/ManhattanCosts.java
+++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/ManhattanCosts.java
@@ -20,7 +20,6 @@ package com.graphhopper.jsprit.core.util;
import com.graphhopper.jsprit.core.problem.Location;
import com.graphhopper.jsprit.core.problem.cost.AbstractForwardVehicleRoutingTransportCosts;
-import com.graphhopper.jsprit.core.problem.cost.TransportDistance;
import com.graphhopper.jsprit.core.problem.driver.Driver;
import com.graphhopper.jsprit.core.problem.vehicle.Vehicle;
@@ -28,7 +27,7 @@ import com.graphhopper.jsprit.core.problem.vehicle.Vehicle;
* @author stefan schroeder
*/
-public class ManhattanCosts extends AbstractForwardVehicleRoutingTransportCosts implements TransportDistance {
+public class ManhattanCosts extends AbstractForwardVehicleRoutingTransportCosts {
public double speed = 1;
diff --git a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/VehicleRoutingTransportCostsMatrix.java b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/VehicleRoutingTransportCostsMatrix.java
index e63188ae..5052b2be 100644
--- a/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/VehicleRoutingTransportCostsMatrix.java
+++ b/jsprit-core/src/main/java/com/graphhopper/jsprit/core/util/VehicleRoutingTransportCostsMatrix.java
@@ -40,6 +40,7 @@ import java.util.Map;
* @author schroeder
*/
public class VehicleRoutingTransportCostsMatrix extends AbstractForwardVehicleRoutingTransportCosts {
+
static class RelationKey {
static RelationKey newKey(String from, String to) {
@@ -261,4 +262,9 @@ public class VehicleRoutingTransportCostsMatrix extends AbstractForwardVehicleRo
return costParams.perDistanceUnit * getDistance(from.getId(), to.getId()) + costParams.perTransportTimeUnit * getTime(from.getId(), to.getId());
}
+ @Override
+ public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
+ return getDistance(from.getId(), to.getId());
+ }
+
}
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 050fbf16..343cba62 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
@@ -21,7 +21,6 @@ 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.cost.TransportDistance;
import com.graphhopper.jsprit.core.problem.job.Job;
import com.graphhopper.jsprit.core.problem.job.Service;
import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution;
@@ -78,12 +77,7 @@ public class CVRPwithMatrix_IT {
final VehicleRoutingProblem vrp = createVrpWithLocationIndecesAndMatrix(vrp_, false);
VehicleRoutingAlgorithm vra = Jsprit.Builder.newInstance(vrp).setProperty(Jsprit.Parameter.FAST_REGRET,"true").buildAlgorithm();
Collection solutions = vra.searchSolutions();
- SolutionAnalyser sa = new SolutionAnalyser(vrp, Solutions.bestOf(solutions), new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser sa = new SolutionAnalyser(vrp, Solutions.bestOf(solutions), vrp.getTransportCosts());
}
diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/CapacityConstraint_IT.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/CapacityConstraint_IT.java
index c80b8ea0..58c994bb 100644
--- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/CapacityConstraint_IT.java
+++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/CapacityConstraint_IT.java
@@ -22,11 +22,9 @@ import com.graphhopper.jsprit.core.analysis.SolutionAnalyser;
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.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.VehicleImpl;
import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl;
import com.graphhopper.jsprit.core.util.ManhattanCosts;
@@ -91,12 +89,7 @@ public class CapacityConstraint_IT {
vra.setMaxIterations(2000);
VehicleRoutingProblemSolution solution = Solutions.bestOf(vra.searchSolutions());
- SolutionAnalyser sa = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return new ManhattanCosts().getDistance(from,to, 0d, null);
- }
- });
+ SolutionAnalyser sa = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
for(VehicleRoute r : solution.getRoutes()){
Capacity loadAtBeginning = sa.getLoadAtBeginning(r);
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 aac174a7..3232ca4e 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
@@ -25,7 +25,6 @@ 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.constraint.ConstraintManager;
-import com.graphhopper.jsprit.core.problem.cost.TransportDistance;
import com.graphhopper.jsprit.core.problem.cost.VehicleRoutingActivityCosts;
import com.graphhopper.jsprit.core.problem.driver.Driver;
import com.graphhopper.jsprit.core.problem.job.Service;
@@ -82,12 +81,7 @@ public class VariableDepartureAndWaitingTime_IT {
.setObjectiveFunction(new SolutionCostCalculator() {
@Override
public double getCosts(VehicleRoutingProblemSolution solution) {
- SolutionAnalyser sa = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser sa = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
return sa.getWaitingTime() + sa.getDistance();
}
})
diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/recreate/TestCalculatesServiceInsertion.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/recreate/TestCalculatesServiceInsertion.java
index e6a7815a..6345e700 100644
--- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/recreate/TestCalculatesServiceInsertion.java
+++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/recreate/TestCalculatesServiceInsertion.java
@@ -96,6 +96,11 @@ public class TestCalculatesServiceInsertion {
};
costs = new AbstractForwardVehicleRoutingTransportCosts() {
+ @Override
+ public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
+ return ManhattanDistanceCalculator.calculateDistance(locations.getCoord(from.getId()), locations.getCoord(to.getId()));
+ }
+
@Override
public double getTransportTime(Location from, Location to, double departureTime, Driver driver, Vehicle vehicle) {
return ManhattanDistanceCalculator.calculateDistance(locations.getCoord(from.getId()), locations.getCoord(to.getId()));
@@ -231,6 +236,11 @@ public class TestCalculatesServiceInsertion {
AbstractForwardVehicleRoutingTransportCosts routingCosts = new AbstractForwardVehicleRoutingTransportCosts() {
+ @Override
+ public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
+ return EuclideanDistanceCalculator.calculateDistance(coords.get(from.getId()), coords.get(to.getId()));
+ }
+
@Override
public double getTransportTime(Location from, Location to, double departureTime, Driver driver, Vehicle vehicle) {
return getTransportCost(from, to, departureTime, driver, vehicle);
diff --git a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/recreate/TestCalculatesServiceInsertionOnRouteLevel.java b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/recreate/TestCalculatesServiceInsertionOnRouteLevel.java
index 23f41f20..44ff6f86 100644
--- a/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/recreate/TestCalculatesServiceInsertionOnRouteLevel.java
+++ b/jsprit-core/src/test/java/com/graphhopper/jsprit/core/algorithm/recreate/TestCalculatesServiceInsertionOnRouteLevel.java
@@ -83,6 +83,11 @@ public class TestCalculatesServiceInsertionOnRouteLevel {
costs = new AbstractForwardVehicleRoutingTransportCosts() {
+ @Override
+ public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
+ return 0;
+ }
+
VehicleRoutingTransportCosts routingCosts = CostFactory.createManhattanCosts();
@Override
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/TestJobDistanceAvgCosts.java
index 42f4e822..e83cc8bd 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/TestJobDistanceAvgCosts.java
@@ -30,6 +30,11 @@ public class TestJobDistanceAvgCosts {
public static void main(String[] args) {
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) {
@@ -65,6 +70,11 @@ public class TestJobDistanceAvgCosts {
// (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) {
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 95d3431a..3ce9bcfa 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 @@ 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;
-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;
@@ -218,12 +217,7 @@ public class SolutionAnalyserTest {
* @param type
*/
private void testTransportCosts(TransportCostsTestType type) {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location fromLocationId, Location toLocationId, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(fromLocationId, toLocationId, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
// this should be the path taken by route 1 including depots
Coordinate[] route1Path = new Coordinate[]{
@@ -299,35 +293,20 @@ public class SolutionAnalyserTest {
@Test
public void constructionShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
Assert.assertTrue(true);
}
@Test
public void loadAtBeginningOfRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Assert.assertEquals(0, analyser.getLoadAtBeginning(route).get(0));
}
@Test
public void loadAtBeginningOfRoute2ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
Iterator iterator = solution.getRoutes().iterator();
iterator.next();
VehicleRoute route = iterator.next();
@@ -337,24 +316,14 @@ public class SolutionAnalyserTest {
@Test
public void loadAtEnd_OfRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Assert.assertEquals(5, analyser.getLoadAtEnd(route).get(0));
}
@Test
public void loadAtEnd_OfRoute2ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
Iterator iterator = solution.getRoutes().iterator();
iterator.next();
VehicleRoute route = iterator.next();
@@ -364,180 +333,105 @@ public class SolutionAnalyserTest {
@Test
public void loadAfterActivity_ofStartActOfRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Assert.assertEquals(0, analyser.getLoadRightAfterActivity(route.getStart(), route).get(0));
}
@Test
public void loadAfterActivity_ofAct1ofRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ 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));
}
@Test
public void loadAfterActivity_ofAct2ofRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ 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));
}
@Test
public void loadAfterActivity_ofAct3ofRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ 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));
}
@Test
public void loadAfterActivity_ofAct4ofRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ 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));
}
@Test
public void loadAfterActivity_ofEndActOfRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Assert.assertEquals(5, analyser.getLoadRightAfterActivity(route.getEnd(), route).get(0));
}
@Test
public void loadBeforeActivity_ofStartActOfRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Assert.assertEquals(0, analyser.getLoadJustBeforeActivity(route.getStart(), route).get(0));
}
@Test
public void loadBeforeActivity_ofAct1ofRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ 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));
}
@Test
public void loadBeforeActivity_ofAct2ofRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ 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));
}
@Test
public void loadBeforeActivity_ofAct3ofRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ 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));
}
@Test
public void loadBeforeActivity_ofAct4ofRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ 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));
}
@Test
public void loadBeforeActivity_ofEndActOfRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Assert.assertEquals(5, analyser.getLoadJustBeforeActivity(route.getEnd(), route).get(0));
}
@Test
public void maxLoad_OfRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Assert.assertEquals(12, analyser.getMaxLoad(route).get(0));
}
@Test
public void pickupCount_OfRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Assert.assertEquals(3, analyser.getNumberOfPickups(route), 0.01);
}
@Test
public void pickupCountAtBeginning_OfRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Assert.assertEquals(0, analyser.getNumberOfPickupsAtBeginning(route), 0.01);
}
@@ -545,12 +439,7 @@ public class SolutionAnalyserTest {
@Test
public void pickupCount_OfRoute1OfAnotherSolutionShouldWork() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Assert.assertEquals(4, analyser.getNumberOfPickups(route), 0.01);
}
@@ -558,82 +447,47 @@ public class SolutionAnalyserTest {
@Test
public void pickupCountAtBeginning_OfRoute1OfAnotherSolutionShouldWork() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Assert.assertEquals(2, analyser.getNumberOfPickupsAtBeginning(route), 0.01);
}
@Test
public void pickupCount_onSolutionShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
Assert.assertEquals(6, analyser.getNumberOfPickups(), 0.01);
}
@Test
public void pickupCountAtBeginning_onSolutionShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
Assert.assertEquals(0, analyser.getNumberOfPickupsAtBeginning(), 0.01);
}
@Test
public void pickupCount_onAnotherSolutionShouldWork() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
Assert.assertEquals(4, analyser.getNumberOfPickups(), 0.01);
}
@Test
public void pickupCountAtBeginning_onAnotherSolutionShouldWork() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
Assert.assertEquals(2, analyser.getNumberOfPickupsAtBeginning(), 0.01);
}
@Test
public void pickupLoad_OfRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Assert.assertEquals(15, analyser.getLoadPickedUp(route).get(0), 0.01);
}
@Test
public void pickupLoadAtBeginning_OfRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Assert.assertEquals(0, analyser.getLoadAtBeginning(route).get(0), 0.01);
}
@@ -641,12 +495,7 @@ public class SolutionAnalyserTest {
@Test
public void pickupLoad_OfRoute1OfAnotherShouldWork() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Assert.assertEquals(50, analyser.getLoadPickedUp(route).get(0), 0.01);
}
@@ -654,82 +503,47 @@ public class SolutionAnalyserTest {
@Test
public void pickupLoadAtBeginning_OfRoute1OfAnotherShouldWork() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Assert.assertEquals(40, analyser.getLoadAtBeginning(route).get(0), 0.01);
}
@Test
public void pickupLoad_onSolutionShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
Assert.assertEquals(30, analyser.getLoadPickedUp().get(0), 0.01);
}
@Test
public void pickupLoadAtBeginning_onSolutionShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
Assert.assertEquals(0, analyser.getLoadAtBeginning().get(0), 0.01);
}
@Test
public void pickupLoad_onAnotherSolutionShouldWork() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
Assert.assertEquals(50, analyser.getLoadPickedUp().get(0), 0.01);
}
@Test
public void pickupLoadAtBeginning_onAnotherSolutionShouldWork() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
Assert.assertEquals(40, analyser.getLoadAtBeginning().get(0), 0.01);
}
@Test
public void deliveryCount_OfRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Assert.assertEquals(1, analyser.getNumberOfDeliveries(route), 0.01);
}
@Test
public void deliveryCountAtEnd_OfRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Assert.assertEquals(2, analyser.getNumberOfDeliveriesAtEnd(route), 0.01);
}
@@ -737,12 +551,7 @@ public class SolutionAnalyserTest {
@Test
public void deliveryCount_OfRoute1OfAnotherSolutionShouldWork() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Assert.assertEquals(4, analyser.getNumberOfDeliveries(route), 0.01);
}
@@ -750,82 +559,47 @@ public class SolutionAnalyserTest {
@Test
public void deliveryCountAtEnd_OfRoute1OfAnotherSolutionShouldWork() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Assert.assertEquals(2, analyser.getNumberOfDeliveriesAtEnd(route), 0.01);
}
@Test
public void deliveryCount_onSolutionShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
Assert.assertEquals(2, analyser.getNumberOfDeliveries(), 0.01);
}
@Test
public void deliveryCountAtEnd_onSolutionShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
Assert.assertEquals(4, analyser.getNumberOfDeliveriesAtEnd(), 0.01);
}
@Test
public void deliveryCount_onAnotherSolutionShouldWork() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
Assert.assertEquals(4, analyser.getNumberOfDeliveries(), 0.01);
}
@Test
public void deliveryCountAtEnd_onAnotherSolutionShouldWork() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
Assert.assertEquals(2, analyser.getNumberOfDeliveriesAtEnd(), 0.01);
}
@Test
public void deliveryLoad_OfRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Assert.assertEquals(10, analyser.getLoadDelivered(route).get(0), 0.01);
}
@Test
public void deliveryLoadAtEnd_OfRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Assert.assertEquals(5, analyser.getLoadAtEnd(route).get(0), 0.01);
}
@@ -833,12 +607,7 @@ public class SolutionAnalyserTest {
@Test
public void deliveryLoad_OfRoute1OfAnotherSolutionShouldWork() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Assert.assertEquals(70, analyser.getLoadDelivered(route).get(0), 0.01);
}
@@ -846,47 +615,27 @@ public class SolutionAnalyserTest {
@Test
public void deliveryLoadAtEnd_OfRoute1OfAnotherSolutionShouldWork() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Assert.assertEquals(20, analyser.getLoadAtEnd(route).get(0), 0.01);
}
@Test
public void deliveryLoad_onSolutionShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
Assert.assertEquals(20, analyser.getLoadDelivered().get(0), 0.01);
}
@Test
public void deliveryLoadAtEnd_onSolutionShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
Assert.assertEquals(10, analyser.getLoadAtEnd().get(0), 0.01);
}
@Test
public void deliveryLoad_onAnotherSolutionShouldWork() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Assert.assertEquals(70, analyser.getLoadDelivered().get(0), 0.01);
}
@@ -894,215 +643,125 @@ public class SolutionAnalyserTest {
@Test
public void deliveryLoadAtEnd_onAnotherSolutionShouldWork() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
Assert.assertEquals(20, analyser.getLoadAtEnd().get(0), 0.01);
}
@Test
public void operationTime_OfRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Assert.assertEquals(46. + 40., analyser.getOperationTime(route), 0.01);
}
@Test
public void waitingTime_OfRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Assert.assertEquals(4., analyser.getWaitingTime(route), 0.01);
}
@Test
public void transportTime_OfRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Assert.assertEquals(42., analyser.getTransportTime(route), 0.01);
}
@Test
public void serviceTime_OfRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Assert.assertEquals(40., analyser.getServiceTime(route), 0.01);
}
@Test
public void distance_OfRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Assert.assertEquals(42., analyser.getDistance(route), 0.01);
}
@Test
public void waitingTime_atStartActOfRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Assert.assertEquals(0, analyser.getWaitingTimeAtActivity(route.getStart(), route), 0.01);
}
@Test
public void waitingTime_ofAct1ofRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ 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);
}
@Test
public void waitingTime_ofAct2ofRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ 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);
}
@Test
public void waitingTime_ofAct3ofRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ 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);
}
@Test
public void waitingTime_ofAct4ofRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ 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);
}
@Test
public void waitingTime_ofEndActOfRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Assert.assertEquals(0., analyser.getWaitingTimeAtActivity(route.getEnd(), route), 0.01);
}
@Test
public void distance_atStartActOfRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Assert.assertEquals(0, analyser.getDistanceAtActivity(route.getStart(), route), 0.01);
}
@Test
public void distance_ofAct1ofRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ 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);
}
@Test
public void distance_ofAct2ofRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ 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);
}
@Test
public void distance_ofAct3ofRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ 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);
}
@Test
public void distance_ofAct4ofRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ 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);
}
@Test
public void distance_ofEndActOfRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Assert.assertEquals(42., analyser.getDistanceAtActivity(route.getEnd(), route), 0.01);
}
@@ -1110,192 +769,112 @@ public class SolutionAnalyserTest {
@Test
public void lateArrivalTimes_atStartActOfRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Assert.assertEquals(0, analyser.getTimeWindowViolationAtActivity(route.getStart(), route), 0.01);
}
@Test
public void lateArrivalTimes_ofAct1ofRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ 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);
}
@Test
public void lateArrivalTimes_ofAct2ofRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ 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);
}
@Test
public void lateArrivalTimes_ofAct3ofRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ 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);
}
@Test
public void lateArrivalTimes_ofAct4ofRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ 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);
}
@Test
public void lateArrivalTimes_ofEndActOfRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Assert.assertEquals(0., analyser.getTimeWindowViolationAtActivity(route.getEnd(), route), 0.01);
}
@Test
public void lateArrTimes_OfRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Assert.assertEquals(0., analyser.getTimeWindowViolation(route), 0.01);
}
@Test
public void variableTransportCosts_OfRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Assert.assertEquals(84., analyser.getVariableTransportCosts(route), 0.01);
}
@Test
public void fixedCosts_OfRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Assert.assertEquals(100., analyser.getFixedCosts(route), 0.01);
}
@Test
public void transportCosts_atStartActOfRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Assert.assertEquals(0, analyser.getVariableTransportCostsAtActivity(route.getStart(), route), 0.01);
}
@Test
public void transportCosts_ofAct1ofRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ 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);
}
@Test
public void transportCosts_ofAct2ofRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ 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);
}
@Test
public void transportCosts_ofAct3ofRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ 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);
}
@Test
public void transportCosts_ofAct4ofRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ 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);
}
@Test
public void transportCosts_ofEndActOfRoute1ShouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ 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);
}
@Test
public void capacityViolationAtBeginning_shouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Capacity atBeginning = analyser.getCapacityViolationAtBeginning(route);
for (int i = 0; i < atBeginning.getNuOfDimensions(); i++) {
@@ -1305,12 +884,7 @@ public class SolutionAnalyserTest {
@Test
public void capacityViolationAtEnd_shouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Capacity atEnd = analyser.getCapacityViolationAtEnd(route);
for (int i = 0; i < atEnd.getNuOfDimensions(); i++) {
@@ -1322,12 +896,7 @@ public class SolutionAnalyserTest {
public void capacityViolationOnRoute_shouldWorkWhenViolated() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Capacity cap = analyser.getCapacityViolation(route);
assertEquals(50, cap.get(0));
@@ -1337,12 +906,7 @@ public class SolutionAnalyserTest {
public void capacityViolationAtEnd_shouldWorkWhenViolated() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Capacity atEnd = analyser.getCapacityViolationAtEnd(route);
assertEquals(5, atEnd.get(0));
@@ -1350,12 +914,7 @@ public class SolutionAnalyserTest {
@Test
public void capacityViolationAfterStart_shouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
TourActivity act = route.getStart();
Capacity cap = analyser.getCapacityViolationAfterActivity(act, route);
@@ -1369,12 +928,7 @@ public class SolutionAnalyserTest {
public void capacityViolationAtBeginning_shouldWorkWhenViolated() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Capacity cap = analyser.getCapacityViolationAtBeginning(route);
assertEquals(25, cap.get(0));
@@ -1385,12 +939,7 @@ public class SolutionAnalyserTest {
public void capacityViolationAfterStart_shouldWorkWhenViolated() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Capacity cap = analyser.getCapacityViolationAfterActivity(route.getStart(), route);
assertEquals(25, cap.get(0));
@@ -1400,12 +949,7 @@ public class SolutionAnalyserTest {
public void capacityViolationAfterAct1_shouldWorkWhenViolated() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Capacity cap = analyser.getCapacityViolationAfterActivity(route.getActivities().get(0), route);
assertEquals(35, cap.get(0));
@@ -1415,12 +959,7 @@ public class SolutionAnalyserTest {
public void capacityViolationAfterAct2_shouldWorkWhenViolated() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Capacity cap = analyser.getCapacityViolationAfterActivity(route.getActivities().get(1), route);
assertEquals(50, cap.get(0));
@@ -1430,12 +969,7 @@ public class SolutionAnalyserTest {
public void capacityViolationAfterAct3_shouldWorkWhenViolated() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Capacity cap = analyser.getCapacityViolationAfterActivity(route.getActivities().get(2), route);
assertEquals(35, cap.get(0));
@@ -1445,12 +979,7 @@ public class SolutionAnalyserTest {
public void capacityViolationAfterAct4_shouldWorkWhenViolated() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Capacity cap = analyser.getCapacityViolationAfterActivity(route.getActivities().get(3), route);
assertEquals(15, cap.get(0));
@@ -1460,12 +989,7 @@ public class SolutionAnalyserTest {
public void capacityViolationAfterAct5_shouldWorkWhenViolated() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Capacity cap = analyser.getCapacityViolationAfterActivity(route.getActivities().get(4), route);
assertEquals(0, cap.get(0));
@@ -1475,12 +999,7 @@ public class SolutionAnalyserTest {
public void capacityViolationAfterAct6_shouldWorkWhenViolated() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Capacity cap = analyser.getCapacityViolationAfterActivity(route.getActivities().get(5), route);
assertEquals(10, cap.get(0));
@@ -1490,12 +1009,7 @@ public class SolutionAnalyserTest {
public void capacityViolationAfterAct7_shouldWorkWhenViolated() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Capacity cap = analyser.getCapacityViolationAfterActivity(route.getActivities().get(6), route);
assertEquals(0, cap.get(0));
@@ -1505,12 +1019,7 @@ public class SolutionAnalyserTest {
public void capacityViolationAfterAct8_shouldWorkWhenViolated() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Capacity cap = analyser.getCapacityViolationAfterActivity(route.getActivities().get(7), route);
assertEquals(5, cap.get(0));
@@ -1520,12 +1029,7 @@ public class SolutionAnalyserTest {
public void capacityViolationAfterEnd_shouldWorkWhenViolated() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Capacity cap = analyser.getCapacityViolationAfterActivity(route.getEnd(), route);
assertEquals(5, cap.get(0));
@@ -1533,12 +1037,7 @@ public class SolutionAnalyserTest {
@Test
public void capacityViolationAfterAct1_shouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
TourActivity act = route.getActivities().get(0);
Capacity cap = analyser.getCapacityViolationAfterActivity(act, route);
@@ -1549,12 +1048,7 @@ public class SolutionAnalyserTest {
@Test
public void capacityViolationAfterAct2_shouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
TourActivity act = route.getActivities().get(1);
Capacity cap = analyser.getCapacityViolationAfterActivity(act, route);
@@ -1565,12 +1059,7 @@ public class SolutionAnalyserTest {
@Test
public void capacityViolationAfterAct3_shouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
TourActivity act = route.getActivities().get(2);
Capacity cap = analyser.getCapacityViolationAfterActivity(act, route);
@@ -1581,12 +1070,7 @@ public class SolutionAnalyserTest {
@Test
public void capacityViolationAfterAct4_shouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
TourActivity act = route.getActivities().get(3);
Capacity cap = analyser.getCapacityViolationAfterActivity(act, route);
@@ -1597,12 +1081,7 @@ public class SolutionAnalyserTest {
@Test
public void capacityViolationAfterEnd_shouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
TourActivity act = route.getEnd();
Capacity cap = analyser.getCapacityViolationAfterActivity(act, route);
@@ -1613,12 +1092,7 @@ public class SolutionAnalyserTest {
@Test
public void timeWindowViolation_shouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Double violation = analyser.getTimeWindowViolation(route);
assertEquals(0., violation, 0.01);
@@ -1628,12 +1102,7 @@ public class SolutionAnalyserTest {
public void timeWindowViolation_shouldWorkWhenViolated() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Double violation = analyser.getTimeWindowViolation(route);
assertEquals((2 + 26 + 57 + 77 + 90 + 114 + 144 + 20), violation, 0.01);
@@ -1643,12 +1112,7 @@ public class SolutionAnalyserTest {
public void timeWindowViolationAtStart_shouldWorkWhenViolated() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Double violation = analyser.getTimeWindowViolationAtActivity(route.getStart(), route);
assertEquals(0., violation, 0.01);
@@ -1658,12 +1122,7 @@ public class SolutionAnalyserTest {
public void timeWindowViolationAtAct1_shouldWorkWhenViolated() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Double violation = analyser.getTimeWindowViolationAtActivity(route.getActivities().get(0), route);
assertEquals(0., violation, 0.01);
@@ -1673,12 +1132,7 @@ public class SolutionAnalyserTest {
public void timeWindowViolationAtAct2_shouldWorkWhenViolated() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Double violation = analyser.getTimeWindowViolationAtActivity(route.getActivities().get(1), route);
assertEquals(2., violation, 0.01);
@@ -1688,12 +1142,7 @@ public class SolutionAnalyserTest {
public void timeWindowViolationAtAct3_shouldWorkWhenViolated() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Double violation = analyser.getTimeWindowViolationAtActivity(route.getActivities().get(2), route);
assertEquals(26., violation, 0.01);
@@ -1703,12 +1152,7 @@ public class SolutionAnalyserTest {
public void timeWindowViolationAtAct4_shouldWorkWhenViolated() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Double violation = analyser.getTimeWindowViolationAtActivity(route.getActivities().get(3), route);
assertEquals(57., violation, 0.01);
@@ -1718,12 +1162,7 @@ public class SolutionAnalyserTest {
public void timeWindowViolationAtAct5_shouldWorkWhenViolated() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Double violation = analyser.getTimeWindowViolationAtActivity(route.getActivities().get(4), route);
assertEquals(77., violation, 0.01);
@@ -1733,12 +1172,7 @@ public class SolutionAnalyserTest {
public void timeWindowViolationAtAct6_shouldWorkWhenViolated() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Double violation = analyser.getTimeWindowViolationAtActivity(route.getActivities().get(5), route);
assertEquals(90., violation, 0.01);
@@ -1748,12 +1182,7 @@ public class SolutionAnalyserTest {
public void timeWindowViolationAtAct7_shouldWorkWhenViolated() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Double violation = analyser.getTimeWindowViolationAtActivity(route.getActivities().get(6), route);
assertEquals(114., violation, 0.01);
@@ -1763,12 +1192,7 @@ public class SolutionAnalyserTest {
public void timeWindowViolationAtAct8_shouldWorkWhenViolated() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Double violation = analyser.getTimeWindowViolationAtActivity(route.getActivities().get(7), route);
assertEquals(144., violation, 0.01);
@@ -1778,12 +1202,7 @@ public class SolutionAnalyserTest {
public void timeWindowViolationAtEnd_shouldWorkWhenViolated() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Double violation = analyser.getTimeWindowViolationAtActivity(route.getEnd(), route);
assertEquals(20., violation, 0.01);
@@ -1792,12 +1211,7 @@ public class SolutionAnalyserTest {
@Test
public void backhaulViolation_shouldWorkWhenViolated() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Boolean violation = analyser.hasBackhaulConstraintViolation(route);
assertTrue(violation);
@@ -1806,12 +1220,7 @@ public class SolutionAnalyserTest {
@Test
public void backhaulViolationAtStart_shouldWork() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Boolean violation = analyser.hasBackhaulConstraintViolationAtActivity(route.getStart(), route);
assertFalse(violation);
@@ -1822,12 +1231,7 @@ public class SolutionAnalyserTest {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Boolean violation = analyser.hasBackhaulConstraintViolationAtActivity(route.getActivities().get(0), route);
assertFalse(violation);
@@ -1837,12 +1241,7 @@ public class SolutionAnalyserTest {
public void backhaulViolationAtAct2_shouldWork() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Boolean violation = analyser.hasBackhaulConstraintViolationAtActivity(route.getActivities().get(1), route);
assertFalse(violation);
@@ -1852,12 +1251,7 @@ public class SolutionAnalyserTest {
public void backhaulViolationAtAct3_shouldWork() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Boolean violation = analyser.hasBackhaulConstraintViolationAtActivity(route.getActivities().get(2), route);
assertFalse(violation);
@@ -1867,12 +1261,7 @@ public class SolutionAnalyserTest {
public void backhaulViolationAtAct4_shouldWork() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Boolean violation = analyser.hasBackhaulConstraintViolationAtActivity(route.getActivities().get(3), route);
assertTrue(violation);
@@ -1882,12 +1271,7 @@ public class SolutionAnalyserTest {
public void backhaulViolationAtAct5_shouldWork() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Boolean violation = analyser.hasBackhaulConstraintViolationAtActivity(route.getActivities().get(4), route);
assertTrue(violation);
@@ -1897,12 +1281,7 @@ public class SolutionAnalyserTest {
public void backhaulViolationAtAct6_shouldWork() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Boolean violation = analyser.hasBackhaulConstraintViolationAtActivity(route.getActivities().get(5), route);
assertFalse(violation);
@@ -1912,12 +1291,7 @@ public class SolutionAnalyserTest {
public void backhaulViolationAtAct7_shouldWork() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Boolean violation = analyser.hasBackhaulConstraintViolationAtActivity(route.getActivities().get(6), route);
assertFalse(violation);
@@ -1927,12 +1301,7 @@ public class SolutionAnalyserTest {
public void backhaulViolationAtAct8_shouldWork() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Boolean violation = analyser.hasBackhaulConstraintViolationAtActivity(route.getActivities().get(7), route);
assertFalse(violation);
@@ -1942,12 +1311,7 @@ public class SolutionAnalyserTest {
public void backhaulViolationAtEnd_shouldWork() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Boolean violation = analyser.hasBackhaulConstraintViolationAtActivity(route.getEnd(), route);
assertFalse(violation);
@@ -1957,12 +1321,7 @@ public class SolutionAnalyserTest {
public void shipmentViolationAtStart_shouldWork() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Boolean violation = analyser.hasShipmentConstraintViolationAtActivity(route.getStart(), route);
assertFalse(violation);
@@ -1972,12 +1331,7 @@ public class SolutionAnalyserTest {
public void shipmentViolationAtAct1_shouldWork() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Boolean violation = analyser.hasBackhaulConstraintViolationAtActivity(route.getActivities().get(0), route);
assertFalse(violation);
@@ -1987,12 +1341,7 @@ public class SolutionAnalyserTest {
public void shipmentViolationAtAct2_shouldWork() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Boolean violation = analyser.hasBackhaulConstraintViolationAtActivity(route.getActivities().get(1), route);
assertFalse(violation);
@@ -2002,12 +1351,7 @@ public class SolutionAnalyserTest {
public void shipmentViolationAtAct3_shouldWork() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Boolean violation = analyser.hasBackhaulConstraintViolationAtActivity(route.getActivities().get(2), route);
assertFalse(violation);
@@ -2017,12 +1361,7 @@ public class SolutionAnalyserTest {
public void shipmentViolationAtAct4_shouldWork() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Boolean violation = analyser.hasBackhaulConstraintViolationAtActivity(route.getActivities().get(3), route);
assertTrue(violation);
@@ -2032,12 +1371,7 @@ public class SolutionAnalyserTest {
public void shipmentViolationAtAct5_shouldWork() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Boolean violation = analyser.hasBackhaulConstraintViolationAtActivity(route.getActivities().get(4), route);
assertTrue(violation);
@@ -2047,12 +1381,7 @@ public class SolutionAnalyserTest {
public void shipmentViolationAtAct6_shouldWork() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Boolean violation = analyser.hasBackhaulConstraintViolationAtActivity(route.getActivities().get(5), route);
assertFalse(violation);
@@ -2062,12 +1391,7 @@ public class SolutionAnalyserTest {
public void shipmentViolationAtAct7_shouldWork() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Boolean violation = analyser.hasBackhaulConstraintViolationAtActivity(route.getActivities().get(6), route);
assertFalse(violation);
@@ -2077,12 +1401,7 @@ public class SolutionAnalyserTest {
public void shipmentViolationAtAct8_shouldWork() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Boolean violation = analyser.hasBackhaulConstraintViolationAtActivity(route.getActivities().get(7), route);
assertFalse(violation);
@@ -2092,12 +1411,7 @@ public class SolutionAnalyserTest {
public void shipmentViolationAtEnd_shouldWork() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Boolean violation = analyser.hasBackhaulConstraintViolationAtActivity(route.getEnd(), route);
assertFalse(violation);
@@ -2107,12 +1421,7 @@ public class SolutionAnalyserTest {
public void shipmentViolation_shouldWork() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Boolean violation = analyser.hasShipmentConstraintViolation(route);
assertFalse(violation);
@@ -2125,12 +1434,7 @@ public class SolutionAnalyserTest {
TourActivity deliverShipment = route.getActivities().get(2);
route.getTourActivities().removeActivity(deliverShipment);
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
Boolean violation = analyser.hasShipmentConstraintViolation(route);
assertTrue(violation);
@@ -2143,12 +1447,7 @@ public class SolutionAnalyserTest {
TourActivity deliverShipment = route.getActivities().get(2);
route.getTourActivities().removeActivity(deliverShipment);
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
Boolean violation = analyser.hasShipmentConstraintViolationAtActivity(route.getActivities().get(1), route);
assertTrue(violation);
@@ -2162,12 +1461,7 @@ public class SolutionAnalyserTest {
route.getTourActivities().removeActivity(deliverShipment);
assertFalse(route.getActivities().contains(deliverShipment));
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
Boolean violation = analyser.hasShipmentConstraintViolation(route);
assertTrue(violation);
@@ -2181,12 +1475,7 @@ public class SolutionAnalyserTest {
route.getTourActivities().removeActivity(pickupShipment);
assertFalse(route.getActivities().contains(pickupShipment));
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
Boolean violation = analyser.hasShipmentConstraintViolationAtActivity(route.getActivities().get(1), route);
assertTrue(violation);
@@ -2200,12 +1489,7 @@ public class SolutionAnalyserTest {
route.getTourActivities().removeActivity(pickupShipment);
assertFalse(route.getActivities().contains(pickupShipment));
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
Boolean violation = analyser.hasShipmentConstraintViolation(route);
assertTrue(violation);
@@ -2219,12 +1503,7 @@ public class SolutionAnalyserTest {
route.getTourActivities().removeActivity(pickupShipment);
assertFalse(route.getActivities().contains(pickupShipment));
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
Boolean violation = analyser.hasShipmentConstraintViolation();
assertTrue(violation);
@@ -2232,12 +1511,7 @@ public class SolutionAnalyserTest {
@Test
public void skillViolationOnRoute_shouldWorkWhenViolated() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Boolean violated = analyser.hasSkillConstraintViolation(route);
assertTrue(violated);
@@ -2245,12 +1519,7 @@ public class SolutionAnalyserTest {
@Test
public void skillViolationAtStart_shouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Boolean violated = analyser.hasSkillConstraintViolationAtActivity(route.getStart(), route);
assertFalse(violated);
@@ -2258,12 +1527,7 @@ public class SolutionAnalyserTest {
@Test
public void skillViolationAtAct1_shouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Boolean violated = analyser.hasSkillConstraintViolationAtActivity(route.getActivities().get(0), route);
assertFalse(violated);
@@ -2271,12 +1535,7 @@ public class SolutionAnalyserTest {
@Test
public void skillViolationAtAct2_shouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Boolean violated = analyser.hasSkillConstraintViolationAtActivity(route.getActivities().get(1), route);
assertTrue(violated);
@@ -2284,12 +1543,7 @@ public class SolutionAnalyserTest {
@Test
public void skillViolationAtAct3_shouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Boolean violated = analyser.hasSkillConstraintViolationAtActivity(route.getActivities().get(2), route);
assertTrue(violated);
@@ -2297,12 +1551,7 @@ public class SolutionAnalyserTest {
@Test
public void skillViolationAtAct4_shouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Boolean violated = analyser.hasSkillConstraintViolationAtActivity(route.getActivities().get(3), route);
assertFalse(violated);
@@ -2310,12 +1559,7 @@ public class SolutionAnalyserTest {
@Test
public void skillViolationAtEnd_shouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
VehicleRoute route = solution.getRoutes().iterator().next();
Boolean violated = analyser.hasSkillConstraintViolationAtActivity(route.getEnd(), route);
assertFalse(violated);
@@ -2324,12 +1568,7 @@ public class SolutionAnalyserTest {
@Test
public void skillViolationOnRoute_shouldWorkWhenNotViolated() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
Iterator iterator = solution.getRoutes().iterator();
iterator.next();
@@ -2340,24 +1579,14 @@ public class SolutionAnalyserTest {
@Test
public void skillViolationOnSolution_shouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
Boolean violated = analyser.hasSkillConstraintViolation();
assertTrue(violated);
}
@Test
public void backhaulViolationOnSolution_shouldWork() {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
Boolean violated = analyser.hasBackhaulConstraintViolation();
assertFalse(violated);
}
@@ -2365,12 +1594,7 @@ public class SolutionAnalyserTest {
@Test
public void backhaulViolationOnSolution_shouldWorkWhenViolated() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
Boolean violated = analyser.hasBackhaulConstraintViolation();
assertTrue(violated);
}
@@ -2378,12 +1602,7 @@ public class SolutionAnalyserTest {
@Test
public void shipmentViolationOnSolution_shouldWork() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
Boolean violated = analyser.hasShipmentConstraintViolation();
assertFalse(violated);
}
@@ -2391,15 +1610,9 @@ public class SolutionAnalyserTest {
@Test
public void skillViolationOnSolution_shouldWorkWhenNotViolated() {
buildAnotherScenarioWithOnlyOneVehicleAndWithoutAnyConstraintsBefore();
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
Boolean violated = analyser.hasSkillConstraintViolation();
assertFalse(violated);
}
-
}
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 4ad1eec7..7e4dbec2 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
@@ -280,6 +280,11 @@ public class VehicleRoutingProblemTest {
builder.setRoutingCost(new AbstractForwardVehicleRoutingTransportCosts() {
+ @Override
+ public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
+ return 0;
+ }
+
@Override
public double getTransportTime(Location from, Location to,
double departureTime, Driver driver, Vehicle vehicle) {
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 5ca26155..3dbfc8d5 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
@@ -21,9 +21,9 @@ 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;
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.Job;
import com.graphhopper.jsprit.core.problem.job.Pickup;
@@ -100,13 +100,8 @@ public class VehicleDependentTraveledDistanceTest {
traveledDistanceId = stateManager.createStateId("traveledDistance");
- com.graphhopper.jsprit.core.algorithm.state.VehicleDependentTraveledDistance traveledDistance =
- new com.graphhopper.jsprit.core.algorithm.state.VehicleDependentTraveledDistance(new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return new ManhattanCosts().getDistance(from, to, departureTime, vehicle);
- }
- }, 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());
@@ -123,12 +118,7 @@ public class VehicleDependentTraveledDistanceTest {
maxDistanceMap.put(vehicle, 5d);
MaxDistanceConstraint maxDistanceConstraint =
- new MaxDistanceConstraint(new StateManager(vrp), traveledDistanceId, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportTime(from, to, departureTime, null, vehicle);
- }
- }, maxDistanceMap);
+ 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),
@@ -144,12 +134,7 @@ vehicle2 (max distance): 180.0
@Test
public void insertNewInVehicleShouldFail() {
MaxDistanceConstraint maxDistanceConstraint =
- new MaxDistanceConstraint(stateManager, traveledDistanceId, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportTime(from, to, departureTime, null, vehicle);
- }
- }, maxDistanceMap);
+ 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));
@@ -164,12 +149,7 @@ vehicle2 (max distance): 180.0
public void insertNewInVehicle2ShouldBeCorrect() {
//current distance vehicle2: 160 allowed: 200
MaxDistanceConstraint maxDistanceConstraint =
- new MaxDistanceConstraint(stateManager, traveledDistanceId, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportTime(from, to, departureTime, null, vehicle);
- }
- }, maxDistanceMap);
+ 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
@@ -284,12 +264,7 @@ vehicle2 (max distance): 180.0
StateManager stateManager = new StateManager(vrp);
MaxDistanceConstraint maxDistanceConstraint =
- new MaxDistanceConstraint(stateManager, traveledDistanceId, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportTime(from, to, departureTime, null, vehicle);
- }
- }, maxDistanceMap);
+ 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),
@@ -331,12 +306,7 @@ vehicle2 (max distance): 180.0
StateManager stateManager = new StateManager(vrp);
MaxDistanceConstraint maxDistanceConstraint =
- new MaxDistanceConstraint(stateManager, traveledDistanceId, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportTime(from, to, departureTime, null, vehicle);
- }
- }, maxDistanceMap);
+ 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),
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 aee8a95d..7b975e9a 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
@@ -26,7 +26,6 @@ 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.MaxDistanceConstraint;
-import com.graphhopper.jsprit.core.problem.cost.TransportDistance;
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;
@@ -122,12 +121,7 @@ public class UnassignedJobReasonTrackerTest {
StateId maxDistance = stateManager.createStateId("max-distance");
Map distMap = new HashMap<>();
distMap.put(vehicle, 100d);
- MaxDistanceConstraint distanceConstraint = new MaxDistanceConstraint(stateManager, maxDistance, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, departureTime, null, vehicle);
- }
- }, distMap);
+ MaxDistanceConstraint distanceConstraint = new MaxDistanceConstraint(stateManager, maxDistance, vrp.getTransportCosts(), distMap);
constraintManager.addConstraint(distanceConstraint, ConstraintManager.Priority.CRITICAL);
VehicleRoutingAlgorithm vra = Jsprit.Builder.newInstance(vrp).setStateAndConstraintManager(stateManager, constraintManager)
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
index 72cd3426..4660597a 100644
--- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/BuildAlgorithmFromScratch.java
+++ b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/BuildAlgorithmFromScratch.java
@@ -34,16 +34,13 @@ import com.graphhopper.jsprit.core.algorithm.ruin.distance.AvgServiceAndShipment
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.Location;
import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem;
import com.graphhopper.jsprit.core.problem.constraint.ConstraintManager;
-import com.graphhopper.jsprit.core.problem.cost.TransportDistance;
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.Vehicle;
import com.graphhopper.jsprit.core.problem.vehicle.VehicleFleetManager;
import com.graphhopper.jsprit.core.reporting.SolutionPrinter;
import com.graphhopper.jsprit.core.util.Solutions;
@@ -207,12 +204,7 @@ public class BuildAlgorithmFromScratch {
@Override
public double getCosts(VehicleRoutingProblemSolution solution) {
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
- });
+ 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/MultipleTimeWindowExample2.java b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/MultipleTimeWindowExample2.java
index d29db613..7ea4d8d9 100644
--- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/MultipleTimeWindowExample2.java
+++ b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/MultipleTimeWindowExample2.java
@@ -23,10 +23,8 @@ 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.cost.TransportDistance;
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.VehicleImpl.Builder;
import com.graphhopper.jsprit.core.problem.vehicle.VehicleType;
@@ -136,12 +134,7 @@ public class MultipleTimeWindowExample2 {
*/
new Plotter(problem,bestSolution).setLabel(Plotter.Label.ID).plot("output/plot", "mtw");
- SolutionAnalyser a = new SolutionAnalyser(problem, bestSolution, new TransportDistance() {
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return problem.getTransportCosts().getTransportTime(from,to,0.,null,null);
- }
- });
+ SolutionAnalyser a = new SolutionAnalyser(problem, bestSolution, problem.getTransportCosts());
System.out.println("distance: " + a.getDistance());
System.out.println("ttime: " + a.getTransportTime());
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
index 6484fdfe..9b4dfedb 100644
--- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/PickupAndDeliveryExample.java
+++ b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/PickupAndDeliveryExample.java
@@ -24,11 +24,8 @@ 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.Location;
import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem;
-import com.graphhopper.jsprit.core.problem.cost.TransportDistance;
import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution;
-import com.graphhopper.jsprit.core.problem.vehicle.Vehicle;
import com.graphhopper.jsprit.core.reporting.SolutionPrinter;
import com.graphhopper.jsprit.io.problem.VrpXMLReader;
import com.graphhopper.jsprit.util.Examples;
@@ -100,14 +97,7 @@ public class PickupAndDeliveryExample {
plotter.plot("output/pd_solomon_r101_solution.png", "pd_r101");
//some stats
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
-
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
-
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
System.out.println("tp_distance: " + analyser.getDistance());
System.out.println("tp_time: " + analyser.getTransportTime());
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
index 130824e9..47494f1b 100644
--- a/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/VRPWithBackhaulsExample2.java
+++ b/jsprit-examples/src/main/java/com/graphhopper/jsprit/examples/VRPWithBackhaulsExample2.java
@@ -25,15 +25,12 @@ 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.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.cost.TransportDistance;
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.problem.vehicle.Vehicle;
import com.graphhopper.jsprit.core.reporting.SolutionPrinter;
import com.graphhopper.jsprit.io.problem.VrpXMLReader;
import com.graphhopper.jsprit.util.Examples;
@@ -125,14 +122,7 @@ public class VRPWithBackhaulsExample2 {
// plotter.setLabel(Plotter.Label.SIZE);
plotter.plot("output/vrpwbh_christophides_vrpnc1_solution.png", "vrpwbh_vrpnc1");
- SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, new TransportDistance() {
-
- @Override
- public double getDistance(Location from, Location to, double departureTime, Vehicle vehicle) {
- return vrp.getTransportCosts().getTransportCost(from, to, 0., null, null);
- }
-
- });
+ SolutionAnalyser analyser = new SolutionAnalyser(vrp, solution, vrp.getTransportCosts());
for (VehicleRoute route : solution.getRoutes()) {
System.out.println("------");
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
index 12dcbc39..fec93f9c 100644
--- 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
@@ -217,6 +217,10 @@ public class Figliozzi {
}
+ @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/pom.xml b/pom.xml
index 85dd0e22..9c8200e8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -202,6 +202,14 @@
+
+ selected-build
+
+ jsprit-core
+ jsprit-io
+ jsprit-analysis
+
+
release