Citation
Optimal scheduling of complex batch processes

Material Information

Title:
Optimal scheduling of complex batch processes
Creator:
Swanson, Henry Xenophon, 1945-
Publication Date:
Copyright Date:
1972
Language:
English
Physical Description:
xii, 149 leaves. : illus. ; 28 cm.

Subjects

Subjects / Keywords:
Chemicals ( jstor )
Control loops ( jstor )
Integer programming ( jstor )
Integers ( jstor )
Linear programming ( jstor )
Mathematical variables ( jstor )
Objective functions ( jstor )
Product mixes ( jstor )
Scheduling ( jstor )
Separators ( jstor )
Chemical Engineering thesis Ph. D
Chemical plants -- Automation ( lcsh )
Dissertations, Academic -- Chemical Engineering -- UF
Mathematical optimization ( lcsh )
Genre:
bibliography ( marcgt )
non-fiction ( marcgt )

Notes

Thesis:
Thesis -- University of Florida.
Bibliography:
Bibliography: leaves 147-148.
General Note:
Typescript.
General Note:
Vita.
Statement of Responsibility:
by Henry X. Swanson.

Record Information

Source Institution:
University of Florida
Holding Location:
University of Florida
Rights Management:
Copyright [name of dissertation author]. Permission granted to the University of Florida to digitize, archive and distribute this item for non-profit research and educational purposes. Any reuse of this item in excess of fair use or other copyright exemptions requires permission of the copyright holder.
Resource Identifier:
022668152 ( AlephBibNum )
13983199 ( OCLC )
ADA5190 ( NOTIS )

Downloads

This item has the following downloads:


Full Text

















Optimal Scheduling of Complex
Batch Processes











By


HENRY X. SWANSON


A DISSERTATION PRESENTED TO THE GRADUATE COUNCIL OF
THE UNIVERSITY OF FLORIDA IN PARTIAL
FULFILLMENT OF THE REQUIREMENTS FOR THE DEGREE OF
DOCTOR OF PHILOSOPHY


UNIVERSITY OF FLORIDA
1972















73-15,601

SWANSON, Henry Xenophon, 1945-
OPTIMAL SCHEDULING OF COMPLEX BATCH PROCESSES.

The University of Florida, Ph.D., 1972
Engineering, chemical






University Microfilms, A XEROX Company, Ann Arbor, Michigan




























1973

HENRY XENOPHON SWANSON


ALL RIGrTS RESERVED
































PLEASE NOTE:


Some pages may have

indistinct print.

Filmed as received.


University Microfilms, A Xerox Education Company














ACKNOWLEDGMENTS


The author wishes to express his appreciation for the

assistance and support of:

Professor F. P. May, who served as chairman of his supervisory

committee, first introduced the author to the problems of batch

scheduling, and who was his principal research advisor;

Associate Professor A. W. Westerberg who introduced the

author to systems design and optimization and served on his research

proposal committee;

Professor H. E. Schweyer who served on the author's supervisory

committee and who helped him define his problem;

Assistant Professor J. B. Wallace who served on his supervisory

committee;

Professor R. D. Walker, Jr. who served on his supervisory

committee;

The Department of Chemical Engineering for support and for the

educational contributions of its faculty and staff;

The University Computing Center which provided support.













TABLE OF CONTENTS


ACKNOWLEDGMENTS.............................................

LIST OF TABLES.............................................

LIST OF FIGURES............................................

LIST OF SYMBOLS.............................................

ABSTRACT ..................... .......... ..............

CHAPTERS:

I. THE PROBLEM................... ....................

II. INTEGER PROGRAMMING...............................

Problem Formulation..........................

History....................................

III. INTEGER PROGRAMMING USING DUALITY AND THE
REVISED SIMPLEX METHOD...........................

IV. PURE SCHEDULING PROBLEMS........................

Balas'Enumeration ..........................

Branch-Bound Enumeration..................

A Solution to the Storage Problem...........

Optimization Strategies.....................

V. ENUMERATION OF MIX/SCHEDULING PROBLEMS ...........

VI. RESULTS, CONCLUSIONS, AND RECOMMENDATIONS........

Solution Efficiency.........................

Results..... ................................

Conclusions and Recommendations .............

APPENDICIES ........................................ .......

A. THE INVERSE MATRIX FOR PURE SCHEDULING PROBLEMS.,


ii

v

vi

viii

xi



1

8

8

12


16

24

25

38

43

44

48

60

60

64

70

73

74


I













TABLE OF CONTENTS .(Continued)


Page

B. PROGRAMS ......................................... 86

BIBLIOGRAPHY............................................... 147

BIOGRAPHICAL SKETCH ......................................... 149













LIST OF TABLES


Table Page

1 Table of Data for Sample Problem .................. 30

2 Optimal Schedule for Sample Problem............... 38

3 Batch Costs for Sample Batch Product Mix Problem.. 54

4 Batch Characteristics for Large Batch Product
Mix Problem......................... ............. 55

5 Chemical Inventories and Batch Sizes.............. 56

6 Feasible Schedule Found for Batch Product Mix
Problem................................... ....... 57

7 Computational Results Using Several Integer
Programming Methods............................... 61

8 Optimal Product Mix and Schedule for Sample
Problem 2. ......................................... 65

9 Schedule for Two Time Periods..................... 66

10 A Set of Scheduling Decisions..................... 69

11 Best Schedule Found for Sample Problem 3.......... 71













LIST OF FIGURES


Figure Page

1 A Simple Batch Processing Problem................. 3

2 Flow Chart for First Two Linear Programs........... 26

3 Flow Chart for Last Four Linear Programs........... 27

4 Final Flow Chart for Sample Problem................ 28

5 Flow Sheet for Intermediate Inventory............. 29

6 Early Stages in Solution of Sample Problem......... 34

7 Flow Chart Showing First Four Decisions Made
in Solving Scheduling Problem..................... 35

8 Flow Chart Showing Backtracking After Sixth
Linear Program............................. ...... 36

9 Continuation of Sample Problem to First
Feasible Schedule................................. 36

10 Flow Chart for First Step in Solving Sample
Problem Using a Branch and Bound Enumeration
Procedure.................. ....... ................... 39

11 Flow Chart for Branch-Bound Procedure up to
Fourth Partial Solution........................... 40

12 Flow Chart Including Fifth Partial Solution....... 40

13 A Partial Solution with Three Remaining Either/Or
Choices............................................ 46

14 A Partial Solution Where Three Either/Or Choices
Can Be Made at Once............................... 47

15 Second Batch Product Mix Problem.................. 59

16 Three Possible Forms for Columns of B.............. 78

17 Flow Sheet for Subroutine PIVOT................... 89

18 Flow Sheet for Subroutine LINEAR .................. 92

19 Flow Chart for Subroutine DEMINF................. 98

20 Flow Sheet for Subroutine BACKTR.................. 112













LIST OF FIGURES (Continued)


Figure Page

21 Vector LF Before and After Control Point 1........ 118

22 Vector LF After Iteration Loop 104................. 119

23 LF After Iteration Loop 105....................... 119

24 LF After Control Point 11......................... 120

25 LF After Variable LL Constrained to Zero and
Variable L Freed................................... 120













LIST OF SYMBOLS


A matrix which defines constraints to scheduling problems.

a column i of matrix A'.

AA a matrix used by computer programs to determine nonzero
components of A'. A(1,J) gives the number of nonzero
components of the first column of A'. For A(1,J) = I,
A(Z,J) through A(I+1,J) give the location of the nonzero
components of the Jth column of A'. For A(1,J) = I,
A(I+2,J) through A(2I+1,J) give the corresponding nonzero
components of the Jth row of A'.

B the basis matrix of A'. (See Chapter III.)

BB The basis matrix for the results of first dual linear
program where all of the dual variables are constrained
to zero.

BI a matrix used by computer programs which is the inverse
of B.

Bl the product of -CC times B.

B1F Bl for the result of the first dual linear program.

cijk cost of producing the kth batch of chemical i in
production unit j.

cjk coat per hour of storing kth batch of chemical i in
production unit j.

Ci completion time of a particular job i.

CC cost vector used by computer programs. CC(i) is the
cost corresponding to dual variable i.

d cost vector for the dual to scheduling problems.

ei the vector which has all zero components except for the
ith component which is one.

IK a matrix used by computer programs to locate information.
If a variable I represents a scheduling decision then
IK(1,I-NBM) locates the row of IMP which contains infor-
mation about decision I.

For a particular N2, IK(2,N2) locates the list IK(3,N2)
through IK(IK(2,N2),N2). IK(3,N2) through IK(IK(2,N2,N2)
are parameters used along with subroutines DEMIN or DEMINF
to reduce the size of scheduling problems.


viii














IMP matrix which locates production decisions and scheduling
decisions for the computer programs. For a particular
Il, IMP(II,1) will locate production decisions. Let
I = IMP(Il,1). In this case variables IMP(II,2) through
IMP(Il,I) will correspond to decisions to produce some
batches. Let J IMP(I1,I+1). In this case variables
IMP(Il,I+2) through IMP(I1,J) will correspond to decisions
about scheduling the batches.

IX vector which is used by computer program to locate freed
variables. A dual variable I is constrained to zero if
IX(I) .FALSE. The decision to free a variable I on a
particular branch of a decision tree (see Chapter IV.) is
made by setting IX(I) .TRUE.

IXB let I be a dual variable representing a production
decision. If the decision is implied by another decision
then one need not free variable I. (see Chapter IV.)
The computer programs indicate that a production decision
is redundant by setting IX(I) .FALSE. and IXB(I) .TRUE.

If variable I represents a scheduling decision then the
variable is constrained to zero on a branch of the decision
tree by setting IXB(I) .FALSE. IXO(I) .FALSE. and
IXB(I) .TRUE. indicate that variable I is currently
constrained to zero but may eventually be freed if the
decision is made to produce the batch which is scheduled
by variable I.

IXO For production decisions IXO(I) .FALSE. indicates variable
I is constrained to zero on the current branch of a solution
tree.

For scheduling decisions IXO(I) = .FALSE. means that a
variable is temporarily constrained to zero but may be
freed if the decisions are made to produce the batches
scheduled and IXB(I) .TRUE.

IX1 a vector used by computer programs to determine which
variables are in the basis. The variables IX1(1) through
IX1(M) are in the basis.

IN equivalent of n for computer programs.

LF a vector which contains a list of numbers used by computer
programs and described in Chapter IV. For a particular I,
the absolute value of LF(I) is a variable which has been
either freed or constrained to zero. If LF(I) is negative
the program has eliminated the opposite decision from
consideration. The first member of the list is LF(2) and
the last member is LF(LF(1)).













m the number of constraints to the dual of a scheduling
problem.

M equivalent of m for computer programs.

MIMP number of rows of matrix IMP.

n number of variables in the dual to a scheduling problem.

NBM number of production decisions similar to Equations (41)
through (44).

R a reactor used in a sample program.

S a separator used in a sample program.

t the time that a particular batch is started.

v a variable which can take a value of either 0 or 1.

w the vector of dual variables to a scheduling problem.

x vector of variables for a product mix or scheduling
problem.

X vector containing the value of the basis variables for the
written programs.

z objective function.

z objective function for an incumbent solution.

T the time period over which a scheduling problem is to
be optimized.












Abstract of Dissertation Presented to the
Graduate Council of the University of Florida in Partial Fulfillment
of the Requirements for the Degree of Doctor of Philosophy


OPTIMAL SCHEDULING OF COMPLEX
BATCH PROCESSES


By


Henry X, Swanson

June, 1972

Chairman: Professor F. P. May
Major Department: Chemical Engineering

The chemical industry performs a number of its operations

as batch processes. This paper presents a method of scheduling batch

processes,and the techniques developed are especially efficient for

solving batch scheduling problems found in the chemical industry.

Two related problems are unique to batch processes. One has

the problem of scheduling operations if more than one chemical can

be processed in the same machine. Sequential batch operations usually

require intermediate inventory. The beginning intermediate inventory

over any period determines which schedules are feasible and the final

intermediate inventory is a function of the schedule used. One has

the problem of determining which schedules should be used and how much

intermediate inventory should be maintained.

The author modeled batch scheduling problems using linear

production and inventory costs and linear constraints. Other researchers

have presented methods of solving such problems but the author's method

proved more efficient for chemical batch scheduling problems.













The models of scheduling problems were written as a linear

objective function and a large number of linear constraints. A subset

of the constraints would apply for any feasible schedule. The dual

problem was also linear with a large number of variables. Only a

subset of these variables would take on nonzero values for any

feasible solution. The solution algorithm used the revised simplex

method and a novel method of identifying which variables were held to

zero. This solution method allowed one scheduling decision to Imply

another which turned out to be an important feature for improving

solution efficiency.

Sample scheduling problems were solved where the objective

was to find how many batches should be produced and then to schedule

them. The author could not find a case where such problems were

attempted by other researchers.

The solutions to simple problems indicated that machine slack

time is an inherent feature of batch scheduling problems. The

solutions also indicated that intermediate inventory costs frequently

cause one to produce a more varied product mix than if there were no

inventory costs.


xii














CHAPTER I

THE PROBLEM


It was the purpose of this work to develop a method to

schedule the operation of fairly complex batch chemical processes.

Actually a method was developed to optimize a fairly large class of

problems. The solution procedure was developed to be most efficient

for the chemical processing problems because of the structure of such

problems.

Batch chemical processing units are designed so that various

chemicals can be fed into them and after processing the resulting

products are removed. We will look at the problem created when a

chemical plant can produce a variety of products in the same batch

production units. Typically there are a number of operating units

in a chemical plant and the units can, in general, be used to produce

a number of different products. The products from some units are

used as feed to other units and one has to decide how each unit should

be operated.

The oil industry has had some success in using linear pro-

gramming to optimize continuous production rates when a variety of

possible products can be produced. If one assumes that there is a

fixed cost per pound of chemical made in a production unit one gets

a linear objective function.


minimize cijxi (1)
S

Here xij is the number of pounds of chemical i produced in













production unit j and cij is the fixed cost per pound of chemical

produced. Profit is treated as a negative cost.

One also has material and energy balance constraints which are

of the form

Ax

Here we are using matrix notation where A is a matrix, x is

the vector with components xij and b is a vector.

These constraints together with the linear objective function

form a linear programming problem. This linear programming problem

becomes an integer programming problem if the chemicals are to be pro-

duced in batches. Batch processes differ from continuous processes

in at least two important aspects. Production occurs only as an

integer number of batches and successive production units do not

necessarily operate at the same average production (or use) rates.

Equations (1) and (2) with xij integer might not be too difficult

an integer programming problem. This product mix problem might even

be solved by linear programming especially if it has a lot more variables

than constraints.1 One might not be able to schedule the result of

this product mix problem.

The scheduling problem can be seen by looking at a very simple

batch processing problem. Suppose a chemical process uses two batch

units, R and S, to produce a final product. Suppose that R produces

300 pounds of product and that it takes 500 pounds of product from R

to feed S. Suppose further that it takes three hours to produce a

batch in R and four hours to produce a batch in S.













300 pounds 500 pounds feed
produced/batch needed per watch
R Intermediate
R Inventory S
three hours four hours
per batch per batch


Figure 1. A Simple Batch Processing Problem.



With sufficient intermediate inventory, it is possible to

produce 5 batches in R and 3 batches in S over a fifteen-hour period.

If there is no intermediate inventory, the first batch of S cannot

begin until after the second batch of R is completed. Thus, only

two batches of S can be produced in a fifteen-hour period with no

intermediate inventory.

One should notice that R is capable of producing 100 pounds

per hour and S is capable of consuming 125 pounds per hour if there is

sufficient feed. One should consider multiple uses for S since it is

slightly oversized for the process shown in Figure 1.

Uriostie2 considered the product mix problem given by

Equations (1) and (2) together with xij integer. This product mix

problem did not include scheduling constraints. Next Uriostie

considered scheduling the problem in a second step. If one adds

restrictions on the number of batches produced to Equation (2)

eventually one will get a product mix that is schedulable.

Thus far we have not considered any inventory costs in our

problem formulation. In general we will be concerned with the problem

where the cost of each product in inventory is proportional to the amount

of product and to the time that this product is in inventory.













The real product mix problem for batches should include

Equation (1) and a cost for inventory. The constraints should include

Equation (2) and scheduling constraints. An efficient method will be

presented for solving this batch product mix problem. Actually the

solution procedure turns out to be useful for solving a larger class

of problems than the batch operation problems which are considered in

detail in this thesis.

We want a solution procedure that will be very efficient for

solving certain problems found in the chemical industry. Three

different types of problems are considered in this work.

The petroleum industry uses the product mix problem in order

to set yearly production goals and sales goals for continuous processes.

The author would like to be able to solve the batch product mix problem

for the same reason. Sales and production goals are useful and the

batch product mix problem can provide this information.

The author would like to be able to solve the batch product

mix problem and two other related problems. The other two problems are

caused when sales goals are not met exactly. The production department

could use the result of the yearly batch product mix problem if sales

goals were met exactly.

Actually sales vary from month to month and sales departments

are encouraged to exceed the sales' goals for the most profitable

products. The production department has to be able to fill whatever

sales commitments are made each month.

The production department can use a modified batch product

mix problem for monthly operations. This problem would again use













costs for making each batch and inventory costs. The batch product

mix problem would have the same form as the yearly batch product mix

problem except for some additional constraints. These constraints

would force production to fill the existing sales orders.

The last problem the author would like to be able to solve

is simply a scheduling problem. The pure scheduling problem is formed

when one decides what operations should be performed and one merely

needs to schedule the operations. This is the type of problem

Urioatie2 solved for the case of two machines and two products.

Uriostie also assumed he had sufficient intermediate inventory to begin

any operation.

In reality the inventory left over from one month's production

affects production in the next month. We will only be interested in

optimizing operations over a fixed time period and will ignore the

effect of these operations on some sequential time period.

Our scheduling problem is related to another problem called

in the literature "the job-shop problem."3 The job-shop problem comes

from the problem of scheduling production in a machine shop where pieces

of metal have to be worked on different machines. The problems are

different however in that in our problem there is in general no unit

of chemical that has to be worked on. Three-sevenths of one batch

might be needed to make a batch of feed for the next processing unit,

for example, and frequently a batch separation process will produce

some odd fraction of material to be recycled.

One may have to do a number of operations on a piece of metal

before the job of working the metal is completed. Other authors













reported work on scheduling problems but interest has most often

centered on a regular measure of performance for the job-shop problem.

A regular measure of performance can be expressed as a function of

the job completion times.


M = f(C1,C2,....,C) (3)


C, is the time that job i is completed and a regular measure

of performance also has the characteristic that the measure increases

only if at least one of the completion times increases. That is, if

M' = f(C,C2,...,C), then M' > M only if C' > Ci for at least one i.
3
Conway, Maxwell, and Miller suggest one of the real reasons

that so much interest has centered around minimizing the completion

time of the last job (a regular measure of performance) is that a

simple algorithm was developed for minimizing this completion time in

a two-machine job-shop. Researchers, however, have not found a

simple algorithm for more complex cases. We will be using an inventory

cost which is proportional to the amount of each material in inventory

and the time it is stored. This is not a regular measure of performance

since the cost is minimized if we start jobs creating inventory as

late as possible. One reason why this inventory cost makes sense is

that if a product cannot be shipped and sold until a certain due date,

there is no reason why the company should spend its resources completing

the job early.

Some heuristic procedures have been developed for solving the

job-shop problem. Actually heuristic procedures are a fairly good

idea for scheduling problems. The job-shop scheduling problem can be














formulated as a 0-1 programming problem but as late as 1963 realistic

problems could not be solved. Lasdon has some encouraging results

for large scale problems but his scheduling problems are not as difficult

as the ones this work will attempt to solve.

In one way, our scheduling problem is harder than the job-

shop scheduling problem; we do not have a fundamental unit of the

chemical product which has to go through a certain sequence of machine

operations. Our scheduling problem is easier because usually one

has a number of batches of the same type and this reduces the

dimensionality of the problem. (Knowing that batch 1 of type E

proceeds batch 1 of type F implies that batch 1 of type E proceeds

all uf the batches of F and reduces the size of the problem.)

Multiple batches (that is, continuing use of the process)

are the rule in the chemical industry because of the high development

coats of a chemical process. The high costs involved justify a fairly

elaborate effort to find a good product mix and a good schedule.

Graham also looked at a similar scheduling problem. No

inventory costs were assessed but costs were included for setting up

each type of batch. A modification of dynamic programming was used.

There are computer storage problems for dynamic programming problems

of any complexity and Graham circumvented some of them by an

approximation technique. The author questions whether the storage

problems can be avoided for more complex problems than Graham attempted.

The author's enumeration scheme also looks more promising than Graham's

because of the simplifications caused by multiple batches.














CHAPTER II

INTEGER PROGRAMMING


A solution procedure is needed for product mix problems with

or without sales commitments and for pure scheduling problems. An

enumeration procedure similar to integer programming is developed in

this work. Some of the nomenclature of integer programming will be

useful for explaining the new enumeration procedure. First our problems

will be formulated as integer programming problems and then some of

the history and terminology of integer programming will be discussed.


Problem Formulation

The cost of producing batches is expressed in Equation (1)

for a product mix problem. For a pure scheduling problem the number

of batches of each type to be produced is fixed so this summation is

a constant. We can express the number of batches produces as a sum

of 0-1 variables.


xij = Xijk
x x ijk (4)


where xijk = 1 if the kth batch of i in j is to be produced

= 0 otherwise

0-1 variables will simplify later discussion.

We will need to include inventory costs in our investigations.

Let us look at the contribution to the inventory cost over a fixed

period, T, caused by one batch. Let tijk be the time that batch k of

i is started in unit j. Suppose it costs cijk per unit time to store













the feed for the batch in inventory. If we do not start the batch

until T the cost for storing the feed is Cijkr. The cost for feed

inventory will decrease by Cijk(T tijk) as a consequence of starting

the batch at tijk. Suppose that it costs cijk per unit time to store

the product from the batch in inventory and the batch has a processing

time of pijk in the unit. The overall affect upon inventory cost due

to starting the batch at tijk is



cijk(tijk + Pijk T) + ijk(tijk ') (5)


The inventory costs given by Equation (5) summed over all i,

j, and k is a linear objective function which we need in order to have

an integer program. The total objective function for our problem is

the sum over i, j, and k of Equation (5) and the costs given by

Equation (1). Next we need to formulate our constraints.


Material Balance

A material balance gives a simple linear constraint between

batches.


S Wijkxijk Wijkxijk (6)
ijkcPI ijkcCI

where wijk is the amount of chemical produced or used by batch k of
i in j

PI is the set of batches producing a kind of chemical

CI is the set of batches consuming the same kind of chemical.













Completion Time

We are to optimize operations over a fixed time period. A

simple constraint will make sure that there is enough time to produce

the batches in each production unit.


Pk ijkijk (7)
ik

We need to assure that batches are completed by the due date

if sales commitments are made. For the pure scheduling problem every

product batch has a due date.


tijk + Pijk dijk (8)


where dijk is the due date for producing batch k of i in j.

We need to use some tricks with our problem formulation to make

sure that no inventory cost is assessed if we make the decision not

to make a batch. We can use a synthetic device that will schedule any

batch which will not be made (xijk 0) to start at the final time T.

We do not want a contribution to the inventory cost if xijk = 0. This

can be done by the constraints:


tijk T (9)


tijk + rxijk T (10)

and adding the constant cijkPiJk to the objective function.

When xijk = 0, Equations (9) and (10) force tijk = T. One can

look at Equation (5) to see that the contribution to the inventory

cost when tijk = T is 0.













Equation (10) is nonrestrictive when xijk = 1.


Scheduling

This work is primarily concerned with scheduling different

operations on the same piece of equipment. The equipment can only

operate on one thing at a time so one has the constraints;


tajb + ajb tcjd
either/or (11)
tcjd + Pcjd tajb


Equations (11) are concerned with two batches to be made in

the same piece of equipment. Equations (11) say that one of the batches

has to be finished before the other begins. This either/or choice can

be expressed using a 0-1 variable.


tajb + ajb tcjd + (tajb + Pajb)v


tcjd + cjd tjb + (tcjd + Pcjd)(1 v) (12)

v 0 or 1.


To form an integer program we also would have to put some

constraints on our variables like v in Equations (12). For example,

we would need constraints to force a batch of A before all the batches

of B if the decision is made to schedule A before the first batch

of B. Equations (12) only hold if one has decided to produce batch b

of a in j and batch d of c in j. One may or may not decide to produce













a batch in the product mix problem, therefore Equations (12) are not

correct for the product mix problem. A more complex set of equations

has to be written for the product mix problem.

In general it is difficult to correctly formulate integer

programming problems. One of the most frequently encountered discrete

problem, the traveling salesman problem,8 was recognized and solved

years before someone saw how to formulate it as an integer programming

problem. The actual enumeration procedure developed later avoids much

of the difficulty of problem formulation.


History

A great deal of work has been done on integer programming.

Reviews of the literature8 have been done by others and a general

review will not be attempted here. Rather we will look at some of the

major types of solution procedure and their limitations. As the new

enumeration procedure is developed in a later chapter the relationship

will be shown between the new method and some of the more successful

methods of integer programming.

One of the earlier integer programming methods was developed

for the all-integer problem by Gomery.9'10 In this method all the non-

integer constraints are written. This problem is solved by a linear

programming method and new constraints are added to the problem. These

new constraints reduce the constraint set to a smaller set containing

the valid integer solutions. Constraints are added until an all-integer

solution is found. A great deal of work was done refining this cutting

plane method but unfortunately the method never proved to be very useful














because of the large number of constraints which had to be added to

the problem.

One of the most recent integer programming methods is also

due to Gomery. Again in this method an integer programming problem

is written without the integer constraints and one wants to reduce

this convex set to find the integer solutions. Group theory is used

and some refinements have been made in the method but it also doesn't

work very well because of computer storage problems.

Most, if not all, of the currently more successful algorithms

for solving integer programming problems are implicit enumeration
12 13
schemes.1 Land and Doig3 were the first to look at this method. For

implicit enumeration one first solves the problem using linear programming

without the integer constraints. One then looks at the effect of

adding integer constraints to the problem. One might, for example,

look at adding the constraint x7 4 to the problem where x7 must be

an integer variable. If x7 4 makes the problem infeasible one need

not look at any more integer solutions with x7 = 4. If x7 = 4 gives a

feasible solution one might solve the linear programming problem with

x7 4 and the original constraints and then look at adding additional

integer constraints to this result.
14
An additive algorithm due to Bales is similar to one of the

enumeration schemes in a later chapter. Suppose one has a problem with

0-1 variables. Equation (4) shows how to change a problem with integer

variables into one with 0-1 variables. One enumeration scheme starts

by first solving the linear programming problem without integer

constraints. If the solution is all integer then you are finished. If













not the scheme adds integer constraints one at a time. One chooses a

first variable, v1, and constrains it to be zero. The problem is

solved with all noninteger constraints and v1 = 0. If the problem is

infeasible then one need never look at solutions with v1 0 and one

need only look at v1 = 1. If the problem has a solution with v. 0

we call this a partial solution. We next need to find if there are

any feasible solutions to the original problem with v1 0. We do

this by adding more integer constraints to our partial solution. Suppose

we add the consecutive constraints v2 0, v3 0, ..., vn 0 and get

an infeasible solution. We say that there are no feasible completions

to the partial solution v1 0, v2 = 0,...,v 0. We next backtrack

and look for feasible completions to the problem v1 = 0, v2 = 0,...,

vn1 0, vn 1.

The process of adding constraints to the problem until one finds

a solution or proves there is no feasible completion is called

fathoming.14 Once one finds a solution to the original problem the

fathoming and backtracking procedure can be made more efficient. We

can use the objective function, z of the solution to the original

problem. We need not look for any solutions which do not have objective

functions better than z since we are trying to find the best possible

solution. We only keep the objective function from the best solution

we have found so far. If we find a new solution with a better objective

function we use it for the new z Suppose at some stage of our

fathoming procedurL we reach a partial solution which has an objective

function which is not as good as z At this point we can backtrack

because adding constraints will not improve the objective function of








15




the partial solution and we are only looking for feasible completions

with objective functions better than .

In order to implement an efficient enumeration scheme to solve

an integer programming problem, one needs information on the effect of

adding a constraint to a linear programming problem. An integer

programming method is developed in Chapter III which gives a great

deal of information on the effect of adding constraints to a problem.

In Chapters IV and V the integer programming method will be shown to

be very efficient for batch scheduling problems.













CHAPTER III

INTEGER PROGRAMMING USING DUALITY AND THE
REVISED SIMPLEX METHOD


A new method has been developed to solve integer programming

problems. The method is especially efficient for solving scheduling

problems. In Chapter II scheduling problems were shown to have two

general types of constraints. The first type of constraint includes

the material balance constraints and the completion time constraints.

Any feasible schedule has to satisfy all of the material balance

constraints and all of the completion time constraints. A feasible

schedule only satisfies one of the scheduling constraints from each

pair of scheduling constraints of the second kind. The new

solution method solves the dual of the scheduling problem. The

dual problem contains paired variables corresponding to the paired

scheduling constraints in the primal problem. One variable from

each pair of variables is constrained to zero. The new solution

method first solves the dual problem without any paired variables

and later successively adds variables to the problem. The dual

problems are solved by means of the revised simplex method15 which

greatly reduces the amount of work required for scheduling problems.

The new integer programming method will be explained by means

of a sample scheduling problem. Suppose we have to schedule three

operations, E, F, and G, on a particular machine. Suppose that E

produces inventory that costs 30 units of value for each unit of time

stored in inventory, F produces inventory that costs 40 units for













each unit of time in inventory, and G consumes inventory that costs

30 units of value for every unit of time in inventory. The objective

function will be of the form


minimize 30tE 40tF + 30tG + K (13)


t, tF and tG are the times that batches E, F, and G are started. As

shown in Equation (5) K will be a constant if we are to optimize our

scheduling over a fixed time period.

We will suppose G has to start before 60, F has to start

before 40 and E has to start before G. Suppose further that E and F

take 20 and G takes 10 units of time. We have three fixed constraints.


t < 60 %14)
G -

tF < 40 (15)

tE + 10 < tG (16)


We also need to have scheduling constraints that do not allow

two batches to be produced concurrently in the same machine.


tE + 20 tF
either/or (17)
tF + 20 < tE


tF + 20 < tG
either/or (18)
tG + 10 < tF














The scheduling problem is now formulated as a set of linear

programs. The programs can be written in a compact form.



minimize K (30, 40, -30)t


0 0
0 -1
-1 0
auch that -1 1
1 -1
0 -1
0 1


-60
-40
20
t > 20
20
20
10


t > 0 (19)


We have four possible linear programs depending on which

constraints are included from the last two pairs of constraints.

Corresponding to each of these linear programs there is a dual linear
15
program.


minimize c't
primal A t > d
problem t > 0


maximize d'w
dual A' w < c
problem w > 0


The objective function of the solution to a dual problem has

the same value as the objective function of the solution to the

corresponding primal problem. In fact, the same information can be

retrieved from a solution to the dual problem as can be retrieved from

a solution to the primal problem.

The dual problems corresponding to (19) can also be written in

a compact form.













maximize (-60, -40, 20, 20, 20, 20, 10)w + K

0 0 -1 -1 1 0 0 -30
such that 0 -1 0 1 -1 -1 1 w < -40 w > 0 (21)
-1 0 1 0 0 1 -1 +30


If a constraint is used in a primal problem the corresponding

variable will be used in the dual. If a constraint is not used in the

primal then the corresponding variable will not be found in the dual.

In order to use linear programming we first rewrite Equation

(21) in terms of equality constraints.


maximize (-60, -40, 20, 20, 20, 20, 10, 0, 0, 0)(w1s) + K


0 0 -1 -1 1 0 0 1 0 0 -30
0 -1 0 1 -1 -1 1 0 1 0 w = -40 (22)
-1 0 1 0 0 1 -1 0 0 1 s +30

> 0
s -

The first step of the solution procedure will be to solve (.2)

without any of the either/or variables. There are a number of algorithms

for solving linear programming problems but the revised simplex method

is especially useful for our needs.

Linear programming algorithms use a stepwise method of finding

an optimal solution. Primal simplex methods first find an extreme point

of the convex constraint set. One then pivots between adjacent extreme

points to the optimal solution. If a linear programming problem has n

variables and m constraints, the extreme points are characterized by

n-m of the variables having a value of 0. The m remaining variables

are called basis variables and one moves from one extreme point to













another by changing the variables in the basis. One needs to know how

much the objective function will change if a new variable is put in

the basis. One uses a vector yj for each variable, j, in order to

determine the change in the objective function. Suppose we are doing

the dual problem of Equations (20). For each variable n1 let a
n1
be the corresponding nth column of A'. Let b be the set of basis

variables, yj expresses the jth column of A' in terms of the basis

columns of A'


aj = Yija (23)

i c b
iEb

Equation (22) can also be expressed in matrix notation


aj B y (24)


Here B is the matrix formed from the basis columns of A'.

In the normal simplex method a new yj is generated for each j

for each step of the solution process. The revised simplex method

generates an inverse matrix, B-1, with each step of the solution
-l
process. The vectors, yj, can be generated by multiplying B times

the columns of the original constraint set.

Now we are going to first solve problem (22) without any of

the either/or variables. While we are solving the problem without the

either/or variables we do not need the information, yj, about them.

If the revised simplex method is used, the information, yj, does not

have to be generated during the first part of the solution process.

The enumeration process will be carried out in the dual. At













first the problem will be solved without oither/or variables and later

some of these variables will be added to the problem. The necessary

information for adding vectors tothe problem can be generated when

needed by the revised simplex method. Other linear programming methods

need to generate the information at every step of the solution process

which is a lot of unnecessary work.

It should be noted that there is no need for integer variables.

Greenbergl6 also noted that you don't need integer variables with

either/or constraints like Equations (17) and (18). However, Graznberg

did not solve his problem in the dual and had to solve a new linear

program every time he added a constraint.

The solution to Equation (22) without the either/or variables

has an objective function of K-1000. Information from the revised

simplex method shows that two of the either/or variables can be added

without increasing the objective function. These two variables

correspond to the first of Equations (17) and the second of Equations

(18). From this solution of Equation (22) without the either/or

constraints we can find the primal solution (tA 0, tB = 40, tC = 20).

The either/or constraints scheduling A before B and C before B are

satisfied by this solution.

We will develop several enumeration procedures in the next

chapter. In all of the procedures we will use the dual and the revised

simplex method. Variables corresponding to either/or constraints will

be added to existing solutions to linear programs in the dual. In

order to make decisions, one needs information on the effect of adding

new variables to an existing solution. It takes work to generate infor-

mation and one has to decide how much information is needed.














There are three types of information available on the effect of

adding a variable to a problem. One can solve the linear program with

the.new variable. This takes some work and we will need information

on a large number of variables. Moat integer programming algorithms

use much less information. In the simplex method one improves a

solution by moving from one extreme point of the feasible solutions to

another. One moves along an "edge" of the region of feasible solutions

from one extreme point to another. The simplex method will move along

the "edge" that has the largest feasible gradient to improve the

objective function. Most integer methods use this gradient to make

decisions. In the revised simplex method one has to multiply two

vectors together in order to determine the gradient. If the problem

has m constraints then the vectors have m+l components. One can also

determine how much the objective function will increase as a result

of moving from one extreme point to another. In the revised simplex

method, one has to multiply a matrix times a vector in order to

determine the cost of moving from one extreme point to another. We

will use this information.

We will be multiplying a m+l dimensional square matrix times a
2
vector and this normally involves (m+l) multiplications and the same

number of additions. For scheduling problems most of our vectors will

come from constraints like Equations (17) and (18) which means

they will have only two nonzero terms, plus and minus one. Our

multiplication will consist only of subtracting the components of one

row of the matrix from another. This simplification decreases the

difficulty of determining the cost of moving to a new extreme point.














There is another reason for determining the cost of moving to

a new extreme point when a vector is added to a problem. Suppose we

are to solve problem (19) with a different objective function. We

might solve the problem without any of the either/or constraints and

then consider adding the constraint that forces F to be completed

before E. Since E has to start before G, adding this constraint also

forces F to be completed before G. We are essentially making two

decisions at once if we decide to force F to be completed before E.

For the enumeration procedures in the next chapter one decision

will frequently have multiple consequences. The importance of these

decisions justifies additional work in addition to simply calculating

gradients of the objective function. This will be shown in later

chapters.













CHAPTER IV

PURE SCHEDULING PROBLEMS


In Chapter III a method was developed to solve integer

programming problems that was particularly well suited to solving

scheduling problems and the method was illustrated by means of a

sample scheduling problem.

In this chapter we will be concerned only with scheduling

batch processes. We will not be concerned with how many batches are

to be made. We will assume we know how many batches are to be made

in each unit over a fixed time period and will try to find the best

schedule. This problem will be called the pure scheduling problem.

In Chapter III we solved a pure scheduling problem by adding

constraints one at a time to linear programming problems. At this

point we want to find the best of all possible schedules. One has to

find this optimal schedule and prove that it is optimal. One does

this by proving that no other schedule has an objective function better

than the objective function of the optimal schedule.

We also want to be able to find the best schedule and prove

its optimality in as few steps as possible. The amount of work

involved is a function of the order in which constraints are added

to our linear programming problems. We will look at two general

methods of adding constraints. One enumeration method developed by
14
Balas may not be as efficient as the other method but does not

require much storage of information when implemented on a computer.

The other method, the branch-bound method, was essentially developed















by Land and Doig.13 The branch-bound method requires more storage

of information than the Balas enumeration method but it usually

requires enumeration of fewer schedules. We will first look at the

Balas enumeration method.


Balas' Enumeration


In solving a scheduling problem constraints are applied

one at a time. We want to find all the possible schedules or find

some of the schedules and then prove that none of the remaining

schedules are better than one of the schedules we have already found.

A systematic way of investigating or eliminating all the possible

schedules is needed.

An example will be useful to show the Bales enumeration method

of finding the optimal schedule. We will use the example that was

developed earlier.


minimize
either/or




either/or


-30E 40F + 30G
E + 20 < F

F + 20 < E


F + 20 < G

G + 10 < F


such that


G < 60

F <40


E + 20 < G


I













Here we have a problem with seven constraints. The feasible

schedules will satisfy either Equation (25) or Equation (26). They

also have to satisfy Equation (27) or .Equation (28). Suppose we

solve the problem with none of the first four constraints applied.

Next we might solve the linear programming problem with the first

constraint added. Finally, we might find the schedule is optimal

when Equation (27) is also added. In our example for these first

three linear programming problems, the objective function is -1000.

One method of drawing a flow chart for these three steps is given

below.



(1) (2) (3)
25 28
1000 -1000 I-1000
(E before F) (G before F)

Figure 2. Flow Chart for First Two Linear Programs.



Using a computer it is necessary to store the same information

given in the above graph. A computer could store the list of numbers

(26, 25) when it started the second linear program. This would

signify that Equation (25) was the only either/or constraint in effect

during the program. Then the machine could store the list of numbers

(26, 25, 27, 28) when it started working on the third linear program.

One would want to store the results of the first feasible schedule

obtained.

The third linear program gives the best possible schedule that

satisfies Equations (25) and (28). We need to find the best of all













the possible schedules with Equation (25) satisfied that also solve

the original problem. In the language of integer programming we say

that we need to fathom all the solutions obtained from the partial

solution satisfying Equation (25).

When we start the linear program to solve the linear programming

problem satisfying Equations (25) and (27) the corresponding flow

chart might be drawn as below.


(2)
(1) (2)(3)
25 28
-1000 -1000
(E before F) 1 (G before

Figure 3. Flow Chart for Last Four Linear Programs.



We could store the same information in the computer in the

form of the list of numbers (26, 25, -27, -28). The negative sign

indicates Equations (27) and (28) have both been tried. We only did

enough work on the solution satisfying Equations (25) and (27) to prove

that the solution cannot have a value for the objective function smaller

than for the objective function for the feasible schedule we have already

obtained. Actually the best schedule satisfying Equations (25) and (27)

has an objective function of -400, but since the optimization procedure

did not find this schedule Figure 3 does not have -400 in the fourth

circle and the circle is not completed.

After we have fathomed all solutions from the partial solution

satisfying Equation (25) we need to look at solutions satisfying

Equation (26). The phrase used in integer programming is that we back-

track and find the partial solution satisfying Equation (26). Actually













we only need to prove that no solution satisfying Equation (26) is

better than the solution we have already found. When we backtrack

we would store the list (-26, -25) in the computer since the only

information we need is that we have fathomed the solutions satisfying

Equation (25) and we are working on fathoming the solutions satisfying

Equation (26). The best schedule satisfying Equation (26) has an

objective function of -200. The final flow chart is given below and

the computer would no longer have any numbers in the list it was

storing.




lQ 25 28
r-1000 --- -101000
. (E before F) (G before F)

Figure 4. Final Flow Chart for Sample Problem.




Other pure scheduling problems can be solved in a similar

manner. One needs only to apply a constraint from each of the either/or

pairs and then solve the linear programming problem. One then back-

tracks and fathoms until all schedules are either found or eliminated.

This Balas enumeration method of solving the problem has the advantage

that we never have to store more than one solution and one list.

Other advantages and disadvantages will be discussed when we look at

another method of solving the problem. The Balas enumeration method

used here fathoms partial solutions until the entire problem is solved.

The other method (branch-bound) of solving the problem may run into













storage problems and then we can use the method developed here to

fathom partial solutions found by the other method.

A program has been developed and implemented in the Fortran

language to solve problems in the manner illustrated by the previous

sample problem. The linear programs are solved in the dual in a

manner similar to that given in Chapter III. To show some of the

details of how the program works we will again look at an example.

We will suppose that two products, E and F, can each be made

in two reactors, Rl and R2, and that the product from each reactor is

held in intermediate inventory until it is processed by a separator.

For the purposes of the problem we will suppose that output from the

separator can be sold immediately so there is no inventory created by

the separator and in this problem that we do not have to keep feed for

the reactors in inventory.


Ri
S Intermediate
Inventory
R2

Figure 5. Flow Sheet for Intermediate
Inventory.

We will be concerned with batch units and suppose that we know

the time it takes to produce each batch and the amount it costs to

store a batch of feed for the reactors or the separator.













Table 1

Table of Data for Sample Problem


Batch ER1 ER2 ES FR1 FR2 FS

Time to produce batch 3.7 4.2 2.1 4.6 4.7 2.6

Cost of keeping batch one
unit of time in inventory 5.0 5.1 5.0 6.2 6.4 6.0





Let's assume that we produce a batch of E in each reactor

over a period of time and a batch of F in each reactor over the same

period. Also assume that we are to process two batches of E and two

batches of F in the separator. Let the variables be:

tER1 the time we start the batch of E in reactor 1

tER2 the time we start the batch of E in reactor 2

tElS the time we start the first batch of E in the separator

tFR1 the time we start the batch of F in reactor 1

etc.

We will have the constraints that the first batch of either

kind through the separator will precede the second batch of either

kind.

There are the constraints that two batches cannot be processed

through the separator at the same time. For instance, either the first

batch of E through the separator has to be completed before the first

batch of F begins or the first batch of F has to be completed before

the first batch of E begins.













tEis + 2.1 < tIS
either/or t + 2.6 < tElS (32)
tFLS i 2S6 ( tEIS

There are six pairs of either/or constraints of this type.

We will suppose that all of the batches are completed by the

time 9.5. This gives the constraints:


tER1 +3.7 9.5

tER2 + 4.2 9.5 (33)

tESl + 2.1 < 9.5

etc.

Assume also that there is not enough inventory to feed the

second batch of either chemical through the separator until we have

finished making some of the chemical in a reactor.


tER1 + 3.7 < tE2S
either/or tER2 + 4.2 < tE2S

(34)

tFR1 + 4.6 tF2S
either/or
tFR2 + 4.7 < tF2S


Of course the first batch of E has to be completed in the

separator before the second batch begins. The first batch of F in

the separator has to be completed before the second batch ends.


tS1E + 2.1 tS2E
(35)
tSlF + 2.6 < tS2F













Our problem is a minimization problem minimizing

(-5.0tERI -5.1tER2 +5.0tE1S +5.0tE2S -6.2tFR1 -6.4tFR2 +6.0tElS +6.0tE2S)

subject to constraints like Equations (33) and (35). In addition the

optimal schedule satisfies one constraint from each pair of constraints

from Equations (32) and (34).

As was done earlier our problem is solved in the dual. The

dual problem has some variables associated as pairs.

Primal

minimize c.t such that


either/or constraints Alt < b

A2t b (36)
2 -2

t > 0

Pairs of constraints from Equations (32) and (34) make up the set

At < bl' Only one constraint from each pair has to be satisfied.

Dual

maximize blx1 + b2x2 such that


Aix + Ax2 > c
minimize (36)
x > 0 x2 > 0

and one member of each set of paired variables
if x1 has to be constrained to 0.

We minimize by finding the set of variables of xl which can be con-

strained to 0 and the maximization problem will have a minimum value.













In the dual the pairs of associated variables correspond to

the pairs of associated constraints from Equations (32) and (34).

The final solution in the dual will have one member of each pair of

associated variables free to take on any nonnegative value and one

member of the pair constrained to zero.

First, the problem is solved with all the pairs of associated

variables constrained to zero. This corresponds to solving the primal

problem without constraints from Equations (32) and (34). The linear

programming problem resulted in an objective function of -91.03.

The result of a linear programming problem with n variables

and m constraints will be that n m of the variables will be zero

and, except for a trivial case, some of the m basis variables will

be nonzero and positive since required by the problem. Linear

programming provides a rather simple method of removing one variable

from the set of basis variables and finding a feasible solution to

the problem with a different variable in the basis. The program uses

this method to find how much the objective function will change if one

variable is removed from the basis and one of the either/or variables

is put in the basis. For example the variable corresponding to the

constraint,


tER1 + 3.7 tS2E (37)


can be put in the basis and the objective function will increase to

-54.03. Actually the dual problem (Equation (36)) was formed and

Equation (37) was represented by variable one in the dual. We can

find how much the objective function will increase by putting any one













member of the either/or pairs in the basis. The program found that

putting variable 12 in the basis would increase the objective function

more than putting any other member of the either/or pairs in the basis.

As the problem was formed variable 12 corresponded to the constraint;


tS2F + 2.6 s tS (38)


The other member of the either/or pair, variable 11, corresponded

of course to the constraint;


tS1E + 2.1 tS2E (39)


The objective function increased to -39.03 when variable 12

was put in the basis so there was a good chance that a solution to

the problem would be found with a smaller value of the objective

function. The linear program was solved with variable 11 free and

variable 12 constrained to be zero.


-39.03 Putting variable 12 in basis will
increase objective function to -39.03.


(1) o'0(2


-91.03 -91.03 Optimal schedule with SlE
(SlE before before S2F. Result of
S2F) linear program gave objective
function of -91.03 with
variable 11 free and variable
12 constrained to zero.

Figure 6. Early Stages in Solution of Sample Problem.














The linear program with all either/or variables except 11

constrained to zero gave an objective function of -91.03. We repeat

ourselves by finding how much the objective function will increase by

adding one more member of the either/or set to the basis. We again

find the variable, x13, which will increase the objective function the

most if it is added to the basis. We find that x13 and x14 make up an

either/or pair and we allow variable x14 to be free while constraining

x13 to be zero.

The computer initially stored the numbers (12, 11) in a list

to record that solutions with variable 11 free were to be fathomed and

that solutions with variable 12 free were to be fathomed next. A

flow chart of the first several decisions is shown and the list is

given.
Computer list (12, 11, 13, 14, 3, 4, 7, 8)

44



(1) (2) 14 (3) 4 (4) (5)

(S1E before (SiF before -- (FR2 before (FR2 beforeO
S2F) S2E) F2S) ER2)
Figure 7. Flow Chart Showing First Four Decisions Made in Solving
Scheduling Problem.
On the next step we find that variable xl will increase the

objective function the most if it is added to the basis. We constrain

variable xl to be zero and solve the linear programming problem with

variable x2 free. This linear programming problem turns out to have an

unbounded solution so we backtrack and look at solutions with x1 zero

and x2 free. An unbounded solution in the dual corresponds to

infeasibility in the primal.




















SV v v (AR2 be--
fore A2S)
Figure 8. Flow Chart Showing Backtracking After
Sixth Linear Program.


This linear
program had un-
bounded solution
so backtrack


We continue our solution procedure until we arrive at the

first feasible solution and then we start to backtrack. The first

feasible solution had an objective function of 10.65.


Figure 9. Continuation of Sample Problem to
First Feasible Schedule.


Feasible
Schedule


We find a solution with the tenth linear program and we need

to backtrack. The solution we obtained for the tenth program had

variable 16 constrained to zero and variable 15 free. We can backtrack

and solve the linear program with variable 15 free and variable 16














constrained to be zero but this is not necessary. The objective

function for such a problem would reach 13.89. We only need to start

the linear programming algorithm and then we can backtrack again as

soon as we obtain an objective function above 10.65. The running list

the computer uses would be (12, 11, 13, 14, 3, 4, 7, 8, -1, -2, 6, 5,

10, 9, -16, -15) as we start the linear programming algorithm for the

eleventh time and afterwards would be (12, 11, 13, 14, 3, 4, 7, 8,

-1, -2, 6, 5, -10, -9).

The program continued to fathom and backtrack in this manner

until the problem was solved. Whenever one deals with real numbers

there is the possibility of round-off errors. The inverse matrix of

the pure scheduling problem has all integers and will not develop

errors. Along with the objective function, there is also a vector of

real numbers which are used and altered by the linear programs. These

numbers can be generated correctly from the inverse matrix but the

corrections take time. The program generates the correct values at

every solution. Allowances for round-off can be made by estimating the

maximum round-off error. Backtracking will not take place from a

partial solution unless the partial solution has an objective function

greater than an earlier solution plus the maximum error estimate.

Another feature of the program can be seen by the way the given

problem was actually solved. Eventually the program fathomed all the

solutions with variable 11 free and variable 12 constrained to be

zero. Next the solutions had to be fathomed with variable 12 free and

variable 11 zero. Variable 12 corresponds to the constraint which

forces the second batch of F in the separator to be finished before














the first batch of E begins. This constraint is not consistent with

the constraint which would force the second batch of E to begin before

the second batch of F. The variable corresponding to the inconsistent

constraint must be zero for a feasible solution on this branch of the

tree. Also, if the second batch of F begins before the first batch of

E we do not need the constraint which would force the second batch of

F to begin before the second batch of E. We might as well constrain

the variable corresponding to the unnecessary constraint to be zero

on a branch if we decide to free one particular variable.

The optimal schedule is given below. It had an objective

function of 7.19. Without the program one would have to set up and

solve 96 linear programs. The machine solved the problem with a C.P.U.

time of 2.89 seconds on an IBM 360/65 computer.


Table 2

Optimal Schedule for Sample Problem


Batch ER1 ER2 E1S E2S FR1 FR2 F1S F2S

Starting time 5.8 .5 0 4.7 1.2 4.8 2.1 6.8







Branch-Bound Enumeration

Earlier the Balas enumeration method was used to schedule

operations in a process where the product from two reactors fed a

separator. Next we will use branch-bound enumeration to solve the














same problem. Again we will look at how the specific problem was

solved using a particular solution procedure.

Once more we solve the problem with none of the either/or

constraints applied. Again we use the dual and find that putting

variable 12 in the basis would increase the objective function more

than putting any other member of the either/or pairs in the basis.

Again we want to look at the result of having variable 11 free.

Variable 12 corresponds to finishing the second batch of F in the

separator before starting the first batch of E. Variable 11

corresponds to finishing the first batch of E in the separator before

starting the second batch of F.

The objective function increases to -39.03 when variable 12

is put in the basis. This time the solution procedure will tell the

computer to store the number -39.03 and enough information to generate

the partial solution with variable 12 in the basis.



Putting variable 12 in basis will
increase objective function to
-39.03 -39.03. -39.03 stored in computer
along with enough information to
regenerate solution.
(1) j/ (2)


-91.03 -91.03 Optimal schedule with S1E before
S1E before S2F has objective function of
S2F -91.03.
All either/or variables
constrained to zero

Figure 10. Flow Chart for First Step in Solving Sample
Problem Using a Branch and Bound Enumeration
Procedure.












Next the solution procedure looks at putting an either/or

variable in the basis in addition to variable 11. Again we find the

variable, 13, which increases the objective function the most. Except

for the storage of additional information, the branch-bound procedure

is the same as the Balas enumeration procedure until the fourth

partial solution is found.

-39.0 -40.6 -47.1


(1) (2) (3) (4)
.11 n 14 /4
91.0 -91.0 -------- 88.5 -----46.1

Figure 11. Flow Chart for Branch-Bound Procedure
up to Fourth Partial Solution.



Figure 11 shows the results up to the fourth partial solution.

Enough information was saved to find the partial solution obtained

by freeing variables 11, 14 and 3. The objective function of this

partial solution will be larger than -47.13 but it may be smaller than

the objective function of the fourth partial solution.

In the branch and bound method, enough information is stored

to reproduce the fourth partial solution and the partial solution with

variables 11, 14, and 3 free is found. (5)

n-6.3


Figure 12. Flow Chart Including Fifth Partial
Solution.













The question to be faced next was whether to branch back to

the fourth partial solution or to continue working on the fifth partial

solution. There is a certain amount of work the computer has to do

in order to switch consideration from one partial solution to another.

On the other hand, by adding constraints to the fourth partial solution

we might find a solution which has an objective function smaller than

-46.39. In that case any work done on the fifth partial solution would

be wasted effort for no solution derived from the fifth partial solution

can have an objective function smaller than -46.39.

Some research is needed on when a solution procedure should

switch attention from one partial solution to another. The computer

program written uses a number, zb, to make its decisions. If the

program is working on a partial solution with an objective function, z,

then the program will switch consideration to another partial solution

if and only if the other partial solution has an objective function

less than z zb.

The program was run with an arbitrary value of zb = 1.0 so

the program switched from the fourth partial solution to the fifth

partial solution but did not switch back again until later. If zb

is very large a program will spend a large amount of time looking at

nonoptimal solutions. zb shouldn't be any smaller than the possible

error in the data. One shouldn't try any optimization that can't be

justified by the original data.

The branch-bound procedure takes advantage of the structure

of the problem as did the earlier method. Eventually the partial

solution with variable 12 free had to be investigated. This corresponds


_ ~~~~














to the second batch of F in the separator being completed before the

first batch of E in the separator. The algorithm never considered

adding constraints forcing the first batch of F in the separator to

be completed before or after the second batch of E.

The linear programming and branching algorithms ignore the

ith constraint if the ith member of a vector of logical variables is

set free. The computer has to do some work to set up the proper

linear program when the partial solution with variable 12 free is

investigated. This work is not done until the machine investigates

the partial solution. Sometimes information is stored on partial

solutions which are never investigated. Any extra work on such partial

solutions is unnecessary.

If an incumbent feasible schedule is found with an objective

function, zi, then no work need be done on partial solutions whose

objective functions are larger than zi. The program which was written

stopped work on a partial solution whenever the objective function

got larger than such a zi. Partial solutions with large objective

functions were removed from storage whenever a new feasible schedule

was found.

One advantage of the new branch-bound algorithm is that fewer

partial solutions have to be investigated than by the Balas enumeration

method. If the number, zb (previous page), is set at zero we will not

look at any partial solution whose objective function is larger than

the optimal solution. This will happen for the Balas enumeration method

only in the lucky case where the optimal solution is the first feasible













solution found. Nineteen partial solutions were investigated using

the branch-bound method and thirty-four partial solutions were

investigated using the Bales method.

Some extra work was required in storing and retrieving information

for the branch-bound method. It took 4.85 seconds for the computer to

solve the problem using branch-bound and 2.89 seconds using Balas

enumeration. Balas'enumeration had been compiled to produce only 278

lines of output as compared with 391 lines of output for the newer

method. Storage of information and output takes some C.P.U. time.

The branch-bound method also required more storage space. 2034

bytes of information had to be in common storage for the branch-

bound method and 1518 bytes of information had to be in common

storage for the other method. Actually one doesn't know how many

partial solutions will have to be stored for the branch-bound method.


A Solution to the Storage Problem

One problem with the branch-bound just developed earlier is

that an enormous number of partial solutions have to be stored in a

realistic problem. There is no way, short of solving the problem,

to tell how many partial solutions will have to be stored.

A large problem might have so many partial solutions that the

branch-bound method cannot be used on a particular computer. It is

possible to use auxiliary storage devices but retrieval of information

becomes slow. On some computers the rate of retrieval of information

in core storage is affected by the amount of information stored.

A method which has been programmed is to assign a fixed number













of storage locations for partial solutions. As long as.the storage

space is not exceeded, the program uses the branch-bound procedure on

a scheduling problem. Once the storage space is filled the program

completes the best partial solution by fathoming and then returns to the

branch-bound method until fathoming has to be used again or the problem

is solved.

The same problem was solved that was solved earlier by two

different methods. When we used the branch-bound method storage

locations for ten partial solutions had to be used.

The problem was run using only the storage space for four

partial solutions. When the program had four partial solutions stored

it fathomed the partial solution it was working on. Luckily the

optimal solution was a result of fathoming this partial solution. 25

partial solutions were investigated as compared to nineteen using

pure branch-bound and 34 using pure fathoming. The third solution

procedure took 4.19 seconds for 684 lines of output.


Optimization Strategies

In the latter part of Chapter III we looked at the information

available on the effect of adding a variable to a linear programming

problem. The value of this information can be evaluated now that we've

developed some enumeration techniques.

We could use the gradient of the objective function in order

to make our scheduling decisions. The gradient is easy to obtain but

it does not show how much the objective function will increase if a


variable is added to a linear programming problem.













One can determine how much the objective function increases

when a given variable, L, is added to the basis. If the objective

function will be larger than the objective function for a known

schedule then one knows adding L cannot be part of an optimal strategy.

In the example of Chapter III we saw how one decision could

have multiple effects. We knew that process E had to be completed

before process G was begun. This meant that the decision to begin

process F before E also meant that F would begin before G.

We will frequently encounter multiple batches in chemical

scheduling problems. If one schedules a batch E before the first of

many batches F then one has scheduled E before all of the batches of F.

The multiple effects of one decision should justify the effort of

finding how much the objective function increases when a variable is

added to the basis. Also this lower bound of the objective function

makes possible our branch-bound method of enumeration.

In the branch-bound method we switched our attention from one

partial solution to another. One would like to be able to reproduce

a partial solution without having to solve the linear program formed

by the variables used in the partial solution. The partial solution

can be reproduced if one has the inverse of the matrix formed from

the basis vectors. Storage of an entire matrix for every partial

solution is difficult. One could merely store information on which

vectors were in the basis. Then one has to invert a matrix in order

to reproduce a partial solution. For matrices used in the pure

scheduling problem, a simple method for matrix inversion has been


developed in Appendix A.













Thslanumeration methods developed reduced backtracking by

finding the vector which would increase the objective function the most.

This strategy is especially effective if one has a good incumbent

solution. Suppose one examines a partial solution and has an incumbent

solution with an objective function of -60. Suppose the partial

solution has an objective function of -5. Suppose one has to add

three either/or decisions to the partial solution and the effect of

adding each vector to the basis is as given below by Figure 13.



zi = -60



z = -80 -40 -10




-5 z -65 5 -20 -5 -5

Effect of putting Effect of putting Effect of putting
vector Al or A2 in vector Bl or B2 in vector Cl or C2 in
basis, basis. basis.

Figure 13. A Partial Solution with Three Remaining
Either/Or Choices.


Our enumeration methods would find that adding vector Al to

the basis would cause the objective function to exceed zi. Al would

be eliminated from consideration and then A2 could be eliminated for

the same reason. No further work would have to be done on the partial

solution.

Let us look at another example of a partial solution with an

incumbent solution.


















zi -60

-80 -65 -60



A2 -30 -5 -20 -5-10


Figure 14. A Partial Solution Where Three Either/Or
Choices Can Be Made at Once.







For the example shown in Figure 14 we would eliminate vector

Al from consideration. One need not solve the problem with A2 but

could also use the lower bounds on adding Bl and Cl to the problem.

With vectors Al, Bl, and Cl eliminated, one need only solve the

problem with vectors A2, B2, and C2 in order to fathom the partial

solution given in Figure-14.













CHAPTER V

ENUMERATION OF MIX/SCHEDULING PROBLEMS


In Chapters I and II a product mix problem for batches was

formulated. In order to solve the batch product mix problem one must

decide which batches are to be made and how they should be scheduled.

All of the enumeration techniques developed in Chapters III and IV

also will be used for solving batch product mix problems. Some

additional enumeration techniques are developed in this chapter in

order to take into account the special structure of batch product mix

problems.

In Chapter III scheduling decisions were written as a set of

either/or choices. The decisions for batch product mix problems can

also be written as a set of either/or choices. Suppose we are to make

between two and four batches of a particular type and let xij be the

number of batches to be made. The decisions can be written as

either/or choices.

x 4 (40)
either/or
x 3 (41)


x i 3 (42)
either/or J
xij < 2 (43)


Equations (40) through (43) together with bounding

(2 < xij < 4) express the fact that xij is integer. Variables for

the number of batches made over a time period are bounded because

only a certain number of batches can be made in a fixed time period.













Since integer variables can be expressed as either/or choices the

techniques of Chapter III can be used for the batch product mix

problem.

In Chapters III and IV one decision would sometimes have

multiple consequences. This feature is also present for variables

such as xij since the decision to use Equation (40) is inconsistent

with the decision to use Equation (43). Equation (40) also makes

Equation (42) redundant. It is obvious that if xij is greater than

an integer n that it is greater than an integer m if n > m. This fact
13,17
has been used before in solving integer programs.117 Actually

Trotter17 used only this fact in addition to the enumeration schemes

of Balasl4 and found he could solve the same integer problems faster

than with the Balas enumeration scheme.

Trotter's17 programs are written for integer variables so he

would have to add integer variables to a problem in order to express

either/or choices such as Equations (11). Additional variables make

a problem more complex. Our problems are solved in the dual using

the revised simplex method. In the dual Equations (40) through (43)

would be represented as variables. In the dual, the choice corresponding

to Equation (40) will imply that the variables corresponding to

Equations (41) through (43) are constrained to zero. By using the

revised simplex method, one can ignore any information about variables

which are constrained to zero.

The batch product mix problem optimizes operations over a fixed

time period T. In Chapter II (see Equations (9) and (10) and

discussion) we showed that the mathematically correct objective function













could be obtained if the decision not to produce a particular batch

is expressed with this particular batch having a starting time of T.

It is desirable to have a method where one either/or decision

can imply another. This feature is implemented in the optimization

methods of Chapters III and IV. If one decision can imply another,

it is easy to integrate the scheduling and production rate decisions of

batch product mix problems. Since one decision can imply another, one

only needs two either/or choices to integrate Equations (40) through

(43) with scheduling decisions


tij4 i (44)
either/or
tij4 7 (45)


tij3 Pi3 i tij4 (46)
either/or
tij3 (47)


Equations (44) through (47) together with bounding

(0 < tij3 1 tij4 1 ) express the equivalent scheduling decisions as

the production decisions of Equations (40) through (43). Equation (40)

should imply Equation (44) and vice versa since batch 4 of i in j has

to be scheduled in the time period if it is to be made. Equations (42)

and (46) imply each other since the third batch of i in j is finished

before the fourth batch if it is to be made.

In Chapter III we struggled with formulating scheduling

constraints correctly so that the batch product mix problem could be

written as an integer programming problem. The scheduling constraints

come from the fact that a batch production unit can only operate on one

batch at a time.













For one of the batch product mix problems a product, W, could

be made in two separators, S2 and S3. SW2 represented the number of

batches of W made in S2 and SW3 represented the number of batches of W

made in S3. A batch of S2 produced 12.74 pounds of W and a batch of

S3 produced 13.44 pounds. At least 23 pounds of W were needed over a

fixed time period. A simple material balance is given by Equation (48).


12.74 SW2 + 13.44 SW3 > 23.0 (48)


SW2 and SW3 are integer for any feasible product mix since

we only consider an integer number of batches. For integers SW2 and

SW3 Equation (43) is equivalent to Equation (49).


SW2 + SW3 > 2 (49)


Any integer solution which satisfies Equation (49) also

satisfies Equation (45). Any integer solution excluded by Equation (45)

is also excluded by Equation (49). Equation (49) was used instead of

Equation (48) since Equation (49) can be used to eliminate some either/or

choices from consideration. For example if the decision is made that

SW2 < 0 then Equation (49) will force SW3 > 2. With SW3 > 2 Equations

(50) and (51) can be eliminated from consideration


SW3 > 2
either/or (50)
SW3 < 1


SW3 > 1
either/or (51)
SW3 < 0













Equations similar to (48) were simplified wherever possible

in order to eliminate some either/or choices from consideration.

The enumeration schemes were implemented on a computer and the computer

was able to store the information that the decision SW2 > 0 eliminates

Equations (50) and (51) from consideration. Storage and retrieval of

information takes time. One has to decide how much effort should be

expended in order to eliminate some either/or choices from consideration.

Trotter6 has shown that some effort should be expended to eliminate

either/or choices.

So far we have only shown how one decision can eliminate some

either/or choices from consideration. Sometimes two decisions can imply

a third decision. For example, look at Equation (52).


D + E + F > 3 (52)

If D, E, and F are integers the decisions E < 0 and F < 0 imply

that D > 3. In other words, the decision D < 2 is eliminated from

consideration. General programs were written so that any number of

decisions could be made to eliminate an either/or choice from

consideration. For the smaller of the two example problems formulated,

the author tried to find all instances where one or two decisions would

imply a third decision. For the larger of the two problems, the author

only tried to find those instances where one decision would imply

another. This information is fed into the written computer programs as

data. A subprogram could be written to generate this data from

equations similar to Equations (48) and (52).

The smaller of the two problems formulated involved producing













and scheduling the same type batches as were scheduled in Chapter IV

(see Figure 5). The process involved two reactors and a separator.

Two products, E and F, could be processed in either reactor and then

processed through the separator. The batch times and inventory costs

are the same as those given in Table 1. Again we are to optimize

operations over a time period of 9.5 but this time we have to decide

both how many batches are to be made and how to schedule them.

Once more we assumed that there was enough beginning inventory

to feed either a batch of E or F to the separator. Feed for any

additional batches in the separator had to be made by the reactors.

It is not too difficult to schedule sufficient inventory for

the second batch of E in the separator. One merely needs constraints

to say that one of the batches in the reactor must proceed the second

batch in the separator.


ER11 + 3.7 1 tES2 (53)

tER21 + 4.2 tES2 (54)


It is more difficult to schedule the third batch of E in S.

The problem assumed two batches had to be produced in a reactor before

the second batch could be made in the separator. One really has four

choices for producing feed for the third batch of E in S.


either tER11 + 3.7 < tES3 (55)

/or tER12 + 3.7 < tES3 (56)

/or tER21 + 4.2 < tES3 (57)

/or tER21 + 4.2 < tES3 (58)


~ ~













Feed for the third batch of A could be produced by either the

first or second batch of either reactor. Again we need the ability

for one decision to imply another. The solution procedure could not

choose both Equations (53) and (55) since the same batch from a reactor

could not be used to feed two batches in the separator. Similar equations

to Equations (53) through (55) were formulated for chemical B.

The costs used in this small batch product mix problem are

given in Table 3. A total of 121 equations were written to formulate

this fairly simple batch scheduling problem. One hundred of the

equations were of the either/or type. The optimal schedule and an

interpretation of the results are given in Chapter VI.


Table 3. Batch Costs for Sample Batch Product
Mix Problem


Batch E in R1 E in R2 E in S F in RI F in R2 F in S

Cost 27.0 29.0 -197.0 27.0 29.0 -243.0




A large batch product mix problem was formulated to incorporate

the features of a realistic chemical engineering problem. The problem

included recycle streams due dates for some materials, different

starting inventories and available time for as many as 20 batches on

one machine. The flow sheet for the large batch product mix problem

is given by Figure 15. Information on the batch characteristics

and beginning inventories is given by Tables 4 and 5. The inventory

costs are the difference between the cost of storing product minus the













Table 4. Batch Characteristics for Large Batch
Product Mix Problem


Batch Cleanout Batch Inventory
Process Unit Time Time Cost Cost

1 R1 2.5 0.0 525 -9.70
1 R2 3.0 0.0 500 -8.82
1 S1 3.2 0.0 225 .52
1 S2 3.1 0.0 225 .14
2 S1 4.1 0.0 -873 -2.25
2 S3 3.9 0.0 -1109 -2.62
3 R2 3.0 0.5 135 -.88
3 R3 2.5 0.5 150 -1.10
3 S2 1.1 0.0 -2369 -.96
3 S3 1.0 0.0 -2509 -.68
4 Rl 2.1 0.0 90 -2.94
4 R3 1.8 0.0 100 -3.23
4 S1 6.2 0.0 -501 -5.14
4 S3 6.6 0.0 -560 -8.00
5 S1 5.1 0.0 -201 -1.54
5 S2 5.4 0.0 -129 -.68














Table 5. Chemical Inventories and Batch Sizes


Beginning Inventory

Not limited


Consumers
Unit Amount

R11 10
R21 9


Producers
Unit Amount


L 0.0 S11 12 Rll 9.7
S21 14 R21 8.82

E 25.0 S12 9 S11 6.60
S32 11 S21 8.40
R23 4
R33 5

Q 37.0 R14 7 S11 3.84
R34 8 S21 4.20
S14 1.00
S34 1.05
S15 2.80
S25 3.75

D 32.0 S15 14 S12 .81
S25 15 S32 1.32
S15 5.60
S25 5.25

K 0.0 S23 13 R23 4.4
S33 14 R33 5.5

U 0.0 S12 8.10
532 9.57

W 0.0 23 12.74
S33 13.44

G 25.0 S14 20 R14 6.65
S34 21 R34 7.52
S14 2.40
S34 2.94

H S14 14.00
S34 15.54


Chemical

F













Table 6. Feasible Schedule Found for Batch
Product Mix Problem


Batch

R11


Batch Number

1
2
3


Starting Time

S3.4
5.9
8.8


R23 1 0
2 3.0
3 6.0
4 9.0
5 13.0
6 16.0

R34 1 2.2
2 4.0
3 5.8
4 10.2
5 12.0

R33 1 16.5

514 1 7.6
2 13.8

515 1 2.5

S21 1 8.4
2 11.5

S25 1 14.6

S33 1 12.0
2 19.6

S32 1 15.1


S34


1













cost of storing feed. Operations were to be optimized over a time

period of 20. A shipment of 10 units of W was due at 13.0 and a

shipment of 13 units of W was due at 20. A shipment of 40 units

of H was due at the final time but no additional H could be sold.

The author found that it took 548 either/or equations to force the

inventory of L positive over the whole time period regardless of

how many batches were made. For this reason the author left out

constraints to keep inventory positive over the whole time period.

The approximation used assumes that some inventory could be

bought if needed and resold at the end of the period with negligible

cost.

Both of the batch product mix problems were solved using the

Balas enumeration procedure of Chapter IV. The enumeration procedure

works better with a good incumbent solution and the author found a

feasible schedule to the large batch product mix schedule. This

feasible schedule is given in Table 6. The feasible schedule was

used as an incumbent solution which increased the efficiency of the

solution procedure. The solution procedure loola for objective

functions which were at least $10 better than the incumbent solution.

A discussion of results is found in Chapter VI. The results are

compared with work by other authors in order to make them more

meaningful. This comparison is done in the first section of

Chapter VI.
















Process 1


E








U (Product)


D


Process 2


Process 3


W (Product)


Process 4


Process 5


N (Product)

C

Q


U (Product)

Q

D


Figure 15. Second Batch Product Mix Problem.













CHAPTER VI

RESULTS, CONCLUSIONS, AND RECOMMENDATIONS


The purpose of this work was to find a method of scheduling

batch chemical operations. The method found takes large amounts of

computer time if one wants to find optimal schedules for normal sized

chemical scheduling problems. The method can find near optimal solutions

with a moderate amount of computing time and has the advantage that

the limit of suboptimality is expressed in dollars. That is the program

can find a solution such that the objective function is within at

least a certain number of dollars of being the optimal solution.


Solution Efficiency

The quality of the new scheduling method can be seen by

comparing results with other methods of solving discrete optimzation

problems. Table 7 shows published results of solving integer programming

problems by a number of methods.

As mentioned earlier, Trotter7 uses the Balas enumeration

method but reduces the size of the problem by using integer variables

instead of 0-1 variables. Trotter reduces the size of a problem by

realizing that x > 4 implies x 3,2.... Our program can do that in

addition to reducing the size of a problem by other methods.

Trotter's programs only solve problems where all of the

variables are integer. These problems are simpler than scheduling

problems because there is a method of solving pure integer problems

without using linear programming. One has to check each constraint for

feasibility and use a method which guarantees feasibility while optimizing

the problem.





















I


0--


'a




0 V
o d o
41l *ri







40

40 0


H (
0
1 4






(2




to
M l
14













I
0


(A
14 -4

S.
1


f0Ln N -o mo

AI


n4 10


,r n% II


0Ouo 0n in VN n Iin o iniL
cmmn NN Cn NIT Va 0 cn n r,
Sr-l vv N


N4 N4 If u-I -4




NN n -l i4













O0 CON M 4M M4
o Go N N4 .-


M r -i n oo
emn I Nr-I


knC Otn ooooo-cnm
v -1- -Is- NO


aoN Prn N M CnOoo00 soo o0r-2m
Ns NC 4-I i4 n Lu .. 4 m.-.-4 C N







cn -T NO a- a0% 4 ,T 1 -I4 cn


0
N
%0 CM
00 -.4
4 CO v-



c T< enrn


M4 Nn 0% 00 co

H1-4 N C4 4 -
1-
A







INm ONO N 0 U N0( 1 n
CN M aCO10 N
T -: 1- 0







SI I I - N-4
1-
-l


I.-
r
0 -4
14 01
0 A-I
.5 A-i

AI 0













Trotter uses more than one method to optimize his problem and

the best and worst results are listed in the table. Trotter's

solution methods are highly dependent on how many constraints are

present and he did not solve a problem with as many constraints as

two of our problems. Trotter used a CDC 6600 computer for his programs.
18
Shareshian8 has presented a program to solve mixed integer

problems by the branch-bound method. Unfortunately the program was

only for some pure integer problems. Shareshian's results look

comparable to ours except for the number of constraints and the way

the problems are formulated.

In Chapters III, IV and V we found a method of formulating

decisions as either/or choices without using 0-1 variables. Every

solution method listed on Table 7 except the method of Greenberg would

have to use these 0-1 variables. For the other methods our example

problem would have 16 (8 + 8) variables, Problem 2 would have 55

(21 + 34) variables and Problem 3 would have 363 (93 + 270) variables.

Both Shareshian's work and this work solve a number of linear

programs in the dual. The difficulty of solving these problems is

proportional to the number of variables in the primal. Shareshian's

results were calculated on an IBM 360/50 computer.

Shareshian's program would also have to add an additional set

of variables to integrate production decisions with the scheduling

decisions of the second and third sample problems. In Chapter II we

first saw that some scheduling decisions do not apply if one decides

not to make the batches scheduled. It would take 32 additional

variables to write the second sample problem for a normal integer













programming algorithm and 116 additional variables to write the third

problem. Shareshian's test problems were solved on an IBM 360/50.

Driebeckl9 developed an algorithm for mixed integer problems

that is somewhat similar to the method developed here. Driebeck uses

a lower bound on the cost of making a decision and uses this bound to

determine his solution strategy. Driebeck also has to solve a new

linear programming problem at each iteration as we did. Driebeck's

method does have a very bad flaw. Driebeck uses a table which initially

contains information on every possible integer solution. Driebeck's

table has a vector for each integer solution. The 2540 vectors

necessary for our third sample problem would certainly be too much

for any present day computer to handle.

Greenberg6 was the only other author found who also realized

that 0-1 variables are unnecessary for scheduling problems. Greenberg's

results do not look very good because he used a random method of adding

constraints to a problem and he did not take advantage of the structure

of the problem as this author did. Greenberg used a G.E. 265 Time-

Sharing System.
20
Dzielinski found a method of approximating a restricted class

of scheduling problems by a linear program. Dzielinski formed a linear

program which contained a cost and set of constraints for every possible

schedule. Dzielinski, like Greenberg, would run into serious problems

with a scheduling problem like sample problems two and three.

Dzielinski did not write all his constraints but used the decomposition

principle to handle the problem. Dzielinski's iterations are each

simple linear programming iterations but he has to perform a huge














number of iterations to solve the program. Dzielinski used an

IBM 7090 computer.
21
Trauth21 solves some pure integer programming problems using

several cutting plane methods. His best and worst results are listed

for several problems. His best solution times were on a CDC 3600

computer and the worst were on an IBM 7090 machine.

All of the author's work was done on an IBM 360/65.


Results

The results given in Table 7 indicate that the method developed

here for solving scheduling problems is a better method than other

integer programming techniques. Unfortunately most of the work on

integer problems has been on problems of the size of our second sample

problem and realistic chemical engineering problems are at least the

size of the third sample problem. The reader should remember that only

eight extra 0-1 variables will increase the number of integer solutions

by more than one hundred if all the solutions are feasible.

The optimal schedule for the small batch scheduling problem

described in Chapter IV is given by Table 8. There are several

interesting features of this schedule. For one thing one should note

that the product mix result is to produce two batches of each type in

the separator. The operating units could produce more F and less E

which is more profitable, if there were no inventory costs. A batch

product mix problem would get the wrong answer if it ignored inventory

costs.














Table 8. Optimal Product Mix and Schedule for Sample
Problem 2



Chemical Unit Batch Starting Time

E R1 1 1.1
F R2 1 2.2
E S 1 0.0
E S 2 4.8
F S 1 2.1
F S 2 6.9





There is very little slack time in the separator but there is

some slack time in both reactors. This slack time could be used for

building up inventory for future operations.

Suppose one decides to use the slack time in RI to produce a

batch of E and the slack time in R2 to start producing product F. The

next production period would have a batch of E for feed to the separator

and a batch of F for the separator 2.2 hours after the start of the

second time period. If the batch of F was available by 2.1 the

optimal schedule for the second time period would be the same as the

schedule for the first time period. This schedule for two time

periods is given by Table 9. The result on Table 9 may not be the

optimal product mix and schedule over two time periods but it is

feasible for the beginning inventory and the schedule can be duplicated

for any number of time periods. Thirty-five seconds' computer time is

certainly a cheap way to get a feasible schedule for any number of time













Table 9. Schedule for Two Time Periods


Chemical Unit Batch Starting Time

E R1 1 1.1
E R1 2 5.8
E R1 3 1.1 + 9.5
E R1 4 5.8 + 9.5
F R2 1 2.1
F R2 2 6.8
F R2 3 2.1 + 9.5
F R2 4 6.8 + 9.5
E S 1 0.0
E S 2 4.8
E S 3 0.0 + 9.5
E S 4 4.8 + 9.5
F F 1 2.1
F F 2 6.9
F F 3 2.1 + 9.5
F F 4 6.9 + 2.1














periods. The schedule would only have a 1% slack time in the

separator.

There is no easy way to account for the inventory needs of a

future period when optimizing operations over an earlier period.

One could form a scheduling problem and use slack time by giving some

value to producing intermediate inventory during this slack time.

The optimization techniques of this paper could solve such a problem.

The difficulty lies in assigning a value for intermediate inventory.

Actually it costs to store intermediate inventory and creation of

intermediate inventory is the wrong policy if there is no need for it

in the future.

Unfortunately the author did not have enough computer time to

solve the large batch scheduling problem of Chapter V. The author

attempted to find a schedule that was within $10 of being the optimal

schedule. This objective turned out to be very difficult to achieve.

If one looks at Tables 4 and 5, $10 may seem like a strong constraint

on the solution when some batches are worth over $2000. The author

chose $10 because some batches only cost $.70 an hour to store in

inventory.

Two weeks was spent finding a schedule for the third sample

problem. The schedule that was found made a profit of $4925 which

can be compared to the optimal profit of $8500 for the continuous

solution. The computer looked for solutions with profits above $4935

and found a schedule with $5449 profit after 22 minutes of work.

The computer found another schedule that made $5464 after twenty-seven

minutes of computing. The machine had not found a schedule with a profit













of more than $5474 after 90 minutes of computing. The author spent

28 more minutes of computer time trying to prove there was a schedule

with an objective function value of at least $5964 ($5464 + $500).

The author proved that there was no solution with an objective function

value as great as $6964 ($5464 + $1500) by spending an additional

57 minutes of computing time. All computing was done with an

IBM 360/65 computer.

Perhaps the branch-bound method would have proved better for

solving the large scheduling problem. For the smaller problem of

Chapter IV, branch-bound used more computer time than the Balas

enumeration method. Perhaps branch-bound is the best method for

larger problems.

Of course, now it is easy to see that we should have started

with an objective which was easier to obtain than getting within $10

of the optimal solution. The strategy was tested by starting the

program over with the objective of getting to within $500 of the optimal

schedule. The algorithm first eliminated a decision because of high

costs after 17 iterations. With an objective of getting within $10

of the optimal solution the computer did not eliminate a prior decision

until after the thirty-third iteration. Since there were 270 decisions

to be made eliminating a decision after 17 decisions eliminates 227017

possible schedules and waiting until the thirty-third decision

eliminates 2270-33 schedules.

There is another method of improving the efficiency of the

solution procedure. Today's computers cannot look at 2270 possible

schedules in any reasonable length of time. This solution procedure was














developed so that a large number of schedules could be eliminated from

consideration. The cases were found where one or more decisions

implied other decisions and this was included as input data to the

computer. Needless to say the last sample problem was too complex

for one person to find all the cases where one or more decisions imply

other decisions. However, one could write a computer program to find

this information.

The author found a number of cases where one decision would

imply another and gave this information to the machine. If the machine

had more information then the solution would probably have been

obtained more quickly. One set of poor decisions is seen in Table 10.

The computer made these decisions while trying to find the first schedule.



Table 10. A Set of Scheduling Decisions

Maximum Minimum
Unit Process Batches Batches

Rl 1 3 3
R2 1 1 1
S1 1 0 0
S2 1 3 2
R2 3 5 3
R3 3 7 6






The author looked at the solution output and found that the computer

was repeatedly finding that both the possible values of 521 were

impossible and then the computer would backtrack. The problem with the


~ __













decisions was that there was only enough chemical L produced by

process 1 to feed two batches of the separator. Two batches in the

separator did not create enough feed for the third process. The

computer spent over eight minutes backtracking and fathoming in order

to discover the last erroneous decision. Since computer time was at

a premium the author gave the computer the information that the last

erroneous decision was the decision to make only one batch in reactor

2 of process 1.

The reader should note that eight out of the twenty-two minutes

spent in finding the solution was spent in finding information that

could have been fed into the machine as data. The author did not attempt

to find other poor decisions due to a lack of data but it is probable

that other poor decisions were made.

The best schedule found by the computer is given in Table 11.

This may not be the optimal schedule but it is better than one found

with much difficulty by hand. The reader should note that, as before,

we have a schedule which makes some inexpensive product (Process 5).

Process 5 also makes some recycle.


Conclusions and Recommendations

The solution method was developed to solve scheduling problems

more efficiently than other integer programming methods. The efficiency

of solution method depended on information about the consequences of

decisions. This information proved very important and future work

should involve systematic methods of generating this information.

The solution method had some difficulty solving a realistically













Table 11. Best Schedule Found for Sample Problem 3

Process Unit Batch Starting Time

1 R1 1 12.5
1 R1 2 15.0
1 R1 3 17.5
2 R2 1 17.0
2 S2 1 0.0
2 S2 2 9.3
3 R2 1 5.0
3 R2 2 8.0
3 R2 3 11.0
3 R2 4 14.0
3 R3 1 3.4
3 R3 2 5.9
3 R3 3 8.4
3 R3 4 10.9
3 R3 5 15.7
3 S2 1 8.2
3 S2 2 17.8
3 S2 3 18.9
4 R1 1 6.2
4 R1 2 8.3
4 Rl 3 10.4
4 R3 1 13.4
4 R3 2 18.2
4 S1 1 7.6
4 S1 2 13.8
4 S3 1 13.4
5 S1 1 2.5
5 S2 1 12.4














sized chemical batch scheduling problem. A fairly good schedule

could be obtained with a limited amount of computer time.

Future work should be involved with solving realistically

sized problems instead of the small problems, which were the focus of

attention in the past.

Of interest to chemical engineers is the result that some

batch product mix problems should produce a wider variety of products

than they would if inventory costs were not included. It is also of

interest to note that scheduling considerations cause a moderate

amount of slack time chemical batch units. In the past, one might

have supposed that this was due to poor performance by chemical

operators.

Also, obviously of interest is the fact that we now have a

method of determining both how many batches should be produced and

how they should be scheduled.

































APPENDICES














APPENDIX A

THE INVERSE MATRIX FOR PURE SCHEDULING PROBLEMS


The branch bound enumeration method of Chapter IV involved

the storage and retrieval of a number of partial solutions to the

optimization problem. Since the revised simplex method is used, an

inverse matrix, B-1, is needed in order to reproduce partial solutions.

The matrix, B, to be inverted (see Equation (24)) is made up of

columns of the matrix A' which defines the dual problem. It is

easier to store information on which columns of A' define B than

it is to store the entire matrix B-1. The branch-bound algorithm

developed here stores information on which columns define B and then

invert the matrix B.

Matrix inversion is normally fairly difficult but a simple

method is developed here for inversion of the matrix B found in pure

scheduling problems. We will first use the method to invert a

matrix formed from the first, third and fifth columns of the matrix

A' in Equation (21).
0 -1 1

B 0 0 -1 (59)

1 0

The third component of the first row of B- must be -1 since
-l
the first row of B- times the first column of B must give 1. Thus

we know one component of B-1













11 B12 -1
i -B -I

B B21 B2 B (60)

-1 -1 -1
31 32 33

Since the first row of B-1 times the second column of B must
-l
give zero, the first component of the first row of B- must be a

minus one.

-i B- -1
12
B-1 -1 B 31 -161)
B 1 22 23 (61)

-1 -1 -1
31 32 33

-L
Since the first raw of B- times the third column of B must
-1
equal zero, B12 must be -1.
12
B-1 equals zero because the second row of B-1 times the
f23 equals zero because the second row of B times the
first row yields 0. B-1 equals -1 because the second row of B1
-1
times the second column of B yields one. B23 must equal -1 since the
-l
second row of B- times the third row of B equals 0. Similar arguments
-1
can be made for the values for the third row of B-1

-1 -1

B-1 -1 -1 0 (62)

0 -1 0


A good deal of work is involved in inverting this matrix but

no more work is involved in finding the first three rows of a much

larger inverse matrix.













o 0 0 -1 -1 -i 0 0 0 1 0 0
0 0 0 -1 -1 0 0 0 0 -1 0 -1
0 0 0 0 -1 0 0 0 0 0 -1 1
x x x x x x 0 -1 1 0 0 0
x x x x x x 0 0 -1 0 0 0
x x x x x x -1 1 0 0 0 0

(63)

In Equation.(63) I is the identity operator. The first three

rows of the first matrix of Equation (63) can be found by the same

methods used in finding B-1 of Equation (62).

The procedure for finding B-1 in Equations (59) through (63)

can be used for all.pure scheduling problems. Some characteristics of

B for pure scheduling problems will be proven in order to show the

validity of the matrix inversion procedure.


Structure of B

Here, we are considering only the pure scheduling problem.

We know how many batches of each product to produce over a fixed time

period. The cost of a particular schedule, z, will be given by

Equation (64).

k + c*t = z (64)

where ti are the times that a particular batch starts. We will want

to minimize c*t. Our constraints will be of the form:


t t < d (65)
either/or
-ti + t 2














t < k (66)


where Equations (65) say that batch ti is to be started either dl

units of time before tj or d2 units of time after tj. Equation (66)

says that batch i has to be started by time ki.

We will be doing linear programming problems given by

Equations (20).


minimize c't maximize d'w

primal such At > d dual such A'w < c (20)
problem that t > 0 problem that w > 0


where A includes some set of constraints like Equations (60).

We are going to use the revised simplex method of solving the

dual problem. First, we will write the dual in Equation.(67).


max d'w

-1 0 . 0
such 0 -1 0 .... 0 w w > 0 (67)
that ... w
0 ... 0 1


If the matrix in Equation (67) has m rows we will be using m

linearly independent columns of Equation (67) at a time. These m

columns form a basis matrix B. It will be helpful to know the

structure of B-1. Each column of B has one of the forms given by

Figure 16.














0
0 0
0
1
0 0
or or -1
0 0 0
-1
0
0 0




Figure 16. Three Possible Forms for Columns of B.


A simplified notation will be used in the following analysis.

A column of B with all zeros expect a one in the ith row will be

written as ei. A row of B-1 with all zeros except a one in the ith

column will also be written as ei. When a proof is given which will

hold for ei or -ei the notation ()ei will be used. The notation
(-) (+)
+ ei ej means that discussion is valid for either ei ej or

-ei + e.

Proof 1

The vectors e e e -e ...e e
01 02 2 03 n- n n 1

are linearly dependent.

This can be seen to be true because they can be added together

to give 0.

Proof 2

(-) (+) (-) (+) (-) (+)
The vectors + e e + e e ,.... + e e
() (e ) 1 2 2 3 n-l n
+ e e are linearly dependent.
n ~1


~














If we multiply each of these vectors by a plus or minus one,
(-) (+)
we will have a vector of Proof 1. Let xl + e e ,
(-) (+)
x + e2 e etc. By Proof 1 we thus have constants a (all
2 2 "3
n
plus or minus one) such that aixi 0. By definition the vectors
i-1
are dependent.

In the following we will be using some proofs and terminology

of graph theory. The proofs will be given in terms of our system and

hopefully the proofs will be easier to follow when presented in this

manner.

Definition

Among the columns of B we will have a path between e and

e if there are n columns of B of the form
n-l
(-) (+) (-) (+) (-) (+)
+ e e2 + e e ,.., + e e
1 2 2 3 n n+l


Definition

The path between the vectors of P-2 will be said to form a

loop, since there is a path between e and itself.

Proof 3

Suppose we have a set S, of columns of B of the form;

(-) (+)
+ e e Suppose that there is no loop formed by members of
oi j
this set. Suppose further that in this set, S, there is no path
(-) (+)
between ek and e We may add the column + ea e. to the set

S and still not have any loops.













There is no path between e and e in the set S. Thus
(-) (+) oh a1
with the addition of + e e to S there will only be one path
fk e
between e and e and neither e nor e can be part of any loop
k a f e

in the new set. Any path not involving e or e will not be
1a 0
affected by the new addition to S.

Definition

Suppose we have a set, S, of columns of B of the form;
(+) (-)
- e + e A unit vector, e found in the set will be called an
0 0
(-) (+)
extreme point of S if it is only found in one column, + e e ,

of S.

Proof 4
(+) (-)
Any set, S, of columns of B of the form; e + e
oL j
without a loop, has an extreme point.

Suppose n unit vectors, e are used in the set S. Choose any
.i
vector e , used in the set. Either e is an extreme point of the

set or it is not. If e is an extreme point we are finished. If
0 2
e is not an extreme point we can find two columns of S of the form

(-) (+) (-) (+)
+ e e , + e e Either e is an extreme point of

the set or it is not. Suppose we have found -1 members of the set
(-) (+) (-) (+) (-) (+)
of the form; + eo, e,2, + e,2 e,,..., + e, e ,


where e ,2 through e are not extreme points. Since e is not

(-) (+)
an extreme point there must be column of S of the form + e e ,
0 +1













e ,+1 cannot belong to the set e ,l, e, ,2...,e or we would form

a loop. Suppose we eventually find that S consists of a path through

n vectors without forming a loop and eo,2 through e ,n1 are not
(-) (-) (-)
extreme points. We would have the columns, + e,1 + ea 2, + e,'2

(+) (-) (+)
- e ,..., + e a , and e through e are the only
a 3 n-1 n 1 n

unit vectors forming the set. If we have another column of the set
(-) (+)
of the form; + e, e , we will have a loop. There will thus
n (-) (+)
be only one column of S of the form, + ea, ei and e is
n 4. n
an extreme point.

Proof 5
(-) (+)
No more than n-l independent vectors of the form + e e

can be formed from n unit vectors e .

Now Proof 4 is true for n=2 because there can be only one
(-) (+)
independent vector of type + eo eo Suppose Proof 4 is true
1 2

for n-. Suppose we have a set S, of independent vectors of form

(-) (+)
+ e e formed from +l vectors e.. From Proof 2 the vectors,

(-) (+)
+ e e, of S cannot be independent if there is a loop. From
4. j
Proof 3, if there is no loop, there must be an extreme point, e .
(-) (+)
Elimination of the vector + e a from the set S will create a
ao ok
set formed from only I unit vectors e ik, which can have at most
(-) (+) H i
1-1 vectors of the form + e e. Our set formed from e+1 unit
o j
vectors must therefore have at most (-1) + 1 -= vectors. Q.E.D.














Proof 6

If B has a column of the form e e , then there must
a 1 a 2
be a path between either e or e and some vector e where
1 2 n
(+)
a column of B is of the form e, .
n

For this proof one has to remember that B has m rows and m
(+) (-) (+)
independent columns which are either of the form ei or + ei ej.

Proof 5 will be proved by contradiction. We will prove that if

Proof 5 were false then the columns of B would be linearly dependent.

Suppose B has a column of the form e e and let S
1 2
be the set of all vectors e where there is either a path between

e i and eo, or a path between eo and e Suppose Proof 5 is

false. Then there is no column of B of the form e where eo,

is a member of S.

Let S be the set of all columns of B of the form
c
C-) (+)
+ eo, e where e and e are in S. Let n be the number
i 0 i
of vectors, e , in S and n be the number of columns of B in S .

Either n < n or n > n.
c c -
If n < n then the m n columns of B which are not in S
c c c
are generated by the m-n vectors ei which are not in S.

There are m unit vectors ei in the vector space we are working

with. The m-n columns of B which are not in S are generated by the
c c
m-n vectors, ei, which are not in S.

By Proof 5 if n > n then the columns of S are dependent.

If n < n then the m-n columns of B which are not in S are
c c c
dependent because there are generated by only m-n vectors ei. Q.E.D.













Proof 7
(+) (-) (+)
If the columns of B were of the form e ,+ e e ,
01 01 02
(-) (+) (-) (+) (-)
+ e e ,..., + e e + e they would be linearly
2 3 n-1 n n
dependent.

Here we have n+l columns of B generated by n unit vectors.

No more than n independent columns can be generated by n unit vectors

so we have that these n+l columns must be dependent.


Generation of the Inverse Matrix

Now that we have shown the characteristics of B if it has

independent columns, it is not too hard to deduce the properties of
--l
B1. We can write each row of B as I aiei.

The inverse matrix will be generated one row at a time. The

characteristics of the jth row of B-1 depend on the characteristics

of the jth column of B. A column of B can have either one or two

nonzero components and we will see how to generate a row, j, of B-1

depending on the properties of the corresponding jth column of B.


The Jth Column of B Has Two Nonzero Components

Here the jth column of B, bi, is given by Equation (63) and

we want to find the jth row of B-.

(-) (+)
b = + e e (68)


First we find all of the vectors, e , where the columns of

B form a path between e and e By Proof 6 there is a column, k,
(+) i
of B of the form e By Proof 7 there is only one such column, k.
k












The jth row of B-1, b 1 is given by Equation (66) since the jth row

of B-1 times the kth row of B must be zero.

b 1 k Yiei (69)


Next we find the path between e and e There can be two

types of paths, P1 and P2, between an extreme point and e These two

types of paths are given by Equations (70) and (71).

(+) (-) (+) (-) (+) (-)
Pl e ,+ e e ,+ e e ,...,+ o
x x x1 x1 x2 xn

(+) (-) (+)
ea, + ea e (70)

(+) (-) (+) (-) (+) (-)
P2 e + e e + e e ...+ e
x x x1 x1 x2 xn

(+) (-) (+)
e + e e (71)


If the extreme point ea of Equation (69) belongs to a path of

type P1 then y (Equation (69)) is zero if et belongs to a path of type
(+)
P1 and yi is 1 if ei belongs to a path of type P2. If the extreme

point e of Equation (69) belongs to a path of type P2 then yi is
ak (+)
zero if ei belongs to a path of type P2 and yi is 1 if ei belongs

to a path of type Pl. yi is zero if ei does not belong to a path of

type P1 or P2.


Here the jth column of B, bj, is given by Equation (67) and


The ith Column of B Has One Nonzero Component













we want to find the jth row of B-.

(+)
bj = e (72)


Since the jth row of B-1 times the jth column of B is one, the

jth row of B bI is given by Equation (68).

(+)
-1
b + ea+ iYie 1 (73)

(+)
The vector e may be an extreme point of one or more

paths, P, formed by the columns of B. If a vector e is part of any
(+)
such path P (Equation (74)), then yi of Equation (73) must be 1

since the jth row of B-1 times any column ilj of B must yield zero. If

a vector, ek, does not belong to any path given by Equation (74)

then yk of Equation (63) must be zero.

(-) (+) (-) (+) (-) (+)
P = + e e + e e ,..., + e e (74)
1 1 2 n-1 n


The inversion procedure developed earlier has to find paths among

the columns of B. One needs to find the nonzero components of B in

order to find these paths. The programs described later store the

location of nonzero components of the columns which make up B. The

programs also store the value of the nonzero components. Since the

columns have few nonzero components it is easier to store their

locations and values than it is to store the entire matrix B.

We have a fairly easy method of generating each row of B-1

merely by knowing the structure of B. therefore, we can store which

columns of A' are used in a matrix B and invert B in order to obtain B-1














APPENDIX B

PROGRAMS


The solution procedures developed earlier were implemented

in the Fortran language. The programs used are given in this

section.

The Balas enumeration procedure is implemented by subprogram

FATHOM. The branch-bound enumeration procedure is implemented by

subprogram BRANCH. Subprogram LINEAR performs the linear programming

for both enumeration procedures and subprogram COST calculates the

cost of freeing a variable for both enumeration procedures.

Both enumeration procedures diminish the size of a problem as

a consequence of one decision implying another. Subroutine FATHOM

uses subroutine DEMINF and subprogram BRANCH uses subprogram DEMIN.

Flow charts are given for the first few subprograms. Listings

are given for the other subprograms. A reader who is interested in

understanding and using the programs should first read the description

of the flow charts.

The major variables are found in these flow charts. Hopefully

the flow charts will be useful to future programmers.




Full Text

PAGE 1

Optimal Scheduling o£ Complex Batch Processes By HENRY X. SWANSON A DISSERTATION PRESENTED TO THE GRADUATE COUNCIL OF THE UNIVERSITY OF FLORIDA IN PARTIAL FULFILLMENT OF THE REQUIREMENTS FOR THE DEGREE OF DOCTOR OF PHILOSOPHY UNIVERSITY OF FLORIDA 1972

PAGE 2

73-15,601 SWANSON, Henry Xenophon, 19U5OPTIMAL SCHEDULING OF COMPLEX BATCH PROCESSES. The University of Florida, Ph.D., 1972 Engineering, chemical University Microfilms, A XERDK Company , Ann Arbor. Michigan © 1973 HKNUY XENOPHON SWAMSON ALL Riarrs reskrvi-d

PAGE 3

PLEASE NOTE: Some pages may have indistinct print. Fi Imed as received. University Microfilms, A Xerox Education Company

PAGE 4

ACKNOWLEDGMENTS The author wishes to express his appreciation for the assistance and support of: Professor F, P. May, who served as chairman of his supervisory committee, first introduced the author to the problems of batch scheduling, and who was his principal research advisor; Associate Professor A. W, Westerberg who introduced the author to systems design and optimization and served on his research proposal committee; Professor H. E. Schweyer who served on the author's supervisory committee and who helped him define his problem; Assistant Professor J. B. Wallace who served on his supervisory committee; Professor R. D. Walker, Jr. who served on his supervisory committee; The Department of Chemical Engineering for support and for the educational contributionp of its faculty and staff; The University Computing Center which provided support. ii

PAGE 5

TABLE OF CONTENTS ACKNOWLEDGMENTS LIST OF TABLES • LIST OF FIGURES LIST OF SYMBOLS. . , ABSTRACT CHAPTERS: I. THE PROBLEM. II. INTEGER PROGRAMMING Problem Formulation History III. INTEGER PROGRAMMING USING DUALITY AND THE REVISED SIMPLEX METHOD IV. PURE SCHEDULING PROBLEMS Balas' Enumeration i. i Branch-Bound Enumeration A Solution to the Storage Problem Optimization Strategies V. ENUMERATION OF MIX/ SCHEDULING PROBLEMS VI. RESULTS, CONCLUSIONS, AND RECOMMENDATIONS Solution Efficiency. • • • Results. Conclusions and Recommendations. APPENDICIES A. THE INVERSE MATRIX FOR PURE SCHEDULING PROBLEMS. Page 11 V vl vlll xl 1 8 8 12 16 24 . 25 38 A3 44 48 60 60 64 70 73 74 111

PAGE 6

TABLE OF CONTENTS (Continued) Page B. PROGRAMS. 86 BIBLIOGRAPHY 1A7 BIOGRAPHICAL SKETCH 149 iv

PAGE 7

LIST OF TABLES Table Page 1 Table of Data for Sample Problem...... 30 2 Optimal Schedule for Sample Problem... 38 3 Batch Costs for Sample Batch Product Mix Problem. . 5A 4 Batch Characteristics for Large Batch Product Mix Problem. • 55 5 Chemical Inventories and Batch Sizes. 56 6 Feasible Schedule Found for Batch Product Mix Problem. ....;.. 57 7 Computational Results Using Several Integer Programming Methods. .. ..i. 61 8 , Optimal Product Mix and Schedule for Sample Problem 2. i 65 9 Schedule for Two Time Periods. 66 10 A Set of Scheduling Decisions.... 69 11 Best Schedule Found for Sample Problem 3... 71

PAGE 8

LIST OF FIGURES Figure Page 1 A Simple Batch Processing Problem 3 2 Flow Chart for First Two Linear Programs 26 3 Flow Chart for Last Four Linear Programs. 27 4 Final Flow Chart for Sample Problem 28 5 Flow Sheet for Intermediate Inventory 29 6 Early Stages in Solution of Sample Problem 34 7 Flow Chart Showing First Four Decisions Made in Solving Scheduling Problem 35 8 Flow Chart Showing Backtracking After Sixth Linear Program > 36 9 Continuation of Sample Problem to First Feasible Schedule 36 xO Flow Chart for First Step in Solving Sample Problem Using a Branch and Bound Enumeration Procedure • 39 11 Flow Chart for Branch-Bound Procedure up to Fourth Partial Solution 40 12 Flow Chart Including Fifth Partial Solution. 40 13 A Partial Solution with Three Remaining Either/Or Choices 46 14 A Partial Solution Where Three Either/Or Choices Can Be Made at Once 47 15 Second Batch Product Mix Problem 59 16 Three Possible Forms for Columns of B 78 17 Flow Sheet for Subroutine PIVOT 89 18 Flow Sheet for Subroutine LINEAR. 92 19 Flow Chart for Subroutine DEMINF. 98 20 Flow Sheet for Subroutine BACKTR. 112 vi

PAGE 9

LIST OF FIGURES (Continued) Figure 21 Vector LF Before and After Control Point 1........ 118 22 Vector LF After Iteration Loop 104 119 23 LF After Iteration Loop 105 119 24 LF After Control Point 11 120 25 LF After Variable LL Constrained to Zero and Variable L Freed 120 vii

PAGE 10

LIST OF SYMBOLS A matrix which defines constraints to scheduling problems. a. column 1 of matrix A'. AA a matrix used by computer programs to determine nonzero components of A'. A(1,J) gives the number of nonzero : components of the first column of A'. For A(1,J) = I, A(Z,J) through A(I+1,J) give the location of the nonzero components of the Jth column of A' . For A(1,J) •= I, A(I+2,J) through A(2I+1,J) give the corresponding nonzero components of the Jth row of A'. B the basis matrix of A'. (See Chapter III.) BB The basis matrix for the results of first dual linear program where all of the dual variables are constrained to zero. BI a matrix used by computer programs which Is the Inverse of B. Bl the product of -CC times B. BlF Bl for the result of the first dual linear program. ^lik ~ ^°^^ °^ producing the kth batch of chemical 1 In production unit J . '^ilk ~ '^°°' per hour of storing kth batch of chemical 1 In production unit J . C. completion time of a particular job 1. CC cost vector used by computer programs. CC(i) is the cost corresponding to dual variable 1. d cost vector for the dual to scheduling problems. e^ the vector which has all zero components except for the ith component which is one. IK a matrix used by computer programs to locate information. If a variable I represents a scheduling decision then IK(1,I-NBM) locates the row of IMP which contains information about decision I. For a particular N2, IK(2,N2) locates the list IK(3,N2) through IK(IK(2,N2),N2). IK(3,N2) through IK(IK(2,N2,N2) are parameters used along with subroutines DEMIN or DEMINF to reduce the size of scheduling problems. viil

PAGE 11

IMP matrix which locates production decisions and scheduling decisions for the computer programs. For a particular 11, IMP(I1,1) will locate production decisions. Let I IMP(I1,1). In this case variables IMP(I1,2) through IMP (11, I) will correspond to decisions to produce some batches. Let J IMP(I1,I+1). In this case variables IMP(Il,I+2) through IMP(I1,J) will correspond to decisions about scheduling the batches. IX vector which Is used by computer program to locate freed variables. A dual variable I Is constrained to zero If IX(I) » .FALSE. The decision to free a variable I on a particular branch of a decision tree (nee Chapter IV.) Is made by setting IX(I) .TRUE. IXB let I be a dual variable representing a production decision. If the decision Is Implied by another decision then one need not free variable I. (see Chapter IV.) The computer programs Indicate that a production decision Is redundant by setting IX(I) .FALSE, and IXB (I) .TRUE. If variable I represents a scheduling decision then the variable Is constrained to zero on a branch of the decision^ tree by setting IXB(I) •» .FALSE. 1X0(1) .FALSE, and IXB(I) •» .TRUE. Indicate that variable 1 Is currently constrained to zero but may eventually be freed if the decision Is made to produce the batch which Is scheduled by variable I. IXO For production decisions 1X0(1) .FALSE. Indicates variable I Is constrained to zero on the current branch of a solution tree. For scheduling decisions 1X0(1) = .FALSE, means that a variable Is temporarily constrained to zero but may be freed If the decisions are made to produce the batches scheduled and IXB (I) " .TRUE. IXl a vector used by computer programs to determine which variables are In the basis. The variables 1X1(1) through 1X1 (M) are In the basis. IN equivalent of n for computer programs. LF a vector which contains a list of numbers used by computer programs and described In Chapter IV. For a particular I, the absolute value of LF(I) Is a variable which has been either freed or constrained to zero. If LF(I) is negative the program has eliminated the opposite decision from consideration. The first member of the list is LF(2) and the last member is LF(LF(1)). ix

PAGE 12

m the number of constraints to the dual of a scheduling problem. M equivalent of m for computer programs. MIMP number of rows of matrix IMP. n number of variables In the dual to a scheduling problem. NBM number of production decisions similar to Equations (41) through (44). R a reactor used in a sample program. S a separator used in a sample program. t the time that a particular batch is started. V a variable which can take a value of either or 1. w the vector of dual variables to a scheduling problem. X vector of variables for a product mix or scheduling problem. X vector containing the value of the basis variables for the written programs. z objective function. z. objective function for an incumbent solution. T the time period over which a scheduling problem is to be optimized.

PAGE 13

Abstract of Dissertation Presented to the Graduate Council of the University of Florida In Partial Fulfillment of the Requirements for the Degree of Doctor of Philosophy OPTIMAL SCHEDULING OP COMPLEX BATCH PROCESSES By Henry X. Swanson June, 1972 Chairman: Professor F. P. May Major Department: Chemical Engineering The chemical Industry performs a number of Its operations as batch processes. This paper presents a method of scheduling batch processes, and the techniques developed are especially efficient for solving batch scheduling problems found In the chemical Industry. Two related problems are unique to batch processes. One has the problem of scheduling operations If more than one chemical can be processed In the same machine. Sequential batch operations usually require Intermediate Inventory ; The beginning Intermediate Inventory over any period determines which schedules are feasible and the final Intermediate Inventory Is a function of the schedule used. One has the problem of determining which schedules should be used and how much Intermediate Inventory should be maintained. The author modeled batch scheduling problems using linear production and Inventory costs and linear constraints. Other researchers have presented methods of solving such problems but the author's method proved more efficient for chemical batch scheduling problems. xl

PAGE 14

The models of scheduling problems were written as a linear objective function and a large number of linear constraints. A subset of the constraints would apply for any feasible schedule. The dual problem was also linear with a large number of variables. Only a subset of these variables would take on nonzero values for any feasible solution. The solution algorithm used the revised simplex method and a novel method of Identifying which variables were held to zero. This solution method allowed one scheduling decision to Imply another which turned out to be an Important feature for Improving solution efficiency. Sample scheduling problems were solved where the objective was to find how many batches should be produced and then to schedule them. The author could not find a case where such problems were attempted by other researchers. The solutions to simple problems Indicated that machine slack time Is an Inherent feature of batch scheduling problems. The solutions also indicated that intermediate inventory costs frequently cause one to produce a more varied product mix than if there were no inventory costs. xii

PAGE 15

CHAPTER I THE PROBLEM It was the purpose of this work tc develop a method to schedule the operation of fairly complex batch chemical processes. Actually a method was developed to optimize a fairly large class of problems. The solution procedure was developed to be most efficient for the chemical processing problems because of the structure of such problems. Batch chemical processing units are designed so that various chemicals can be fed Into them and after processing the resulting products are removed. We will look at the problem created when a chemical plant can produce a variety of products In the same batch production units. Typically there are a number of operating units In a chemical plant and the units can, In general, be used to produce a number of different products. The products from some units are used as feed to other units and one has to decide how each unit should be operated. The oil Industry has had some success In using linear programming to optimize continuous production rates when a variety of possible products can be produced. If one assumes that there Is a fixed cost per pound of chemical made in a production unit one gets a linear objective function. minimize Y c..x. . (1) Here x Is the number of pounds of chemical 1 produced In

PAGE 16

production unit j and c. . Is the fixed cost per pound of chemical produced. Profit Is treated as a negative cost. One also has material and energy balance constraints which are of the form A X f b . (2) Here we are using matrix notation where A is a matrix, x is the vector with components x. . and b Is a vector. These constraints together with the linear objective function form a linear programming problem. This linear programming problem becomes an integer programming problem if the chemicals are to be produced in batches. Batch processes differ from continuous processes in at least two important aspects. Production occurs only as an integer number of batches and successive production units do not necessarily operate at the same average production (or use) rates. Equations (1) and (2) with x^ integer might not be too difficult an Integer programming problem. This product mix problem might even be solved by linear programming especially if it has a lot more variables than constraints. One might not be able to schedule the result of this product mix problem. The scheaullng problem can be seen by looking at a very simple batch processing problem. Suppose a chemical process uses two batch units, R and S, to produce a final product. Suppose that R produces 300 pounds of product and that it takes 500 pounds of product from R to feed S. Suppose further that it takes three hours to produce a batch in R and four hours to produce a batch in S.

PAGE 17

& 300 pounds p rodu ced /batch three hours per batch Intermediate Inventory 500 pounds feed needed per^tch four hours per batch Figure 1. A Simple Batch Processing Problem. With sufficient Intermediate Inventory, It Is possible to produce 5 batches In R and 3 batches In S over a fifteen-hour period. If there Is no Intermediate Inventory, the first batch of S cannot begin until after the second batch of R Is completed. Thus, only two batches of S can be produced In a.flf teen-hpur period with no Intermediate Inventory. One should notice that R Is capable of producing 100 pounds per hour and S Is capable of consuming 125 pounds per hour If there Is sufficient feed. One should consider multiple uses for S since It Is slightly oversized, for the process shown In Figure X. 2 Urlostle considered the product mix problem given by Equations (1) and (2) together with x. . Integer. This product mix problem did not Include scheduling constraints. Next Urlostle considered scheduling the problem In a second step. If one adds restrictions on the number of batches produced to Equation (2) eventually one will get a product mix that Is schedulable. Thus far we have not considered any Inventory costs In our problem formulation. In general we will be concerned with the problem where the cost of each product In Inventory Is proportional to the amount of product and to the time that this product Is In Inventory.

PAGE 18

The real product mix problem for batches should Include Equation (1) and a cost for inventory. The constraints should Include Equation (2) and scheduling constraints. An efficient method will be presented for solving this batch product mix problem. Actually the solution procedure turns out to be useful for solving a larger class of problems than the batch operation problems which are considered in detail in this thesis. We want a solution procedure that will be very efficient for solving certain problems found in the chemical industry. Three different types of problems are considered in this work. The petroleum industry uses the product mix problem in order to set yearly production goals and sales goals for continuous processes. The author would like to be able to solve the batch product mix problem for the same reason. Sales and production goals are useful and the batch product mix problem can provide this Information. The author would like to be able to solve the batch product mix problem and two other related problems. The other two problems are caused when sales goals are not met exactly. The production department could use the result of the yearly batch product mix problem if sales goals were met exactly. Actually sales vary from month to month and sales departments are encouraged to exceed the sales' goals for the most profitable products. The production department has to be able to fill whatever sales commitments are made each month. The production department can use a modified batch product mix problem for monthly operations. This problem would again use

PAGE 19

costs for making each batch and inventory costs. The batch product mix problem would have the same form as the yearly batch product mix problem except for some additional constraints. These constraints would force production to fill the existing sales orders. The last problem the author would like to be able to solve is simply a scheduling problem. The pure scheduling problem is formed when one decides what operations should be performed and one merely needs to schedule the operations. This is the type of problem 2 Urlostle solved for the case of two machines and two products. Uriostle also assumed he had sufficient intermediate inventory to begin any operation. In reality the inventory left over from one month's production affects production in the next month. We will only be interested in optimizing operations over a fixed time period and will ignore the effect of these operations on some sequential time period. Our scheduling problem is related to another problem called 3 in the literature "the job-shop problem." The job-shop problem comes from the problem of scheduling production in a machine shop where pieces of metal have to be worked on different machines. The problems are different however in that in our problem there is in general no unit of chemical that has to be worked on. Three-sevenths of one batch might be needed to make a batch of feed for the next processing unit, for example, and frequently a batch separation process will produce some odd fraction of material to be recycled. One may have to do a number of operations on a piece of metal before the job of working the metal is completed. Other authors

PAGE 20

reported work on scheduling problems but interest has most often centered on a regular measure of performance for the job-shop problem. A regular measure of performance can be expressed as a function of the job completion times. M = f(Cj^,C2,...,C^) (3) C., is the time that Job i is completed and a regular measure of performance also has the characteristic that the measure increases only if at least one of the completion times increases. That is, if M' « f(Cj,C^ C^), then M' > M only if Cj > C^ for at least one i. 3 Conway, Maxwell, and Miller suggest one of the real reasons that so much interest has centered around minimizing the completion time of the last job (a regular measure of performance) is that a simple algorithm was developed for minimizing this completion time in a two-machine job-shop. Researchers, however, have not found a simple algorithm for more complex cases. We will be using an inventory cost which is proportional to the amount of each material in inventory and the time it is stored. This is not a regular measure of performance since the cost is minimized if we start jobs creating inventory as late as possible. One reason why this Inventory cost makes sense is that if a product cannot be shipped and sold until a certain due date, there is no reason why the company should spend its resources completing the job early. Some heuristic procedures have been developed for solving the job-sh.op problem. Actually heuristic procedures are a fairly good idea for scheduling problems. The job-shop scheduling problem can be

PAGE 21

formulated as a 0-1 programming problem but as late as 1963 realistic problems could not be solved. Lasdon has some encouraging results for large scale problems but his scheduling problems are not as difficult as the ones this work will attempt to solve. In one way, our scheduling problem is harder than the Jobshop scheduling problem; we do not have a fundamental unit of the chemical product which has to go through a certain sequence of machine operations. Our scheduling problem is easier because usually one has a number of batches of the same type and this reduces the dimensionality of the problem. (Knowing that batch 1 of type E proceeds batch 1 of type F implies that batch 1 of type E proceeds all u£ the batches of F and reduces the size of the problem.) Multiple batches (that is, continuing use of the process) are the rule in the chemical industry because of the high development costs of a chemical process. The high costs involved justify a fairly elaborate effort to find a good product mix and a good schedule. Graham also looked at a similar scheduling problem. No inventory costs were assessed but costs were included for setting up each type of batch. A modification of dynamic programming was used. There are computer storage problems for dynamic programming problems of any complexity and Graham circumvented some of them by an approximation technique. The author questions whether the storage problems can be avoided for more complex problems than Graham attempted. The author's enumeration scheme also looks more promising than Graham's because of the simplifications caused by multiple batches.

PAGE 22

CHAPTER II INTEGER PROGRAMMING A solution procedure Is needed for product mix problems with or without sales commitments and for pure scheduling problems. An enumeration procedure similar to Integer programming Is developed In this work. Some of the nomenclature of Integer programming will be useful for explaining the new enumeration procedure. First our problems will be formulated as Integer programming problems and then some of the history and terminology of Integer programming will be discussed. Problem Formulation The cost of producing batches Is expressed In Equation (1) for a product mix problem. For a pure scheduling problem the number of batches of each type to be produced Is fixed so this summation Is a constant. We can express the number of batches produces as a sum of 0-1 variables. ^Ij " I \ik <^> where ^4 4i, = 1 if the kth batch of 1 in j is to be produced = otherwise 0-1 variables will simplify later discussion. We will need to Include inventory costs in our investigations. Let us look at the contribution to the inventory cost over a fixed period, x, caused by one batch. Let t. ., be the time that batch k of 1 Is started in unit j. Suppose it costs c. . per unit time to store IjK

PAGE 23

the feed for the batch In inventory. If we do not start the batch until T the cost for storing the feed is c. .. t. The cost for feed inventory will decrease by c. ., (t t. .. ) as a consequence of starting the batch at t. ., . Suppose that it costs c' , per unit time to store the product from the batch in inventory and the batch has a processing time of p. .. in the unit. The overall affect upon inventory cost due to starting the batch at t. .. is -^^ijk^^ijk *• Pijk ^> •*• '^ijk^^ijk '^ ' ^^> The inventory costs given by Equation (5) summed over all i, j, and k is a linear objective function which we need in order to have an integer program. The total objective function for our problem is the sum over i, j, and k of Equation (5) and the costs given by Equation (1). Next we need to formulate our constraints. Material Balance A material balance gives a simple linear constraint between batches. where w. ,, is the amount of chemical produced or used by batch k of ^J*^ i in J P^ is the set of batches producing a kind of chemical C_ is the set of batches consuming the same kind of chemical.

PAGE 24

10 Completion Time We are to optimize operations over a fixed time period. A simple constraint will make sure that there Is enough time to produce the batches In each production unit. J^ Pljk'^ljk i ^ (7) We need to assure that batches are completed by the due date If sales commitments are made. For the pure scheduling problem every product batch has a due date. ^Ijk + Pljk ^ ^Ijk (8) where d , Is the due date for producing batch k of 1 In j. We need to use some tricks with our problem formulation to make sure that no Inventory cost Is assessed If we make the decision not to make a batch. We can use a synthetic device that will schedule any batch which will not be made (x. .. = 0) to start at the final time x. We do not want a contribution to the Inventory cost If x. , =» 0. This can be done by the constraints: ^Ijk^^ (9) and adding the constant c* . p. .. to the objective function. When Xjj^ j^ = 0, Equations (9) and (10) force t, , = x. One can look at Equation (5) to see that the contribution to the Inventory cost when t. ., = x Is 0.

PAGE 25

11 Equation (10) is nonrestrlctive when x j^ = 1. Scheduling This work is primarily concerned with scheduling different operations on the same piece of equipment. The equipment can only operate on one thing at a time so one has the constraints; *^ajb *" Pajb *^cjd either/or . (H) ^jd -^ Pcjd -^ *^ajb Equations (11) are concerned with two batches to be made in the same piece of equipment. Equations (11) say that one of the batches has to be finished before the other begins. This either/or choice can be expressed using a 0-1 variable. t ^, + p ., < t . . + (t„.. + P„.k)v ajb *^ajb — cjd ajb "^ajb t .J + P 4j < t ,, + (t . , + P„.^)(1 v) (12) cjd cjd — ajb cjd "^cjd V «» or 1. To form an integer program we also would have to put some constraints on our variables like v in Equations (12) . For example, we would need constraints to force a batch of A before all the batches of B if the decision is made to schedule A before the first batch of B. Equations (12) only hold if one has decided to produce batch b of a in j and batch d of c in j . One may or may not decide to produce

PAGE 26

12 a batch In the product mix problem, therefore Equations (12) are not correct for the product mix problem. A more complex set of equations has to be written for the product mix problem. In general it is difficult to correctly formulate integer programming problems. One of the most frequently encountered discrete 8 problem, the traveling salesman problem, was recognized and solved years before someone saw how to formulate it as an integer programming problem. The actual enumeration procedure developed later avoids much of the difficulty of problem formulation. History A great deal of work has been done on integer programming. 4 8 Reviews of the literature ' have been done by others and a general review will not be attempted here. Rather we will look at some of the major types of solution procedure and their limitations. As the new enumeration procedure is developed in a later chapter the relationship will be shown between the new method and some of the more successful methods of integer programming. One of the earlier integer programming methods was developed 9 10 for the all-integer problem by Gomery. ' In this method all the noninteger constraints are written. This problem is solved by a linear programming method and new constraints are added to the problem. These new constraints reduce the constraint set to a smaller set containing the valid integer solutions. Constraints are added until an all-integer solution is found. A great deal of work was done refining this cutting plane method but unfortunately the method never proved to be very useful

PAGE 27

13 because of the large number of constraints which had to be added to the problem. One of the most recent Integer programming methods Is also due to Gomery. Again in this method an Integer programming problem Is written without the Integer constraints and one wants to reduce this convex set to find the Integer solutions. Group theory Is used and some refinements have been made In the method but It also doesn't work very well because of computer storage problems. Most, If not all, of the currently more successful algorithms for solving Integer programming problems are Implicit enumeration 12 13 schemes. Land and Dolg were the first to look at this method. For Implicit enumeration one first solves the problem using linear programnlng without the Integer constraints. One then looks at the effect of adding Integer constraints to the problem. One might, for example, look at adding the constraint x•> 4 to the problem where xmust be an Integer variable. If x^ = 4 makes the problem Infeaslble one need not look at any more Integer solutions with x^ = 4. If x= 4 gives a feasible solution one might solve the linear programming problem with X =» 4 and the original constraints and then look at adding additional Integer constraints to this result. 14 An additive algorithm due to Balas is similar to one of the enumeration schemes in a later chapter. Suppose one has a problem with 0-1 variables. Equation (4) shows how to change a problem with integer variables into one with 0-1 variables. One enumeration scheme starts by first solving the linear programming problem without Integer constraints. If the solution is all Integer then you are finished. If

PAGE 28

14 not the scheme adds integer constraints one at a time. One chooses a first variable, v., and constrains it to be zero. The problem is solved with all nonlnteger constraints and v= 0. If the problem is Infeaslble then one need never look at solutions with v= and one need only look at v^ » 1. If the problem has a solution with v^^ » we call this a partial solution. We next need to find If there are any feasible solutions to the original problem with v. 0. We do this by adding more integer constraints to our partial solution. Suppose we add the consecutive constraints v= 0, v» 0, ..., v » and get an Infeaslble solution. We say that there are no feasible completions to the partial solution v, " 0, v_ " 0, . . . ,v " 0. We next backtrack and look for feasible completions to the problem v^^ = 0, v™ = 0, . . . , V , " 0, V =1. n-1 ' n The process of adding constraints to the problem until one finds a solution or proves there is no feasible completion is called 14 fathoming . Once one finds a solution to the original problem the fathoming and backtracking procedure can be made more efficient. We * can use the objective function, z , of the solution to the original problem. We need not look for any solutions which do not have objective functions better than z since we are trying to find the best possible solution. We only keep the objective function from the best solution we have found so far. If we find a new solution with a better objective * function we use it for the new z . Suppose at some stage of our fathoming procedure we reach a partial solution which has an objective A function which is not as good as z . At this point we can backtrack because adding constraints will not Improve the objective function of

PAGE 29

15 the partial solu'tlon and we are only looking for feasible completions it with objective functions better than z . In order to Implement an efficient enumeration scheme to solve an Integer programming problem, one needs Information on the effect of adding a constraint to a linear programming problem. An Integer programming method Is developed In Chapter III which gives a great deal of Information on the effect of adding constraints to a problem. In Chapters IV and V the Integer programming method will be shown to be very efficient for batch scheduling problems.

PAGE 30

CHAPTER III INTEGER PROGRAMMING USING DUALITY AND THE REVISED SIMPLEX METHOD A new method has been developed to solve Integer programming problems. The method Is especially efficient for solving scheduling problems. In Chapter II scheduling problems were shown to have two general types of constraints. The first type of constraint includes the material balance constraints and the completion time constraints. Any feasible schedule has to satisfy all of the material balance constraints and all of the completion time constraints. A feasible schedule only satisfies one of the scheduling constraints from each pair of scheduling constraints of the second kind. The new solution method solves the dual of the scheduling problem. The dual problem contains paired variables corresponding to the paired scheduling constraints in the primal problem. One variable from each pair of variables is constrained to zero. The new solution method first solves the dual problem without any paired variables and later successively adds variables to the problem. The dual problems are solved by means of the revised simplex method which greatly reduces the amount of work required for scheduling problems. The new integer programming method will be explained by means of a sample scheduling problem. Suppose we have to schedule three operations, E, F, and G, on a particular machine. Suppose that E produces inventory that costs 30 units of value for each unit of time stored in inventory, F produces inventory that costs 40 units for 16

PAGE 31

17 each unit of time In Inventory, and G consumes Inventory that costs 30 units of value for every unit of time In Inventory. The objective function will be of the form minimize 30tg 40tp + 30tg + K . (13) t^, t^ and t_ are the times that batches E, F, and G are started. As E F G shown In Equation (5) K will be a constant If we are to optimize our scheduling over a fixed time period. We will suppose G has to start before 60, F has to start before AO and E has to start before G. Suppose further that E and F take 20 and G takes 10 units of time. We have three fixed constraints, t^ < 60 (1^) G t^ < 40 (15) t^ + 10 < t_ . (16) E — We also need to have scheduling constraints that do not allow two batches to be produced concurrently in the same machine. <^E -^ 20 < tp either/or (17) '^F + 20 < tg tp + 20 < tg either/or . (18) *^g-^^°^'f

PAGE 32

18 The scheduling problem Is now formulated as a set of linear programs. The programs can be written In a compact form. minimize K (30, 40, -30) t -60 -40 20

PAGE 33

19 maximize (-60, -AO, 20, 20, 20, 20, 10)w + K 0-1-1100 -30 such that 0-1 1-1-1 1 w £ -40 w >_ (21) -10 10 1-1 +30 If a constraint is used in a primal problem the corresponding variable will be used in the dual. If a constraint is not used in the primal then the corresponding variable will not be found in the dual. In order to use linear -programming we first rewrite Equation (21) in terms of equality constraints. maximize (-60, -40, 20, 20, 20, 20, 10, 0, 0, 0)(w s) + K 0-1-1 0-1 1-1-1 1 1 " = -40 (22) -10 1 1 1

PAGE 34

20 another by changing the variables in the basis. One needs to know how much the objective function will change if a new variable is put in the basis. One uses a vector y. for each variable, j, in order to determine the change in the objective function. Suppose we are doing the dual problem of Equations (20) . For each variable n. let a J. n^ be the corresponding nth column of A'. Let b be the set of basis variables, y, expresses the jth column of A' in terms of the basis (23) columns of A'

PAGE 35

21 first the problem will be solved without cither/or variables and later some of these variables will be added to the problem. The necessary Information for adding vectors to the problem can be generated when needed by the revised simplex method. Other linear programming methods need to generate the Information at every step of the solution process which is a lot of unnecessary work. It should be noted that there Is no need for Integer variables. Greenberg also noted that you don't need Integer variables with either/or constraints like Equations (17) and (18). However, Graeaberg did not solve his problem In the dual and had to solve a new linear program every time he added a constraint. The solution to Equation (22) without the either/or variables has an objective function of K-1000. Information from the revised simplex method shows that two of the either/or variables can be added without increasing the objective function. These two variables correspond to the first of Equations (17) and the second of Equations (18). From this solution of Equation (22) without the either/or constraints we can find the primal solution (t^ =0, tg = 40, t^ = 20) . The either/or constraints scheduling A before B and C before B are satisfied by this solution. We will develop several enumeration procedures in the next chapter. In all of the procedures we will use the dual and the revised simplex method. Variables corresponding to either/or constraints will be added to existing solutions to linear programs in the dual. In order to make decisions, one needs Information on the effect of adding new variables to an existing solution. It takes work to generate information and one has to decide how much Information is needed.

PAGE 36

22 There are three types of Information available on the effect of adding a variable to a problem. One can solve the linear program with the new variable. This takes some work and we will need Information on a large number of variables. Most Integer programming algorithms use much less Information. In the simplex method one Improves a solution by moving from one extreme point of the feasible solutions to another. One moves along an "edge" of the region of feasible solutions from one extreme point to another. The simplex method will move along the "edge" that has the largest feasible gradient to Improve the objective function. Most Integer methods use this gradient to make decisions. In the revised simplex method one has to multiply two vectors together in order to determine the gradient. If the problem has m constraints then the vectors have m+1 components. One can also determine how much the objective function will Increase as a result of moving from one extreme point to another. In the revised simplex method, one has to multiply a matrix times a vector in order to determine the cost of moving from one extreme point to another. We will use this information. We will be multiplying a m+1 dimensional square matrix times a 2 vector and this normally involves (m+1) multiplications and the same number of additions. For scheduling problems most of our vectors will come from constraints like Equations (17) and (18) which means they will have only two nonzero terms, plus and minus one. Our multiplication will consist only of subtracting the components of one row of the matrix from another. This simplification decreases the difficulty of determining the cost of moving to a new extreme point.

PAGE 37

23 There Is another reason for determining the cost of moving to a new extreme point when a vector Is added to a problem. Suppose we are to solve problem (19) with a different objective function. We might solve the problem without any of the either/or constraints and then consider adding the constraint that forces F to be completed before E. Since E has to start before G, adding this constraint also forces F to be completed before G. We are essentially making two decisions at once if we decide to force F to be completed before E. For the enumeration procedures in the next chapter one decision will frequently have multiple consequences. The Importance of these decisions justifies additional work in addition to simply calculating gradients of the objective function. This will be shown in later chapters.

PAGE 38

CHAPTER IV PURE SCHEDULING PROBLEMS In Chapter III a method was developed to solve Integer progranuning problems that was particularly well suited to solving scheduling problems and the method was illustrated by means of a sample scheduling problem. In this chapter we will be concerned only with scheduling batch processes. We will not be concerned with how many batches are to be made. We will assume we know how many batches are to be made in each unit over a fixed time period and will try to find the best schedule. This problem will be called the pure scheduling problem. In Chapter III we solved a pure scheduling problem by adding constraints one at a time to linear programming problems. At this point we want to find the best of all possible schedules. One has to find this optimal schedule and prove that it is optimal. One does this by proving that no other schedule has an objective function better than the objective function of the optimal schedule. We also want to be able to find the best schedule and prove its optlmality in as few steps as possible. The amount of work involved is a function of the order in which constraints are added to our linear programming problems. We will look at two general methods of adding constraints. One enumeration method developed by 14 Balas may not be as efficient as the other method but does not require much storage of information when implemented on a computer. The other method, the branch-bound method, was essentially developed 24

PAGE 39

25 13 by Land and Doig. The branch-bound method requires more storage of information than the Balas enumeration method but it usually requires enumeration of fewer schedules. We will first look at the Balas enumeration method. Balas* Enumeration In solving a scheduling problem constraints are applied one at a time. We want to find all the possible schedules or find some of the schedules and then prove that none of the remaining schedules are better than one of the schedules we have already found. A systematic way of investigating or eliminating all the possible schedules is needed. An example will be useful to show the Balas enumeration method of finding the optimal schedule. We will use the example that was developed earlier. minimize -30E AOF + 30G either/or E + 20 <_ F (25) F + 20 <_ E (26) either/or F + 20 <. G (27) G + 10 < F (28) such that G <_ 60 (29) F <. 40 (30) E + 20 < G (31)

PAGE 40

26 Here we have a problem with seven constraints. The feasible schedules will satisfy either Equation (25) or Equation (26) . They also have to satisfy Equation (27) or Equation (28). Suppose we solve the problem with none of the first four constraints applied. Next we might solve the linear programming problem with the first constraint added. Finally, we might find the schedule is optimal when Equation (27) is also added. In our example for these first three linear programming problems, the objective function is -1000. One method of drawing a flow chart for these three steps is given below. (1) (2) (3) f^lOOO ) (-1000 ) (E before F) V_^ (G before F) \^ Figure 2. Flow Chart for First Two Linear Programs. Using a computer it is necessary to store the same information given in the above graph. A computer could store the list of numbers (26, 25) when it started the second linear program. This would signify that Equation (25) was the only either/or constraint In effect during the program. Then the machine could store the list of numbers (26, 25, 27, 28) when it started working on the third linear program. One would want to store the results of the first feasible schedule obtained. The third linear program gives the best possible schedule that satisfies Equations (25) and (28) . We need to find the best of all

PAGE 41

27 the possible schedules with Equation (25) satisfied that also solve the original problem. In the language of Integer programming we say that we need to fathom all the solutions obtained from the partial solution satisfying Equation (25). When we start the linear program to solve the linear programming problem satisfying Equations (25) and (27) the corresponding flow chart might be drawn as below. ^ ^ (1) (2) ^^"^^ (3) Q (E b!fore F) ^;^ (G before -^ -^°°°^ Figure 3. Flow Chart for Last Four Linear Programs. We could store the same information in the computer in the form of the list of numbers (26, 25, -27, -28). The negative sign Indicates Equations (27) and (28) have both been tried. We only did enough work on the solution satisfying Equations (25) and (27) to prove that the solution cannot have a value for the objective function smaller than for the objective function for the feasible schedule we have already obtained. Actually the best schedule satisfying Equations (25) and (27) has an objective function of -AOO, but since the optimization procedure did not find this schedule Figure 3 does not have -AOO in the fourth circle and the circle is not completed. After we have fathomed all solutions from the partial solution satisfying Equation (25) we need to look at solutions satisfying Equation (26). The phrase used in Integer programming is that we backtrack and find the partial solution satisfying Equation (26). Actually

PAGE 42

28 we only need to prove that no solution satisfying Equation (26) is better than the solution we have already £ound. When we backtrack we would store the list (-26, -25) in the computer since the only information we need is that we have fathomed the solutions satisfying Equation (25) and we are working on fathoming the solutions satisfying Equation (26). The best schedule satisfying Equation (26) has an objective function of -200. The final flow chart is given below and the computer would no longer have any numbers in the list it was storing. Figure 4. Final Flow Chart for Sample Problem. Other pure scheduling problems can be solved in a similar manner. One needs only to apply a constraint from each of the either/or pairs and then solve the linear programming problem. One then backtracks and fathoms until all schedules are either found or eliminated. This Balas enumeration method of solving the problem has the advantage that we never have to store more than one solution and one list. Other advantages and disadvantages will be discussed when we look at another method of solving the problem. The Balas enumeration method used here fathoms partial solutions until the entire problem is solved. The other method (branch-bound) of solving the problem may run into

PAGE 43

29 storage problems and then we can use the method developed here to fathom partial solutions found by the other method. A program has been developed and implemented in the Fortran language to solve problems in the manner illustrated by the previous sample problem. The linear programs are solved in the dual in a manner similar to that given in Chapter III. To show some of the details of how the program works we will again look at an example. We will suppose that two products, E and F, can each be made in two reactors, Rl and R2, and that the product from each reactor is held in intermediate inventory until it is processed by a separator. For the purposes of the problem we will suppose that output from the separator can be sold immediately so there is no inventory created by the separator and in this problem that we do not have to keep feed for the reactors in inventory. Rl . Intermediate Inventory -^Sep Figure 5. Flow Sheet for Intermediate Inventory. We will be concerned with batch units and suppose that we know the time it takes to produce each batch and the amount it costs to store a batch of feed for the reactors or the separator.

PAGE 44

30 Table 1 Table of Data for Sample Problem Batch

PAGE 45

31 '^ElS + ^.ll tp^S either/or 4. o f. < t ^^^^ There are six pairs of either/or constraints of this type. We will suppose that all of the batches are completed by the time 9.5. This gives the constraints: W^ 3.7 < 9.5 tg^2 * ^-2 ^-^ (33) tEsi+2.1 < 9.5 etc. Assume also that there is not enough Inventory to feed the second batch of either chemical through the separator until we have finished making some of the chemical in a reactor. either/or either/or ^ERl ^ 3-^ ^ ^E2S •^ER2 " ^-2 1 «^E2S ^FRl •* ^-^ ^ ^F2S ^FR2 -^ "^-^ -^ '^F2S (34) Of course the first batch of E has to be completed in the separator before the second batch begins. The first batch of F in the separator has to be completed before the second batch ends. *^S1E + 2.1 < ts2E >^S1F * 2-6 1 «^S2F (35)

PAGE 46

32 Our problem is a minimization problem minimizing <-5-°^ERl -^-^hRl -^^'Otgis +5.0tg2S -^-^tp^i -6.4tpj^2 -^^-^^IS ^^•°^E2S^ subject to constraints like Equations (33) and (35) . In addition the optimal schedule satisfies one constraint from each pair of constraints from Equations (32) and C3A) . As was done earlier our problem Is solved in the dual. The dual problem has some variables associated as pairs. Primal minimize c*t such that either/or constraints A-t £ lb A2t £ b2 (36) Pairs of constraints from Equations (32) and (34) make up the set Ajt £ b^i . Only one constraint from each pair has to be satisfied. Dual maximize b^x. + b_x_ such that Ajx^ + A'X2 > c minimize \ (36) ^l L 9. ^2 and one member of each set of paired variables if X. has to be constrained to 0. We minimize by finding the set of variables of x. which can be constrained to and the maximization problem will have a minimum value.

PAGE 47

33 In the dual the pairs of associated variables correspond to the pairs of associated constraints from Equations (32) and (3A) . The final solution In the dual will have one member of each pair of associated variables free to take on any nonnegatlve value and one member of the pair constrained to zero. First, the problem is solved with all the pairs of associated variables constrained to zero. This corresponds to solving the primal problem without constraints from Equations (32) and (34) . The linear programming problem resulted in an objective function of -91.03. The result of a linear programming problem with n variables and m constraints will be that n m of the vardables will be zero and, except for a trivial case, some of the m basis variables will be nonzero and positive since required by the problem. Linear programming provides a rather simple method of removing one variable from the set of basis variables and finding a feasible solution to the problem with a different variable in the basis. The program uses this method to find how much the objective function will change if one variable is removed from the basis and one of the either/or variables is put in the basis. For example the variable corresponding to the constraint, ^ERl + 3.7 i tg2E . (37) can be put in the basis and the objective function will increase to -54.03. Actually the dual problem (Equation (36)) was formed and Equation (37) was represented by variable one in the dual. We can find how much the objective function will increase by putting any one

PAGE 48

34 member of the either /or pairs In the basis. The program found that putting variable 12 In the basis would Increase the objective function more than putting any other member of the either/ or pairs In the basis. As the problem was formed variable 12 corresponded to the constraint; ts2F + 2.6 £ tg3_^ • (38) The other member of the either/or pair, variable 11, corresponded of course to the constraint; SlE + 2.1lt52E . (39) The objective function Increased to -39.03 when variable 12 was put In the basis so there was a good chance that a solution to the problem would be found with a smaller value of the objective function. The linear program was solved with variable 11 free arid variable 12 constrained to be zero. Putting variable 12 In basis will increase objective function to -39.03. Optimal schedule with SlE before S2F. Result of linear program gave objective function of -91.03 with variable 11 free and variable 12 constrained to zero. Figure 6. Early Stages In Solution of Sample Problem.

PAGE 49

35 The linear program with all either/or variables except 11 constrained to zero gave an objective function of -91.03. We repeat ourselves by finding how much the objective function will increase by adding one more member of the either/or set to the basis. We again find the variable, x.-, which will increase the objective function the most if it is added to the basis. We find that x^^^ ^"^ ^ii^ ^^^^ "P *" either/or pair and we allow variable x^^, to be free while constraining x^to be zero. The computer initially stored the numbers (12, 11) in a list to record that solutions with variable 11 free were to be fathomed and that solutions with variable 12 free were to be fathomed next. A flow chart of the first several decisions is shown and the list is given. Computer list (12, 11, 13, 14, 3, 4, 7, 8) (5) (SIE before^' (SIF before V-/ (FR2 beforeV^ (FR2 befor^^ S2F) S2E) F2S) ER2) Figure 7. Flow Chart Showing First Four Decisions Made in Solving Scheduling Problem. On the next step we find that variable x. will increase the objective function the most if it is added to the basis. We constrain variable x^ to be zero and solve the linear programming problem with variable x„ free. This linear programming problem turns out to have ar unbounded solution so we backtrack and look at solutions with x^^ zero and Xfree. An unbounded solution in the dual corresponds to infeasibllity in the primal.

PAGE 50

36 (1) (2) (3) (4) (AR2 before A2S) Figure 8. Flow Chart Showing Backtracking After Sixth Linear Program. This linear program had unbounded solution so backtrack We continue our solution procedure until we arrive at the first feasible solution and then we start to backtrack. The first feasible solution had an objective function of 10.65. (ARl V-y (ASl Before before BRl) BSD (9)/ (10) (AilO Feasible Schedule Figure 9. Continuation of Sample Problem to First Feasible Schedule. We find a solution with the tenth linear program and we need to backtrack. The solution we obtained for the tenth program had variable 16 constrained to zero and variable 15 free. We can backtrack and solve the linear program with variable 15 free and variable 16

PAGE 51

37 constrained to be zero but this is not necessary. The objective function for such a problem would reach 13.89. We only need to start the linear programming algorithm and then we can backtrack again as soon as we obtain an objective function above 10.65. The running list the computer uses would be (12, 11, 13, 14, 3, 4, 7, 8, -1, -2, 6, 5, 10, 9, -16, -15) as we start the linear programming algorithm for the eleventh time and afterwards would be (12, 11, 13, 14, 3, 4, 7, 8, -1, -2, 6, 5, -10, -9). The program continued to fathom and backtrack in this manner until the problem was solved. Whenever one deals with real numbers there is the possibility of round-off errors. The inverse matrix of the pure scheduling problem has all integers and will not develop errors. Along with the objective function, there is also a vector of real numbers which are used and altered by the linear programs. These numbers can be generated correctly from the inverse matrix but the corrections take time. The program generates the correct values at every solution. Allowances for round-off can be made by estimating the maximum round -off error. Backtracking will not take place from a partial solution unless the partial solution has an objective function greater than an earlier solution plus the maximum error estimate. Another feature of the program can be seen by the way the given problem was actually solved. Eventually the program fathomed all the solutions with variable 11 free and variable 12 constrained to be zero. Next the solutions had to be fathomed with variable 12 free and variable 11 zero. Variable 12 corresponds to the constraint which forces the second batch of F in the separator to be finished before

PAGE 52

38 the first batch of E begins. This constraint Is not consistent with the constraint which would force the second batch of E to begin before the second batch of F. The variable corresponding to the inconsistent constraint must be zero for a feasible solution on this branch of the tree. Also, if the second batch of F begins before the first batch of E we do not need the constraint which would force the second batch of F to begin before the second batch of E. We might as well constrain the variable corresponding to the unnecessary constraint to be zero on a branch if we decide to free one particular variable. The optimal schedule is given below. It had an objective function of 7.19. Without the program one would have to set up and solve 96 linear programs. The machine solved the problem with a C.P.U. time of 2.89 seconds on an IBM 360/65 computer. Table 2 Optimal Schedule for Sample Problem Batch

PAGE 53

39 same problem. Again we will look at how the specific problem was solved using a particular solution procedure. Once more we solve the problem with none of the either/or constraints applied. Again we use the dual and find that putting variable 12 In the basis would Increase the objective function more than putting any other member of the either/or pairs in the basis. Again we want to look at the result of having variable 11 free. Variable 12 corresponds to finishing the second batch of I' in the separator before starting the first batch of E. Variable 11 corresponds to finishing the first batch of E in the separator before starting the second batch of F . The objective function Increases to -39.03 when variable 12 is put in the basis. This time the solution procedure will tell the computer to store the number -39.03 and enough information to generate the partial solution with variable 12 in the basis. -39.03 Putting variable 12 in basis will increase objective function to -39.03. -39.03 stored in computer along with enough Information to regenerate solution. Optimal schedule with SIE before S2F has objective function of -91.03. All either/or variables constrained to zero Figure 10. Flow Chart for First Step in Solving Sample Problem Using a Branch and Bound Enumeration Procedure.

PAGE 54

40 Next the solution procedure looks at putting an either/or variable in the basis in addition to variable 11. Again we find the variable, 13, which increases the objective function the most. Except for the storage of additional information, the branch-bound procedure is the same as the Balas enumeration procedure until the fourth partial solution is found. -39.0 -40.6 -47.1 Figure 11. Flow Chart for Branch-Bound Procedure up to Fourth Partial Solution. Figure 11 shows the results up to the fourth partial solution. Enough information was saved to find the partial solution obtained by freeing variables 11, 14 and 3. The objective function of this partial solution will be larger than -47.13 but it may be smaller than the objective function of the fourth partial solution. In the branch and bound method, enough information is stored to reproduce the fourth partial solution and the partial solution with variables 11, 14, and 3 free is found. ^^f Figure 12. Flow Chart Including Fifth Partial Solution.

PAGE 55

41 The question to be faced next was whether to branch back to the fourth partial solution or to continue working on the fifth partial solution. There is a certain amount of work the computer has to do in order to switch consideration from one partial solution to another. On the other hand, by adding constraints to the fourth partial solution we might find a solution which has an objective function smaller than -46.39. In that case any work done on the fifth partial solution would be wasted effort for no solution derived from the fifth partial solution can have an objective function smaller than -46.39. Some research is needed on when a solution procedure should switch attention from one partial solution to another. The computer program written uses a number, zb, to make its decisions. If the program is working on a partial solution with an objective function, z, then the program will switch consideration to another partial solution if and only if the other partial solution has an objective function less than z zb. The program was run with an arbitrary value of zb = 1.0 so the program switched from the fourth partial solution to the fifth partial solution but did not switch back again until later. If zb is very large a program will spend a large amount of time looking at nonoptimal solutions, zb shouldn't be any smaller than the possible error in the data. One shouldn't try any optimization that can't be justified by the original data. The branch-bound procedure takes advantage of the structure of the problem as did the earlier method. Eventually the partial solution with variable 12 free had to be investigated. This corresponds

PAGE 56

42 to the second batch of F In the separator being completed before the first batch of E In the separator. The algorithm never considered adding constraints forcing the first batch of F In the separator to be completed before or after the second batch of E. The linear prograiranlng and branching algorithms Ignore the 1th constraint If the 1th member of a vector of logical variables Is set free. The computer has to do some work to set up the proper linear program when the partial solution with variable 12 free Is Investigated. This work Is not done until the machine Investigates the partial solution. Sometimes Information Is stored on partial solutions which are never Investigated. Any extra work on such partial solutions Is unnecessary. If an Incumbent feasible schedule is found with an objective function, zl, then no work need be done on partial solutions whose objective functions are larger than zl. The program which was written stopped work on a partial solution whenever the objective function got larger than such a zl. Partial solutions with large objective functions were removed from storage whenever a new feasible schedule was found. One advantage of the new branch-bound algorithm is that fewer partial solutions have to be investigated than by the Balas enumeration method. If the number, zb (previous page), is set at zero we will not look at any partial solution whose objective function is larger than the optimal solution. This will happen for the Balas enumeration method only in the lucky case where the optimal solution is the first feasible

PAGE 57

43 solution found. Nineteen partial solutions were investigated using the branch-bound method and thirty-four partial solutions were investigated using the Balas method. Some extra work was required in storing and retrieving information for the branch-bound method. It took 4.85 seconds for the computer to solve the problem using branch-bound and 2.89 seconds using Balas enumeration. Balas' enumeration had been compiled to produce only 278 lines of output as compared with 391 lines of output for the newer method. Storage of information and output takes some C.P.U. time. The branch-bound method also required more storage space. 2034 bytes of information had to be in common storage for the branchbound method and 1518 bytes of information had to be in common storage for the other method. Actually one doesn't know how many partial solutions will have to be stored for the branch-bound method. A Solution to the Storage Problem One problem with the branch-bound Just developed earlier is that an enormous number of partial solutions have to be stored in a realistic problem. There is no way, short of solving the problem, to tell how many partial solutions will have to be stored. A large problem might have so many partial solutions that the branch-bound method cannot be used on a particular computer. It is possible to use auxiliary storage devices but retrieval of information becomes slow. On some computers the rate of retrieval of information in core storage is affected by the amount of information stored. A method which has been programmed is to assign a fixed number

PAGE 58

44 of storage locations for partial solutions. As long as. the storage space Is not exceeded, the program uses the branch-bound procedure on a scheduling problem. Once the storage space Is filled the program completes the best partial solution by fathoming and then returns to the branch-bound method until fathoming has to be used again or the problem is solved. The same problem was solved that was solved earlier by two different methods. When we used the branch-bound method storage locations for ten partial solutions had to be used. The problem was run using only the storage space for four partial solutions. When the program had four partial solutions stored it fathomed the partial solution it was working on. Luckily the optimal solution was a result of fathoming this partial solution. 25 partial solutions were investigated as compared to nineteen using pure branch-bound and 34 using pure fathoming. The third solution procedure took 4.19 seconds for 684 lines of output. Optimization Strategies In the latter part of Chapter III we looked at the information available on the effect of adding a variable to a linear programming problem. The value of this information can be evaluated now that we've developed some enumeration techniques. We could use the gradient of the objective function in order to make our scheduling decisions. The gradient is easy to obtain but it does not show how much the objective function will increase if a variable Is added to a linear programming problem.

PAGE 59

45 One can determine how much the objective function Increases when a given variable, L, Is added to the basis. If the objective function will be larger than the objective function for a known schedule then one knows adding L cannot be part of an optimal strategy, In the example of Chapter III we saw how one decision could have multiple effects. We knew that process E had to be completed before process G was begun. This meant that the decision to begin process F before E also meant that F would begin before G. We will frequently encounter multiple batches In chemical scheduling problems. If one schedules a batch E before the first of many batches F then one has scheduled E before all of the batches of F. The multiple effects of one decision should justify the effort of finding how much the objective function Increases when a variable Is added to the basis. Also this lower bound of the objective function makes possible our branch-bound method of enumeration. In the branch-bound method we switched our attention from one partial solution to another. One would like to be able to reproduce a partial solution without having to solve the linear program formed by the variables used In the partial solution. The partial solution can be reproduced If one has the Inverse of the matrix formed from the basis vectors. Storage of an entire matrix for every partial solution Is difficult. One could merely store Information on which vectors were In the basis. Then one has to Invert a matrix In order to reproduce a partial solution. For matrices used In the pure scheduling problem, a simple method for matrix Inversion has been developed In Appendix A.

PAGE 60

46 Tlia«ftnumeration methods developed reduced backtracking by finding the vector which would Increase the objective function the most. This strategy is especially effective if one has a good incumbent solution. Suppose one examines a partial solution and has an Incumbent solution with an objective function of -60. Suppose the partial solution has an objective function of -5. Suppose one has to add three either/or decisions to the partial solution and the effect of adding each vector to the basis is as given below by Figure 13. z =• -60 z = -80 "7 z > -65 Effect of putting vector Al or A2 in basis. -40 -10 f-20 y-5 Effect of putting Effect of putting vector Bl or B2 in vector CI or C2 in basis. basis. Figure 13. A Partial Solution with Three Remaining Either /Or Choices. Our enumeration methods would find that adding vector Al to the basis would cause the objective function to exceed z.. Al would be eliminated from consideration and then A2 could be eliminated for the same reason. No further work would have to be done on the partial solution. Let us look at another example of a partial solution with an incumbent solution.

PAGE 61

47 ^-30 -60 :/-10 Figure 14. A Partial Solution Where Three Either /Or Choices Can Be Made at Once. For the example shown in Figure 14 we would eliminate vector Al from consideration. One need not solve the problem with A2 but could also use the lower bounds on adding Bl and CI to the problem. With vectors Al, Bl, and Cl eliminated, one need only solve the problem with vectors A2, B2, and C2 in order to fathom the partial solution given in Flgure^l4.

PAGE 62

CHAPTER V ENUMERATION OF MIX/SCHEDULING PROBLEMS In Chapters I and II a product mix problem for batches was formulated. In order to solve the batch product mix problem one must decide which batches are to be made and how they should be scheduled. All of the enumeration techniques developed in Chapters III and IV also will be used for solving batch product mix problems. Some additional enumeration techniques are developed in this chapter in order to take into account the special structure of batch product mix problems . In Chapter III scheduling decisions were written as a set of either/or choices. The decisions for batch product mix problems can also be written as a set of either/or choices. Suppose we are to make between two and four batches of a particular type and let x. . be the number of batches to be made.

PAGE 63

49 Since Integer variables can be expressed as either/or choices the techniques of Chapter III can be used for the batch product mix problem. In Chapters III and IV one decision would sometimes have multiple consequences. This feature is also present for variables such as X since the decision to use Equation (40) is inconsistent with the decision to use Equation (43) . Equation (40) also makes Equation (42) redundant. It is obvious that if x^, is greater than an integer n that it is greater than an Integer m if n > m. This fact 13.17 . has been used before in solving integer programs. Actually Trotter used only this fact in addition to the enumeration schemes of Balas and found he could solve the same integer problems faster than with the Balas enumeration scheme. Trotter's programs are written for integer variables so he would have to add integer variables to a problem in order to express either/or choices such as Equations (11). Additional variables make a problem more complex. Our problems are solved in the dual using the revised simplex method. In the dual Equations (40) through (43) would be represented as variables. In the dual, the choice corresponding to Equation (40) will imply that the variables corresponding to Equations (41) through (43) are constrained to zero. By using the revised simplex method, one can ignore any information about variables which are constrained to zero. The batch product mix problem optimizes operations over a fixed time period t. In Chapter II (see Equations (9) and (10) and discussion) we showed that the mathematically correct objective function

PAGE 64

50 could be obtained if the decision not to produce a particular batch is expressed with this particular batch having a starting time of t. It is desirable to have a method where one either/or decision can imply another. This feature is implemented in the optimization methods of Chapters III and IV. If one decision can imply another, it is easy to integrate the scheduling and production rate decisions of batch product mix problems. Since one decision can imply another, one only needs two either/or choices to integrate Equations (40) through (43) with scheduling decisions (44) (45) (46) (47) Equations (44) through (47) together with bounding (0 £ t . _ <^ ^lAA — "^^ exp^ress the equivalent scheduling decisions as the production decisions of Equations (40) through (43). Equation (40) should imply Equation (44) and vice versa since batch 4 of i in J has to be scheduled in the time period if it is to be made. Equations (42) and (46) imply each other since the third batch of i in j is finished before the fourth batch if it is to be made. In Chapter III we struggled with formulating scheduling constraints correctly so that the batch product mix problem could be written as an integer programming problem. The scheduling constraints come from the fact that a batch production unit can only operate on one batch at a time. either/or

PAGE 65

51 For one of the batch product mix problems a product, W, could be made In two separators, S2 and S3. SW2 represented the number of batches of W made In S2 and SW3 represented the number of batches of W made In S3. A batch of S2 produced 12.74 pounds of W and a batch of S3 produced 13. A4 pounds. At least 23 pounds of W were needed over a fixed time period. A simple material balance is given by Equation (48). 12.74 SW2 + 13.44 SW3 >. 23.0 (48) SW2 and SW3 are integer for any feasible product mix since we only consider an integer number of batches. For integers SW2 and SW3 Equation (43) is equivalent to Equation (49). SW2 + SW3 >. 2 (49) Any integer solution which satisfies Equation (49) also satisfies Equation (45). Any integer solution excluded by Equation (45) is also excluded by Equation (49) . Equation (49) was used instead of Equation (48) since Equation (49) can be used to eliminate some either/or choices from consideration. For example if the decision is made that SW2 <_ then Equation (49) will force SW3 >. 2. With SM3 > 2 Equations (50) and (51) can be eliminated from consideration SW3 >. 2 either/or (50) SW3 < 1 SW3 >. 1 either/or (51) SW3 <

PAGE 66

52 Equations similar to (A8) were simplified wherever possible In order to eliminate some either/or choices from consideration. The enumeration schemes were Implemented on a computer and the computer was able to store the Information that the decision SW2 >^ eliminates Equations (50) and (51) from consideration. Storage and retrieval of Information takes time. One has to decide how much effort should be expended In order to eliminate some either/or choices from consideration. Trotter has shown that some effort should be expended to eliminate either /or choices. So far we have only shown how one decision can eliminate some either/or choices from consideration. Sometimes two decisions can imply a third decision. For example, look at Equation (52). D + E + F > 3 (52) If D, E, and F are integers the decisions E <^ and F <^ imply that D >^ 3. In other words, the decision D £ 2 is eliminated from consideration. General programs were written so that any number of decisions could be made to eliminate an either/or choice from consideration. For the smaller of the two example problems formulated, the author tried to find all Instances where one or two decisions would imply a third decision. For the larger of the two problems, the author only tried to find those instances where one decision would imply another. This information is fed into the written computer programs as data. A subprogram could be written to generate this data from equations similar to Equations (48) and (52) . The smaller of the two problems formulated involved producing

PAGE 67

53 and scheduling the same type batches as were scheduled In Chapter IV (see Figure 5). The process Involved two reactors and a separator. Two products, E and F, could be processed In either reactor and then processed through the separator. The batch times and Inventory costs are the same as those given In Table 1. Again we are to optimize operations over a time period of 9.5 but this time we have to decide both how many batches are to be made and how to schedule them. Once more we assumed that there was enough beginning Inventory to feed either a batch of E or F to the separator. Feed for any additional batches In the separator had to be made by the reactors. It Is not too difficult to schedule sufficient Inventory for the second batch of E In the separator. One merely needs constraints to say that one of the batches In the reactor must proceed the second batch In the separator. ^ERll-^3.7< tg32 (53) 'eR21 " ^-2 1 tgS2 (^^> It Is more difficult to schedule the third batch of E In S. The problem assumed two batches had to be produced In a reactor before the second batch could be made In the separator. One really has four choices for producing feed for the third batch of E In S. ^^^^" *^ER11 » 3'^ ^ 'eS3 ^°^ 4r21 + ^-2 1<^ES3 (55) (56) (57) (58)

PAGE 68

54 Feed for the third batch of A could be produced by either the first or second batch of either reactor. Again we need the ability for one decision to Imply another. The solution procedure could not choose both Equations (53) and (55) since the same batch from a reactor could not be used to feed two batches In the separator. Similar equations to Equations (53) through (55) were formulated for chemical B. The costs used In this small batch product mix problem are given In Table 3. A total of 121 equations were written to formulate this fairly simple batch scheduling problem. One hundred of the equations were of the elther/pr type. The optimal schedule and an Interpretation of the results are given In Chapter VI. Table 3. Batch Costs for Sample Batch Product Mix Problem Batch Cost E In Rl 27.0 E in R2 29.0 E In S -197.0 F In Rl 27.0 F In R2 29.0 F In S -243.0 A large batch product mix problem was formulated to Incorporate the features of a realistic chemical engineering problem. The problem Included recycle streams due dates for some materials, different starting Inventories and available time for as many as 20 batches on one machine. The flow sheet for the large batch product mix problem Is given by Figure 15. Information on the batch characteristics and beginning inventories is given by Tables 4 and 5. The inventory costs are the difference between the cost of storing product minus the

PAGE 69

55 Table 4. Batch Characteristics for Large Batch Product Mix Problem

PAGE 70

56 Table 5. Chemical Inventories and Batch Sizes

PAGE 71

57 Table 6. Feasible Schedule Found for Batch Product Mix Problem Batch

PAGE 72

58 cost of storing feed. Operations were to be optimlfsed over a time period of 20. A shipment of 10 units of T<7 was due at 13.0 and a shipment of 13 units of W was due at 20. A shipment of 40 units of H was due at the final time but no additional H could be sold. The author found that it took 548 either /or equations to force the inventory of L positive over the whole time period regardless of how many batches were made. For this reason the author left out the whole time period, some inventory could be constraints to keep inventory positive over The approximation used assumes that bought if needed and resold at the end of the period with negligible cost. Both of the batch product mix problems were solved using the Balas enumeration procedure of Chapter IV. The enumeration procedure works better with a good incumbent solution and the author found a feasible schedule to the large batch product mix schedule. This feasible schedule is given in Table 6. The feasible schedule was used as an incumbent solution which increased the efficiency of the solution procedure. The solution procedure loote for objective functions which were at least $10 better than the incumbent solution. A discussion of results is found in Chapter VI. The results are compared with work by other authors in order to make them more meaningful. This comparison is done in the first section of Chapter VI.

PAGE 73

Process 1 59 Rl or R2 SI or S2 Process 2

PAGE 74

CHAPTER VI RESULTS, CONCLUSIONS, AND RECOMMENDATIONS The purpose of this work was to find a method of scheduling batch chemical operations. The method found takes large amounts of computer time If one wants to find optimal schedules for normal sized chemical scheduling problems. The method can find near optimal solutions with a moderate amount of computing time and has the advantage that the limit of suboptlmallty Is expressed In dollars. That Is the program can find a solution such that the objective function Is within at least a certain number of dollars of being the optimal solution. Solution Efficiency The quality of the new scheduling method can be seen by comparing results with other methods of solving discrete optlmzatlon problems. Table 7 shows published results of solving Integer programming problems by a number of methods. As mentioned earlier, Trotter uses the Bales enumeration method but reduces the size of the problem by using integer variables Instead of 0-1 variables. Trotter reduces the size of a problem by realizing that x >_ 4 Implies x >_ 3,2.... Our program can do that in addition to reducing the size of a problem by other methods. Trotter's programs only solve problems where all of the variables are Integer. These problems are simpler than scheduling problems because there is a method of solving pure Integer problems without using linear programming. One has to check each constraint for feasibility and use a method which guarantees feasibility while optimizing the problem. 60

PAGE 75

61 CO CNj m -* o\ 00 00 * iH VO CM «* VO lO iH in CM rH OO o •^ o vo vo «o ro m sf oj ^x) t-~ n mm vD u

PAGE 76

62 Trotter uses more than one method to optimize his problem and the best and worst results are listed in the table. Trotter's solution methods are highly dependent on how many constraints are present and he did not solve a problem with as many constraints as two of our problems. Trotter used a CDC 6600 computer for his programs, 18 Shareshian has presented a program to solve mixed integer problems by the branch-bound method. Unfortunately the program was only for some pure integer problems. Shareshian 's results look comparable to ours except for the number of constraints and the way the problems are formulated. In Chapters III, IV and V we found a method of formulating decisions as either/or choices without using 0-1 variables. Every solution method listed on Table 7 except the method of Greenberg would have to use these 0-1 variables. For the other methods our example problem would have 16 (8 + 8) variables. Problem 2 would have 55 (21 + 34) variables and Problem 3 would have 363 (93 + 270) variables. Both Shareshian 's work and this work solve a number of linear programs in the dual. The difficulty of solving these problems is proportional to the number of variables in the primal. Shareshian 's results were calculated on an IBM 360/50 computer. Shareshian's program would also have to add an additional set of variables to integrate production decisions with the scheduling decisions of the second and third sample problems. In Chapter II we first saw that some scheduling decisions do not apply if one decides not to make the batches scheduled. It would take 32 additional variables to write the second sample problem for a normal integer

PAGE 77

63 programming algorithm and 116 additional variables to write the third problem. Shareahian's test problems were solved on an IBM 360/50. 19 Dtiebeck developed an algorithm for mixed integer problems that is somewhat similar to the method developed here. Driebeck uses a lower bound on the cost of making a decision and uses this bound to determine his solution strategy. Driebeck also has to solve a new linear programming problem at each iteration as we did. Driebeck's method does have a very bad flaw. Driebeck uses a table which initially contains information on every possible integer solution. Driebeck's SAO table has a vector for each integer solution. The 2 vectors necessary for our third sample problem would certainly be too much for any present day computer to handle. 1 ft Greenberg was the only other author found who also realized that 0-1 variables are unnecessary for scheduling problems. Greenberg 's results do not look very good because he used a random method of adding constraints to a problem and he did not take advantage of the structure of the problem as this author did. Greenberg used a G.E. 265 TimeSharing System. 20 Dzielinski found a method of approximating a restricted class of scheduling problems by a linear program. Dzielinski formed a linear program which contained a cost and set of constraints for every possible schedule. Dzielinski, like Greenberg, would run into serious problems with a scheduling problem like sample problems two and three. Dzielinski did not write all his constraints but used the decomposition principle to handle the problem. Dzielinski 's iterations are each simple linear programming iterations but he has to perform a huge

PAGE 78

64 number of Iterations to solve the program. Dzlellnskl used an IBM 7090 computer. 21 Trauth solves some pure Integer programming problems using several cutting plane methods. His best and worst results are listed for several problems. His best solution times were on a CDC 3600 computer and the worst were on an IBM 7090 machine. All of the author's work was done on Results an IBM 360/65. The results given In Table 7 Indicate that the method developed here for solving scheduling problems Is a better method than other Integer programming techniques. Unfortunately most of the work on Integer problems has been on problems of the size of our second sample problem and realistic chertlcal engineering problems are at least the size of the third sample problem. The reader should remember that only eight extra 0-1 variables will Increase the number of Integer solutions by more than one hundred If all the solutions are feasible. The optimal schedule for the small batch scheduling problem described In Chapter IV Is given by Table 8. There are several interesting features of this schedule. For one thing one should note that the product mix result is to produce two batches of each type In the separator. The operating units could produce more F and less E which Is more profitable, If there were no Inventory costs. A batch product mix problem would get the wrong answer If It Ignored inventory costs.

PAGE 79

65 Table 8. Optimal Product Mix and Schedule for Sample Problem 2 Chemical

PAGE 80

66 Table 9. Schedule for Two Time Periods Chemical

PAGE 81

67 periods. The schedule would only have a 1% slack time in the separator. There is no easy way to account for the inventory needs of a future period when optimizing operations over an earlier period. One could form a scheduling problem and use slack time by giving some value to producing intermediate inventory during this slack time. The optimization techniques of this paper could solve such a problem. The difficulty lies in assigning a value for Intermediate inventory. Actually it costs to store intermediate Inventory and creation of Intermediate inventory is the wrong policy if there is no need for it in the future. Unfortunately the author did not have enough computer time to solve the large batch scheduling problem of Chapter V. The author attempted to find a schedule that was within $10 of being the optimal schedule. This objective turned out to be very difficult to achieve. If one looks at Tables 4 and 5, $10 may seem like a strong constraint on the solution when some batches are worth over $2000. The author chose $10 because some batches only cost $.70 an hour to store in Inventory. Two weeks was spent finding a schedule for the third sample problem. The schedule that was found made a profit of $4925 which can be compared to the optimal profit of $8500 for the continuous solution. The computer looked for solutions with profits above $4935 and found a schedule with $5449 profit after 22 minutes of work. The computer found another schedule that made $5464 after twenty-seven minutes of computing. The machine had not found a schedule with a profit

PAGE 82

68 of more than $5474 after 90 minutes of computing. The author spent 28 more minutes of computer time trying to prove there was a schedule with an objective function value of at least $5964 ($5464 + $500). The author proved that there was no solution with an objective function value as great as $6964 ($5464 + $1500) by spending an additional 57 minutes of computing time. All computing was done with an IBM 360/65 computer. Perhaps the branch-bound method would have proved better for solving the large scheduling problem. For the smaller problem of Chapter IV, branch-bound used more computer time than the Balas enumeration method. Perhaps branch-bound is the best method for larger problems. Of course, now it is easy to see that we should have started with an objective which was easier to obtain than getting within $10 of the optimal solution. The strategy was tested by starting the program over with the objective of getting to within $500 of the optimal schedule. The algorithm first eliminated a decision because of high costs after 17 iterations. With an objective of getting within $10 of the optimal solution the computer did not eliminate a prior decision until after the thirty-third iteration. Since there were 270 decisions to be made eliminating a decision after 17 decisions eliminates 2^^^'^^ possible schedules and waiting until the thirty-third decision 270-33 eliminates 2 schedules. There is another method of improving the efficiency of the solution procedure. Today's computers cannot look at 2^^° possible schedules in any reasonable length of time. This solution procedure was

PAGE 83

69 developed so that a large number of schedules could be eliminated from consideration. The cases were found where one or more decisions implied other decisions and this was included as input data to the computer. Needless to say the last sample problem was too complex for one person to find all the cases where one or more decisions imply other decisions. However, one could write a computer program to find this information. The author found a number of cases where one decision would imply another and gave this information to the machine. If the machine had more information then the solution would probably have been obtained more quickly. One set of poor decisions is seen in Table 10. The computer made these decisions while trying to find the first schedule. Table 10. A Set of Scheduling Decisions

PAGE 84

70 decisions was that there was only enough chemical L produced by process 1 to feed two batches of the separator. Two batches In the separator did not create enough feed for the third process. The computer spent over eight minutes backtracking and fathoming In order to discover the last erroneous decision. Since computer time was at a premium the author gave the computer the Information that the last, erroneous decision was the decision to make only one batch In reactor 2 of process 1. The reader should note that eight out of the twenty-two minutes spent in finding the solution was spent in finding information that could have been fed into the machine as data. The author did not attempt to find other poor decisions due to a lack of data but it is probable that other poor decisions were made. The best schedule found by the computer is given in Table 11. This may not be the optimal schedule but it is better than one found with much difficulty by hand. The reader should note that, as before, we have a schedule which makes some inexpensive product (Process 5) . Process 5 also makes some recycle. Conclusions and Recommendations The solution method was developed to solve scheduling problems more efficiently than other Integer programming methods. The efficiency of solution method depended on information about the consequences of decisions. This information proved very important and future work should Involve systematic methods of generating this information. The solution method had some difficulty solving a realistically

PAGE 85

71 Table 11. Best Schedule Found for Sample Problem 3 Process

PAGE 86

72 sized chemical batch scheduling problem. A fairly good schedule could be obtained with a limited amount of computer time. Future work should be Involved with solving realistically sized problems Instead of the small problems, which were the focus of attention In the past. Of Interest to chemical engineers Is the result that some batch product mix problems should produce a wider variety of products than they would If Inventory costs were not included. It Is also of Interest to note that scheduling considerations cause a moderate amount of slack time chemical batch units. In the past, one might have supposed that this was due to poor performance by chemical operators. Also, obviously of interest is the fact that we now have a method of determining both how many batches should be produced and how they should be scheduled.

PAGE 87

APPENDICES

PAGE 88

APPENDIX A THE INVERSE MATRIX FOR PURE SCHEDULING PROBLEMS The branch bound enumeration method of Chapter IV Involved the storage and retrieval of a number of partial solutions to the optimization problem. Since the revised simplex method is used, an inverse matrix, B~ , is needed in order to reproduce partial solutions, The matrix, B, to be Inverted (see Equation (24)) is made up of columns of the matrix A' which defines the dual problem. It is easier to store information on which columns of A* define B than it is to store the entire matrix B~ . The branch-bound algorithm developed here stores Information on which columns define B and then invert the matrix B. Matrix inversion is normally fairly difficult but a simple method is developed here for inversion of the matrix B found in pure scheduling problems. We will first use the method to invert a matrix formed from the first, third and fifth columns of the matrix A' in Equation (21). B 0-11 0-1 -110 (59) The third component of the first row of B must be -1 since the first row of B~ times the first column of B must give 1. Thus we know one component of B . 74

PAGE 89

75 „-l -1 11 -1 21 -1 31 -1 -1 12 -1 22 -1 32 -1 -1 B B (60) Since the first row of b" times the second column of B must give zero, the first component of the first row of B must be a minus one. -1 -1 „-l B '21 -1 '31 -1 -1 12 -1 -1 „-l 22 -1 32 (61) Since the first row of b" times the third column of B must equal zero, B.must be -1. bZz equals zero because the second row of B times the first row yields 0. B~^ equals -1 because the second row of B times the second column of B yields one. B23 must equal -1 since the second row of b" times the third row of B equals 0. Similar arguments can be made for the values for the third row of B . -1 -1 -1 -1 -1 -1 0-10 (62) A good deal of work is involved in inverting this matrix but no more work is involved in finding the first three rows of a much larger inverse matrix.

PAGE 90

76

PAGE 91

77 t^^ d dual such A'w <^ c problem that t > problem that w >^ (20) where A includes some set of constraints like Equations (60) . We are going to use the revised simplex method of solving the dual problem. First, we will write the dual in Equation (67). max d'w -10... '^1 "1 such * 0-10.... W W^n te.n\ ^. A » c > (67) that ... w, w, — ... 1 If the matrix in Equation (67) has m rows we will be using m linearly independent columns of Equation (67) at a time. These m columns form a basis matrix B. It will be helpful to know the structure of B~ . Each column of B has one of the forms given by Figure 16.

PAGE 92

78 : : \ 6 : /"^ 1 °' -1 -1 : : : : Figure 16. Three Possible Forms for Columns of B. A simplified notation will be used in the following analysis. A column of B with all zeros expect a one in the ith row will be written as e,. A row of B with all zeros except a one in the ith column will also be written as e . When a proof is given which will hold for e^ or -e. the notation (±)e. will be used. The notation (-) (+) + e^ e means that discussion is valid for either e e or -e^ + ej. Proof 1 The vectors e -e ,e -e ,...,e -e ,e -e 0, o,' o„ a* o 1 o * o a, 12 2 3 n-1 n n 1 are linearly dependent. This can be seen to be true because they can be added together to give 0. Proof 2 (-) (+) (-) (+) (-) (+) (-) (+) The vectors +e -e,+ e -e,...,+ e -e. '1 "2 "2 "3 "n-1 + e e are linearly dependent, n 1

PAGE 93

79 If we multiply each of these vectors by a plus or minus one, (-) (+) we will have a vector of Proof 1. Let x, = + e e , J. °1 2 (-)(+) X + e e , etc. By Proof 1 we thus have constants a. (all plus or minus one) such that I a.x. 0. By definition the vectors i"l are dependent. In the following we will be using some proofs and terminology of graph theory. The proofs will be given in terms of our system and hopefully the proofs will be easier to follow when presented in this Definition Among the columns of B we will have a path between e and °1 e if there are n columns of B of the form n-1 (-) (+) (-) (+) (-) (+) + e -e,+ e -e,...,+ e„-e '^l °2 °2 ^3 '^n Vl Definition The path between the vectors of P-2 will be said to form a loop, since there is a path between e and itself. Proof 3 Suppose we have a set S, of columns of B of the form; (-) (+) + e e . Suppose that there is no loop formed by members of °± °i this set. Suppose further that in this set, S, there is no path (-) (+) between e and e .We may add the column + e„ e« to the set S and still not have any loops.

PAGE 94

80 There Is no path between e and e in the set S. Thus (-) (+) °k °£ with the addition of + e e to S there will only be one path between e and e and neither e nor e can be part of any loop % ^£ % 'I In the new set. Any path not involving e or e will not be affected by the new addition to S. Definition Suppose we have a set, S, of columns of B of the form; (+) (-) e + e . A unit vector, e , found in the set will be called an ^ ^ (-) (+) extreme point of S if it is only found in one column, + e e , of S. Proof 4 (+) (-) Any set, S, of columns of B of the form; e + e , I j without a loop, has an extreme point. Suppose n unit vectors, e , are used in the set S. Choose any vector e , , used in the set. Either e , is an extreme point of the set or it is not. If e , is an extreme point we are finished. If "2 e I is not an extreme point we can find two columns of S of the form '^ 2 (-) (+) (-) (+) +e, -e,,+e, -e,. Either e , is an extreme point of ° 1 ° 2 ^2 ^3 °3 the set or it is not. Suppose we have found Z.-1 members of the set (-) (+) (-) (+) (-) (+) of the form; + e , e , , + e , e ,,..., + e , e , °1 °2 "^ 2 ° 3 ° l-l ° I where e , through e , are not extreme points. Since e , is not ° 2 "^ I ° I (-) (+) an extreme point there must be column of S of the form + e , e , ° I ° £+1

PAGE 95

81 e , cannot belong to the set e„i , e^, ,...,e , or we would form ° l+l ° 1 ° 2 ° £ a loop. Suppose we eventually find that S consists of a path through n vectors without forming a loop and e , through e , are not ° 2 n-1 (-) (-) (-) extreme points. We would have the columns, + e , + e , , + e , ° 1 ^2 2 (+) (-) (+) e , + e , e^, , and e^, through e^, are the only ^3 ° n-1 n 1 n unit vectors forming the set. If we have another column of the set (-) (+) of the form; + e , e , , we will have a loop. There will thus ° n ° -i^ (-)(+) be only one column of S of the form, + e , e^, , and e^, is n -t n an extreme point. Proof 5 (-) (+) No more than n-1 independent vectors of the form + e ~ ®a can be formed from n unit vectors e . Now Proof 4 is true for n-2 because there can be only one (-) (+) independent vector of type + e e . Suppose Proof 4 is true °1 °2 for n"£. Suppose we have a set S, of independent vectors of form (-) (+) + e e formed from l+l vectors e.. From Proof 2 the vectors, (-) (+) + e e , , of S cannot be independent if there is a loop. From Proof 3, if there is no loop, there must be an extreme point, e^ . (-) (+) ^ Elimination of the vector + e e„ from the set S will create a °l \ set formed from only I unit vectors e , iji'k, which can have at most (-) (+) I . t-1 vectors of the form + e e . Our set formed from '«-+l unit 'I 'j vectors must therefore have at most (£-1) + 1 •* I vectors. Q.E.D.

PAGE 96

82 Proof 6 If B has a column of the form e , e , , then there must ° 1 ° 2 be a path between either e , or e , and some vector e , where (+) a column of B is of the form e^, . n For this proof one has to remember that B has m rows and m (+) (-) (+) Independent columns which are either of the form e, or + e. e . , Proof 5 will be proved by contradiction. We will prove that if Proof 5 were false then the columns of B would be linearly dependent. Suppose B has a column of the form e , e , and let S ° 1 '^ 2 be the set of all vectors e , where there is either a path between^ ° i e . and e , or a path between e i and e , . Suppose Proof 5 is o' o' ^ o ° 2 i 1 i 2 (^^ false. Then there is no column of B of the form e , where e , " i i is a member of S. Let S be the set of all columns of B of the form c (-) (+) + e , e , where e , and e , are in S. Let n be the number ° i: '^ J " i ' i of vectors, e , , in S and n be the number of columns of B in S . ' ' c c Either n < n or n > n. c c — If n < n then the m n columns of B which are not in S c c c are generated by the m-n vectors e. which are not in S. There are m unit vectors e. in the vector space we are working with. The m-n columns of B which are not in S are generated by the c c m-n vectors, e , , which are not in S. By Proof 5 if n >^ n then the columns of S are dependent. If n < n then the m-n columns of B which are not in S are c c c dependent because there are generated by only m-n vectors e.. Q.E.D.

PAGE 97

83 Proof 7 (+) (-) (+) If the columns of B were of the form e , + e e , » a a* (-) (+) (-) (+) (-) 11/ +e -e,...,+e -e,+e they would be linearly 0a_ a a 2 3 n-1 n n dependent. Here we have n+1 columns of B generated by n unit vectors. No more than n Independent columns can be generated by n unit vectors so we have that these n+1 columns must be dependent. Generation of the Inverse Matrix Now that we have shown the characteristics of B if it bias independent columns, it is not too hard to deduce the properties of -1 -1 r B . We can write each row of B as 2. "^^i* The inverse matrix will be generated one row at a time. The characteristics of the Jth row of B depend on the characteristics of the Jth column of B. A column of B can have either one or two nonzero components and we will see how to generate a row, j, of B depending on the properties of the corresponding jth column of B. The jth Column of B Has Two Nonzero Components Here the jth column of B, b , , is given by Equation (63) and we want to find the j th row of B . (-) (+) b, + e e(68) j a 6 First we find all of the vectors, e , , where the columns of '^ i B form a path between e , and e . By Proof 6 there is a column, k, (+) ° i " of B of the form e , . By Proof 7 there is only one such column, k. k

PAGE 98

84 The jth row of b"''", b" is given by Equation (66) since the jth row of B~ times the kth row of B must be zero. bT^y v,e, (69) l?o^ Next we find the path between e and e . There can be two k types of paths, PI and P2, between an extreme point and e^. These two types of paths are given by Equations (70) and (71). (+) (-) (+) (-) (+) (-) Pie , + e^ e^ . + e^ e^ + e^ X X Xj^ x^ X2 x^ (+) (-) (+) e , + e e. (70) a' a (+) (-) (+) (-) (+) (-) P2e . + e^ e^ . + e^ e^ ..... + e^ X X x^ ''l ^^2 ''n (+) (-) (+) If the extreme point e of Equation (69) belongs to a path of type PI then y. (Equation (69)) Is zero If e^ belongs to a path of type (+) PI and Yj^ is 1 If e^ belongs to a path of type P2. If the extreme point e of Equation (69) belongs to a path of type P2 then y. Is \ (+) ^ zero If e. belongs to a path of type P2 and y^ Is 1 If e^ belongs to a path of type PI. y. Is zero If e. does not belong to a path of type PI or P2. The jth Column of B Has One Nonzero Component , Here the jth column of B, b , Is given by Equation (67) and

PAGE 99

85 we want to find the jth row of B . (+) bj = e^ (72) Since the jth row of B times the jth column of B is one, the jth row of B~ , b~ , Is given by Equation (68). 1 <+> b, = e + y Y.e, (73) J a .i '1 1 The vector e may be an extreme point of one or more paths, P, formed by the columns of B. If a vector e is part of any such path P (Equation (74)), then y of Equation (73) must be 1 °1 since the jth row of B times any column 1/fej of B must yield zero. If__ a vector, e, , does not belong to any path given by Equation (74) then Yi^ of Equation (63) must be zero. (-) (+) (-) (+) (-) (+) P= + e^ e ,+ e e ,...,+ e -e (74) 112 n-1 n The Inversion procedure developed earlier has to find paths among the columns of B. One needs to find the nonzero components of B In order to find these paths. The programs described later store the location of nonzero components of the columns which make up B. The programs also store the value of the nonzero components. Since the columns have few nonzero components It Is easier to store their locations and values than It Is to store the entire matrix B. We have a fairly easy method of generating each row of B merely by knowing the structure of B. Therefore, we can store which columns of A' are used In a matrix B and Invert B In order to obtain B

PAGE 100

APPENDIX B PROGRAMS The solution procedures developed earlier were Implemented In the Fortran language. The programs used are given in this section. The Balas enumeration procedure is implemented by subprogram FATHOM. The branch-bound enumeration procedure is implemented by subprogram BRANCH. Subprogram LINEAR performs the linear programming for both enumeration procedures and subprogram COST calculates the cost of freeing a variable for both enumeration procedures. Both enumeration procedures diminish the size of a problem as a consequence of one decision implying another. Subroutine FATHOM uses subroutine DEMINF and subprogram BRANCH uses subprogram DEMIN. Flow charts are given for the first few subprograms. Listings are given for the other subprograms. A reader who is interested in understanding and using the programs should first read the description of the flow charts. The major variables are found in these flow charts. Hopefully the flow charts will be useful to future programmers. 86

PAGE 101

87 Subroutine PIVOT PIVOT is used along with subroutine LINEAR to solve linear programming problems by the revised simplex method. The revised simplex method solves linear programs by moving from one feasible extreme point to another. We will be solving a linear maximization problem with M constraints and IN variables. An extreme point is characterized by IN-M of the variables having a value of zero. The M nonzero variables are called basis variables. One should remember that we are solving the dual of a scheduling problem and that a number of dual variables are constrained to zero and will never be candidates to enter the basis. The free variables will have nonzero values when they are in the basis. The dual linear programming problem is given by Equation (75).

PAGE 102

88 BIta3^.A32.....a3„]-^ (76) Bl Is a vector caused by multiplying costs for the basis variables' times BI. [B1(1),B1(2),...,B1(M)] IC^gjj.C^g2)""'C(BM)^^^ ^''^^ PIVOT generates new values for BI and Bl when a new variable Is put In the basis. The variable K Is to be taken out of the basis and the new variable, n, Is to be put In the basis and the variable Y expresses a In terms of the basis vectors a„.. The program only needs the vector Y given by Equation (78) to calculate the new feasible solution. I a3,Y(i) = a^ (78) 1=1 It can be shown that the formula for the K-th row of the new matrix BI Is given by Equation (79). BKK.J)^^^ = BI(K,j)^^^/Y(K) All j (79) All other rows of BI satisfy Equation (80) . ^^<^'J>new " «^<^'J^ld YW ^^<'^'J> («0^ all 1,J 1 ?« K The formula for the new values of Bl Is given by Equation (81) .

PAGE 103

89 f START j D-ZJCJ/Y(K) I 1 B1(I) Bi(I) -D*BI(K,I) I 1 A Kl » K-1 D-Y(I)/Y(K) J =» 1 BI(I,J)-BI(I,J) -D*B(K,J) Figure 17. Flow Sheet for Subroutine PIVOT.

PAGE 104

90 ZJCJ is a number fed to PIVOT from LINEAR. The formula for ZJCJ is given by Equation (82) . ZJCJ " CC(n) + IB1(1),B1(2),...,B1(M)] a(n) (82) PIVOT merely calculates new values of BI and Bl by means of Equations (79), (80) and (81). Subroutine LINEAR Subroutine LINEAR solves linear maximization problems by means of the revised simplex method. The maximization problems come from the dual batch scheduling problems of Chapters II-V. The maximization problems involved will always have IN variables but a subset of these variables will be constrained to zero. A vector, IX, of logical variables indicates which variables are constrained to zero. IX(i) » .FALSE, indicates variable i is not a candidate to enter the basis. Thus if IX(i) = .FALSE, and variable i is not in the basis variable i must be constrained to zero. The subprogram stores the columns of the original constraint matrix (columns a. of Equation (75)) in a compact manner in matrix AA. AA(l,j) j=l,...,IN is the number of nonzero components of the jth column of the constraint matrix. If a column j has n. nonzero components then AA(2,j) through AA(n + l,j) give the location of these nonzero components. The corresponding values of the nonzero components are found in the list AA(n + 2,j) through AA(2n. + l,j).

PAGE 105

91 Iteration Loop 17 Iteration Loop 17 finds the free variable (I.e., variable not constrained to zero) which should enter the basis. The variable which has the most negative value of ZJCJ defined in Equation (82) is chosen to be put in the basis. ZJCJ is actually a derivative of the objective function as one moves along an "edge" of the constraint set from one extreme point to another. Hadley gives some reasons for using ZJCJ in order to make decisions. For one thing, it doesn't take much work to find ZJCJ compared to other information one could calculate. If a variable, II, is free and not in the basis (indicated by IX(Il) « .true.), ZJCJ is calculated by Equation (77). Nl AA(1,I1) + 1 is the number of nonzero terms in column II of the original constraint matrix. For each 2 _< I £ Nl, N2 «> AA(I,I1) is the location of a nonzero component of column II of the constraint matrix and the value of the nonzero component is AA(I + Nl-1, II). Iteration loop 17 finds ZJCJ for each free variable II and stores the most negative value of ZJCJ in the storage location ZJOPT. Variable L3 will be the free variable with the most negative value of ZJCJ. If there is no variable with a negative ZJCJ we go to 10, otherwise we proceed to iteration loop 7. Iteration Loop 7 Iteration loop 17 decides that variable L3 should be put in the basis. The purpose of Iteration loop 7 is to calculate the vector

PAGE 106

92 Figure 18. Flow Sheet for Subroutine LINEAR.

PAGE 107

93 X(I) X(I) Y(I)*D DE=X(I)/Y(I) D = DE Figure 18. (Continued).

PAGE 108

9A I-IXl(K) IX(1)-.TRUE. E (K) L3 r IX (L3)=. FALSE. r PIVOT J Figure 18. (Continued).

PAGE 109

95 Y for vector L3. Equation (24) gives a formula for Y. \3 " «\3 <2A) Iteration loop 7 calculates Y using Equation (83). since we have the inverse matrix, BI, BIaL3 " ^^^\3 ^«3> Bla -> Y '*^^L3 ^L3 Iteration loop 7 finds the nonzero components of a^ by using the compact matrix AA. Iteration loop 7 multiplies rows of BI times the column a., in the same manner thoJ^ iteration loop 17 multiplies the vector BI times the columns a^. Iteration Loop 8 Iteration loop 8 finds a positive component of the vector Y. If there is no positive component then our problem has an unbounded solution. Control is transferred to the calling program with M3 « 1, M3 1 indicates the solution is unbounded. The location of the vector which caused the unbounded solution is given by M4. Iteration Loop 9 Iteration loop 9 finds the variable K which is to be taken out of the basis. Each basis variable, I, has a value of X(I) in the current solution to the linear programming problem. K is found by Equation (84).

PAGE 110

96 Y(K)" fm" ^°^ ^^^ ^ ^^^^ ^^^^ ^^^^ ° ^^^^ Iteration loop 9 finds K by Equation (84) which assures that the next solution will be feasible. D Is defined as X(K)/Y(K) and the new value of the objective function, Z, Is given by Equation (85). Z Z , D X ZJCJ (85) new old ^ ' INC, if true, Indicates there Is an Incumbent solution (Chapters III and IV) with objective function ZI, ZE is an error estimate for Z and if Z is larger than ZI + ZE control is transferred new to the calling program since the solution to the current linear program will not be better (have a smaller objective function) than the incumbent solution. Iteration Loop 91 Iteration loop 91 calculates new values of X by Equations (86) and (87) ^^^'new " ^^^^Id Y<^>*° ^-^^ <86) ^^^^new " ^('^>old/^(^> (87) = D = X(K) + D X(K) = X(K) + D Y(K) X D

PAGE 111

97 Control Point 100 IXl is a vector which indicates which variables are in the basis. When control of the program is transferred to 100, variable 1X1 (K) is to be taken out of the basis and variable L3 is to be put in the basis in the new solution. We need to set IX(I) .TRUE, for the variable I to be taken out of the basis and s t IX(L3) »> .FALSE. 1X1 (K) is given its new value of L3. Control Point 10 Transfer of control to 10 indicates the subprogram has solved its linear programming problem and control is then transferred to the calling program. Subroutine DEMINF In the sample problem of Chapter III we first encountered the phenomenon where one decision could imply another. In Chapters IV and V we found other instances where a set of decisions could imply another set of decisions. DEMINF finds relations between decisions by means of data stored in a tensor KB. Iteration Loop 1 DEMINF is called when a new decision is made by the program FATHOM. FATHOM uses the Balas enumeration method to solve scheduling problems. A parameter, Nl, is fed to DEMINF from FATHOM. If a set of Nl decisions have been made in the past then DEMINF can reduce the amount of enumeration necessary in the future.

PAGE 112

98 f START j I I LOl •=« Nl+3 Ml «« I 1 I = Nl+3 I = Nl + 2 LF(1) J J»LF(1) +1—1 1X0(1 + NBM) .FALSE. "^-l 8 LF(J) -I Figure 19. Flow Chart for Subroutine DEMINF.

PAGE 113

99 IX0(L03) .FALSE. IXO(L03 + NBM) = .FALSE. J = LF(1)+1 IXO(L03) .FALSE. LOS = KB(N1.N2.J) LF(J) »-L03 LF(1) J I J-LF(1)+1 IXB(L03) = .TRUE. I LIST1(J)=.L03 LISTl(l) = J IXB(L03 + NBM) = .TRUE. IX(L03 + NBM) = .TRUE. I J=LIST1(1)+1 IX(L03) = .TRUE. L03 = -L03 Figure 19 . (Continued) .

PAGE 114

100 II = KB(N1.N2.I+1) IXB(L03) .FALSE. Figure 19. (Continued).

PAGE 115

101 Figure 19. (Continued).

PAGE 116

102 II KB(N1 .N2,I) I Jl IMP(I1,1) J1-IMP(I1 i 3 J = 2 L=IMP(I1,J) J = Jl+1 L = L07 L03 L03=IMP(I1,J) J = Jl

PAGE 117

103 As In Chapter III and later, decisions are made In the dual by either constraining a variable to zero or allowing the variable to take on any positive value. In the description of subroutine LINEAR we saw how IX(I) » .TRUE, indicates variable I is not constrained to zero. If variable I is free this means that constraint I of the primal problem is satisfied. The vector IX cannot be used to tell which constraints of the original primal problem are not satisfied. In Chapter V (Equation (40) and following) we saw that x , . >_ 4 implied x. . >^ 2. In the dual the variable corresponding to x, , ^ A is freed and the variable corresponding to x,. >_ 2 is constrained to zero (IX(I) = .FALSE). The variable corresponding to x. 2L ^ adds nothing to the problem since the original constraint is redundant. Even though IX(I) •> .FALSE, for the variable in the dual, the original constraint is satisfied. The programs indicate that a constraint I is not satisfied in the primal by setting IXB(I) •> .FALSE. Iteration loop 1 merely finds if a set of Ml constraints are satisfied in the primal. If any member of the set is not satisfied the DEMINF returns control to the calling program, otherwise DEMINF proceeds to reduce the size of the enumeration problem since some decisions are implied by the Nl decisions made in the past. Control Point 4 DEMINF is usually called when an either/or variable is freed. When one member of an either/or set is freed then the other member must be constrained to zero.

PAGE 118

lOA When an either/or variable is freed during some stage of enumeration then the variable, I, which has to be constrained to zero is located by I KB(N1,N2,N1+1) . If variable I has already been freed for some reason then there is some sort of error and control is returned to the calling program. The error is indicated to the calling program by setting a parameter Ml equal to one. Flow of Control from Point 5 to Point 8 If I «» KB(N1,N2,N1+1) at control point 5 then control is transferred to control point 8. If I is nonzero then I is an either/or variable which must be constrained to zero. IX (I) .TRUE, would indicate variable I was freed earlier and Ml-1 would indicate to the calling program that there is an error. If a variable I = KB(N1,N2,NH-1) is to be constrained to zero for the current branch ^f a tree we indicate this by setting 1X0(1) «» .FALSE. In Chapter V (Equations (4) through (48)) we saw how variables had to be scheduled if they were made. Variables one through NBM represent decisions to produce batches and the next NBM variables represent the corresponding decisions to schedule them. If I is a variable representing a production decision (I <^ NBM) we must make the production decision (1X0(1) «> .FALSE.) and the corresponding scheduling decision (1X0(1 + NBM) = .FALSE.) simultaneously. In Figures (7) through (9) of Chapter IV we saw how a list of numbers could indicate the state of the Balas enumeration procedure. The list of numbers is maintained in a vector LF. LF(1) locates the

PAGE 119

105 last number in the list. The number -I is added to LF to indicate a decision has been made about variable I and the opposite decision has been eliminated from consideration. Control Point 8 The reader should have noted that DEMINF uses information from the list KB(N1,N2,1), KB(N1,N2,2), KB(N1,N2,3), There are five types of information in the list. The first type of information is handled by iteration loop 1. The second type of information is handled from iteration loop 1 to control point 8. The third type of information is handled by the operations between control point 8 and control point 20. The third type of information reduces the number of decisions which have to be made about how many batches should be produced. One may not be able to reduce the amount of work on these types of decisions. If KB(Nl,N2,Nl+2) = then DEMINF will not be concerned with variables which express decisions about the number of batches to be produced and control is transferred to control point 20. Iteration Loop 2 Iteration loop 2 is concerned with pairs of either/or variables which represent decisions about how many batches should be produced. Iteration loop 2 reads pairs of numbers from the tensor KB. The first number, L03, from each pair of numbers represents a variable that is constrained to zero. If variable L03 is free (IX(L03) => .TRUE.), there is an error and control is transferred to control point 4.

PAGE 120

106 I£ IX0(L03) Is falsei variable L03 has already been constrained to zero and we look at the next pair of variables In Iteration loop 2. Otherwise we set IX0(L03) and IX0(L03 + NBM) false. -L03 is added to the list LF since the enumeration scheme need never look at freeing variable L03 on this branch of the tree. The second variable of each either /or set could be set free. This may not be necessary since the corresponding constraint might be redundant. For example, if the decision is made that x >^ A in the primal then the dual variable corresponding to x > 3 is redundant and can be constrained to zero. Redundancy is indicated by the sign of the number stored in KB. Even though we might not need to use the constraint x, . >^ 3 we still need to schedule the third batch of 1 in j so the proper members of IX and IXB are set true. The location of the second variable of each either/or set is added to LF as a negative number just as the location of the first variable was added to LF. The location of the second variable of the either/or set has to be added to the vector LIST 1. LIST 1 is used by FATHOM to reduce enumeration still further. An example of this is that x , >^ 4 will imply X >_ 3. The variable corresponding to x. > 3 will be added to LIST 1. FATHOM will use this number to call DEMINF later and find that X. . >_ 2 is implied by x, >^ 3. Control Point 20 Between control point 8 and control point 20 subprogram DEMINF

PAGE 121

107 diminishes the enumeration by making decisions on how many batches should be produced. Between control point 20 and control point 30 the subprogram makes decisions about how batches should be scheduled. Again the storage location L02 finds decisions which are Implied by other decisions. If L02 is zero then no decisions can be made about scheduling batches and control is transferred to control point 30. Iteration Loop 19 Iteration loop 19 starts with control point 91. After control point 91 we store a number in storage location L03. L03 is a variable which is to be constrained to zero as a consequence of the decisions the subprogram looked at in loop 1. IX(L03) = .TRUE, would indicate variable L03 is currently not constrained to zero and control should be transferred to point A. If variable L03 is already constrained to zero (IXB(L03) = .FALSE.), we look for other variables in loop 19. Normally IX(L03) and IXB(L03) are set false to indicate variable L03 is constrained to zero. -L03 is added to the list LF to indicate one need not consider variable L03 having any value but zero on this stage of the enumeration procedure. Control Point 13 Variable L03 Is a member of a set of either/or variables. Variable L03 will be constrained to zero and variable L04 indicates whether the other variables of the either/or set are redundant.

PAGE 122

108 For example 1£ the decision Is made to schedule some batch E before the first of many batches of F, subroutine DEMINF will be called. The variable corresponding to scheduling the second batch of F before batch E will be constrained to zero by DEMINF. The constraint corresponding to scheduling the second batch of F after batch E is redundant so the corresponding variable in the dual can be constrained to zero. Redundancy is indicated by the sign of a number in the tensor KB. L04 is set to 1 if there is redundancy. Sometimes there is no redundancy. This is true for the first sample problem of Chapter V. In that sample problem, reactors created feed for a separator. If the decision is made not to produce a batch in a reactor, subroutine DEMINF is called. The batch cannot be used to feed the separator so the variable, L03, which corresponds to using the batch to feed the separator, is constrained to zero. The whole set of either/or variables corresponding to feeding the separator cannot be constrained to zero. One of the batches from the reactor has to be used to feed a batch in the separator. Iteration Loop 11 The parameter II is feed to iteration loop 11. After control point 91 we found a variable L03 which was to be constrained to zero. L03 is a member of a set of either/or variables which represent scheduling decisions. One cannot make a decision about scheduling batches unless the decisions are made to make the batches. Iteration loop 11 uses parameter II and the matrix IMP to find decisions about what batches have been made. If the decisions

PAGE 123

109 have been made to produce all of the batches (IXB(L) = .TRUE.) of the either/or set to which L03 belongs then a decision can be made to free a member of the either/or set. Iteration Loop 12 In Iteration loop 11 we found that a number of batches were to be made. After control point 91» a decision was made to constrain one member of an either/or set of scheduling variables to zero. One should remember that we are solving the dual of a scheduling problem. A feasible schedule has to satisfy one constraint from a set of either/or constraints. After control point 91 we decided that one of the constraints would not be satisfied. Iteration loop 12 finds out how many decisions can still be made about a set of either/or constraints. IXB(L03) " .FALSE. Indicates constraint L03 of the original scheduling problem will not be satisfied. If IXB(L07) is .TRUE, for only one member, L07, of the either/or set then constraint L07 must be satisfied. Control Point 22 At control point 22 we know constraint L07 of the original scheduling is satisfied. If LOA 1 from control point 13 then variable L07 in the dual can be constrained to zero since scheduling constraint L07 is redundant. If L04 = then dual variable L07 is freed by setting IX(L07) and IX0(L07) >= .TRUE. At any rate scheduling constraint L07 is satisfied and we alter the vectors LIST 1 and LF as we did after control point 10.

PAGE 124

110 Control Point 30 After control point 30 a number L02 Is calculated. If L02 Is zero^ control is returned to the calling program. If L02 is not zero then L02 helps locate some scheduling decisions. Whenever a decision is made to produce a batch then DEMINF will be called and after control point 30 L02 will locate the decisions which are concerned with scheduling the batch. Iteration Loop 29 Iteration loop 29 starts with control point 92. The subprogram gets to iteration loop 29 because a decision has been made to produce a batch. Iteration loop 29 finds out if some new scheduling decisions can be made as a consequence of the decision to produce a batch. Iteration Loop 23 Iteration loop 23 performs the same function as iteration loop 11. In both iteration loops the program finds if decisions have been made to produce several batches which will have to be scheduled. A program will transfer control to iteration loop 23 because a decision was previously made to produce one of the batches. Iteration Loop 25 Iteration loop 25 is the same as iteration loop 12 except for one difference. Iteration loop 25 adds the feature that IXO(L03) = .TRUE, if IXB(L03) = .TRUE. IX0(L03) = .TRUE, says that variable L03 no longer has to be constrained to zero. Variable L03 was previously

PAGE 125

Ill constrained to zero. Variable L03 was previously constrained to zero because It represented a scheduling decision and decisions had not been made about producing the batches scheduled. The steps after Iteration loop 25 are the same as the steps after Iteration loop 12 except there Is no provision for redundant variables after loop 25. Subroutine BACKTR Subroutine BACKTR performs backtracking for the Balas enumeration procedure of Chapter IV. A list of numbers, LF, Is used to show the current state of the enumeration procedure and backtracking Is performed as explained In Chapter IV. Iteration Loop 5 A variable I which Is free, but In the basis, Is characterized by IX(I) = .FALSE. Iteration loop 5 sets IX(I) = .TRUE, for every variable In the basis. After Iteration loop 5 every variable which Is free will be characterized by IX(I) .TRUE. Control Point 2 List LF Is the same list LF described with subroutine DEMINF. The first member of the list, LF(1), Is a pointer which locates the last member of the list. If LF(1) Is one then an enumeration problem has been fathomed and subroutine NEXTPA Is called. If a scheduling problem Is solved using Balas' enumeration then MEXTPA merely writes a message and computation Is complete. If a scheduling problem Is solved using branch-bound and Balas enumeration

PAGE 126

112 IX (L)=. FALSE. Figure 20. Flow Sheet for Subroutine BACKTR.

PAGE 127

113 I-=IMP(M1,J) » IX (L)=. FALSE.

PAGE 128

114 I x-i \ J " Jl IXO(L)-.TRUE. I"IMP(M1,J) IXO(I)=.FALSE. IXB(I)=. FALSE. -^11 IXB(L)-.TRUE. L-LF(LL) LL=LL-1 X IX (L)-. FALSE. IXB(L)=.TRUE. LF(J)=LL J=LF(l)+2 I1=LF(1)+1 LF(1)=I1 LF(Il)o-l X(I)-XF(I) Bl(I)-BlFa |l°ixif(i) I IX1(I)=L I IX(L)°. FALSE. Figure 20. (Continued).

PAGE 129

115 (see last section of Chapter IV), then NEXTPA connects the Balas enumeration programs with the branch-bound programs. Transfer of Control from Point 2 to 100 The last number In the list LF Indicates the last decision taken by the Balas enumeration procedure. This decision was either to free some variable L or to constrain the variable to zero. If the enumeration procedure has already looked at both possibilities then a minus L Is stored at the end of list LF. If the program has only enumerated one possibility then a plus L Is stored at the end of the list LF. If the last number In LF Is positive control Is transferred to control point 1. If control Is not transferred to control point 1, then one has enumerated both possible decisions about variable L. We need to backtrack and enumerate some decisions (partial solutions) that were made earlier. Enumeration of the earlier decisions might Involve variable L being constrained to zero or variable L being freed. If variable L represents a decision about the number of batches produced (L _< NBM) then we set IX (L) = .FALSE, and 1X0 (L) = .TRUE. IX (L) B .TRUE, would erroneously free variable L during enumeration of all of the earlier decisions. IXO(L) .FALSE, would erroneously constrain variable L to zero. IXB(L) <= .TRUE. Indicates constraint L of the original scheduling problem Is satisfied. Subroutine LFREE adjusts scheduling decisions so that earlier partial solutions can be enumerated.

PAGE 130

116 Production decision L and scheduling decision L + NBM are related in the same way that Equations (40) through (43) are related to Equations (44) through (47). Control Point 100 At control point 100 we shorten the list LF and look at an earlier decision made by the Balas enumeration procedure. Control Point 7 At control point 7 variable L is a scheduling variable. IXB(L) can only be true if the last decision made by the program was to free variable L. In this case control is transferred to control point 101. If IXB(L) is .FALSE, the program determines if the decisions have been made to produce the batches scheduled by variable L. If the decision has not been made to produce one of the batches, IXB(L) is set .FALSE, and control is transferred to control point 101. Control Point 101 At control point 101 the decisions have been made to produce the batches scheduled by variable L. After control point 101 the variables IX, 1X0 and IXB are set so that variable L can either be constrained to zero or freed. Control Point 1 If the last member of the list of numbers in LF is positive, the control is transferred to control point one. This last number in the set, L, is a freed variable. The program needs to backtrack and

PAGE 131

117 look at the other possibility, that is, the program needs to look at constraining variable L to zero. If variable L is a scheduling variable control is transferred to control point 10. If L Is not a scheduling variable we need to set the variables IX and IXB to their proper values and call LFREE just as was done after control point 2. The next to the last varifable stored in LF was originally constrained to zero and IXO is set so that it can be freed. Control Point 11 At control point 11 backtracing is completed. The calling program will be looking at scheduling problems which were not investigated in the past. The calling program uses dual linear programming problems. A linear programming problem moves from one feasible extreme point to another. After control point 11, BACKTR sets the variables, Bl, X, BI, and IXl to their values for a feasible extreme point for any scheduling problem. This feasible extreme point can be found by solving the dual linear programming problem with every either/or variable constrained to zero. Control Point 10 Control is transferred to point 10 when the last number of list LF is a scheduling variable. If this scheduling variable, L, is currently free control is transferred to point 103 and the program will look at the other choice, that is, constraining variable L to zero. If control is not transferred to point 103 the program has to

PAGE 132

118 do a good deal of work. The work is concerned with a phenomenon first discussed in Chapter V. In Chapter V an example problem was concerned with which of four possible batches should be used to feed another batch. In this case the dual problem had to free one of four possible variables in order to find a feasible schedule. Ordinarily the decision to constrain a variable to zero implies that some other variable is freed. This is not true for the example given in the previous paragraph. The programs are written to handle pairs of either/or variables. When there is a set of three or more variables and only one of them is to be freed the subroutine BACKTR handles this special case with iteration loops 104 and 105. Iteration Loop lOA Control is transferred to iteration loop 104 because a scheduling variable, L, was constrained to zero and this did not imply that some other variable was free. Th^ computer Indicated this by constraining variable L to zero and adding L to the list LF. After control point 1 the pointer LF(1) was shortened by two. LF(1), LF(2),...,0,P,L, ... [ & Before (+) (+) LF(1), LF(2) 0, P, L I ^ After Figure 21. Vector LF Before and After Control Point 1.

PAGE 133

119 Subroutine BACKTR needs to alter the list LF from the way it is shown in Figure 21. Since we are fathoming all possible solutions we need to look at freeing variable L. The other subprograms always assume that there are pairs of either/or variables and subroutine BACKTR has to "fool" these subprograms by adjusting LF. Iteration loop 104 looks at the set of either/or variables to which L belongs and finds one of the variables, LL, which is free. After iteration loop 104 the pointer for LF is increased by one. (+) (+) LF(1), LF(2) 0, P, L I i^ Figure 22. Vector LF After Iteration Loop 104. Iteration Loop 105 Iteration loop 105 also looks at the either/or set to which variable L belongs and constrains any of these variables, II, which are currently free to zero. The negative of each of these variables is also added to LF(see Figure 23). (+) (+) LF(1), LF(2) 0, P. -II., -Il_ -II I ^ A " Figure 23. LF After Iteration Loop 105. Before control is transferred to control point 11, LF is altered to appear as in Flguie 24.

PAGE 134

120 (+) (+) LF(1), LF(2) 0, P, -11^, -II^ -11^, X, LL Figure 24. LF After Control Point 11. List LF as in Figure 24 will "fool" the other programs into thinking that variable LL is currently free and should next be constrained to zero. When variable LL is constrained to zero, the other programs will determine that variable L is the only member of its either/or set which is not constrained to zero. Variable L will be freed as is desired and backtracking with list LF as in Figure 25 will be done correctly. (+) (+) LF(1), LF(2) 0, P, -L, -LL I * Figure 25. LF After Variable LL Constrained to Zero and Variable L Freed. Listings Computer listings follow for the other subprograms. Subprogram FATHOM uses the subprograms described earlier to perform the Balas enumeration developed in Chapters III, IV and V. Subprogram BRANCH is essentially the same as subprogram FATHOM except the subprogram uses storage and retrieval of partial solutions Instead of fathoming and branching. Subprogram BRANCH stores partial solutions with subprogram STORE.

PAGE 135

121 Variables for partial solutions stored for BRANCH are named by a.ldlpg BB. For example, the vectors IXl for stored partial solutions are stored In the matrix IXIBB, the vectors IX are stored In matrix IXBB, etc. Subprogram BRANCH and the following subprograms are only written for pure scheduling problems. For ease of writing these subprograms use the matrices A and B Instead of AA and BI. The matrix Inver&lon procedure of Appendix A Is performed by subprogram UINV. The listings follow.

PAGE 136

122 ac UJ X a X u < xu lU a: LU ac < I o CO < < > UL O »/l z

PAGE 137

123 3 Ui UJ O 3C I o uj a lu z < X »I/) a UI X O Ui I -i «/) o ae o UI H < »a: U UJ < > < u. •I (/) tn GO 00 u. uis UI (/) •H X ui a < »-• o u>>I < UJ »O H> Z Ui UI a < z o -i U^ CO I/) UI CO O i/t CD «-« < of U. O UJ I M DO -J O n£ o UJ 3: tUI < oe 3c 3 I -I > OC UI nrr Ui •-• O > U UJ Z I»q£ hhi u */) O < OUIX 3 Z 2 CD *«. O QC Q O •-' UJ n »-« _i UJ 0£ X IOrC tn 3 X • ujouja»-«o»-ui 1 •-• 3 O Ui J ^ X UI UJ X Ul CQ •--* to «-! UI hoc u.ujxuiauj II < o_ii-i to 3 X O •-• tn 4 I/) O u> — of UI M UJ UJ UJ a UJ a of _i x > z X X >*teou< I/) X O *-* «/) U. Z o of o: o UI z •-• < X O < K 3S O »V. > •-< > oe I/) UI to • CO UJ UJ 0£ UJ O •-• Ui acxo_izo-iuj < K^ CQ O lU OQ UJ M OC < Q < Qi Ul UI UI ix »-• u. ee. X q£ • UI a£ ujuji— *-• > Q < > UJ f< UI < X •>• t X ox UI u CQ Q Z Z Q Q. xuizi-iuj<o UI %A Q ec < UI fxl oe >UI Ui CO K 00 a, io < »V UJ ^ -i to z O UJ Ui -i X o CO »UJ < UI »-i Z of oC O u. to Ui z CO z o Z < vo <( of M U ^^ KJ Ul UJ UJ Z o -I o CO O UI < a t-4 Z < oe < X < o > UJ UI > UI 3 4 X X • UI UJ • UJ UI QC -J u. 00 < UI — a OC < > to UI O J Z 00 •-< < _J •-• 3 OC Q X o o «/» z < _J 3 UI Q CO UJ .X -I u to UI _J • o _J ^ — II X CO *-• O X z •-• o < o» or o f-* CO z •-« o to •a o o O «M o •-< — o ~ X t^ Z irt a. X o -« II II l-t -i O Ci. rX r-t t-4 •I O INI CQ O X z UJ Ui 3 Z z • (M -^ I— « • >w >»< — — II II u. u. m 1-4 z — o u. o z CQ z 3 CM i«g + II .-• z II X -« o -> «J CM •-• O X t— * ii> a O X •-< o » o o X o • o — •^o ~ Q II ~ CM <-• O O Q Z -} t-4 » C) O >-< » -> .-4 £ _! » dj •-• «. ^ O ->-? X — •-*<-• o II ••-•-••• -^•-< •tOC3'«'3fUJQ «»O lU UJ O O inaoo • • (ii fX Z (M rH O Z <-<-• •— IXXOix II 1 w X 0.-4U.4U.U.U.O Ui U. X UJ -I O It/) oooouuooouoo

PAGE 138

124 o

PAGE 139

125

PAGE 140

126 Z r^ ^ (M |_ — z O Z O OJ

PAGE 141

127 LU Q lU lU cc Ui u. z < OC u. U UI < Oi CO VC u. z UJ UI I no

PAGE 142

128 a o UJ LU Of rvi CO -. o -' _i •-4-. _J— — — (Vl-,^ _i r^rM — r-« II II "1 II II moZ»-Q II O II OULOO-H»-« II (NJ-400X0UJZ «-i:ji-i_i»-<_jai-t-)->->-jo_j«OQ:uj — • •

PAGE 143

129 >*

PAGE 144

130

PAGE 145

131

PAGE 146

132 Ul I

PAGE 147

133 o

PAGE 148

134 X u Ui X m o z -o ^ z z z ^ o i£ -* OC »o < X u o liJ -I OC < Ui o ai < o z»o •/» 09 o Z 3 ULI -i tn O lU «/) Ol hZ Ui UJ X m hlU LU OC (£ a. o 111 > Ui Z X •-I o X z • O OC M Ui to -i o a (/) -i < Z •-• Ui oC tt Ui a: au u z Ui z X -t Ui QC CO o u. a O I/) "* z *~ a o •-• z >u. z r> Ui u. > 1-4 Ui »> o •-• Ui t-9 O JO Ui o -> (O Ui O X I hUJ HX •-« Of a Ui z a 4t tt: o -% U CD < z o — of CO Ui «M X 3 Z z < X Z IUi «/) OC UI Ui -i 3 Ui to QC z < o -< I o tj »-• Z X 3 3 U. I/) Ui Z > o UI to — lU HHUJ -J to •-< to I • -I XIz u. Iz — •h • Ui O 0J IM ^11 2 »-• Q 03 11 Z~UJ UI >-« + UiZZ — — t*\ Z) fn :d h-eooiO — 03 OJOZ Z Z Zi CO Z >-* CO CO .-«^_i»-io << OC o z 1-0)2: fii— i-»-i-*i-n ociiuj<_i — —tf*\-j»- UJ -I UJ z: •-• X < OC (J < o: • Ui — X a. m Z 03 Hi Ui Z OC I— o oo u. 01 CO Ui X M O -5 O ca u, a Ui Ol > X •»»o X Ui u •n q: f(C Ui -. o IX tUl < lO z < oo ac Ui UL CO o Z Ui •-I «/» 1 < Ui IOC •-« o X UI «/> Q Ui UI Q( 03 < Ui O X z z I«x < o X tz Ui X _l a ffi 1 o to oC o z u. — o O I oC K — < < • — • UJ -> UI 2 uc w nc o r) oj O »-• h03 *»O Nl to 3 3 • UI _l QC Ui 3 O O »_J Z I«/> «/) OJ IIto ^ z z z <• u. o < Ui »-I U X OC M QC UJ 3 U. X o o o ut QC QC 3 O Ui X Z 03 a ca •-• f-4 i H X < -I ; Z OC o o z u. < ;z • O) Ui O OC X I» I/) CI OS >X _l *-t a z «/) •-) lU CO O lui ac iX h< q: z — 3 -I iO Ui — -> iu. I ^ — ITO Q —X Z X •-< t z • oloc Z ^ Z •• -I II I X II p.-• II — If— »/)»-*•-« "5 i-t ^1 QC ->->-• "» Z to O — CD — |0. f«*^ 33 m ^ -IO (-> ;a o 03 P UJ O X X O -I _!> C3 •-•»-• O !Z Z ^ fO o o u o o o «-• (J O O fM O O

PAGE 149

135 ec o Ui -J a I 3 QC oe o OIU X X to < z z u o *^ Z *~t aC i-i H Ul o aV z 3Q 3 2: < u. Z of uj -4-J > < HH «<1 »z tu u O QC UJ •-< uj n tX en u o Z CO 3Z »u. o z lU H OC >0 QC -« Z 3 3U o u. UJ UJ • -^ ai I oo flj > »OJ Q —» Nl lU U < of X UJ I o I-J K H UJ a t>^ UJ O 3 > Z UJ < X a UJ OC »Ui X or X »< z o O X u. O «-! CO O — 3 •-I O _j -» z o -^ D X O t•-< z n UJ UJ — QC OC •^ < cc X. 3 » UI o »-l a -1 UJ — »n I 03 KCO Ol r-* a UJ X o q: •-.-JO LL Z UJ UJ -) z o z o CL »-4 o»o < Z -1 — -• II aQ UJ a -> iM Q UJ II ae a: ir\ ^a o z Io *-i — I (/) O fsl < O UI tCD 4(M X II II CO 00 CO CD -t ij U U U a • UJ • UJ X o -f Ioe hco UJ X < oe fM Ui mO z z csf u. o < Z UJ > UJ X t/) t/> K < ~J< < X z U. U. M -i o I/) o < UJ q£ X .J UJ CO Nl • — < UJ O •-« UI UJ » of CO OC X < -J UJ I— »00 • X < < < UJ »X I CO v> IIO _i U. QC < O Q Of Ol U. UI < X »UJ -I UJ O O Z -J BJ z z •-• •-• < _l » o a: UJ hCO 3 X O < — X z oc UI a UJ o o -J < 2 X HUI »U I/) X < a£ •< »X UI -* -t IO 1 o z (/) UJ Z UJ O X •-• »_l O IX o z a z O •-• U. Ui r-* Z Z » UJ II <— < O •-• 'X —* »a a£ o -) Iz o UJ u. -I o H t-t KJ O «/> O -I X ?• Q. r^ N4 II UI a UJ o X II
PAGE 150

136 CO |^ ^ /-. II fr4<|, i-t n ^-^ ^^ —} m X X II a . W M < to o » 9 2j (Hi o U M N H . h3 o o Z OT W J M < M PL. O o J • u M g w 5 W fo S o eg K Z *• US r-. H 1-1 II iH O M Q U O S O /-N OS hJ CO H hJ • hJ >-' II hJ I ^ w CM H Z O H H »/-» >i n n < hJ hJ iH 3 ^ + o\ iii > 9 O 00 §8 t5 ">^ m u « S N z II
PAGE 151

137 •4— X ^ II — — CD -> CD ~*sl :fl II CO U. -J isi m •o — Z — K ne ai < 3 IX Q. h»-< OC O lU CC O Ioe 3: u. I/) o -* z> — O UJ n£ IO CO (-4 Z 3 QC lU U) z o Ul I < z Q. O I«-• X »UJ 3 Z -I o =) -t o < I »«r Ioc »-< < o a. o UJ 1o -* z a X o UJ UJ > — UJ < o a: X • . UJ oi — X • I00 < O CO s: H t: e£ CO w O CO u. u. o UJ X o 00 o z »m4 o UJ t£ • < z D UJ t-4 < Z Of O UJ »-) a I— •-« 3 «/) -J Z o o V) o IX ZOI"UJ nC — « CO u. X o 3 01O UJ Z OC o •-i o o hZ I/) — < o «/) z UJ Z -« •> a • < —» hX Ha :3 z lU -J s o — (/> u. U. -t —I UJ I a z z < •Q U UJ Z h=> < U. Z fr-4 Ul X > »-« Ul (-> UJ UJ -» OD OQ O Z < Ul I/) o z cc o < "-I u Ui -> CO o z . *r .,< I X (-> X • z O Ui UJ CO oe X o D Io o z z O Ul •X HI3 >t Z o < »o X 3 rX o »i/> o X _» I< o •-•»-« o 3 IOC — Z a z cc z -^ < CO a. z CD ai M lu X «X u. I-1 o U. UJ —4 UJ QC a: < < a. _i > «/) -I e£ UJ «-• K u. >-* z UJ •-• X U. »Ul a a Z UO GO •-4 )-« CD u. z X •> UJ o •-« 3i -* II X r^ 00 X -1 Z JO CL a -4 o '-> a •a -J o a z Z 3 o a X o CC o O UJ O I< — z «t Ul >— r-t ISI X + •-• o •SI Ul o UJ CO > . ~ X rH o •-•O OO iJ i^ uo -1 UJ 'U O i-l — 3 JB lU I 00 Z ' -* 00 •-• 3 -• -1 •SI I11 -» II w z — CD U. O •-• U. OO •— I O "^ *^ z oe o o •M X fUJ 3 X -I OC9 t/» z < o£ •^ a < »Q. Z OI X cx: Ul OC Z 3 o < UJ O X Z O o *•-• z H •-• < Z X O OC o o u. Of z 3»-» O X UJ o z »>-i UJ X X O IX • »3 • Ul Q-• 3 O M — Q£ — -I -. Z h-< -^ t«-• I «t •-• -0 -> • w ao a: Q — (I CO CD — C3ZvO~4-"0QZa3 -J II tn 01 >-> w II CO isl QC • O II X <« 03 II
PAGE 152

138 o -> lU — Z CO fCQ ^ X II •-• -< M -> — 00 CO o z X • II II %0 "> — f»— o O X X o CJM i-i o ai I => oe _i < > -J o ^ »III LL X O Z Z > o h< Li Z O D UJ LL UJ Z UJ > UJ •7C »o UJ UJ O -J < (O OC o o (/) to Ul Z CO UJ o i-< UJ »oc Z) o _l >O i/i Ui o _J »< 1 o ftu < 3 a Ul o :« z ^ UJ '4• UJ Of S: UJ 03 UJ • • i/» I tn -• -J -I 3: Z -> -» < -I O w II U. M U. -) CO — • 3 O K o) ^ n 3 •-«-> — lU UJ _J X — "1 q: o o •-• !-• ~UJ < t/) « X X I -J •^ i-t •-• t— O. J < u. z<-« a UJ o »«/) CO .i < < • 31 M UJ Z R£ < O < OC ».4 a. o O •/> UJ Z H > OO M < »>z z o o « UJ t-^ -> t0£ 00 4 3 z a ac to UJ U. UJ to Z Io «-« < 1 o z UJ a 1 3 z a 00 1-4 UJ hOC Q. 3 O C3 -J K o O t/> _J CO o o _l»z < < IUJ UJ Q£ Ul O «« z < a. oc oc o 0« Ul UJ hX o to o »z Io UJ UJ _i > O CO —* o D a H Z O CO -» O < OO O HlU z z • at <-« •• OO .-4 UJ Z Z II «a O -* "^ r-l CO o <-< z * Z — O OO i-» «UJ CO I-) T U. of 03 tO II t-i < KJ 3 Q -J -J UJ Z O X •-< to CO 00 OO 00 -J Ki II II so 03 CO CO -• II + — rj -I CO w Z CO H 03 "i -J z — < z CO Z UJ w — »> •-4 o • < z — r-4 O oc •-• CO o UJ 3 ro o o z "J ^— I III _» II II o -> u. o u. < M 15 Ksl > O z uj: Oi 3' o UJ • oc u. •-• z -^ z :•-• o < Z fVJ O U UJ UJ I »o z c> o z o a — IS — oc to ^ UJ Z) — • — Kl I O car ^ Z V • UJ Z O CO c? • «Z ' UJ 3 -J Z • Z CO I/) O »-" a' _J I— « t-l •^ U. II K u. 1— <-«»-« 3 »-• u. o •-• to z *-• II 3 — oc ^ .-I i-i rvi II -• o >— o X -»• •-< z II — ^ X z -* 1^ O O O f^ U {J O' {J -*

PAGE 153

139

PAGE 154

lAO LU t-l .-4 — — in — O — X a-l •H OC II II ai i-« -J _»o o < a o o uj r) II =} II ~ z — »-« z ir\ — O O CO O _J o o <-• II II II ^ ^ -) rH r-l . »t O CN CD -J -J U -) a: ac _j — ~ rH ^ (VJ X — — M «t < II — It r-i u. rsj z •-< a: •* II o — in %o o o -i •JII o -^ I— in O (M O -J — I — i rg — o . • o \ C3 O) as: ^ ^ ^i UJ HI UJ » +0-1 • • • •-I -^.iw ^-.-^ '^11 ,-4»in'>r4>-4r-li-) lU^>-« O — •-<(M>-«Z2:3Cll 3— o II in II _j— •••«»-"•-< Z tn O II — «M -5 II -H ,H C\J fO tVI H •-* O O — <-« -J -. X — — — X -^ I— _j^t-4— ||^c•^•-<<<<^ »»-« Z~ w,-l,M M||w||w»tw ou.af-4Z ooc\jt-4u.«MU.~»»-i o >-• a -I -J _j u u z XI s; •-• o3 _j

PAGE 155

lAl • I cj — ^ Ui t-4 I

PAGE 156

142 o in o St-JII ~ a> uj oj rf> 3 iiJ>t»-«H — II o <-« -' If o -« z -^ rHO — -JOOO — -»oo»-«ox o« 4-^-iii -Jt-_j<-iii _ii-h-i i«i— — ^w w^^w Z II ou-oooou-oooooomo 0>-<-J_t^Ui-i-l_I^C9U(J>-iO o a

PAGE 157

143 »/> z ac X -J X a o «" ai of CO o OUL 1 a — z o

PAGE 158

144 < UJ a. UJ ec UJ X a LU *^ u < z r«< o IVa o o o «/) UJ -i z -* o f-4 UJ ^ -I — ^ — Qt CO UJ > CO M -> o Q »< X O »-i KQC IUJ < > X Z lU X Q O < X a of UJ X vO M KO -I UJ I< X o o o UJ (/) UJ .-4 :«j — UJ I o -< Q — -J < »-• * ^ sc 3 (M n M' < z _j — ^ — a X •-• II -« «0 iC »»j^ w w LU Z O (>i O (M O 3 O ^ -J O _J O U UJ QC UJ X »<^ ^ ir\ UJ ^ > — < «3 X _l o u> o CM :s UJ o 3 u. o »<-i • -«»+ or ^ — ui s: CO •-• p-i • •• w i^ — in u. »-« -« -^ — o r -* X < _j — •> — 2 II -* •t » o ~ X I — •-•(:£•-•-< < — ~ II «CO X r-t -4 I u. IX o : •-• UJ •_j ^ . Qi UJ UJ X X • + or — UJ •-4 I II — o« CM -J o — o + CM — • _J II •• CM — r^-. _J I II _J — ~ CM II r-l r-« CM '^ X X ^ • H -i o II _J CJ — -^ -J — a CO o U. X II •-4 X o _i ^ II w -* -4 O X II o — •» o •-• CO O -J ^ en o 4> CM ^ UJ — -in • '^ II -~ — «« — fO 1-4 ^ _« CM — -I O -J (M II -I •> -I r-4 — •-• — O -4 — U. _i J 03 •-< u ru o

PAGE 159

145 w

PAGE 160

1A6 3 O oe CO 3 CO z of o at! — c r-t ro Z • O Z • o D «CO ffVI •-. Z -< r^ — » t-« • II ro _l*ii — ^ o « z u. •-• • • II »— a >«• z z • CO CO r-4 Z I w CO a to 03 z •M II w CD UL CO •-• z X o x; z • < -I Q£ II CD t~* •> CD ^ II II ~ 03 •>' II >< — . II I i i-i _) «« •^ lU _j ^ rvj »-i < O u a a 03 C3 CO z o o u. — -• u. CD X '-* II X u. < or a I a a a >z o -•

PAGE 161

BIBLIOGRAPHY 1. Dziellnski, B. P. and Gomery, R. E., Management Scl., 11, !» 1-32 (1964). 2. Urlostle, German R. , "Optimal Scheduling of Batch Chemical Processes," Master of Science Thesis, University of Florida, December, 1969. 3. Conway, R. W. , Maxwell, W. L., and Miller, L. W., "Theory of Scheduling," Addison-Wesley, Reading, Mass. (1967). 4. Balinski, M. L., Management Sci., 12, 3, 253-313 (1965). 5. Muth, J. F. and Thompson, G. L., "Industrial Scheduling," Prentice-Hall, Englewood Cliffs, N.J. (1963). 6. Laedon, E. S., "Optimization Theory for Large Systems," The Macmillan Company, New York (1970). 7. Graham, Douglas A., "Optimum Scheduling and Sequencing of Batch Processes," Master of Engineering report. University of Florida, August, 1970. 8. Hu, T. C, "Integer Programming and Network Flows," AddisonWesley, Reading, Mass. (1969). 9. Gomery, R. E., "An Algorithm for Integer Solutions to Linear Programs," IBM Research Center, Research Report RC-189, January 29, 1960. 10. , "Outline of an Algorithm for Integer Solutions to Linear Programs," Bulletin of the American Mathematical Society, Vol. 64, pp. 275-278 (1958). 11. , J. Linear Algebra and Its Applications, 2, 4_ (1969). 12. Ireland, Ronald J., "Solution Techniques for the 0-1 Linear Programming Problem," presented at the General Electric Applied Optimization Symposium, King of Prussia, Pennsylvania, Oct. 29-30, 1968. 13. Land, A. H. , and Doig, A. G., Econometrica, 28, 2. A97-520 (1960) 14. Balas, Egon, Operations Research, 13, 4^, 517-546 (1965). 15. Hadley, G., "Linear Programming," Addison-Wesley, Reading, Mass. (1962) . 147

PAGE 162

148 16. Greenberg, H. H., Operations Research, 16, 2, 353-361 (1967). 17. Trotter, L. E. , "An Implicit Enumeration Algorithm for Integer Programming," Master of Science Thesis, Georgia Institute of Technology, September, 1970. 18. Shareshian, R. , "Branch and Bound Mixed Integer Programming," IBM S/360 General Program Library 3600-15,2,005, 1968. 19. Driebeck, N. J., Management Sci., 12, ]_ (1966). 20. Dzielinski, B. P. and Gomery, R. E., Management Sci., 11, £ (1965). 21. Trauth, C. A. and Woolsey, R. E., Management Sci. 15, 9. (1959).

PAGE 163

BIOGRAPHICAL SKETCH Henry Xenophon Swanson, the son of Mr. and Mrs. Henry F. Swanson of Winter Park, Florida, was born on October 24, 1945. He entered Atlanta's Georgia Institute of Technology in September, 1963. For the next four years, he worked alternate quarters as a co-op student for the Glidden Co. in Jacksonville, Florida. In June of 1968, Mr. Swanson received his B.S. degree in Chemical Engineering. He graduated on the Dean's List. In September of 1968, Mr. Swanson entered the University of Florida under a National Defense Education Act Fellowship. He received his Master of Engineering degree in December, 1969, having chosen the Stability of Periodic Processes as his topic for research. Mr. Swanson is presently employed as a process engineer for the Glidden-Durkee Co. in Jacksonville. He is married to the former Lynne Gregory of Atlanta. 149

PAGE 164

I certify that I have read this study and that In my opinion it conforms to acceptable standards of scholarly presentation and Is fully adequate, In scope and quality, as a dissertation for the degree of Doctor of Philosophy, Frank P. May, Chairman -^ Professor of Chemical Engineering I certify that I have read this study and that In my opinion It conforms to acceptable standards of scholarly presentation and Is fully adequate. In scope and quality, as a dissertation for the degree Df Doctor of Philosophy. Herbert E. Schweyer H Professor of Chemical Engineering I certify that I have read this study and that In my opinion It conforms to acceptable standards of scholarly presentation and Is fully adequate, In scope and quality, as a dissertation for the degree of Doctor of Philosophy. Robert D. Walker, ^.-t. /\y Professor of Chemical Engineering y I certify that I have read this study and that In my opinion it conforms to acceptable" standards of scholarly presentation and is fully adequate, in scope and quality, as a dissertation for the degree of Doctor of Philosophy. John B. Wallace \ ^^ Assistant Professor of i Management

PAGE 165

This dissertation was submitted to the Dean of the College of Engineering and to the Graduate Council, and was accepted as partial fulfillment of the requirements for the degree of Doctor of Philosophy. June, 1972 Dean, Gradate School

PAGE 166

UNIVERSITY OF FLORIDA 3 1262 08666 431 4