private DeliverShipment(DeliverShipment deliveryShipmentActivity) { this.shipment = (Shipment) deliveryShipmentActivity.getJob(); this.arrTime = deliveryShipmentActivity.getArrTime(); this.endTime = deliveryShipmentActivity.getEndTime(); this.capacity = deliveryShipmentActivity.getSize(); setIndex(deliveryShipmentActivity.getIndex()); this.earliest = deliveryShipmentActivity.getTheoreticalEarliestOperationStartTime(); this.latest = deliveryShipmentActivity.getTheoreticalLatestOperationStartTime(); }
@Override public void visit(TourActivity activity) { //shipment if (activity instanceof PickupShipment) { openShipments.put(((PickupShipment) activity).getJob().getId(), (PickupShipment) activity); } else if (activity instanceof DeliverShipment) { String jobId = ((DeliverShipment) activity).getJob().getId(); if (!openShipments.containsKey(jobId)) { //deliverShipment without pickupShipment stateManager.putActivityState(activity, shipment_id, true); shipmentConstraintOnRouteViolated = true; } else { PickupShipment removed = openShipments.remove(jobId); stateManager.putActivityState(removed, shipment_id, false); stateManager.putActivityState(activity, shipment_id, false); } } else stateManager.putActivityState(activity, shipment_id, false); //backhaul if (activity instanceof DeliverService && pickupOccured) { stateManager.putActivityState(activity, backhaul_id, true); backhaulConstraintOnRouteViolated = true; } else { if (activity instanceof PickupService || activity instanceof ServiceActivity || activity instanceof PickupShipment) { pickupOccured = true; stateManager.putActivityState(activity, backhaul_id, false); } else stateManager.putActivityState(activity, backhaul_id, false); } }
@Override public void visit(TourActivity activity) { //shipment if (activity instanceof PickupShipment) { openShipments.put(((PickupShipment) activity).getJob().getId(), (PickupShipment) activity); } else if (activity instanceof DeliverShipment) { String jobId = ((DeliverShipment) activity).getJob().getId(); if (!openShipments.containsKey(jobId)) { //deliverShipment without pickupShipment stateManager.putActivityState(activity, shipment_id, true); shipmentConstraintOnRouteViolated = true; } else { PickupShipment removed = openShipments.remove(jobId); stateManager.putActivityState(removed, shipment_id, false); stateManager.putActivityState(activity, shipment_id, false); } } else stateManager.putActivityState(activity, shipment_id, false); //backhaul if (activity instanceof DeliverService && pickupOccured) { stateManager.putActivityState(activity, backhaul_id, true); backhaulConstraintOnRouteViolated = true; } else { if (activity instanceof PickupService || activity instanceof ServiceActivity || activity instanceof PickupShipment) { pickupOccured = true; stateManager.putActivityState(activity, backhaul_id, false); } else stateManager.putActivityState(activity, backhaul_id, false); } }
private DeliverShipment(DeliverShipment deliveryShipmentActivity) { this.shipment = (Shipment) deliveryShipmentActivity.getJob(); this.arrTime = deliveryShipmentActivity.getArrTime(); this.endTime = deliveryShipmentActivity.getEndTime(); this.capacity = deliveryShipmentActivity.getSize(); setIndex(deliveryShipmentActivity.getIndex()); this.earliest = deliveryShipmentActivity.getTheoreticalEarliestOperationStartTime(); this.latest = deliveryShipmentActivity.getTheoreticalLatestOperationStartTime(); }