An L-Shaped Method Computer Code for Multi-Stage Stochastic Linear Programs John R. Birge Department of Industrial & Operations Engineering The University of Michigan Ann Arbor, MI 48109 Technical Report 84-19

An L-Shaped Method Computer Code for Multi-Stage Stochastic Linear Programs John R. Birge Department of Industrial and Operations Engineering The University of Michigan Ann Arbor, MI 48109 USA Abstract A computer code implementing the L-shaped method of Van Slyke and Wets is described. The method is generalized to apply to problems with up to three periods and up to three hundred seventy-five different future scenarios. The main subroutines are described and an example of input and output formats is given.

1 Introduction The L-shaped method for two-stage stochastic linear programs was given by Van Slyke and Wets [1969]. It is an outer linearization procedure that approximates the convex objective term in the stochastic program by successively appending supporting hyperplanes. This paper describes a multi-stage implementation of this algorithm in which the supports are found by optimizing a nested sequence of problems. The mechanics of this algorithm and its convergence properties are described in Birge [1982]. The method is a type of nested decomposition procedure that can be compared with inner linearization procedures such as those of Glassey [1971, 1973] and Ho and Manne [1974]. It is also related to basis factorization approaches (Kall [1979], Strazicky [1980], Birge [1984]) and inner linearization of the dual (Dantzig and Madansky [1961]). The basic steps of the algorithm are described in Section 2. The main subroutines of the computer code are then given in Section 3. Significant variables and data structures are also described. Input and output formats are detailed in Section 4 along with examples of their form. Section 5 presents some observations and potential extensions. 2. Algorithm Description The multi-stage stochastic linear program considered by the algorithm is 2

min z = X1 + E2 [min c2x2 + * *+ E t[mi CTxT]O ] (1) 2 Et s.t. Alxl = bl, Blx1 + A2x2 = * 9 BT-1 XT-1 + ATXT = T Xt > 0, t=l,...,T, t t t=2,..,T, nt where ct is a known vector in Rt for t=l,...,T, bl is a known m vector in R 1, t is a random m2 - vector defined on the probability space ( t', Ft, Ft) for t=2,...,T, and At and Bt are correspondingly dimensioned dimensioned known real-valued matrices. "E " denotes mathematical expectation with respect to 6t it* The L-shaped method of Van Slyke and Wets [1969] applies to (1) when T=2. Methods for the multi-stage problem have generally assumed a specific structure for the problem. Beale, et al. [1980] and Ashford [1982] for example, consider a multi-stage production problem and implement an appropriate approximation. The generalization of the L-shaped method implemented in the computer code described here and introduced in Birge [1980, 1982] does not, however, require any special structure except that the random variables t are finitely distributed. The algorithm is called the Nested Decomposition for Stochastic Programming Algorithm (NDSPA). It is based on the observation that given a realization;tJ of the random vector in period t and given a solution xt_ ) from period t-1, the decision problem at period t can be written (see Wets [1966]) 3

min ct xJ t + Q t+ 1 ( Xt j ) (2.0) s. t. At x t 1 r -1. n a ) f ^ where Qt+l(xt) is ri < mt+l. Program (2) c problem: min Ct t = + bt-1 Xt 1J' (2. > dt'iJ, =,...,r, (2. xt > 0, xt L o, n a convex function, Dtle'R t for all, and an then be solved using a relaxed master xd + (3. + Bt-l t-() si........> dt'i,...,rd (3. t z t: + Gi > ez, L=,.., sI (3. xJ > 0. (3. t 1) 2) s. t. At D e i j t E t, J t 0) 1) 2) 3) 4) Program (3) is solved to obtain (xi, OJ). If j < Qt+l (xj) then another optimality cut (3.3) is added to (3) and (3) is resolved. If x forces infeasibility in any future period then a feasibility cut (3.2) is added to (3). This process is repeated until e > Qt+l (x). For implementation in multi-stage problems, it is assumed that there are a finite number Kt of scenarios in each period t. The scenarios consist of all possible realizations of the random vectors from periods 2 through t. For every period t scenario j, there corresponds a unique ancestor scenario a(j) in period t-l and, perhaps, several descendant scenarios d(j) in period t+l. NDSPA solves (1) by first obtaining a feasible solution to (3) for all t and j and by then sequentially solving (2) using the 4

relaxation in (3) from periods T to one. NDSPA Step 0. Solve (3) for t=l (dropping the scenario index j) where 61 = 0, r1 = sl = 0 and (3.1) is replaced by Al x1 = b1. Set 8J = 0 and r = so = 0 in (3) for all t and scenarios j at t. (The indices rj and sJ are updated whenever a constraint (3.2) or (3.3) is added to (3)). Step 1. If (3) is infeasible for t=l, STOP. The problem (1) is infeasible. Otherwise, let xl be the current optimal solution of (3) for t=l. Use xl as in input in (3.1) for t=2. Solve (3) for t=2 and all, j=1,...,K2. If any period two problem (3) is infeasible, then add a feasibility cut (3.2) to (3) for t=l, resolve (3) for t=l, and return to 1. Otherwise let t=2 and go to 2. Step 2. a). Let the current period t optimal solutions be x], j=1,...,Kt. Solve (3) for t+l and all j=1,...,Kt+1 using the appropriate ancestor solution xJ in (3.1). b). If any period t+l problem is infeasible, add a feasibility cut (3.2) to the corresponding ancestor period t problem and resolve that problem. If the period t problem is infeasible, let t = t-1. If t=l, go to 1. Otherwise, return to 2.a. Otherwise, return to 2.a. Otherwise, all period t+l problems (3) are feasible. 5

If t < T-2, let t = t+l and return to 2.a. Otherwise (t=T-l), remove the e = 0 T restriction for all periods T and scenarios j at T. Let the current value of each ej T be J = - Q if no constraints (3.3) are T present. Go to 3. Step 3. a). Find E-'j and eZsi for a new constraint (3.3) at each scenario t problem (3) using the current period t+l solutions. b). If there exists j such that J < ete - E L x, (4) then add the new constraint (3.3) to each period t problem (3) for which (4) holds. Solve each period t problem (3). Use the resulting solutions (xJ, ei) to form (3.1) for the corresponding descendant period t+l problems (3) and resolve each period t+l problem (3). If t < T-l, let t = t+l and go to 2.a. Otherwise, return to 3.a. Otherwise, 9 = et'J - Et'i xJ for all scenarios j at t. If t > 1, let t = t-l and return to 3.a. Otherwise, STOP. The current solutions xJ T = 1,...,T form an optimal solution of (1). Steps 1 and 2 of NDSPA represent a forward pass to obtain feasibility in each scenario subproblems. Step (3) is a backward pass that solves (2) beginning with period T and passing backward to period 1. Unboundedness may be handled explicitly in the 6

program following the procedure in Van Slyke and Wets [1969] but in the computer code of NDSPA all variables are upper bounded and hence unboundedness is avoided. For period T, the computer code also has a special procedure for solving (3). It uses the bunching (see Wets [1983]) method to look through all realizations of 5T and find those for which a given basis is optimal. This procedure is described in the next section and represents an alternative to the sifting procedure of Garstka and Rutenberg [1973]. Experimental results using NDSPA have been encouraging. In Birge [1980, 1982], NDSPA is compared with a piecewise linear partitioning algorithm, a basis factorization procedure and the code MINOS (Murtagh and Saunders [1978]) on a set of staircase test problems from Ho and Loute [1981]. NDSPA consistently outperformed the other methods except on one problem in which its storage limitations were exceeded. In general, the results compared favorably with those of Kallberg and Kusy [1976] and Kallberg, White, and Ziemba [1982] for simple recourse problems. Each stochastic problem was solved in less than twice the time required to solve the deterministic problem with expectations substituted for the random variables. 3. The NDST3 Computer Code-Primary Subroutines NDSPA has been coded in FORTRAN in a current version called NDST3 (see Appendix). This code allows for three periods including three second period scenarios and one hundred twentyfive third period scenarios. Each scenario problem (3) is 7

limited to three hundred fifty rows and six hundred columns. Within any scenario problem (3), there can be at most three thousand nonzero elements. Tolerances can be set in the BLOCK DATA section and in the example are set at 107 for zero tolerance, 10-5 for pivot tolerance, 10-4 for reduced cost tolerance and 10 10 for small tolerance. The linear programming sections of the code are from L PM-1 written by J.A. Tomlin (Pfefferkorn and Tomlin [1976]). Many variables in NDST3 have multiple subscripts. This questionable programming technique is used to make the scenario obvious. For example, XLB(2, 3, 2, 1) is the lower bound on the second variable in scenario 1 in period 3 with ancestor scenario 2 in period 2. In general, the last three subscripts of al variables with more than two subscripts are (JCUR, JPER(2), JPER(3)) where JCUR indicates the period of the scenario, JPER(2) indicates the period 2 ancestor scenario and JPER(3) denotes the period 3 scenario. This last period scenario is not used in the current version version of NDST3 but has been used for a four period implementation. The current version is limited to three periods to avoid excessive storage requirements. The code can process four period problems if the period 3 index is incremented in all array definitions and sufficient memory is available. The subroutine SHIFTR, which manipulates data storage, must also be updated if the dimensions are changed. The main variables in the code are stored in the blank common block. These variables and their descriptions follow 8

Variable B(i,j,k, 1) X(i,j,k, 1) XLB(i,j,k, 1) and XUB(i,j,k,l) XKSI(i,j,k, 1) YPI(i,j,k, 1) NROW(j,k,1) NCOL(j,k, 1) NELM(j,k, 1) JH(i,j,k, 1) KINBAS(i,j,k, 1) LA, IA,A LE,IE,E LBN,IBN,ABN PROB(j,k, 1) The important variables in BLOCK 3 are NND(i) NPASS Definition Current right-hand side element i in period j and scenario k,l Current value of variable basic in row i at period j and scenario k,l Lower and upper bounds of variable i at j,k,l Current realization of random vector in row i at j,k,l Current dual variable value for row i at j,k,l Current number of rows at j,k,l Current number of columns at j,k,l Current number of nonzero elements at j,k,l Variable basic in row i at j,k, 1 Status (basic, nonbasic) of variable i at j,k,l Linked lists of At matrix elements Linked lists of elements in eta vector form of basis inverse Linked lists of elements in Bt matrices Probability of scenario j,k,l Number of scenarios in peiod i Number of passes from period t to t-l or t+l 9

JPER(i) JCUR JPASS Current scenario realization in period i Current period Indicator of forward or backward pass; JPASS=1 for forward, JPASS=2 for backward Number of periods T NPER In BLOCK 4, the significant variables a XTOPT PRBY(i,j) PRST(i,j,k) CBST(i,j) NCUR(i) IBST(i) NST Value of - eTJ + ETeJ xi for checking for optimality Probability of jth realization of ith random element in stochastic vector in period T Joint probability of ith realization of first random element element, jth realization of second, and kth realization of third for stochastic vector at T Value of jth realization of ith random element in stochastic vector at T Current realization of ith random element at T Row of ith random element at T Number of random elements at T The code NDST3 assumes that specific random vectors (with specific probabilities) are assigned for periods 2 through T-1 and that at period T the random vector includes NST independent random elements. The bunching approach can then be easily applied to these possibilities. The main program in NDST3 organizes the algorithm and calls subroutines to implement the steps of NDSPA. The main routines 10

called in this segment are: INPUT accepts all data input; INCHK echoes input; NORMAL solves the linear program in (3); STRPRT reports on current solution; NDCOM directs the algorithm for t<T; PARSFT controls the algorithm for t=T; WRAPUP writes output. The main routine calls NORMAL to solve (3) if t<T and then calls NDCOM to determine which problem to solve next. If t=T, PARSFT is called to solve (3) for period T and determine the next step of the algorithm. JCUR(t) is set equal to NPER+l(T+l) whenever a terminating condition (infeasible or optimal) is met. The following routines are all used by NORMAL in solving the linear program (3): RHCHCK checks now residicals; BTRAN performs backward FORMC PRICE CHUZR WRETA SHIFTR INVERT UNPACK(i) BUNPCK(i) SHFTE transformation; forms objective function vector and checks feasibility; computes reduced costs and picks entering column; performs minimum ratio test and determines leaving variable; forms new eta-vectors for product form of inverse; rearranges data storage; computes basis inverse using LU decomposition; expands ith column in A; expands ith column in B; shifts eta vectors around; 11

UPBETA updates right-hand side and basis indicators. NORMAL reinverts the basis every INVFRQ iterations or if the maximum row residual is greater than 10 times ZTOLZE. A maximum of ITRFRQ iterations is allowed. The subroutine NDCOM handles all steps for NDSPA for t<T. The forward pass is performed in the statements above statement number 70. The variable MSTAT is used to indicate infeasibility (QN) or feasibility (QF). If an infeasibility is found, then a feasibility cut is added in the subroutine FEASCT (below statement number 201) and t is set to t-l. If the current problem is feasible, then NDCOM determines the next subproblem to solve. If every scenario at period t has been solved, then NDCOM sets up problem (3) for period t+l between statements 28 and 30. The subroutine BPRODX is called here to compute Bt xj and FRMRHS is called to find t+(j) + Bt x If the algorithm has proceeded to the backward pass, the control shifts to the statements following statement 70. Again, if an infeasibility is found, then a feasibility cut is added to the corresponding ancestor scenario problem. The procedures for checking optimality follow statement 80. First, any cuts (3.2) or (3.3) that are slack (satisfied as strict inequalities) are deleted in the subroutine DLETCT. This option saves on storage and does not affect convergence. NFLG = 1 signifies that the current problem (3) solution is optimal. For t < T-l, the code follows Step 2 of NDSPA and continues to t+l. If t = T-1 and condition (4) is not met, then NDCOM follows the iterations in Step 3 of NDSPA in the statements following statement 85. If 12

condition (4) is met in following this backwards iteration then an optimality cut (3.3) is placed on the corresponding ancestor scenario using the subroutine LKHDCT(K) where k is the preceding period. Optimality at period k is checked in the subroutine OPTCHK(K) which sets NFLG =1 if (4) is not met. Subroutine PARSFT performs Step 3 of NDSPA for t = T. It includes the variable JSTCH(i,j,k) that indicates the number of the basis found optimal for the alternative with realizations i,j,k for random elements 1, 2, and 3 respectively, in the last period. NCUR(i) is the current realization of the ith random element and NXNF(i) is the realization of the ith random element in the first infeasible basis found by the bunching procedure. NETND(i) keeps the number of eta vectors in the ith basis and INFLG = 0 for no infeasibilities and 1 for an infeasibility found in passing through all alternative random vectors at T. YBX is a vector keeping BT X (jT- ) The bunching procedure begins with statement 20. For the first time through the loop, NORMAL is called to obtain an optimal solution. On subsequent iterations, the procedure begins with the previous basis which is dual feasible and calls the subroutine DNORML which implements the dual simplex method. In either case, if an infeasibility is caught then a feasibility cut is made and control returns to the main program. After having found a new optimal basis, the algorithm updates ET-_ and eTltj and then loops through all right-hand side alternatives for which no feasible basis has yet been found. This begins with statement 29 and continues to statement 30 if 13

all scenarios have not been checked. Since every scenario corresponds to the same objective function, an optimal basis for any scenario is dual feasible for all other scenarios. The appropriate right-hand side is set up between statements 50 and 53 and FTRAN is called to, find the values of the basic variables. The subroutine DCHUZR is then called to determine a leaving (infeasible) variable. It returns IROWP = 0 for a feasible basis which is then optimal. If a leaving variable is found then DCHUZC is called to find an entering variable. If no entering variable is found then the current scenario is infeasible and control is returned to the main program. If an entering variable is found, then the current scenario is marked as the first scenario to check in the next bunching loop (if no scenario has been found infeasible for the current basis) and the next scenario is tested. Whenever a scenario is found to be feasible for the current right-hand side then the values of ETj and eT_'j are updated after statement 60, and the next scenario is chosen. When an optimal basis has been found for all period T scenarios then optimality is checked after statement 29 using the subroutine XOPTCK. NFLG = 1 is returned if (4) is not met and the algorithm proceeds back to period T-l. If (4) is met then a new optimality cut is added to the ancestor period T-l problem. The algorithm proceeds through these subroutines until optimality is found in NDCOM (for T > 2) or PARSFT(T = 2) or until infeasibility is found in NDCOM. When one of these terminal conditions is reached, WRAPUP is called and the output described in the next section is produced. 14

4. Input and Output Formats The input format for NDST3 basically follows the MPS standard for mathematical programs except in its splitting the data into periods. The example in the appendix is a test problem SCAGR7.S2 which was adapted from the staircase test problems of Ho and Loute [1981]. It contains two periods for the stochastic program, and, in the second period, there are three independent random variables with two values each. This leads to eight total scenarios. The first row of the input contains five values used in program. Each is entered in 14 format, they are in order: IFPROB number of problem; IOBJ row of objective function (usually "1"); INVFRQ iterations between matrix inversions; ITRFRQ total number of iterations allowed; NPER number of periods. The next NPER rows contain the number of different right-hand side values (14 format) for each period. The first and last periods have 1's because the first period is deterministic and the last period right-hand sides are input separately at the end of the program. The fourth row contains the probability of the first right-hand side value in F5.3 format. The next sections are ROWS, COLUMNS, and RHS sections for MPS format for all values in the first period set of constraints, A1 x1 = b1. Following an ENDATA, lower bounds on all variables (excluding slacks) in 15

9F8.0 format and upper bounds in the same format are input. If an initial basis were entered then a section headed by BASIS and including columns and the corresponding row in the basis could be entered after the COLUMNS section. This format is discussed below as part of the output. The next sections of the code include ROWS and COLUMNS sections to describe the matrix B1 in (1). This is followed by an ENDATA and the probability of the next period's first righthand side vector. The data for A2 x2 = i would then be entered for each possible i and, if more periods were present, this would be followed in each case by the data for B2 (possibly depending on j). This process of repeating the probability of i, giving the data for At xt = gJ and of then giving Bt repeats until all scenarios indicated in the command lines of the code have been input. The last period scenario input is followed by a section marker STOCH which prompts the program to read in separate values and probabilities for random elements in the last period. For each random element, the row name is given is columns 5-12, the value of the element is given in F12.4 format in columns 25-36 and the probability of that value is given in F 12.4 f ormat in columns 50-61. Each independent element is input with at most five values total. Another version of NDST3, called NDST3.A, has also been developed at IIASA, Laxenburg, Austria. In this code, input follows the standard format set at IIASA except for the first line of input which contains the control parameters. 16

NDST3 writes two output files on devices 6 and 7. The first listed in the Appendix is for device 6 and contains most of the iteration and result information. The second contains the variables that were basic in the optimal solution found by the program. That output may be inserted into an input file to provide the program with a starting basis. The first part of the output contains the problem, the densities of At matrices for t = 1 and 2 and the stochastic elements in the last period including their values and probabilities. The next section of the code prints out the matrices as they are stored in the code and other information for checking input data. The iteration log begins on line 178. PRES is the row residual, PIV is the pivot element size, IN is the incoming variable, OUT is the basis position of the outgoing variable, OBJ is the negative of the objective value, CMIN is the minimum reduced cost for variables at lower bound, CMAX is the maximum reduced cost for variables at upper bound, NINF is the number of infeasible variables in the basis, and NOPT is the number of nonoptimal variables. The first pass at the period 1 problem stops with the first feasible solution found and the vector of basic variable values is printed along with JH, KINBAS, the right-hand side, B, the current value of Y (a vector used in several operations), and the current price vector. Iterations begin on the second period problem after control has passed through NDCOM and an infeasibility condition is met, forcing a feasibility cut. Now, the period 1 problem is solved 17

to optimality and the period 1 solution information on this third pass is output. Again, the period 2 problem is infeasible and another feasibility cut is applied to the period 1 problem. This time, on line 346, the program states the previous cut is slack and that it is deleting row 17 with a slack value of 1500. This process repeats until line 440 when a feasible solution is found for the second period problem. Here, each scenario is checked and the first optimal basis is feasible for all scenarios. OBJ is the negative objective value in each case, KSIPI is used to calculate eT_j and OBJTOT is the sum of all previous objectives times their probabilities. CURR BAS indicates which basis is optimal for each scenario. After going through the scenarios, Q(x) = -E tJ x (j) + eT_ Z and T-li) are output and an optimality or "look-ahead" cut is made on the first period. The first period problem is reso lved and beginning with line 512, the second period scenarios are again checked. This time four scenarios are not feasible with the first optimal basis and DNORML is used to find another optimal basis. The iteration log in DNORML is similar to that in NORMAL except that MXINF is also output as the maximum infeasibility found. Condition (4) is again checked and lower and upper bounds on the optimal value of (1) are given. The process repeats until on lines 735 - 739, optimality is checked, and it is found that the lower and upper bounds are within one percent of each other, indicating optimality and ending the algorithm. 18

Solution times follow the discovery of optimality and the basic variable values for each scenario in the last period are output by the rows in which they are optimal. The solution for the first period problem is output beginning on line 1097 and the optimal dual values follow. The solution of the last problem solved in the last period is then given, ending the solution output. The next listing in the Appendix is of the output file for the basis. This includes all variables that were basic in rows of the original problem. Variables that were basic in rows for feasibility and optimality cuts are not included. The column is listed in columns 5-12 and the row in which its basic is listed in columns 15-22. 5. Extensions and Observations As mentioned above, NDST3 can be easily expanded to handle larger problems and more scenarios. Some care, however, must be used in maintaining storage requirements within acceptable limits. Future versions of the code are planned to eliminate some redundancy and to enable more complex problems to be solved. Other planned options are to include the possibilities for some continuous distributions and to use approximating techniques from Birge and Wets [1983] in achieving convergence within a predetermined tolerance. This has been implemented for a single random variable in a new code NDST4 and further refinements are planned. 19

The code has performed very well in general and in most situations outperforms general purpose linear programming codes. The one problem in which it did not perform well, SCFXM.S2, required that a large number of feasibility cuts be added to the first period problem. These cuts were dense and, without deleting slack cuts, the problem required an excessive number of nonzero elements (i.e., more than three thousand). When slack cuts were deleted, the program obtained an unstable basis that caused it not to obtain a feasible first period solution. This may be a problem inherent in decompostion algorithms because of perhaps unavoidable numerical error present in generating cuts. Two truely identical cuts may be generated that differ only in their error coefficients. This is the cutting plane analogy of the slow convergence characteristics observed in Dantzig-Wolfe decomposition (Ho[1984]). It appears that stability problems are rare but if further testing results in more of these difficulties, some testing of the integrity of cuts may have to be added. 20

References Ashford, R.W. 1982. A Stochastic Programming Algorithm for Production Planning. Scicon report, Milton Keynes. Beale, E.M.L., J.J.H. Forrest, and C.J. Taylor. 1980. Multi-time Period Stochastic Programming. In Stochastic Programming, M.A.H. Dempster (ed.). Academic Press, New York. Birge, J.R. 1980. Solution Methods for Stochastic Dynamic Linear Programs. Technical Report SOL 80-29, Systems Optimization Laboratory, Stanford University. Birge, J.R. 1982. Decomposition and Partitioning Methods for MultiStage Stochastic Linear Programs. Technical Report 82-6, Department of Industrial and Operations Engineering, The University of Michigan. Birge, J.R. 1984. The Relationship Between the L-Shaped Method and Dual Basis Factorization for Stochastic Linear Programming. IIASA Volume. Birge, J.R. and R.J-B. Wets. 1983. Designing Approximation Schemes for Stochastic Optimization Problems. IIASA Report. Dantzig, G.B. and A. Madansky. 1961. On the Solution of Two-Stage Linear Programs Under Uncertainty. In Proceedings, 4th Berkeley Symposium on Math. Stat. and Prob. U.C. Press, Berkeley. Garstka, S. and R. Rutenberg. 1973. Computation in Discrete Stochastic Programming with Recourse. Operations Research 21, 112 -122. Glassey, C.R. 1971. Dynamic Linear Programs for Production Scheduling. Operations Research 19, 45-56. Glassey, C.R. 1973. Nested Decomposition and Multi-Stage Linear Programs. Management Science 20, 282-292. Ho, J.K. 1984. Convergence Behavior of Decomposition Algorithms for Linear Programs. Working Paper No. 179, College of Business Administration, The University of Tennessee. Ho, J.K. and E. Loute. 1981. A Set of Staircase Linear Programming Test Problems. Mathematical Programming 20, 245-250. Ho, J.K. and A.S. Manne. 1974. Nested Decomposition for Dynamic Models. Mathematical Programming 6, 121-140. Kall, P. 1979. Computational Methods for Solving Two-Stage Stochastic Linear Programming Problems. Journal of Appl. Math. and Physics 30, 261-271. 21

Kallberg, J.G. and M.I. Kusy. 1976. A Stochastic Linear Program with Simple Recourse. Faculty of Commerce, The University of British Columbia. Kallberg, J.G., R.W. White, and W.T. Ziemba. 1982. Short Term Financial Planning Under Uncertainty. Management Science 28, 670 -682. Murtagh, B.A. and M.A. Saunders. 1978. Large Scale Linearly Constrained Optimization. Mathematical Programming 14, 41-72. Pfefferkorn, C.E. and J.A. Tomlin. 1976. Design of a Linear Programming System for ILLIAC IV. Technical Report SOL 76-8, Systems Optimization Laboratory, Stanford University. Strazicky, B. 1980. Some Results Concerning an Algorithm for the Discrete Recourse Problem. In Stochastic Programming, M.A.H. Dempster (ed.). Academic Press, New York. Van Slyke, R. and R. Wets. 1969. L-Shaped Linear Programs with Applications to Optimal Control and Stochastic Linear Programs. SIAM Journal on Appl. Math. 17, 638-663. Wets, R. 1966. Programming Under Uncertainty: The Solution Set.SIAM Journal on Appl. Math. 14, 1143-1151. Wets, R. 1983. Stochastic Programming: Solution Techniques and Approximation Schemes. In Mathematical Programming: State of-theArt 1982, A. Bachem, M. Groetschel, B. Korte (eds.). Springer-Verlag, Berlin. 22

Appendix Al. Listing of the FORTRAN code NDST3 for the Nested Decomposition Stochastic Programming Algorithm 23

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=K86B Page 1 1 C ALGORITHM FOR STOCHASTIC PROGRAMS, WHERE 2 C THE RANDOM VARIABLES CAN BE IN EITHER THE CONSTRAINT 3 C MATRIX OR THE RIGHT HAND SIDE, AS LONG AS A DISCRETE 4 C DISTRIBUTION IS ASSUMED. THE L.P. SECTIONS OF 5 C THIS CODE ARE TAKEN FROM LPM-1 BY J. TOMLIN 6 C AND REVISED BY G. KOCHMAN. 7 C 8 IMPLICIT REAL*4 (A,C,E-H,O,P,R-W,Z), RFAL*8 (B,D,X,Y), 9 1 INTEGER*4 (I-N,Q) 10 COMMON/TIMERS/ ITOT 11 COMMON/BLOCK3/ NND(5),NPASS,JPER(5),JCUR,JPASS,NPER 12 C 13 C MAIN PROGRAM 14 C 15 C START TIMER 16 10 CALL TIME(O,O,ITOT) 17 CALL INIT 18 C INPUT PROBLEM DATA 19 CALL INPUT(IFPROB) 20 CALL INCHK 21 IF (IFPROB.EQ. O) GO TO 1000 22 CALL TIME(1,O,ITOT) 23 JTOT=ITOT 24 JCUR=1 25 DO 100 I=1,3 26 JPER(I)=1 27 100 CONTINUE 28 NODE=O 29 NPASS=O 30 JPASS=1 31 11 CONTINUE 32 ITSINV = 99999 33 NPASS=NPASS+1 34 IF(NPER.EQ.1) GO TO 200 35 IF(JCUR.EQ. NPER) GO TO 101 36 CALL NORMAL(ITSINV) 37 IF(JCUR.EQ.NPER+I) GO TO 201 38 C CHECK FOR CORRECT CUTS 39 CALL STRPRT 40 C CALL ACHECK 41 CALL NDCOM 42 GO TO 200 43 101 CONTINUE 44 CALL PARSFT 45 200 CONTINUE 46 IF(NPER.EQ.1) JCUR=2 47 IF(JCUR.LE. NPER) GO TO 11 48 201 CONTINUE 49 CALL TIME(1,0,ITOT) 50 WRITE (6,1) ITOT 51 1 FORMAT (/' TOTAL SOLUTION TIME =',I6,' MILLISECONDS') 52 KTOT=ITOT-JTOT 53 WRITE(6,2) KTOT 54 2 FORMAT(' SOLUTION TIME WITHOUT INPUT = ',I6,' MILLISECONDS') 55 C OUTPUT OPTIMAL SOLUTION 56 CALL WRAPUP 57 GO TO 10 58 1000 STOP

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=K86B Page 2 59 END 60 C --- —---------------------------------- ------------ 61 BLOCK DATA 62 C 63 C INITIALIZES GLOBAL PROGRAM CONSTANTS 64 C SUBROUTINE ADAPTED FROM LINEAR PROGRAMMING CODE LPM-1, WRITTEN 65 C BY J.A. TOMLIN (OPERATIONS RESEARCH, STANFORD UNIVFPSI'Y) 66 C 67 IMPLICIT REAL*4 (A,C,E-H,O,P,R-W,Z), REAL*8 (B,D,X,Y). 68 1 INTEGER*4 (I-N,Q) 69 COMMON/BLOCK/ ZTOLZE,ZTOLPV,ZTCOST,ZTOLSM,NEGINF,NEMAX.NRMAX, 70 1 NTMAX,QBL,QA,QI,QF,QN,QB,QC,QE,QH,QL,QO,QR,QM,QG,QS,()P 71 DATA ZTOLZE/1.E-7/,ZTOLPV/1.E-5/,ZTCOST/1.E-4/,ZTOLSM/1.E-10/ 72 DATA NRMAX/350/,NTMAX/1000/,NEMAX/3000/,NEGINF/-100000/ 73 DATA QBL/' '/,QA/'A '/,QT/'I '/,QF/'F '/,QN/' ' I/, 74 1 QB/'B '/,QC/'C '/,QE/'E '/,QH/'H '/, 75 2 QL/'L '/,QO/'O '/,QR/'R '/,QM/'M '/,QG/'G '/, 76 3 QS/'S '/,QP/'P '/ 77 END 78 C --- —---------------------------------- 79 SUBROUTINE RHCHCK 80 C 81 C THIS SUBROUTINE CHECKS THE ROW RESIDUALS 82 C 83 IMPLICIT REAL*4 (A,C,E-H,O,P,R-W,Z), REAL*8 (B,D,X,Y), 84 1 INTEGER*4 (I-N,Q) 85 INTEGER JH,KINBAS,LA,LE,IA,IE,NODE 86 INTEGER ICNAM(602,2,3,3,1),ICN(602,2),NAME(6) 87 DOUBLE PRECISION E(3000),ATEMP1,ATEMP2 88 REAL A(3000,3,3,1) 89 C 90 COMMON/BL5/DRES,ICNAM 91 COMMON/BLOCK/ ZTOLZE,ZTOLPV,ZTCOST,ZTOLSM,NEGINF,NEMAX,NRMAX, 92 1 NTMAX,QBL,QA,QI,QF,QN,QB,QC,QE,QH,QL,QO,QR,QM,QG,QS,QP 93 COMMON DE,DP,B(350,3,3,1),X(350,3,3,1),Y(350),YTEMP(602),YTEMP1(6 94 1 22),XLB(602,3,3,1),XUB(602,3,3,1),XKSI(350,3,3,1),Yrl(350,3,3,1) 95 1,A,E,MSTAT,IOBJ,IROWP,ITCNT, 96 2 INVFRQ,ITRFRQ,JCOLP,NROW(3,3,1),NCOL(3,3,1),NELEM,NELM(3,3,1 97 2 ),NETA, 98 3 NLELEM,NLETA,NUELEM,NUETA,JH(350,3,3,1),KINBAS(602,3,3,1),LA( 99 3 602,3,3,1), 100 4 LE(1002),IA(3000,3,3,1),IE(3000), 101 5 ATMP(3000),ABN(600,3,3,1),IBN(600,3,3,1),LBN(602,3,3, ), 102 103 6 PROB(3,3,1),NFLG,KBTMP(602),ITMP(3000),XUTMP(602),XL MP(602), 104 7 LTMP(602),NROWP(3,3,1),NCOLP(3,3,1),NTH(3,3,1),NR 105 COMMON/BLOCK3/ NND(5),NPASS,JPER(5),JCUR,JPASS,NPER 106 COMMON/BLOCK4/ BND(350),XTOPT,XRHO,YPIBAR(602),YBX(350),IBST(3), 107 1 PRBV(3,5),PRST(5,5,5),CBST(3,5),IBASE,JSTCH(5,5,5),NCUR(3), 108 2 NXNF(3),INFLG,NETND(10),INST(5),MXNST,NST 109 JC = JCUR 110 J2=JPER(2) 111 J3 = JPER(3) 112 KNR=NROW(JC,J2,J3) 113 KNC=NCOL(JC,J2,J3) 114 DO 90 I=1,KNR 115 YTEMP(I)=B(I,JC,J2,J3) 116 YTEMP1(I)=O.

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid-KSGB Page 3 117 90 CONTINUE 118 C WRITE(6,91) 119 C1 FORMAT(' CHECKING ROW RESIDUAL') 120 DMAX=O. 121 DO 200 J=1,KNC 122 CALL UNPACK(J) 123 KB=KINBAS(J,JC,J2,J3) 124 IF(KB.GT.O) GO TO 102 125 DO 100 I=1,KNR 126 IF(KB.LT.O) GO TO 101 127 YTEMP(I)=YTEMP(I) - Y(I)*XLB(J,JC,J2,J3) 128 GO TO 100 129 101 CONTINUE 130 YTEMP(I) = YTEMP(I) - Y(I)*XUB(J,JC,J2.J3) 131 100 CONTINUE 132 GO TO 200 133 102 CONTINUE 134 DO 103 I=1,KNR 135 YTEMP1(I) = YTEMP1(I) + Y(I)*X(KB,JC,J2,J3) 136 103 CONTINUE 137 200 CONTINUE 138 DO 300 I=1,KNR 139 DF = DABS(YTEMP(I)-YTEMP1(I)) 140 IF(DF.GT.DMAX) DMAX = DF 141 IF(DF.LE.ZTOLZE) GO TO 300 142 300 CONTINUE 143 C WRITE(6,302) DMAX 144 C02 FORMAT(' DMAX = ',E9.2) 145 DRES = DMAX 146 RETURN 147 END 148 C --- —------------------------------------------------- 149 SUBROUTINE INPUT(IFPROB) 150 C 151 C INPUTS PROBLEM DATA 152 C SUBROUTINE ADAPTED FROM LINEAR PROGRAMMING CODE LPrM 1, WRITTEN 153 C BY J.A. TOMLIN (OPERATIONS RESEARCH, STANFORD UNIVEFRSITY) 154 C ***DESCRIPTION OF PARAMETERS*** 155 C IFPROB = NONZERO PROBLEM ID NUMBER((.U'[PUT) 156 C 157 IMPLICIT REAL*4 (A,C,E-H,O,P,R-W,Z), RFAL*8 (B,D,X,Y), 158 1 INTEGER*4 (I-N,Q) 159 INTEGER JH,KINBAS,LA,LE,IA,IE.NODE 160 INTEGER ICNAM(602,2,3,3,1),ICFC(602,2),NAME(6) 161 DOUBLE PRECISION E(3000),ATEMP1,ATEMP2 162 REAL A(3000,3,3,1) 163 C 164 COMMON/BL5/DRES,ICNAM 165 COMMON/BLOCK/ ZTOLZE,ZTOLPV,Z1COST,ZTOISM,NEGINF,NEMAY,NRMAX, 166 1 NTMAX,QBL,QA,QIQF,QN,QB,QC,QE,QH,QL,QO,QR,QM,QGO,QS, 167 COMMON DE,DP,B(350,3,3,1),X(350,3,3,1),Y(350),YTEMP(60G),YTEMP1(6 168 1 22),XLB(602,3,3,1),XUB(602,3,3,1),XKrT(350,3,3,1),Y PF(35,.3,3,1) 169 1,A,E,MSTAT,IOBJ,IROWP,1TCNT, 170 2 INVFRQ,ITRFRQ,JCOLP,NROW(3,3,1),NCOL(3,3,1),NELEM,NFIM(3,3,1 171 2 ),NETA, 172 3 NLELEM,NLETA,NUELEM,NUETA,Jtl(350,3,3.1),KINBAS(602,J.3.1),LA( 173 3 602,3,3,1), 174 4 LE(1002),IA(3000,3,3,1),IE(3000),

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=K86B Page 4 175 5 ATMP(3000),ABN(600,3,3,1),IBN(600,3,3,1),LBN(602,3,3.1), 176 177 6 PROB(3,3,1),NFLG,KBTMP(602),ITMP(3000),XUTMP(602),XILMP(602), 178 7 LTMP(602),NROWP(3,3,1),NCOLP(3,3,1),NTH(3,3,1),NR 179 COMMON/BLOCK3/ NND(5),NPASS,JPER(5),JCUR,JPASS,NPER 180 COMMON/BLOCK4/ BND(350),XTOPT,XRHO,YPIRAR(602),YBX(350),IBST(3), 181 1 PRBV(3,5),PRST(5,5,5),CBST(3,5),IBASE,JSTCH(5,5,5),fICUJR(3), 182 2 NXNF(3),INFLG,NETND(10),INS1(5),MXNS-I,NST 183 C 184 C ***DESCRIPTIONS OF SOME IMPORTANT VARIABLES IN BLANK COMMON*** 185 C B(I) = RIGHT HAND SIDE OF ROW I 186 C X(I) = LP VALUE FOR JH(I), WHICH IS THE VARIABLE BASIC IN ROW I 187 C A CONTAINS THE NONZERO ELEMENTS OF THE CONSTRAINT MATRIX, INCL. 188 C THE OBJECTIVE ROW IOBJ. LA(J) = LOCATION IN A OF THE FIRST 189 C ELEMENT OF COL J. IA(I) = ROW IN WHICH ELEMENT I OF A BELONGS. 190 C E CONTAINS THE NONZERO ELEMENTS OF -IHE CURRENT LP BASIS INVERSE 191 C IN ETA VECTOR FORM. LE, IE ARE TO E AS LA, IA ARE TO A. 192 C MSTAT FLAGS FEASIBILITY OF CURRENT LP 193 C ITCNT = NO. OF SIMPLEX ITERATIONS SO FAR; IF > ITRFRQ, STOP 194 C INVFRQ = NUMBER OF SIMPLEX ITERATIONS BEFORE E IS REINVERTED 195 C NROW = NO. OF ROWS; NCOL = NO. OF COLUMNS 196 C KINBAS(J) = { I IF J IS BASIC IN ROW I, I.E. J = JF(I) 197 C 0 IF J IS NONBASIC AT ITS LOWER BOUND XLR(J) 198 C -1 IF J IS NONBASIC AT ITS UPPER BOUND XUB(J) } 199 DO 21 K=1,3 200 DO 21 K1=1,2 201 DO 21 K2=1,2 202 DO 10 I=I,NRMAX 203 XKSI(I.K,K1,K2)=0.0 204 10 B(I,K,K1,K2) = 0. 205 XKSI(I,K,K1,K2) = 0.0 206 NROW(K,K1,K2) = 0 207 L = 500 208 DO 20 J=1,L 209 20 KINBAS(J,K,K1,K2) = 0 210 21 CONTINUE 211 ITCNT = 0 212 ICS1=0 213 ICS2=0 214 C SET FOR MXNST POSSIBILITIES 215 MXNST=5 216 READ (5,7000,END=9999) IFPROB,IOBJ,INVFRQ,ITRFRQ,NPER 217 7000 FORMAT (514) 218 DO 7002 I=1,NPER 219 READ(5,7001,END=9999) NND(I) 220 7001 FORMAT(I4) 221 7002 CONTINUE 222 IF (IFPROB.EQ. O) RETURN 223 IF (IOBJ.EQ. 0)IOBJ = 1 224 IF (INVFRQ.EQ. O)INVFRQ = 99999 225 IF (ITRFRQ.EQ. O)ITRFRQ = 99999 226 WRITE(6,8010) IFPROB 227 8010 FORMAT(' PROBLEM ',I4) 228 C 229 C START TO ITERATE 230 C 231 JCUR=1 232 DO 19 1=1,3

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=K8GB Page 5 233 JPER(I)=1 234 19 CONTINUE 235 JPER(1)=0 236 22 CONTINUE 237 NR=O 238 JPER(JCUR)=JPER(JCUR)+1 239 IF(UPER(JCUR).LE. NND(JCUR)) GO TO 190 240 K=JCUR-1 241 187 CONTINUE 242 IF(K.LE. 1) GO TO 188 243 IF(JPER(K).GE. NND(K)) K=K-1 244 IF(JPER(K).GE. NND(K)) GO TO 187 245 JPER(K)=JPER(K)+1 246 GO TO 186 247 188 CONTINUE 248 IF(JCUR.EQ. NPER) GO TO 9998 249 JCUR=JCUR+I 250 186 CONTINUE 251 KK=K+1 252 IF(K EQ. O) K=1 253 DO 189 I=KK,JCUR 254 JPER(I)=1 255 189 CONTINUE 256 190 CONTINUE 257 JC=JCUR 258 J1=JPER(1) 259 J2=JPER(2) 260 J3=JPER(3) 261 NROW(JC,J2,J3)=0 262 NCOL(JC,J2,J3)=0 263 NELM(JC,J2,J3)=0 264 READ(5,222) PROB(JC,J2,J3) 265 222 FORMAT(F5.3) 266 5 READ(5,101) K1,K2,K3,K4,(NAME(I),I=1,4),ATEMP1,NAME(5),NAME(6), 2671 ATEMP2 268 101 FORMAT(4A1,2A4,2X,2A4,2X,F12.4,3X,2A4,2X,F12.4) 269 IF(K1.EQ. QE) GO TO 600 270 IF(K1.EQ. QBL) GO TO 50 271 IF(K1.EQ. QN) GO TO 5 272 IF(K1.EQ. QR.AND. K2.EQ. QO) L=1 273 IF(K1.EQ. QR.AND. K2.EQ. QO) GO TO 5 274 IF(K1.EQ. QC) L=2 275 IF(K1.EQ. QC) GO TO 5 276 IF(K1.EQ. QB.AND. K2 EQ. QA) L=3 277 IF(K1.EQ. QB.AND. K2.EQ. QA) GO TO 5 278 IF(K1.EQ. QR.AND. K2.EQ. QH) L=4 279 IF(K1.EQ. QR.AND. K2.EQ. QH) GO TO 5 280 50 GO TO(210,320,410,500),L 281 C 282 210 NROW(JC,J2,d3)=NROW(JC,J2,J3)+1 283 NCOL(JC,J2,J3)=NROW(JC,J2,J3) 284 ICNAM(NROW(JC,d2,J3),1,JC,J2,J3) = NAME(1) 285 ICNAM(NROW(JC,J2,J3),2,JC,d2,J3) = NAME(2) 286 C 287 C TEST ROW TYPE 288 C 289 IF(K2.EQ.QL.OR. K3.EQ.QL) GO TO 220 290 IF(K2.EQ.QE.OR. K3.EQ.QE) GO TO 230

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=K86B Page 6 291 IF(K2.E.QG.OR. K3.EQ.QG) GO TO 240 292 IF(K2.EQ.QN.OR. K3.EQ.QN) GO TO 250 293 GO TO 230 294 220 XLB(NROW(JC,J2,J3),JC,J2,J3) = 0. 295 XUB(NROW(JC,J2,J3),JC,J2,J3) - 1.E7 296 GO TO 250 297 230 XLB(NROW(JC,J2,J3),JC,J2,J3) = 0. 298 XUB(NROW(JC,J2,J3),JC,J2,J3) = 0. 299 GO TO 250 300 240 XLB(NROW(JC,J2,J3),JC,J2,J3) - 0. 301 XUB(NROW(JC,J2,J3),JC,J2,J3) = 1.E7 302 A(NROW(JC,J2,J3),JC,J2,J3) = -1. 303 GO TO 260 304 250 A(NROW(JC,J2,J3),JC,J2,J3) = 1. 305 260 IA(NROW(JC,J2,J3),JC,J2,J3) = NROW(JC,J2,J3) 306 LA(NROW(JC,J2,J3),JC,J2,33) = NROW(JC,,J2,J3) 307 JH(NROW(JC,J2,J3),JC,J2,J3) = NROW(JC,J2,J3) 308 KINBAS(NROW(JC,J2,J3),JC,J2,J3) = NROW(JC,J2,J3) 309 NELEM=NROW(JC,J2,J3) 310 GO TO 5 311 C 312 C MATRIX ELEMENTS 313 C 314 320 J = 3 315 K = 4 316 IF (DABS(ATEMPI).LE. ZTOLZE) GO TO 321 317 GO TO 324 318 321 J=5 319 K=6 320 IF (DABS(ATEMP2).LE. ZTOLZE) GO TO 5 321 ATEMP1=ATEMP2 322 324 IF (NAME(1).EQ. ICS1.AND. NAME(2).EQ. ICS2) GO TO '130 323 NCOL(JC,J2,J3) = NCOL(JC,J2,J3) + 1 324 ICS1 = NAME(1) 325 ICS2 = NAME(2) 326 ICNAM(NCOL(JC,J2,J3),1,JC,J2,tJ3) = ICS! 327 ICNAM(NCOL(JC,J2,J3),2,JC,J2,J3) = ICS? 328 LA(NCOL(JC,J2,J3),JC,J2,J3) = NELEM + 1 329 C 330 C TEST FOR ROW MATCH 331 C 332 330 KNR=NROW(JC,J2,J3) 333 DO 340 I=1,KNR 334 IF(NAME(J).NE.ICNAM(I,1,JC,J2,J3).OR.NAME(K).NE. 335 1 ICNAM(I,2,JC,J2,J3)) GO TO 340 336 NELEM = NELEM + 1 337 IA(NELEM,JC,J2,J3) = I 338 A(NELEM,JC,J2,J3) = ATEMP1 339 LA(NCOL(JC,J2,J3)+1,JC,J2,J3)=NELEM+1 340 335 IF(K.GT. 5) GO TO 5 341 IF(DABS(ATEMP2).LE. ZTOLZE) GO TO 5 342 J = 5 343 K = 6 344 ATEMP1 = ATEMP2 345 GO TO 330 346 340 CONTINUE 347 WRITE(6,8300) NAME(J),NAME(K),NAME(1),NAME(2) 348 8300 FORMAT(17HNO MATCH FOR ROW,2A4,10HAT COLUMN,2A4)

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=K8GB Page 349 STOP 350 C 351 C BASIS CARDS 352 C 353 410 KNC=NCOL(JC,J2,J3) 354 DO 420 I=1,KNC 355 IF(NAME(1).NE.ICNAM(I,1,JC,J2.J3).OR.NAME(2).NE. 356 1 ICNAM(I,2,JC,J2,J3)) GO TO 420 357 IBVEC = I 358 GO TO 425 359 420 CONTINUE 360 WRITE(6,8400) NAME(1),NAME(2) 361 8400 FORMAT(20HNO MATCH FOR VECTOR,2A4) 362 GO TO 5 363 425 KNR=NROW(JC,J2,J3) 364 DO 430 I=1,KNR 365 IF(NAME(3).NE.ICNAM(I,1,JC,J2,J3).OR.NAME(4).NE. 366 1 ICNAM(I,2,JC,J2,J3)) GO TO 430 367 IBROW=I 368 GO TO 440 369 430 CONTINUE 370 WRITE(6,8300) NAME(3),NAME(4) 371 GO TO 5 372 440 JH(IBROW,JC,J2,J3) = IBVEC 373 KINBAS(IBROW,JC,J2,J3) = 0 374 KINBAS(IBVEC,JC,J2,J3) = IBROW 375 GO TO 5 376 C 377 C RHS 378 C 379 500 J = 3 380 K = 4 381 IF (DABS(ATEMP1).LE. ZTOLZE) GO TO 521 382 GO TO 530 383 521 J=5 384 K=6 385 IF (DABS(ATEMP2).LE. ZTOLZE) GO TO 5 386 ATEMP1=ATEMP2 387 C 388 C TEST FOR ROW MATCH 389 C 390 530 KNR=NROW(JC,J2,J3) 391 DO 540 I=1,KNR 392 IF(NAME(J).NE.ICNAM(I,1,JC,J2,J3).OR.NAME(K).NE. 393 1 ICNAM(I.2,JC,J2,J3)) GO TO 540 394 B(I,JC,J2,J3) = ATEMP1 395 XKSI(I,JC,J2,J3) = ATEMP1 396 535 IF(K.GT. 5) GO TO 5 397 IF(DABS(ATEMP2).LE. ZTOLZE) GO TO 5 398 J = 5 399 K = 6 400 ATEMP1 = ATEMP2 401 GO TO 530 402 540 CONTINUE 403 WRITE(6,8300) NAME(J),NAME(K) 404 STOP 405 C 406 C END OF INPUT 7

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=K8GB Page 8 407 C 408 600 NSCOL = NCOL(JC,J2,d3) - NROW(JC,J2,J3) 409 K = NROW(JC,J2,J3) + 1 410 C INPUT LOWER AND UPPER BOUNDS ON DECISION VARIABLES 411 KNC=NCOL(JC,J2,J3) 412 READ (5,650) (XLB(J,JC,d2,J3), J=K,KNC) 413 READ (5,650) (XUB(J,JC,J2,J3), J=K,KNC) 414 650 FORMAT (9F8.0) 415 NELM(JC,J2,J3)=NELEM 416 NELEM = NELEM - NROW(JC,J2,J3) 417 RELEM = NELEM 418 RDENS = RELEM/(NROW(JC,J2,J3)*NSCOL) 419 WRITE (6,8500) RDENS 420 8500 FORMAT (' DENSITY OF CONSTRAINT MATRIX IS ',F6.3) 421 NCOLP(JC,J2,J3)=NCOL(JC,J2,J3) 422 NROWP(JC,J2,J3)=NROW(JC,J2,J3) 423 C ADD NROW VALUES FOR NPER IN LKHDC1 424 IF(JC.NE.NPER) GO TO 8499 425 JJ2=NND(2) 426 DO 8498 I=2,JJ2 427 NROW(3,I,1)=NROW(3,1,1) 428 NCOL(3,I,1)=NCOL(3,1,1) 429 8498 CONTINUE 430 8499 CONTINUE 431 IF(JC.EQ. NPER) GO TO 2222 432 C 433 C INPUT FOR THE B MATRIX FOLLOWS 434 C 435 NELEM=O 436 15 READ(5,1101) K1,K2,K3,K4,(NAME(I),I=1,4),ATEMP1,NAME(5),NAME(6), 437 1 ATEMP2 438 1101 FORMAT(4A1,2A4,2X,2A4,2X,F12.4,3X,2A4,2X,F12.4) 439 IF(K1.EQ. QE) GO TO 1600 440 IF(K1.EQ. QBL) GO TO 150 441 IF(K1.EQ. QN) GO TO 15 442 IF(K1.EQ. QR.AND. K2.EQ. Q() L=1 443 IF(K1.EQ. QR.AND. K2.EQ. QO) GO TO 15 444 IF(K1.EQ. QC) L=2 445 IF(K1.EQ. QC) GO TO 15 446 150 GO TO (115,1320),L 447 C 448 C MATRIX ELEMENTS 449 C 450 115 NR=NR+1 451 ICN(NR,1)=NAME(1) 452 ICN(NR,2)=NAME(2) 453 IF(NR.GT.NROW(JC,J2,J3)) GO TO 15 454 ABN(NR,JC,J2,J3) = 0. 455 IBN(NR,JC,J2,J3) = NR 456 LBN(NR,JC,J2,J3) = NR 457 NELEM=NR 458 NC=NR 459 GO TO 15 460 1320 J = 3 461 K = 4 462 GO TO 1324 463 1321 J=5 464 K=6

Listing 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 of NDST3 at 15:43:01 on JUN 10, 1984 for CCid-KSGR Page 9 ATEMPI=ATEMP2 1324 IF (NAME(1).EQ. ICS1.AND. NAME(2).EQ. ICS2) GO TO 1330) NC = NC + 1 ICS1 = NAME(1) ICS2 = NAME(2) LBN(NC,JC,J2,J3) = NELEM + 1 C C C TEST FOR ROW MATCH 1330 DO 1340 I = 1,NR IF(NAME(J).NE.ICN(I,1).OR. NAME(K).NE.ICN NELEM = NELEM + 1 IBN(NELEM,JC,J2,J3) = I ABN(NELEM,JC,J2,J3) = ATEMP1 LBN(NC+1,JC,J2,J3)=NELEM+1 1335 IF(K.GT. 5) GO TO 15 IF(DABS(ATEMP2).LE. ZTOLZE) GO TO 15 J = 5 K = 6 ATEMP1 = ATEMP2 GO TO 1330 1340 CONTINUE WRITE(6,8300) NAME(J),NAME(K),NAME(1),NAME(2) 1600 CONTINUE GO TO 22 2222 CONTINUE (I,2))GO 0 1340 C C C C C 2102 C C C 2'. 2101 C r C HERE WE HAVE NEW POSSIBILITIES INITIALIZE NST=O DO 2102 I=1, MXNST INST(I)=O CONTINUE READ IN VALUES READ(5,2101) K1,K2,K3,K4,(NAMF(I), I=1,4),ATEMP1, 1 NAME(5),NAME(6),ATEMP2 FORMAT(4A1,2A4,2X,2A4,2XF12.4,3X,2A4,2X,F12.4) IF(K1.E. QS) L=1 IF(K1 EQ. QS) GO TO 2505 IF(K1 EQ. QE) GO TO 2600 CHECK FOR NEW VALUES IF(NAME(1).EQ. ICS1.AND. NAME(2).EQ. JCS2) GO TO 2330 ICS1=NAME(1) ICS2=NAME(2) NST=NST+1 DO 2340 I=1,KNR IF(NAME(1).NE.ICNAM(I,1,JC,J2,J3).OR.NAME(2).NE. 1 ICNAM(I,2,JC,J2,J3)) GO TO 2340 IBST(NST)=I INST(NST)=INST(NST) + 1 CBST(NST,INST(NST))=ATEMP1 PRBV(NST,INST(NST))=ATEMP2

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=K8GR Page 10 523 GO TO 2505 524 2340 CONTINUE 525 GO TO 2349 526 2330 CONTINUE 527 INST(NST)=INST(NST)+1 528 CBST(NST,INST(NST))=ATEMP1 529 PRBV(NST,INST(NST))=ATEMP2 530 GO TO 2505 531 C 532 C CHECK FOR ROW MATCH 533 C 534 C 535 2349 CONTINUE 536 C NO MATCH 537 C 538 WRITE(6,2350) NAME(3),NAME(4),NAME(1),rJAME(2) 539 2350 FORMAT(17HNO MATHCH FOR ROW,2A4,18HAT STOCH VARIABLE,?"4) 540 STOP 541 C 542 C SET UP RHS 543 C 544 2600 CONTINUE 545 DO 2360 I=1,KNR 546 BND(I)=XKSI(I,NPER,1,1) 547 2360 CONTINUE 548 C 549 C CHECK IF MXNST>NST 550 C 551 IF(NST.EQ. 3) GO TO 2376 552 NNST=3 553 IF(NST.LT.3) NNST=NST+1 554 DO 2375 I=NNST,3 555 INST(I)=1 556 PRBV(I,1)=1.0 557 2375 CONTINUE 558 2376 CONTINUE 559 INS=INST(1) 560 JNS=INS-T(2) 561 KNS=INST(3) 562 DO 2380 I=1,INS 563 DO 2380 J=1,JNS 564 DO 2380 K=1,KNS 565 PRST(I,J,K)=PRBV(1,I)*PRBV(2,J)*PRBV(3.K) 566 2380 CONTINUE 567 WRITE(6,2400) 568 2400 FORMAT(/,' STOCHASTIC VARIABLES') 569 WRITE(6,2401) 570 2401 FORMAT(/,' ROW',8X,' VALUE',4X,' PROB',/) 571 DO 2410 I=1,3 572 IF(I.GT.NST) GO TO 2410 573 d1 = INST(I) 574 DO 2410 J=1,J1 575 I1=IBST(I) 576 A1=CBST(I,J) 577 A2=PRBV(I,J) 578 WRITE(6,2402) ICNAM(II,1,NPER,1,1),ICNAM(I1,2,NPER,1,1),A1.A2 579 2402 FORMAT(1X,2A4,3X,F8.2,2X,F8.6) 580 2410 CONTINUE

Listing of NDST3 at 15:43:01 on dUN 10, 1984 for CCid=-KGB Page 11 581 9998 CONTINUE 582 C SET FOR NO THETA CUTS TO START 583 DO 1601 I=1,NPER 584 NNDD=NND(I) 585 DO 1602 J=1,NNDD 586 NTH(I,J,J)=O 587 1602 CONTINUE 588 1601 CONTINUE 589 RETURN 590 9999 IFPROB = 0 591 RETURN 592 END 593 C -------------—. --- —------------------------------- --- _ ---594 SUBROUTINE INCHK 595 C 596 C CHECKS OUT THE CURRENT VALUES 597 C 598 IMPLICIT REAL*4 (A,C,E-H,O,P,R-W,Z), REAL*8 (B,D,X,Y), 599 1 INTEGER*4 (I-N,Q) 600 INTEGER JH,KINBAS,LA,LE,IA,IE,NODE 601 INTEGER ICNAM(602,2),NAME(6) 602 DOUBLE PRECISION E(3000).ATEMP1,ATEMP2 603 REAL A(3000,3,3,1) 604 C 605 COMMON DE,DP,B(350,3,3,1),X(350,3,3,1),Y(350),YTEMP(602),YrEMP1(6 606 1 22),XLB(602,3,3,1),XUB(602,3,3,1),XKSI(350,3,3,1),YlI(350,3,3.1) 607 1,A,E,MSTAT,IOBJ,IROWP,ITCNT, 608 2 INVFRQ,ITRFRQ,JCOLP,NROW(3,3,1),NCOL(3,3,1),NELEM,NFIM(3.3,1 609 2 ),NETA, 610 3 NLELEM,NLETA,NUELEM,NUETA,JH(350,3,3, I)KINBAS(602,r'.,1),LA( 611 3 602,3,3,1), 612 4 LE(1002),IA(3000,3,3,1),IE(3000), 613 5 ATMP(3000),ABN(600,3,3,1),IBN(600,3,3,1),LBN(602,3,3,1), 614 615 6 PROB(3,3,1),NFLG,KBTMP(602),ITMP(3000),XUTMP(602),XI IMP(G02), 616 7 LTMP(602),NROWP(3,3,1),NCOLP(3,3,1),NTH(3,3,1),NR 617 COMMON/BLOCK3/ NND(5),NPASS,JPER(5),JCLIR,JPASS,NPER 618 COMMON/BLOCK4/ BND(350),XTOPT,XRHO,YPIBAR(602),YBX(35('),BST(3), 619 1 PRBV(3,5),PRST(5,5,5),CBST(3,5),IBASE,JSTCH(5,5,5),NCl.IR(3), 620 2 NXNF(3),INFLG,NETND(10),INST(5),MXNST,NST 621 L=1 622 DO 100 J=1,NPER 623 NNDD=NND(J) 624 DO 99 K=1,NNDD 625 IF((J EQ. 1).AND. (K.GT. 1)) GO TO 99 626 NNPP=NND(3) 627 DO 80 L=1, NNPP 628 IF((J.NE. 3).AND. (L.GT.1)) GO TO 80 629 KLM=NEIM(J,K,L) 630 KNC=NCOL(J,K,L) 631 KNR=NROW(J,K,L) 632 WRITE (6,1) JK,L 633 1 FORMAT(' CHECK THE A MATRIX OF NODE ',14,',',I4,/,',I, 1//) 634 WRITE (6,2) (A(I,J,K,L),I=1,KLM) 635 2 FORMAT(15F7.2) 636 WRITE(6,3) 637 3 FORMAT(//,' IA') 638 WRITE(6,5) (IA(I,J,K,L),I=1,KIM)

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=K8GB Page 12 639 5 FORMAT(15I5) 640 WRITE(6,4) 641 4 FORMAT(//,' LA') 642 WRITE(6,5) (LA(I,J,K,L),I=1,KNC) 643 WRITE(6,6)KNR,KNC,KLM 644 6 FORMAT(//,' NROW=',I5,' NCOL=',I5,' NEL.M=',I5) 645 WRITE(6,7) 646 7 FORMAT(' KINBAS') 647 WRITE(6,5)(KINBAS(I,d,K,L),I=1,KNC) 648 WRITE(6,8) 649 8 FORMAT(' JH') 650 WRITE(6,5) (JH(I,J,K,L),I=1,KNR) 651 WRITE(6,9) 652 9 FORMAT(' X VALUES') 653 WRITE(6,2)(X(I,J,K,L),I=1,KNR) 654 WRITE(6,10) 655 10 FORMAT(' XKSI"S ') 656 WRITE(6,2) (XKSI(I,J,K,L),I=1.KNR) 657 WRITE(6,2) (B(I,J,K,L),I=1,KNR) 658 WRITE(6,11) J,K,L,PROB(J,K,L) 659 11 FORMAT(' PROB OF',5I,I5,15,' IS',F7.5) 660 WRITE(6,12) 661 12 FORMAT(' ABN MATRIX') 662 WRITE(6,2)(ABN(I,J,K,L),I=1,KIM) 663 WRITE(6,13) 664 13 FORMAT(' IBN') 665 WRITE(6,5)(IBN(I,J,K,L),I=1,KLM) 666 WRITE(6,14) 667 14 FORMAT(' LBN') 668 WRITE(6,5)(LBN(I,J,K,L),I=1,KNC) 669 80 CONTINUE 670 99 CONTINUE 671 100 CONTINUE 672 RETURN 673 END 674 C --- —--------------------- -- -- 675 SUBROUTINE FTRAN(IPAR) 676 C 677 C PERFORMS FORWARD TRANSFORMATION ON COLUMN STORED IN VECIOR Y 678 C SUBROUTINE ADAPTED FROM LINEAR PROGRAMMING CODE LPr 1, WRITTEN 679 C BY J.A. TOMLIN (OPERATIONS RESEARCH. STANFORD UNIVERSITY) 680 C ***DESCRIPTION OF PARAMETERS*** 681 C IPAR = PARAMETER INDICATING WHICH ETA-VECTORS MATRIX COLUMN 682 C IS TO BE UPDATED BY (INPUT) 683 C 684 IMPLICIT REAL*4 (A,C,E-H,O,P,R-W,Z), RFAL*8 (B,D,X,Y), 685 1 INTEGER*4 (I-N,Q) 686 INTEGER JH,KINBAS,LA,LE,IA,IE.NODE 687 DOUBLE PRECISION E(3000) 688 REAL A(3000,3,3,1) 689 COMMON DE,DP,B(350,3,3,1),X(350,3,3,1),Y(350),YTEMP(602),YTEMP1(G 690 1 22),XLB(602,3,3,1),XUB(602,3,3,1),XKSI(350,3,3,1),YPI(350,3,3,1) 691 1,A,E,MSTAT,IOBJ,IROWP,ITCNT, 692 2 INVFRQ,ITRFRQ,JCOLP,NROW(3,3,1),NCOL(3,3,1),NELEM,NELM(3,3,1 693 2 ),NETA, 694 3 NLELEM,NLETA,NUELEM,NUETA,JH(350,3,3,1),KINBAS(602,3,3,1),LA( 695 3 602,3,3,1), 696 4 LE(1002),IA(3000,3,3,1),IE(3000),

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=KP6B Page 13 697 5 ATMP(3000),ABN(600,3,3,1),IBN(600,3,',1),LBN(602,3,q.1), 698 699 6 PROB(3,3,1),NFLG,KBTMP(602),ITMP(3000),XUTMP(602),X' MP(602), 700 7 LTMP(602),NROWP(3,3,1),NCOLP(3,3,1),1NT(3,3,1),NR 701 COMMON/BLOCK3/ NND(5),NPASS,JPER(5),JCUR,JPASS,NPER 702 COMMON/BLOCK4/ BND(350),XTOPT,XRHO,YPIBAR(602),YBX(35r, ),IFSr(3), 703 1 PRBV(3,5),PRST(5,5,5),CBST(3,5),IBASE.JSTCH(5,5,5),rl-:uR( 3), 704 2 NXNF(3),INFLG,NETND(10),INST(5),MXNST,NST 705 C 706 NLE = NETA 707 NFE = 1 708 IF (IPAR.EQ.2) NFE = NLETA + 1 709 IF (NFE.GT. NLE) GO TO 9000 710 DO 1000 IK = NFE,NLE 711 LL = LE(IK) 712 KK = LE(IK+1) - 1 713 IPIV = IE(LL) 714 DY = Y(IPIV) 715 DY = DY/E(LL) 716 Y(IPIV) = DY 717 IF (KK.LE. LL) GO TO 1000 718 LL = LL + 1 719 DO 500 d = LL,KK 720 IR = IE(J) 721 Y(IR) = Y(IR) - E(J) * DY 722 500 CONTINUE 723 1000 CONTINUE 724 9000 CONTINUE 725 RETURN 726 END 727 C --- —---------------------------------------------------- - ---- 728 SUBROUTINE BTRAN 729 C 730 C PERFORMS BACKWARD TRANSFORMATION ON COLUMN STORED IN VECTOR Y 731 C SUBROUTINE ADAPTED FROM LINEAR PROGRAMMING CODE LP- 1, WRITTEN 732 C BY J.A. TOMLIN (OPERATIONS RESEARCH, STANFORD UNIVERSII'Y) 733 C 734 IMPLICIT REAL*4 (A,C,E-H,O,P,R-W,Z), REAL*8 (B,D,X,Y). 735 1 INTEGER*4 (I-N,Q) 736 INTEGER JH,KINBAS,LA,LE,IA,IE,NODE 737 DOUBLE PRECISION E(3000) 738 REAL A(3000,3,3,1) 739 COMMON DE,DP,B(350,3,3,1),X(350,3,3,1),Y(350),YTEMP(60?),YIEMP1(6 740 1 22),XLB(602,3,3,1),XUB(602,3,3,1),XKSI(350,3,3,1),YFI(350,3,3,1) 741 1,A,E,MSTAT,IOBJ,IROWP,ITCNT. 742 2 INVFRQ,ITRFRQ,JCOLP,NR(W(3,3,1),NCOL(3,3,1),NELEM,NFIM(33,3,1 743 2 ),NETA, 744 3 NLELEM,NLETA,NUELEM,NUETA,JH(350,3,3,1),KINBAS(602,3,3,1),LA( 745 3 602,3,3,1), 746 4 LE(1002),IA(3000,3,3,1),IE(3000), 747 5 ATMP(3000),ABN(600,3,3,1),IBN(600,3,3,1),LBN(602,3,,.1), 748 749 6 PROB(3,3,1),NFLG,KBTMP(602),ITMP(3000)),XUTMP(602),XI TMP(602), 750 7 LTMP(602),NROWP(3,3,1),NCOLP(3,3,1),NTHF(3,3,1),NR 751 COMMON/BLOCK3/ NND(5),NPASS,JPER(5),JCURJPASS,NPER 752 COMMON/BLOCK4/ BND(350),XTOPT,XRHO,YPIBAR(602),YBX(350),IBST(3), 753 1 PRBV(3,5),PRST(5,5,5),CBST(3,5),IBASE,JSTCH(5,5,5),NCUR(3), 754 2 NXNF(3),INFLG,NETND(10),INST(5),MXNST,NST

Listing of NDST3 at 15:43:01 on dUN 10, 1984 for CCid=K8GB Page 14 755 C 756 IF (NETA.LE. O) GO TO 9000 757 DO 1000 I = 1,NETA 758 IK = NETA - I + 1 759 LL = LE(IK) 760 KK = LE(IK+1) - 1 761 IPIV = IE(LL) 762 DP = E(LL) 763 DY = Y(IPIV) 764 DSUM = 0. 765 IF (KK.LE. LL) GO TO 600 766 LL = LL + 1 767 DO 500 J = LL,KK 768 IR = IE(d) 769 DE = E(J) 770 DPROD = DE * Y(IR) 771 DSUM = DSUM + DPRO) 772 500 CONTINUE 773 C 774 600 Y(IPIV) = (DY - DSUM) / UP 775 1000 CONTINUE 776 JC=JCUR 777 J2=JPER(2) 778 J3=JPER(3) 779 KNR=NROW(JC,J2,d3) 780 DO 700 I=1,KNR 781 YPI(I,JC,J2,J3)=Y(I) 782 70Q CONTINUE 783 9000 RETURN 784 END 785 C --- —------ 786 SUBROUTINE FORMC 787 C 788 C FORMS OBJ. FUNCTION VECTOR AND CHECKS FEASIBILITY OF BASIS 789 C SUBROUTINE ADAPTED FROM LINEAR PROGRAMMING CODE LPP!N 1, WRIITEN 790 C BY J.A. TOMLIN (OPERATIONS RESEARCH, SFANFORD UNIVtPSITY) 791 C 792 IMPLICIT REAL*4 (A,C,E-H,O,P,R-W,Z), RFAL'8 (B,D,X,Y). 793 1 INTEGER*4 (I-N,Q) 794 INTEGER JH,KINBAS,LA,LE,IA,IE,NODE 795 DOUBLE PRECISION E(3000) 796 REAL A(3000,3,3,1) 797 COMMON/BLOCK/ ZTOLZE,ZTOIPV,ZTCOST,ZTOI.SM,NEGINF,NEMAV,NRtAX, 798 1 NTMAX,QBL,QA,QI,QF,QN,QB,QC,QE,QH,QL,QO,QR,QM,QG,QS,OP 799 COMMON/BLOCK2/ ICOL,IVAL,IDIR,NPIVOTIPrTYPE,CMIN,CMAX,APVN[NFNOPT 800 COMMON DE,DP,B(350,3,3,1),X(350,3,3, 1),Y(350),YTEMP(60C:),YTEMP1(6 801 1 22),XLB(6023,3,3,1),XUB(602,3,3,1),XKSI(350,3,3,1),YPT(350,3,3,1) 802 1,A,E,MSTAT,IOBJ,IROWP,ITCNT, 803 2 INVFRO,ITRFRQ,JCOLP,NROW(3,3,1),NCOL(3,3,1),NELEM,NEFM(3,3,1 804 2 ),NETA, 805 3 NLELEM,NLETA,NUELEM,NUETA,JH(350,3,3, ),KINBAS(602,2,3,1),LA( 806 3 602,3,3,1), 807 4 LE(1002),IA(3000,3,3,1),IE(3000), 808 5 ATMP(3000),ABN(600,3,3,1),IBN(600,3,3,1),LBN(602,3,3,1), 809 810 6 PROB(3,3,1),NFLG,KBTMP(602),ITMP(3000),XUTMP(602),XLTMP(G02), 811 7 LTMP(602),NROWP(3,3,1),NCOLP(3,3,1),NTH(3,3,1),NR 812 COMMON/BLOCK3/ NND(5),NPASS,dPER(5),dCUR.JPASS,NPER

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=K86B Page 15 813 COMMON/BLOCK4/ BND(350),XTOPT,XRHO,YPIBAR(602),YBX(35)),IBST(3), 814 1 PRBV(3,5),PRST(5,5,5),CBST(3,5),IBASE,JSTCH(5,5,5),N( UR(3), 815 2 NXNF(3),INFLG,NETND(10),INST(5),MXNSi,NST 816 C 817 NINF=O 818 MSTAT = QF 819 Y(IOBJ) = 0. 820 JC=JCUR 821 J2=JPER(2) 822 J3=JPER(3) 823 KNR=NROW(JC,.J2,J3) 824 DO 30 I=1,KNR 825 IF (I.EQ. IOBJ) GO TO 30 826 ICOL = JH(I,JC,J2,J3) 827 IF (X(I,JC,J2,J3).LE. (XLB(ICOL,JCJ2,J3) - ZTOLZE)) GO TO 10 828 IF (X(I,JC,J2,J3).GE. (XUB(ICOL,JC.J2,J3) + ZTOLZF)) GO TO 20 829 Y(I) = 0. 830 GO TO 30 831 10 Y(I) = 1. 832 MSTAT = QI 833 NINF=NINF+1 834 GO TO 30 835 20 Y(I) = -1. 836 NINF=NINF+1 837 MSTAT = QI 838 30 CONTINUE 839 IF (MSTAT.EQ.QF) Y(IOBJ) = 1. 840 RETURN 841 END 842 C --- —------------------------------------ ---- 843 SUBROUTINE PRICE 844 C 845 C PRICES OUT NONBASIC COLUMNS; CHOOSES PIVOT COLUMN jI:OLP FOR 846 C CURRENT PRIMAL SIMPLEX ITERATION 847 C SUBROUTINE ADAPTED FROM LINEAR PROGRAMMING CODE LP,1 1, WRITTEN 848 C BY J.A. TOMLIN (OPERATIONS RESEARCH. STANFORD UNIVfrSI1Y) 849 C 850 IMPLICIT REAL*4 (A,C,E-H,O,P,R-W,Z), REAL-8 (B,D,X,Y). 851 1 INTEGER*4 (I-N,Q) 852 INTEGER JH,KINBAS,LA,LE,IA,IE,NODE 853 DOUBLE PRECISION E(3000) 854 REAL A(3000,3,3,1) 855 C 856 COMMON/BLOCK/ ZTOLZE,ZTOLPV,ZTCOST,ZTOLSM,NEGINF,NEMA..NRMAX, 857 1 NTMAX.QBL,QA,QI,QF,QN,OB,QC.QE,QH, L,Qr), ()R,QM,QG,QS.O!PI 858 COMMON/BLOCK2/ ICOL,IVAL,IDIR,NPIVOT,IP'FYPE,CMIN,CMAXAPV,NINF,NOP' 859 COMMON DE,DP,B(350,3,3,1),X(350,3,3,1),Y(350),YTEMP(602),YIEMPI(6 860 1 22),XLB(602,3,3,1),XUB(602,3,3,1),XKSI(350,3,3,1),YPI(350,3,3,1) 861 1,A,E,MSTAT,IOBJ,IROWP,ITCNT, 862 2 INVFRQ,ITRFRQ,JCOLP,NROW(3,3,1),NCOL(3,3,1),NELEM,NE.M(3,3,1 863 2 ),NETA, 864 3 NLELEM,NLETA,NUELEM,NUETA,JH(350,3,3,1),KINBAS(602,:.,3.1),LA( 865 3 602,3,3,1), 866 4 LE(1002),IA(3000,3,3,1),IE(3000), 867 5 ATMP(3000),ABN(600,3,3,1),IBN(600,3,3,1),LBN(602,3,3.1), 868 869 6 PROB(3,3,1),NFLG,KBTMP(602),ITMP(3000),XUTMP(602).XLTMP(602), 870 7 LTMP(602),NROWP(3,3,1),NCOLP(3,3,1),NTH(3,3,1),NR

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=K86B Page 16 871 COMMON/BLOCK3/ NND(5),NPASS,JPER(5),JCUR,JPASS,NPER 872 COMMON/BLOCK4/ BND(350),XTOPT,XRHO,YPIBAR(602),YBX(350),IBST(3), 873 1 PRBV(3,5),PRST(5,5,5),CBST(3,5),IBASE,JSTCH(5,5,5),N(UR(3), 874 2 NXNF(3),INFLG,NETND(10),INST(5),MXNST,NST 875 C 876 CMIN = 1.E10 877 NOPT=O 878 CMAX = -1.E10 879 JC=JCUR 880 J2=JPER(2) 881 J3=JPER(3) 882 KNC=NCOL(JC,J2,J3) 883 DO 1000 J=1,KNC 884 IF (KINBAS(J,JC,J2,J3).GT. O) GO TO 1000 885 IF ((XUB(J,JC,J2,J3) - XLB(J,JC,J2,J3)).LT. ZTOLZF) GO TO 1000 886 DSUM = 0. 887 LL = LA(J,JC,J2,J3) 888 KK = LA(J+1,JC,J2,J3) - 1 889 DO 500 I = LL,KK 890 IR = IA(I,JC,J2,J3) 891 DE = A(I,JC,J2,J3) 892 DPROD = DE * Y(IR) 893 DSUM = DSUM + DPROD 894 500 CONTINUE 895 IF (KINBAS(J,JC,J2,J3).EQ. -1) GO TO 600 896 IF(DSUM.LT.-ZTOLZE)NOPT=NOPT+1 897 IF (DSUM.GE. CMIN) GO TO 1000 898 CMIN = DSUM 899 JCOL1 = J 900 GO TO 1000 901 600 IF(DSUM.GT.ZTOLZE)NOPT=NOPT+1 902 IF (DSUM.LE. CMAX) GO TO 1000 903 CMAX = DSUM 904 JCOL2 = J 905 1000 CONTINUE 906 C 907 IF (CMIN.LE. -ZTCOST) GO TO 1500 908 IF (CMAX.GE. ZTCOST) GO TO 2000 909 JCOLP = 0 910 RETURN 911 1500 IF (CMAX.GE. ZTCOST) GO TO 2500 912 1600 JCOLP = JCOL1 913 RETURN 914 2000 JCOLP = JCOL2 915 RETURN 916 2500 IF (ABS(CMIN) - CMAX) 2000,2000,1600 917 END 918 C -------------------------------------------------------------------- 919 SUBROUTINE CHUZR 920 C 921 C PERFORMS MIN-RATIO TEST FOR PIVOT COLUMN JCOLP DETERMIrIED IN 922 C SUBROUTINE PRICE. SELECTS PIVOT ROW TROWP FOR CURPrNT PRIMAL 923 C SIMPIEX ITERATION. 924 C SUBROUTINE ADAPTED FROM LINEAR PROGRAMMING CODE LPM-1, WRITTEN 925 C BY J.A. TOMLIN (OPERATIONS RESEARCH. STANFORD UNIVFESITY) 926 C 927 IMPLICIT REAL*4 (A,C,E-H,O,P,R-W,Z), RFAL*8 (B,D,X,Y), 928 1 INTEGER*4 (I-N,Q)

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=KFGB Page 17 929 INTEGER JH,KINBAS,LA,LE, A,IE.NODE 930 DOUBLE PRECISION E(3000) 931 REAL A(3000,3,3,1) 932 C 933 COMMON/BLOCK/ ZTOLZE,ZTOLPV,Z1COST,ZTOI SM,NEGINF,NEMAY',NRM\X, 934 1 NTMAX,QBL,QA,QI,QF,QN,OB,QC,QE,QH,QL,r.O,OR,QM,QG,QS.PI 935 COMMON/BLOCK2/ ICOL,IVAL,IDIR,NPIVOT,I'FYrE,CMIN,CMAX, rPV. INF,NOrP 936 COMMON DE,DP,B(350,3,3,1),X(350,3,3, 1),Y(350)YTEMP(G6C2), EMP1(G 937 1 22),XLB(602,3,3,1),XUB(602,3,3,1),XKSI(350,3,3,1),yr[T(350,3,3,1) 938 1,A,E,MSTAT,IOBJ,IROWP,ITCNT, 939 2 INVFRQ,ITRFRQ,JCOLP,NROW(3,3,1),NCOL(3,3,1),NELEM,NF IM(,3,3,1 940 2 ),NETA, 941 3 NLELEM,NLETA,NUELEM,NUETA,JH-(350,3,3,1),KINBAS(602,3.3,1),LA( 942 3 602,3,3,1), 943 4 LE(1002),IA(3000,3,3,1),IE(:3000), 944 5 ATMP(3000),ABN(600,3,3,1),IBN(600,3,?,1),LBN(602,3,..). 945 946 6 PROB(3,3,1),NFLG,KBTMP(602),ITMP(3000'),XUIMP(602),XlI IP(602), 947 7 LTMP(602),NROWP(3,3,1),NCOLP(3,3,1),NTH(3,3,1),NR 948 COMMON/BLOCK3/ NND(5),NPASS,JPER(5),JCUR,JPASS,NPER 949 COMMON/BLOCK4/ BND(350),XTOPT,XRHO,YPIBAR(602),YBX(350),IBST(3), 950 1 PRBV(3,5),PRST(5,5,5),CBST(3,5),IBASE,JSTCFI(5,5,5),,ri IR(I), 951 2 NXNF(3),INFLG,NETND(10),INST(5),MXNSI.NST 952 C 953 JC=JCUR 954 J2=JPER(2) 955 J3=JPER(3) 956 IF (KINBAS(JCOLP,JC,J2,J3) EQ. -1) GO ro 1000 957 C 958 C INCOMING VARIABLE AT LOWER ROt.NI) 959 C 960 DP = 1.E10 961 KNR=NROW(JC,J2,J3) 962 DO 500 I=1,KNR 963 IF (I EQ. IOBJ) GO TO 500 964 ICOL = JH(I,JC,J2,J3) 965 IF (Y(I).GT. ZTOLPV) GO TO 100 966 IF (Y(I).LT. -ZTOLPV) GO TO 200 967 GO TO 500 968 C POSITIVE COEFFICIENT 969 100 IF (X(I,JC,J2,J3).LT. (XLB(ICOL,JC.J2,J3) - ZTOLZF)) 970 1 GO TO 500 971 DE - (X(I,JC,J2,J3) - XLB(ICOL,JC.J2,J3))/Y(I) 972 IF (DE.GE. DP) GO TO 500 973 IPTYPE = 0 974 GO TO 250 975 C NEGATIVE COEFFICIENT 976 200 IF (X(I,JC,J2,J3).GT. (XUB(ICOL,JC,J2.J3) + ZTOLZE)) 977 1 GO [0 500 978 DE = (X(I,JC,J2,J3) - XUB(ICOL,JC,J2,J3))/Y(I) 979 IF (DE.GE. DP) GO TO 500 980 IPTYPE = -1 981 250 DP = DE 982 APV=Y(I) 983 IROWP = I 984 500 CONTINUE 985 DE = DP + XLB(JCOLP,JC,J2,J3) 986 IF (DE.LT. XUB(JCOLP,JC,J2,J3)) GO TO 600

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=K86B Page 18 987 DP = XUB(JCOLP,JC,J2,J3) - XLB(JCOLP,JC,J2,J3) 988 NPIVOT = 0 989 RETURN 990 600 NPIVOT = 1 991 RETURN -992 C 993 C INCOMING VARIABLE AT UPPER BOUND 994 C 995 1000 DP = -1.E10 996 KNR=NROW(JC,J2,J3) 997 DO 1500 I=1,KNR 998 IF (I.EQ. IOBJ) GO TO 1500 999 ICOL = JH(I,JC,d2,J3) 1000 IF (Y(I).GT. ZTOLPV) GO TO 1100 1001 IF (Y(I).LT. -ZTOLPV) GO TO 1200 1002 GO TO 1500 1003 C POSITIVE COEFFICIENT 1004 1100 IF (X(I,JC,J2,J3).GT. (XUB(ICOL,JC,J2,J3) + ZTOLZF)) 1005 1 GO TO 1500 1006 DE = (X(I,JC,J2,d3) - XUB(ICOL,JC,J2,J3))/Y(I) 1007 IF (DE.LE. DP) GO TO 1500 1008 IPTYPE = -1 1009 GO TO 1250 1010 C NEGATIVE COEFFICIENT 1011 1200 IF (X(I,JC,J2,J3).LT. (XLB(ICOL,JC,J2,J3) - ZTOLZE)) 1012 1 GO TO 1500 1013 DE = (X(I,dC,J2,J3) - XLB(JCOL,JC,J2,J3))/Y(I) 1014 IF (DE.LE. DP) GO TO 1500 1015 IPTYPE = 0 1016 1250 DP = DE 1017 IROWP = I 1018 APV=Y(I) 1019 1500 CONTINUE 1020 DE = DP + XUB(JCOLP,JC,J2,J3) 1021 IF (DE.GT. XLB(JCOLP,JC,J2,J3)) GO TO 1600 1022 DP = XLB(JCOLP,JC,J2,J3) - XUB(JCOLP,JC,J2,J3) 1023 NPIVOT = 0 1024 RETURN 1025 1600 NPIVOT = 1 1026 RETURN 1027 END 1028 C --- —----------------------------------------------------- --------- 1029 SUBROUTINE WRETA 1030 C 1031 C FORMS NEW ETA-VECTORS FOR PRODUCT FORM OF BASIS INVERSF 1032 C SUBROUTINE ADAPTED FROM LINEAR PROGRAMMING CODE LPM-1, WRITTEN 1033 C BY J.A. TOMLIN (OPERATIONS RESEARCH. STANFORD UNIVFRSITY) 1034 C 1035 IMPLICIT REAL*4 (A,C,E-H,O,P,R-W,Z), REAL*8 (B,D,X,Y). 1036 1 INTEGER*4 (I-N,Q) 1037 INTEGER JH,KINBAS,LA,LE,IA,IE,NODE 1038 DOUBLE PRECISION E(3000) 1039 REAL A(3000,3,3,1) 1040 C 1041 COMMON/BLOCK/ ZTOLZE,ZTOLPV,ZTCOST,ZTOLSM,NEGINF,NEMAX,NRMAX, 1042 1 NTMAX,QBL,QA,QI,QF,QN,QB,QC,QE,QH,QL,QO,QR,QM,QG,QS,QP 1043 COMMON DE,DP,B(350,3,3,1),X(350,3,3,1),Y(350),YTEMP(602),YTEMP1(6 1044 1 22),XLB(602,3,3,),3,3,1),)UB(233,1),XKSI(350,3,3,1),Y(350,3,3,1)

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid-K86B Page 19 1045 1,A,E,MSTAT,IOBJ,IROWP,ITCNT, 1046 2 INVFRQ,ITRFRQ,JCOLP,NROW(3,3,1),NCOL(3,3,1),NELEM,NELM(3,3,1 1047 2 ),NETA, 1048 3 NLELEM,NLETA,NUELEM,NUETA,JH(350,3,3,1),KINBAS(602,3,3,1),LA( 1049 3 602,3,3,1), 1050 4 LE(1002),IA(3000,3,3,1),IE(3000), 1051 5 ATMP(3000),ABN(600,3,3,1),IBN(600,3,3,1),LBN(602,3,3,1), 1052 1053 6 PROB(3,3,1),NFLG,KBTMP(602),ITMP(3000),XUTMP(602),XLTMP(602), 1054 7 LTMP(602),NROWP(3,3,1),NCOLP(3,3,1),NTH(3,3,1),NR 1055 COMMON/BLOCK3/ NND(5),NPASS,JPER(5),JCUR,JPASS,NPER 1056 COMMON/BLOCK4/ BND(350),XTOPT,XRHO,YPIBAR(602),YBX(350),IBST(3), 1057 1 PRBV(3,5),PRST(5,5,5),CBST(3,5),IBASE,JSTCH(5,5,5),N'IJR(3), 1058 2 NXNF(3),INFLG,NETND(10),INST(5),MXNST,NST 1059 C 1060 NELEM = NELEM + 1 1061 IE(NELEM) = IROWP 1062 E(NELEM) = Y(IROWP) 1063 C 1064 JC=JCUR 1065 J2=JPER(2) 1066 J3=JPER(3) 1067 KNR=NROW(JC,J2,J3) 1068 DO 1000 I = 1,KNR 1069 IF (I.EQ. IROWP) GO TO 1000 1070 IF (DABS(Y(I)).LE. ZTOLZE) GO TO 1000 1071 NELEM = NELEM + 1 1072 IE(NELEM) = I 1073 E(NELEM) = Y(I) 1074 1000 CONTINUE 1075 C 1076 NETA = NETA + 1 1077 LE(NETA+1) = NELEM + 1 1078 RETURN 1079 END 1080 C --- —--------------------------------------- ------------------------ 1081 SUBROUTINE SHIFTR(IOLD,INEW) 1082 C 1083 C REARRANGES DATA STORAGE 1084 C SUBROUTINE ADAPTED FROM LINEAR PROGRAMMING CODE LPM-1, WRITTEN 1085 C BY J.A. TOMLIN (OPERATIONS RESEARCH, STANFORD UNIVFRSITY) 1086 C ***DESCRIPTION OF PARAMETERS*** 1087 C IOLD,INEW = PARAMETERS INDEXING STORAGE LOCATIONS Iin WIICH 1088 C DATA IS TO BE 1RANSFERRFD (INPUT) 1089 C 1090 IMPLICIT REAL*4 (A,C,E-H,O,P,R-W,Z), RfAL*8 (B,D,X,Y), 1091 1 INTEGER*4 (I-N,Q) 1092 INTEGER JH,KINBAS,LA,LE,IA,IE,NODE 1093 DOUBLE PRECISION E(3000) 1094 REAL A(3000,3,3,1) 1095 C 1096 COMMON/BLOCK/ ZTOLZE,ZTOLPV,Z'COST,ZTOLSM.NEGINF,NEMAY,NRMAX. 1097 1 NTMAX,QBL,QA,QI,QF,QN,UB,QC,QE,QH,QL,QO,QR,QM,QG,QS,QP 1098 COMMON DE,DP,B(350,3,3,1),X(350,3,3,1),Y(350),YTEMP(602),YTEMP1(6 1099 1 22),XLB(602,3,3, 1),XUB(602,3,3,1),XKSI(350,3,3,1),YrT (350,3,3, 1) 1100 1,A,E,MSTAT,IOBJ,IROWP,ITCNT, 1101 2 INVFRQ,ITRFRQ,JCOLP,NROW(3.3,1),NCOL(3,3,1),NELEM,NFIM(3.3,1 1102 2 ),NETA,

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=K8GB Page 20 1103 3 NLELEM,NLETA,NUELEM,NUETA,JII(350,3,3.1),KINBAS(602,3., ),I.A( 1104 3 602,3,3,1), 1105 4 LE(1002),IA(3000,3,3,1),IE(3000), 1106 5 ATMP(3000),ABN(600,3,3,1),IBN(600,3:3,1),LBN(602,3,3.1), 1107 1108 6 PROB(3,3,1),NFLG,KBTMP(602),ITMP(3000),XUTMP(602),XI IMP(602), 1109 7 LTMP(602),NROWP(3,3,1),NCOLP(3,3,1),NT-H(3,3,1),NR 1110 COMMON/BLOCK3/ NND(5),NPASS,JPER(5),,JCI)R.PASS,NPER 1111 COMMON/BLOCK4/ BND(350),XTOPT,XRHO,YPIBAR(602),YBX(35(!),IB3ST(3), 1112 1 PRBV(3,5),PRST(5,5,5),CBST(3,5),IBASEE, STCH(5,5,5),N'UR(3), 1113 2 NXNF(3),INFLG,NETND(10),INST(5),MXNST,NST 1114 C 1115 DIMENSION BARRAY(11900) 1116 EQUIVALENCE (BARRAY(1),B(1,1,1,1)) 1117 IF(IOLD.EQ.1) IFO=350*(JCUR-1)+1050*(JPER(2)-1)+3150*(fPER(3)-1) 1118 IF(INEW.EQ.1) IFN=350*(JCUR-1)+1050*(JPER(2)-1)+3150*I',rFr(3)-I) 1119 IF(IOLD.EQ.2) IFO=3150+350*(JCUR-1)+10oO*(JPER(2)-1) 1120 1 +3150*(JPER(3)-1) 1121 IF(INEW.EQ.2) IFN=3150+350*(JCUR-1)+1050*(JPER(2)-1) 1122 1 +3150*(JPER(3)-1) 1123 IF(IOLD.EQ.3) IFO=6300 1124 IF(INEW.EQ.3) IFN=6300 1125 IF(IOLD.EQ.4) IFO=6650 1126 IF(INEW.EQ.4) IFN=6650 1127 C 1128 JC=JCUR 1129 J2=JPER(2) 1130 J3=JPER(3) 1131 KNR=NROW(JC,J2,J3) 1132 DO 1000 I = 1,KNR 1133 BARRAY(IFN + I) = BARRAY(IFO + I) 1134 1000 CONTINUE 1135 RETURN 1136 END 1137 C --- —-------------------------------------------------------------- 1138 SUBROUTINE INVERT 1139 C 1140 C COMPUTES INVERSE OF CURRENI BASIS 'Y LU DECOMPOSIT!rJNr 1141 C SUBROUTINE ADAPTED FROM LINEAR PROGRAMMING CODE LPMr 1, \RITIEN 1142 C BY J.A. TOMLIN (OPERATIONS RESEARCH, STANFORD UNIVFPISTIY) 1143 C 1144 IMPLICIT REAL*4 (A,C,E-H.O,P,R-W,Z), RFAl'8 (B,D,X,Y). 1145 1 INTEGER*4 (I-N,Q) 1146 INTEGER JH,KINBAS,LA,LE,IA,IE.NODE 1147 DOUBLE PRECISION E(3000) 1148 REAL A(3000,3,3,1) 1149 C 1150 COMMON/BLOCK/ ZTOLZE,ZTOLPV,ZICOST,ZTOLSM,NEGINF,NEMA/,NRMAX, 1151 1 NTMAX,QBL,QA,QI,QF,QN,QB,QC,QE,QH,QL,QO,QR,QM,QG,QS,QP 1152 COMMON DE,DP,B(350,3,3,1),X(350,3,3,1),Y(350),YTEMP(602),Y'EMPI(6 1153 1 22),XLB(602,3,3,1),XUB(602,3,3,1),XKS(350,3,3,1),YPI('n),3,3,1) 1154 1,A,E,MSTAT,IOBJ,IROWP,ITCNT, 1155 2 INVFRQ,ITRFRQ,JCOLP,NROW(3,3,1),NCOL(3,3,1),NELEM,NF-IM(g.3,1 1156 2 ),NETA, 1157 3 NLELEM,NLETA,NUELEM,NUETA,JH(350,3,3,1),KINBAS(602,3.3,1),LA( 1158 3 602,3,3,1), 1159 4 LE(1002),IA(3000,3,3,1),IE(3000), 1160 5 ATMP(3000),ABN(600,3,3,1),IBN(600,3,3,1),LBN(602,3,n.1),

A2. Listing of input data for test problem SCAGR7.S2 24

Listing of SCAGR7.S2 at 14:49:19 on JUN 10, 1984 for CCid=K86B Page 1 1 2 3 4 5 6 7 8 9 10 1 1 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 1 1 501000 2 1 1.000 ROWS N FOB00001 E ROW00001 E ROW00002 E ROW00003 E ROW00004 E ROW00005 L ROW00006 E ROW00007 L ROW00008 G ROWOOO09 E ROW00010 E ROW00011 E ROW00012 E ROW00013 E ROW00014 E ROW00015 COLUMNS COL00001 COL00002 COL00002 COL00002 COL00003 COL00003 COL00003 COL00004 COL00005 COLOO05 COL00005 COL00006 COL00006 COL00006 COL00007 COL00007 COL00008 COL00008 COLOO09 COLOO09 COL0010 COL00010 COL00011 COL00012 COL00013 COL00014 COL00015 COL00016 COL00017 COL00018 COL00019 COL00020 RHS RHS RHS RHS FOB00001 FOBOO ROW00003 ROW00015 FOB00001 ROW00004 ROW00015 FOBOO01 FOB00001 ROW00005 ROW00013 FOB00001 ROW00005 ROW00013 FOB00001 ROW00013 FOB00001 ROWOO006 FOB00001 ROWOOO09 FOB00001 ROWOOO09 FOB00001 FOB00001 ROW00007 FOB00001 FOB0000 FOB00001 FOB0000 FOB00001 FOB00001 FOB00001 ROW00001 ROW00005 ROW00007 -35.000000 54.900000 1.000000 -.500000 54.900000 1.000000 -.500000 -35.000000 23.500000 -1.700000 -.245000 23.500000 -1.700000 -.245000 8.720000.200000 9.720000 1.000000 6.740000 1.000000 6.840000 1.000000 15.000000 22.500000 1.000000 -500.000000 18.700000 -258.300000 -662.000000 3.000000.390000.470000 158.000000 3092.960000 6900.000000 ROW00001 ROW00001 ROW00005 ROW00002 ROW00O05 ROW00002 ROW00003 ROW00010 ROW00015 ROW00004 ROW00011 ROW00015 ROW00007 ROW00005 ROW00007 ROW00007 ROW00014 ROW00007 ROW00015 ROW00005 ROW00015 ROW00008 ROWOO10 ROW00010 ROW00011 ROW00012 ROW00013 ROW00014 ROW00015 ROW00002 ROW00006 ROW00008 1.000000 1.000000 -.400000 1.000000 -.400000 1.000000 -1.000000 1.000000 -1.400000 -1.000000 1.000000 -1.400000 1.000000 1.500000 1.000000 1.000000 1.200000 1.000000 1.000000 1.000000 1.000000 1.000000 -1.000000 -1.000000 -1.000000 -1.000000 -1.000000 -1.000000 -1.000000 158.000000 2566.670000 1600.000000 12000050 12000060 12000070 12000080 12000090 12000100 12000110 12000120 12000130 12000140 12000150 12000160 12000170 12000180 12000190 12000200 12000210 12001360 12001370 12001380 12001390 12001400 12001410 12001420 12001430 12001440 12001450 12001460 12001470 12001480 12001490 12001500 12001510 12001520 12001530 12001540 12001550 12001560 12001570 12001580 12001590 12001600 12001610 12001620 12001640 12001670 12001690 12001740 12001760 12001780 12004290 12004300 12004310

Listing of SCAGR7.S2 at 14:49:19 on JUN 10, 1984 for CCid=K86B Page 2 59 RHS ROW00009 800.000000 ROW00012 -375.200000 12004320 60 RHS ROW00013 -92.120000 ROW00014 -684.000000 12004330 61 RHS ROW00015 -150.0 62 ENDATA 63 64 65 66 99999999999999999999999999999999999999999999999999999999999999999999999999999 67 999999999999999999999999999999999999999999999999999999999999999999999999999999 68 9999999999999999999999999999999999999999999999999999999999999999999999999999999 69 ROWS 70 N FOB00001 71 E ROWO0016 12000220 72 E ROW00017 12000230 73 E ROW00018 12000240 74 E ROW00019 12000250 75 L ROW00020 12000260 76 L ROW00021 12000270 77 L ROW00022 12000280 78 E ROW00023 12000290 79 L ROW00024 12000300 80 E ROW00025 12000310 81 L ROW00026 12000320 82 G ROW00027 12000330 83 E ROW00028 12000340 84 E ROW00029 12000350 85 E ROW00030 12000360 86 E ROW00031 12000370 87 E ROW00032 12000380 88 E ROW00033 12000390 89 L ROW00034 12000400 90 E ROW00035 12000410 91 E ROW00036 12000420 92 E ROW00037 12000430 93 E ROW00038 12000440 94 L ROW00039 12000450 95 L ROW00040 12000460 96 L ROW00041 12000470 97 E ROW00042 12000480 98 L ROW00043 12000490 99 E ROW00044 12000500 100 L ROW00045 12000510 101 G ROW00046 12000520 102 E ROWOO047 12000530 103 E ROW00048 12000540 104 E ROW00049 12000550 105 E ROW00050 12000560 106 E ROWOO051 12000570 107 E ROW00052 12000580 108 L ROW00053 12000590 109 COLUMNS 12001360 110 COL00001 ROW00016 0.0 111 COLOO00002 ROW00017 0.0 112 COLOO00003 ROW00018 0.0 113 COLOO00004 ROW00019 0.0 114 COLOO00005 ROW00020 0.0 115 COL00006 ROW00020 0.0 116 COLOO007 ROW00017 0.00

Listing of SCAGR7.S2 at 14:49:19 on JUN 10, 1984 for CCid=K86B Page 3 117 COL00008 ROW00018 0.0 118 COL00009 ROW00019 0.0 119 COL00010 ROW00020 0.0 120 COL00011 ROW00020 0.0 121 COL00012 ROW00018 0.0 122 COL00013 ROW00021 0.0 123 COL00014 ROW00023 -.480000 ROW00031 -.490000 12001630 124 COL00015 ROW00023 -.480000 ROW00030 1.000000 12001650 125 COL00015 ROW00031 -.490000 12001660 126 COL00016 ROW00023 -.480000 ROW00031 -.490000 12001680 127 COL00017 ROW00016 -.500000 ROW00017 -.500000 12001700 128 COL00017 ROW00023 -9.320000 ROW00030.700000 12001710 129 COL00017 ROW00031 -.560000 ROW00032 -1.000000 12001720 130 COL00017 ROW00034 1.000000 12001730 131 COL00018 ROW00020 1.000000 ROW00031 1.000000 12001750 132 COL00019 ROW00021 1.000000 ROW00032 1.000000 12001770 133 COL00020 ROW00022 1.000000 ROW00033 1.000000 12001790 134 ENDATA 135 1.000 136 ROWS 137 N FOB00001 138 E ROW00016 12000220 139 E ROW00017 12000230 140 E ROW00018 12000240 141 E ROWOO0 19 12000250 142 L ROW00020 12000260 143 L ROW00021 12000270 144 L ROW00022 12000280 145 E' ROW00023 12000290 146 L ROW00024 12000300 147 E ROW00025 12000310 148 L ROW00026 12000320 149 G ROW00027 12000330 150 E ROW00028 12000340 151 E ROW00029 12000350 152 E ROW00030 12000360 153 E ROW00031 12000370 154 E ROW00032 12000380 155 E ROW00033 12000390 156 L ROW00034 12000400 157 E ROW00035 12000410 158 E ROW00036 12000420 159 E ROW00037 12000430 160 E ROW00038 12000440 161 L ROW00039 12000450 162 L ROW00040 12000460 163 L ROW00041 12000470 164 E ROW00042 12000480 165 L ROW00043 12000490 166 E ROW00044 12000500 167 L ROW00045 12000510 168 G ROW00046 12000520 169 E ROW00047 12000530 170 E ROW00048 12000540 171 E ROW00049 12000550 172 E ROW00050 12000560 173 E ROW00051 12000570 174 E ROW00052 12000580

Listing of SCAGR7.S2 at 14:49:19 on JUN 10, 1984 for CCid=K86B Page 4 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 L ROW00053 COLUMNS COL00021 COL00022 COL00022 COL00022 COL00023 COL00023 COL00023 COL00024 COL00025 COL00025 COL00025 COL00026 COL00026 COL00026 COL00027 COL00027 COL00028 COL00028 COL00029 COL00029 COL00030 COL00030 COL00031 COL00032 COL00033 COL00034 COL00034 COL00035 COL00035 COL00035 COL00036 COL00036 COL00037 COL00037 COL00037 COL00037 COL00037 COL00038 COL00038 COL00039 COL00039 COL00040 COLOO040 COL00041 COL00042 COL00042 COL00042 COL00043 COL00043 COL00043 COL00044 COL00045 COL00045 COL00045 COL00046 COL00046 FOB00001 FOB00001 ROW00018 ROW00033 FOB00001 ROW00019 ROW00033 FOBOOO01 FOB00001 ROW00023 ROW00031 FOB00001 ROW00023 ROW00031 FOB00001 ROW00031 FOB00O01 ROW00024 FOB00001 ROW00027 FOB00001 ROW00027 FOB00001 FOB00001 ROW00025 FOB00001 ROW00042 FOB00001 ROW00042 ROW00050 FOB00001 ROW00042 FOB00001 ROW00034 ROW00036 ROW00049 ROW00051 FOB00001 ROW00039 FOB00001 ROW00040 FOB00001 ROW00041 FOB0000 FOB00001 ROW00037 ROW00052 FOB00001 ROW00038 ROW00052 FOB00001 FOB00001 ROW00042 ROW00050 FOB0000 ROW00042 -35.000000 54.900000 1.000000 -.500000 54.900000 1.000000 -.500000 -35.000000 23.500000 -1.700000 -.245000 23.500000 -1.700000 -.245000 8.720000.200000 9.720000 1.000000 6.740000 1.000000 6.840000 1.000000 15.000000 22.500000 1.000000 -500.000000 -.480000 18.700000 -.480000 -.490000 -258.300000 -.480000 -662.000000 -1. 000000 -.500000.700000 -1.000000 3.000000 1.000000.390000 1.000000.470000 1.000000 -35.000000 54.900000 1.000000 -.500000 54.900000 1.000000 -.500000 -35.000000 23.500000 -1.700000 -.245000 23.500000 -1.700000 ROW00016 ROW00016 ROW00023 ROW00017 ROW00023 ROW00017 ROW00018 ROW00028 ROW00033 ROW00019 ROW00029 ROW00033 ROW00025 ROW00023 ROW00025 ROW00025 ROW00032 ROW00025 ROW00033 ROW00023 ROW00033 ROW00026 ROW00028 ROW00050 ROW00028 ROW00049 ROW00029 ROW00050 ROW00030 ROW00035 ROW00042 ROW00050 ROW00053 ROW00031 ROW00050 ROW00032 ROW00051 ROW00033 ROW00052 ROW00035 ROW00035 ROW00042 ROW00036 ROW00042 ROW00036 ROW00037 ROW00047 ROW00052 ROW00038 ROW00048 1.000000 1.000000 -.400000 1.000000 -.400000 1.000000 -1.000000 1.000000 -1.400000 -1.000000 1.000000 -1.400000 1.000000 1.500000 1.000000 1.000000 1.200000 1.000000 1.000000 1.000000 1.000000 1.000000 -1.000000 -.490000 -1. 000000 1.000000 -1.000000 -.490000 -1.000000 -.500000 -9.320000 -.560000 1.000000 -1.000000 1.000000 -1.000000 1.000000 -1.000000 1.000000 1.000000 1.000000 -.400000 1.000000 -.400000 1.000000 -1.000000 1.000000 -1.400000 -1.000000 1.000000 12000590 12001800 12001810 12001820 12001830 12001840 12001850 12001860 12001870 12001880 12001890 12001900 12001910 12001920 12001930 12001940 12001950 12001960 12001970 12001980 12001990 12002000 12002010 12002020 12002030 12002040 12002050 12002060 12002070 12002080 12002090 12002100 12002110 12002120 12002130 12002140 12002150 12002160 12002170 12002180 12002190 12002200 12002210 12002220 12002230 12002240 12002250 12002260 12002270 12002280 12002290 12002300 12002310 12002320 12002330 12002340 12002350

Listing of SCAGR7.S2 at 14:49:19 on JUN 10, 1984 for CCid=K86B Page 5 233 COL00046 ROW00050 -.245000 ROW00052 -1.400000 12002360 234 COL00047 FOB00001 8.720000 ROW00044 1.000000 12002370 235 COL00047 ROW00050.200000 12002380 236 COL00048 FOB00001 9.720000 ROW00042 1.500000 12002390 237 COL00048 ROW00043 1.000000 ROW00044 1 000000 12002400 238 COL00049 FOB00001 6.740000 ROW00044 1.000000 12002410 239 COL00049 ROW00046 1.000000 ROW00051 1.200000 12002420 240 COL00050 FOB00001 6.840000 ROW00044 1.000000 12002430 241 COL00050 ROW00046 1.000000 ROW00052 1.000000 12002440 242 COL00051 FOB00001 15.000000 ROW00042 1.000000 12002450 243 COL00052 FOB00001 22.500000 ROW00052 1.000000 12002460 244 COL00053 ROW00044 1.000000 ROW00045 1.000000 12002470 245 COL00054 FOB00001 -500.000000 ROW00047 -1.000000 12002480 246 COL00055 FOB00001 18.700000 ROW00047 -1.000000 12002500 247 COL00056 FOB00001 -258.300000 ROW00048 -1.000000 12002530 248 COL00057 FOB00001 -662.000000 ROW00049 — 1.000000 12002550 249 COL00057 ROW00053 -1.0 250 COL00058 FOB00001 3.00 251 COL00058 ROW00050 -1.00 252 COL00059 FOB00001.39 253 COL00059 ROW00051 -1.00 254 COL00060 FOB00001.47 255 COL00060 ROW00052 -1.00 256 RHS 12004280 257 RHS ROW00020 1800.00 258 RHS ROW00021 2400.000000 ROW00022 1200.000000 12004350 259 RHS ROW00024 2566.670000 ROW00025 6900.000000 12004360 260 RHS ROW00026 1600.000000 ROW00027 800.000000 12004370 261 RHS ROW00039 1800.000000 ROW00040 2400.000000 12004380 262 RHS ROW00041 1200.000000 ROW00043 2566.670000 12004390 263 RHS ROW00044 6900.000000 ROW00045 1600.000000 12004400 264 RHS ROW00046 800.0 265 ENDATA 12004560 266 267 268 269 270 271 999999999999999999999999999999999999999999999999999999999999999999999999999999999 272 9999999999999999999999999999999999999999999999999999999999999999999999999999999999 273 999999999999999999999999999999999999999999999999999999999999999999999999999999999 274 99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 275 9999999999999999999999999999999999999999999999999999999999999999999999999999 276 STOCH 277 ROW00020 VAL 1600.00 PROB 0.5 278 ROW00020 VAL 1800.00 PROB 0.5 280 ROW00045 VAL 1600.0 PROB 0.5 281 ROW00045 VAL 1800.0 PROB 0.5 282 ROW00046 VAL 600.0 PROB 0.5 283 ROW00046 VAL 800.0 PROB 0.5 284 ENDATA

A3. Listing of solution output for SCAGR7.S2 25

Listing of 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42,13 44 45 46 47 48 -T3 at 15:43:17 on JUN 10, 1984 for CCid=K86R Page 1 PROBLEM DENSITY OF DENSITY/OF 1 CONSTRAINT MATRIX IS 0.191 CONSTRAINT MATRIX IS 0.092 STOCHASTIC VARIABLES ROW ROW00020 ROW00020 ROW00045 ROW00045 ROW00046 ROW00046 CHECK THE VALUE PROB 1600.00 0.500000 1800.00 0.500000 1600.00 0.500000 1800.00 0.500000 600.00 0.500000 800.00 0.500000 A MATRIX OF NODE 1, 1, 1 1.00 1.00 23.50 9.72 1.00 0.47 1.00 -35.00 -1.00 1.50 1.00 -1.00 1.00 1.00 1.00 54.90 -1.70 1.00 1.00 1.00 1.00-500. 00 1.00 1.00 -0.24 6.74 -1.00 1.00 1.00 -1.40 1.00 18.70 1.00 1.00 -0.40 -0.50 23.50 -1.00 1.00 1.20 1.00-258.30 1 00 -1.00 54 90 1.00 -1 70 1.00 6 84 1.00 -1 00 -G2.00 1.00 1.00 -0.24 1.00 -1.00 1.00 -0.40 -1.40 1.00 3.00 1.00 -0.50 8.72 15.00 -1.00 1.00 -35.00 1.00 1.00 0.39 1.00 1.00 0.20 22.50 -1.00 IA LA 1 1 I 1 16 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 1 2 4 6 16 1 3 5 G 1 1 3 4 6 11 14 16 1 5 6 12 14 1G 1 8 14 6 7 8 1 8 10 15 1 8 10 1G 1 6 1 8 9 1 11 1 1 1 12 1 1 13 1 11 1 15 16 1 2 3 4 5 6 16 17 19 24 29 31 66 68 70 72 74 76 7 8 9 10 11 12 13 14 15 37 43 4() 50 54 5p C() 62 64 77 NROW= KINBAS 1 16 0 JH 1 16 16 NCOL= 36 NELM= 2 3 4 5 6 0 0 0 0 0 0 0 0 0 0 7 8 9 10 11 12 I 14 1!5 0 0 ( 0 0 r: O ( ) 2 3 4 5 6 7 8 q 10 11 12 1'3 14 15 49 X VALUES 50 0.0 0.0 0.0 0.0 51 0.0 52 XKSI"S 53 0.0 158.()0 158.00 0.0 54 -150.00 55 0.0 158.00 158.00 0.0 56 -150.00 0.0 0.0 0.0 0.0 0 0.0 0.0? 0.0 0.0 0.0 0.0 0.0 2092.9625(;G.676900.01600 0 0)0 r0)0.00 0.0 0.0 3092.9625G6 G76900.0016000 P0 RO.OO 0.0 0.0 -375.20 -92.12-684.00 0.0 -375.20 -92.12-684.00 57 PROB OF 58 ABN MATRIX 1 IS1.00000

Listing of -T3 at 15:43:17 on JUN 10, 1984 for CCid=K86B Page 59 0.0 0.0 0.0 0.0 0.0 0.0 0.0 60 0.0 0.0 0.0 0.0 0.0 0.0 0.0 61 -0.49 -0.48 1.00 -0.49 -0.48 -0.49 -0.50 62 1.00 1.00 1.00 1.00 0.0 0.0 0.0 63 0.0 0.0 0.0 0.0 0.0 0.0 0.0 64 0.0 0.0 65 IBN 66 1 2 3 4 5 6 7 8 9 10 67 16 2 3 4 5 6 6 3 4 5 68 17 9 16 17 9 17 2 3 9 16 69 7 18 8 19 0 0 0 0 0 0 70 0 0 0 0 0 0 0 0 0 0 71 0 0 72 LBN 73 1 2 3 4 5 6 7 8 9 10 74 16 17 18 19 20 21 22 23 24 25 75 32 35 37 44 46 48 76 CHECK THE A MATRIX OF NODE 2, 1, 1 77 78 79 1.00 1.00 1.00 1.00 1.00 1.00 1.00 80 1.00 1.00 1.00 1.00 1.00 1.00 1.00 81 1.00 -1.00 1.00 1.00 1.00 1.00 1.00 82 -0.50 54.90 1.00 1.00 -0.40 -0.50 -35.00 83 -1.00 -1.70 1.00 -0.24 -1.40 8.72 1.00 84 1.20 6.84 1.00 1.00 1.00 15.00 1.00 85 18.70 -1.00 -0.48 1.00 -0.49-258.30 -1.00 86 0.70 -0.56 -1.00 1.00 3.00 -1.00 1.00 87 1.00 -35.00 1.00 54.90 1.00 1.00 -0.40 88 23.50 -1.00 -1.70 1.00 -0.24 -1.40 23.50 89 9.72 1.50 1.00 1.00 6.74 1.00 1.00 90 1.00 1.00 1.00-500.00 -1.00 18.70 -1.00-: 91 -1.00 0.47 -1.00 2 0.0 i0. 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -0.48 -0.50 -9.32 0.70 -0.56 -1.00 1.00 1.00 1.00 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0. 0.0 0.0 0.0 0.0 0.0 0.0 11 12 13 14 15 6 G 4 7 9 17 18 20 6 17 0 0 0 0 0 0 0 0 0 0 11 12 13 14 15 26 27 28 29 30 1.00 1.00 1.00 1.00 1.00 -1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 I 00 -35.00 1.00 54.90 1.00 1.00 -0.40 1.00 23.50 -1.00 -1.70 1.00 -0.24 -1.40 23.50 0.20 9.72 1.50 1.00 1.00 6.74 1.00 1.00 22.50 1.00 1.00 1.00-500.00 -1.00 -0.48 -0.49 -0.48 -0.49-662.00 -1.00 -1.00 -0.50 -0.50 -9.32 1.00 0.39 -1.00 1.00 1.00 0.47 -1.00 1.00 -0.50 5-1 90 1.00 1.00 -0.40 -0.50 -35.00 1.00 -1.00 -1.70 1.00 -0.24 -1.40 8.72 1.00 0.20 1.20 6.84 1.00 1.00 1.00 15.00 1.00 22.50 258.30 -1.00-662.00 -1.00 -1.00 3.00 -1.00 0.39 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 112 113 114 115 116 IA 1 2 3 4 5 6 7 8 16 17 18 19 20 21 22 23 31 32 33 34 35 36 37 38 19 1 3 5 9 19 1 3 5 9 15 17 19 1 11 17 18 1 11 13 19 1 9 1 1 14 28 35 36 1 15 28 35 36 37 39 1 17 25 36 38 1 21 1 21 23 28 38 1 23 28 33 36 38 1 24 1 28 29 30 1 30 32 37 38 30 31 1 33 1 33 1 37 1 38 9 10 11 12 13 14 15 24 25 26 27 28 29 30 39 1 2 1 2 4 9 1 4 9 14 17 19 1 1 9 10 11 1 11 13 19 11 12 1 14 28 36 36 1 16 20 21 22 28 1 18 26 37 1 19 27 1 22 24 28 38 1 22 28 34 36 38 1 30 36 1 30 32 38 1 28 1 3.1 1 35 39 1 36 1 LA 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 21 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 42 47 52 54 60 66 69 73 77 81 83 85 87 91 96 100 110 111 118 122 124 129 134 136 142 148 151 155 159 163 165 167 169 171 173 175 178 180 182

Listing of -T3 at 15:43:17 on JUN 10, 1984 for CCid=K86R Page 3 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 NROW= 39 NCOL= 79 NELM= 183 KINBAS 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 0 0 (3 r 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ) 0 0 (' 0 O 0 0 0 0 JH 1 2 3 4 16 17 18 19 31 32 33 34 X VALUES 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 XKSI "S 0. 0.0 0 0.0 0.0 0.0 0.0 1600.00 800.00 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1600.00 800.00 0.0 PROB OF 2 1 ABN MATRIX 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0. 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 IBN 5 6 7 8 9 10 11 12 1l 14 15 20 21 22 23 24 25 26 27 2R 29 30 35 36 37 38 39 0.0 0.0 0.0 OC) 0.0 (0.) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ) 0. 0. 0.0 0.0 0.0 0.0 0.0 0.0 0.00 (. 0 0.0 ( 0.0 0.0 0.0 0.0 0.0 1800.002400.001200.00 00 25;66.67G900.001600.00 800.00 0.0 0.0 0.0 0.0 0.0 0.0 0 ( 1R00.002400.001200.00 0.0 2566.676900.00 0.0 0.0 0.0 0.0 C0 0 0.0 1800.002400.001200.00 0.0 2566.676900.001600.00 800.00 0.0 "0.0 0.0 0.0 0.0 0.0 1 IS1.00000 0.0 0.0 0.0 0.0 0 0 0.0 0.0 l00.002,100.001200.00 0.0 2566.676900.00 ). 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ~;. 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0.0.0 0.0 0 O 0.0 0.0 0 0 0.0 0 0 0. 0 (.) 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.( 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 00 O 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 LBN 0 0 0 0 0 O O O ) O O O 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 C) O 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 O O O O O 0 O O 0 O O O 0 0 0 0 0 0 0 0 r 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 O0 0 0 0 O0 0 0 0 0 0 o 0 0 0 0 0.! o O 0 f) 0 0 0 0

Listing of -T3 at 15:43:17 on JUN 10, 1984 for CCid=K86B Page 4 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 0 0 0 ITNS 1 2 3 4 5 6 7 8 9 10 1 1 12 12 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 RRES 0.91E-12 0.91E-12 0.91E-12 0.91E-12 0.18E-11 0.18E-11 0.18E-1 0.27E-1 1 0.24E-1 0.56E-10 0.57E-10 0.57E-10 PIV 0.15E+01 -0.10E+01 0.10E+01 -0.19E+01 0.53E+00 -0.10E+01 0.10E+01 0.10E+01 0.10E+01 -0.10E+01 -0.10E+01 -0.10E+01 IN OUT 24 6 22 5 19 12 32 16 26 3 21 4 18 11 31 2 36 8 33 13 34 14 35 15 OBJ -0.20E+05 -0.20E+05 -0.20E+O5r -0.69E+041 0.52E+04 0.52E+04 0.52E+0O -0.14E+05 -0.43E+05 0.21E+06 0.21E+06 0.20E+OG CMIN -0.25E+01 -0.28E+01 -0.45E+01 -0.45E+01 -0.34E+01 -0.42E+01 — 0.64E+01 -0.64E+01 -0.20E+01 -0.10E+01 -0.10E+01 -0.10E+01 CM AX -0. 10E+ 11 -0.10Er1 I1 -0. 0E+l 1 -0. 10E)+ I 1 -0. IOE- 11 -0. 10E 1 -0. IE4-11 -0. 1OE' II -0. 10E+ 11 -0. tOE-1 1 -0. 1OE 1 1 -0. IO)E+ I i THET 0.21E+04 0.0 0.0 0.79E+402 0. 15E 03 0.0 0.0 0. 16E403 0.39E4-04 0.38E+03 0.15E+02 0.68E-403 NINF 9 8 8 8 7 6 6 6 5 3 2 1 NOPT 14 14 13 13 11 10 9 10 7 3 2 1 [TERATIONS SO FAR WE HAVE MADE 1 PASSES WE ARE AT PROBLEM 1, X VALUES 204891.07 158.00 43' 1600.00 3595.63 1E 1, 1 95.63 58.00 JH 1 31 26 21 22 24 32 KINBAS 1 0 0 -1 -1 0 -1 0 11 12 0 4 2 16 13 14 15 8 BS CURRENTLY 0.0 158.00 158.00 1600.00 800.00 0.0 CURRENT Y 158.00 158.00 2504.37 62.30 3945.23 158.00 375.20 14.70 684.00 158.00 7 36 9 10 18 19 33 34 35 7 0 9 10 0 0 -I -1 -1 5 0 6 0 3 0 0 0 0 1.00 0.0 CURRENT PI 0.0 0.0 STATUS AT AT BEG OF 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0..0 0.0 3092.96 2566.67 6900.00 -275.20 -92.12 -684.00 -150.00 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.00 0.0 0.0 NDCOM=F NDCOM, JCUR= 0.0 0.0 AT EN ITNS 13 14 15 16 17 18 19 20 21 22 23 24 25 26 JD R 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. OF ND, JCUR= MRES PIV 91E-12 0.15E+01 91E-12 -0.10E+01 91E-12 0.10E+01 91E-12 -0.48E+00 91E-12 -0.15E+01 36E-11 0.29E+01 36E-11 -0.50E+00 36E-11 -0.10E+01 36E-11 0.10E401 36E-11 0.10E+01 36E-11 0.10E+01 36E-11 0.10E+01 36E-11 0.14E+01 36E-11 -0.14E+01 1 2 IN 47 45 42 55 67 57 56 61 62 64 65 74 75 76 OUT 9 5 15 28 36 10 21 22 23 24 33 34 35 37 OBJ -0.24E+05 -0.24E+05 -0.24E+05 -0.24E+05 -0.24E+05 -0.81E+04 -0.81E+04 -0.81E+04 -0.81E+0O1 -0.81E+04 -0.81E+04 -0.81E+04 -0.81E+04 -0.81E+04 CMIN -0.25E+01 — 0.23E+01 -0.41E+01 -0.41E+01 -0.14E+02 -0.79E+01 -0.77E+01 -0.16E+02 -0.16E+02 -0.17E+02 — 0.18E+02 -0.18E+02 -0.18E+02 -0.13E+02 CM AX -0. 1OE- I -0. O1El+1 -0. 1E+ 11 -0. IOE+ 1 -0. 10E+11 -0. OE+ l -0. 10E4-+ -0.10E l11 -O0. 0E f- i 1 -0. 10E 1 I -0. 1 OE + 1 -O. 10F+1 1 THE1 0.24F+04 0.0 0.0 0.0 0.0 0.47E402 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 NINF 13 12 12 12 12 12 12 12 12 12 12 12 12 12 NOPT 18 18 17 17 16 18 19 19 18 17 16 17 16 15

Listing of -T3 at 15:43:17 on JUN 10, 1984 for CCid=K86B Page 5 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 27 0.36E-11 28 0.36E-11 29 0.36E-11 30 0.36E-11 31 0.36E-11 32 0.13E-09 33 0.15E-09 34 0.16E-09 35 0.25E-09 36 0.10E-09 37 0.89E-10 38 0.64E-10 39 0.52E-10 40 0.51E-10 41 0.17E-09 42 0.27E-09 43 0.19E-09 44 0.13E-09 45 0.12E-09 46 0.24E-09 47 0.22E-09 48 0.17E-09 49 0.24E-09 -0.23E+01 0.50E+00 0.60E+00 -0. OE+01 -0.10E+01 0.10E+01 0.10E+02 0.98E+00 0.10E+01 0.83E+00 0.20E+00 0.50E+01 -0.10E+01 0.20E+00 0.10E+01 0.10E+01 0.35E+01 0.11E+00 0. IOE+01 0.46E+01 0.28E+00 0.10E+01 -0.11E+00 68 38 -0.81E+04 63 23 -0.81E+04 60 39 -0.81E+04 54 14 -0.81E+04 44 4 -0.81E+04 41 5 0.38E+06 50 29 0.49E+06 53 2 0.51E+0O 45 3 0.52E+06 78 30 0.50E+0( 46 17 0.46E+06 77 11 0.46E+06 58 18 0.46E+06 48 11 0.46E+OG 43 3 0.45E+06 40 2 0.43E+06 53 13 0.45E+06 59 20 0.39E+06 79 27 0.38E+06 20 22 0.44E+06 66 2 0.45E+06 45 3 0.46E+06 70 16 0.49E+06 -0.13F+02 -0.93E+01 -0.19E+02 — 0.31E+02 -0.30E+02 -0.31E+02 -0.16E+02 -0.20E+01 -0.21E+01 -0.17E+01 -0.12E+01 -0.50E+01 -0.10E+01 -0.10E+01 -0.17E+01 -0.17E+01 -0.18E+01 -0.72E+00 -0.10E+01 -0.25E+01 -0.52E+00 -0.18E+01 -0.11E+00 CMIN -0.20E+01 -0.52E+03 -0.93E+01 -0.20E+01 -0.21E+01 -0.51E-01 -0. I)E+ 11 -0. 10E +- 1 -0. 10E 1 -0.10E+ I1 -0. 10E + 1 -O.1OE+11 -0.10E+11 -O.lOEsil -0. Ic0E 11 -0.1 OE+11 -0. 10E+-11 -0. Q10E+1i -0. 10E+l1 -0. 10E+'1I -0.1OE-+11 -0. 10E+ 11 -0.l 0E+1 -0.10E+1 1 -0.10E+11 -0.10E+ll1 -0.10E+11 -0.10E+-11 -O. IOE +1 1 CMAX -0.10E+11 -O.lOE+ll -0.10F + I1 -0.10E+ 1 -0. tOE+-1 -0.10EI11 -0.10CE+1I 0.0 0.0 0.0 0.0 0.0 0.9 96E'02 0. 55E+02 0.67E402 0. 19E403 0. 48E404 0.42E+04 0. 20E+02 0. 31E +03 0.10E+03 0.19E+03 0.66E+02 0.56E+02 0.25E+03 0.95E+03 0.29E+02 0.37E+02 0.19E+03 0.25E+03 THET 0.36E+04 0. 16E+03 0. 16E+04 0.12E+04 0.79E+03 0.31E+04 12 14 12 16 12 15 12 15 12 15 12 14 12 13 11 16 10 13 9 11 7 9 6 9 5 4 4 4 4 7 4 6 3 6 3 5 3 4 3 4 3 3 3 2 3 1 INFEAS AT PROB 1 MAKING A FEASIBILITY CUT ITNS RRES PIV 50 0.95E-11 0.10E+01 51 0.95E-11 0.10E+01 52 0.95E-11 0.10E+01 53 0.10E-O1 0.20E+01 54 0.16E-10 0.10E+01 55 0.28E-10 0.50E+00 55 ITERATIONS SO FAR WE HAVE MADE 3 PASSES WE ARE AT PROBLEM 1, X VALUES 298780.88 158.00 1! 1600.00 2345.23 1! 1995.63 JH 1 19 20 22 23 17 10 KINBAS 1 0 0 -1 -1 -1 16 0 2 3 11 0 12 13 14 BS CURRENTLY 0.0 158.00 1! 1600.00 800.00 2400.00 CURRENT Y 1.00 419.52 1 7.21 0.0 -5( 0.0 CURRENT PI 1.00 419.52 1 IN OUT 24 10 31 11 30 9 10 17 26 10 17 16 OBJ 0.20E+06 0.28E+06 0.29E+06 0.30E+06 0.30E+06 0.30E+06 NINF 1 0 0 0 0 0 O NOPT 3 5 3 2 1 1 1, 1 58.00 158.00 158.00 2504.37 62.30 450.40 58.00 158.00 375.20 14.70 3498.27 3112.88 25 7 27 30 26 31 33 34 35 36 0 7 0 4 15 0 0 0 17 0 0 - -1 -1 5 0 6 10 8 0 0 9 58.00 0.0 0.0 0.0 0.0 3092.96 2566.67 6900.00 -375.20 -92.12 -G84.00 -150.00 77.82 -474.90 -233.20 30.00 -258.30 -662.00 -1.67 3.00 0.0 0.39 0.0 7.21 0.37 -7.21 77.82 -414.90 -233.20 -1.67

Listing of -T3 at 15:43:17 on JUN 10, 1984 for CCid=K86 Page 6 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 7.21 0.0 0.0 -500.00 -258.30 -G62.00 LOOKING FOR CUTS TO DELETE ITNS RRES PIV IN OUT 56 0.25E-09 0.10E+01 49 13 57 0.30E-09 0.10E+01 62 22 58 0.34E-09 0.10E+01 61 21 59 0.34E-09 0.10E+01 29 29 60 0.35E-09 0.10E+01 40 14 61 0.35E-09 0.37E+01 43 36 62 0.36E-09 0.29E+01 77 9 63 0.35E-09 0.71E+00 10 3 64 0.38E-09 0.20E+00 13 9 65 0.37E-09 0.12E+01 63 19 INFEAS AT PROB 1 1 1 OBJ 0.32E+0' 0.33E+OG 0.31E+OG 0.26EO06 0.22E+06 0.21E+06 0.20E+OG 0.20E+OG 0.20E+06 0.19E+OG CMIN -0. 22E+01 -0. 21E+01 -0.2 1E+01 -0. 15E+01 -0. 19E+01 -0. 19E+01 -0. 26E+01 -0.14E+01 -0.10E+01 -0.12E+01 CMIN -0.24E+01 -0.21E+01 -0.20E+01 3. 0( C 'l A; -0. IOE II -0. 10F I I -0. 101E I -0. 10E -I -0. 10E+ F 1 -0. ICE ' 1 -0. 101-: 1 -0. 10F. 11 -0. 10Ft 1 1 -0. 10E- l -0. 10F 1 1 -0. I('F! 11i 0.39 THE r 0.80E403 0. 13F403 0.1J3E03 0.26F'04 0.11E-03 0.69E+02 0.74E -02 0.24F402 0.4GE —03 0.74E+-02 THE'I 0.20EF04 0.12E404 0.81E+03 0.37 NINF 5 5 5 5 4 4 4 4 4 4 NOPT 8 8 7 6 5 4 5 4 3 6 MAKING A FEASIBILITY CUT ITNS RRES PIV 66 0.35E-10 0.10E+01 67 0.43E-10 0.24E+01 68 0.49E-10 0.10E+01 68 ITERATIONS SO FAR IN OUT OBJ 25 10 0.29E+06 10 18 0.30E+OG 38 10 0.30E+06 NINF NOPT 1 3 0 1 0 1 WE HAVE MADE 5 PASSES WE ARE AT PROBLEM X VALUES 298698.68 158.00 1600.00 805.79 1501.29 1995.63 JH 1, 1, 158.00 158.00 158.00 2504.37 62.30 1539.43 158.00 158.00 375.20 14.70 2531.32 1256.19 24 26 7 27 31 38 32 31 35 36 37 1 20 28 17 KINBAS 1 0 -1 17 9 11 BS CURRENTLY 0.0 1600.00 2400.00 CURRENT Y 1.00 7.31 0.0 CURRENT PI 1.00 7.31 0.0 21 23 10 0 -1 -1 0 7 0 0 0 2 3 0 4 0 12 13 14 15 10 0 18 0 1 -1 -1 5 0 6 P 16 0 0 0.0 3092.96 2966.67 6900.00 -375.20 -92.12 — f684.00 -150.00 158.00 800.00 4800.00 419.85 0.0 0.04 419.85 0.0 0.04 158.00 0.0 0.0 0.0 178.15 -475.16 -233.46 -500.00 -258.30 -S62.03 178.15 -475.16 -233.46 -500.00 -258.30 -662.03 -1.61 3.00 -1.61 3.00 0.0 0.47 0.0 0.47 -7.31 0.47 -7.31 0.47 LOOKING FOR CUTS TO DELETE DELETING ROW ITNS RRES 69 0.26E-09 17 VALUE = PIV IN 0.14E+01 53 0. 150E+04 OUT OBJ CMIN CMAX THET 10 0.26E+0 — 0.18E+02 -0. 10F41 0. 17E402 NINF NOPT 5 8

Listing of -T3 at 15:43:17 on JUN 10, 1984 for CCid=K86R Page 7 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 70 0.23E-09 0.41E+01 71 0.26E-09 0.12E401 72 0.30E-09 0.48E+00 INFEAS AT PROB 1 MAKING A FEASIBILITY CUT ITNS RRES PIV 73 0.56E-10 0.42E+00 74 0.68E-10 0.12E+01 74 ITERATIONS SO FAR 77 24 0.19E+06 -0.12E+02 -0.10E+11 48 26 0.19E+OG -0.10E+01 -0.O1E+11 50 2 0.22E+06 -0.90E+00 -0. OE+11 0.15E+03 0.20E403 0.19E+03 THET 0.37E404 0.13E+04 5 6 3 2 3 1 NINF NOPT 1 2 0 1 IN OUT OBJ 17 8 0.30E+06 27 18 0.30E+06 CMIN -0.50E+00 -0.10E+00 CrIAX -0. IOE+ 11 -0. ICE+1 1 WE HAVE MADE 7 WE ARE AT PROBLEM X VALUES 298677.96 158.( 1600.00 1995.( 1459.43 1336.: PASSES 1, 1, 1 00 63 20 158.00 158.00 158.00 2504.37 62.30 4t7.76 158.00 158.00 375.20 14.70 2287.44 1009.03 24 26 7 17 31 10 32 34 35 36 37 JH 1 20 38 28 KINBAS 1 0 -1 8 9 11 BS CURRENTLY 0.0 1600.00 4800.00 CURRENT Y 1.00 7.31 0.00 CURRENT PI 1.00 7.31 0.00 21 23 27 0 - -1 0 7 0 0 0 2 3 0 4 0 12 13 14 15 16 0 10 0 0 -1 -1 -1 5 0 6 18 17 0 0 0.0 3092.96 2566.67 6900.00 -375.20 -92.12 -684.00 -150.00 158.00 800.00 2400.00 419.85 0.0 0.08 419.85 0.0 0.08 158.00 0.0 0.0 0.0 178.15 -475.16 -233.46 -500.00 -258.30 -661.97 -1.61 3.00 0.0 0.47 0.0 0.47 -7.31 0.47 -7.31 0.47 178.15 -475.16 -233.46 -1.61 -500.00 -258.30 -661.97 3.00 LOOKING FOR CUTS TO DELETE ITNS RRES PIV IN OUT OBJ CMIN CFAX INFEAS AT PROB 1 MAKING A FEASIBILITY CUT ITNS RRES PIV 75 0.20E-10 0.0OE+01 76 0.70E-10 0.1OE+01 76 ITERATIONS SO FAR WE HAVE MADE 9 PASSES WE ARE AT PROBLEM 1, X VALUES 240302.65 158.00 1H 1600.00 1995.63 1 375.20 1430.00,.1 THET NINF NOPT THET NINF NOPT IN 34 33 OUT OBJ CMIN CMAX 11 0.22E+06 -O.10E+01 -0. t10F11 19 0.24E+06 -0.52E+03 -0. 10F+Il 0. 16E —03 0.45E+02 1 1 0 2 1, 58.00 12.56 45.44 158.00 158.00 2504.37 62.30 1365.63 158.00 '75.20 14.70 24100.00 915.23 7 29 32 10 34 35 36 37 38 JH 1 39 KINBAS 21 22 24 25 27 17 28 33

Listing of -T3 at 15:43:17 on JUN 10, 1984 for CCid=K86R Page 8 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 1 0 0 -1 17 0 0 9 19 BS CURRENTLY 0.0 1l 1600.00 8( 4800.00 24( CURRENT Y 1.00 4' 7.31 0.0 CURRENT PI 1.00 41 7.31 0.0 -1 -1 0 7 0 0 0 2 3 0 11 12 13 14 15 1 41 10 0 0 - — 1 - 1 5 0 1 8 8 0 58.00 00.00 00. 00 19.85 0.0 0.08 19.85 0.0 0.08 158.00 0.0 -0.0 178.15 -500.00 518.61 178.15 -500.00 518.61 0.0 0.0 0.0 3092.9 2!566.67 6900.00 -375.20 -92.1? -684.00 -150.00 -475.16 1?3.46 -258.30 -506.39 -475.16 -233.46 -258.30 —;06.39 -1.61 3.0(! -1.61 3.00 0.0 0.47 0.0 0.47 7.31 0.47 -7.31 0.47 LOOKING FOR CUTS TO DELETE DELE ITNS 77 78 79 80 81,82 83 84 85 86 87 VAR CHECI OK - TING ROW 17 VALUE = 0.375E+03 RRES PIV IN OUT OBL 0.24E-09 0.10E+01 40 14 0.C 0.23E-09 0.10E+01 73 33 0.4 0.23E-09 0.11E+01 39 36 0.4 0.26E-09 0.18E+00 66 14 0.4 0.27E-09 0.10E+01 62 22 0.4 0.32E-09 0.10E+01 42 3 0.4 0.34E-09 0.10E+01 67 29 0.E 0.34E-09 0.20E+00 52 17 0.E 0.36E-09 0.10E+01 27 38 0.5 0.37E-09 0.10E+01 69 13 O.E 0.37E-09 0.10E+01 72 32 0.E VAR2 VAR3 PROB OBJ 1 1 1 0.125000 0.555E+06 KING FEAS WITH DCHUZR FEAS J 3 E+06 1E+06 4 1 E+06 44E+06 16E+06 48E+06 53E+06 54E+06 55E+06 55E+06 55E+06 CMIN -0.11E+01 -0.52E+03 -0.50E+03 -0.88E+02 -0.11E+03 -0.10E+03 -0.20E+02 -0.78E+01 CMAX -0.1OE+11 -0. 1E+1 1 -0.10E+11 -0.10E+1 -0. 10E+1 1 -0. OE+11 -0.O1E+11 -0.10 E+11 THET 0.75E+02 0.19E403 0.14E+02 0.34E+03 0. 19E+03 0.19E+03 0.26E+04 0.81E403 0.49E+03 0.23E+02 0.13E+04 NINF 1 0 0 0 0 0 0 0 0 0 NOPT 7 9 7 8 5 4 3 2 3 3 1 -0.78E+01 -0.10E+l! -0.77E+01 -0. O1E+11 -0.72E+01 -0. OE+11 KSIPI 0.551E+05 OBJTO1 0.0 CURR BAS 1 1 2 0.125000 CHECKING FEAS WITI OK - FEAS 1 2 1 CHECKING FEAS WITI OK - FEAS 1 2 2 CHECKING FEAS WITI OK - FEAS 2 1 1 CHECKING FEAS WITI OK - FEAS 2 1 2 CHECKING FEAS WIT OK - FEAS 2 2 1 CHECKING FEAS WITI OK - FEAS 2 2 2 Q(X) = -0.554E+06 THETA= -0.915E+03 H DCHUZR 0.125000 H DCHUZR 0.125000 H DCHUZR 0.125000 H DCHUZR 0.125000 H DCHUZR 0.125000 H DCHUZR 0.125000 0.553E+06 0.537E+05 0.693FA05 0.555E+06 0.551E+05 0.138E-06 0.553E+06 0.537E+05 0.208F'-06 0.555E+06 0.551E+05 0.277E-06 0.553E+06 0.537E+05 0.346E+06 0.555E+06 0.551E+05 0.415F+06 0.553E+06 0.537E+05 0.485E+06 1 1

Listing 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 of -T3 at 15:43:17 on JUN 10, 1984 for CCid=K86F Page 9 MAKING A LOOKAHEAD CUT ITNS RRES PIV 88 0.73E-10 0.10E+01 89 0.58E-10 0.10E+01 90 0.58E-10 0.83E+00 90 ITERATIONS SO FAR WE HAVE MADE 11 PASSES WE ARE AT PROBLEM 1, X VALUES 841177.50 158.00 1E 1600.00 1341.92 4 158.00 450.40 6285E JH IN OUT OBJ CMIN CMAX 18 11 0.83E+06 -0.70E+03 -0.OE+l11 26 16 0.83E+06 -0.75E+01 -0.10E+11 17 10 0.84E+0 -0.63E+01 -0.10E411 TtHET 0. 45E402 0.88E -03 0. 13E+04 NINF NOPT 0 2 0 1 0 1 1, 1 58.00 45.44 i5.98 158.00 158.00 2504.37 62.30 349.60 158.00 375.20 413.83 1103.52 1995.63 7 28 32 17 18 35, 3. 37 38 1 21 26 34 KINBAS 1 0 -1 10 0 9 BS CURRENTLY 0.0 1600.00 2400.00 CURRENT Y 1.00 0.60 -0.00 CURRENT PI 1.00 0.60 -0.00 22 24 25 27 29 40 0 -1 -1 0 7 0 0 0 11 0 0 2 3 0 4 5 0 17 12 13 14 15 0 19 0 0 - -1 - 16 G 8 18 0 158.00 800.00 -0.0 1074.94 -7.55 -0.00 1074.94 -7.55 -0.00 158.00 0.0 54420.09 131.10 -1173.58 1.00 131.10 -1173.58 1.00 0.0 0.0 0.0 3092.96 2566.67 6900.00 -375.20 -92.12 -684.00 -150.00 -1131.62 -187.78 -229.74 -1656.40 -1131.62 -187.78 -229.74 -1;56.40 LOOKING FOR CU ITNS 91 92 93 94 95 96 97 98 99 100 VAR1 RRES 0.27E-09 0.27E-09 0.26E-09 0.25E-09 0.25E-09 0.27E-09 0.31E-09 0.30E-09 0.31E-09 0.32 E -09 VAR2 ITS TO DELETE PIV ] 0.50E+01 0 0.50E+01 0.10E+01 z 0.10E+01 4 0.10E+01 0.10E+01 I 0.10E+01 i 0.20E+00 0.10E+01 ( 0.83E+00: VAR3 PROB 1 0.125000 WITH DCHUZR [N 57 77 40 13 13 39 12 52 69 26 OUT OBJ 31 11 39 3 38 39 3 11 32 12 OBJ 0.63E+06 0.60E+06 0.57E+06 0.55E+G0 0.55E+06 0.58E+06 0.61E+OG 0.6 1E+OG 0.62E+OG 0.62E+06 CMIN -0.50E+O — 0.50E+O -0.38E+0 -0.38E+O -0.30E+O -0.50E+O -0.11E+0 -0.99E+0 -0.77E+O -0.64E+O -6.08 -40.6, -6.08 -40.6( CMAX 1 -0. tOE Il 1 -0. 10E- 11 1 -0. O1r)F I 1 -0. IOF '-I 1 -0. 10E+t 1 3 -0. 'F' 1 3 -0. I(.'F 1 1 -0. 1')E- 1 1 -0. I0F+1 1 1 -0. IOF +1I1 THET 0. 96F 02 0.57E-; 03 0.61E-'02 0 19E-03 0. 16E404 0.61E402 0. 19F 03 0.73E 03 0 60E -03 0.32E403 NINF 4 4 3 3 3 0 0 0 0 0 NOPT 10 10 9 8 7 6 4 3 3 2 0.0 1.17 0.0 1. 17 -0.60 1.31 -0.60 1.31 KSIPI OBJTO1 CURR BAS 1 1 CHECKING FEAS 0.619F+06 0.252E+05 0.0 TRYING TO FIND ENTERING IN DCIlUZC ENT VAR - WILL RETURN TO 1 1 CHECKING FEAS WITH DCHUZR OK - FEAS 1 2 1 0.125000 0.621E+06 CHECKING FEAS WITH DCHUZR TRYING TO FIND ENTERING IN DCHIUZC ENT VAR - WILL RETURN TO 1 2 2 0.266E+05 0.774F'05 2

Listing 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 of -T3 at 15:43:17 on dUN 10, 1984 for CCid=K863 Page 10 CHECKING FEAS WITH DCHUZR OK - FEAS 2 1 1 0.125000 0.619E+06 CHECKING FEAS WITH DCHUZR TRYING TO FIND ENTERING IN DCHUZC ENT VAR - WILL RETURN TO 2 CHECKING FEAS WITH DCHUZR OK - FEAS 2 2 1 0.125000 0.621E+06 CHECKING FEAS WITH DCHUZR TRYING TO FIND ENTERING IN DCHUZC ENT VAR - WILL RETURN TO 2 2 RETURNING TO SOLVE NEXT BATCH 0.252E+05 0.155FE0.( 0.266E+05 0.232E'-06 1 1 2 ITERATING IN ITNS RRES 101 0.33E-09 VAR1 VAR2 DNORML PIV IN -0. 10E+01 68 VAR3 PROB 2 0.125000 OUT OBJ CMIN 19 0.62E+OG 0.0 OBJ KSIPI 0.619E+06 0.252E+05 MXINF THET 0.783E+00 0.78E 00 OBJTOF CURR BAS 0.310E-OG 2 NINF NOPT 1 0 CHECKING FEAS WITH DCHUZR OK - FEAS 1 2 2 0.125000 ( CHECKING FEAS WITH DCHUZR OK - FEAS 2 1 2 0.125000 CHECKING FEAS WITH DCHUZR OK - FEAS 2 2 2 0.125000 Q(X) = -0.620E+06 THETA= -0.629E+06 LOWER BOUND= -0.841E+06 UPPER BOUND= -0.833E+06 MAKING A LOOKAHEAD CUT ITNS RRES PIV IN 102 0.73E-10 0.12E+01 10 103 0.87E-10 0.64E+01 17 103 ITERATIONS SO FAR WE HAVE MADE 13 PASSES WE ARE AT PROBLEM 1, 1, X VALUES 832935.41 158.00 158.00 1600.00 1441.85 158.00 1092.25 45.44 618017.08 0.621E+06 0.266E+05 ).619E+06 0.252E+05 ).621E+06 0.266E+05 0.388F-06 0.465E G6G 0.543F-106 2 2 2 OUT OBJ CMIN CMAX 17 0.83E+06 -0.77E+01 -0.10E+11 20 0.83E+06 -0.63E+01 -0.10E+11 THE r 0. 11E404 0.31E+02 NINF 1 0 NOPT 3 1 1 158.00 158.00 31.23 158.00 2504.37 62.30 903.38 375.20 195.38 2414.21 450.40 JH 1 22 23 25 30 10 18 41 KINBAS 1 0 0 -1 -1 20 18 0 0 0 9 0 BS CURRENTLY 0.0 158.00 1600.00 800.00 2400.00 -0.0 CURRENT Y 1.00 1141.21 26 28 17 7 27 33 29 35 36 37 38 39 -1 0 7 0 0 17 0 0 0 2 3 0 4 5 11 12 13 14 15 0 19 0 -1 -1 -1 p8 10 16 158.00 0.0 54420.09 0.0 0.0 25898.61 0.0 3092.96 2566.67 6900.00 -375.20 -92.12 -684.00 -150.00 169.38 -1195.88 -224.05 -1.05 0.0 -8.14

Listing of -T3 at 15:43:17 on JUN 10, 1984 for CCid=K86B Page 11 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 8.14 -0.00 CURRENT PI 1.00 8.14 -0.00 0.00 -1220.05 0.0 0.02 1141.21 169.38 0.00 -1220.05 0.0 0.02 -248.22 -1723.39 0.98 -1195.88 -224.05 -248.22 -1723.39 0.98 -2.88 1.17 1.30 -8.14 1.30 -1.05 0.0 -2.88 1.17 LOOKING FOR CUTS TO DELETE DELETING ROW 18 VALUE ITNS RRES PIV 104 0.26E-09 0.15E+01 105 0.27E-09 0.41E+01 INFEAS AT PROB 1 MAKING A FEASIBILITY CUT ITNS RRES PIV 106 0.58E-10 0.10E+01 107 0.62E-04 0.12E+01 ITNS RRES PIV 107 ITERATIONS SO FAR WE HAVE MADE 15 PASSES = 0.454E+02 IN OUT OBJ 60 26 0.60E+06 77 21 0.54E+OG 1 1 IN OUT OBJ 40 19 0.83E+06 29 20 0.83E+OG IN OUT OBJ CMIN — 0.19E+01 -0.78E+01 CMIN — 0.12E+01 -0.20E-02 CMIN CFIAX -0. 10 F 1 1 -0. 1()E+ I I CMAX -0.10E+ 1I -0. 10E+11 CMAX THET 0.55E-102 0.38E 202 THET 0. 14E 04 0.14E+04 THET NINF NOPT 2 5 2 4 NINF NOPT 1 2 0 1 NINF NOPT WE ARE AT PROBLEM X VALUES 832935.32 158.00 1600.00 1092.25 45.43 618018.26 JH 1, 1, 158.00 158.00 1430.01 158.00 158.00 462.25 158.00 2504.37 62.30 375.20 195.38 2400.01 903.38 11.85 1 22 40 17 KINBAS 1 0 -1 17 0 0 BS CURRENTLY 0.0 1600.00 2400.00 5 CURRENT Y 1.00 8.15 0.0 CURRENT PI 1.00 8.15 0.0 23 25 26 28 41 29 30 7 27 33 10 35 36 37 38 39 0 -1 -1 0 7 0 0 10 0 0 0 0 0 2 3 0 4 5 9 0 11 12 13 14 15 16 18 0 -1 -1 -1 8 6 19 20 158.00 800.00 4420.09 1141.24 0.0 0.02 1141.24 0.0 0.02 158.00 0.0 25898.61 169.40 -1220.06 0.98 169.40 -1220.06 0.98 0.0 0.0 2400.00 -1195.90 -248.22 0.00 -1195.90 -248.22 0.00 0.0 3092.96 2566.67 6900.00 -375.20 -92.12 -684.00 -150.00 -224.07 -1723.41 -224.07 -1723.41 -1.05 -2.87 -1.05 -2.87 0.0 1.17 0.0 1.17 -8.15 1.31 -8. 15 1.31 LOOKING FOR CUTS TO DELETE DELETING ROW 17 VALUE = 0.454E+02 ITNS RRES PIV IN OUT OBJ INFEAS AT PROB 1 1 1 MAKING A FEASIBILITY CUT CMIN CMAX THET NINF NOPT

Listing of -T3 at 15:43:17 on JUN 10, 1984 for CCid=K86B Page 12 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 ITNS RRES 108 0.40E-01 ITNS RRES 109 0.73E-10 109 ITERATIONS PIV 0.83E+00 PIV 0. 12E+01 SO FAR IN OUT OBJ 19 18 0.83E+OG IN OUT OBJ 29 19 0.83E+OG CMIN -0.10E+01 CMIN — 0.20E-02 CMAX THET NINF NOPT -O. I()F4 11 0. 17E-104 1 2 CrMAX TtHET NINF NOPT -0. I')F + 1 0.14F404 0 1 WE HAVE MADE 17 PASSES WE ARE AT PROBLEM 1, X VALUES 832935.39 158.00 1E 1600.00 1092.25 1E 618018.26 903.38 14' JH 1, 58.00 58.00 30.00 158.00 158.00 0.00 1 22: 40 41 2 KINBAS 1 0 -1 0 0 0 BS CURRENTLY 0.0 1600.00 54420.09 2E CURRENT Y '1.00 8.15 0.02 CURRENT PI 1.00 8.15 0.02 23 25 26 28 7 30 27 29 20 0 -1 -1 0 7 0 0 0 20 0 2 3 9 0 11 12 13 14 3 158.00 2504.37 62.30 462.25 375.20 195.38 2400.00 11.85 33 10 35 36 37 38 39 0 10 0 ) -- I — 1 -1 0 4 5 18 6 19 8 15 16 17 158.00 800.00 5898.61 1141.23 0.0 0.98 1141.23 0.0 0.98 158 0 2400 169 -1220 0 169 -1220 0.00 0.0.0 0.0.00 2400.00.40 -1195.90.06 -248.22.00 0.0.40 -1195.90.06 -248.22.00 0.0 IN OUT OBJ 0.0 3092.96 2566.67 6900.00 -'75.20 -92.1': -684.00 -150.00 -224.07 -1'723.41 -224.07 -1723.41 -1.05 -2.87 -1.05 -2.87 0.0 1.17 0.0 1.17 -8. 15 1.31 -8.15 1.31 LOOKING FOR CUTS TO DELETE ITNS RRES 110 0.29E-09 111 0.29E-09 112 0.29E-09 113 0.34E-09 114 0.35E-09 VAR1 VAR2 1 1 CHECKING FEAS PIV CMIN CM1A X THET NINF NOPT 0.19E+01 ( 0.10E+01 ( 0.33E+00! 0.18E+01 0.15E+00 VAR3 PROB 1 0.125000 WITH DCHUZR 31 32 33 21 59 36 43 21 26 21 OBJ 0.617EI 0.58E+OG -0.36E+03 -0. ICE+ I 0.61E+06 -0.24E+03 -0. 1E+ll 0.61E+OG — 0.63E+02 -0. ICE+ l 0.61E06 -0.97E+02 -0. OE4-11 0.62E+OG -0.15E+02 -0.10E+11 KSIPI OBJTOT -06 0.252E+05 0.0 0.11E4-03 0.10E+03 0.37E4-02 0.4E-102 0.32E+03 CURR BAS 1 0 3 0 4 0 3 0 8 0 3 TRYING TO FIND ENTERING IN DCHUZC ENT VAR - WILL RETURN TO 1 CHECKING FEAS WITH DCHUZR TRYING TO FIND ENTERING IN DCHUZC ENT VAR - WILL RETURN TO 1 CHECKING FEAS WITH DCHUZR TRYING TO FIND ENTERING IN DCFIUZC ENT VAR - WILL RETURN TO 1 CHECKING FEAS WITH DCHUZR OK - FEAS 2 1 1 0.125000 0.61 -CHECKING FEAS WITH DCHUZR TRYING TO FIND ENTERING IN DCHUZC ENT VAR - WILL RETURN TO 2 1 2 2 1 2 7E+06 I 2 0.252E+05 0.772FI-05 2

Listing 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 of -T3 at 15:43:17 on JUN 10, 1984 for CCid=K86R Page 13 CHECKING FEAS WITH DCHUZR TRYING TO FIND ENTERING IN DC-IUZC ENT VAR - WILL RETURN TO 2 2 1 CHECKING FEAS WITH DCHUZR TRYING TO FIND ENTERING IN DCHUZC ENT VAR - WILL RETURN TO 2 2 2 RETURNING TO SOLVE NEXT BATCH ITERATING IN DNORML ITNS RRES PIV IN OUT OBJ CMIN 115 0.35E-09 -0.10E+01 31 13 0.62E+06 0.0 116 0.35E-09 -0.10E+01 68 36 0.62E+OG 0.0 VAR1 VAR2 VAR3 PROB OBJ KSIPI 1 1 2 0.125000 0.617E406 0.252E+05 CHECKING FEAS WITH DCHUZR TRYING TO FIND ENTERING IN DCtIUZC ENT VAR - WILL RETURN TO 1 2 1 CHECKING FEAS WITH DCHUZR OK - FEAS 1 2 2 0.125000 0.617E+06 0.266E+05 CHECKING FEAS WITH DCHUZR OK - FEAS 2 1 2 0.125000 0.617E+06 0.252E+05 CHECKING FEAS WITH DCHUZR TRYING TO FIND ENTERING IN DCHIUZC ENT VAR - WILL RETURN TO 2 2 1 CHECKING FEAS WITH DCHUZR OK - FEAS 2 2 2 0.125000 0.617E+06 0.266E+05 RETURNING TO SOLVE NEXT BATCH ITERATING IN DNORML ITNS RRES PIV IN OUT OBJ CMIN 117 0.36E-09 -0.10E+01 59 36 0.62E+06 0.0 118 0.35E-09 -0.10E+01 13 18 0.62E+06 0.0 VAR1 VAR2 VAR3 PROB OBJ KSIPI 1 2 1 0.125000 0.618E+06 0.266E+05 CHECKING FEAS WITH DCHUZR OK - FEAS 2 2 1 0.125000 0.618E+06 0.266E+05 Q(X) = -0.617E+06 THETA= -0.618E+06 LOWER BOUND= -0.833E+06 MX T NF 0. 53E4-02 O. '78E400C OBUTOT ( 0.154F-106 0.231F-4-06 0.309F (06 0.386F406 MX[NF 0.20E+03 O. 10F+03 OBJTOT ( 0.463E -06 0.540E ()G THET 0.53E4-02 0.78E+00 CURR BAS 2 2 2 2 THET 0.20E+03 0.10E403 CURR BAS 3 NINF NOPT 2 0 1 0 NINF 1 1 NOPT 0 0 3 UPPER BOUND= -0.832E+06 TOTAL SOLUTION TIME = 1658 MILLISECONDS SOLUTION TIME WITHOUT INPUT = 1374 MILLISFCONDS LAST PERIOD SOLUTIONS FOR FIRST NODE AT SCENARIO 1 ROW FOB00001 ROW00016 ROW00017 ROW00018 ROW00019 ROW00020 ROW00021 VALUE 617323.7260 187.6000 187.6000 187.6000 187.6000 1404.6237 0.0000

Listing of -T3 at 15:43:17 on JUN 10, 1984 for CCid=K86F Par>ge 14 755 ROW00022 1188.1548 756 ROW00023 586.4588 757 ROW00024 2566.6700 758 ROW00025 1786.4842 759 ROW00026 1600.0000 760 ROW00027 146.8458 761 ROW00028 187.6000 762 ROW00029 187.600( 763 ROW00030 420.6400 764 ROW00031 95.7972 765 ROW00032 46.5954 766 ROW00033 900.2505 767 ROW00034 45.4400 768 ROW00035 319.2856 769 ROW00036 210.3200 770 ROW00037 210.3200 771 ROW00038 210.3200 772 ROW00039 1704.2028 773 ROW00040 2080.7144 774 ROW00041 1000.7842 775 ROW00042 1133.7995 776 ROW00043 2566.6700 777 ROW00044 2133.3300 778 ROW00045 1600.0000 779 ROW00046 210.3200 780 ROW00047 210.3200 781 ROW00048 210.3200 782 ROW00049 482.0480 783 ROW00050 199.2158 784 ROW00051 1660.0744 785 ROW00052 600.0000 786 ROW00053 61.4080 787 788 789 LAST PERIOD SOLUTIONS FOR FIRST NODE AT SCENARIO 790 791 ROW VALUE 792 FOB00001 616921.6054 793 ROW00016 187.6000 794 ROW00017 187.6000 795 ROW00018 187.6000 796 ROW00019 187.6000 797 ROW00020 1404.6237 798 ROW00021 0.0000 799 ROW00022 1188.1548 800 ROW00023 586.4588 801 ROW00024 2566.6700 802 ROW00025 1933.3300 803 ROW00026 1600.0000 804 ROW00027 53.1542 805 ROW00028 187.6000 806 ROW00029 187.6000 807 ROW00030 420.6400 808 ROW00031 125.1663 809 ROW00032 98.9654 810 ROW00033 701.0346 811 ROW00034 45.4400 812 ROW00035 256.4416

Listing of -T3 at 15:43:17 on JUN 10, 1984 for CCid=K86B Page 15 813 ROW00036 210.3200 814 ROW00037 210.3200 815 ROW00038 210.3200 816 ROW00039 1674.8337 817 ROW00040 2143.5584 818 ROW00041 1200.0000 819 ROW00042 1133.7995 820 ROW00043 2566.6700 821 ROW00044 1986.4842 822 ROW00045 1546.8458 823 ROW00046 210.3200 824 ROW00047 210.3200 825 ROW00048 210.3200 826 ROW00049 482.0480 827 ROW00050 0.7842 828 ROW00051 1723.8594 829 ROW00052 799.2158 830 ROW00053 61.4080 831 832 833 LAST PERIOD SOLUTIONS FOR FIRST NODE AT SCENARIO 1 2 834 835 ROW VALUE 836 FOBO0001 617653.4347 837 ROW00016 187.6000 838 ROW00017 187.6000 839 ROW00018 187.6000 840 ROW00019 187.6000 841 ROW00020 1404.6237 842 ROW00021 0.0000 843 ROW00022 1188.1548 844 ROW00023 586.4588 845 ROW00024 2566.6700 846 ROW00025 1833.0795 847 ROW00026 1600.0000 848 ROW00027 153.4046 849 ROW00028 187.6000 850 ROW00029 187.6000 851 ROW00030 420.6400 852 ROW00031 105.1162 853 ROW00032 100.2505 854 ROW00033 900.2505 855 ROW00034 45.4400 856 ROW00035 375.2000 857 ROW00036 210.3200 858 ROW00037 210.3200 859 ROW00038 210.3200 860 ROW00039 1694.8838 861 ROW00040 2024.8000 862 ROW00041 1000.7842 863 ROW00042 1133.7995 864 ROW00043 2566.6700 865 ROW00044 2086.7346 866 ROW00045 1646.5954 867 ROW00046 210.3200 868 ROW00047 210.3200 869 ROW00048 210.3200 870 ROW00049 482.0480

Listing of -T3 at 15:43:17 on JUN 10, 1984 for CCid=KG86 Page 16 871 ROW00050 199.2158 872 ROW00051 1604.1600 873 ROW00052 600.0000 874 ROW00053 61.4080 875 876 877 LAST PERIOD SOLUTIONS FOR FIRST NODE AT SCErNARIO 1 2 878 879 ROW VALUE 880 FOB00001 616921.6054 881 ROW00016 187.6000 882 ROW00017 187.6000 883 ROW00018 187.6000 884 ROW00019 187.6000 885 ROW00020 1404.6237 886 ROW00021 0.0000 887 ROW00022 1188.1548 888 ROW00023 586.4588 889 ROW00024 2566.6700 890 ROW00025 1933.3300 891 ROW00026 1600.0000 892 ROW00027 253.1542 893 ROW00028 187.6000 894 ROW00029 187.6000 895 ROW00030 420.6400 896 ROW00031 125.1663 897 ROW00032 98.9654 898 ROW00033 701.0346 899 ROW00034 45.4400 900 ROW00035 256.4416 901 ROW00036 210.3200 902 ROW00037 210.3200 903 ROW00038 210.3200 904 ROW00039 1674.8337 905 ROW00040 2143.5584 906 ROW00041 1200.0000 907 ROW00042 1133.7995 908 ROW00043 2566.6700 909 ROW00044 1986.4842 910 ROW00045 1546.8458 911 ROW00046 210.3200 912 ROW00047 210.3200 913 ROW00048 210.3200 914 ROW00049 482.0480 915 ROW00050 0.7842 916 ROW00051 1723.8594 917 ROW00052 799.2158 918 ROW00053 61.4080 919 920 921 LAST PERIOD SOLUTIONS FOR FIRST NODE AT SCENARIO 2 922 923 ROW VALUE 924 FOB00001 617323.7260 925 ROW00016 187.6000 926 ROW00017 187.6000 927 ROW00018 187.6000 928 ROW00019 187.6000

Listing of -T3 at 15:43:17 on JUN 10, 1981 for CCid=K86R rage 17 929 ROW00020 1604.6237 930 ROW00021 0.0000 931 ROW00022 1188.1548 932 ROW00023 586.4588 933 ROW00024 2566.6700 934 ROW00025 1786.4842 935 ROW00026 1600.0000 936 ROW00027 146.8458 937 ROW00028 187.6000 938 ROW00029 187.6000 939 ROW00030 420.6400 940 ROW00031 95.7972 941 ROW00032 46.5954 942 ROW00033 900.2505 943 ROW00034 45.4400 944 ROW00035 319.2856 945 ROW00036 210.3200 946 ROW00037 210.3200 947 ROW00038 210.3200 948 ROW00039 1704.2028 949 ROW00040 2080.7144 950 ROW00041 1000.7842 951 ROW00042 1133.7995 952 ROW00043 2566.6700 953 ROW00044 2133.3300 954 ROW00045 1600.0000 955 ROW00046 210.3200 956 ROW00047 210.3200 957 ROW00048 210.3200 958 ROW00049 482.0480 959 ROW00050 199.2158 960 ROW00051 1660.0744 961 ROW00052 600.0000 962 ROW00053 61.4080 963 964 965 LAST PERIOD SOLUTIONS FOR FIRST NODE AT SCEtARIO 2 1 2 966 967 ROW VALUE 968 FOB00001 616921.6054 969 ROW00016 187.6000 970 ROW00017 187.6000 971 ROW00018 187.6000 972 ROW00019 187.6000 973 ROW00020 1604.6237 974 ROW00021 0.0000 975 ROW00022 1188.1548 976 ROW00023 586.4588 977 ROW00024 2566.6700 978 ROW00025 1933.3300 979 ROW00026 1600.0000 980 ROW00027 53.1542 981 ROW00028 187.6000 982 ROW00029 187.6000 983 ROW00030 420.6400 984 ROW00031 125.1663 985 ROW00032 98.9654 986 ROW00033 701.0346

Listing of -T3 at 15:43:17 on JUN 10, 19841 for CCid=KG86 Page 18 987 ROW00034 45.4400 988 ROW00035 256.4416 989 ROW00036 210.3200 990 ROW00037 210.3200 991 ROW00038 210.3200 992 ROW00039 1674.8337 993 ROW00040 2143.5584 994 ROW00041 1200.0000 995 ROW00042 1133.7995 996 ROW00043 2566.6700 997 ROW00044 1986.4842 998 ROW00045 1546.8458 999 ROW00046 210.3200 1000 ROW00047 210.3200 1001 ROW00048 210.3200 1002 ROW00049 482.0480 1003 ROW00050 0.7842 1004 ROW00051 1723.8594 1005 ROW00052 799.2158 1006 ROW00053 61.4080 1007 1008 1009 LAST PERIOD SOLUTIONS FOR FIRST NODE AT SCErlARIO 2 1010 1011 ROW VAIUE 1012 FOB00001 617653.4347 1013 ROW00016 187.6000 1014 ROW00017 187.6000 1015 ROW00018 187.6000 1016 ROW00019 187.6000 1017 ROW00020 1604.6237 1018 ROW00021 0.0000 1019 ROW00022 1188.1548 1020 ROW00023 586.4588 1021 ROW00024 2566.6700 1022 ROW00025 1833.0795 1023 ROW00026 1600.0000 1024 ROW00027 153.4046 1025 ROW00028 187.6000 1026 ROW00029 187.6000 1027 ROW00030 420.6400 1028 ROW00031 105.1162 1029 ROW00032 100.2505 1030 ROW00033 900.2505 1031 ROW00034 45.4400 1032 ROW00035 375.2000 1033 ROW00036 210.3200 1034 ROW00037 210.3200 1035 ROW00038 210.3200 1036 ROW00039 1694.8838 1037 ROW00040 2024.8000 1038 ROW00041 1000.7842 1039 ROW00042 1133.7995 1040 ROW00043 2566.6700 1041 ROW00044 2086.7346 1042 ROW00045 1646.5954 1043 ROW00046 210.3200 1044 ROW00047 210.3200

Listing of -T3 at 15:43:17 on JUN 10, 1984 for CCid=K86R Page 19 1045 ROW00048 210.3200 1046 ROW00049 482.0480 1047 ROW00050 199.2158 1048 ROW00051 1604.1600 1049 ROW00052 600.0000 1050 ROW00053 61.4080 1051 1052 1053 LAST PERIOD SOLUTIONS FOR FIRST NODE AT SCEIARIO 2 ' 2 1054 1055 ROW VALUE 1056 FOB00001 616921.6054 1057 ROW00016 187.6000 1058 ROW00017 187.6000 1059 ROW00018 187.6000 1060 ROW00019 187.6000 1061 ROW00020 1604.6237 1062 ROW00021 0.0000 1063 ROW00022 1188.1548 1064 ROW00023 586.4588 1065 ROW00024 2566.6700 1066 ROW00025 1933.3300 1067 ROW00026 1600.0000 1068 ROW00027 253.1542 1069 ROW00028 187.6000 1070 ROW00029 187.6000 1071 ROW00030 420.6400 1072 ROW00031 125.1663 1073 ROW00032 98.9654 1074 ROW00033 701.0346 1075 ROW00034 45.4400 1076 ROW00035 256.4416 1077 ROW00036 210.3200 1078 ROW00037 210.3200 1079 ROW00038 210.3200 1080 ROW00039 1674.8337 1081 ROW00040 2143.5584 1082 ROW00041 1200.0000 1083 ROW00042 1133.7995 1084 ROW00043 2566.6700 1085 ROW00044 1986.4842 1086 ROW00045 1546.8458 1087 ROW00046 210.3200 1088 ROW00047 210.3200 1089 ROW00048 210.3200 1090 ROW00049 482.0480 1091 ROW00050 0.7842 1092 ROW00051 1723.8594 1093 ROW00052 799.2158 1094 ROW00053 61.4080 1095 1096 1097 PROBLEM NODE = 1- 1- 1 1098 1099 1100 OPTIMUM LP OBJECTIVE VALUE = 832935.39 1101 AFTER 18 PASSES FROM NODE TO NODE 1102 AND AFTER 118 ITERATIONS

Listing of -T3 at 15:43:17 on JUN 10, 1984 for CCid=K86R Page 20 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1 1 1 9 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 OPTIMAL VALUE REACHED AT THE POINT VARIABLE STATUS VALIJE FOB00001 1 832935.3907 ROW00001 0 0.0 ROW000020 0.0 ROW00003 -1 0.0 ROW00004 -1 0.0 ROW00005 0 0.0 ROWOOO06 7 62.2967 ROW00007 0 0.0 ROW00008 0 0.0 ROWO0009 10 1092.2453 ROW00010 0 0.0 ROW00011 0 0.0 ROW00012 -1 0.0 ROW00013 -1 0.0 ROW00014 -1 0.0 ROW00015 -1 0.0 COL00001 0 0.0 COL00002 2 158.0000 COL00003 3 158.0000 COL00004 0 0.0 COL00005 4 158.0000 COLOOO06 5 158.0000 COL00007 18 903.3814 COL00008 6 2504.3733 COLOO009 19 1430.0002 COL00010 8 462.2451 COL00011 0 0.0 COL00012 0 0.0 COL00013 9 1600.0000 COL00014 0 0.0 COL00015 11 158.0000 COL00016 12 158.0000 COL00017 13 375.2000 COL00018 14 195.3763 COL00O19 15 2400.0000 COL00020 16 11.8452 OPTIMAL DUAL VALUES 1.00 1141.23 169.40 -1195.90 -224.07 8.15 0.0 -1220.06 -248.22 -1723.41 0.02 0.98 0.00 0.0 -1.05 0 -8.15 -2.87 1 17 1.31 PROBLEM NODE = 2- 1 - OPTIMUM LP OBJECTIVE VALUE = 617627.43 AFTER 18 PASSES FROM NODE Tr NODF AND AFTER 118 ITERATIONS OPTIMAL VALUE REACHED AT THE POINT VARIABLE FOB00001 ROW00016 ROW00017 ROW00018 STATUS VALUE 1 617627.4347 0 0.0 0 0.0 -1 0.0

Listing of -T3 at 15:43:17 on JUN 10. 1984 1161 1162 1163 1164 1.165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 ROW00019 ROW00020 ROW00021 ROW00022 ROW00023 ROW00024 ROW00025 ROW00026 ROW00027 ROW00028 ROW00029 ROW00030 ROW00031 ROW00032 ROW00033 ROW00034 ROW00035 ROW00036 ROW00037 ROW00038 ROW00039 ROW00040 ROW00041 ROW00042 ROW00043 ROW00044 ROW00045 ROW00046 ROW00047 ROW00048 ROWOO049 ROW00050 ROW00051 ROW00052 ROW00053 COL00021 COL00022 COL00023 COL00024 COL00025 COL00026 COL00027 COL00028 COL00029 COL0030 COL00031 COL00032 COL00033 COL00034 COL00035 COL00036 COL00037 COL00038 COL00039 COL00040 COL00041 COL00042 COL00043 -1 6 7 8 0 0 0 0 13 1~ ' 0 -1 0 -1 0 20 -1 -1 0 0 25 26 27 -1 0 0 31 0 0 0 0 -1 -1 -1 39 0 2 3 0 4 5 11 10 0 19 9 0 12 o 14 15 16 17 18 38 0 21 22 for CCid=K86F Page 21 0.0 1601.6237 0.0000 1188.1548 0.0 0.0 0.0 0.0 -99.7495 0.0 0.0 0.0 0.0 0.0 (.0 45.4400 0.0 0.0 0.0 0.0 165-1.8838 375.2000 1200.7842 0.0 0.0 0.0 153.4046 0.0 0.0 o.0 0.0 0.0 0.0 (.0 61.4080 0.0 187.6000 187.6000 0.0 187.6000 187.6000 2033.0795 2566.6700 0.0 700.2505 586.4588 0.0 1600.0000 0.0 187.6000 187.6000 420.6400 145.1162 2024.8000 -0.7842 0.0 210.3200 210.3200

Listing of -T3 at 15:43:17 on JUN 10, 1984 for CCid=K86P Page 22 1219 COL00044 0 0.0 1220 COL00045 23 210.3200 1221 COL00046 24 210.3200 1222 COL00047 36 1886.7346 1223 COL00048 29 2566.6700 1224 COL00049 0 0.0 1225 COL00050 32 800.0000 1226 COLOO051 28 1133.7995 1227 COL00052 0 0.0 1228 COL00053 30 1646.5954 1229 COL00054 33 210.3200 1230 COL00055 0 0.0 1231 COL00056 34 210.3200 1232 COL00057 35 482.0480 1233 COL00058 0 0.0 1234 COL00059 37 1604.1600 1235 COL00060 0 0.0 1236 OPTIMAL DUAL VALUES 1237 0.0 1.90 1.90 -1.40 -1.40 0.0 0 0 0.0 1238 0.0 0.0 0.0 0.0 -1.00 0.0 C 0 -3.80 1239 0.0 0.0 1.00 0.0 3.8~ 3.80 -2 P) -2.80 1240 0.0 0.0 0.0 0.0 0.0 0.0 0. -2.00 4PIA^ 0.0 0.0 0.0 0.0 0.0 2.00 ('

Listing of -P at 14:49:47 on JUN 10, 1984 for CCid=K86B Page 1 1 BASIS 2 FOB00001 FOB00001 3 ROW00006 ROW00006 4 ROWO0009 ROWOOO09 5 COL00002 ROW0000o 6 COL00003 ROW00002 7 COL00005 ROW00003 8 COL00006 ROW00004 9 COL00008 ROW00005 10 COL00010 ROW00007 11 COL00013 ROW00008 12 COL00015 ROW0001O 13 COL00016 ROW00011 14 COL00017 ROW00012 15 COL00018 ROW00013 16 COL00019 ROW00014 17 COL00020 ROW00015 18 BASIS 19 FOB00001 FOB00001 20 ROW00020 ROW00020 21 ROW00021 ROW00021 22 ROW00022 ROW00022 23 ROW00027 ROW00027 24 ROW00034 ROW00034 25 ROW00039 ROW00039 26 ROW00040 ROW00040 27 ROW00041 ROW00041 28 ROW00045 ROW00045 29 ROW00053 ROW00053 30 COL00022 ROW00016 31 COL023 R00023ROW 17 32 COL00025 ROW00018 33 COL00026 ROW00019 34 COL00027 ROW00025 35 COL00028 ROW00024 36 COL00030 ROW00033 37 COL031 R0003ROW 23 38 COL00033 ROW00026 39 COL00035 ROW00028 40 COL00036 ROW00029 41 COL00037 ROW00030 42 COL00038 ROW00031 43 COL00039 ROW00032 44 COL00040 ROW00052 45 COL00042 ROW00035 46 COL00043 ROW00036 47 COL00045 ROW00037 48 COL00046 ROW00038 49 COL00047 ROW00050 50 COL00048 ROW00043 51 COL00050 ROW00046 52 COL00051 ROW00042 53 COL00053 ROW00044 54 COL00054 ROW00047 55 COL00056 ROW00048 56 COL00057 ROW00049 57 COL00059 ROW00051

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=KP6B Page 21 1161 1162 6 PROB(3,3,1),NFLG,KBTMP(602),ITMP(3000),XUTMP(602),XLrrfP(G02), 1163 7 LTMP(602),NROWP(3,3,1),NCOLP(3,3,1),NTH(3,3,1),NR 1164 COMMON/BLOCK3/ NND(5),NPASS,JPER(5),JCUR,JPASS,NPER 1165 COMMON/BLOCK4/ BND(350),XTOPT,XRHO,YPIBAR(602),YBX(350),IBST(3), 1166 1 PRBV(3,5),PRST(5,5,5),CBST(3,5),IBASE,JSTCH(5,5,5),NCUR(3), 1167 2 NXNF(3),INFLG,NETND(10),INST(5),MXNST,NST 1168 C 1169 INTEGER MREG,HREG,VREG 1170 DIMENSION MREG(350),HREG(350),VREG(350) 1171 EQUIVALENCE (MREG(1),YTEMP(1)),(HREG(1),YTEMP(301)) 1172 1,(VREG(1),YTEMP1(6)) 1173 C 1174 C SET PARAMETERS 1175 C 1176 NETA = 0 1177 NLETA = 0 1178 NUETA = 0 1179 NELEM = 0 1180 NLELEM = 0 1181 NUELEM = 0 1182 NABOVE = 0 1183 LE(1) = 1 1184 LR1 = 1 1185 KR1 = 0 1186 JC=JCUR 1187 J2=JPER(2) 1188 J3=JPER(3) 1189 LR4 = NROW(JC,J2,J3) + 1 1190 C 1191 C PUT SLACKS AND ARTIFICIALS IN PART 4 AND REST IN PART 1 1192 C 1193 KNR=NROW(JC,J2,J3) 1194 DO 100 I = 1,KNR 1195 IF (JH(I,JC,J2,J3).GT. NROW(JC,J2,J3)) GO TO 50 1196 LR4 = LR4 - 1 1197 MREG(LR4) = JH(I,JC,J2,J3) 1198 VREG(LR4) = JH(I,JC,J2,J3) 1199 GO TO 90 1200 50 KR1 = KR1 + 1 1201 VREG(KR1) = JH(I,JC,J2,J3) 1202 90 HREG(I) = -1 1203 JH(I,JC,J2,J3) = 0 1204 100 CONTINUE 1205 C 1206 KR3 = LR4 -1 1207 LR3 = LR4 1208 C 1209 KNR=NROW(JC,J2,J3) 1210 DO 200 I = LR4,KNR 1211 IR = MREG(I) 1212 HREG(IR)= 0 1213 JH(IR,JC,J2,J3) = IR 1214 KINBAS(IR,JC,J2,J3) = IR 1215 200 CONTINUE 1216 C 1217 C PULL OUT VECTORS BELOW BUMP AND GET ROW COUNTS 1218 C

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=K86B Page 22 1219 NBNONZ = NROW(JC,J2,J3) - LR4 + 1 1220 IF (KR1.EQ. O) GO TO 1190 1221 J = LR1 1222 210 IV = VREG(J) 1223 LL = LA(IV,JC,J2,J3) 1224 KK = LA(IV+1,JC,J2,J3) -1 1225 IRCNT = 0 1226 DO 220 I = LL,KK 1227 NBNONZ = NBNONZ + 1 1228 IR = IA(I,JC,J2,J3) 1229 IF (HREG(IR).GE. O) GO TO 220 1230 IRCNT = IRCNT + 1 1231 HREG(IR) = HREG(IR) - 1 1232 IRP = IR 1233 220 CONTINUE 1234 IF (IRCNT - 1) 230,250,300 1235 230 WRITE(6,8000) 1236 8000 FORMAT(16HMATRIX SINGULAR ) 1237 KINBAS(IV,JC,J2,J3) = 0 1238 VREG(J) = VREG(KR1) 1239 KR1 = KR1 - 1 1240 IF (J.GT. KR1) GO TO 310 1241 GO TO 210 1242 C 1243 250 VREG(J) = VREG(KR1) 1244 KR1 = KR1 - 1 1245 LR3 = LR3 - 1 1246 VREG(LR3) = IV 1247 MREG(LR3) = IRP 1248 HREG(IRP) = 0 1249 JH(IRP,JC,J2,J3) = IV 1250 KINBAS(IV,JC,J2,J3) = IRP 1251 IF (J.GT. KR1) GO TO 310 1252 GO TO 210 1253 300 IF (J.GE. KR1) GO TO 310 1254 d = J+1 1255 GO TO 210 1256 C 1257 C PULL OUT REMAINING VECTORS ABOVE AND BELOW 1HE 1258 C BUMP AND ESTABLISH MERIT COUNTS OF COLUMNS 1259 C 1260 310 NVREM = 0 1261 IF(KR1.EQ. O) GO TO 1190 1262 J = LR1 1263 320 IV = VREG(J) 1264 LL = LA(IV,JC,J2,J3) 1265 KK = LA(IV+1,JC,J2,J3) - 1 1266 IRCNT = 0 1267 DO 800 I = LL,KK 1268 IR = IA(I,JC,J2,J3) 1269 IF(HREG(IR).NE. -2) GO TO 400 1270 C 1271 C PIVOT ABOVE BUMP (PART OF L) 1272 C 1273 NABOVE = NABOVE + 1 1274 IROWP = IR 1275 CALL UNPACK(IV) 1276 CALL WRETA

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=K8GR Page 23 1277 NLETA = NETA 1278 JH(IR,JC,J2,J3) = IV 1279 KINBAS(IV,JC,J2,J3) = IR 1280 VREG(J) = VREG(KR1) 1281 KR1 = KR1 - 1 1282 NVREM = NVREM + 1 1283 HREG(IR) = IV 1284 GO TO 940 1285 C 1286 400 IF (HREG(IR).GE. O) GO TO 800 1287 IRCNT = IRCNT + 1 1288 IRP = IR 1289 800 CONTINUE 1290 C 1291 IF (IRCNT - 1) 810,900,1000 1292 810 WRITE(6,8000) 1293 KINBAS(IV,JC,J2,d3) = 0 1294 VREG(J) = VREG(KR1) 1295 NVREM = NVREM + 1 1296 KR1 = KR1 - 1 1297 IF (J.GT. KR1) GO TO 1010 1298 GO TO 320 1299 C 1300 C PUT VECTOR BELOW BUMP 1301 C 1302 900 VREG(J) = VREG(KR1) 1303 NVREM = NVREM + 1 1304 KR1 = KR1 - 1 1305 LR3 = LR3 - 1 1306 VREG(LR3) = IV 1307 MREG(LR3) = IRP 1308 HREG(IRP) = 0 1309 JH(IRP,JC,J2,J3) = IV 1310 KINBAS(IV,JC,J2,J3) = IRP 1311 C 1312 C CHANGE ROW COUNTS 1313 C 1314 940 DO 950 II = LL,KK 1315 IIR = IA(II,JC,J2,J3) 1316 IF (HREG(IIR) GE. O) GO TO 950 1317 HREG(IIR) = HREG(IIR) + 1 1318 950 CONfINUE 1319 IF (J.GT. KR1) GO TO 1010 1320 GO TO 320 1321 1000 IF (J.GE. KR1) GO TO 1010 1322 J = J+l 1323 GO TO 320 1324 1010 IF(NVREM.GT. O) GO TO 310 1325 C 1326 C GET MERIT COUNTS 1327 C 1328 1020 IF (KR1.EQ. O) GO TO 1190 1329 DO 1100 J = LR1,KR1 1330 IV = VREG(J) 1331 LL = LA(IV,JC,J2,J3) 1332 KK = LA(IV+1,JC,J2,J3) - 1 1333 IMCNT = 0 1334 DO 1050 I = LL,KK

Listing 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=K86B Page 24 IR = IA(I,JC,J2,J3) IF (HREG(IR).GE. O) GO TO 1050 IMCNT = IMCNT - (HREG(IR) +1) CONTINUE MREG(J) = IMCNT CONTINUE 1050 1100 C C SORT COLUMNS INTO MERIT ORDER USING SHELI. SORT C ISD = 1 1106 IF (KR1.LT. 2*ISD) GO TO 1108 ISD = 2*ISD GO TO 1106 1108 ISD = ISD - 1 C END OF INITIALIZATION 1101 IF (ISD.LE. O) GO TO 1107 ISK = 1 1102 ISJ = ISK ISL = ISK + ISD ISY = MREG(ISL) ISZ = VREG(ISL) 1103 IF (ISY.LT. MREG(ISJ)) GO TO 1105 ISL = ISJ + ISD MREG(ISL) = ISY VREG(ISL) = ISZ ISK = ISK + 1 IF ((ISK + ISD).LE. KR1) GO TC ISD = (ISD - 1) / 2 GO TO 1101 1104 ISL = ISJ + ISD MREG(ISL) = MREG(ISJ) VREG(ISL) = VREG(ISJ) ISJ = ISJ - ISD IF (ISJ.GT. O) GO TO 1103 GO TO 1105 1107 CONTINUE C 1104 ) 1102 1372 C END OF SORT ROUTINE 1373 C PUT OUT BELOW BUMP ETAS (PART OF U) 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 C 1190 C NSLCK = 0 NBELOW = 0 NELAST = NEMAX NTLAST = NTMAX LE(NTLAST + 1) = NELAST + 1 LR = LR3 IF (LR3.GE. LR4) LR = LR4 IF (LR.GT. NROW(JC,J2,J3)) GO TO 2050 JK = NROW(JC,J2,J3) + 1 KNR=NROW(JC,J2,J3) DO 2000 JJ= LR,KNR JK = JK - 1 IV = VREG(JK) I = MREG(JK) NBELOW = NBELOW + 1 IF (IV.GT. NROW(JC,J2,J3)) GO TO 1200 NSLCK = NSLCK + 1

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid-KG6B Page 25 1393 1200 LL = LA(IV,JCJ2,J3) 1394 KK = LA(IV+1,JC,J2,J3) -1 1395 IF (KK.GT. LL) GO TO 1300 1396 1250 IF (ABS(A(LL,JC,J2,d3) - 1.).LE. ZTOLZE) GO TO 2000 1397 C 1398 1300 NUETA = NUETA + 1 1399 DO 1400 J = LL,KK 1400 IR = IA(J,JC,J2,J3) 1401 IF (IR.EQ. I)GO TO 1390 1402 IE(NELAST) = IR 1403 E(NELAST) = A(J,JC,J2,J3) 1404 NELAST = NELAST - 1 1405 NUELEM = NUELEM + 1 1406 GO TO 1400 1407 1390 EP = A(J,JC,J2,J3) 1408 1400 CONTINUE 1409 IE(NELAST) = I 1410 E(NELAST) = EP 1411 LE(NTLAST) = NELAST 1412 NELAST = NELAST - 1 1413 NTLAST = NTLAST - 1 1414 NUELEM = NUELEM + 1 1415 2000 CONTINUE 1416 2050 IF(KR1.EQ. O) GO TO 3500 1417 C 1418 C DO L-U DECOMPOSITION OF BUMP 1419 C 1420 DO 3000 J = LR1,KR1 1421 IV = VREG(J) 1422 CALL UNPACK(IV) 1423 CALL FTRAN(2) 1424 IROWP = 0 1425 IRCMIN = -999999 1426 KNR=NROW(JC,J2,J3) 1427 DO 2100 I = 1,KNR 1428 IF (DABS(Y(I)).LE. ZTOLPV) GO TO 2100 1429 IF (HREG(I).GE.O) GO TO 2100 1430 IF (HREG(I).LE. IRCMIN) GO TO 2100 1431 IRCMIN = HREG(I) 1432 IROWP = I 1433 2100 CONTINUE 1434 IF (IROWP.GT. O) GO TO 2150 1435 WRITE(6,8000) 1436 KINBAS(IV,JC,J2,J3) = 0 1437 GO TO 3000 1438 C 1439 2150 INCR = HREG(IROWP) + 3 1440 C 1441 C WRITE L AND U ETAS 1442 C 1443 IF (J.EQ. KR1) GO TO 2160 1444 NELEM = NELEM + 1 1445 IE(NELEM) = IROWP 1446 E(NELEM) = Y(IROWP) 1447 KNR=NROW(JC,J2,J3) 1448 2160 DO 2300 I = 1,KNR 1449 IF (I.EQ. IROWP) GO TO 2300 1450 IF(DABS(Y(I)).LE. ZTOLZE) GO TO 2300

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=K86B Page 26 1451 IF (HREG(I).GE. 0) GO TO 2200 1452 C 1453 C L ETA ELEMENTS 1454 C 1455 NELEM = NELEM + 1 1456 IE(NELEM) = I 1457 E(NELEM) = Y(I) 1458 GO TO 2300 1459 C 1460. C U ETA ELEMENTS 1461 C 1462 2200 IE(NELAST) = I 1463 E(NELAST) = Y(I) 1464 NELAST = NELAST - 1 1465 NUELEM = NUELEM + 1 1466 2300 CONTINUE 1467 C 1468 UH(IROWP,JC,J2,J3) = IV 1469 KINBAS(IV,JC,J2,J3) = IROWP 1470 NUETA = NUETA + 1 1471 IE(NELAST) = IROWP 1472 IF (J.NE. KR1) GO TO 2330 1473 E(NELAST) = Y(IROWP) 1474 GO TO 2340 1475 2330 E(NELAST) = 1. 1476 NETA = NETA + 1 1477 LE(NETA+1) = NELEM + 1 1478 2340 NUELEM = NUELEM + 1 1479 LE(NTLAST) = NELAST 1480 NELAST = NELAST - 1 1481 NTLAST = NTLAST - 1 1482 C 1483 C UPDATE ROW COUNTS 1484 C 1485 KNR=NROW(JC,J2,J3) 1486 DO 2350 I = 1,KNR 1487 IF (DABS(Y(I)).LE. ZTOLZE) GO TO 2350 1488 IF (HREG(I).GE. O) GO TO 2350 1489 HREG(I) = HREG(I) - INCR 1490 IF (HREG(I).GE. O) HREG(I) = -1 1491 2350 CONTINUE 1492 HREG(IROWP) = O 1493 3000 CONTINUE 1494 C 1495 C MERGE L AND U ETAS 1496 C 1497 3500 NLETA = NETA 1498 NETA = NLETA + NUETA 1499 NLELEM = NELEM 1500 NELEM = NLELEM + NUELEM 1501 IF (NUELEM.EQ. O) GO TO 3550 1502 CALL SHFTE 1503 C 1504 C INSERT SLACKS FOR DELETED COLUMNS 1505 C 1506 KNR=NROW(JC,J2,J3) 1507 3550 DO 3600 I = 1,KNR 1508 IF (JH(I,JC,J2,J3).NE. O) GO TO 3600

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=K86B Page 27 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 JH(I,JC,J2,J3) = I IROWP = I CALL UNPACK(IROWP) CALL FTRAN(1) CALL WRETA 3600 CONTINUE C C UPDATE X C CALL SHIFTR(1,3) KNC=NCOL(JC,J2,J3) DO 9000 J=1,KNC IF (KINBAS(J,JC,J2,J3)) 8600,8700,9000 8600 DE = XUB(J,JC,J2,J3) GO TO 8750 8700 DE = XLB(J,JC,J2,J3) 8750 LL = LA(J,JC,J2,J3) KK = LA(J+1,JC,J2,J3) - 1 DO 8800 I=LL,KK IR = IA(I,JC,J2,J3) 8800 Y(IR) = Y(IR) - A(I,JC,02,J3)*DE 9000 CONTINUE CALL FTRAN(1) CALL SHIFTR(3,2) RETURN END 1535 C --- —------------------------------------------------------------------ 1536 SUBROUTINE UNPACK(IV) 1537 C 1538 C EXPANDS COMPRESSED MATRIX COLUMNS 1539 C SUBROUTINE ADAPTED FROM LINEAR PROGPAMMING CODE LPM 1, WRITTEN 1540 C BY J.A. TOMLIN (OPERATIONS RESEARCH, STANFORD UNIVFPSITY) 1541 C ***DESCRIPTION OF PARAMETERS*** 1542 C IV = PARAMETER INDEXING COLUMN TO BE EXPANDED (INPIF) 1543 C 1544 IMPLICIT REAL*4 (A,C,E-H,O,P,R-W,Z), REAL*8 (B,D,X,Y). 1545 1 INTEGER*4 (I-N,Q) 1546 INTEGER JH,KINBAS,LA,LE,IA,IE.NODE 1547 DOUBLE PRECISION E(3000) 1548 REAL A(3000,3,3,1) 1549 COMMON DE,DP,B(350,3,3,1),X(350,3,3,1),Y(350),YTEMP(60'),YTEMP1(6 1550 1 22),XLB(602,3,3,1),XUB(602,3,3,1),XKSI(350,3,3,1),YP[(350,3,3,1) 1551 1,A,E,MSTAT,IOBJ,IROWP,ITCNT, 1552 2 INVFRQ,ITRFRQ,JCOLP,NROW(3,3,1),NCOL(3,3,1),NELEM,NFLM(3,3,1 1553 2 ),NETA, 1554 3 NLELEM,NLETA,NUELEM,NUETA,JMi(350,3,3,1),KINBAS(602,3,3,1),LA( 1555 3 602,3,3,1), 1556 4 LE(1002),IA(3000,3,3,1),IE(3000), 1557 5 ATMP(3000),ABN(600,3,3,1),IBN(600,3,3,1),LBN(602,3,3,1), 1558 1559 6 PROB(3,3,1),NFLG,KBTMP(602),ITMP(3000).XUTMP(602),XITMP(602), 1560 7 LTMP(602),NROWP(3,3,1),NCOLP(3,3,1),NrH(3.3,1),NR 1561 COMMON/BLOCK3/ NND(5),NPASS,JPER(5),JCUR,JPASS,NPER 1562 COMMON/BLOCK4/ BND(350),XTOPT,XRHO,YPIBAR(602),YBX(350),IRST(3), 1563 1 PRBV(3,5),PRST(5,5,5),CBST(3,5),IBASE,dSTCH(5,5,5),NCUR(3), 1564 2 NXNF(3),INFLG,NETND(10),INST(5),MXNST,NST 1565 1566 C JC=JCUR

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=K86B Page 28 1567 d2=JPER(2) 1568 J3=JPER(3) 1569 IF(JC.EQ.NPER)J2=1 1570 KNR=NROW(JC,J2,J3) 1571 DO 100 I = 1,KNR 1572 Y(I) = 0. 1573 100 CONTINUE 1574 C 1575 LL = LA(IV,JC,J2,J3) 1576 KK = LA(IV+1,JC,J2,J3) - 1 1577 DO 200 I = LL,KK 1578 IR = IA(I,JC,J2,J3) 1579 Y(IR) = A(I,JC,J2,J3) 1580 200 CONTINUE 1581 RETURN 1582 END 1583 C --- —--------------------------------------------------------- ------ 1584 SUBROUTINE BUNPCK(IV) 1585 C 1586 C EXPANDS COMPRESSED MATRIX COLUMNS 1587 C SUBROUTINE ADAPTED FROM LINEAR PROGRAMMING CODE LPM 1, WRITTEN 1588 C BY J.A. TOMLIN (OPERATIONS RESEARCH, STANFORD UNIVERSITY) 1589 C ***DESCRIPTION OF PARAMETERS*** 1590 C IV = PARAMETER INDEXING COLUMN TO BE EXPANDED (INPUl. ) 1591 C 1592 IMPLICIT REAL*4 (A,C,E-H,O,P,R-W,Z), REAL*8 (B,D,X,Y), 1593 1 INTEGER*4 (I-N,Q) 1594 INTEGER JH,KINBAS,LA,LE,IA,IE,NODE 1595 DOUBLE PRECISION E(3000) 1596 REAL A(3000,3,3,1) 1597 COMMON DE,DP,B(350,3,3,1),X(350,3,3,1),Y(350),YTEMP(60?),YTEMP1(6 1598 1 22),XLB(602,3,3,1),XUB(602,3,3,1),XKSI(350,3,3,1),YPI(350,3,3,1) 1599 1,A,E,MSTAT,IOBJ,IROWP,ITCNT, 1600 2 INVFRQ,ITRFRQ,JCOLP,NROW(3,3,1),NCOL(3,3,1),NELEM,NELM(3,3,1 1601 2 ),NETA, 1602 3 NLELEM,NLETA,NUELEM,NUETA,JH(350,3,3,1),KINBAS(602,2.3,1),LA( 1603 3 602,3,3,1), 1604 4 LE(1002),IA(3000,3,3,1),IE(3000), 1605 5 ATMP(3000),ABN(600,3,3,1),IBN(600,3,3,1),LBN(602,3,3,1). 1606 1607 6 PROB(3,3,1),NFLG,KBTMP(602),ITMP(3000),XUTMP(602),XLTMP(602), 1608 7 LTMP(602),NROWP(3,3,1),NCOLP(3,3,1),NTH(3,3,1),NR 1609 COMMON/BLOCK3/ NND(5),NPASS,JPER(5),JCUR,JPASS,NPER 1610 COMMON/BLOCK4/ BND(350),XTOPT,XRHO,YPIBAR(602),YBX(350),IBST(3), 1611 1 PRBV(3,5),PRST(5,5,5),CBST(3,5),IBASE,JSTCH(5,5,5),UJCUR(3), 1612 2 NXNF(3),INFLG,NETND(10),INST(5),MXNST,NST 1613 C 1614 JC=JCUR 1615 J2=JPER(2) 1616 J3=JPER(3) 1617 KNRO=NROW(JC+I,1,1) 1618 DO 100 I = 1,KNRO 1619 Y(I) = 0. 1620 100 CONTINUE 1621 C 1622 LL = LBN(IV,JC,J2,J3) 1623 KK = LBN(IV+1,JC,J2,J3) - 1 1624 DO 200 I = LL,KK

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=K86B Page 29 1625 IR = IBN(I,JC,J2,J3) 1626 Y(IR) = ABN(I,JC,J2,J3) 1627 200 CONTINUE 1628 RETURN 1629 END 1630 C --- —-------------------------------------------------- 1631 SUBROUTINE SHFTE 1632 C 1633 C SUBROUTINE FOR INVERT 1634 C SUBROUTINE ADAPTED FROM LINEAR PROGRAMMING CODE LPM 1, WRITTEN 1635 C BY J.A. TOMLIN (OPERATIONS RESEARCH, STANFORD UNIVEPSITY) 1636 C 1637 IMPLICIT REAL*4 (A,C,E-H,O,P,R-W,Z), RFAL*8 (B,D,X,Y), 1638 1 INTEGER*4 (I-N,Q) 1639 INTEGER JH,KINBAS,LA,LE,1A,IE,NODE 1640 DOUBLE PRECISION E(3000) 1641 REAL A(3000,3,3,1) 1642 C 1643 COMMON/BLOCK/ ZTOLZE,ZTOLPV,ZTCOST,ZTOISM,NEGINF,NEMAX,NRMAX, 1644 1 NTMAX,QBL,QA,QI,QF,QN,OB,QC,QE,QH,QL,QO.QR,QM,QG,QSOP 1645 COMMON DE,DP,B(350,3,3,1),X(350,3,3,1),Y(350),YTEMP(602),Y-EMP1(6 1646 1 22),XLB(602,3,3,1),XUB(602,3,3,1),XKSI(350,3,3,1),Yri(350,3,3,1) 1647 1,A,E,MSTAT,IOBJ,IROWP,ITCNT, 1648 2 INVFRQ,ITRFRQ,JCOLP,NROW(3,3,1),NCOL(3,3,1),NELEM,NFr-M(3,3,1 1649 2 ),NETA, 1650 3 NLELEM,NLETA,NUELEM,NUETA,JH(350,3,3,1),KINBAS(602,2,3, ),LA( 1651 3 602,3,3,1), 1652 4 LE(1002),IA(3000,3,3,1),IE(3000), 1653 5 ATMP(3000),ABN(600,3,3,1),IBN(600,3,3,1),LBN(602,3,3, ), 1654 1655 6 PROB(3,3,1),NFLG,KBTMP(602),ITMP(3000).XUTMP(602),XI.'IMP(02), 1656 7 LTMP(602),NROWP(3,3,1),NCOLP(3,3,1),rTH(3,3,1),NR 1657 COMMON/BLOCK3/ NND(5),NPASS,JPER(5),JCUR,JPASS,NPER 1658 COMMON/BLOCK4/ BND(350),XTOPT,XRHO,YPIBAR(602),YBX(350),IBST(3), 1659 1 PRBV(3,5),PRST(5,5,5),CBST(3,5),IBASE,JSTCH(5,5,5),NCUR(3), 1660 2 NXNF(3),INFLG,NETND(10),INST(5),MXNST,NST 1661 C 1662 C SHIFT IE AND E OF U ELEMENTS 1663 C 1664 NF = NEMAX - NUELEM + 1 1665 INCR = 0 1666 DO 1000 I = NF,NEMAX 1667 INCR = INCR + 1 1668 IE(NLELEM + INCR) = IE(I) 1669 E(NLELEM + INCR) = E(I) 1670 1000 CONTINUE 1671 C 1672 IDIF = NEMAX - NLELEM - NUELEM 1673 NF = NTMAX - NUETA + 1 1674 INCR = 0 1675 DO 2000 I = NF,NTMAX 1676 INCR = INCR + 1 1677 LE(NLETA + INCR) = LE(I) - IDIF 1678 2000 CONTINUE 1679 LE(NETA+1) = NELEM + 1 1680 RETURN 1681 END 1682 C --- —---------------------------------------------------- --------

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=K86B Page 30 1683 SUBROUTINE UPBETA 1684 C 1685 C UPDATES RIGHT-HAND SIDES TO REFLECT NEW BASIS RESUL IING FROM 1686 C CURRENT SIMPLEX PIVOT 1687 C SUBROUTINE ADAPTED FROM LINEAR PROGRAMMING CODE LPM- 1, WRITTEN 1688 C BY J.A. TOMLIN (OPERATIONS RESEARCH, STANFORD UNIVFPSITY) 1689 C 1690 IMPLICIT REAL*4 (A,C,E-H,O,P,R-W,Z), RFAL+8 (B,D,X,Y), 1691 1 INTEGER*4 (I-N,Q) 1692 INTEGER JH,KINBAS,LA,LE,IA,IE,NODE 1693 DOUBLE PRECISION E(3000) 1694 REAL A(3000,3,3,1) 1695 COMMON/BLOCK2/ ICOL,IVAL,IDIR,NPIVOT,IPTYPE,CMIN,CMAX,APV,NINF,NOPT 1696 COMMON DE,DP,B(350,3,3,1),X(350,3,3,1),Y(350),YTEMP(602),YTEMP1(6 1697 1 22),XLB(602,3,3,1),XUB(602,3,3,1),XKSI(350,3,3,1),YP'(350,3,3,1) 1698 1,A,E,MSTAT,IOBJ,IROWP,ITCNT, 1699 2 INVFRQ,ITRFRQ,JCOLP,NROW(3,3,1),NCOL(3,3,1),NELEM,NEIM(3,3,1 1700 2 ),NETA, 1701 3 NLELEM,NLETA,NUELEM,NUETA,JH(350,3,3,1),KINBAS(602,3.3,1),LA( 1702 3 602,3,3,1), 1703 4 LE(1002),IA(3000,3,3,1),IE(3000), 1704 5 ATMP(3000),ABN(600,3,3,1),IBN(600,3,3,1),LBN(602,3,, 1), 1705 1706 6 PROB(3,3,1),NFLG,KBTMP(602),ITMP(3000),XUTMP(602),XLTMP(G62),. 1707 7 LTMP(602),NROWP(3,3,1),NCOLP(3,3,1),NTH(3,3,1),NR 1708 COMMON/BLOCK3/ NND(5),NPASS,JPER(5),JCUR,JPASS,NPER 1709 COMMON/BLOCK4/ BND(350),XTOPT,XRHO,YPIBAR(602),YBX(350),IBST(3), 1710 1 PRBV(3,5).PRST(5,5,5),CBST(3,5),IBASE,JSTCH(5,5,5),NCUR(3), 1711 2 NXNF(3),INFLG,NETND(10),INST(5),MXNST,NST 1712 C 1713 JC=JCUR 1714 J2=JPER(2) 1715 J3=JPER(3) 1716 KNR=NROW(JC,J2,J3) 1717 DO 1000 I=1,KNR 1718 1000 X(I,JC,J2,.J3) = X(I,JC,J2,J3) - Y(I)*DP 1719 IF (NPIVOT.EQ. 1) GO TO 2000 1720 KINBAS(JCOLP,JC,J2,J3) = -(KINBAS(JCOLP,JC,J2,J3) + 1) 1721 RETURN 1722 2000 X(IROWP,JC,J2,J3) = DE 1723 IVOUT = JH(IROWP,JC,J2,J3) 1724 KINBAS(JCOLP,JC,J2,J3) = IROWP 1725 KINBAS(IVOUT,JC,J2,J3) = IPTYPE 1726 JH(IROWP,JC,J2,J3) = JCOLP 1727 RETURN 1728 END 1729 C --- —----------------------------------------------------------------- 1730 SUBROUTINE NORMAL(ITSINV) 1731 C 1732 C SERVES AS MASTER PROGRAM FOR LINEAR PROGRAMMING COMrONENT 1733 C (REVISED,PRIMAL-SIMPLEX METHOD) OF BRANCH-AND-BOUND ROUTINE BB 1734 C SUBROUTINE ADAPTED FROM LINEAR PROGRAMMING CODE LPM.1, WRITTEN 1735 C BY J.A. TOMLIN (OPERATIONS RESEARCH. STANFORD UNIVEPSITY) 1736 C ***DESCRIPTION OF PARAMETERS*** 1737 C ITSINV = NUMBER OF SIMPLEX ITERATIONS SINCE LAST BASIS 1738 C INVERSION (INPUT/OUTPUT) 1739 C 1740 IMPLICIT REAL*4 (A,C,E-H,O,P,R-W,Z), REAL*8 (B,D,X,Y),

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=K86B Page 31 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 C C 1000 1001 1 INTEGER*4 (I-N,Q) INTEGER JH,KINBAS,LA,LE,IA,IE,NODE DOUBLE PRECISION E(3000) REAL A(3000,3,3,1) COMMON/BL5/DRES,ICNAM COMMON/BLOCK/ ZTOLZE,ZTOLPV,ZICOST,ZTOISM,NEGINF,NEMAY,NRMAX, 1 NTMAX,QBL,QA,QI,Q F,QN,QB,QC.QE,QH,QL,,QO,R,QM,QG,QSOP COMMON/BLOCK2/ ICOL,IVAL,IDIR,NPIVOT,IPTYPE,CMIN,CMAX,APV,NINF,NOPI COMMON DE,DP,B(350,3,3,1),X(350,3,3,1),Y(350),YTEMP(602),YTEMPl(6 1 22),XLB(602,3,3,1),XUB(602,3,3,1),XKSI(350,3,3,1),YPI(350,3,3,1) 1,A,E,MSTAT,IOBJ,IROWP,ITCNT, 2 INVFRQ,ITRFRQ,JCOLP,NROW(3,3,1),NCOL(3,3,1),NELEM,NFI.M(3,3,1 2 ),NETA, 3 NLELEM,NLETA,NUELEM,NUETA,J-H(350,3,3,1),KINBAS(602,:.3.1),LA( 3 602,3,3,1), 4 LE(1002),IA(3000,3,3,1),IE(3000), 5 ATMP(3000),ABN(600,3,3,1),IBN(600,3,3,1),LBN(602,3,3.1), 6 PROB(3,3,1),NFLG,KBTMP(602),ITMP(3000),XUTMP(602),XI IMP(602), 7 LTMP(602),NROWP(3,3,1),NCOLP(3,3,1),NTH(3,3,1),NR COMMON/BLOCK3/ NND(5),NPASS,JPER(5),JCIJR,JPASS,NPER COMMON/BLOCK4/ BND(350),XTOPT,XRHO,YPIRAR(602),YBX(35(.),IBST(3), 1 PRBV(3,5),PRST(5,5,5),CBST(3,5),IBASE,JSTCH(5,5,5),NCUR(3), 2 NXNF(3),INFLG,NETND(10),INST(5),MXNSTNST JC=JCUR J2=JPER(2) J3=JPER(3) NELEM=NELM(JC,J2,J3) IF (ITSINV.LT. INVFRQ) GO TO 1500 CALL INVERT WRITE(6,1001) FORMAT(' ITNS',2X,'RRES',5X,' PIV',6X,' IN',3X,'OUT',2X, 1 'OBJ',7X,'CMIN',7X,'CMAX',7X,'THEI',3X,'NINF',IX,'NOPI') ITSINV = 0 SIMPLEX CYCLE C C C 1500 CALL FORMC C TRANSFER AFTER PHASE i FOR FIRST PASS IF((MSTAT.EQ. OF).AND. (JPASS.EQ. 1)) GO TO 60( CALL BTRAN CALL PRICE IF (JCOLP.GT. O) GO TO 3000 IF (MSTAT.EQ. QI) GO TO 2000 MSTAT = QBL GO TO 6000 2000 MSTAT = QN GO TO 6000 3000 CALL UNPACK(JCOLP) CALL FTRAN(1) CALL CHUZR CALL UPBETA ITCNT = ITCNT + 1 ITSINV = ITSINV + 1 IF (NPIVOT.EQ. O) GO TO 4010 IF (NELEM.GT. (NEMAX-NROW(JC,J2,J3))) GO TO 1000 00

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=K86B Page 32 1799 CALL WRETA 1800 CALL RHCHCK 1801 IF(ITCNT.GE.ITRFRQ) WRITE(6,4011) ITCNf 1802 4011 FORMAT(' MORE THAN',I7,' ITERATIONS') 1803 IF(ITCNT.GE.ITRFRQ) JCUR=NPER-1 1804 IF (ITCNT.GE. ITRFRQ) GO TO GOO0 1805 WRITE(6,1002)ITCNT,DRES,APV,JCOLP,IROWI',X(1,JC,J2,J3)."MIN.CMAX 1806 1,DP,NINF,NOPT 1807 1002 FORMAT(I14,1X,E9.2,1X,E9.2,1 4,X,I4,1X,I4,1XO.2,IXE X9. 2,1X. 1808 1 E9.2,1X,I4,1X,I4) 1809 IF(DRES.GT.10*ZTOLZE) GO TO 1000 1810 4010 IF (ITSINV.GE. INVFRQ) GO TO 1000 1811 GO TO 1500 1812 6000 RETURN 1813 END 1814 C --- —-------------------------------------------------------- 1815 SUBROUTINE NDCOM 1816 C 1817 C THIS SUBROUTINE PERFORMS ALL THE NECESSARY STOCHASTIC DECOMP 1818 C OSITION STEPS. 1819 C 1820 IMPLICIT REAL*4 (A,C,E-H,O,P,R-W,Z), REAL*8 (B,D,X,Y). 1821 1 INTEGER*4 (I-N,Q) 1822 INTEGER JH,KINBAS,LA,LE,IA,IE,NODE 1823 INTEGER ICNAM(602,2),NAME(6) 1824 DOUBLE PRECISION E(3000),ATEMP1,ATEMP2 1825 REAL A(3000,3,3,1) 1826 C 1827 COMMON/BLOCK/ ZTOLZE,ZTOLPV,ZTCOST,ZTOISM,NEGINF,NEMAY,NRMAX, 1828 1 NTMAX,QBL,QA,QI,QF,QN,QB,QC,QE,QH,QL,QO,QR,QM,QG,QS,:OP 1829 COMMON DE,DP,B(350,3,3,1),X(350,3,3,1),Y(350),YTEMP(602),YIEMP1(6 1830 1 22),XLB(602,3,3,1),XUB(602,3,3,1),XKSI(350,3,3,1),YPI(350,3,3,1) 1831 1,A,E,MSTAT,IOBJ,IROWP,ITCNT, 1832 2 INVFRQ,ITRFRQ,JCOLP,NROW(33,,1),NCOL(3,3,1),NELEM,NELM(3,3,1 1833 2 ),NETA, 1834 3 NLELEM,NLETA,NUELEM,NUETA,JH(350,3,3,1),KINBAS(602,'.3.1),LA( 1835 3 602,3,3,1), 1836 4 LE(1002),IA(3000,3,3,1),IE(3000), 1837 5 ATMP(3000),ABN(600,3,3,1),IBN(600,3,3,1),LBN(602,3,3,1), 1838 1839 6 PROB(3,3,1),NFLG,KBTMP(602),ITMP(3000),XUTMP(602),XL1MP(602), 1840 7 LTMP(602),NROWP(3,3,1),NCOLP(3,3,1),NTH(3,3,1),NR 1841 COMMON/BLOCK3/ NND(5),NPASS,JPER(5),JCJR,JPASS,NPER 1842 COMMON/BLOCK4/ BND(350),XTOPT,XRHO,YPIBAR(602),YBX(350),IGST(3), 1843 1 PRBV(3,5),PRST(5,5,5),CBST(3,5),IBASE,JSTCH(5,5,5),fICUR(3), 1844 2 NXNF(3),INFLG,NETND(10),INST(5),MXNS1,NST 1845 C FOR ALL FEASIBLE, PASSBACK 1846 C 1847 IF(JPASS.EQ. 2) GO TO 70 1848 C 1849 C IF CURRENT FEASIBLE GO ON 1850 WRITE(6,300) MSTAT 1851 300 FORMAT(' STATUS AT NDCOM=',A4) 1852 WRITE(6,301) JCUR 1853 301 FORMAT(' AT BEG OF NDCOM, JCUR=',I6) 1854 C 1855 IF(MSTAT.NE. QN) GO TO 20 1856 C

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=K86R Page 33 1857 C HERE TOTAL PROBLEM IS INFEASIBLE 1858 C 1859 IF(JCUR.EQ. 1) JCUR=NPER+1 1860 IF(JCUR.EQ. NPER+1) RETURN 1861 WRITE(6,303) JCUR 1862 303 FORMAT(' INFEASIBLE AT JCUR = ',I6) 1863 C 1864 C ADD CUT AND RETURN 1865 C 1866 WRITE(6,201) 1867 201 FORMAT('MAKING A FEASIBILTIY CUT') 1868 CALL FEASCT 1869 JPER(JCUR)=1 1870 JCUR=JCUR-1 1871 RETURN 1872 20 CONTINUE 1873 C 1874 C FEASIBLE, SO CONTINUE DOWN 1875 C 1876 IF(JPER(JCUR).LT. NND(JCUR)) GO TO 30 1877 K=JCUR 1878 C 1879 C ITERATE TO FIND THE PROPER INDEX TO CHANGE 1880 C 1881 25 CONTINUE 1882 K=K-1 1883 IF(K.LE. 1) GO TO 28 1884 IF(JPER(K).EQ. NND(K)) GO TO 25 1885 JPER(K)=JPER(K)+1 1886 KK=K+1 1887 DO 26 I=KK,JCUR 1888 JPER(I)=1 1889 26 CONTINUE 1890 RETURN 1891 C 1892 C THERE, YOU'VE FINISHED THE CURRENT PERIOD 1893 C 1894 28 CONTINUE 1895 C 1896 C MULTIPLY OUT THE CURRENT PERIOD, CARRY TO NEXT 1897 C 1898 IF(JCUR.GT. 1) GO TO 285 1899 CALL BPRODX 1900 CALL FRMRHS 1901 GO TO 290 1902 285 CONTINUE 1903 IF(JCUR.EQ. NPER) GO TO 290 1904 NNDD=NND(JCUR) 1905 DO 280 L=1,NNDD 1906 JPER(JCUR)=L 1907 CALL BPRODX 1908 CALL FRMRHS 1909 280 CONTINUE 1910 290 CONTINUE 1911 JCUR=JCUR+1 1912 DO 29 I=1,JCUR 1913 JPER(I)=1 1914 29 CONTINUE

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=K86R Page 34 1915 WRITE(6,302) JCUR 1916 302 FORMAT(' AT END OF ND, JCUR='.I6) 1917 IF(JCUR.LE. NPER) RETURN 1918 JPASS=2 1919 JCUR=NPER 1920 RETURN 1921 30 CONTINUE 1922 JPER(JCUR)=JPER(JCUR)+1 1923 RETURN 1924 C 1925 C NOW, FOR THE BACK PASS 1926 C 1927 70 CONTINUE 1928 C 1929 C THIS SAYS SET THE OPTIMAL FLAG AT FALSE 1930 C 1931 NFLG = 0 1932 C 1933 C CHECK IF FEASIBLE 1934 C 1935 IF(MSTAT.NE. QN) GO TO 80 1936 C 1937 C IF FIRST PERIOD INFEASIBLE 1938 C 1939 IF(JCUR.EQ. 1) WRITE(6,72) 1940 72 FORMAT('INFEASIBLE ON PASS 2') 1941 IF(JCUR.EQ. 1) STOP 1942 C 1943 C FEASIBLE CUT 1944 C 1945 CALL FEASCT 1946 JPER(JCUR)=1 1947 JCUR=JCUR-1 1948 RETURN 1949 C 1950 C HERE IT'S FEASIBLE 1951 C 1952 80 CONTINUE 1953 1954 C 1955 C GET RID OF CUTS YOU DON'T NEED 1956 C 1957 CALL DLETCT 1958 IF((JCUR.EQ. NPER-1).AND.(NFI.G.EQ.1)) GO TO 85 1959 C 1960 C THIS PART SAYS MOVE ON DOWN TO NEXT PERIOD 1961 C 1962 CALL BPRODX 1963 CALL FRMRHS 1964 JCUR=JCUR+1 1965 DO 82 I=JCUR,NPER 1966 JPER(I)=1 1967 82 CONTINUE 1968 81 CONTINUE 1969 JJC=JCUR+1 1970 DO 83 I=JJC,NPER 1971 UPER(I)=1 1972 83 CONTINUE

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=KS6B Page 35 1973 NFLG=O 1974 RETURN 1975 85 CONTINUE 1976 C 1977 C CHECK FOR PERIOD CURRENTLY OPTIMAL 1978 C 1979 IF(JPER(NPER-1) EQ. NND(NPER-1)) GO TO 90 1980 JPER(NPER-1)=JPER(NPER-1)+1 1981 NFLG=O 1982 RETURN 1983 90 CONTINUE 1984 C 1985 C CHECK LAST PERIOD OPTIMALITY 1986 C 1987 NFLG=O 1988 IF(NTH(1,1,1).EQ.1) CALL OPTCHK(2) 1989 IF(NFLG.EQ. 1) GO TO 95 1990 C 1991 C THERE, IT'S NOT OPTIMAL, GO BACK 1992 C 1993 CALL LKHDCT(NPER-1) 1994 JCUR=JCUR-1 1995 GO TO 81 1996 95 CONTINUE 1997 K=JCUR 1998 C 1999 C ITERATE BACK THROUGH EACH PERIOD TO CHECK OPTIMALITY 2000 C 2001 96 CONTINUE 2002 NFLG=O 2003 K=K-1 2004 C 2005 C IF K=1, YOU'RE DONE 2006 C 2007 IF(K.EQ. 1) JCUR=NPER+1 2008 IF(K.EQ. 1) RETURN 2009 JPER(K)=JPER(K)+1 2010 IF(JPER(K).LE. NND(K)) GO TO 101 2011 JPER(K)=JPER(K)-1 2012 C 2013 C CHECK IF OPTIMAL 2014 C 2015 J2=JPER(2) 2016 J3=JPER(3) 2017 IF((K.EQ. 3).AND. (NTH(2,2,1).EQ. 1)) CALL OPTCHK(K) 2018 IF((K.EQ. 2).AND. (NTH(I,1,1) EQ. 1)) CALL OPTCHK(IK) 2019 C 2020 C YES, THEN GO BACK 2021 C 2022 IF(NFLG.EQ. 1) GO TO 96 2023 C 2024 C NO, THEN PLACE A CUT 2025 C 2026 CALL LKHDCT(K) 2027 JCUR=K-1 2028 GO TO 81 2029 101 CONTINUE 2030 KK=K+1

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=K86B Page 36 2031 DO 102 I=KK,JCUR 2032 JPER(I)=1 2033 102 CONTINUE 2034 JCUR=K 2035 RETURN 2036 END 2037 C --- —------------------------------------ 2038 SUBROUTINE STRPRT 2039 C 2040 C REPORTS ON THE CURRENT STATUS 2041 C 2042 IMPLICIT REAL*4 (A,C,E-H,O,P,R-W,Z), REAI.*8 (B,D,X,Y), 2043 1 INTEGER*4 (I-N,Q) 2044 INTEGER JH,KINBAS,LA,LE,1A,IE.NODE 2045 INTEGER ICNAM(602,2),NAME(6) 2046 DOUBLE PRECISION E(3000),ATEMP1,ATEMP2 2047 REAL A(3000,3,3,1) 2048 C 2049 COMMON DE,DP,B(350,3,3,1),X(350,3,3,1),Y(350),YTEMP(G02),YTEMPI(6 2050 1 22),XLB(602,3,3,1),XUB(602,3,3,1),XKSI(350,3,3,1),YPJ(350,R,3,1) 2051 1,A,E,MSTAT,IOBJ,IROWP,ITCNT, 2052 2 INVFRQ,ITRFRQ,JCOLP,NROW(3,3,1),NCOL(3,3,1),NELEM,NF-I.(3,3,1 2053 2 ),NETA, 2054 3 NLELEM,NLETA,NUELEM,NUETA,UI1(350,3,3 1),KINBAS(602, '.:3, 1), LA( 2055 3 602,3,3,1), 2056 4 LE(1002),IA(3000,3,3,1),IE(3000), 2057 5 ATMP(3000),ABN(600,3,3,1),IBN(600,3,3,1),LBN(602,3,. 1), 2058 2059 6 PROB(3,3,1),NFLG,KBTMP(602),ITMP(3000),XUTMP(602),X( lMP(O02). 2060 7 LTMP(602),NROWP(3,3,1),NCOLP(3,3,1),JrH(3,3,1),NR 2061 COMMON/BLOCK3/ NND(5),NPASS,JPER(5),JC'JR,.JPASS,NPER 2062 COMMON/BLOCK4/ BND(350),XTOPT,XRHO,YPIPAR(602),YBX(350).IBST(3), 2063 1 PRBV(3,5),PRST(5,5,5),CBST(3,5),IBASE,dSTCH(5,5,5),tMIUR(3), 2064 2 NXNF(3),INFLG,NETND(10),INST(5),MXNSI,NST 2065 JC=JCUR 2066 J2=JPER(2) 2067 J3=JPER(3) 2068 KNR=NROW(JC,J2,J3) 2069 KNC=NCOL(JC,J2,03) 2070 WRITE(6,11) ITCNT 2071 WRITE(6,10) NPASS 2072 WRITE(6,1) JC,d2,J3 2073 WRITE(6,2) 2074 WRITE(6,3)(X(I,dC,J2,J3),I=1,KNR) 2075 WRITE(6,4) 2076 WRITE(6,5)(JH(I,JC,J2,d3),I=1,KNR) 2077 WRITE(6,6) 2078 WRITE(6,5)(KINBAS(I,JC,J2,J3),I=1,KNC) 2079 WRITE(6,7) 2080 WRITE(6,3)(B(I,JC,J2,J3),I=1,KNR) 2081 WRITE(6,8) 2082 WRITE(6,3)(Y(I),I=1,KNR) 2083 WRITE(6,9) 2084 WRITE(6,3)(YPI(I,JC,J2,J3),I=1,KNR) 2085 1 FORMAT(' WE ARE AT PROBLEM',I5,',',I5,,,',I5) 2086 2 FORMAT(' X VALUES') 2087 3 FORMAT(8F10.2) 2088 4 FORMAT(' JH')

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid-KRGB Page 37 2089 5 FORMAT(15I5) 2090 6 FORMAT(' KINBAS') 2091 7 FORMAT(' BS CURRENTLY') 2092 8 FORMAT(' CURRENT Y') 2093 9 FORMAT(' CURRENT PI') 2094 10 FORMAT(//,' WE HAVE MADE',I5,' PASSES') 2095 11 FORMAT(I4,' ITERATIONS SO FAR') 2096 RETURN 2097 END 2098 C --- —---------------------------------- 2099 SUBROUTINE ACHECK 2100 C 2101 C LOOK AT THE VALUES IN A AT THE MOMENT 2102 C 2103 IMPLICIT REAL*4 (A,C,E-H,O,P,R-W,Z), REAL*8 (B,D,X,Y). 2104 1 INTEGER*4 (I-N,Q) 2105 INTEGER JH,KINBAS,LA,LE,IA,IE,NODE 2106 INTEGER ICNAM(602,2),NAME(6) 2107 DOUBLE PRECISION E(3000),ATEMP1,ATEMP2 2108 REAL A(3000,3,3,1) 2109 C 2110 COMMON DE,DP,B(350,3,3,1),X(350,3,3,1),Y(350),YTEMP(602),YTEMP1(6 2111 1 22),XLB(602,3,3,3,1),XUB(602,3,3,1),XKSI(350,3,3,1),YPI(350,3,3,1) 2112 1,A,E,MSTAT,IOBJ,IROWP,ITCNT, 2113 2 INVFRQ,ITRFRQ,JCOLP,NROW(3,3,1),NCOL(3,3,1),NELEM,NEIM(3,3,1 2114 2 ),NETA, 2115 3 NLELEM,NLETA,NUELEM,NUETA,JH(350,3,3,1),KINBAS(602,3,3,1),LA( 2116 3 602,3,3,1), 2117 4 LE(1002),IA(3000,3,3,1),IE(3000), 2118 5 ATMP(3000),ABN(600,3,3,1),IBN(600,3,3,1),LBN(602,3,I 1), 2119 2120 6 PROB(3,3,1),NFLG,KBTMP(602),ITMP(3000),XUTMP(G62),XLIMP(602), 2121 7 LTMP(602),NROWP(3,3,1),NCOLP(3,3,1),NTH(3,3,1),NR 2122 COMMON/BLOCK3/ NND(5),NPASS,JPER(5),JCUJR,JPASS,NPER 2123 COMMON/BLOCK4/ BND(350),XTOPT,XRHO,YPIBAR(602),YBX(35'\).IBST(3), 2124 1 PRBV(3,5),PRST(5,5,5),CBST(3,5),IBASE,STCH(5,5,5),rl(,UR(3), 2125 2 NXNF(3).INFLG,NETND(10),INST(5),MXNST.NST 2126 JC=JCUR 2127 J2=JPER(2) 2128 J3=JPER(3) 2129 WRITE(6,1) JC,J2,J3,NPASS 2130 1 FORMAT(//,' A MATRIX OF',I5,I5,I 5,' AT PASS',I5) 2131 KNRO=NROW(JC,J2,J3)+1 2132 KNC=NCOL(JC,J2,J3) 2133 KNR=NROW(JC,J2,J3) 2134 DO 10 I=KNRO,KNC 2135 IND=I 2136 CALL UNPACK(IND) 2137 WRITE(6,2) IND 2138 2 FORMAT(' COLUMN',I5) 2139 WRITE(6,3)(Y(J),J=1,KNR) 2140 3 FORMAT(15F7.2) 2141 10 CONTINUE 2142 RETURN 2143 END 2144 C --- —------------------------------------------------ 2145 SUBROUTINE DLETCT 2146 C

Listing of 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 NDST3 at 15:43:01 on JUN 10, 1984 for CCid=KnGR Page 38 C DELETES CUTS THAT ARE SLACK. C IMPLICIT REAL*4 (A,C,E-H,O,P,R-W,Z), RFAL-8 (B,D,X,Y), 1 INTEGER*4 (I-N,Q) INTEGER JH,KINBAS,LA,LE,IA,IE,NODE INTEGER ICNAM(602,2),NAME(6) DOUBLE PRECISION E(3000),ATEMP1,ATEMP2 REAL A(3000,3,3,1) C COMMON DE,DP,B(350,3,3,1),X(350,3,3,1),Y(350),YTEMP(602),YrEMP1(6 1 22),XLB(602,3,3,1),XUB(602,3,3,1),XKSI(350,3,3,1),YPI(350,3,3,1) 1,A,E,MSTAT,IOBJ,IROWP,ITCNT, 2 INVFRQ,ITRFRQ,JCOLP,NROW(3,3,1),NCOL(3,3,1),NELEM,NEI. M(,3,1 2 ),NETA, 3 NLELEM,NLETA,NUELEM,NUETA,JH-(350,3,3.1),KINBAS(602,3.3,1),LA( 3 602,3,3,1), 4 LE(1002),IA(3000,3,3,1),IE(3000), 5 ATMP(3000),ABN(600,3,3,1),IBN(600,3,3,1),LBN(602,3,3.1). 6 PROB(3,3,1),NFLG,KBTMP(602),ITMP(3000),XUTMP(602),XLTMP(602), 7 LTMP(602),NROWP(3,3,1),NCOLP(3,3,1),NTH(3,3,1),NR COMMON/BLOCK3/ NND(5),NPASS,JPER(5),JCUR,JPASS,NPER COMMON/BLOCK4/ BND(350),XTOPT,XRHO,YPIRAR(602),YBX(350).IBSr(3), 1 PRBV(3,5),PRST(5,5,5),CBST(3,5),IBASE,JSTCH(5,5,5),NCUR(3), 2 NXNF(3),INFLG,NETND(10),INST(5),MXNST,NST C C CHECK FOR BASIC SLACKS C WRITE(6,20) 20 FORMAT(//,' LOOKING FOR CUTS TO DELETE') JC=JCUR J2=JPER(2) J3=JPER(3) NRX=NROW(JC,J2,J3) IF(NRX.EQ.NROWP(JC,J2,J3)) GO TO 10 KNRPO=NROWP(JC,J2,J3)+1 DO 10 I=KNRPO,NRX IF (KINBAS(I,JC,J2,J3).NF.I) GO TO 10 C SLACK ON I-M IS BASIC IF(X(I,JC,J2,J3).LT.0.5) GO TO 10 C LARGE POSITIVE SLACK TO DELETE WRITE(6,21) I,X(I,JC,J2,33) 21 FORMAT(//,' DELETING ROW',I6,' VALUE = ',E11.3) C UP COLUMNS KNR=NROW(JC,J2,J3) DO 13 J=1,KNR IF(JH(J,JC,J2,J3).GT.I) JH(J,JC,J2,J3)-JH(J,JC,J2,J3) --- 13 CONTINUE IF(I.EQ.NRX) GO TO 15 KNRM=NROW(JC,J2,J3)-1 DO 14 J=I,KNRM C MOVE DOWN ROW INFO X(J,JC,J2,J3)=X(J+1,JC,J2,J3) B(J,JC,J2,J3)=B(J+1,JC,J2,J3) JH(J,JC,J2,J3)=JH(J+1,JC,J2,J3) 14 CONTINUE 15 CONTINUE KNCM=NCOL(JC,J2,J3)-1

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=KPGR Page 39 2205 DO 3 J=1,KNCM 2206 IF(J.LT.I) GO TO 115 2207 C MOVE DOWN COL INFO 2208 XLB(J,JC,J2,d3)=XLB(J+1,JC,J2,J3) 2209 XUB(J,JC,J2,J3)=XUB(J+1,JC,J2,J3) 2210 KINBAS(J,JC,J2,J3)=KINBAS(J+1,JC,J2,J3) 2211 115 CONTINUE 2212 IF(KINBAS(J,JC,J2,J3).GT.I) 2213 1 KINBAS(J,JC,J2,J3)=KINBAS(J,JC,J2,J3)- 2214 3 CONTINUE 2215 C SHIFT UP LISTS 2216 KNC=NCOL(JC,J2,J3) 2217 LNEW=LA(I-1,JC,J2,J3) 2218 II=I+1 2219 DO 200 J=II,KNC 2220 K1=LA(J,JC,J2,J3) 2221 K2=LA(J+1,JC,J2,J3) —1 2222 LA(J,JC,J2,J3)=LNEW+1 2223 DO 30 K=KI,K2 2224 IF(IA(K,JC,J2,J3).EO.I)GO TO 30 2225 LNEW=LNEW+1 2226 A(LNEW,JC,J2,J3)=A(K,JC,J2,Jq) 2227 IA(LNEW,JC,J2,J3)=IA(K,JC,J2,d3) 2228 IF(IA(K,JC,J2,J3).GT.I)IA(LNEWJC,d2,J3)=IA( I NEW.JC,J2,J3)- 2229 30 CONTINUE 2230 200 CONTINUE 2231 LA(KNC+1,JC,J2,J3)=LNEW+1 2232 C SHIFT UP LA 2233 DO 35 J=I,KNC 2234 LA(J,JC,J2,J3)=LA(d+1,dC,J2,J3) 2235 35 CONTINUE 2236 NELM(JC,J2,J3)=LNEW 2237 NCOL(JC,J2,J3)=NCOL(JC,J2,J3)-'1 2238 NROW(JC,J2,J3)=NROW(JC,J2,J3)-1 2239 C CALL STRPRT 2240 C CALL ACHECK 2241 10 CONTINUE 2242 11 CONTINUE 2243 RETURN 2244 END 2245 C --- —-------------------------------------------------- -- 2246 SUBROUTINE FEASCT 2247 C 2248 C FINDS AND ADDS A FEASIBILITY CUT TO NODE I 2249 C 2250 IMPLICIT REAL*4 (A,C,E-H.O,P,R-W,Z), RFAL48 (B,D,X,Y), 2251 1 INTEGER*4 (I-N,Q) 2252 INTEGER JH,KINBAS,LA,LE,IA,IE,NODE 2253 INTEGER ICNAM(602,2),NAME(6) 2254 DOUBLE PRECISION E(3000),ATEMP1,ATEMP2 2255 REAL A(3000,3,3,1) 2256 C 2257 COMMON DE,DP,B(350,3,3,1),X(350,3,3,1),Y(350),YTEMP(60?),YTEMP1(6 2258 1 22),XLB(602,3,3,1),XUB(602,3,3,1),XKSI(350,3,3,1),Yrl(350,3,3,1) 2259 1,A,E,MSTAT,IOBJ,IROWP,ITCNT, 2260 2 INVFRQ,ITRFRQ,JCOLP,NROW(3,3,1),NCOL(3,3,1),NELEM,NELM(3,3,1 2261 2 ),NETA, 2262 3 NLELEM,NLETA,NUELEM,NUETA,JH(350,3,3.1),KINBAS(602,3,3,1),LA(

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid-Kn6B Page 40 2263 3 602,3,3,1), 2264 4 LE(1002),IA(3000,3,3,1),IE(3000), 2265 5 ATMP(3000),ABN(600,3,3,1),IBN(600,3,3,1),LBN(602,3,' I), 2266 2267 6 PROB(3,3,1),NFLG,KBTMP(602).ITMP(300)),XUTMP(602),Xll MP(()02), 2268 7 LTMP(602),NROWP(3,3,1),NCOLP(3,3,1),NrH(3,3,1),NR 2269 COMMON/BLOCK3/ NND(5),NPASS,JPER(5),JCtJR,JPASS,NPER 2270 COMMON/BLOCK4/ BND(350),XTOPT,XRHO,YPIBAR(602),YBX(35().ICF(3.), 2271 1 PRBV(3,5),PRST(5,5,5),CBST(3,5),IBASF.JSTCH(5,5,5),!'tUVR(?), 2272 2 NXNF(3),INFLG,NETND(10),INST(5),MXNS-TST 2273 C 2274 C FIRST, FORM THE ROW 2275 C 2276 WRITE(6,200) 2277 200 FORMAT(' MAKING A FEASIBILITY CUT') 2278 JC=JCUR 2279 J2=JPER(2) 2280 J3=JPER(3) 2281 JCT=JC 2282 J2T=J2 2283 J2L=J2 2284 J3T=J3 2285 IF(JC.EQ. 2) J2=1 2286 IF(JC.EQ. 3) J3=1 2287 KNCO=NCOL(JC-1,J2,J3)+1 2288 DO 10 J=1,KNCO 2289 Y(J)=O. 2290 YTEMP(J)=O. 2291 10 CONTINUE 2292 C 2293 C COLUMN BY COLUMN IN TEMP STOR 2294 IF(JCUR.EQ.NPER) J2L=1 2295 C 2296 IF(JCT.EQ.NPER) NROWP(JCT,J2L.J3T)=NROWI'(dJCT,1,1) 2297 JND=NROW(JC-1,J2,J3)+1 2298 IF(NROWP(JC-1,J2,J3).GE.NROWP(JCT,J2L, J3l)) NRO=NROWP (,!' r, 12L, J3r ) 2299 IF(NROWP(JC-11,J2,J3).LT.NhROWP( JCT,J21-, 31 ) NRO=NROWP( 'C-. J2,,13) 2300 JNX = NROW(JC-1,J2,J3) - NRO 2301 JCUR=JC-1 2302 JPER(2)=J2 2303 JPER(3)=J3 2304 KNC=NCOL(JC-1,J2,J3) 2305 DO 30 J=JND,KNC 2306 JNL=J-JNX 2307 CALL BUNPCK(JNL) 2308 KNR=NROW(JCT,J2L,J3T) 2309 DO 20 K=1,KNR 2310 YTEMP(J)=YTEMP(J)+YPI(K,JCT,J2L,J3T)*Y(K) 2311 20 CONTINUE 2312 30 CONTINUE 2313 C 2314 C FIND RHS TOO 2315 C 2316 KNR=NROW(JCT,J2L,J3T) 2317 DO 40 K=1,KNR 2318 YTEMP(NCOL(JC-1,J2,J3)+1)=YTEMP(NCOL(JC-1,J2,J3)+1)+ 2319 1 YPI(K,JCT,J2L,J3T)*XKSI(K,JCT,J2L,J3T) 2320 40 CONTINUE

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=K8GB Page 41 2321 C CHANGE RHS FOR UPPER BOUNDED VARIABLES 2322 KNC=NCOL(JCT,d2L,J3T) 2323 DO 41 K=1,KNC 2324 IF(KINBAS(K,JCT,J2L,J3T).NE.-1) GO TO 41 2325 JCUR=JCUR+1 2326 CALL UNPACK(K) 2327 JCUR=JCUR-1 2328 CBAR=O 2329 DO 42 J=1,KNR 2330 CBAR=CBAR + Y(J)*YPI(J,JCT,J2L,J3T) 2331 42 CONTINUE 2332 YTEMP(NCOL(JC-1,d2,J3)+1)=YTEMP(NCOL(dC-1,J2,3)+I)-CBAR* 2333 1 XUB(K,JCT,J2L,J3T) 2334 41 CONTINUE 2335 C 2336 C SHIFT A(*,JC-1,J2,J3) DOWN 2337 C FIRST, COPY INTO TEMPS 2338 C 2339 KLM=NELM(JC-1,J2,J3) 2340 DO 50 I=1,KLM 2341 ATMP(I)=A(I,JC-1,J2,J3) 2342 ITMP(I)=IA(I,JC-1,J2,J3) 2343 50 CONTINUE 2344 C 2345 C ADD COL AND ROW FOR SLACK 2346 C 2347 NCOL(JC-1,J2,J3)=NCOL(JC-1,J2,J3)+1 2348 NROW(JC-1,J2,J3)=NROW(JC-1,J2,J3)+1 2349 NELM(dC-1,J2,J3)=NELM(JC-1,d2,J3)+NCOL(JC-1,d2,J3)2350 1 NROW(JC-1,J2,J3)+1 2351 JH(NROW(JC-1,J2,J3),JC-1,J2,J3)=NROW(Jd'-1,J2,J3) 2352 C 2353 C COPY COL VALUES 2354 C 2355 KNCM=NCOL(JC-1,J2,J3)-1 2356 DO 60 I=1,KNCM 2357 KBTMP(I)=KINBAS(I,JC-1,J2,J3) 2358 LTMP(I)=LA(I,JC-1,J2,J3) 2359 XLTMP(I)=XLB(I,JC-1,J2,J3) 2360 XUTMP(I)=XUB(I,JC-1,J2,J3) 2361 60 CONTINUE 2362 C 2363 C UPDATE COLUMNS 2364 C 2365 KINBAS(NROW(JC-1,J2,d3),,JC- 1, d2,3)=NROW(JIC-1,J2,d3) 2366 LA(NROW(JC-1,J2,03),JC-1,J2,J3)=NROW(JC-1,J2,J3) 2367 XLB(NROW(JC-1,J2,J3),dC-1,J2,J3)=0. 2368 XUB(NROW(JC-1,J2,J3),JC-1,J2,J3)=1.OE+7 2369 JND=0 2370 C 2371 KNRO=NROW(JC-1,J2,J3)+1 2372 KNC=NCOL(JC-1,J2,J3) 2373 DO 70 I=KNRO,KNC 2374 JND=JND+1 2375 LA(I,JC-1,J2,J3)=LTMP(I-1)+JND 2376 KINBAS(I,JC-1,J2,J3)=KBTMP(I-1) 2377 XLB(I,JC-1,J2,J3)=XLTMP(I-1) 2378 XUB(I,JC-1,J2,J3)=XUTMP(I-1)

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=K86B Page 42 2379 70 CONTINUE 2380 LA(NCOL(JC-1,J2,J3)+1,JC-1,J2,J3)=NELM(JC-1,J2,J3)+1 2381 C 2382 A(NROW(JC-1,J2,J3),JC-1,J2,J3)=1. 2383 IA(NROW(JC-1,J2,J3),JC-1,J2,J3)=NROW(JC-1,J2,J3) 2384 C 2385 C UPDATE A AND IA 2386 C 2387 DO 80 I=KNRO,KNC 2388 IND=I 2389 KND=LA(IND,JC-1,J2,J3)-1 2390 IF(KND.EQ.NROW(JC-1,J2,J3)) GO TO 81 2391 IF(DABS(YTEMP(IND-2)).GE. ZTOLZE) GO TO 75 2392 C 2393 C SHIFT ALL DOWN 2394 C 2395 NELM(JC,J2,J3)=NELM(JC,J2,J3)-1 2396 KKNC=KNC+1 2397 DO 72 II=IND,KKNC 2398 LA(II,JC,J2,J3)=LA(II,JC,J2,J3)-1 2399 72 CONTINUE 2400 KLM=NELM(JC,J2,J3)+1 2401 DO 73 II=KND,KLM 2402 A(II,JC,J2,J3)=A(II+1,JC,J2,J3) 2403 IA(II,JC,J2,J3)=IA(II+1,JC,J2,J3) 2404 73 CONTINUE 2405 GO TO 81 2406 75 CONTINUE 2407 A(KND,JC-1,J2,J3)=YTEMP(IND-2) 2408 IA(KND,JC-1,J2,J3)=NROW(dC-1,J2,J3) 2409 81 CONTINUE 2410 MND=LA(IND+1,JC-1,J2,J3)-2 2411 IF(IND.EQ.NCOL(JC-1,J2,J3)) MND=NELM(JC-1,J2,J3)-1 2412 KKND=KND+1 2413 DO 90 J=KKND,MND 2414 JNX=J-IND+NROW(JC-1,J2,J3) 2415 A(J,JC-1,J2,J3)=ATMP(JNX) 2416 IA(J,JC-1,J2,J3)=ITMP(JNX) 2417 90 CONTINUE 2418 80 CONTINUE 2419 C 2420 C SPECIAL FOR NO LOOK CUTS 2421 IF(NTH(JC-1,J2,J3).EQ.1) GO TO 82 2422 A(NELM(JC-1,J2,J3),JC-1,d2,J3)=YTEMP(NCOL(C-1,J2,J3)- 1) 2423 IA(NELM(JC-1,J2,J3),JC-1,J2,J3)=NROW(JC-1,J2,J3) 2424 GO TO 83 2425 82 CONTINUE 2426 A(NELM(JC-1,J2,J3),JC-1,J2,J3)=0. 2427 IA(NELM(JC-1,J2,J3),JC-1,J2,J3)=NROW(JC-1,J2,J3) 2428 83 CONTINUE 2429 C UPDATE THE JH TOO 2430 KNRM=NROW(JC-1,J2,J3)-1 2431 DO 85 I=1,KNRM 2432 IF (JH(I,JC-1,J2,J3).GE.NROW(JC-1,J2,J3)) 2433 1 JH(I,JC-1,J2,J3)=JH(I,JC-1,J2,J3)+1 2434 85 CONTINUE 2435 C 2436 C NEW RHS

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=K36R Page 43 2437 C 2438 XKSI(NROW(JC-1,J2,J3),JC-1,J2,d3)=YTEMFr(NCOL(JC-1,J2,,J- )) 2439 B(NROW(JC-1,J2,J3),dC-1,J2,J3)=YTEMP(NCOL(JC-1,J2,J3)) 2440 JCUR=JCT 2441 JPER(2)=J2T 2442 JPER(3)=J3T 2443 DO 3001 1=1,3000 2444 IF(IA(I,1,1,1).GT.300) STOP 2445 3001 CONTINUE 2446 RETURN 2447 END 2448 C --- —---------------------------------- 2449 SUBROUTINE LKHDCT(NODE) 2450 C 2451 C ADDS A LOOK-AHEAD CUT TO THE PREVIOUS NODE. 2452 C 2453 IMPLICIT REAL*4 (A,C,E-H,O,P,R-W,Z), REAL" 8 (B,D,X,Y). 24541 INTEGER*4 (I-N,Q) 2455 INTEGER JH,KINBAS,LA,LE,IA,IE,NODE 2456 INTEGER ICNAM(602,2),NAME(6) 2457 DOUBLE PRECISION E(3000),ATEMP1,ATEMP2 2458 REAL A(3000,3,3,1) 2459 C 2460 COMMON DE,DP,B(350,3,3,1),X(350,3,3,1),Y(350),YTEMP(G6!?),YI'EMP1(6 2461 1 22),XLB(602,3,3,1),XUB(602,3,3,1),XK'I( 350,3.,3,1),Yr"I(350,3,3,1) 2462 1,A,E,MSTAT,IOBJ,IROWP,ITCNT, 2463 2 INVFRQ,ITRFRQ,JCOLP,NROW(3,3,1),NCOL(3,3,1),NELEM,NFIM(3.3,1 2464 2 ),NETA, 2465 3 NLELEM,NLETA,NUELEM,NUETA,JH(3503,3,3,),KINBAS(602,':, I),LA( 2466 3 602,3,3,1), 2467 4 LE(1002),IA(3000,3,3,1),IE(3000), 2468 5 ATMP(3000),ABN(600,3,3.1),IBN(600,3,:,1),LBN(602,3,:.I). 2469 2470 6 PROB(3,3,1),NFLG,KBTMP(602),ITMP(3000),XUTMP(602),XL I'TMP(G02), 2471 7 LTMP(602),NROWP(3,3,1),NCOLP(3,3,1),NTH(3,3,1),NR 2472 COMMON/BLOCK3/ NND(5),NPASS,JPER(5),JCUR,JPASS,NPER 2473 COMMON/BLOCK4/ BND(350),XTOPT,XRHO,YPIBAR(602),YBX(35()),IBST(3), 2474 1 PRBV(3,5),PRST(5,5,5),CBST(3,5),IBASE, JSTCH(5,5,5),5,rI'UR( '), 2475 2 NXNF(3),INFLG,NETND(10),INS'I(5),MXNSI,NST 2476 C 2477 C INITIALIZE 2478 C 2479 WRITE(6,200) 2480 200 FORMAT(' MAKING A LOOKAHFAD ClUT') 2481 JC=NODE 2482 JCT=JCUR 2483 J2=JPER(2) 2484 J2T=JPER(2) 2485 J2L=JPER(2) 2486 IF(JC.EQ.NPER-1) J2L=1 2487 J3=1 2488 J3T=JPER(3) 2489 IF(NODE EQ. 2) J2=1 2490 KNC=NCOL(JC,J2,J3)+1 2491 DO 10 J=1,300 2492 Y(J)=0. 2493 YTEMP(J)=O. 2494 YTEMP1(J)-O.

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=K86B Page 44 2495 10 CONTINUE 2496 C 2497 C COL BY COL INTO YTEMP 2498 C 2499 IF(JC+1.GE.NPER) NROWP(JC+1,J2L,J3) = NROWP(JC+1,1,1) 2500 JC=JC-1 2501 JND=NROW(JC,J2,J3)+1 2502 IF(NROWP(JC,J2,J3).GE.NROWP(JC+1,J2L,J3)) NRO = NROWPtJCI,J2L,J3) 2503 IF(NROWP(JC,J2,J3).LT.NROWP(JC+1,d2L,J3)) NRO = NROWP(,JC,d2,J3) 2504 JNX = NROW(JC,J2,J3) - NRO 2505 KNC=NCOL(JC,J2,J3) 2506 IF(NTH(JC,J2,J3).EQ.1) KNC=KNC-1 2507 DO 30 J=JND,KNC 2508 JNL=J-JNX 2509 JCUR=JC 2510 JPER(2)=J2 2511 JPER(3)=J3 2512 CALL BUNPCK(JNL) 2513 IF(NODE.LT. NPER) GO TO 19 2514 KNR=NROW(NPER,1,1) 2515 DO 18 L=2,KNR 2516 YTEMP(J)=YTEMP(J)+Y(L)*YPIBAR(L) 2517 18 CONTINUE 2518 GO TO 30 2519 19 CONTINUE 2520 NNDD=NND(JC+I) 2521 DO 25 L=1,NNDD 2522 YTEMP1(J)=O. 2523 IF(JC+1.EQ. 2) KNR=NROW(JC+1.L,J3) 2524 IF(JC+1.EQ. 3) KNR=NROW(JC+1,J2L,L) 2525 DO 20 K=1,KNR 2526 IF(JC+1.EQ. 2) YTEMP1(J)=YTEMP1(J)+YPI(K,JC+1.L,d3)*Y(K) 2527 IF(JC+1.EQ. 3) YTEMP1(J)=YTEMP1(J)+YPI(K,JC+1.J2LL)*Y(K) 2528 20 CONTINUE 2529 IF(JC+1.EQ. 2) YTEMP(J)=YTEMP(J)+PROB(JC+1,L,J3)*YTEMP1(J) 2530 IF(JC+1.EQ. 3) YTEMP(J)=YTEMP(J)+PROB(JC+1,J2L,L)+YTEMP1(J) 2531 25 CONTINUE 2532 30 CONTINUE 2533 C 2534 C RHS GOES IN TOO 2535 C 2536 IF(NODE.LT. NPER) GO TO 31 2537 YTEMP(NCOL(JC,J2,J3)+1)=XRHO 2538 GO TO 39 2539 31 CONTINUE 2540 DO 35 L=1,NNDD 2541 YTEMPI(NCOL(JC,J2,J3)+1)=0. 2542 IF(dC+1 EQ. 2) KNR=NROW(JC+1,L,J3) 2543 IF(JC+1 EQ. 3) KNR=NROW(JC+1,J2L,L) 2544 DO 40 K=1,KNR 2545 IF(JC+1.EQ. 2) YTEMP1(NCOL(JC,J2,J3)+1)= 2546 1 YTEMP1(NCOL(JC,J2,J3)+1)+YPI(K,JC+1,L,J3)*XKSI(K,,I C+1 I,J3) 2547 IF(JC+1.EQ. 3) YTEMP1(NCOL(JC,J2,J3)f1)= 2548 1 YTEMP1(NCOL(JC,J2,J3)+1)+YPI(K,JC+1,J2L,L)*XKSI(K,JC+1.J2L,L) 2549 2550 40 CONTINUE 2551 IF(JC+1.EQ. 2) YTEMP(NCOL(JC,J2,J3)+1)= 2552 1 YTEMP(NCOL(JC,J2,J3)+1)+PROB(JC+1,L.J3)*YTEMP1(NCOL(C.,J2,J3)+1)

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=K86B Page 45 2553 IF(JC+I.EQ. 3) YTEMP(NCOL(JC,J2,J3)+I)= 2554 1 YTEMP(NCOL(JC,J2,J3)+1)+PROB(JC+1,J2L,L)*YTEMP1(NCOL(,JC,J2,J3)+1) 2555 35 CONTINUE 2556 C 2557 C SHIFT A(*,1) DOWN 2558 C FIRST, COPY INTO TEMPS 2559 C 2560 39 CONTINUE 2561 KLM=NELM(JC,J2,J3) 2562 DO 50 I=1,KLM 2563 ATMP(I)=A(I,JC,J2,J3) 2564 ITMP(I)=IA(I,JC,J2,J3) 2565 50 CONTINUE 2566 C 2567 C ADD COL AND ROW FOR SLACK 2568 C 2569 NCOL(JC,J2,J3)=NCOL(JC,J2,J3)+1 2570 NROW(JC,J2,J3)=NROW(JC,J2,J3)+1 2571 NELM(JC,J2,d3)=NELM(JC,J2,J3)+NCOL(JC,J2,J3)-NROW(JC,J2,J3)+1 2572 JH(NROW(JC,J2,J3),JC,J2,J3)=NROW(JC,J2,J3) 2573 C 2574 C COPY COL VALUES 2575 C 2576 KNCM=NCOL(JC,J2,J3)-1 2577 DO 60 I=1,KNCM 2578 KBTMP(I)=KINBAS(I,JC,J2,J3) 2579 LTMP(I)=LA(I,JC,J2,J3) 2580 XLTMP(I)=XLB(I,JC,J2,J3) 2581 XUTMP(I)=XUB(I,JC,J2,J3) 2582 60 CONTINUE 2583 C 2584 C UPDATE COLUMNS 2585 C 2586 KINBAS(NROW(JC,J2,J3),JC,J2,J3)=NROW(JC,J2,J3) 2587 LA(NROW(JC,J2,J3),JC,J2,J3)=NROW(JC,J2,J3) 2588 XLB(NROW(JC,J2,J3),JC,J2,J3)=0. 2589 XUB(NROW(JC,J2,d3),JC,J2,J3)=1.E7 2590 JND=0 2591 C 2592 KNRO=NROW(JC,J2,J3)+1 2593 KNC=NCOL(JC,J2,J3) 2594 DO 70 I=KNRO,KNC 2595 JND=JND+1 2596 LA(I,JC,J2,J3)=LTMP(I-1)+JND 2597 KINBAS(I,JC,J2,J3)=KBTMP(I-1) 2598 XLB(I,JC,J2,J3)=XLTMP(I-.1) 2599 XUB(I,JC,J2,J3)=XUTMP(I-1) 2600 70 CONTINUE 2601 LA(NCOL(JC,J2,J3)+1,JC,J2,J3)=NELM(JC,d2,J3)+1 2602 C 2603 A(NROW(JC,J2,J3),JC,J2,J3)=1. 2604 IA(NROW(JC,J2,J3),JC,J2,d3)=NROW(JC,.2,d3) 2605 C 2606 C UPDATE A AND IA 2607 C 2608 DO 80 I=KNRO,KNC 2609 IND=I 2610 KND=LA(IND,JC,J2,J3)-1

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=K86B Page 46 2611 IF(KND.EQ.NROW(JC,J2,J3)) GO TO 81 2612 IF(DABS(YTEMP(IND-2)).GE. ZTOLZE) GO 10 75 2613 C 2614 C SHIFT ALL DOWN 2615 C 2616 NELM(JC,J2, 3)=NELM(C,J2,J3)- 1 2617 KKNC=KNC+1 2618 DO 72 II=IND,KKNC 2619 LA(II,JC,J2,J3)=LA(II,JC.J2,J3)-1 2620 72 CONTINUE 2621 KLM=NELM(JC,J2,J3)+1 2622 DO 73 II=KND,KLM 2623 A(II,JC,J2,J3)=A(II+1,JC,J2,J3) 2624 IA(II,JC,J2,J3)=IA(II+1,JC,J2,J3) 2625 73 CONTINUE 2626 GO TO 81 2627 75 CONTINUE 2628 A(KND,dC,J2,J3)=YTEMP(IND-2) 2629 IA(KND,JC,J2,J3)=NROW(JC,J2,J3) 2630 81 CONTINUE 2631 MND=LA(IND+1,JC,J2,J3)-2 2632 IF(IND.EQ..NCOL(JC,J2,J3)) MND=NELM(JC.J2,3)-1 2633 KKND=KND+1 2634 DO 90 J=KKND,MND 2635 JNX=J-IND+NROW(JC,J2,J3) 2636 A(J,JC,J2,J3)=ATMP(JNX) 2637 IA(J,JC,J2,J3)=ITMP(JNX) 2638 90 CONTINUE 2639 80 CONTINUE 2640 C 2641 C CHECK FOR FIRST CUT 2642 IF (NTH(JC,J2,J3).EQ.1) GO TO 811 2643 A(NELM(JC,J2,J3),JC,J2,tJ3)=YTEMP(NCOL(JC,J2,J3)-1) 2644 IA(NELM(JC,J2,J3),JC,J2,J3)=tIROW(JC,J?. d3) 2645 811 CONTINUE 2646 C 2647 C NEW RHS 2648 C 2649 XKSI(NROW(JC,J2,J3),JC,J2,J3)-YTEMP(NCOL(JC,J2,d3)) 2650 B(NROW(JC,J2,J3),JC,J2,J3)=YrEMP(NCOL(JC,J2,J3)) 2651 C CHECK IF THIS IS THE FIRST TIME 2652 IF(NTH(JC,J2,J3).EQ.1) GO TO 100 2653 NTH(JC,J2,J3)=1 2654 NCOL(JCJ2,J3)=NCOL(JC,J2,J3)4-1 2655 NELM(JC,J2,J3)=NELM(JC,J2,J3)11 2656 A(NELM(JC,J2,J3),JC,J2,J3)=-1. 2657 IA(NELM(JC,J2,J3),JC,d2,J3)=1 2658 NELM(JC,J2,J3)=NELM(JC,.J2,J3)-'1 2659 C ADD THETA 2660 LA(NCOL(JC,J2,J3)+1,JC,J2,J3)=NELM(JC,J2,J3)+1 2661 XUB(NCOL(JC,J2,tJ3),JC,J2.J3)=1.OE7 2662 XLB(NCOL(JC,J2,J3),JC,J2,J3)=-1.0E7 2663 C MAKE THETA BASIC NOT THE SLACK 2664 KINBAS(NROW(JC,J2,J3),JC,J2,J3)=0 2665 KINBAS(NCOL(JC,J2,J3),JCJ2,03)=NROW(JC.J2,d3) 2666 JH(NROW(JC,J2,J3),JC,J2,J3)=NCOL(JC,J2.,J3) 2667 C UPDATE THE JH TOO 2668 100 KNRM=NROW(JC,J2,J3)-1

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=K86B Page 47 2669 DO 85 I=1,KNRM 2670 IF (JH(I,JC,J2,J3).GE.NROW(JC,J2,J3)) 2671 1 JH(I,JC,J2,J3)=JH(I,JC,J2,J3)+l 2672 85 CONTINUE 2673 C NOW, A "1" FOR THETA. 2674 C 2675 A(NELM(JC,J2,J3),JC,J2,J3)=1. 2676 IA(NELM(JC,J2,J3),JC,J2,J3)=NROW(JC,J2,J3) 2677 JCUR=JCT 2678 JPER(2)=J2T 2679 JPER(3)=J3T 2680 RETURN 2681 END 2682 C --- —---------------------------------- 2683 SUBROUTINE FRMRHS 2684 C 2685 C TAKES B.X AND B TO MAKE A NEW RHS 2686 C 2687 IMPLICIT REAL*4 (A,C,E-H,O,P,R-W,Z), REAL*8 (B,D,X,Y), 26881 INTEGER*4 (I-N,Q) 2689 INTEGER JH,KINBAS,LA,LE,IA,IENODE 2690 INTEGER ICNAM(602,2),NAME(6) 2691 DOUBLE PRECISION E(3000),ATEMP1,ATEMP2 2692 REAL A(3000,3,3,1) 2693 C 2694 COMMON DE,DP,B(350,3,3,1),X(350,3,3,1).Y(350),YTEMP(o60),YTEMP1(6 2695 1 22),XLB(602,3,3,1),XUB(602,3,3,1),XKSI(350,3,3,1),YPI(350,3,3,1) 2696 1,A,E,MSTAT,IOBJ,IROWP,ITCNT, 2697 2 INVFRQ,ITRFRQ,JCOLP,NROW(3,3,1),NCOL(3,3,1),NELEM,NEI.M(3,3,1 2698 2 ),NETA, 2699 3 NLELEM,NLETA,NUELEM,NUETA,JH(350,3,3.1),KINBAS(602,',3,1),LA( 2700 3 602,3,3,1), 2701 4 LE(1002),IA(3000,3,3,1),IE(3000), 2702 5 ATMP(3000),ABN(600,3,3,1),IBN(600,3,3,1),LBN(602,3,3,1), 2703 2704 6 PROB(3,3,1),NFLG,KBTMP(602),ITMP(3000),XUTMP(602),XI rMP(602), 2705 7 LTMP(602),NROWP(3,3,1),NCOLP(3,3,1),HN1(3,3,1),NR 2706 COMMON/BLOCK3/ NND(5),NPASS,JPER(5),JCUR,JPASS,NPER 2707 COMMON/BLOCK4/ BND(350),XTOPT,XRHO,YPIBAR(602),YBX(350),IBST(3), 2708 1 PRBV(3,5),PRST(5,5,5),CBST(3,5),IBASE,JSTCH(5,5,5),NCUR(3), 2709 2 NXNF(3),INFLG,NETND(10),INST(5),MXNST,NST 2710 JC=JCUR+1 2711 J2=JPER(2) 2712 J3=JPER(3) 2713 IF(JCUR.EQ.NPER-1) J2=1 2714 IF(JCUR.EQ.NPER-1) J3=1 2715 NNDD=NND(JC) 2716 DO 200 J=1,NNDD 2717 KNR=NROW(JC,J2,J3) 2718 DO 100 I=2,KNR 2719 IF(JC EQ. 3) B(I,JC,J2,J)=XKSI(I,JC.J,?,J)-Y(I) 2720 IF(JC EQ. 2) B(I,JC,J,1)=XKS](I,JC,J,1)-Y(I) 2721 100 CONTINUE 2722 200 CONTINUE 2723 RETURN 2724 END 2725 C --- —---------------------------------------- 2726 SUBROUTINE BPRODX

Listing 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=KR6R Page 48 C C FINDS TH VALUE OF BX FOR THE NEXT PERIOD INVENTORIES C AND PUTS IT INTO Y C IMPLICIT REAL*4 (A,C,E-H.O,P,R-W,Z), REAL*8 (B,D,X,Y). 1 INTEGER*4 (I-N,Q) INTEGER JH,KINBAS,LA,LE,IA,IE,NODE INTEGER ICNAM(602,2),NAME(6) DOUBLE PRECISION E(3000),ATEMP1,ATEMP2 REAL A(3000,3,3,1) C COMMON DE,DP,B(350,3,3,1),X(350,3,3,1),Y(350),YTEMP(602),YTEMP1(6 1 22),XLB(602,3,3,1),XUB(602,3,3,1),XKSI(350,3,3,1),YrP(350,3,3,1) 1,A,E,MSTAT,IOBJ,IROWP,ITCNT, 2 INVFRQ,ITRFRQ,JCOLP,NROW(3,3,1),NCOL(3,3,1),NELEM,NFLM(3.3,1 2 ),NETA, 3 NLELEM,NLETA,NUELEM,NUETA,JH(350,3,3.1),KINBAS(602,3,3,1),LA( 3 602,3,3,1), 4 LE(1002),IA(3000,3,3,1),IE(3000), 5 ATMP(3000),ABN(600,3,3,1),IBN(600,3,3,1),LBN(602,,,1), 6 PROB(3,3,1),NFLG,KBTMP(602),ITMP(3000),XUTMP(602),XllMP(602), 7 LTMP(602),NROWP(3,3,1),NCOLP(3,3,1),NTH(3,3,1),NR COMMON/BLOCK3/ NND(5),NPASS,JPER(5),JCUR,JPASS,NPER COMMON/BLOCK4/ BND(350),XTOPT,XRHO,YPIBAR(602),YBX(350),IBST(3), 1 PRBV(3,5),PRST(5,5,5),CBST(3,5),IBASE,JSTCH(5,5,5),NCUR(3), 2 NXNF(3),INFLG,NETND(10),INST(5),MXNST,NST C C SET Y'S C JCT=JCUR J2=JPER(2) J3=JPER(3) JC=JCUR+1 IF(JC.EQ.NPER)NROWP(JC,J2,J3)=NROWP(JC,1,1) KNRO=NROW(JC,J2,J3) DO 10 I=1,KNRO YTEMP(I)=O. Y(I)=O. 10 CONTINUE C C MULTIPLY BY THE BASIC COLS' VALUES IF(NROWP(JCT,J2,J3).GE.NROWP(JC,J2,J3)) NRO = NROWP(JC,J2,J3) IF(NROWP(JCT,J2,J3).LT.NROWP(JC,J2,J3)) NRO = NROWP(rF.J?.2,J3) KNRO=NROW(JCT,J2,J3)+1 KNC=NCOL(JCT,J2,J3) DO 20 J=KNRO,KNC JND=J-NROW(JCT,J2,J3)+NRO IF(JND-NRO.GT.NCOLP(JCT,J2,J3)-NROWP(JCT,d2,J3)) GO TO 20 13 CONTINUE CALL BUNPCK(JND) IF(KINBAS(J,JCT,J2,J3).EQ.O) XIN=XLB(J,JCT,J2,J3) IF(KINBAS(J,JCT,J2,J3).EQ.O) GO TO 114 IF(KINBAS(J,JCT,J2,J3).EQ.-1) XIN=XUB(J,JCT,J2,J3) IF(KINBAS(J,JCT,J2,J3).EQ.-1) GO TO 114 XIN=X(KINBAS(J,JCT,J2,J3),JCT,J2,J3) 114 CONTINUE KNRD=NROW(JC,J2,J3)

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid-K86B Page 49 2785 DO 15 I=1,KNRD 2786 14 Y(I)=Y(I)*XIN 2787 YTEMP(I)=Y(I)+YTEMP(I) 2788 15 CONTINUE 2789 20 CONTINUE 2790 C 2791 DO 25 I=1,KNRD 2792 Y(I)=YTEMP(I) 2793 25 CONTINUE 2794 RETURN 2795 END 2796 C --- —------------------------------------------------- 2797 SUBROUTINE OPTCHK(NODE) 2798 C 2799 C CHECKS FOR MASTER-SUB OPTIMALITY 2800 C 2801 IMPLICIT REAL*4 (A,C,E-H,O,P,R-W,Z), RFAL*8 (B,D,X,Y). 2802 1 INTEGER*4 (I-N,Q) 2803 INTEGER JH,KINBAS,LA,LE,IA,IE,NODE 2804 INTEGER ICNAM(602,2),NAME(6) 2805 DOUBLE PRECISION E(3000),ATEMP1,ATEMP2 2806 REAL A(3000,3,3,1) 2807 C 2808 COMMON DE,DP,B(350,3,3,1),X(350,3,3,1),Y(350),YTEMP(602),YrEMPl(6 2809 1 22),XLB(602,3,3,1),XUB(602,3,3,1),XKSI(350,3,3,1),YPr(350,3,3,1) 2810 1,A,E,MSTAT,IOBJ,IROWP,ITCNT, 2811 2 INVFRO,ITRFRQ,JCOLP,NROW(3,3,1),NCOL(3,3,1),NELEM,NEIM(3,3,1 2812 2 ),NETA, 2813 3 NLELEM,NLETA,NUELEM,NUETA,JH(350,3,3,1),KINBAS(602,,3.3,1),LA( 2814 3 602,3,3,1), 2815 4 LE(1002),IA(3000,3,3,1),IE(3000), 2816 5 ATMP(3000),ABN(600,3,3,1),IBN(600,3,3,1),LBN(602,3,3.1). 2817 2818 6 PROB(3,3,1),NFLG,KBTMP(602),ITMP(3000),XUTMP(602),XI.IFP( 602), 2819 7 LTMP(602),NROWP(3,3,1),NCOLP(3,3,1),NTHI(3,3,1),NR 2820 COMMON/BLOCK3/ NND(5),NPASS,JPER(5),,JCIJR,JPASS,NPER 2821 COMMON/BLOCK4/ BND(350),XTOPTXRHO,YPIBAR(G02),YBX(35!0),RST(3), 2822 1 PRBV(3,5),PRST(,5,55),CBST(3,5),IBASE,, ISTCH(5,5,5),Ir'IJR(7 ). 2823 2 NXNF(3),INFLG,NETND(10),INS'I(5),MXNSl,NST 2824 C 2825 C FIRST, GET THE EXPECTED VALUE 2826 C 2827 XT=O. 2828 J2=JPER(2) 2829 NNDD=NND(NODE) 2830 DO 10 J=1,NNDD 2831 IF(NODE.EQ. 2) XT=XT+PROB(2,J,1)*X(1,2,J,1) 2832 IF(NODE.EQ. 3) XT=XT+PROB(3,J2,J)*X(1,3,J2,J) 2833 10 CONTINUE 2834 C THEN, CHECK 2835 IF(NODE.EQ. 2) JN=KINBAS(NCOL(1,1,1),1,1,1) 2836 IF(NODE.EQ. 3) JN=KINBAS(NCOL(2,J2,1),2,J2,1) 2837 IF(JN.LE.O) RETURN 2838 IF((NODE.EQ. 2).AND. (XT.GE. X(JN,l1,11))) NFLG=1 2839 IF((NODE.EQ. 3).AND. (XT.GE. X(JN,2,J2,1))) NFLG=1 2840 RETURN 2841 END 2842 C --- —----------------------------------

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=K86B Page 50 2843 SUBROUTINE WRAPUP 2844 C 2845 C OUTPUT OPTIMAL SOLUTION 2846 C 2847 IMPLICIT REAL*4 (A,C,E-H,O,P,R-W,Z), REAL*8 (B,D,X,Y). 2848 1 INTEGER*4 (I-N,Q) 2849 INTEGER JH,KINBAS,LA,LE,IA,IE,NODE 2850 INTEGER ICNAM(602,2,3,3,1) 2851 DOUBLE PRECISION E(3000) 2852 REAL A(3000,3,3,1) 2853 DIMENSION XTEMP(602) 2854 EQUIVALENCE (XTEMP(1),Y(1)) 2855 C 2856 COMMON/BL5/ DRES,ICNAM 2857 COMMON/BLOCK2/ ICOL,IVAL,IDIR,NPIVOTIPTYPECMIN,CMAX,APVNINFNOPT 2858 COMMON DE,DP,B(350,3,3,1),X(350,3,3,1),Y(350),YTEMP(602).YTEMPI(6 2859 1 22),XLB(602,,3,3,1),XUB(602,3,3,1),XKSI(350,3,3,1),YPI(350,3,3,1) 2860 1,A,E,MSTAT,IOBJ,IROWP,ITCNT, 2861 2 INVFRQ,ITRFRQ,JCOLP,NROW(3,3,1),NCOL(3,3,1),NELEM,NELM(3.3,1 2862 2 ),NETA, 2863 3 NLELEM,NLETA,NUELEM,NUETA,JH(350,3,3.1),KINBAS(G62,2,3,1),LA( 2864 3 602,3,3,1), 2865 4 LE(1002),IA(3000,3,3,1),IE(3000), 2866 5 ATMP(3000),ABN(600,3,3,1),IBN(600,3,3,1),LBN(602,3,, 1), 2867 2868 6 PROB(3,3,1),NFLG,KBTMP(602),ITMP(3000),XUTMP(602),XI MP(602), 2869 7 LTMP(602),NROWP(3,3,1),NCOLP(3,3,1),NTH(3,3,1),NR 2870 COMMON/BLOCK3/ NND(5),NPASS,JPER(5),JCUR,JPASS,NPER 2871 COMMON/BLOCK4/ BND(350),XTOPT,XRHO,YPIBAR(602),YBX(350),IBST(3), 2872 1 PRBV(3,5),PRST(5,5,5),CBST(3,5),IBASE,JSTCH(5,5,5),N,'UR(3), 2873 2 NXNF(3),INFLG,NETND(10),INST(5),MXNS',NST 2874 IF (ITCNT.LT. ITRFRQ) GO TO 20 2875 WRITE (6,1) ITCNT 2876 1 FORMAT (' SIMPLEX ITERATIONS =',I8,': COMPUTATIONS TERMINATED.') 2877 20 IF (MSTAT.EQ. QN) GO TO 1000 2878 JPER(2)=1 2879 JPER(3)=1 2880 JCUR=NPER 2881 IN1=INST(1) 2882 IN2=INST(2) 2883 IN3=INST(3) 2884 DO 400 I=1,IN1 2885 DO 400 J=1,IN2 2886 DO 400 K=1,IN3 2887 WRITE(6,401) I,J,K 2888 401 FORMAT(//,' LAST PERIOD SOLUTIONS FOR FIRST NODE AT SCFNARI0',3I6) 2889 WRITE(6,403) 2890 403 FORMAT(/,' ROW',GX,' VALUE') 2891 IBASE=JSTCH(I,J,K) 2892 NETA=NETND(IBASE) 2893 XKSI(IBST(1),NPER,1,1)=CBST(1,I) 2894 XKSI(IBST(2),NPER,1,1)=CBST(2,d) 2895 XKSI(IBST(3),NPER,1,1)=CBST(3,K) 2896 JCUR=NPER-1 2897 JPER(NPER-1)=1 2898 CALL BPRODX 2899 CALL FRMRHS 2900 dCUR = NPER

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=K86B Page 51 2901 KNR = NROW(NPER,1,1) 2902 DO 420 IL=1,KNR 2903 Y(IL)=B(IL,NPER,1,1) 2904 420 CONTINUE 2905 CALL FTRAN(1) 2906 DO 402 JK=1,KNR 2907 WRITE(6,412) ICNAM(JK,1,NPER,1,1),ICNAM(JK,2,NPER,1,1),Y(JK) 2908 412 FORMAT(2A4,2X,F13.4) 2909 402 CONTINUE 2910 400 CONTINUE 2911 DO 310 J=1,NPER 2912 NNDD=NND(2) 2913 IF(J.EQ.NPER)NNDD=1 2914 DO 300 K=1,NNDD 2915 NNDDD=NND(3) 2916 IF(J.EQ.NPER)NNDDD=1 2917 DO 295 L=1,NNDDD 2918 NODE=K 2919 dCUR=J 2920 JPER(2)=K 2921 JPER(3)=L 2922 IF((J.EQ.1).AND.((K.NE.1).OR.(L.NE.1))) GO TO 295 2923 IF(J.EQ.2.AND.L.NE.1) GO TO 295 2924 CALL INVERT 2925 WRITE(7,117) 2926 117 FORMAT(' BASIS') 2927 WRITE (6,17) J,K,L 2928 17 FORMAT(//,' PROBLEM NODE = ',I4,'-',I4,'-',I3,//) 2929 WRITE (6,2) X(IOBJ,J,K,L) 2930 2 FORMAT(' OPTIMUM LP OBJECTIVE VALUE =',F10.2) 2931 WRITE(6,11) NPASS 2932 11 FORMAT(' AFTER',I5,' PASSES FROM NODE TO NODE') 2933 WRITE(G,111) ITCNT 2934 111 FORMAT(' AND AFTER',I5,' ITERATIONS') 2935 WRITE (6,3) 2936 3 FORMAT(' OPTIMAL VALUE REACHED AT THE POINT') 2937 KNR=NROW(J,K,L) 2938 DO 100 I=1,KNR 2939 100 XTEMP(JH(I,J,K,L)) = X(I,J,K,L) 2940 KNC=NCOL(J,K,L) 2941 WRITE(G,101) 2942 101 FORMAT(/,' VARIABLE',10X,'STATUS',5X,'VALUE') 2943 DO 200 JJ=1,KNC 2944 JL=JJ 2945 NRDF=NROW(J,K,L)-NROWP(J,K,L) 2946 IF(JJ.GT.NROWP(J,K,L)) JL=JJ-NRDF 2947 IF(JL.GT.NCOLP(J,K,L)) GO TO 200 2948 IF((JL.LT.JJ).AND.(JL.LE.NROWP(J,K,L))) GO TO 200 2949 IF (KINBAS(JJ,J,K,L).GT.O) GO TO 151 2950 IF (KINBAS(JJ,J,K,L).EQ.O) GO TO 150 2951 XTEMP(JJ) = XUB(JJ,J,K,L) 2952 GO TO 151 2953 150 XTEMP(JJ) = XLB(JJ,J,K,L) 2954 151 CONTINUE 2955 KB=KINBAS(JJ,J,K,L) 2956 WRITE(6,102) ICNAM(JL,1,J,K,L),ICNAM(JL,2,J,K,L),KB,XTEMP(JJ) 2957 102 FORMAT(2A4,12X,I4,5X,F12.4) 2958 IF(KB.LE.O) GO TO 200

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=K8GB Page 52 2959 IF(KB.GT.NROWP(J,K,L)) GO TO 200 2960 WRITE(7,118) ICNAM(JL,1,J,K,L),ICNAM(JL,2,J,K,L),ICNAr1(KB 1,J,K,L) 2961 1,ICNAM(KB,2,J,K,L) 2962 118 FORMAT(4X,2A4,2X,2A4) 2963 200 CONTINUE 2964 CALL FORMC 2965 CALL BTRAN 2966 WRITE(6,6) 2967 6 FORMAT(' OPTIMAL DUAL VALUES') 2968 WRITE(6,4) (Y(JJ),JJ=1,KNR) 2969 4 FORMAT(8F9.2) 2970 295 CONTINUE 2971 300 CONTINUE 2972 310 CONTINUE 2973 RETURN 2974 1000 WRITE (6,5) 2975 5 FORMAT (' NO FEASIBLE SOLUTION FOUND.') 2976 JCUR=1 2977 JPER(2)=1 2978 JPER(3)=1 2979 CALL STRPRT 2980 RETURN 2981 END 2982 C --- —------------------------------------- ------ -- 2983 SUBROUTINE INIT 2984 C 2985 C 2986 IMPLICIT REAL*4 (A,C,E-H,O,P,R-W,Z), REAL*8 (B,D,X,Y), 2987 1 INTEGER*4 (I-N,Q) 2988 INTEGER JH,KINBAS,LA,LE,IA,IE,NODE 2989 INTEGER ICNAM(602,2),NAME(6) 2990 DOUBLE PRECISION E(3000),ATEMP1,ATEMP2 2991 REAL A(3000,3,3,1) 2992 C 2993 COMMON/BLOCK/ ZTOLZE,ZTOLPV,ZTCOST,ZTOISM,NEGINF,NEMAX,NRMAX, 2994 1 NTMAX,QBL,QA,QI,QF,QN,QB,QCQE,QH,QL.QO,QR,QM,QG,QS,-P 2995 COMMON DE,DP,B(350,3,3,1),X(350,3,3,1),Y(350),YTEMP(6C?),YTEMPI(6 2996 1 22),XLB(6022,3,3,1),XUB(602,3,3,1),XKSI(350,3,3,1),YP (35C,3,3,1) 2997 1,A,E,MSTAT,IOBJ,IROWP,ITCNT, 2998 2 INVFRQ,ITRFRQ,JCOLP,NROW(3,3,1),NCOL(3,3,1),NELEM,NFI M(3,3,1 2999 2 ),NETA, 3000 3 NLELEM,NLETA,NUELEM,NUETA,JH(350,3,3.1),KINBAS(602,3.3,1),LA( 3001 3 602,3,3,1), 3002 4 LE(1002),IA(3000,3,3,1),IE(3000), 3003 5 ATMP(3000),ABN(600,3,3,1),IBN(600,3,3,1),LBN(602,3,l.1), 3004 3005 6 PROB(3,3,1),NFLG,KBTMP(602),ITMP(3000),XUTMP(602),XI.IMP(602), 3006 7 LTMP(602),NROWP(3,3,1),NCOLP(3,3,1),NNTH(3,3,1),NR 3007 COMMON/BLOCK3/ NND(5),NPASS,JPER(5),JCUR,JPASS,NPER 3008 COMMON/BLOCK4/ BND(350),XTOPT,XRHO,YPIBAR(602),YBX(350),IBST(3), 3009 1 PRBV(3,5),PRST(5,5,5),CBST(3,5),IBASE,JSTCH(5,5,5),t(NUR(3), 3010 2 NXNF(3),INFLG,NETND(10),INST(5),MXNST,NST 3011 C 3012 DO 40 I=1,3000 3013 DO 30 J=1,3 3014 DO 20 K=1,2 3015 DO 10 L=1,2 3016 A(I,J,K,L)=O.O

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=K86B Page 53 3017 IA(I,J,K,L)=O 3018 IF(I.GT. 500) GO TO 10 3019 ABN(I,J,K,L)=O.O 3020 IBN(I,J,K,L)=O.O 3021 IF(I.GT. 522) GO TO 10 3022 XLB(I,J,K,L)=O.O 3023 XUB(I,J,K,L)=O.O 3024 KINBAS(I,J,K,L)=O 3025 LA(I,J,K,L)=O 3026 LBN(I,J,K,L)=O 3027 IF(I.GT. 300) GO TO 10 3028 XKSI(I,J,K,L)=O.O 3029 YPI(I,d,K,L)=O.O 3030 JH(I,J,K,L)=O 3031 X(I,J,K,L)=O.O 3032 B(I,J,K,L)=O.O 3033 10 CONTINUE 3034 20 CONTINUE 3035 30 CONTINUE 3036 40 CONTINUE 3037 DO 50 1=1,600 3038 ATMP(I)=O.O 3039 ITMP(I)=O 3040 IF(I.GT. 122 ) GO TO 50 3041 YTEMP(I)=O.O 3042 YTEMP1(I)=O.O 3043 KBTMP(I)=O 3044 XUTMP(I)=O.O 3045 XLTMP(I)=O.O 3046 LTMP(I)=O 3047 IF (I.GT. 60) GO TO 50 3048 Y(350)=0.0 3049 50 CONTINUE 3050 DO 80 I=1,3 3051 DO 70 J=1,2 3052 DO 60 L=1,2 3053 NROW(I,J,L)=O 3054 NCOL(I,J,L)=O 3055 NELM(I,d,L)=O 3056 PROB(I,J,L)=O.O 3057 NROWP(I,J,L)=O 3058 NCOLP(I,J,L)=O 3059 NTH(I,J,L)=O 3060 60 CONTINUE 3061 70 CONTINUE 3062 80 CONTINUE 3063 DO 11 1=1,3000 3064 IE(I)=O 3065 E(I)=O.O 3066 11 CONTINUE 3067 DO 12 I=1,1002 3068 LE(I)=O 3069 12 CONTINUE 3070 DO 17 1=1,5 3071 NND(I)=O 3072 JPER(I)=O 3073 17 CONTINUE 3074 DE=0.0

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid-K8GB Page 54 3075 DP=O.O 3076 MSTAT=O 3077 IOBJ=0 3078 IROWP=O 3079 ITCNT=O 3080 INVFRQ=O 3081 ITRFRQ=O 3082 JCOLP=O 3083 NETA=O 3084 NLELEM=O 3085 NLETA=O 3086 NUELEM=O 3087 NUETA=O 3088 NELEM=O 3089 NR=O 3090 NPASS=O 3091 JCUR=O 3092 JPASS=O 3093 NPER=O 3094 NFLG=O 3095 ATEMP1=0.0 3096 ATEMP2=0.0 3097 NODE=O 3098 DO 13 1=1,6 3099 NAME(I)=O 3100 13 CONTINUE 3101 DO 14 I=1,122 3102 DO 15 J=1,2 3103 ICNAM(I,J)=O 3104 15 CONTINUE 3105 14 CONTINUE 3106 RETURN 3107 END 3108 C --- —------------------------------------------------------------- 3109 SUBROUTINE XOPTCK 3110 C 3111 IMPLICIT REAL*4 (A,C,E-H,O,P,R-W,Z), REAL*8 (B,D,X,Y). 3112 1 INTEGER*4 (I-N,Q) 3113 INTEGER JH,KINBAS,LA,LE,IA,IE,NODE 3114 INTEGER ICNAM(602,2),NAME(6) 3115 DOUBLE PRECISION E(3000),ATEMP1,ATEMP2 3116 REAL A(3000,3,3,1) 3117 C 3118 COMMON/BLOCK/ ZTOLZE,ZTOLPV,ZTCOST,ZTOLSM,NEGINF,NEMA\.NRMAX, 3119 1 NTMAX,QBL,QA,QI,QF,QN,QB,QC.QE,QH,QL,QO,QR,QM,QG,QS,'.,P 3120 COMMON DE,DP,B(350,3,3,1),X(350,3,3,1),Y(350),YTEMP(602),YTEMP1(G 3121 1 22),XLB(602,3,3,3,1),XUB(G2,3,3,1),XKSI(350,3,3,1),YP(350.3,3,1) 3122 1,A,E,MSTAT,IOBJ,IROWP,ITCNT, 3123 2 INVFRO,ITRFRQ,JCOLP,NROW(3,3,1),NCOL(3,3,1),NELEM,NFI.M(3.3,1 3124 2 ),NETA, 3125 3 NLELEM,NLETA,NUELEM,NUETA.JH(350,3,3,1),KINBAS(602,1,3,1),LA( 3126 3 602,3,3,1), 3127 4 LE(1002),IA(3000,3,3,1),IE(3000), 3128 5 ATMP(3000),ABN(600,3,3,1),IBN(600,3,3,1),LBN(602,3,3,1), 3129 3130 6 PROB(3,3,1),NFLG,KBTMP(602),ITMP(3000),XUTMP(602),XLrMP(602), 3131 7 LTMP(602),NROWP(3,3,1),NCOLP(3,3,1),NTH(3,3,1),NR 3132 COMMON/BLOCK3/ NND(5),NPASS,JPER(5),JCLJR,JPASS,NPER

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=K86B Page 55 3133 COMMON/BLOCK4/ BND(350),XTOPT,XRHO,YPIBAR(602),YBX(350),IB3T(3), 3134 1 PRBV(3,5),PRST(5,5,5),CBST(3,5),IBASE,JSTCH(5,5,5),N(:UR(3), 3135 2 NXNF(3),INFLG,NETND(10),INST(5),MXNSTNST 3136 C 3137 J2=JPER(2) 3138 J3=JPER(3) 3139 JN=KINBAS(NCOL(NPER-1,J2,J3),NPER-1,J2,J3) 3140 IF(XTOPT.LT.(X(JN,NPER-1,J2,J3)*(1/1.01))) NFLG=O 3141 C CHANGE IF NEGATIVE 3142 IF(XTOPT.GT.O) GO TO 12 3143 NFLG = 1 3144 IF(XTOPT.LT.(X(JN,NPER-1,J2,J3)*(1/.99))) NFLG = 0 3145 12 CONTINUE 3146 XQX=-XTOPT 3147 WRITE(6,10) XQX 3148 10 FORMAT(' Q(X) =',E11.3) 3149 XTH=-X(JN,NPER-1,J2,J3) 3150 WRITE(6,11) XTH 3151 11 FORMAT(' THETA=',E11.3) 3152 C CHECK IF THIS IS THE FIRST TIME 3153 IF(NTH(NPER-1,J2,J3).EQ.O) NFLG=O 3154 IF(NTH(NPER-1,J2,J3).EQ.O) RETURN 3155 C 3156 C FIND BOUNDS 3157 C 3158 IF(NPER.NE.2) RETURN 3159 XOO=-X(1,1,1,1) 3160 WRITE(6,1) XOO 3161 1 FORMAT(' LOWER BOUND=',E11.3) 3162 XC=-X(1,1,1,1)+X(JN, 1,1, )-XTOPT 3163 WRITE(6,2) XC 3164 2 FORMAT(/,' UPPER BOUND=',E11.3) 3165 RETURN 3166 END 3167 C --- —------------------------------------------------------ ------- 3168 SUBROUTINE DNORML 3169 C 3170 IMPLICIT REAL*4 (A,C,E-H,O,P,R-W,Z), REAL*8 (B,D,X,Y). 3171 1 INTEGER*4 (I-N,Q) 3172 INTEGER JH,KINBAS,LA,LE,IA,IE,NODE 3173 INTEGER ICNAM(602,2),NAME(6) 3174 DOUBLE PRECISION E(3000),ATEMP1,ATEMP2 3175 REAL A(3000,3,3,1) 3176 C 3177 COMMON/BLOCK2/ ICOL,IVAL,IDIRNPIVOT,IPTYPE,CMIN,CMAX,APV,N[NF,NOPF 3178 COMMON/BL5/DRES,ICNAM 3179 COMMON/BLOCK/ ZTOLZE,ZTOLPV,ZTCOST,ZTOl.SM,NEGINF,NEMAX.NRMAX, 3180 1 NTMAX,QBL,QA,QI,QF,QN,QB,QC,QE,QH,QL,QO,QR,QM,QG,QS,QP 3181 COMMON DE,DP,B(350,3,3,1),X(350,3,3,1),Y(350),YTEMP(602),YTEMP1(6 3182 1 22),XLB(602,3,3,1),XUB(602,3,3,1),XKSI(350,3,3,1),YPI(350,3,3,1) 3183 1,A,E,MSTAT,IOBJ,IROWP,ITCNT, 3184 2 INVFRQ,ITRFRQ,JCOLP,NROW(3,3,1),NCOL(3,3,1),NELEM,NFIM(3,3,1 3185 2 ),NETA, 3186 3 NLELEM,NLETA,NUELEM,NUETA,JIH(350,3,3,1),KINBAS(602,3,3,1),LA( 3187 3 602,3,3,1), 3188 4 LE(1002),IA(3000,3,3,1),IE(3000), 3189 5 ATMP(3000),ABN(600,3,3,1),IBN(600,3,3,1),LBN(602,3,3,1), 3190

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid:K86B Page 56 3191 3192 3193 3194 3195 3196 3197 3198 3199 3200 3201 3202 3203 3204 3205 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 3230 3231 3232 3233 3234 3235 3236 3237 3238 3239 3240 3241 3242 3243 3244 3245 3246 3247 3248 6 PROB(3,3,1),NFLG,KBTMP(602),ITMP(3000).XUTMP(602),XI IMP(C02), 7 LTMP(602),NROWP(3,3,1),NCOLP(3,3,1),.iTI(3,3,1),NR COMMON/BLOCK3/ NND(5),NPASS,JPER(5),JCIIR,)PASS,NPER COMMON/BLOCK4/ BND(350),XTOPT,XRHO,YPIBAR(602),YBX(350),IBSr(3), 1 PRBV(3,5),PRST(5,5,5),CBST(3,5),IBASE,JSTCH(5,5,5),NUR(3), 2 NXNF(3),INFLG,NETND(10),INST(5),MXNST,NST COMMON/BLS/ ITSIN C JC=JCUR J2=JPER(2) J3=JPER(3) CMIN=0. NINF=O NOPT=O MSTAT=QF WRITE(6,1001) 1001 FORMAT(' ITNS',2X,'RRES',5X,' PIV',6X,' IN',3X,'OUT',2X, 1 'OBJ',7X,'CMIN',7X,'MXINF',7X,'THET',3X,'NINF',IX,'NOPT') IF(ITSIN.LT. INVFRQ) GO TO 1500 1000 CONTINUE C CALL INVERT WRITE(6,1003) ITSIN 1003 FORMAT(' WARNING -- TOO MANY ETAS IN DNORML',IX,' ITFP% =',I6) C ITSIN=O C C C DUAL SIMPLEX CYCLE 1500 CALL DCHUZR C C IROWP=0 IF OPTIMAL C IF(IROWP.EQ. O) GO TO 6000 C C FIND PIVOT COL. - JCOLP=O IF INFEASIBLE C CALL DCHUZC IF(JCOLP.EQ. O) MSTAT=QN IF(JCOLP.EQ. O) GO TO 6000 CALL UPBETA ITCNT=ITCNT+1 ITSIN=ITSIN+1 IF(NPIVOT.EQ. O) GO TO 4010 IF(NELEM.GT.(NEMAX-NROW(JCUR,JPER(2),JPER(3)))) GO TO 1000 CMAX=YTEMP1(1) APV=YTEMP1(2) CALL WRETA CALL RHCHCK WRITE(6,1002)ITCNT,DRES,APV,JCOLP,IROWP,X(1,JC,J2,J3) CMIN.CMAX 1,DP,NINF,NOPT 1002 FORMAT(I4,1X,E9.2,1E9.2,X,E9.2,1XI4,1X,I4,X,E1.2,1X,E9.2,1X,E9.2,1X, 1 E9.2,1X,I4,1X,I4) 4010 IF(ITSIN.GE. INVFRQ) GO TO 1000 IF(ITCNT.GE. ITRFRQ) GO TO 6000 GO TO 1500 6000 RETURN END SUBROUTINE PARSFTC --- —---------------------------------- SUBROUTINE PARSFT

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=K8GB Page 57 3249 C 3250 C THIS ROUTINE FINDS ALL THE BASES THAT WILL MAKE 3251 C THE LAST PERIOD OPTIMAL. 3252 C 3253 IMPLICIT REAL*4 (A,C,E-H,O,P,R-W,Z), REAL*8 (B,D,X,Y), 3254 1 INTEGER*4 (I-N,Q) 3255 INTEGER JH,KINBAS,LA,LE,IA,IE,NODE 3256 INTEGER ICNAM(602,2),NAME(6) 3257 DOUBLE PRECISION E(3000).ATEMP1,ATEMP2 3258 REAL A(3000,3,3,1) 3259 C 3260 COMMON/BLOCK/ ZTOLZE,ZTOLPV,ZTCOST,ZTOLSM,NEGINF,NEMAX,NRMAX, 3261 1 NTMAX,QBL,QA,QI,QF,QN,QB,QC,QE,QH,QL,00,QR,QM,QG,QS,OP 3262 COMMON DE,DP,B(350,3,3,1),X(350,3,3,1),Y(350),YTEMP(60G),Y1EMP1(6 3263 1 22),XLB(602,3,3,1),XUB(602,3,3,1),XKS[(350,3,3,1),YI)1(350.,3,3,1) 3264 1,A,E,MSTAT,IOBJ,IROWP,ITCNT, 3265 2 INVFRQ,ITRFRQ,JCOLP,NROW(3,3,1),NCOL(3,3,1),NELEM,NFI-M(3,3,1 3266 2 ),NETA, 3267 3 NLELEM,NLETA,NUELEM,NUETA,JH(350,3,3,1),KINBAS(602,3.3,1),LA( 3268 3 602,3,3,1), 3269 4 LE(1002),IA(3000,3,3,1),IE(3000), 3270 5 ATMP(3000),ABN(600,3,3,1),IBN(600,3,3,1),LBN(602,3,3.1), 3271 3272 6 PROB(3,3,1),NFLG,KBTMP(602),ITMP(3000),XUTMP(602),XLIMP(602), 3273 7 LTMP(602),NROWP(3,3,1),NCOLP(3,3,1),NTH(3,3,1),NR 3274 COMMON/BLOCK3/ NND(5),NPASS,JPER(5),JCUR,JPASS,NPER 3275 COMMON/BLOCK4/ BND(350),XTOPT,XRHO,YPIBAR(602),YBX(35(),IBST(3), 3276 1 PRBV(3,5),PRST(5,5,5),CBST(3,5),IBASE,JSTCH(5,5,5),JNr:UR(3), 3277 2 NXNF(3),INFLG,NETND(10),INST(5),MXNST,NST 3278 COMMON/BLS/ITSIN 3279 C 3280 C SET JPASS 3281 C 3282 JPASS=2 3283 C 3284 C SET ALL THE PROPER VALUES 3285 C 3286 C 'IBASE' IS THE CURRENT BASIS 3287 C 'ITSIN' NUMBER OF ITERATIONS FOR DN 3288 C 3289 IBASE=1 3290 ITSIN=O 3291 C 3292 C SET JPER FOR CHECKING 3293 JPOLD=JPER(NPER-1) 3294 JPER(NPER-1)=1 3295 C 'XRHO' IS THE CURRENT EX VAL OF THE RHS 3296 C 'XTOPT' IS EX VAL OF Z 3297 C 3298 XRHO=O 3299 XTOPT=O 3300 C 3301 C 'YPIBAR' KEEPS THE CURRENT EX VAL OF THE PI VECTOR 3302 C 3303 KNR=NROW(NPER,1,1) 3304 DO 10 I=1.KNR 3305 YPIBAR(I)=O 3306 10 CONTINUE

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid:-KG96 Page 58 3307 C 3308 C 'JSTCH(I,J,K,L)' HAS 0 IF ALTERNATIVE (I,J,K,L) 3309 C HAS NOT YET BEEN ASSIGNED A BASIS. 3310 C 3311 DO 11 I=1,MXNST 3312 DO 11 J=1,MXNST 3313 DO 11 K=1,MXNST 3314 USTCH(I,d,K)=O 3315 11 CONTINUE 3316 C 3317 C 'NCUR' KEEPS THE CURRENT ALTERNATIVE 3318 C 'NXNF' KEEPS THE INDEX OF THE FIRST INFEASIBLE ALTFRNATIVE. 3319 C 3320 DO 12 I=1,3 3321 NCUR(I)=1 3322 NXNF(I)=1 3323 12 CONTINUE 3324 C 3325 C 'NETND(I)' KEEPS THE INDEX OF THE ETA VECTOR FOR 3326 C BASIS 'I'. 3327 C 3328 DO 13 1=1,3 3329 NETND(I)=NETA 3330 13 CONTINUE 3331 C 3332 C 'INFLG' EQUAL 0 SAYS THERE ARE NO INFEASIBILITIES CAUGHT YEr. 3333 INFLG=O 3334 C 3335 C 'BND(I)' HAS THE BASELINE VALUES FOR THE RHS'S IN rIPER. 3336 C 3337 KNR=NROW(NPER,1,1) 3338 DO 14 I=1,KNR 3339 XKSI(I,NPER,1,1)=BND(I) 3340 14 CONTINUE 3341 C SET FOR INITIAL RHS 3342 DO 1014 I=1,NST 3343 XKSI(IBST(I),NPER,,1.)=CBST(I,NCUR(I)) 3344 1014 CONTINUE 3345 C 3346 C ADD FOR RHS 3347 C 3348 JCUR=JCUR-1 3349 JPER(NPER-1)=JPOLD 3350 CALL BPRODX 3351 JPER(NPER-1)=1 3352 C 3353 C YBX KEEPS INVENTORIES 3354 C 3355 DO 27 I=2,KNR 3356 YBX(I)=Y(I) 3357 27 CONTINUE 3358 C 3359 C START OF CYCLE 3360 C 3361 20 CONTINUE 3362 DO 28 I=2,KNR 3363 Y(I)=YBX(I) 3364 28 CONTINUE

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=K8GB Page 59 3365 JCUR = NPER-1 3366 CALL FRMRHS 3367 JCUR = NPER 3368 C 3369 C IF 'IBASE'=I FIND THE FIRST OPTIMAI. 3370 C 3371 IF(IBASE.GT. 1) GO TO 21 3372 C SET JCUR BACK TO NPER FOR CHECKING 3373 JCUR = NPER 3374 ITSINU=9999 3375 CALL NORMAL(ITSINU) 3376 IF(JCUR.EQ.NPER+1) RETURN 3377 GO TO 211 3378 21 CONTINUE 3379 WRITE(6,2201) 3380 2201 FORMAT(' ITERATING IN DNORML') 3381 DO 1053 I=1,KNR 3382 Y(I)=B(I,NPER,1,1) 3383 1053 CONTINUE 3384 CALL FTRAN(1) 3385 C 3386 C COPY INTO X. 3387 C 3388 DO 1054 I=1,KNR 3389 X(I,NPER,1,1)=Y(I) 3390 1054 CONTINUE 3391. CALL DNORML 3392 211 CONTINUE 3393 C CALL STRPRT 3394 IF(MSTAT.NE. QN) GO TO 22 3395 C 3396 C IF INFEASIBLE ADD A FEASCT AND RETURN. 3397 C 3398 WRITE(6,2022) (NCUR(I),I=1,NST) 3399 2022 FORMAT(' INFEAS AT PROB',316) 3400 JPER(NPER-1)=JPOLD 3401 CALL FEASCT 3402 JCUR=NPER-1 3403 RETURN 3404 22 CONTINUE 3405 C 3406 C HERE IT'S FEASIBLE, SET FOR FIRST OF NEW BASIS. 3407 C 3408 NETND(IBASE)=NETA 3409 JSTCH(NCUR(1),NCUR(2),NCUR(3))=IBASE 3410 C 3411 C UPDATE EX VAL OF RHS 3412 C 3413 KNR=NROW(NPER,1,1) 3414 XXR=O. 3415 DO 25 I=2,KNR 3416 XXR=YPI(I,NPER,1,1)*XKSI(I,NPER,1,1)+XXR 3417 25 CONTINUE 3418 WRITE(6,2024) 3419 2024 FORMAT(' VARI',2X,' VAR2',2X,' VAR3',2X,' PROB',3X,' ORJ',IOX, 3420 1 'KSIPI',6X,'OBJTOT',5X,'CURR BAS') 3421 WRITE(6,2025) (NCUR(I),I=1,3),PRST(NCUR(1),NCUR(2),NCUR(3)), 3422 1 X(1,NPER,1,1),XXR,XTOPT,IBASE

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=KRGB Page 60 3423 2025 FORMAT(316, X,F8.6, IX,E11.3,IX,E11.3,1X,E11.3,X,I6) 3424 XRHO=XXR*PRST(NCUR(1),NCIJR(2),NCUR(3))-XRIO 3425 C 3426 C UPDATE EX VAL OF PI'S 3427 C 3428 DO 26 I=2,KNR 3429 YPIBAR(I)=YPI(I,NPER, 1,1)*PRS'I(NCUR(1),NC.lP2(2),NCUR(3) \ 'YPJBAR(I) 3430 26 CONTINUE 3431 C 3432 C UPDATE E.V. OF OBJECTIVE 3433 C 3434 XTOPT=XTOPT+PRST(NCUR(1),NCUR(2),NCUR(3)):X(1,NPER,1,1) 3435 C 3436 C BEGIN LOOP TO CHECK FEASIBILITY M IS 3437 C THE CURRENT STOCHASTIC VARIABIE. 3438 C 3439 M=NST 3440 29 CONTINUE 3441 IF(NCUR(M).LT. INST(M)) GO TO 30 3442 M=M-1 3443 IF(M.GT. O) GO TO 29 3444 IF(INFLG.NE. O) GO TO 31 3445 C 3446 C HERE, ALL NODES ARE COVERED. 3447 C 3448 NFLG=1 3449 JPER(NPER-1)=JPOLD 3450 CALL XOPTCK 3451 IF(NFLG EQ. 1) GO TO 32 3452 C PUT YBAR IN FOR PI 3453 DO 319 I=2,KNR 3454 YPI(I,NPER,JPER(2),1)=YPIBAR(I) 3455 319 CONTINUE 3456 C CALL STRPRT 3457 CALL LKHDCT(NPER) 3458 32 CONTINUE 3459. JCUR=NPER-1 3460 IF((NPER.EQ.2).AND.(NFLG.EQ.1)) JCUR= NtPER + 1 3461 RETURN 3462 C 3463 C THERE ARE STILL INFEAS'S LEFT. 3464 C 3465 31 CONTINUE 3466 C 3467 C RETURN TO SOLVE NEX PROBLEM 3468 C 3469 WRITE(6,2301) 3470 2301 FORMAT(' RETURNING TO SOLVE NEXT BATCH') 3471 DO 40 I=I,NST 3472 XKSI(IBST(I),NPER,I,1)=CBST(I,NXNF(I)) 3473 40 CONTINUE 3474 IBASE=IBASE+1 3475 INFLG=O 3476 DO 41 I=1,NST 3477 NCUR(I)=NXNF(I) 3478 41 CONTINUE 3479 GO TO 20 3480 C

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=K86B Page 61 3481 C HERE, WE CHECK OUT THE NEXT POSSIBILITY. 3482 C 3483 30 NCUR(M)=NCUR(M)+1 3484 MM=M+1 3485 IF(MM.GT.NST) GO TO 43 3486 DO 42 I=MM,NST 3487 NCUR(I)=1 3488 42 CONTINUE 3489 43 CONTINUE 3490 C SET M BACK TO THE LAST PLAC 3491 M=NST 3492 C 3493 C CHECK IF THIS IS COVERED. 3494 C 3495 IF(JSTCH(NCUR(1),NCUR(2),NCUR(3)).EQ. O) GO TO 50 3496 C 3497 C THERE, JSTCH WAS COVERED. 3498 C 3499 GO TO 29 3500 C 3501 C HERE, NOT COVERED, CHECK FEASIBILITY. 3502 C 3503 50 CONTINUE 3504 DO 51 I=1,NST 3505 XKSI(IBST(I),NPER,1,1)=CBST(I,NCUR(I)) 3506 51 CONTINUE 3507 DO 52 I=1,KNR 3508 Y(I)=YBX(I) 3509 52 CONTINUE 3510 C 3511 C SET-UP RHS FOR CHECK. 3512 C 3513 C SET JCUR FOR FRMRHS 3514 JCUR=NPER-1 3515 CALL FRMRHS 3516 JCUR=NPER 3517 DO 53 I=1,KNR 3518 Y(I)=B(I,NPER,1,1) 3519 53 CONTINUE 3520 CALL FTRAN(1) 3521 C 3522 C COPY INTO X. 3523 C 3524 DO 54 I=I,KNR 3525 X(I,NPER,1,1)=Y(I) 3526 54 CONTINUE 3527 WRITE(6,2054) 3528 2054 FORMAT(' CHECKING FEAS WITH DCHUZR') 3529 CALL DCHUZR 3530 IF(IROWP.EQ. O) GO TO 60 3531 C 3532 C HERE, THE NODE IS OPTIMAL FOR THE GIVEN BASIS. 3533 C 3534 C MUST CHECK FEASIBILITY. 3535 C 3536 WRITE(6,2055) 3537 2055 FORMAT(' TRYING TO FIND ENTERING IN DCHUZC') 3538 CALL DCHUZC

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=K86B Page 62 3539 IF(JCOLP. NE. O) GO TO 59 3540 C 3541 C HERE INFEASIBLE. 3542 C 3543 WRITE(6,2056) 3544 2056 FORMAT(' NON ENTERING VAR - INFEAS') 3545 JPER(NPER-1)=JPOLD 3546 CALL STRPRT 3547 CALL FEASCT 3548 JCUR=NPER-1 3549 RETURN 3550 C 3551 C THERE, FEASIBLE 3552 C 3553 59 CONTINUE 3554 WRITE(6,2059) (NCUR(I),I=1,3) 3555 2059 FORMAT(' ENT VAR - WILL RETURN TO',3I6) 3556 IF(INFLG.NE. O) GO TO 29 3557 C 3558 C FIRST INFEASIBLE FOUND. 3559 C 3560 INFLG=1 3561 DO 58 I=1,NST 3562 NXNF(I)=NCUR(I) 3563 58 CONTINUE 3564 GO TO 29 3565 C 3566 C THERE, IT IS FEASIBLE 3567 C 3568 60 CONTINUE 3569 WRITE(6,2060) 3570 2060 FORMAT(' OK - FEAS') 3571 C 3572 C UPDATE 3573 C 3574 KNR=NROW(NPER,1,1) 3575 XXR=O. 3576 DO 255 I=2,KNR 3577 XXR=YPI(I,NPER,1,1)*XKSI(I,NPER,1,1)+XxR 3578 255 CONTINUE 3579 WRITE(6,2025) (NCUR(I),I-1,3),PRST(NCUR(1),NCUR(2),NCI!R(3)), 3580 1 X(1,NPER,1,1),XXR,XTOPT,IBASE 3581 XRHO=XXR*PRST(NCUR(1),NCUR(2),NCUR(3))4XRIIO 3582 XTOPT=XTOPT+PRST(NCUR(1).NCUR(2),NCUR(3))*X(1,NPER,1, 3583 C 3584 C UPDATE PRICES. 3585 C 3586 DO 61 I=1,KNR 3587 YPIBAR(I)=YPI(I,NPER,1,1)*PRST(NCUR(1),NCUR(2),NCUR(3))+YPIBAR(I) 3588 61 CONTINUE 3589 C 3590 C SET BASIS INDEX. 3591 C 3592 JSTCH(NCUR(1),NCUR(2),NCUR(3))=IBASE 3593 GO TO 29 3594 END 3595 C --- —------------------------------------------------ ----------- 3596 SUBROUTINE DCHUZR

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=KR6B Page 63 3597 C 3598 C SELECTS PIVOT ROW IROWP FOR CURRENT DUAL-SIMPLEX IfERAIION. 3599 C SETS IROWP=O IF CURRENT BASIS IS OPTIMAL. OTHERWISE, IROWP IS 3600 C CHOSEN TO BE THE ROW WITH GREATEST PRIMAL INFEASIRILITY. 3601 IMPLICIT REAL*4 (A,C,E-H,O,P,R-W,Z), REAL*8 (B,D,X,Y), 3602 1 INTEGER*4 (I-N,Q) 3603 INTEGER JH,KINBAS,LA,LE,IA,IE,NODE 3604 INTEGER ICNAM(602,2),NAME(6) 3605 DOUBLE PRECISION E(3000),ATEMP1,ATEMP2 3606 REAL A(3000,3,3,1) 3607 C 3608 COMMON/BLOCK2/ ICOL,IVALIDTR,NPIVOT,IPTYPE,CMINCMAXAlV.rlINF,NOP1 3609 COMMON/BLOCK/ ZTOLZE,ZTOLPV,ZTCOST,ZTO SM,NEGINF,NEMA:,NRMAX, 3610 1 NTMAX,QBL,QA,QI,QF,QN,QB,QC,QE,QH,QL.00 QR,QM,QG,QS.'P 3611 COMMON DE,DP,B(350,3,3,1),X(350,3,3,1),Y(3T0),YTEMP(6C?),yTEMP1(6 3612 1 22),XLB(602,3,3,1),XUB(602,,3,3, 1 ),XK ( 350,3,3,1), Y(35(, 3,3. 1 ) 3613 1,A,E,MSTAT,IOBJ,IROWP,ITCNT, 3614 2 INVFRQ,ITRFRQ,JCOLP,NROW(3,3,1),NCOL(3.3,1),NELEM,NFIM(3.3,1 3615 2 ),NETA, 3616 3 NLELEM,NLETA,NUELEM,NUETA,JH(350,3,3,1),KINBAS(602,3,3,1),LA( 3617 3 602,3,3,1), 3618 4 LE(1002),IA(3000,3,3,1),IE(3000), 3619 5 ATMP(3000),ABN(600,3,3,1),IBN(600,3,3,1),LBN(602,3,. 1), 3620 3621 6 PROB(3,3,1),NFLG,KBTMP(602),ITMP(3000),XUTMP(602),XLIMP(602), 3622 7 LTMP(602),NROWP(3,3,1),NCOLP(3,3,1),NTH(3,3,1),NR 3623 COMMON/BLOCK3/ NND(5),NPASS,JPER(5),JCUR,JPASS,NPER 3624 COMMON/BLOCK4/ BND(350),XTOPT,XRHO,YPIPAR(602),YBX(35(0).IBST(3). 3625 1 PRBV(3,5),PRST(5,5,5),CBST(3,5),IBASE,,JSTCH(5,5,5),NrItR(3), 3626 2 NXNF(3),INFLG,NETND(10),INST(5),MXNST,NST 3627 C 3628 NINF=O 3629 IROWP = 0 3630 DP = -1.E10 3631 KNR=NROW(NPER,1,1) 3632 DO 1000 I=1,KNR 3633 IF (I.EQ. IOBJ) GO TO 1000 3634 ICOL = JH(I,NPER,1,1) 3635 IF (X(I,NPER,1,1).LT. (XLB(ICOL,NPER.1,1) - ZTOLZE)) GO TO 100 3636 IF (X(I,NPER,1,1).GT. (XUB(ICOL,NPER,1,1) + ZTOLZE)) GO TO 200 3637 GO TO 1000 3638 C 3639 C BASIC VARIABLE ON ROW I FALLS BELOW ITS LOWER BOUNf) 3640 100 DE = XLB(ICOL,NPER,1,1) - X(I,NPER,1,1) 3641 NINF=NINF+1 3642 IF (DE.LE. DP) GO TO 1000 3643 IPTYPE = 0 3644 GO TO 250 3645 C 3646 C BASIC VARIABLE ON ROW I EXCEEDS ITS UPPER BOUND 3647 200 DE = X(I,NPER,1,1) - XUB(ICOL,NPER,1,1) 3648 NINF=NINF+1 3649 IF (DE.LE. DP) GO TO 1000 3650 IPTYPE = -1 3651 C 3652 250 IROWP = I 3653 DP = DE 3654 YTEMP1(1)=DP

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=K86B Page 64 3655 1000 CONTINUE 3656 RETURN 3657 END 3658 C --- —---------------------------------------------------------------- 3659 SUBROUTINE DCHUZC 3660 C 3661 C SELECTS PIVOT COLUMN JCOLP FOR CURRFNT DUAL-SIMPLE. ITERATION. 3662 C SETS JCOLP=O IF LP-PROBLEM AT CURRENT NODE IS INFEASJBLF. 3663 C OTHERWISE CHOOSES JCOLP TO MAINTAIN PRIMAL-OPTIMALIY. 3664 C 3665 IMPLICIT REAL*4 (A,C,E-H,O,P,R-W,Z), REAL*8 (B,D,X,Y). 3666 1 INTEGER*4 (I-N,Q) 3667 INTEGER JH,KINBAS,LA,LE,IA,IE,NODE 3668 INTEGER ICNAM(602,2),NAME(6) 3669 DOUBLE PRECISION E(3000),ATEMP1,ATEMP2 3670 REAL A(3000,3,3,1) 3671 C 3672 COMMON/BLOCK2/ ICOL,IVAL,IDIR,NPIVOT,IPTYPE,CMIN,CMAX,IAPV,IJINF,NOPT 3673 COMMON/BLOCK/ ZTOLZE,ZTOLPV,ZTCOST,ZTOLSM,NEGINF,NEMAY,NRMAX, 3674 1 NTMAX,QBL,QA,QI,QF,QN,QB,QC,QE,QH,QL,QO,QR,QM,QG,QS,QP 3675 COMMON DE,DP,B(350,3,3,1),X(350,3,3,1),Y(350),YTEMP(602),YTEMP1(6 3676 1 22),XLB(602,3,3,1),XUB(602,3,3,1),XKSI(350,3,3,1),YP1(350,3,3,1) 3677 1,A,E,MSTAT,IOBJ,IROWP,ITCNT, 3678 2 INVFRQ,ITRFRQ,JCOLP,NROW(3,3,1),NCOL(3,3,1),NELEM,NFIM(3,3,1 3679 2 ),NETA, 3680 3 NLELEM,NLETA,NUELEM,NUETA,JH(350,3,3.1),KINBAS(602,3.3,1),LA( 3681 3 602,3,3,1), 3682 4 LE(1002),IA(3000,3,3,1),IE(3000), 3683 5 ATMP(3000),ABN(600,3,3,1),IBN(600,3,3,1),LBN(602,3,:. 1), 3684 3685 6 PROB(3,3,1),NFLG,KBTMP(602),ITMP(3000),XUTMP(602),X.lMP(c02). 3686 7 LTMP(602),NROWP(3,3,1),NCOLP(3,3,1),NTH(3,3,1),NR 3687 COMMON/BLOCK3/ NND(5),NPASS,JPER(5),JCUR,JPASS,NPER 3688 COMMON/BLOCK4/ BND(350),XTOPT,XRHO,YPIBAR(602),YBX(350),IBST(3), 3689 1 PRBV(3,5),PRST(5,5,5),CBST(3,5),IBASE,JSTCH(5,5,5),rCUR(3), 3690 2 NXNF(3),INFLG,NETND(10),INST-(5),MXNS'I,NST 3691 C 3692 JCOLP = 0 3693 IF (IPTYPE EQ. -1) GO TO 1000 3694 C 3695 C LEAVING VARIABLE FALLS BELOW ITS LOWER BOUND 3696 C 3697 DP = -1.E10 3698 KNC=NCOL(NPER,1,1) 3699 DO 500 J=1,KNC 3700 IF (KINBAS(J,NPER,1,1).GT. O) GO TO 500 3701 IF ((XUB(J,NPER,1,1) - XLB(J,NPER,1,1)).LE. ZTOLZE) GO TO 500 3702 K = J 3703 CALL UNPACK(K) 3704 CALL FTRAN(1) 3705 IF (KINBAS(J,NPER,1,1).EQ. -1) GO 10 200 3706 IF (Y(IROWP) + ZTOLPV) 225,225,500 3707 200 IF (Y(IROWP) - ZTOLPV) 500,225,225 3708 C 3709 225 DE = Y(IOBJ)/Y(IROWP) 3710 IF (DE - DP) 500,500,250 3711 250 JCOLP = J 3712 DP = DE

Listing of NDST3 at 15:43:01 on JUN 10, 1984 for CCid=KP6B Page 65 3713 3714 3715 3716 3717 3718 3719 3720 3721 3722 3723 3724 3725 3726 3727 3728 3729 3730 3731 3732 3733 3734 3735 3736 3737 3738 3739 3740 3741 3742 3743 3744 3745 3746 3747 3748 3749 3750 3751 3752 3753 3754 500 C C C C 1000 1200 C YTEMP1(2)=Y(IROWP) CONTINUE IF (JCOLP.EQ. O) RETURN CALL UNPACK(JCOLP) CALL FTRAN(1) ICOL = JH(IROWP,NPER,1,1) DP = (X(IROWP,NPER,1,1) - XLB(ICOL,NPEPI,1,))/Y(IROWP) GO TO 2000 LEAVING VARIABLE EXCEEDS ITS UPPER BOUND DP = 1.E10 KNC=NCOL(NPER,1,1) DO 1500 J=1,KNC IF (KINBAS(J,NPER,1,1).GT. O) GO TO 1500 IF ((XUB(J,NPER,1,1) - XLB(J,NPER,1. )).LE. K = J CALL UNPACK(K) CALL FTRAN(1) IF (KINBAS(J,NPER,1,1).EQ. -1) GO TO 1200 IF (Y(IROWP) - ZTOLPV) 1500,1225,1225 IF (Y(IROWP) + ZTOLPV) 1225,1225,1500 ZTOLZF) GO TO 1500 I 1225 DE = Y(IOBJ)/Y(IROWP) IF (DE - DP) 1250,1500,1500 1250 JCOLP = J DP = DE YTEMP1(2)=Y(IROWP) 1500 CONTINUE C IF (JCOLP.EQ. O) RETURN CALL UNPACK(JCOLP) CALL FTRAN(1) ICOL = JH(IROWP,NPER,1,1) DP = (X(IROWP,NPER,1,1) - XUB(ICOL,NPER,1,1))/Y(IROWP) C 2000 IF (KINBAS(JCOLP,NPER,1,1) EQ. O) DE - DP + XLB(JCOLP,NPER,1,1) IF (KINBAS(JCOLP,NPER,1,1).EO. -1) DE = DP + XUB(JCOI I,NPFR,1,1) NPIVOT = 1 RETURN END I