Integer Linear Programming
420 likes | 906 Views
Integer Linear Programming. When you need discrete solutions. Discrete Variables. Linear programming allows us to solve large scale network problems. It gives answers in terms of continuous variables
Integer Linear Programming
E N D
Presentation Transcript
Integer Linear Programming When you need discrete solutions
Discrete Variables • Linear programming allows us to solve large scale network problems. It gives answers in terms of continuous variables • However, there are many situations where we need solutions to network problems which are not allowed to fall in a continuous range
Design Problem • For example, if we are designing a network, we need to decide whether to place a link between two particular nodes • In this case a decision is either “yes” or “no”. We could represent this as a variable which had only two possible values, 0 or 1
Routing, Set-up Problems • A route could be represented by a logical variable which is 1 if a link is in the route, and 0 otherwise • The cost of using a link could include a “set-up” cost which would not be paid if the link was not used at all
Modular Equipment • Equipment, such as switches, have to be bought with quantised traffic capacity • For example, a switch could have capacity equal to 100, 200,…400 Gbps, but it might be impossible to purchase anything between these numbers
No Separate Method • No separate technique has been developed to solve this type of problem • The best solutions adapt the techniques of linear programming and look for discrete solutions in the vicinity of the continuous solution
LP with Discrete Variables • Only discrete values allowed
Branch and Bound • The most popular and successful method of obtaining discrete solutions today is called “branch and bound” • This method relies on our being able to solve a LP problem by the simplex method
Branch and Bound • The first step is to solve the problem as a LP problem, using the simplex method • This will, in general produce solutions with variables in a continuous range • We take one of these variables and constrain it to take the allowed value below its current one
Branch and Bound • This defines a new problem which can also be solved by the simplex method • However, it is also possible that the allowed value above the LP solution gives a better cost function • Therefore we should also try this constraint
Simple Example • Maximise z = x1+x2 with constraints • x1 + 3x2 ≤ 3 • 3x1 + x2 ≤ 6 • x1, x2 integers ≥ 0 • (This example comes from Eiselt and Sandblom)
Simple Example • The optimal solution to the LP problem is • x1 = 1.875 • x2 = 0.375 • z = 2.25 • We will choose x2 to constrain so that x2 ≤ 0
Simple Example • The new solution is • x1 = 2 • x2 = 0 • z = 2 • We still need to try solving with constraint x2 ≥ 0
Simple Example • The new solution is • x1 = 0 • x2 = 1 • z = 1 • Both of these solutions have given us integral values of x1 also • We choose the first solution because it has a higher z
Branching Tree • We do not need to explore any more values in the region • We can illustrate what we have just done with a “branching tree” x1 = 1.875 x2 = 0.375 z = 2.25 x2≥ 1 x2≤ 0 x1 = 0 x2 = 1 z = 1 x1 = 2 x2 = 0 z = 2
More Branching • In general we are not able to find suitable solutions after so few trials • The procedure may need to proceed through several branches • We now consider a more complicated example, also from Eiselt and Sandblom
Example 2 • Maximise z = 4x1 + 6x2 + 10x3 • such that • 2x1 + x2 + 2x3 ≤ 13 • 3x1 – 2x2 – 4x3 ≥ 7 • x1, x2, x3 are integers ≥ 0 • We will branch left (down) on the non-integer with the lowest subscript
x1 = 45/7, x2 = 34/7, x3 = 0, z1 = 402/7 n1 x1 ≤ 4 x1 ≥ 5 x1 = 4, x2 = 21/2, x3 = 0, z2 = 31 n2 x2 ≥ 3 x2 ≤ 2 x1 = 4, x2 = 2, x3 = 1/4, z3 = 301/2 n3 x3 ≤ 0 x3 ≥ 1 x1 = 4, x2 = 2, x3 = 0, z4 = 28 n4
Moving down the Tree • In this tree, node n1 is the LP solution, and represents an upper bound on the objective function • As we move through nodes n2, n3 and n4, we add more and more constraints on the variables • As we move down, z never increases
Bound • Node n4 is the first node we have found with all integer variables • Therefore, 28 is a lower bound on the solution • When we reach such a solution, we have reached a “bound” in the branch and bound technique
Other Branches • We have not yet explored all the possibilities near the LP solution • We now backtrack and explore some of the possibilities in the right hand branches • The next slide shows some of the results
x1 = 45/7, x2 = 34/7, x3 = 0, z1 = 402/7 n1 x1 ≤ 4 x1 ≥ 5 x1 = 4, x2 = 21/2, x3 = 0, z2 = 31 x1 = 5, x2 = 3, x3 = 0, z5 = 38 n2 n5 x2 ≥ 3 x2 ≤ 2 x1 = 4, x2 = 2, x3 = 1/4, z3 = 301/2 n6 No feasible solution n3 x3 ≤ 0 x3 ≥ 1 x1 = 4, x2 = 2, x3 = 0, z4 = 28 x1 = 4, x2 = 1/2, x3 = 1, z7 = 29 n4 n7
Further Branching • Node n5 has an all-integer solution, so we do not branch any further from this node • Node n6 does not have any feasible solutions: so no further branches • Node n7 does allow further branches
Fathoming • Notice that z5 = 38, and z7 = 29 • If we had evaluated node n5 before n7, we need not have proceeded any further, since it would be impossible for z7 to be more than z3, which is 301/2 • This is called “fathoming”
Binary Tree • The structure of solutions is called a “binary tree”. Every node in the tree represents a problem which must be solved by the simplex method • To reduce computing time, we try to keep the number of nodes in the tree as small as possible
Depth First Strategy • The “depth first” strategy takes the left hand branch until the tree can be “pruned” • Then it backtracks to the last node where it could take another branch (to the right) • Then it continues with left branches
Breadth First Strategy • The “breadth first” strategy evaluates all nodes at level 2 before going to examine all nodes at level 3 and so on • On the average, it has been found that “depth first” strategies are faster than “breadth first” strategies
Routing Problem • The capacity on each link in the network below is 10 Gbps • The three traffic flows, f1, f3 and f5 to node 4 from nodes 1, 3 and 5 have to choose one of the routes shown in the sketch 1 2 3 4 5 6
Routing Problem • The traffic must be distributed so that the following cost function is minimised • uk = utilisation in link k • dk = length of link k
Routing Problem • Let us introduce three variables, x1, x3 and x5 to indicate that the upper route is chosen when xj = 1, and the lower route is chosen when xj = 0 • Let us also name the nine links l1 to l9 as shown in the next slide • Assume traffic in both directions
Numbered Links 2 1 2 1 3 5 4 6 4 3 7 9 5 6 8
For link 1 For link 2 For link 3 For link 4 For link 5 For link 7 For links 8 and 9 x3f3 ≤ 10 x1f1 + x3f3 ≤ 10 x1f1 + x3f3 + x5f5 ≤ 10 (1-x1)f1 ≤ 10 x5f5 ≤ 10 (1-x3)f3 ≤ 10 (1-x1)f1 + (1-x3)f3 + (1-x5)f5 ≤ 10 Constraints
Cost Function • x1, x3, x5 ≥ 0 • Cost function is • = (x3f3d1 + (x1f1 + x3f3 )d2 +…+ ((1-x1)f1 + (1-x3)f3 + (1-x5)f5 )d9)/10 • This is a linear combination of x1, x3 and x5 • This states the problem in a form which can be solved using LP
Integer Linear Programming • The first solution will give fractional values for x1, x3 and x5 • Since we need these variables to be either 1 or zero, we select one arbitrarily (say x1) and solve again for x1 ≤ 0, and so we start the process of integer linear programming
Discrete Solution • Ultimately, we will get to the best possible solution with all three variables equal to either 1 or zero • This will then be the “best” way of distributing the routes in this network, for the set of flows f1, f3, f5
Realistic Problem • This was a problem with a reduced number of flows in a small network • A more realistic statement of the problem would have included flows from every node to every other node (6*5/2 = 15 flows) • We also allowed only two routes per flow
Increasing Complexity • As the network load changes, it will be more efficient to consider several routes for each flow • If we had four possible routes for one flow, we would then need a more complicated way to select the route to be used (see Lecture 6)
Single Route? • It is generally found that it is better to select a single route for each flow in networks with more than about 20 nodes • Below this number it is often best to split the traffic between at least two routes for a single flow
Small Network • This means that we could run the network better if we allowed x1, x3 and x5 to take fractional values • Then the first LP solution we had would be optimal for our small network, as long as 0 ≤ xi ≤ 1 for all i
OSPF • Note that OSPF allows multiple routes through a network