SCIP-Jack—a solver for STP and variants with parallelization extensions
Abstract
The Steiner tree problem in graphs is a classical problem that commonly arises in practical applications as one of many variants. While often a strong relationship between different Steiner tree problem variants can be observed, solution approaches employed so far have been prevalently problem-specific. In contrast, this paper introduces a general-purpose solver that can be used to solve both the classical Steiner tree problem and many of its variants without modification. This versatility is achieved by transforming various problem variants into a general form and solving them by using a state-of-the-art MIP-framework. The result is a high-performance solver that can be employed in massively parallel environments and is capable of solving previously unsolved instances.
Mathematics Subject Classification
90C10 90C271 Introduction
The Steiner tree problem in graphs (STP) is one of the classical \(\mathcal {NP}\)-hard problems [1]. Given an undirected connected graph \(G=(V,E)\), costs \(c: E \rightarrow \mathbb {Q}_{\ge 0}\) and a set \(T \subseteq V\) of terminals, the problem is to find a tree \(S\subseteq G\) of minimum cost that spans T.
Practical applications of the STP can be found for instance in the design of fiber-optic networks [2]. However, it is more common that practical applications are formulated as a particular variant of the STP [3, 4, 5, 6].
The announcement of the 11th DIMACS Challenge initiated our work with an investigation into the STP solver Jack-III, described in [7]. The model and code of Jack-III provided a base for the development of a general STP solver—being able to solve many of the problem variants. However, Jack-III is more than 15 years old. As such, many modern developments regarding STP solution methods and MIP solving techniques are not available. Our approach to address this limitation of Jack-III includes the combination of the model used in [7] with the start-of-the-art MIP-framework SCIP [8, 9]. Employing SCIP naturally facilitated the incorporation of many algorithm developments from the past two decades and provided a platform for the development of new methods.
Section 2 demonstrates the impact of transitioning from a simple, ad hoc created branch-and-cut code to the use of a full fledged, state-of-the-art MIP-framework.
Section 3 shows how to employ the versatility of MIP models to not only solve a whole class of related problem variants, but—in combination with further algorithmic advances—be competitive with or even superior to problem-specific state-of-the-art solvers.
Finally, in Sect. 4 the potential from using hundreds of CPU cores to solve a single problem is illustrated.
In general, it can be stated that a branch-and-cut based Steiner tree solver has three major components. First, preprocessing is extremely important. Apart from some instances either specifically constructed or insightfully handpicked to defy presolving techniques, such as the PUC [12] and I640 [13] test sets, preprocessing is often able to significantly reduce instances. Results presented in the PhD theses of Polzin [14] and Daneshmand [15] report an average reduction in the number of edges of \(78\,\%\), with many instances being solved completely by presolving. In computational experiments performed for this paper, reduction rates of more than \(90\,\%\) for some Steiner problem variants (e.g., for the maximum-weight connected subgraph problem) are obtained.
Second, heuristics are needed to find good or even optimal solutions and help find strong upper and lower bounds quickly. In our experiments, for more than \(90\,\%\) of the instances that were not already solved during preprocessing the final solution was found by a heuristic. Furthermore, heuristics can be especially important for hard instances, for which the dual bound often stays substantially below the optimum for a long time.
Finally, the core of the approach is constituted by the branch-and-cut procedure used to compute lower bounds and prove optimality. The results of [14] show that many STP instances can already be solved by reduction- and heuristic-based approaches [14]. However, the failure of the state-of-the-art solver described in [14] to solve a number of hard instances that defy preprocessing highlights the importance of strong branch-and-cut procedures.
2 From simple hand tailored to off-the-shelf state-of-the-art
The model employed in the solver SCIP-Jack uses the flow-balance directed cut formulation described in [7]. This formulation provides a tight linear programming (LP) relaxation. It is built upon the directed equivalent of the STP, the Steiner arborescence problem (SAP): Given a directed graph \(D=(V,A)\), a root \(r \in V\), costs \(c: A \rightarrow \mathbb {Q}_{\ge 0}\) and a set \(T \subseteq V\) of terminals, a directed tree \((V_S,A_S) \subseteq D\) of minimum cost is required such that for all \(t \in T\), \((V_S,A_S)\) contains exactly one directed path from r to t. Each STP can be transformed to an SAP by replacing each edge with two anti-parallel arcs of the same cost and distinguishing an arbitrary terminal as the root. This procedure results in a one-to-one correspondence between the respective solution sets, see [16] for a proof.
An integer program for the SAP can be obtained by introducing a variable \(y_a\) for each arc \(a\in A\) with the interpretation \(y_a=1\) if a is in the Steiner arborescence, and \(y_a=0\) otherwise. These considerations set the stage for the following formulation:
Formulation 1
where \(N=V{\setminus } T\), \(\delta ^+(X):=\{(u,v)\in A| u\in X, v\in V{\setminus } X\}\), \(\delta ^-(X):= \delta ^+(V {\setminus } X)\) for \(X\subseteq V\); i.e., \(\delta ^+(X)\) is the set of all arcs going out of, and \(\delta ^-(X)\) the set of all arcs going into X.
Constraints (4) strengthen the LP-relaxation of Formulation 1, see [13]. However, the remaining additional constraints (3), (5), and (67) do not improve the value of the LP-relaxation; although they nevertheless lead to an empirical speed-up in practical solving [14]. Further details of Formulation 1 are given in [7].
Since the model potentially contains an exponential number of constraints a separation routine is employed. Violated constraints, are separated during the execution of the branch-and-cut algorithm. Jack-III employed this problem formulation along with a model-specific branch-and-bound search. Strong branching [17] was used with a depth-first search node selection.
The implementation of SCIP-Jack is based on the academic MIP solver SCIP [8, 9]. Besides being one of the fastest non-commercial MIP solvers [18], SCIP is a general branch-and-cut framework. The plugin-based design of SCIP provides a simple method of extension to handle a variety of specific problem classes.
In the case of SCIP-Jack, the first plugins implemented were a reader to read problem instances and problem data to store the graph and build the model within SCIP. Within these plugins it was possible to re-use the reading methods and data structures of Jack-III. However, each of these had to be extended as part of the implementation in SCIP-Jack. The heart of the new implementation is a constraint handler that checks solutions for feasibility and separates any violated model constraints. Again, separation methods of the more than 15-year old code are re-used in SCIP-Jack, while SCIP provides a filtering of cuts to improve numerical stability and dynamic aging of the generated cuts. Additionally, the general-purpose separation methods that exist within SCIP are used, which include Gomory and mixed-integer rounding cuts.
Jack-III includes many STP-specific preprocessing techniques, as described in [7]. However, for SCIP-Jack only the Degree-Test (DT) [19] method has been reused. All other tests were replaced by more efficient variants, which have emerged in the decade following the release of Jack-III, cf. [14]. Moreover, after the DIMACS Challenge work on reduction techniques continued and various new reduction methods were developed for several of the Steiner problem variants described in this paper. They are a pivotal factor in the improved performance of SCIP-Jack as compared to its predecessor participating in the Challenge—the main motivation behind the development of the new methods was to enhance SCIP-Jack [16]. Due to the large number of presolving techniques and their complexity it is not possible to provide individual descriptions within the frame of this paper. The reader is referred to [16] for detailed information. The preprocessing techniques implemented in SCIP-Jack are listed in Table 2 according to the abbreviations used in [16]; the full names of the preprocessing techniques can be found in Sect. B of the appendix. Supplementary to the presolving techniques, a Steiner problem specific propagator is implemented that fixes edges during the branch-and-cut according to the same criteria used in the dual-ascent (DA) reduction method [13, 14].
For the branch-and-bound search a straightforward STP-specific branching-rule has been implemented. Specifically, instead of branching on variables, i.e., in the case of the STP on arcs, vertex branching [20] is employed. This has been identified empirically by the authors of this publication to be stronger than the generic branching rules natively implemented in SCIP. During the branch-and-bound procedure, vertex branching selects a Steiner vertex to be rendered a terminal in one child node and excluded in the second child.
The node selection is organized by SCIP and is performed with respect to a best estimate criterion—interleaved with best bound and depth-first search phases [21].
One dual and several primal STP-specific heuristics have been implemented in SCIP-Jack—the dual-ascent heuristic (DA), the repetitive shortest path heuristic (RSPH), in the form proposed in [22], an improvement heuristic (VQ) [23], the reduction-based heuristics prune (P) and ascend-and-prune (AP) [14], and a new recombination heuristic (RC).
The dual-ascent algorithm was introduced in [24]. It exhibits a time complexity of \(O(|E| \min \{|V||T|,|E|\})\), see [14], but is usually faster than this bound might suggest; efficient implementations can be found in [13, 25]. In SCIP-Jack the implementation of [25] is used. At termination, dual-ascent provides a dual solution to a reduced version of Formulation 1 that contains only the constraints (2) and (67). This solution involves directed paths along arcs of reduced cost 0 from the root to each other terminal. The heuristic is executed prior to the branch-and-cut procedure and includes all cuts corresponding to the dual solution found by DA. Due to strong duality, the objective value of the first LP solved during branch-and-cut corresponds to the objective value of the dual solution found by DA.
On the primal side, SCIP-Jack includes the well-known repetitive shortest paths heuristic. Starting with a single vertex, the heuristic iteratively connects the current subtree to a nearest terminal by a shortest path. This procedure is reiterated until all terminals are spanned. The heuristic is implemented in Jack-III, but in its original form detailed by [26]. In SCIP-Jack an empirically faster version based on Dijkstra’s algorithm [22] is implemented. In addition to being used as an initial heuristic, the RSPH is also employed, with altered costs, during the branch-and-cut. Specifically, given an LP optimal solution \(y \in \mathbb {Q}^A\), the heuristic is called with the costs \((1 - y_a) \cdot c_a\) for all \(a \in A\). Thus, a stimulus for the heuristic to choose arcs contained in the LP solution is provided. Moreover, the heuristic is started from several distinct vertices, making it empirically much stronger (by default 100 start vertices for the initial call at the root node, 50 at the beginning of the processing of each other branch-and-bound node and 15 for calls within the cut loop). Terminals are preferred as start points, but vertices that exhibit a high (fractional) out-degree in the incumbent LP solution are also selected. The heuristic is called before and after the processing of a (branch-and-bound) node, after each cut loop and after each LP solving during a cut loop.
The improvement heuristic VQ is a combination of the three local search heuristics vertex insertion, key-path exchange, and key-vertex elimination as described in [23]. The basic idea of vertex insertion (denoted by V) is to connect further vertices to an existing Steiner tree in such a way that expensive edges can be removed. Key-vertices with respect to a tree S are either terminals or vertices of degree at least three in S. Correspondingly, a key-path is a path in S with a key-vertex at both endpoints, but without any intermediary key-vertices. A key-path exchange attempts to replace existing key-paths by others that are less costly. Similarly, for key-vertex elimination in each step a non-terminal key-vertex and all adjoining key-paths (except for the key-vertices at their respective ends) are extracted and an attempt is made to reconnect the disconnected subtrees at a lower cost. As in [23], the combination of key-path exchange and key-vertex elimination is denoted by Q. VQ is called for a newly found solution whenever the latter is among the five best known solutions.
The prune heuristic comes with a less customary approach obtained by building upon bound-based reductions introduced in [14] that were afterwards slightly improved in [16]. While for the original bound-based reductions an upper bound is provided by the weight of a given Steiner tree, in the prune heuristic the bound is reduced such that in each iteration a certain proportion of edges and vertices is eliminated. Thereupon, all exact reductions methods are executed on the reduced graph, motivated by the assumption that the (possibly inexact) eliminations performed by the bound-based method will allow for further (exact) reductions. To avoid infeasibility, a Steiner tree is initially computed by using RSPH and afterwards the elimination of any of its vertices by the bound-based method is being prohibited. Within SCIP-Jack the heuristic is called whenever a new best solution has been found.
Another powerful heuristic approach is borne by the combination of the prune heuristic and dual-ascent: the ascend-and-prune [14] method. Ascend-and-prune is motivated by the assumption that certain similarities exist between an optimal Steiner tree and the LP solution that is identified by the reduced costs provided by dual-ascent. Thereupon, the heuristic attempts to find an optimal solution on the graph constituted by the undirected edges corresponding to zero-reduced-cost paths from the root to all additional terminals. On this subgraph a solution is computed by first employing an (exact) reduction package and then using the prune heuristic. Within SCIP-Jack, ascend-and-prune is performed after each execution of dual-ascent, in particular prior to the initiation of the branch-and-cut procedure.
Finally, the recombination of given solutions to find improved primal bounds is performed by the RC heuristic. In the following, RC is described in the context of an STP, but it can be naturally extended to cover all Steiner tree problem variants discussed in this paper. First, the set of solutions to be considered for recombination is defined by \(\mathcal {L}\); in the case of SCIP-Jack\(\mathcal {L}\) comprises the best found solutions and its cardinality is bounded from above by 50.
The RC heuristic is clustered around the n-merging operation: Given a new solution S, in one run consecutively six 2-, two 3- and one 4-merge operations are performed. When a solution \(S'\) is generated during an n-merging with a smaller cost than S, the solution S is replaced by \(S'\), which is attempted to be added to \(\mathcal {L}\). Moreover, in this case the n-merging is performed again in a new run that is started after the conclusion of the current run. The total number of runs is limited to ten. RC is called whenever r new solutions have been found compared to its last execution. Initially, r is set to 4 and modified throughout the solution process, setting \(r := 0\) if a solution has been improved during the execution of RC and \(r:=\min \{r+1, 4\}\) otherwise.
By the combination of the previously described heuristics the ability to generate good primal solutions quickly is considerably improved, as compared to employing SCIP-Jack without Steiner problem specific heuristics. Furthermore, this combination is able to eventually find optimal solutions to most problems.
2.1 Computational experiments
Several thousand instances of 15 Steiner tree problem variants were collected as part of the DIMACS Challenge. To show the performance of the developed general Steiner tree problem solver, computational experiments on ten variants of the STP will be presented.
All computational experiments described were performed on a cluster of Intel Xeon X5672 CPUs with 3.20 GHz and 48 GB RAM, running Kubuntu 14.04. A development version of SCIP 3.2.1 was used and SoPlex [28] version 2.2.1 was employed as the underlying LP solver. Moreover, the overall run time for each instance was limited by 2 h. If an instance was not solved to optimality within the time limit, the gap is reported, which is defined as \(\frac{|\text {pb}-\text {db}|}{\max \{|\text {pb}|,|\text {db}|\}}\) for final primal bound (pb) and dual bound (db). The average gap is obtained as an arithmetic mean. The averages of the number of nodes and the solving time are computed by taking the shifted geometric mean [21] with a shift of 10.0 and 1.0, respectively.
Computational results for STP instances
Optimal | Timeout | |||||
---|---|---|---|---|---|---|
Test set | # | Solved | \(\varnothing \) nodes | \(\varnothing \) time [s] | \(\varnothing \) nodes | \(\varnothing \) gap (%) |
X | 3 | 3 | 1.0 | 0.3 | – | – |
E | 20 | 20 | 1.4 | 1.0 | – | – |
ALUE | 15 | 12 | 1.7 | 12.4 | 1.0 | 1.7 |
I640 | 100 | 78 | 17.7 | 9.3 | 85.3 | 0.8 |
PUC | 50 | 8 | 406.8 | 36.9 | 121.9 | 3.5 |
vienna-i-simple | 85 | 69 | 2.7 | 149.2 | 1.8 | 0.0 |
A summary of the computational performance of SCIP-Jack on the five STP test sets is presented in Table 1. Each line in the table shows aggregated results for the test set specified in the first column. The second column, labeled #, lists the number of instances in the test set, the third column states how many of them were solved to optimality within the time limit. The average number of branch-and-bound nodes and the average running time in seconds of these instances are presented in the next two columns, named optimal. The last two columns, labeled timeout, show the average number of branch-and-bound nodes and the average gap for the remaining instances, i.e., all instances that hit the time limit. In the next section, similar tables will be presented for different STP variants. If all instances of a particular variant are solved to optimality within the time limit, the timeout columns are omitted. Detailed instance-wise computational results of all experiments can be found in Appendix C.
The instances from the X test set is solved without any branching and in very short run times; even the largest instance, consisting of more than 200,000 edges, requires only one second. Similarly, SCIP-Jack solves the entire, mostly sparse, E test set to optimality within an average time of 1.0 s. The only instance requiring branching is e18, which also exhibits a run time much longer than any other of that test set, 104.5 s. The, similarly sparse, VLSI-derived ALUE instances are harder to solve for SCIP-Jack: three problems remain unsolved with gaps of 1.4, 1, 5, and 2.3%, while the solved instances require an average run time of 12.4 s. For only three of the instances branching is performed, and none requires more than five nodes.
SCIP-Jack exhibits a distinctively disparate behavior on the I640 test set: While more than half of the instances are solved within a few seconds, 22 problems remain unsolved after 2 h. As compared with the previous instances the number of branch-and-bound nodes is much higher—up to 4481.
The PUC test set proves to be much more difficult for SCIP-Jack. This is unsurprising since more than half of the instances in this set still remain unsolved. SCIP-Jack only solves eight of 50 instances and none at the root node. More than half of the unsolved instance are still processing the root node when terminated. Finally, 80% of the vienna instances set are solved by SCIP-Jack within the time limit, with none of the remainder exhibiting an optimality gap of more than 0.01%. As compared to the PUC test set, the number of branch-and-bound nodes is much smaller and more than half of the instances can be solved in the root.
The results demonstrate an improvement of SCIP-Jack in two dimensions. First, compared to Jack-III, SCIP-Jack empirically yields significantly better results, as exemplified by the E test set. While Jack-III and SCIP-Jack both manage to solve all instances in relatively short times, there is a large difference in the run times achieved by each. Jack-III needs more than one second for all but one instance. The hardest instance, e18, requires more than 11 min. In contrast, SCIP-Jack solves all but three instances in less than a second, with a maximum runtime (for e18) of about 2 min. On average, SCIP-Jack is more than two orders of magnitude faster on the E test set than Jack-III.
Problem variants solved by SCIP-Jack
Variant | Abbreviation | Preprocessing | Heuristics |
---|---|---|---|
Steiner tree in graphs | STP | DT, NV/SL, SD/SDC, NTD\(_{3,4}\), BND, DA | P, AP, RSPH, VQ, RC |
Steiner arborescence | SAP | BR, RPT, CT, SDC, PNT, BND, DA | AP, RSPH, RC |
Rectilinear Steiner minimum tree | RSMTP | DT, NV/SL, SD/SDC, NTD\(_{3,4}\), BND, DA | P, AP, RSPH, VQ, RC |
Node-weighted Steiner tree | NWSTP | DA | AP, RSPH, RC |
Prize-collecting Steiner tree | PCSTP | UNT/DT, SD/SDC, NTD\(_3\), NV/SL, BND, DA | P, AP, RSPH, VQ, RC |
Rooted prize-collecting Steiner tree | RPCSTP | UNT/DT, SD/SDC, NTD\(_3\), NV/SL, BND, DA | P, AP, RSPH, VQ, RC |
Maximum-weight connected subgraph | MWCSP | UNPV/BT, CNS, NNP, NPV\(_{2,3,4,5}\), DA | AP, RSPH, RC |
Degree-constrained Steiner tree | DCSTP | None | RSPH, RC |
Group Steiner tree | GSTP | DT, NV/SL, SD/SDC, NTD\(_{3,4}\), BND, DA | P, AP, RSPH, VQ, RC |
Hop-constrained directed Steiner tree | HCDSTP | CBND, HBND | RSPH, RC |
The second dimension is seen when comparing the performance of the current version of SCIP-Jack with its predecessor participating in the DIMACS Challenge, cf. [30]. In particular, computational experiments demonstrate that the current version is significantly stronger. Taking the example of the I640 test set, one sees additional 13 instances being solved to optimality within 2 h. Also, the run time for several instances (such as i640-043) is reduced by a factor of more than a hundred.
The improvement of the current version of SCIP-Jack as compared with the previous version that competed in the DIMACS Challenge can be put down to several major algorithmic improvements. First, the implementation of new or enhanced problem-specific preprocessing methods, such as the dual-ascent reductions [31]. Second, the implementation of the new heuristics dual-ascent, and, on the primal side, prune, ascend-and-prune, and an improved version of the recombination heuristic. Third, the implementation of a problem-specific propagator and branching rule.
However, while the current version of SCIP-Jack proves to be competitive with the best exact results obtained at the DIMACS Challenge, it falls short of matching the fastest STP solver described in the literature [14, 31]. Apart from very easy instances, such as in X, and the hard PUC test set, for which SCIP-Jack yields comparable results, the solver described in [14] (which uses the commercial CPLEX 12.6^{1}) is more than an order of magnitude faster for most instances [31].
3 From single problem to class solver
SCIP-Jack is developed as a general STP solver—being able to solve many problem variants. An overview of the problem variants solved by SCIP-Jack is given in Table 2. This table also presents the heuristics (see Sect. 2) and presolving techniques (see Table 14) that are applied to each of the problem variants. Specific transformation approaches have been employed in order to solve each variant by SCIP-Jack. Each of these transformations will be described in detail. Throughout this section the weights of an (undirected) edge e and an (directed) arc a are denoted by \(c_e\) and \(c_a\) respectively and the weight of a vertex v by \(p_v\).
3.1 The Steiner arborescence problem
As SCIP-Jack transforms each Steiner tree problem to a Steiner arborescence problem (SAP), the branch-and-cut framework can be used for general SAPs with only minor modifications. Slightly modified forms of the RSPH, AP, and RC heuristics can also be used for SAP instances. However, due to the missing bi-direction with equal cost, the VQ heuristic cannot be applied. As to presolving techniques, besides DA, specific SAP reduction methods have been implemented—as described in [16].
Computational results for SAP instances
Test set | # | Solved | \(\varnothing \) nodes | \(\varnothing \) time [s] |
---|---|---|---|---|
gene | 10 | 10 | 1.0 | 0.2 |
gene2002 | 9 | 9 | 1.0 | 0.1 |
3.2 The rectilinear Steiner minimum tree problem
The rectilinear Steiner minimum tree problem (RSMTP) can be described as follows: Given a number of \(n \in N\) points in the plane, find a shortest tree consisting only of vertical and horizontal line segments, containing all n points. The RSMTP is \(\mathcal {NP}\)-hard, as proved in [33], and has been the subject of various publications, see [34, 35, 36]. In addition to this two-dimensional variant, a generalization of the problem to the d-dimensional case, with \(d \ge 3\), will be considered. The presented computational experiments include instances that derive from a cancer research application [3] and exhibit up to eight dimensions.
Hanan [37] reduced the RSMTP to the Hanan-grid obtained by constructing vertical and horizontal lines through each given point of the RSMTP. It is proved in [37] that there is at least one optimal solution to an RSMTP that is a subgraph of the grid. Hence, the RSMTP can be reduced to an STP. Subsequently, this construction and its multi-dimensional generalization [38] is exploited in order to adapt the RSMTP to be solved by SCIP-Jack. Given a d-dimensional, \(d \in \mathbb {N} {\setminus } \{1\}\), RSMTP represented by a set of \(n \in N\) points in \(\mathbb {Q}^d\), the first step involves building a d-dimensional Hanan-grid. By using the resulting Hanan-grid an STP \(P = (V,E,T,c)\) can be constructed, which is handled equivalently to a usual STP problem by SCIP-Jack.
It certainly bears mentioning that this simple Hanan-grid based approach is not expected to be competitive with highly specialized solvers such as GeoSteiner [34] in the case \(d=2\). However, a motivation for the implementation in SCIP-Jack is to address the obvious lack of solvers—specialized or general—that can provide solutions to RSMTP instances in dimensions \(d \ge 3\). Still, it is not practical to apply the grid transformation for large instances in high dimension, as the number of both vertices and edges increases exponentially with the dimension.
A variant of the RSMTP is the obstacle-avoiding rectilinear Steiner minimum tree problem (OARSMTP). This problem requires that the minimum-length rectilinear tree does not pass through the interior of any specified axis-aligned rectangles, denoted as obstacles. SCIP-Jack is easily extended to solve the OARSMTP with a simple modification to the Hanan grid approach applied to the RSMTP. This modification involves removing all vertices that are located in the interior of an obstacle together with their incident edges as well as all edges crossing an obstacle. There was no competition for this variant in the DIMACS Challenge and for the OARSMTP, unlike the RSMTP, optimal solutions to all instances submitted to the Challenge have already been published. While SCIP-Jack is capable of solving all instances submitted to the DIMACS Challenge, computational experiments for this problem variant have been omitted.
Computational results The experiments on the RSMTP involve solving five of the test sets submitted to the DIMACS Challenge. These test sets contain instances ranging from less than 10 to 10,000 points and from 2 to 8 dimensions. Specifically, the test sets used in the presented experiments include the two-dimensional estein instances with up to 60 nodes, the solids test set with three-dimensional instances whose terminals are the vertices of the five platonic solids, and the real-world derived cancer instances in up to eight dimensions. Computational results are summarized in Table 4 with the detailed results listed in the appendix.
The vast majority of the estein40 and estein50 instances can be solved to optimality, 14 and 13 out of 15 respectively. For all but one of these instances, the optimal solution was found at the root node. Also, none of the unsolved instances exhibits an optimality gap above 0.7% at the time limit. However, as the number of terminals increases, so does the run time and the number of unsolved instances: only six of the estein60 instances can be solved within 2 h, requiring more than twice as much time on average than the estein50 problems. The optimality gap of the unsolved instances ranges from 0.1 to 1.6%. Only one of the estein60 instances requires branching—using 82 branch-and-bound nodes.
The results in Table 4 show the capabilities of SCIP-Jack to solve instances in three dimensions. Specifically, all but one of the solids instances are solved to optimality. The unsolved instance, dodecahedron, is terminated after 2 h with an optimality gap of 0.5% and 8435 branch-and-bound nodes. All other instances are solved in less than a second.
Computational results for RSMTP instances
Optimal | Timeout | |||||
---|---|---|---|---|---|---|
Test set | # | Solved | \(\varnothing \) nodes | \(\varnothing \) time [s] | \(\varnothing \) nodes | \(\varnothing \) gap (%) |
sestein40 | 15 | 14 | 1.0 | 255.9 | 144.0 | 0.2 |
estein50 | 15 | 13 | 1.4 | 1868.0 | 31.8 | 0.4 |
estein60 | 15 | 6 | 1.0 | 5396.6 | 3.9 | 0.7 |
solids | 5 | 4 | 4.9 | 0.2 | 8435.0 | 0.5 |
cancer | 14 | 13 | 1.0 | 3.0 | 1.0 | 100.0 |
3.3 The node-weighted Steiner tree problem
The node-weighted Steiner tree problem (NWSTP) is a generalization of the Steiner tree problem in graphs where the edges and, additionally, the vertices are assigned non-negative weights. The objective is to connect all terminals while minimizing the weight summed over both vertices and edges spanned by the corresponding tree.
Transformation 1
- 1.
Set \(V' := V\), \(T':=T\), \(A':=\lbrace (v,w) \in V' \times V' : \lbrace v,w \rbrace \in E \rbrace \).
- 2.
Define \(c': A' \rightarrow \mathbb {Q}_{\ge 0}\) by \(c'_a = c_{\lbrace v,w \rbrace } + p_w\), for \(a = (v,w) \in A'\).
- 3.
Choose a root \(r' \in T'\) arbitrarily.
Lemma 1
The resulting SAP can be directly solved by SCIP-Jack. However, due to efficiency reasons only a subset of the heuristics and reduction techniques are employed, see Table 2.
Computational results Two NWSTP instances derived from a computational biology application are part of the DIMACS Challenge. The two instances differ drastically in their size. The first has more than 200,000 nodes—55,000 of them terminals—and almost 2.5 million edges, while the smaller instance comprises merely 386 nodes, 1477 edges, and 35 terminals.
The size of the first instance proves to be prohibitive for SCIP-Jack. The memory requirements of this instance quickly exceeds the limits of SCIP-Jack when applying the default settings on a modest machine. To evaluate the ability of SCIP-Jack to solve this particular instance, a runtime of 72 h was used on a machine with 386 GB memory. To render the presolving more effective, modified versions of the STP tests NVO, SD and NTD\(_3\) were employed to solve the NWSTP instance (in addition to the default preprocessing). After the application of the reduction techniques, the resulting graph contains 187,933 nodes and 986,703 edges. This equates to a 8.6 and 60.4% decrease in the number of nodes and edges respectively. SCIP-Jack fails to solve this instance to optimality, but it does achieve a nearly-optimal primal bound of 656,970.94 with an optimality gap of 0.0049%. The much smaller second instance is solved by SCIP-Jack at the root node within 0.1 s.
3.4 The prize-collecting Steiner tree problem
In contrast to the classical Steiner tree problem, the required tree for the prize-collecting Steiner tree problem (PCSTP) needs only to span a (possibly empty) subset of the terminals. However, a non-negative penalty is charged for each terminal not contained in the tree. Hence, the objective is to find a tree of minimum weight, given by both the sum of its edge costs and the penalties of all terminals not spanned by the tree. A profound discussion on the PCSTP is given in [4] that details real-world applications and introduces a sophisticated specialized solver.
Prior to the discussion of the prize-collecting Steiner tree problem, a variation is introduced, the rooted prize-collecting Steiner tree problem (RPCSTP). The RPCSTP incorporates the additional condition that one distinguished node r, denoted the root, must be part of every feasible solution to the problem. It is assumed that \(p_r = 0\). The RPCSTP can be transformed into an SAP as follows:
Transformation 2
(RPCSTP to SAP)
- 1.
Set \(V' := V\), \(A':=\lbrace (v,w) : \lbrace v,w \rbrace \in E \rbrace \), \(r':=r\) and \(c': A' \rightarrow \mathbb {Q}_{\ge 0}\) with \(~c'_a = c_{\{ v,w \} } \) for \(a = (v,w) \in A'\).
- 2.
Denote the set of all \(v \in V\) with \(p_v > 0\) by \(T = \{ t_1,\ldots ,t_s\}\). For each node \(t_i \in T\), a new node \(t_i'\) and an arc \(a = (t_i,t_i')\) with \(c'_a = 0\) is added to \(V'\) and \(E'\) respectively.
- 3.
Add arcs \((r',t'_i)\) for each \(i \in \{ 1,\ldots ,s\}\), setting their respective weight to \(p_{t_i}\).
- 4.
Define the set of terminals \(T':=\{{t'}_1,\ldots ,{t'}_s\}\).
Lemma 2
Transformation 3
(PCSTP to rcSAP)
Lemma 3
For the PCSTP and RPCSTP a vast number of reduction techniques—described in [16]—are employed by SCIP-Jack, see Table 2. Furthermore, all heuristic used for the STP can be deployed, albeit with some alterations. For the RSPH in the case of a transformed PCSTP, i.e. an rcSAP, instead of commencing from different vertices, the starting point is always the (artificial) root. In each run all arcs between the root and non-terminals (denoted by \((r',t)\) in Transformation 3) are temporarily removed, except for one. A tree is then computed on this new graph, by using the same process as the original constructive heuristic. Instead of starting from a new terminal as done by customary RSPH, a different arc \((r',t)\) is chosen to remain in the graph.
Finally, the VQ heuristic requires an adaption for both the RPCSTP and the PCSTP: All terminals are temporarily removed from the (transformed) graph and VQ is executed with all \(t_i\), as defined in Transformations 2 and 3, marked as key vertices.
Computational results Table 5 shows aggregated results for three of the PCSTP test sets provided for the DIMACS Challenge. All but two JMP instances are solved during preprocessing in at most 0.1 s. The remaining problems require no more than 0.2 s. Similarly, reduction techniques alone can solve 72 of the 80 CRR instances. However, the hardest (and considerably larger) instances take comparably longer—up to 3.7 s—to be solved to optimality. The third test set, PUCNU, is derived from the PUC test set for the STP. SCIP-Jack is already unable to solve many of the original instances and the PCSTP versions also prove to be hard. However, ten of the instances are solved to optimality, with only four instances requiring branching. The remaining eight instances terminate with optimality gaps in the range 1.0–2.8%.
Computational results for PCSTP instances
Optimal | Timeout | |||||
---|---|---|---|---|---|---|
Test set | # | Solved | \(\varnothing \) nodes | \(\varnothing \) time [s] | \(\varnothing \) nodes | \(\varnothing \) gap (%) |
JMP | 34 | 34 | 1.0 | 0.0 | – | – |
CRR | 80 | 80 | 1.0 | 0.4 | – | – |
PUCNU | 18 | 10 | 11.4 | 53.5 | 50.7 | 1.9 |
The improved performance of SCIP-Jack can be traced to the vastly stronger new reduction techniques. However, it is also due to the new heuristics P and AP, and the general improvements of SCIP-Jack, such as the new propagator and the dual-ascent algorithm, which allows to start the branch-and-cut with a strong lower bound.
Computational results for RPCSTP instances
Optimal | ||||
---|---|---|---|---|
Test set | # | Solved | \(\varnothing \) nodes | \(\varnothing \) time [s] |
cologne1 | 14 | 14 | 1.0 | 0.2 |
cologne2 | 15 | 15 | 1.0 | 0.6 |
3.5 The maximum-weight connected subgraph problem
At first glance, the maximum-weight connected subgraph problem (MWCSP) bears little resemblance to the Steiner problems introduced so far: given an undirected graph (V, E) with (possibly negative) node weights p, the objective is to find a tree that maximizes the sum of its node weights. However, it is possible to transform this problem into a prize-collecting Steiner tree problem. One transformation is given in [5]. In this paper, an alternative transformation is presented that leads to a significant reduction in the number of terminals for the resulting PCSTP.
In the following it is assumed that at least one vertex is assigned a negative cost and at least one vertex is assigned a positive cost. Without this assumption the problem becomes trivial to solve.
Transformation 4
(MWCSP to rcSAP)
- 1.
Set \(V' := V\), \(A':=\lbrace (v,w) : \lbrace v,w \rbrace \in E \rbrace \).
- 2.
\(c': A' \rightarrow \mathbb {Q}_{\ge 0}\) such that for \(a = (v,w) \in A'\):
\(c'_a =\left\{ \begin{array}{l@{\quad }l} -p_w, &{} \text {if } p_w < 0 \\ 0, &{} \text{ otherwise } \end{array}\right. \)
- 3.
\(p': V' \rightarrow \mathbb {Q}_{\ge 0}\) such that for \(v \in V'\):
\( p'(v) =\left\{ \begin{array}{l@{\quad }l} p_v, &{} \text {if } p_v > 0 \\ 0, &{} \text {otherwise} \end{array}\right. \)
- 4.
Perform Transformation 3 to \((V',A',c',p')\), but in step 2 instead of constructing a new arc set, \(A'\) is being used. The resulting rcSAP gives us \(P''=(V'',A'',T'',c'',r'')\).
Lemma 4
Since most of the vertex weights are non-positive for all real-world DIMACS instances, Transformation 4 results in problems with significantly less terminals compared to the transformation described in [5]. The differences in the number of terminals resulting from the two transformations are presented in Table 7. Even if the number of positive weight vertices is high in the original problem, after presolving it is typically much smaller, since adjacent non-negative vertices can be contracted [16].
For the MWCSP the computational settings of SCIP-Jack are similar to those of the (R)PCSTP. However, the VQ heuristic is not enabled since it cannot easily be adapted to handle anti-parallel arcs of different weight.
Computational results Computational experiments have been performed on the two MWCSP test sets that were part of the DIMACS Challenge. The first is the real-world derived ACTMOD test set (which contains eight instances), and second is the artificially created JMPALMK set (which contains 72 instances). The results, illustrated in Table 8, demonstrate the ability of SCIP-Jack to effectively handle real-world MWCSP instances of up to 93,000 edges in very short time: all eight instances can be solved within 1.4 s, in an average of less than half a second. The speedup of SCIP-Jack as compared to its DIMACS Challenge predecessor is impressive, ranging from a factor of ten to more than 4000. Furthermore, each instance is solved at least four times faster than by any solver during the DIMACS competition. A salient example is the drosophila001 instance which requires only 0.8 s with SCIP-Jack, but at least 21.6 s with any of the participating solvers at the time of the DIMACS competition. The drastically reduced run time of SCIP-Jack is mainly due to new reduction techniques, but also the dual-ascent algorithm is a notable factor.
The effectiveness of Transformation 4 is demonstrated by the performance of SCIP-Jack on the ACTMODPC test set, which consists of the ACTMOD problems transformed to PCSTP by the transformation described in [5]. Compared to the original ACTMOD test set the run time of SCIP-Jack increases for each instance of the ACTMODPC set; one cause of this increase is the DA method becoming less efficient due to a far higher amount of terminals in the transformed SAP. As such, Transformation 4 is a valuable addition to SCIP-Jack.
Computational results for MWCSP instances
Test set | # | Solved | \(\varnothing \) nodes | \(\varnothing \) time [s] |
---|---|---|---|---|
ACTMOD | 8 | 8 | 1.0 | 0.4 |
JMPALMK | 72 | 72 | 1.0 | 0.0 |
3.6 The degree-constrained Steiner tree problem
The degree-constrained Steiner tree problem (DCSTP) is an STP with additional degree constraints on the vertices, described by a function \(b: V \rightarrow \mathbb {N}\). The objective is to find a minimum cost Steiner tree \(S = (V_S,E_S)\) such that \(\delta _S(v) \le b(v)\) is satisfied for all \(v \in V_S\). A comprehensive discussion of the DCSTP, including its applications in biology, can be found in [6].
The implementation in SCIP-Jack to solve the DCSTP involves the extension of Formulation 1 by an additional (linear) degree constraint for each vertex. Since the degree restriction does not comply with any reduction techniques of SCIP-Jack, problem-specific preprocessing has not been performed on these instances. Only the constructive heuristic is used, albeit in a modified form. The implemented constructive heuristic performs the following two checks while choosing a new (shortest) path to be added to the current tree. First, whether attaching this path would violate any degree constraints. Second, whether after having added this path at least one additional edge could be added (or all terminals are spanned). If no such path can be found, a vertex of the tree is pseudo randomly chosen that allows to add at least one adjacent edge. Next, such an edge leading to a vertex of high degree and being of small cost is chosen.
Computational results for DCSTP instances
Optimal | Timeout | |||||
---|---|---|---|---|---|---|
Test set | # | Solved | \(\varnothing \) nodes | \(\varnothing \) time [s] | \(\varnothing \) nodes | \(\varnothing \) gap (%) |
TreeFam | 20 | 7 | 90.6 | 10.3 | 760.6 | 14.3 |
The results from computational experiments on these instances are illustrated in Table 9. SCIP-Jack finds the optimal solution to five instances and proves the infeasibility of another two. The remaining 13 instances cannot be solved by SCIP-Jack within the time limit. The gap is reduced to less than or equal to 1% for seven of these instances. However, the gaps of the remaining six instances range from 4.5 to as much as 55.0%.
As compared to what can be observed for other Steiner problem variants in this paper, the average number of branch-and-bound nodes is high, with 90.6 nodes for the solved and 758.6 for the unsolved instances.
Similar to the preceding variants, the current version of SCIP-Jack demonstrates improved performance over the previous version at the DIMACS competition. In particular, the insatisfiability of two instances can now be proven and both the run time for the solved instances and the gap for the remainder are significantly reduced: by a factor of more than 10 and by a factor of up to 100, respectively. This results in a reduction of the average gap (one of the criteria in the DIMACS Challenge) from 37.4 at the time of the competition to 9.3 with the latest SCIP-Jack version. Note that the winner of this category reached an average gap of 19.1 in the competition. The improved solving behavior of SCIP-Jack on the DCSTP can be attributed to general enhancements such as the new propagator, see Sect. 2.
3.7 The group Steiner tree problem
Computational results for GSTP instances
Optimal | Timeout | |||||
---|---|---|---|---|---|---|
Test set | # | Solved | \(\varnothing \) nodes | \(\varnothing \) time [s] | \(\varnothing \) nodes | \(\varnothing \) gap (%) |
GSTP1 | 8 | 6 | 14.9 | 25.0 | 355.9 | 3.9 |
GSTP2 | 10 | 0 | – | – | 48.6 | 3.2 |
Transformation 5
- 1.
Set \(V' := V\), \(E':=E\), \(T' = \emptyset \), \(c':=c\), \(K:=\sum _{e \in E} c_e + 1\).
- 2.
For \(i = 1,\ldots ,s\) add a new node \(t'_i\) to \(V'\) and \(T'\) and for all \(v_j \in T_i\) add an edge \(e = \{ t'_i,v_j\}\), with \(c'_{e} := K\).
Let \((V,E,T_1,\ldots T_s, c)\) be a GSTP and \(P' = (V',A',T',c')\) an STP obtained by applying Transformation 5 on P. A solution \(S'\) to \(P'\) can then be reduced to a solution S to P by deleting all vertices and edges of S not in (V, E). The GSTP P can in this way be solved on the STP \(P'\) as shown in [20, 40].
This approach has already been deployed by [41] to solve group Steiner tree problems and demonstrated to be competitive with specialized solvers at the time of publishing. In the case of SCIP-Jack, to solve a GSTP, Transformation 5 is applied and the resulting problem is treated as a customary STP that is solved without any alteration. An alternative approach would be to employ GSTP-specific heuristics or reduction techniques [42].
Computational results Computational experiments were performed on two test sets of unpublished group Steiner tree instances derived from a real-world wire routing problem. The results from these experiments are presented in Table 10. SCIP-Jack solves all but two of the first test set, with run times ranging from 3.3 to 563 s. Four of the instances solved to optimality only require a single node, with the remaining instances solved in 219 and 61 nodes, respectively. The two unsolved instances gstp34f2 and gstp39f2 exhibit optimality gaps of 2.7 and 5.1% respectively. The same performance is not observed for the second test set. None of the instances, are solved within the time limit and the optimality gaps range from 0.9 to 7.8%.
3.8 The hop-constrained directed Steiner tree problem
The hop-constrained directed Steiner tree problem (HCDSTP) searches for an SAP with the additional constraint that the number of selected arcs must not exceed a predetermined bound, called hop limit. The cut formulation (Formulation 1) used by SCIP-Jack is simply extended to cover this variation by adding one extra linear inequality bounding the sum of all binary arc variables. It should be noted that in the literature the term “hop-constrained Steiner tree” often refers to a problem for which the number of arcs in the path from the root to any terminal within a feasible solution is limited by a predefined bound [43], which differs from the definition used in this paper.
The hop limit brings significant ramifications for the preprocessing and heuristics approaches in its wake. Customarily, many presolving techniques for Steiner tree problems remove or include edges from the graph if a less costly path can be found, regardless whether this procedure leads to a solution with more edges. For the HCDSTP such techniques can therefore produce infeasibility. However, a number of HCDSTP-specific bound-based reduction techniques can be applied, as described in [16].
Similar to the presolving techniques, the heuristics implemented in SCIP-Jack for the other variants do not take into account the hop limit. As such, any identified solution may not be feasible. Therefore, a simple variation of the constructive heuristic is used for the HCDSTP: each arc a, having original costs \(c_a\), is assigned the new cost \(c'_a := 1 + \lambda \frac{c_a}{c_{max}}\), with \(\lambda \in \mathbb {Q}_{+}\) and \(c_{max} := \max _{a \in A} c_a\). Initially \(\lambda \) is set to 3 but its value is decreased or increased after each iteration of the constructive heuristic, depending on whether the last computed solution exceeds or is below the hop limit, respectively. This modification to \(\lambda \) is performed relative to the deviation of the number of edges from the hop limit.
Computational results Three different test sets, consisting of the gr12, gr14 and gr16 instances, are used for the computational experiments. All three test sets were used in the evaluation of the DIMACS Challenge. SCIP-Jack is able to solve all gr12 instances at the root node in less than 100 s. The performance worsens for the gr14 test set, with 12 of 21 instances being solved to optimality within the time limit. The unsolved instances terminate with optimality gaps ranging from 2.4 to 17.9%, after 8.8 nodes on average. Similarly, the optimally solved instances require—with 433.9 s—much more time than the previous problems (in gr12).
Finally, more than half of the gr16 instances were terminated due to insufficient memory. Therefore, to solve these instances a different machine was used, consisting of Intel Xeon E5-2697 CPUs with 2.70 GHz and 128 GB RAM. Although this machine can boast more RAM than the machines of the cluster used for the other computational experiments reported in this paper (see Sect. 2.1), it is notably slower.
Computational results for HCDSTP instances
Optimal | Timeout | |||||
---|---|---|---|---|---|---|
Test set | # | Solved | \(\varnothing \) nodes | \(\varnothing \) time [s] | \(\varnothing \) nodes | \(\varnothing \) gap (%) |
gr12 | 19 | 19 | 1.0 | 4.0 | – | – |
gr14 | 21 | 12 | 6.2 | 396.6 | 8.8 | 10.2 |
gr16 | 20 | 0 | – | – | 1.1 | 81.3 |
3.9 Using CPLEX as underlying LP solver
As an extension of SCIP, SCIP-Jack provides a branch-and-cut search, but requires an external LP solver for solving the linear programming relaxations. For all results previously presented the LP solver SoPlex—the default LP solver employed by SCIP—has been used for this purpose. However, SCIP provides interfaces to many different commercial and academic LP solvers. This section discusses the impact of exchanging the academic LP solver SoPlex for the commercial solver CPLEX 12.6.
The comparison between using the LP solvers of CPLEX and SoPlex in SCIP-Jack is performed by selecting one test set for each previously discussed Steiner tree problem variant. An exception is made for those problem variants that can be trivially solved after presolving—such as the SAP and MWCSP. This test set selection is made to provide instances for which the reduction techniques still leave large problems, to highlight the impact of the LP solver in the branch-and-cut algorithm (Table 11).
Table 12 illustrates the comparative performance of SCIP-Jack/CPLEX. The test set and the problem variant are listed in columns one and two. Columns three and four show the number of solved instances and the shifted geometric mean of the running time on the test set for SCIP-Jack using SoPlex as LP solver. The next two columns show the corresponding information for SCIP-Jack/CPLEX. Finally, the last two columns provide the relative change in the number of solved instances and the average time. The last row of the table considers all instances of the six test sets jointly.
Table 12 reveals that the number of solved instance is significantly increased when CPLEX is used. This phenomenon becomes notably pronounced for the estein60 instances, for which more than 90% of time is spent in the LP solver. Specifically, the number of solved instances doubles. Even more salient is the behavior on the GSTP2 test set, with six instances solved to optimality by SCIP-Jack/CPLEX, but not a single one by SCIP-Jack/SoPlex.
The comparison between CPLEX and SoPlex shows that the solving time for most of the instances is significantly smaller when the former is used as LP solver of SCIP-Jack. The only exception to this pattern is the TreeFam class on which SCIP-Jack/SoPlex is around 6% faster than SCIP-Jack/CPLEX.
Results of using CPLEX as LP solver for SCIP-Jack
SCIP-Jack | SCIP-Jack/CPLEX | Relative change (%) | |||||
---|---|---|---|---|---|---|---|
Test set | Type | Solved1 | \(\varnothing \) time [s] | Solved | \(\varnothing \) time [s] | Solved | \(\varnothing \) time |
vienna-i-simple | STP | 68 | 298.6 | 75 | 218.9 | \(+\)10.3 | \(-26.7\) |
estein60 | RSMTP | 6 | 6307.2 | 12 | 2672.5 | \(+\)100 | \(-57.6\) |
PUCNU | PCSTP | 10 | 127.0 | 10 | 56.3 | – | \(-55.7\) |
TreeFam | DCSTP | 7 | 730.1 | 7 | 773.0 | – | \(+5.9\) |
GSTP2 | GSTP | 0 | 7200.1 | 6 | 2394.4 | – | \(-66.7\) |
gr14 | HCDSTP | 12 | 1134.9 | 14 | 523.7 | \(+\)16.7 | \(-53.9\) |
all | 103 | 866.5 | 124 | 501.0 | \(+\)20.4 | \(-42.2\) |
In summary, the results show a considerable potential to speed up SCIP-Jack by using a faster LP solver.
4 From single core to distributed parallel
SCIP has two parallel extensions, ParaSCIP [44] and FiberSCIP [45], which are built by using the Ubiquity Generator Framework (UG) [45]. In order to parallelize a problem-specific solver (such as SCIP-Jack), users of SCIP can simply modify their developed plugins by adding a small glue code and linking to one of the UG libraries for SCIP (UG can be used with different state-of-the-art MIP solvers). This glue code consists of an additional class with a function that issues calls to include all SCIP plugins required for the sequential version of the code. Importantly, no modification to the sequential version of the problem-specific solver is required.
In this way, users obtain their own problem-specific parallel optimization solver that can perform a parallel tree search on a distributed memory computing environment. The main features of UG are: several ramp-up mechanisms (the ramp-up is the process from the beginning of the computation until all available solvers become busy), a dynamic load balancing mechanism for parallel tree search and a check-pointing and restarting mechanism. More details about the parallelization provided by UG can be found in [44, 45].
Primal bound improvements on the PUC instances
Instance | \(|V |\) | \(|E |\) | \(|T |\) | Best | SCIP-Jack | Instance | \(|V |\) | \(|E |\) | \(|T |\) | Best | SCIP-Jack |
---|---|---|---|---|---|---|---|---|---|---|---|
bip42p | 1200 | 3982 | 200 | 24,657 | 24,657\(^{*}\) | cc3-5u | 125 | 750 | 13 | 36 | 36\(^{*}\) |
bip42u | 1200 | 3982 | 200 | 236 | 236\(^{*}\) | cc5-3p | 243 | 1215 | 27 | 7299 | 7299\(^{*}\) |
bip52p | 2200 | 7997 | 200 | 24,535 | 24,526 | cc5-3u | 243 | 1215 | 27 | 71 | 71\(^{*}\) |
bip52u | 2200 | 7997 | 200 | 234 | 234 | cc6-2p | 64 | 192 | 12 | 3271 | 3271\(^{*}\) |
bip62p | 1200 | 10,002 | 200 | 22,870 | 22,843 | cc6-2u | 64 | 192 | 12 | 32 | 32\(^{*}\) |
bip62u | 1200 | 10,002 | 200 | 220 | 219 | cc6-3p | 729 | 4368 | 76 | 20,456 | 20,270\(^{*}\) |
bipa2p | 3300 | 18,073 | 300 | 35,379 | 35,326 | cc6-3u | 729 | 4368 | 76 | 197 | 197\(^{*}\) |
bipa2u | 3300 | 18,073 | 300 | 341 | 338 | cc7-3p | 2187 | 15,308 | 222 | 57,088 | 57,117 |
bipe2p | 550 | 5013 | 50 | 5616 | 5616\(^{*}\) | cc7-3u | 2187 | 15,308 | 222 | 552 | 552 |
bipe2u | 550 | 5013 | 50 | 54 | 54\(^{*}\) | cc9-2p | 512 | 2304 | 64 | 17,296 | 17,199 |
cc10-2p | 1024 | 5120 | 135 | 35,379 | 35,227 | cc9-2u | 512 | 2304 | 64 | 167 | 167\(^{*}\) |
cc10-2u | 1024 | 5120 | 135 | 342 | 343 | hc10p | 1024 | 5120 | 512 | 60,494 | 59,797 |
cc11-2p | 2048 | 11,263 | 244 | 63,826 | 63,636 | hc10u | 1024 | 5120 | 512 | 581 | 575 |
cc11-2u | 2048 | 11,263 | 244 | 614 | 618 | hc11p | 2048 | 11,264 | 1024 | 119,779 | 119,689 |
cc12-2p | 4096 | 24,574 | 473 | 121,106 | 122,099 | hc11u | 2048 | 11,264 | 1024 | 1154 | 1151 |
cc12-2u | 4096 | 24,574 | 473 | 1179 | 1184 | hc12p | 4096 | 24576 | 2048 | 236,949 | 236,080 |
cc3-10p | 1000 | 13,500 | 50 | 12,860 | 12,837 | hc12u | 4096 | 24,576 | 2048 | 2275 | 2262 |
cc3-10u | 1000 | 13,500 | 50 | 125 | 126 | hc6p | 64 | 192 | 32 | 4003 | 4003\(^{*}\) |
cc3-11p | 1331 | 19,965 | 61 | 15,609 | 15,648 | hc6u | 64 | 192 | 32 | 39 | 39\(^{*}\) |
cc3-11u | 1331 | 19,965 | 61 | 153 | 153 | hc7p | 128 | 448 | 64 | 7905 | 7905\(^{*}\) |
cc3-12p | 1728 | 28,512 | 74 | 18,838 | 18,997 | hc7u | 128 | 448 | 64 | 77 | 77\(^{*}\) |
cc3-12u | 1728 | 28,512 | 74 | 186 | 187 | hc8p | 256 | 1024 | 128 | 15,322 | 15,322\(^{*}\) |
cc3-4p | 64 | 288 | 8 | 2338 | 2338\(^{*}\) | hc8u | 256 | 1024 | 128 | 148 | 148\(^{*}\) |
cc3-4u | 64 | 288 | 8 | 23 | 23\(^{*}\) | hc9p | 512 | 2304 | 256 | 30,258 | 30,242 |
cc3-5p | 125 | 750 | 13 | 3661 | 3661\(^{*}\) | hc9u | 512 | 2304 | 256 | 292 | 292 |
Table 13 shows the results on the instances of the PUC test set as of 17th April 2015. This table lists the number of nodes, edges, and terminals, as well as the best primal bound known at the beginning of the DIMACS Challenge (August 2014), and the primal solution value obtained in experiments with the parallel version of SCIP-Jack. Prior to the experiments performed using SCIP-Jack, 32 instances of the PUC test set remained unsolved. Three of these instances have been solved by SCIP-Jack to proven optimality, which have been underlined and marked with an asterisk in Table 13. For a further 16 instances, SCIP-Jack improved the best known solution. All instances for which the best known primal bound has been improved are marked in bold. Finally, all previously solved instances of the PUC test set have also been solved by SCIP-Jack to proven optimality, which have been marked by an asterisk (without underline).
The instances presented in Table 13 differ widely in their solving behavior. Using the cc6-3u instance as an example, one obtains greater insight into the typical solving procedure when applying ParaSCIP. The cc6-3u instance was solved to optimality for the first time by SCIP-Jack and ParaSCIP. In order to solve this instance again in a single run without restarting, SCIP-Jack was run on the HLRN-III supercomputer consisting of a Cray XC30. This experiment was performed by using nodes equipped with two 12-core Intel Xeon Haswell CPUs sharing 64 GB of RAM and with a CPU clock of 2.5 GHz. By deploying 3072 MPI processes, the optimal solution with an objective value of 197 was proven in 961 s after having processed 123,210 branch-and-bound nodes. While the lower bound was already within a distance of one to the optimal objective value after 20 s, the primal bound dropped to 198 only after 100 s.
The above results demonstrate an overall strong performance of the parallel version of SCIP-Jack in solving computationally difficult STP instances.
5 Conclusions
This paper shows the multilayered impact of embedding a 15-year old Steiner tree branch-and-cut procedure into a state-of-the-art MIP framework and clustering new solving methods around it. First, the amount of problem-specific code is drastically reduced. At the same time the number of general solution methods available, e.g., cutting planes, has increased and will be kept up-to-date just by the continuous improvements in the framework. Furthermore, the opportunity to solve instances in a massively parallel distributed memory environment has been added at minimal cost. Attempts were made to solve open instances from the difficult PUC test set by using these massively parallel extensions. As a result, SCIP-Jack was not only able to solve three previously unsolved instances, but improve the best known solution for another 16.
The use of a general MIP solver allows a significant amount of flexibility in the model to be solved. SCIP-Jack is able to support solving ten variants of the Steiner tree problem with nearly the same code, and the support of further restrictions in the model is straightforward. On top of this versatility, the powerful solving framework for the underlying IP formulation combined with problem-specific methods such as reduction techniques allows SCIP-Jack to be highly competitive with problem-specific state-of-the-art solvers.
Yet, there certainly is potential for future work to improve the performance and scope of the solver. First, already implemented routines such as the branching rule could be improved. Second, additional reduction techniques and heuristics for specific Steiner tree problem variants could be implemented. Finally, SCIP-Jack could be extended to cover further Steiner problem variants described in the literature. By using the plugin structure of SCIP, the inclusion of some of these enhancements is expected in the future.
Ultimately, this paper has described the creation of a highly competitive exact solving framework of outstanding versatility that can veritably be designated as a Steiner class solver. Furthermore, to the best of our knowledge this is the first time that a powerful exact Steiner tree solver has been made available in source code to the scientific community. The SCIP Optimization Suite [9] already contains a previous version of our solver and the current version of SCIP-Jack is planned to be part of the next release of SCIP. We hope that the availability of such a device will foster the use of Steiner trees in modeling real-world phenomena.
Footnotes
Notes
Acknowledgements
The work for this article has been conducted within the Research Campus Modal funded by the German Federal Ministry of Education and Research (fund number 05M14ZAM). It has been further supported by a Google Faculty Research Award. The authors would like to thank the referees for constructive criticism and helpful comments on the paper. We are thankful to The Institute of Statistical Mathematics (ISM), Tokyo, and the HLRN-III facility at ZIB, Berlin, for providing supercomputing resources and their respective staff for their helpful support. Furthermore, we are thankful to Cees Duin for sending us a hard copy of his PhD thesis. This research used resources of the Oak Ridge Leadership Computing Facility, which is a DOE Office of Science User Facility supported under Contract DE-AC05-00OR22725.
References
- 1.Karp, R.: Reducibility among combinatorial problems. In: Miller, R., Thatcher, J. (eds.) Complexity of Computer Computations, pp. 85–103. Springer, Boston, MA (1972)CrossRefGoogle Scholar
- 2.Leitner, M., Ljubić, I., Luipersbeck, M., Prossegger, M., Resch, M.: New real-world instances for the Steiner tree problem in graphs. Technical report, ISOR, Uni Wien (2014)Google Scholar
- 3.Chowdhury, S.A., Shackney, S., Heselmeyer-Haddad, K., Ried, T., Schffer, A.A., Schwartz, R.: Phylogenetic analysis of multiprobe fluorescence in situ hybridization data from tumor cell populations. Bioinformatics 29(13), 189–198 (2013)CrossRefGoogle Scholar
- 4.Ljubić, I.: Exact and memetic algorithms for two network design problems. PhD thesis, Technische Universität Wien (2004)Google Scholar
- 5.Dittrich, M.T., Klau, G.W., Rosenwald, A., Dandekar, T., Müller, T.: Identifying functional modules in protein–protein interaction networks: an integrated exact approach. Bioinformatics 24(13), 223–231 (2008)CrossRefGoogle Scholar
- 6.Liers, F., Martin, A., Pape, S.: Steiner trees with degree constraints: structural results and an exact solution approach. Technical report, Department Mathematik (2014)Google Scholar
- 7.Koch, T., Martin, A.: Solving Steiner tree problems in graphs to optimality. Networks 32, 207–232 (1998)MathSciNetCrossRefMATHGoogle Scholar
- 8.Achterberg, T.: SCIP: solving constraint integer programs. Math. Program. Comput. 1(1), 1–41 (2009)MathSciNetCrossRefMATHGoogle Scholar
- 9.Gamrath, G., Fischer, T., Gally, T., Gleixner, A.M., Hendel, G., Koch, T., Maher, S.J., Miltenberger, M., Müller, B., Pfetsch, M.E., Puchert, C., Rehfeldt, D., Schenker, S., Schwarz, R., Serrano, F., Shinano, Y., Vigerske, S., Weninger, D., Winkler, M., Witt, J.T., Witzig, J.: The SCIP Optimization Suite 3.2. Technical Report 15-60, ZIB, Takustr.7, 14195 Berlin (2016)Google Scholar
- 10.Borndörfer, R., Hoàng, N.D., Karbstein, M., Koch, T., Martin, A.: How many Steiner terminals can you connect in 20 years? In: Jünger, M., Reinelt, G. (eds.) Facets of Combinatorial Optimization, pp. 215–244. Springer, Berlin, Heidelberg (2013)CrossRefGoogle Scholar
- 11.Koch, T., Martin, A., Pfetsch, M.E.: Progress in academic computational integer programming. In: Jünger, M., Reinelt, G. (eds.) Facets of Combinatorial Optimization, pp. 483–506. Springer, Berlin, Heidelberg (2013)CrossRefGoogle Scholar
- 12.Rosseti, I., de Aragão, M., Ribeiro, C., Uchoa, E., Werneck, R.: New benchmark instances for the Steiner problem in graphs. In: Extended Abstracts of the 4th Metaheuristics International Conference (MIC’2001), pp. 557–561, Porto (2001)Google Scholar
- 13.Duin, C.: Steiner problems in graphs. PhD thesis, University of Amsterdam (1993)Google Scholar
- 14.Polzin, T.: Algorithms for the Steiner problem in networks. PhD thesis, Saarland University (2004)Google Scholar
- 15.Daneshmand, S.V.: Algorithmic approaches to the Steiner problem in networks. PhD thesis, Universität Mannheim (2004)Google Scholar
- 16.Rehfeldt, D.: A generic approach to solving the Steiner tree problem and variants. Master’s thesis, Technische Universität Berlin (2015)Google Scholar
- 17.Applegate, D.L., Bixby, R.E., Chvátal, V., Cook, W.J.: On the solution of traveling salesman problems. Documenta Mathematica Journal der Deutschen Mathematiker-Vereinigung Extra Volume ICM III, 645–656 (1998)MathSciNetMATHGoogle Scholar
- 18.Mittelmann, H.: Benchmarks for optimization software. http://plato.asu.edu/bench.html. Last accessed 9 March 2015
- 19.Beasley, J.E.: An algorithm for the Steiner problem in graphs. Networks 14(1), 147–159 (1984)MathSciNetCrossRefMATHGoogle Scholar
- 20.Hwang, F., Richards, D.S., Winter, P.: The Steiner tree problem. Annals of Descrete Mathematics, vol. 53. Elsevier, AmsterdamGoogle Scholar
- 21.Achterberg, T.: Constraint integer programming. PhD thesis, Technische Universität Berlin (2007)Google Scholar
- 22.de Aragao, M.P., Werneck, R.F.: On the implementation of MST-based heuristics for the Steiner problem in graphs. In: Proceedings of the 4th International Workshop on Algorithm Engineering and Experiments, pp. 1–15. Springer, Berlin, Heidelberg (2002)Google Scholar
- 23.Uchoa, E., Werneck, R.F.F.: Fast local search for Steiner trees in graphs. In: Blelloch, G.E., Halperin, D. (eds.) ALENEX, pp. 1–10. SIAM, Society for Industrial and Applied Mathematics, Philadelphia, PA (2010)Google Scholar
- 24.Wong, R.: A dual ascent approach for Steiner tree problems on a directed graph. Math. Program. 28, 271–287 (1984)MathSciNetCrossRefMATHGoogle Scholar
- 25.Pajor, T., Uchoa, E., Werneck, R.F: A Robust and Scalable Algorithm for the Steiner Problem in Graphs. Preprint, arXiv:1412.2787
- 26.Takahashi, H.: An approximate solution for the Steiner problem in graphs. Math. Jpn. 24, 573–577 (1980)MathSciNetMATHGoogle Scholar
- 27.Ribeiro, C.C., Uchoa, E., Werneck, R.F.: A hybrid GRASP with perturbations for the Steiner problem in graphs. INFORMS J. Comput. 14(3), 228–246 (2002)MathSciNetCrossRefMATHGoogle Scholar
- 28.Wunderling, R.: Paralleler und objektorientierter Simplex-Algorithmus. PhD thesis, Technische Universität Berlin (1996)Google Scholar
- 29.Beasley, J.: An SST-based algorithm for the Steiner problem in graphs. Networks 19, 1–16 (1989)MathSciNetCrossRefMATHGoogle Scholar
- 30.Gamrath, G., Koch, T., Maher, S.J., Rehfeldt, D., Shinano, Y.: SCIP-Jack—a solver for STP and variants with parallelization extensions. 11th DIMACS Competition workshop paper (2014)Google Scholar
- 31.Polzin, T., Vahdati-Daneshmand, S.: The Steiner tree challenge: an updated study (2014). Unpublished manuscript at http://dimacs11.zib.de/downloads.html
- 32.Johnston, J., Kelley, R., Crawford, T., Morton, D., Agarwala, R., Koch, T., Schäffer, A., Francomano, C., Biesecker, L.: A novel nemaline myopathy in the Amish caused by a mutation in troponin T1. Am. J. Hum. Genet. 67(4), 814–821 (2000)Google Scholar
- 33.Garey, M., Johnson, D.: The rectilinear Steiner tree problem is NP-complete. SIAM J. Appl. Math. 32, 826–834 (1977)MathSciNetCrossRefMATHGoogle Scholar
- 34.Warme, D., Winter, P., Zachariasen, M.: Exact algorithms for plane Steiner tree problems: a computational study. In: Du, D.Z., Smith, J., Rubinstein, J. (eds.) Advances in Steiner Trees, pp. 81–116. Kluwer, Dordrecht (2000)Google Scholar
- 35.Zachariasen, M., Rohe, A.: Rectilinear group Steiner trees and applications in VLSI design. Technical Report 00906, Institute for Discrete Mathematics (2000)Google Scholar
- 36.Emanet, N.: The Rectilinear Steiner Tree Problem. Lambert Academic Publishing (2010)Google Scholar
- 37.Hanan, M.: On Steiner’s problem with rectilinear distance. SIAM J. Appl. Math. 14(2), 255–265 (1966)MathSciNetCrossRefMATHGoogle Scholar
- 38.Snyder, T.L.: On the exact location of Steiner points in general dimension. SIAM J. Comput. 21(1), 163–180 (1992)MathSciNetCrossRefMATHGoogle Scholar
- 39.Rehfeldt, D., Koch, T.: Transformations for the prize-collecting Steiner tree problem and the maximum-weight connected subgraph problem to SAP. Technical Report 16-36, ZIB, Takustr.7, 14195 Berlin (2016)Google Scholar
- 40.Vo, S.: A survey on some generalizations of Steiner’s problem. In: 1st Balkan Conference on Operational Research Proceedings, vol. 1, pp. 41–51 (1988)Google Scholar
- 41.Duin, C.W., Volgenant, A., Vo, S.: Solving group Steiner problems as Steiner problems. Eur. J. Oper. Res. 154(1), 323–329 (2004)MathSciNetCrossRefMATHGoogle Scholar
- 42.Ferreira, C.E., de Oliveira Filho, F.M.: New reduction techniques for the group Steiner tree problem. SIAM J. Optim. 17(4), 1176–1188 (2006)MathSciNetCrossRefMATHGoogle Scholar
- 43.Voß, S.: The Steiner tree problem with hop constraints. Ann. Oper. Res. 86, 321–345 (1999)MathSciNetCrossRefMATHGoogle Scholar
- 44.Shinano, Y., Achterberg, T., Berthold, T., Heinz, S., Koch, T.: ParaSCIP: a parallel extension of SCIP. In: Bischof, C., Hegering, H.G., Nagel, W., Wittum, G. (eds.) Competence in High Performance Computing 2010, pp. 135–148. Springer, Berlin, Heidelberg (2012)Google Scholar
- 45.Shinano, Y., Heinz, S., Vigerske, S., Winkler, M.: FiberSCIP—a shared memory parallelization of SCIP. Technical Report 13–55, ZIB, Takustr.7, 14195 Berlin (2013)Google Scholar
- 46.Shinano, Y., Achterberg, T., Berthold, T., Heinz, S., Koch, T., Winkler, M.: Solving open MIP instances with ParaSCIP on supercomputers using up to 80,000 cores. In: 2016 IEEE International Parallel and Distributed Processing Symposium, pp. 770–779 (2016)Google Scholar