Research Article

The Value of Preemptive Pick-Up Services in Dynamic Vehicle Routing for Last-Mile Delivery: Space-Time Network-Based Formulation and Solution Algorithms

Algorithm 1

Generate initial routing plan
Step 1: Initialization
 Initialize time
 Initialize iteration number
 Initialize Lagrangian multipliers for iteration 0
 Initialize penalty factor
 Set the best lower bound estimate
 Set the best upper bound estimate
 Set the origin node for each vehicle k, depot
 Set the destination node for each vehicle k, depot
Step 2: Solve problem 2-b
 Use dynamic programming algorithm to solve problem 2-b for each vehicle k sequentially. During this process, update the cost for each space-time arc before optimizing each vehicle’s route.
Step 3: Generate upper bound estimate
  Step 3.1: Obtain a feasible solution for problem 2-b
   Adopt the optimal routing solution in Step 2
   For each request node
   If the request node is not served by any vehicle
    then designate a virtual vehicle to this request node and add penalty.
   If the request node is served more than once
      then designate one specific vehicle to this request node.
   End for
   After the above adjustment, the optimal solution in Step 2 now becomes a feasible solution and then local upper bound estimate can be computed at iteration n.
  Step 3.2: Generate best upper bound estimate
  Step 4: Generate lower bound estimate
    Step 4.1: Solve problem 1-b
      Use dynamic programming algorithm to solve problem 1-b for each vehicle k in sequence and obtain the optimal solution .
 Step 4.2: Generate best lower bound estimate
  Calculate local lower bound estimate at iteration n as
  Generate best lower bound estimate
  Compute the relative gap between and ,
Step 5: Update Lagrangian multipliers and penalty factors
  Step 5.1: Update Lagrangian multipliers
   
  Step 5.2: Update penalty factor
   
Step 6: Terminal Condition
  If the iteration number > maximum iteration number or the value of the relative gap < a boundary toleration value ,
  then terminate the algorithm procedure
  else
    and go back to Step 2.