1
0
Fork 0
mirror of https://github.com/graphhopper/jsprit.git synced 2020-01-24 07:45:05 +01:00

modeling pickups and deliveries

This commit is contained in:
oblonski 2013-10-17 06:21:09 +02:00
parent c55d67e3c2
commit 7d56aed4c5
11 changed files with 377 additions and 162 deletions

View file

@ -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);
}
}

View file

@ -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;
}

View file

@ -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;
}
}

View file

@ -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);
}
}

View file

@ -19,83 +19,7 @@ package basics.route;
import basics.Delivery;
import basics.route.TourActivity.JobActivity;
public class DeliveryActivity implements JobActivity<Delivery>{
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;
}
}

View file

@ -16,87 +16,9 @@
******************************************************************************/
package basics.route;
import basics.Pickup;
import basics.route.TourActivity.JobActivity;
public class PickupActivity implements JobActivity<Pickup>{
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();
}
public interface PickupActivity extends JobActivity{
}

View file

@ -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();
}
}

View file

@ -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);
}
}

View file

@ -19,7 +19,7 @@ package basics.route;
import basics.Service;
import basics.route.TourActivity.JobActivity;
public class ServiceActivity implements JobActivity<Service>{
public class ServiceActivity implements JobActivity{
public static int counter = 0;

View file

@ -21,9 +21,9 @@ import basics.Job;
public interface TourActivity {
public interface JobActivity<T extends Job> extends TourActivity {
public interface JobActivity extends TourActivity {
public T getJob();
public Job getJob();
}

View file

@ -0,0 +1,11 @@
package basics.route;
import basics.Shipment;
public interface TourShipmentActivityFactory {
public TourActivity createPickup(Shipment shipment);
public TourActivity createDelivery(Shipment shipment);
}