mirror of
https://github.com/graphhopper/jsprit.git
synced 2020-01-24 07:45:05 +01:00
fix bug in CalculatesServiceInsertion
This commit is contained in:
parent
9d40d76a2b
commit
07ecdc2f28
2 changed files with 7 additions and 15 deletions
|
|
@ -4,16 +4,6 @@ import basics.route.TourActivity;
|
||||||
|
|
||||||
class CalcUtils {
|
class CalcUtils {
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @param startTimeAtPrevAct
|
|
||||||
* @param tpTime_prevAct_nextAct
|
|
||||||
* @param nextAct
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
static double getStartTimeAtAct(double startTimeAtPrevAct, double tpTime_prevAct_nextAct, TourActivity nextAct){
|
|
||||||
return Math.max(startTimeAtPrevAct + tpTime_prevAct_nextAct, nextAct.getTheoreticalEarliestOperationStartTime()) + nextAct.getOperationTime();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Calculates actEndTime assuming that activity can at earliest start at act.getTheoreticalEarliestOperationStartTime().
|
* Calculates actEndTime assuming that activity can at earliest start at act.getTheoreticalEarliestOperationStartTime().
|
||||||
|
|
|
||||||
|
|
@ -102,11 +102,9 @@ final class CalculatesServiceInsertion implements JobInsertionCalculator{
|
||||||
TourActivity prevAct = start;
|
TourActivity prevAct = start;
|
||||||
double prevActStartTime = newVehicleDepartureTime;
|
double prevActStartTime = newVehicleDepartureTime;
|
||||||
int actIndex = 0;
|
int actIndex = 0;
|
||||||
|
// logger.info("start");
|
||||||
for(TourActivity nextAct : currentRoute.getTourActivities().getActivities()){
|
for(TourActivity nextAct : currentRoute.getTourActivities().getActivities()){
|
||||||
if(deliveryAct2Insert.getTheoreticalLatestOperationStartTime() < prevAct.getTheoreticalEarliestOperationStartTime()){
|
// logger.info("prevActStartTime="+prevActStartTime);
|
||||||
break;
|
|
||||||
}
|
|
||||||
if(neighborhood.areNeighbors(deliveryAct2Insert.getLocationId(), prevAct.getLocationId()) && neighborhood.areNeighbors(deliveryAct2Insert.getLocationId(), nextAct.getLocationId())){
|
if(neighborhood.areNeighbors(deliveryAct2Insert.getLocationId(), prevAct.getLocationId()) && neighborhood.areNeighbors(deliveryAct2Insert.getLocationId(), nextAct.getLocationId())){
|
||||||
Marginals mc = calculate(insertionContext, prevAct, nextAct, deliveryAct2Insert, prevActStartTime);
|
Marginals mc = calculate(insertionContext, prevAct, nextAct, deliveryAct2Insert, prevActStartTime);
|
||||||
if(mc != null){
|
if(mc != null){
|
||||||
|
|
@ -117,10 +115,14 @@ final class CalculatesServiceInsertion implements JobInsertionCalculator{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
double nextActArrTime = prevActStartTime + transportCosts.getTransportTime(prevAct.getLocationId(), nextAct.getLocationId(), prevActStartTime, newDriver, newVehicle);
|
||||||
|
double nextActEndTime = CalcUtils.getActivityEndTime(nextActArrTime, nextAct);
|
||||||
|
|
||||||
|
prevActStartTime = nextActEndTime;
|
||||||
prevAct = nextAct;
|
prevAct = nextAct;
|
||||||
prevActStartTime = CalcUtils.getStartTimeAtAct(prevActStartTime, transportCosts.getTransportTime(prevAct.getLocationId(), nextAct.getLocationId(), prevActStartTime, newDriver, newVehicle), nextAct);
|
|
||||||
actIndex++;
|
actIndex++;
|
||||||
}
|
}
|
||||||
|
// logger.info("prevActStartTime="+prevActStartTime);
|
||||||
End nextAct = end;
|
End nextAct = end;
|
||||||
if(neighborhood.areNeighbors(deliveryAct2Insert.getLocationId(), prevAct.getLocationId()) && neighborhood.areNeighbors(deliveryAct2Insert.getLocationId(), nextAct.getLocationId())){
|
if(neighborhood.areNeighbors(deliveryAct2Insert.getLocationId(), prevAct.getLocationId()) && neighborhood.areNeighbors(deliveryAct2Insert.getLocationId(), nextAct.getLocationId())){
|
||||||
Marginals mc = calculate(insertionContext, prevAct, nextAct, deliveryAct2Insert, prevActStartTime);
|
Marginals mc = calculate(insertionContext, prevAct, nextAct, deliveryAct2Insert, prevActStartTime);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue