INTRODUCTION
{On how to get dressed, about straight lines,
and the beginning of a trip through
the land of Linear Programsville.}
THE SEARCH for the best solutionâthe maximum, the minimum, or in general, the optimum solutionâto a wide range of problems has entertained and intrigued man throughout the ages. Euclid described ways to find the greatest and least straight lines that can be drawn from a point to the circumference of a circle, and how to determine the parallelogram of maximum area with given perimeter. The great mathematicians of the seventeenth and eighteenth centuries developed new optimization procedures that solve complex geometric, dynamical, and physical problems, such as finding the minimum curves of revolution or the curve of quickest descent.
Recently, a new class of optimization problems has originated out of the convoluted organizational structures that permeate modern society. Our natural inclination to attack and solve such problems is manifested by such phrases as ââcost-effective,â âmostest for the leastest,â and âmore bang for the buck.â Here we are concerned with such matters as the most efficient manner in which to run an economy or a factory, the optimum deployment of aircraft that maximizes a countryâs chances for winning a war, or with such mundane tasks as mixing cattle feed to meet diet specifications at minimum cost. Research on how to formulate and solve such problems has led to the development of new and important optimization techniques. Among these we find the subject of this bookâlinear programming.
To define linear programming in nontechnical terms we can take two approachesâdescribe the literal meaning of the phrase linear programming or simply describe typical problems which can be formulated as linear programs. As it is quite instructional to interweave both descriptive paths, we shall do so.
In a most general sense, programming problemsâlinear or otherwiseâare concerned with the efficient use or allocation of limited resources to meet desired objectives. Such allocation problems are central to the field of economics. However, they not only are found within industrial and corporate entities, but also arise in many guises during an individualâs encounter with his dayâs activities.
ON GETTING DRESSED
Diddle, diddle, dumpling, my son John,
He went to bed with his stockings on;
One shoe off, one shoe on;
Diddle, diddle, dumpling, my son John.
ANONYMOUS
The first thing each morning you and I face the programming problem of getting dressed. We must select a program of action which enables us to become dressed in a manner which meets the constraints or accepted fashion rules of societyâsocks are not worn over shoes, but socks are worn. Our basic resource is time, and the selected program must be best in terms of how each individual interprets his expenditure of early morning time.
From a personal point of view, ignoring the âbareâ essentials, my program of action involves the putting on of six items of clothes: shoes, socks, trousers, shirt, tie, and jacket. A program of action is any order in which the clothes can be put on. There are 6 Ă 5 Ă 4 Ă 3 Ă 2 Ă l = 720 different orderings. Many of these are not feasible programs as they do not meet the constraints of society (socks over shoes) or are impractical (tie on before shirt). Even after eliminating these infeasible solutions from consideration, I still have a number of feasible programs to contend with.
How is the final selectionâthe optimum decisionâmade? The dressing problem, like all those to be considered, has some measure of effectivenessâsome basic objectiveâwhich enables me to compare the efficacy of the available feasible programs. If, in some fashion, I can compare the measures for each program, I can select the optimum one. For the dressing problem, I am concerned with minimizing the time it takes to get dressed. This is my measure of effectivenessâthe objective function in programming terminologyâ with which I can compare the various feasible orderings of clothes. Admittedly, I have not solved this problem with stopwatch accuracy, but over the years, my optimum solution has been the following ordering: socks, shirt, trousers, tie, shoes, jacket. This is my optimum solutionâit minimizes the time to get dressed within the fashion constraints of society. Someone else with a different objective functionâminimize the opening and closing of drawers, i.e., minimize the early morning noiseâmight select a different optimum solution.
The dressing problem, although not a linear-programming problem, typifies programming problems in that it has many possible solutions. If there were only one feasible solution, there would really not be any problem or any fun in solving it. There is also some objective to be optimized which enables us to select at least one of the feasible solutions to be the optimum. The finding of the feasible solutions and the determination of an optimal one represents the computational aspects of programming problems which are discussed in later sections.
As we shall concern ourselves only with linear-programming problems, it should be stressed that linear programs are a special subset of general programming problems (usually called mathematical programming) in that the mathematical description of linear programs can be written in terms of linear or straight-line relationships. For example, if one pound of coffee costs $1.00, and the seller offers no quantity discount, the total cost is directly proportional to the amount purchased; i.e., it is a straight-line relationship, as shown in Figure 1. On the other hand, if the seller allowed 10 cents off for the second pound purchased, 20 for the third, etc., up to the fifth pound, and 50 cents per pound afterwards, the cost curve would be nonlinear, as shown in Figure 2. In sum, linear-programming problems are those programming problems whose relationshipsâthe constraints of the problem and the objective functionâcan be represented mathematically as linear relationships. Although this appears to be quite restrictive, many important problems have this simplifying feature.
Figure 1
Figure 2
Programming problems, especially linear-programming problems, arise in a wide variety of settings. There are standard applications of programming techniques found in the areas of agriculture, petrochemicals, paper manufacturing, transportation, production scheduling and inventory control, military and defense, engineering, economics, to cite just a few. A bibliography of applications is given in the Appendix. We shall deal with a few such applications in order to develop the fundamentals of linear programming. But firstâas a slight digressionâwe must discuss the place of linear programming within the scheme of modern-day scientific decision-making, i.e., operations research or management science.
OPERATIONS RESEARCH AND MODELS
When we mean to build,
We first survey the plot, then draw the model;
And when we see the figure of the house,
Then must we rate the cost of the erection.
SHAKESPEARE
Definitions of operations research (OR), like advice to the lovelorn, have always been in demand and are plentiful. They range from the detailed one of âoperations research is the application of scientific techniques, tools, and methodology to problems involving the operations of a system so as to provide those in control of the system with optimum solutions to the problems,â to the succinct ones of âoperations research is quantitative common senseâ or âresearch into operations.â For our needs, we consider OR to be the application of scientific techniques to decision problems. What interests us most, however, is not what OR claims to be, but its methodology.
The phases of an OR project can be delineated into six overlapping and somewhat ill-defined stages.1 For most purposes they are:
Developing a mathematical model to represent the system under study
Deriving a solution from the model
Testing the model and solution
Establishing controls over the solution
Putting the solution to work
Here we have introduced the concept of a mathematical model, which we shall see is central to the methodology of OR. These phases of an OR project can be viewed as accomplishing the following: For any problem we need to define the broad objectives and goals of the systemâexamine the environment we are working inâbecome familiar with the jargon, the people and things associated with the problemâdetermine the alternative courses of action available to the decision-makerâdevelop some statement, verbal or otherwise, of the problem to be investigated; translate the problem into a suitable logical or mathematical model which relates the variables of the problem by realistic constraints and a measure of effectiveness; find a solution which optimizes the measure of effectiveness, i.e., a feasible and optimum solution; compare the modelâs solution against reality to determine if we have actually formulated and solved the real-world problem we started with; determine when the real-world situation changes and the reflection of such changes into the mathematical model; and most important, implementationâputting the solution into operation (not just filing a report) and observing the behavior of the solution in a realistic setting. As our ability to develop precise mathematical models of operational problems is not a highly developed scienceâmost people believe it to be an artâwe must be sensitive to discrepancies in the solution and feed back to the model refinements that will cause future solutions to be more realistic and accurate.
Models have been classified into three basic types. The iconic model looks like what it is supposed to represent. It could be an architectural model of an apartment complex, a planetarium representing the cel...