Research Article

Column Generation for a Multitrip Vehicle Routing Problem with Time Windows, Driver Work Hours, and Heterogeneous Fleet

Algorithm 1

Constructive_Heuristic Algorithm—procedure to find a feasible solution.
Constructive_Heuristic( )
find customers’ geometric centre
divide customers into 4 quadrants with their geometric centre as a reference
sort each quadrant list of customers in increasing order of time window opening
//Travel quadrants in anti-clockwise sequence starting from the upper right quadrant//
  for each quadrant customer list do
   for every customer with a list of authorised vehicles do
     find the smallest insertion cost position among authorised vehicle workdays
    if a position was found then
        insert the customer and remove it from the quadrant list
sort the list of vehicles in decreasing order of cargo capacity
sort the list of vehicles in increasing order of cost with a stable sorting algorithm
  for each vehicle in the sorted list of vehicles do
   //Travel quadrants in an anti-clockwise sequence//
   for each quadrant customer list do
    for each customer do
        find smallest insertion cost position in the current vehicle workday
       if a position was found then
        insert the customer and remove it from quadrant list
//Check if the current solution is infeasible//
  if there are unserved customers then
   if tabu search was never called then
     //“Make room” for future insertions by cost reduction//
     call tabu search of few iterations to improve the current solution
     go to line 5 to insert unserved customers
   else
     call a commercial software to find a feasible solution