The linear-programming models that have been discussed thus far all have been continuous, in the sense that decision variables are allowed to be fractional. Often this is a realistic assumption. For instance, we might 3 easily produce 102 4 gallons of a divisible good such as wine. It also might be reasonable to accept a solution 1 giving an hourly production of automobiles at 58 2 if the model were based upon average hourly production, and the production had the interpretation of production rates. At other times, however, fractional solutions are not realistic, and we must consider the optimization problem: n
ai j x j = bi xj ≥ 0 x j integer
(i = 1, 2, . . . , m), ( j = 1, 2, . . . , n), (for some or all j = 1, 2, . . . , n).
This problem is called the (linear) integer-programming problem. It is said to be a mixed integer program when some, but not all, variables are restricted to be integer, and is called a pure integer program when all decision variables must be integers. As we saw in the preceding chapter, if the constraints are of a network nature, then an integer solution can be obtained by ignoring the integrality restrictions and solving the resulting linear program. In general, though, variables will be fractional in the linear-programming solution, and further measures must be taken to determine the integer-programming solution. The purpose of this chapter is twofold. First, we will discuss integer-programming formulations. This should provide insight into the scope of integer-programming applications and give some indication of why many practitioners feel that the integer-programming model is one of the most important models in management science. Second, we consider basic approaches that have been developed for solving integer and mixed-integer programming problems. 9.1 SOME INTEGER-PROGRAMMING MODELS
Integer-programming models arise in practically every area of application of mathematical programming. To develop a preliminary appreciation for the importance of these models, we introduce, in this section, three areas where integer programming has played an important role in supporting managerial decisions. We do not provide the most intricate available formulations in each case, but rather give basic models and suggest possible extensions. 272
Some Integer-Programming Models
Capital Budgeting In a typical capital-budgeting problem, decisions involve the selection of a number of potential investments. The investment decisions might be to choose among possible plant locations, to select a conﬁguration of capital equipment, or to settle upon a set of research-and-development projects. Often it makes no sense to consider partial investments in these activities, and so the problem becomes a go–no-go integer program, where the decision variables are taken to be x j = 0 or 1, indicating that the jth investment is rejected or accepted. Assuming that c j is the contribution resulting from the jth investment and that ai j is the amount of resource i, such as cash or manpower, used on the jth investment, we can state the problem formally as: n
ai j x j ≤ bi xj = 0 or
(i = 1, 2, . . . , m), 1 ( j = 1, 2, . . . , n).
The objective is to maximize total contribution from all investments without exceeding the limited availability bi of any resource. One important special scenario for the capital-budgeting problem involves cash-ﬂow constraints. In this case, the constraints n j=1
ai j xi ≤ bi
reﬂect incremental cash balance in each period. The coefﬁcients ai j represent the net cash ﬂow from investment j in period i. If the investment requires additional cash in period i, then ai j > 0, while if the investment generates cash in period i, then ai j < 0. The righthand-side coefﬁcients bi represent the incremental exogenous cash ﬂows. If additional funds are made...