Module Eight Notes
"Integer Linear Programming"
 

Index to Module Eight Notes

8.1: Problem Formulation

8.2: Computer Solution and Interpretation

8.3: "Textbook Publishing" Case

 


 8.1: Capital Budgeting/Project Selection Problem Formulation

Introduction
I hope that you have gained an appreciation for the wide range of applications of linear programming: from distribution/transportation to multi-period production planning to resource allocation to financial portfolio allocation to scheduling. Another area where linear programming has gained widespread application is in the capital budgeting/project selection arena.

The problem, however, is that in linear programming the decision variables can take on any value greater than or equal to zero - that includes fractions. In many applications, that does not bother us. If a computer solution says to invest $4,350,010.10 in a particular stock portfolio, we would probably invest $4,350,000 and not worry about rounding the fraction.

However, in the capital budgeting/project selection problem, we want to know whether or not we should invest in Project A. That is, we want the decision variable to only take on the value "1" if we should fund Project A to maximize a project selection or capital budgeting portfolio, or "0" if we should not invest in Project A over the relevant time horizon. Solutions like Project A = 1.256 would not be appropriate since we cannot invest in 0.256 of a new building, or build 0.256 of a new submarine, etc.

So, integer linear programming was developed for the class of problems where fractions are not allowed. The most basic of these problems is the capital budgeting/project selection problem where the only integers allowed for values of the decision variable are "0" and "1". Again, a decision variable value of "0" means we do not accept or fund that decision variable, "1" means we do accept (or fund or include) that decision variable in our capital budget or project selection portfolio. The 0/1 variable is also referred to as a binary variable.

My first experience with integer linear programming was with Field Crest Mills back in 1979. I was working on a new, faster (in the "old days," available integer programming solution algorithms were very very slow and could not handle large scale problems like zero base budgeting for the Department of Defense - which I was interested in). Anyway, I needed a real world problem to test my algorithm so I hooked up with the R&D lab at Field Crest Mills. I was studying for my doctorate at the University of North Carolina at Chapel Hill and Field Crest Mills was a convenient location.

Their problem is typical: you have a set of projects you would like to work on over the next 1 to 5 years, but you only have enough resources (like money, or in their case, textile scientists) to work on a subset of the projects. The problem becomes: which subset of projects do you fund to maximize return (profit, net present value, whatever).

This problem could be a capital budgeting problem: for example, we have 6 capital improvement projects to fund over the next five years but only enough resources to fund 3 - which three do we select to maximize net present value. This problem could also be a zero-based budgeting problem: I used integer linear programming for zero-based budgeting in Department of Defense applications. It is also a natural for the R&D project selection problem.


Problem Formulation
We begin solving integer linear programming problems with the problem. Let's start with a classic capital budgeting problem where we want to maximize the net present value of projected benefits. The following information is available in Table 8.1.


Table 8.1.1

Project
Capital

Required

(In $

Millions)

NPV Benefits
($ Millions)

Year 1
Year 2
Year 3
Year 4

A
$3
$0
$0
$0
$2
B
$0
$5
$1
$0
$3
C
$1
$2
$1
$2
$1
D
$10
$4
$2
$0
$5
E
$2
$0
$5
$1
$4

This table shows that the company would like to pursue five different capital projects over the next four years. Project A, perhaps building a new warehouse, is a one year project estimated to cost $3 million in year 1 with a net present value of benefits of $2 million. Project B doesn't start until year 2 and should be completed at the end of year 3. The objective is to select that set of capital projects so as to maximize the NPV of benefits, subject to meeting the capital requirement constraints over the four year time horizon. The four-year time horizon results in four capital requirement constraints, one for each year.

As with other capital budgeting/project selection problems, there may be other policy or environmental constraints such as:

5) Projects D and E are mutually exclusive; meaning that if one of the projects is undertaken, the other cannot be (perhaps they are very similar and too duplicative if both are undertaken)

6) No more than four total projects may be undertaken (perhaps project administration overhead is such that the administration infrastructure only supports

7) Projects A and C must be undertaken together, if at all (perhaps these two projects share technology and it would be impossible to implement Project A without C, or C without A.

8) Project D is dependent on Project B. That is, Project D cannot be undertaken unless Project B is undertaken (this is similar to Constraint 3) except it is a one-way dependency.

The text chapter on integer linear programming calls the first constraint a mutually exclusive constraint; the second constraint a multiple-choice constraint, the third constraint a corequisite constraint, and the fourth constraint a conditional constraint. Whatever the names, the important point to make is the power of integer linear programming in being able to handle the different scenarios that may exist in capital budgeting and project selection problems. Now that we have the constraints, we can proceed with the formulation.

As in linear programming, we first identify the decision variables.

Let A = 1 if Project A is accepted/implemented/funded/selected as a capital project; 0 if Project A is rejected

Let B = 1 if Project B is accepted; 0 if Project B is rejected

Let C = 1 if Project C is accepted; 0 if Project C is rejected

Let D = 1 if Project D is accepted; 0 if Project D is rejected

Let E = 1 if Project E is accepted; 0 if Project E is rejected

The objective function:

Maximize NPV = 2A + 3B + 1C + 5D + 4E

Subject to the constraints:

1) Year 1 Capital Required: 3A + 1C + 10D + 2 E < 12
2) Year 2 Capital Required: 5B + 2C + 4D < 8
3) Year 3 Capital Required: 1B + 1C + 2D + 5E < 8
4) Year 4 Capital Required: 2C + 1E < 4
5) D & E Mutual Exclusive: 1D + 1E < 1
6) Max of 4 Projects: 1A + 1B + 1C + 1D + 1E < 4
7) Projects A & C go together: 1A = 1C which gives 1A - 1C = 0
8) Project D depends on B: 1D < 1B which gives -1B + 1D < 0

Non-negativity is assumed on the decision variables by the solution algorithms (for example, A > 0). Please note that constraint number 6 would be have to be rewritten with an equality sign if the constraint was that exactly 4 projects must be funded:

1A + 1B + 1C + 1D + 1E = 4

Note also that the way constraint 7 is written allows A and C to not be accepted (both equal zero); but if a solution requires A = 1, then this constraint requires C = 1 as intended. Note carefully how the dependency constraint is written. If D is accepted (D = 1), then B would be forced into solution which is as intended.

Now it's time to solve the problem. One solution is to start with Project D since it has the highest NPV. But if D is accepted, then we have to accept B based on Constraint 7. The solution: accept B and D; reject A, C and E results in the following solution:

Maximize NPV = 2 (0) + 3(1) + 1(0) + 5(1) + 4(0) = $8 Million
Subject to:
1) 10 (1) = 10 which is < 12 (slack of 2)
2) 5 (1) + 4(1) = 9 which is > 8: This solution is infeasible.

Rather than continue with the "brute force" solution approach, let's go to The Management Scientist to get the optimal solution.


8.2: Computer Solution and Interpretation


Using The Management Scientist Software Package
To use The Management Scientist Integer Linear Programming Module to solve integer linear programming problems, click Windows Start/Programs/The Management Scientist/The Management Scientist Icon/Continue/Select Module 4 Integer Linear Programming/OK/File/New and you are ready to load this example problem.

The next dialog screen is just like the linear programming module dialog screen. For this example problem, enter 5 for the Number of Decision Variables and 8 for the Number of Constraints. Then select Maximize for the Optimization Type; and then select OK. The next dialog screen first gives you the option to name the decision variables. X1 and X2 are the default names. I typed A over the X1, then B over X2, and so forth for C, D and E. Enter the objective function coefficients (2, 3, 1, 5, 4) right below the respective variable names. Finally, fill out the constraint matrix - it will look almost like the problem formulation above. Note that you are given just three choices for the relationship: <, = and >, The < symbol is used for < constraints and the > symbol for > constraints.

The next dialog screen allows you to specify the type of integer programming problem you are running. In our case, we are studying the "All Variables are 0/1 (Binary)" problem. Note that you could also have problems that are "General Integer" but not 0/1, such as problems where any positive integer is allowed, or "Multiple Types of Variables" (some variable are binary, some are general integer, and some allow fractions). After you select "All Variables are 0/1 (Binary)," select solve and you will get the following solution.


Printout 8.2.1

INTEGER LINEAR PROGRAMMING PROBLEM

MAX 2A+3B+1C+5D+4E

S.T.

1) 3A+1C+10D+2E<12

2) 5B+2C+4D<8

3) 1B+1C+2D+5E<8

4) 2C+1E<4

5) 1D+1E<1

6) 1A+1B+1C+1D+1E<4

7) 1A-1C=0

8) -1B+1D<0

 

OPTIMAL SOLUTION

Objective Function Value = 10.000

Variable Value

-------------- ---------------

A 1.000

B 1.000

C 1.000

D 0.000

E 1.000

 

Constraint Slack/Surplus

-------------- ---------------

1 6.000

2 1.000

3 1.000

4 1.000

5 0.000

6 0.000

7 0.000

8 1.000


The solution indicates we should accept A, B, C and E for a NPV of 10. The only other output information concerns slack or surplus information on the constraint equations. for example, there is slack of $6 million in the first year since A requires $3 million, C requires $1 million and E requires $2 million which totals $6 million out of the $12 million available (capital budgeting scenarios normally require a "life cycle" approach to budgeting rather than examining year-to-year budgets as independent entities).

Because of the nature of the solution algorithm for integer linear programming, there is limited information in the solution. In particular, we do not get the rich sensitivity analysis that we got with linear programming solutions. This puts the burden on the analyst to change right hand sides, or profit/cost coefficients to determine how solutions change with changes to the inputs. Whether the program does the sensitivity analysis, or the analyst, I believe it is still a very important part of the quantitative methods process.

The last section of this set of Module notes is the "Textbook Publishing" Case on pages 479-480 of the text.


8.3: "Textbook Publishing Case"


The problem in this case is to determine which textbooks should be published in the next production year by ASW Publishing in order to maximize sales subject to meeting the labor-day constraints of John, Susan and Monica; and the policy constraints of not accepting more than 2 statistics books in a single year, more than one accounting text in a single year, and the final requirement to publish one mathematics texts but not both.
Here are the 0/1 decision variables.

BusCalc = 1 (if Business Calculus text is selected for publication;
0 if it is not)

FinMath = 0 or 1 for the Finite Math text
GenStat = 0 or 1 for the General Statistics text
MathStat = 0 or 1 for the Mathematics Statistics text
BusStat = 0 or 1 for the Business Statistics text
Finance = 0 or 1 for the Finance text
FinAcct = 0 or 1 for the Financial Accounting text
ManAcct = 0 or 1 for the Managerial Accounting text
EngLit = 0 or 1 for the English Literature text
German = 0 or 1 for the German text


The formulation of the objective function (maximize sales in 000's of books) and constraints, as well as the solution, is shown in the following Management Scientist output.


Printout 8.3.1

INTEGER LINEAR PROGRAMMING PROBLEM

MAX 20BusCalc+30FinMath+15GenStat+10MathStat+25BusStat+18Finance+25FinAcct+50Man

Acct+20EngLit+30German

S.T.

1) 30BusCalc+16FinMath+24GenStat+20MathStat+10BusStat+40EngLit<60

2) 40BusCalc+24FinMath+24FinAcct+28ManAcct+34EngLit+50German<40

3) 30GenStat+24MathStat+16BusStat+14Finance+26FinAcct+30ManAcct+30EngLi

t+36German<40

4) 1GenStat+1MathStat+1BusStat<2

5) 1FinAcct+1ManAcct<1

6) 1BusCalc+1FinMath=1

 

OPTIMAL SOLUTION

Objective Function Value = 73.000

Variable Value

-------------- ---------------

BusCalc 0.000

FinMath 1.000

GenStat 0.000

MathStat 0.000

BusStat 1.000

Finance 1.000

FinAcct 0.000

ManAcct 0.000

EngLit 0.000

German 0.000

 

Constraint Slack/Surplus

-------------- ---------------

1 34.000

2 16.000

3 10.000

4 1.000

5 1.000

6 0.000


The solution says to publish the finite mathematics, business statistics and finance texts for an expected sales of 73,000. In this solution, John has slack of 34 days, Susan 16 days and Monica 10 days. Perhaps a better solution can be obtained by taking Susan off another project resulting in 10 more days for text work. The revised solution is:


Printout 8.3.2


INTEGER LINEAR PROGRAMMING PROBLEM

MAX 20BusCalc+30FinMath+15GenStat+10MathStat+25BusStat+18Finance+25FinAcct+50Man

Acct+20EngLit+30German

S.T.

1) 30BusCalc+16FinMath+24GenStat+20MathStat+10BusStat+40EngLit<60

2) 40BusCalc+24FinMath+24FinAcct+28ManAcct+34EngLit+50German<52

3) 30GenStat+24MathStat+16BusStat+14Finance+26FinAcct+30ManAcct+30EngLi

t+36German<40

4) 1GenStat+1MathStat+1BusStat<2

5) 1FinAcct+1ManAcct<1

6) 1BusCalc+1FinMath=1

 

OPTIMAL SOLUTION

Objective Function Value = 80.000

Variable Value

-------------- ---------------

BusCalc 0.000

FinMath 1.000

GenStat 0.000

MathStat 0.000

BusStat 0.000

Finance 0.000

FinAcct 0.000

ManAcct 1.000

EngLit 0.000

German 0.000

 

Constraint Slack/Surplus

-------------- ---------------

1 44.000

2 0.000

3 10.000

4 2.000

5 0.000

6 0.000



Now the solution is to publish just two texts: finite mathematics and managerial accounting for expected sales of 80,000. This solution makes better use of Susan, but not so with John. The final change the company wants to evaluate is to add 10 more days to Monica's text work. This solution is:


Printout 8.3.3


INTEGER LINEAR PROGRAMMING PROBLEM

MAX 20BusCalc+30FinMath+15GenStat+10MathStat+25BusStat+18Finance+25FinAcct+50Man

Acct+20EngLit+30German

S.T.

1) 30BusCalc+16FinMath+24GenStat+20MathStat+10BusStat+40EngLit<60

2) 40BusCalc+24FinMath+24FinAcct+28ManAcct+34EngLit+50German<52

3) 30GenStat+24MathStat+16BusStat+14Finance+26FinAcct+30ManAcct+30EngLi

t+36German<50

4) 1GenStat+1MathStat+1BusStat<2

5) 1FinAcct+1ManAcct<1

6) 1BusCalc+1FinMath=1

 

OPTIMAL SOLUTION

Objective Function Value = 105.000

Variable Value

-------------- ---------------

BusCalc 0.000

FinMath 1.000

GenStat 0.000

MathStat 0.000

BusStat 1.000

Finance 0.000

FinAcct 0.000

ManAcct 1.000

EngLit 0.000

German 0.000

 

 

Constraint Slack/Surplus

-------------- ---------------

1 34.000

2 0.000

3 4.000

4 1.000

5 0.000

6 0.000



Now the strategy is to publish finite mathematics, business statistics and managerial accounting for expected sales of 105,000 books. It is noted that none of the solutions include new books - only revisions. It might be prudent policy to add a constraint such as at least one book in the publication schedule should be a new text in order to grow a new business.


That's it! Your introduction to the world of integer programming. The other variations are just extensions of what you already know. For example, a mixed 0/1 integer linear programming problem is one where there are both 0/1 variables and general variables. The warehouse location problem is like this, where the possible sets of warehouses in a distribution systems are 0/1 variables ( 1 means open the warehouse and use it, 0 means do not open or use the warehouse in the distribution system); and the general variables might be the quantity of product shipped through the warehouse like in the transshipment problem.


That's also it for your introduction to the world of quantitative methods. Good night - I am going home to hit the sack and dream about critical paths, RMSE's, queues and inventories and slack in my constraints. Best wishes to you as you continue through your studies and careers!


| Return to Module Overview | Return to top of page |

  About the Course
Module Schedule
WebBoard