<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>A Hybrid Approach for the Capacitated Vehicle Routing Problem with Time Windows</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Ilya Bychkov</string-name>
          <email>ibychkov@hse.ru</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Mikhail Batsyn</string-name>
          <email>mbatsyn@hse.ru</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Laboratory of Algorithms and Technologies for Network Analysis, National Research University Higher School of Economics</institution>
          ,
          <addr-line>136 Rodionova, 603093, Nizhniy Novgorod</addr-line>
          ,
          <country country="RU">Russia</country>
        </aff>
      </contrib-group>
      <fpage>66</fpage>
      <lpage>81</lpage>
      <abstract>
        <p>The Vehicle Routing Problem (VRP) is one of the most popular combinatorial optimization problems which is closely related to the real-life optimization challenges. Being developed for more than 60 years the problem has been considered in many di erent formulations. In real-life goods distribution such constraints as eet size and mix, sitedependency constraints, hard and soft time windows, vehicle capacity constraints are very important. In this paper we consider Capacitated Vehicle Routing Problem with hard Time Windows. We propose a hybrid heuristic algorithm which contains elements of ant colony optimization strategy and tabu search technique. Our algorithm shows good performance and results for the well-known Solomon dataset.</p>
      </abstract>
      <kwd-group>
        <kwd>Vehicle routing problem</kwd>
        <kwd>Time windows</kwd>
        <kwd>Hybrid algorithm</kwd>
        <kwd>Tabu search</kwd>
        <kwd>Ant colony optimization</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        The Vehicle Routing Problem (VRP) is one of the most popular
combinatorial optimization problems which is closely related to the real-life optimization
challenges. The problem's community is quite large - various VRP challenges
and knowledge databases can be found all over the Internet. In everyday life
many distribution companies use speci c algorithms and software to solve
different variations of VRP. The importance of the problem grows today with the
achievements in drone delivery and unmanned vehicles popularization. Modern
VRP formulations usually contain many di erent types of constraints. To our
experience in case of distribution companies the most critical constraints are
hard and soft time windows (VRPTW). Other research papers also con rm the
vitality of time windows constraints [
        <xref ref-type="bibr" rid="ref11 ref12 ref5">5, 11, 12</xref>
        ].
      </p>
      <p>Copyright c by the paper's authors. Copying permitted for private and academic purposes.
In: S. Belim et al. (eds.): OPTA-SCL 2018, Omsk, Russia, published at http://ceur-ws.org</p>
      <p>
        There are many heuristic algorithms with promising results. Jawarneh &amp;
Abdullah [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] present the adaptive bee colony optimization algorithm with
sequential insertion heuristic for initial solution. The authors use several neighborhoods
based on swap and shift moves. Lau et al. [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] modeled VRPTW as a linear
constraint satisfaction problem and introduced an e cient local search method for
solving it. Braysy &amp; Gendreau [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] proposed an adaptation of a popular tabu
search metaheuristic for solving VRPTW.
      </p>
      <p>
        Hybrid algorithms where several heuristics or metaheuristics ideas are
combined are widely used for solving various combinatorial optimization problems
[
        <xref ref-type="bibr" rid="ref10 ref4 ref7 ref8">4, 7, 8, 10</xref>
        ]. In this paper we introduce a new hybrid ant colony optimization
algorithm combined with tabu search technique in which we allow visiting
infeasible solutions during the search process. Allowing infeasible solutions is inspired
by a uni ed tabu search algorithm of Cordeau et al. [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. Our algorithm shows
good performance and results for the well-known Solomon's dataset [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ].
2
      </p>
    </sec>
    <sec id="sec-2">
      <title>Mathematical Formulation</title>
      <p>
        In this paper we consider the Capacitated Vehicle Routing with Time Windows
(CVRPTW). In this formulation we are given a limited number of vehicles with
the same capacity to serve customers in the speci ed time intervals. In practice
these intervals called time windows may refer to customer working hours or
concrete hour when it is convenient for a customer to unload a vehicle. Time
window constraints are known to be the hardest part of VRPTW [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ].
      </p>
      <p>According to CVRPTW formulation each customer i has an associated pair
of values [ei; li] which represent the earliest and the latest time when unloading
can be started. However, if a vehicle arrives before a customer i is ready to start
service we assume that the vehicle waits for the beginning of the time window
ei. On the other hand, any vehicle is allowed to nish servicing customer i even
after the right bound of time window li.</p>
      <p>We consider the CVRPTW formulation in which we have a set K of identical
vehicles with capacity Q. The number of vehicles is jKj, but it is not required
to use all of them.</p>
      <p>
        A straightforward mathematical formulation for CVRPTW is given in [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ].
Here we have graph G = (V; A) with a set of nodes V representing customers
and a set of arcs A representing roads between customers. There are n = jV j
customers numbered from 1 to n. Also there are two auxiliary vertices with
numbers 0 and n + 1 representing the depot node for route start and nish
respectively. We are also given the cost matrix C where cij indicates the cost
of traveling from customer i to customer j and the matrix of traveling times
T where it takes tij time units to get from customer i to customer j. For each
customer i there are time window [ei; li], demand qi and service time si. Let us
de ne +(i) the set of nodes directly reachable from i and (i) - the set of
nodes from which i is directly reachable. Parameters E, L determine the earliest
time when a vehicle can leave the depot and the latest time when it can return.
The decision variables are speci ed as follows:
xijk =
(1; if arc (i; j) is used by vehicle k
      </p>
      <p>0; otherwise
wik =
(service start time, if customer i appears in the route of vehicle k
0; otherwise</p>
      <p>With all the variables and parameters above we can now formulate the
problem considered in this paper as follows
(CVRPTW):</p>
      <sec id="sec-2-1">
        <title>Subject to:</title>
        <p>min</p>
        <p>X</p>
        <p>X
k2K (i;j)2A</p>
        <p>cij xijk
X</p>
        <p>X
k2K j2 +(i)</p>
        <p>X
j2 +(0)
X</p>
        <p>(n+1)
i2
xijk</p>
        <p>X
i2 +(k)</p>
        <p>X
i2
(j)
xijk = 1</p>
        <p>8i 2 V;
x0jk = 1</p>
        <p>8k 2 K;
xi;n+1;k = 1</p>
        <p>8k 2 K;
xjik = 0</p>
        <p>8k 2 K; j 2 V
xijk(wik + si + tij
wjk)
0</p>
        <p>8k 2 K; (i; j) 2 A;
ei
li</p>
        <p>X
j2 +(i)</p>
        <p>X
j2 +(i)
xijk
xijk
wik
wik
8k 2 K; i 2 V;
8k 2 K; i 2 V;
w0k</p>
        <p>E</p>
        <p>8k 2 K;
wn+1;k</p>
        <p>L</p>
        <p>8k 2 K;
X qi
xijk
(11)
xijk 2 f0; 1g
8k 2 K; (i; j) 2 A:
(12)</p>
        <p>Objective function (1) minimizes the total cost of all the routes in the
solution. Constraint (2) ensures that each customer is assigned to exactly one route.
Constraints (3), (4) and (5) guarantee that we have only one outcoming edge
from the start depot vertex, only one incoming edge to the end depot vertex and
each customer has the same number of incoming and outcoming edges.
Inequality (6) prohibits service to start earlier than the earliest possible arrive time from
the previous customer taking into account service and travel times. Inequalities
(7), (8), (9), (10) provide feasibility with respect to the given time windows.
Finally, constraint (11) prohibits overloaded routes with the total demand greater
than vehicle capacity Q.
3</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Algorithm Description</title>
      <p>During the recent years metaheuristic algorithms have become a popular way
to solve any combinatorial optimization problem. The so called hybrid methods
which incorporate strategies from di erent metaheuristic approaches are widely
used. In this paper we present a hybrid heuristic algorithm which contains Ant
Colony Optimization (ACO) and Tabu Search (TS) with the possibility of
visiting infeasible solutions during the search. In section 3.3 we provide empirical
results which con rm that our hybrid algorithm outperforms separate runs of
TS and ACO procedures. The e ect of visiting infeasible areas during the search
is discussed in Section 3.4.</p>
      <p>Algorithm 1 Ant Colony - Tabu Search approach
1: procedure ACO-TS()
2: maxIterations 30
3: candidateAco ;
4: candidateT S ;
5: bestSolution ;
6: for i 1; maxIterations do
7: candidateACO runACO(candidateT S)
8: updateIfBetter(bestSolution; candidateACO)
9: if hasUnserved(candidateACO) = T rue then
10: fixUnserved(candidateACO)
11: end if
12: candidateT S runTS(candidateACO)
13: updateIfBetter(bestSolution; candidateT S)
14: end for
15: return bestSolution
16: end procedure</p>
      <p>Algorithm 1 provides the top level procedure of our approach. Here we
have the main loop which sequentially runs the ant colony algorithm and then
tabu search. Variables candidateACO, candidateT S and bestSolution
represent best solutions found by ACO, TS and overall best respectively. Variable
maxIterations limits the number of iterations of the main loop. Inside the loop
runACO(candidateT S) is called and the best solution found by this function
is saved to candidateACO. runACO(candidateT S) receives the best solution
found by the previous TS function run and uses it to update initial pheromone
values. For the rst time when candidateT S is empty all pheromones are
initialized with the same value that will be discussed later. Then the algorithm calls
updateIfBetter(bestSolution; candidateACO) which replaces the best
solution found so far with candidateACO if candidate solution is better. Our ACO
solution is constructed by adding routes one by one. This sometimes leads to
infeasible solutions where some customers are unserved. Since the TS function
cannot work with such kind of infeasibilities we run fixUnserved(candidateACO)
procedure to x it. This procedure transforms all unserved customers into
onecustomer routes using additional vehicles. Such transformation in its turn can
lead to using more vehicles than we have. However, this type of violations can be
easily xed in tabu search function. Then candidateACO solution is passed to
runTS(candidateACO) function and used as a starting solution for the search.
After TS function is nished the results are saved to candidateT S variable and
the best solution is updated if necessary inside updateIfBetter() .
3.1</p>
      <sec id="sec-3-1">
        <title>Ant Colony Optimization Algorithm</title>
        <p>Ant colony optimization strategy is used to obtain an initial solution and then
to escape from the local optimum obtained by the tabu search part. In this
algorithm each ant constructs a solution in a probabilistic manner using pheromone
values associated with every single arc. Initially all pheromone values are set to
the same value equal to the total cost of the solution where every customer is
served with its own vehicle. This means that initially all the arcs can become a
part of the solution under construction with the same probability. Here we use
the solution with one-customer routes to ll initial pheromone values. The
algorithm for our ACO stage is presented in Algorithm 2. The detailed description
is provided below.</p>
        <p>Algorithm 2 starts with de ning some variables. The rst variable which is
called maxIterationsW ithoutImprovement de nes how many iterations
without improving the current best solution we can run. The next variables which
are iterations, colonySize and best de ne current iteration counter, number
of ants generated in each iteration and the best solution found so far
respectively. At rst procedure updatePheromones(startSolution) is called. This
procedure gets a solution startSolution (or generally a list of solutions), iterate
over it and increase current pheromone values for every edge in a solution by
1=c(startSolution) where c(startSolution) is the cost of startSolution. As a
result, it allows us to connect the parts of our approach by passing the TS result
to ACO part and letting ACO search to prioritize elements of TS solution.</p>
        <p>After that the main loop of ACO algorithm starts. The stopping criterion
in this case is reaching maxIterationsW ithoutImprovement iterations without
Algorithm 2 Ant Colony Optimization algorithm
improving the best solution. Inside the main loop we have variables oldBest,
localBestList and current which represent the best solution in the previous
iterations, the list of best solutions in the current iteration and the current solution
under consideration. Variable oldBest is needed to compare current iteration
solutions only to the solutions from the previous iterations, localBestList is used
to update pheromone values at the end of iteration.</p>
        <p>Then an inner loop starts where a colony of ants is formed. Every single
solution for the problem which is represented by a single ant is constructed by
calling current runSingleAnt(). Then we have to update the current best
solution if necessary and add current solution for future pheromone update if
this solution is good enough. Both of these actions are done with the help of
isBetter(solution1; solution2; gap) function which gets two solutions and gap
value as parameters. If solution1 has a lower cost than solution2 or solution1
cost is within the gap percent from solution2 the function returns true. Since
runSingleAnt() can produce solutions where some customers are unserved,
isBetter(solution1; solution2; gap) returns true value immediately if the
number of unserved customers in solution1 is strictly less than in solution2.</p>
        <p>We call isBetter(current; best; 0) to test if a better solution than the
current best is found. Also isBetter(current; bestLocal; 5) is called when the
algorithm determines which solutions in the current iteration can be used for future
pheromones update. If a solution's cost is within 5% from the best one obtained
in the previous iterations or it has less unserved customers - it is added to
localBestList list. After the whole colony is generated we update the pheromone
values in updatePheromones(bestLocalList). Then the pheromone
evaporation procedure evaporate() is called. It reduces the pheromone value on every
edge: pheromoneij = pheromoneij . Here is the evaporation rate parameter
empirically set to 0:8.</p>
        <p>Algorithm 3 Creating a single ant solution
1: procedure runSingleAnt()
2: solution ;
3: repeat
4: isInserted addNewRoute(solution)
5: until isInserted == T rue &amp; getRoutesNumber(solution) &lt; jKj
6: return solution
7: end procedure</p>
        <p>Every candidate solution in our ACO approach is constructed using
runSingleAnt(), addNewRoute() and insertNextCustomer() procedures. These
procedures are described in Algorithm 3, Algorithm 4 and Algorithm 5
respectively. Function runSingleAnt() from Algorithm 3 forms a new solution from
scratch. Step by step it adds a new route by calling addNewRoute(solution).
The solution construction terminates when addNewRoute(solution) returns
false (there are no possible routes to add) or when the total number of routes
equals to the number of vehicles available. Algorithm 4 describes a new route
creation process. At rst we check if there are unserved customers in the solution
and set the current route under creation as an empty route. Then we call
procedure insertNextCustomer(route; unservedCustomers) to extend route until
there is a customer who can be added without any constraint violations. Finally,
addRoute(solution; route) is called to append a new route to the solution.</p>
        <p>Procedure insertNextCustomer(route; unservedCustomers) which is
presented in Algorithm 5 appends a new customer to route with some
probability. This probability depends on the current pheromone values for the arc
from the last customer to a new one and the cost of this arc. The list of
probabilities for every customer is initially empty. Then the algorithm
iterates over all the unserved customers. If the customer c can be inserted to the
end of route without time window and load violations we de ne its
probability to be chosen as pheromones[prev][c] . After iterating over all the unserved
costs[prev][c]
customers we check if there is a non-null value in probs for at least one
customer by calling isEmpty(probs). Strictly speaking values in probs cannot be
called probabilities so we normalize all these values with normalize(probs).
Then we choose a customer to be added to the route using probs as
probabilities inside getRandom(probs; unservedCustomers) and then add it in
addCustomer(nextCustomer; route).</p>
        <p>Algorithm 5 Customer insertion procedure
1: procedure insertNextCustomer(route; unservedCustomers)
2: probs ;
3: prev getLastCustomer(route)
4: for c 2 unservedCustomers do
5: if isFeasibleInsertion(c; route) = T rue then
6: probsc phercoosmtso[nperse[vp]r[ce]v][c]
7: end if
8: end for
9: if isEmpty(probs) then
10: return F alse
11: end if
12: normalize(probs)
13: nextCustomer getRandom(probs; unservedCustomers)
14: addCustomer(nextCustomer; route)
15: return T rue
16: end procedure
3.2</p>
      </sec>
      <sec id="sec-3-2">
        <title>Tabu Search Algorithm</title>
        <p>
          After ant colony part is nished we use its best solution to improve it with
tabu search technique. Our algorithm is inspired by the uni ed tabu search from
[
          <xref ref-type="bibr" rid="ref2">2</xref>
          ]. We consider a single neighborhood structure N (S) obtained by moving any
customer i in solution S from its current position to another position in the same
route or another route within the solution S.
        </p>
        <p>One of the features of our algorithm is the possibility of forming new routes,
which is de ned as moving a customer from its current route to a new route. Also
we allow all kind of constraints to be violated at some cost. Let c(S) be the total
cost of solution S, load(r) be the total load of some route r inside S, tw(r) be
the total lateness time for route r. For each type of infeasibility (time windows,
load, routes number) we introduce a control coe cient. These coe cients are
; ; for time windows, load and routes number violations respectively. The
key goal of these control coe cients is to force the tabu search algorithm to
decrease infeasibilities when we stay in the infeasible area for too long. This goal
is achieved by adding penalties for each type of violations to the cost function.
Therefore total solution cost is de ned as:
cost(S) = c(S) +</p>
        <p>X tw(r) +</p>
        <p>X max(0; load(r)
r2S
r2S</p>
        <p>Q) +
max(0; jSj
jKj)
(13)
where jSj is the total number of routes in the solution S. To prevent the search
from visiting only infeasible solutions we control the time spent inside infeasible
area by using dynamically adjusted control parameters ; ; . Initially all these
parameters are set to the starting value equal to 1. Each time we move from
solution Sm to solution Sm+1 while, for example, tw(Sm) &lt; tw(Sm+1), the
control parameter is multiplied by a xed scaling factor which is set to 1.4. If
we move to a solution where violation is increased comparing to the previous one,
the corresponding control parameter is always multiplied by the scaling factor.
On the other hand, if we move to a solution where violation is decreased the
control parameter stays the same. Only when a violation value becomes equal
to 0 the control parameter for this particular violation type is reset to 1. This
way the search is allowed to visit infeasible areas, but the exponential growth of
; ; parameters forces the algorithm to move back to feasible regions.</p>
        <p>As a part of tabu search technique we use short term memory to avoid the
search moving within some loops. We append moves to a tabu list structure and
they become prohibited for a xed numbertabuT enure = 10 of iterations. For
long term memory strategy we store the number of times each edge has been
transited to a solution. Each time we evaluate a move, the algorithm estimates
how many times the edges we want to include has been transited to the solution
before. The resulting value is also added to the cost function as a penalty. Such an
approach allows us to prevent some edges to be transited to a solution too often
and let the algorithm to consider other options. It provides global diversi cation
for the search.</p>
        <p>The pseudocode for the TS procedure is presented in Algorithm 6.
Algorithm 6 starts with de ning iterations, maxIterationsW ithoutImprovement
and best variables which represent iterations counter, stopping criterion for the
main loop and the current best solution respectively. Inside the main loop we
declare bestDelta which is the best cost di erence found between the current
solution and a possible candidate solution. Variable bestM ove stores the best
move found so far. Function fillPossibleMoves(currentSolution) looks for
all possible moves from the current solution. Then the algorithm iterates over
all possibleM oves from the previous step. getCost(currentSolution; move)
is run for each move to compute the cost delta. If this delta is better than
bestDelta found so far and move is not in the tabu list bestDelta is updated.
Here we use the rst descent strategy and perform the rst improving move
found. This way we leave the inner loop immediately when an improving move
Algorithm 6 Tabu Search algorithm
is found. updateTabuList(bestM ove) marks the customer and the source route
from bestM ove as tabu active elements. We prohibit any moves in which a
customer and a destination route are tabu active for tabuT enure iterations, where
tabuT enure equals to 10. Long term memory is updated by updateTransitions().
Then we apply the best move found with applyMove(currentSolution; bestM ove)
and adjust the control coe cients ; ; .
3.3</p>
      </sec>
      <sec id="sec-3-3">
        <title>Hybrid vs. Separate Algorithms</title>
        <p>We have performed several computational experiments to test our hybrid
approach in comparison to separate runs of ACO and TS algorithms. Our hybrid
approach termination criterion has been set to 100 iterations without
improvement for ACO part and 500 iterations without improvement for TS. Then we run
the hybrid approach for 30 times, nd the longest run and set this value as the
time limit for a single ACO run. For a fair comparison with a separate ACO
algorithm we have run ACO also for 30 times, each time with the determined time
limit. For TS algorithm we have started with one-customer routes solution and
limited its running time to the total time of 30 hybrid algorithm runs. The
results of our experiments are very similar for almost all instances from Solomon's
dataset, so we provide only some examples in Table 1. The best results among
all the algorithms are in bold. Here we can conclude that on all problems from
Solomon's dataset our hybrid approach shows a good performance in comparison
with separate ACO and TS runs.</p>
        <sec id="sec-3-3-1">
          <title>Instance</title>
        </sec>
        <sec id="sec-3-3-2">
          <title>Feasible</title>
        </sec>
        <sec id="sec-3-3-3">
          <title>Infeasible</title>
        </sec>
      </sec>
      <sec id="sec-3-4">
        <title>3.4 Infeasible Moves</title>
        <p>
          Visiting infeasible solutions has been considered for many combinatorial
optimization problems. Cordeau et al. [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ] used the moves violating time window
and load constraints for CVRPTW and obtained good quality results. In our
approach we allow only feasible solutions (with respect to time windows and
load constraints) to appear during the ACO stage. However, iterative nature of
solution construction procedure where routes are added one by one can lead to
using more vehicles than available. The proposed tabu search procedure allows
all kind of infeasible moves to be done (time windows, load, routes number). We
have performed some empirical tests to prove the e ectiveness and importance
of this feature as a part of our algorithm. The performance of the TS procedure
has been tested using two scenarios - when infeasible moves prohibited and
permitted. In both cases TS starts with the solution where every single customer is
served with its own vehicle. This way we have time window and load constraints
satis ed at the cost of big number of vehicles. Tabu search procedure is allowed to
do all kind of moves to reach the rst feasible solution and then infeasible moves
become prohibited in one of the scenarios. The experiment has been performed
on Solomon's dataset with running time limited to 60 seconds for a single TS
run. The results of this experiment show that in each test case allowing
infeasible moves leads to much better objective values than allowing only feasible ones.
Some examples are presented in Table 2. As a result of the experiment we can
report that allowing infeasible moves undoubtedly wins in comparison to only
feasible moves. The cost di erence is huge for all the problems from Solomon's
dataset.
We have performed the computational experiments using well known Solomon
dataset with 100 customers. Our algorithm is run 30 times for every problem
instance and the best results are reported. All experiments are performed on
Inter Core i3 3.7 Ghz processor with 8 GB RAM. The algorithm has been
programmed in C++ programming language under Windows 10 operating system.
The computational results for Solomon dataset are provided in Tables 3, 4 and
5. Each table contains instance name, objective value from [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ], our algorithm
min, average and max objective value, average running time and the gap value
in percent (the di erence between [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ] and our result). For clustered problem
instances (see Table 3) our ACO-TS algorithm results are equal to the results
from [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ] in 8 of 17 cases. For the rest of test instances we have found better
solutions with an improvement from 0,06 to 6,72%. Computations for random
Solomon instances are shown in Table 4. Here our algorithm has obtained worse
results in 3 of 23 cases with the di erence from 0,61 to 1,29% . For the
remaining instances our improvement varies from 0,72 to 11,62%. The last test scope is
random clustered instances where 4 of 16 problems are solved with worse results
(from 0,13 to 1,05%) and for 12 instances the objective value is improved up to
8,32% (see Table 5).
        </p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Conclusion</title>
      <p>
        In this paper we have presented a new hybrid heuristic approach for solving
the Capacitated Vehicle Routing Problem with Time Windows. Our algorithm
combines Ant Colony Optimization (ACO) approach and Tabu Search (TS)
technique. A move neighborhood with possibility of creating new routes and visiting
infeasible areas has been considered to improve the search process. The idea of
sequential usage of ACO and TS parts gives major improvements comparing
to separate runs of these algorithms. Computational experiments show better
results on 41 of 56 considered test instances comparing to the recent results of
Jawarneh &amp; Abdullah [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ].
      </p>
      <p>Acknowledgement. The research was funded by Russian Science Foundation
(RSF project No. 17-71-10107).</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Braysy</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gendreau</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Tabu search heuristics for the vehicle routing problem with time windows</article-title>
          ,
          <source>SINTEF Applied Mathematics</source>
          , Department of Optimisation, Oslo, Norway,
          <source>Internal Report STF42 A01022</source>
          (
          <year>2001</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Cordeau</surname>
            ,
            <given-names>J.F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Laporte</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mercier</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>A uni ed tabu search heuristic for vehicle routing problems with time windows</article-title>
          .
          <source>Journal of the Operational Research Society</source>
          <volume>52</volume>
          , 928{
          <fpage>936</fpage>
          (
          <year>2001</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Jawarneh</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Abdullah</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Sequential insertion heuristic with adaptive bee colony optimisation algorithm for vehicle routing problem with time windows</article-title>
          .
          <source>Plos one 10</source>
          , 1{
          <fpage>23</fpage>
          (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Koc</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bektas</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jabali</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Laporte</surname>
          </string-name>
          , G.:
          <article-title>A hybrid evolutionary algorithm for heterogeneous eet vehicle routing problems with time windows</article-title>
          .
          <source>Computers &amp; Operations Research</source>
          <volume>64</volume>
          ,
          <volume>11</volume>
          {
          <fpage>27</fpage>
          (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Laporte</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          :
          <article-title>The vehicle routing problem: an overview of exact and approximate algorithms</article-title>
          .
          <source>European Journal of Operational Research</source>
          <volume>59</volume>
          (
          <issue>3</issue>
          ),
          <fpage>345</fpage>
          -
          <lpage>358</lpage>
          (
          <year>1992</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Lau</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lim</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Liu</surname>
            ,
            <given-names>Q.</given-names>
          </string-name>
          :
          <article-title>Diversi cation of search neighbourhood via constraintbased local search and its applications to VRPTW</article-title>
          .
          <source>In: Proceedings 3rd International Workshop on Integration of AI</source>
          and
          <article-title>OR Techniques (CP-AI-OR)</article-title>
          . pp.
          <volume>1</volume>
          {
          <fpage>15</fpage>
          .
          <string-name>
            <surname>Kent</surname>
          </string-name>
          , United
          <string-name>
            <surname>Kingdom</surname>
          </string-name>
          (
          <year>2001</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Minocha</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tripathi</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Solving school bus routing problem using hybrid genetic algorithm: a case study</article-title>
          .
          <source>Advances in Intelligent Systems and Computing</source>
          <volume>236</volume>
          ,
          <issue>93</issue>
          {
          <fpage>103</fpage>
          (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Nai-Wen</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Chang-Shi</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          :
          <article-title>A hyrid tabu search for the vehicle routing problem with soft time windows</article-title>
          . In: Yang G. (eds.)
          <source>Proceedings of the 2012 International Conference on Communication, Electronics and Automation Engineering, Advances in Intelligent Systems and Computing</source>
          . vol.
          <volume>181</volume>
          , pp.
          <volume>507</volume>
          {
          <fpage>512</fpage>
          . Springer, Heidelberg (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Solomon</surname>
            ,
            <given-names>M.M.</given-names>
          </string-name>
          :
          <article-title>Algorithms for the vehicle routing and scheduling problems with time window constraints</article-title>
          .
          <source>Operations Research</source>
          <volume>35</volume>
          (
          <issue>2</issue>
          ),
          <volume>254</volume>
          {
          <fpage>265</fpage>
          (
          <year>1987</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Subramanian</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Penna</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Uchoa</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ochi</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          :
          <article-title>A hybrid algorithm for the eet size and mix vehicle routing problem</article-title>
          .
          <source>European Journal of Operational Research</source>
          <volume>221</volume>
          (
          <issue>2</issue>
          ),
          <volume>285</volume>
          {
          <fpage>295</fpage>
          (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Toth</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vigo</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>The Vehicle Routing Problem</article-title>
          .
          <source>Society for Industrial and Applied Mathematics</source>
          , Philadelphia, USA (
          <year>2002</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Toth</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vigo</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          : Vehicle Routing: Problems, Methods, and
          <string-name>
            <surname>Applications</surname>
          </string-name>
          .
          <source>Society for Industrial and Applied Mathematics. Philadelpia</source>
          , USA (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>