public Builder addPickup(Shipment shipment, TimeWindow pickupTimeWindow) { if (openShipments.contains(shipment)) throw new IllegalArgumentException("shipment has already been added. cannot add it twice."); List<AbstractActivity> acts = jobActivityFactory.createActivities(shipment); TourActivity act = acts.get(0); act.setTheoreticalEarliestOperationStartTime(pickupTimeWindow.getStart()); act.setTheoreticalLatestOperationStartTime(pickupTimeWindow.getEnd()); tourActivities.addActivity(act); openShipments.add(shipment); openActivities.put(shipment, acts.get(1)); return this; }
public Builder addDelivery(Shipment shipment, TimeWindow deliveryTimeWindow) { if (openShipments.contains(shipment)) { TourActivity act = openActivities.get(shipment); act.setTheoreticalEarliestOperationStartTime(deliveryTimeWindow.getStart()); act.setTheoreticalLatestOperationStartTime(deliveryTimeWindow.getEnd()); tourActivities.addActivity(act); openShipments.remove(shipment); } else { throw new IllegalArgumentException("cannot deliver shipment. shipment " + shipment + " needs to be picked up first."); } return this; }
public Builder addService(Service service, TimeWindow timeWindow) { if (service == null) throw new IllegalArgumentException("service must not be null"); List<AbstractActivity> acts = jobActivityFactory.createActivities(service); TourActivity act = acts.get(0); act.setTheoreticalEarliestOperationStartTime(timeWindow.getStart()); act.setTheoreticalLatestOperationStartTime(timeWindow.getEnd()); tourActivities.addActivity(act); return this; }
private Builder addBreakInternally(Break currentBreak, TimeWindow timeWindow, Location breakLocation) { List<AbstractActivity> acts = jobActivityFactory.createActivities(currentBreak); BreakActivity act = (BreakActivity) acts.get(0); act.setTheoreticalEarliestOperationStartTime(timeWindow.getStart()); act.setTheoreticalLatestOperationStartTime(timeWindow.getEnd()); act.setLocation(breakLocation); tourActivities.addActivity(act); return this; }
@Override public void handleJobInsertion(Job job, InsertionData iData, VehicleRoute route) { if (job instanceof Shipment) { List<AbstractActivity> acts = vehicleRoutingProblem.copyAndGetActivities(job); TourActivity pickupShipment = acts.get(0); TourActivity deliverShipment = acts.get(1); route.setVehicleAndDepartureTime(iData.getSelectedVehicle(), iData.getVehicleDepartureTime()); if (!iData.getSelectedVehicle().isReturnToDepot()) { if (iData.getDeliveryInsertionIndex() >= route.getActivities().size()) { setEndLocation(route, (Shipment) job); } } route.getTourActivities().addActivity(iData.getDeliveryInsertionIndex(), deliverShipment); route.getTourActivities().addActivity(iData.getPickupInsertionIndex(), pickupShipment); } else delegator.handleJobInsertion(job, iData, route); }
@Override public void handleJobInsertion(Job job, InsertionData iData, VehicleRoute route) { if (job instanceof Service) { route.setVehicleAndDepartureTime(iData.getSelectedVehicle(), iData.getVehicleDepartureTime()); if (!iData.getSelectedVehicle().isReturnToDepot()) { if (iData.getDeliveryInsertionIndex() >= route.getTourActivities().getActivities().size()) { setEndLocation(route, (Service) job); } } TourActivity activity = vehicleRoutingProblem.copyAndGetActivities(job).get(0); route.getTourActivities().addActivity(iData.getDeliveryInsertionIndex(), activity); } else delegator.handleJobInsertion(job, iData, route); }
private void insertShipment(Job job, InsertionData data, VehicleRoute route) { String fromNodeId = getFromNodeId((Shipment) job); String toNodeId = getToNodeId((Shipment) job); insertNode(toNodeId, data.getDeliveryInsertionIndex(), data, route); List<AbstractActivity> del = vrp.getActivities(job); VehicleRoute copied = VehicleRoute.copyOf(route); copied.getTourActivities().addActivity(data.getDeliveryInsertionIndex(), del.get(1)); insertNode(fromNodeId, data.getPickupInsertionIndex(), data, copied); }
@Override public void inform(Event event) { if (event instanceof InsertActivity) { InsertActivity insertActivity = (InsertActivity) event; if (!insertActivity.getNewVehicle().isReturnToDepot()) { if (insertActivity.getIndex() >= insertActivity.getVehicleRoute().getActivities().size()) { insertActivity.getVehicleRoute().getEnd().setLocation(insertActivity.getActivity().getLocation()); } } insertActivity.getVehicleRoute().getTourActivities().addActivity(insertActivity.getIndex(), ((InsertActivity) event).getActivity()); } }
@Override public void inform(Event event) { if (event instanceof InsertBreak) { InsertBreak insertActivity = (InsertBreak) event; if (!insertActivity.getNewVehicle().isReturnToDepot()) { if (insertActivity.getIndex() >= insertActivity.getVehicleRoute().getActivities().size()) { insertActivity.getVehicleRoute().getEnd().setLocation(insertActivity.getActivity().getLocation()); } } VehicleRoute vehicleRoute = ((InsertBreak) event).getVehicleRoute(); if (!vehicleRoute.isEmpty()) { if (vehicleRoute.getVehicle() != ((InsertBreak) event).getNewVehicle()) { if (vehicleRoute.getVehicle().getBreak() != null) { boolean removed = vehicleRoute.getTourActivities().removeJob(vehicleRoute.getVehicle().getBreak()); if (removed) logger.trace("remove old break " + vehicleRoute.getVehicle().getBreak()); } } } insertActivity.getVehicleRoute().getTourActivities().addActivity(insertActivity.getIndex(), ((InsertBreak) event).getActivity()); } }
public Builder addPickup(Shipment shipment, TimeWindow pickupTimeWindow) { if (openShipments.contains(shipment)) throw new IllegalArgumentException("shipment has already been added. cannot add it twice."); List<AbstractActivity> acts = jobActivityFactory.createActivities(shipment); TourActivity act = acts.get(0); act.setTheoreticalEarliestOperationStartTime(pickupTimeWindow.getStart()); act.setTheoreticalLatestOperationStartTime(pickupTimeWindow.getEnd()); tourActivities.addActivity(act); openShipments.add(shipment); openActivities.put(shipment, acts.get(1)); return this; }
public Builder addDelivery(Shipment shipment, TimeWindow deliveryTimeWindow) { if (openShipments.contains(shipment)) { TourActivity act = openActivities.get(shipment); act.setTheoreticalEarliestOperationStartTime(deliveryTimeWindow.getStart()); act.setTheoreticalLatestOperationStartTime(deliveryTimeWindow.getEnd()); tourActivities.addActivity(act); openShipments.remove(shipment); } else { throw new IllegalArgumentException("cannot deliver shipment. shipment " + shipment + " needs to be picked up first."); } return this; }
public Builder addService(Service service, TimeWindow timeWindow) { if (service == null) throw new IllegalArgumentException("service must not be null"); List<AbstractActivity> acts = jobActivityFactory.createActivities(service); TourActivity act = acts.get(0); act.setTheoreticalEarliestOperationStartTime(timeWindow.getStart()); act.setTheoreticalLatestOperationStartTime(timeWindow.getEnd()); tourActivities.addActivity(act); return this; }
private Builder addBreakInternally(Break currentBreak, TimeWindow timeWindow, Location breakLocation) { List<AbstractActivity> acts = jobActivityFactory.createActivities(currentBreak); BreakActivity act = (BreakActivity) acts.get(0); act.setTheoreticalEarliestOperationStartTime(timeWindow.getStart()); act.setTheoreticalLatestOperationStartTime(timeWindow.getEnd()); act.setLocation(breakLocation); tourActivities.addActivity(act); return this; }
@Override public void handleJobInsertion(Job job, InsertionData iData, VehicleRoute route) { if (job instanceof Shipment) { List<AbstractActivity> acts = vehicleRoutingProblem.copyAndGetActivities(job); TourActivity pickupShipment = acts.get(0); TourActivity deliverShipment = acts.get(1); route.setVehicleAndDepartureTime(iData.getSelectedVehicle(), iData.getVehicleDepartureTime()); if (!iData.getSelectedVehicle().isReturnToDepot()) { if (iData.getDeliveryInsertionIndex() >= route.getActivities().size()) { setEndLocation(route, (Shipment) job); } } route.getTourActivities().addActivity(iData.getDeliveryInsertionIndex(), deliverShipment); route.getTourActivities().addActivity(iData.getPickupInsertionIndex(), pickupShipment); } else delegator.handleJobInsertion(job, iData, route); }
private void insertShipment(Job job, InsertionData data, VehicleRoute route) { String fromNodeId = getFromNodeId((Shipment) job); String toNodeId = getToNodeId((Shipment) job); insertNode(toNodeId, data.getDeliveryInsertionIndex(), data, route); List<AbstractActivity> del = vrp.getActivities(job); VehicleRoute copied = VehicleRoute.copyOf(route); copied.getTourActivities().addActivity(data.getDeliveryInsertionIndex(), del.get(1)); insertNode(fromNodeId, data.getPickupInsertionIndex(), data, copied); }
@Override public void handleJobInsertion(Job job, InsertionData iData, VehicleRoute route) { if (job instanceof Service) { route.setVehicleAndDepartureTime(iData.getSelectedVehicle(), iData.getVehicleDepartureTime()); if (!iData.getSelectedVehicle().isReturnToDepot()) { if (iData.getDeliveryInsertionIndex() >= route.getTourActivities().getActivities().size()) { setEndLocation(route, (Service) job); } } TourActivity activity = vehicleRoutingProblem.copyAndGetActivities(job).get(0); route.getTourActivities().addActivity(iData.getDeliveryInsertionIndex(), activity); } else delegator.handleJobInsertion(job, iData, route); }
@Override public void inform(Event event) { if (event instanceof InsertActivity) { InsertActivity insertActivity = (InsertActivity) event; if (!insertActivity.getNewVehicle().isReturnToDepot()) { if (insertActivity.getIndex() >= insertActivity.getVehicleRoute().getActivities().size()) { insertActivity.getVehicleRoute().getEnd().setLocation(insertActivity.getActivity().getLocation()); } } insertActivity.getVehicleRoute().getTourActivities().addActivity(insertActivity.getIndex(), ((InsertActivity) event).getActivity()); } }
@Override public void inform(Event event) { if (event instanceof InsertBreak) { InsertBreak insertActivity = (InsertBreak) event; if (!insertActivity.getNewVehicle().isReturnToDepot()) { if (insertActivity.getIndex() >= insertActivity.getVehicleRoute().getActivities().size()) { insertActivity.getVehicleRoute().getEnd().setLocation(insertActivity.getActivity().getLocation()); } } VehicleRoute vehicleRoute = ((InsertBreak) event).getVehicleRoute(); if (!vehicleRoute.isEmpty()) { if (vehicleRoute.getVehicle() != ((InsertBreak) event).getNewVehicle()) { if (vehicleRoute.getVehicle().getBreak() != null) { boolean removed = vehicleRoute.getTourActivities().removeJob(vehicleRoute.getVehicle().getBreak()); if (removed) logger.trace("remove old break " + vehicleRoute.getVehicle().getBreak()); } } } insertActivity.getVehicleRoute().getTourActivities().addActivity(insertActivity.getIndex(), ((InsertBreak) event).getActivity()); } }