From 1b3af07e455db59cb018913d9b8789cef98f0edc Mon Sep 17 00:00:00 2001 From: oblonski <4sschroeder@gmail.com> Date: Tue, 18 Feb 2014 09:49:24 +0100 Subject: [PATCH] modified activities to deal with multiple cap-dims --- .../route/activity/DeliverService.java | 6 ++ .../route/activity/DeliverShipment.java | 6 ++ .../problem/solution/route/activity/End.java | 7 ++ .../route/activity/PickupService.java | 7 ++ .../route/activity/PickupShipment.java | 10 ++ .../route/activity/ServiceActivity.java | 7 ++ .../solution/route/activity/Start.java | 7 ++ .../solution/route/activity/TourActivity.java | 97 ++++++++++++++++++- .../DefaultShipmentActivityFactoryTest.java | 5 + .../activity/DefaultTourActivityTest.java | 5 + .../route/activity/DeliverServiceTest.java | 5 + .../route/activity/DeliverShipmentTest.java | 5 + .../solution/route/activity/EndTest.java | 5 + .../route/activity/PickupServiceTest.java | 5 + .../route/activity/PickupShipmentTest.java | 25 +++++ ...eActTest.java => ServiceActivityTest.java} | 2 +- .../solution/route/activity/StartTest.java | 5 + .../route/activity/TimeWindowTest.java | 5 + 18 files changed, 211 insertions(+), 3 deletions(-) create mode 100644 jsprit-core/src/test/java/jsprit/core/problem/solution/route/activity/DefaultShipmentActivityFactoryTest.java create mode 100644 jsprit-core/src/test/java/jsprit/core/problem/solution/route/activity/DefaultTourActivityTest.java create mode 100644 jsprit-core/src/test/java/jsprit/core/problem/solution/route/activity/DeliverServiceTest.java create mode 100644 jsprit-core/src/test/java/jsprit/core/problem/solution/route/activity/DeliverShipmentTest.java create mode 100644 jsprit-core/src/test/java/jsprit/core/problem/solution/route/activity/EndTest.java create mode 100644 jsprit-core/src/test/java/jsprit/core/problem/solution/route/activity/PickupServiceTest.java create mode 100644 jsprit-core/src/test/java/jsprit/core/problem/solution/route/activity/PickupShipmentTest.java rename jsprit-core/src/test/java/jsprit/core/problem/solution/route/activity/{ServiceActTest.java => ServiceActivityTest.java} (98%) create mode 100644 jsprit-core/src/test/java/jsprit/core/problem/solution/route/activity/StartTest.java create mode 100644 jsprit-core/src/test/java/jsprit/core/problem/solution/route/activity/TimeWindowTest.java diff --git a/jsprit-core/src/main/java/jsprit/core/problem/solution/route/activity/DeliverService.java b/jsprit-core/src/main/java/jsprit/core/problem/solution/route/activity/DeliverService.java index 67fad82f..430929a9 100644 --- a/jsprit-core/src/main/java/jsprit/core/problem/solution/route/activity/DeliverService.java +++ b/jsprit-core/src/main/java/jsprit/core/problem/solution/route/activity/DeliverService.java @@ -1,5 +1,6 @@ package jsprit.core.problem.solution.route.activity; +import jsprit.core.problem.Capacity; import jsprit.core.problem.job.Delivery; public final class DeliverService implements DeliveryActivity{ @@ -85,4 +86,9 @@ public final class DeliverService implements DeliveryActivity{ public String toString() { return "[act="+getName()+"][capDemand="+getCapacityDemand()+"][loc="+getLocationId()+"]"; } + + @Override + public Capacity getCapacity() { + return null; + } } diff --git a/jsprit-core/src/main/java/jsprit/core/problem/solution/route/activity/DeliverShipment.java b/jsprit-core/src/main/java/jsprit/core/problem/solution/route/activity/DeliverShipment.java index 41e44095..1f13df88 100644 --- a/jsprit-core/src/main/java/jsprit/core/problem/solution/route/activity/DeliverShipment.java +++ b/jsprit-core/src/main/java/jsprit/core/problem/solution/route/activity/DeliverShipment.java @@ -1,5 +1,6 @@ package jsprit.core.problem.solution.route.activity; +import jsprit.core.problem.Capacity; import jsprit.core.problem.job.Job; import jsprit.core.problem.job.Shipment; @@ -84,4 +85,9 @@ public final class DeliverShipment implements DeliveryActivity{ public String toString() { return "[act="+getName()+"][loc="+getLocationId()+"]"; } + + @Override + public Capacity getCapacity() { + return null; + } } diff --git a/jsprit-core/src/main/java/jsprit/core/problem/solution/route/activity/End.java b/jsprit-core/src/main/java/jsprit/core/problem/solution/route/activity/End.java index 69079d2f..561594fd 100644 --- a/jsprit-core/src/main/java/jsprit/core/problem/solution/route/activity/End.java +++ b/jsprit-core/src/main/java/jsprit/core/problem/solution/route/activity/End.java @@ -16,6 +16,7 @@ ******************************************************************************/ package jsprit.core.problem.solution.route.activity; +import jsprit.core.problem.Capacity; import jsprit.core.util.Coordinate; public final class End implements TourActivity { @@ -147,4 +148,10 @@ public final class End implements TourActivity { return new End(this); } + @Override + public Capacity getCapacity() { + // TODO Auto-generated method stub + return null; + } + } diff --git a/jsprit-core/src/main/java/jsprit/core/problem/solution/route/activity/PickupService.java b/jsprit-core/src/main/java/jsprit/core/problem/solution/route/activity/PickupService.java index 856e9087..5d768c91 100644 --- a/jsprit-core/src/main/java/jsprit/core/problem/solution/route/activity/PickupService.java +++ b/jsprit-core/src/main/java/jsprit/core/problem/solution/route/activity/PickupService.java @@ -1,5 +1,6 @@ package jsprit.core.problem.solution.route.activity; +import jsprit.core.problem.Capacity; import jsprit.core.problem.job.Pickup; import jsprit.core.problem.job.Service; @@ -91,4 +92,10 @@ public final class PickupService implements PickupActivity{ return "[act="+getName()+"][capDemand="+getCapacityDemand()+"][loc="+getLocationId()+"]"; } + @Override + public Capacity getCapacity() { + // TODO Auto-generated method stub + return null; + } + } diff --git a/jsprit-core/src/main/java/jsprit/core/problem/solution/route/activity/PickupShipment.java b/jsprit-core/src/main/java/jsprit/core/problem/solution/route/activity/PickupShipment.java index eb0451d1..21abbf98 100644 --- a/jsprit-core/src/main/java/jsprit/core/problem/solution/route/activity/PickupShipment.java +++ b/jsprit-core/src/main/java/jsprit/core/problem/solution/route/activity/PickupShipment.java @@ -1,12 +1,15 @@ package jsprit.core.problem.solution.route.activity; +import jsprit.core.problem.Capacity; import jsprit.core.problem.job.Job; import jsprit.core.problem.job.Shipment; public final class PickupShipment implements PickupActivity{ private Shipment shipment; + private double endTime; + private double arrTime; public PickupShipment(Shipment shipment) { @@ -85,4 +88,11 @@ public final class PickupShipment implements PickupActivity{ return "[act="+getName()+"][loc="+getLocationId()+"]"; } + @Override + public Capacity getCapacity() { + return shipment.getCapacity(); + } + + + } diff --git a/jsprit-core/src/main/java/jsprit/core/problem/solution/route/activity/ServiceActivity.java b/jsprit-core/src/main/java/jsprit/core/problem/solution/route/activity/ServiceActivity.java index 97ddd134..98ec22ed 100644 --- a/jsprit-core/src/main/java/jsprit/core/problem/solution/route/activity/ServiceActivity.java +++ b/jsprit-core/src/main/java/jsprit/core/problem/solution/route/activity/ServiceActivity.java @@ -16,6 +16,7 @@ ******************************************************************************/ package jsprit.core.problem.solution.route.activity; +import jsprit.core.problem.Capacity; import jsprit.core.problem.job.Service; import jsprit.core.problem.solution.route.activity.TourActivity.JobActivity; @@ -166,6 +167,12 @@ public class ServiceActivity implements JobActivity{ public TourActivity duplicate() { return new ServiceActivity(this); } + + @Override + public Capacity getCapacity() { + // TODO Auto-generated method stub + return null; + } diff --git a/jsprit-core/src/main/java/jsprit/core/problem/solution/route/activity/Start.java b/jsprit-core/src/main/java/jsprit/core/problem/solution/route/activity/Start.java index 5ae08844..f074047a 100644 --- a/jsprit-core/src/main/java/jsprit/core/problem/solution/route/activity/Start.java +++ b/jsprit-core/src/main/java/jsprit/core/problem/solution/route/activity/Start.java @@ -16,6 +16,7 @@ ******************************************************************************/ package jsprit.core.problem.solution.route.activity; +import jsprit.core.problem.Capacity; import jsprit.core.util.Coordinate; public final class Start implements TourActivity { @@ -153,6 +154,12 @@ public final class Start implements TourActivity { return new Start(this); } + @Override + public Capacity getCapacity() { + // TODO Auto-generated method stub + return null; + } + } diff --git a/jsprit-core/src/main/java/jsprit/core/problem/solution/route/activity/TourActivity.java b/jsprit-core/src/main/java/jsprit/core/problem/solution/route/activity/TourActivity.java index 56b28972..52df4a6c 100644 --- a/jsprit-core/src/main/java/jsprit/core/problem/solution/route/activity/TourActivity.java +++ b/jsprit-core/src/main/java/jsprit/core/problem/solution/route/activity/TourActivity.java @@ -16,37 +16,130 @@ ******************************************************************************/ package jsprit.core.problem.solution.route.activity; +import jsprit.core.problem.Capacity; import jsprit.core.problem.job.Job; - +/** + * Basic interface for tour-activities. + * + *
A tour activity is the basic element of a tour, which is consequently a sequence of tour-activities. + * + * @author schroeder + * + */ public interface TourActivity { + /** + * Basic interface of job-activies. + * + *
A job activity is related to a {@link Job}.
+ *
+ * @author schroeder
+ *
+ */
public interface JobActivity extends TourActivity {
+ /**
+ * Returns the job that is involved with this activity.
+ *
+ * @return job
+ */
public Job getJob();
}
+ /**
+ * Returns the capacity-demand of that activity, in terms of what needs to be loaded or unloaded at
+ * this activity.
+ *
+ * @return int
+ * @deprecated use getCapacity() instead
+ */
+ @Deprecated
public int getCapacityDemand();
+ /**
+ * Returns the name of this activity.
+ *
+ * @return name
+ */
public abstract String getName();
+ /**
+ * Returns the activity's locationId.
+ *
+ * @return locationId
+ */
public abstract String getLocationId();
+ /**
+ * Returns the theoretical earliest operation start time, which is the time that is just allowed
+ * (not earlier) to start this activity, that is for example service.getTimeWindow().getStart().
+ *
+ * @return earliest start time
+ */
public abstract double getTheoreticalEarliestOperationStartTime();
+ /**
+ * Returns the theoretical latest operation start time, which is the time that is just allowed
+ * (not later) to start this activity, that is for example service.getTimeWindow().getEnd().
+ *
+ *
+ * @return latest start time
+ */
public abstract double getTheoreticalLatestOperationStartTime();
+ /**
+ * Returns the operation-time this activity takes.
+ *
+ *
Note that this is not necessarily the duration of this activity, but the
+ * service time a pickup/delivery actually takes, that is for example service.getServiceTime().
+ *
+ * @return operation time
+ */
public abstract double getOperationTime();
+ /**
+ * Returns the arrival-time of this activity.
+ *
+ * @return arrival time
+ */
public abstract double getArrTime();
+ /**
+ * Returns end-time of this activity.
+ *
+ * @return end time
+ */
public abstract double getEndTime();
+ /**
+ * Sets the arrival time of that activity.
+ *
+ * @param arrTime
+ */
public abstract void setArrTime(double arrTime);
+ /**
+ * Sets the end-time of this activity.
+ *
+ * @param endTime
+ */
public abstract void setEndTime(double endTime);
- public TourActivity duplicate();
+ /**
+ * Returns the capacity-demand of that activity, in terms of what needs to be loaded or unloaded at
+ * this activity.
+ *
+ * @return capacity
+ */
+ public abstract Capacity getCapacity();
+
+ /**
+ * Makes a deep copy of this activity.
+ *
+ * @return copied activity
+ */
+ public abstract TourActivity duplicate();
}
diff --git a/jsprit-core/src/test/java/jsprit/core/problem/solution/route/activity/DefaultShipmentActivityFactoryTest.java b/jsprit-core/src/test/java/jsprit/core/problem/solution/route/activity/DefaultShipmentActivityFactoryTest.java
new file mode 100644
index 00000000..bfb5c566
--- /dev/null
+++ b/jsprit-core/src/test/java/jsprit/core/problem/solution/route/activity/DefaultShipmentActivityFactoryTest.java
@@ -0,0 +1,5 @@
+package jsprit.core.problem.solution.route.activity;
+
+public class DefaultShipmentActivityFactoryTest {
+
+}
diff --git a/jsprit-core/src/test/java/jsprit/core/problem/solution/route/activity/DefaultTourActivityTest.java b/jsprit-core/src/test/java/jsprit/core/problem/solution/route/activity/DefaultTourActivityTest.java
new file mode 100644
index 00000000..de1e1eb1
--- /dev/null
+++ b/jsprit-core/src/test/java/jsprit/core/problem/solution/route/activity/DefaultTourActivityTest.java
@@ -0,0 +1,5 @@
+package jsprit.core.problem.solution.route.activity;
+
+public class DefaultTourActivityTest {
+
+}
diff --git a/jsprit-core/src/test/java/jsprit/core/problem/solution/route/activity/DeliverServiceTest.java b/jsprit-core/src/test/java/jsprit/core/problem/solution/route/activity/DeliverServiceTest.java
new file mode 100644
index 00000000..3bae8ee7
--- /dev/null
+++ b/jsprit-core/src/test/java/jsprit/core/problem/solution/route/activity/DeliverServiceTest.java
@@ -0,0 +1,5 @@
+package jsprit.core.problem.solution.route.activity;
+
+public class DeliverServiceTest {
+
+}
diff --git a/jsprit-core/src/test/java/jsprit/core/problem/solution/route/activity/DeliverShipmentTest.java b/jsprit-core/src/test/java/jsprit/core/problem/solution/route/activity/DeliverShipmentTest.java
new file mode 100644
index 00000000..f0fe9aa3
--- /dev/null
+++ b/jsprit-core/src/test/java/jsprit/core/problem/solution/route/activity/DeliverShipmentTest.java
@@ -0,0 +1,5 @@
+package jsprit.core.problem.solution.route.activity;
+
+public class DeliverShipmentTest {
+
+}
diff --git a/jsprit-core/src/test/java/jsprit/core/problem/solution/route/activity/EndTest.java b/jsprit-core/src/test/java/jsprit/core/problem/solution/route/activity/EndTest.java
new file mode 100644
index 00000000..90ad1982
--- /dev/null
+++ b/jsprit-core/src/test/java/jsprit/core/problem/solution/route/activity/EndTest.java
@@ -0,0 +1,5 @@
+package jsprit.core.problem.solution.route.activity;
+
+public class EndTest {
+
+}
diff --git a/jsprit-core/src/test/java/jsprit/core/problem/solution/route/activity/PickupServiceTest.java b/jsprit-core/src/test/java/jsprit/core/problem/solution/route/activity/PickupServiceTest.java
new file mode 100644
index 00000000..868354ce
--- /dev/null
+++ b/jsprit-core/src/test/java/jsprit/core/problem/solution/route/activity/PickupServiceTest.java
@@ -0,0 +1,5 @@
+package jsprit.core.problem.solution.route.activity;
+
+public class PickupServiceTest {
+
+}
diff --git a/jsprit-core/src/test/java/jsprit/core/problem/solution/route/activity/PickupShipmentTest.java b/jsprit-core/src/test/java/jsprit/core/problem/solution/route/activity/PickupShipmentTest.java
new file mode 100644
index 00000000..1f60cc6b
--- /dev/null
+++ b/jsprit-core/src/test/java/jsprit/core/problem/solution/route/activity/PickupShipmentTest.java
@@ -0,0 +1,25 @@
+package jsprit.core.problem.solution.route.activity;
+
+import static org.junit.Assert.*;
+import jsprit.core.problem.job.Shipment;
+
+import org.junit.Test;
+
+public class PickupShipmentTest {
+
+ @Test
+ public void whenGettingCapacity_itShouldReturnItCorrectly(){
+ Shipment shipment = Shipment.Builder.newInstance("s").setPickupLocation("pickLoc").setDeliveryLocation("delLoc")
+ .addCapacityDimension(0, 10).addCapacityDimension(1, 100).build();
+ PickupShipment pick = new PickupShipment(shipment);
+ assertEquals(10,pick.getCapacity().get(0));
+ assertEquals(100,pick.getCapacity().get(1));
+ }
+
+ @Test
+ public void whenCopyingAct_itShouldCopyItCorrectly(){
+
+ }
+
+
+}
diff --git a/jsprit-core/src/test/java/jsprit/core/problem/solution/route/activity/ServiceActTest.java b/jsprit-core/src/test/java/jsprit/core/problem/solution/route/activity/ServiceActivityTest.java
similarity index 98%
rename from jsprit-core/src/test/java/jsprit/core/problem/solution/route/activity/ServiceActTest.java
rename to jsprit-core/src/test/java/jsprit/core/problem/solution/route/activity/ServiceActivityTest.java
index 80801fc1..b9ca0599 100644
--- a/jsprit-core/src/test/java/jsprit/core/problem/solution/route/activity/ServiceActTest.java
+++ b/jsprit-core/src/test/java/jsprit/core/problem/solution/route/activity/ServiceActivityTest.java
@@ -24,7 +24,7 @@ import jsprit.core.problem.solution.route.activity.ServiceActivity;
import org.junit.Test;
-public class ServiceActTest {
+public class ServiceActivityTest {
@Test
public void whenTwoDeliveriesHaveTheSameUnderlyingJob_theyAreEqual(){
diff --git a/jsprit-core/src/test/java/jsprit/core/problem/solution/route/activity/StartTest.java b/jsprit-core/src/test/java/jsprit/core/problem/solution/route/activity/StartTest.java
new file mode 100644
index 00000000..de784fef
--- /dev/null
+++ b/jsprit-core/src/test/java/jsprit/core/problem/solution/route/activity/StartTest.java
@@ -0,0 +1,5 @@
+package jsprit.core.problem.solution.route.activity;
+
+public class StartTest {
+
+}
diff --git a/jsprit-core/src/test/java/jsprit/core/problem/solution/route/activity/TimeWindowTest.java b/jsprit-core/src/test/java/jsprit/core/problem/solution/route/activity/TimeWindowTest.java
new file mode 100644
index 00000000..0fbbe624
--- /dev/null
+++ b/jsprit-core/src/test/java/jsprit/core/problem/solution/route/activity/TimeWindowTest.java
@@ -0,0 +1,5 @@
+package jsprit.core.problem.solution.route.activity;
+
+public class TimeWindowTest {
+
+}