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 |