CENTRAL CIRCULATION BOOKSTACKS The person charging this material is re- sponsible for its renewal or its return to the library from which it was borrowed on or before the Latest Date stamped below. You may be charged a minimum fee of $75.00 for each lost book. Theft, mutilation, and underlining of books are reason] for disciplinary action and may result in dismissal from the University. TO RENEW CALL TELEPHONE CENTER, 333-8400 UNIVERSITY OF ILLINOIS LIBRARY AT URBANA-CHAMPAIGN JAN 2 8 1996 FEB 1 2 1997 AUG 2 4 2006 When renewing by phone, write new due date below previous due date. L162 O /*• ' r" tilt*'' UIUCDCS-R- -77-858 Vu>.^s &*•> UILU-ENG 77 1711 f A CODE FOR ZERO-ONE INTEGER PROGRAMMING ILLIP-2 (A PROGRAMMING MANUAL FOR ILLIP-2) by / April 1977 Ming Huei Young Tso Kai Liu Charles Richmond Baugh Saburo Muroga DEPARTMENT OF COMPUTER SCIENCE UNIVERSITY OF ILLINOIS AT URBANA-CHAMPAIGN URBANA, ILLINOIS uiucdcs-r-77-858 A CODE FOR ZERO-ONE INTEGER PROGRAMMING ILLIP-2 (A PROGRAMMING MANUAL FOR ILLIP-2) by Ming Huei Young Tso Kai Liu Charles Richmond Baugh Saburo Muroga April 1977 Department of Computer Science University of Illinois at Urb ana -Champaign Urbana, Illinois 6l801 This -work was supported in part by the Department of Computer Science and by the National Science Foundation under Grant No. DCR73-03lj-21 A01. Digitized by the Internet Archive in 2013 http://archive.org/details/codeforzeroonein858youn Preface ILLIP, a code for zero-one integer linear programming, -was implemented by T.K. Liu with the assistance of C.R. Baugh on I/O subroutines, incorporating improved procedures discussed in [6] such as "pseudo-under lining." A program- ming manual was prepared by T.K. Liu [12]. Since its completion in 1968, ILLIP has been used by many people inside and outside the University of Illinois. Based on the users' experience since 1968, (compiled and analyzed by Muroga), M.H. Young implemented ILLIP-2, a revision of ILLIP, adding the following new options [13]: (1) find more than one optimal solution, (2) print feasible solutions found during the execution, (3) at a user's specification, it can skip checking underlining and pseudo- underlining conditions, (h) find a suboptimal solution which has a specified deviation from an optimal value (only one suboptimal solution). Some minor mistakes in ILLIP are also corrected. Although ILLIP is available in FORTRAN only, ILLIP-2 is available in both FORTRAN and PL/ I. Also the execution time of the FORTRAN version of ILLIP-2 is slightly faster (about 10$) than ILLIP. More error messages will be printed when the input data prepared by a user are not in the correct form. This programming manual for ILLIP-2 is prepared by modifying the manual for ILLIP. Integer programming problems with non-linear objective function or non- linear constraints can be converted into zero-one linear problems. Conversion methods are discussed in the Appendix. IV Readers who want to modify the program in order to more efficiently solve their problems can get sufficient information in this report. This work was supported in part by the Department of Computer Science, University of Illinois and also the National Science Foundation under Grant No. DCR73-03 J +21. Also Mrs. Arbatsky's typing is appreciated. S . Muroga CHAPTER 1 INTRODUCTION Recently, zero-one linear programming (LP) has been extensively applied. Many different problems such as network synthesis problems, travel- ing-salesman problems, flight-scheduling problems and covering problems can all be formulated into zero-one linear programming problems. [2] However, probably no algorithm which is efficient on all problems exists at the present time. ILLIP-2 (iLLinois Integer Programming Code - version 2), the computer program which is an updated version of ILLIP [12] is presented in this report. ILLIP-2 is written both in FORTRAN TV and PL/l, for solving zero-one LP problems. The algorithm used in ILLIP-2 is basically an extension of the implicit enumeration. [1], [4] (Difference between ILLIP-2 and ILLIP is described in [13].) Some sophisticated ideas such as maximum sum, minimum sum and pseud o-underlining a variable, have been incorporated to improve the rate of convergence of the algorithm. [6] Furthermore, three different schemes are available for one of the subroutines in ILLIP-2 so that users can choose the one which seems most suitable to their problems. The original testing problem which was used to improve the speed of ILLIP-2 is the optimal NOR network synthesis of switching functions (Boolean functions). [7], [8], [9], [10], [11] The number of inequalities of this problem is larger than the number of variables; the coefficient matrix of inequalities is very sparse and most non-zero coefficients are -1 or 1; all non-zero coefficients of the objective function are 1. Some programming tricks to utilize the features of the above problem are added to increase the speed of ILLIP-2. Therefore probably other 0-1 LP problems with sparse coefficient matrices can be efficiently solved by this program. Only non-zero coefficients of inequalities are stored in memory. They are stored both rowwise and columnwise. Therefore each coefficient can be fetched efficiently. A chain is created such that only inequalities in this chain have to be checked in the process of checking inequalities. Logical network design problems with 193 variables and lj-17 inequalities (problems of synthesizing 6-gate networks for 3-variable functions) were solved by ILLIP-2 within l6 seconds on IBM 360/751. Several other types of problems were also solved. The result can be found in [13]. The aim of this report is to describe briefly the procedure of the program as well as to provide necessary information for those who want to use it. More detailed description about the algorithm used in the program and some computational results are discussed in [6], [13]. where CHAPTER 2 PROGRAM DESCRIPTION Any general 0-1 LP problem can be defined as: Minimize c x (2.1) Subject to b + A x > . c = (c,,c_,...,c ) and x = (x_,x ,...,x ) are n- dimensional vectors, v 1' 2' ' n 1' 2' ' n ' b = (b., ,b_, . . . ,b ) is an m-dimensional vector, A = [a. .] is an n by m matrix, v J/ 2' ' m ' ij ' where x. = or 1, j = l,2,...,n are called variables, and c, b., a., are constants and can be any real numbers „ The problem is to assign or 1 to each variable (each component of x) such that the inner product c x is minimum. However, in our program TLLIP-2, it is further assumed that c, b., a. . are integers and all c.'s are greater than or equal to zero. This is still ID i a general form because any 0-1 LP problem can be converted into the above form by proper transformations of coefficients. Any or 1 assignment to all variables is called a solution ; any solution which satisfies b + A x > is called a feasible solution . An optimal (feasible) solution is a feasible solution such that c x is minimum. If part of the variables has been assigned to one or zero, it is called a partial solution . The variables which have been set to one or zero in a partial solution are called fixed variables . The rest are called free variables and may be set either to one or zero later on. The program includes five main subroutines, INTL (iMTiaL), CHK-IEQ, (CHecK InEQjualities ) , AGMT-VAR (AuGMenT-VARiable), BCKTRK (BaCKTRack), and CHNGMM (CHaNGe Maximum sum and Minimum sum). The linkage among them is shown in Fig. 2.1. The lines connecting CHNGMM with other subroutines mean that CHNGMM may be called by CHK-IEQ, AGMT-VAR or BCKTRK and then returns to the subroutine from which it was called. (1) INTL This subroutine will read in the coefficients of an objective function and of inequalities, i.e., c, b, A in (2.1). If some variables have been specified as one or zero by a user, it will also set them to one or zero and start with this initial partial solution. If no information about the values of some variables in an optimal feasible solution is known beforehand, the program will start with a partial solution without any fixed variables. In order to simplify the program, two inequalities will be generated in INTL. One is ZMAX-DVSN-c x - 1 > ; the other is - ZMIN + c x > 0, where ZMAX is the upper bound of an optimal objective function value and ZMIN is its lower bound. These two inequalities which are added to the original set of inequalities in (2.1) guarantee that the objective function value of a feasible solution to be found next is always greater than or equal to ZMIN and smaller than or equal to ZMAX-DVSN. Whenever a better feasible solution is obtained, ZMAX will be updated to the objective function value of the new feasible solution. The initial values for ZMAX and ZMIN will be discussed in Chapter k. Therefore, the objective function value of a new feasible solution is always smaller than or equal to that of the previous one. (2) CHK-IEQ With a partial solution, CHK-IEQ, will check the maximum sum defined below to detect whether some free variables must be one or zero so that every inequality could be satisfied. If it is so, it will set these free variables to their proper values and underline them. The term " underline " was first proposed by A. M. Geoff rion in [h]. If a fixed variable in a partial When multiple solutions are wanted, ZMAK -ex > is augmented instead. ** That is, the inner product, c x, corresponding to the optical feasible solution. *** A feasible solution now means a solution which satisfies both (2.1) and these two generated inequalities. INTEL CHK-IEQ AGMT-VAR CMGMM Fig. 2.1 Linkage among main subroutines, 6 solution is underlined, then during backtrack the opposite value of this variable will not be assigned. Assume a partial solution with the set of fixed variables, F = {x. ■* f . ,x. - f . , ...,x. -* f. } J l J l J 2 J 2 G R J k is given, where x. for j = j ,...,j is assigned to a binary value f. which is 1 or 0. Let W be the set of the remaining free variables. Now in order to discuss the work done in CHK-IEQ,, let us first define the following three vectors. (a) Partial Sum : y(F) = (y^F), y 2 (F), ..., y m (F)) y. (F) = b. + Z a. . f . 1 = 1,2,..., m i F a j (b) Maximum Sum : u(F) = (u.,(F), u„(F), ..., u (F)) u. (F) = b. + Z a. . f . + Z a. . 1 X x.eF 1J J x.eW iJ J a-? .X) ij = y (F) + Z a i = 1,2,..., m x . ew d a? .X) (c) Minimum Sum : 1(f) = (A ± (F),& 2 (F) , ..., -8(F)) i. (F) = b. + Z a. . f . + Z a 1 x.eF 1J J x.ew J J a*? .<0 ij = y. (F) + Z a. . i = l,2,...,m x.£W a. .<0 Note that u.(f) is equal to the left hand side of the i-th inequality in (2.1), corresponding to the solution which is obtained by assigning all free variables of a partial solution with positive coefficients in the i-th inequality to one and the others with negative or zero coefficients to zero. Therefore it is the maximum value that the left hand side of the i-th inequality- can achieve over all solutions with F. Similarly, i.(F) is its minimum value. Then CHK-IEQ will take the following action depending on the value of u(F). (a) If u. (F) = for some i, then it will set all free variables with positive coefficients in the i-th inequality to one and underline them; it will also set all free variables with negative coefficients in the i-th inequality to zero and underline them. (b) If u. (F) > for some i, and if there exists a free variable x. i ' J such that la. .1 > u. (f), then CHK-IEQ will set x. (if a. . > 0) to one and underline it; CHK-IEQ will set x. (if a. . < 0) to zero and J ij underline it. (c) If u.(F) < for some i, then there exists no feasible solution with F. The program will transfer to the subroutine BCKTRK and backtrack. (d) If u. (F) > for i = 1,2,..., m, and if there is no free variable left, then there is only one feasible solution which is uniquely determined by F. The previous feasible solution is replaced by the new one and the program transfers to BCKTRK. Since u(F) and i(F) may change when some free variables are assigned, CHK-IEQ will repeatedly check above (a) through (d ) with all inequalities until no further free variables can be set. Then it will transfer to AGMT-VAR. For a problem with many inequalities, the checking process in this subroutine may be very time-consuming. In order to speed up the program, it checks ^(F) for each inequality before the checking of u.(f). If I. (f) >0 for some i, then the i-th inequality is always satisfied, no matter what 8 values are assigned to the free variables. Therefore, the program will skip checking u.(F) for this i. The speed of the program has increased considerably by doing this. (3) AGMT-VAR When CHK-IEQ could neither conclude that there exists no feasible solution with the current F nor find that there exists only one feasible solution with the current F, the program transfers to AGMT-VAR. AGMT-VAR will set one free variable x. to 1 or according to one of the schemes in J Chapter J>, After assigning a free variable, at the user's specification, the program can check whether the variable can be underlined or pseudo- underlined, and underline or pseudo-underline the variable if possible. Then the program will transfer back to CHK-IEQ, to check the partial solution with a new F which is the previous F with one more fixed variable x added. (h) BCKTRK When CHK-IEQ either concludes that there exists no feasible solution with the current F or find the only feasible solution with the current F, the program transfers to BCKTRK in order to generate a new partial solution and then transfers to CHK-IEQ again. The following scheme to generate a new partial solution is called backtrack. With this backtrack scheme it has been proven in [k] that all possible solutions will be implicitly enumerated. In the program, partial solutions are represented by two arrays, X and XS. X indicates what values have been assigned to the fixed variables and XS indicates whether the fixed variables have been underlined or not. Initially, X and XS are empty. Whenever a value is assigned to a free * The conditions for pseudo-underlining and underling a variable is discussed in [6]. variable, its corresponding variable number with proper sign is added to X and XS. The variable number in X is negative, if the variable has been assigned to zero; on the other hand, its variable number is positive, if it has been assigned to one. Similarly its variable number is negative in XS, if it has been underlined; its variable number is positive, if it is not under- lined. For example, assume a partial solution of a problem with six variables is represented by X = {-2,-3,4}, XS = {-2,3,-4}. That is, x is assigned to zero and underlined, x_ is assigned to zero and not underlined, x. is assigned to one and underlined. The rest of the variables are free variables. If x. is set to one and underlined, the new partial solution becomes X = {-2,-3,4,1}, XS = {-2,3,-4,-1} (2.2) When the program transfers to BCKTRK, the underlined fixed variables at the right of the last not underlined variable are set to free variables, and then BCKTRK sets the last not underlined variable to its oposite value and underlines it. For example, with the partial solution (2.2) BCKTRK will set x and x, to free variables since they are underlined variables to the right of the last not underlined variable x . Then x is set to one and under- lined. The new partial solution will be X = {-2,3} X = {-2,-3}. Sometimes variables are pseudo-underlined. In this case their variable numbers in XS are added by 2000. A pseudo-underlined variable is treated as an underlined variable in BCKTRK if no feasible solutions have been found since the variable was pseudo-underlined. Otherwise a pseudo- underlined variable is treated as a non-underlined variable. For example, the variable number of x is 5. 10 If all fixed variables are underlined when the program transfers to BCKTRK, all solutions have been implicitly enumerated. Then all feasible solutions in memory are optimal feasible solutions. If no feasible solution has been found, the problem is infeasible. (5) CHNGMM In the program, u(f) and -0(F) are used very often. In order to save time, the program updates all their values whenever a free variable is assigned to some value instead of calculating them each time they are used. When a free variable x. is assigned to 1 or in some subroutine, the program will transfer to CHNGMM. If x. is assigned to 1, CHNGMM updates u(F) J if a., id > if a. . < if a. . ij = and i(F) by setting u, (F» ) = u. (F) I. (F' ) = I. (F) + a. . u._(F') = u.(F) + a ^(F') = ^(F) u.(F') = u.(F) i^F') = L(F) If x. is assigned to zero, then CHGMM will set J u. (F' ) = u. (F) - a. . Z. (F» ) = I. (F) i l ij l l u. (F» ) = u. (F) I. (F' ) = i. (F) - a. . U. (F') = u.(F) i.(F') = i.(F) Then the program transfers back to the subroutine from which CHNGMM was called. if a. . ij > if a. . ij < if a., iJ = 11 CHAPTER 3 SCHEMES FOR AUGMENTING VARIABLE (AGMT-VAR) (l) Scheme one Let i(F) be the minimum sum (as defined on Page 30) corresponding to a set of fixed variables represented by F, and i(F;x. -» l) be the minimum sum corresponding to a new set of fixed variables represented by F' which is obtained by adding x. -* 1 to F. Let n. be the number of inequalities where J J i.(F) < and i.(F; x. •+ l) > . AGMT-VAR with this scheme will select the free variable which has the maximum n. over j's and assign the free variable j to one. If there are two free variables x. and x. such that n. = n. , J l °2 J l J 2 then the one which has a greater 8. will be selected where B, - 2 (i (F); x -1) - I AY)) . J i.(F)<0 X J X If 6. =5. again, then the one with a greater variable number will be t) -i Jo selected. (2) Scheme two This scheme is essentially the same as scheme one except that the possibilities of setting a free variable to one or zero are both considered. Let n. be the number of inequalities with i. (F) < and I. (f : x. -* a) > 3 i x v ' j 1 N *-* where a is either one or zero. Let n. = Max (n.,n.) . AGMT-VAR with this scheme will select the free variable, x. , such that n. = Max (n.) • x - will be set to one if n. = n. ; x. will be set to zero if n. = n. J J J J J x. is a free variable. **■ 1 1 1 If n. = n.; then n. is chosen as n., in other words, n. = n. D 3 J 'J 3 J 12 If there exist two free variables x. and x. such that n. = n. _, then the ^1 ^2 ^1 "2 one with greater 8. will be selected where J 5 = Z (^.(F;x -a ) - i (F)) 3 i.(F)<0 i J J i J a. = 1 if n. = n.; a. = if n. = n. If 5 . = 8. , then the one with a greater variable number will be selected. J l a 2 (3) Scheme three This scheme is a slight modification of Geoffrion's method _ -*. . * which was based on Balas ' method [1], Let y(F;x. -* 1) be the partial sum J corresponding to a new set of fixed variables represented by F' which is obtained by adding x. -» 1 to F. Let J m p = Z Min (y. (F;x - l),0) + Za , J i=1 J i£V xj where V = (i|y. (F) > 0, y. (F;x. ->• l) < 0) . J- -L J AGMT-VAR with this scheme will select the free variable with has the maximum p. and assign the free variable to one. If two free variables J have the same p., then the one with a greater variable number will be selected. J See Chapter 2- 13 CHAPTER k STORAGE ALLOCATION In the program constant vector b is stored together with matrix A . Only non-zero elements of vector b and matrix A are stored in computer memory. In order to increase the execution efficience of the program, vector b and matrix A are stored both row by row and column by column, (l) Row by row Vector b and matrix A are stored in array variables RWCF, COL, RWPT, RWLT. How vector b and matrix A are stored is shown in Figure k.l and is explained below. RWCF COL RWPT 1 ij+1 • • • k m k m = 16 + il„ + . . . + i . + 1 m-1 *L h • • • i m Figure k.l Row by row storage of matrix A and vector b. Ik 1. All non-zero elements are consecutively stored in KWCF, row by row. 2. The elements of each row are stored according to their ascending column number order. 3. The location, in RWCF, of the first non-zero element of the i-th row is stored in RWPT(I). k. The number of non-zero elements in the i-th row is stored in RWLT(i). 5. The column number of each element in KWCF (k) is stored in COL(k). (2) Column by column Vector b and matrix A are stored in array variables CLCF, ROW, CLPT, CLLT. How vector b and matrix A are stored is shown in Fig. if. 2 and is explained below. CLCF ROW CLPT CLLT * • • ••• ••• ••• 1 £ +1 • • • k n+l k Ml = n+1 i ± + i z + .. . + i +1 n h l 2 n+1 Figure k*2 Column by column storage of matrix A and vector b, 15 1. All non-zero elements are stored consecutively column by column in CLCF. 2. The elements of each column are stored according to their ascending row- number order. 3. The location, in CLCF, of the first non-zero element of the j-th column is stored in CLPT(j). k. The number of non-zero elements in the j-th column is stored in CLLT(j). 5. The row number of each element in CLCF(k) is stored in ROW(k). Vector c is stored in array variable OF in such a way that the coefficient of the i-th variable is stored in OF(i). The best feasible solution found is stored in array variable XHAT in such a way that the value of x. is stored in XHAT(i). If the option to find more than one optimal solution is specified, the best feasible solutions are stored in array variables SLCF, SLPT and two variables AVAIL!, AVAIL. How the solutions are stored is explained below. SLCF )LPT v_ SOLUTION 1 7^ ■2 "3 SOLUTION 2 1 L 2 • • • ^ AVAIL! k AVAIL Figure k*3 Storage of best feasible solutions. 16 1. The number of the best feasible solution is stored in AVAIL1. 2. For each solution, only the subscripts of non-zero variables are stored consecutively in GLCF . }, The begining position, in GLCF, of the i-th solution- is stored in SLPT(i), h. The first available position in SLFL for storing a new solution is stored in variable AVAIL. Partial solution G in the program is expressed by array variables XG, X and variable JX. How G is stored in XG, X and JX is shown in Fig. h-.k and is explained below. Xi h j 2 C- h • • • J k h 3-p i. \ JX k+1 Figure h.h Gtorage of a partial solution. When a free variable x. is fixed by assigning a value to it, variable X and iJ XG are updated as follows. 1. If the value assigned is 1, then j is stored in X(JX). Otherwise -j is stored in X(Ja). 2. If the available X. is underlined, then -j is stored in XG(JX); if X . is pseudo-underlined, then j + 2000 is stored. Otherwise j is stored. 3. Increase -JX by 1. 17 CHAPTER 5 INPUT 5«1 Input for the FORTRAN version. The order of input cards for the FORTRAN version are shown in Fig. 5»1« Since all symbols in the program are defined as half -word integers, all data except NPRNT and NPNCH must be numbers which are in the range from -32768 (-2" 15 ) through 32767 (2 15 -l). All numbers are read in by a FORTRAN I- format. Therefore they must be right justified to be read in correctly. (1) Title Card Only one card for the title is allowed. Any suitable name for the problem can be punched in this card from column 2 through column 80. (2) ZMAX Card ZMAX is the upper bound of an optimal objective function value and it was described on Page 28. It is punched in column 1 through column 5 with its least significant digit at column 5. If no information about the upper bound of the optimal objective function value is known beforehand, ZMAX must be set to a large number which is greater than the sum of all coefficients in the objective function. Also it must be smaller than 32,000. (3) Parameter Card 1 This card contains nine parameters for the program. Each of them occupies five columns with its least significant digit at the rightmost column assigned to it. NPRNT and NPNCH which will be explained later are defined as full-word -31 31 integers and can range from -2 through 2 -1. For IBM 360/75. 18 END CARD BEST SOLUTION CARDS XliAT CARDS NCT3 CARD INITIAL PARTIAL SOLUTION CARDS INEQUALITIES CARDS OBJECTIVE FUNCTION CARDS PARAMETER CARD 2 optional PARAMETER CARD 1 TITLE CARD Figure 5.1 The order of input card deck . 19 (a) N N, punched in column 1 through column 5, is the number of variables in the problem. Because of the dimensions of arrays defined in the program, the maximum number of variables for a problem is 399* Actually, the program will count the number of variables by itself and use this number throughout the program. However, in order to make sure that users have prepared data in the correct form, they are required to supply N. If the value of N is different from the number counted by the program, an error message will be given in the output. (b) M M is the number of inequalities of the original problem plus the two created by the program (i.e., ZMIN < c x and -ZMAX + DVSN + 1 < - c x) It is punched in column 6 through column 10. The program will also count this number; however, for the same reason as N, users are required to supply it. Its maximum value is 999* (c) ZMIN ZMIN, which is the lower bound of an optimal objective function value, is punched in column 11 through column 15. If the user does not know this lower bound of his problem, he can set ZMIN to zero. (d) ITER ITER, which specifies the limit on the number of iterations, is punched in column l6 through column 20. The number of iterations is defined as the number of times the program has entered in the subroutine CHK-IEQ,. If the number of iterations exceeds the value of ITER times fifty, the program will stop. For example, if ITER equals 2, then the maximum number of iterations is 100. Approximately, for a problem of 10 variables and 20 3.0 inequalities one iteration takes 5 miliseconds. The user can estimate the value for ITER depending on how much time he plans to spend on one problem. (e) NPRNT NPRNT, which specifies how often partial solutions will be printed, is punched in columns 21 through 25. Since partial solutions can give some information about what is going on in the program, the user may be interested in knowing it periodically. For example, if the user wants partial solutions to be printed at every 50 iterations, then he can set NPRNT equal 50. ©n the other hand, if he is not interested in partial solutions he can set NPRNT equal zero, then he will not get any partial solution printed unless the iteration limit is exceeded. The output format of partial solutions and the information it can give will be discussed in Chapter 6. (f) NPNCH NPNCH is punched in columns 26 through 30. It specifies how often partial solutions will be punched on cards. When one wants to solve a fairly big problem, he may not be able to use a computer continuously. Then, if he sets a proper value to NPNCH, then the program will punch partial solutions and all the information that is needed for resuming the computation from this partial solution, on cards. So he can continue the problem from the stage where the last run stopped, instead of running it again from the very beginning. For example, if NPNCH is set to 50, then the partial solution and all other related information will be punched at every 50 iterations. Like NPRNT, if NPNCH equals zero, the user will not get any partial solution unless the iteration limit is exceeded. Then the partial solution and all the information that is needed for resuming the execution from this partial solution will be punched at the last iteration. See Chapter 6, Output. 21 (g) SCHEME As discussed in Chapter 3 there are three different schemes for assigning free variables. SCHEME, which is punched in column 31 through column 35, indicates which scheme of them is going to be used. If SCHEME is set to 1, the first scheme will be used. If SCHEME is set to 2, the second scheme will be used. If SCHEME is set to 3 f the third scheme will be used. If a number other than 1, 2, or 3 is set, scheme 1 will be run by the program and at the same time an error message will be given, (h) COEFLG COEFLG is punched in columns 36 through kO. It tells the program how many columns each coefficient in the objective function card and inequality cards (i.e., c, A, b in definition (2.1)) will occupy. COEFLG can only have two values: 8 or k. Generally, if the maximum magnitude of coefficients in a problem is k decimal digits or less, COEFLG will be assigned to k. However, for some problems, if the number of digits (including minus sign) of some coefficients is more than k but does not exceed 8, COEFLG has to be assigned to 8 even if 6 or 7 columns will be sufficient. When a number other than k or 8 is assigned, the program is executed assuming it as h, and at the same time an error message will be printed, (i) TYPE TYPE is punched in columns kl through k-5. It indicates how inequalities will be supplied. In order to describe the input format inequalities let us rewrite them as below: 22 Col. Col. 1 Col. 2 Col. n Rowl b 1 + a nXl + a 12 x 2 + + a ln x n >0 b 2 + a 21 x 1 + a 22 x 2 + + a 2n x n >0 (5.1) Row m b + a n x_ + a „ x_ + + a x >0 m ml 1 m2 2 mm n — Only non-zero coefficients need be supplied. The user may supply inequalities in two different ways. One is to supply them row by row by listing only non- zero coefficients, and their column numbers (the column number of a. . in (^.l) is j ) in each row, in ascending row number order. The other is to list non-zero coefficients and their row numbers (the row number of a. . in (5.1) i) in each column in ascending column number order. For example, if one wants to solve problems which are different in only a few inequalities, then he can supply inequalities row by row. Each time he switches from one problem to another, only a few cards corresponding to the different inequalities need be changed. Similarly if coefficients of some columns will be changed in future, columnwise input is more desirable. If rowwise input is desired, TYPE should be assigned to zero or any negative number. Otherwise, it should be any positive number. (h) Parameter Card 2. This card contains 7 parameters for the program, (a) XZST The value of XZST is punched in column 1. It indicates whether more than one optimal solution is desired or not. When more than one optimal solution is desired, XZST should be set to 1. Otherwise XZST is set to 0. 23 (b ) MAXNO The value of MAXNO is punched in column k through column r J. When XZST is 1, MAXNO specifies the maximal number of optimal solutions needed. (There may be more than MAXNO optimal solutions.) MAXNO cannot be specified to be more than 1,000. If more than 1,000 optimal solutions are needed, the program needs a slight modification of the program. (c) DVSN The value DVSN is punched in column 10 through column 13. It specifies an acceptable deviation from an optimal value. It must be a non- negative integer. If a negative integer is specified, it is assumed to be value and an error message -will be printed. (d) Ph The value of Pk is punched at column l6. It indicates whether feasible solutions found during the execution will be printed or not. Some of the feasible solutions found during the execution will be printed when Pk is set to 1. Otherwise Pk is set to any integer other than 1. (0 is also acceptable. ) (e) P5 The value of P5 is punched in column 19 through column 22. When Pk = 1, P5 specifies the ordinal number of the first feasible solution to be printed. As an example, if Pk = 1 and P5 = h, then all feasible solutions starting from the fourth feasible solution found during the execution will be printed until the program reaches the feasible solution specified by the following P6. 2k (f) p6 The value of P6 is punched in column 25 through column 28. When T?k = 1, P6 specifies the ordinal number of the last feasible solution to be printed. As an example, if Fh = 1, P5 = 3 and P6 = 9, then the third through ninth feasible solutions found will be printed. (g) P7 The value of P7 is punched in column 31» It specifies whether the underlining and pseudo-underlining conditions be checked or not. If the underlining and pseudo-underlining conditions need not be checked, it is set to 1. Otherwise it is set to any integer other than 1. (0 is also acceptable. ) When P7 is set to 1, scheme 1 is recommended because the other schemes appear to be more time-consuming (judged from some example problems). (5) Objective Function Card(s) Only the first 7 2 columns of each card are used for objective function. Columns 73 through 80 will not be read into a computer and these columns can be used as comment for the user's convenience. The first 72 columns of each card are divided into a certain number of entries where the number of columns for each entry depends on the value of COEFLG. If COEFLGr is set to h, then each entry consists of eight columns, and each card can have nine entries. They are located in columns 1-8, 9-l6, 17-2^, etc. The value of coefficient is in the first four columns of each entry. Only non-zero coefficients have to be specified. They do not have to be arranged in a ascending column number order. If there are two entries of the same column number, the first one of these two entries will be ignored and an error message will be given. If the number of non-zero coefficients of an objective function is greater than nine, more than one card must be used. The termination of the objective function is indicated by a negative number in the last four 25 columns of the entry following immediately after the entry of the last non- zero coefficient. If an objective function has exactly nine non-zero entries, one extra card with a negative number in the last four columns of its first entry is needed just for indicating termination. When COEFLG equals 8, every- thing is the same except that each entry consists of twelve columns and that each card can only have six entries. In this case, the value of coefficient is in the first eight columns of each entry and its column number is in the last four columns. Here, readers should refer to the examples given in Appendix 1A. (6) Inequality Cards In the same way as objective function cards, the first "J2 columns of each card for inequalities are divided into many entries. The relation between the number of columns for each entry and the value of COEFLG is the same as that for the objective function. Therefore it will not be repeated here. In the following discussion we assume that COEFLG is set to k. (When COEFLG is 8, everything will be the same as the case of k except that each entry consists of twelve columns and that each card can have only six entries.) There are two ways to supply inequalities depending on the value of TYPE. (a) IF TYPE is non-positive This means that the inequalities should be supplied row by row. Constant term b. should be supplied with column number 0, in each row. (See (5«l)«) Since COEFLG is k, there are nine entries on each card and each entry consists of eight columns. The non-zero coefficients of each row are listed according to ascending column number order with their values in the * If not in this order, an error message will be given and the execution of this program is halted. 26 first four columns of each entry and their column numbers in the last four columns. Like the objective function, a negative number has to be used right after the last non-zero entry in order to show the termination of each inequality. The next inequality has to start In a new card. The program will number the rows as 1st row, 2nd row, etc., according to the order they are supplied. (b) If TYPE is positive Inequalities are supplied column by column if TYPE is positive. The format of cards is exactly the same as for rows. However the non-zero coeffi- cients of each column are listed according to their row order with the coeffi- cients in the first four columns of each entry and their row numbers on the last four columns. The cards for each column should be arranged in column order; card(s) for column (column fir b.) first, card(s) for column 1 (column for a, ) second, etc. Furthermore non-zero coefficients of each column must be arranged in ascending row number order. The end of each column is designated by a nega- tive number in the last four columns of the entry immediately after the entry of the last non-zero coefficient. Different from the objective function card(s), column 73 of the inequality cards has to be blank except the last card . For the last card, if no initial partial solution will follow, column 73 should be the letter 'S'. If some partial solution will follow, column 73 should be the letter ' S'. Note that all inequalities have to be transformed to the form (^«l) before preparing data. The maximum number of non-zero coefficients is 399 f° r each row and 999 for each column. The total number of non-zero coefficients of all inequalities can not exceed 10000. See the footnote of case (a), where type is negative. ** The last card of the Last row or Last coLumn. 27 (7) Initial Parial Solution Card(s) The initial partial solution cards use the first 75 columns which are divided into 15 entries. Each entry consists of five columns. As it was described on Page 32, every variable number that appears in XS must also appear in S, but it may have different signs in X and XS. Therefore the first four columns of each entry are used to indicate the variable number and its sign in XS; the fifth column is either 1 or 0. If it is 1, the variable number with the same sigh as in XS appears in X. If it is 0, the opposite sigh is assumed in X. The termination of the initial partial solution is indicated by an entry with value contained in its first four columns. All entries after this end must be blank. Otherwise an error will be introduced into computation. If the initial partial solution has exactly fifteen fixed variables, then another card with an end entry (i.e., value in its first four columns ) as its first entry has to be added in order to show the termination. Note that if no initial partial solution is prepared, the initial parial solution card is not needed. However, the last card for inequalities must have an ' E' in its 73 column. Then, the program will start with a solution having no fixed variables. (8) NCT3 Card This card is needed only when a user has an initial partial solution. The value of NCT3 is punched in the first column of this card. NCT3 is set to 1 if a best feasible solution is provided in XHAT cards (these cards follow the NCT3 card), as explained in the following (9). Otherwise NCT3 is set to 0. 28 (9) XHAT Cards These cards are needed only when NCT3 = 1. It provides the program the best feasible solution found so far when a user has an initial partial solution. These cards are punched by the program when the number of iterations exceeds the number specified by ITER or reaches the number specified by NPNCH. For further details of XHAT cards see Chapter 6 (Output). (10) BEST SOLUTIONS Cards These cards are needed only when NCT3 = 1 and XZST = 1, i.e., only when more than one optimal solution is desired and some feasible solutions have been found. These cards provide the best feasible solutions found so far for the program. These cards include AVAIL card, SLCF cards and SLPT cards. Generally these cards are punched by the program when the number of iterations exceeds the number specified by ITER or reaches the number specified by NPNCH. The input sequence in BEST SOLUTION cards is shown in Figure 5.2. For further details of these cards see Chapter 6 (Output). SLPT cards ^L SLCF cards AVAIL1 AVAIL (AVAIL card) Figure 5.2 Input sequence of BEST SOLUTIONS CARDS. 29 (11) End Card The program has the capability to run many problems consecutively just by concatenating the data decks serially. The END card with 'END' in its first three columns is put at the end of the last problem in order to terminate execution of the program. 5.2 Input for PL/ 1 version. The first input card for the PL/ I version is the INITIAL card, which initializes the lengths of array variables used in the program. Five integers are to be provided by this card. (1) Nl. Nl is the maximal number of non-zero coefficients of inequalities of a problem to be solved. (2) N2. N2 minus 2, i.e., N2 - 2 is the maximal number of inequalities of a problem to be solved. (3) N3. N3 minus 1, i.e., N3 - 1 is the maximal number of variables of a problem to be solved. (h) NU. N4 is the maximal number of non-zero variables of all the optimal solutions of a problem to be solved . (h) N5. N5 is the maximal number of optimal solutions of a problem to be solved. These five numbers, Nl through N5, are sequentially punched on one card with at least one blank between numbers. These five numbers must be positive integers. When only a single optimal solution is needed, Nk and N5 can be set to 1. (Other positive integers are also acceptable. ) When multiple optimal solutions are needed, ~Nk can be set to N5 X N2. One can set a smaller value for NU as well. But if NU specified is not See Chapter k, Storage Allocation. 30 big enough, some optimal solutions will be missed and a message of insufficient storage will be printed. The user should note that the greater these five numbers are, the more core storage is needed for the execution of this problem. The program itself takes 84K bytes storage. The total core storage needed is 84K + 12 • Nl + 22 • N2 + 20 • N3 + 3 • N^ + 3 • N5 bytes. Except for these five numbers, all other columns in this card must be blank. The other input cards which follow the INITIAL card are the same as those for the FORTRAN version shown in Figure 5.1. The data to be contained in each card are the same as those explained for the FORTRAN version. The only difference is that the data in the parameter cards, the objective function cards and inequalities cards do not have to be punched in some fixed columns, as explained below, (l) Parameter cards Nine parameters in Parameter Card 1 and six parameters in Parameter Card 2 (the option which specifies that underlining and pseudo-underlining conditions be not checked is not implemented in the PL/ I version) can be sequentially punched on one card or several cards with at least one blank between parameters. The other columns of the parameter cards must be blank. These are no fixed columns for any parameter. Parameter COEFLG does not mean anything in PL/ I version. It can be any integer number. 31 (2) Objective function cards The data contained in these cards are sequentially punched on these cards with at least one blank between numbers. Be sure to keep all other columns blank except those for input data. In addition to columns through 72, columns 73 through 80 also may be used for input data. (3) Inequalities cards The value and column number (or row number) of each non-zero coefficient in each row (or column) are sequentially punched on these cards according to ascending column (or row) number order. There must be at least one blank between numbers. An entry with a negative column number shows the end of an input row and an entry with a negative row number shows the end of an input column. Right after a negative column number (or row number), there must be an entry in card column 73* as follows. If there are more rows (or columns) to be supplied, the 73rd column entry must be other than blank, E, S. If there are no more rows (or columns) to be supplied and no partial solution follows, the 73rd column entry must be E. If there are no more rows (or columns) to be supplied and some partial solution follows, then the 73 column entry must be S. Each row (or column) starts with a new card. Columns 73 through 80 also may be used in the same way as the previous columns. All other columns must be kept blank except those for input data. See 5.1 Input for FORTRAN version. 32 CHAPTER 6 OUTPUT The output of this program will give not only the answer of the problem but also some algorithm statistics : the total number of iterations, the number of backtracks, the number of underlined variables added, and the number of feasible solutions found, which may give a user some idea of the efficiency of the algoritni and the feasibility of his problem. The number of backtracks is the number of times the program went the subroutine BCKTRK, i.e., the program either finds the only feasible solution with a certain F (defined in page 30) or concludes that no feasible solution with a certain F exists. The number of underlined variables added is the number of times that the program discovers a variable has to be assigned to a certain value (l or 0). Therefore, the larger these two numbers compared with the total number of iterations, the more efficient the program is. First, a name for the problem will be printed exactly as it is punched on the title card. The number of variables, the number of inequalities and the scheme used to assign free variables will be printed next. If XZST is set to 1, a message of how many optimal solutions are desired will be printed. If DVSN is greater than 0, a message of how large this deviation is will also be printed. Then the program compares the values of M and N supplied by the user with the values counted by the program itself (M and N are the number of constraints and the number of variables, respectively). If the values are different, then an error message will be given and the program assumes the values the program counts. Then, the objective function and inequalities of the problem will be printed. The inequalities are transformed into the form -b < A x. The '<' sign is actually printed as 'LE' (less than or equal to). Only variables with 33 non-zero coefficients are printed. For a positive coefficient, the program will print a '+' sign before the value. However for a negative coefficient, the program also will print a '+' sign before the '-' sign of the negative value. If there is an initial partial solution, it will be printed as X and XS in the form described on page 33» In addition to the initial partial solution, the partial sum (y(F) on page 30) for each inequality will also be given. They are listed according to the row order. If P = 1 , a message which indicates the use of the special checking routine will be printed. If NPRNT is not zero, then partial solutions at the specified numbers of iterations will be printed. In addition to partial solutions, some other statistics, such as the number of backtracks, the number of i underlined variables added, and the number of feasible solutions found during the specified iteration will aslo be given. From a partial solution printed, the user can evaluate how many solutions have been implicitly enumerated at the stage as well as what values have been assigned to those fixed variables. For example, if a partial solution of a problem of 20 variables is given as X = {1,-11,2,7,-6} XS = (1,^,-2,7,-6} , then from X we know x , x, , x , x , x^ are fixed variables and x , x , x are assigned to one and x, , x^ are assigned to zero; from XS we know x and x^ are underlined. Since "underline" means that the partial solution with the variable assigned to the opposite value has been See Chapter 5, Input. 3k implicitly checked, the partial solutions with F = (x -* l,x -* 0,x, -*■ 0) (due to -2 in XS) and with F = (x -* l,x -* l,x, -*■ 0,Xs -* l,x -» 1} (due to -6 in XS) in the above example have been checked. Since free variables in a partial solution can be assigned to 1 or 0, and since there are three fixed variables in the first partial solution with F, and five fixed variables in the second partial solution with F p , the total number of solutions with F or F , i.e., the total number of solutions which have or) o 00 R been implicitly enumerated, is 2 +2 . If the problem is solved with an optimal feasible solution, the optimal feasible solution will be printed in two lines. The first line contains the variable number and the second line contains its corresponding value. For example, if an optimal feasible solution is x = x = x, = X/ = 1, x = x = , then it will be printed as VAR. NO 12 3^56 VALUE 10 110 1 . In addition to the optimal feasible solution, the value of the objective function corresponding to the optimal feasible solution, the total number of iterations, the number of iterations when the optimal feasible solution was found, the number of backtracks, the number of underlined variables added, and the number of feasible solutions found will also be given. When more than one optimal solution is desired, the other solutions, if they exist, are printed as described above, without printing the algorithm statistics. If the problem does not have any feasible solution, then the program will print that the problem is infeasible and give some algorithm statistics. If the problem is not solved within the maximum number of iterations specified, the program will print that the number of iterations specified 35 is exceeded. The best feasible solution which has been found (if any) and some algorithm statistics will also be given. When more than one optimal solution is desired, other best feasible solutions, if any, will also be given. When NPNCH is not 0, a partial solution together with information that is needed for the user to resume his program starting from this partial solution are punched on cards. These cards are as follows: (1) NCT^ card This card indicates the number of iterations when a partial solution is punched. The number of iterations is punched in column 73 through column 80 of this card. (2) ZMAX card The best objective function value found so far at the specified number of iterations is punched in column 1 through column 5 of this card. This card can be used as the ZMAX card of the input for the next run starting from the partial solution punched at the same number of iterations. (3) PARTIAL SOLUTION cards A partial solution is punched on these cards in the format as described in the Initial Parial solution cards in Chapter 5» (k) NCT3 card The value of NCT3 is punched in column 1 of this card. It indicates whether a feasibel solution has been found at the number of iterations when the partial solution is punched. If any feasible solution is found, the value of NCT3 is 1. Otherwise the value of NCT3 is and all the following cards to be discussed from (5) to (8) are not punched. 36 (5) XHAT cards When a partial solution is punched, the best feasible solution found so far is punched in these cards. Each coefficient of the best feasible solution is punched from column 1 through column 72 in each card. If one card is not enough (i.e., N > 72 ), then other cards are also punched. These cards will be punched only when NCT3 = 1. (6) AVAIL card When more than one optimal solution is desired, other best feasible solutions are stored in variables SLCF, SLPT, AVAIL and AVAIL1 . The information stored in these variables is needed when the problem is resumed starting from some partial solution. The values of AVAIL1 and AVAIL are punched in this card in column 1 through column h and column 7 through column 10. This card is punched only when XZST = 1 . (7) SLCF cards The information stored in SLCF is punched in these cards. The first 70 columns in each of these cards are devided into l4 entries, each of which consists of five consecutive columns. The value of each information in SLCF is punched in the first four columns of each entry; the 5-th column is blank. These cards are punched only when XZST = 1 . (8) SLPT cards The information stored in SLPT is punched in these cards. The first 72 columns in each of these cards are devided into 18 entries. Each element stored in SLPT is punched in each entry consecutively. The number of these cards depends on the number of elements stored in SLPT. These cards are punched only when XZST = 1 . See Chapter k, Storage Allocation. Sse Chanter 5. InDut, 37 The order in which these cards discussed from (l) through (8) is shown in Figure 6.1. When NPNCH is and the number of iterations specified is exceeded, the cards discussed from (l) through (8) above will also be punched. OPTIONAL Figure 6.1 Card output of the program. 38 CHAPTER 7 SOME REMARKS ON USAGE 7«1 Solving Problems With Non Zero-one Variables and Problems With Non- Linear Objective Function Or Constraints. Note only zero-one linear programming problems can be solved by this program. Other problems such as linear integer programming problems with bounded integer variables, and zero-one programming problems with polynomial constrains or with a polynomial objective function can all be converted into zero-one linear programming problems. So they can be solved by this program. How these problems can be converted into zero-one linear programming problems is presented in Appendix 2. 7.2 Continuation Of The Execution Of A Problem Which Was Not Solved By Last Run. A big problem that needs a long computation time may not be solved by a single run of a computer due to the time limitation. Then a proper value of NPNCH must be specified in order that a partial solution and all information that is needed for the problem to be started from this partial solution can be punched on cards at every NPNCH iterations. The cards that are punched are shown in Figure 6.1. Then if the problem is not solved by one run, the problem can be started from the last partial solution punched by the program. When a problem is to be started from some partial solution that was punched by the program, the sequence of input cards is shown in Figure 5.1 The ZMAX card in the input deck is replaced by the ZMAX that has been punched by the program and the INITIAL PARTIAL SOLUTION cards are those PARTIAL SOLUTION cards punched by the program. All cards that are needed for running the problem with an initial partial solution are included in the See Chapter 5, Input. 39 partial solution deck(s) punched by the original run. A user should note that the input sequence of these cards is the same as the sequence they are punched. It also should be noted that the 73rd column of the last inequality card must be changed by the user from ' E' to 'S'. Also by setting NPNCH to zero and ITER to a proper value, only one partial solution and the necessary information for resuming the computation from this partial solution can be punched when the number of iteration specified by ITER is exceeded. The value of ITER should be care- fully specified. If the value specified is too large, there is not enough time for the computation of that many iterations. Consequently there will be no partial solution punched when the time limit is exceeded and the problem has not been solved yet. And then the computation can only start from where the previous run starts. 7.3 Specification Of A Suitable Deviation. When only a suboptimal solution is enough, one can specify an acceptable deviation for DVSN and then the computation time will be reduced. f.k Set-up Of An Initial Partial Solution. If the values of some variables are known, these variables can be set to these known values, by supplying an initial partial solution with all these variables underlined. For example, if we already know that x =1, x =0, x = 1 in a problem, then we can provide a partial solution XS = {-5,-10,-12}, X = {5,-10,12} in the input cards as stated in Chapter k. Then the computation time will be reduced. If one want to include some non- underlined variables in a partial solution, which fixes some variables to some values, then the non-underlined variables must be placed after the underlined variables. 1+0 7*5 Problems With Equality Constraints. An equality constraint Z a, .x. = b. ^ 10 J i can be rewritten into the folio-wing inequality constraints -Z a. .x. > -b. 3 U d - i and Z a. .x. > b. , thus a problem with equality constraints can be solved by this program. 7#6 Skip Of Checking Underlining And Pseudo-under lining Conditions. If a problem has many equality constraints, it is better to set P„ = 1, i.e., skip the checking of underlining and pseudo-underlining conditions. These two conditions [6] are seldom satisfied when there are some equality constraints in the problem. 7.7 Specification Of Parameter XZST. When XZST = 1, i.e., more than one optimal solution is wanted, the suboptimal feasible solution obtained is an optimal feasible solution, no matter what value of DVSN is specified. in REFERENCES [l] Balas, Egon, "An Additive Algorithm for Solving Linear Programs with Zero-One Variables/' Operations Research vol. 13, no. k, pp. 517-5^9, July - August 1965. [2] Balinski, M. L. , "Integer Programming: Methods, Uses, Computation," Management Science , vol. 12, no. 3, 19^5. [3] Baugh, C.R. , Ibaraki, T. , Liu, T.K. and Muroga, S., "Optimal Network Design Using NOR-AND Gates by Integer Programming," Jour, of Operations Research , July - August, 1971, pp. IO9O-IO96. [h] Geoff erion, Arthur M. , "Integer Programming by Implicit Enumeration and Balas' Method, " SIAM Review , vol, 9, no. 2, pp. I78-I9O, April I967. [5] Haldi, John, "25 Integer Programming Test Problems," Working Paper No. k3, Graduate School of Business, Stanford University, December 196^. [6] Ibaraki, T. , Baugh, .C.R. , Liu, T.K. and Muroga, S., "An Implicit Enumeration Program for Zero-One Integer Programming," International Journal of Computer and Information Sciences, March 1972, pp. 75-92. [7] Muroga, S. and Ibaraki, T. , "Logical Design of an Optimal Network by Integer Linear Programming - Part I," Report No. 26U, Department of Computer Science, University of Illinois, July 1968. [8] Muroga, S. and Ibaraki, T. , "Logical Design of an Optimal Network by Integer Linear Programming - Part II," Report No. 289, Department of Computer Science, University of Illinois, December, 1968. [9] Muroga, S. and Ibaraki, T. , "Design of Optimal Switching Networks by Integer Programming," IEEE TC, June 1972, pp. 573-582. [10] Muroga, S., " Threshold Logic and Its Applications ," Chap. Ik, John Wiley, 1971. [ll] Muroga, A., "Logical Design of Optimal Digital Networks by Integer Programming," in Advances in Information Systems Science , vol. 3, ed. by J.T. Tou, Plenum Press, 1970, pp. 283-3^8. [12] Liu, T.K. , "A Code for Zero-One Integer Linear Programming by Implicit Enumeration (A programming manual for ILLIP)," Dept. of Computer Science, Univ. of Illinois, Rept. No. 302, Dec. 15, 1968, kO pp. [13] Young, M.H. , "An Implicit Enumeration Program for Zero-One Integer Programming - ILLIP-2" Master thesis, Department of Computer Science, Univ. of Illinois, Urbana, 111., I976. [lk] Glover, F. and Woolsey, E. , "Note on Converting the 0-1 Polynomial Programming Problem to a 0-1 Linear Program," MSRS 72-3, Graduate School of Business Administration, Univ. of Colorado, Feb. 1972. k2 APPENDIX 1 EXAMPLES Example 1 Assume we want to solve the following problem. Minimize 8x 4- kx> + 2x + x, + 8x + 2x + x + 8x + + kx ±2 + 2x 13 + x ±k subject to, -5^ -2x -3x 2 + 8x + kx, + 2x + Xg + l6x + 8xg + kx + 2x + I6x u + 8x 12 + hx 13 + 2x li+ > -54 - 3*-, - 2x + l6x + 8x. + kx + 2.x, + 8x + kxn + 2x + x 1Q + l6x u + 8x 12 + kx + 2x lJ+ > -15 + 9x ± + 8x + kx^ + 2x + Xg > -15 + 9x 2 + 8x + kx Q + 2x 4- x 1Q > This problem has Ik variables (N = Ik), 6 inwqualities (M = 6) i.e., the above k plus 2 generated by the program, (i.e., ZMIN < c x and - ZMAX + DVSN + 1 < c x. ) If we don't know the lower bound and upper bound of the optimal value of the objective function, then we will set ZMAX to k6 (l plus the sum of all coefficients in the objective function) and ZMIN to zero. We don't want the total number of iterations to exceed 100 (ITER =2). We want a partial solution printed and punched at every 20 iterations (NPRNT = 20). * r T This is a problem solved by Haldi in L5J. kl Each non-zero coefficient in the objective function and in the inequalities will occupy k columns (COEFLG = k). The first scheme of assigning free variables will be used (SCHEME = l). We will spply the inequalities row by row (set TYPE to zero or any negative value). We want to initialize a partial solution X = {-5,2,-8}, XS = (5,2,-8), i.e., x = 1, x = 0, x fi = and underline Xo. Then the input data for this problem will be: 1. Title card Columns 1 ~ 6 blank 2k ~ 80 blank 2. ZMAX card Columns 1 ~ 5 bbb^6 3. Parameter card 1 Columns 1 ~ 5 bbbli+ 16 ~ 20 bbbb2 31 ~ 35 bbbbl k. Parameter card 2 Columns 1 ~ 7 ObbbbbO 17 - 22 bbbbbO 32 ~ 80 blank. Columns 7 ~ Ik EXAMPLE!^ Columns 6 ~ 80 blank Columns 6-10 bbbb6 21 ~ 25 bbb20 36 ~ 1+0 bbbb^ Columns 8-13 bbbbbO 23 - 28 bbbbbO Columns 15 ~ 23 PROBLEMbl Columns 11 ~ 15 bbbbO 26 ~ 30 bbb20 ^1 ~ k5 bbbbO Columns Ik ~ l£ bbO 29 - 31 bbO V represents blank. I* 5. Objective function cards First Card Columns Columns 1 - k bbb8 5 - 8 bbb3 13 ~ 16 bbbl+ 17 - 20 bbb2 25 - 28 bbbl 29-32 bbb6 37 - Uo bbb7 1+1 - 1+1+ bbbl+ 1+9 ~ 52 bbb2 53 - 56 bbb9 6l - 61+ bblO 65 - 68 bbb8 73 ~ 80 blank Second card - Columns Columns 1 ~ 1+ bbbU 5 - 8 bbl2 13 - 16 bbl3 17 - 20 bbbl 25 ~ 28 bbbb 29-32 b-99 6. Inequality cards » First inequality First card Columns Columns 1 ~ 1+ b-5l+ 5~8 bbbO 13 ~ 16 bbbl 17 - 20 bb-3 25 - 28 bbb8 29-32 bbb3 36 - 1+0 bbbU 1+1 ~ 1+1+ bbb2 1+9 ~ 52 bbbl 53 - 56 bbb6 6l - 61+ bbb7 65 ~ 68 bbb8 73 ~ 80 blank Columns 9~12 bbbU 21 - 2l+ bbb5 33 - 36 bbb8 1+5-1+8 bbb8 57 ~ 60 bbbl 69 - 72 bbll Columns 9-12 bbb2 21 - 2l+ bblU 33 ~ 80 blank Columns 9-12 bb-2 21 ~ 2k bbb2 33 - 36 bbbU 1+5 - 1+8 bbb5 57 ~ 60 bbl6 69 ~ 72 bbb8 h5 Second card Columns 1 ~ k bbbl+ 13 - 16 bblO 25 - 28 bbb8 37 ~ ^0 bbl3 1+9 - 52 bbbb Second inequality First card Columns 1 ~ k b-5^ 13 - 16 bbbl 25 ~ 28 bbl6 37 *• ^0 bbbU 1+9 * 52 bbb2 6l ~ 6k bbb7 73 ~ 80 blank Second card Columns 1 ~ k bbb2 13 ~ 16 bblO 25 - 28- bbb8 37 ~ hO bbl3 1+9 ^ 52 bbbb Columns 5 ~ 8 bbb9 17 - 20 bbl6 29^32 bbl2 1+1 ~ U1+ bbb2 53 - 56 b-99 Columns 5 - 8 bbbO 17 ~ 20 bb-2 29-32 bbb3 1+1 ~ 1+1+ bbbU 5l+ ~ 56 bbb6 65 - 68 bbbU Columns 5 ~ 8 bbb9 17 ~ 20 bbl6 29-32 bbl2 1+1 ~ 1+1+ bbb2 53 ~ 56 b-99 Columns 9 ~ 12 bbb2 21 ~ 21+ bbll 33 ~ 36 bbbl+ 1+5 - 1+8 bbll+ 57 ~ 80 blank Columns 9-12 bb-3 21 - 2l+ bbb2 33 ~ 36 bbb8 1+5 - 1+8 bbb5 57 - 60 bbb8 69 - 72 bbb8 Columns 9 ~ 12 bbbl 21 ~ 2l+ bbll 33~36 bbbU 1+5 - 1+8 bblU 57 - 80 blank 1+6 Third inequality Columns 1-1+ b-15 13 ~ 16 bbbl 25 - 28 bbbl+ 37 - ^0 bbb5 1+9 - 52 bbbb Forth inequality Columns 1 ~ k b-15 13 - 16 bbb2 25 - 28 bbtl+ 37 ~ UO bbb9 1+9 ~ 52 bbbb 73 S Columns 5 - 8 bbbO 17 ~ 70 bbb8 29 - 32 bbbl+ 1+1 - 1+1+ bbbl 53 ~ 56 b-99 Columns 9-12 bbb9 21 - 2k bbb3 33 ~ 36 bbb2 1+5 ~ 1+8 bbb6 57 ~ 80 blank Columns 9~12 bbb9 21 - 2l+ bbb7 33 ~ 36 bbb2 1+5 ~ 1+8 bblO 57 ~ 72 blank Columns 5-8 bbbO 17 - 20 bbb8 29-32 bbb8 1+1 - 1+1+ bbbl 53 ~ 56 b-99 7*+ - 80 blank . The characters 'S' in column 73 of this card tells the program that initial partial solution will follow. If no initial partial solution will be supplied, the character 'E' should replace 'S'. 7. Initial partial solution card Columns Columns 1-5 bbb50 6-10 bbb21 16 - 80 blank 8. NCT3 card Column 1 is 0, column 2 through column 80 are blanks. Columns 11-15 bb-8l hi 9. End card Columns Columns 1 - 3 END k ~ 80 blank If more than one problem is to be solved, this card should be at the end of the last problem. The output for this problem is shown in Figures A. 1.1 and A. 1.2. Example 2 This example shows the feature of finding some alternative optimal solutions. Assume we want to. find all of up through 30 alternative optimal solutions of the problem: minimize ^x + x + 2x + 5x, + kx + 6x^ + lx + 2xq + x g + 2x 1Q under contraints 2 < X + X„ + X_ + X c - 2 3 5 6 2 < x i + x l+ + x 5 + x 6 2 < x 1 + x 2 + x + x^ 1 < x 5 + x 6 2 < x ? + x 8 + x 9 + x 1Q x.= or 1 for i = 1,2,..., 10 . The input for solving this problem is prepared as shown in Figure A. 1.3. The problem is solved by ILLIP-2 in 0.18 second. The computational result is shown in Figures A.l.U. This problem has only 2 alternative optimal solutions. s - in r o < , J J -3 - — ■ 1+8 "j » ' .' .n C -O * ■£> * T T (T *J rj — ■ « *1 -1 »«-«*iflnin« £ — — « Bi M - X « l\l « 00«««l\|iM\IM t' * «M"U — €»©«•*• o - 1 1 1 1 ftj l^ a o z ♦ ♦ * ♦ ♦♦♦♦♦♦♦♦ <\, ~ M U-.>-r g n-*n- 4 ■" M - 2 U u Z _ K z H MMMXKMKMM ii « 1 - O ■ M • n--o.rcc.ee 3 4 o > i o w 1 1 1 1 * I « i Si • .1 li VI ♦ * ♦ ♦♦♦♦♦♦♦♦ J 4 W w < • • « m U J 5 U. O III i 1 < J " 4 J J -J J J J a 3 i 9 * - o « « «< m u in « a * « s ■ 11 ^ in - - « a. N N a a X 4 > 1 i * u > K O — ■" 4 5 U rfl wt (■ s ^ ■ N M • Ifl « IT o a o z (A Z M 1 z o I *■ M K - > d 4 u n Si HI Z j a t £ a a 1 J 4 id Ik i &* % i i! ! 3 tf UJ t w 2 u < - iu a j o - a a * s: ■ 5 B k. » & o a * i i! A <§ O | o -p G •H ft <1J •H <* - m -« c\j — ±9 z u _l o V) UJ -J CD O — o> -• CO o N — vQ - U) o «■ o rrv - (VJ — in (VJ (VJ (VJ (/) «4 -« < UJ u. • i o z * UJ ►* • 3 H a j Q. < < O > > UJ -J < > UJ > u UJ CD U z u < (X UJ u. a • a z z - Q >- Z a d u u u. z uj en x < M * 1/1 Z z o u — y- _> < -J a a UJ V) M UJ J u, u o - V) • < o uj z U. < < CO u. u • o z u UJ • a o < z > z u U. U o 10 UJ _) IS •-< < UJ u. u. o Q z OJ OJ H & o I •H ft 50 OJ H & .3 o ■3 03 o I I 00 H <: fo O Flh 51 r - t- it + ♦ .n 7 « « X X * X 10 tf fl ff K » r> OJ i O 1 •H ft 4 on */> J « ■ o X « >- w > s fc2 * = ; KMMWHXKMKX* I I ♦ ♦♦♦♦♦♦♦♦♦♦ *-T7 ♦ ♦♦♦♦♦♦♦ 9N<«N>NIIINt O 3 SS 8 Si X « ir I! O X * > 4 • a a 52 Example 3 This example shows l) the feature of finding a suboptimal solution with an accepted deviation from an optimal objective function value, and 2) the feature of printing feasible solutions found during the execution of the program. Assume we want to find a suboptimal solution with an acceptable deviation of 2 from an optimal objective function value of the following problem: minimize 6kx + 32x. + l6x_ + 8x^ + kx + Xo + x 9 + 64x 1Q + 32x 11 + I6x 12 + 8x 13 + kx lk + 2x 15 + x l6 + 61fx 17 + 32x l8 + l6x 19 + 8x 2Q under constraints U55 < - 20x 1 - 30x 2 + 6kx + 32x^ + l6x + 8xg + kx + 2xg + x + 128x 10 + 6^^ + 32x 12 + l6x x + Qx^ + kx^ + 2x^ + 128x 1 + ^^x^ + 32x + l6x 2Q + 8x 21 + kx 22 + 2x 2 , k85 < - 30x 1 - 20x 2 + 128x + 6kx^ + 32x + l6xg + 8x + kx^ + 2x + 6^x 1Q + 32x 11 + Ifaj^ +8x i3 + kx ±k + 2x 15 + x l6 + 128x 1? + 6hx ±Q + 32x 19 + l6x 2Q + 8x 21 + ^x 22 + 2x , 127 < 75x 2 + 6kx 1Q + 32^^ + l6x 12 + kx lk + 2x 15 + x l6 , 53 127 < 60x 1 + 32x 11 + 8x 12 + 8x + kx^ + 2x + x^ , x. = or 1 for i = 1,2,..., 23 The ^-th through 10-th feasible solutions found during the execution are also wanted. The input for this problem is prepared as shown in Figure A. 1. 5» The computational result is printed as shown in Figures A. 1.6 and A. 1.7* A suboptimal solution with the objective function value of 306 is found in 0.95 second after 286 iterations. The optimal solution can be found by using the same augment-scheme (scheme 3) in 1.70 second with 528 iterations . This fact demonstrates that a suboptimal solution is always found in less time and with fewer iterations than the time and iterations needed for finding an optimal solution. See the computational result in Chapter 5 of [13]. 5h m H & o o a o I H UN H bO •H 55 ♦ ♦ O <0 t> c X X N f> K. - - CM - CM ~ "* "* w ^ x X X X X X X M X X X X X V in "i •< n - o « = in n — IT n — -eg - cm X X X X X X X » « 1- >- 3 « — 3 « - 3 « 3 « - Z X X X X X X X X X X K X X ■ X X X J J J J n o a u u a eg — o eg s O m • o eg B o w « z o V) u 1 - 1 7 g UJ i 3 • UJ I PI VI S CM X eg - eg eg •• r- ♦ ♦ ♦ 1- ♦ * ♦ ♦ ♦ ♦ ♦ * * « * * ♦ ♦ ♦ ♦ w M M in UJ III I iu - * J a « 2 1 -> a 0> -< UJ UJ m W! uj UJ 2 UJ < •J 2 3 « J J j J J J IL U. -• «4 U. Ik " o IL 3 -o £ » - < m » p> r- m o X X X o X O < S K 111 X X X UJ in s N N e !■ n H "i R m tm m x < a > z « « t 4 « • « I K in > iu o « ■0 o l o o u *■ < •• Z z z ISS U HI u • 3 at •3 5 « • * a. UJ • 3 ac SI "1 IS a O •• eg n « in > N la > > N !• > > N H > > N H rH Bl •H rvi 56 •VI ~ c M J< -. ■n -. n — o c LO I. t C< C\J "1 U C\J CJ o -« o \0 N N ■4 c x> N <* n n ru "< P4 N on 0) H I O +3 o •H ft XI — N «* o - IT - z u •* « w H J J n «■* o (/5 Id (\j P* J B ■4 V) — *J < ID U. ■ J O * Z Z UJ M • 3 K a -J a < < a > > u < > > at -» m o z u < IX u. u o z « c H Z a o u u U, z UJ (/) X < M * z z o u — « -J a a ID (/) ID -J OJ < OJ < H- u < to u. a • o z a ID Z U •* UJ -J 3 a o ID < a z w 3 ID J u. ID a < • a o < z > o z 'J 'J u. \r\ z u u t/) u —> in < ID U. O z < •H 57 APPENDIX 2 CONVERSION OF INTEGER LINEAR PROGRAMMING PROBLEMS INTO ZERO- ONE LINEAR PROGRAMMING PROBLEMS Note only zero-one linear programming problems, but also other problems can be solved by ILLIP-2. For example, other problems like integer linear programming problems with bounded integer variables, and zero-one programming problems with a polynomial objective function or with polynomial constraints can all be converted into zero-one linear programming problems. So these problems can also be solved by this program. 1. Conversion Of Integer Linear Programming Problems With Bounded Integer Variables Into Zero-one Linear Programming Problems. Let us introduce two methods for doing this. In the following two methods, we assume < x. < u for each integer variable x., where u may vary J J depending on j. (Otherwise shift the range of x. by subtracting a constant.) J (1) Replace each integer variable x. by y., + y. p + ... + y. in the problem, where y. k > k = l,2,...,u, are zero-one integer variables. Then a zero-one linear programming problem has been obtained. (2) Replace each integer variable x. in the problem by J 2 v-1 y._+2.y. + 2» y. _+...+ 2 y. , where v is the smallest integer jl J2 °j3 J jv' such that 2 > u, and y , k = l,2,...,v are zero-one variables. Then a zero-one linear programming problem has been obtained. 2. Conversion Of A Polynomial Constraint (Or Objective Function) Of Zero-one Variables Into A Linear Constraint (Or Objective Function) Of Zero-one Variables, [ik] For each non- linear term x. .x. ... x. of the polynomial, J l J 2 J h introduce a new zero-on variable x^, where H - { j , j pC . . , j,} . Form inequalities Z x - x < h - 1 (a) jeH J rt 58 "3-i'H (B) < x R < 1 (C) ■where h is the number of subscripts in H. Then x^ is forced to be 1 by constaints (a), (c) when x. = 1 for all j € H and is forced to be by constraints (B), (C) when x. = for some j e H. Thus we see that J x = x. • x. ... x. under constraints (A), (b), (C). By replacing each °1 J 2 °h non-linear term x. . x. ... x. in the polynomial by x„ and adding the J l 3 2 J h H linear constraints (a), (B), (c) which are formed based on each non-linear term x. . x. ... x. to the constraints, the polynomial constraints of J l J 2 a h zero-one variables can be converted into linear constraints of zero-one variables and the objective j function of zero-one variables can be converted into a linear objective function of zero-one variables. 59 APPENDIX 3 PROGRAM LISTING AND FLOW CHARTS We first expalin variable and subroutine names used in the program. 1. Variable names. AVAIL : The first available position in SLCF for storing another best feasible solution. AVAIL! Number of best feasible solutions found so far. CLCF CLLT CLPT CLSP CLVT All non-zero coefficients of the coefficient matrix are stored in the array. First, the non-zero coefficients of column zero are stored in their ascending row number order, and then the non-zero coefficients of column one and column two, etc. CLLT(j) is the total number of non-zero coefficients in column J-l. CLPT(j) is the position in CLCF of the first non-zero coefficient column J-l. If CLSP(l) = 0, then no information can be obtained from row I. Therefore, we will skip checking row I. If CLSP(l) = 1, row I has to be checked. (Used in PL/l version only. ) If the absolute values of all non-zero coefficients in row I are one, then CLVT(l) = 0. If RWCF(K) is the only non-zero coefficient row I whose absolute value is greater than one, then CLVT (I ) = K. If there is more than one non-zero coefficient in row I whose absolute value is greater than one, then CLVT(l) = -1000. 60 COEFLG : Parameter which specifies the field length of each input coefficient. COL : COL(K) is the column number of the coefficient in RWCF(K), where RWCF(K) is the k-th entry of the array RWCF. DVSN : An acceptable deviation from an objective function value. ITER : A parameter which specifies a limit for the number of iterations. ITER times 50 is the number it specifies. JAD : When a free variable is assigned to the column number of the free variable. JX : JX indicates the postitions in X and XS where the next fixed variable is going to be put. For example, if x is assigned to one and underlined, then X(JX) = 5 and XS(JX) = -5. JTS : A parameter which gives output subroutine, PINOUT, information of whether a partial solution has to be punched and whether the problem is finished. If the problem is finished, then JTS = 0. If the iteration limit is exceeded, then JTS = 1. If the partial solution is to be printed, then JTS = -1. KS : A parameter which gives information to subroutine, CGPSNS. Whenever a free variable is assigned to one or zero, KS will be assigned to a proper value. If the free variable is assigned to one, then KS = 1. If the free variable is assigned to zero, then KS = -1. 61 LTS : If there are some feasible solutions after the last pseudo- underlined variable, then LTS = 1. Thus the pseudo-underlined variables are treated as non-underlined variables in the subroutine UNDLX. If no feasible solution has been found after the last pseudo-underlined variable , then LTS = 0. Thus the pseudo-under- lined variables are treated as underlined variables in the subroutine IMDLX. If no feasible solution has been found after the last pseudo-underlined variable, then LTS = 0. Thus the pseudo-underlined variables are treated as underlined variables in the subroutine UNDLX. M : The total number of inequalities (including two inequalities generated by the program. ) MAXNO : Parameter which specifies the maximal number of feasuble solutions desired. N : The total number of variables. NCX : NCX is the value of the objective function corresponding to the current partial solution. NCT2 : NCT2 = ITER. NCT3 : NCT3 indicates whether a feasible solution is found or not. If a feasible solution is found, then NCT3 = 1. Otherwise NCT3 = 0. NCT^- : Number of iterations. NCT5 : The number of iterations when the best feasible solution was found . 62 NCT6 : Number of backtracks. NCT7 : A parameter which specifies the augmenting scheme to be used. NGETYS : A parameter which specifies how often a partial solution be punched. NNEWX : A parameter which specifies how often a partial solution be printed. NOVAR : NOVAR = COEFLG. NPNCH NPNCH = NGETYS. NPRNT NPRNT = NNEWX. NS : Minimum sum 1. NS(l) is the minimum sum of row I. NUNDEX : Number of underlined variables added. OF The oefficient of the j-th variable x. in the objective function which is stored in OF(j). P4 A parameter to specify that some of feasible solutions found be printed. P5 P6 P7 The ordinal number of the first feasible solution to be printed, The ordinal number of the last feasible solution to be printed. A parameter which specifies whether the underlining and pseudo- underlining conditions be checked or not. PS Maximum sum u. PS(l) is the maximum sum of row I. 63 RLK ROW RLK(l) shows the next inequality to be checked. after inequality I has been checked. In particular, RLK(l) = I shows that the inequality checking procedure has been executed. ROW(K) is the row number of the coefficient in CLCF(K), where CLCF(K) is the K-th entry of CLCF. RWCF RWLT RWPT SCHEME All non-zero coefficients of the coefficient matrix are stored in this array. First, the non-zero coefficients of the first row are stored according to their ascending column number order, and then the xon-zero coefficients of the second row and third row, etc. RWLT(l) is the total number of non-zero coefficients in row I (including column 0). NWPT(l) is the position in RWCF of the first non-zero coefficient of row I. For example, if K = RWPT(l), then the first non-zero coefficient of row I is RWCF(K) and all non-zero coefficients of row I are stored in RWCF(K), RWCF(K+l), . . . ,RWCF(K+RWLT(l) - l). If RWLT (I) equals zero, then RWPT(l+l) = RWPT(l) and RWCF (RWPT (i+l)) will be the first non-zero coefficient of row 1+1. S indicates whether a variable is fixed or not. If x is a free variable, then S(j) = 0. If x has been assigned to one, then S(j) = 1. J If x has been assigned to zero, then S(j) = -1. SCHEME = NFLXJ. 64 SLCF SLPT All subscripts of non-zero variables of all best feasible solutions found are stored in this array. SLPT ( I) is the beginning position in SLCF of the I-th best feasible solution. TYPE X, xs XHAT XZST YS ZBAE Parameter which specifies whether the constraints are read row by row or column by column. X and XS are the two arrays used to represent the current partial solution; XS indicates whether the variables are under- lined or not; X indicates whether the variables are assigned to one or zero. XHAT(j) is the value of x in the best feasible solution found J so far. If no feasible solution has been found, XHAT(J) = for J = 1,...,N. Parameter which specifies whether more than one feasible solution is wanted. The partial sum y. YS(l) is the partial sum of row I. The update value of ZMAX. ZMIN : Minimal objective function specified by the user. TIME1, TLME2, TLME3 : Variables used to calculate the time spent for solving the problem. 65 2. Subroutine names. CGPSNS : Changes PS and NS when a variable is fixed for some value. COLRED : Reads constraints column by column. CLTORW : Store constraints in row order. EXTDX : Checks inequalities when only single optimal solution is needed and P7 f 1. EXTDX1 : Checks inequalities when more than one optimal solution is needed and P7 f 1. EXTOXS : Checks inequalities when only single optimal solution is needed and Ff f= 1. EXTDXD : Checks inequalities when more than one optimal solution is needed and Ff = 1. FIX J : Augments a variable by using augmenting scheme 1. FIXJB : Augments a variable by using augmenting scheme 3» FIXJZ : Augments a variable by using augmenting scheme 2. GEOF : Checks inequalities to see if the current partial solution is infeasible or some free variables have to be fixed to some values. If the current partial solution is infeasible, then the program backtracks. If some variables have to be fixed to some values then fix them. If no information can be obtained, then augment a free variable to the partial solution. Repeat the above procedure a number of times specified by ITER. (When P7 ^ 1 and XZST f 1. ) 66 GEOGl : Same as GEOF for the case when Pf p 1 and XZS.T = 1 . GETYS : Update YS when a free variable is fixed or a fixed variable is set free. GETFSNS : Calculate PS and NS and initialize RLK (or CLSP). NEWSOL : Erase all solutions stored in SLCF and store a new feasible solution just fuound in SLCF. — ■ -* *-* NEWX : Update ZMAX, in -ZMAX < -c • x - 1 - DVSN , when a better feasible solution is found. PFSL : Print out a feasible solution just found. PINOUT : Print out computational result. POSOL : Print out other optimal solutions when more than one optimal solution is wanted and ore than one optimal solution exists. PRESET : Sent an initial value for each parameter. ROWFT Print out inequalities. RVPSNS : Changes PS and NS when a fixed variable is free. SINTL : Set up an initial partial solution. SOLNH : Punch out a partial solution and its related information. SPRN : Same as GEOP when Ff = 1 and XZST j= 1. #-* See Chapter kA, Input. XZST / 1 is assumed. When XZST = 1, -ZMAX < -c • x is updated. 67 SPRN1 Same as GEOF when P7 = 1 and XZST = 1. STRSOL : Store a new feasible solution just found in SLCF. TIMEZ : A system routine to fetch computer current clock time. When the ILLIP-2 program is to be run at other computer center than University of Illinois, TIMEZ must be replaced by a suitable routine or deleted from the program with its related variables TIME1, TIME2, TIME3 and its related statements. UNDFXJ : Check underlining condition for all free variables and pseudo- underlining condition for the variable to be fixed. undlx The backtrack routine as described in Chapter 2A. Following is the program listing of ILLIP-2 both in FORTRAN and Pi/ 1. 68 FORTRAN IV G LEVEL MAIN l)ATl£ - 7607? 16/ l4/'i 1 ILL IF-? PMDC^AM A PROGRAM 1'ACK.AGfc TO SOI VL ZEMj-UNt LINEAR It' pROOLt MS 0001 0002 000 3 0C04 0005 0C06 000 7 0008 0009 00 10 00 1 1 00 1 2 001 1 C014 eoi 5 001 6 001 7 ooia 0C19 0C20 0021 0022 00.? 3 CC24 0C25 0026 0027 0028 0029 0030 0031 0032 0033 0034 0035 0036 0037 0038 0039 0040 004 1 0042 0043 0044 0045 0046 0047 IMPLICIT INTEGER*?! A-T, V-Z 1 • F'ALIU) INTEGE'«4 NCT3 ,NC T4 . NC T5 . NC To . NFRNT . NPNCM . .4UNOL X . SCHT M' 1 . , 7'JArv lNTt"GE^*4 NCX.NCX1.VS.NS.PS INTFCER*« r|MFl,TlME2 RF Al *4 T 1 v)P3 CATA eJ.SS. UENP /'L'. 'S'i'LND • / CCMMHN COL! 1 3C00) .HWCF! IPOOCI .l«OW 1 1 TOOC ) ,CLCF I IOC 00 » i * i)WPT( 10 00 ) ,R«/L 1(1000), PS(IOCC) ,Nb( t 01'M . YS( 10" M i * CLPT(4 30| . CLLTI4 0C It X <»0C I .S( 4 00 t tXH»TI 4C0 I a » OF I *0C ) .CLVTI I CCO J . XS( 4C0 ) CCMMCN /TAW. M.N. UtiH. KS, JM)< J> .NCX>LISi JTSi * NCTl.NCT4,NCTS,NCT6,SCHfcf/fc ,NPNC" • NPKNT . NUNCL X COMMON SI. Cf (1C0CC),SLPT( 10001 tAVAILl . AVAIL. rfAXNC COMMON DV3N.NCT7 ,P4 ,P5. XZST CCMMON FLK( 1 ICO) .HP.FP.Ff> ,SPCL COMMON TIME2 UIMFNSIUN UA IF (OVSN .GE. 0) GO TC 4025 PRINT 4C?0.DVSN 4020 FORMAT! IX, • WRCNG VALUE OF DVSN'. 14.'. IS ASSUMED.') DVSN=0 4025 IF 1DVSN .GE. 1) PH1M 4030. DVSN 4030 FORMAT! IX ,' AN ACCEPTABLE DEVIATION ',14, * • FROM THE OPTICAL VALUE IS SPECIFIED') IF (COEFLG .FQ. 4 .OR. COEFLG .EQ. 81 GQ TO 4C32 PRINT 4031 . COEFLG 4031 FORMAT! IX,' WRONG VALUE CF COEFLG'. 15. • 4 IS ASSUMED' I COEFLG=4 4032 CONTINUE OVSN=DVSNt-l IL II. II. IL IL IL IL IL IL IL !L IL IL IL IL IL IL IL IL IL IL IL IL IL IL IL [L IL IL IL IL IL IL IL IL IL IL (L = , 15. IL IL JL IL IL IL EN SPIL IL IL IL IL IL IL IL IL IL IL IL IL IL IL I t-0 ' I ii'-r ) j I>» C 4 ii'ir O'j ip J' i" IP)C 17 I PK *■* it»:c:o I h> .1 I « I ">3C1 1 ! *» J I ? U'001 < i ■• t: i -. IP1 ~ i- ? -. IPOC '1 I PIC ^2 ipor ?j IF' Of ^4 I -> 5 > o I PIC th IPOC »7 I ■-> 1 C ?. =t I fO 29 IPOC JO 1^)0 II IPOC 12 IPOC 13 IPOO 14 IPOC 3!» IPOC 16 IPOC 37 IPOC 18 IP0C39 IP0C40 IP0C41 IP0042 IP0C43 IP0044 IP0045 IP0C46 IP0047 IP0048 IP0C49 IPOCSO IP0051 IP0052 IPO0S3 IP0054 IP0055 IP0056 IP00S7 IP0058 IP0C59 69 FORTRAN IV G LEVEL 0048 0C49 0050 0051 35 0'j2 0053 C054 0055 0056 5C C 0057 71 0C58 0C59 70 OC60 CC61 1 71 0062 1 70 0063 217 0064 0065 0C66 72 0067 0066 721 0069 0070 0C7I 0072 730 0073 0074 720 0075 0076 723 0077 722 0078 73 0079 C 0080 80 0081 0082 0083 0084 0085 95 0086 0087 1000 0088 0C89 195 0090 1 100 0091 199 0092 0093 0094 0095 0096 0097 0098 0099 2040 0100 0101 2045 0102 0103 2000 ?1 MAIN KATE = 76C72 14. 14, If- (TVI»E .LE. 0) GO TC 35 CALL COLREDIZMIN.COEFLG.SOL ) GU TO 600 CONTINUE NDIG=72/(CnEFLG*4 ) NCDNT=0 Otl 5C 1 = 1 t N rp « i )=e CONTINUE RFAO OBJECTIVE FUNCTICN IF ICCEFLG .EJ. 8) GO TO 171 wtAD 7?. (18(11. IC(I). 1=1.9) M)PMAT( 1H 14 I GL) TO 217 READ 170. (IBM). IC(II. 1 = 1.6) FORMAT (61 18.14)) CONTINUE DQ 7 3 I =1 ,NDI G IF( IC( I ) I HC. 72,72 IF (IC(I) .LE. N) GO TO 720 PRINT 72 1 . N, IC( I ) FORMAT! • NO. OF VAR IS GRFATER THAN NN=N* I NL=IC( I ) 00 730 L=NN,NL CF!L)=3 N= IC( I ) IF (CF( IC( I ) ) .Ed. *RITE(6.723) IC(I) FOHMAT( IX . • **4WARN * ION HAVE THE SAME OF( IC( 1 ) ) =IE( II CONTINUE GO TO 71 REAO MATRIX AND J =1 RWLTI 1 1=0 IE=-1 P«PT(l )=l K s 1 IF (CQEFLG ,EQ. 8) GO TO 195 READ 10 0C .( IB (I ) . IC( I ). 1 = 1,9) .SOL FORMAT! 1814. All GO TO 199 REAO 1100. ( 131 I ). IC( I) . 1 = 1 ,6) .SOL FORMAT (6( te. 14) .At ) 00 2000 (=1 iNDIG IF (1C(I) .LT.OI GO TO 2010 R*CF"64 IL IP3C6S lLIP30r,f> I L I P 1 C 1 1 7 ILIPOOtB ILIP300C14 ILIPO: 15 ILIP3CH6 ILIP0C47 ILIPOOSd OBJECTIVE FUNCT ILIP3089 IGNOPLO*) ILIP00-10 ILIP0091 ILIP3392 IL IP0093 IL IP0034 ILIP0095 ILIP0C96 ILIP0097 ILI P0098 ILIP0099 ILIP0100 ILIP0101 ILIP0132 ILIP01 33 ILIPO I 34 ILIP0105 ILIP0106 ILIP01O7 ILIPO I 38 ILIP0109 IL IPO 1 10 ILIPO! 11 ILIP01 12 ILIPO! 13 ILIP01 14 ILIP01 15 IL IPO 1 16 ILIP01 17 IL IPO 1 18 70 FORTRAN IV G LtVCl 21 MAIN 0104 GO TO ib 01C5 201O IF (IE .f.T. NCLNT) NCCNT = IF. 0106 J = J* 1 31C7 BWLT ( J) =0 oirti PWPT ( J) =K 01 09 IF =-1 0110 IF (SOL ,EQ. F .OH. SOL .EG. SS) OC) 0111 GU TO 95 0112 400 IF (N .NE. KCCNTI PRINT CibO . NCONT 01 1 J 560 FORMAT (/• CHECK NO. OF VAKIAeLCi. TMH 0114 II- (N .Ot . NCCNT » GO TO 570 01 1 5 NN-N* 1 01 lb DO 565 I=NN, NCCNT 0117 56b CF ( I 1=0 01 18 57C CUNTINUE C SET UP THt£ INEQUALITY FCR MINIMUN O.F 01 19 RWCF(K > --ZM IN 0120 COL(K)=« 0121 RWLT (JIM 0122 K=K*1 0123 00 44C 1=1 .NCONT 0124 IF (OF(l) .EQ. 0) GO TO 440 0125 R»CF (K) =OF( I ) 0126 COL(K>=I 0127 nmi t ( j) =r*lt( j)+ l 0128 K=K+ 1 0129 4«C CONTINUE 0130 J=J«-1 0131 f»PT( J| =K C SET UP THE INEQUALITY FOR MAXIMUM 0132 H*CF 1 0143 450 CONTINUE 0144 MCCNT*J 014S IF (M .NF. MCONT) PRINT 561, MCCNT 0146 561 ; FORMAT (/• CHECK NO. OF INEQUALITIES IIS) 0147 M=MCONT 0148 N=NCONT 0149 CALL R*TOCL 0150 600 CONTINUE 0151 OO 540 J *\ .M 01S2 IBEG =fl«PTIj] 0153 IENO ■ IBEG ♦ RWLT(J) -1 0154 IF ( IBEG .GT. IENO ) GO TO 4 80 0155 OO 470 I=IBEG.IEND 0156 IF (COL(I) .EQ. 0) GO TO 470 0157 IF ( RWCF(I) .GT. 1) GO TO 490 0158 IF (RWCF(I) ,LT. -11 GO TO 49C 0159 470 CONTINUE DATE = 76072 l*/1*/SI I L 1 >> 3 I 1 i ILIP31 *1 ILIP0122 IL I <-•'> 1 ? * II. IrOl '« TO 400 ILI^ll *5 ILIP312* I L 1 P 3 1 2 1 PHtJGRAM ASSUMf. IT IS • . I 5 / ) ILIP3 12B ILI^ )1 /^ IL I ■>! I 1" n i -» : 1 11 I L IPTl.t^ ILIPOI U II. 1^31 <4 ILIPOI l 0160 460 CLVT(J)=0 t L l J 3 1 7* 0161 GOTO 5*0 ILI'J3'17^J 0162 *90 CLVTCJI = I 1 1_ I »» J I ^ 3 0163 510 IF( I.CF.IFNDI GOTO b«3 1LIP1HI 016* IZZ =!♦! ICIP1H2 0165 00 520 M = IZZ,ItKD ILIPM3J 0166 IF 1 (HKCFUII .GT. 1) GO TO 530 ILIPJlri* 0167 IF (RMCF(II) .LT. -1) GG TO 530 ILIPJM5 0168 520 CONTINUE ILIP31-J6 0169 GOTO 5*C ILIP31H7 C170 530 CUVT< J)=-1000 iLJ°5HH 0171 5*0 CGKTINUr ILIPJld'' 0172 CALL HOWPT ' ILIPH >0 0173 CALL PRESET ILPIDI 017* IF (SOL .EQ.SS) CALL S1NTL I L I ^ ) 1 >2 0175 CALL GTPSNS ILIP01M 0176 CALL STFPZ(TIME2) ILIPOl'J* 0177 CALL GEOF ILIP)1?S 0178 GO TO 1 IL IPO 1*6 0179 fcND ILIP0 1 17 72 FORTRAN IV LEVEL 21 CGPSNS DATE = 76072 U./J4/51 rCOl SUH-JCIUT INE CGPSNS< *••) ILIPul'JM C ILIP>1*'« C CHANGE PS AND NS WHEN A VARIABLE IS FIXED TO SOME VALUE ILIP")200 C ILIP12")! 0002 IMPLICIT |NTEGEP*2( A-T.V-Z) . FCAL(U) ILIPJ20? 0C03 INTEGER*"* NCT 3 ,NCT4 • NCTS . NCT6 .NGE TYS iNNEkX ■ NUNDLX ,NF t X J . ZHAH ILIP , 2'>? 0004 INTEGER*4 NCX.NCX1.YS.NS.PS ILIP0204 0C05 COMMON CDL( 1000C » .RwCFM 00001 ,WO*( ICOOO) ,CLCF(1 0C00» ." ILIP? ,RWLT( 10PCI .PS( 100C) .NSC 10001 ,YS( 100 5) . ILIP)23o ♦ CLPT(40?» .CLLT<4C0» .X(«00 I ,S(400> .XHATI 4C9) . lLl»Otf37 ♦ OF( 4001 ,CL VT( 1000) ,XS(4C0) ILIP023H 0006 COMMON 7BAR ,M,N,KCT2.KS. JAO. JX.NCX.LTS. JTS. ILIP025V ♦ NCT 1,NCT4.KCT5.NCT6,NFI XJ.NGETYS.NNEWX .NUNDLX ILIP021C 0007 CONMCN SLCF(ICCOO) .SLPTC 100C » .AVAIL1 . AVAIL. MAXNC ILIP121I 000ft COMMON DVSN.NCT7 .P4 .P5.XZST ILIP521.J 0009 COMMON RLK< 10C0) .HP.FP.P6. ILIPJ2M C 1LIP02I4 0010 QEG * CLPT (JAO *1) ILIP0215 0011 END = CLLT (JAD ♦ t ) -l*a£G ILIP0216 0012 IF( KS .LT. ) GiJTO 20C ILIPT217 C ILIP0219 C X(L>=1 CHANGE POS SUM (PS) AND NE G SUM (NS1 ILIP0219 C ILIPO?:!} 0013 CALL GETYS !LIP02>1 0CI4 NCX=NCX*OF< JAD) ILI»T2>2 0015 X(JX) * JAD IL1P32.M 0016 S(JA01 = 1 ILIP0214 0017 JX = JX*1 ILIP022b 0C18 DO 100 l=BEG,END ILIP0226 0019 SUB*ROW(I> ILIP0227 0020 IF (CLCF(I)) 40.100,60 ILIP)2? 90,91,91 ILIP0210 0023 91 IF (NS(SUt3>) 190.100.100 ILIP0231 0024 190 IF (RLKlSUfll .NL. 0) GC TO 100 1LIP3232 C025 RLMEPMSU8 ILIP3233 0026 EP=SUB ILIPJ2J4 0027 RLK(SUB)=SUB ILIP0235 0028 GO TO 100 ILIP0236 C ILIP12J7 0029 60 NS< SUB)=NS( SUB)+CLCF( I ) ILIP0238 0030 100 CONTINUE ILIP02I9 0031 83 CONTINUE ILIP024C 0032 IF (JX .GT. Nl GO TO 40C ILIP0241 0033 RETURN ILIP0242 0034 90 IF (I .EO. END) GU TO 99 ILIP0243 0035 11=1+1 ILIP0244 0036 DO 98 K«II.END ILIP0245 0037 SUB ■ ROW(K) ILIP0246 0038 IF (CLCF(KI) 92.96.96 1LIP0247 0039 92 PSI SUB)=PS( SUttl +CLCF(tc ) ILIP0248 0040 GO TO 9B ILIP0249 0041 95 NS(SUB)sNS(SUe)+CLCF(K) ILIP0250 0042 98 CONTINUE ILIP0251 0043 99 RETURN 1 ILIP02S2 C ILIP02S3 C X(L)*0 CHANGE POS SUM (PS) ANO NEG SUM (NS) ILIP02S4 C ILIP0255 0044 200 X(JX) =-JAO ILIP0256 73 FORTRAN IV G LEVEL 21 CGPSNS DATE = 76072 lo/l*/51 00*5 S(JAO) * -1 ILIP02'j7 00*6 JX * jx + 1 ILIP3?*sa 00*7 CO 100 l*dEG.ENO ILIP"»?>J9 004H SUQ-*OW26? 0051 GU TO 300 ILIP02^1 C ILI»0?ii» 0052 260 PS5 0053 IF (PS(SUal) JIO.290,290 ILIPD?S6 005* 290 IF (NS(SUH)) 291,300.300 ILIP*J267 0055 291 IF (RLMSUB) ,NE . 01 GOTO 300 ILIP02-3H 0056 fcLK(EP)=SUB ILI ")2bJ 0057 FP=SUB ILIP3271 0058 WLMSUB)=SUa ILI=»1271 0C59 30C CONTINUE ILI°0?72 0060 IF (JX ,GT. N) GC TO *C0 II.IP02 7* 0C61 RETURN ILI027* 0062 310 IF (I ,E0. ENOI GO TO 320 IL|P027"> 0063 11=1*1 ILIPT276 C06* 00 318 K=II.ENO ILIP3P77 0065 SUd = ROtf(K) ILIP.-2/b 0C66 IF (CLCF(K») 312, 318.315 ILIPC2/9 0067 312 NSISUBI =NS < SUB J -CLCF < K | ILIPD2iC 0068 GU TO 118 II.IPC2H1 0069 315 PSI SUB»=PS< SU8)-CLCF«K> ILIP"^-^ 0070 318 CONTINUE ILIPC283 0071 320 RETURN I ILIPOPd* 0072 *00 RETURN 2 ILIPC21S 0073 END ILIPOP-Jb Ik FORTRAN IV G LEVEL 21 CCLPED DATE = 76072 lf>/1*/.il OOOt SUBROUTINE COLREC '> C ILIP'J?'»0 0002 IMPLICIT INTEGER*2( A-T.V-Z) . RE AL ( U » ILI»'»?'»1 0001 INTEGER** NCT3,NCTA , NCTS .NCT6 ,NGfc T YS . NNE» X . NUNOLX.NF IXJ. ZAAP ILIP">2^? 0004 INTEGER** NCX.NCX1.VS.NS.PS tLlP0?'Ji 0005 CCMMON COL< 1000C I .RWCF( 10000) .HOW( 1C00C ).CLCF ( 10OO0J . 1LIP5294 * WMPT(l1CO),R»LT(1000l,PSUDOC),NS(10CO).YS(i:3'))i ILIPC»»S * CLPTI 400) .CLLT( 400) .X( 40C) .S(4C3) .XHATI 4CC) . I L I >-• ? ? >6 * OFI4C0) .CLVTI 10C0) .XSI400 ) ILIP3217 0006 COMMON /BAR .M.N.NCT2. KS. JAO. JX.NCX.L TS. JTS, IL|P~"«ti * NCT 3.NCT4.NCT5. NCT6.NF I XJ ,NGF T VS , NNF « X , NUNDL X II. IP 5299 C007 COMMON SLCF ( 1C00C ) tSLPT( 1000 )• AVAIL 1 ,AV A IL .MAXNO lL! n )399 0008 COMMON DVSN.NCT 7 ,P4 .P5.XZST ILIP)T)1 0009 DIMENSION U A { 21 ) . I b) ( I 2 ) . IC < 1 2 ) ILIP0312 0010 DATA F,SS /•£».•=•/ ILIPOJO^ C INITIAL SET ILIP3304 0011 NCCNT=0 ILIP330& 0C12 MCONT=C ILIP3 306 0013 NDIG=72/(NOVAR+4 > I L I P V30 7 0C14 OU 50 1 = 1 .N lLlP">33d 0015 50 CF 80. 72. 72 ILIP03I9 0025 72 IF (ICII) .LE. K) GO TO 720 ILIP0320 0026 PRINT 721. N.IC(I) ILIP0321 0027 721 FORMAT!' NO. OF VAR IS GREATER THAN •. 14. •.«.I4.» IS ASSUMED 1 ) ILIP0322 0028 NN=N»l ILIP0323 0029 KL=IC(I) ILIP0324 0030 DO 730 L=NN.NL ILIP0325 0031 730 GF(L)=0 ILIP0326 0032 N=IC(I) ILIP0327 0033 720 IF (OF(ICII)I .EO. ) GO TO 722 ILIPO320 0034 WRITEI6.723) ICII) ILIP0329 0035 723 FORMATdX,' **«WARNI NG*** TWC COEFFICIENTS OF THE OUJECTIVE FUNCT IL I P0330 •ION HAVE THE SAME SUBSCRIPT '.14. 'THE FIRST ONE IS IGNORED') ILIP0331 0036 722 OF ( IC( I ) ) = IBl I ) ILIP0332 0037 73 CONTINUE ILIP0333 0038 GO TO 71 ILIP0314 0039 80 J=l ILIP033S 0040 CLLT(i)=0 ILIP033* 0041 CLPT(1)=1 ILIP0337 0042 IE=-1 ILIP0338 0043 K = l ILIP0339 C READ CONSTRAINTS ILIP1340 0044 95 IF (NOVAR .EQ. 8) GO TO 195 ILIP0341 0045 READ 1000.1 IB( I) . IC( I 1.1=1 ,9) .SOL ILIP3342 0046 1000 FORMATI 1814. AI) ILIP0343 0047 1100 FORMAT ( 6 ( 1 8 . 14 ) . A 1 ) ILIP0344 0040 GO TO 199 IL IPO 343 75 FORTHAN IV G LEVFL 21 CCLHEO DATE = 76C72 lr>/34/ SI C049 005C 0051 0052 0053 0054 0055 0C56 0057 0058 0059 0C60 0061 0062 0063 0064 0065 0066 0067 0C66 0069 0070 0071 0072 0073 0074 0075 0076 0077 0078 0079 0080 0081 0082 0083 0084 008S 0086 0087 0088 0084 0090 0091 0092 0093 0094 0098 0096 0097 0098 0099 0100 0101 0102 0103 0104 010S 195 READ 1100. < IB( I ). ICC I) .1=1 .6 ).SOL 199 00 2000 1 = 1 .NDIG IF (IC(I> .LT.O) GO TO 2010 CLCFCK)=1B( 1 I RQW(K)=IC( I I CLLT( J)=CLLTIJ)*1 K = K4- 1 IF (IE .LT. CCIIII GO TO 2C00 PRINT ?0«0 ?040 FORMAT!' 4**INPUT ERROR CHECK PtlH SEOUENCC ) 2045 FORMAT( IX. •***». 18 (16. IX)) PRINT 2045. ( I8( II ) . IC( I 1 ). I 1 = 1 .NDIG) STOP 2000 IE=IC(I) GO TO 95 2013 IF (IE .GT. MCONT) MCCNT=IE IF (J .GT. II GO TO 2C2C CLCF(K)=-ZMIN K = K* 1 CLCF(K)=ZBAR-1 IF CXZST .EQ. I) CLCF(K)=ZI?Atf K = K+1 CLLT( J)=CLLT( J)*2 GO TO 2030 2020 IF (J-l .GT. Nl GO TO 2C30 CLCF(K)=OF( J-l ) K = K»1 CLCF(K)=-OF( J-l I K = K+I CULT! JI=CLLT( J)*2 2030 J = J*1 CLLTI J)=0 CLPT(Jl=K IE=-1 IF (SOL .EQ. E) GO TO 400 IF (SOL .EQ. SSI GO TO 400 GO TO 95 400 NCQNT*J-2 SET UP INEQUALITIES FOR MINZ AND MAXZ ENO=J-l DO 600 1=1, END KK*CLPTC I )*CLLT( I 1-2 ROM(KK|zMCO*T+l RO«(KK*l ) »MCONT+2 600 CONTINUE MC0NT*MCONT*2 IF (M .NE. MCONT) PRINT 561 FORMAT (/• CHECK NO. OF 115) IF (N .NE. NCONTI PRINT 560 FORMAT (•• CHECK NO. OF IF (N .GE. NCONTI GO TO NN*N*1 DO 565 I«NN.NC0NT S6S OF(I)*0 570 MsMCONT N=NCONT CALL CLTORW RETURN 561. MCONT INEQUALITIES THE PROGRAM ASSUME IT IS • 560. KCONT VARIABLES THE PROGRAM ASSUME 570 IT IS '.IS/i ILIP0T46 ILIP3347 ILI »J034rt ILIP 3 i51SC ILIP JJjI ILIP3 35? ILIP) 1i3 ILIP3334 ILIP) 3 )3 ILIP3 356 ILIP 33-57 IL 1*035* ILI P3359 ILIP33j3 ILIP0J61 ILIP3362 ILIP0 363 ILIP3364 I LI P3 365 ILIPO 366 ILIPO 167 ILK'0363 IL IP03f>9 ILIP037D ILIP0371 ILIP3372 ILIP3373 ILIP3374 ILIP0375 ILIP3376 ILIP0377 ILIP0378 ILIP0379 ILIP0380 ILIP0381 ILIP9342 ILIP0383 ILIP0384 ILIP038S ILIP0386 ILIP0387 ILIP038S ILIP0389 ILIP0390 ILIP0391 ILIP0392 ILIP0393 ILIP0394 ILIP939S ILIP0396 ILIP0397 ILIP0398 ILIP0399 ILIP0400 ILIP0401 ILIP0402 ILIP0403 ILIP0404 76 FORTRAN IV G LEVEL ?l 0106 END CCLREO DATE = 76072 l«./3A/bl 1LIPJ* >5 77 FORTRAN IV G LEVEL 21 CLTORW DATE * 7607? \t /■<■ 4/ 5 1 OCOI 0C02 0003 0004 0C05 0006 0CC7 0008 0009 0010 0011 0012 0013 0014 0015 0016 0017 ooia 0019 0020 0021 0022 0023 0024 0025 0026 0027 0028 SUBROUTINE CLTORW STORE CONSTRAINTS IN RCM OROEfi IMPLICIT INTEGER*2C A-T.V-*) , KEAL(U) INTEGFK*4 NCT3.NCT4,NCT5tNCT6 ,NGE TYS . NNE WX .NUNDLX.NF IXJ.ZBAP INTEGER*4 NC X .NC * 1 • V S .NS tPS CCMMCN COL( lOCOOJ.RWCFUOOOO) .ROW < I TOC ) • CLCF { 1 CC 00 I . * RWPTI IDf 0) .RWLT(IOOO) .PS(IOCC).NS<10CO> ,YS< 1000) . * CLPTI40 0) . CLLT(40 0).X(4CG I.S(4 00).XHAT(4CC>. * OF(400) ,CLVT( 1000 ) ,XS<400) COMMON ZBAR .*.N.NCT2.KS,JAD,JX,NCX.LTS.JTS. * NCT3.NCT4.NCT5.NCT6.NFI X J .NGETYS. NNEWX . NUNDLX SUB*1 NN=N+1 00 100 L*l id RWPT(L)=SUB 1=0 LNTH*0 00 60 K=l iNK IF (CLLT(K) .60. 0) GO TO 60 HN'(«| I=I*CLLT .GT.R) CO TO 280 IF(-RMCF(KI .LE.RI GOTC 10 XS( JX)=-SUB JAD=SUB KS = - 1 NUKOLX=NUNOLX*l CALL CGPSNS ( G30.C4C3) GO TO 10 280 MCXl =NCX*OF(SUBj IF (NCXl .GE. ZBAR) GO TO 30 JAD=SU8 XS( JX) = -SUB KS = l NUNDLX=NUNDLX*1 CALL CGPSNS ( &30.C4CC) GO TO 10 1 35 NBtO=B«PT( I ) NEND=NBEG»R«LT« I 1-1 IF (COLINBEGI .NE. 0) GQ TO 136 NOfcG*NBEG*l 136 DO 140 K=NBEG.NEND SU3=C0L(K) IF (SISUBI .NE. C) GO TO I4C IF (RMCF(K) .ST. R) GC TO 180 IF ( -RWCF(K) ,LE. R » GO TO 140 XS( JX)=-SUB JAD=»SUB KS=-I NUNOLXiNUNOLX *1 CALL CGPSNS ( 630.G4C01 GO TO 140 180 NCXl =NCX+QF ( SUB) IF (NCX1 .GE. ZBAR) CC TO 30 JAO*SUB XSIJXM-SUB KS = 1 NUNOLX'NUNDLXH CALL CGPSNS ( G30.t*00» 140 CONTINUE GO TO 10 310 CONTINUE IF JRLK(l) RLKI I»*HP HP»I 320 RETURN 2 400 IF NE. C> RETURN 2 >NE. 0) RETURN 3 ILI^'553'; I L I P .7 5 "> I ILIP0502 ILIO050 ^ ILIP0574 IL IP0535 ILIP0556 ILIP0507 ILIPOSOb ILIP0S09 IL I^OSl ILI»051 I ILIPC512 ILIPISII ILIP051* ILIP0515 ILIP0516 ILIP05 1 7 ILIP05! 9 ILIP0519 ILIP0520 ILIP1521 ILIP0522 ILIP3523 ILIP0524 ILIP0525 ILIP0526 ILIP0527 ILIP0528 ILIP0529 ILIP0530 ILIP0531 ILIP0532 ILIP0533 ILIP3534 ILIP0535 ILIP0S36 ILIP0537 ILIP0538 ILIP0S39 ILIP0540 ILIP0S41 ILIP0S42 ILIP0543 ILIP0544 ILIP0545 IL IPO 54 6 ILIP0S47 ILIP0S4S IL1P0549 ILIPOSSO ILIP055I ILIP0SS2 80 FORTRAN IV C LEVEL 21 MAIN DATE " 76072 Ih/JA/51 0001 0002 0003 DC04 0005 0006 0007 0008 0C09 0010 00 1 I 0012 0013 00 1 A 0015 0016 00 17 0018 0019 0020 0021 0022 0023 0024 002S 0026 0027 0028 0029 0030 0031 0032 0033 0034 003S 0036 0037 0038 0039 0040 0041 0042 0043 0044 0048 0048 0047 0048 subroutine extoxi <♦,• ,»» check inequalities when more than one optimal solution is wanted implicit integer*2(a-t,v-z) . pealiu1 integer** nct3.nct4.nct5.nct6.ngftvs.nnewx.nunolx ,nf ix j.zhaw integer44 ncx.ncx1.ys.ns.ps common coli 13000 1 .rttcfi 1 30c0 1 .row* i c 000 > .clcf ( 1 00 00 i . • RkPTI 10 001 . RWLTI 1000) .PS( 10001 .NS( 10 )0I .rSl 10001 . • CLPTI 40 01 tCLLT(400)fX(400)tS(4C0) .XHATI 400 >. * OFt 4001 .CLVT( 10C0) .XSI4C0) COMMON ZfiA«.M.N.NCT2,KS.JAD,JX.NCX.LTS,JTS. * NCT3.NCT4.NCTS«NCT6.NF I X J . NGE T YS . NNEtfX . NUNCLX COMMON SLCF < 1 0000 ). SLPT< 1 000) .AVAIL 1 .AVAIL .MAXNC COMMON DVSN.NCT7 .P4.P5.X2ST COMMON RLKI 1000) .HP.EP.P6 IF (NCX-ZUAR) 3.16,30 16 OO 17 KIH ,N IF (OFIK1) .EQ. 0) GO TO 17 IF (SIM) .NE. 0) GO TO 17 XS< JX»«-K1 JAD-K1 KS=-1 CALL CGPSNSI&30. 6400) 17 CONTINUE 3 l=HP GO TO 4 10 IF (I .EQ. EP» GC TO 310 I*HP 4 HP*RLKI I I RLKI I 1=0 IF (NS( I > .GE. 0) GO TO 10 R=PS< t) !FNBEG.NENO SUB*CQL(K) IF(SISUB) .NE.O) GO TO 80 1FIR«CFIK)1 t|0. 80. 120 no xs ILIP35S7 ILI PT55rt IL l o 0f r j'J ILIPOb'O i l i p o r> > i ILIPCS6? ILIP J5»>3 ILIP0564 ILIPOSab lLIP0f-t,6 ILIP0567 ILI°0So8 ILIPOSb? ILIP0S70 ILIP0571 ILIP0572 ILIP0b73 ILIP0574 IHP0575 ILIP0576 ILIP0577 ILIP0578 ILIP0579 ILIPOSaO ILIP0581 ILIP3582 ILIP0543 ILIP0534 ILIP0S35 ILIP0S46 ILIP0587 ILIP0S88 ILIP0589 ILIP0590 1LIP059I ILIP0S92 ILIP0593 ILIP0594 1LIP0595 ILIP0S96 ILIP0597 ILIP0598 1LIP0S99 ILIP0600 ILIP0601 ILIP0602 ILIP0603 ILIP0604 ILIP0605 ILIP0606 ILIP0607 1LIP3608 IL1P0809 ILIP08I0 ILIP061 I 81 FORTRAN IV G LEVEL 2 1 EXTDX1 DATE 76072 16/34/51 0049 0050 0051 0052 0053 0054 0055 00S6 0057 0056 0C59 0060 0061 C062 0063 0064 0065 0066 0067 0068 0069 0070 0C7I 0072 0073 0074 0075 0076 0077 0078 0079 0080 0081 0082 0083 0084 0085 0086 0087 0088 0089 0090 0091 0092 0093 00*4 0098 0098 0097 0090 0099 0100 0101 010* • 103 0104 JAOxSUB NUNDLX*NUNOLX*l CALL CGPSNS ( 80 CONTINUE IF GO TO 30 130 IF ICLVTIl)) 135. 10. 200 200 K = CLVTIII sue = COL(K) IF(S(SUB» .NE.0> GO TO 10 IF(RMCF(K) .GT.RI GO TO 2S0 IF(-RMCFIK) .LE.R) GOTO 10 XSI JX) »-SUB JAD'SUB KS=-I NUNOL « = NUNDLX + 1 CALL CGPSNS ( C30.C4C0) GO TO 10 280 NCX1=NCX+0F|SUB) IF INCX1 .GT. ZBAHI IF (NCX1 .EO. ZBAR JAO-SUB XSIJXM-SUH KS=1 NUNOL X*NUNDLX+ 1 CALL CGPSNS ( GO TO 10 CO TO 30 ,AND. MAXNC &J0.6400) •LE. AVAILI) GG TO 10 135 NBEG*RWPT(I ) NEND»NBEG+R«LT< I )-l IF (COL(NSEG) .NE. 01 GO TO 136 NBEG*NBEG+1 136 DO 140 K=NBEG.NEND SUB*COL(K) IF (S(SUB) .NE. 0) GO TO 140 IF (RttCF(K) .GT. R) GO TO 180 IF ( -RWCF(K) .LE. R ) GO TO 140 XS< JX)*-SUB JAD-SUB KS*-1 NUNOL X»NUNDLX*1 CALL CGPSNS ( tJ0.t«00) GO TO 140 ISO NCX1«NCX*0F(SUB) IF INCX1 .GT. ZBAR) GO TO 30 IF fNCXl .EO. ZBAR .AND* MAXNO .LE. AVAILI) GO TO 30 JAOoSUB XS(JX)»-SUB KS » 1 NUNOL X-NUNDL X ♦ 1 CALL CGPSNS ( C30.t40 0> 140 CONTINUE GO TO 10 310 CONTINUE IF IRLMI) .NE. 0) RETURN 2 RLKII )«HP 1LIP0612 ILIP361 3 ILIP0614 ILIP3M5 ILIP36t6 ILIP0617 ILIP0618 ILIP061'i ILIP0620 ILIP0621 ILIP0622 1LIP362J ILIP062A IHP0h25 ILIP0626 ILIP0627 ILIP062S ILIP0629 ILIP06 30 ILIP06J1 ILIP06 32 ILIP3633 ILIP06 34 ILIP06 35 ILIP06 36 ILIP0637 ILIP063S ILIP06J? ILIP3640 ILIP3641 1LIP0642 ILIP0643 ILIP0644 ILIP0645 ILIP0646 IL1P0647 ILIP0648 ILIP0649 ILIP06S0 ILIP06SI ILIP06S2 ILIP06S3 ILIP0654 ILIP06SS ILIP0656 ILIP06S7 IL1P065S ILIP04S9 ILIP0440 1LIP0661 ILIP06A2 ILIP0663 ILIP0664 ILIP068S ILIP066* ILIP0467 ILIP0888 1LIP0869 ILIP0670 82 FORTRAN IV G LEVEL 21 010S HP = I 0106 320 RETURN 2 0107 400 IF (RLK(I) 0108 RLKII )=HP 0109 HR = I 01 10 RETURN 1 Oil 1 END EXTDXl >NE. 1 RETURN i DATE * 76072 16/T4/51 IL IP 06 71 1LIP3672 ILlP3e71 1L IP0b7« ILIP-5675 ILIP0t>f6 ILIPJ677 83 FORTRAN IV G LEVEL 2 1 EXTDXS DATE 76 072 16/34/51 000 1 0C02 0003 0004 0005 0006 0007 0008 0C09 0010 0011 0012 0013 0014 00 IS 0016 0017 0018 0019 0020 0021 0022 0023 0024 0025 0026 0027 0028 0029 0030 0031 0032 0033 0034 0038 0038 •037 0038 0039 0040 •041 0042 •043 ••44 ••«• •04* •04 7 SUBROUTINE EXTOXS( •.».*) CHECK INEQUALITIES FOR THE CASE WHEN UNDERLINING CONDITIONS ANO PSEUOO-UNOFRLINING CONDITIONS ARE NOT TO BE CHECKED CNLY ONE OPTIMAL SOLUTICN IS WANTED IMPLICIT INTEGER*2(A-T.V-Z> t REAL(U) INTEGER*4 NCT 3.NCT4. NCT5 .NCT6 .NGE TVS .NNEMX , NUNDLX ,NF IXJ.ZBAR INTEGER** NCX.NCX1.VS.NS.PS CCMMON COL( 1 3C0 0I .RMCFI1000 0I .ROW I 1 OOC ) , CLCF ( 1 00 00 I . • RWPTI 10C0) ,RWLT(I000).PS( 1000) ,NS< 1000) .YSI 1000) . • CLPT(400).CLLT(400).XI4C0).S( 4 00) .XHATI400) . • OFI400) .CLVTI 1000) .XSI400) COMMON ZBAR.M.N.NCT2.KS. J AD. JX.NCX.LTS. JTS. • NCT J. NCT4.NCT5.NCT6.NFl XJ .NGE TVS. NNEWX .NUNDLX COMMON SLCFI 10000) . SLPTI I 00 I • A VA IL 1 . AV A IL . MAXNC COMMON DVSN.NCT7.P4.P6.X2ST COMMON RLK(IOOO) .HP.EP.P6 3 I*HP GO TO 4 10 IF II .EQ. EP) GO TO 310 I»HP 4 HPsRLK(l) RLKI l)-0 IF (NSII) .GE. 0) GO TO 10 R-PSI I) IFIRI 30. 70. 130 30 CONTINUE IF IRLK(I) .NE. 0) RETURN 1 RLM I )«HP HP»I RETURN 1 7C NBEG ■ RWPTI I ) NEND ■ NBEG ♦ RKLT(l) - 1 IF (COL(NBEG) .NE. 0) GOTO 71 NBEG * NBEG+1 71 00 80 K» NBEG. NEND SUB-COLIK) IFISISUB) .NE.O) GO TO 80 IFIflWCF(K)) 110. 80. 120 ItO XSIJXl—SUB JAD-SUB KS«-1 NUNDL X-NUNDL X ♦ I CALL CCPSNS < *30.t*00) 60 TO 80 tao xsual— sue KS • 1 JAO'SUB NUNDLX*NUNOLX*I CALL CGPSNS < (30. (400) •0 CONTINUE IF INCX .GE. ZBAR) GO TO 30 GO TO 10 130 IF (CLVTI I)) 138. 10. 200 200 K ■ CLVTI II ILIP0676 IHP?6747 ILIP0638 ILIP0f>-*9 ILIPOft^O ILIPOhJl ILlf 0692 ILIP3693 ILIP0694 ILIP3655 ILIP06J6 ILIP0697 ILIP0698 ILIP0h3<3 ILIP0700 ILIP0701 ILIP0702 ILIP070J ILIP0704 ILIP0705 ILIP0706 ILIP0707 ILIP070W ILIP0709 ILIP0710 ILIP0711 ILIP0712 ILIP0713 ILIP0714 ILIP0715 ILIP0716 ILIP0717 ILIP0718 ILIP0719 ILIP0720 ILIP072I ILIP0722 ILIP3723 ILIP0724 IL IPO 725 1LIP0726 ILIP0727 ILIP0728 ILIP0729 ILIP0730 ILIP0731 ILIP0732 ILIP0733 ILIP0734 ILIP073S ILIP073* Qk FORTRAN IV C LEVEL 21 EXTCXS DATE = 76072 16/34/5! 0048 0C49 0C50 OOSI 0052 0053 0054 0055 0056 00S7 0058 0059 0060 0061 0062 0063 0064 0065 0066 0067 0068 0C69 0070 0<57l 0072 0073 0074 0075 0076 0077 0078 0079 0080 0081 0082 0083 0084 008S 0086 0087 008* 0089 0090 00*1 0092 009) 00 *« 0090 000* 00*7 0090 0099 0100 0101 oioa • 103 0104 Sue * COL(K) IF (S(SUS).NE.O) GO TO 13 IF (PtCF(K) .GT.P) GO TO 280 IF(-RI»CFIK» .LE.R » GOTO 10 xsc jx)=-sub JAO=SUB KS=-1 NUNDL X=NUNDLX*1 CALL CGPSNS I C.30.64C0I GO TO 10 280 NCXl=NCX*OF( SUB » IF (NCX1 .liE. ZBAR) CC TO 30 JAO=SUB XS( JX»=-SUB KS = l NUNDLX = NUNf)LXM CALL CGPSNS < &30.C400) GO TO 10 1 35 NBEG=R*PT ( I ) NFNO=NBEG+R*LT< I >-l IF (COL(NBEG) .NE. 01 GO TO 136 NBEG=NUEG*1 136 DO 140 K=NBEG.NEND SUB=COL(K) IF (S(SUB) .NE. 0) GO TO 140 IF IRMCF(K) .GT. R> GO TO 180 IF ( -RVCF(K) .LE. R > GO TO 140 XS< JX»=-SUB JAD=SUB KS=-1 NUNDLX=NUNDLX*1 CALL CGPSNS ( C30.C400J GO TO 140 180 NCX|iNCX+OF( SUBI IF CNCX1 .GE. ZBAR) GO TO 30 JAD«SUB XS< JX»=-SUB KS = 1 NUNDLX^NUNDLX+l CALL CGPSNS ( C30.C400) 140 CONTINUE GO TO 10 310 CONTINUE IF (RLKUI .NE. 0) RETURN 2 RLK( I )«MP HP»I NUM*0 IF (NCX-ZdAR + DVSM 320.16.30 16 00 17 K»l ,N IF (OF|K| .EQ. 01 GO TO 17 IF . • RWPTI 10 00 t ,RWLT < 1000) ,PS< 10001, NSt 10001 . YSU000) . • CLPTI40 0I ,CLLT(400 |.X<400).SI4 00) .XHATI400I . • OF! 4C0) .CLVTI 1 000) .XSI400) COMMON ZBAR.M.N.KCT2.KS. J AD. JX.NCX.LTS. JTS, • NCT3.NCT4 .NCT5.NCT6.NFI X J .NGET YS . NNEWX . NUNDLX COMMON SLCFI ICOO0).SLPT( I 000 I .A VA 1L 1 . AV AIL . MAXNC COMMON DVSN.NCT7.P4 .P5.XZST COMMON RLKI 1000) .HP.EP.P6 3 I=HP GO TO 4 10 IF (I .EQ. FP) GC TO 310 I*HP 4 HP=RLMl) RLKI I 1=0 IF INSIII .GE. 01 GO TO 10 R=PS( 1) IFIR) 30. 70. 130 30 CONTINUE IF (RLKI I I .NE. 0) RETURN 1 RLKI I )»HP HP»I RETURN 1 70 NBEG * RWPTII) NEND * NBEG ♦ RWLT(l) - 1 IF ICOLINBEG) .NE. 0) GOTO 71 NBEG * NBEG-M 71 00 60 KsNBEG.NENO SUB-COLIK) IFISISUB) .NE.O) GO TO 80 IPIRWCF(K)) 110. 80. 120 no xsijxi — sua J AD- SUB KS«-1 NUNOL X«NUNDL X ♦• I CALL C6PSNS ( 130.C40CJ GO TO 60 1X0 XSIJX)— iUB K» • I JAO-6U8 NUNOL X*NUNDLX*1 CALL C6PSNS ( t30.C400| 60 CONTINUE IF (NCX .GT. ZBAR) GO TO 30 60 TO 10 130 IF (CLVT(II) 135* lOt 200 200 K ■ CLVTI I) ILIP08D3 IL IP0H04 ILIPOHOS IL |P08Dfi iHPoeor ILIP080H ILIPD809 ILIP0B10 ILIP081 I IL IP0(Jl2 ILIP011 3 ILIP08I4 IL IP081S iLIPOttlb ILIP0817 ILIP0818 ILIP081Q ILIP0820 ilipo8?i ILIP0822 ILIP0823 ILIP0824 1LIP08?5 ILIP0826 ILIP0827 ILIP0828 ILIP0829 ILIP0830 ILIP0831 ILIP0832 ILIP0833 ILIP0834 ILIP0835 ILIP0836 ILIP0837 ILIP0838 IL1P0839 ILIP0840 ILIP084I ILIP0842 ILIP4843 ILIP0844 ILIP084S ILIP0646 ILIP0847 ILIP0840 ILIP0649 ILIP06S0 ILIP06SI 1LIP0092 ILIP06S3 ILIP0694 ILIP06S8 ILIP0666 ILIP06S7 ILIP0896 ILIP0839 ILIP0660 ILIP0 661 87 FORTRAN IV G LEVEL 21 EXTOXD DATE ■ 76072 0048 0049 00S0 0051 0052 0053 00S4 0055 0056 0057 0058 0059 0060 0061 0062 0063 0064 0065 0066 0067 0068 0069 0070 0071 0072 0073 0074 007S 0076 0077 0078 0079 0080 0081 0082 0083 0084 OOSS 0086 0087 0088 0089 0090 0091 0092 0093 •094 0098 •098 #097 0O08 009* • 100 • 1*1 tita titj • 164 lb/34/51 SUB * contcj IF (S(SURI.NE.O) GO TO 10 IF(RMCF(K).GT.R) GO TO 280 IF(-RWCFIK) .LE.R) GOTC 10 XS(JX)»-SUB JAo«sua KS=-1 MJNDLX*NUNDLX*1 CALL CGPSNS ( C30.C400) GU TO 10 C 260 NCX1*NCX*0F(SUB) IF 1NCXI .GT. ZBAR) CO TO 30 J AD* SUB XS{ JX)x-SUB KSM NUNDLX=NUNOLX*l CALL CGPSNS < C30.C4001 GO TO 10 C 135 NBEGsRDPTI I } NENO*NBEG+RMLTt I »~l IF (COL(NBEG) .NE. 1 GC TO 136 NBEG*NBEG*1 136 00 140 KbNBEG.NEKO SUB«COL(K> IF (S(SUB) .NE. 0) GO TO 140 IF (RMCF(K) .GT. R) GC TO 180 IF < -RHCFfKI .LE. R J GO TO 140 XS6 ILIPD867 ILIP98 CLLT (L*l ) - 1 EG t END K) ) .GE. 0) GO TO 220 ) .LE. 0) GO T0220 ROM(K)) t CLCF(K) GE. 0) GO TO 210 CLCF(K) 1 NBR ) GOT0230 NBR I GOTO 200 SUM ) GOTO 200 . 0) RETURN 2 ILIP092H ILIP092'* ILIP0939 ILIP3931 ILIP0932 ILIP3933 ILIP09 J4 IL IP09 J5 ILIP19 Ife ILIP39 37 ILIP0934 IL IPO 9 39 ILIP0940 IL IP3941 ILIP3942 ILIP0943 IL IP0944 ILIP0945 ILIP0946 ILIP0947 ILIP094a ILIP0949 ILIP0950 ILIP3951 ILIP3952 ILIP0953 ILIP0954 ILIP0955 ILIP39S6 ILIP0957 ILIP3958 ILIP0959 ILIP0960 ILIP0961 IL1P0962 ILIP0963 ILIP0964 ILIP096S ILIP0966 ILIP0967 ILIP0966 ILIP0969 IL1P0970 ILIP0971 ILIP0972 ILIP0973 ILIP0974 ILIP097S ILIP0976 ILIP0977 ILIP097S 90 FORTRAN IV G LEVEL 21 FIXJB DATE * 76072 16/34/51 0001 SUBROUTINE FtXJB ( •. *» [LlPOfM C ILIP39<)0 C AUGMENT VARIABLES 8V SCHEME 3 I L 1 f> 3 <-> 1 1 C ILIP3182 0002 IMPLICIT INTEGER»2(A-T, V-Z» . REAL(U) ILIPT*1) 0003 INTEGER** NCT3.NCT4 . KCTS .NCT6 ,NGET VS .NNEWX , NUNOLX ,NF IX J . ZB AM ILIP09H4 0004 INTEGER44 NCX.NCX1.YS.NS.PS ILIP)Mb 000b INTEGER44 MAX.NSUM ILlP39d«S 0006 COMMON COL< 100001 . RWCF< I 000 I .HOIM1000C 1 .CLCF(IOOOO) . ILIP)'iH7 * RKPI ( 10CO ) .R»LT( 1 0001 ,PS( 100C 1 ,NS( I Old .YS< 1001) . ILIP39>1B * CLPTI400) .CLLTI400) . X (4 00 ) . S ( 4 00 ) .XHAT<400) . ILIP0939 * OFI4001 .CLVTt I0C0) . xs<400> Ilipi9'i0 0007 COMMON ZB AR . M ,N . NCT2 . KS . J AO . JX .NC X .L T S. JTS . IL1PD9T1 * NCT J. NCT4.NCT5.NCT6.NFIXJ.NGFTYS.NNEMX. NUNOLX ILIP39J2 0008 COMMON SLCF< 10000) tSLPTI 1000) .AVAlLl . AVAIL. MAXNC ILIPO'iM 0009 COMMON 0VSN.NCT7.P4.PS ILIP31H 0010 JAO=C ILIP3995 001 t MAX=-3000030 IL|P39-#6 0012 OO 316 L»I .N 1LIP0997 0013 NSUM=>0 ILIP399A 0014 IF (5(L) .NE. 0) GO T0316 ILIP0999 0015 J = L ILIP1000 0016 NBENiCLPT(JM) ILIP1001 0017 NENO * NBEN ♦ CLLTU+l) -1 ILIPI032 0018 OO 314 KK ■ NBEK, NENO ILIP1031 0019 I = ROM(KK) ILIPI034 0020 IF ( YS(I)»CLCF{KK) .GE. Oi GO TO 313 ILIPI005 0021 IF CYSCI) .LT. 0) GO TO 312 ILIP1006 0022 NSUX*NSUMKLCF(KKl + YS(II ILIP1007 0023 312 NSUM~NSUM+CLCF(KK) ILIP1008 0024 GO TO 314 ILIP1009 0025 313 IF (YS11I .LT. 0) NSUH-N SUM- Y S ( I ) ILIP1010 0026 314 CONTINUE ILIP1011 0027 IF(MAX.GT.NSUM) GO T0316 ILIP1012 0028 MAX=NSUM ILIPI013 0029 JAD=J ILIPI014 0030 316 CONTINUE ILIP1015 0031 317 IF (JAD .EG. 01 RETURN 2 ILIPI016 0032 KS»i ILIPI017 0033 RETURN 1 ILIPI0I8 0034 CNO ILIP1019 91 FORTRAN tV C LEVEL 21 FIXJZ DATE • 76072 tt>/ J4/SI 0001 0002 0003 0004 0005 0006 0007 0008 0009 0010 001 I 0012 0013 0014 0015 0016 0017 0016 0019 0020 0021 0022 0023 0024 0025 0026 0027 0028 0029 0030 0031 0032 0033 0034 0038 003* 0037 0038 0039 0040 00*1 *©•« • 043 004* 00*0 004* 00*7 00*8 00«« •000 0001 00*2 400 205 210 105 110 220 120 130 1*0 228 22* 230 SUBROUTINE FIXJZI *••» ILIP102*? ILIP1C?1 AUGMENT VARIABLES BY SCHEME 2 ILIP1C22 ILIP1 C?3 IMPLICIT INTEGER42I A-T.V-Z1 , GEAL(U) ILIP1C24 ' INTEGER** NCT3,NCT4,NCT6,NCT6,NGETVS,NNE«X*NUN0LX,NF1XJ,2BAR ILIP1C25 INTEGER** NCX.NOI.YS.NS.PS ILIP1026 INTEGER** HT.SUM.NSUM.NSWAL ILIPIC27 COMMON COLt 10C00) .RtfCFI 10C00) «ROtft I000C) .CLCFt 10000) . ILIP1028 • RWPTI 10C0I .RWLTf 1000) .PSI 100C I . NS ( I 00 C ) . YS I 1000). ILIP1029 • CLPTI 400) .CLLTI400I . X 1 400) . SI 400) .XHATI400) t ILIP1CJ0 4 OFI400) .CLVTI 1000I.XSI400) ILIP1031 COMMON ZBAR.H.N.NCT2.KS. JAD. JX.NCX.LTS. JTS. ILIPI032 • NCT3.NCT4.NCTS.NCT6.NFIXJ.NGETVS.NNEWX.NUNDLX ILIP1033 COMMON SLCFUCOOOI.SLPTI 1000 ) .AVAIL1 .AVAIL. MAXNO ILIPIC34 COMMON OVSN.NCT7,P4»P5 ILIP10J5 CONTINUE ILIP10JO JAD'O ILIP1037 kTz-3000000 ILIP10J0 CT»-30000 ILIP1039 00 200 1*1. N ILIP1040 L*N-I*1 ILIP1041 IF (S(L).NE.O) GC TO 200 ILIP1042 BEG * CLPT CL4-1I ILIPI043 ENO s BEG +CLLT fOll-1 1LIP1044 SUM*0 IL I PI 0*5 NBR«0 ILIP1C46 NSUM-0 ILIP1047 NN8H»0 ILIP104a 00 220 K- BEG. END ILIP1049 IF CNSIROKIK)) .GE. 0) GO TO 220 ILIP10S4 IF (CLCF(K)I 105. 220, 205 ILIP1051 NSVAL-NSIROMIK) ) ♦ CLCFIK) ILIP10S2 IF INSVAL .GE. 0) GO TO 210 ILIP10S3 SUX*SUM»CLCF(KI ILIP10S4 GO TO 220 ILIP10SS NBRaNBR*! ILIP10S6 GO TO 220 ILIP10S7 NSVAL«NSIRO«lK))-CLCFIK) 1LIP105* IF INSVAL .OK. 01 GO TO 110 ILIP1059 NSUM«NSUM - CLCF(K) ILIP1060 GO TO 220 ILIP1041 NNBR»NNBR+1 ILIP10A2 CONTINUE ILIP10A3 IF INNBR - NBRI 140* 120. 130 1LIPI064 IF (NSUM - SUM) 140. 140. 130 1LIP10AS SIGN— I ILIP10** NBR»NNBR IL I PI 0*7 8UM-NSUM ILIPIOM GO TO 225 ILIP1*** SIGN » I IL1PI070 IF (CT - NOR) 22*. 230. 200 ILIP1071 CT «NBR ILIP1072 JAO» L ILIP1073 • T- SUM ILIP10T4 KS'SIGN ILIP107* GO TO 200 IL1P107* IF IWT.GE. SUM) GO TO 200 ILIP1077 HT - SUM ILIP107* 92 FORTRAN IV c LF.VEL 7\ FIKJ 0053 JAO = U 0054 KS = SIGN 0055 200 CONTINUE 0056 IF (JAD .EO. 01 RETURN 2 0057 RETURN I 0058 END OATE 7607? \f /34/S1 ILIPI C79 IL1»*I OHO IL IPlCdl ILIP1CH2 ILIPIOm 1LIP1 C-I4 93 FORTRAN IV G LEVEL 2 1 GEOF DATE « 76072 16/34/51 0001 0OC2 0003 0004 0005 0006 0007 0008 0009 0010 0011 0012 0013 0014 0015 0016 0017 0016 0019 0020 0021 0022 0023 0024 002S 0026 0027 0026 0020 0030 0031 0032 0033 0034 003S 0036 0037 0036 0036 0040 0061 SUBROUTINE GEOF CHECK INEQUALITIES TO SEE IF THE CURRENT PARTIAL SOLUTION IS INFEASIBLE CR SOME FREE VARIABLES HAVE TO BE FIXED TO SOME VALUE IP THE CURRENT PARTIAL SOLUTION IS NOT FEASIBLE THEN BACKTRACK. IF SOME VARIABLES HAVE fO BE FIXED TO SOME VALUES THEN FIX IT. IF NO INFORMATION CAN BE OBTAINED THEN AUGMENT A FREE VARIABLE TO THE PARTIAL SOLUTION. REPEAT THE AHOVE PROCEDURE A NUMQER CF TIMES SPECIFIED BY ITER. IMPLICIT INTEGER*2(A-T.V-Z> ■ REAL(U) INTEGFR44 NCT3.NCT4.NCT5.NCT6iNCETYS.NNEWX.NUNDLX.NF I X J. /BAP INTEGER** NCX.NCXI.YS.NS.PS INTEGER*4 TIME1.TIME2 REAL*4 TIME3 COMMON COL( 10 000) .RMCFI 10 0001 .ROH( 10000) .CLCFI1 0000) . * RWPT( 10CO) .RWLTU000) .PS(10C0).NS(1030)«YS< 1000). * CLP T( 40 0) .CLLTI400) .X(400).S(400).XHAT(400). * OFI400) .CLVTI 1000) . XSI400) COMMON ZBAR.M.N.NCT2.KS. JAD, JX.NCX.LTS. JTS. « NCT3.NCT4.NCTS.NCT6.NFI X J .N6ETVS.NNEMX .NUNDLX COMMON SLCFUOOOOI.SLPTI 1000) .AVAIL 1 . AVAIL. MA XNO COMMON DVSN.NCT7.P4.P5.XZST COMMON RLK( 10CO) .HP.EP.P6.SPCL COMMON TIME2 IMPLICIT ENUMERATION IF (NFIXJ .GT. .AND. NFIXJ .LT. 4) GO TO 330 PRINT 990. NFIXJ 990 FORMAT!* MRCNG CCOE FOR FIXJ' . 13.'. 1 IS ASSUMED') NFIXJ*1 330 CT2*NNEWX CT3=NGETYS JTS*-1 IF (SPCL .EC. 1) GO TO 1003 IF (XZST .EG. 1) GO TO 1002 DO BO KK=1 ,NCT2 00 70 LK*1.S0 NCT4*NCT4*1 CALL EXTDX ( 30 CONTINUE IF I NFIXJ .EQ, IF (NFIXJ .EQ, CALL FIXJB ( 32 CALL FIXJZ ( 33 CALL FIXJ ( fc60.C30.t50) 1 ) GO TO 33 2) GO TO 32 6 75. CSC) 675, 6SC) 675*650) 75 CALL UNDFXJCC6S, C60.CB0) SO CALL NEMX 60 NCT6*NCT6+I CALL UNDLXC C65.690.660) 65 CONTINUE IF (NCT4 .NE. CT2) GO TO 68 CT2*>CT2*NNEMX CALL PINOUT 68 IF INCT4 .NE. CT3) GO TO 70 CT3=CT3*NGETYS ILIP1095 ILIPt 036 ILIP1087 ILIP1088 ILIP1 089 ILIP1090 ILIP1091 ILIP1092 ILIP1093 ILIP1094 ILIP1 095 ILIP1096 ILIP1097 ILIPl P9« ILIP10i9 ILIP1 100 ILIPl 1 01 ILIP1 102 ILIPl 1 33 ILIPl 1 04 ILIPl 105 ILIPl 106 ILIPl 107 ILIPl 108 ILIPl 109 ILIPl 1 10 ILIPl 1 1 1 ILIPl 1 12 ILIPl I 13 ILIPl 1 14 ILIPl 1 IS ILIPl 1 16 ILIPl 117 ILIPl I 18 ILIPl 1 19 ILIPl 120 ILIPt 121 ILIPl 122 ILIPl 123 ILIPl 124 ILIPt 125 ILIPl 126 ILIPt 127 ILIPl 126 ILIPl 126 ILIPl 130 ILIPU31 ILIPII32 ILIPl 133 ILIPI136 ILIP1I35 ILIPl 136 ILIPl 1 37 ILIPl 136 ILIPl 139 ILIPl 160 ILIP1141 ILIPI162 ILIPl 163 9h FORTRAN IV G LEVEL 21 GEOF DATE =76072 16/J4/51 0042 CALL SOLPNH ILIP1I44 0043 70 CONTINUE ILIP|I*5 0044 80 CONTINUE ILIP1146 C ILIP1I47 0045 JTS=*1 IL |P1 1 48 0046 .ROM ( 1 0000 ) .CLCFI10000) . * RWPTI IOC 1 . RMLTI 1000). PS(IOOC). NSC 1000). VS( 1000). * CLP TI 40 01 . CLLK400I .XI400 1 . S ( 4 00 ) . XHAT I 40 ) . * OFI400I .CLVTt 10001 . XSI400) COMMON ZBAR.M.N.NCT2.KS.JAD.JX.NCX.LTS.JTS. 4 NC T 3. NC T4, KCT5.NCT6.NF I XJ. NGETYS. NNEMX . MJNDLX COMMON SLCF < 1 00 00 1 . SLPT ( 10001 .AVAIL 1 .AVAIL .MAXNO COMMON 0VSN.NCT7.P4 .P5.XZST COMMON RLM 10001 .HP. EP.P6 30 32 33 75 50 60 65 68 70 80 90 CT?=NNEMX CT3=NGETYS 00 80 KK=l. OO 70 LK=1 . NCT4=NCT4*1 CALL EXTOXI CONTINUE IF (KFIXJ . IF (KFIXJ . CALL FIXJB CALL FIXJZ CALL FIXJ ( CALL UNOFXJ CALL NEMX NCT6=NCT6*1 CALL UNDLXf CONTINUE IF (NCT4 .N CT2=CT2*NNE CALL PINOUT IF (NCT4 .N CT3=CT3*NGE CALL SOLPNH CONTINUE CONTINUE JTS=1 CONTINUE RETURN END NCT2 50 (C60.b30.650) EQ . 1 I GO TO 33 EQ. 2 1 GO TO 32 ( C?5,(5C! ( t75. C5C) C7S.&50) * RWPTl 1000) .RWLT (1000). PS< 1000 ) .NS< 10001 .VS< 1000) . ILIP1220 *" CLPTI 400) .CLLT(400) ,X<40C ) .S<400> .XHATI400) . 1LIP1221 * OFI400) .CLVTI 1000) .XSC400) ILIP122? 0006 CCMMCN ZB AR • M ,N . KCT2 . KS t J ADi J X . NC X , L T St JTS. ILIPI223 * NCT3.NCT4.NCT5.NCT6.NF I X J , NGfc T VS . NNE WX .NUNDLX ILIP1224 0007 COMMON SLCF ( 1 COOO ) . SLPT ( I 00 ) t A VA I L 1 . AV A I L . M A XNC ILIP1P25 00C8 COMMON DVSN.NCT7 ,P4 ,P5 ILIPI?»6 0009 NCF=CLPT( JA0*1 ) 1LIP1227 0010 NCFENO * NCF ♦ CLLTIJAO *1) -1 ILIP1228 0011 00 10 I=NCF,NCFEND ILIP1239 0012 J = r?OW . * HKPTII100) .RWLT( 10001. PS( 1000). NS(1000>»YS(IOOC>. • CLPT(400> .CLLT(40C |.X(4 00).S(4C0).XHAT(400|. • OF( 4001 .CLVT( 1000) . XSI400) CCMMON ZEA«,M,N,NCT2.KS.JAO.JX.NCX.LTS.JTS. * NCT3.NCT4.NCT5.NCT6.NF I X J . NGET YS . NNEWX . NUNOLX COMMON SLCF ( ICOOC ) .SLPT( 1 000) .A VAIL 1 .AVAIL.MAXNC CCMMON DVSN.NCT7.P4.P5.XZST COMMON RLM 10C0I .HP.EP.P6 HP = -1 DO 5 1=1 , M ps( I ) = ys( I ) NS( I )=YS( I ) NBEG * RWPT ( I ) NEND = NBEG ♦ RMLT(I) - I IF (COL(NBEG) .NE. 0) GO TO 10 NBEG=NBEG*1 OO 40 K=NBEG.NENO IF I S (COLt K | | .NE.Ol GO TO 40 IF (RWCF(K) ) 30.40. 20 PS( I )=PS( I l+R»CF(K) GO TO 4 NS(I )=NS( I)*R«CF(K> CONTINUE IF (NS(I) .GE. 0) GO TO 50 IF (HLM I) .NE. 0) GO TO 100 IF (HP .GT. 0) GC TO 1008 HP=I EP=I RLK(EP)xI GO TO 100 1008 RLK(EP)=I EP*I RLK( I )=I 100 CONTINUE SO CONTINUE RETURN END 10 20 30 40 LIP1? lb LIP12TO LIB1237 LIP1 21B LIP12 19 L IP1 240 HP1 241 LI PI 24.? LIP1211 LIP1 244 LIP1245 LIP1 246 LIP1247 L IP1241 LIP1249 LI PI 250 LIP1251 LI PI 252 LIP1253 LIP1254 LIP12bb LIP1256 LIP1257 LIP1256 LIP1259 LIP1260 LIPI261 LIP1262 LIP1263 LIP1264 LIPI265 LIP1266 LIP1267 LIP1268 LIP1269 LIP1270 LIP1271 LIP1272 LIP1273 LIP1274 LIP1275 LIP1276 LIP1277 LIP1278 LIPI279 LIP1280 LIP1281 98 FORTRAN IV C LEVEL 21 NEWSOL DATE * 76072 16/34/51 0001 SUBROUTINE NEMSOL ILIP1232 C IL|f»l2 i l - ' C ERASE ALL SOLUTIONS STOREO IN SLCF AND STOHE A NEW FEASIBLE ILIPI2H4 C SOLUTION JUST FOUND ILIPI2H5 C ILIP12fl-> 0002 IMPLICIT INTEGF.R*2(A-T«V-Z) • h£AL ILIP12*7 0003 INTEGER*4 NC T 3 ,NC T4 .NCTS ■ NCT6 .NGE T VS . NNEWX . NUNOLX ,NF I X J . l& AR IL1P1283 0004 INTEGER»4 NCX.NCX1.VS.NS.PS ILIPI289 0005 COMMON COL ( I 000 I iMWCH f 0000 I .ROW! I 0000 > .CLCF ( 1 0000 I . ILIP1290 * ROPTi 1000) .RWLT(IOOO) tPS( 1300 ) .NSI 10 3 0) .VS( 1300) . ILIP129I * CLPT( 4001 tCLLT(400) .X(400),S(4001 tXHATI40C> • ILIP1?<>? * OFI400) .CLVT( 10C0> .XSI4C0 > ILIP1291 0006 COMMON ZB AR . M .N , NCT2 t KS . J AO t JX t NCX t L T S t JTS . ILIPI2-J4 * NCT3.NCT4.NCT5.NCT6.NFlXJ.NGETYSiNNEWX.NUNULX ILIPI2V3 0007 COMMON SLCF ( I CCOO > . SLPTI 1 000 I t A VA IL I t AV A I L . MA XNO !LIP12?o 00C8 COMMON D VSN .NCT7 ,P4 ,P5 ILIP1297 0009 AVAIL 1^0 ILIP1298 0010 AVAIL'l ILIP1299 0011 CALL STRSOL ILIP1300 0C12 RETURN ILIP130I 0C13 END ILIP1302 99 FOPTHAN IV G LFVFL NErfX 76C 72 If /34/bl 0001 000? 0003 0004 0005 0006 0007 C008 0009 0010 001 1 0012 001 3 0014 0015 0016 001 7 0018 0019 0020 0021 0022 0023 0024 002S 0026 0027 0028 0029 0030 0031 0032 0033 0034 0035 0036 0037 003S 0039 0040 0041 0042 0043 0044 0045 0046 0047 004S 0049 0050 13 100 12 10 1 1 15 1 ) GO TO \i SUHROUTINF. NF. MX UPDATE .XHAT(40'"I. * OF( 4C0) ,CLVT( 10001 . XSI 4CC) CCMMON ZEAR.M.N.NCT^.KS.JAD.JX.NCX.LTS.JTS. » NCT3.NCT4.NCT5.NCT6.NFIXJ.NGITYS.NNEWX.NUNDLX COMMON SLCF(10OC0).SLPT( 1000) .AVAIL 1 , AVAIL. MA XNC CO*MCN DVSN.NCT7 ,P4 .P5.XZST COMMON RLK< 10C0) ,HP.fcP,P6 IF (NCX .EQ. Zf-Ah .AND. NCT3 .EC IF (XZST .EQ. 1) CALL NEWSGL NCT5=NCT4 NCT3=1 ZBAR=NCX CONT INUF OETA=ZBAR-0VSN-R*CF(Rl»PT(M) ) IF (XZST .EQ. 1 .AND. MAXNO . GT , PS(M)=PS(M)*OETA KS(M) =NS(M) + DETA YS(M)=YS(M)+UETA IF (NSIKl .GE. 0) GO TO 100 IF (RLK(M) .NE. C) GO TC 100 RLMEP)=M EP=M RLK(M)=M CONTINUE RWCF (RwPT(M) J =ZEAR-DVSN IF (XZST .EQ. I .AND. MAXNO .GT. AVAIL1) RWCF ( RWP T ( M I >= ZBAR CLCF(CLPT(2 )-l ) = ZBAR-DVSN IF (XZST ,EU. 1 .AND. MAXNO AVAIL1) DETA-=DET A*OVSN IF (XZST .EQ. 00 10 K«l ,N XHAT(K)=o CONTINUE JXl=JX-l DO 11 L^l ,JX1 IF(X(L( .LE.O) J«XIL| XHAT< J)il CONTINUE GO TO 15 CONTINUE IF (MAXNO .LF IF (XZST .EQ. NCT7=NCT7»1 LTS=l IF (P4 .NE. 1) RETURN IF (NCT7 .GE. PS .AND. RETURN END AND. MAXNO GO TO 11 AVAIL1 ) GO TO 1) CALL STHSOL .GT • LE . AVAIL1 ) AVAIL1 ) CLCF(CLPT(2 )-l ): GO TO 15 ZbAP 13 NCT7 .LE. P6) CALL PFSL L I P I 3 : 3 LIP1 30a I. I P 1 i j LIP1 3C* Li >l 30/ L IP1 3 1-\ LIP1 J? » L I P 1 310 I.IPI 111 L I P I J t 2 LIP1 il J I. I P 1 3 I 4 LIP1 31 b L I PI 31o I. I P 1 J 1 7 L I P 1 .1 1 rt LIP1 JIT LIP1 J^C LI PI 3^1 LIP1 3?2 LIPI3JI L|D| 324 L IP1 325 LIPl 326 LIP1 327 LIPl 326 LIPl 329 LIPl 330 LIP1331 LIP1332 LIPl 333 LIPl J 34 LIFM335 LtPl 336 LIP1337 LIP1338 LIP13 39 LIPl 340 LIPl 341 LIP1342 LIP1343 LIPl 344 LIP1345 LIP1346 L1P1347 LIPl 348 LIP1349 LIPl 350 LIPl 351 LIP13S2 LIPl 353 LIP1354 LIP1355 LIPl 356 LIP1357 LIPl 359 LIP1359 LIPl 360 LIPl 361 100 FORTRAN IV G LEVEL 21 PFSL DATF. - 7607? 16/34/51 0C0I 0002 00 3 0004 000b 0C06 0007 0008 0009 OCIO 0011 0012 0013 0014 0015 0016 0017 0018 0019 0020 0021 0022 0023 0024 0025 0026 0027 0028 0029 0030 0031 0032 0033 10 20 30 35 40 50 100 120 SUHHOUTINE PFSL PRINT FFASIGLE SOLUTION FOUND IMPLICIT INTEGFR*2< A-T. V-Z> , KEAL(U) INTfcGEB*4 NCT 3.NCT4.NCT5.NCT6.NGETYS.NNEWX.NUNOLX ,Nr I XJ.ZHAR INTEGFH*4 NCX.NC » I . VS.NS.PS COMMON COL< I 100 » ,»<*CF< 100001 .NOHUCOOOI .CLCFI ICO 00) . * RWPTI 10C0) , RWLT (1000|.PS<10CO),NS(1000).YS<1000I. * CLPTI 400>.CLLT(40C).X<4 00).S(400),XHAT<4CO>. * OF ( 4001 .CLVT( 10001 .XSC4C0 ) COMMON ZP4M.M.N.NCT2,KS,JAD.JX,NCX.LTS,JT5. * NCT 1.NCT4.NCT5.NCT6.NF I X J , NGE T VS . NNlZ * X , NUNOLX CCMMON SLCF(10C0CI.SLPT(1000».AVAILl. AVAIL. MA XNC COMMON DVSN.NCT7.P4 ,P5, XZST DIKfcNSlCN FSL I40C) I 1=JX-1 OO 10 I = 1 . N FSL( I)=0 DO 2C L=l . I 1 IF K1=N PRINT 40. ( I il • . 25 .Kl ) 25 14 > 100 14) ILI J| 362 ILIP1 3o3 ILI PI 364 II. IP! 3o5 ILIPI 366 1LIPI ittl ILIPI 361 ILIPI 36') ILIPI 370 IL IPI 371 ILIPI 372 ILIPI 371 ILIPI 374 ILIPI 375 ILIPI 376 ILIPI 377 ILIPI 373 IL IPI 379 ILIPI 380 ILIPI 381 ILIPI 3H2 ILI PI 383 ILIPI 394 ILIPI 385 ILIPI 386 ILIPI 387 ILIPI 3d8 ILIP1369 ILIP1390 ILIP1391 IL I PI 392 ILIP1393 IL IPI 394 ILIP1395 ILIPI 396 ILIPI 397 ILIP1398 ILIPI 399 ILI PI 400 IL IPI 401 101 FORTRAN IV C LEVEL 21 P INOUT DAT£ = 76C72 lft/14/bl 0001 0002 0003 0004 0005 0C06 0007 0006 0009 0010 001 1 0012 0013 0014 0015 0016 0017 0018 0C19 0020 0021 0022 0023 0024 0025 0026 0027 00 26 0029 0030 0031 0032 0033 0034 0035 0036 0037 0038 0039 0040 0041 0042 0043 0044 0045 0046 004 7 0048 0049 0050 SUBROUTINE PIKOUT ILHM412 C ILIP140T C PRINT OUT COMPUTATIONAL RESULR ILIP14D4 C I L I P 1 4 3 fj IMPLICIT INTEGER»2( A-T. V-Z) , ReAL(U) ILIP1406 INTEGER»4 NCT 3.NCT4 i NCT5.NCT6 , NGfc T V S ,NN E *X .NUNOLX .NF IXJ.ZbAH I L I P 1 4 * 7 1NTEGER44 NCX.NCX1.VS.NS.PS ILIP140B COMMON COL < I 0C00 > ,R*CF( I 0OC0 ) .ROW! 1 COOC ) ,CLCF( 1CO0O ) . ILIPI409 • RWPTI 10C0) ,RWLT ( 1000 J .PS< 1C00 I .NS( 1000 ) . VS< 1000) . ILIP1410 » CLPTI 400) .CLLTI 400) . X(4CC ) .SI400 ) ,XHAT< 400) . ILIP1411 * OF < 400 I .CLVTI ICOO) .XS( 4C0 ) ILIPUU' COMMON ZBAR.M.N.KCT2.KS, JAD, JX .NCX.LTS, JTS, IL I P I 4 1 ^ » NCT3.NCT4.NCT5.NCT6.NF I XJ.NGfc TYS.NNEXX. NUNOLX ILIP14I4 COMMON SI CF(l OOCO I.SLPT ( 1 CCO ) . AVA IL 1 ,AVA IL.MAXNO ILIP1415 COMMON DVSN,NCT7,P4,P5. XZST ILIP1416 COMMON RLK( 10C0I .HP.EP.P6 ILIP1417 0|MENSIONA(25) ILIP14M IF(JTS)1CI. 2C1.3CI I L I P 1 4 I '> 201 CONTINUE ILIP1420 IF (NCT3 ,E0. 0) GU TO 110 ILIP1421 PRINT 10 1LIP1422 10 FORMAT ( IM1///1 OX. "OPTIMAL FCASULO SOLUTION :•) ILIP1423 DO 40 I =1 .25 IL IP1424 40 A( I ) = I ILIP14<25 BEG=1 ILIP1426 END=25 ILIP14'7 DO 50 1P=1.N ILIP1428 IF (IP«25 .GT. N) GC TO 46 ILIP1429 PRINT 42. (AC li .1=1.251 ILIPI430 42 FORMAT «-25 ILIP1435 BEG=BEG*25 ILIP1436 EN0=END*25 ILIP1417 50 CONTINUE ILIPI4J8 GO TO 52 IL.IP14J9 46 END=N-BEG*l ILIP1440 IF (END .LE. 0> GO TO 52 ILIP1441 PRINT 47. (A( I I .1 = 1 .END) ILIPI442 47 FORMAT (/lOX.'VAfi. NC.«. 2514) ILIP1443 PRINT 48, ( XHATI II . I=BEG.NI ILIPI444 48 FORMAT (10X. 'VALUE ♦.25141 ILIP1445 52 CONTINUE ILIPI446 PRINT 12, ZBAR ILIP1447 12 FORMAT (//I OX. 'OBJECT IVE VALUE- ----------- _.,|fe| ILIPI448 PRINT 13, NCT4 ILIPI449 13 FORMAT (//lOX.'NC. OF ITERATIONS- - - - - -.- - - - - -«,16I ILIPI4S0 PRINT 15. NCT5 ILIP145I 15 FORMAT (//lOX.'NC. OF ITERATIONS WHEN OPT I M AL •• I OX, • FE AS I BLE SOLUT IL I P 1 452 1ION MAS FOUND- ----- -t,|6) ILIP14S3 PRINT 14. NCT6 1LIP1454 14 FORMAT (//lOX.'NO. OF BACKTRACKS- ---------- -'.Id) ILIP1455 PRINT 16, NUNOLX ILIP1456 16 FORMAT (//lOX.'NC. OF UNDERLINED* / 1 OX . • V AR I ABLES AOOED- - - - ILIPI4S7 1-------- -«.16I ILIP1438 200 FORMATI//I0X. • NO . OF FEASIBLE SOLUTIONS FOUND- - - - -»,I6) ILIP14S9 PRINT 200, NCT7 ILIP1460 102 FORTRAN IV C LEVEL 21 P INOUT DATE 76C7 , 1=1 ,25) FORMAT (/lOX.'VAR. NO. 1 .2514) PRINT 143. (XHAT(I). I=BtG.END» FORMAT (10X. 'VALUE •,2514) DO 144 1=1,25 A( I ) = A( 1)4-25 BEG=BEG*25 ENO=END*25 CONTINUE GO TO 152 END=N-BEG*I IF (END .LE. 0) GO TO 152 PRINT 147, (A( I ) . 1=1 .ESDI FORMAT I/IOX.'VAP. NO.*. 2514) PRINT 148, ILIP1 46T ILIP1 464 II IP1 460 IL I PI 466 11 IP1 467 ILIPI4B8 IL IP1469 ILIP1 470 ILIP1 4 71 ILI P147^ IL IPI 47 1 ILI PI 4 74 IL IP147S ILIP1 476 ILIPI477 ILIP1 478 ILIP1 479 ILIP1480 IL1PI48I ILIP1482 ILIP1483 ILIP148* ILIP1485 ILIP1486 ILIP1487 1LIP1488 ILIP1 489 ILIP14'*0 IL I PI 491 ILIP1492 ILIP1493 ILIP1494 ILIP1495 ILIP1496 ILIP1497 ILIP1498 ILIPI499 ILIP1500 ILIPI50I ILIP1502 ILIP1503 ILIP1504 ILIP150S ILIP1S06 ILIP1507 ILIP1508 ILIP1509 1LIPI510 ILIP1S11 ILIPIS12 ILIP1S13 ILIP1S14 ILIP1S15 ILIP1816 ILIP1S17 ILIPI518 ILIP1S19 103 FORTRAN IV G LEVEL 21 PINOUT DATE = 76072 16/34/51 01C7 PRINT 200.NCT7 ILIPlb20 0108 PRINT 26.NCT4 ILlt»15?l 0109 JxJX-1 ILIP1522 0110 PRINT" 24 • ILIPIb24 0112 IF INGETYS .EQ. 0> CALL SOLPNH ILIP1525 0113 IF IXZST .EO. I) CALL PCSOL ILIP15^6 0114 RETURN ILIPlb27 0115 101 CONTINUE ILlPlb2d C PARTIAL SOLUTIONS ILIP1529 0116 PRINT 23, NCT4 ILIP1530 0117 23 FORMAT ( ////// 1 X . • P ART I AL SOLUTION AT '.I6.' ITERATION :•» ILIP15JI 0118 J«JX-1 ILIP1512 0119 PRINT 24. (XIII, 1=1. Jl 1LIP15JJ 0120 24 FORMAT < I OX . • X < / ( 1 OX . 20 I b ) ) ILIP1S34 0121 PRINT 25. I XS( I ) .1=1 . J) ILIPlb.15 0122 25 FORMAT ( 1 OX . • xS* / ( 1 OX .20 I 5 ) ) ILIP1536 0123 PRINT 14. NCT6 ILIP1537 0124 PRINT |6, NUNOLX ILIP1538 0125 PRINT 200.NCT7 ILIPI539 0126 RETURN ILIP1540 0127 END ILIP1541 101+ FORTRAN IV G LEVEL 2 1 POSOL DATE * 7607? I»j/ 14/ 5 I 0C01 0002 0003 0004 0005 0006 0007 0008 0009 0010 001 1 0012 0013 0014 0015 0016 0017 0018 0019 0020 0021 0022 0023 0024 002S 0026 0027 0028 0029 0030 0C31 0032 0033 0034 0035 0036 0037 0038 0039 0040 0041 0042 0043 10 IS 16 18 20 SUBROUTINE POSOL PRINT OUT OTHER OPTIMAL SOLUTIONS IN SLCF IF KORt THAN ONE OPTIMAL FEASIBLE SOLUTION IS WANTED IMPLICIT INTEGtR»2< A-T. V-i) . HULIlll INTEGER* A NCT3.NCT4t NCT5.NCT6.NGETVStNNEWX.NUNOLX.NF I XJ,£rtAR INTEG£R»4 NCX.NCX1.VS.NS.PS COMMON COL ( 10 003) .»WCF( 1 000 ) .ROM ( 1 C COO I iCLCM 100031 . * RWPT! lOCO) .RWLTI1000 J .PSI1000|.NS!1030).YS!103 0|. * CIPT! *3 0> . CLLTC 40 C ) .X(4 00I.S(4 00) .XHAT(403> , * OFI4C0) .CLVT( 1000 I .XSI4C0 » COMMON 7EiAR,M,N.KCT2»KS.JAD.JX,NCX,LTS.JTS. * NCT3.NCT4.NCTb.NCT6.NFI XJ , NGt T YS , NNE MX . NUNOLX COMMON SLCF 11C000 1 .SLPTI 1000 I .AVAIL1 .AVAIL .MAXNC COMMON DVSN.NCT7.P4.P5 IF (JTS .GT. 0) GO TO 15 PRINT 10. AVAIL! FORMAT!///. IX. • TCTAL NO. OF SOLUTIONS: '.141 GO TO 18 PRINT I6.AVAIL1 FORMAT!///. IX, 'TOTAL NO. OF BEST SOLUT I ONSX • . 14 ) IF IAVAIL1 .GT. 1) GO TO 20 RETURN 00 90 L=? . AVAIL! I 1*SLPT!L1 I2*SLPTIL*1 1-1 IF (AVAIL1 .EQ. LI 12-AVAIL-l 00 30 J»I . N 30 XHAT(J)=0 OO 40 J* I I. 12 40 XHATISLCFI J) ) x| PRINT 50. L 50 FORMAT!///. IX, 'OTHER SOLUTION: ».I4) Ml 55 IF l 544 II IP1545 ILI PI 540 ILIPl 547 ilipi'jM IL tP| 54 -J ILIP1550 IL1 -M VjI ILIP1552 ILIP15-)} IL IPI 554 ILIPI553 ILIPl 556 IL IP I 55 7 ILIP155H ILIPl 559 ILIP1 5t>3 ILIPI5M ILIP1562 ILIPI563 ILIPl 564 ILIP1565 IL I PI 566 ILIPI567 ILIPI563 ILIP1569 ILIP1570 ILIP157I ILIPI572 ILIP1573 ILIPl 574 1LIP1575 ILIP1576 ILIPI577 ILIP1S78 ILIP1579 1LIP1580 ILIP1SS1 ILIPIS82 ILIP1S83 ILIPl 584 IL IPI 585 1LIP1566 ILIP1887 ILIP1888 ILIP1889 ILIPI190 ILIP1891 ILIP1892 105 FORTRAN IV C LEVEL 2 1 PRfcSET DATE 76072 lt>/ 54/51 0001 0002 0C03 0004 0005 0006 0007 oooa 0009 0010 001 1 0012 001 3 0014 0015 0016 0017 0018 0019 0020 0021 0022 0023 0024 0025 0026 0027 0028 0029 0030 0031 0032 0033 SUBROUTINE PRESET PRESET INITIAL VALUE IMPLICIT INTEGER*2< A-T.V-Z) . PCAL(U) INTEGER** NCT3,NCT4,NCT5,NCT6,NCETyS .NNEWX , NUNDLX ,NF IXJ.ZBAK INTEGE«*4 NCX.NCX1.VS.NS.PS COMMON COL(IOOOO).R¥CF<10000).ROW(1COOC) .CLCFI 100 00 ) . 4 RWPTI ITCO ) .RWLT(IOOO) ,PS( 1000 I ,NS( I0OC) ,YS( 100 1) . * CLPT 14001 tCLLT(400) ,XI4 00).SI4C0) ,XHAT(400t . * OF( 400) .CLVTI 10C0) . XSI400) COMMON ZeAR.M,NtNCT2.KS. JAO. JX.NCX.LTS. JISi * NCT3.NCT4 . NCT5. NCT6 . NF I X J ,NGET VS . NNFWX . NUNOLX COMMON SLCFt 1CO0O I .SLPT( 1000 1 .AVAIL 1 .AVAIL.MAXNO COMMON 0VSNtNCT7.P4.P5.XZST COMMON RLKI 1000) .HP. EP.P6 DO 10 1*1 tM RLKII )=0 VS(I )=0 10 CONTINUE DO 13 I a 1 , N S(l)<0 X( I l»0 XS(I)=0 XHAT I I ) = 13 CONTINUE JX = 1 NCX=0 NCT3=0 NCT4=0 NCT5»0 NCT6*0 NCT7=0 NUNOLXxO JAD'O KS*I CALL GETVS LTS-0 RETURN END ILI PI 53 J IL IP1 594 ILIP159S ILIP15XS ILIP1597 ILIP1596 ILI PI 5>'» IL IP1610 ILIIH6Q1 ILlPl69)) ILIPlb46 0009 PRINT 2010 IL1P1647 0010 2010 FUWMAT ( |H0> ILIP1648 0C11 PRINT 2021 ILIPlbA? 0012 2021 FORMAT (• ROW INEOU AL I T IES • I ILIPlhiO 0013 OO 30 I* 1 .M ILIP16S1 0014 |F( RWLT(I) .EQ. 01 GOTO 30 ILIPI602 0015 KaRMPTIII ILIP1653 0016 J= RILTIIItK-l ILIP1654 0017 IFICOL!RMPT( I ||| 10.20. tO ILIP165S OOia 10 PAINT 1000. I. IRMCFIL). COLIL). L=K.J) ILIP1656 0019 1000 FORMAT! 14. 6X. '0 LE '. 81 •♦». 16.' Xt»,I3. •»' )/ ILIP1657 1 USX. fll'«*.l6. • XI 1 . 13. MM II ILIP161S 0020 GOTO 30 ILIP1659 0021 20 x = K*l ILIP1660 0022 11 ■ -MHCFIK-I) ILIPI661 0023 PRINT 1010. I. IZ, IRWCFIL). COLIL). L'K.J) ILIP1662 0024 1010 FORMAT! 14.17.* LE »• 6! »♦•« 16. • XI*. I3.M« )/ ILIP1663 1 USX* 0! •♦••16.' X<». 13. •)•( It ILIP1664 0025 30 CONTINUE ILIP1665 0026 RETURN ILIP1666 0027 END ILIP1667 107 FORTRAN IV C LEVEL 21 RVPSNS DATE = 76072 16/34/51 0001 0002 0003 0004 00C5 0C0 6 0007 3008 0009 0010 001 1 0012 0013 0014 0015 0016 0017 0018 0019 0020 0021 0022 0023 0024 002S 0026 0027 0028 0029 0030 0031 0032 0033 0034 0038 003* 0037 0038 0039 0040 0041 SUBROUTINE RVPShS I REVERSE PS NS AFTER SET A VAR FREE IMPLICIT !NTEGEM*2 . REAHU) INTEGER** NCT3.NCT4.NCT5.NCT6.NGETYS.NNEWX.NUN0LX.NF IXJ./R4U INTEGER** NCX.NCM.rS.N5.PS COMMON COL ( 10C0OI.RWCF<10O00).ROW(lC0J0).CLCF .GE. 0) GO TO 30 IF (RLKtSUBI .NE. 0) GO TO 30 RLM EP1-SUB EP*SUB RLK(SUB) «sue 30 CONTINUE RETURN ERASE X(L»*0 KS'I SO DO 80 I*BEG.ENO SUB»ROW( II IF (CLCF(II) 60.80.70 60 NS(SUB)*NS(SUB)+CLCF< I) IF (NSISUS) . GE. 0) GO TO 80 IF (RLKCSUB) .NE. 0) GO TO 80 RLK(EP)*SUB EP*SUB RLKISUBJ-SUB CO TO 80 70 PS(SUB)»PS(SUB)+CLCF< I) 80 CONTINUE RETURN END 1LIP! CM IHP16h9 ILIP1670 IL IP1671 ILIP1672 IL loi u73 ILIPI<>7« ILIPU.7 5 ILIP167t> ILIPI677 ILIP1678 ILIP1679 ILIP16JQ ILIPI till ILIP1612 ILIPI to H.I IL I»1684 ILIP16H5 ILIP1636 ILIP16B7 1LIP16HB IL1P1689 ILIP1690 ILIPI691 ILIP1692 ILIP1693 1LIP1694 ILIP1695 ILIP1696 ILIP1697 ILIPI698 ILIP1699 ILIP1700 ILIP1701 ILIPI 702 ILIPI 703 ILIP1704 ILIPI 70S ILIPI 706 ILIP1737 ILIP1708 ILIPI 709 ILIP1710 ILIP17U 1LIP1712 ILIP1713 ILIPI714 ILIPI718 ILIPI716 ILIP1717 ILIP1718 ILIPI719 ILIP1720 ILIPI72I ILIP1722 1 3AR IKTEGER*4 NCX.NCX1.YS.NS.PS CCMMCN COL (I0000)»RNCF<10 00 OltPOM (10000) ,CLCF ( 1 00 I . • RWPTI 11(01 .RWLT(IOOO) .PS< 1000). NS< 10G0) ,YS< 103 T I . • CLPTI43 0) . CLLTI400) ,X(40C).S(400I.XMAT(4C0>. • OFC4O0! .CL VT< 1000 ) .XSMOO ) COMMON ZBAR.M.N.NCT2.KS. JAO • J X , NC X .L T S . J TS . • NCT3.NCT4-NCT5.NCT6.NFIXJ,NGt T VS. NNEW X . NUNOLX INTEGER*? SU9 SUB-1 NN=N*1 DO 100 L'l.NN CLPT(L)=SUB I»0 LNTH-0 CO 60 K*l .M IFI RWLT(K) .tQ. 0) GOTO 60 MM*I*I la l»BILriK» 00 50 J*»M f I IF(COL( J»*l-L 1 50.40. 60 40 CLCF(SUB)* PMCF(J) ROM(SUB) ■ K SUB s SU6+1 LNTM = LNTH+1 GOTO 60 SO CONTINUE 60 CONTINUE 100 CLLT(L1*LNTH RETURN END- ILIPl TdS IH PI 7?4 ILIP17?5 ILIP1 726 ILIP1 727 IL IP1 7 2B ILIPl 729 ILIP1 7.J0 ILIPl 7 11 ILIPl 7J2 ILIPl 733 ILIPl 7 34 ILIPl 7 15 ILIPl 7 36 ILIPl 737 ILIPl 738 ILIPl 739 ILIPl 740 ILIPl 741 ILIPl 742 ILIPl 743 ILIP1744 ILIP1745 ILIPl 746 ILIPl 747 ILIP1743 ILIPl 749 ILIP1750 ILIP1751 ILIPl 752 ILIP1753 ILIP1754 ILIP1755 ILIPl 756 ILIPl 757 ILIPl 758 109 FORTRAN IV G LEVEL 21 ST*SOL OATE ■ 76072 16/3A/S1 0001 SUBROUTINE STRSQL ILIPI7S9 C IL I PI 760 C STORE SOLUTION ILIPI761 C ' ILIP17*? 0002 IMPLICIT INT£GER*2( A-T.V-Z) . REAL(U) ILIP1763 0003 INTEGER** NC T J . NCT4 . NCT5 . NC T6 . NGE T VS ,NNE*X . NUNDLX ,NF I X J . In A j 1LIP176* 0004 INTEGER** NCX iNC > 1 ■ VS »NS .PS ILIPI76S 0005 COMMON COL( 10000 ).R«CF( 100C0) .ROMUOOQC) .CLCFt 10000) . !LlP176o * RWPTI 1000) .RWLT(IOOO) .PS( 1000) .NS< 1000). VS< 1000 ). 111^1767 * CLPTI 400) ,CLLT( 400) ,X(400) .S<*00) .XHATMOO) . lLlPl7r>8 * OFI400) .CLVT( 1000) .XSI4C0) ILIP1709 0006 COMMON ZBAR • M ,N . NCT2 . KS . JAO. JX.NCX.LTS. JTS. ILIP17/0 * NCT 3.NCT4 .NCT5.NCT6.NF J XJ .NGE T VS . NNEHX .NUNDLX ILIPI771 0007 COMMON SLCF < I C000 I . SLPT ( 1000 I .AVAIL1 . AVAIL. MAXNO ILIPI 772 00C8 COMMON DVSN.NCT7.P4.PS ILIP1771 0009 IF (AVAIL1 .GE. MAXNO) RETURN ILIP177* 0010 AVAILI*AVA!LI ♦! 1LIP1775 0011 SLPTI AVAIL1 )= AVAIL ILIP1776 0012 JX1*JX-1 1LIP1777 0013 DO S L»1.JX| ILIP1778 0014 IF (»(LI .LE. 0) GO TO S ILIP1779 0015 SLCFI AVAIL) -XIL) ILIP1780 0016 AVAIL*AVAIL+l IL1P1781 0017 5 CONTINUE ILIP1782 0018 RETURN ILIP1783 0019 END ILIPI78* 110 FORTRAN IV G LEVEL 21 SCLPNM DATE 76072 16/34/51 0C0 I 0002 0003 000a 0005 0006 0007 0008 0009 0010 0011 0C12 001 3 001 A 0015 0016 0017 00 18 0019 0020 0021 0022 0023 0024 0025 0026 0027 0028 0029 0030 0031 0032 0033 0034 0035 0036 0037 0036 0039 0040 0041 0042 004 3 0044 SUdROUTINE SOLPNH PUNCH OUT A PARTIAL SCLUTICN AND' ITS RELATED INFORMATION IMPLICIT tNTEGER*2( A-T.V-ZI , BE AL (U I INTEGER *A NCT3.NCT4.NCT5.NCT6.NGETYS.NNE»»X.NUNDLX,NF1XJ.Z0AP. INTEGER** NCX.NCX1.YS.NS.PS COMMON COL( I0C00).R*CF( 10000) .RO*(1000C ) .CLCF(IOOOO) . * RHPTI 10 00) . R»LT( 1000) ,PS< 10001 .NS( 1000) tVS( 1000). * CLPTI400I . CLLM40C I ,«(«00 I ,S( *00 I ,»H»1 ( «00 I , * OF( 4C0) ,CLVT( 10C0) .XSI4C0) COMMON ZBAR.M.N.NCT2.KS.JA0.JX.NCX.LTS.JTS. * NCT3.NCT4 .KCT5, KCT6.NFI XJ , NGE T YS . NNE* X . NUNOLX COMMON SLCF ( 1000 ) . SLPTI 1OO0). AVAIL I . AVAIL .MAXNO CCMMON DVSN.NCT7 .P4 .P5.XZST COMMON HLKC 1000) .MP.tP.P6 DIMENSION DUMMY(AOO) PUNCH 10.NCT4 10 FORMAT ( 72X. 181 PUNCH 350. /BAP END * JX OO 110 IN - XX«XS( IN) IF (XX .GE. IF (XX ,EQ. IF (XX .FQ, DUMMY (IN) > GO TO 110 100 DUMMY (IN) * | 110 CONTINUE XS(JX)»0 DUMMY(JX) a PUNCH 120. ( XS( IN) 120 FORMAT ( 15( 14. I 1 )) 350 FORMAT (I5| PUNCH I40.NCT3 140 FORMAT! II ,7IX.'NCT3' ) IF (NCT3 .£0. 01 RETURN PUNCH 390. (XHAT(I), l=»!,NI 390 FORMAT(72II ) IF (XZST ,EQ. 1) GO TO 200 RETURN 200 PUNCH 300. AVAIL1. AVAIL 300 FORMAT! 14. 2X. 14) JK»AVAIL-1 PUNCH 21 0.< SLCF< t ) . 1-1 . JK| 210 FORMAT! 14(14. IX) I PUNCH 220. ISLPT ( I ) , I«t . AVAIL I ) 220 FORMAT! 18 14) RETURN ENO 1 .END 2000) XX*xX-2000 XI IN) ) GO TO 100 XIIN)) GO TO 130 ■■ DUMMY(IN). IN = 1. END ) IL1P1 785 ILI PI 786 ILIP1 787 ILI PI 788 IL I PI 789 1LIP1 793 ILIPl 7 »l IL IPI 792 ILIP1 793 ILIPl 79A IL I P I 795 IL IPI 796 ILIPl 797 IL IPI 798 ILIPl 7* i ILIPl BOO ILIPIB01 ILIPl 80? ILIPl 803 IL IPI 83A ILIPl 80S ILIPl 836 IL IPI 837 IL I PI 808 ILIPl 809 ILIPl 810 ILIPl 81 1 ILIP1812 ILIP1813 ILIP1814 ILIP1815 ILIPI816 ILIP1817 iLipiaia ILIPI819 IL [PI 620 ILIPI821 ILIP1822 IL IPI 823 ILIPl 824 ILIP1825 ILIPl 826 ILIPl 827 IL [PI 828 ILIP1829 ILI PI 830 ILIPl 831 IL IPI 832 ILIPI833 ILIP1834 ILIPl 835 ILIPl 816 Ill FORTRAN IV G LEVEL 2 1 SINTL DATE = 76072 lft/.34/51 0001 0002 0003 0004 COOS 0006 0007 0008 0009 0010 0011 0012 0013 0014 0015 0016 0017 0018 0019 0020 0021 0022 0023 0024 0025 0026 0027 0028 0029 0030 0031 0032 0033 0034 0038 0036 0037 0038 • 030 0040 0041 0042 004 3 0044 0040 0040 • 047 0048 • 04* •••• •••I •••a SUBROUTINE SINTL SET .UP AN INITIAL PARTIAL SOLUTION IMPLICIT !NTEGER*2( A-TtV-ZI • fiUAL(U) INTEGER** NCT3.NCT4.NCT5.NCT6.NGETYS.NNEMX.NUNDLX.NF IXJ.ZBAR INTEGER** NCX.NCX1.YS.NS.PS COMMON COL( J 0001 .RMCFI 10000) .HO* 1 1 000 ) tCLCF ( 1 0000 » . * RMPTI 1000) .RMLT(IOOO) .PS( 1000 ) ,NS( 100 ) ,YS( 100 C ) . * CLPTI400I .CLLTI400I . X (400 ) ,S( 400 I ,XHAT( 40 0) . * OF(400) .CLVTI 10C0) .XS(400) CCMMON Z6AR.M.N.NCT2.KS.JAO.JX.NCX.LTS.JTS. * NCT3.NCT* , NCT5.NCT6.NF I XJ .NGETYS, NNEWX . NUNOLX COMMON SLCF( ICOOO ) . SLPT( 1000) .AVAIL 1 .AVAIL.MAXNO DVSN.NCT7.P4.P5.XZST RLK{ 1000) .HP.EP.P6 10 20 30 I **, J) oo XX IF IF IF 185 88 70 90 92 180 95 >6T. 0) GO TO 70 COMMON COMMON Kxl J.sK+14 READ 20. (XS(I), X(I). FORMAT (15(14.11)) IF (XS(J).EO.O) GO TO 30 K = J*1 GO TO 10 90 1*1 .J * XS( I) (XX .EQ. 0) GO TO 92 (XX .GE. 2000) XX*XX-2000 (X(I) .to. 0) GO TO 185 X( I >*XX GO TO 88 X( I)»-XX CONTINUE IF (X(I > S(-X( I ))J GO TO 90 S(X( |))*l CONTINUE READ 180. NCT3 FORMAT! II ) IF (XZST .EG. II IF (NCT3 .EQ. 0) Z8AR«ZBAR-1 R»CF(RNPT(M) )*2BAR-1 CLCF(CLPT(2)-1)»ZBAR-1 JX»I IF (NCT3 .EQ. 0) GO TO 400 READ 390. (XHAT(l). I-l.N) ICO •I GO GO TO 95 TO 95 390 FORMAT (72 11 I 400 CONTINUE KS-1 JJ»«JX-l OO 110 I ■ l.JJ IF (lllll 110, 120 100 JAO ■ XIII NCX«NCX*OP( JAO) CALL GETVS 110 CONTINUE 120 CONTINUE PRINT 97 ILCP1 837 1L1P1839 iLiPia i !L|Pld96 005* H=JX-1 ILIP|«97 0C55 PAINT 8? . IXII) . 1*1.6) ILIP1698 0056 8? FORMAT (/• X'/I 20 1 5 I » ILIP|*>9 0057 PRINT 85 . IXS(I). I-I.BI ILIP1910 0058 8'> (-URMAT <• XS'/( 20151) ILIPI9')1 0059 PRINT 98 ILIPIT32 0060 98 FORMAT !//• INITIAL PARTIAL SUM :•) ILIP19T3 0061 PRINT 86. IVSI1), 1*1. M) ILIP191* 0062 86 FORMAT (• YS«/1 2015)) ILIP1905 0063 IF INCT3 .TO. 0) RETURN ILIP1906 006* IF 1XZST .EQ. II GO TO 200 1LIP1907 0065 RETURN ILIP1913 0066 200 REAO 300. AVAIL!. AVAIL ILIPI9CJ 0067 30C FORMAT! I* .2X. 14 ) ILIPI910 0068 JK=AVAIL-l IL|PI9ll 0069 REAO 210 . ( St-CF { I I • I *l ■ JKI ILIP1912 0070 210 FORMAT! 1*( I 4. IX) > ILIPI9I3 0071 REAO 220. ( SLPT( I ) . I * 1 . A V A 1 L 1 > ILIP1914 0072 220 FORMAT! 18 14) ILIPI9I5 0073 RETURN ILIP1916 0074 END ILIP1917 113 FORTRAN IV G LEVEL 21 SPRN DATE = 76072 lb/14/51 0001 0002 0003 0004 0005 0006 0007 0008 0009 0010 001 I 0012 0013 0014 0015 0016 0017 0018 0019 0020 0021 0022 0023 0024 002S 0026 0027 0026 0029 0030 0031 0032 0033 0034 0035 003* 0037 0038 0039 0040 0041 0042 0043 0044 • 04* •046 •047 •040 0049 13 30 32 35 75 16 17 SO 60 65 68 70 SUBROUTINE SPUN THE - GEOF ROUTINE FOR THE CASE OF P7*l AND XZST-.*! IMPLICIT (NTEGER«2(A-T.V-Z) • REAL(U) INTEGER** NCT3.NCT4.NCTS.NCT6 tNGE TV S iNNEHX .NUNOLX ,NF IXJ.ZBAW INTEGER** NCX.NCX1.VS.NS.PS COMMON COL ( 10 000) .RWCFC 1000 0) .ROW I 10 300 I.CLCFI 10000). * RMPTI 10C0) .RHLT(IOOO) . PS( 1000) .NS(IOCO) tTSI 1000). • CLPT(4OO).CLLT(4O0 >.X(4 00).S(4 00),XHAT(40C>. • OFI400) .CLVT( 1000) .XSI4C0 > COMMON ZBAR .M.N.NCT2.KS. JAO, JX.KCX.LTS. JTS • * NCT3.NCT4.NCT5.NCT6.NFl XJ . NGET YS . NNE«X . NUNOLX COMMON SLCF ( 1C00 0) . SLPTI 1000) .AVAIL 1 .AVAIL .MAXNO CUMMON OVSN.NCT7.P4.P5.XZST COMMON PLK ( 1 OCO ) .HP. EP.P6 CT2=NNEWX CT3*NGETVS PRINT 13 FORMAT NOTE FOLLOWING 6 CARDS HAVE A SAME SEQUENCE NO. CONTINUE IF (NFIXJ .EQ. 1) GO TO 35 IF (NFIXJ .EQ. 2) GO TO 32 CALL FIXJBI (75.650) CALL FIXJZI C75.£.50> CALL FIXJIC7S.&5C) XS( JX)*JAD KS-1 CALL CGPSNSI&60.C30) IF tNCX-ZBAR+DVSN) 65.16.60 OO 17 K»1,N IF (OF(K) .EQ. 0) GO TO 17 IF (S(K| .NE. 0) GO TO 17 XS< JX)»-X JAD»K KS"-1 CALL CGPSNS(C60.C50> CONTINUE GO TO 65 CALL NEMK NCT6-NCT6*! CALL UNOLXI t65.t9C.C50) CONTINUE IF (NCT4 .NE. CT2) GO TO 68 CT2»CT2+NNE«X CALL PINOUT IF (NCT4 .NE* CT3) GO TO 70 CT3-CT3+NGETVS CALL SOLPNH CONTINUE 80 CONTINUE I L I P I -? 1 *i ILIP19I9 ILIP192C ILIP1 521 ILIP1922 IHP1923 ILIP1924 !LlP192b !LIP19?6 ILIP1927 1LIPI920 ILIP1929 ILI P19J3 ILIPI9 )l ILIP19 J2 ILIP19J3 IL IP1 9 14 ILIP19J5 ILIPI9 56 ILIP19 37 ILIP1938 ILIPI 939 ILIP1940 ILI PI 94 1 ILIP1942 ILIP1943 IL1P1999 ILIPI944 ILIPI 944 1LIP1944 ILIP1944 ILIP1944 ILIP1944 ID P19»t> ILIP1946 ILIP1947 ILIP1948 ILIP1949 ILIP1950 ILIPI951 ILIPI9S2 ILIP19S3 ILI PI 954 ILIPI95S ILIP1956 ILIPI9B7 ILIP19S0 ILIP1969 ILIPI960 ILIPI 961 ILIP1962 ILIP1963 ILIP1964 ILIP1968 ILIP196* ILIP1967 ILIP1966 ILIP1949 ILIP1970 111+ FORTMAN IV C LEVEL 21 0050 JTS*l 0051 90 CONTINUE 0052 C RETURN 0053 1 10 CALL SPRN1 005* RETURN 0055 END SPRN DATE = 76072 lfc/34/il ILIP1971 IL |P| -if? ILIP197 I IL IPl 974 IL I PI 9 7b ILIP1 97fc IL IP 14 7 7 115 FORTRAN IV C LEVEL 21 SPRN1 DATE 76102 20/35/37 0001 0002 000 3 0004 0005 0006 0007 oooa 0009 0010 0011 0012 0013 0014 0015 0016 0017 ooia 0019 0020 0021 0022 0023 0024 0025 0026 0027 0026 0029 0030 0031 0032 0033 0034 003S 0036 0037 0036 0034 0040 0041 0042 0043 0044 0046 0046 004 7 0046 0049 30 32 35 75 16 17 SO 60 66 66 70 00 00 SUBROUTINE SPRN1 THE GEOF ROUTINE FOR THE CASE OF P7»l ANO XZST«1 IMPLICIT INTEGER*2< A-T.V-2) . REALIU) INTEGER** NCT3.NCT4 .NCT6.NCT6 .NGE T VS .NNEMX .NUNOLK ,NF 1 X J.Z8AR INTEGER** NCK.NCdl. VS.NS.PS CCMMON COL( 1 0000 I. RMCFI 10000 I «RO«f 10000) .CLCPt 1 0000 t • • RHPT< 1000) .RWLTUOOO) ,PS( 1000 ) .NS< I 000 ) . VS< 1000). • CLPTI 400I.CLLT1 400 I. X (400). SI 400) • KMATI 4001 t • OFC400) tCLVTt 1000) .XSI400) COMMON ZBAR.M.N.NCT2.KS.JA0.JX.NCX.LTS.JTS. • NCT3.NCT4.NCT5.NCT6.NFIXJtNGETVS.NNEMX.NUN0LX COMMON SLCF(10000).SLPTI 1000) .AVAIL 1 .AVAIL. MAXNC CCMMON DVSN.NCT7.P4. PS. XZST COMMON RLM 1000) .HP.EP.P6 CT2*NNEHX CT3»NGETYS DO 60 KK«1,NCT2 00 70 LK«1.S0 NCT4»NCT4M CALL EXTOXDI660.630.6SO) KOTE FOLLOWING 6 CARDS HAVE A SAME SEQUENCE NO. CONTINUE IF (NFIXJ .EO. 1 ) GO TO 38 IF INFIXJ .EO. 2) GO TO 32 CALL FIXJSIC75.6S0) CALL FIXJZI C7S.t50> CALL FIXJCt7S.(S0) XS< JX)«JAO KS*1 CALL CGPSNSI660.CS0I IF INCX-Z8AR) 66.16.60 OO 17 K-I.N IF (OFIKt .EO. 0) GO TO 17 IF o« 0005 0006 0007 oeca 0009 0010 001 1 0012 0013 0014 0015 0016 0017 0018 0019 0020 0021 0022 0023 0024 002S 0026 0027 0028 0029 0030 0031 0032 0033 0034 0035 0036 0037 0030 0039 0040 004 1 0042 0043 0044 004S 0046 004 7 0048 10 15 20 35 30 40 199 97 25 45 50 55 SUGROUTINE UNOFX J ( • . * . * I CHECK IF THERE ARE VAR J SUCH THAT A(I.Jl<0 FOR ALL I S(I)=C CHECK IF THERE ARE VAR J, SUCI- THAT A < I . J > > FOR ALL I S(l)=0 IMPLICIT INTEGEW»2< A-T.V-Z) . HEAL(U) INTEGER** NCTJ.NCT4.NCT5.NCT6.NGETVS,NNEWX.NUNr>LX,NFIXJ,ZBAU INTEGER44 NCX.NCM.VS.NS.PS CCMMCN COL(10C00),RWCF(100C0l .ROW< IOCOC).CLCF(10CO0». * RtfPTI 1000) .HWLT(IOOO) .PS(l00Ct.NS(10C0».YS(l00C). * CLPTC 400).CLLT(40GI.X(400),S(4 00).XHAT(40C). » OFC4C0) .CLVT< 1000) .XSI400 I CCMMON ZBAK.M.N,KCT2.KS.JAD,JX,NCX.LTS.JTS. * NCTJ.NCT4,NCT5,NCT6.NFIXJ.NGETYS.NNEl«X ,NUNDL< CCMMON SLCFI 1COOO|.SLPT<1000).AVAIL1.AVA IL.MAXNO COMMON OVSN.NCT7 .P4.P5. XZST CCMMON HLK( 1 OCOI tHP.EP.P6 J= JAD eEG=CLPT( J+l) END=CLLT< J*l )-l*eEG DO 10 K=BEG,ENO IF (NS(ROM(K)) .GE. 0) GO TO 10 IF (CLCF(K) .NE. 0) GC TO 15 CONTINUE GU TO 40 IF (CLCF(K)) 20. 20. 25 IF (K .GE. END) GO TU 40 L=K*1 DO 30 KK=L.ENO IF (CLCF(KK)I 3C.30.3S IF CNSCROM(KK)) .LT. 0) GO TO 100 CONTINUE KS = -1 XS(JX)s-J IF (XZST .EG. 1) GO TO 199 NUNDLX=NUNDLX*1 CALL CGPSNS(C200.C210) GO TO 110 IF lOF(J) .FQ. .AND. MAXNO .GT. AVAIL1) GO TC 97 GO TO 98 XS( JX)~J CALL CGPSNS ( G200.C210) GO TO 110 IF (K .GE. END) GO TO 55 L*K*1 00 SO KK»L.ENO IF (CLCF(KK)) 45.50.50 IF (NS(ROM(KK)I .LT. 0) GO TO 100 CONTINUE XS( JX)«JAD*20C0 KS«I too CALL CGPSNS GO TO 110 CONTINUE XS( JX)«JAO CALL CGPSNS C200. C210) 6200. £210) TRY TO SET MORE X(j|>0 £. UNDLINE IT ILIP2 3C ILIP2T31 ILIl'20 12 ILIP2C33 IL IP'O 34 ILIP2C 3b IL IP2C Jli IL IP^O 17 I li pac «* IL IP2039 ILIH2P40 IL|P20*1 ILIP2042 ILIP20* 1 ILIP2044 IL IP2C4b IL IP2C»» ILIP2047 ILIP2C4* ILIP20*') ILIP2050 ILIP2051 ILIP2052 ILIP2053 1LIP20 3 4 ILIP2C55 ILIP?056 ILIP2G67 ILIP2C58 ILIP2059 ILIP2060 ILIP2061 ILIP2062 ILIP2063 ILIP?064 ILIP2065 ILIP20O6 ILIP2067 ILIP2068 ILIP2069 ILIP2070 ILIP2071 ILIP2072 ILIP2073 ILIP2074 ILIP2075 ILIP2076 ILIP2077 ILIP2078 ILIP2079 ILIP2080 ILIP208I ILIP2082 ILIP2083 ILIP2084 ILIP208S ILIP208* ILIP2087 ILIP208* 118 FOWTRAN IV G LEVEL 21 UNDFXJ DATE = 76C72 16/34/JI 0049 110 DO 130 JJ= 1. N ILIP20rt9 0050 IF (S0 0051 dE.G = CLPT(JJ«-ll ILIP20V1 0052 END = CLLTI JJ»I I -1 ♦BEG ILIP2012 0053 DO 120 K=BEG,END ILIP'CJT 0054 IF ICLCF(K» .LE. 0) GO IU 120 ILIP??94 0055 IF (NS(RO»(K||.LT.I}| GO TO 1 JO ILIP^O^S 0056 120 CONTINUE UIP2096 0057 XS(JX»=-JJ ILIP20J7 0058 JAO=JJ ILIP2CJ8 0059 KS = -1 ILIP2099 0060 IF IXiST .EQ. 1) GO TO 299 CLIP-? 113 0061 103 NUNDLX=NUNDLX+1 ILIP2101 0062 CALL CGPSNSCC200.G210) ILIP21C2 0C63 GO TO 130 IHP210J 0064 299 IF (OF(JJ) .FQ. . AND. MAXNO .GT. AVAIL1) GO TO 104 ILIP'1?4 0C65 GO TO 103 lLIP?.I0i 0066 104 XS(JX)= JJ ILIP2106 0067 CALL CGPSNS ( &200.t210> ILIP2137 0068 130 CONTINUE ILIP2108 0069 RETURN 1 ILIP2109 0070 200 RETURN 2 ILIP2110 0071 210 RETURN 3 ILIP2111 0072 END ILIP2112 119 FORTRAN IV G LEVEL 21 L/NDLX DATE * 76072 J6/34/51 OOCl 0002 0003 0004 OOOS 0006 0007 0008 0009 0010 001 1 0012 0013 0014 0015 0016 0C1 7 0018 0019 0020 0021 C022 0023 0024 0025 0026 0027 0028 0029 0030 0031 0032 0033 0034 0035 0036 0037 003S 0039 0040 0041 0042 004 3 0044 0045 0046 0047 004 0049 0050 0051 oost SUHMOUTINE UNOLX I BACKTRACK ♦.*.*) IMPLICIT INTEGER*2(A-T,V-Z) . fit*L(U| INTEGE«»4 NCT3.NCT4.NCT5.NCT6,NGETVS.NNEWX.NUNDLX,NFIXJ,ZBAW INTEGER44 NCX.NCX1.YS.NS.PS CCMMCN COL C10000). «*CFI10000).HOWliC300).CLCF(l 00 OOli * HWPTI 10CO) .RWLTIIOOO) ,PS( 10001 .NS< 1000) .YS< 10001 . * CLPTI400I.CLLK 4CO).X(400).S(4CO).XM ATI 4001 . * OFI400) .CLVTI 1000) .XSI40C) COMMON ZBAR.M.N.NCT2.KS.JAO.JX.NCX.L1S.JTS. * NCT3.NCT4.NCT5.NCT6.NFI XJ iNGE T VS . NNEWX , NUNDLX COMMON SLCF(IOOOO) . SLPTI 1 00 0) .AVAIL! , AVAIL .MAXNO COMMON 0VSN.NCT7.P4.PS, XZST COMMON RLKI 1000 ) .HP.EP.P6 1 IF( jx.EQ.l) GO TO 12 SUB=XS( JX-1 ) IF (SUB .LT. 0) SUB*-SU8 BEG ■= CLPTC SUB*1 ) END =CLLTISUB*1 )*BEG-1 DO 3 AA=BEG,END I l=ROW( AA) IFIPSI I I ) .GE. ) GO TO 3 IF (RLK(II) .NE. 0) GO TO 3 HLK(EP)=! I EP = I I RLK( I I)=I I 3 CLNTINUE 5 L = JX-1 IFIXS(L) .GT.O) GO TO 15 S<-XS*0 XS(L)=0 IF(XIL) .LE.O) GO TO 10 JAD=X(L) KS=-1 GO TO 20 10 JAO ■ -X(L) KS = t 20 X(L)*0 CALL RVPSNS JXsJX-1 IF ( JX.GT.l ) GO TO 5 11 CONTINUE 12 JTS=0 RETURN 2 15 IF (XSIL) .GT.2C00 ) GO TO 60 XS(L)»-XS(L> IF (LTS .EG. 1) GO TO 140 130 IF (X(L) ,GT. 0) GO TO 16 JAD~-X(L) KS = 1 GO TO 17 16 JACmx(L) KS»-1 17 K(L)*-X .LT. 0) GO TO 7C ILIP217S 0057 XSILl =0 ILIM2I ?b 0058 S ILIP21*? 0064 S(KSS) = ILIP2181 0065 JAO = KSS ILIP2H4 0066 KS = l ll |P->1 ib 0067 75 X(L)=0 UIP2H6 0068 CALL RVPSNS ILIP2147 0069 JX=JX-1 ILIP2188 0070 IF (JX.GT.l) GO TO 5 ILIP21<)9 0071 GO TO I 1 ILIP21 JO 0072 100 XS(L)=2000-XS(L» ILIP2191 0073 140 PEND =L- 1 ILIP2142 0074 DO 120 K=l,PENO ILIP2I9J 0075 IF (XSIKI .LE. 2000) GO TO 120 ILIP21J4 0076 XS(fC»=XS< K1-2C0C ILIP21* l > 0077 120 CONTINUE ILIP2196 0078 GO TO 130 ILIP2157 0079 200 RETURN 3 ILIP2198 0080 ENO ILIP2199 121 PL/ I OPTIMIZING COMPILER ILLIP2: PPCCL3IJRL UP T I GNS ( MA I N ) ; STMT LEV NT SOURCE LISTING 10 It 12 13 14 IS 16 17 1 C 1 I C 1 2 2 C 2 C 2 18 3 C 19 3 20 3 C 21 3 C ILLIP2: PPQCEOUPL CPT ICNSIMAIN ) ; /• THIS PRCGRAM, PROGRAMMED cjY MING HUE I YOUNC . IS TM. PL/I Vt.KSlUN CF ILLIP teHlCh IS CRIGlNALLY PROGRAMMED H Y T. K. LIU M rORTRAN. IN THIS NEW VERSION THERE ARE SOME niFFtRENT: 1. NFW OPTICN TC EXHALST ALL SOLUTIONS HAS dEfcN AuDED. 2. PACT OF THE ORIGINAL PROGRAM HAS UEfcN 3 IMPL IF [FO, 3. TFE INPUT HAS OLCN CHANGED INTO STREAM FQrfM, a. DYNAMIC STORAGE ALLOCATION FOR AR*AY VARlAdLES. 5. NF * OPTICN TC FIND TFF. SUtlOPTlMAL SOLUTION IS iMPLtMFNTLw, DECLARF. PNCH FILt LUTPUT STREAM; DECLARE (Nl . N2. N 3. N4 . N5 /♦ ARRAY LENCTF QF CLFL . H V»F L . WU • . COL */ /* ARRAY LENGTH OF PS, NS. YS, RuPT.RWLT */ S. X, XS, XHAT .CLRT.CLLT /* ARRAY LENGTH OF /• ARRAY LENTH JF SLFL */ /* ARRAY LENGTH OF SLPT */ ) F IXEOI 5 ) ; GET LIST ( M ,N2 , N3 N4, ) IC. IL>, etG in ; /* DECLARE GLOEAL VARIAHLF.S »/ DECLARE (PSIN2) .NSIN2) ,YS(N2 > ) FIXED(B); DECLARE (CLCF(Nl), CLL(Nl). R G » ( N 1 ) . R »C F ( N 1 I . CLPT(N3) .CLL1(KJ),/M|N, RWPT(N2),RWLTCN2),GFIN3).X. CLVTI N2 ).JX,M. N, TYPE, NCONT , MCUNT. NUVAR, IE. K. J. NUEG. NENO. SUfc. II. LNTH, IZ. LI FIXEC<4>; DECLAREIZBAR. NCT2.NCT3.NCT4,NCT5.NCT6.NCX,NGETYS. NNExX .NUNDLX , I ,LL ) FIXED (Hi; DECLARE ISC N3I.CLSPI N2 ) . K S . JT S , LTS , NF I X J . R E TN_ I NO I FIXED ( I ) ; DECLARE SOL C H Afi AC T ER ( I J . TITLE1 C hAR ACT ER ( 3 J , TITLE2 CHAR AC TE R < 7 T I I DECLARE ( JK . OK2. ERR> fct I T ( 1 ) ; CECLARE XZST FIXECI4). XZCRST blllll.Mxi FIXED 14); DECLARE AVAIL FIXECI4). AVAIL I FIXED! 4 ) ; DECLARE (SLFLCN4). /» SPACE FOR STORING SOLUTION */ SLPTIN5) /• 8ECIN POINTER OF fcACH SOLUTION ♦/ I FIXECI4) ; DECLARE! JAD. CM) FlxED(a); CECLARE lNCT7.P4.Pb.P6.DVSN) FIXEDI4); cgpsns: procedure; /♦ augment jad_th var . if k s= 1 set it to be i if ks=-i then set it to c */ declare inseg, nend) f1xedc4); DECLARE (I.KI FlxED<4>; NBEG=CLPT( JAD*l ) ; NENO = CLLT< JAO*l)-l«-NHEG; ilm •* 5 : -i ILMP.? "0? ILMPuO ".1 ILMP,' *4 iLMPJC Co 1L.MP' <" ?6 ILMrJI. J7 1 1_ M P ? ** f I LMr>5: 'T ILMP30 i : iLMPOr i i iLMp-;ri2 ILHPCf 1 3 ILMP/I 14 ILMI-»"C IS ILMPIC lt> ILMPOC I 7 I L M O ■>, » J b IL.MH-V 1" I L M P J 2 - ILMP'OO?! Ii_MP0J2? ILMP3C2 i ILMP3C24 ILMPD'.25 ILMPOT 2to ILMP*5027 ILMPJC 28 ILMPOC 29 ILMPOO JC ILMP0C31 ILMP0C32 ILMPOC 33 ILMP0C34 ILMP0C35 ILMPOC 36 ILMPOC 37 ILMPOC 3H ILMP0C39 ILMPOC 4C ILMP0041 ILMP0042 ILMP0043 ILMP0044 ILMP0045 ILMP0O46 LMP0C47 LMP0048 LMP0C49 LMPOOSO LMP005I LMpr>C52 122 PL/I OPTIMIZING COMPILER !LLlP2: PROCEDURE OPT I ONS ( M A I N ) ; STMT LEV ^T 2.Z 2! 3 1 2A 3 I 25 3 1 26 3 1 27 3 1 28 3 1 29 3 2 JO 3 2 31 3 3 32 3 i 33 3 4 3* 3 5 35 3 c 36 37 3 S 38 3 « 39 3 A AC 3 4 Al 3 3 A2 3 3 A3 3 2 AA 3 3 AS 3 3 A6 3 3 A7 3 2 A8 3 1 A9 3 2 50 3 2 51 3 2 52 3 1 53 3 t 5A 3 I 55 56 3 1 57 3 1 58 3 I 59 3 1 60 3 2 61 3 2 62 3 3 63 3 3 6A 3 3 65 3 2 66 3 3 67 3 3 6a 3 A 69 3 5 70 3 ■ IF DO KS>0 THEN /♦ X( JAC > = I */ CALL GEIrf i KCX=NCX»HF ( JAU) ; «( j»i-j*n; S( jaoj- t ; j k - j x + l ; IF NtND>= NBEG THEN DC I=M3fcG TO NENC; SU8=BClll I ) ; IF CLCFdXO iHfN co; P_,< SUB >=PS(SUBI + CLCM I > ; IF PS (SMC I <0 THEN CO*. IF I -.= MKC 1MEN 00 K-I*l ro NENCi suu=wu*< k ) ; if clcf(k| < then ps( suh) =psi suh » *cl cf ( k ) ; if clcf(k)>0 then nsisuu)=ns(sub»+clcf >0 then oo; NS(steu=NS!SLe>*CLCF(i); if ns(sub)>=c then clsp(slb)=0; end; enc ; IF JX>N ThEN DC ; RET.N_|ND = 2 ; RETURN ; end; HETN_IND=0; return; ekdi /• end of ks>0 »/ else if ks=- jac ; s< jao = -i ; jx=jx+i ; if nend>=nseg then do i=nbeg to nend; SUB"RC«( I ) ; if clcfi i xo then do; NS(SUb)=NS(SUB)-CLCF (II ; if ns(sub) >=0 then clsp(suo)=0; end; if clcfii) > then do; PSe J=PS(SUB)-CLCF! I J ; IF PSISUBXO THtN CO I IF I -.= NENC THEN DO K=l*l TO NENO! sue=ro*'. Il.M.JO' *n I L MP" Oh" IlM^-<-61 iLM»-or •> i I LMH DC j4 ILMP OCfc^ ILMP^r j(. ILMPCC67 iLMPOC^d ILM->CC63 !LMP£K 7C ILMPCC 7 1 ILMJ3C 72 ILMr>OC 7 < ILMP5C 74 ILMPDC 7b ILMPJG76 ILMPOC 77 ILMP0078 ILMPT? 79 ILMPOi^dC ILM^OCe 1 ILMPC 02 ILMP00S3 ILMPOC St ILMP0Cd5 ILMPJOeb ILMP0067 ILMP0C86 ILMP0089 ILMP0090 ILMP0C91 ILMP0C92 ILMP0093 ILMPO^A ILMP0095 ILMP0096 ILMP0097 ILMP0098 ILMP0099 ILMP01 OP ILMPC 1 01 LMP01 32 LMP01 03 LMP010A LMP0105 LMP01 06 LMP01 37 123 PL/I OPTIMISING COMPILER 1LLIP2: PRCCF.DUSE UPT IONS(MA I N ) ; STMT LEV NT 71 72 73 74 75 76 77 78 79 eo 81 82 83 64 65 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 IIS 3 £ 3 4 3 4 3 4 3 3 2 3 C 3 3 I 3 1 3 1 3 I 3 C 3 1 3 I 3 1 3 2 3 2 3 1 3 I 3 ns( sue1 >=ns(sub)-clcf(k) ; ip clcf(k»j»0 thf.n ps< sub>=ps< sub) -clcp (k) ; end; RETN_INC=i; return; IF NSISUBXO CLSPI SUB»=1 ; THEN DC f no; ELSE end; end ; IF JX>N Tt-EN RETN_ IND- HETUHN ; end; RETN_lNO=C ; RETUHN ; END ; ENC CGPSNS; check_m_n: procedure; declare ll fixe0(4); |F M-.= MCCNT ThEN CO; PUT SKIP(3) EC1TI •CHECK NO. UF INEQUALITIES THE PROGRAM ASSUME IT IS '.MCONT1 (AIS1 1 .FI2) ) ; put skip; m=mccnt; end; if n-.=nccnt then dc; put skipi3) eoiti •check nc. of vapiable tfe program assume it is • .ncont) (AC 47) ,F( 2)) i put skip; if nm then 1=1 ; end; lo: if clsp(ii-.*o then do; clspi i »=o; c_sa= , o«B; «/ ILHP.* 1 C'l ILMo; \ )9 ILMP31 1C ILMP 3 111 ILMPO I \d ILWPM1J iLMPOl t<» IlMPOI lt> Ilmpc l it, ILM.'Ol 1 7 ILM^C 1 1^ ILMP01 n ILMPO 1 2! Ilmm; i n ILMP"> 12? ILMPO 12 1 ILMPO I £<* ILMP1I ?b ILMPC 1 26 luMPOl 27 ILMP01 2" ILK.PO 1 2-J ILMPC 1 ir ILM.'Cl 31 iLMPul 32 ILMPC 1 1J ILMPO) 34 ILMP01 3b ILMP01 36 ILMP01 17 ILMP01 "Id ILMP11 39 ILMP014C ILMP01 41 ILMP0I42 ILMP0143 ILMP0144 ILMP01 45 ILMP0146 ILMPJ147 ILMP01 48 ILMP0149 ILMP0150 ILMPO 151 ILMP0152 ILMPO 1 53 ILMP0154 ILMP0155 ILMP01S6 ILMP0157 ILMP0158 ILMP0159 ILMP0160 ILMP0161 ILMPO 162 12k PL/I OPTIMIZING COMPILED 1LLIP2: PROCEDURE OPT IONMMA IN I ; STMT LEV NT 1 16 3 1 1 17 3 1 1 18 3 1 119 3 1 120 3 1 121 3 2 122 3 2 12J 3 £ 124 3 1 125 3 2 126 J t 127 3 1 128 3 4 129 3 5 1 JO 3 c 131 3 ■ 132 3 5 133 3 5 134 3 c 135 3 6 I Jo 3 6 137 3 e 138 3 5 139 3 5 140 3 4 141 3 c 142 3 c 143 3 5 J 44 3 5 145 3 c 146 3 K 147 3 6 148 3 e 149 3 t 150 3 5 151 3 ■ 152 3 4 153 3 3 154 3 2 195 3 3 156 3 3 157 3 3 158 3 2 159 3 2 160 3 2 161 3 1 LC 162 3 2 163 3 2 LE 164 3 3 165 3 3 NBEO = t-*PT ( I ) ; NEND = Nl3£G«KfcLT( I )-l i IF CCL ( NCfc G )-=0 THEN NbLo=M3E( J * t ; r-i j s< i ) ; if «0 THEN oc; xs< jx) = -sud; ks- i ; jao=slu ; nundlx=nundlx* 1 ; CALL cgpsns; IF PETN_IND ->- THEN co; IF WETN_IND=2 THEN PETN_lND=3i return; Enc; c_s*= • i 'b; end; end ; end; if ncx0 then do; IF CLVT(1)=0 THEN GC TO LP2 ; IF CLVTI I )>0 THEN OU : K = CLVT< I I ; SUb=COL(K ) ; ILMPOl 6J ILW'C loA ILMPO 1»S I LMi'O I h* lt j V)lo? I LMPC 1 O-l Ilmp} 1 rr ILM"11 71 ILMJO 1 7c' ILW' 1 " 1 7 ' I I M^> ) 1 7c, ILMPOl 7 j |(_M JO | /(, ILMP11 77 ILM.'v, I 7h Il.MP" I 7) ILMJJlnl ILMP"> 1 3? ILMH- | ^,.< ILN-P^ 1 14 ILf'r') I Hb Ilm.';i rt6 ILM'O 1 37 ILMPClrJ.i ILMPO I fc9 ilmpc igr ILMPOl 91 ILMPO I 92 ILMPO 193 I L"? ., 1 94 ILMP J195 ilmp: i9t> ILMPOl 97 ILMPO 198 ILMP0199 ILMP023C ILMP020 1 ILMP0202 ILMP02DT ILMP0204 ILMPC235 ILMP0206 ILMPC207 ILMP0208 ILMP0209 1LMP021C ILMP021 1 ILMP02 12 ILMP0213 ILMP0214 ILMP0215 ILMP0216 ILMPO? 17 125 PL/1 OPTIMIZING COMPILER ILL1P2: PROCEDURE opt ionsima in » ; STMT LEV NT 166 3 3 | 167 3 3 | 168 3 4 | 169 3 4 | 170 3 c 171 3 5 I 172 3 « | 173 3 4 | 17* 3 4 | 175 3 4 | 176 3 4 | 177 3 4 | 178 3 4 | 179 3 c | 180 3 5 | 181 3 c | 182 3 4 J 183 3 4 j 184 3 3 | 185 3 4 | 186 3 4 | 187 3 4 | 188 3 4 | 189 3 4 | 190 3 4 | 191 3 5 1 192 3 S 1 193 3 9 1 194 3 4 j 195 3 4 j 196 3 3 j 197 3 2 1 198 3 1 199 3 3 | 200 3 4 | 201 3 5 | 202 3 * 1 203 3 * 1 204 3 6 1 208 3 8 1 206 3 5 1 207 3 8 1 200 3 8 1 209 3 « 1 210 3 8 I 211 3 c 1 LA end; IF CL CO K = IF S(SU8)-.= C THEN GO TlJ LP2; IF RMCF(K)>R THEN OU ; NCXl=NCX*OF(SUBi; if ncx 1 >zhar| (ncx1 =/8*h c -.xzursti thfcn do ; retn_ino=i ; RETURN; enc ; /♦ SET SUB_TH VAR 1 UNDERLINE IT. CHANGfc POSITIVE fc NEGATIVE SUM */ JAC=SUbi xsc jx) = -sub; ks«i ; NUNOLX=NUNDLX ♦ 1 ; CALL CGPSNSS IF RETN_lNO-.= THEN D(J ; if retn_inc=? then getn_in0=3; return; enc; c_s«=' i • e; end ; if -rwcfik) >r thfn do; /♦ sub_th vah must set */ XS( JX)=-SU<3; jac=sub; ks=-i ; NUNDLX = NUNDLX* l ; call copsns; if setn_ind -. = then do; if retn_in0=2 tken petn_!n0=3; HE turn; END ; c_s»=' i • b; end; vti i ><0 then nbeg to nend; sub.-ccuKi ; IF SI SUB)=0 THEN 00; IF R*CF(tO>R THEN DO; IF NCX*OFISUB)>Zr!AR | « NCX4-0FI SUB)=ZdAR {, -.XZOHST) THEN DO; RETN_IND=1 ; return; end ; • set sub_th var 1 underline it CHANGE FS fc NS •/ jad=sub; ' xsi jx)=-sue; ks= t; nuncl x=nuncl x ♦ 1 ', call cgpsns; if retn_!no-.= then do; if retn_inc=2 then retn_ind=3; ILMP">? 13 lLM'02J32R THEN DU ; /• SLH_TH VAR MUST SET •/ xs< jx»*-sub; JAOaSUUl ks=-i ; NUNCLX=NUNCLX* 1 ; CALL CGPSNS; IF ReTN_lNC -t»G THEN 00 ; IF RETN_lND = 2 Tt-LN RETN_IN0=J RETURN ; end; c_s»= m *b: end; end; end bNO; IF C_SW THEN GO TO LPli else gc tc lf2; ENO ELS E do; RETN_IN0=2 : return; end; eno extdx; fixj:procedure ; /• augment scheme i */ declare 0 then co; KSVAL3NS(RCH(KI i+clcfiri ; IF NSVAL<0 THEN SUM=SUM*ClCF (K| i ELSE NBR*NEH*i; end; end; if ct:? 7 7 I iLMWOi 78 I ILMPD279 | ILMP")?^ I ILMP'02eb | ILMIJ02SO | lLMP02*7 | ILMPOC-JH | ILMP02>j* | ILMr>02 ; STMT LEV NT 262 263 264 265 266 267 268 269 2 70 271 272 273 2 7* 275 2 76 277 2 78 279 280 281 282 283 284 285 286 287 288 290 291 292 293 294 295 296 297 298 299 3 4 3 4 3 4 3 4 3 3 3 4 3 4 3 4 3 3 3 J 3 2 3 I 3 3 3 3 3 3 3 3 3 3 3 3 2 3 2 3 2 3 3 3 3 300 3 4 301 3 4 302 3 3 303 3 3 304 3 2 SOS 3 3 306 3 3 307 3 3 308 3 2 309 3 I CT=Ndfi; jao=l ; kTsSun; lnd ; IF (CT = NBH i. (IT&(*t=sum > t c of ( jao»>of(li ) tmln jad=l( end; END ; end; if jad=0 then do; RETN_IN0-"2 ; return; end; ks=i ; retn_ ino= i ; return; end Fixj; fixjb: proce /» AUGMENT CECLARE (M OECLARE (M DECLARE K OECLARE (N JAO=0 MAX=-99 00 K*l L*N NSU IF /• dure; SCHEME 3 •/ AX.NSUM) FIXED (6) ; IN.KK. I ) FIXED (4) ; FIXEDI4 >; beg. nend) fixed(4>; min=o; ■I ; 999 ; to n; -K*l I m=o; scl)*o ThEN oo; CALCULATE NSLM »/ NBEG=CLPT(L* 1 ) ; NEN0=NBEG«CLLT*0 ThEN NSUM*NSUN+YS< I I -f 24CLCF ( K X ) ; ELSE NSUM»NSUMtCLCF(KKI i eno; else if vsi1k0 then nsum=nsum-vs ( i ) ; eno; IF MAXnsum; JAD*L ; end; eno; end; lLMP132f ILMP1J29 ILMP03 50 ILMP33 3l ILMPO 332 ILMP0JJ1 IL.MP03 34 ILMP0335 ILMDCJ36 ILMP0337 ILMP03 3B ILMPC3 39 ILMP034C ILMPD34 1 ILMPO 34? ILMP034 1 ILMPO 34* ILMP034& ILMP0346 ILMP0347 ILMPJ346 ILMP3349 ILMP035V, ILMP0351 ILMP3352 ILMP03-J3 ILMP03S4 ILMP0355 ILMP0366 ILMP0J57 ILMP0356 ILMP0359 ILMP016C ILMP0J6I (LMP0J62 ILMP0.163 ILMP0364 ILMP0365 ILMP0366 ILMP0367 ILMP0368 ILMP0369 ILMP037C ILMP0371 ILMP0372 ILMP0373 ILMP0374 ILMP0375 ILMP0376 ILMP0377 ILMP0378 ILMP0379 ILMP03S0 ILMP0381 ILMP0382 128 PL/I OPTIMIZING COMPILER ILLIP2: PHCCEDURE OPT IONS (MA I N > STMT LEV NT 310 3 | IF JAD*0 THEN CC; 311 3 1 RETN_ IN0=2 ; 312 3 1 RETURN ; 313 3 1 end ; 314 3 1 KS-li 315 3 RETN_lNO=l ; 316 3 return; 317 3 enc fixjb; 318 319 3 320 3 c 321 3 322 3 c 323 3 c 325 3 326 3 1 327 3 1 328 3 2 329 3 2 330 3 2 331 3 3 332 3 3 333 3 3 335 3 3 336 3 4 337 3 5 338 3 6 339 3 6 340 3 6 341 3 t 342 3 S 343 3 6 344 3 6 345 3 6 346 3 6 34 7 3 5 346 3 4 349 3 3 3S0 3 2 351 3 3 362 3 3 363 3 3 364 3 3 366 3 2 366 3 2 367 3 3 386 3 3 369 3 3 360 3 3 361 3 3 Fix jz : proceoure; /• AUGMENT SCHEME 2 »/ CECLARE (MT .NSUM.SUM.NSVAL I FIxE0(8>; declare ! declare cnbeg. nendi fixeu(4|; jac=o; »T=-99999; CT=-99991 do 1=1 to n; l*n-i*i ; IF S(L)=0 ThEN DO; NBEG=CLPTIL*l > ; NEND=NBEG*CLLT(L*1 )-l : IF NENO > NBEG THEN cc; slmxO; nsum=o; nur*o; nnbr=o ; cc k=n8eg to neno; if k5(mc»(»)k0 then do! if clcfik.ko then cc; nsval=ns(row( k) |-clcf(k» ; if nsval<0 then nsum=nsum-cl cf < k ) ; else nnbr=nn8k+] i end; if clcf(k) > then co; nsval"nsNtiR) | ( SUM) I THEN do; S1GN*-1 ; nbr*nn6r; sun*nsum; end; else sign* i i if ct t («Tsum; JAOsL! ks~sign; eno; end; end; IF JAO*0 THEN OCt retn_ino=2 ; return; eno; retn_ind= i ; return; eno fixjz; gecf: procedure; /* implicit enumlration */ oeclare (ct2.ct3.kk ,lk)fixed(4> ; /• initial cclnter •/ ct2*nnewx; ct3*ngetvs; jts«-i ; 00 KKi| TO NCT2; 00 LK=l TO so; NCT4*NCT4*l ; CALL EXTDX; IF RETN_IND»1 ThEN GO TO BACKTRACK; IF RETN_lNDsO| RETN_INC=3 THEN GC TO CHK_SQL IF NFIXJxl THEN CO; CALL FIXj; if retn_inc=2 then go to chk_sol ; end; else if nfixj'2 then cc; CALL fixjz: if retn_lnc*2 then go to chk_sol; end; else if nfixj*3 then do; call fixjb; if retn_in0*2 then go to chk_sol; end; call unofxj; if retn.ind32 then go to backtrack; if retn_ind*0 | retn_ino=| then go to cont ; chk_sol: call nemx; backtrack: NCT6-NCT6+1 I call undlx; ip retn_ind»3 then go to chk_sol ; if retn_ind*2 then go to done i ccnt: if ct2»ncta then do; ct2*ct2*nne»m call pinout; eno; if ct1-nct4 then 001 ct3»ct3*ngetvsi CALL solpnh; | ILMPC4 16 | ILMP04 ~i* | ll_*P0440 | ILMP0441 | ILMP0442 | ILMP0443 I ILMP0444 I ILMP0445 j ILMP044& | ILMr>0447 | II.MP0448 | ILMP0449 I ILMP J4aO | ILMP14 al | ILMPC452 j ILMP045? 1 ILMP3454 j |LMP04 6b | ILMP04b6 | 1LMP0437 j ILMP04bfa j ILMP04S9 j IUMP046C | ILMP0461 | ILMPJ462 | ILMP0463 j ILMP T4o* | ILMP04&5 j ILMP0466 | ILMP0467 I lLHP046t3 j ILMP0469 | ILMP047C | ILMP0471 j ILMP0472 j ILMP0473 | ILMP0474 I ILMP04 75 j ILMP0476 | ILMP0477 j ILMP0478 j ILMP0479 I ILMP0480 | ILMP048I j ILMP0482 | ILMP0483 | ILMP0484 | ILMP0485 I ILMP04 86 j ILMP04 87 t ILMP04 88 I ILMP0489 j ILMP0490 | ILMP049I | ILMP0492 130 PL/I OPTIMIZING COMPILER ILLIP2: PROCEDURE OPT IUNSIM* I Nl ; STMT LEV NT 4 14 3 1 415 3 2 4 16 3 1 417 3 418 3 c 419 3 c 420 3 c 421 422 3 C 423 3 c 424 3 c 425 3 c 4 26 3 427 3 I 428 3 1 429 3 I 430 3 c 431 3 c 432 433 3 C 4 34 3 C 435 3 c 4 36 3 1 4 38 3 I 4 40 3 1 441 3 1 442 3 1 443 3 2 444 3 3 44S 3 3 446 3 T 447 J 2 448 3 1 449 3 1 460 3 C 461 462 3 463 3 C 464 3 c 456 3 c 466 487 3 468 3 c 469 3 460 3 c end; end; end; /• end kk lf •/ JTS=i; /» EXfcEUED ITERATION LIMIT */ ccne : call pincut; RETURN ; END gelf; JAD */ ro ncfeno; getvs: procedure; /• CCMPuT NEW VSIl) AFTER AOJLINT DECLARE (NCF.NCFfcNDl FIXL0I4); DECLARE (I. J) F1XEDC4); NCF=CLPT< JAD*l ) ; NCFENO-NCF»CLLT(JAD*l )-l ; IF NCFENC>=NCF TFtN CC I^NCF J = RGU( I I ; ys(j)=vs«j»*clcf(i)4ks; end; retliRn; end getys; gtpsns: phocldure; /* get positive & nagative sum of each ro* */ OECLARE (IiK) FIXECI4); DECLARE (Ni3EC-t NENO) FIXEl)(4>; DC 1=1 TC M; clspC THEN PS( I ) = PS( I ) *R«CF ( K t ; IF RWCF(K)<0 Tt-EN NS( I l = NS( I )*R*CFIK) ; end; end; IF NSilKC THEN CLSP|(| = li end; end gtpsns; nemscl: procedure; /• clear s0llticn buffer and store new solution */ AVAIL i=o ; AVAIL* I ; call stcrsol; end newsol; NEHXJ procedure; /• compare zbar and objective fun to find a neh solution •/ OECLARE IDETA.K. Lt J) Flxt0(4); oeclare sub fixed! 4)*. if ncx = zear 6 x20rst c nct3 = i then call storsol, - if ncxC<»9S ILMPJ4 -it, Ii_mp14<;m I L. MP 4 y V ILMPObC* ILMPO'jII ILMP0bC2 ILMPCbC < II MP35~4 ILMPCb lb ILMPOb^f ILMPCJ17 ILMP05"1 ILMPOtC-j ILMP&bl ILMPOSI l lL"P"'->U ilmp:^ i i ILMPCbl* iLMPOSlb ILMPOblb ILMP351 7 ILMP051H ILMr»05l 3 ILMP05 2C [LMP0&2I lLMP0b2? ILMP05 2 1 ILMPCb24 !LMP0b2b ILMP0S26 ILMPC527 ILMP0b2d ILMP0S2Q ILMP3510 ILMPOS Jl !LMP0bJ2 I L MP Ob J. T ILMP0534 ILMP053b ILMP0536 ILMP0537 ILMPD533 ILMP0539 ILMP0540 ILMP0541 ILMP0542 ILMP0543 ILMP054A ILMP0545 ILMP054b ILMP0547 131 PL/l OPTIMIZING COMPILER ILLIP2: PROCEDURE OP1 ICNSIMA IN I ; STMT LEV NT 46 1 3 1 | 462 J 1 | 463 3 1 I 464 3 1 | 46S 3 1 | 466 3 1 | 467 3 1 1 468 J 1 | 469 3 1 1 4 70 3 1 j 471 3 1 | 472 3 1 1 473 3 1 | 474 3 1 j 4 75 3 1 j 476 3 2 1 477 3 2 1 478 3 1 | 479 3 2 1 480 3 3 1 481 3 2 | 482 3 3 i 483 3 2 1 484 3 1 j 4 as 3 1 4 86 3 c 1 487 3 I 488 3 c 1 489 3 C | 490 2 1 491 3 1 492 3 c i 493 3 1 494 3 1 1 49S 3 1 1 496 3 1 497 3 1 1 498 3 1 1 499 3 1 1 500 3 o I 801 3 o 1 502 3 c j 603 3 1 804 3 I SOS 3 C 1 806 3 o 1 807 3 1 806 3 o I 809 3 o 1 810 3 c 1 IF UKRSr THEN CALL NEWSOLI NCT5=NCT«; NCT3=1 : zbar=nc x; IF XZCHST TMcN DE T A = Z6 A R-RtoCF ( RHP T ( M ) ) I LLSE DETA=ZdAR - RW CF ( R*PT (M ) J -OVSN ; PbiM) =ps( m) ♦octa; N5>0 then oc ; j=xil ) ; XHATI J > = 1 J end; end; end; LTS=i; /• FEASIBLE •/ NCT7=NCT7»1 I if p4=l t nct7>=p5 c nct7<=p6 then call pfsh return; end ne*x; pfsl: procedure; DECLARE FSLIN31 FIXED0 THEN FSL(XX»=l; end; put edit! 'the '.nctt.'tm feasible solution found:' 1 (SKIP(2).A(4).F(6t»A(27i); K*l| nextline: Kl*K+24; IF Kl>N THEN K1=N; PUT SKIP EDITI'VAhI. NO.«t(I DO 1=1 TO Kll)(A(d).25 F<4)| PUT SKIP EDITI'VALUE «,(FSL(I) DC 1=1 TO K|)I(A(8). 25 F(4)» ; IF Kl>*N THEN GC TO PZtRi KiKifi ; GO to nextline; P2ER put skip eoiti «2aAR; return; • .2BAR) ( A (5) ,F (6 1 ) ILMPObOd lLMPOb*T ILMPO^bT !LKP0b51 iLMJflb^ I L MP lb 5^ ILMP0S5S lLMP0b5o lLM u 05 r >7 lLMP?bb» ILM^3b = 0bh9 ILMP0°>7C ILMP0571 ILMPOS72 ILM ;'0b73 ILMP0574 ILMP00 75 ILMPC576 ILMPOf> 77 lLMP057t) ILMP057? ILMP0580 ILMPC591 ILMP05H2 1LMP0583 ILMP0684 ILMP0585 ILMP0586 ILMP06d7 ILMPObdH iLMPOSd'i ILMP059C ILMP0591 ILMP0592 ILMP0593 ILMP0594 ILMP0595 ILMP0596 ILMP0597 ILMP0598 ILMP0599 ILMP0600 ILMP06C1 ILMP0602 132 PL/I OPTIMIZING COMPILER 1LLIP2: PROCEDURE OPT I CNS (MA IN I t STMT LEV NT Sit 512 513 514 SIS 524 525 526 527 543 844 548 516 3 1 517 3 1 518 3 t 519 3 1 520 3 1 521 3 1 522 3 1 52J 3 1 528 3 1 529 3 1 5 30 3 1 531 3 2 9 32 3 2 933 3 2 S34 3 2 535 3 2 838 3 2 537 3 2 838 3 2 839 3 3 840 3 3 841 3 3 84a 3 2 3 2 3 2 end; PINOUT DECLARE IF PkucecuRE ; ( I . J.K) F IXED(4) I JTS<0 THEN oo; /* PRINT PARTIAL SOLUTICN */ PUT SKIPtb) EDIT!' PARTIAL SOLUTION AT'.NCTA. • ITERATIONS:*) < A I 29 ) ,F ( 7 I . A I I 2 ) I I j = Jx-i ; POT SKIP(2| LIST! ' X' ) ; PUT EDIT (IX (I) 00 1=1 TO J ) I (SKIP. X (10). 23 F (S))i PUT SKIP L IST( • XS' ) I PUT EDIT (0 then /* EXCFEC put page; put skipo) list! • the nc. of iterations specified is exceeded*); if nct3=1 then do i put skipi2) listi • the best feasible soluticn found so far:') PUT SKIP; K*0i PT: PUT SKIP LIST!' PUT SKIP ECIT (((K*l) II K*2Slt( IK)I|<=N|| )) (X llCIt 25 F (41)1 PUT SKIP LISTO VALUE'); PUT ECIT ( ILMPOb 1") ILMPObl 1 1LMPD6 IP. ILMPObl i ILMPObl* ILMPJb 15 ILMPOblb ILMP0617 iLMPOblb ILMP0M9 ILMP0O2C !LMP0b21 ILMPOt.?? ILMP0623 ILMP0624 ILMP0625 ILMP06?b ILMP0627 ILMP062A ILMP0629 ILMP&6 JO ILMP ) ; |ILMP06«>9 PUT SK|P<3) EDIT! | ILMPOfcht • NC. OF BACKTRACKS- ---------- -», |ILMP?b61 NCT6) (Af SO «F{6)1 ! | IL «PCof>2 PUT SK(P(3) LIST!* NO. OF UNDERL I NED • 1 ; jlLMP0t6J PUT SKIP ECIT < j ILMP0t>fi4 • VARIABLES AODED- ------_-----•, j li_MP0b65 NUNDLX) l*(b0liF(6||; jlLMPObbb PUT SKIPO) ECITI | ILMP06C7 •NU. CF FEASIBLE SCLUTIONS FOUND- - - - -*,NCT7) |ILMP0f60 (X( 10 I tA(40) .FI6) t ; jlLMt'"-!^ PUT SKIPI3) EC IT! 'PARTIAL SOLUTICN AT »,NCT4, |ILMP0(,7? • ITERATIONS:*) < x ( 10 ) . A( 20) .r ( 6 ) . A( 1 2 ) ) ; |lLMP0b7l J=JX-1 ; j ILMPC67? PUT SK1PI2) LIST!' X'); |lLMP0b73 PUT ECIT ((X(I) DO 1 = 1 TO J » >( SK IP . X( 1 0) .20 FI5||S |lLMP2b74 PUT SKIP LIST!' XS*); |ILMP067b PUT EDIT((XS(I) DO 1=1 TO J ) ) < SK I P . X (1 C > . 20 F(SI)i |ILMP0b76 IF NGETYS=0 THEN CALL SOLPNM; ||LMPDt77 IF XiCRST THEN DC; j ILMP067B PUT SKIPC3); j ILM^0to7* CALL FCSOL; I ILMP0680 eno; j iiMPOf.ai RETURN! I 1LMP0682 ENO; I ILMP06H3 PUT SKIP<3) EDIT ( | ILMP06U4 •NO FEASIBLE SOLUTICN HAS BEEN FOUNC SU FAR') |lLMP0b85 ( XI10) .AI42) I ; I ILMP0686 PUT SKIP(2) EDIT! | ILMP0687 •NO. OF ITERATIONS- ---------- -»,NCT4) |ILMP06B8 I XI IO.AI4C) .F<6> > ; j | ILMP0689 PUT SKIPI2) tOITI | ILMP0690 •NO. OF BACKTRACKS- ---------- -t.NCTb) |lLMPCb?l < X( 10) .A{ 40) .F (6) > ; | ILMP0692 PUT SKIPI2) LIST! j ILMP0693 • NO. OF UNDERLINED* I ; |ILMPG694 PUT SKIP(I) EDIT! | ILMP0695 •VARIABLES ADDED- ----------- -*, NUNDLX) |ILMP0fe96 (X(1C) .AI40I .F (6) ); j ILMP0697 PUT SKIPI2) EDIT! |Ii_MP0bi8 • PARTIAL SOLUTION AT*. NCT4. • ITERATION:*! j ILMP0699 (*(29).F(7),A(IJI)i J1LMP0700 J-JX-lt (ILMP0 701 PUT SKIPI2) LIST!* X*|; |ILMP0702 PUT EDIT ( « SK I P .X I 10 » . 20 F(SIM (ILMP0703 PUT SKIP LIST<» XS*»; JILMP0704 PUT ECIT((XS(I) OC 1=1 TO J I J ( SKIP , X ( 10 I . 20 F(S||. | ILMP0705 IF NCETVS«C THEN CALL SCLPNM; | ILMP0706 RETURN; (ILMP0707 END; /« ENO OF JIS>0 »/ |ILMP0708 IF JTSjO THEN OOt j ILMP0709 IF NCT3»0 THEN CO; |ILMP0710 /• THE PRCBLEM IS INFEASIBLE */ |ILMP0711 PUT PAGE! j ILMP0712 13^ PL/I OPTIMIZING COMPILED illipz: Pficceou^t upt icns(main) ; STMT LEV NT 580 581 582 3 2 J 2 583 3 2 384 3 2 58b 3 2 5 86 3 £ 387 3 t 588 3 1 589 3 I 590 3 I 591 S92 3 1 S93 3 1 594 3 1 595 3 2 596 3 2 597 3 2 598 3 1 599 3 I 600 3 1 601 3 I 602 3 t •03 3 1 604 3 1 60S 3 I 60* 3 1 607 3 S 606 3 2 PUT SK IPO » L IST( ' THE PfiObLEM tS I NFE AS I BLE • > ; PUT SKIP<2) EOITI • NO. OF ITERATIONS ---------- -i, KCT4! ( A( 50 t .F(6> ) ; PUT SK IPI 2 > EC IT( •NC. OF BACKTRACKS- ---------- -',NCT6> (x< ioi.akc) .M6| » ; put skipi2) list!' no. of unoehl i ned • i ; put edit! • variables added- ------------- .nunolx) (skip.x(io) .a(4ci ,f (6) ) . petupk; end; put page; put sk1p(3» list< • OPTIMAL FEASIBLE SOLUTION:') K = 0i PT2: PUT SKIP(2I LIST!' VAR. NO.'); PUT SK|P(I) EDIT (((K4-II CO 1 = 1 eY I KHILE ( ( [<=25)£( .F (to) ) ; PUT SKIPI3) ECITt • NO. OF BACKTRACKS- ---------- NCT6) (A(S0).F(6) ) 1 PUT SMPI3I LISTC NO. CF UNOERL INEO • 1 1 PUT SKIP EOITI • VARIAELES AOOEC- ----------- NUNDLX) (A(30).F(6))t PUT SKIP(l) ECITI •NO. CF FEASIBLE SOLUTIONS FOUND- - - - -«.NCT7) (X( I0).A(40I .F(6) ) 1 IF XZORST THEN DO; PUT SK|P(3); CALL PCSOLS ILMPC71 J ILM »071 4 ILMP07 U ILMP0716 ILMP07 17 ILMP571M ILM.'C719 ILMP072C ILMP0721 ILMP072? ILMPC 72J ILMP072*. lLMP07.? r ) ILMi J J7'?fs ILMP0727 ILMr>07?8 ILMPC729 ILMP'y7 JC ILMP07 II iLMPc/ja lLM-»3733 ILMW07 14 ILMP073S ILMP07 16 ILMPD7 J7 ILMP073B ILMP07 ).F(4) I ; IF AVAIL1>1 TI-tN 00 Lx2 TC AVAILI ; ll*SLPTAT1 ; end; k=o; put skipi3) edit (•ctt-ef solution; • ,l » ( a ( 1 6) . f ( 3 1 i i pt3:put skipi2) list!" var. no.*)! PUT SKIP ECIT((; PUT SKIP LIST <• VALUE* I ; PUT SKIP tCIT <(XHAT(K*IJ 00 1 = 1 BY 1 »HLE t(K*2S)£ (IKMIONIIII (X( 10) .25 f- (A) ) ; IF K«| ILMPC78* lLMPC7d7 ILrfP3783 ILMP0789 ILMP07JC ILMr»0791 lLMh>0792 ILMPC793 ILMP3794 ILMP0795 ILMP0796 ILMP3797 ILMP079B ILMP3799 ILMP0830 ILMP0811 ILMP0BC2 ILMP083 J ILMP0804 ILMP0805 ILMP08Q6 ILMP0B07 ILMP0808 ILMP0809 ILMP0810 ILMP08U ILMP08I2 ILMP08 13 ILMP0814 ILMP08IS ILMP0816 ILMP0817 ILMP0816 ILMP0819 ILMP0820 ILMP0821 ILMP0822 136 PL/l OPTIMISING COMPILED ILLIP2: PfiQCtOURE OPT lONS(MAIN) J STMT LEV NT 660 3 CALL GETYS; 661 3 c lts=o; 662 3 return; 663 3 c enc preset; 664 665 3 666 3 667 3 c 66S 3 c 669 3 c 6/0 3 c 671 3 1 672 3 1 673 3 1 674 3 2 675 3 2 676 3 2 677 3 3 678 3 3 679 3 3 680 3 2 681 3 1 682 3 1 683 3 684 3 1 685 3 1 686 3 2 687 3 2 688 3 2 • 89 3 1 690 3 1 691 3 C 692 3 693 694 3 •98 3 c • 96 3 • 97 3 699 3 700 3 1 701 3 1 702 703 704 hvpsns: procedure; /• revalue ps ns after free a variable •/ DECLARE I FIXED(4)i DECLARE INUEG. NENU1 FIXEDI4); NBEO=CLPTI JAD*1 I; NEND = CLLT< JAOM )*NEEG-1 ; IF NEND ; IF CLCFCIKO THEN FS ( SUb)=PS ( SOB 1-CLCF C I ) ; IF CLCF( I »>0 THE.N co; kscsubkkst subi-clcfc i » } if nsisuuxo then clspcsubki; end; end; return; end; if ks>0 tfen uc i-nbeg tc nendi /♦ erase xclko */ sub»rcwc i ) ; if clcfciko then do; KS(5UtJl'N5(SUe|HLCF( i); if nscsubko then cl sp( sob ) = 1 s end; IF CLCF(I)>0 TbEN psc sub»=pscsub)*clcf< i » i enc; return; ENC hvpsns; siktl: procedure; /• set initial value if some partial solution has alreadv know */ declare ck.i.b) fixedc4); declare xx fixe0(4>; declare j f1xe0(4); /• first input partial soluticn */ j*h xsciki; DO K«l BY 15 feHILEC XS(J)-»0|; J*K*14t GET EOITKXS(I). X (It DO I-K TO J I > ( COLUMN! I I. 15(F(4), F(ll) I! eno; /* set sci).x(i) •/ 00 1*1 BY 1 MhILE(Kb2rt lLMP0t>23 ILMP0B3 J ILMP08J1 1LMPT832 iLM^Ob^ 1 ILMI'06 1» IL.MP3835 ILM^OH 56 ilmp;« iT ILMPOdIR lLMP?rt39 ILMPW41 ILMPCM41 ILMP184? ILMPG843 ILM*>'e>44 ILM!»0BA5 ILM*Oa46 ILMP3d47 I LMP0D48 ILMP0849 ILMP065P ILMP3H51 ILMP0B52 ILMP0853 ILMP0854 ILMP0B55 ILMP08S6 ILMP0857 ILMP0U58 ILMP0859 ILMP0860 ILMP0861 ILMP0862 ILMP0863 ILMP0864 ILMP0865 ILMP0866 ILMP0867 ILMP0868 ILMP0869 ILMP0870 ILMP0871 ILMP0872 ILMP0873 ILMP0874 ILMP0875 ILMP0876 ILMP0877 137 PL/I OPTIMIZING COMPILER JLLIP2: PROCEDURE OPT IONSIMA I N I t STMT LEV NT 705 3 706 3 707 3 708 3 709 3 710 3 711 3 713 3 714 3 715 716 3 717 3 716 3 1 719 3 2 720 3 2 721 3 2 722 3 2 723 3 1 724 3 C 725 3 726 3 c 727 3 728 3 c 729 3 c 730 3 731 3 c 732 3 c 733 3 734 3 I 735 3 1 736 737 3 1 736 3 C 739 2 C 740 3 741 3 762 3 e 743 3 744 3 745 3 c 746 3 747 3 74* 3 749 3 7S0 3 7«| 3 712 3 END IF. XX>500C THEN XX*XX-6000; IF XCI| = 1 THEN MI) = XX; ' ELSE x(i)=-xx; IF X(I)>0 TI-EN SIX(I)J*H ELSE S(-X(I)|*-t; END! IF XS(I) = Tt-EN JX*I ; ELSE JX=N»|; GET EDIT (NCT3) ( CCLUKNI 1 I ,F « I 1 )| IF NCT3*1 THEN CET E01T((XHAT(I > 00 1*1 TC Ml (SKIP, IF (NCT3 = 1 )C-.XZ0HST THEN 2E AR = ZBAR-1 ; /• COMPUTE VS(I) C NCX ♦/ OC 1st BY 1 TC JK-li IF X(||>0 THEN DC! jad=x< I) ; NCX*NCX+QF(JAO) ; CALL CETVSI 72 FOIIS end; end; put skipi3) b*jx-i ; PUT SKIP SKIP SKIP SKIP SKIP LIST! • INITIAL FABTIAL SOLUTION:*); PUT PUT PUT PUT PUT PUT IF /* II) DO 1=1 TO e>) (COLUMN (1), 20 F (b)) sum: • l ; COLUMN (II. 20 F (5)1; LISTCX" » ; (2) EDIT ((X LIST! *XS* i; (2) EDIT (IXS (I) DO 1*1 TO B>) (COLUMN (1), 20 F ISMS list ('ys•); SKIPO) LIST! • INITIAL PARTIAL EDIT (IYS (I) CC 1*1 TC Ml) < (XZORST C NCT3*1) THEN 00 ; REAC ADOITICNAL SCLUTICN •/ GET EDITIAVAIL1, AVAIL) (COLUMN(I). IF AVAIOl THEN GET EDIT ((SLFL(I) DO 1*1 TO AVAIL- (COLUMN(l). 14 (F(4) .X(l)|) J IF AVAIL>1 THEN GET EDIT ((SLPT(l) 00 1*1 TO AVAILD) (COLUMN! 1). 18 F(4I) I end; sintl; F(4) ,X(2) , F(4) ) ; 111 sclfnh: procecure; declare oummvin3) fixed(l); declare xx fixedi4); declare i fixe0(4); put file(pnch) ed i t inc t4) ( ski p. xi 72) .f< 6) i ; put file (pnch) edit (zbar) (skip.f(5i); co 1*1 to jx-i ; XX*XS( IIS IF XX>5C00 THEN XX*XX-5000; IF XX-XUI THEN DUfMY(l)*i; else dummy(i)*0; eno; xs(jx)*o; oummv(jx)*o; ILMP0878 lLMPOe7<, 1LMPT88C ILMPQ831 lLMPuci82 ILMP0883 iLMPCHe* ILMPOBdS ILMP3886 ILMP0837 iLMPjaen ILMP08rj<> Il_MH08 c JT I L MP Of* 1 1 lLMP0cJ^2 ILMPOfe^l ILMP089A ILMP0o9b ILM-<0rt96 ILMP0897 ILMP0698 I L MP 08 99 ILMP090C ILMP0901 ILMP0902 ILMP39C3 ILMP0934 ILMP0905 ILMPC936 ILMP0907 ILMP0908 ILMP0909 ILMP0910 ILMP09I 1 ILMP0912 ILMP0913 ILMP3914 ILMP091S ILMP0916 ILMP0917 ILMP0918 ILMP0919 ILMP0920 ILMP0921 ILMP0922 ILMP0923 ILMP0924 ILMP0925 ILMP0926 ILMP0927 IL.MP0928 ILMP0929 ILMP0930 ILMP093I ILMP0932 138 PL/l OPTIMIZING COMPILE*- 1LLIP2: PROCEDURE OPT IONS (MA IN I I STMT LEV NT 7S3 754 75S 7S6 757 758 759 763 782 3 3 C 3 3 I 3 1 760 3 1 761 3 C 762 3 c 764 3 C 765 3 C 766 3 1 767 3 I 768 3 1 769 3 2 770 3 3 771 3 4 772 3 4 773 3 4 77* 3 4 7 75 3 4 776 3 3 777 3 3 778 3 3 780 3 1 781 3 C 783 3 784 3 C 78S 3 78* 3 c 787 3 788 3 789 3 790 3 1 791 3 2 PIT FILE"(PNCH) ECIT ((XS(I). DUMMY! I) 00 1*1 TC JX|) ( SKIP. 15 ,F( I) ) I ; PUT FILE(PNCH) EDITINCT3. 'NCT3»> C SK IP ,F ( 1 ) , x( 71 ) . A ( 4 » J ; IF NCT3=I THEN PUT FILt(PNCH) tDIT ( ( XHATi I I 00 1=1 TC N)| (SKIP. 72 Mil); /* IF XZOST THEN PUNCH ADDITIONAL SCL •/ IF (XZORST t NCTJ=l» THEN DO! PUT FILE(FNCH) ECIT ( AW A 1L 1 . AV A IL ) ( SK IP ,F ( 4 I . X( 2 I .F ( 4 I I PUT FILE(PNCH) EDIT ((SLFL(I) OU 1 = 1 TC AVAIL-ll) (SKIP, 14 (F(4) . X( 1 » )) ; PUT FlLE(PNCH) ED I T ( ( SLFT ( I I 00 1 = 1 TO AVAIL1)) (SKIP. 18 F(4»l ; end; return; enc solpnh; storscl: procedure; /* store solutions in solution buffer »/ oeclare l f(xe0(4|; if availkmax* then oc; AWAIL1 =AVAIL1 Mi SLPT ( AVAIL 1)»A VAIL ; oo l«i to jx-i ; IF X(L)>0 THEN co; IF AVAIL>N4 ThEN DO; plt skip(2i list (•no more space available avail=slpt( avail 1 i ; avail1=av*il|- 1 ; return; end; slfl( avail )=x(l» i avail=ava|l*1 ; eno; end; end; eno storsol; uncfxj: procedure; /• check if there are columns such that FOR STORING SOLUT I CN . • ) ; A( I. JXO WHEN NS(I )<0 A(I.JI>0 WHEN NSdXO •/ OECLARE (NBEC, NENOI FUE0(4)| OECLARE K FIXE0I4). CK FIXEDdll OECLARE JJ FIXED (4); CK-CS NBEC=CLPT( JA0*1 )I NENO»CLLT( JAO*l )-l »NBEC 5 IF NBEO<» NEKO THEN OO KaNBEG TC NENOI IF KS(ROM(K)i<0 ThEN DO I IF CLCFKKO THEN CO ( OR 1LMP0933 [LMP>H 1» lLMPJ93t> ILMPOV 36 ILKP00 THEN CO I CK«21 co to out_lpi eno; end; ELSE if clcf(k>>0 then do; IF CK<0 THEN OCt c**ai go to out_lp; enc; CK*1| ENOI end; end; if ck<»0 then do; /• all mi.jac) s. th. nsiixo are le than c ♦ / ks=-i ; xsi jxm-jao; IF (X20BST & QF(JAC)=0I THEN XS(JX)=JA0; nundl x= nunci x+ i ; end; if ck>0 then do; /* all a(i.jad) s. th. ssiixc are gt than ♦/ XS( JX»aJAD*500C; KS«1I end; olt_lp: IF CK*2 THEN XS*0 then dc; K8EG«CLPT< JJtl I ; NEND*CLLT< JJ» 1 1-1 + N8EG ; IF NENC >* N6EG THEN DO K-NBEG TO NENO; IF CLCF(K)>C 6 N5(HO»(KII<0 THEN GO TC lpp; ENOI xsjj; KS»-ll NUNOLX*NUNDLX*li * CALL CGPSNSI IF RETN_INO -•» THEN DO! RETN_IND*RETN_lND*l I return; ILMP ILMP ILMP ILMP ILMP ILMP ILMP ILMP ILMP ILMP ILMP ILMP ILMP ILMP ILMP ILMP ILMP ILMP ILMP ILMP ILMP ILMP ILMP ILMP ILMP ILMP ILMP ILMP ILMP ILMP ILMP ILMP ILMP ILMP ILMP ILMP ILMP ILMP ILMP ILMP ILMP ILMP ILMP ILMP ILMP ILMP ILMP ILMP ILMP ILMP ILMP ILMP ILMP ILMP ILMP G9«a G99C 0991 0992 0994 0995 9 96 09 9 7 C9 9fl 09 99 1C0C IC01 1002 1001 10?4 I0C5 10 06 10C7 ICC8 1CC9 101C ir ii 1012 1013 1014 1015 1C 16 1017 1018 1019 1C20 1C2I 1022 1023 1024 10 25 1026 1027 1028 1029 1030 1031 1032 10 33 1034 10 35 10 36 1037 1038 10 39 1040 1041 1042 lUO PL/I OPTIMIZING COMPILER ILL1P2: PRGCEDbflE UPT ILNS(MAIN) ; STMT LEV NT 639 3 2 I tso; 040 3 2 lpp: 1 end; e«» 3 1 end; 842 3 RETK.INOsl ; 043 3 c return; 044 3 tNC unofxj; 045 2 I unolx: proceclre; /* BACKTRACK «/ 046 3 DECLARE (IA.L.K5SI FIXE0I4); 047 3 DECLARE INflEC, NEKCI FIXtC(4li 048 3 START1 : IF JX>1 ThEN CC; 049 l=jx-i; 850 sues x(L); 051 1 jx*jx-t; 052 IF sue0 THEN 00; 862 JAO«X(L|; 863 k s*- 1 ; 864 end; 065 else do; 866 jad*-xS00O ItigN 00} /* IT IS PSEUOO UNDERLINED */ 873 IF LT£=0 ThEK DO] 874 xsiLi-o; 75 IF X|LI>0 TbEN 00; ■ 76 s(«|lii>c; • 77 JAO»X5000 THEN »S(M««S(K 1-5000 t 892 3 2 eno; 893 3 1 IF XS(L l>0 THEN DC ; 894 3 2 »SIL)*-XS32000 I ZeAR < THEN 001 PUT SKIP LIST I •ZBAR VALUE IS OUT OF BOUND, 32000 IS ASSUMED* )• ZBAR-3200CI END J GET LIST(N*MtZMINtKCT2tNNEHX,NGETYS.NFIXJ,N0VAHtTYPEtXZSTtMAX#. ILMPIC98 ILMP1099 ILMPUOC I L MP I 101 ILMP1 I 02 ILMP1 I n I L MP 1 104 ILMPI I Ob ILMP1 1 to ILMPI 1 57 ILMi'l 1 oa ILMPI 1 0-5 ILMP| 1 1C ILMPI 1 II ILMPI I 12 ILMPI I 13 ILMP11 14 ILMPI1 15 ILMPI 1 16 ILMPI I 17 ILMPI I 19 ILMPI 1 1" ILMPI 12C ILMPI 121 ILMPI 122 ILMPI 123 ILMPI 124 ILMPI 12b ILMPI 126 ILMPI 127 ILMPI |28 ILMPI 1 29 ILMPI 1 3C ILMPI 1 31 ILMP1132 ILMPI 133 ILMPI 13* ILMPI 1 3b ILMPI I It ILMPI 1 37 ILMPI 1 3d ILMPI 1 19 ILMPI 140 ILMPI 1 41 ILMPI 142 ILMPI 143 ILMPI 144 ILMPI 145 ILMPI 1 46 ILMPI 147 ILMPI 148 ILMP1149 ILMPI 150 ILMPI 151 ILMPI 152 Ik2 PL/I 0PT1MIZINC COMPILER ILLIP?: PRCCEDLHL OPTICNS
; STMT LEV NT 9 34 2 c 436 2 c 937 2 1 9 38 2 1 939 2 1 940 2 I 941 2 c 942 2 943 2 944 94S 2 C 9 46 2 J 947 2 I 948 2 1 949 2 9 50 2 1 451 2 1 952 2 1 953 2 954 2 C 956 2 c 957 2 1 958 2 1 959 2 961 2 962 2 963 2 964 2 1 968 X 2 966 967 968 969 970 971 • 72 9 73 XZGBST='0"d; - NF IX J • iNF I XJ » IS ASSUMED.' I : 0VSN.F4 .P5.P6 ) i IF XZST=1 THEN XZORST = • 1 • U ', ELSE IF NF!XJ<1 |NFIXJ>3 T»-EN CC; PUT SkIP<2> ECITI* INPUT EFBflC- < A<2t>> ,F<4 )) ; PUT SKIP LI ST ('SCHEME I NFIXJ-zl ; end; if -xzorst then zb ah-zbab* i ; PUT skip; PUT EDITI'NQ. OF VARIABLES = *.N.* NC. CF INEQUALITES = '.M, • THE SCHEME • .NF I XJ , • IS USED IN AG*T_VAM») (SKIP. A(19). F<4», A<26). F(4|. A<)6). F<4). A(22l)i IF XZORST THEN PUT SKIP EO I T < • OPT I GN TO EXI-AUST SCLUTIUNS UP Tu', »AX«, • HAS EEEN SPECIFIEC.*) ( A(33» . F(5) . A(2C) ); IF DVSN< C THEN DO ; PUT SKIP EDIT (**R0NG VALUE OF DVSN'.DVSN (A( 19) ,F|6) .A( IS) ) ; cvsn-c ; eno; IF MAX* > NS THEN DCi PUT SKIP ECIT<*NO ENOUGH • SOLUTIONS. MAX* - «.N5t F(4».A(11)>; MAX«3N5; end; if ovsn > then plt skip eoit( •an acceptable oe v i at i on • . c vsn . •flncticn value is specified*) (A(23). F(6I. A(27) ,A(27) ) ; /« SET INITIAL • / NCCNT-O; MCCKTsOi 00 1=1 TU n; cf< i)xo; eno; AVAIL1=C; AVAIL'i; dvsn*dvsn+i; /• read cejective funct1cn */ get list(ib.ic); l t :do while ( ioo; end; nxic; end; if 0f( ic)*0 then OFf ICI«IBI ELSE PUT SKIP EOITI ****NARNlNG**4 ••THE CEJECTIVE FUNCTION ARE THE I S ASSUMED. • ) SPACE FOR STORING *,MAX*, • IS ASSUMED* »(A(28).F(» ).A( |9I. FHUM AN OPTIMAL OBJECTIVE T»0 COEFFICIENTS OF SAME SUBSCRIPT*. IC . •THE FIRST ONE GET LIST(IE.IC); IS IGNORED* > (A(36).A(45).F(4).A(24I); ILMrM 1 tJ ILMPl 1 ~><* ILVIPI | 5S ILMP 1 lb6 ILMM 1 c,7 ILMP1 I bh ILMP1 I ■}* ILMP1 K.r IL»/P1 l» I |LM->1 162 I L MP 1 1 6 3 ILMPl 1 a* ILMP1 I 6b IUMMI \<>>. ILMPl 1 67 ILMPl lod 1LM-M 16<* ILMP1I 7" ILMP1 1 71 ILMPl I 7? ILMP1 1 73 ILMPl I 74 ILMPl 1 75 ILMPl 176 ILMPl 1 77 ILMPl 1 7« ILMPl 17«S ILMPl IPC ILMPl 1 61 ILMPl 1 6? ILMPl 1 e3 ILMPl 1 04 ILMPl 1 eb ILM^l 186 ILMPl 1 a? ILMPl iea ILMPl ld9 ILMPl 19T ILMPl 191 ILMPl 192 ILMPl 1 93 ILMPl 1 94 ILMPl 19b ILMPl 1 96 ILMPl 197 ILMP1198 ILMP1199 ILMP1200 ILMPl 201 ILMP1202 ILMP1203 ILMP1204 ILMPl 205 ILMP1206 1LMP1207 li+3 PL/I OPTIMIZING COMPILER ILLIP2: PWOCfcDUHt OPT I ONS ( MA I N > ; STMT LEV NT «74 2 I | 9 75 2 1 "J 76 2 1 I 9 79 2 1 | 960 2 2 1 981 2 2 1 982 2 2 j 983 2 2 1 984 2 2 J 9 as 2 3 | 986 2 2 i 987 2 3 1 9 88 2 3 j 989 2 3 | 990 2 3 I 991 2 4 | 992 2 * 1 993 2 4 j 994 2 3 | 995 2 3 1 996 2 2 1 997 2 2 | 998 2 2 j 999 2 2 j 1000 2 2 1 tooi 2 1002 2 1003 2 1004 2 100S 2 1006 2 1007 2 2 1 1000 2 3 1 1009 2 3 j 1010 2 3 1 1011 2 3 | 1012 t 3 j 1013 2 2 1 1*14 < 1 | 1019 2 1 | 1010 2 1 1 1017 2 1 i 1010 2 1 j 1021 2 1 I 1022 2 2 I 1023 2 3 j 1024 a a | END LI ; if ivpe<=0 then do; /* read constraints rcw bv rcw */ j=i ; k = i ; ck=»cb; on while i-.uk I ; rwpti j> =k; RMLTI J)=Ot ie=-i ; GET LIST! Ibt ICI ; 00 WHILE ( IO«OI ; RHCF(K)*I8! CCL(K)MC; RWLTC J)xR«LT( JIM ; k=k*1 ; if iencont then ncont>iet JaJ+l 1 GET EDIT ISOL) < COLUMN! 73 I . A < 1 > I ; IF SCL»«E« |SOL««S« THEN OMM'Bi END I /* set up inequality for lower bound ♦/ rwpt(j»*k; rwcf(k)s-2min; col(k|*o; rwltKi /* SET UP INEQUALITY FCR UPPER BGUNC */ IF XZGRST THEN H WCF < K M i.B *H ; ELSE RwCF(K)«ZeAR-t ; COL«-CF( III COL(K)»I ; ILMP121M ILMP12 }U ILMPlilO ILW->121 1 ILMP121 ROW */ hv~\*\ ; I-I+RlkLT{K ) ; DC J = KM BY I *HILE(J<=I fc COL(JXL) IF CCLCJ»=L-1 THEN DO; CLCF I5UBl=H*CF(JI ; POM Subi=k; SU6=SUB*1 ; LNTH=LNTH*l ; end; end; end; end; cllt = 0) ; CLCFiK )= ib; ROHdOMC ; CLLT( J)*CLLT< J)+l ; ***♦! ; if ie* ILMPJi6b ILMPl t6o ILM'-*126/ ILMPliOd ILMPI2oi ILMPl? 7-~ ILMP127I lLMMi7? ILMP127T ILMPl."' Tt ILMPl i 7S ILMPI2 76 ILMP1277 ILMP127M ILMPU 7'J ILMP12HC iLMPli'al ILMP12<3? IL4P123.J ILMP12fl« ILMP1235 I L MP 12 36 ILMP12H7 1LMP128H ILMP128S ILMP1255 IL.-tP^'?! ILMP1242 ILMP12<33 ILMP125* ILMP1H5 ILMP1+5 »L/I OPTIMIZING COMPILER ILLIP2: PRCCEDU&E OPT I CNS (M A I M ; STMT LEV NT 1074 2 2 | IC75 2 2 | I07O 2 3 | 1077 2 ■a 1 1078 2 3 1 1079 2 3 1 iceo 2 i j 1081 2 3 1 1082 2 3 I 108J 2 c | 1 784 2 2 | I0ti5 2 3 1 I0H6 2 3 | 1087 2 3 1 10 88 2 3 | 1089 2 3 1 1C90 2 2 1 1091 2 2 1 1092 2 2 1 1093 2 ■« 1094 2 2 1 1095 2 3 1 1096 2 2 1 1097 2 1 | 1098 2 1 | 1099 2 1 I 1100 2 2 | 1101 2 2 I 1102 2 2 | 1103 2 2 | 1104 2 1 I I10S 2 1 | 1106 2 2 1 1107 2 2 1 1109 2 2 i 1110 2 3 1 1111 2 4 | 1112 2 4 | 1111 2 4 | 1116 2 5 1 1115 2 « 1 1116 2 • 1 1117 2 e 1 1118 2 * 1 1119 2 e 1 itae 2 « ] 1121 2 4 j 1122 2 3 | 1123 2 2 1 1124 2 2 I IF lfc>MCCNT TFEN MCUNT=|E; IF J=l THEN DO; /• FIRST CUL */ CLCFIK i=-zmin; k=k+i ; it xzcbst Then clcf (k j=^tAw; CLCF*2i end; ELSE F.l Sfc It 1) 6I0FIJ-1 )-«=0 J ThFN DO; CLCFIK )=CF(J-l ) ; KsKi 1 ; CLCFIK )=-0F( J- I > ; KsK+1 ; cllti j)-cllt( ji4-2; end; J*J*1 i /* TEST END OF INPLT AND IF ThEHE AWc PAMTIAL SCLLTICN FOLLOWS ♦/ CET ECITISCL) I CCLUMM 7 3 ) , A ( 1 ) ) ; IF SCL-»t • | SCL= «S • THEN DO; ck=» i »e; NCCNT= J-2; end; end: MCONT=MCChT»2; fiOW= CLCFI J) I C0L(SUB|=K-1 ; SLE=SUB+1 ; lnTh=lnth*i ; eno; eno; eno; eno; r»ltili=lnth; end; | ILW.'I Jlo | It-MMl 31 ^ I ILMP132T jlLM^I (M | lLMi»13^2 I ILMPI 1?3 j ILMP1324 | IcMhU 3 2*. | ILMP1 326 I ILMP 132 7 I ILMPJ32* I ILMP1 J29 | ILMPI 3 1? | ILMPI3 11 j ILMP 13 J? I ILMP1 J J 3 j ILMP1 3 J4 j ILM^>13 35 I ILMPI 3 it, | ILMPI .■> 37 | ILMP 1 33fl j ILMPI 339 | ILMP134* | ILMP1341 | ILMPI 342 I ILMP 1343 j ILMPI 344 | ILMP|34b j ILMP1346 | ILMPI 347 | ILMP134H | ILMPI 349 | ILMP13S0 I ILMP13S1 | ILMPI 352 | ILMPI 353 I ILMPI 3 54 I lLMP13bb j !LMP13b6 | ILMP13S7 j ILMP1358 | ILMP1359 | ILMP1360 I ILMPI 361 j ILMP1362 I ILMPI 363 | ILMPI 364 j ILMPI 365 | ILMPI 36b j ILMP1367 j ILMPI 368 I ILMPI 369 I ILMP1370 j ILMP1371 I ILMP1372 H+6 PL/l OPTIMIZING COMPILER ILLIP2I PfiCCF-OuWt OPTICNSIMAIN); STMT LEV M I 125 2 I 1126 2 C 1 127 2 C 11 2d 2 1 1129 2 I 1130 2 1 1131 2 1 1132 2 2 1133 2 3 1 13* 2 T II 35 2 S 1136 2 1 1137 2 1 1138 2 2 1139 2 2 1 1*0 2 2 1141 2 3 11*2 2 3 11*3 2 2 1144 2 2 1145 2 1 1146 2 1147 2 1148 2 c 1149 2 1180 2 11S1 2 1152 2 1 1153 2 2 1154 2 2 1155 2 2 1 1 56 2 2 1157 2 3 1158 2 3 1159 2 3 1160 2 3 1161 2 2 1162 2 1 1163 2 1164 2 1165 2 1166 < c END; /* ELSE DC ♦/ CALL CHECK_M_N; /♦ SFT UP HOW COEFFIECENT PUlNTCR »/ oc j=i tc m; N8EG=fiWPT< J» ; /• BEGIN CF J_TH ROW •/ NFND=NBEG«RWLTl )| (&WCF ( I )<-l ) TJ-EN CK=M«B; end; end; ik -«ck then clvtij» = 0; else do; CLVTI j)=i-i; CK2=« cb; IF K=NENC THEN CO I 1=1 dV l WHILE ( I !<=NEN0f.-.0K2 | ; if (rwcf ( i i )>1 1 | (hwcf (i i )<-! i then 0k2=m'b; end; IF 0K2 Tt-EN CLVT( j|=-lOCC I end; end; /* print objective fun 6 ccnstraints */ put skipi1) list! 'objective function*); PUT skip; PUT EOIT (( •♦• .OFC I ),«X( •. I," )• DC 1=1 TC N)> (SKIP.X(2>,9 ( «(l),F(6|,«(2|,F(JI.*lllll; put skip(2) listcrow inequalities'); put skip; rr:oq l»l to m; IF RHLT(I)-i*0 THEN 00 S k»rwpt; J=RWLT< I )*K-1 ; IF COL (R*F1 ( I | )>0 THEN PLT EDITH. "3 <= •) ISKIP, F (4>.X (6). A( 51) !(•♦•« RWCFILIt »KI«i COLtL).')' DO L=K TU J)) (COLUMMIbl. a(A(l), F(6 ), A(2) .FI3), A( 1 ) >) ; ELSE DC; I2«-HWCF, COLIDt*)* OO L»K TO J|| (c0luhm16i, 8(a(|). f (6 ) . a ( 2 ) .f ( 3 > . a ( 1 ) ) ) i eno; ENO I ENO rr; call preset; if sola's' then call sintl i call gtpsns; CALL geof; IL Mi* 1 3 7 1 ILMPI i 7* ILMPl J 1 > ILMPI -\ 7r. ILM.'1J77 ILMPI j7-t ILK..-* I J 79 iLMl'l lb" ILMP1 J-JI ILMPI J1? ilhpi ^5 ILMPI JHo ILM.^l JM7 !LM=>1 itia ILMPI 3H9 ILMi>139fl ILMPI 391 IL*P139? ILMPI J9J ILMPI 394 ILMP1395 ILMP1396 ILMPI 397 ILMPIJ9B ILM»M399 ILMPI * 10 ILMP1*01 ILMPI*02 ILMP1403 ILMP140* ILMP14J5 ILMP1*06 ILMPI*07 ILMPl*0fi ILMP109 ILMPI* 10 ILMP14 1 1 ILMPI 4 1 2 ILMPI *1 J ILMPI*!* ILMPI* 15 ILMPM16 1LMP1*17 ILMPI* Ifl ILMPI*19 ILMP|*20 ILMP1*21 ILMP1*22 ILMPU23 ILMP1*2* ILMP1*2S |LMP1*26 ILMP1*27 Ikl PL/I OPTIMIZIKC COMPILER (LLIP2: PROCEDURt DPT I QNS( MA I N J 5 STMT LEV NT 1167 2 put page; 1168 2 go tg reao_cata; 1 169 2 c stp_go: clcse f ile(pnch) ; 1170 2 c end; 1171 1 c END ILLIP2; ILMP1428 ILMP14£<3 ILMf 143? ILM-M4 11 ILMiM43^ ILMP1 4 13 ILMM1434 11+8 The above two programs can be executed at the computer center at the University of Illinois with the following Job Control Cards: (1) FORTRAN PROGRAM /*TD // EXEC FTNHLKGO, PARM'FORT^OPI^' , REGION* FORT=3 i +8K, // REGION* GO =l86K [FORTRAN PROGRAM] //GO' SYS IN DD * [DATA CARDS] /* (2) PL/ I PROGRAM /*ID // EXEC PLIFLDG, REGION^OCXK //GO.PNCH DD SYSOUT=B, DCB=BLKSIZE=80 [PL/ I PROGRAM] //GO* SYS IN DD * [DATA] /* 149 Next we show the flow charts of the program. An outline fow diagram of the entire program is shown first and then more detailed flow charts of each subroutine are shown. 150 An Outline Flow Diagram Of The Entire ILLIP-2 Program. START INPUT DATA AND INITIALIZE EACH PARAMETER CHECK INEQUALITIES TO SEE IF THE CURRENT PARTIAL SOLUTION 'IS INFEASIBLE OR IF ANY FREE VARIABLE IS FORCED TO A FIXED VALUE no r— -i IS THE CURRENT PARTIAL SOLUTION INFEASIBLE? yes no ARE SOME FREE VARIABLES FORCED TO SOME FIXED VALUE? yes yes FIX ALL THESE VARIABLES — I AGMT-VAR AUGMENT A FREE VARIABLE TO THE CURRENT PARTIAL SOLUTION STOP ARE ALL VARIABLES FIXED? no A FEASIBLE SOLUTION NO WORSE THEN THE INCUMBENT IS FOUND STORE THIS SOLUTION AS THE INCUMBENT IF IT IS BETTER THAN THE INCUMBENT STORE THIS SOLUTION IF MORE THAN ONE OPTIMAL SOLUTION IS WANTED BCKTRK ARE ALL VARIABLES IN THE PARTIAL SOLUTION UNDERLINED? no FIND THE RIGHTMOST NON-UNDERLINED VARIABLE. SET THIS VARIABLE TO ITS OPPOSITE VALUE AND UNDERLINE IT. SET ALL VARIABLES AT THE RIGHTHANL SIDE OF THE VARIABLE JUST UNDERLINED FREE. CHANGE PS, NS, YS CHNGMN 151 * * g o o g H ^^ 1 ~ 1 M W fc /^ Pm S o 1-3 ¥ o + § m CO CO >*. E CO ll i\ BS s-^ g 02 I V ' co CO v — ' K 1 / \ CO 152 153 o u 1 § g g CO CO 154 -a a> o o w -p •H . 0) PC H •>< P< T> OT •H h >, 2 oJ £> r~\ V & 155 156 157 15 H II i-3 o on I § T - o ii 4 r\ w 158 W 159 r^\ 160 W 161 w C o •H P •H 'D C O V 9 •H C •H H Sh (D T3 C 3 o TJ 3 0) ra ft T3 G o3 w C >> o ,£> •H +3 TS •H (D T3 O C «3 O H O ft a; faO ?H 3 •H W Pi •H •H H T5 !4 a ctf T3 C -a B (U H •\ H • a3 (D o • •H -p *■ — r* o £ 13 W X •H fe (D s £ [3 •H -P •\ d -- — •* o T3 !m 0) X H O o5 CD •H £! O O a; ft P w o a G 0) 01 rj in !5 <$ H 1 M II t-3 K ^-N M Q Q 3 i X Eh Eh O w w co Eh B s H 162 EI is w Fn T + Fn o + Fn s CQ < EH 03 13 o « II s H II H < - C/2 /^ 6! < ra 163 IA Ch oo M II (-3 H S ro ** o • bj • 3 ^ o w S 5^ w O M 6 1-9 O H 1-9 O H / % ^ ^ 3 O v 3 1 16U 165 o l-H O i H O g CO < Eh go *e H H -> EH W CO w K Ph O II •v •> Eh O O O II I, * X R o o < s h> II •\ *\ CO o O EH II II VD 00 H H H O C) II S S H O II II O GO >H EH en /^ H EH >< H . CO I X * OJ H *— « II CO H O X o EH w o CO Eh Eh < EH CO 166 § t-1 CO g H O PC g CO p EH Pm o S P^I O ,1") H H § g > 1-1 O g CO EH a O pq w H § CO o w fit EH g CO H K w "■ EH A e W b EH V CO EH CO O o o o H Eh O h M Eh O W o i — > o g M K PL, - v CO 167 53 -j CO / \ m o / a \ k \ f H + w II B > * >f H n II w H 'h? W + /^ ii hh 1 V ». < H /""\ / r-' + ( \ l KJ H n ( &o > /< ) n /l x k3 \i H / s \ / ra H \ A / V / ^ / CD « , / H + CO ii CO H + II H + H II c / M \ A \ ha / EH W K / ^ > \ ii CO Is o K H II g CO > ' Eh W -j- H II H -t 1-3 II H ; / ^ / V o V EH CO V • \ > f PQ w CO o a ,1 o 1 II 1 /f-H" \ ' 1 > rH ^+ \o / \o / , o \ II ) / V o J *\ 169 H O < o II £ W Eh P CO g IS] 03 /|\ K O O fin V o • — -. H VK (/; S P < H ^ H EH < K o & P CO X H gp H p ->^< -£ OJ ~tf* H H „ £ •— O X g Eh W co Fm K O O to V O *~* . H A|— CO •\ pi; H EH < M W H S p o <: on P EH -£ co X 173 M o P-h y o h> co S H <:---eh p w K En EH Eh Eh K P H O CO X co H o w co P o h> < w co o P EH P H II K g CO O H tsl ^ X O P « P ° P O hTp A x3~ EH CO — P - P co h) O H b EH W O K EH CO CO m * r*\ « w co eg O < M EH > '~^ W § Eh ft p K Ph g co o 5 J > o ii CO v_y < Eh CO CO w BIBLIOGRAPHIC DATA SHEET 1. Report No. UIUCDCS-R-77-858 3. Recipient's Accession No. I. Title and Subtitle A CODE FOR ZERO-ONE INTEGER PROGRAMMING ILLIP-2 (A PROGRAMMING MANUAL FOR ILLIP-2) 5. Report Date April 1977 Author(s) Ming Huei Young, Tso Kai Liu, Charles Richmond Baugh and Saburo Muroga 8. Per Z\W^B^T-^r- I. Performing Organization Name and Address Department of Computer Science t University of Illinois Urbana, Illinois 618OI 10. Project/Task/Work Unit No. 11. Contract/Grant No. NSF DCR73 -03421 A01 2. Sponsoring Organization Name and Address National Science Foundation Washington, D.C. 13. Type of Report & Period Covered 14. 5. Supplementary Notes 6. Abstracts This report presents an implicit enumeration program code, ILLIP-2, for solving zero-one linear programming problems. This program is an improved version of the program ILLIP. The program structure, the input and the output of this program are •well explained in this report. Problems -with up to 399 variables and 998 constraints can be solved by this current version. Although computation time is often highly dependent on the coefficient matrix structures of given problems, -we have a problem ■with 256 variables and 717 constraints solved by this program in 468. 78 seconds, for example . Methods for converting integer programming problems with non-linear objective function or non-linear constraints into zero-one integer linear programming problems are described in the Appendix. 1. Key Words and Document Analysis. 17a. Descriptors Zero-one linear programming, implicit enumeration method, partial solution, fixed variables, free variables, underlining, pseudo-under lining, incumbent, backtracking b. Identifiers/Open-Ended Terms e. COSATI Field/Group Availability Statement UNLIMITED 19. Security Class (This Report) UNCLASSIFIED 20. Security Class (This Page UNCLASSIFIED 21. No. of Pages 178 22. Price "M NTIS-35 (10-70) USCOMM-DC 40329-P7 1 n - ■<< i |» ■ '"''ft ' IS: ; - *V i\i* \Sfl