"Integer Linear Programming" |
Index to Module Eight Notes |
Required (In $ Millions)
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
($ Millions)
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!
![]() |
![]() |
![]() |