... ..... III I‘IIII I IIII m w c _ ~— A -—.«— -.~.~.‘_._—.—- w —--— ':_.:.x:x_.-'fi=‘ ——'V Jn'RM—TH— ’ ..._ - . __ .4 .__-._..- (-2.. 0%”. .-«. .4 "2....“ .,. L” —r- «.4 .1... .3: ... « W . .‘ 'Cr' ‘b. 4 .1 . .- -. 4. 5, A ' . ~..- ..:: .:::r-I- .- -' .. .h, -. , -, - - - _ - - - - A w- T: *— V. _, ‘1'- _ -.';—:- -fi— “-5- _ W... I'll! I I In ' I- I "'I I 1 III I I II I I II I ’._..._.:_v w- -—— ~.__.~ . II II II ‘ IIIIII - I. I In'II' '\ "'I 3.. I II IIII'IIII . III . . IIIIIII..I.II IIIIIIIIIIII I . . . I ._ I... .IIIIII» »-I ., - - ' I I. I; j I IIIIIIIII I . I I .' . ' ”I III? 3...; ",1, .‘I: II I'IIIIIIIII'Iw ‘, .3 ‘ II ' . - ‘I‘III I ‘III IIu—J“ ISIII I IIII IIIIIIIII .3.» .II .-.» . . 5‘ I IHHIIIIII {IL-I7 . I I III III III‘ IIIII ' .' " " 1‘ I‘ I’I'III‘IIIIII’ III III III In . 1 .. IIITIIII»: I I.- III. IIIIIII'II III. .. ».~ _.“II"':?»;-;»;I:II . IIIII I IIIIIIIIII I III' . . WC . IIIWI‘IV‘II‘ I I II I. II . .~ . . III. ,5? {HI I I .’ I 1: ”If. L '54: II II IIIIIIIIIIII II I?» ~ - I I I II WI III III I I III; II” II I "I. I”? i . . »' ”I' if IIII‘II‘QJI I I III'II. ‘ . ‘ 'I‘ I" II I III"IIIIIIIIIIIIIIII’I“III .IIIII IIIIIIIIIIIIIIIIIIII . ' It: ’. I II . : II III ‘III III ,1I»'.I,IIIIII ‘IIIIII‘ _' '. I-.f‘.I:»-III‘.»~‘ III» IIIle IIIIII ‘III'III', IIIII!.IIII-IIIIIII'IIII‘I: I.IIIIIIIIIIIIIIII'III'IIIIII. . : III-"III“:III II: I . L III III .III‘I'I'IIIIII'I‘III‘I’IIIIIIIIIIIII; -.iI:I:'IIIIII I’IIIIIIIII‘IIII' -. I’IT'I‘II'I. I: III X! I: VIII IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII III}: I. II II I I . I'IL. IIIWJ” II 23’ III‘IIJIII!I‘IIIIIIIIIIIIIII‘I .»II’ I I I ‘ .. .' ‘I II:- III I». II ‘"VI"II’TIIIsI‘..‘I'II'IIIIII‘IIIII'III I III 'II' 'II " I I ' ’ I II I“ II {II ' II‘II‘ ‘IIII'II.III‘ I IIIIII '. ' . 1": 'II'IIIILIW' III .III‘ III‘IIII I IIIIII I I I I II I I'IIIIIII I III MW —acz£~ I III I III I III III. I I III IIIII'I'I III II’ II IIIIIIII'I m __——— ._- ;;—u— _;:-.—__ ._ _ -~—_ 4—:- ___._,_‘ “#:_ _— 1“. ‘-- _ ._.—.:—-_ {5... M —.—'—— ‘ LIBRARY, Michigan Sub. This is to certify that the thesis entitled ASSEMBLY LINE MOLD SCHEDULING presented by KEV I N DE LAN D MARKLE has been accepted towards fulfillment of the requirements for M.S. COMPUTER SCIENCE degree in .. " . (‘1 ,_ {\mk uué/ Major professor Date L} fill/7% 0-7639 s |.|1|ll 0. ‘ll. it! i.‘!': ‘l-‘IIIV‘III I Ill-II." .‘I. ASSEMBLY LINE MOLD SCHEDULING by Kevin D. Markle A Thesis submitted to Michigan State University in partial fulfillment of the requirements for the degree of MASTER OF SCIENCE Department of Computer Science 1977 Thesis Advisor: Dr. Anil Jain ABSTRACT ASSEMBLY LINE MOLD SCHEDULING BY KEVIN D. MARKLE Assembly Line Mold Scheduling is a mathematical model which will generate an efficient production schedule of molds assigned to a specific foam assembly line. 'The objective of this model is to minimize product costs (mainly mold set-up charges), minimize inventory holding costs, and to eliminate back-order production costs. The model will generate a new mold configuration each week. More than the minimum number of set-ups necessary to meet demand may be needed to generate a feasible sequence of molds on the foam line. If excess capacity is available, the model should look forward to following weeks' demands and load molds that tend to minimize future problems or bottlenecks. The model should also insure that demand is met for each mold at the end of each shipping day. The model must tell how many of each mold type to have mounted on the assembly line, and the exact position of each mold on the 181 fixed carriers so that the plant's assembly line sequencing rules are obeyed. ACKNOWLEDGEMENTS After completing my class requirements in the Computer Science curriculum at Michigan State University, I returned from an educational leave of absence to General Motors Manufacturing Development. There I was assigned to the Manufacturing Operations Systems Department on a project entitled: Assembly Line Mold Scheduling. This investigation and thesis is being submitted as part of the requirements for obtaining a Master of Science degree in Computer Science from Michigan State University. I would like to extend my appreciation to the following peeple: Mr. James Caie Jr., Senior Project Engineer and Plant Advisor and Mr; Robert Harder, Staff Deve10pment Engineer, Manufacturing Operations Systems of Manufacturing Development, for their suggestions and advice concerning the success of this project. I would also like to thank Dr. Philip Carter, Professor of Management, School of Business and Dr. Anil Jain, Assistant Professor of Computer Science, School of Engineering, for their assistance as Faculty Advisors at Michigan State University. ASSEMBLY LINE MOLD SCHEDULING TABLE 9;: CONTENTS I. INTRODUCTION . . . . . . . . . . . . . . . II. DEFINITION OF THE PROBLEM 2.1 Assembly Line Operations . . . . . . 2.2 Sequencing Rules and Costs . . . . 2.3 Current Operating Procedures and Problems . . . . . . . . . . . . . . 2.4 Summary . . . . . . . . . . . . . . III. ASSEMBLY LINE SCHEDULING MODEL . . . . . 3.1 Mixed Integer Programming Model 3.1.1 Objective Function . . 3.1.2 Constraints . . . . . . . . 3.2 Scheduling and Sequencing Algorithm 3.3 Summary . . . . . . . . . . . . . . IV. SCHEDULING SYSTEM OVERVIEW . . . . . . . . 4.1 Main Program - MAIN . . . . . . . 4.2 Input Processor - INPUT . . . . . . 4.3 Assembly Line Picture Subroutine L INEUP I O O O O O O I O O O O O 4.4 Generate Constraints Subroutine - V. VI. GENER 4.5 Mixed Integer Programming Subroutine MIP . 4.6 Scheduling & Sequencing Subroutine - SCHED 4.7 Summary EXPERIMENTS CONCLUSIONS ii 51 54 64 72 73 89 ASSEMBLY LINE MOLD SCHEDULING TABLE 9; CONTENTS (Cont'd) LIST OF REFERENCES APPENDIX A - SOURCE PROGRAMS FOAM Execution Program MAIN Program INPUT Subroutine LINEUP Subroutine GENER Subroutine MIP Subroutine SCHED Subroutine iii Figure Figure Figure Figure Figure Figure Figure Figure Figure Figure Figure Figure Figure Figure Figure Figure Figure Figure Figure Figure Figure Figure \omummb 10. 11. 12. 13. 14. 15. 16. LIST OF ILLUSTRATIONS Assembly Line Model Costs . . . . . . Assembly Line Mold Constraint Definitions 0 O O I I O O O O O O O 0 Mixed Integer Programming Model Objective Function . . . . . . . . . Assembly Line Mold Constraints . . . System Subroutine Overview . . . . . Input Processor Summary . . . . . . . Mold Line-up Summary . . . . . . . . Forecasting - Production Information Mixed Integer Programming Flowchart . MIP Standard Format "SOLUTION". . . . Intermediate Scheduling Results . . . Final Mold Line-up Summary . . . . . Sample - Mold Line-up Summary . . . . Sample - Production Information . . . Sample - MIP Row Solution . . . . . . Sample - MIP Column Solution . . . . 17(a). Sample - Intermediate Results (LWD 28) . . . . . . . . . . . . . 17(b). Sample - Intermediate Results (LWD29)............. 17(e). Sample - Intermediate Results (LWD 30) . . . . . . . . . . . . 17(d). Sample - Intermediate Results (LWD 31) . . . . . . . . . . . . . 17(e). Sample - Intermediate Results 18. (LWD 32) o o o o o o o o o o o o 0 Sample - Final Mold Line-up Summary iv 25 34 42 46 50 53 59 66 69 71 76 77 78 81 I 83 84 85 86 87 88 _I_. INTRODUCTION General Motors Corporation is interested in creating a mathematical model which will generate an efficient production schedule Of molds assigned to a specific foam assembly line. The Objective Of this model is to minimize production costs (mainly mold set-up charges), minimize inventory holding costs, and to eliminate back-order production costs. The foam line in question consists Of 181 fixed carriers connected together to form a large circular chain which rotates past Operation points. Carriers are defined as the portion of the assembly line where a mold can be attached. A mold must be mounted in a frame prior to attaching it tO a carrier. Setup, therefore, involves framing a mold if it is not currently framed and bolting this mold-frame assembly to the carrier on the assembly line. Since all frames are mounted on molds, the model must decide which mold to unframe to make a frame available for mounting on another mold. The normal Operation Of the foam line is 120 hours per week (i.e., 8 hours/shift * 3 shifts/’day * 5 days/week). Saturday Operation will occur only if it is absolutely necessary to meet shipping requirements. Since the whole line must be stopped to change a mold, major set-up activities for the week will occur on Saturday if production is not scheduled, or on Sunday otherwise. It should be noted that management has indicated that carrier positions on the assembly line must not remain empty when the line is running. Therefore, it may be necessary to produce parts on the foam line that are not currently needed. There are twenty-five different mold types currently assigned to the foam line. A mold type is identified by a two character code, and is categorized as either a "large" or a "small" mold. Most mold types have more than one physical mold available for production at any specific time. A mold type consisting of a double cavity will produce two pieces at a time. Finally, since scrap rates vary by mold type, each mold type has a unique production rate (i.e., pieces/time/carrier location). The scheduling project was undertaken to investigate, analyze, design, evaluate and implement an efficient production schedule Of molds assigned to a foam assembly line. It is essential that the model minimize production costs and inventory holding cost, and eliminate back-order production costs. The model must tell how many of each mold type should be mounted on the assembly line, and the exact position of each mold on the 181 fixed carriers so that the plant's assembly line sequencing rules are obeyed. It must also determine how many production shifts are necessary while staying within the plant's warehouse limitations and production shipping requirements. This report summarizes the results and findings Of this investigation. After the introduction, Chapter 2 discusses the background Of the mold scheduling problem. It briefly explains the assembly line Operations required to produce the foam seats. Finally, it examines the sequencing rules and costs Of the model, and describes the current Operating procedures and problems of the plant. Chapter 3 discusses the structure and ideas behind the assembly line scheduling model. It describes in great detail the Objectives and constraints of the mixed integer program, relating the plant's problems to the mathematical model. Finally, the scheduling and sequencing algorithm is explained, in effect, satisfying the plant's scheduling Objectives. The next chapter discusses the scheduling system overview, which describes the various subroutines of the foam model. Each Of the various subroutines are examined in greater detail. Chapter 4 also examines a typical assembly line scheduling example. It explains the required inputs and flow of the model through the final sequencing line-up and mold changes. Chapter 5 discusses an experimental run made by the plant to determine the assembly line sequence Of molds. It is easy to see from these results that an assembly line is more difficult to schedule than one would believe. The final chapter examines the conclusions Of the foam model with respect to the various advantages and disadvantages Of an Optimization model. It discusses the constraints which were satisfied versus the total set-up and inventory costs Of the solution. I_I_. DEFINITION (3 THE PROBLEM Few peOple really understand how difficult it is to consistently schedule any type of assembly line. There are rules and constraints which must be followed in the manufacturing plant. The assembly line also consists of people working in a plant environment. There are labor problems, material shortages, machine break downs and production to ship, and little time to produce the required parts. In short, for an outsider, pure chaos reigns in the plant. This chapter discusses the Operations and background Of the foam assembly line. It briefly describes the assembly line Operations required to produce foam seats. It assumes that the workers know their specific job requirements, and that the material is always available. However, this is not always true in the plant situation. The definition of the problem also considers the plant's constraints, the sequencing rules which "must" and "should" be obeyed. The plant has assigned labor costs to the various functions, such as changing a mold (set-up costs), storing a part in inventory (inventory holding costs), and a cost associated with framing a required mold (framing costs). Each Of these costs will be considered in the mixed integer program to determine the Optimal assembly line configuration. Finally, there is a discussion of the current Operating procedures and problems which the plant faces every day. There is an example Of how the assembly line is currently scheduled and the difficulties that occur in changing any mold on the assembly line. 2.1 ASSEMBLY LINE OPERATIONS The following operations summarize the foam assembly line production procedures: 1. Loading bolster wires and border wires into the mold. Wire loading work on some mold types requires that Operators work on a special platform. It should also be noted that each mold type has a specific wire loading difficulty factor associated with it. 2. Pour foam into the mold with an automatic "gun". 3. Bake the foam in an oven. 4. Cure foam. Several mold types require taping after post cure. 5. Pack the foam parts in 5491 standarized (identical) containers. The packing area consists Of thirty upender container locations, fourteen on one side Of a moving conveyor and sixteen on the other side. A specific container stores only one mold type, but certain mold types can have more than one container location associated with it. The assignment Of mold types to specific container locations is normally made at the same time as a major set-up takes place. A packing Operator is responsible for a group of adjacent container locations co-located on one side Of the moving conveyor. Normally, there are five or six packers working at the same time. 6. When two containers (called a lift) are full, they are both taken and stored in the warehouse. The warehouse can hold a maximum Of 900 containers at one time. If the warehouse is filled, containers may be routed immediately into rail cars for storage. Ten containers fit into one rail car, and the plant expects to ship thirty-six rail cars of foam parts five days a week. There are no rail shipments made on Saturday or Sunday. 2.2 SEQUENCING RULES AND COSTS There are several sequencing constraints that must be adhered to for a schedule tO-be feasible. 1. A "large" frame mold MUST have a "small" frame mold before and after it. 2. Carrier #1 MUST be the same as carrier #180, and carrier #2 MUST be the same as carrier #181. This insures that the "gun" is cleaned out at least once per cycle. 3. Molds with letter codes "AN" and "MM" should be lined up in a group because they require platform work and the wire loading Operator should only move to the platform once per cycle. 4. The platform is only 40 feet long allowing limited room for float. Therefore, any "AN" or "MM" molds should have some other style before and after it. 5. The biggest problem on the foam line is the wire loading difficulty. The total number Of wire loading points for any three consecutive molds should not exceed 27. 6. Parts requiring tape after post cure should be spread out so that one Operator can handle the work. 7. The mold container sequence in the packing area should be consistent with the mold sequence on the foam line to insure that a particular packing Operator does 10 not get overloaded. For instance, if a packing Operator is responsible for packing several different mold types, and if these mold types are all sequenced together, then the packing Operator will probably be overloaded at certain times Of the day. Given the current assignment Of molds to carriers on the foam line, the model tO be developed must generate a new configuration of molds on carriers so that: 1. All the next week's demand is satisfied. 2. Set-up and inventory holding costs are minimized. 3. Mold sequencing rules #1 and #2 MUST be obeyed while rules #3-#7 should be obeyed if at all possible. 4. Warehousing constraints MUST be obeyed. The model will generate a new mold configuration each week. It should be noted that more than the minimum number of set-ups necessary to meet demand may be needed to generate a feasible sequence Of molds on the foam line. If excess capacity is available, the model should look forward tO following weeks demands and load molds that tend to minimize future problems or bottlenecks. The model should also insure that demand is met for each mold at the end Of each shipping day. We can assume that a shipping day's demand for a mold is one-fifth its week's demand. Figure 1 on the following page, gives a summary of the assembly line costs assigned by the plant. These 11 are by no means all the costs associated with the production Of foam parts, they are valuable in describing the major costs Of a simplified mathematical model. 12 FigEEe 1, ASSEMBLY LINE MODEL COSTS Cost of framing a mold . . . . . . . . . . . . . .$75.00 Cost Of removing a mold from a carrier and setting up a new framed mold on the same carrier. . . . . . . . . . . . . . . . . . . .$15.00 Inventory holding costs 10% Of part value Cost of having one upender assigned to a part. . . . . . . . . . . . . . . . .$ 1.00 2.3 CURRENT OPERATING PROCEDURES AND PROBLEMS The molds required for each part are currently determined by the following proportion: Total schedule for each part * Total schedule for the line 181 = molds required These proportions are usually calculated once a month; the drawback here is that the proportions overstate molds required for high volume parts and under-estimate molds required for low volume parts. Production Control tries to perform the following calculations on a regular basis: 1. On Thursday, use the current mold line-up to estimate production for the next seven days. 2. Take Thursday's initial inventory plus the estimated production for seven days minus seven days Of shipping requirements to get the forecasted inventory at the end Of next week. FORECASTED INVENTORY = INITIAL INVENTORY + ESTIMATED PRODUCTION - SHIPMENT 3. Add the Forecasted Inventory for each part on a line to get a Total Inventory. Divide by the Average Daily Production for that line tO get an approximate number Of days bank (safety stock) in the warehouse. If there is less than two days bank for the line, a decision is usually made to work overtime. If the Forecasted Inventory for any part number is negative or a very low figure, production staff is told to add molds. An equal 13 14 number of molds, however, must be removed. To make this decision, Production Control finds the parts with the highest inventory and removes molds Of those part numbers. It should be noted that the above calculations are tedious and time consuming. All information must be copied from four different sources and then the calculations performed. It takes between 4 to 6 hours per week to do this and sometimes it is not done each week as it should be. Also, it is easy to make a mistake in these calculations. Another major disadvantage is that seven days may not be enough lead time to prevent back orders on the seventh day. If major changes must be made or not enough molds are mounted, production staff may not be able to make the changes until the following week and back orders will result. There are certainly other considerations which must be taken into account before a mold on the assembly line can be changed. 1. The whole line must be stopped to change one mold. 2. Due to the bulkiness Of foam and fire hazards associated with it, both assembly plants and manufacturing plants are restricted from holding large inventories. (Typically a two day safety bank is held in foam parts.) 15 3. Fire laws prevent foam from being stacked more than three baskets high. This limits effective space utilization. 4. Fork lift trucks can only carry two baskets at one time so movement, labelling and storage has always been done on the basis Of two baskets (called a lift). In other words, baskets are seldom stacked three high in the warehouse. 5. Four baskets may be stacked on top Of each other in the inventory storage system because it has an intermediate sprinkling system. 6. If the schedule for one line is slightly greater than machine capacity, the warehouse may be overloaded if Saturday overtime is worked, because no shipments are made on weekends. Therefore, it is Often necessary to accept shortages. 7. The line cannot run empty, so to prevent shortages on some parts it is possible to overload the warehouse with parts that are not needed. 8. Components are involved. Some foam parts require border and bolster wires, which are made in another division Of the plant. 9. When production staff is told how many Of each mold type to put on the line, they cannot always make the required changes. This Often results because the molds needed may not be mounted in frames, or serious 16 sequencing constraints might be violated. 10. The mere addition Of one mold may force the whole line to be rearranged. Hence, it may be cheaper to accept shortages than to rearrange the whole line. 11. It takes between 15 to 20 minutes to change a mold. The plant very seldom stops the line to perform this change; instead, they try to do it during breaks and lunch time. If more than 25 molds have to be changed, production control schedules these changes to be made on a weekend. 12. When molds are first put on the assembly line, they have to warm up for approximately three hours. If any foam is shot into the mold before it warms up, scrap is generated. 13. Scrap and downtime are irregular. Sometimes a line can run for several weeks with little downtime, and then in one week be plagued with a major breakdown lasting 8 to 10 hours. 2.4 SUMMARY It is very hard to visualize or totally understand the Operation Of a foam manufacturing plant, without actually Observing the assembly line. There are many problems which exist in the plant, and the past sections have explained the assembly line Operations, the sequencing rules and costs, and the current Operating procedures and problems. There is certainly a need to create a computerized model, to remove the "trial and-error" scheduling and mold sequencing procedures which now exist. The future chapters will consider and examine the assembly line scheduling model which was developed and implemented for the plant. 17 III. ASSEMBLY LINE SCHEDULING MODEL The assembly line scheduling model discusses the structure and ideas behind the foam scheduling project. It describes in great detail the Objectives and constraints Of the mixed integer program, relating the plant's problems to the mathematical model. It begins by discussing linear and mixed integer programming, and gives some Of the reasons why an Optimization model can be used to solve a scheduling problem. This chapter also covers the mathematical model itself, and explains briefly how the Objective function and constraints were translated from the plant's description into the model. The final section of the chapter deals with the scheduling and sequencing algorithm. It briefly describes where to place the molds on the assembly line, once the model knows how many molds are necessary to satisfy production shipping requirements. The section then discusses the heuristic algorithm that was implemented in the mathematical model. Finally, the sequencing and scheduling method will be used to explain how the Objectives, minimizing set-up costs and inventory storage charges, were Obtained. 18 3 .1 MIXED INTEGER PROGRAMMING MODEL Linear programming is a mathematical technique for determining the solution to a system Of linear con- straints that maximizes or minimizes a linear Objective function. An example Of a typical solution is an Optimum allocation Of resources to achieve a particular Objective when there are alternative uses for the resources (1,2). Mixed integer programming is a mathematical technique that permits one to solve linear programming problems in which certain variables must take integer values. This possibility allows the study Of a large class of important applications that cannot be handled by classical linear programming techniques (7). 1. Continuous variables, which can have any value (classical programming problems have only continuous variables). 2. Integer variables, which are limited to integer values (...,-2,-l,0,1,2,...). Both types must, of course, satisfy the constraints Of the problem. The ability to introduce integer variables into the linear programming model provides a means for efficiently handling certain problems that otherwise could not be studied, could be studied only 19 20 approximately, or could be studied only through a long sequence of linear programming runs for which a great deal Of preparation is demanded. The Assembly Line Mold Scheduling Mixed Integer Programming Model utilizes the MPSX Extended Control Language (ECL) written in PL/l (3). The model contains 132 linear programming rows and 125 integer variables. The mixed integer programming (MIP) Objective function and constraints will be covered in greater detail in the following sections. 3.1.1 Objective Function The aim Of any linear or mixed integer programming model is to maximize or minimize some Objective function. Figure 2, the Assembly Line Mold Constraint Definitions, and Figure 3, the Mixed Integer Programming Model Objective Function, will describe the model's Objective function. Let us consider the four types Of costs which the assembly line scheduling model is seeking to minimize. The costs Of producing foam parts are as follows: 1. inventory storage costs 2. mold set-up costs 3. mold framing costs 4. upender availability costs The inventory holding costs represent the average inventory storage costs per 2 week period. It is calculated by taking the production rate for two weeks, multiplied by the number Of molds currently on the line and 10% Of the value of the part, then is divided by 52 weeks per year. It is not a true indication, however, Of the actual inventory storage costs. Since the inventory levels are low, typically less than a two day bank, the parts which are produced early in the week are shipped that same week. This means that all the foam parts which are produced are not automatically stored in inventory. In fact, many Of the parts produced are 21 22 loaded into boxcars for immediate rail shipment. The mold set-up costs are really the key to the success Of the model. The foam model seeks first tO satisfy production demand, then tO minimize set-up costs. The two ideas are very closely linked together, for set-up costs would be non-existent if demand for a particular foam part remained constant. These costs are calculated by multiplying the number Of molds added and removed from the assembly by the constant (say $7.50/mold set-up). For each mold added, there must be one mold removed, for a total set-up replacement cost of $15.00. This cost, like all others, must be kept in balance, for it takes much longer to frame a mold than to make a mold replace- ment on the assembly line. The framing costs are very similar to the mold set-up costs. The mold framing costs represent the time and labor involved in first unbolting a previously framed mold package, and then constructing a new mold-frame assembly. Since a mold-frame assembly is heavy, there is a need for a forklift truck and driver and two workers to accomplish the task. The higher cost is reflected in the amount the plant has assigned (see Figure 1. Assembly Line Model Costs). The framing cost is calculated by multiplying the number Of molds to be framed by a constant (say $75.00). The first three conditions, the inventory, set-up and framing costs, represent the main Objective function costs Of the foam model. 23 The final Objective function cost is the upender availability costs. A cost Of $1.00 is given tO each upender that is assigned to a particular mold. This Objective function cost tends to reduce to a minimum, the number Of upenders required tO handle and pack the foam parts for each type. This upender constraint will be examined in more detail in the next section. 24 Figure 2. ASSEMBLY LINE MOLD CONSTRAINT DEFINITIONS N = total number Of different mold types WARE M(i) A(i) R(i) F(i) D(i) P(i) PK(i) total number of storage positions available in warehouse total number of molds REQUIRED for the ith part number Of molds for the ith part to be ADDED to the assembly line number Of molds for the ith part tO be REMOVED from the assembly line number Of molds for the ith part to be MOUNTED on frames wire load difficulty associated with the ith part production rate per week associated with the ith part (currently based on 3 shifts/day - 6 days/week) standard pack for the ith part (number Of pieces which fit into one basket) SHl(i) = number Of pieces shipped the lst week for the ith part SHZ(i) - number Of pieces shipped the 2nd week for the ith part INV(i) = initial inventory for the ith part SAFETY(i) 8 safety stock required for the ith part SC(i) 8 IC(i) FC(i) UP(i) set-up costs associated with the ith part inventory storage costs associated with the ith part (value Of the ith part/260.) cost to mount a mold on a frame associated with the ith part cost associated with having an upender (basket) assigned to the ith part M-tape a molds that require tape after post cure M-large = large molds Mp a mold position 25 Figure 2. MIXED INTEGER PROGRAMMING MODEL OBJECTIVE FUNCTION N MINIMIZE COST 8 Z,(M(i)*P(i))*IC(i) + i=1 inventory holding costs N Z,(SC(i)*A(i)+SC(i)*R(i)) + 181 mold set-up costs N z.(FC(i)*F(i) + i=1 framing costs N Z,UP(i) i=1 upender availability costs 3.1.2 Constraints This section deals with the mixed integer programming constraints of the assembly line mold sequencing model. Each Of the various constraints will be discussed, and the questions Of how the constraints were implemented should be answered. One must remember, in a mixed integer program, that if the constraints are not general enough or do not have enough flexibility, the problem will become infeasible. If the problem is tOO general, however, valuable time will be spent in calculating answers. Therefore, careful attention was given to allow the problem a greater degree Of freedom while minimizing the Objective function. The Assembly Line Mold Constraints are available in Figure 4, and can quickly aid in understanding the mixed integer programming model. The mixed integer programming model currently contains 132 constraints and 125 integer variables. The integer variables can be broken down into the following five categories for each mold type: 1. total number Of molds required 2. total number of upenders required 3. number Of molds to be ADDED 4. number Of molds to be REMOVED 5. number Of molds to be FRAMED 26 27 The first constraint considered here is that of LINE CAPACITY. As previously stated, it is unacceptable to leave a vacant position on the assembly line. Therefore, any feasible MIP solution must fill the 181 mold positions with an available mold. This is done even at the expense Of producing foam parts which are currently not necessary for the production shipping requirements. ADDING and REMOVING MOLDS from the assembly line are the next constraints to be considered. Since the model is trying tO determine the total number Of molds required for the ith part, M(i), and at the start Of the model we know how many molds are currently on the line, M(i) current, the number Of molds to add for the ith part, A(i), represents the difference between the required number Of molds and the current number on the line. In the line, R(i), represents the difference between the current number Of molds and the required number on the line. For every mold that is added on the assembly line, there is another mold which is removed. An empty position on the line is never created. The FRAMING MOLDS constraints is handled slightly differently than the two previous constraints. The model, at some starting point, knows how many molds are currently framed. The number Of molds to be framed, F(i), 28 represents the difference between the number Of currently framed molds and the number Of molds required. Typically, however, there usually seems to be enough extra molds framed to meet the future production require- ments. That is why there is seldom any need to frame more molds. TO speed up the MIP subroutine, a limited number Of molds can be framed, for any particular part. Two molds Of each type can be framed, except for mold codes: "EN” or "ER", in which case the model allows four framing changes. This is due to the fact that the mold codes "BN" and "ER" are high production volume parts which account for half Of the total assembly line production. The WIRE LOAD DIFFICULTY constraints were included in the model to make future mold scheduling and sequencing easier. The idea behind this constraint was that the total wire load difficulty Of the assembly line should be maintained at some constant level Of wire load difficulty. This implies that before a series Of molds are added or removed from the assembly line, the sum Of the wire load difficulties be almost equal. One must remember to maintain some flexibility in the model, in order to insure a feasible solution. If nO molds are added or subtracted from the assembly line, the wire load difficulty Of the line remains constant and the constraint is not binding. In an attempt to maintain this balance, 29 the MIP model allows the user to specify a range Of difficulty values (i.e. range from -5 tO +5). By examining the row constraint: "WIRE", one can see how the solution affected the total wire load difficulty Of the assembly line. The wire load difficulty constraint was not necessary to satisfy the plant requirements, but it greatly aided in the scheduling and sequencing algorithm. The LARGE and SMALL MOLD constraint was also really not necessary from the plant's standpoint. Generally, these constraints helped limit the types Of mold changes which can occur on the assembly line. Whenever a large or small mold is removed from the line, it'should be replaced by a mold Of the same size. Again, some flexibility in the model must be maintained for feasibility and, therefore, both totals should have a range Of values (i.e. range from -5 tO +5). By examining the row constraints: "LARGE" and "SMALL" constraints should sum to zero. This makes sense if one considers adding for an example, say a total Of two extra small molds. The molds which are removed must be large molds to compensate for the small molds which were added. One must remember, however, that we are considering just the total numbers Of large and small molds on the assembly line. The MAXIMUM MOLD AVAILABILITY constraint represents the upper limit Of the total number Of molds required. 30 Clearly, the plant cannot mount more molds on the assembly line than are currently available or physically present. If M(i) equalled M(i) available for several parts, serious problems in framing costs would result. Typically, the solution to the MIP problem would be in- feasible tO implement. The MINIMUM PRODUCTION constraint is the direct Opposite Of the MAXIMUM MOLD AVAILABILITY constraint. It represents the lower limit Of the total number Of molds required. In other words, this constraint determines the minimum number Of molds to meet the current production shipping requirements. The MINIMUM PRODUCTION constraint uses a weighted average of shipping requirements for a 4 week period, minus the initial inventory plus the guaranteed safety banks. The weighted average is composed of 70% first week shipped, 20% second week shipped, and 5% the third and fourth week shipped. These percentages seem to reflect the true shipping forecasts and with the safety banks, guarantees that the first week shipping requirements are met. This quantity is then divided by the production rate per week to give the required minimum number Of molds. Since this quantity generates a real number with a fractional component, the MIP model truncates the answer to an integer value. In examining the solution to the MIP problem, the plant can look to see if any of the required 31 molds for any part are at their lower limit. Typically, this condition rarely exists in the program unless the upper and lower limit values are fixed. The INVENTORY CONSIDERATIONS constraint is perhaps the most important Of the plant Objectives. The space requirements in the warehouse are a constant headache tO the plant management. The imbalance between production and inventory control Often forces the production of too many foam parts. The warehouse becomes full Of foam parts and with no co-Ordination between the different sections Of the plant, shipping requirements are not met. Therefore, there must be some inventory overflow constraint which takes into account the limited inventory storage space available in the plant. The INVENTORY CONSIDERATIONS constraint is calculated for each individual foam part. Two weeks production in terms of the number Of baskets, must be less than or equal to the available positions in the warehouse plus the number of baskets shipped and available to store in the warehouse. The total inventory and number Of parts shipped in one week is calculated and given in the row constraint: "INVEN". If inventory becomes a problem in the solution Of the MIP problem, and if surplus production is available, the model will tend to select smaller foam parts. The idea here is that more small foam parts can be packed into a basket, and less storage space required 32 for equivalent production. Therefore, this constraint tends to keep the warehouse from becoming filled to capacity, and a stable production and inventory policy will result. The UPENDER AVAILABILITY constraint represents the total number Of upenders or baskets available in the loading area for the packing Of foam parts. The plant would like to see the total number Of upenders kept in the plant to be less than or equal tO 30. In the plant environment, however, there is actually room for as many as 32 positions if the scrap area size is reduced. Again, this constraint is necessary because of the limited floor space which exists in the plant. The Optimal solution to any MIP problem must try to keep the total number Of upenders to a minimum. This is one of the reasons why a $1.00 per upender cost was assigned to each upender required for production packing. The UPENDER ASSIGNMENTS represent the last set of constraints which the mixed integer program considers. These two constraints indicate the upper and lower limits of the number Of upenders associated with a particular part. The upper limit was set at 6 upenders per mold code since in the plant environment, there are rarely more than 5 upenders actually assigned. The lower limit, however, is the real key to the assignment Of upenders by the MIP model. We knew that the production 33 cycle tO produce one piece takes about 15 minutes or roughly 4 pieces per hour. The UPENDER ASSIGNMENTS are then calculated by taking 4 parts per hour and multiplying it by the number Of molds required. The result is divided by the standard pack which is the number Of foam parts per basket. This lower limit assumes that the baskets can be moved into the inventory/ shipping area at least once per hour. On high volume parts, however, such as mold codes "BN" or ”BR", the assumption is made that these baskets can be replaced every half hour. High volume parts always require dedicated truck drivers because of the high production turnover rate. Another interesting point is that if one mold is assigned to the assembly line, there must be one basket allocated for that foam part. If there is a questionable mold which is a low volume part, the MIP model will try tO eliminate this mold from the new mold line-up. Since the mold is eliminated, there is no longer a need to allocate an upender for that particular part. Upenders are in such short supply that better use Of these limited resources can be determined by the model. 34 Figure 2. ASSEMBLY LINE MOLD CONSTRAINTS Description Constraint N LINE CAPACITY Z.M(i) = 181 i=1 ADDING MOLDS for i=1..N M(i)-A(i) <= M(i)current REMOVING MOLDS for i=1..N M(i)+R(i) => M(i)current FRAMING MOLDS for i=1..N M(i)-F(i) = M(i)framed F(i) <8 2 if mold = 'BN' or 'BR' F(i) <= 4 N WIRE LOAD Z,(D(i)A(i)-D(i)R(i)) <= 5 DIFFICULTY i=1 N .2&(D(1)A(i)-D(1)R(i)) => -5 1:: N LARGE MOLD 2. (A(i)large-R(i)large) <= 5 i=1 N Z.(A(i)large-R(i)large) => -5 i=1 N SMALL MOLD ‘2,(A(i)small-R(i)small) <= 5 i=1 N 21(A(i)small-R(i)small) => -5 i=1 MAXIMUM MOLD for i=1..N M(i) <= M(i)available AVAILABILITY 35 MINIMUM for i=1..N PRODUCTION .70*SH1(i)+.20*SH2(i)+.05*SHB(i)+.05*SH4(i)-INV(i)+SAFETY(i) M(i) => ------------------------------------------------------------ P(i) INVENTORY CONSIDERATIONS 2.0*P(i)*M(i) 5H2(i)+SHl(i)-INV(i)+SAFETY(i) -- ----------- <= WARE + ------------------------------ PK(1) PK(1) _ N‘ UPENDER AVAILABILITY Z. UP(i) <= 33 i=1 UPENDER for i=1..N 4.0¥M(1) ASSIGNMENTS UP(i) => ---~---- PK(i) 2.0*M(i) if mold = 'BN' or 'BR' UP(i) => -------- PK(1) for i=1..N UP(i) <= 6 PLATFORM LOADING for i=2..(N-l) RESTRICTIONS Mp(i-1)='AN'¢Mp(i)=‘MM'#Mp(i+l)='AN' Mp(i-l)='MM'#Mp(i)=‘AN'#Mp(i+l)='MM' "GUN" RESTRICTION Mp(l)=Mp(180) MP(2)=MP(181) TAPE AFTER POST for i=2..(N-1) CURE RESTRICTION Mp(i-l)=M-tape#Mp(i)=M-tapetMp(i+l)=M-tape MOLD SIZE for i=2..(N-l) RESTRICTION Mp(i-l)=M-large#Mp(i)=M-largetMp(i+1)=M-large Figure 4. (continued) 3.2 SCHEDULING AND SEQUENCING ALGORITHM Once the model knows what molds to add, remove, or frame, it is necessary to determine where on the assembly these molds belong. Briefly, this is the purpose Of the scheduling and sequencing subroutine. At this point in the program, the model is attempting to eliminate past problem areas, satisfy the sequencing rules, and minimize the number Of mold changes. The problem now exists in trying tO determine the minimum set Of possible mold substitution points which satisfy the MIP solution and the sequencing constraints. First, however, we should discuss the plant constraints that could not be satisfied in the MIP problem. They deal exclusively with the positioning relationships Of the molds on the assembly line. The PLATFORM LOADING RESTRICTIONS is a constraint which attempts to equalize the workload on the operator who must load wires into the upper sections Of particular molds. A special 40 foot platform has been designed to handle these complicated foam parts. It is critical that only one man handle the task, and the work be spread out. This is required, simply so as not to overload or overwork one Operator. The constraint states that when molds are added to the line, careful consideration should be given to not to place "AN" or "MM" molds next to each other. 36 37 Both molds together are difficult as far as wire load difficulty is concerned, and to have one man perform the wire loading carries him Off the platform. All one could do would be to let one mold go by empty, thus producing a bad part. This is a totally unacceptable solution to the problem, so the scheduling and sequencing algorithm should never let this condition happen. The "GUN" RESTRICTION constraint is perhaps one Of the most interesting constraints tO see on the assembly line. It states that mold positions #1 and #180, and #2 and #181 be the same mold type. The reason for this constraint is that at the end Of the assembly line cycle, the "gun" must be cleaned. Cleaning is accomplished by sending a burst Of high pressure air through the line, to remove any excess foam plastic that may have collected in the "gun". There are physically more than 181 mold positions on the line, but only 181 positions are capable Of accepting molds. Timing is a very important consideration, for the assembly line must be maintained at a constant speed even though cleaning is required. Four positions are necessary, and the mold spacing between positions #180-2 are slightly different than the remainder of the line. The TAPE AFTER POST CURE RESTRICTION is another constraint which attempts to solve a sequencing problem on the assembly line. There are several parts which require 38 stapling a cloth piece to the foam part after it has gone through the curing oven. Mold codes: "MM", "AJ", "AH" and "KL" must be spread out so that one operator can perform the work. Recall, however, that mold code "MM" was one of the molds which required platform wire loading. The PLATFORM LOADING RESTRICTION and the TAPE AFTER POST CURE RESTRICTION then are in direct conflict with each other on this particular mold. One constraint forces the molds together while the other requires that they be separated. In any case, some balance and compromise between constraints is Often the solution. l The MOLD SIZE RESTRICTION is the last scheduling and sequencing constraint to be considered. It simply states that when scheduling molds on the assembly line, two large molds cannot be placed next to each other. Besides being physically impossible to install, the large molds typically have a higher wire load difficulty which makes them tougher to sequence. This is one Of the few constraints which MUST be obeyed at all times fOr a feasible scheduling and sequencing solution. 3.3 SUMMARY The past two sections have described the assembly line scheduling model constraints which were implemented in the mixed integer programming subroutine and the scheduling and sequencing subroutine. The mixed integer programming Objective function and Optimization constraints were explained in respect to the plant's production plans and problems. The following chapters deal with how these constraints were actually implemented, and describe the output which resulted from each Of the subroutines. 39 IV. SCHEDULING SYSTEM OVERVIEW This chapter describes the scheduling system overview which represents a detailed analysis Of the foam scheduling model. The main program and the five assorted subroutines will be briefly described in this section to acquaint the reader with the flow Of the program model. The Objective Of this chapter is to explain the computer programs from the input through to the final scheduling and sequencing section. A structured programming, modular design approach was used in the model to help reduce the possibility Of errors, to make the code understandable to others, and to break up the various program functions (11). The assembly line mold scheduling model is composed Of a main program and five subroutines as follows: 1. main program - MAIN 2. input processor - INPUT 3. assembly line pictorial subroutine - LINEUP 4. generate constraints subroutine - GENER 5. mixed integer programming subroutine - MIP 6. scheduling and sequencing subroutine - SCHED The computer programs written for Assembly Line Mold Scheduling are presently Operating on an IBM 370/145 VM/VSl (virtual storage) computer at General Motors Manufacturing Development. It could, however, run on 40 41 any computer system which makes use Of the Programming Language One (PL/l) Optimizing Compiler (8,9,10), and IBM's MPSX/MIP Mixed Integer Programming package (2,3,4,5,6,7). The mold scheduling subroutines were specifically designed tO run in less than 768K (due to MPSX/MIP) Of virtual core memory. The five mold scheduling subroutines and main program were compiled and stored in an Object module library for increased speed and easy access. Typical execution times averaged about one minute (CPU) with 40-50 seconds Of execution time spent in the mixed integer programming subroutine. 42 SYSTEl’l SUBRDUTINE OVERVIEW / Program Flow INPUT H MAIN H T \L MIP $ Ly * % to Figure 5. System Subroutine Overview 4.1 MAIN PROGRAM - MAIN The MAIN program Of the foam scheduling model follows many Of the structured programming conventions. It merely represents a calling program to tie together the various subroutines. MAIN gives a thorough listing of the static external (i.e. similar to common in FORTRAN) references and explains the meaning of each Of the various arrays and variables. Before the prOgram calls a subroutine, however, a message is displayed at the Operator's console, so that the user can determine what subroutine is presently being executed. This helps in debugging the model, especially when the mixed integer programming subroutine is found to be infeasible and terminates abnormally. In any case, it represents an easy method Of determining the time and position Of execution during the flow Of the program. MAIN rarely has to be changed since the control Of the program remains fairly constant. 43 4.2 INPUT PROCESSOR - INPUT The input processor subroutine, INPUT, represents the first working program Of the foam scheduling model. Its purpose is to initialize the static external variables and arrays, and to read the various input parameters and current mold information. The program begins by reading the mold line-up title card, which is an 80 character description Of the problem to be solved. The parameter input card follows the mold title card. It has variables necessary for the problem, such as the total number Of mold types (NUM), the number Of shifts (SHIFT), the total number of molds on the assembly line (IPOS), the number of currently available positions in the warehouse (WARE), and the average wire load difficulty for three consecutive positions on the line (LWD). The following NUM (typically 25) cards are now read into their respective arrays. This group of cards is Often referred to as the "static" section, because the values Of the parameters rarely change. Variables such as mold codes (CODE), part numbers (PART), mold size (SIZE), wire load difficulty (LOAD), number Of part per cavity (NUMPRT), platform loading (PLAT), total molds available (MOLDS), total molds framed (FRAME), tape after post cure (TAPE), standard pack per basket (PACK), 44 45 production rates per week (RATE), value Of the parts (VALUE), and safety stock (SAFETY) are read into the program. These variables are required in creating the mixed integer programming constraints, and for future scheduling considerations. The final section Of the input processor deals with the mold line-up information. This group is known as the "mold line-up" section because the current assembly line configuration must be known to the foam scheduling model. It consists Of reading the 181 assembly line mold codes as they appear on the line in their current sequence and position. The subroutine then returns to the MAIN program before being transferred to the LINEUP subroutine. 46 omen 99.: aa—m oo.n soc emu: amps e~.— cc~— mm.n omnm eh.— o~.~ ma.p oN—N ma.— oenm ec.’ Omop ~m.~ ~mpp om.— ecn~ ow.— ehp— an.n ech~ pm.— cc- ~p.~ camp 69.. ch— cc.— wrc m—.s cm: ca.n can anoa own $0.: omh ~o.m Necn ac.— NSOM ec.p wepm mc.p geese nO~P¢czOmz~ malfimm Mama ado: If F 8' Q N ZZIHHHZIBZZZZ-IZID'D-ZNIZII N. wzna =Uzu= 646905609589 N‘- .- pp IDO- ppp an.28"IBIIIQIB3..II~ISII o-p C’NN—PP’PNNNNPNNNNNNNPNPPF u“ 'OODNNF'W“F@°G O 0.506 mama—Imammmammmmammm—smmm—Im oocpcccm harpoccm Naconho n—cOBeo NPOOFoo mnemwa eehmeam cahmocn HNNHMH— p—Nhrh— weamnh— haqmmhp cchemc— ncsscop Ncaawc- memcacp Ncmcac— nmmccwp pmrcowp aha—co— co~hhwp oCNFBc— hopcoep eo—cec— ocmhmc— pap m 2: Figure 6. Input Processor Summary 4.3 ASSEMBLY LINE PICTURE SUBROUTINE - LINEUP The assembly line picture subroutine, LINEUP, is perhaps the most important subroutine in the foam scheduling model. It conveys a picture of the current assembly line mold configuration and does a great amount Of error checking. A mold group is composed Of a mold position (1-181), a wire load difficulty for that particular mold (0-22), the mold code (i.e. AC,BN,BR), and a space for the problem area or special assembly line functions. The lower left side of Figure 7 summarizes, by mold type, the number Of various molds on the line. The 181 mold positions, at a glance can then be examined tO determine where the problem areas exist. These are denoted by a character string Of_'*****' under the molds in question. A problem area results when the sum Of wire load difficulties for any three consecutive molds exceeds some wire load difficulty average (say 27). The symbolic characters "@G" and "$$" denote tape after post cure and platform loading work, respectively. This can give the user valuable information about the sequencing rules tO determine whether certain mold types are bunched tOO closely together or spread out tOO far. These symbols also appear along with the problem area field, under the mold codes. In several instances, one 47 48 mold type (i.e. MM) may have both functions, and appears on the computer printout as an over printed character string. In the lower right hand corner of Figure 7, a summary Of the problem areas is given. It states the mold positions which exceed the wire load difficulty average and also gives its total. If no problem areas exist, a comment about platform loading and tape after post cure will appear. This implies to the user that the run was successful, and that no major problem areas exist on the prOposed future line-up. Finally, after the mixed integer program and the scheduling and sequencing subroutine has been completed, the LINEUP subroutine once again is printed. This time, however, there are several distinct changes. In the lower center of the page, there are three columns (i.e. Mold Position, Add Mold, Remove Mold) which summarize the line position and mold changes that have to be made. This in effect, is the solution Of the foam scheduling problem, and quickly aids the user in making his weekly mold decisions and changes. If no modifications have been made to the assembly line, this section will then be empty. The final scheduling sheet then, refers to the assembly line as it would be if all the changes had already been made. It is the only output which is necessary for Production Control personnel to 49 use in making their weekly mold decisions on the assembly line. 50 9;. er. I: .. ha. v'e.- P c .c p. .p I... 2 S .. e .. e .. e¢. .r. cr. mr m. s. m c a .— 5 cm. «A. :~. .m as it a. em as a. a a .. e co .9 ~e .e ooOOoOMoooofioo .. as no 2: . e "M e ~c .c O: on e. .2 2.. 2 e .. e .. e. an em .n pun—acubL—c 82—: 43:; eq =. e. e. c. .. N. c. or .1. - .0 r.» c a.» co. =.:h_ v.3 Mex: 4 25.2.3...— ma .c. u. c -— a; up n 6 can: III .0000. a. a. a: O. mm x: mm :- mm c: .. u. a o a. e a a. o e e .. . a .e. an. as. c.. ... a». m.. 9.. .n. ~.. .p. es. a: mm x: mm gs an es an x: mm x: mm no mm x: mm .. m- .. a- .. m- .. a- .. on .. a: .. m .. e .w. ~«. .m. er. en. ca. .2. c.. we. as. .c. mg. .g. 9.. 9.. «a. s. mm a. s. .. mm s. a. p. we .. mm .. mq .. u. .. a- a a o ~m a e e - e a . a- n .. .~. e~. 9.. e.. p.. e.. m.. o.. ... ~.. ... e_. ea. 2:. .c. we. 0.0... u. as u. :c u. on mm a: .. an en mm D. D. e: a: e .. a .. e .. m- .. e m: e. a o e c. r 9: ex .c ee we a: .c ~e .c a: e. c. A. e. me up u. ......- on a. mg as u. m. a. n- c: .. e: au .. a: .. cc .. so a: .p e: am c: an m a e nu e m . e . .n a . m .m a m: .r em mm gr .e ~m .e ow or e. .. e. m. o: a. a. an a: ma a: an s: an ea mm x: D. an o. an O. a. a. .. a- .. a- .. a- .. a- .. o - e .. e a a r. .~ .~ ~k .~ e. a. e. .. e. r. n. .. ~. .. o. ..\e¢\s= .4 o. e c 9:. ee. .. m .. e 9n. cm. .. mm . a we. no. 00.... a. as O a a. we .. m. .— o .2 an O. c. c o e e u~e--=nu---¢A-u--carv-—-:.r-e-- .8 .3: n...— u.— up. rt: u.». «A: tax are a...— a...» .. a... u...‘ nu: 1: use n-c i=4 .3: r..¢ 1.4 "=¢ as» we» nu: c: —._ I: who—.2... L: sue—2.x anti. so u. n: .. e .- .e. co. me. n: mm 2: .. e .. w.. n.. ... as O. a. O. o e e .e. ~c. .e. .- ea c: s. e. m . .. an 9: x: mm 2: .. e .. a. c. .. 100000. we O. 3. mm c e p c a co... 3.:518GCsl— haiku—r. u:—.— 6.2.: I ~. Stu.— ..Llu: .00.. S .. c .. 2;. .e. m s c .— ~-— ~.— mm .g a e ee. :9 ea c: s. r . cc 6: E z. e .— a- r. a. z. e e c . ‘FNQUQ $‘W‘H‘ cream H (:6 “09 I p z: a... .3. — -< ~€ o.- r... r: :s .. .n 2' Figure 7. Mold Line-up Summary 4.4 CONSTRAINT GENERATION SUBROUTINE - GENER The purpose Of the GENER subroutine is to construct a set Of card image constraints to be used as input for the mixed integer programming subroutine. GENER begins by reading the "dynamic" forecasting information; the name referring to variables which change value after every program run. This section in fact, summarizes the current inventory levels and the future plant shipping requirements. Variables such as initial inventory balance (INVBAL), production required for lst week shipped (SHIPl), 2nd week shipped (SHIP2), 3rd week shipped (SHIP3), and 4th week shipped (SHIP4) are included for each mold type. The model checks to see whether any information is missing or mispelled, and totals the initial inventory and parts to be shipped in the first two weeks. A summary of the forecasted production information follows the initial line-up computer printout, and aids the user in finding errors in the input data. At this point, the model has enough information to start generating the input constraints. The card images must appear in certain columns and must be sorted in the proper order. The input consists Of five major sections: 51 52 1. row cards 2. column cards 3. right hand sides 4. mold range cards 5. bounds section It is important to note that a file, called "CARD" is created within the subroutine, and that all the card images are stored there for future use by the mixed integer subroutine. Figure 8 on the following page, represents a summary Of the inventory and shipping requirements at the start Of the model. These values are necessary to determine the future weeks production demands and mixed integer programming constraints. 53 omen sewn 3o: cmp: QQN. ommm QN—N mNPN acmw amo. Nm—p comm esp. scum chN comp cow— are cmo can own cmh wean ~30m mapw :UObm >me¢m .Nw~m :NNFN cm: amon— :amc c mmmm cemm 63cm ~ooo mN— sch v.03 ammo omen csnw cam— emp~ one. Q cc: coo c—cm coem came numm~=m an”: :8: mmpmo n uzcezu>z~ Acuhuzu A4939 «ammo. u wanna $39 In anmmuzm mhza~ Ac: 2mm: can 2mm: azm gum: Pm. E¢Hhuzu oUh leuhgtz6mzu zo~h0=QCmm I ozubmdumxoh ac . Figure 8. Forecasting - Production Information 4.5 MIXED INTEGER PROGRAMMING SUBROUTINE - MIP The Mathematical Programming System Extended (MPSX/MIP) package is composed Of a set Of procedures, a subset Of which deals only with linear programming. The strategy for solving an linear programming problem is the ordered execution of a series Of these procedures. The user conveys the proposed strategy to MPSX via the MPSX extended control language (ECL) written in PL/l. The procedure call statement of the control language calls the linear programming procedures and transfers arguments to them. The linear programming procedures Of MPSX use the bounded variable/product form Of the inverse/revised simplex method. The simplex method is based upon the fact that if there are m constraints (or rows) in the constraint matrix and these are linearly independent, then there is a set Of m columns (variables or vectors) which are also linearly independent. Hence, any right- hand side (RHS) can be expressed in terms Of these m columns (called a basis). The simplex method uses these basic solutions, stepping from one to another (by exchanging one column with one column not in the basis on each step or iteration), until a solution (called a basic feasible solution) is Obtained that meets all the criteria, including the requirement that all the 54 55 column values be non-negative. Problems for which this last condition does not hold are automatically subjected by MPSX to an internal linear transformation to bring them to this form. The bounded variable feature allows the user to specify limits on the activities levels for any or all Of the variables. Either upper or lower bounds, or both, may be specified. Since the bounds would otherwise have to be represented by explicit constraints, use Of this feature leads to economies in the number Of constraints and in computing time. After a basic feasible solution is found, the simplex method steps along, examining a series Of basic feasible solutions, to find one that satisfies the requirement that the value Of the functional (or Objective) row be a maximum or minimum; this is called the Optimal solution. Not all linear programming problems have an Optimal solution. If there is no solution at all in non-negative variables, or none that keeps the variables within their specified bounds, the linear programming problem is said to be infeasible. If a feasible solution is found, but the constraint rows do not confine the value Of the functional row to finite values, the linear programming problem is said to be unbounded. If it is assumed that the nonbasis variables all have zero value, then there are m basis variables left whose 56 values have to be chosen to satisfy m constraints. The solution Of these constraints for the values Of the m basis variables requires the inverse Of the m*m matrix Of the coefficients of the basis variables in the constraints. The recognition Of the role of this inverse leads to the revised (as Opposed to the original) simplex method. The product form of the inverse is a representation that leads tO economies in computing time and storage requirements and to increased numerical accuracy. In the product form, the inverse is represented by the product of a sequence of m*m matrices, only one column Of each matrix differing from a column Of the unit matrix. It is necessary only to record which column, and the nonzero elements in that column, to have a full description Of one matrix in the sequence. (This column is termed the "eta" vector.) There is one matrix in the sequence (and, therefore, one eta vector) for each iteration that has been carried out. Clearly, as the sequence lengthens, the computational advantages decrease. However, the product form can be consolidated by “reinversion”, which, in effect, replaces the existing product form Of the current inverse by a minimal (in regard tO the number Of eta vectors and number Of nonzero coefficients) product form. 57 The purpose Of MixedInteger Programming (MIP) is tO meaningfully increase the scope Of MPSX by providing the capability for studying mixed integer linear programming problems. A mixed integer linear programming problem is a linear programming problem with two kinds Of variables: integer variables and continuous variables. Integer variables can take only integer values, that is, ...,-2,-l,0,1,2, etc. Continuous variables can take any real number as a value (classical linear programming problems have continuous variables exclusively). The study Of a mixed integer linear programming problem is performed in two distinct stages. First, the problem is Optimized by considering all integer variables as being continuous. It is, therefore, an ordinary linear programming problem whose Optimization is performed by the linear programming module Of MPSX. The Optimal solution Obtained is called an Optimal continuous solution. Then the problem is searched for integer solutions, that is, feasible solutions satisfying the constraints and giving integral values to integer variables. The search for integer solutions is aimed at finding an Optimal integer solution. A straightforward strategy leads tO a series Of integer solutions tending towards the Optimal integer solution (in other words, the values that these integer solutions give to the Objective 58 function become better and better). When an integer solution is found, it is not immediately known whether it is Optimal. The search must, therefore, continue until either a better solution is found or it is proven that no better solution exists. Occasionally, particularly for problems with many integer variables and relatively loose constraints, good solutions are quickly found, but a long computation is necessary either to improve them slightly or tO prove their Optimality. The MPSX/MIP control program is composed Of a set of procedures which perform various linear programming functions. Figure 9, the Mixed Integer Programming Flowchart, summarizes the basic building blocks of this linear programming package. These procedures start with the LP constraints, Obtain a continuous solution, and finally determine an Optimal integer solution. 59 Figure 2. Mixed Integer Programming Flowchart f CONVERT PICTURE SETUP PRIMAL INVERT ‘ MIXSTART MIXFLOW SOLUTION Problem Input - CONVERT, PICTURE Initiate a Problem Solution — SETUP Obtain a Continuous Solution - PRIMAL INVERT Search For Integer Solutions - MIXSTART MIXFLOW Print Solution - SOLUTION 60 CONVERT is the basic means Of problem input. The procedure reads the input data, converts it into packed binary format, and writes it on the PROBFILE. Not only does the PROBFILE built by CONVERT contain all the problem data, but it may also be augmented by bases which are saved during a run. SETUP is the basic means Of initiating a solution Of this problem. It has three main purposes: 1. Storage allocation and I/O initialization. 2. Creation Of the work matrix. 3. Determination Of an initial solution. PRIMAL, the main Optimization procedure, Optimizes the problem contained at present on the work matrix. PRIMAL usually terminates in one of three states: 1. the Optimal solution 2. the infeasible solution 3. the unbounded solution This procedure initially requies a complete starting basis; this is accomplished by SETUP, which supplies an all-logical basis. The user may modify this basis or supply a complete basis on his own. PRIMAL exists with the present basis stored internally (this basis may or may not be Optimal). It uses a composite algorithm and the revised simplex method. It progresses from the initial basis to the optimal basis by a series Of vector 61 interchanges; one vector is introduced into the basis and one is removed. Each Of these interchanges is known as an iteration. INVERT is the procedure that takes a current basis and produces its inverse in terms Of eta vectors. At each iteration in the Optimizing process, the inverse Of the current basis is not computed but is represented by a set Of eta vectors.Each iteration produces a new eta vector. At certain times, it is profitable to do a complete basis inversion, both for time considerations and for the removal of possible accuracy troubles. PICTURE creates a "picture" Of the current matrix in condensed format; it contains 45 rows and up to 55 columns per output page, and the pages are numbered in matrix notation for easy identification. PICTURE must be called after SETUP. The magnitude of the nonzero coefficients is indicated by an alphabetic code or an asterisk. A summary Of magnitude classes, together with the meaning Of the alphabetic code, is given at the end Of the output. The RHS ranges, and the bounds on variables will be indicated, if they exist. SOLUTION tabulates the current solution Of the linear programming (LP) problem. Normally, this tabulation is printed (that is, written on the system device SYSPRINT), but, by using the keyword parameter FILE, the user can 62 direct that it be filed in Communications or Standard Format on some other designated file. The status Of the solution can either be: a. FEASIBLE b. NONOPTIMAL (feasible by implication) c. OPTIMAL (feasible by implication) MIXSTART is the basic means for preparing the search for integer solutions. It has three distinct uses: 1. Initializations to begin the search for integer solutions from the Optimal continuous solution. 2. Restoration of a tree and the associated search status previously saved by MIXSAVE in the problem file. The MIXSTART parameter for this Option is RESTORE. It is possible to forbid certain nodes which are presently waiting in the restored tree from being chosen as branching nodes during the new part of the search. Nodes and prenodes are not distinguished here because they have similar processing. 3. Continuation Of the search initiated by MIXSTART in this run in certain special cases. One such case is when the search has been interrupted at an integer node and MIXFIX has been called. In this case, MIXSTART has created a mixed phase, destroyed later on by MIXFIX. This mixed phase is now to be restored in the same run. 63 MIXFLOW searches for integer solutions using the 'branch and bound' method. A MIP/370 tree is scanned by two main processes: 1. Node analysis: choice Of a branching variable and determination Of its new bounds, creation Of new nodes, and choice Of a branching node. 2. Branching: Optimization of a subproblem. The search for integer solutions must be initialized by MIXSTART, which initializes the beginning Of a search, restores a tree previously saved by MIXSAVE, or continues a search already initiated. The primary elements Of the problem, XOBJ (name of the Objective function) and SRHS (name of the right-hand side), must not have changed since MIXSTART was called. When MIXSTART is used to initiate the beginning Of the search, the current solution need not be an Optimal continuous One. When MIXFLOW begins the search, the current solution must be an Optimal continuous one and PRIMAL should have checked its Optimality-feasibility in the run. MIXFLOW normal exit is taken when the last integer solution found is proved to be optimal. This solution is automatically restored and becomes the current solution. 4.6 SCHEDULING AND SEQUENCING SUBROUTINE - SCHED The scheduling and sequencing subroutine brings to a conclusion the work begun by the assembly line mold scheduling model. At this point in time, several important questions have been resolved by the mixed integer programming subroutine. They involve what molds should be added. removed, or framed to meet the production shipping and inventory requirements Of the plant. The problem for the scheduling and sequencing subroutine to solve is what mold positions should be chosen to: l. minimize the mold set-up changes 2. eliminate past problem areas, 3. Obey the assembly line sequencing rules 4. insure that the proper number Of each mold type is placed on the assembly line 5. minimize the average wire load difficulty for all positions on the assembly line The assembly line scheduling and sequencing subroutine analyzes this problem and heuristically solves this problem. The subroutine begins by reading the Optimal or best integer solution Obtained from the mixed integer programming subroutine. The output, stored inla file named "OUT", is the MIP solution written in a standard format file. The solution is printed for inspection by the user and appears in 64 65 Figure 10 on the following page. In this figure, the name and activity columns are perhaps the keys tO understanding the solution to the MIP problem. They combine a two letter mold code with a three letter section identification. In the ROW SECTION, there are only several values which are important to the reader. The Objective function: "OBJ", assembly line capacity: "LINCAP", inventory production level: "INVEN", and the total number Of upenders required: "UPENDER", represent the key elements Of the model. At a glance, one can see the total cost Of changing the production level and whether or not the imposed constraints were met. The solution Of the COLUMN SECTION, however, gives the detailed analysis Of the solution Of the model. The naming convention Of the column section is slightly different than in the row section. The name column combines a two letter mold code with a two letter section identification and a mold size. The two letter section identification can be described as follows: 1. II - integer number of molds required for a mold . UP HEEBer Of upenders assigned to a mold type 3. AA - number of molds to be added to a mold type . SS number Of molds to be subtracted from a mold type 5. FF - number of molds to be framed for a mold type ACTIVITY 10.0000 6.0000 6.0000 2.0000 1.0000 3.0000 1.0000 1.0000 2.0000 0.0000 13.0000 11.0000 1.0000 1.0000 6.0000 5.0000 3.0000 3.0000 15.0000 15.0000 1.0000 32.0000 32.0000 2.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 2.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 3.0000 1.0000 1.0000 3.0000 3.0000 1.0000 1.0000 1.0000 1.3000 2.0000 6.0000 1.0000 2.0000 2.0000 7.0000 1.3000 5.0000 11.0000 1.0000 1.0000 ICOST 2.9700 5.8700 5.3700 7.3700 6.5000 5.6200 6.3700 5.3700 5.1700 6.3700 0.7500 5.3700 0.3700 9.3700 7.8700 5.7500 5.7500 5.7500 5.6200 0.0000 6.1200 6.1200 6.3700 1.0000 1.0000 1.0000 1.0000 1.3000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.3000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.3000 7.5000 7.5000 7.5300 7.5000 7.5000 7.5000 7.5000 7.5000 7.5000 7.5000 7.5000 7.5000 75.0000 75.0000 SOLUTION 0? TE! COLUSI SECTION LLIHIT 5.0000 6.0000 5.0000 2.0000 1.0000 3.0000 1.0000 0.0000 2.0000 8.0000 0.0000 11.0000 1.0000 1.0000 0.0000 2.0000 3.0000 3.0000 9.0000 15.0000 1.0000 0.0000 6.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.3000 0.0000 0.0000 0.0000 0.0000 0.3000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.3000 0.0000 0.0000 0.0000 0.0000 0.0000 66 ULIHIT 01.0000 19.0000 19.0000 2.0000 0.0000 9.0000 9.0000 5.0000 0.0000 21.0000 21.0000 21.0000 1.0000 2.0000 6.0000 6.0000 6.0000 6.0000 23.0000 22.0000 5.0000 50.0000 63.0000 6.0000 6.0000 6.0000 5.0000 6.0000 6.0000 6.0000 6.0000 6.0000 6.0000 6.0000 6.0000 6.0000 6.0000 6.0000 6.0000 6.0000 6.0000 6.0000 6.0000 6.0000 6.0000 20.0000 20.0000 20.0000 20.0000 20.0000 20.0000 20.0000 20.0000 20.0000 20.0000 20.0000 u0.0000 00.0000 3.0000 2.0000 RCCST 0.0000 14.5000 0.0000 91.0000 7.6300 13.2500 0.0000 0.0000 10.0000 15.5000 0.0000 10.0000 73.0000 80.5000 1.5000 0.0000 89.3800 09.3800 0.0000 10.7500 0.0000 0.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.3000 0.0000 0.0000 0.00C0 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.2500 0.0000 0.3000 0.7000 NUMBER 133.0000 130.0000 135.0000 136.0000 137.0000 139.0000 100.0000 101.0000 102.0000 103.0000 100.0000 195.0000 106.0000 107.0000 108.0000 109.0000 150.0000 151.0000 153.0000 150.0000 155.0000 156.0000 157.0000 150.0000 159.0000 160.0000 161.0000 162.0000 160.0000 165.0000 166.0000 167.0000 168.0000 169.0000 170.0000 171.0000 172.0000 173.0000 170.0000 175.0000 176.0000 178.0000 179.0000 160.0000 101.0000 102.0000 130.0000 196.0000 109.0000 172.0000 191.0000 195.9000 197.3000 290.0000 201.0000 293.0000 205.0030 231.0000 232.0000 207.0000 250.0000 Figure 10. MIP Standard Format "SOLUTION" STATUS [V I7 I? 1' I? I? IV IV I? [7 I? IV I7 I? IV I? IV I? IV I? 11 IV IV 17 1' I? IV 17 {7 IV I? IV (V [V 17 I? I7 I? I? IV IV IV I? I7 I? I? I? IV 17 TV I? I? IV I? [7 {7 I? I? IV I? I7 FAME ACIIS YPITS YLIIS ANXIL IJIIL ANIIL AOIIS 11115 82115 IIIIL AXIIS IVIIS SGIIS 88115 BJIIL BKIIS KRIIS KLIIS 80115 11115 IIIIS BRIIL BEIIS ICUPS YRUPS YLTPS ANUPL AJUPL XNUPL AOUPS AYUPS IZOPS AIUPL 11095 AVUPS BGUPS BHUPS BJ"?L 31395 K?UPS KLUPS SHUPS 77UPS IIUPS BRUPL HSUPS YRAAS AHAAL INAAL 1:115 lunar 11115 89315 KRIAS grits 71115 [£115 3 35L 80533 9H??? KRFFS 67 For the example in Figure 10, the name: "BNIIS" tells the plant that 32.0 small "BN" molds are required to satisfy the production inventory and shipping requirements. "ACUPS" implies that 2.0 upenders MUST be assigned to mold type "AC". Finally, "BHAAS" states that 1 small "EH" mold must be added to the current assembly line configuration. The scheduling and sequencing subroutine tries to determine the problem mold in the specific problem area on the assembly line. the model would remove this mold and replace it with the largest wire load difficulty mold which staisfies the sequencing constraints from the set of ADD molds. At all times, the intent of the model is not to exceed some specified wire load difficulty average (say 27 as a first attempt). There will be molds, however, which cannot be added or removed from the set of problem areas on the assembly line. Therefore, the model arbitrarily starts at some mold position (typically position 60), and hunts on either side of this mold position until the set of SUBTRACTED molds is satisfied. At this point, we have solved many of the problem areas, and at least know the set of mold positions which must be changed. This strategy insures that the minimum number of mold changes occur, and that these mold changes are as close as possible to one another. We also 68 know the set of molds which have to be added to the assembly line at this point. The model systematically places the required ADD molds into positions, keeping in mind the assembly line constraints. If the assembly line cannot be satisfied at the stated wire load difficulty, the model increases the difficulty and tries to solve the sequencing problem again. Figure 11, shows the intermediate results of the scheduling and sequencing algorithm. The four columns represent the position of the mold changes, the molds to be added, subtracted, and the wire load difficulty needed to satisfy that particular mold position. For example, if the model was unable to schedule a particular mold type, this sheet would explain which molds caused the trouble, and what mold positions could not be filled. It represents temporary output, but also an alternative schedule if the plant can tolerate the scheduling violations. The assembly line scheduling model and in particular the scheduling subroutine, tries to take into account the human factors of the assembly line. Up to this point, it has been told that an average wire load difficulty of 27 is acceptable at the plant. So the question arises during the scheduling program; what is the upper limit of wire load difficulty that an average assembly line worker can handle without falling behind? 0 ICNT= 0 AVAIL 501?? 0 P05 ADD SUB NEED 69 AV an 1 61 11 an 3 SS VV an 3 71 II BK 10 75 BH‘ BK 10 uz AZ an 12 01 1R BI 12 “0 59 BR 8 39 KR BM 13 38 A! an 8 82 BK BI 17 83 AV as 3 37 K3 an 13 36 an BR 3 80 KL 30 12 3S KL BR 10 3“ an BR 8 86 BK an 17 33 IL 8! 10 32 an BR 8 89 AH 08 12 31 AV BR 10 30 BR 30 17 90 AN DU 16 20 AV BR 1 8 AV IL 5 179 AV BK 10 THE SCHEDULING 5 SBQUEHCING ALGORITHH HAS SOLVED WITH ,x_____.._-..-.———-....i ..-_- ...- ..._—-._. _.__-..... AN AVERAGE WIRE LOAD DIPFICULTI O? 28 ‘Figure 11. Intermediate Scheduling Results 70 This is an important consideration, since a person must perform the work. An average wire load difficulty of 33 might be acceptable for one or two positions on the assembly line, but is cannot be maintained for any long period of time. The model considers this fact, and even though there are problem areas, the model tends to help spread out the difficult positions. In other words, the assembly line model considers the human aspects of producing foam parts, and tries not to overload the amount of work the wire load team can accomplish. Previous models have just considered the wire load difficulty average as a number, and although answers were obtained, they were far from being feasible to implement. Figure 12, on the following page shows the final mold line-up summary sheet. It summarizes the positions and the molds to be added or removed from the assembly line. It also describes the problem areas which resulted after implementing the new line-up and shows the new configuration of molds in their proper positions. In other words, this figure represents the final mold scheduling solution and future mold change line-up of the foam assembly line. 71 :33 1C- 3:. c ... a. c: a. I: .— ..w— z: .. n~. .4 e .p bhA:L—LL—= sa—a ackth e; a: an o; .. m1 er. .r. or. e. an a: : a: .. 6.. ¢~. .~. .6 s. we 3: .. 51 pp '9 .9 N0 00.... .. .. mm . . ~u ~¢ .. cc :3 z: )4 ... . — c 6. EH tn 3: .— - =~ ... em ~= e~ ~. cm .2 en a. :e....:. 9.... :u.=:za :— . ... mm a: me .e mm .: e .. e .. a .. . .r. .m. ~w. .m. er. .3. u. a. mm a. .4 .4 e .. e 9 c o . 1n. .~. an. 6.. ¢.. ... mm @1.o.... m. .. =m .. a: u. .q e m. e e. 6 ac e: a: .e a. we as ......1 s. cc .. .. an a. . ¢ . . - c er er en we .v .r mm 2.. we 2: mm x: : .. = .. a .. c~ r~ ax - an .~ ~.\e=\ae :- 6:— ma ma ... an as c: .0 cc a OCNII N 1‘! so... I3—h1233Lz— $21hum D: 95. .¢ .9 p at z: -— a— U1 on— an at. at 9—— x: c. we =r n.- b> n e. a: —. ~— x: 3m :4 e. a . ... mm :9 ca 11 11 e p— a no. pep 000000 e : M. - e 6 ~.. ... ma x: mm o c. c e: a. c. a u. g a: .p m m . . s. e. '5' ‘ r'm-me .- '1‘:. U C c. 2' p: 2: :¢ x: an >4 x: =: .— .- pc .p N< :- at as a: a: t: A: t: s» cc us a: ..c ,1 :a:: .... ¢ me c 05— Ah. I: .» ~t. ... up n :——.96— Dc c 55 a. a: w m: a: —. n— rx—a :46: c: .— ~h. ¢¢DU p I ’1'!“ U ’1‘. Dc 6 ~— up . .h— s:— :e .. r. Q- :8 m a. Au 0 .— - 9.. ea c: c: a: .e ~c r. .. .c re mm ~a .- c: e. e. .. c. m. c. an ~. .n en ce a ac...nce case rc.:c .- u. u. z: o. e e = .. e o.. ... cc. ... cc. mm x: mm a: mm m- .. a- .. a an. ... ... ... ... a. s. .. mm o. g; .. n m- c . cc. we. as. .c. ~e. Q. ...... n. c: .- cc .. c: a a r .. m .p a. - .n e. e. s. .- mm a. mm .. a o a a ~c .a e. e. e. a. u. u. mm o. e o e mm : e. . c h c 23—; :szc ..... a. 1:; ~. -ec . 1.. m. 1.. r. -cc c r.e . ... . .xe ... M I: m «a; p 1:: . up... .. 1.. .. 1.. e .3. N as. . ... . .c. . .2. e ... . "a. n .=. c ... c "a. r— 0U: u:.. z: .: ¢m=c=z ...:b g: a: z: ma .. m1 .. m1 we. .2. ... «a. a: my 2: ma .. o- .. a- ... ~.. ... e.. 6. mm .. .. e a- e .. .e. ea. c: a: .. «a p. c: .. mm — r . ~. 9. a. .e a. a. q. as .q a. c: a. c: e m e c .. c. r. e. .. a. s. z. e a e e a a . ~ 2: .— .e. 8: —- 9~. ad 5: as t: r; A- 3» Figure 12. Final Mold Line-up Summary 4' . 7' SUMMARY This chapter has tried to examine the various subroutines which comprise the assembly line mold scheduling model. We examined each subroutine's function and objective, trying to relate each piece to the overall model. The mixed integer programming subroutine and the scheduling and sequencing subroutine described here determine the proper number of molds, and the placement of these molds on the assembly line. Now that the model has solved the assembly line scheduling problem, let us examine what conclusions can be drawn from this. 72 2. EXPERIMENTS This chapter will examine an experimental run made by the plant to determine the assembly line sequence of molds. It summarizes in pictorial form the input and output as it actually appears in a production run. The keypoints in the following pages are denoted by a series of numbered circles which can now be described: 1. assembly line header - 80 character title card (Figure 13). 2. parameter input card - includes the total number of mold types, the number of shifts, total number of molds on assembly line, number of currently available positions in warehouse, average starting wire load difficulty (Figure 13). 3. static mold information card - includes the mold code, part number, mold size, wire load difficulty, number of parts per cavity, platform loading, total molds available, total molds framed, tape after post cure, standard pack per basket, production rate per week, value of the part, safety stock (Figure 13). 4. assembly line input mold position summary - the molds are listed in the order they actually appear on the assembly line before re-scheduling (Figure 13). 5. constraint solution - denotes the name and activity of a row, represents the answer of the value indicated (Figure 15). 73 74 6. required molds section - denoted by an "II" in the name, this group represents the required number of molds necessary to satisfy the production requirements (Figure 16). 7. required upender section - denoted by an "UP" in the name, this group represents the required number of upenders or baskets needed to pack the foam parts for each mold type (Figure 16). 8. added molds section - denoted by an "AA" in the name, this group represents the number of molds to be added to the assembly line for each mold type (Figure 16). 9. subtracted molds section - denoted by an "SS" in the name, this group represents the number of molds to be removed from the assembly line for each mold type (Figure 16). 10. available molds array - this section represents a summary of the mold types and their particular wire load difficulties that are available for scheduling at some assembly line wire load difficulty average (Figure 17(a)). 11. current scheduled solution - this section represents the mold position, molds added and subtracted, and the highest wire load difficulty which can be fitted into this slot on the assembly line (Figure 17(a)). 75 12. solution statement - this temporary printout states that the model has solved the problem with a particular wire load difficulty average (Figure l7(e)). 13. final mold line-up - a summary by mold position showing the line-up of molds on the assembly line once they have been sequenced and scheduled (Figure 18). 14. mold position summary - a listing by mold position of the molds added and subtracted to establish the new line-up (Figure 18). 76 as 2: 2c 2: z: 2: an m: z: 3: 2c so an a: 2n 2: z: x: z: z: z: a: b) an an an 2: x4 an >¢ an me >> :4 >> mm x: 2: >1 z: 23 2: cc 2: an >> :2 2: >> a: 2; 2c 2‘ Q¢ t: z: t: pc I: 2‘ t: cc >> 2: an as C: 2: 2: 2m pg >> an a: a: 2a a: >> :: x: U: Uc an U4 5: U¢ Dc 3‘ A» :5 up z em pc 2 p _p m ccchCCN z: z a: o: z p o a hmmpcch a: z N m z p 2p m Ncocmho pp 2 ap NN z N n m npccpcc >» p cp NN » p m m Npcchco :: z a a z N h a chmccm Ho p n c z N c m asthcr 4x p p c z N e m c:tho~ a; z a a z N op m pNthhp x; z c a 2 N NN A ppNhrhp w: z a c z N pp m magmehp =a : m c z N pp m N=OMpbp 3m 2 pN NN : p c m achsocp >¢ 2 Op pN z N c m massacp up 2 hp pN z N w A Nccscrp 34 a a c z N pp m mcmcccp N: z m c z N pp m Ncmcoop »¢ 2 m o z p w m rmmcccp 0‘ a a o p p pp a prmcccp 2‘ p p N z p b m Oprccp a: p N a z p Np A caNhhcp n¢ u N N z p Np a cCNhhcp =¢ z Mp Op 2 N o m hcpc¢cp pp 2 3p ep 2 N o m ccpccwp up 9N pa 2 p c m acrbrcp Uc :N camp pcp n mN so... 26pb¢czCLzu m=lfimm utma ado: I No man; :Uzma co... Figure 13. Sample - Mold Line-up Summary 77 Name: n paCkzubzu Acuepz. Acka hammcp u wanna Oak :— anmmp=m m9=> copp mNom Owes ccam Nnan No0: chap! :: omeN Nsm ch mppp can Nhn Nhn .U chN cccp. chp Nan chp cth cmapl a: chN cecp =Npp Nan mcop . sosN owe—u xx cemN chm oaNn econ ceam. cmop cosN z: omap aan cmpn thm wmen snap NNcp w: Nmpp mNp c c c c o :2 :OpN sca can can 6 cap ccpt :: whpp @th :caN cth Nch cccm cccpl >¢ QOCN N00: to»: csNo @mo: :Ncc mews: x4 ocNN ONms :mpm cchm amen amp: meal a: chp cch ccsp prp Nmpp 3cm cab N< osz Npm :Ncp cch :Ncp mmN cob p< cm: was coap omcp cth mapp c: o: cmm oer Nmsp ace Nmap aha 35m z< can 6 cr 6 mm cap as. .4 ONE ONp ocp cwp esN ch ch at oNh ch ch osN cNm con can :4 Nacr Nacp :cON o:MN acpN ophp so: A» Noam eNo Npsn :cpN canN sosp cmo :p wapN cc: caeN oeap . cchp coo chh U< zucpm amamuzm cmcmpzm omamuzm numepzu puebzu>2p gen ppmn< 333.3 3333. 33333 ......»3 3._m..¢ 3:333 33...: 33.....c 3333.r.. 3333 . 2.. 3333.... 3333.~.. ........ - . . . .:.3...3. . 3333.33. 3333.33. 3333.33. 3333.33. 3333.33. 3333.33. 3333..3. 3333.~3. 3333..3. 3.:.3...3. 3333.33 3333.33 3333..3 3333.33 3333.33 3333.33 3333..3 93:: 0 N9 3333..o =c¢Cc99 3333.33 3333.33 3333..3 3333.33 3333.33 3333.33 3333..¢ 3333.~3 3333-.3 3333.33 3333.33 3333.33 3333... 3333.33 3333.3. 333... 3.. 3333.-h 3333.~. 3333..3 3333.3. 3333.33 3333.33 3333..3 3333.33 3333.33 3333.33 3333..3 3333.~3 3:33..3 3333.33 3333.33 3333.33 3333..r 3333.3r 3333.3 3333.3 3333.3 3333.3 3333.3 3333.3 3333.3 3333.3 3333 .. I 3333.3 3333 ... 3333.3 3333.3 3333 .3 .....3.. ... 3333.3 3333.3 3333.3 3333.3 3333.3 3333.3 3333.3 3333.3 3333.3 3333.3 3333.3 3333.3 3333.3 3333.3 3333.3 3333.3 3333.3 3333.6 3333.3 3.. 3.. . 3 3333.3 3333.3 3333.3 3333.3 3333.3 3333..- 3333.3 3333.3! 3333.3: 3333.3 c.3~..- 3.3..3- 3333.3 3333..- ..:33 .3 3333.3 3333.9- 333:..- 3333.3- 3333.3 333..3- 3333.3- 3333..- 3333.3 3333.3 33.... .3 3333.3 3333.3 ........ ... 3333 .3 3333 .3 3333 .3 3333.3 3333.3 3333.3 ........ ... 3333.3 3333.3 3333.3 3333.33 3333 ...: 3333.~ 3333.3. 3333.3. 3333.3 3333 .. 3333 .9 3333.3 3333.3 3333.3 3333.3 3333..n 3333.3. 3333... 333.. .3 3333.3 3333 .3 3333.3 3333 .— 3333 .u 3333.~ 3333... ......3 .3. 3333.3w 3333.3 3333.3 3333.3 3333.3 3333.3 3333.3 3333.3 3333.3 3333.3 3333.3 3333.3 3333.3 3..3...3 3333 .3 3333.3 3333.3 3333 .3 3333.3 ........ ... 3333.3 3333.3 3333... 3333.3 3333.3 3333.3 3333.3 33.1..3 3333.3 3333.3 3333.3 3333.3 3333.3 3333.3 3333.3 3333.3 3333 .3 3333.3 3333.3 3333.3 3333.3 3333.3 3333.3 33.2..3 3333.3 3333.3 3333.3 3333.3 3333.3 3333.3 3333.3 3333.3 3333.3 3333.3 3333.3 3333.3 3333.3 3333 .3 3333.3 3333.3 3333.3 3333.33 3333.33 3333.. 3333-0. 3333.q. 3333.. 3333.~ 3333.~ 3333.3 3333.3 3333.3 3333.3 3333.~ 3333.3 3333.3 3333.~ 3333.. 33...... 3333 .3 3333.3 3333.. 3~.3.3- ~a...3- 3.23.3- 3333.3- 33.3.3- r~.3.3- 23.3.3- 3339.3- 3333.3 3333.3- 3333.3- 2'Q-h 0:1 3:3..3- ..33.3- 33.2..3 3333 .— 3.:.3.. 3333.. 3333... 3333.. 3333.. 3333.. 3333.. 3333.~ 3333.. 3333.~ 3333.... 3333.3. 3333... 3333.~ 3333.~ 3333.3 333.... 3333.. 3333.3 3333 .. 3333.3 3333.3. 3.2.3.3— 3333..- 3333.3 3333..- 3333.3 3333.3 3333.- 3333.3 3333... 3333.3 3333.3 3333..- 33..3 .- - 3333.3 3333.3 3333.3 3333.3 3333.3 3333.3 3333.3 3333.3 3333..- 33.3.3 «2...: r.:..3 3333.3 33.3.3 3~.3.3 3... ...3 33...... 3333.3 3...... .3 3:3: .3 2839-5 33... .3 ..33.3 3333 .... 3..3.....3 3:33.. 333...... 3333.~. 333.. .. 33.:..3 33.:..3 33......» 3.:.3.r 3:33 .. 33.... .. 3:33 .3 3...... .... 3333.3 3:33.~ 3333.. 3333.... 3.:.3.. 3333.3 3333.~ 3...... .— 3333.2 3333.3 33.:... 33.:...: 3333.3: 3.2.3.. 3333.3. 3.:.3... 33:3 .a 3333.~ 3333 .N 33.:..r 333:... 3333.. 3333.. 3333.” 3333.3 3333... 3333.~ ......... . 3...... .3 3333.. 3333.3 ......... N (continued) Figure 15. 80 zap—ls...- IND-.— uc .3 sun... Agata 3‘U8_._ p.282: $3.58: etc .— 22“..» 328:: 2.; _ «- azuax 328‘s :2“. a: aim—... 62x...- m: cccc.~n. accc.._. ca=o.=.. :ccc.e~. oec°.¢- cc:e.-. cacc.c~. cccc.c~. oaoc.c~. caoo..~. oas:.-. caco..~. ==ac.e~. c:cc.e.. ccco.:.. =ce=.~'. :c:¢.e.. ccccé ec:c.c ecco.c coco .o oooc.o cac... cccc.c ca:o.e 3:5... ooo:.c oaoc.c sea: .9 :23 .- t cccc.— .. eccc... 2.36.: ES: .9 «1.3:... =¢¢=.. ecu. 3:36..» $639.? czcs...‘ c::=. — :— ¢cc= .9 93:: .6 use: .9 ace: .6 33......» :92. ..p 65.5 .6 eaco .c c:=c.3 .222...- cscc .c =cc=.e cccc.= =:c=-: oc=:.o o:=o.e :c:c..c. 5:5... e:c:.o eacc.c ocoe.e =3:c.: :c:e.: e:cc.c ec:=.c =::c.a ee=:.e ...-cc .e IIIIIIIIIIIIIIII SEC.— c... t .~ 2.: :cc:.~ ccpz..o c:=c.. eec=.e s.mn.a‘ -¢c.c- .—.:.=n e:_~.e- ~¢:~.co racc.en eo=o.o ee::.e weec.c- cccc.e- w~.e.=u =.::..~p 3.: r 13.....5 e===.p ==:=.c: 3:5... :c:c...; ..r~.: mncc... p..c.= 22;... ~r:m .: mac:.o oc==.= occ=.¢ reef: :ecc.o :29 .c (continued) Figure 15. 81 v¢¢ng .. e:cc.~=~ c::c.e :=:=.=e ceco.= eccc.~ e:==.. n4... .. e:cc.w=~ :ece.= :::c.e~ e===.e a:=r.~ :ccc.. 4...: .. ecoc.~=~ c===.o e::c.ca =¢::.e ec=r.~ c:ac.~ eccsa .. cc:c..e. c:oc.e e:=c.o~ =ce:.e :cc¢.n case.- .\\\\\\\ ve¢2= .. ea:c.eep a:c=.o eccc.:~ =cc:.c :::m.~ eccc.— Aege¢ .. cccc..¢. ecc=.e :z:c.c~ =o==.e c:cw.~ cc:c.. m¢<4~ u. c<¢¢.¢c9!c:lni!e:=ch@ r===.=~ cpbchc c¢o¢.~ eco=.. 22:: 2 2.3.1; 55:... . 5:54; 25:... 2:... 4 5:3,. m¢.o« .. aecc..¢. cecc.e eccc.:~ =ecc.e eccm.s co¢=.n m==z= p. eeec.~=. e:==.. ecce.e cc:e.e ae:e.. ===c.r aa=¢s ». e:e=..e. e:=e.. eec:.e oc:=.e ee:o.. e:==.e v;:.. ._ eccc.er. e:e:.. ecce.c c:=c.c ec:=.. :c=¢.. v:=.- .. ==ec.op. e:==.. o:=e.e cooe.e c:c=.. e:=c.. na==c ._ ce:=.c~. eccc.. e:==.c eeec.e eccc.. c:==.~ a;=.3 .. ccco..~. ===c.— ecce.e =cca.a ===c.. ==e=.. maze: y. coec.np. e:¢e.. ccce.c eeee.o ccce.. ==::.. a==ec p. ec=e.a~. c:ee.. ec:e.c caec.c =cce.. c:ao.. na==c .. acco.~s. =c=:.. eo:o.u e:cc.a c:ce.. c=::.. 93:2: ._ e:ce.... :cco.. ec==.¢ cooe.e cccmhhilllllll aces.- ma=uc .. cece.es. oe=:.. o:cc.o ebbcneii1\llllldd:=.. ==cc.. 2:: .. 2.5.9.: .53.. , 333325... .32... 5:5.- aasag .. e:=c.c:m;:\-llwooec..-|!: e:=e.o ecoo.e :cc:.. cc::.— mg:s. .. .eoaa-~e. eeec.. eeec.¢ ecee.c :cee.. c::e.. e =e=c.¢a. e=e=.. eecc.¢ eeco.= ecce.— secs.— aa=:< .— o::c.w¢. e:c:.— ecce.e ccoc.e accc.— ==c¢.. aa=sc .. eccc.oc. :ccc.. ae:e.c ocee.e ccc=.— c::=.. 4;:a. .— cec=.~¢— =cee.. eecc.c eooc.c o:e=.. cc:c.. daze. .- a::c..a. :a:e.. ecco.e e:c=.e cc:c.. =eoe.. ma:;u -. :eeo.ee. =oe=.. ecce.e oc:c.e eccc.. c::c.. n;:=— .. ceoe.e«. ec¢:.. ceee.c ¢:oc.e cc:a.. :cc:.. ue=o¢ ,. eeec.en— ecec.— eecc.¢ =ccc.o eac=.. c::c.. m..:= »_ ocec..m. a=r~.r. eceo..¢ eeco..m ce~..¢ o:=c..e a.~x: ._ occc.er. :oae.o eecc.o: =cec.c. =c~..c cc::.¢c v3: .— 259.5». cc:e.w— 2:3... 53:.— cc- .c 22:... m.... .. eccc.nm. e:oe.a ocee.- cc:c.e. c:ea.. ecce.c. m..:c ._ eccc.nr. c:co.o eecc.—~ o:co.a caac.r ca:o.~. 4...: ». eecc.~m. cc-p.e— eoc=.. :cc=.n eem~.m cc::.. m..un a. :cc:.ce. ec.c.:. ce:o.¢ occc.w cer~.m ecce.r a..e= ._ cc:c.cn. a:r~.. eeco.c cc:c.. o=.c.p ezcc.c u_.== .— :ecc.~.. ecr~.n. eecc.c ecce.. cc~c.c =c:c.. IIIIIIIIIMwmmc ._ ecae.¢a. a:r~.~. ecco.o coo=.~ cc~..a e:==.. m__»utlll!lll:#vnllllt:l :cc:.wc. =c:o.o e==¢.mm =coo.e cc~..r cc:c.~ m._~q .. eaaasddwiltltllbbechpllllallllneco.—~ c:oc.e oer..t c::e.r a..x¢ .. c:==.—e. earp.e oeohéwlltlllllbmmm.~ ee~e.c cc:c.~ a..n¢ ». cece.~a. e:r~.c eo==.c oece4Nlllllllltchrhrlllltlv cccc.~ 5:: p- 335....— eccoé 3:56 occo.~ .5: .m :25.» n..:¢ .. =c=e.cc. :er~.e co:c.e =ccc.~ ocss.c e::=.~ a..g. ._ :o::.en. eeoe.e c:ce.e ooce.n ca~c.r ccc=.. a._a¢ .. eccc.... ecee.w. cs=c.c eoce.~ o:ew.c e::=.~ ......- : ceccé: 23%.»; 953.3 5.2... as: .n 55:.— m:.: : cocci-— cows .3. 35...... :35; 5.9:; 955.: 9::- : 33:4;— ccr~ .... 523.5 2:3.- ec~c.r 55:; m..;¢ >— o:cc.... cams... aces... coco.» c=.c.~ :o=:.. ace: mab¢pm aucc=a snow: p.:_a= h.c.;a pneu— .»_».h;¢ BO—PUum 2::aCU E SF 2. IC—P:J:m Sample - MIP Column Solution Figure 16. 82 p. >— .— b— b— ’— u— .- c::e...~ cocc.c- e:ee.cm~ :ece.w- cc:o..- ==o=.c.~ :c==.e.~ :oce.3.~ ecca.e eccm.c e¢o~.e o=e~.c 3:06.: :co:.e e:=e.o cocr.e e:=c.oc c::o.en ec=o.c~ acco.e~ eceo.:~ ac:a.e~ c:cc.o~ eccccam eac:.c =cce.e ococ.c o:eo.e o:cc.e ococ.o eocc.e =c:=.o 66:! .h c:cr.~ eccw.h eaow.h cccm.n oocroh eecr.n :ccm.~ :=c=.. coca.- .:.:e.~ =c:=.~ ====.- ===c.r 55: .N c===.. (continued) Figure 16. 83 . om ca 9mm crow: so: m~ aaa mm to asa=ouaa_= Sac; emu: uc<=u>< za zeua au>aom m: ec:=¢o cuaacza uz_4=au=um m=+ c z: Nap c z: mwp a a: He mp Sp ac e1 cap :p xx 0: co ep 4: as mm c :< pa c 2: 05 c zm ~= Np a: m:. r5 c C¢ U< m: m za U: c: :p a: up 5: h :< .c ph p r: U: cm A. 2‘ 3C 5 ca xc cp mm x: we Np :< 2: ac Np pi 2m cc cmwz a=m p2: ms; 3 o a» o 4» pp 2: pp 2: pp :9 pp :4 Np a: mmucm Aug>¢ h ubzup a (LWD 28) Sample - Intermediate Results Figure l7(a). 84 am an or~t~ 99. Fur. can»: so: an :3.— Lo whaanuphhun ado.— mc—a n04¢u>¢ :4 ...—L3 Qua—om we POZI¢U tnaacpa cz~.—=cn=0m ”2:. 2: 2m p44 as a: A: 3‘ :4 as an C< :2 A: 3: t: z: 0‘ z: 3¢ an cum: LhHam A r pi "E "E up. on U: u: pp ac c: :m an an c:m A~¢>< on: c N:— mNp m— CC— C: xN "p.20— 3 Figure l7(b) . Sample - Intermediate Results (LWD 29) 85 on pm 09 bum etuun as: an cad Lo abd=Uumhuc 9404 man: ucdzupc z¢ zeua anua°m an abazcu cuamsz wzuaaamzum ask an 2: 5‘ a» a: 5‘ a: 9: an we 3‘ 2‘ U: an we xx c: 04 U: an Ho 4: 2e 31 A» :2 U1 3‘ o: a: no 34 2a he up can: a=m mchm Ap<>¢ 9:1 m N:— mNp mp cap 00 :N pa mom 2 I: z: zn zc fi¢ anUM : Figure 17(e). Sample - Intermediate Results (LWD 30) 86 pm LC mm 09 9mm peaaupmmpo a‘oa amp: mccmm>¢ z: =bp3 am>qom an bozz¢u cupco=m a z: a 25 pp a< ON 3: hp xx hp ex 5 3¢ a 24 a 2m mp gm 9 o< a a: mp a: op 31 3 t: op z< op 0‘ op mg mp 3< mp ..m can: mmpom Uz—mm 322 m. a»: 24 61 cm 0: U1 we we a: U< a» A» U: mam Apt; 53‘ u: ~.—=om:um "=2. Nap m~p mp cop cm cm pa .1. N: ..L. .5... c: s: :. cm or re cc .3. cm as: a z: 20 :a w: "Eamon a Figure l7(d). Sample - Intermediate Results (LWD 31) 87 Np L3 ~ha=UHhmHa atoa Mam: wo¢zx>¢ 24 =h~= ampqom w<3 n=9n¢0c44 UzHUzm=3mm w Op op Np pN z: z: fi< a: a: A: a: 2‘ as m: :1 mm A: 3‘ t: zc c: xx :< 5: sum: hmuam x: mam Au<>< no: pp p mng=om=Uu mzb ~=p mNp mp cap :3 cc no; 2 z< usz~ a Figure 17(e). Sample - Intermediate Results (LWD 32) 88 pp.- 1.2,— cp use p u.. c. .pp N. van cp pp cc cc pp. p -.pp ea c a: 94 r~p c up: pp :2 pp cc ccp : "cc 9~ a: an a: :e r .c: III! op cp cc up pe p .2: 111115 . cp cc pp. 9p p up:. ..A put u: 2: pus. . u 3: pp pl: pp 2: pp p .pp ep .2 llllllllllllla :- 2: 9: r upc :. pr :c s: re p .2- :p pc pp pp cc p -pc -- .... G: c: 66 p up: pp pp. 3‘ 3: an N u 3‘ pp op cc up op p "cc pp pp 4: 2: pp : upc pp cp c: pp cp p "cc w. pc . cc up w: p nzc - er c: .c ~c : Lap ~p cp , 4c §_ pp p .cp pp ppp cc pp mp p. .oc pppcopp ccpp pppep c:.p_acp =43: cpcc ccpppmcp ccpc c: ecupc cupcccp cpscpc ac. cps: pcazc p: ppcccc ccp2p mm pp cc mm cc pp mm cc cc mm cc mm cc wm cc mm cc mu cc mm cc a e c. :1 pp p m c pp p pp c pp c pp m pp c- pp c pp pcp :cp app cpp ppp cpp cpp pp. ppp pp. pp. opp pcp ccp pep ccp map pcp pcp pap pc. opp... us ca mm c: mm p: mm cc mm mm cc mm cc mm cc mm cc um cc pp mm cc pp mm pp p. p. a pp 5 pp c pp c: c pp pp pp a pp 5 pp a pp p e .p pp p . ccp 9:. cap pm. cap rrp pep .pp pr. ppp ppp ~pp ppp app opp cpp pp. opp app ppp ppp pp. ppp epp p~p 9Q mm pc mg up .c ma pc mm cc - - mm .p mm pp mm pp mm pp cc pc mm c: wm pp cc pp p .p c c a «N e 3 pp p p 9 pp p p o m p m . a c c. c 9 pp pp e .p . pp. pp. cpp pp. ppp p~p ppp pp. cpp pp. cpp ppp opp ppp ppp pp. cpp pep cap pep cap pep pep pep pcp pep .5. pp pp p: poopoopooppooo .- a. ...-co con-p. 0.0... 9! cc m p: c: up cc mm cc mm pp mm cc pp mm cc cc pm cc cc cc cc cc cc cc cc cc cc cc cc .p cc p. a p pp .p c pp e .p a p c pp p c p. pp p pp pp p pp p pp p c. p pp p. « pp p c: we pp pp pp pp :9 cc cc pc cc pc pc pc pc pc an op cp pp cp mp pp pp pp pp cp ac cc pc cc p; IS‘ ’ p I. nappoooo can... a. O. 0.0... oooooocooocpppouooopoococc mw cc mm cc cc cc 3: cc pp cc up pp cc mm up pp cc cc pp up up cc pm pp ma cc mm cc ma 2: mm cc p r pp p c. p pp p pp p pp p c pm a p p. pp p 9 pp pp M- pp 9. p. a- pp m- pp p. pp pc pc pc pc pc pm cc pp pr me pm pm pr pr cm pp cp pp pp mp pp .- pp pp cc pp c. pp pp p. pp pp - popoopan ocoooc-opo opp... mm pc pp p: cc mm as ma pp mm c: Up s. cc mm pp cc mm pp mm pp .4 ac up up mm o. =c pm pp pm .p c pp p .p p. c pp p p c c. c Mp pp a p p. m. c m- e pp c a- a ”a c c a- e m- p p. .p s. pp :p pp pp pp pp .p pp pp op pp c. pp cp pp pp pp p. pp cp p c p c r p p p p -\a:\2: ooooo 83—»¢¢ICK:— &:uhnm Sa—d c;:: u «- mama =Utu: 00.0. Figure 18. Sample - Final Mold Line-up Summary 17;. CONCLUSIONS This final chapter examines the performance of the foam assembly line scheduling model. An optimization model has the advantage of determining the optimal set of molds which should be placed on the assembly line for any particular shipping and inventory requirements. It has the capability of minimizing some cost objective function, and yet provide the best possible combination of molds. The assembly line scheduling model has satisfied all of the plant's constraints as follows: 1. Placed the proper molds on the assembly line to meet the weekly shipping demand. 2. Assigned upenders to each particular mold type. 3. Minimized set-up and inventory costs. 4. Obeyed all of the mold sequencing rules. 5. Kept the average wire load difficulty to a minimum. 6. Obeyed the warehousing constraints. 7. Considered the human aspects of assembly line work. 8. Kept the distance between mold changes to a minimum. The model generates a new mold configuration each week. It looks into future weeks demand, adds and removes molds which tend to minimize future problems and 89 9O bottlenecks. Finally, the assembly line mold scheduling model generates a simple summary report to help Production Control solve the plant's foam scheduling problems. There are several assumptions and problems, however, that could not be put into the assembly line model in its first version. The model assumes that the production requirements and number of shifts are known. The assembly line is currently scheduled for 3 shifts, but economically this is not always a feasible solution. Due to the economy, car sales, transportation problems, and even weather conditions, the plant may be forced to limit the number of shifts. Future versions of this program must account for a changing number of shifts and whether or not Saturday overtime should be scheduled to eliminate backorder production. Ideally, if the production forecasting information could be relied on, the model should schedule the assembly line for a two week period. This would give the plant more information to help solve future problems or bottlenecks which could occur the following week. The production shipping requirements would have to become better estimates of the actual production. The linear programming algorithm of the model, however, would become much more complicated and would require more computer execution time. 91 Finally, something must be said about the performance of the model as it compares to the actual production of the plant. The assembly line mold scheduling model, in trial runs, has compared very favorably with a solution which is as good or better than the plant's actual mold assignments. Production activities very closely model the changes which are actually taking place on the assembly line. One of the reasons for the model's success is that a great deal of time and effort was spent defining the problem and analyzing the steps needed to determine an Optimal solution. Differences in the mold scheduling line-up were due to past scheduling weeks. The assembly line, however, closely approximates the manual scheduling activities which have occurred in the past. In conclusion, the model has recently been implemented in the plant environment, and is responsible for the plant's assembly line mold scheduling functions. LIST OF REFERENCES 1. Hillier, Frederick S. & Lieberman, Gerald J., Operations Research, Holden-Day, Inc., San Francisco, 1967. 2. IBM Mathematical Programming System Extended/379 (MPSX/37J) Basic Reference Manual, IBM Corp., SHl9-1127-0, April 1976. 3. IBM Mathematical Programming System Extended/370 (MPSX/370) Control Languages, IBM Corp., SH19-1094-1, April 1975. 4. IBM Mathematical Programming System Extended/370 (MPSX/370) Messages, IBM Corp., SHl9-1fl96-6, October 1976. 5. IBM Mathematical Programming System Extended/37J (MPSX/370) Mixed Integer Programming7376 (MIP/37J) Program Reference Manual, IBM Corp., 5819- 1T94- -1, April 1975. 6. IBM Mathematical Programming System Extended/376 (MPSX/370) Operations Guide (OS/ES), IBM Corp., 5319-1697-1, October 1976. 7. IBM Mathematical Programming System Extended/370 (MPSX/370) Program Reference Manual, IBM Corp., 8319- 1099- -1, October 1976. 8. OS SS/l Checkout & Optimizing Compilers: Language Reference Manual, IBM Corp., GC33-9009-3, July 1974. 9. OS PL/I Optimizing Compiler: Programmer' 3 Guide, IBM Corp., SC33- 6066- -3, March 1976. 10. OS PL/I Optimizing Compiler. Messages, IBM Corp., SC33- 9627- 3, July 1975. ll. Wirth, Niklaus, Algorithms + Data Structures = Programs, Prentice-Hall, Inc., New Jersey, 1976. APPENDIX A SOURCE PROGRAMS mmmmmmmmmmmm mmmmmmmmmnmm mm mm mm mam-mama mmmmmmmm mm mm mm mm mm 000000000000 000000000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 000000000000 000000000000 >>>>>>>>b> >>>>>>>>>>bp >> >> >> >> b) b) >>>>>>>>>>>> >>>>>>>>>>>> >> >> >> >> >> >> >> >> >> >> 22 32 233 322 2232 3332 23 33 32 x: 2: 3333 x: 32 z: z: z: 33 z: z: z: :3 z: z: z: z: z: z: IIFOAM J08 (6001190911.HAQKLE1MSGLEVEL=19CLASS=L99RTY=8 //S3 EXEC PGH=LINK l/STEPLIB 09 DSN=FOAM.LOADLIB.DISP=SHR // OD OSN=D°L.NPSX370.DISP=SHR. VOL= SER= S‘YSPAfivUNIT=3330 I/SYSPRINT DD SYSOUT= A. DC =1RECFMaFBAoLRECL=133o8LKSIlE= 1330) IICARD DD UNIT=3330. SPACE= (CYL:(2.2)I¢ // DISP=1ULD. KE‘PI.VOL= SER=EEEEEE. DSN: 96J311. MARKLE.CAR09 // DC8=ILREC1= 80.8LKSIZE112960. RECFH= I=8) //OUT 00 UNIT=3330.SPACE=ICYL.(5931I.DSN=PI69999.NARKLE.3UT9 // DCRSIRECFNIVBoLRECL=204yBLKSIZE=1024I.01SP‘(OLD.KEEPI. // VOL=SER=EEEEEE //ETA1 DD UNITS333095PACE=ICYL913911ooCCNTIGI //ETA2 DO UNIT!3330.SPACE'ICYL913.1Io.CDNTIGI l/MATRIXl DO UNIT83330.SPACE=ICYL91101ooCONTIGI l/MATRIXZ CD UNIT=3330.SPACE'(CYL.(10).:C3NTISI l/MIXHCRK DD UNIT=3330.SPACE'(CYL9(3.311 I’PROBFILE DO UNIT=3330.SPACE=ICYLoI593)I l/SCRATCHI OD UNIT=333095PACE=(CYL915IooCDNTIGI I/SCRATCHZ 00 UNIT3333095PAC531CYL0157ovCUNTIGI //G.STATIC DD * . ‘*'** SENCN LINE #2 - MOLD LINE SET-UP INFORMATION tits: 25 3 181 1500 27 AC 1657569 S 0 1 N 41 27 N 55 415 1.85 2145 YR 1660106 S 9 2 N 19 14 N 78 820 1.89 3042 YL 1660107 S 9 2 N 19 13 N 78 820 1.89 3042 AH 1677286 L 12 1 N 2 2 Y 20 385 5.02 720 AJ 1677290 L 12 1 N 4 2 Y 20 340 4.99 720 AL 1681929 S 7 1 N 2 1 Y 28 325 4.33 336 AN 1690551 L 11 1 Y 9 4 N 22 375 3.94 858 AD 1690553 S 6 1 N 9 5 N 22 405 4.15 858 AY 1690562 S 11 2 N 5 5 N 64 790 1.80 1280 AZ 1690563 S 11 2 N 4 4 N 64 790 1.80 1280 AH 1694482 L 6 2 N 21 18 N 72 830 2.17 2280 AX 1694483 S 0 2 N 21 19 N 66 830 1.51 2706 AV 1694709 S 0 1 N 21 20 N 28 415 3.38 1176 86 1733947 S 11 2 N 1 1 N 64 650 1.80 2304 SH 1733948 S 11 2 N 2 0 N 64 710 1.80 1152 BJ 1737211 L 22 2 N 6 7 N 48 820 2.52 1920 8K 1737223 S 16 2 N 6 6 N 60 810 1.89 2340 KR 3062748 S 9 2 N 6 2 Y 56 780 1.93 2128 KL 3362749 S 9 2 N 6 3 Y 56 790 1.93 2128 GI 3063026 L 7 2 N 4 4 N 62 800 1.74 2356 “N 9679612 S 5 1 Y 23 15 Y 28 415 3.55 1288 VV 9679613 S 3 2 N 22 18 N 84 830 1.28 4158 II 9736082 S 14 1 N 5 2 N 24 380 4.24 864 RR 20001557 L 0 1 N 50 49 N 22 410 3.96 3144 SN 20001606 S 11 1 N 63 47 N 24 410 4.09 3456 //G.N0LD DO ‘ YR YR YR YL YL AC BJ AC AC YL YL AC 8N AC AJ AC 8N BR 8N 8R 8N ER 3N 8R 3N BR 8N 8R 8N BR 8N 8R 8N 8R EN BR 8N 8R 8N 8R 8N BR “N AN MN VV “M AN VV HM VV MM AX BJ MN VV MN VV MN 8J NM VV NW VV NH AH VV HM VV NM 8K MM YL NM BK AC AC 88 BK 8R AX 8N 8R 8N AX 8N AX 8N AX 8N AX BN 8R KL AX AH AX AY AX AH AC (R AC AH VV AZ VV Ad VV AH AV BJ AV AX AV BJ AV AV YL Ah 8N AX 89 BN 8R AC 8N 8R EN 88 3N 8R 8N BR 8N 6R EN FR SN 88 EN FR 8N 8R 3N 8R 8N BR EN FR 8N 8R 8N 8R 8N SR 8N 8R SN 8R 8N FR 8M 89 SN AC 3N AC AX AX VV 86 BR A0 8R BK 8R AC 8K YR YR l/G.DYNAM DD * AC 2778 2970 2750 2750 4290 YR 1518 3744 3744 3432 5460 YL 1784 3276 3588 3900 5616 AH 138 320 360 400 680 AJ 337 280 240 280 480 AL 110 0 112 56 0 AN 689 1188 1188 968 1936 A0 1419 968 1364 880 2156 AY ' 1884 640 1024 512 1536 AZ 696 896 1280 640 2176 AH 745 5760 5184 5184 8496 AX 8139 5280 5940 5412 8580 AV -765 2576 2520 2744 4816 80 255 256 384 256 768 SH 317 128 128 0 128 BJ 667 2496 3072 3168 4992 SK 2974 2640 2880 3120 5040 KR 713 1120 1344 784 2240 KL' 244 1232 1232 896 2352 GI 2777 0 0 0 0 MM 2056 4536 4480 4536 8344 VV 146 8910 9108 8910 17820 11 390 240 240 192 480 BR 15688 13376 15224 15886 27224 8N 17456 15456 17568 18432 32621 wt //S4 EXEC 96M*IEBGENER9C0ND=(1000vNEvs31 l/SYSPRINT 00 SYSOUTaA IISYSUTI DD DSN=P169999.MARKLE.0UToUNIT83330.VOL=SER=EEEEEE:DISP=0LDc // DC8=1RECFH8VBA.LRECL=204.8LKSIZE'10241 //SYSUTZ DD SYSOUT=A l/SYSIN DD * [It 33 33 333 333. 3333 3333 33 33 33 33 33 3333 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 >>>>>>p>>> >>>>»>>>»>>> >> >» »> >> >> >> >>>>>>>>»>>> >>y>>>>>>>>> >» >> >> >> >> >> >> pp >> >> m-n--- ----- ~— mg —— ~— ~— ~— ~— mm ----- nnnnnnuunn 22 222 2222 22 22 22 2 22 22 22 22 22 22 22 22 22 22 22 2 22 22 22 22 22 22 22 2222 222 22 PL/I OPTISIZING COHPILER RAIN: PROC OPTIONS(HAIN) REORDER: STHT 1 SOURCE LISTING RAIN: PROC OPTIONS(HAIN) REORDER; /tOOOOOOOOOOttttttttttttttttttttttttttttttttttttOtttttottttttttttttOtt/ /tt#ttt#t¢t HOLD LIng-np 111;; CARD 6:666:66OOOOOOOOOOOOOOOOOOSOOOOO/ /t¥#¢#¢tttttttttitttttttttitttttttttttttttttt#*tttttttittttttttttttttt/ /"’ TITLE HOLD LIlE-UP TITLE CARD ttt/ /ttttSOS:OttttwOttttttttttOtttttttttctttOtttttOtttttttttttttttOOOOOOSO/ /tttsttttt* pgggggrga c330 Iapoaagrron ttttttttttttttttttttttttttttt/ /OOOOOOOOOOOOOOOOOOOOOOOttatttttttOOOOOOOOOOOOOOOOOOtttOtttttttOtOOttt/ /’*’ HUB TOTAL RUBBER OP DIPPEREUT HOLD TYPES "‘/ /tt¢ SHIFT HUBBER OP SHIFTS WORKED ttt/ /"’ IPOS RUBBER OP HOLD POSITIONS ttt/ /“* RARE TOTAL HUHBER OP BASKET POSITIORS II WAREHOUSE *‘*/ /t#$*$tt¥tttittittttttttt88fitllttttttfittttfitt.8.88.8..tttfilfiitOttttttfi/ /***“‘#**# STATIC IIPORHATION OF THE HOLDS I! THE SYSTBH **‘***’***/ /ttttttttttttttfittttttttttttfitittifitittttttttttttttttttttttttttitttttt/ /... CODE(50) HOLD LETTER cones .../ /... PAaT(so) PART ADuDLRs ..., /... 5122(50) AOLD sxzn (L-LARGE/S-SHALL) ..., /... LOAD(SO) 3:33 LOAD DIPrIcuLTT ¢*¢/ /... NOHPRT(50) nausea or PARTS In CAVITT (1/2) .../ /"* PLAT(50) PLATPOPA coax (I-YES/fl-NO) ..., /... AOLDS(SO) TOTAL uuuaza OP AOLDS AVAILABLE *’*/ /... PRAUB(SO) cuaazAT nausea or AOLDs In PRAuzs ..., /... TAPE(SO) TAPE APTBD POST can: (Y-YES/N-NO) ..., /... PAcx(50) snnaza OP PARTS Is STANDARD PACK (BASKET) ..., /... BATE(SO) PRODUCTIOI RATE PER SHIFT .../ /... VALUE(50) VALUE OP THE PART ..., /... SAPET!(50) SAFETY STOCK REQUIRED IN INVENTOR! ..., /#$.‘tt‘ttttttttt###tttttttt#Otttttittfit...Otfiifiititfitttfittitt.tttfittt/ /.......... DTuAnIc INPODAATION OP THE HOLDS IN THE SYSTzu ........./ /‘.$t¢#fi$t$¥$*¥Ottttttttttt0*tittitttttfiitttt.#tttfifitttitttfitfitittfittt/ /O#t INVBAL(50) INITIAL INVENTORY FOR EACH PART ‘**/ /‘** SHIP1(50) PARTS SHIPPED IN TST WEEK "‘/ /*‘* SHIP3(50) PARTS SHIPPED IN 3RD WEEK ttt/ /ttt SHIP4(50) PARTS SHIPPED IN 4TH PEEK *‘*/ /**‘ PCD(50) INITIAL INVENTORY - 1ST WEEK SHIPPED “*/ PL/I OPTIHIZING COHPILER HAIR: PROC OPTIOUS(HAIU) REORDER; STHT O‘U'IGWN 1U 15 16 /ttttt¥ttttttttt¥#tttttti#tt$itt#t**$#*#ttt.‘t¥#$tt*tt¥¥$fi¥tt$Ottttttt/ /********“ HISC. VARIABLES 2305 THE LINE-UP PROGRAH lfl“**"""'"“""""""‘"‘l /ttttttOSROOOttOttttttOttOOOOOSOOOSSSOROSOCOOStttttttttttstttttatttttt/ /t$¥ /t#¥ /t$t /¢t* CLINE(200) CARRIER LETTER CODE ON SCHEDULED LIKE-UP *‘*/ LPOS(50) HOLD POSITIONS URERE PROBLEH AREAS EXIST 1399/ LDIPP(SO) TOTAL HIRE LOAD DIPPICULTY FOR PROBLEH AREA "‘/ HTOT(50) TOTAL RUBBER OP HOLDS ON LINE FOR EACH PART ‘**/ /tfitfit‘t‘fi‘ttttttfiittttfittfi0$tlttttttfifitttttttttfifitttttttt$tfittlttttfit/ DCL DCL DCL DCL DCL DCL DCL DCL DCL DCL DCL DCL DCL DCL DCL INPUT ENTRY EXTERNAL: LINEUP ENTRY EXTERNAL: GENER ENTRY EXTERNAL: HIP ENTRY EXTERNAL: SCRED ENTRY EXTERNAL: (RDA,SHIRT,IPOS,LRDA,ISIR) PIIRD BIR(15) STATIC EXTERNAL; RARE PIIRD BIN(31) STATIC EXTERNAL; (SIZE(SO),PLAT(SO),TAPE(SO)) CRAR(1) STATIC BITRRRAL; (CODR(50),CLIRR(200)) CHAR(2) STATIC EXTERNAL; VALUE(SO) PIIED DEC(7,2) STATIC EXTERNAL: PART(SO) CHAR(9) STATIC EITRRRAL; (LOAD(50).ROAPRT(50),uOLDS(50).PRAAR(50),PACK(SO).RAT3(50). SRIPT(50),SHIP3(50).SRIPu(50).IRVSAL(50),SAPRTI(50), PCD(SO).SHIP2(50),LPOS(50),LDIPP(50),ATOT(50),LRDIPP(200)) PIIBD BIN(1S) STATIC EXTERNAL: TITLz CRAR(80) STATIC RITRRRAL; 1 CHARGR(100) STATIC EXTERNAL, 2 (POS,NEED) PIXED DIA(15), 2 (ADD,SDD) CRAR(2); ICOURT PIXPD aIu(15) STATIC EXTERNAL; PL/I OPTIHIZIUG COHPILER STHT 17 18 19 20 21 22 23 24 25 26 27 28 29 30 HAIR: PROC OPTIOHS(HAIN) REORDER; /**0$tttfittttttttitttttt$08880¥ttt$8.30ttttittt/ START THE HOLD SCHEDULING SIHULATION “*/ DISPLAI('+ CALL IAPUT; DISPLAI(°+ CALL LIURUP; DISPLAY(‘+ CALL GENER; DISPLAY('* CALL HIP; DISPLAI('+ CALL SCHED; DISPLAY(‘+ CALL LINEUP: DISPLAY(’+ PIUISH: END HAIR; /*#t#‘#*tttOtttttttfiifittttt$$88003#ttttfittifltt0/ ERTLRIRG STATIC INPUT PROGRAH'): RRTRRIRC PROCRAR LINE-UP'); EUTERIUG THE DATA GENERATION PROGRAH'); ENTERING THE HIXED INTEGER PROGRAHHING PROBLEH'); ENTERING THE SCHEDULING PROGRAH'); EUTERIHG FINAL PROGRAH LIRE-UP'): END OF THE PROGRAH'): ::::: ::::: : : : : ~— ~— : : ::::: ::::: 22 222 2222 22 z 22 22 .22 22 22 22 22 22 22 .22 22 2 22 22 22 22, .22 22 22 22 22 2222 222 22 2 22222222222 222222222222 22 22 22 . 22 22 22 222222222222 22222222222 22 22 22 22 22 cc CC cc cc cc CC cc cc cc cc cc cc cc C: cc cc cc cc cc CC cccccccccccc cccccccccc 444444444444 444444444444 44 44 44 44 44 44 44 44 44 44 PL/I OPTIUIZING COHPILER INPUT: PROC REORDER; STHT d Q~JOHfi€=WAQ 11 12 INPUT: DCL DCL DCL DCL DCL DCL DCL DCL DCL DCL DCL SOURCE LISTING PROC REORDER; (RUA.SRIPT,IPOS,LRUU,ISIu) PIIED EIR(1S) STATIC EXTERNAL; RARE TILED RIR(31) STATIC EXTERNAL: (SIZE(50).PLAT(50),TAPE(50)) CHAR(1) STATIC EITERUAL; (CODE(SO),CLINE(200)) CRAR(2) STATIC EITERUAL; VALUE(50) FIXED DEC(7,2) STATIC EITERRAL; PART(SO) CEAR(9) STATIC EXTERNAL: (L0AD(50),RUEPRT(50),uOLDS(50),PRARE(SO),PACR(50),RATE(50), SHIP1(SO),SHIP3(50),SHIPA(SO),INVBAL(SO),SAFETY(SO), PCD(50),SRIP2(50),LPOS(SO),LDIEP(50),RTOT(50),LRDIPP(200)) EIIED 313(15) STATIC EITERRAL; TITLE C8AR(80) STATIC EXTERRAL; 1 CHANGE(100) STATIC EXTERNAL, 2 (POS,NEED) PIIED EIR(1S), 2 (ADD.SUR) CHAR(2): ICOURT FIXED EIR(15) STATIC EXTERNAL; LHD PIXED 313(15) STATIC EXTERNAL; /tt#¢$tt#ttt¥#tfittttt¥#tt$*tittttttttt¥##tttttfiittt/ /*t*t# INITIALIZE STATIC EXTERNAL VARIABLES *‘***/ /fi$ttttt¥tt$t###0.*#tttttt#*Ottttt.tt#ttttitttttfitt/ SIZE(*)=' '; PLAT(*)=' '; TAPE(*)=' '; CODE(#)=' '; CLIIE(*)=' ’; PART(*)8' '; VALOE(*)=0.0; TITLB=' '; LOAD(’)=O; BATE(*)=O: UUHPRT(*)=O; HOLDS(*)=0; PRAHE(')=O; PACK(*)=O; SHIP1(*)=O; SHIP2(*)=0; SRIP3(t)=o; SHIPQ(*)=O: INVBAL(*)=0: SAPETY(¢)=0; LDIFP(*)=O: LPOS(#)=0; HTOT(*)=O; LUDIPP(#)=0; PCD(*)=O: PL/I OPTIHIZING COHPILER INPUT: PROC REORDER; STHT 42 “3 44 a5 46 Q7 /tfittt’titttCittitttt‘tttttiit‘ttttfiitt/ /'*t READ AOLD LINE-UP TITLE CARD .../ /ti.#*ttttttttlOttttfittfitfittfifi¥ltfit’ttfl/ ISIH=O; GET PILE(STATIC) EDIT(TITLB) (A(80)); PUT SKIP EDIT(TITLE) (X(1).A(80)): PUT SKIP(2); /¢.‘titfitfittttttttfitttttttttfitittttttttitt/ /**‘ READ PARAHETER CARD IIFORHATION ***/ /tit$13....tittttttttttttttttttttttttttttt/ GET SKIP PILE(STATIC) EDIT(RUR.SRIPT,IPOS,RARE,LRD) (2(P13)).2(P(7)).?(5)): PUT SKIP EDIT(RUA,SRIPT,IPOS.RARE,IUD) (2(713)).2(P(7)).P(5)): /fi$$fl..*0$#$#ttttttttfittttittttfitOtittttfititittttitttttfifilttt/ /Ott READ STATIC INPORHATION OF THE HOLDS IN THE SISTEB *’*/ /OOOO¢COOOOOttttttttttcttttOOSCOOOSOOCOSSSSOtttttttOttttttttt/ DO I31 T0 NUH: GET PILE(STATIC) EDIT(CODE(I) ,PART(I) ,SIZE(I) ,LOAD(I) ,NUUPRT(I) , PLAT(I).UOLDS(I),PRAHE(I),TAPE(I),PACK(I),RATE(I),VALUE(I), SA?ETY(I)) (C0411)03(2)vA(9)01(110111)0P(3)c31219111)0‘11)12(P(3))ax111. 8”) :2 (7(a) ) Ir1602) 'P(6)): PUT EDIT(CODE (I) ,PART(I) .5123 (I) ,LOAD(I) ,NUHPRT (I) , PLAT (I) ,HOLDS (I) ,PRAHE(I) ,TAPE(I) pPACK (I) ,RATE(I) ,VALUE (I) , SAFETY (I)) (C0412)11(21o119)rx(1)ol(1)or(3)o?(21ox(1113(1)0217(3))ox(1). D 1111:2(3181107(5c2)or(5))1 EN ; PL/I OPTIHIZING COHPILER INPUT: PROC REORDER; STET /ttittttttttttttttttttttttt#666666466663/ /... READ HOLD LINE-UP INPORBATION ..., /**###¥#¢ttttttttttttttttttttttttt tttttt/ QB IST=1; n9 IEND=20; SO IPLAG=O; 51 PUT SKIP(2); 52 LIRE_UP_IRPO: GET SKIP PIL3(HOLD) EDIT((CLIRE(J) DO J=IST To IEND)) (20(X111.A(2))): 53 PUT SKIP EUIT((CLIRE(J) DO J=IST TO IERD)) (20(X(1),A(2))); su IP IPLAC=1 TREA so To FINISH; 55 IST=IST+20; 56 IERDsIEAD+2o; 57 IE IERD>=IPos THEU IPLAC=1; 58 1? LEAD > IPos THEN IERD=IPOS; 59 GO To LIUE_UP_IAPO; 60 PIRISH: ERD INPUT; Pr rr rr PP PP Fr Fr Fr Fr Fr PPPPPPPPPPPP PPPPPPPPPPPP ----- _~_—-~——~ ~— ~— ~— ~— ~— ~— ~— —~ ----- ---~n~— 22 22 222 22 2222 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2222 22 222 22 22 22 z mmmmmmmmmmmm mmmmmmmmmmmm mm mm mm mmmmmmmm mmmmmmmm mm mm mm mmmmmmmmmmmm mmmmmmmmmmmm cc cc cc Cc cc cc CC CC CC cc cc cc cc cc CC cc cc CC cc cc CCCCCCCCCCCC CCCCCCCCQC 22222222222 222222222222 22 22 22 22 22 22 222222222222 22222222222 22 22 22 22 22 PL/I OPTIHIZING COEPILER LINEUP: PROC REORDER; SOURCE LISTING STHT 1 LINEUP: PROC REORDER; 2 DCL (N03.SHIPT.IPOS,LNUH,ISIH) PIXED EIN(15) STATIC EXTERNAL; 3 DCL RARE PIXED EIN(31) STATIC EXTERNAL; u DCL (SIZE(SO).PLAT(50),TAPE(50)) CHAR(1) STATIC EXTERNAL; 5 DCL (CODE(SO),CLINE(200)) CEAR(2) STATIC EXTERNAL; 6 DCL VALUE(SO) PIXED DEC(7.2) STATIC EXTERNAL; 7 DCL PART(SO) CEAR(9) STATIC EXTERNAL; 8 DCL (LOAD(50),NUNPRT(50),HOLDS(SO),PRANE(50),PACK1501,RATE(50), SHIP1(SO),SRIP3(SO),SNIPu(501,INVEAL(SO),SAEETI(50), PCD(50),SHIP2(SO),LPOS(50),LDIFP(SO),HTOT(50),LBDIFP(200)) PIXED EIN(15) STATIC EXTERNAL; 9 DCL TITLE CHAR(80) STATIC EXTERNAL; 1o DCL 1 CHANGE(100) STATIC EXTERNAL, 2 (POS,NEED) FIXED EIN(15), 2 (ADD,SUB) CRAR(2); 11 DCL ICOUNT PIXED BIN(15) STATIC EXTERNAL; 12 DCL LRD PIXED DIN(15) STATIC EXTERNAL; 13 DCL VIOLAT(200) CRAR(u); 1a DCL (TAOLD(200),PNOLD(200),SKOLD(200)) CRAR(2); 15 DCL ITOT(200) FIXED BIN(1S); 16 DCL UNDER CHAB(2) INIT('__'); 17 DCL STAR CRAE(u) INIT("*“'): 1R DCL STAR1 CHAR(2) INIT('**'); 19 DCL EQ CHAR(2) INIT('= '); 20 DCL XL C8AR(1) INIT('L'); 21 DCL TNS CHAR(21) INIT('TOTAL NUEEER OP HOLDS'); 22 DCL DATE1 CEAR(6); 23 DCL DATE EUILTIR; 2a DCL 1 TDATE, 2 EONTN CHAR(2), 2 FILL1 CHAR(1) INIT(’/'), 2 DAT CRAR(21, 2 PILLZ CHAR(1) INIT('/'), 2 YEAR CHAR(2); 25 DATE1=DATE; 26 HONTH=SUESTR(DATE1,3,2): 27 DAY=SUBSTR(DATE1,S,2); 28 TEAR=SUSSTR(DATE1,1,2); 29 DCL TDATE1 CHAR(8) BASED(P1); 3o P1=ADDR(TDATE): PL/I OPTIHIZING COHPILER LIIEUP: PROC REORDER; STHT flttttttfittttt‘t$tittttfi$fitt¥.##tttl¥#ttttt/ /ttt INITIALIEE TRE pROORAR VARIABLES ttt/ /#**Ottfilfiltfitttttfifififitltfitfit..#¥t#ttt¥tt¥t/ 31 ITOT(*)=O; 32 LIDIPP(*)=O: 33 LPOS(*)=O; 3a SHOLD(*)=' 1; 35 VIOLAT(*)=' 1; 36 TROLD(t)=' 1; 37 RROLD(t)=' '; 38 RTOT(#)=O; [t t*¥$.¥#.$*fi$#t$¢tttttfit##1##.fitt‘tttfiifitttttt3¥¥tittt/ /... DETBRHINE NIRE LOAD DIPPICULT! TOR EACE ROLD ttt/ /*Mlfitfififi#.¥$*‘*$.O.tttifitttt##ttfittttttfitttttfitttttt../ 39 DO 121 TO IP05; no DO 321 TO NOR; u1 I! CLINE(I)=CODE(J) TEEN GO To EOOND; a2 END; u3 PUT SKIP EDIT("'*EBROR - NOLD CODE ',CLIRE(I), ' DOES NOT EXIST IN LINE-UP***') (X(3),A,A(2),A); nu GO To FINISH; as ROUND; IT TAPE(J)s'I' THEN TROLD(I)='33'; as It PLAT(J)='Y' TEEN PROLD(I)='SS'; u? LNDIRP(I)=LOAD(J); as IT SIzE(J)=IL TEEN SNOLD(I)=ONDER; u9 ETOT(J)=RTOT(J)+1; SO END: PL/I OPTIHIZING COMPILER LINEUP: PROC REORDER: STHT /Otit.fittt¥¥fittttttfit!’.t#*¥*.ttttfitfit.tOttttttttttttttt/ DBTERHINB VIOLATIONS IN THE SCHEDULED LINE-UP "’/ /O#.$tttti‘ttiOfifittl$#$.‘¥.tt$¢*$O#$$Ottttfitfifi.fitfi‘tttfit/ £30381: DO J81 T0 IPOS; I=J-1: I? I=0 THEN I=IPOS-1; K=J+1; IP K=IPOSO1 THEN K=1; ITOT(J)=LUDIPP(I)*LUDIPP(J)+LIDIPP(K); IT ITOT(J)<= LED TREE GO TO APPROVE; VIOLAT(J)=STAR; VIOLAT(J+1)=STAR1; LROS(LNOE)aJ; LDIRE(LNON)=ITOT(J); LNUHtLlUHOI; APPROVE: END: LNUH=LNUH-1; PL/I OPTIHIZIHG COHPILER LINEUP: PROC REORDBB; STHT - /tttttttttttfitttttttttttttttitttttttttttttttt/ /*** PRODUCE l LINE-UP SCHEDULE PICTURE *’*/ [Ittttttttttttttttttttttttttttttfitttttttttitt/ 66 IST21; 67 IEIDs32; 68 IPLAG=0; 69 PUT PAGE BDIT(TITLE.TDATB1) (X(10),A.A(8)); 70 PUT SKIP(2); 71 PICTURE: PUT SKIP EDIT((J DO J8IST TO IEID)) (32(X(1),P(3))): 72 PUT SKIP EDIT((LNDIPP(J) DO J=IST TO IEND)) (32(X(1),P(3))); 73 PUT SKIP(O) BDIT((SHOLD(J) DO OsIST TO IEND)) (32(X(2),A(2))); 7a PUT SKIP EDIT((CLINE(J) Do J=IST TO IBND)) (32(X(2).A(2))); 75 PUT SKIP(O) EDIT((SEOLD(J1 DO OaIST TO IEND1) (32(X(2),A(2))); 76 PUT SKIP BDIT((VIOLAT(J) DO J=IST TO IEND)) (32(A(U))); 77 PUT SKIP(0) EDIT((TEOLD(J) DO JsIST To IBND)) (32(X(2),A(2))); 78 PUT SKIP(O) EDIT((PEOLD(J) DO J=IST TO IBID)) (32(X(2).A(2))); 79 PUT SKIP: 80 IR IPLAO=1 THEN GO To UIRE_LOAD; 81 IST=IST+32; 82 IBHD=IENDRBZ; 83 IT IEND>IPOS TREE IPLAO=1; 8a It IEUD>IPOS TEEN IEND=IPOS; 85 GO TO PICTURE; /lttfit.‘tt.tttt¥t$$.t¥tt$it..tttttttttt‘¥¥.$#*/ /*’* SORT TH! HIRE LOAD DIPPICULT! 00802 I”"'/ /tttttttttttttttttt‘ttttttttttttttttttttt¢tttt/ 86 RIRE_LOAD: DO I=1 TO LEON-1; 87 DO J=I+1 TO L803: 88 IP LDIPP(I) >= LDIPP(J) THE! GO TO SORT; 89 ITEHP1=LDIPP(I): 90 ITEHPZ=LPOS(I); 91 LDIPP(I)=LDIPP(J); 92 LPOS(I)=LPOS(J); 93 LDIPP(J)=ITBSP1; 9Q LPOS(J)=IT2HPZ: 9S SORT: END; 96 END: oommoomnoo omooooomomao mm on on 06 on an woman no momma no on no on oommmmmmoooo omoomoommo mmmmmmmmmmmm mmmmmmmmmmmm mm . mm mm mmmmmmmm mmmmmmmm mm mm mm mmmmmmmmmmmm mmmmmmmmmmmm 22 22 222 22 2222 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2222 22 222 22 22 22 2 mmmmmmmmmmmm mmmmmmmmmmmm mm mm mm mmmmmmmm mmmmmmmm mm mm mm mmmmmmmmmmmm mmmmmmmmmmmm xxxxxxxxxxx xxxxxxxxxxxx xx xx xx xx xx xx xxxxxxxxxxxx xxxxxxxxxxx xx xx xx x? xx xx xx xx xx xx PL/I OPTIBIZING COHPILER GENER: PROC RBORDER; SOURCE LISTING STAT 1 GENER: PROC REORDER; 2 DCL (NON, SHIRT. IP05. LNUN, ISIN) PIXED BIN(1S) STATIC EXTERNAL; 3 DCL RARE PIXED EIN¢311 STATIC EXTERNAL; a DCL (SIEE(50), PLAT(SO) ,TAPE(501) CRAR(1) STATIC EXTERNAL; 5 DCL (CODE(SO) ,CLINE(2OO)) CRAR(2) STATIC EXTERNAL; 6 DCL VALUE(SO) FIXED DEC(7,2) STATIC EXTERNAL; 7 DCL PART(SO1 CRAR(9) STATIC EXTERNAL; 8 DCL (LOAD(50),NUEPRT(SO),NOLDS(50),PRANE(50),PACR(50),RATE(50), SHIP1(SO),SRIP3(SO),SRIPU(501,INVDAL(SO),SATETX(SO), PCD(SO),SRIP2(SO),LPOS(SO),LDIPE(SO),NTOT(50),LNDIPP(2OO)) PIXED RIN(15) STATIC EXTERNAL; 9 DCL TITLE CRAR(RO) STATIC EXTERNAL; 1o DCL 1 CRANOE(1OO) STATIC EXTERNAL, 2 (POS.NEED) PIXED RIN(15), 2 (ADD,SUE1 CRAR(2); 11 DCL ICOUNT EIXED EIN(15) STATIC EXTERNAL; 12 DCL BOP CRAR(80); 13 DCL (INVEN(50).OEJ(50)) PIXED DEC(7,2); 1n DCL (NINE,NTOTAL,NOLD,TRN.IPROD,OPTOTAL) CRAR(7); 15 DCL TOTAL CRAR(1O); 16 DCL (ITOTAL.TINV,TSRIP.LPROD) PIXED RIN(31); 17 DCL (PROD,UPEND,UPPER1 PLOAT DEC(1o.3); 18 DCL (INVEN1,ORJ1) CRAR(7); 19 DCL (RAL,SR1,532.SR3,SEU) PIXED EIR(15); 20 DCL XCODE CRAR(21; 21 DCL STAR2 CRAR(2) INIT(°tt'); 22 DCL XL CHAR(1) I8IT('L')3 PL/I OPTIUIZIBG COHPILER GENER: PROC REORDER: STHT 23 2a 26 27 28 29 30 32 33 30 35 36 37 38 39 00 “1 Q2 Q3 /.**$ltiti¥t###*$#ttttttttttt‘fittt#ttttfittttttt/ /ttt READ DINABIC FORECASTING INPORBATIOB *“/ /*$#tt‘tttttfitltttfitttfitfififitittfit$littttt¥$*#tt/ L81; PUT PAGE EDIT('PORECASTIEG - PRODUCTION INPORHATION') (X(35),A); PUT SKIP(2); PUT EDII('PCD',' INITIAL ','1ST IEEK','2ND HEEK','BRD HEEK', 'uTH REEK',‘SAFETY','BAL','INVENTORI','SHIPPED',‘SHIPPED', 'SHIPPED','SHIPPED',‘STOCK') (1(22).|.6(X(8).3)oSKIP(1)oX(22).A.6(X(9)oA)): PUT SKIP(1): FORECAST: GET PXLE(DXNAN) EDIT(XCODE.EAL,SN1.saz,sn3,SRU) (COL(1).A(21.5(P(10))): IE XCODEaSTARz TEEN GO TO START; DO J=L To Nun; I? XCODE~=CODE(J) THE! GO To NEXT_CODE; PCD(J)=SN1-EAL; INVBAL(J)=BAL; SHIP1(J)=SHI: SEIP2(J)=SHZ: SRIP3(J)=SR3; SHIPQ(J)=SHQ; PUT SKIP EDIT(XCODE,YCD(J),IHVBAL(J),SHIP1(J),SHIP2(J),SHIP3(J), SHIPu1J1.SAPETI1J1) 1x171.A(21.71X191.r17111 : L=L+1; GO To PORECAST; NEXT_CODE: /fl*$ END: ERROR SECTION 0? INPUT ##1/ PD? SKIP EDIT('t‘*ERROR - CODE ',ICODE,' NOT IN STATIC FILE', BAL.SH1,SEZ,SH3,SHH) (1,1(2),A,H(P(10))): STOP; PL/I OPTIHIZIHG COHPILER GENER: PROC REOEDER; STET /ttttttttOttttttttttOCCC/ /*** PRINT EON CARDS tti/ /tt¥$ttttttttttttttttttt/ nu START: ITOTAL20; us TINv=0.o; Q6 ISHIP=0.0: Q7 DO I=1 TO EUR; “8 TINV=TINV+INVEAL(I); U9 ITO?AL=ITOTAL¢SHIP2(I)TSHIP1(I): SO TSHIP=TSHIP+(SHIP2(I)TPCD(I)RSAPETI(I))/PACK(I); S1 END; 52 PUT SKIP(2) EDIT('TOTAL PARTS SHIPPED 13 T90 WEEKS = ', ITOTAL) |X|1O).A.T(10)): s3 PUT SKIP EDIT('TOTAL INITIAL INVENTORY s ',TIIY) |X(1O),A,E(1O||; SN 8093' '; SS SUBSTR|BUP,1,Q)='NASE'; 56 SUBSTR|BUE,1S,U)='POAN'; S7 NRITE PILE|CARD| PRON(80P); BUP=' '; 59 BUP='ROUS'; 60 NRITE EILE(CARD) PROH(BU?): BUP=' '; 62 BUP=' N OBJ'; 63 iBITE PILE|CARD| PROH(BUP); BUP=' '; 65 DO I=1 To N05; 66 BUFs' L 1 || CODE(I) || 'REQ'; 67 NRITE TILE(CARD) PROH(BUP); BUP=' '; 69 END; 70 DO I=1 To NUN; 71 BUP=' L ' II CODE(I) || 'ADD'; 72 NRITE PILE(CAED) FROE(BUP); BUP=’ '; 7a END; 75 DO I81 TO H03: 76 BUP=' G ' || CODE(I) || 'SUB': 77 NRITE EILE(CARD) ERON(EUE); EU?=' ': 79 END: 80 DO I=1 To NON; 31 BUP=' L ' II CODE(I) ll 'PRH’: 82 RRITE TILE|CARD| PRON|EUE); 8UP=' '; 8a END: PL/I OPTIHIZIRG COHPILER GENER: PROC REOEDER; STHT 85 DO I=1 IO EUR: 86 BUP=' G ' ll CODE(I) II 'END': 87 WRITE PILE(CARD) PROH(BUP); BUF=' '; 89 END; 90 BUP=' E LINCAP': 91 WRITE PILE(CARD) PROH(BUP); BUP=' ': 93 BUP=' L SHALL': 9a HRITE FILE(CARD) PBOE(BUP); BOP=' '; 96 BUP=' L LARGE': 97 BRITE FILE(CARD) 9803(883); BUP=' ’; 99 BUP=' L 3188'; 100 BRITE PILE(CARD) PROH(BUP); BUP=' ': 102 BUP=' L IRVEN'; 103 ERITE PILE(CARD) PROH(BUP); BUP=' '; 105 BUP=' L UPENDER'; 106 UEITE FILE(CARD) PROB(BUP); BUP=' ': PL/I OPTIHIZIRG CORPILER GENER: PROC REORDER; STE? /##¥tittttttttttttttttttttt/ /*t* PRINT COLUHN CARDS I"*T/ /t*tttttttttttttttttttttt¥*/ 108 BU?='COLUENS'; 109 WRITE PILE|CARD) PROE(BUP); BUP=' '; 111 8UP=' DEBE "uARKER"'; 112 SUBSTR(BUF,UO.8)="'INTORG"1: 113 WRITE PILE(CARD) PROH(BUP): BUP=' '; 115 D0 I=1 To N08; 116 IRVEN(I)=2.0*RATE(I)/PACK(I); 117 PUT STRING(INVER1) EDIT|INVEN(I)) (P(7,2)): lttfitt TEE 03J(I) REPRESENTS THE AVERAGE INVENTORY STORAGE COSTS ****‘/ /‘t*tt PER 2 REEK PERIOD. 10$ VALUE 0? PART OVER 1/26TR YEAR. **‘**/ 118 OBJ(I)=RATE(I)*VALUE(I)/260.0; 119 PUT STRING|08J1) EDIT(OBJ(I)) (P(7,2)); 120 D0 J=1 To u; 121 SUBSTR(BUP,S,S)=CODE(I) II 'II' II SIZE(I): 122 I? 321 THEN Do: 123 SUBSTR(BUP,1S,S)=CODE(I) || 'REQ'; 129 SUBSTR(BUF,33,3)='1.0'; 125 SUBSTR|BUP,UO,S)=CODE(I) 1| 'ADD'; 126 SUBSTR|BUP,53,3)='1.0': 127 WRITE PILE(CARD) PROH(BUF); BUP=' '; 129 END; 130 IF J=2 THEN DO; 131 SUBSTR(BUP,15,S)=CODE(I) || 'SUB'; 132 SUBSTR|BUP,33,3)='1.0'; 133 SUBSTR(BUP,UO,6)='LINCAP'; 13a SUBSTR(BUP,58,3)='1.0': 13% WHITE PILE(CARD) PROR(BUP); BUF=' '; 137 END; 138 I? J=3 THEN DO; 139 SUBSTR(BUP,15,S)='INVER'; 1ND SUBSTR(BUF,29,7)=IRVEN1; 191 SUBSTR|BUP,UO,3)='OBJ'; 102 SUBSTR|BUP,SU,7)=OBJ1: 103 NRITE PILE(CARD) PROH(BUF); 8UP=' 1; 1&5 END; 196 IP J=u TEEN DO; 197 SUBSTR|BUF,1S,S)=CODE(I) || 'PRH'; 148 SUBSTR(BUF.33,3)='1.0'; 199 UPEND=Q.0/PACK(I); PL/I OPTIUIZING COEPILER GENER: PROC REORDER: STHT 150 I? CODE(I)='8N' | CODE(I)='8R' THEN UPEND=UPEND/2.0; 151 SUBSTR|BUP.U0,S)=CODE(I) 1| 'END'; 152 PUT STRING(UPTOTAL) EDIT(-UPEND) (P(7,U)); 153 SUBSTR|8UP,SU,7)=UPTOTAL; 154 BRITE PILE(CARD) PRON|EUP): BUP=' '; 156 END; 157 END; 158 END: 159 00 I81 TO RUN; 160 DO J81 TO 2; 161 SUBSTR(BUP,S,S)=CODE(I) || 'UP' || SIZE(I); 162 I? J21 TEEN DO; 163 SUBSTR|BUP.15,7)= 'UPENDER'; 160 SUBSTR|BUP,33,3)='1.0'; 165 SUBSTR(BUP,U0,5)=CODE(I) || 'END'; 166 SUBSTR(BUP,58,3)='1.0'; 167 HRITE PILE(CARD) PROE(BUP): BUF=' '; 169 END; 170 I? J=2 THEN DO; 171 SUBSTR(BUP,15,3)='OBJ'; 172 SUBSTR(BUP,33,3)8'1.O'; 173 RRITE PILE|CARD) PROH(BUP); BUP=' '; 175 END: 176 END: 177 END; 178 DO 131 TO RUB; 179 PUT STRING(BIRE) EDIT(LOAD(I)) (P(7,1)); 180 DO J=1 To 2: 181 SUBSTR(BUP,5,5)=CODE(I) ll 'AA' || 5122(1); 182 I? J=1 TEEN D0; 183 SUBSTR(BUP,1S,3)='OBJ'; 180 SUBSTR|BUP,33,3)='7.S': 185 SUBSTR|BUP,U0,S)='SHALL'; 186 SUBSTR(BUP,58,3)='1.0'; 187 IP SIZE(I)=XL TREN Do; 188 SUBSTR|BUP,UO,5)='LARGE'; 189 SUBSTR|BUP,S7,U)=' 1.0'; 190 END; 191 BRIT! PILE|CARD) PROB|BUP); BUF=' '; 193 END; 19“ I? Js2 THEN DO; 195 SUBSTR(BUF,15,5)=CODE(I) || 'ADD'; 196 ' SUBSTR(BU?,32,3)='-1.0'; PL/I OPTIHIZIRG COHPILER GENER: PROC REORDER; STRT 197 SUBSTR(BUP,00,U)='HIRE': 198 SUBSTR|EUP,SU,7)=UIRE: 199 HRITE PILE|CARD| PRON|BUP); BUP=' '; 201 END: 202 END: 203 END; 200 DO 121 To N08: 205 PUT STRING(HIRE) EDIT(-LOAD(I)) (P(7,1)); 206 I? LOAD(I)=0.0 TEEN PUT STRING|UIRE) EDIT (LOAD(I)) (P(7,1)); 207 00 321 T0 2; 208 SUBSTRtBUP,5.S)=CODE(I) 1] 'SS' || SIZE(I): 209 I? J21 TEEN Do; 210 SUBSTR|BUP,15,3)='OBJ'; 211 SUBSTR(BUP.33,3)='7.5': 212 SUBSTR(EUP,NO,S|='SNALL'; 213 SUBSTR(BUP,S7,U)8'-1.0': 21a I? SIZE(I)=IL TEEN DO: 215 SUBSTR(BUP,“O.S)='LARGE'z 216 SUBSTR|EUP,S7,U|='-1.o'; 217 END: 218 VRITE PILE(CARD) PROH|BU?); BUP=' '; 220 END; 221 I? 3:2 THEN Do: 222 SUESTR|BUP,1S,5)=CODE(I) || 'SUB'; 223 SUBSTR(BUP,33.3)='1.0': 229 SUESTR(EUP,UO,U)=1NIRE'; 225 SUBSTR(BUP,SU,7)=RIRE; 226 NRITE PILE(CARD) PROE(BUF); BUP=' 1; 228 END; 229 END: 230 END: 231 DO I31 TO EUR; 232 SUESTR|RUP,5,5)=CODE(I| || 'FP' || SIEE(I); 233 SUBSTR(SUP,1S,S)=CODE(I) || 'PRH': 23a SUBSTP(BUP.32,Q)='-1.0'; 235 SUESTR|EUE,UO,3)='ORJ'; 236 SUBSTR(BUP,57,Q)='7S.0': 237 WRITE PILE(CARD) PR08(BUP); BUP=' '; 239 END; 290 BUP=' PINE "HARKER"'; 291 SUBSTP(BU?,QO,8)="'INTEND"'; 292 RRITE PILE|CARD) TRON|EUT): 8UF=' 1; PL/I OPTIHIZING COHPILER GENER: PROC REOEDER; STNT /t¢tttt¢tttcUROLOOOOOOOOOOOOOOtOOOt/ /**‘ PRINT THE RIGHT HAND SIDES "‘/ /tttttttit##ttttttttttttttttttttttt/ 290 BUP='RHS': 2&5 WRITE PILE(CARD) PROH(BUP); BUP=' '; 207 DO I=1 TO NUH: 2&8 PUT STRING(EOLD) EDIT(HOLDS(I)) (P(7,1)); 299 SUESTR|BUP,S,3)='RHS'; 250 SURSTR(BUP,15,5)=CODE(I) || 'REQ‘; 251 SUBSTR(BUP,29,7)SEOLD; 252 WRITE PILE(CARD) PROH(BUP): BUP=' '; 259 END; 255 DO 1:1 TO N08: 256 PUT STRING(ETOTAL) EDIT(ETOT(I)) (P(7,1)); 257 SUBSTR(BUP,5,3)='RRS'; 258 SUBSTR(RUP,1S,S)=CODE(I) ll 'ADD': 259 SUBSTR(BUP,29,7)=HTOTAL: 260 RRITE PILE(CARD) PROH(BUP); BUP=' ’; 262 END; 263 DO I=1 TO EUR; 269 PUT STRIRG(HTOTAL) EDIT(ETOT(I)) (P(7,1)); 265 SUBSTR(BUF,5,3)='RRS'; 266 SUBSTR|BUP,15,S)=CODE(I) 1| ‘SUB'; 267 SUBSTR(BUP,29,7)=HTOTAL: 268 HRITE PILE(CARD) PROH(BUP); BUP=' '; 270 END: 271 DO I=1 TO NUE; 272 PUT STRING(PR8) EDIT(PRAHE(I)) (P(7,1)); 273 SUESTR|EUR,S,3)a'RNs'; 27h SUBSTR|BUP,15,5)=CODE(I) ll 'PRH'; 275 SUBSTR(BUP,29,7)=PRH; 276 WRITE PILE|CARD) PROR(BUP); BUP=' '; 278 END; 279 SUBSTR|BUP,5,3)='RHS'; 280 SUBSTR(BUF,1S,6)='LINCAP'; 281 SUBSTR(BUP,30,6)='181.00'; 282 "RITE PILE(CARD) EROH(BUP); BUP=' ': 289 SUBSTR(BUP,5,3)='RHS'; 285 SUBSTR(BUP,15,5)='SRALL'; 286 SUBSTR|BUP,32,U)='5.00': 287 NRITE FILE(CARD) EROH(BUP): BUF=' 1; PL/I OPTIHIZING COHPILER GENER: PROC REORDER; STAT 289 SUBSTR(BUP,S,3)='RRS'; 29o SUBSTR|BUF,15.5)='LARGE'; 291 SUBSTR(RUP,32,u)s'5.oo'; 292 IRITE PILE(CARD) TROA(EUP); BUP=' 1; 29a SURSTR(BUP.5,3)=°RHS': 295 SUBSTR|EUP,1S,S)=1NIRE'; 296 SUBSTR(RUP,32,U)=-5.001; 297 WRITE PILE(CARD) PRON|EOT); BUP=' 1; 299 NAREsPAREoTSRIP; 300 PUT STRING(TOTAL) EDIT|NARE| (P(10,1|); 301 SUBSTR(BUP,5,3)='RRS'; 302 SUBSTR(SUP,15,5)=’INVEN': 303 SUESTR|EUT,26,10|=TOTAL; 3ou WRITE PILE|CARD| PROA|EUP); BUP=' 1; 306 SUBSTR(BUP,S.3)='RRS’; 307 SUBSTR(BU?,15,7)='UPENDER'; 308 SUBSTR(RUP,32,U|='33.O'; 309 URITE PILE(CARD) FROB(BUF): BUP=' ': PL/I OPTIEIZING COHPILER GENER: PROC REORDER; STHT /ttttttttttttttttt$ttttttttttttttttt/ /*’¢ PRINT THE EOLD RANGE VALUES *‘9/ /¥titttttttttttttttttttttittytttlttt/ 311 BUP='RANGES': 312 HRITE PILE(CARD) PROR(BUP): BUP=' '; 31“ DO I31 TO EUR: 315 PUT STRING(EOLD) EDIT(BOLDS(I)) (P(7,1)): 316 SUBSTR(BUP,S,5)='RANGE': 317 SUBSTR(BUP,1S,5)=CODE(I) ll 'REQ': 318 SUBSTR(BUP,29,7)8HOLD: 319 WRITE PILE‘CARD) PROH(BUP): BUP=' '; 321 END: 322 SUBSTR(EUY,5,5)='RANGE': 323 SUBSTR|BUP,15.Q)='RIRE'; 32a SUBSTR|RUP,32.U|='1O.O'; 325 WRITE PILE(CARD) PROH(BUP); BUP=' '; 327 SUBSTR(BUP,S,S)='RANGE'; 328 SUBSTR(BUP.1S,5)='SHALL'; 329 SUBSTR(BUP,32,U)='10.0'; 330 URITE PILE(CARD) PROH(BUP); BUP=' ': 332 SUBSTR(BUP,5,5)='RANGE'; 333 SUBSTR(BUP,1S,S)='LARGE'; 339 SUBSTR(BUP.32.U)='10.0'; 33S WRITE PILE(CARD) PROE(BUP); BUP=‘ '; PL/I OPTIUIZING COHPILER GENER: PROC REORDER; STRT /tttttttttttttttttttttttttttttttt/ /*‘t PRINT THE BOUNDS SECTION 9“/ /¢tttt##8##tt‘tltt‘tttttttttttttt/ 337 BUPs'BOUNDS': 338 WRITE FILE|CARD) PRON|BUP); BUP=' '; 390 DO I=1 TO N08: 391 PUT STRING|HOLD) EDIT|ROLDS(I)) (P(7,1)): 392 SUBSTR(BUP.2,8)='UP BOUND': 393 SUBSTR(BUP,15,5)=CODE(I) II 'II' I] SIZE(I); 399 SUBSTR|BUF,29,7):HOLD: 395 WRITE PILE(CARD) PROH|BUP); BUP=' '; 397 END; 398 Do I=1 TO RUN; 399 SUBSTR|BUP,2,8)= 'UP BOUND'; 350 SUBSTR(BUP.15,5)=CODE(I) || 'UP' || 5128(1): 351 SUBSTR|BUP,33,3)=‘6.0'; 352 WRITE PILE|CARD) PROH|BUP); BUP:' '; 359 END; 355 00 I=1 TO NUH: 356 SUBSTR(BUP.2,8)= 'UP BOUND'; 357 SUBSTR|BUP,15,5)=CODE(I) ll 'AA' || SIZE(I); 358 SUBSTR(BUP,32,9)='20.0': 359 I? CODE|I)='8N' | CODE(I)=‘BR' THEN SUBSTR(BUP,32,9)='90.0' 360 WRITE PILE|CARD) PROR(BUF); BUP=' '; 362 END: 363 DO I=1 TO N05; 369 SUBSTR(BUP,2,8)= 'UP ROUND'; 365 SUBSTR(BUF,15,5)=CODE(I) || 'SS' || 5128(1): 366 SUBSTR(BUP,32,9)='20.0'; 367 I? CODE(I)='BN' | CODE(I)='BR' THEN SUBSTR|BUF,32,9)='90.0' 368 HRITE PILE(CARD) FROH(BUP); BUF=' '; 370 END; 371 DO I=1 TO RUN; 372 SUBSTR(RUP,2,9)= 'UP BOUND'; 373 SUBSTR(BUP,1S,5)=CODE(I) || 'PP' || 5123(1); 379 SUBSTR(BUP,32,9)='2.00'; 375 I? CODE(I)='BN' | CODE(I)='BR' THEN SUBSTR(BUP,32,9)='9.00' 376 BRITE PILE(CARD) PROR(BUP); BUF=' '; 378 END; PL/I OPTIHIZING COHPILER GENER: PROC REORDER; STET /¢##3...##.Otfitittttfitttfitttfittttttttttttttttttttfi.$###t#t/ 379 D0 I=1 TO RUN; 380 PRODs|.70*SEIP1(I)+.2ORSEI82|I|;.05tSEIP3(I)o.05#SEIP9|I|- INVEAL|I|oSAEETT|X1)/RATE|I); 381 LPROD=PROD; 382 IP LPROD < 0 TEEN LPROD=0; 383 IT LPROD > AOLDS(I) TEEN LPROD=NOLDS(I); 389 PUT STRING(IPROD) EDIT(LPROD) (P(7,1)); 385 SUESTR|RUE,2,8|='LO BOUND': 386 SOESTR(EUP.15,5)=CODE(I| || ’II' 11 SIZE(I): 387 SURSTR|EUP,29,7|sIPROD; 388 WRITE PILE|CARD| PROR(BUP): BUP=' 1; 39o END; 391 BUP=’ENDATA': 392 WRITE PILE|CARD| PROA(EUP); BUP=' 1; 399 CLOSE PILE|CARD); 395 FINISH: END GENER: 33 33 333 333 3333 3333 33 33 33 33 33 3333 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 ---~n- --u--~ ~— -~—_-~_~ ----- 66666666666 666666666666 66 66 66 66 66 69 666666666666 66666666666 66 66 66 66 66 PL/I OPTIHIZING COHPILER HIP: PROC BEORDER; STHT QChU‘c HIP: SOURCE LISTING PROC REORDEB: /*.$#.$$ttt¥.tt¢¥tfittttfit$tttttttttttttt##/ /‘¢*‘* RPS! 370 - HIP DECLARATIONS ***‘*/ /ttt¢tttttttttttttttttttttttttttttfittttttt/ /tt¥.¥ /tt#tt DCL (ANALYZE,ASSIGN,BCD,BCDOUT,CHECK,CLOSEP,COHHUI, CONVERT,COPY ,COPYOLD,CRASH,DPLBOOT,DPLUSER, DUAL,EXIT,EXPORT,PLAGS,PORCE,PREEOBE.IHPORT,IHQUIRE,INSERT, INVALUE,INVEHT,BIXBUHD,HIXFIX,HIXPLOH,HIXSAVE,HIXSART, HIXSLTS.HODIPY,HGRU,PARACOL.PARAOBJ,PARARHS, PARABIH,PARAROW,PICTURE.PRIHAL,PROBEHS,PONCH,RINGE, BECBLTE,REDUCE,REPORT,RESTORE,RETBEVE,REVISE,SAVE, SAVERHS,SCALE,SELECT,SELIST,SETREP,SETUP,SOLUION,STATUS, TIHE,TRACE,TRANCOL,TRAUROH ) ENTRY EXTERNAL; ALGORITHEIC TOOLS EXTERNAL ENTRIES *"‘*/ DCL (PRICEP1,PRICED1,PREHUL,POSTHUL,INVCTL1,GETVEC1, PTRLHUI.PTRANL1.PIXVEC1,ELIHN1.CHUZR1,BTRANU1,BTRANL1) ENTRY EXTERNAL: DPLPLICB HACRO : HPSX/370 COHHUHICATION REGION “"'/ DCL DPLSTR(768) DEC PLOAT(16) EXTERNAL IHIT(0.0); DCL DPLPTB pra nxrzannL ; DPLPTR a anoa(npnsra); DCL 1 NIUBDN hJNfU NBUN) NBOhJN DPL ALIGHBD aaszo(opnprn), xnou1 cana(16), 2 xcoaz BIN PIXED(31), 2 xnouz CHAR(16), (errLz,xsuarrrn) 913, 2 x0053 CHAB(16), 2 xvzasuon cnaa(5), xzuvraon UNALIGEED, 3 (IPLI,XTSO,XCONT,XDOS,XBBPORT,XATTH,XEPSX,XCBS)BIT‘1), xoonu caaa(5), 2 xuransw BIT(B), 2 xnuuuc CHAR(16), (XINP,XLUCTRL) DEC FLOAT(6), (xuxpcxrx,xaxwovr,xpoausos,xszerzaa,xrarprv,xrarvaa,xratvax, XCHSXT)BIN 21x29(31), (XPBNAHB,XOLDNAHE,XOBJ,XCHROH,XR03) C8AR(8), (XRHS,XCHCOL.XCOLUHN,XDATA,XSAVERHS,XBOUND,XRASGE) caaa(3), xnuas CSAR(28), xvasrars, 3 (xn,xun,xsa,xa.x2LG,XLaIxI,XLaAXI,anACVBC) BIN PIXED(31), 3 (XBIGBAS,XSGROHS,XGOBTYPE.XHXJ,XHXSOS) BIN PIXED(31), 10057 CHAR(8), (XPARAH,XPHI,XTHETA,XXSI,XZETA) DEC PLOAT(16), (xrnu,xsxc,xr) BIN PIXED(31), xoune CHAR(68), PL/I OPTIHIZIHG COHPILER HIP: PROC BEOBDER; STST (XPARPRT,XPARDELT,XSCALE,XEPS.XPARBAX) ch PLOAT(6), XPROCNAH CHAR(8), 2 (xroNCI,xsxr) DEC BLOBI(16), (XHIP,XBEGDJ,XITERHO,XHAJIT,XEBROR) BIN PIXBD(31), (XKJINC.XKJOUT) BIN PIXED(31), 2 XINCDJ BBC FLOAT(6), XTRANTIB BIN PIXED(31), XINVNO, 3 (XINVBBNO,XIBANN0,XIINOBG) BIN PIXED(31), IPARSI 8IT(8), 2 xnua1o CHAR(7), xancsw UNALIGNBD, 3 xnua11 CHAR(3), 3 100512 312(3). 3 (XHIXPHAS,XDUH13,XLU,XHIP,XSEP) 312(1), (XPRICE,XP,XINTVAL,XPBEQINV) BIN PIXBD(31), (XCLOCKSH,XOLDINV,XLOGCAPT,XCBBCKSH,XTRANSU) BIN IIXBD(31), (XDZPCT,XDJBIB,XDJPCT,XSCLERR,XTRUSCL) BBC PLOLT(6), (IBJSCALB.ICIBCLB,IBBGBNSB,XSCICLB) BIN PIIED(31), (XBBCTIPY,XRECTNO,XNOPBEB) BIN PIXED(31), xnou1u CBAR(12), (IFBEQ3,XPRBQZ.XPREQ1,XDELTH,ILASTIH) BIN PIXED(31), (IBBBQLGo,xrBBQLGB,xNopaINI,xIIuBS) BIN PIXBD(31), xnua15 CHAR(92), (XTOLPIVS,XDUH1SC(18),XSSCILB) DEC BLonr(6). (XDUB1SP(8),XHNO,XHSIZE,XCOLRC.IRHSRC,2003158(Q),XCYCLBSW) BIN PIXED(31), XDUN1SL CHAR(118), xzrasw BNALIGNBB, 3 (XETAPOLL,XETLPABT,IETALU,XETATN,XETAACCU) BIT(1), 3 100315! BII(3), 3 (IINVBUIL.xINVLU; 811(1), xINVDBNs BBC PLOATf6), 2 (XPABTIHV,XINVCORE) BIN PIXBB(31), xoua16 CBAB(76), xaxprn, 3 (XH,XK5,XHXLUDY,XHX!RIC,XHXCHE) PTR, (xv,xc) PTR, x910 BIN PIIED(31), 2 XPI(3) PTR, XALPHAO BIN rIXBD(31), 2 XALPHA(S) PTB, xvaxso BIN PIXED(31), 2 xvazc(5) PTB, (XUPLIHIT,XSUPLBT,XSCLORG,XCOL,XUSTK,XTN) PTR, xwo, 3 (xwuo,waONAX) BIN PIXBD(1S), 3 xw(12) PTR, (XDUH163,XDJO) BIN PIXED(31), 2 an(5) DEC PLOAT(16), ID06160 CHAR(176), (XLH,XPREE,XPBOC,XBTACORE) BIN PIXBD(31), (xacoaa,xachoaz,xwazc,INOBBS) BIN PIXED(31), IBBN17 CHAR(36), XSETLB BIN FIXBD(31), (XTOLZS,XTOLREL,XTOLV,XTOLDJ,XTOLPIV,XTOLERR) BBC PLOAT(6), (XTOLCBK,XBONCBK.XTOLINV,ITOLI1,XI0L12) DEC PLOAT(6), (ITOLBLEH,XKAPPA,XTRAHCHK,XRHO,IZI,XPRICHK) BBC BLoar(6), (XVBCNOBN,XBBLINBJ,XIOLNBII,XBJBBL) DEC FLOAT(6), NM NNNNNN NM NNNNNNNNNNN NNNNNN NNN NNNNNNNNNN PL/I OPTIHIZIRG COHPILER HIP: PROC REORDER; STHT 100518 CBAB(12). (XOBJSC,XCHROHSC,XDUB188(6) ) 05c PLOAT(16), ISCILNII BIN PIXED(31), 2 XTOLDJS 03c PLOAT(6). (XR1C2.!R2C2) CHAR(8), 2 (121c1,132c1) BBC PLOIT(6), XBBRCHT BIN FIXED(31). 2 IIBINCBS 02c PLOAT(6), XRBAL01(10) 03c PL01T(6), XINT01(10) BIN PIXED(31), xca5301(10) CHAR(8), (IBBBUCB,xsoNTA.XSIBBI,xvzcroa,IBNBSN.INIBBBBI) BIN PIXED(31), 100519 CBIB¢2BB), (191V,122No,101,1051) 02c PLOAT(16), (XDUHZO(3),XITBRINV.XHAJINV,XHAJNO,XDUUZOB(7))BIB r1130(31), (ITOLVREL.XTOLZREL,XKPHAX,XKPERR,XDBPS,XHXHUTDJ)DEC PLOAT(6), (XHXTDJ,XSIGHAZ,XTOLI}) 02c PLOAT(6), 2 1090555 BIN 21130(31), 100521 CBIB(36), NNNNNNNNNNNNNNN /‘*‘*‘ HIXED INTEGER CELLS “***/ 15151351 CHAR(u), (INXBBIIo,15XBBOP.INXBBSIB,XNIBBSIB.1515119.151SCNN,1515cr, 1515c3,151011,151012.151013.15110LI.151511, 151512) 03: PLOAT(6), (15151I1,1519CII) BIN PIXBD(31), (XHXPCPAR,XHXPCDUA,XHXTOLZE) 03c PLOAT(6), (I5113N,151NN0,15131,1N1J2,1515NI,xuxsswr) BIN 11120(31), (XHXOVPLC.XHXBIN,XBXPNLOG) BIN FIXBD(31), INXBBBN BIN FIXED(31), 2 15131! 02c PLOAT(16), (XHXCAPT,XHXLOG) BIN 11120(31), (100522 CHAR(16) .15190: Dec FLOAT(6),XDUHZZD CHAR(188)) , 100523 caaa(302), xspIB BIN PIXBD(31), (100523 CBBB(BB).1515A150 BIN 111:0(31)), (XHXSTART,XHXSOSHT,XOPSTART,XOPBESTR,XOPSAYB, 109521,IRBOBNB,IBBBSIB,INNBBBL,XBNBNPN) CRAR(8), (IOPPNBQS,XIch1,12BBNo.INNxc1) BIN PIXED(31), (151N003.1519CCN1) BIN 11150(31). 2 XTOLDJI 05c PLOAT(6), XHXOPTHC BIN PIXED(31), 2 XHISHAX CHAR(8), xnsza(50) BIN PIXBD(31): NNNNNNNNNNN NN NNNN PL/I OPTIHIZIHG COHPILER HIP: PROC REORDER; STHT /itt.#¥#¥$tti’t$.titt‘t3‘ttfitfit*ttCfiltttfittfiifi/ /“**‘ INITIALIZATION TITLE 8 SUBTITLE *‘**‘/ [ttittttittttttttttttttttttt¢$$ttttttt¥ttttttt/ DCL 1 $111 EXTERNAL STATIC, 2 $0050 CHAB(20) INIT(' '), 2 sTIILB CHAR(80) INIT(' BCL EXECUTIOH‘), 2 $0051 CNAB(6) INII(' PAGE'), 2 SPAGE PIC 'zzzzz9' INIT(O), 2 $0052 CNNN(B) INII(' '), SDATB CHAR(6); DCL DPLPRNT PILB VARIABLE EXTERNAL: N /O*#$t##t#¢ttfifiltttttittttttt*I#t##tttttttttfittt’tttttttt/ /'**** ATTBIB HLCRO 8 REHPLACEHBNT ECL ATTRIBUTES “**‘/ /ttttitttttttttttttttttttttittttltttttttttttttttttttitttt/ PL/I OPTIHIZING COHPILER HIP: PROC REORDER: STHT 1O 18 19 20 21 22 /#ttttttttttttttttttfitttt..‘ttt‘ttttttttitttttttttt/ /“**t DPLINIPR HACRO = INITIALIZE SYSPRINT *‘***/ /tttttttttttttt¢t¢¢.¢ttttc¢t:tttttttttttttttttttttt/ DCL 1 SSUBTITL BASBD(XSUBTITL). 2 $8508 BIN PIXBD(31), 2 SASUB (HSUBTL REPER(SNSUB)) PTR; DCL SHSG CHAR(132) VARYIHG BASED(SPSUB). SHEAD CBAR(126) BASBD(ITITLB). SPSUB PTR: XTITLB t ADDR($TIT): :DATE 8 DATE; XSUBTITL 8 BULL:‘ DCL (HULL.DATE) BUILTIB: DCL DPLINSZ BI! PIXBD(1S) INIT(132); DPLPRNT 8 SYSPRINT: BPBN PILB(SYSPRINT) PBGBSIzB(57) LINBSIzB(BPLIst) ; OB BBDPAGB(DPLPRNT) BEGIB : DCL SI BIN PIIBD(1S,O) : SPAGB 8 SPACE + 1 ; I! ITITLB=NULL I(XTSO='1'B 8 DPLPBNT=SYSPBINT) THEN PUT PAGE PILB(DPLPRNT) ; ELSE DO ; PUT LIST($HBAD) PAGE FILE(DPLPRNT) ; PUT SKIP PILE(DPLPRNT) ; END : I! XSOBTITL ~= NULL THEN DO ; DO SIg 1 TO SNSUB ; SPSUB 8 $ASUB($I) : PUT SKIP EDIT($BSG) (A) PILE(DPLPRNT) ; END ; PDT SKIP PILB(DPLPRNT); END : EBD ; PL/I OPTIHIZING COHPILBR HIP: PROC REOBDEB; 5151 /#t‘$fittt¥¥fi.*$tt¥ttt$¥tt##fitttlttfifitttfifitttttttfitttttfitttfitttttttt/ /ttt DPLTOL HACBO = DPLPLICB CBLLs TOLERANCBS INIIIALIZNTIONS ttt/ /t¥¥*$fii¥*“itttt.ttttttfitti$$tttt¥tittittttttttfitt*ttttttttttttttt/ 3s ICLocxsw , XPRBQLGO , IIchoBB . XPARTINV = 1 ; 36 XSCALSATa-1 ; 37 xcazcxsa=20;xoLDINv s 10 ; 39 13291335: ’ 20;1?BBB=2ou80;xcoaz=16711630; u2 XDJPCT 80.001; 110112=o.01 ; xronzz = 1.03-30; us IIOLBBL, XIOLBLBN = 1.05-10; as IIBLNNII , XTOLERB = 1.02-6 ; u7 XTRAUCHK = 1.03-9 ; as XTOLPIV , XTOLINV s 1.03-6 ; 09 ITOLDJ = 1.03-8 ; so XTOLDJ1 a 1.02-5 ; 51 XDJREL , 110111 2 1B-11 ; XTOLZREL=1E-13 ; S3 XTOLV=1B-5 ; XTOLI3= 0.01 ; 55 xxPBBB=1B+B ; 10395=o.1 ; $7 XTOLCBK=1B-8 ; 119551 =1B+6 ; XTOLVREL = 1B-9 ; 60 IRBCIIPI=100;1INVBBNS=1. ; 1L0C1NI=1.1 ; 63 XHXTOLZE=1.0B-S: IHAXCT=S ; 6S XHXPBLOG=1:XHXRATIO=O.15;XHXSCP=1.2; xnxsc2=o.s ; 69 XHXQI1=O.1:XHXQIZ=0.0S;XHXQI3=O.5; 72 IHXTOLI=0.1;XHXST1,XHXST2=2.; 7a XHXSIIT.XHXPCIT=3 : 7s INXPCPAB=O.33 ; XNXPCBBN=0.66 ; 77 XRBOUND,XBRESTA,XRNODEL,XOPBBSTR,XOPSAVB=' 1; 7B INNBNPB2'NBNPNBB';IOPSINNT='BBGIN'; 80 XOPPBEQS=10; B1 XHXSTART='STANDARD':XBXSOSHT=' '; 83 IINP,1510B0P=1B75; Bu 1519c111=9; 85 1512NBRI=50;1N110J=100.; B7 IIOLPIvs=1B-u;IIBYPva=2; 89 XSPIE=1; PL/I OPTIHIZING COHPILER HIP: PROC REORDER; STHT 90 91 92 93 9Q 95 96 97 98 99 100 101 102 103 10“ 105 106 107 108 109 110 111 112 113 11B 115 116 117 120 121 122 123 /$#ttttt#$$¥tittttttittttitfitttt.fitttttttttttttfitttttttttttfittttttt/ /'*‘ DPLONCD BACRO 3 DEFINITION ON-UNITS EOE POSSIBLE DEHANDS ‘PP/ /tttttttttBttttt¢ttt¢t¢attttttttttctttttttttttttttttttt:Nttttoctttt/ OB CONDITION(XCOBERR) BEGIN ; DCL TOLIZ DEC PLOAT(6) INIT(XTOL12) ; I! ITOLIZ >=0.1 8 XTRANCBK >= 13-6 5 XITERNO=XINVERNO THEN DO: I? XflIXPBAS THEN DO; CALL HIXSAVE; CALL BIXSATS; END: STOP: END: XTOLI2=O.1 : I? XERBNO >3 3 THEN DO : XTOLPIV,XTOLINV=1E-u ; I! XEBRUO >=S TEE! D0 ; XTRANCHKs1E-6 ; XIHVDEHS=O. ; END : ELSE XTRANCHK=1E-8 ; END ; CALL INVERT: XINVDENS=1.0 : XTOL12=HIN(0.16.TOL12+TOL12) ; IP XIRVCT >80 THEN IEBRNO=XERRHO+1 : ELSE DO; XIIVCT 2 IHAXCT XEERNO = 1 ; END; XCONT 8 '1'3; \ END; 0N COUDITIOI(XDODLTU) BEGIN; IP XSIXPBAS THEN D0: CALL BIXSAVE; CALL HIXSATS; END: STOP; PL/I OPTIHIZING COHPILER HIP: PROC REORDER; STHT 12“ 125 126 127 128 129 130 131 132 133 13“ 135 136 137 138 139 190 101 102 193 103 1u5 1&6 1a? 1u8 1Q9 150 151 152 153 15“ 155 156 END; ON COBDITION(XDODUAL) BEGIN: CALL DUAL: XCOHT = '1'B; END; OH COUDITION(XDOPEAS) XCOHT 8 '1'3: 0! CONDITIOB(XDOINV) BEGIN: DCL TOLIZ DEC PLOAT(6) INIT(XTOL12) ; I? XERROB .s 0 THEN ITOLI2= BAX(XTOL12,0.1) : CALL INVERT; I! IIBVCT 18+“ THEN D0 : XERROBzu : SIGNAL CONDITION(XDOINV) ; END ; XCONT 8 '1'8 ; END; 0N CONDITION(XDONFS) BEGIN; I? XHIXPHAS THEE DO; CALL HIXSAVE; CALL HIXSATS; STOP: END: IF XEPS=0.0 THEN DO; PL/I OPTIHIZIHG COHPILER HIP: PROC REORDER; STHT 157 158 159 160 161 162 163 16% 165 166 167 168 169 170 171 172 173 170 175 176 177 178 179 180 181 182 183 180 185 186 187 188 189 190 191 192 CALL STATUS; CALL SOLUIOH; STOP; BUD; IEPS=0.0; IOPDEGN80: XCONT 8 '1'8; END; 0N CONDITIOH(XDOHHX) : ON CONDITIOU(XDOOPT) 0N COHDITION(XDOPEHX) ON COBDITION(XDOPBIH) BEGIN; I? XBIXPBAS TBEB DC: on COBDITIOH(XDOSPS); ON CONDITION(XDOOPT): , OH CONDITIOB(XDOFEAS) XCONT = '1'B; END: CALL PRIHAL; XCONT 8 '1'8; END; 08 CONDITION(XDOPINT) BEGIN: CALL SOLUIOH; I? XHIXPHAS THEN DO; I? XUXHAXNO=O THEN XCONT = '1'B; ELSE DO: XBXBAXNO=XBXEAIRO-1; I? XHXHAXNO~=O THEN XCONT = '1'8; ELSE XHXOPTBC81; END: END; ELSE ICONT 8 '1'8: END: ON CONDITION(XDOUNB) BEGIN: IP XEPS=0.0 THEN DO: CALL STATUS; CALL SOLUION; PL/I OPTIHIZING COHPILER HIP: PROC REORDER: STHT 193 19a 195 196 197 198 199 200 201 202 203 206 205 206 207 208 209 210 211 212 213 21B 215 216 217 218 219 220 221 222 223 STOP; END; XEPS=0.0; XOPDEGN80; XCONT 8 '1'B; END; ON CONDITION(XHAJERR) BEGIN; CALL STATUS; STOP: END; ON CONDITION(XIOEBB) BEGIN: ON CONDITION(XIOEBR) STOP ; I? XHIXPHAS THE! D0; CALL BIXSAVE; CALL BIXSATS; END: ELSE DO: CALL STATUS: xpgynsvttttttttu; CALL PUNCH: END; STOP: END; OI CONDITION(XHINERR) : 0N CONDITION(XBXOVPL) BEGIN; CALL HIXSAVE; CALL HIXSATS; STOP: END; OH COHDITIOH(XSINULH) CALL RETEEVE; ON FINISH CALL EXIT: PL/I OPTIHIZING COHPILER HIP: PROC REORDER; STHT 220 225 226 227 228 229 230 231 232 233 23a 235 236 237 238 239 230 2u1 232 2&3 2Q“ 2&5 2H6 207 /¥itittiit.tttttfifitttttfitfiltflfit*.*¥$*#tttt*t/ /**8** USER DEFINED uPSX/HIP PROGBAH *****/ /t¢tt#tttttttttttttttttttttttt¢ttttttttttttt/ DCL XFUNCT1 CHAR(12): DCL XHXNNO1 CHAR(6): DCL INODES BIN PIXED(31); OB CONDITION(XBXDPRN) BEGIN; CALL HIXSART('RESTORE','NODE',XHXBIN); CALL SOLUION('PILE','OUT'); END; ON CONDITION(XDOPINT) BEGIN; CALL HIXSAVE('8AHE','TREE'): END; DPLPRNT=OUT; OPEN PILB(OUT) PRINT PAGESIZE(66) LINESIZE(132); XOBJ8'OBJ'; XFREE=50000; XRHS='RBS'; XPREQ1=1000; XDATA='FOAH'; XPBNAHE8'POAH': CALL CONVERT('PILE','CARD'); INODES=1000; CALL SETUP('BOUND','BOUND',‘RANGE',‘RANGE',‘NODES',INODES); PUT PILE(OUT) PAGE; PUT EILE(OUT) PAGE: /$#¥ttttt3$tt$¥t¥$tt$tttt$#ttfit CALL PICTURE; *Ctt$8.8tt$ttfitttt##fittttttttt/ CALL BBINAL; XPREQ180: INIFBNzo; CALL SOLUION; PUT STRING(XPUNCT1) EDIT(XPUNCT) (P(12,2)); PUT STRING(XHINNO1) 5011(151NNO) (P(6)); DISPLAY(' CONTINUOUS SOLUTION: OBJ = 1]: IFBNCI1 (( ' AT 5002 '11 XSXNNO1); CALL BIISART; 151NN0=300; INIPBN=300; CALL NIIFLow; CALL SOLUIBN('BILB','BUI'); PUT STRING(KFUNCT1) EDIT(XPUNCT) (P(12,2)); PL/I OPTIHIZING COHPILER HIP: PROC BEORDER; STHT 260 PUT STRING(XHXNNO1) EDIT(XHXNNO) (P(6)): 261 DISPLAY(' INTEGER SOLUTION: OBJ 8 'll XEUNCT1 ll ' AT NODE 'll XHXNNO1): 262 CLOSE PILE(CARD); 263 CLOSE PILE(OUT); 26“ FINISH: END HIP: mmmmmmmmmm mmmmmmwmmmmm mm mm mm mmm mmmmmmmmm mmmmmmmmm mmm mm mm mm wmmmmmmmmmmm mmmmmmmmmm nnnnnnnnnn nonnnnnnnnnn on on no on an on no on 00 on nnhnnnnnnnnn nnnnnnnnnn II I: z: I: z: z: I: x: x: I: Izzzxxzxzzzz Izzzxzzzxzzz 1: x: .1: z: :1 I: z: I: I: I: mmmmmmmmmmmm mmmmmmmmmmmm mm .mm mm mmmmmmmm mmmmmmmm mm mm mm mmmmmmmmmmmm mmmmmmmmmmmm 000000000 0000000000 00 0 00 00 00 00 00 00 00 0 0 00 00 00 00 00 00 0 0000000000 000000000 PL/I OPTIHIZING COHPILEE SCHED: PROC BEORDER; SOURCE LISTING STHT 1 SCHED: PROC 5203028; 2 DCL (505.SBIFT,IFOS.LNUN,ISIN) FIXED BIN(15) STATIC EXTERNAL; 3 DCL BABE FIXED BIN(31) STATIC EXTERNAL; u DCL (SIZE(50),PLAT(SO),TAPE(50)) CHAB(1) STATIC EXTERNAL; 5 DCL (CODE(50),CLINE(200)) CNAB(2) STATIC EXTERNAL; 6 DCL VALUE(50) FIXED DEC(7,2) STATIC EXTERNAL; 7 DCL PART(SO) C5AB(9) STATIC EXTERNAL: B DCL (LOAD(50),NBNPBT(50),NOLDS(50),FNANE(SO),FACN(50),NATE(50), SNIF1(50),SNIpa(50),SBIFu(50),INVBAL(50),SAFETI(50), FCD(50),SNIFZ(50),LPOS(50).LDIFF(50),NTOT(50),LNDIFF(200)) FIXED BIN(15) STATIC EXTERNAL; 9 DCL TITLE CNAB(ao) STATIC EXTERNAL; 1o DCL 1 CHANGE(100) STATIC EXTERNAL, 2 (POS.NE30) FIXED BIN(15), 2 (ADD,SUB) C8AR(2); 11 DCL ICOUNT FIXED BIN(15) STATIC EXTERNAL; 12 DCL LED FIXED BIN(1S) STATIC EXTERNAL; 13 DCL AVAIL(100) CNAN(2); 1a DCL SDIFF(100) FIXED BIN(1S); 1s DCL (ITENF,ITBNP1) CNAB(2); 16 DCL (SIZE1,SIZEZ) FIXED BIN(1S); 17 DCL (ITEHP2.ITEHP3) FIIED BIN(15); 1B DCL FNOBLEN(100) FIXED BIN(15); 19 DCL REHOVE(100) CHAR(2): 20 DCL 1 CARD, 2 NANE CNAB(B), 2 NOCOL FIXED BIN(31) 1511(0), 2 00551 CBAB(u); 2 DCL C0L05N(250) CHAR(8): 22 DCL 209(250) CHAR(8); 23 DCL TYPE(SOO) FIXED 815(31): 24 DCL ENDSEC CBAR(3) INIT('$ENDSECS'): 25 DCL ENDATA CHAR(8) INIT('ENDATA'); 26 DCL VALUES(SOO) FLOAT DEC(6): 27 DCL VALUESB(250) FLOAT DEC(16) DEFINED(VALUBS); 28 DCL VALALF8(500) CHAR(8) DEFINED(VALUES); 29 DCL LAST CNAB(2) INIT('II'); 3o DCL ACTIVE(2SO) FIXED BIN(31); 31 DCL CNANE(2SO) CHAR(8); 32 DCL (IHAX,ISUB,ISUH,CPOS,ICNT,A1,A2,A3,HH) FIXED BIN(15); PL/I OPTIHIZING COHPILER SCHED: PROC REORDER; STHT 33 3Q DCL (ISTART,IEND,HSIZE,NSIZE,A(3)) FIXED BIN(1S); LSIzo: /‘$$tifittfitttttttfifiOttttfit¥.#tfitt$t/ /‘** INITIALIZE THE VARIABLES l”"/ /¢tittttitttttttttttttttttttttttttt/ BEBIN_FON: IDD(‘1" ': 508(‘18' ': POS(#)=O: NEED(‘)=0: AVAIL(8)=' 1; SDIPP(‘)80: ACTIVE(*)=0: CNAHE(*)=' ': TYPE(¢)=O; NENOVE(8)=' 1; PEOBLEH(‘)80; /#tit.¥##¥t##tttfitttfitttttfitfifitttttttt/ /““. READ AND WRITE FILE OUT *“**/ /ttttttttttttttttttOttttttttattttttttt/ READ FILE(OUT) IGNORE(1): READ FILE(OUT) INTO(CABD); READ FILE(ODT) INTO(NON); READ FILE(OUT) INTO(TIFE); READ FILE(ODT) INTO(VALDES); READ FILE(ODT) IGNOBE(1); PL/I OPTIHIZING COHPILEE SCHED: PROC EEORDER; STHT /ttt$*#tt¢ttttt8#tttttttttttlttttttttttttttt/ /88838 GET AND PRINT THE BOB SECTION 88888/ /¢¢tttttttttOtttttttittittttttt‘ttttttttit#t/ $2 LAB1: READ FILE(OUT) INTO(CARD): 53 IE NAHE=ENDATA THEN GO TO LABS: 53 I? LSR=0 THEN PUT EDIT('SOLUTION OF THE BOB SECTION') (PAGE,X(35),A): 55 READ PILE(OUT) INTO(BOB); 56 READ FILE(ODT) IGNOBE(1); 57 IE LSB=0 THEN PDT EDIT((RON(N) DO 121 TO NOCOL)) (5319(31ox(6):(30C0L1(1(31oX17))): 58 IF LSN=O TBEN POT SNIP(1); S9 LABZ: READ PILE(OUT) INTO(VALUES); 60 I? VALALP8(1)=ENDSEC THEN D0: 61 ICOUNT=1; 62 GO To LAB3; 63 END; 6a DO K=3 TO N; 65 IE VALUESB(K)< 1.E-6 THEN VALUESB(K)=0.0; 66 I? VALUESB(K) > 1.310 THEN VALUESB(K)=0.0; 67 END; 68 IF LSN=0 THEN PUT EDIT((VALDESB(K) DO I=1 To (NOCOL-2)),VALALFB(NOCOL-1), VALALP8(NOCOL)) (SKIP(1)o(N0C0L‘2)(3(12u“).113))ox(3):l(2)ox(9)ol(3)): 69 GO To LAB2; PL/I OPTIHIZING COHPILER SCHED: PROC REORDER; STAT /¥#¥*t.‘$t*¥#t¥¥$tt*tttttttttttfii.¥*#$#l#‘¥t##./ /8t8*t GET AND PRINT THE COLUHN SECTION 88888/ /#*t##3tiltttifitt##tttt‘tttttltlti##8tt’ttt‘fiti/ 70 LAB3: READ FILE(OUT) INTO(CARD); 71 IF NAHE=ENDATA THEN GO TO LABS; 72 IF LSN=0 THEN PUT EDIT('SOLUTION OF THE COLUNN SECTION') (FAGE,1(35).A); 73 READ FILE(OUT) INTO(COL05N); 70 READ FILE(OUT) IGNORE(1); 75 IF st=o THEN FBT EDIT((COLBNN(N) 00 5:1 To NOCOL)) (SKIPU) .116) , (NOCOL) (A13) .1 (7) 1 ) : 76 IF st=o THEN PUT 5119(1); 77 LAB”: READ PILE(OUT) INTO(VALUES); 78 IP VALALP8(1)=ENDSEC THEN GO TO LAB3: 79 IE VALUESB(1)=0.0 THEN GO TO LAB“; 80 ACTIVE(ICOBNT)=VAL0ESB(1)+0.01; 31 CNANE(ICOUNT)=VALALP8(NOCOL); 82 ICOUNT8ICOUNT+1; B3 IF SUBSTR(FALALFB(NOCOL),3,2)~= LAST THEN FBT 5119(1); Ba 00 K=3 TO 0: 85 IF VALUE58(K)< 1.E-6 THEN VALUESB(K)=0.0; B6 IF VALUE58(K) > 1.210 THEN VALOE58(K)=0.0; 87 END: 88 IF LSN=O THEN PUT EDIT((7ALBESB(N) DO 121 TO (NOCOL-2)),VALALF8(NOCOL-1), VALALF8(NOCOL)) (SKIPUhWOCOI-‘21 ”(12:91 .1131).X(8).A(2).x19).1181): 8° LAST=SUBSTR(VALALP8(NOCOL),3,2): 90 GO TO LABQ: 91 LABS: ICOUNT=ICOUNT-1; 92 CLOSE PILE(OUT): PL/I OPTIHIZING COHPILER SCHED: PROC REORDER: STHT /fitfitt##tittfitfitfittttt‘tttttttttt$$¥¥$t/ /8#8 SORT TNE PNOBLEH AREA ABRAIS 88*/ /t#t¢ttttt#¥¥Ottttt¥ttttttttttttttitttfi/ 93 DO I=1 To LNUH-1; 9a 00 J8I 10 L505: 95 IF LPOS(I) <2 LPOS(J) TBEN GO TO SOBTP; 96 ITENF2=LFOS(I): 97 ITENP3=LDIFE(I): 9B LFOS(I)=LFOS(J); 99 LDIFF(I)=LDIFF(J); 100 LFOS(J)=ITENFz; 101 LDIFF(I)=ITENF3: 102 SORTP: END; 103 END; PL/I OPTIHIZING COHPILER SCHED: PROC REORDER; STNT /*tttttitttttttttttttttttttttttttttttttttttt/ IEEP ELININATE BEDUNDANT PROBLEN AREAS 888/ [809069889899tttttOOOOONNCOOSOtttttttttttstt/ 109 INDEX81: 105 I=1; 106 D0 BHILE(I <= LNON): 107 I! LPOS(I)+1=LPOS(I11) 8 LPOS(I)+2=LPOS(I+2) 8 I<=LNUN-2 THEN DO; 108 PBOBLEN(INDEX)=LPOS(I¢1); 109 INDEX=INDEX+1: 110 I=I+3; 111 END: 112 ELSE I? LPOS(I)+18LPOS(I+1) 8 I <= LNUN-1 THEN DO; 113 PBOBLEN(INDEX)=LPOS(I); 11a INDEX=INDEX+1; 11S I=I+21 116 END; 117 ELSE Do: 118 PROBLEH(INDEX)=LPOS(I); 119 INDEX=INDEX+1; 120 18101; 121 END; 122 END; 123 INDEX=INDEX-1; PL/I OPTIHIZING COHPILER SCHED: PROC REOBDEB; STHT 12“ 125 126 127 128 129 130 131 132 133 13k 135 136 137 /#t.#t#fitOittttttttttitfittttttttttttttt$tt$*¥*#/ /tttt¢ PUTTING TNE RESULTS OF THE HIP 8****/ /t¢ttt SUBTRACT SECTION IN RENOVE ARRAY ...:c/ /t#.fi¥tt*$*tfitttttttfitttittitit'ttttttttfitfifi*‘i/ ICOUNT=1: DO ISUB=1 TO 250; I? SUBSTR(CNAHE(ISUB),3,2)='SS' THEN GO TO PND_SUB; END: PUT SKIP EDIT(' THE PROGBAN STOPS HERE') (A); STOP; FN0_50B: DO I=1 To 505 NNILE(SBBSTR(CNA53(ISBB),3,2)='ss'); DO J=1 TO ACTIVE(ISUB): REHOVE(ICOUNT)=SUBSTR(CNAHE(ISUB),1,2); ICOUNT=ICOUNT*1; END: CHK_NEXT_SS: ISUB=ISUB+1z END: ICOUNT=ICOUNT‘1; PL/I OPTIHIZING COHPILER SCHED: PROC REORDER; STHT /tt.¢#itttt*ttltttltttttttttttttttttttttttttttttt/ /‘*“* PUTTING THE RESULTS 0? THE PROBLEN *‘**’/ /*8¥88 SECTION IN THE CHANGE ABBA! "*’*/ [OttOOOJtittttttt.ttttttttttttttttttttttttttttttt/ 138 ICNT81: 139 138:0; 100 D0 J81 TO INDEX; 141 L81; 162 D0 I=-1 To 1: 1&3 DO K81 TO NUH: 100 I? CLINE(PBOBLEH(J)+I)=CODE(K) THEN GO TO FOUND; 105 END: 106 FOUND: DO LL=1 TO ICOUNT: 107 IF CODE(N)=RENOVE(LL) THEN DO; 198 POS(J)=PBOBLEH(J)+I; 109 SUB(J)=CODE(K): 150 D0 K=LL TO ICOUNT-1; 1S1 REHOVE(K)=RENOVE(K*1); 1S2 END: 1S3 ICOUNT=ICOUNT-1; 154 GO TO CONTINUE; 155 END: 1S6 END: 157 A(L)=LOAD(K): 158 L=L+1: 159 END: 160 INA1=5A1(A(1),A(2),A(3)): 161 I? IHAX822 THEN DO; 162 IF A(1)=22 THEN I5A1=5A1(A(2),A(3)); 163 I! A(2)822 THEN DO: 169 POS(J)=PROBLEH(J)-1; 16S SUB(J1=CLINE(PEOBLEH(J)-1); 166 AVAIL(ICNT)8SUB(J): 167 ICNT=ICNT+1z 16B FOS(INDE1+ISN+1)=FBOBLEN(J)o1; 169 SUB(INDEX*ISN§1)=CLINE(PROBLEH(J)+1); 170 AVAIL(ICNT)=SUB(INDEX+ISN+1); 171 ICNT=ICNT§1; 172 ISH=ISH+1; 173 GO TO CONTINUE; 17a END: 175 I? A(3)822 THEN IHAX=HAX(A(1),A(2)); 176 END: PL/I OPTIHIZING COHPILER STHT 177 178 179 180 181 182 183 189 185 186 187 188 189 190 191 192 193 190 195 196 197 198 199 200 201 202 203 20“ 211 212 213 21a 215 216 SCHED: PROC I? IHAX=A(2) THEN DO; POS(J)=PROBLEH(J); SUB(J)8CLINE(PNOBLEH(J)); AVAIL(ICNT)=SUB(J); ICNT8ICNT11; GO TO CONTINUE; END; IF INAX=A(1) THEN DO; FOS(J)=FROBLEN(J)-1; SUB(J)=CLINE(FROBLEN(J)-1): AVAIL(ICNT)=SUB(J); ICNT=ICNT+1; GO To CONTINUE; END; IF IHAX8A(3) THEN DO; POS(J)8PROBLEH(J)+1; SUB(J)=CLINE(PROBLEH(J)+1); AVAIL(ICNT)=SUB(J); ICNT=ICNTO1; END; CONTINUE: NX: END; INDEX=INDEX+ISN; INDEX=INDEX¢1; ISTART=1; CPOS=60; DO L=1 TO ICOUNT; DO J=ISTART TO 100; D0 KK=1 TO 2; I? KK=1 THEN K=CPOS-J; ELSE K=CPOS+J; I? K < 1 THEN GO TO UK: I? HENOVE(L)=CLINE(K) END; GO TO NI_CHK; FND_LETTER: POS(INDEX)=K; SUB(INDEX)=CLINE(K); INDEX=INDEX+1; ISTART=J+1; IF L < ICOUNT B NEHOVE(L)«=EEHOVE(L§1) GO TO NI_REHOVE; BEORDER; THEN GO TO PND_LETTER; THEN ISTART=1; PL/I OPTIHIZING COHPILEB SCHED: PROC RBORDER; STHT 217 ux-cax: END; 218 NI-REHOVE: END; 219 INDBX=IHDEx-1; 220 ICOUNT=INDEX; PL/I OPTIHIZING COEPILBR SCHED: PROC REORDER; STBT /t4ttttttttttttt#¢ttttttttttttttttttttttttttttt/ /‘***# PUTTING THE RESULTS OF THE flIP ‘*‘**/ /”"*I ADDITION SBCTIOH IB AVAIL ARRAY ‘****/ /t¢t#tttttttttt$ttttitttttttttitttttttttttttttt/ 221 D0 IADD=1 TO 250: 222 I? suasra(cuauz(rxou),3.2)='An' 2323 so TO PND_ADD; 223 BED; 22a FHD_ADD: DO I=1 TO nun UHILB(SUBSTR(CNAHB(IADD),3,2)='1A'): 225 DO J81 TO ACTIVE(IADD); 226 AVAIL(ICNT)=SUBSTR(CNAHE(IADD),1,2); 227 ICNT=ICNT+1: 228 END; 229 cnx_uexr_na: IADD=IADD+1; 230 END; 231 ICUT=ICNT-1: 232 DO I=1 To ICNT; 233 D0 KS1 TO RUB; 23“ I? AYAIL(I)=CODE(K) THE! GO TO PND_KEY; 23S END; 236 PND_KEY: SDIP?(I)=LOAD(K): 237 END; PL/I OPTIBIZING COHPILBR SCHED: PROC REOBDBR; STHT /ttttttttttttttttt¥tttttttittttttttttt/ /"*“ SORTING T88 AVAIL ARRAY ‘**‘*/ /tt.ttttttttttttt#tttttttttttttttttttt/ 238 DO I=1 To ICNT-1: 239 DO-J=I+1 TO ICNT: 2&0 IP SDIPP(I) > SDIPF(J) THEN GO To SORTA; 2&1 I? SDIPP(I) a SDIPP(J) THEN DO; 2&2 SIZE1=0: 2&3 SIZBZ=O: 2&& DO K81 TO HUN; 2&5 I? AVAIL(I)=CODB(K) TEEN GO To 51; 2&6 END; 2&7 31: IP SIZB(K)='L' THEN SIZB1=1: 2&8 DO K31 TO RUN: 2&9 I? AVAIL(J)=CODE(K) TEEN GO TO 52: 250 END: 251 32: I? SIZEtK)='L' THEN SIZEZ=1: 252 I? 51282 <8 51281 THEN GO TO SORTA; 2S3 END; 25& ITEHP=AVAIL(I): 255 ITENPZ=SDIPP(I): 256 AYAIL(I)=AVAIL(J); 257 SDIPP(I)=SDIPP(J): 258 AVAIL(J)=ITBHP; 259 SDI!!(J)=ITBHP2: 260 SORTA: END; 261 END; PL/I OPTIHIZING COHPILBR SCHED: PROC RBORDER; STHT /¢t:t:¢ttt:¢ttt¢t:t¢ttttttttittttttc¢tttttttttttt.tt/ /*‘*** SORT THE CHANGE STRUCTURE 8! POSITION *****/ /ct:ct¢tttttttt:tttttatttttt:ttttttttttttttctttt¢ttt/ 262 DO I=1 TO ICOUNT-1; 263 D0 J=I+1 To ICOUNT; 26& I? ABS(POS(I)-CPOS) <= ABS(POS(J)-CPOS) THEN GO to soars: 265 ITENP=3D0(I); 266 ITENP1=SUB(I); 267 ITENPZ=POS(I): 268 IDD(I)=ADD(J); 269 SUB(I)=SUB(J): 270 POS(I)=POS(J): 271 ADD(J)=ITENP: 272 SUB(J)=ITENP1; 273 POS(J)=ITEHPZ; 27H SORTB: END; 275 END; PL/I OPTIHIZING COIPILBR SCHED: PROC BBORDER; STET /$t##ttitOtttttfittittt#*ttittttttt....tttttt/ /*‘**‘ FINAL HOLD SEQUENCING STATEG! *8888/ /tttt¢tt¢:tt¢totttcttttt¢ttttttttttttttctttt/ 276 EINAL_SCHBD: DO I=1 TO ICNT; 277 D0 J=1 TO ICOUNT; 278 I? ADD(J)~8' ' THEN 60 TO uonnrcu1; 279 asrzs=o; 280 usrze=o: /“‘ STRAIGHT SUBSTITUTIO! 0? AVAILABLE HOLDS 1”W/ 281 I? POS(J+1)«=POS(J)01 5 POS(J+2)~=POS(J)+2 THEN DO: 282 I? J > 1 8 POS(J-1)=POS(J)-1 THEN GO TO CHANGB_80LD; 283 I? J > 2 5 POS(J-2)8POS(J)-2 THEN GO TO CHANGE_NOLD: 28& A1=LiDIPP(POS(J)-2)oLiDIPP(POS(J)-1); 285 A2=LEDIPP(POS(J)+2)+LNDIPP(POS(J)+1): 286 A3=LNDI!P(POS(J)-1)OLEDIP?(POS(J)¢1); 287 ITBNP2=NAX(AI,A2,13); 288 NEED(J)8LHD-ITEBP2; 289 DO K:-1 TO 1 BY 2: 290 DO H81 T0 NON; 291 I? CLINB(POS(J)*N)= CODB(H) THEN GO TO R3; 292 END; 293 R3: I? SIZE(a)='L' THEN aSIZE=1: 29& I! TAPB(N)8'!' THEN NSIZE=1; 295 END: 296 D0 K81 TO ICNT: 297 IF surrr(x) > NEED(J) 782: so TO as; 298 D0 ans-1 T0 1 B! 2; 299 I? CLINB(POS(J)+UH)='AN' 8 AVAILIK)='HN' THEN GO TO R5: 300 It CLINE(POS(J)§NH)='NN' 6 AVAIL(K)='AN' THEN so to as; 301 END: 302 D0 H81 T0 N03; 303 I? AVAIL(K)8 CODE(H) THEN GO TO R&; 30& END: 305 R&: I! SIZE(8)8'L' 8 8512881 THEN GO TO RS: 306 IF TAPE(N)8'!' 5 NSIZE=1 THEN GO TO 35; 307 LNDIPP(POS(J))=LOAD(H); 308 ADD(J)8AVAIL(K); 309 DO L=K TO ICNT°1 HHILZ(ICNT>1); 310 AVAIL(L)=AVAIL(L+1); PL/I OPTIHIZING COHPILBR SCHED: PROC REORDEB; STNT 311 SDI!!(L)=SDIPP(L+1); 312 END: 313 ICNT=ICNT-1: 31& GO TO FINAL_SCHED; 315 RS: END: 316 END; /“‘ SUBSTITUTION HHERB HAN! HOLDS ARE CHANGING 8"] 317 ELSE DO: 318 CHANGE_HOLD: A1=Lwnxrr(POS(J)-2)1LIDIPP(205(J)-1)1 319 I! J > 2 5 ADD(J-2)=' 1 5 PoS(J-2)=905(J)-2 THE! A1=LNDIPP(POS(J)-1); 320 I? J > 1 5 ADD(J-1)8' 1 5 POS(J-1)=POS(J)-1 THEN L1=LNDIPP(POS(J)-2); 321 I? J > 2 5 ADD(J-1)=' 1 5 ADD(J-2)8' 1 5 POS(J-1)=POS(J)-1 5 POS(J-2)=POS(J)-2 THEN 31:0; 322 32=LID122(905(J1+2)+LBDIP!(PoS(J)+1); 323 I? ADD(J+2)8' 1 5 POS(J92)8POS(J)+2 THEN 128L9DIPP(POS(J)+1): 32a 1! ADD(J+1)8' 1 5 905(J+11=903(J)o1 THEN 128LNDIPP(POS(J)+2); 325 I! ADD(J+1)=1 1 5 ADD(J+2)=1 1 5 POS(JO1)=POS(J)+1 5 DOS(J+2)=POS(J)+2 THEN 32:0; 326 A3=LNDIPP(POS(J)-1)1L8DIPP(POS(J)01): 327 I? J > 1 5 ADD(J-1)=' 1 5 905(J-1)=POS(J)-1 THEN AB=LHDIPF(POS(J)01): 328 I? ADD(J+1)x1 1 5 POS(J+1)=POS(J)+1 THEN A38LUDIPP(POS(J)-1); 329 I? J > 1 5 ADD(J-1)=' 1 5 POS(J-1)=POS(J)-1 5 ADD(J+1)=' 1 5 p05(J+1)=pOS(J)+1 THEN 33:0; 330 ITENP2=HAX(A1,A2,A3); 331 NEED(J)8LBD~ITEHP2: 332 I? SDIPP(I) > NEED(J) THEN GO TO NONATCH1; 333 no nus-1 To 1 a! 2: 33a I? CLINE(POS(J)+SH)8'AN' 5 AVAIL(I)='NN' THEN 50 TO NOHATCH1; 335 I? CLIn3(poS(J)+uu)a1ua1 5 AVAIL(I)='AN' THEN GO TO NOHATCH1; 336 sun; A 337 DO xs-1 To 1 a! 2; 338 I? CLINE(POS(J}+K)=CLINE(POS(J+K)) 5 ADD(J+K)=1 1 THEN so To 3110; 339 no 5:1 TO sun; 3uo I? CLINE(POS(J)+K)= cooz(n) THEN GO TO R11; PL/I OPTIHIZING COHPILER SCHED: PROC REORDER; STNT 3&1 END: 3&2 811: IE SIZE(H)='L' THEN NSIZE=1: 3&3 I! TAPE(N)='Y' THEN NSIZE=1: 3&& R110: END: 3&5 DO E=1 TO NOE: 3&6 I? AVAIL(I)8 CODE(E) THE! GO TO R12: 3&7 END: 3&8 R12: I? SIZE(H)='L' 5 HSIZE81 THEN GO TO NOHATCH1: 3&9 I? TAPE(H)8'Y' 5 NSIZE=1 THEN GO TO NONATCH1: 350 LNDIPY(POS(J))8LOAD(N): 351 ADD(J)8AVAIL(I): 352 00 L=I TO ICNT-1 INILE(ICNT>1): 353 AVAIL(L)8AVAIL(L+1): 35& SDIEE(L)=SDIFP(L+1): 355 END: 356 ICNT=ICNT-1: 357 GO TO FINAL_SCHED: 358 END: 359 NOHATCH1: END: 360 NEIT_SCNED1: END: 361 PUT PAGE EDIT(' & ICNT= ',ICNT,' AVAIL SDIPP') (A,P(3),A): 362 DO I=1 TO ICNT: 363 PUT SKIP EDIT(AVAIL(I).SDIEP(I)) (X(S),A.X(3),P(3)): 36& END: 365 PUT SKIP(2) EDIT('& POS ADD SUB NEED') (I(2),A): 366 D0 I81 TO ICOUNT: 367 PUT SKIP EDIT(POS(I).ADD(I),SUB(I),NEED(I)) (X(5).P(3)p1(5) ,L.X(5) ,A,X(5) 0P(3)) 3 368 END: 369 I? (LHD<=29 5 ICNT<=5) I (LND<=30 8 ICNT<=&) l ICNT<=3 THEN DO; 370 D0 I=1 TO ICNT: 371 00 J=1 TO ICOUNT: 372 I? ADD(J)~=' ' THEN GO TO NX_LOOK: 373 IP LHD < 3& 8 LiD+SDIPP(I)-NEED(J) )-3& THEN GO TO BEGIN_PGN: 37& ADD(J)=AVAIL(I); 375 GO TO NX_CNT; 376 NX_LOOK: END: PL/I OPTIBIZING COHPILER SCHBD: PROC REORDER; STNT 377 N!-CNT: END: 378 ICNT=O: 379 END: PL/I OPTIHIZING COHPILBR SCEED: PROC REOHDEB; STE? FOOOO.ttfit$$$$t.“t‘..‘**¥*‘t.t*t*$.*.*‘/ /“*‘* CHECK EOE PROBLEM SOLUTION .“‘*/ /“‘** THEN UPDATE HOLD POSITIONS ““*/ /#$¥.‘¥¥tt¥‘$‘$.‘¥¥#¥¥*.'"t“***..‘ttttfi/ 380 I? LSU=O THEN DO; 381 LSE=1; 382 PUT PAGE; 383 END: 38“ I? ICU? > O 5 LED < 33 TEEN DO: 385 PUT SKIP(2) EDIT(' THE SCHEDULING PROBLEH CANNOT BE SOLVED ', 'UITH AN AVERAGE HIRE LOAD DIEPICULTY OP ',LUD) (A,A,P(3)): 335 LUD‘LWDO1: 387 PUT SKIP EDIT" LHD IS NOW BEING SET TO ',LWD) (A,F(3)); 388 GO TO BEGIN-PGH; 389 END; 390 D0 I=1 TO ICOUHT; 391 CLINE(POS(I))=ADD(I); 392 END: 393 PUT SKIP(2) EDIT(' THE SCHEDULING 8 SEQUENCING ALGORITHM UAS ', 'SOLVED WITH AN AVERAGE HIRE LOAD DIEPICULTY OE ',LWD) (lvlor(3))3 39“ L9D=27; PL/I OPTIHIZING COHPILER SCHED: PROC RBORDER; STHT [8888*fittttttttttttttttttttttttttttttttttttttttttttt/ /**"‘ SORT THE CHANGE STRUCTURE BY POSITION **8**/ /t¢ttttt$tttl888888888888888888888881888888888888888/ 395 DO I=1 T0 ICODNT-1: 396 00 J=IT1 TO ICOUNT: 397 IF POS(I) <8 POS(J) THEN GO TO SORTC: 398 ITENP=ADD(I): 399 ITEEP1=SUB(I): &00 ITEHP2=POS(I): &01 ITEHP3=NEED(I); &02 ADD(I)=ADD(J): &03 SUB(I)=SUB(J): &0& POS(I)=POS(J): &05 NEED(I)=NEED(J): &06 ADD(J)=ITEHP: &07 SUB(J)=ITEEP1: &08 POS(J)8ITENP2: &09 NEED(J)=ITEHP3: &10 SORTC: END: &11 END: u12 FINISH: END SCHED: PL/I OPTIHIZING COHPILBR LINEUP: PROC REORDER; STHT 97 98 99 100 101 102 103 10& 105 106 107 108 109 110 112 113 11& 115 116 117 118 fitt‘ttfitfittttfifittfitttfi.0Otttfittfittttt.Otttit.tttttlttttttltittttttfitf /'8* PRINT THE TOTAL NUHBEB O? HOLDS ON LINE 8 HOLDS AVAILABLE "t/ /ttt88.8888tttttttttttttt$88!8.088808888888fitttttttttttttttttttittttt/ PUT SKIP EDIT('TOTAL NUHEEE OP HOLDS') (X(5).A): IP ISIE > O 5 ICOUNT > 0 THEN PUT EDIT('HOLD','ADD',‘EEHOVE') (C01- (35) v3v21x110) v“): I? LIUH=O THEN PUT EDIT('TAPE AFTER POST CURE - 33') (COL(90),A); I? LNUH *8 0 THEN PUT EDIT('PROBLEH AEEAS') (COL(93),A): PUT SKIP EDIT('ON LINE') (X(11),A); I? ISIH > O 5 ICOUNT ) 0 THE. PUT EDIT('POSITION'.'HOLD','HOLD') (COL(3u),A,X(8),A.X(10),A); IE LNUH‘O THEN PUT EDIT('PLATEORH WORK ' 53') (COL(94),A); I? LNUH *3 0 THEN PUT EDIT('POSITION','TOTAL WIRE DIEEICULTY') (COL(8“).A,X(S),A); NEXT: DO 131 TO DUE: I? I>LNUH THEN GO TO NEXT1; PUT SKIP EDIT(CODE(I),EQ,HTOT(I),LPOS‘I).LDIPE(I)) (x(11)¢A(2).A'P(3)pX(67),E‘u)'X(13),P(“)): I? ICOUNT )3 I THEN PUT SKIP(0) EDIT(POS(I),ADD(I),SUB(I)) (COL(37),P(3),X(11) 0312) 0111210812), 3 GO TO LIST; - NEXT1: PUT SKIP EDIT(CODE(I),EQ,NTOT(I)) (1(111o112)olo?(3)): I? ICOUNT >2 I THEN PUT 5519(0) EDIT(POS(I),ADD(I),SUB(I)) (CM-(37) .P(3).X(11) .H2) .1112) .512) ): LIST: END: 00 I=NUNO1 TO ICOUNT IHILE(ISIN >0): I? ICOUNT < N35 THEN GO TO FINISH: PUT EDIT(POS(I),ADD(I),SUB(I)) E ((301437) oF(3).X (11) .112) :X (12) 'l (2)); ND: FINISH: ISIH=ISIH*1; END LINEUP;