The MILP model is solvable with commercial solvers, such as CPLEX or Gurobi. However, the results of our preliminary experiments indicate that these solvers can only solve small-scale problems to optimality. In order to solve large-scale instances, we propose a tailored branch and price algorithm based on the Dantzig–Wolfe decomposition, where the master problem aims to find the best feasible combination of truck routes while the pricing sub-problem is to generate promising truck routes.
We first provide an overview of this approach and then explain the details in what follows. The branch and price algorithm is implemented in a branch and bound framework, where the LP relaxation of the master problem at each node is solved by column generation. To be specific, the algorithm starts by performing a Dantzig–Wolfe decomposition on the original mathematical model to get a new problem formulation known as the master problem. Rather than explicitly enumerating all columns (variables), the master problem considers only a subset of columns. It relaxes some constraints, such as the integrality restrictions on the variables, to form what is known as the restricted linear master problem (RLMP). Then, the column generation procedure is applied to the RLMP, with the help of which we can find the optimal solution to the RLMP. The column generation is an iterative procedure. In each iteration, the RLMP is first solved, and a vector of dual values associated with the constraints of the RLMP is achieved. The dual information is then passed on to the pricing sub-problem. Afterward, the pricing sub-problem is solved. If variables (columns) with negative reduced costs can be identified, they are added to RLMP, and the next iteration begins. Otherwise, an optimal solution of RLMP is obtained, and the column generation terminates. If this solution is feasible for the original master problem, then it is the optimal solution to the considered problem. Otherwise, we resort to branching and solve the LP relaxation at each node by column generation.
Figure 5 depicts the flowchart of our proposed branch and price algorithm.
4.1. Master Problem
In the MILP formulation, constraints (
2)–(
5) and (
12) bind all of the trucks together, while the rest are truck-specific constraints. The special structure of the MILP formulation allows us to implement the Dantzig–Wolfe decomposition and develop a branch and price algorithm to address the problem. Therefore, we decompose the original MILP model by truck to obtain a master problem that aims to find the optimal routes for the truck fleet. The following parameters are introduced to model the master problem. Let
R denote the set of all feasible truck routes; that is, the set of paths in
G that start from the source node, traverse some intermediate nodes and go back to the sink node while adhering to the flow conservation and the time-related constraints. For each route
, let
be the cost of truck route
r. Furthermore, let
be a parameter equal to 1 if node
i is included in route
r and 0 otherwise. As for decision variables, we define the binary variable
where
=1 if route
r is selected and
=0 otherwise. Moreover, we introduce
to indicate the starting time of serving node
i in route
r.
Then the master problem can be stated as follows:
Constraints (
2)–(
5) and (
12) of the MILP model are retained in the master problem, while the other constraints are considered in the pricing sub-problem, which will be presented in
Section 4.2. A subset of routes selected from
R forms a complete solution to the problem.
As stated above, the route set
R cannot be exhaustively enumerated due to its extraordinarily huge cardinality, making the explicit resolution of models (
15)–(
21) impractical. An alternative solution approach is the branch and price algorithm mentioned above. To this end, we relax the integrality restrictions on
. In order to get a simple pricing sub-problem, we also relax constraint (
20), which will be handled in the branching.
4.2. Pricing Sub-Problem
The pricing sub-problem is responsible for finding a feasible truck route with the most negative reduced cost using the dual values of the RLMP. If a route is found with negative reduced cost, its corresponding column is appended to the RLMP, and the RLMP is resolved. Otherwise, the RLMP reaches the optimal solution. To introduce the pricing subproblem, we consider the following notations. Let
,
,
and
be dual variables associated with constraints (
16)–(
19), respectively. We also introduce the decision variables
,
and
, which are the same as (
1)–(
14) with the index
k omitted. Additionally, we introduce
to indicate whether node
i is visited along the route; its values will be passed on to parameter
in the corresponding column
r of the RLMP. Then, the pricing sub-problem of finding a truck route with minimum reduced cost can be formulated as follows:
In this model, the objective function (
22) aims to identify the most negative reduced cost of all feasible routes. Constraints (
23)–(
25) define a complete route. Time-related constraints are enforced by constraints (
26)–(
30). Constraint (
31) defines the regions of decision variables.
The pricing sub-problem is NP-hard as it is essentially a variation of the elementary shortest path problem with resource constraints. The solution method for the sub-problem should ideally be efficient because we need to solve the pricing sub-problem multiple times during the column generation procedure. With no doubt, when dealing with large-sized problems, the pricing sub-problem is computationally challenging for CPLEX. In order to get an effective branch and price algorithm, it is imperative to seek an alternative solution approach to the pricing sub-problem.
Section 4.3 provides a favorable method.
4.3. Exact Bi-Directional Label Setting Algorithm
A labeling algorithm is able to provide an exact solution to this sub-problem, which is the elementary shortest path problem with resource constraints [
26,
27]. Righini and Salani [
28] developed a bi-directional label setting algorithm to accelerate the classical mono-directional labeling setting algorithm. We also develop an effective bi-directional labeling setting algorithm for the pricing sub-problem, with inspiration from the work of Righini and Salani [
28]. The bi-directional label setting algorithm splits the classical mono-directional search process into two parts: the forward extension and the backward extension. The forward extension extends a label from the source node, while the backward extension extends a label from the sink node. In our bi-directional label setting algorithm, time is considered the critical resource and only labels with a total time consumption of less than
are extended during the forward extension and the backward extension. After all forward and backward labels are extended, they are joined together to form complete routes, and then the optimal route can be filtered out. Hereafter, we describe the main parts of this algorithm, which include forward extension, backward extension and the joining procedure.
(1). Forward extension
In the forward extension, a partial path from the source node to a given node i is denoted by a multi-dimensional label . Here, is the accumulative reduced cost of the partial path; is the earliest arrival time at node i; is a binary visitation vector keeping track of the nodes already visited in the partial path; is the first node set of “open” IF/OF requests, of which the first node has been visited but the corresponding second has not yet.
Label
can extend along arc
to generate a new label
according to the following forward extension functions.
The newly generated label is feasible and kept if and other time-related constraints, along with precedence constraints, are met. Otherwise, it is discarded.
There could be massive labels during the extension. In order to obtain an efficient labeling setting algorithm, a dominance rule must be introduced to eliminate redundant partial paths whose extension will not lead to an optimal solution. For any two labels and at the same node i, label dominates label if the following conditions are satisfied. The conditions include: (1) ; (2) ; (3) ; (4) and any node that can be reached after without violating time-related constraints can also be reached after , earlier or at the same time.
Algorithm 1 provides the pseudo-code of the forward extension. For ease of presentation, let
and
represent the set of un-extended labels and the set of already extended labels at node
i, respectively. This forward extension starts by generating an initial label
and adds it into
. At each iteration, the extension process selects a label with the minimum cost from the unprocessed set and then extends it to reachable nodes. As for the selected label, it is eliminated from the corresponding set of un-extended labels and added to the set of already extended labels. As for the newly generated labels, they are added to the set of un-extended labels if they are not dominated by other existing labels. Additionally, existing labels will be discarded if they are dominated by the newly generated ones. Once the set of un-extended labels is empty, the forward extension terminates.
Algorithm 1: The forward extension. |
|
(2). Backward extension
In the backward extension, we use a label
to represent a backward-feasible partial route extending backwardly from the sink node. In the definition of
,
denotes the latest arrival time, and other elements are the same as those in
. Similar to the forward extension, a backward label
at node
i can be extended to a new label
at node
j according to the following backward extension functions.
Similarly, the newly generated label is feasible and kept if and other constraints are satisfied. Otherwise, it is discarded. The dominance rules are also the same as those in the forward extension, except that the dominating label is associated with a larger latest arrival time than the dominated label.
(3). Join
For a forward extension label
and a backward extension label
, they can combine to form a feasible route if the following conditions are satisfied:
Condition (
40) ensures that the visiting time relationship between node
i and node
j is met. Condition (
41) guarantees that each node is visited at most once by a route. Condition (
42) ensures that if the resultant route visits node
of an IF or OF drayage request, it should also visit the corresponding node
and vice versa.
4.7. Accelerating Strategies
We try to speed up the proposed branch and price algorithm by implementing the following two techniques.
4.7.1. Preprocessing of Time Windows
We attempt to reduce the solution space by the preprocessing of time windows, which has the potential to speed up the proposed algorithm. In this paper, the finish-to-start dependency and temporal constraints enable us to narrow the time windows of some nodes. First, the earliest time a truck can arrive at a node is when it arrives directly from the depot, and the latest time it can leave is when it returns directly to the depot. Therefore, for node i, its time window can be narrowed from [] to [max, min].
Note that a finish-to-start temporal dependency exists between the two nodes of an IF/OF request. Moreover, a truck can visit a depot node if and only if the depot node has already been visited by a truck. Temporal dependency constraints like these allow a further reduction of time windows for some nodes using the following pairwise reduction technique. Specifically, assume that two nodes i and j are connected with temporal dependency constraint and quantifies the required time gap between them; we can tighten the time window of node i to [, min] and the time window of node j to [max, ].
4.7.2. Heuristic Column Generators
Since any column that has a negative reduced cost has the potential to reduce the objective value of the RLMP, heuristic algorithms could be a suitable alternative to find such a column and thus cut down on the number of calls to time-expensive exact algorithms. This, in turn, significantly speeds up the overall branch and price algorithm. Therefore, we propose two heuristic versions of the bi-directional label setting algorithm to generate columns with a negative reduced cost. The pricing sub-problem is solved by the exact bi-directional label setting algorithm to verify whether an optimal solution to the RLMP has been obtained only when heuristic versions fail to find columns with negative reduced cost.
(1). Greedy bi-directional label setting algorithm
In the greedy bi-directional label setting algorithm, only a single label is considered and extended to the nearest nodes in terms of the accumulative reduced cost at each step during the forward and backward extensions. Take the forward extension as an example. Given that the label is extended to node
i in the form
, we then compute the set
of reachable nodes, which satisfy the following conditions:
Condition (
44) indicates that extending from node
i to node
j will not exceed the time consumption limit. Condition (
45) states that node
j is not visited yet. Condition (
46) ensure that the second node of an IF/OF request can not be reachable unless the associated first node has already been visited. After determining all possible successive nodes, we choose the node
that can minimize the current accumulative reduced cost, that is,
Then, we extend the label to the node using the same extension functions (
32)–(
35) described for the exact label setting algorithm, and we iterate until it reaches the time consumption limit
. The backward extension performs in a similar way.
(2). Heuristic bi-directional label setting algorithm using an incomplete graph
In the heuristic bi-directional label setting algorithm using an incomplete graph, we discard all arc such that max , where parameter is set between 0 and 1. In addition, the dominance rules and in the forward extension and the corresponding dominance rules and in the backward extension are relaxed. The relaxation results in a larger amount of dominations and thus discards a large number of labels. As a result, the forward and backward label extensions can be completed in a shorter time. When the heuristic version of the bi-directional label setting algorithm runs on the incomplete graph, it works quite fast, and it can often identify negative reduced cost columns, despite the possibility of missing the optimal solution.
In our experiments, we set and find that the heuristic bi-directional label setting algorithm using an incomplete graph performs rather well and identifies many negative reduced cost columns in a much shorter time than the same algorithm on the complete graph.