Combinatorial Optimization at Work: Abstract Martin Oellrich, T-Systems Nova GmbH, Berlin, Germany
Transcription
Combinatorial Optimization at Work: Abstract Martin Oellrich, T-Systems Nova GmbH, Berlin, Germany
Combinatorial Optimization at Work: How to Find the Needle in the Haystack? Martin Oellrich, T-Systems Nova GmbH, Berlin, Germany [email protected] Abstract Telecommunications network design most often aims at specified technical solutions at the lowest possible cost. Discrete Mathematics can greatly help achieving this goal. The technical system is modelled in mathematical language and solved by suitable methods. It lies in the nature of those problems that they have a vast multitude of possible solutions. Singling out one with lowest cost among all of them is just like searching for a needle in a haystack. As it is a typical example for a telecommunication design problem, we will work out step-by-step the solution process of the Disjoint Routing Problem of Virtual Private Networks (VPN): a number of given demands must be routed through a given network such that their paths do not share any common nodes or links, and cause minimal cost among all possible solutions. 1 Introduction A Virtual Private Network (VPN) is a network that appears to be exclusively accessible and operated by a customer company alone. In physical reality, it consists of a number of permanent lines that are leased from a carrier. So control of its performance — in particular: its outages — also lies with the latter. And for this reason, the carrier has provide these lines subject to a reliability demand: one single failure in the underlying network may cause at most one single failure on the VPN level, i.e., in the customer’s netFigure 2: Virtual Private Network work. Technically speaking, the different leased lines must be routed disjointly from each other. In order to be competitive, the carrier must also consider As the computed output data, we expect a list containthe cost side of this requirement. So naturally, a disjoint routing at minimum cost is wanted. The problem of finding ing one simple routing path for each end-to-end pair of the VPN, such that this optimum is the topic of this tutorial. To make things more precise, here are the needed input • no two paths share a common trunk data: (trunk-disjoint routing), see figure 3, and • the carrier’s network, see figure 1, Figure 1: carrier’s network • with a cost coefficient on every trunk, • the Virtual Private Network, see figure 2. Figure 3: disjoint routing • the sum of the costs of all paths are at the possible minimum. Mathematically speaking, the problem is called Minimum Cost Disjoint Embedding Problem. In stating it, we have in mind to solve problem instances with a few thousand nodes and trunks. If node-disjoint routing is desired, one only has to split all nodes into two nodes that are connected by an artificial trunk with zero cost, see figure 4. Figure 4: node splitting technique Our way through the solution process will start out with a very simple but instructive example for a combinatorial search. 2 and per column. Otherwise there would be a pair that could attack each other. The second goal is the optimization goal. It tells us how to quantify (and thus to compare) the feasible objects and which extremal property we want to achieve. The quantification is called the objective function. It may be minimized or maximized. In our case, the objective function is the sum of the values the rooks are standing on. See figure 6 for a feasible solution and its objective function value. 9 7 8 2 2 3 7 4 4 1 5 6 4 1 6 3 Combinatorial Optimization We leave the context of telecommunications planning for the duration of this introduction. After we have understood the ideas and techniques, solving our original problem will be a straight-forward application. It is described in section 5. 9 2 4 4 7 3 1 1 8 7 5 6 2 4 6 3 Figure 5: a grid with numbers Figure 6: a feasible solution with value 21 How many feasible solutions are there? Given the empty grid, we have four distinct possibilities to place a rook in the first row. Subsequently, this leaves three possibilities to place one in the second row, and so on. In total, there are 4 · 3 · 2 · 1 = 24 feasible solutions. This particular problem could still be solved by hand, but let us think big. If we imagine that the setting is a real 8-by-8 chess board, there are already 40320 feasible solutions. How about a side length of 20, 50, 100? The numbers of feasible solutions explode: at a side length of about 35 we have roughly as many feasible solutions as we have particles in our universe. Almost all Combinatorial Optimization problems share a common property: they possess a vast multitude of feasible solutions and the task is to seek out one of them with the desired extremal property. This mostly involves comparing the objective values of all feasible solutions. This demonstrates the necessity of special solution techniques. Let us now consider the following optimization problem. We are given a 4-by-4 grid — one may imagine one quarter of a chess board — where every cell carries a given 2.1 Enumeration tree value (see figure 5). The task to solve: take four chess rooks As a first step, we organize the search for the optimal sound place them on the grid so as to simultaneously achieve lution in a systematic way. We enumerate all the solutwo goals: tions without repetition as follows. We imitate the way of counting the solution (see above) and start with an empty 1. no pair of the rooks may attack each other, grid. On every cell in the top row, we can place our first 2. the sum of the numbers the rooks are standing on is a rook, yielding four mutually exclusive so-called partial solutions. With each of them, we can now iterate the process minimum among all possible solutions. and place another rook on the second row wherever it is not The first goal is called a feasibility constraint, since it put below the first rook. This generates another 4 · 3 = 12 describes which combinatorial objects are considered per- mutually exclusive partial solutions with two rooks each. missible or feasible. In our case here, it declares only such This goes on until all four rooks have been placed in all solutions feasible where we have exactly one rook per row possible ways. 16 14 14 10 11 14 15 21 22 25 22 18 16 16 17 13 19 10 18 20 23 22 14 13 24 20 20 18 17 17 16 12 111111 000 000111 000 000111 111 000111 000 000111 111 000111 000 000111 111 000111 000 000111 111 000111 000 000111 111 000111 000 111111 000 000 000111 111 000 000111 111 000 000111 111 000 000111 111 000 000111 111 000 9 Figure 8: (partial) objective values in the tree 1111 0000 0000 1111 0000 1111 0000 1111 0000 1111 0000 1111 111111 000 000 000111 111 000 000111 111 000 000111 111 000 000111 111 000 000111 111 000 1111 0000 0000 1111 0000 1111 0000 1111 0000 1111 0000 1111 0001111 111 0000 1111111 000 0000 0001111 111 0000 0001111 111 0000 0001111 111 0000 0001111 111 0000 0001111 111 0000 0001111 111 0000 00000 11111 11111 00000 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 00000 11111 16 15 9 111 000 000 111 000 111 000 111 000 111 000 111 1111111 0000000 0000000 1111111 0000000 1111111 0000000 1111111 0000000 1111111 0000000 1111111 0000000 1111111 0000000 1111111 0000000 1111111 0000000 1111111 0000000 1111111 0000000 1111111 20 15 16 14 10 7 11 00 00 11 00 11 00 11 00 11 00 11 11 00 00 11 00 11 00 11 00 11 00 11 11 00 00 11 00 11 00 11 00 11 00 11 000 111 111 000 000 111 000 111 000 111 000 111 000 111 000 111 00 11 11 00 00 11 00 11 00 11 00 11 00 11 00 11 111 000 000 111 000 111 000 111 000 111 000 111 11 12 0 15 111 000 000 111 000 111 000 111 000 111 000 111 10 22 19 15 8 11 00 00 11 00 11 00 11 00 11 00 11 11 00 00 11 00 11 00 11 00 11 00 11 0000 1111 1111 0000 0000 1111 0000 1111 0000 1111 0000 1111 0000 1111 0000 1111 21 16 111 000 000 111 000 111 000 111 000 111 000 111 12 17 9 5 10 5 4 2 9 13 9 10 This generation process is illustrated in figure 7. The empty grid is the root of a tree which branches out with the possibilities of extending the partial solutions as said above. Figure 7: full enumeration tree 2.2 Pruning the tree As we see from figure 8, only very few vertices in the tree are actually interesting. The optimum is located within a small portion of the tree and several branches of it were a successless effort in the enumeration. If we are able to direct the search better, we can save considerable time. Keeping this in mind, we can rewrite the figure, showing Here is a first idea how to identify a vertex — and with only the objective function values of the (partial) solutions, it its entire subtree below — that does not justify further see figure 8. exploration. Remember: during the enumeration, the latSo basically, what we do is to generate the entire tree, est bold framed vertex indicates the best currently known and to single out one of its bottom vertices with minimum solution. If we now produce a vertex with a value not less value. Assuming that the bottom row of the tree is gener- than this solution value, we can stop extending the tree at ated from left to right — a way of traversion called depth this point. As the values cannot decrease when more rooks first search — figure 8 also shows the improvements made are placed, we will never find a better solution below this in the search. Every time a vertex with lower value than all vertex. Figure 9 shows the tree when this rule is observed. the ones to its left is encountered, it is marked by a bold frame. The rightmost bold framed vertex, the one with the value 10, is the desired optimum. So the way of cutting off subtrees is governed by numbers that are available along the process. This idea is strengthened in the next section. 10 11 10 14 15 16 12 17 5 9 5 4 15 9 10 13 9 2 8 For an example, consider figure 10. Since we know that every row of the grid must host exactly one rook, this one rook must stand on a cell carrying a value at least as high as the minimum value in that row. So every feasible solution must have an objective value at least the sum of these row minima. In our 4-by-4 example, we compute a lower bound of 6. How can it help us? A simple calculation like the one in figure 10 can be easily carried out in every new tree vertex. So when deciding whether to explore or not, we have three numbers at our disposal: 16 • the value curbest of the current best solution, • the value lbound of the computed lower bound. 11 12 16 0 15 10 • the value parval of the partial solution reached, and 19 20 13 18 13 14 10 9 15 14 7 10 16 15 The lower bound guarantees that no feasible solution has a lower value. So in the new vertex, no feasible solution extending the partial solution there has a lower value less than parval + lbound. Comparing this sum to the best known solution, we get an improved pruning criterion: parval + lbound ≥ curbest ⇒ prune vertex. 20 18 24 20 12 17 17 9 16 22 2.4 Improved lower bounds Figure 9: a first pruning idea The pruning criterion applies to any lower bound, not only the simple one presented in figure 10. How can we computer better ones? Surprisingly, there is a way of strengening the lower bound, often even up to the optimum value. Consider the following algorithm, illustrated in figure 11. 2.3 Lower Bounds The tree can be pruned in precisely that moment when we are sure that the exploration of a subtree cannot yield a better solution than the best one currently known. This observation also holds true if we support the pruning decision by a so-called lower bound. This is the name for a value which offers a guarantee that no feasible solution can have a smaller objective value. 9 2 4 4 7 3 1 1 8 7 5 6 2 4 6 3 2 2 1 1 6 row minima bound Figure 10: a simple lower bound 3. add per col. 9 2 4 4 0 9 2 4 4 7 3 1 1 2 9 5 3 3 8 7 5 6 −2 6 5 3 4 (n j = 1 2 0 2 original grid 4 6 1. arbitrary 3 numbers 1 −1 2.tivenegasum 3 3 4. row 5 2 minima 7 3 4 3 1) 10 5. bound Figure 11: a stronger lower bound 2.5 Correctness of the algorithm Lower Bound Algorithm 1. Write an arbitrary number over each column of the grid. 2. Add these numbers and write their negative sum on their right. This paragraph is more mathematical, as it has to prove the correctness of the algorithm stated above. The more practical oriented reader may skip it. In order to see why the algorithm always delivers a lower bound, we need to formalize our rooks problem. We give the value located in the grid cell (i, j) the name cij . 4. In each row, find the minimum value and write it Also, we introduce a variable xij that indicates whether down on the right hand side, below the negative sum there is a rook being placed on cell (i, j) or not: xi j = 1 figure. means “rook on (i, j)”, xi j = 0 means “no rook”. The objective function is the sum of all ci j , each value being selected 5. Add up alle row minima and the negative sum. by its “rook factor” of xi j . The feasibility constraint can be expressed as two sets of equalities: the sum over all x’s in This is a generalization of the simple bound of figure 10 a row or column, resp., must equal one. In mathematical in that we first choose the arbitrary numbers and add them language, we write down a model: to all cells in their respective columns. Then, like figure 10, we seek the minimum values in all respective rows and add them up, this time including the negative sum of the chosen minimize ∑ ∑ ci j xi j numbers. Setting these numbers all to zero would reproduce i j the calculation of figure 10. subject to (i) for all columns j ∑ xi j = 1 The calculation of lower bounds more than pays for iti self. The effect of strong lower bounds can be seen in fig(ii) for all rows i ure 12. The upper numbers in the vertices are the sums ∑ xi j = 1 j parval of the rook position values from figure 8, the lower numbers are lower bounds lbound for the sums of the miss(iii) xi j = 0 or 1. ing rooks. The total lower bounds are equal to their resp. sums of parval + lbound. These four model lines precisely capture the rooks problem, irrespective of the size of the grid or the values in the cells. Remember: the feasibility constraint determines 0 parval which objects are feasible to the problem, its expression are 10 lbound the equalities stated after the “subject to” marker. 3. In each column, add the assigned number to all the cell values. 9 7 8 2 10 6 10 8 12 16 13 9 5 4 8 4 6 4 9 6 Observation: if one removes (neglects) one or more of these equalities, there are less restrictions left to define feasibility. Thus, the set of all feasible solutions becomes larger, as we allow more objects into it. Consequently, the minimal objective value may at most decrease, this effect possibly arising from new objects with smaller objective values. 17 14 18 10 5 9 3 6 1 3 6 1 19 13 11 10 20 Figure 12: search tree with lower bounds In mathematical terminology, the removal of feasibility defining equalities (or inequalities) from a model is called a relaxation. Its effect is always that the optimum value of the relaxed problem is a lower bound to the desired optimum of the original problem. In our example, we could for instance relax all equalities (i). That would allow two or more rooks to sit in the same column while leaving intact the constraint “one per row”. In fact, this is the model equivalent of the simple lower bound from figure 10. In order to understand the lower bound property of the Now we only go down to an end vertex of the tree when there is a better solution than the current one. A significant Lower Bound Algorithm, consider the following slightly different model: reduction in solution enumeration. ! ∑ ∑ ci j xi j + ∑ λ j ∑ xi j − 1 minimize i subject to (i) j j i ∑ xi j = 1 for all columns j ∑ xi j = 1 for all rows i i (ii) The theory of the Bound Improvement Algorithm is beyond the scope of this paper. For an analysis and discussion see, for instance, [1]. Here, we give the most widely used formulation of it. The parameters are called λ j as above. All of them together form the vector λ. Bound Improvement Algorithm j (iii) xi j = 0 or 1 (iv) λ j arbitrary. 1. Set k = 0. Start with arbitrary values λ(0) , e.g. λ(0) = 0. It differs from the original rooks model only in the additional objective function term and the new arbitrary parameters λ j . Looking at the extra term more closely, it turns out to be meaningless: since we have constraint (i), it must always equal zero. So we see that, independent of the choice of the λ j , this second model has exactly the same set of feasible solutions and identical objective values for each solution. Thus, their respective optima are equal as well. The power of the extra objective term unfolds, when we now relax the constraint (i) as we did above. The optimum of the relaxed second model (the so-called Lagrangian relaxation of the original model) will now depend on the choice of the λ j . But since a relaxed optimum can at most reach the unrelaxed one from below, our relaxed second model must always deliver a lower bound to our unrelaxed original model. This completes the proof. For the sake of completeness, it remains to show that the algorithm really computes the optimum of the relaxed second model. This can be readily seen by rearranging its objective function: ! 2. Invoke the Lower Bound Algorithm with λ(k) , take back the bound and the numbers n j of row minima chosen in each resp. column j (cf. figure 11). 3. Define new vector λ(k+1) : let (k+1) λj (k) = λ j + sk (n j − 1) for all j. 4. Increase k by 1, repeat from step 2 as desired. The algorithm produces a sequence of lower bound values which is not necessarily monotonic, see figure 13. So one has to keep track of the best current bound value. Note that the number ∑ j n j of found column conflicts tends to decrease as the algorithm proceeds. lower bound number of conflicts best possible bound value ∑ ∑ ci j xi j + ∑ λ j ∑ xi j − 1 i = j j i ∑ ∑(ci j + λ j ) xi j − ∑ λ j . i j almost feasible solutions 200 iter. j The reader interested in the details of Lagrangian relaxation is referred to [1]. 2.6 Choice of the parameters Introducing the arbitrary numbers as parameters opens a vast degree of freedom in the calculation. As figure 11 demonstrates, it is possible in our example to choose the numbers in such a way that the lower bound equals the optimum. These are clearly the best bounds achievable, so the method is quite powerful. But how can we make this choice? The answer: there is no formula for the best values. In practice today, an algorithm named Subgradient Optimization is usually employed. It starts with arbitrary values and updates them iteratively. In every iteration, the entire lower bound algorithm has to be performed. This may be time comsuming, but is worth a certain number of iterations, as the lower bounds increase and save efforts in the search tree exploration process. Figure 13: typical bound improvement sequence The algorithm uses an auxiliary sequence sk which determines the length of the update step 3. Essentially any such sequence works if it obeys the following conditions (cf. [5]): • all sk are nonnegative, • sk converges to zero, • ∑k sk diverges to infinity. Examples for such sequences are Ck or √Ck where C is a positive constant. Several refinements to the algorithm have been suggested in the literature, for instance in [3, 2]. They have the potential to significantly reduce the number of iterations needed to reach a satisfactory bound. Yet all of them come at the expense of a rather tedious need to administer more free parameters. Adapting the Bound Improvement Algorithm to a specific problem is a substantial, yet worthwhile, subtask of the whole optimization project. 2.7 Upper Bounds According to the pruning criterion of section 2.3, we can best prune the search tree when we have strong lower bounds and/or good known feasible solutions. Their values are always upper bounds for the optimum, since the minimum objective value can be at most as high as that of any feasible solution. So how can we achieve strong upper bounds? Since any feasible solution can serve us, the way to go can be twofold. Either we produce many feasible solutions fast and choose their best value. Or we can spend some time on a more sophisticated way to construct a few “good” solutions. We will discuss both approaches. An algorithm that strives to compute a good, but not necessarily optimal, feasible solution is called a heuristic. Since feasible solutions to the rooks problem abound, there is a simple way of getting many of them fast: random choice. Place one rook randomly and reduce the grid by eliminating its row and column. Then do the same with the reduced grid until all rooks have been placed. This can be repeated several times in a row up to some prechosen time-out. In terms of the search tree, this method follows some randomly chosen path from the current vertex down to a solution. It ignores any information along the way, see figure 14. start vertex An interesting feature of the Bound Improvement Algorithm of section 2.6 is it that it produces a sequence of (mostly) infeasible solutions whose number of feasibility conflicts more or less decreases over the iterations, see figure 13. Remember: according to the relaxation we chose, we allowed objects as feasible solutions that have multiple rooks in their columns. If rooks are placed in the same column, this is called a conflict. If now the number of conflicts varies, we can pick one infeasible solution with the least number of conflicts from this sequence. If its number is zero, we even have a feasible solution ready at hand. If its number is positive, but not too high, we can feed the solution into a heuristic that attempts to remove these conflicts. A possible heuristic based on this idea could do the following. Conflict Removal Heuristic 1. Take solution with minimal number of conflicts from the Bound Improvement Algorithm. 2. Regard every rook in the solution as fixed when it stands alone in its column. Eliminate both its row and column from the grid. 3. Choose a column with more than one rook in it. For every rook in the column, seek the minimum cell value in its row without its current position in that row. Calculate the difference between this minimum and its current cell value. 4. From the rooks in the column, choose one with the largest difference to be the one assigned to that column. Place the others on their minimum value cells computed in step 3. 5. Go on with step 2 if there are still conflicts. Otherwise, output the found solution. The Conflict Removal Heuristic alternatingly reduces the problem size by accepting some rooks as being fixed, and resolves a conflict by deciding which one rook gets to stay in a column. The choice in step 4 is just one way of deciding, any other rule will also do. For an example of the Conflict Removal Heuristic, see figure 15. 9 13 20 16 18 22 25 Figure 14: random heuristic for solutions 2.8 Looking closer An example for a slightly more sophisticated heuristic is the following. Again we build up a solution rook by rook. We no longer choose both the row and column positions randomly, but only the row. Once a row is given, we seek the cell with minimum value and place the rook on it. After that, we again reduce the grid and iterate. 8 2 +6 fixed 4 4 differences 5 6 −2 6 3 +1 rook in solution next best position Figure 15: step 3 of the Conflict Removal Heuristic Note: a negative value difference may well occur, since bounds tend to be the lowest ones in the entire tree. Followthe Bound Improvement Algorithm uses modified cell val- ing them, we have a high chance of going straight into the ues for its internal rook placement. The Conflict Removal “general area” of the optimum. Heuristic only uses the given input cell values. This is illustrated in figure 17 where the tree vertices carry their total lower bound values. Following the minimal bound value of 10, we are directly led to the optimum. In 2.9 Applicability general, this is not as nicely the case. In large problem inAs easy as the design of a heuristic may seem, a word stances, the tree does in fact branch out somewhat, but does should be said about the applicability. Not all problems are so in a more or less “focused” way. This strategy of tree structured such that the feasibility constraint always allows exploration is called branch-and-bound. us to construct a feasible solution in a more or less arbitrary manner. This holds especially true when starting out with a partial solution. figure 16 shows an example of an enumeration tree in which not all subtrees contain feasible solutions. The problem setting is identical to the rooks problem, only the rooks have been replaced by queens. 10 19 13 10 18 000000 111111 111111 000000 000000 111111 000000 111111 000000 111111 000000 111111 000000 111111 000000 111111 000000 111111 000000 111111 000000 111111 000000 111111 14 111 000 000 111 000 111 000 111 000 111 000 111 000 111 000 111 000 111 000 111 000 111 000 111 000 111 000 111 11 00 00 11 00 11 000 111 00 11 000 111 000 111 000 111 000 111 000 111 000 111 11 00 00 11 00 11 000 111 00 11 000 111 000 111 000 111 000 111 000 111 000 111 11 00 00 11 00 11 00 11 00 11 11 00 00 11 00 11 00 11 00 00 11 11 11 00 00 11 00 00 11 11 00 11 00 11 00 00 11 11 00 11 00 11 00 11 11 00 00 11 00 11 00 11 00 11 00 11 00 11 11 00 00 11 00 11 00 11 00 11 00 11 00 11 11 00 11 11 00 00 11 00 11 11 00 00 11 00 11 00 11 00 11 00 11 00 11 00 11 14 10 111 000 000 111 000 111 000 111 000 111 000 111 000 111 000 111 000 111 000 111 000 111 000 111 000 111 000 111 11 00 00 11 00 11 00 11 00 11 00 11 00 11 00 11 10 00 11 11 00 00 11 00 11 10 00 11 11 00 00 11 00 11 00 11 11 00 00 11 00 11 Figure 16: search tree with queens In general, good knowledge about the problem structure is necessary for designing a successful heuristic. 3 Vertex Sequence There is another degree of freedom which can help us keep the search effort under control: the vertex sequence in which we build up the enumeration tree. The depth-first-search strategy we have used so far is canonical, yet there is a better one. We let the lower bounds be our guides. Whenever we have to choose another tree vertex to explore, we choose one with a minimal lower bound value among all vertices waiting to be explored. The rationale behind this is the following observation: consider the path from the tree root (the empty grid) down to the optimal solution. Every vertex on it carries a lower bound that cannot exceed the optimum objective value. But since the optimum is the lowest possible value, also these Figure 17: search tree with branch-and-bound strategy The branch-and-bound strategy possesses three important features: • It requires possibly huge amounts of storage for all the vertices that are candidates for exploration. • Its performance relies heavily on the quality of the lower bounds. If a problem does not offer the computation of strong bounds, this method may take prohibitive time (and storage) to proceed. • In choosing always a vertex with minimal lower bound, this bound is, in every iteration, a global lower bound for the problem instance. While the first two features rather represent limitations, the third one makes branch-and-bound the more desirable: the global lower bound steadily increases as the method proceeds. Using an upper bound heuristic (see section 2.7), one can commonly observe that from time to time better feasible solutions, i.e. global upper bounds, are found. So both global bounds converge monotonically towards each other, eventually meeting at the optimum value. A typical trajectory of a branch-and-bound run is shown in figure 18. objective value actual search optimality proof optimum found time Figure 18: a typical branch-and-bound trajectory One can see another typical feature of combinatorial optimization in general: the optimal solution is often found well before its optimality is proven by the lower bound. This means that branch-and-bound can be used as an improvement heuristic itself: just let it run until the gap between the two global bounds is as small as is acceptable, for instance maybe 10 per cent. Even with no more than the accepted gap as an optimality guarantee, there is a good chance that the optimum was already found. Strictly speaking, we have only introduced the bound step so far. The branch step is what we have silently used all the time: the local enumeration of all possibilities of placing a rook within a grid row. In terms of the tree, branching means the manner in which we branch out from a vertex. We will not go into discussion here, as this way is rather canonical for the rooks problem. 4 Summary of Combinatorial Optimization The typical setting of a combinatorial optimization problem is an abundance of feasible solutions and the task is to seek out one of them with minimum (or maximum) objective value. What makes such a problem hard is the fact that it is often not possible to actually compare the objective values of all feasible solutions. So special search techniques must be employed that mostly work with partial solutions in a clever way. 3. upper bound: a global value with the guarantee that it is no less than the optimum value. In particular, the objective value of any feasible solution is an upper bound. Upper bounds are strong when they are as low as possible. 4. vertex sequence: the sequence in which the tree vertices are explored. Branch-and-bound is one popular sequence, utilizing the lower bounds. The effects of introducing the ideas 2.–4. can be seen in figure 19 for the rooks problem. As the size of the grid increases up to 100, the different curves indicate the computation times to optimum. complete enumeration time [s] 100000 10000 1000 100 10 1 0.1 0.01 Branch-and-Bound respect best solution plus upper bounds plus lower bounds 20 40 100 grid size Figure 19: computation times over problem sizes Three main features clearly come out: • Complete enumeration without refinements is quickly out of practical reach as sizes grow. • The introduction of lower bounds is a major improvement that can possibly take out the strict (super-) exponential growth in time consumption. Thus, it is usually worth investing quite some time into the calculation of strong bounds. • The more sophisticated the search is, the more can the algorithm exploit stochastic luck. So a more or less accurate estimate of the remaining running time is almost never possible. 4.2 Linear and integer programming 4.1 The ingredients In the recent past, all-purpose LP/IP solvers have become In order to make the solution process work, four ingredients strong on the optimization market. In principle, these tools are able to solve combinatorial problems as well. Their adhave to be specified (here for a minimization problem): vantage clearly is that one purchases excellent know-how 1. branching strategy: the manner in which a tree ver- with their running licenses and updates, and the modeler is freed from thinking about the solution process. tex branches out upon exploration. Yet on the flip side, these software packages require that 2. lower bound: an estimate from below for the optimal the problem be modeled in their specific language which objective values of all feasible solutions in a specified may not be an easy task, depending on the problem. In subtree. Lower bounds are strong when they are as any case, it means one has to reorganize the given data into some specified input format. Also, due to their all-purpose high as possible. nature, commercial solvers cannot exploit special advantageous features in the problem at hand. A common other drawback is that they tend to consume huge amounts of storage for their execution, a possibly limiting factor for large problem instances. LP/IP software packages basically employ the same method ingredients as listed above. They merely use different techniques in filling in the details. Tailor-made combinatorial solvers can normally be restricted to much less memory consumption — possibly work directly on the data at hand — and can be written so as to exploit special problem features. So there is a certain trade-off between buying versus implementing a software solution in any case. The reader interested in linear/integer programming is referred to [4, 6] for an introduction. In the next section, we apply the optimization knowhow presented to the Disjoint Paths Problem. b a c e d f h g m i k a b c d e f g h i k m Figure 20: VPN solution in grid representation Figure 20 shows the feasible solution of figure 3 as a grid pattern: the marked entries in a row indicate the trunks that the row’s demand is routed over. Condition (a) is satWe now switch back to the VPN problem which was stated isfied, as one can see in the network. And, according to in section 1. How does it fit into the combinatorial opti- condition (b), there is no column with more than one entry mization framework? in it. This is the desired disjointness. (Note that, for clarFirst, we need to identify the feasible objects. In this ity of presentation, no cost values are given. They normally case, we expect as the output a routing of all given end-to- belong inside the grid, one per cell.) In order to compute an optimal solution, we need to end demand pairs of the VPN. A demand counts as routed when we exhibit a simple path through the network con- specify the four “ingredients” identified in section 4. necting its end nodes. Furthermore, the routing is feasible if no two of these paths share a common trunk. 5.1 Branching strategy Mathematically speaking, for each individual demand pair d we seek a subset T d of all network trunks. The feasi- From the rooks problem, we know: a vertex in the search tree always in principle looks like the entire problem. Placbility constraint then consists of two separate conditions: ing a rook implied eliminating its row and column from the grid, leaving a slightly smaller rooks problem. (a) the trunks in each set T d must constitute a simple path In the VPN case, there are always some demand pairs in the network connecting the end nodes of demand d, to be disjointly routed through some network. The only difference to the entire given problem instance is that not nec(b) no two sets may intersect: T d1 ∩ T d2 = ∅ for all de- essarily all or the same demands are still unrouted, and that mand pairs d1 , d2 . not necessarily all trunks of the network are still available. Several branching strategies are devisable. One strategy has proven to be especially well suited, see figure 21. It Second, we need to set up an objective function. We works as follows: are given a cost coefficient c on every trunk t, and this cost 5 Application to VPN planning t actually arises if one of the routing paths contains the resp. trunk: cost = ∑ ∑ ct . d t∈T d The VPN problem can be visualized so that it looks similar to the rooks problem of section 2, see figure 20. The rows of the grid correspond to the VPN demands, and the columns correspond to the trunks of the network. All cells in one and the same column carry identical cost values, as it does not matter which demand path contains the column’s trunk. Branching Strategy 1. Choose an unrouted demand d = (mn) and one of its end nodes n according to some rule (maybe randomly). 2. For all trunks t = (np) connected to node n, do: 3. reserve trunk t for the routing of demand d (i.e., put t into the set T d ) 4. form a new subproblem on the network less trunk t and with demand d altered to d = (mp). If m = p, remove demand d from the list of unrouted demands. m m t n m p p The Bound Improvement Algorithm (cf. section 2.6) is readily applicable as well. Just two slight differences are to be observed: • A restriction applies to step 3: the λ-values must stay nonnegative. This can be achieved by setting them to zero if the update formula results in a negative value. (The reason for this is that condition (b) restricts the number of paths containing any one trunk to at most one, not to exactly one, as in the rooks problem.) m • The numbers n j in the rooks problem are replaced by numbers nt that for each trunk t in the network count the number of routing paths containing it. t t p Figure 21: branching strategy 5.2 Lower bounds The minimum cost paths needed in step 2 are to be computed by the well-known Dijkstra Algorithm. Presenting it is beyond the scope of this paper, for an introduction see, for instance, [1]. 5.3 Upper bounds Calculation of lower bounds works here almost the same way as in the rooks problem, see also figure 22: Lower Bound Algorithm 1. Assign to each column t (in the grid of figure 20) an arbitrary nonnegative parameter value λt . 2. Now ignore the disjointness condition (b) and compute for every row a minimum cost path connecting the end nodes of the row’s demand pair. 3. Add up the costs of all minimum cost paths and subtract the sum of the parameter values from it. Unfortunately, the VPN problem has the property indicated in section 2.9, namely that in general not all subtrees of the entire enumeration tree contain feasible solutions. So a heuristic may or may not be successful, depending on the tree vertex it is run in. With this caveat, the following heuristic has proven to be very useful. It is a straightforward analogue of the algorithm given in section 2.8. A conflict is a trunk which is contained in more than one routing path. Conflict Removal Heuristic 1. Take solution with minimal number of conflicts from the Bound Improvement Algorithm. 2. Regard every routing path in the solution as fixed when none of its trunks is a conflict. Eliminate all its trunks from the network. 3. Choose a conflict trunk t. For every demand whose routing path contains t, compute the minimum cost path in the network without t. Calculate the difference between its cost and the cost of the original path. λa λb λc ≥ 0 ... λm − ∑t λt min min (nt = 0 2 1 1 0 0 1 1 0 0 2) Figure 22: lower bounds 4. From the demands in step 3, choose one with the largest cost difference to be the one allowed to “occupy” trunk t. Replace the other paths by their resp. minimum cost paths computed in step 3. 5. Go on with step 2 if there are still conflicts. Otherwise output the found solution. min 5.4 Vertex sequence bound Here the branch-and-bound sequence is appropriate. Note that the subproblems generated upon vertex exploration (see figure 21) are each specified by a subnetwork of the given network and by demands different from the original ones given. So every vertex kept track of necessitates a consider- References able storage amount. A careful design of the data structures [1] R. K. Ahuja, T. L. Magnanti, and J. B. Orlin: Network used may reduce memory consumption significantly. Flows, Prentice Hall, Englewood Cliffs (1993). 6 Conclusion [2] M. S. Bazaraa and J. J. Goode: A Survey of Various Tactics for Generating Lagrangian Multipliers in the Context of Lagrangian Duality, in European Journal of Operational Research 3, pp. 322–328. [3] M. Held, P. Wolfe, and H. Crowder: Validation of The techniques of Combinatorial Optimization offer a Subgradient Optimization, in Mathematical Programbroad tool kit that is applicable to a vast variety of pracming 6 (1974), pp. 62–88. tical problems. Optimizing over discrete objects has less of a straightforward calculation, but more of a search pro- [4] G. L. Nemhauser and L. A. Wolsey: Integer and Comcess. We have presented and exemplified the ingredients of binatorial Optimization, John Wiley and Sons, New a typical such process. York (1988). The solution of the stated VPN routing problem has been a successful project within T-Systems. Its outcome was the efficient implementation of all the algorithms presented, plus several more refinements. Reliable VPN routing at minimum cost is now a service product available from T-Systems, Dept. E46, Center of Technology, Darmstadt, Germany. [5] B. T. Polyak: A General Method for Solving Extremum Problems, in Soviet Mathematics Doklady 8 (1967), pp. 593–597. [6] H. M. Salkin and K. Mathur: Foundations of Integer Programming, Elsevier Science Publishing, New York (1989).