@Override public double getActivityDuration(TourActivity tourAct, double arrivalTime, Driver driver, Vehicle vehicle) { return tourAct.getOperationTime(); }
/** * Calculates actEndTime assuming that activity can at earliest start at act.getTheoreticalEarliestOperationStartTime(). * * @param actArrTime * @param act * @return */ @Deprecated public static double getActivityEndTime(double actArrTime, TourActivity act){ return Math.max(actArrTime, act.getTheoreticalEarliestOperationStartTime()) + act.getOperationTime(); } }
@Override public void visit(TourActivity currAct) { double timeOfNearestMessenger = bestMessengers.get(((JobActivity) currAct).getJob().getId()); double potential_latest_arrTime_at_currAct = latest_arrTime_at_prevAct - routingCosts.getBackwardTransportTime(currAct.getLocation(), prevAct.getLocation(), latest_arrTime_at_prevAct, route.getDriver(), route.getVehicle()) - currAct.getOperationTime(); double latest_arrTime_at_currAct = Math.min(3 * timeOfNearestMessenger, potential_latest_arrTime_at_currAct); stateManager.putActivityState(currAct, latest_act_arrival_time_stateId, latest_arrTime_at_currAct); assert currAct.getArrTime() <= latest_arrTime_at_currAct : "this must not be since it breaks condition; actArrTime: " + currAct.getArrTime() + " latestArrTime: " + latest_arrTime_at_currAct + " vehicle: " + route.getVehicle().getId(); latest_arrTime_at_prevAct = latest_arrTime_at_currAct; prevAct = currAct; }
@Override public double getActivityDuration(TourActivity tourAct, double arrivalTime, Driver driver, Vehicle vehicle) { return tourAct.getOperationTime(); }
/** * Calculates actEndTime assuming that activity can at earliest start at act.getTheoreticalEarliestOperationStartTime(). * * @param actArrTime * @param act * @return */ @Deprecated public static double getActivityEndTime(double actArrTime, TourActivity act){ return Math.max(actArrTime, act.getTheoreticalEarliestOperationStartTime()) + act.getOperationTime(); } }
double departureTime_at_newAct = arrTime_at_newAct + newAct.getOperationTime(); double latest_arrTime_at_newAct = latest_arrTime_at_nextAct - routingCosts.getTransportTime(newAct.getLocation(), nextAct.getLocation(), departureTime_at_newAct, iFacts.getNewDriver(), iFacts.getNewVehicle()); if (arrTime_at_newAct > latest_arrTime_at_newAct) {
@Override public double getActivityCost(TourActivity act, double arrivalTime, Driver arg2, Vehicle vehicle) { double tooLate = Math.max(0, arrivalTime - act.getTheoreticalLatestOperationStartTime()); double waiting = Math.max(0, act.getTheoreticalEarliestOperationStartTime() - arrivalTime); // double waiting = 0.; double service = act.getOperationTime()*vehicle.getType().getVehicleCostParams().perTimeUnit; return penalty4missedTws*tooLate + vehicle.getType().getVehicleCostParams().perTimeUnit*waiting + service; // // return penalty4missedTws*tooLate; // return 0.0; }
@Override public double getActivityCost(TourActivity act, double arrivalTime, Driver arg2, Vehicle vehicle) { double tooLate = Math.max(0, arrivalTime - act.getTheoreticalLatestOperationStartTime()); double waiting = Math.max(0, act.getTheoreticalEarliestOperationStartTime() - arrivalTime); double service = act.getOperationTime() * vehicle.getType().getVehicleCostParams().perTimeUnit; return penalty4missedTws * tooLate + vehicle.getType().getVehicleCostParams().perTimeUnit * waiting + service; //TODO: KMT/jan 18 It is a bit confusing to me why there are some values already multiplied with costParams and others not. }