"fi LIBRA R.Y OF THE U N I VERS ITY OF 1 LL1 NOIS 510.84 K6r no. 301-307 cop. 2 The person charging this material is re- sponsible for its return on or before the Latest Date stamped below. Theft, mutilation, and underlining of books are reasons for disciplinary action and may result in dismissal from the University. UNIVERSITY OF ILLINOIS LIBRARY AT URBANA-CHAMPAIGN OEC 1 3 1J7T \ R£C!& FEB 1 A, D L161— O-1096 Digitized by the Internet Archive in 2013 http://archive.org/details/codeforzeroonein302liut * / A s Report No. 302 30l> 7^/^rt A CODE FOR ZERO-ONE INTEGER LINEAR PROGRAMMING BY IMPLICIT ENUMERATION (A PROGRAMMING MANUAL FOR ILLIP) by Tso-kai Liu December 15, 1968 Report No. 302 A CODE FOR ZERO-ONE INTEGER LINEAR PROGRAMMING BY IMPLICIT ENUMERATION (A PROGRAMMING MANUAL FOR ILLIP) by Tso-kai Liu December 15, 1968 Department of Computer Science University of Illinois Urbana, Illinois 618OI This work was submitted in partial fulfillment of the requirements for the degree of Master of Science in Computer Science in the Graduate College of the University of Illinois, December, 1968. ACKNOWLEDGMENT The author is very grateful to his advisor, Professor S. Muroga, for his invaluable guidance and constructive criticism in the preparation of this thesis. The author also wishes to express his appreciation to Mr. C. R. Baugh and Mr. T. Ibaraki for their many helpful suggestions. 111 TABLE OF CONTENTS CHAPTER Page 1. INTRODUCTION 1 2. PROGRAM DESCRIPTION 3 3. SCHEMES FOR AUGMENTING VARIABLE (AGMT-VAR) 13 k. INPUT 16 5. OUTPUT 28 APPENDIX 32 LIST OF REFERENCES kO IV CHAPTER 1 INTRODUCTION Recently, the application of integer linear programming (ILP) has "become extensive. Many different problems such as network synthesis problems, traveling-salesman problems, flight -scheduling problems and covering problems can all be formulated into integer linear programming problems. [2] However, probably no algorithm which is efficient on all problems exists at the present time. ILLIP (Illinois Integer Programming Code), the computer program which will be presented in this report, is written in FORTRAN IV for solving 0-1 ILP. The algorithm used in ILLIP is basically an extension of the implicit enumeration. [l], [h] Some sophisticated ideas such as maximum sum, minimum sum and pseudo-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 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 is the optimal- NOR network synthesis of switching functions (Boolean functions). [7], [8] 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 0-1 ILP is an abbreviation of an integer linear programming whose variables assume the values or 1 only. 2 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. Therefore 0-1 ILP problems with sparse coefficient matrices can be efficiently solved by the current version of ILLIP. Only non-zero coefficients of inequalities are stored in memory. They are stored both in rowwise and in columnwise. Therefore each coefficient can be fetched efficiently. A flag is assigned to each inequality so that some inequalities can be skipped during the process of checking inequalities depending upon the values of their flags. It turns out that ILLIP is very efficient especially for problems with similar features as the above network synthesis problem. Some problems with 193 variables and Ul8 inequalities (problems of synthesizing 6-gate networks for 3-variable functions) were solved within 30 seconds on IBM 36o/75I» Several other types of problems were also solved. The result can be found in [6]. 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]. A solver of an ILP problem should be aware of the fact that change of inequalities or additional inequalities (e.g. inequalities which preclude solutions obtained from others by permuting variables) often further speeds up computation time. CHAPTER 2 PROGRAM DESCRIPTION Any general 0-1 ILP problem can be defined as: Minimize c x Subject to b + A x > 0. (2.1) c = (c n , c_, ... c ) and x = (x n , x_, ... x ) are n-dimensional vectors, V 1'2 n 1'2 7 n b = (b n , b_, ... b ) is an m-dimensional vector, A = [a. .1 is an n by 1' 2' 7 m ij m matrix, where x. = or 1, j=l, 2, . ,n are called variables; 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 ILL IP, it is further assumed that c, b., a. . are integers and all c.'s are greater i i ij i than or equal to zero. This is still a general form because any 0-1 ILP 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 such that b + A x > is satisfied is called a feasible solution . The optimal feasible solution is a feasible solution such that c x is minimum. If part of the variables have 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 in the furture. i* The program includes five main subroutines, INTL (iNiTiaL), CHK-IEQ (CHecK InEQualities), AGMT-VAR (AuGMenT-VARiable), BCKTRK -.CKTRack), CHNGMM (CHaNGe Maximum sum and Minimum sum). The linkage between them is shown in Fig. 1. The lines connecting CHNGMM with other subroutines mean that CHNGMM may be called by CHK-IEQ, ACMT-VAR or BCKTRK and then returns to the subroutine from Ich it was called, (l) INTL This subroutine will read in coefficients of objective function and of inequalities, i.e. c, b, A in (2.1). If some variables has been specified to one or zero by the 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 the optimal feasible solution is known beforehand, the program will start with a partial solution without any fixed variable. In order to simplify the program, two inequalities will be generated in INTL. One is ZMAX-1 - c x > 0; the other is - ZMIN + c x > where ZMAX is the upper bound of the optimal objective value and ZMIN is its lo^er bound. These two inequalities which are added to the original set of inequalities in (2.1) guarantee that the objective That is, the inner product, c x, corresponding to the optimal feasible solution. IMTL if CHK-IEQ • • I \ AGMT-VAR o BCKTRK J CHNGMM (^ - Fig. 1. Linkage between main subroutines value of a feasible solution to be found next is always greater than or equal to ZMIN and smaller than ZMAX. Whenever a better feasible solution is obtained, ZMAX will be updated to the objective value of the new feasible solution. The initial values for ZMAX and ZMIN will be discussed in Chapter h. Therefore, the objective value of a new feasible solution is always smaller than 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 solution is underlined, then during backtrack the opposite value of this variable will not be assigned. Assume a partial solution with F = {x -* f . , x. -* f . ..., J-i J-i Jo ^2 *•* x. -* f } is given, where x. for j = j , ..., j is assigned to a \ K j i k 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 feasible solution now means a solution which satisfies both (2.1) and these two generated inequalities. The set of fixed variables. (a) Partial Sum : y(F) = (y^F), y 2 (F), ..., yjF)) y.(F) = b. + E a. . f. i = 1, 2, ...m 1 x £F 1J J (b) Maximum Sum : u(F) = (u _(F), u (F), ... u (F)) u.(F) = b. + £ a. . f . + E a. . 1 x.eF 1J J x.ew 1J a. .X) = y.(F) + E a. . i = 1, 2, . . . m. x.ew a. >0 (c) Minimum Sum : 1(F) = U.(F), ^(F) . .., i (F)) m i.(F) = b. + E a. . f . + E a. . i i x.eF 1J J x.ew 1J a. .<0 = y.(F) + E a. . i = 1, 2, ...m. x.ew ^ J a. .<0 ij 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, -0.(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. (t>) If u.(F) > for some i, and if there exist a free variable x such that |et. .| > 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 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. 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 i.(F) for each inequality before the checking of u. (F). If &.{Y) > for some i, then the i-th inequality is always 9 satisfied, no matter what 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 3 according to one of the schemes in Chapter 3» After assigning a free variable, the program will check whether the variable can be p seudo -underlined or not and pseudo underline the free 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. 3 (k) 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 [U] * The conditions for pseudo underlining a variable is discussed in [6]. 10 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 variable, its corresponding variable number with a 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 underlined. For example, assume a partial solution of a problem with six variables is represented by X = {-2, -3, k) , XS = {-2, 3, -k) . That is, x„ is assigned to zero and underlined, x is assigned to zero and not underlined, Xi 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, k, 1}, XS = {-2, 3, -h, -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 opposite value and underlines it. For example, with the * For example the variable number of x_ is 5« 5 11 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 underlined. The new partial solution will be X = {-2, 3), XS = {-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. If all fixed variables are underlined when the program transfers to BCKTRK, all solutions have been implicitly enumerated. The feasible solution in memory is an optimal feasible solution . If no feasible solution has been found, the problem is infeasible. (5) CHNGMM In the program, u(F) and £(F) are used very often. In order to save time, the program updates their values whenever a free variable is assigned to some value instead of calculating them every time they are used. When a free variable x. is assigned to 1 or in some J subroutine, the program will transfer to CHNGMM. If x . is assigned J to 1, CHNGMM updates u(F) and 2(f) by setting Only one of optimal feasible solutions will be obtained. 12 u.(F') = u.(F) i.(F') = i.(F) + a. . if a. . > u.(F') = u.(F) + a. . i.(F') = i.(F) if a . . < l l ij l I N ' ij u.(F') = u.(F) i.(F') = i.(F) if a . . = If x. is assigned to zero, then CHGMM will set J u.(F') = u.(F) -a.. i.(F') = i.(F) if a . . > l l io I i ij u.(F') = u.(F) i.(F') = i.(F) - a. . if a . . > l l l i ij a ij u.(F') = u.(F) i.(F») = i.(F) if a. . = i l l i ij Then the program transfers back to the subroutine from which CHNCMM was called. CHAPTER 3 SCHEMES FOR AUGMENTING VARIABLE (AGMT-VAR) (1) Scheme one Let i(F) be the minimum sum (as defined on Page 7) corresponding to a set of fixed variables represented by F, and 1(F; x. -*• l) be J 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. J J be the number of inequalities where i.(F) < and £.{F; x. -*• l) > 0. X X 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> the third scheme will be used. No other number than 1,2,3, will be accepted by SCHEME and an error message will be printed, (h) COEFLG. COHFLG, 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 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, (i) TYPE TYPE, is punched in columns Ul through h-5. It indicates how inequalities will be supplied. In order to describe the input format of inequalities let us rewrite them as below: 23 Col. Col. 1 Col. 2... Col. n Rowl b x + a 11 x 1 + a^ ^ + . +a ln x n >0 Row 2 b 2 + a 2iXl + a^^ + a 2n X n ^ ° (lul > 0*0*«****0*00««0*«*«**0«000«««**«0***«0»000*000 Row m "b + a _ x_ + a x_ +.......+ a x >0 m mil m2 T? mm n — Only non-zero coefficients need be supplied. Users may supply inequalities in two different ways. One is to supply them raw by row i.e. list non-zero coefficients, and their column numbers in each row and supply them in ascending row number order. Another is to list non-zero coefficients and their ro*r numbers in each column and supply them in ascending column number order. For example, if one wants to solve two 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 the rowwise input is desired, TYPE should * The column number of a. . in (k.l) is o* ** The row number of a. . in (k.l) is i 10 2k be assigned to zero or any negative number. Otherwise, it should be any positive number. (3) Objective Function Card(s) Only the first 72 columns of each card for objective function are used. 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 is divided into a certain number of entries where the number of columns for each entry depends on the value of COEFLG. If COEFLG is set to k, 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 on the first four columns of each entry. Its corresponding column number is on the last four columns of each entry. Only non-zero coefficients have to be specified. They have to be arranged in ascending column number order. The coefficient of smaller column number should be before those of larger column numbers. 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 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. For the case of COEFLG equal 8, every thing is the same except that each entry consists of twelve 25 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 example given in the Appendix. (h) Inequality Cards. In the same way as objective function cards, the first 72 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 h. 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. 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 columns number order with their values in the 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. 26 (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 coefficients of each column are listed according to their row order with their values on 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 for b.) first, card(s) for column 1 (column for a. n ) second l ll etc. Furthermore non-zero coefficients of each column nust be arranged in ascending row number order. 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 'E'. If some partial solution will follow, column 73 should be the letter 'S'. Note that all inequalities have to be transformed to the form (k.l) before preparing data. The maximum number of non-zero coefficients for each row is 399 a^d for each column is 999* The total number of non-zero coefficients of all inequalities can not exceed 10000. (5) Initial Partial 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 10 every variable number appears in XS must also appears in X, but it may have different signs in X and XS. 27 Therefore the first four columns of each entry is 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 sign as in XS appears in X. If it is 0, the opposite sign is assumed in X . The termination of partial solution is indicated by a blank entry. All entries after the blank entry must be blank. Otherwise an error will be introduced into computation. If a partial solution has exactly fifteen fixed variables, then a blank card has to be added in order to show the termination. Note if no initial partial solution is desired, the initial partial 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. (6) 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. * Refer to the partial solution card of the example in Appendix CHAPTER 5 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, which may give the user some idea of the efficiency of the algorithm. The number of backtracks is the number of times the program went to the subroutine BCKTRK, i.e. the program either finds the only feasible solution with a certain F (defined in page 6) 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 bigger 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. The first two numbers will be those supplied by the user. If they are different from the value calculated by the program, a message asking the user to check his data will be given. Then, the objective function and inequalities of the problem will be printed. The inequalities are transformed to the form -b < A x. The '<' sign is actually printed as 'LE' (less than or equal to). Only variables 28 29 with non-zero coefficients are printed. For a positive coefficient, the program will print an '+' sign before the value. However for a negative coefficient, the program also will print an '+' sign before the '-' sign of the negative value. . If there is an initial partial solution, it will be printed in the form as X and XS described on page 10 . In addition to the initial partial solution, the partial sum (y(F) of Def . (C) on page 7 ) for each inequality will also be given They are listed according to the row order. In order to check each inequality for correctness, the user can supply a trivial feasible solution initially (if there is one). If some y. (F) is found to be negative, the user will find that the i-th inequality is wrong. 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 number of backtracks and number of underlined variables added, up through the specified iteration will also be given,, From a partial solution printed, the user can evaluate how many solutions have been implicitly enumerated at that 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, A, 2, 7, -6} xs = {l, k, -2, 7, -6}, * Refer to the output in the Appendix. 30 then from X we knew X_, "<. , x , X_, x, are fixed variables and :■: , :-: , :•' are assigned to one and Xi, 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 implicitly checked, the partial solutions with F = {x. -* 1, Xp -»■ 0, x. -»• 0} (due to -2 in XS) and with F ■ {x.. -* 1, Xp->lx, -»0x>-»lx 7 -»l) (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 , the total number of solutions with F or F i.e. the total number of solutions which have been implicitly enumerated, is 2 +2 If the problem is solved with an optimal feasible solution, the optimal feasible solution will be printed. It is represented by 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 r = 1, x_ = x_ = 0, then it will 1 3 *+ d 2 5 be printed as VAR. NO 1 2 3 h 5 6 VALUE 10 110 1. In addition to the optimal feasible solution, the value of the objective function corresponding to the optimal feasible solution (optimal objective value), the total number of iterations, the number 31 of iterations when the optimal feasible solution was found, the number of backtracks and the number of underlined variables added will also be given. If the problem doesn't 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 is exceeded. The best feasible solution which has been found (if any) and some algorithm statistics will also be given. 32 APPENDIX EXAMPLE Assume we want to solve the following problem. Minimize 8^ + k^ + 2x- + x, + 8.^ + Hxq + 2^ + x^ + 8^ + kx 12 +2x 13 +X lk subject to, -5U -2x 1 -3x 2 + & 3 + ^ + 2x 5 + x 6 + l6x^ + 8x g + hx + 2x 1Q + l6x-- + Px^ + Ux^o + 2x ±1+ > -5 1 * - 3c-l - 2x2 + l6x 3 + 8x^ + kx^ + 2x 6 + 8x_, + ^Xg + ^x + x 10 + l6x u + 8^ + iflc 4- 2 X;L ^ > -15 + 9x, + 8x, + Ux, + 2x c + x< :> o 1 3 4 5 o — -15 + 9Xp + Sx,^ + l4x Q + 2j£ + x 1Q > This problem has 14 variables (N=lU), 6 inequalities (M=6) i.e. the above 4 plus 2 generated by the program, (i.e. ZMIN < c x and - ZMAX + 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 U6 (1 plus the sum of all coefficients in the objective This is a problem solved by Haldi in [5]. 33 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). Each non-zero coefficient in the objective function and in the inequalities will occupy h columns (COEFLG = k) . The first scheme of assigning free variables will be used (SCHEME = l). We will supply 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 x R . Then ^2 -' "5 the input data for this problem well be: 8* 1. Title card Columns 1-8 bEXAMPLE Columns Columns 9 ~ 16 bPROBLEM !T ~ 80 blank 2 c ZMAX card Columns 1~5 bbbU6 3. Parameter card Columns 1 ~ 5 bbblU 16 ~ 20 bbbb2 31 ~ 35 bbbbl Columns 6 ~ 80 blank Columns 6 ~ 10 bbbb6 21 ~ 25 bbb20 36 ~ ifO bbbbU Columns 11-15 bbbbO 26 - 30 bbb20 1+1 ~ U5 bbbbO * "b" in column one represents blank 3k L. Objective function cards First Card Columns Columns 1 - k bbb8 5 ~ 8 bbb3 13 «- 16 bbbU 17 ~ 20 bbb2 25 - 28 bbbl 29 - 32 bbb6 37 - 1+0 bbb7 hi - 1+1+ bbbU 1+9 - 52 bbb2 53~56 bbb9 6l - 6U bblO 65~68 bbb8 73 ~ 80 blank Second card Columns Columns 1 ~ h bbbU 5 ~ 8 bb!2 13 ~ 16 bbl3 17 ~ 20 bbbl 25~28 bbbb 29 ~ 32 b-99 5. Inequality cards First inequality First card Columns Columns 1 ~ 14 b-5*+ 5~8 bbbO 13 - 16 bbbl 17 ~ 20 bb-3 25-28 bbb8 29 - 32 bbb3 36 ~ 1+0 bbbU 141 ~ 1+1+ bbb2 1+9 - 52 bbbl 53-56 bbb6 Columns 9~12 bbbU 21 - 2k bbb5 33 ~ 36 bbb8 1+5 ~ kQ bbb8 57 ~ 60 bbbl 69 - 72 bbll Columns 9-12 bbb2 21 ~ 2k bblU 33 ~ 80 blank Columns 9-12 bb-2 21 - 2k bbb2 33 - 36 bbbU 1+5 - 1+8 bbb5 57 - 60 bbl6 35 6l ~ 6k bbb7 73 ~ 80 blank Second card Columns 1 ~ k bbb^ 13 ~ 16 bblO 25 ~ 28 bbb8 37 ~ ^0 bbl3 k9 ~ 52 bbbb Second inequality First card Columns 1 ~ k D -5^ 13 ~ 16 bbbl 25 ~ 28 bbl6 37 ~ UO bbbU k9 - 52 bbb2 6l ~ 6U bbb7 73 ~ 80 blank Second card Columns 1 ~ k bbb2 13 ~ 16 bblO 25 ~ 28 bbb8 65 ~ 68 bbb8 69 ~ 72 bbb8 Columns 5~8 bbb9 17 ~ 20 bbl6 29 ~ 32 bbl2 kl ~ kk bbb2 53 ~ 56 b-99 Columns 5 ~ 8 bbbO 17 ~ 20 bb-2 29-32 bbb3 kl ~ kk bbbU 5U ~ 56 bbb6 65 ~ 68 bbbU Columns 5-8 bbb9 17 ~ 20 bbl6 29 - 32 bbl2 Columns 9~12 bbb2 21 ~ 2k bbll 33 ~ 36 bbbl+ k5 ~ kQ bhlk 57 ~ 80 blank Columns 9-12 bb-3 21 ~ 2k bbb2 33 - 36 bbb8 U5 ~ ^8 bbb5 57 ~ 60 bbb8 69 - 72 bbb8 Columns 9 ~ 12 bbbl 21 ~ 2k bbll 33 ~ 36 bbbl+ 36 37 - UO bbl3 1+9 - 52 bbbb Third inequality Columns 1 ~ k b-15 13 ~ 16 bbbl 25 ~ 28 bbb*+ 37 ~ 1+0 bbb5 1+9 - 52 bbbb Forth inequality Columns 1 ~ k b-15 13 ~ 16 bbb2 25~28 bbbl+ 37 ~ 1+0 bbb9 1+9 - 52 bbbb 73 S Ul ~ 1+1+ bbb2 53 ~ 56 b-99 Columns 5-8 bbbO 17 ~ 70 bbb8 29-32 bbbl+ 1+1 ~ 1+1+ bbbl 53 ~ 56 b-99 1+5 ~ 1+8 bbll+ 57 ~ 80 blank Columns 9-12 bbb9 21 - 2k bbb3 33 ~ 36 bbb2 1+5-1+8 bbb6 57 ~ 80 blank Columns 9-12 bbb9 21 - 2k 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 73 ~ 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' 6. Initial partial solution card Columns Columns Columns 1-5 bbb50 6-10 bbb21 11 - 15 bb-8l 16 ~ 80 blank 37 7. 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 reproduced below. 38 -r >r -r ■* rr «■ — rs, rs, r\, j- r j- *•» ■£ C *- —• -. J- J ^ — — CC X ,r ^. ,* rx. *r ? ^ «r 4 ^ ^- — ,*■ — j T - . - - - <"s, O *N <-> f" *■■ -ffNtJ-rg U f*J *N( — cr — -r — ( — — mm U — — — (J* -9 X tT O ^ A, * > 4 | - > — O — — u. — I « W « w — ^ at -J u _> *- a c K OJ ■* LJ u u W — — < < a. u. tu — • u> c LJ ^ — j ■ IT <\» + \T 4 39 >* -■ m <-* f\l -4 r\, 00 (J- o — cr in in -4- 00 < or i— X- < CO o a UJ ^ CJ •— LXJ _ l_J a u> l_) *i oo U. cu a <»■ • a c < z > v0 ll LP o |_) >T «-> — > -J PI t— > U_J <•) UJ IM *— • -J oc 1—1 l/J i—t — < > UJ > au u 00 z u LIST OF REFERENCES 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, 1965* Baugh, C. R. , Ibaraki, T. , Liu, T. K. and Muroga, S., "Optimal Network Design Using NOR and NOR-AND Gates by Integer Programming, " to be published. ( k) Geoff erion, Arthur M. , "Integer Programming by Implicit Enumeration and Bala's Method", SIAM Review , vol. 9, no. 2, pp. 178-190, April I967. 5) Haldi, John, "25 Integer Programming Test Problems," Working Paper Ho. 1+3, Graduate School of Business, Stanford University December I96U. (6) Ibaraki, T. , Baugh, C. R. , Liu, T. K. and Muroga, S., "An Implicit Enumeration Program for Zero-One Integer Programming, " to be published. 7) Muroga, S. and Ibaraki, T. , "Logical Design of an Optimal Network by Integer Linear Programming - Part I, " Report No. 261+ 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. 1+0