From 7d56aed4c5aa7d73527d996c606985d5d0c316d4 Mon Sep 17 00:00:00 2001 From: oblonski <4sschroeder@gmail.com> Date: Thu, 17 Oct 2013 06:21:09 +0200 Subject: [PATCH] modeling pickups and deliveries --- .../route/DefaultShipmentActivityFactory.java | 17 ++++ .../route/DefaultTourActivityFactory.java | 6 +- .../java/basics/route/DeliverService.java | 84 +++++++++++++++++ .../java/basics/route/DeliverShipment.java | 83 +++++++++++++++++ .../java/basics/route/DeliveryActivity.java | 78 +--------------- .../java/basics/route/PickupActivity.java | 80 +--------------- .../main/java/basics/route/PickupService.java | 91 +++++++++++++++++++ .../java/basics/route/PickupShipment.java | 83 +++++++++++++++++ .../java/basics/route/ServiceActivity.java | 2 +- .../main/java/basics/route/TourActivity.java | 4 +- .../route/TourShipmentActivityFactory.java | 11 +++ 11 files changed, 377 insertions(+), 162 deletions(-) create mode 100644 jsprit-core/src/main/java/basics/route/DefaultShipmentActivityFactory.java create mode 100644 jsprit-core/src/main/java/basics/route/DeliverService.java create mode 100644 jsprit-core/src/main/java/basics/route/DeliverShipment.java create mode 100644 jsprit-core/src/main/java/basics/route/PickupService.java create mode 100644 jsprit-core/src/main/java/basics/route/PickupShipment.java create mode 100644 jsprit-core/src/main/java/basics/route/TourShipmentActivityFactory.java diff --git a/jsprit-core/src/main/java/basics/route/DefaultShipmentActivityFactory.java b/jsprit-core/src/main/java/basics/route/DefaultShipmentActivityFactory.java new file mode 100644 index 00000000..c07d0992 --- /dev/null +++ b/jsprit-core/src/main/java/basics/route/DefaultShipmentActivityFactory.java @@ -0,0 +1,17 @@ +package basics.route; + +import basics.Shipment; + +public class DefaultShipmentActivityFactory implements TourShipmentActivityFactory{ + + @Override + public TourActivity createPickup(Shipment shipment) { + return new PickupShipment(shipment); + } + + @Override + public TourActivity createDelivery(Shipment shipment) { + return new DeliverShipment(shipment); + } + +} diff --git a/jsprit-core/src/main/java/basics/route/DefaultTourActivityFactory.java b/jsprit-core/src/main/java/basics/route/DefaultTourActivityFactory.java index 603dcf4b..85b2257b 100644 --- a/jsprit-core/src/main/java/basics/route/DefaultTourActivityFactory.java +++ b/jsprit-core/src/main/java/basics/route/DefaultTourActivityFactory.java @@ -26,13 +26,13 @@ public class DefaultTourActivityFactory implements TourActivityFactory{ public TourActivity createActivity(Service service) { TourActivity act; if(service instanceof Pickup){ - act = new PickupActivity((Pickup) service); + act = new PickupService((Pickup) service); } else if(service instanceof Delivery){ - act = new DeliveryActivity((Delivery) service); + act = new DeliverService((Delivery) service); } else{ - act = ServiceActivity.newInstance(service); + act = new PickupService(service); } return act; } diff --git a/jsprit-core/src/main/java/basics/route/DeliverService.java b/jsprit-core/src/main/java/basics/route/DeliverService.java new file mode 100644 index 00000000..bda27137 --- /dev/null +++ b/jsprit-core/src/main/java/basics/route/DeliverService.java @@ -0,0 +1,84 @@ +package basics.route; + +import basics.Delivery; + +public final class DeliverService implements DeliveryActivity{ + + private Delivery delivery; + + private double arrTime; + + private double endTime; + + public DeliverService(Delivery delivery) { + super(); + this.delivery = delivery; + } + + private DeliverService(DeliverService deliveryActivity){ + this.delivery=deliveryActivity.getJob(); + this.arrTime=deliveryActivity.getArrTime(); + this.endTime=deliveryActivity.getEndTime(); + } + + @Override + public int getCapacityDemand() { + return delivery.getCapacityDemand()*-1; + } + + @Override + public String getName() { + return delivery.getType(); + } + + @Override + public String getLocationId() { + return delivery.getLocationId(); + } + + @Override + public double getTheoreticalEarliestOperationStartTime() { + return delivery.getTimeWindow().getStart(); + } + + @Override + public double getTheoreticalLatestOperationStartTime() { + return delivery.getTimeWindow().getEnd(); + } + + @Override + public double getOperationTime() { + return delivery.getServiceDuration(); + } + + @Override + public double getArrTime() { + return arrTime; + } + + @Override + public double getEndTime() { + return endTime; + } + + @Override + public void setArrTime(double arrTime) { + this.arrTime=arrTime; + } + + @Override + public void setEndTime(double endTime) { + this.endTime=endTime; + } + + @Override + public TourActivity duplicate() { + return new DeliverService(this); + } + + @Override + public Delivery getJob() { + return delivery; + } + +} diff --git a/jsprit-core/src/main/java/basics/route/DeliverShipment.java b/jsprit-core/src/main/java/basics/route/DeliverShipment.java new file mode 100644 index 00000000..0813bc9e --- /dev/null +++ b/jsprit-core/src/main/java/basics/route/DeliverShipment.java @@ -0,0 +1,83 @@ +package basics.route; + +import basics.Job; +import basics.Shipment; + +public final class DeliverShipment implements DeliveryActivity{ + + private Shipment shipment; + private double endTime; + private double arrTime; + + public DeliverShipment(Shipment shipment) { + super(); + this.shipment = shipment; + } + + public DeliverShipment(DeliverShipment deliveryShipmentActivity) { + this.shipment = (Shipment) deliveryShipmentActivity.getJob(); + this.arrTime = deliveryShipmentActivity.getArrTime(); + this.endTime = deliveryShipmentActivity.getEndTime(); + } + + @Override + public Job getJob() { + return shipment; + } + + @Override + public int getCapacityDemand() { + return shipment.getSize()*-1; + } + + @Override + public String getName() { + return "DeliverShipment"; + } + + @Override + public String getLocationId() { + return shipment.getDeliveryLocation(); + } + + @Override + public double getTheoreticalEarliestOperationStartTime() { + return shipment.getDeliveryTimeWindow().getStart(); + } + + @Override + public double getTheoreticalLatestOperationStartTime() { + return shipment.getDeliveryTimeWindow().getEnd(); + } + + @Override + public double getOperationTime() { + return shipment.getDeliveryServiceTime(); + } + + @Override + public double getArrTime() { + return arrTime; + } + + @Override + public double getEndTime() { + return endTime; + } + + @Override + public void setArrTime(double arrTime) { + this.arrTime=arrTime; + } + + @Override + public void setEndTime(double endTime) { + this.endTime=endTime; + } + + @Override + public TourActivity duplicate() { + return new DeliverShipment(this); + } + +} diff --git a/jsprit-core/src/main/java/basics/route/DeliveryActivity.java b/jsprit-core/src/main/java/basics/route/DeliveryActivity.java index adbb4e2a..fc859139 100644 --- a/jsprit-core/src/main/java/basics/route/DeliveryActivity.java +++ b/jsprit-core/src/main/java/basics/route/DeliveryActivity.java @@ -19,83 +19,7 @@ package basics.route; import basics.Delivery; import basics.route.TourActivity.JobActivity; -public class DeliveryActivity implements JobActivity{ +public interface DeliveryActivity extends JobActivity{ - private Delivery delivery; - private double arrTime; - - private double endTime; - - public DeliveryActivity(Delivery delivery) { - super(); - this.delivery = delivery; - } - - private DeliveryActivity(DeliveryActivity deliveryActivity){ - this.delivery=deliveryActivity.getJob(); - this.arrTime=deliveryActivity.getArrTime(); - this.endTime=deliveryActivity.getEndTime(); - } - - @Override - public int getCapacityDemand() { - return delivery.getCapacityDemand()*-1; - } - - @Override - public String getName() { - return delivery.getType(); - } - - @Override - public String getLocationId() { - return delivery.getLocationId(); - } - - @Override - public double getTheoreticalEarliestOperationStartTime() { - return delivery.getTimeWindow().getStart(); - } - - @Override - public double getTheoreticalLatestOperationStartTime() { - return delivery.getTimeWindow().getEnd(); - } - - @Override - public double getOperationTime() { - return delivery.getServiceDuration(); - } - - @Override - public double getArrTime() { - return arrTime; - } - - @Override - public double getEndTime() { - return endTime; - } - - @Override - public void setArrTime(double arrTime) { - this.arrTime=arrTime; - } - - @Override - public void setEndTime(double endTime) { - this.endTime=endTime; - } - - @Override - public TourActivity duplicate() { - return new DeliveryActivity(this); - } - - @Override - public Delivery getJob() { - return delivery; - } - } diff --git a/jsprit-core/src/main/java/basics/route/PickupActivity.java b/jsprit-core/src/main/java/basics/route/PickupActivity.java index 74d5d101..49293807 100644 --- a/jsprit-core/src/main/java/basics/route/PickupActivity.java +++ b/jsprit-core/src/main/java/basics/route/PickupActivity.java @@ -16,87 +16,9 @@ ******************************************************************************/ package basics.route; -import basics.Pickup; import basics.route.TourActivity.JobActivity; -public class PickupActivity implements JobActivity{ +public interface PickupActivity extends JobActivity{ - private Pickup pickup; - - private double arrTime; - - private double depTime; - - public PickupActivity(Pickup pickup) { - super(); - this.pickup = pickup; - } - - private PickupActivity(PickupActivity pickupActivity){ - this.pickup=pickupActivity.getJob(); - this.arrTime=pickupActivity.getArrTime(); - this.depTime=pickupActivity.getEndTime(); - } - - @Override - public String getName() { - return pickup.getType(); - } - - @Override - public String getLocationId() { - return pickup.getLocationId(); - } - - @Override - public double getTheoreticalEarliestOperationStartTime() { - return pickup.getTimeWindow().getStart(); - } - - @Override - public double getTheoreticalLatestOperationStartTime() { - return pickup.getTimeWindow().getEnd(); - } - - @Override - public double getOperationTime() { - return pickup.getServiceDuration(); - } - - @Override - public double getArrTime() { - return arrTime; - } - - @Override - public double getEndTime() { - return depTime; - } - - @Override - public void setArrTime(double arrTime) { - this.arrTime=arrTime; - } - - @Override - public void setEndTime(double endTime) { - this.depTime=endTime; - } - - @Override - public TourActivity duplicate() { - return new PickupActivity(this); - } - - @Override - public Pickup getJob() { - return pickup; - } - - @Override - public int getCapacityDemand() { - return pickup.getCapacityDemand(); - } - } diff --git a/jsprit-core/src/main/java/basics/route/PickupService.java b/jsprit-core/src/main/java/basics/route/PickupService.java new file mode 100644 index 00000000..11a46c9c --- /dev/null +++ b/jsprit-core/src/main/java/basics/route/PickupService.java @@ -0,0 +1,91 @@ +package basics.route; + +import basics.Pickup; +import basics.Service; + +public final class PickupService implements PickupActivity{ + + private Service pickup; + + private double arrTime; + + private double depTime; + + public PickupService(Pickup pickup) { + super(); + this.pickup = pickup; + } + + public PickupService(Service service){ + this.pickup = service; + } + + private PickupService(PickupService pickupActivity){ + this.pickup=pickupActivity.getJob(); + this.arrTime=pickupActivity.getArrTime(); + this.depTime=pickupActivity.getEndTime(); + } + + @Override + public String getName() { + return pickup.getType(); + } + + @Override + public String getLocationId() { + return pickup.getLocationId(); + } + + @Override + public double getTheoreticalEarliestOperationStartTime() { + return pickup.getTimeWindow().getStart(); + } + + @Override + public double getTheoreticalLatestOperationStartTime() { + return pickup.getTimeWindow().getEnd(); + } + + @Override + public double getOperationTime() { + return pickup.getServiceDuration(); + } + + @Override + public double getArrTime() { + return arrTime; + } + + @Override + public double getEndTime() { + return depTime; + } + + @Override + public void setArrTime(double arrTime) { + this.arrTime=arrTime; + } + + @Override + public void setEndTime(double endTime) { + this.depTime=endTime; + } + + @Override + public TourActivity duplicate() { + return new PickupService(this); + } + + @Override + public Service getJob() { + return pickup; + } + + @Override + public int getCapacityDemand() { + return pickup.getCapacityDemand(); + } + + + +} diff --git a/jsprit-core/src/main/java/basics/route/PickupShipment.java b/jsprit-core/src/main/java/basics/route/PickupShipment.java new file mode 100644 index 00000000..60c108d2 --- /dev/null +++ b/jsprit-core/src/main/java/basics/route/PickupShipment.java @@ -0,0 +1,83 @@ +package basics.route; + +import basics.Job; +import basics.Shipment; + +public final class PickupShipment implements PickupActivity{ + + private Shipment shipment; + private double endTime; + private double arrTime; + + public PickupShipment(Shipment shipment) { + super(); + this.shipment = shipment; + } + + public PickupShipment(PickupShipment pickupShipmentActivity) { + this.shipment = (Shipment) pickupShipmentActivity.getJob(); + this.arrTime = pickupShipmentActivity.getArrTime(); + this.endTime = pickupShipmentActivity.getEndTime(); + } + + @Override + public Job getJob() { + return shipment; + } + + @Override + public int getCapacityDemand() { + return shipment.getSize(); + } + + @Override + public String getName() { + return "PickupShipment"; + } + + @Override + public String getLocationId() { + return shipment.getPickupLocation(); + } + + @Override + public double getTheoreticalEarliestOperationStartTime() { + return shipment.getPickupTimeWindow().getStart(); + } + + @Override + public double getTheoreticalLatestOperationStartTime() { + return shipment.getPickupTimeWindow().getEnd(); + } + + @Override + public double getOperationTime() { + return shipment.getPickupServiceTime(); + } + + @Override + public double getArrTime() { + return arrTime; + } + + @Override + public double getEndTime() { + return endTime; + } + + @Override + public void setArrTime(double arrTime) { + this.arrTime=arrTime; + } + + @Override + public void setEndTime(double endTime) { + this.endTime=endTime; + } + + @Override + public TourActivity duplicate() { + return new PickupShipment(this); + } + +} diff --git a/jsprit-core/src/main/java/basics/route/ServiceActivity.java b/jsprit-core/src/main/java/basics/route/ServiceActivity.java index bcf5deec..e9f454e8 100644 --- a/jsprit-core/src/main/java/basics/route/ServiceActivity.java +++ b/jsprit-core/src/main/java/basics/route/ServiceActivity.java @@ -19,7 +19,7 @@ package basics.route; import basics.Service; import basics.route.TourActivity.JobActivity; -public class ServiceActivity implements JobActivity{ +public class ServiceActivity implements JobActivity{ public static int counter = 0; diff --git a/jsprit-core/src/main/java/basics/route/TourActivity.java b/jsprit-core/src/main/java/basics/route/TourActivity.java index d9409fe2..6c4532ac 100644 --- a/jsprit-core/src/main/java/basics/route/TourActivity.java +++ b/jsprit-core/src/main/java/basics/route/TourActivity.java @@ -21,9 +21,9 @@ import basics.Job; public interface TourActivity { - public interface JobActivity extends TourActivity { + public interface JobActivity extends TourActivity { - public T getJob(); + public Job getJob(); } diff --git a/jsprit-core/src/main/java/basics/route/TourShipmentActivityFactory.java b/jsprit-core/src/main/java/basics/route/TourShipmentActivityFactory.java new file mode 100644 index 00000000..66a1f400 --- /dev/null +++ b/jsprit-core/src/main/java/basics/route/TourShipmentActivityFactory.java @@ -0,0 +1,11 @@ +package basics.route; + +import basics.Shipment; + +public interface TourShipmentActivityFactory { + + public TourActivity createPickup(Shipment shipment); + + public TourActivity createDelivery(Shipment shipment); + +}