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 { + +}