IOR Tutorial User Manual

 

 

 

 

 

 

 

 

 

 

 

 

Accelet Corporation

 

 

 

support@accelet.com

www.accelet.com

3709 Starr King Circle, Palo Alto, California 94306

 

 

 

 

 

 

 

 

 

 

 

IOR Courseware User Manual dated 30 October 2000 ("Manual") written by Accelet Corporation, (the "Author"), with offices at 3709 Starr King Circle, Palo Alto, California 9306, for the final product delivery of the Hillier & Lieberman 7th Edition Java programming project, (the "Work") according to the contract (Originally dated on 11 July 2000, and later modified on 11 October 2000) between McGraw-Hill Companies, Inc. (the "Publisher"), with offices at 1221 Avenue of the Americas, New York, New York 10020, and the author Accelet Corporation concerning a contribution for a work titled by Hillier & Lieberman 7th Edition Java programming project.

 

The Manual provides details computer instructions and some OR Algorithm basics to the users.

 

Introduction to Interactive Operations Research Tutorial

 

 

IORTutorial has some distinctive features. The most important one is that, for your homework, you will have the opportunity to execute the algorithms interactively - you make the decisions and the computer does the calculating. On the first iteration of most algorithms, you will be told if you have made a mistake. When you finish the problem, you will be able to print out your work on all the iterations into a file to turn in for homework. This tutorial software uses visual interaction to teach the how of algorithms.

 

Because of its emphasis on teaching algorithms efficiently through interactively executing them for homework, this software is purposely confined to small problems like those in the problems sections of the textbook. If you simply want to solve larger problems (or even small problems) automatically, you should turn to other software packages included in your OR Courseware.

 

Another distinctive feature of IOR Tutorial is that it is coordinated with the OR Tutor package in your OR Courseware. For many of the algorithms for which an interactive procedure is provided here, a corresponding demonstration example is included in OR Tutor. These demonstration examples have evolving algebraic and geometric displays to clarify what is really going on with the various algorithms and techniques. Whenever a demonstration example is available for the current algorithm, we recommend that you go through it first in OR Tutor before using the corresponding interactive procedure here for the first time.

 

At the top of the screen, up to five different menu options are available to you. (To activate a menu option, select the appropriate function with the mouse or press Alt + F for the File menu). Once you have done this, you will be given a list of menu items. For example, if you choose the File menu, then the following will appear under the File menu title:

 

       1 New

       2 Open

       3 Save

       4 Print to File

       5 Quit

 

To perform one of these commands, select the appropriate menu item or press the hot key underlined for each item. If you decide not to perform any of these commands, press the ESC key. For some menu options, one choice will have a check mark by it. This choice is either the default response or the most recently selected choice. If this is the one you currently want, you need do nothing and this choice will continue to be the active one. There may be times when a command or menu are unavailable, in which case that command or menu title will appear dimmed. An unavailable command generally will become available as soon as predecessor procedures have been executed.

 

A description of each of the menus follows:

 

File: The File menu provides you with a choice of basic filing operations. These include New (to clear the program's memory and start fresh), Open (to load a previously saved file), Save (to save your work), Print to File (to print out your work into a text file), and Quit.

 

Area: The Area menu provides you with a choice of ten areas of Operations Research, namely, General Linear Programming, The Transportation Problem, Network Analysis, Integer Programming, Nonlinear Programming, Markov Chains, Queueing Theory, Inventory Theory, Markov Decision Processes, and Simulation.

 

Procedure: Having chosen your general area, the Procedure menu provides you with a choice of procedures, such as enter a model, solve the model with a particular algorithm, etc. Once a procedure is chosen, you may choose "General Introduction to Current Procedure" from the Help menu at any time.  You should do this immediately the first time you use a procedure.

 

A description of the menus continues below:

 

Option: Having chosen your general area and procedure, this menu provides you with a choice of specific options for how to display or carry out that procedure. (Only a few of the procedures have relevant options in this menu.)

 

Help: If at ANY time, you don't know how to execute the next computer step, choose "Specific Help on Current Step" from the Help menu. This menu choice displays specific instructions on the screen. Since only brief instructions (if any) are displayed on procedure screens, you probably will need to make frequent use of this menu option the first time you go through a procedure. To receive general information about the current procedure (including problem size limitations), choose "General Introduction to Current Procedure."

 

When you execute a procedure from the Procedure menu, if any input is required, there will be an editable text field displayed on the screen. The currently selected text field can be selected with the mouse, or moved around the screen with the TAB key. The use of this text field is to signify that input is required. For example, if a number is being asked for (such as the number of variables in a linear programming model), then a number will appear inside the text field. This number is the default response. If you want to change this value, just type the number you want. Nothing more needs to be done to accept the last value appearing there. Pressing the TAB key will automatically move the selected text field to the next spot where input is required.

 

If you find that you made a mistake at a previous step, you can backtrack to make a correction as far back as you want simply by pressing the BACK button when it is enabled (repeatedly if necessary).

 

This tutorial software has been written by Accelet Corporation. The project involved JAVA re-engineering of the software package developed by Mark S. Hillier to accompany the preceding two editions (the 5th and 6th editions) of the textbook. The software development team for this project is led by William Y. Sun (wsun@accelet.com), Daniel D. Wang (dwang@accelet.com), and Stanley Y. Wang (swang@accelet.com). Accelet Corporation is a client oriented software solution service provider. For more information about Accelet, please visit its website www.accelet.com.

 

Although this software package has been carefully tested, no such package can be error free. Therefore, to enable us to further improve the package for future users, we strongly encourage you to report any bugs you think you have found to Accelet Corporation (support@accelet.com) and the co-author, Prof. Fred S. Hillier (fhillier@leland.stanford.edu), via e-mail. Please be as specific as possible. Although we are unable to provide technical support, we will make every effort to correct significant bugs reported to us for the next printing of the book.

 

This ends the general introduction. You may reread it any time by choosing New under the File menu (be sure to save your work first, as this clears the computer's memory of anything you have done).

 

 

 

 

 

 

 

 

 

 

 

TABLE OF CONTENTS

 

 

Chapter 1                         General Linear Programming   10

1.1    Enter or Revise a General Linear Programming Model.. 10

1.1.1              General Instructions  10

1.1.2              Specific Instructions  10

1.2    Solve Automatically by the Interior-Point Algorithm.. 12

1.2.1              General Instructions  12

1.2.2              Specific Instructions  12

1.3    Set up for the Simplex Method - Interactive Only  13

1.3.1              General Instructions  13

1.3.2              Specific Instructions  13

1.4    Solve Interactively by the Simplex Method.. 15

1.4.1              General Instructions  15

1.4.2              Specific Instructions  15

1.5    Sensitivity Analysis. 17

1.5.1              General Instructions  17

1.5.2              Specific Instructions  17

1.6    The Modified Simplex Method.. 19

Chapter 2                         Transportation Problems  19

2.1    Enter or Revise a Transportation Problem.. 19

2.1.1              General Instructions  19

2.1.2              Specific Instructions  19

2.2    Finding an Initial Basic Feasible Solution.. 20

2.2.1              General Instructions  20

2.2.2              Specific Instructions  21

2.3    Solve Interactively by the Transportation Simplex Method.. 22

2.3.1              General Instructions  22

2.3.2              Specific Instructions  22

Chapter 3                         Network Analysis  23

3.1    Interactive Network Simplex Method.. 23

3.1.1              General Instructions  23

3.1.2              Specific Instructions  24

Chapter 4                         Integer Programming   26

4.1    Enter or Revise an Integer Programming Model. 26

4.1.1              General Instructions  26

4.1.2              Specific Instructions  27

4.2    The Binary Integer Programming Model. 28

4.2.1              General Instructions  28

4.2.2              Specific Instructions  28

4.3    The Mixed Integer Programming Model. 29

4.3.1              General Instructions  29

4.3.2              Specific Instructions  29

Chapter 5                         Nonlinear Programming   29

5.1    Interactive One-Dimensional Search. 30

5.1.1              General Instructions  30

5.1.2              Specific Instructions  30

5.2    Automatic Gradient Search. 31

5.2.1              General Instructions  31

5.2.2              Specific Instructions  31

5.3    Interactive Gradient Search. 32

5.3.1              General Instructions  32

5.3.2              Specific Instructions  33

5.4    Interactive Modified Simplex Method.. 34

5.4.1              General Instructions  34

5.4.2              Specific Instructions  34

5.5    Interactive Frank-Wolfe Algorithm.. 35

5.5.1              General Instructions  35

5.5.2              Specific Instructions  36

5.6    Sequential Unconstrained Minimization Technique-SUMT   37

5.6.1              General Instructions  37

5.6.2              Specific Instructions  38

Chapter 6                         Markov Chains  39

6.1    Entering the Transition Matrix.. 39

6.1.1              General Instructions  40

6.1.2              Specific Instructions  40

6.2    Chapman-Kolmogorov Equations. 40

6.2.1              General Instructions  40

6.2.2              Specific Instructions  40

6.3    Steady State Probabilities  41

6.3.1              General Instructions  41

6.3.2              Specific Instructions  41

Chapter 7                         Queueing Theory   41

7.1    Jackson Network. 41

7.1.1              General Instructions  41

7.1.2              Specific Instructions  41

Chapter 8                         Inventory Theory   42

8.1    Single Period Model, No Setup  42

8.1.1              General Instructions  42

8.1.2              Specific Instructions  42

8.2    Single Period Model, With Setup. 43

8.2.1              General Instructions  43

8.2.2              Specific Instructions  44

8.3    Two Period Model, No Setup  45

8.3.1              General Instructions  45

8.3.2              Specific Instructions  45

8.4    Infinite Period Model, No Setup  46

8.4.1              General Instructions  46

8.4.2              Specific Instructions  46

Chapter 9                         Markov Decision Processes  47

9.1    Enter Markov Decision Model  47

9.1.1              General Instructions  47

9.1.2              Specific Instructions  48

9.2    Interactive Policy Improvement Algorithm-Average Cost. 49

9.2.1              General Instructions  49

9.2.2              Specific Instructions  49

9.3    Interactive Policy Improvement Algorithm-Discounted Cost  50

9.3.1              General Instructions  50

9.3.2              Specific Instructions  50

9.4    Interactive Method of Successive Approximations  52

9.4.1              General Instructions  52

9.4.2              Specific Instructions  52

Chapter 10                         Simulation  53

10.1     Enter a Queueing Problem   53

10.1.1                 General Instructions  53

10.1.2                 Specific Instructions  54

10.2     Interactively Simulate a Queueing Problem   55

10.2.1                 General Instructions  55

10.2.2                 Specific Instructions  55

 

 

 

Chapter 1       General Linear Programming

 

1.1       Enter or Revise a General Linear Programming Model

 

1.1.1          General Instructions

 

This procedure enables you to quickly enter a linear programming model, or to revise a previously entered model.

 

The model is entered in its original form as described in Section 3.2, without slack variables, etc. The maximum size allowed (counting just decision variables and functional constraints) is 6 variables and 6 constraints.

 

Detailed computer instructions are available (Help menu).

 

Press the ENTER key to complete the entering of the number of variables and the number of constraints.

 

(It's not necessary to press the ENTER key when editing the other fields.)

 

If you simply wish to revise the model you entered last (or one you saved and just recalled with the Save and Open commands under the File menu), you do not need to reenter the entire model. Instead, locate the entry by the mouse where you want to revise and then do so.

 

When you finish entering the model, press the FINISH button, and then return to the Procedure menu. If you wish to solve the model interactively by the Simplex Method, first choose the "Set Up for the Simplex Method - Interactive Only" procedure (to introduce slack variables, etc.).

 

1.1.2          Specific Instructions

 

Enter the linear programming model in its original form (i.e., without slack variables, artificial variables, etc.). Any of the legitimate forms described in Sec 3.2 can be used. When you finish entering or revising the model, there are two techniques available for solving the model under the Procedure menu, Automatic Interior Point and Interactive Simplex Method (for the Interactive Simplex Method procedure, you must first choose "Set up for the Simplex Method - Interactive Only").

 

Enter the number of decision variables

 

Enter the number of decision variables in the original model (not including slack variables, artificial variables, etc.), and then press the ENTER key. Note that the maximum size allowed for the number of decision variables is 6. In subsequent procedures under the Procedure menu, you will be further limited to 10 variables after adding slack variables, surplus variables, etc. (If you will be using the Sensitivity Analysis procedure and will consider the case where a new variable is introduced into the model, you should include the new variable now with all its coefficients set equal to zero.)

 

Enter the number of functional constraints

 

Enter the number of functional constraints in the original model, and then press the ENTER key. Note that the maximum size allowed for the number of functional constraints is 6. (If you will be using the Sensitivity Analysis procedure and will consider the case where a new constraint is introduced into the model, you should include an extra constraint now with all its coefficients and right-hand side set equal to zero.)

 

Enter the objective function

 

Select either Max or Min depending on whether the objective is to maximize or minimize Z.

 

Enter the coefficients of the variables in the objective function. Enter either integers or decimal numbers.

 

Enter functional constraints

 

For each functional constraint:

 

1.         Enter the coefficients of the variables in the functional constraint. Enter either integers or decimal numbers.

2.         Select £, =, or ³ to specify the form of the constraint.

3.         Enter the value of the right-hand side in the functional constraint. Enter either an integer or a decimal number.

 

Enter the lower bounds of the decision variables

 

The procedure for entering the model assumes that all of the variables have nonnegativity constraints and no other lower-bound constraints.

 

If this assumption is correct, you need to do nothing more and can go on with other entries of the current procedure. However, if a variable has a lower bound other than zero, then enter the lower bound. In this case, the entry should be either an integer or a decimal number. If the variable is unbounded below, then select the operator, "n/a" (bound not available.)

 

1.2       Solve Automatically by the Interior-Point Algorithm

 

1.2.1      General Instructions

 

Once you have entered (or revised) a linear programming model with "Enter or Revise a Linear Programming Model" routine under the Procedure menu, this routine automatically sets up and solves (approximately) the model by the interior-point algorithm presented in Sec.7.4. You will need to enter an initial (feasible) trial solution, and then the procedure will perform as many iterations as desired (up to a maximum of 15). You will see the sequence of trial solutions displayed on the screen, which can then be printed under the File menu. These trial solutions eventually converge to an optimal solution. However, be aware that with a small number of iterations the final trial solution may not be very close to optimal.

 

This routine can handle up to six functional constraints and ten variables (including slack, surplus, and artificial variables).

 

Note that the Option menu provides you with a choice of two values (0.5 or 0.9) for alpha, with 0.5 as the default value.

 

1.2.2      Specific Instructions

 

This procedure is used to apply the interior-point algorithm described in Sec.7.4 to the linear programming model that you have entered. You enter the initial trial solution, and then the computer will automatically perform up to 15 iterations. Note that the Option menu provides you with a choice of two values (0.5 or 0.9) for alpha. You may print your results by choosing Print to File under the File menu.

 

Entering the initial trial solution

 

In order to start the interior-point algorithm, an initial trial solution is needed. This solution needs to be both feasible and in the INTERIOR of the feasible region, i.e., EVERY variable (including slack, surplus, and artificial variables) must be strictly greater than zero. Enter either an integer or a decimal number for the value of each variable and then press the OK button.

 

To backtrack, press the BACK button.

 

Performing another iteration.

 

Press the NEXT button to have the computer perform one more iteration of the interior-point algorithm. A maximum of 15 iterations can be performed.

 

1.3      Set up for the Simplex Method - Interactive Only

 

1.3.1      General Instructions

 

Once you have entered (or revised) a linear programming model, this procedure enables you to quickly set up the model in preparation for solving it interactively by the Simplex Method. In particular, you will be introducing slack variables as described in Sec.4.2 and, if needed, adapting to nonstandard forms as described in Sec.4.6. When you finish adding slack variables, etc., you will have a choice. If you introduced no artificial variables, then you should next choose the 'Solve Interactively by the Simplex Method' procedure. If one or more artificial variables have been introduced, then you will be asked whether you would like to use the Big M or Two-Phase method to handle them. In the latter case, you will be asked to enter a new objective function for Phase 1. In either case, you will then enter a routine used to eliminate basic variables from equation 0. Finally, when you have finished this process, you may choose the 'Solve Interactively by the Simplex Method' procedure under the Procedure menu. After completing that procedure, you next may choose the "Sensitivity Analysis" procedure under the Procedure menu. If you wish to use the "Sensitivity Analysis" procedure for a problem with artificial variables, you should add the artificial variables and any slack variables LAST in this current procedure AFTER selecting the other necessary actions, and then choose the Big M method.

 

1.3.2      Specific Instructions

 

This procedure is used to implement the initialization step of the Simplex Method as described in Secs. 4.2 and 4.6. The linear programming model is augmented as needed to be able to apply the Simplex Method as it is presented in Chapter 4. The converted model must have the following properties:

  1. The objective needs to be to maximize Z or (-Z).
  2. Each functional constraint needs to be in equality form.
  3. Each functional constraint needs an initial basic variable.
  4. Each functional constraint needs a nonnegative right-hand side.
  5. Each variable needs to have a nonnegativity constraint.

 

If  you introduce artificial variables, you will have the choice of dealing with them with either the Big M method or the Two-Phase method.  To correct a mistake, press the BACK button to backtrack.

 

Augmenting the model

 

Use the mouse to select an equation or inequality which that to be modified. Then choose one or more of the four commands in turn to perform the stated modification:

          Add Slack Variable

          Subtract Surplus Variable

          Add Artificial Variable (represented by a Capital Letter)

          Multiply Equation by (-1)

 

The following commands are used to begin dealing with the variables allowed to be negative:

     1.   Convert One Variable to Difference of Two Variables

     2.   Convert One Variable to Variable Plus Constant

 

Select the first command for a variable with no bound on the negative values allowed. Select the second command for a variable with a nonzero lower bound. Select Revert to Original Model to restart to correct a mistake prior to the preceding step. Once you are finished converting the model to augmented form, press the FINISH button.

 

Selecting either the Two-Phase or the Big M method

 

In the process of converting the linear programming model to augmented form, you introduced artificial variables.

To deal with these variables, you have a choice of the Big M method or the Two-Phase method. Both methods are described in Sec. 4.6.

 

Selecting the objective and entering coefficients of the new objective function

 

In order to perform Phase 1 of the Two-Phase method, a new objective function for just this phase (as described in Sec. 4.6) needs to be entered. Select either Max or Min depending on whether you think the objective is to maximize or minimize this new objective function. A coefficient can be an integer or a decimal number.

 

Converted to Proper Form from Gaussian Elimination

 

The simplex tableau needs to be converted to proper form from Gaussian elimination before it can be operated on by using the Simplex Method (i.e., the coefficients of the basic variables in Eq. 0 need to be equal to 0). If the tableau is in this form, you can go directly to applying the Simplex Method by choosing "Solve Interactively by the Simplex Method" under the Procedure menu. Otherwise, a multiple of some equation needs to be subtracted from Equation 0. The number you enter can be an integer or a decimal number. If you would like to enter a Big M number, simply type M or m (e.g., 2M+3 or 2m+3).

 

1.4       Solve Interactively by the Simplex Method

 

1.4.1      General Instructions

 

This procedure enables you to interactively execute the Simplex Method as presented in Sec.4.3. Your role is to apply the logic of the algorithm, and the computer will do the number crunching. The computer also will inform you if you make a mistake on the first iteration.

This procedure can handle up to 6 functional constraints and 10 variables (including slack, surplus, and artificial variables), which encompasses all relevant problems at the end of Chap. 4. When you finish a problem, you can print out all your work by choosing Print to File under the File menu. If you are interrupted before you finish, you can save your work (choose Save under the File menu) and return later (choose Open).

 

 

1.4.2      Specific Instructions

 

This procedure allows you to apply the Simplex Method interactively to solve a linear programming problem. At each iteration, the computer does the calculations while you make the following sequence of decisions:

 

    1.  Decide whether or not the current solution is optimal

    2.  Choose the entering basic variable

    3.  Choose the pivot equation containing the leaving basic variable

4.  Choose the factor by which to divide the pivot equation

5.       Choose the multiple of the pivot equation to subtract from each of the other equations in turn

 

 

Is the current solution optimal?

 

Enter y or Y and then press the FINISH button if the current solution is optimal. Otherwise, enter either n or N and then press the NEXT button. If there are multiple optima, you can investigate the other optimal solutions. Just enter n or N, and then press the NEXT button.

 

Selecting the entering and the leaving basic variable

 

Select the entering and the leaving basic variable by clicking on the corresponding column and row (pivot equation) above. Then enter the factor by which to divide the pivot equation so that it will be in proper form from Gaussian elimination (i.e., so that the coefficient of the entering basic variable is 1). Then press the NEXT button.

 

Choosing the multiple of the pivot equation to subtract from another equation

 

Enter the multiple of the pivot equation which needs to be subtracted from the equation in question to obtain proper form from Gaussian elimination (i.e., so that the coefficients of the basic variable are 0 in the latter equations), and then press the NEXT button. The numbers you enter may be integers or decimal numbers.

 

What to do once an optimal solution has been reached

 

Once you have obtained an optimal solution, you can print out all of your work (using the Print to File command under the File menu). Alternatively, you can apply sensitivity analysis to the model (using the Sensitivity Analysis command under the Procedure menu).

 

Determine which case holds

 

The artificial variables are represented by capital letters. Check the variables in the Basic Variable column (or, in Algebraic Form, the variables whose column is in proper form from Gaussian elimination) for the current final solution for Phase1. If none are artificial (the usual case), select: All artificial variables are nonbasic. If one or more are artificial, check their values in the Right Side column. If all these values are zero (degenerate basic variables), select:

Some artificial variables are basic, but all of them have value zero.

(Note that round off errors may cause a zero value to appear as a negligible nonzero value.)

If one or more of these values are > 0 (which occurs only if the model has no feasible solutions), select:

Some artificial variables are basic and have positive value.

 

Pressing the NEXT button to remove the artificial variables from the tableau

 

See the discussion (including the footnote) of the transition from Phase 1 to Phase 2 of the Two-Phase method in Sec. 4.6. Press the NEXT button to remove the artificial variables from the tableau for Phase 2.

 

Pressing the NEXT button to replace Eq.0 by the original objective function

 

As discussed in Sec. 4.6, Phase 2 of the Two-Phase method uses the original objective function rather than the special objective function used by Phase 1. Press the NEXT button to replace Eq. 0 from Phase 1 by the original objective function (converted to Eq. 0 form).

 

Pressing the NEXT button to convert the tableau to proper form from Gaussian elimination

 

After replacing Eq. 0 by the original objective function, the tableau may no longer be in proper form from Gaussian elimination. This occurs if any of the variables with nonzero coefficients in this objective function are basic variables in the current basic feasible solution. If so, press the NEXT button to have the computer automatically use Gaussian elimination to convert the tableau to this form. If not, simply press the NEXT button to continue.

 

1.5       Sensitivity Analysis

 

1.5.1      General Instructions

 

This procedure interactively executes the "Procedure for Sensitivity Analysis" summarized in Sec. 6.6. The linear programming problem considered is the last one solved by the Simplex Method with the interactive procedure. All the sensitivity analysis cases presented in Sec. 6.7 (and combinations thereof) can be performed. However, in order to perform operations on the final tableau when a new variable (Case 2b) or a new constraint (Case 4) has just been introduced, an extra variable or constraint with zero coefficients needs to be included in the original model to create the needed row or column in the final tableau. When revising the final tableau, you specify how to perform the calculations for applying the functional insight of Sec. 5.3. All actual calculations (including any conversions to proper form from Gaussian elimination and any reoptimization) are performed by the computer.

 

You can restart the procedure to independently investigate different changes in the model as often as desired. You also can print out the results each time by choosing Print to File under the File menu.

 

1.5.2      Specific Instructions

 

This procedure allows you to determine the effect that one or more changes in the original model may have on the final tableau by implementing the general procedure for sensitivity analysis presented in Sec. 6.6. You first make the changes in the initial tableau. Then you determine which parts of the final tableau will be affected, and determine their new values. Finally, you convert the final tableau to proper form from Gaussian elimination (if necessary), and then see whether the solution is optimal. If not, you can apply the Simplex Method or Dual Simplex Method to the final tableau to obtain the new optimal solution, if you wish. To correct a previous mistake at any time, press the BACK button to backtrack.

 

Locating where there is a change in the initial tableau

 

Select a number in the initial tableau that changes because of the change or changes made in the original model. If you decide instead that all needed changes already have been made, then choose any entry in the tableau and enter the same value that was there.

 

Making a change in the initial tableau

 

Enter the new value of the selected entry in the initial tableau, and then press the Next button. This value may be an integer or a decimal number.

When you are finished with the current procedure, click the FINISH button.

 

Are there any more changes in the initial tableau?

 

Enter y or Y and then press the Next button if there are more changes to be made in the initial tableau. Enter n or N and then press the Next button if there are no more changes.

 

Where is there a possible change in the final tableau?

 

Move the mouse to either a number in row 0 or a column below row 0 where there is a possible change in the final tableau (before converting to proper form from Gaussian elimination) due to the change(s) in the initial tableau (as discussed in Sec. 6.7). Then press the Next button. You will then be asked how the new values should be calculated, and then whether there are any other locations in the final tableau that might change.

 

Choosing the matrix or row vector to determine the new column values

 

In order to calculate the new values in the selected column, the fundamental insight presented in Sec. 5.3 is applied. To calculate these values, Secs.5.3, 6.6, and 6.7 indicate how a matrix or row vector in the final tableau will be multiplied by a column vector in the initial tableau.

 

Choosing the column vector to determine the new column values

 

In order to calculate the new values in the selected column, the fundamental insight presented in Sec. 5.3 is applied. To calculate these values, Secs. 5.3, 6.6, and 6.7 indicate how a matrix or row vector in the final tableau will be multiplied by a column vector in the initial tableau.

 

Are there any more possible changes in the final tableau?

 

Enter y or Y and then press the Next button if there are other areas of the final tableau that might have been affected (before converting to proper form from Gaussian elimination) by the changes in the initial tableau. Otherwise enter n or N and then press the Next button.

 

Choosing the constant to determine the new row 0 value

 

In order to calculate the new value of the selected coefficient in row 0, the fundamental insight presented in Sec. 5.3 is applied. To calculate this value, Secs. 5.3, 6.6, and 6.7 indicate how a row vector in the final tableau will be multiplied by a column vector in the initial tableau, and then a constant will be added.

 

Choosing the next command

 

Press one of the five commands you would like to perform.

        Revert to original tableau

        Convert final tableau to proper form

        Apply Simplex Method

        Apply Dual Simplex Method

               Current solution is optimal

 

See Secs. 6.6 and 6.7 for further information about making the selection.

 

1.6      The Modified Simplex Method

 

See Section 5.4.

 

 

Chapter 2       Transportation Problems

 

2.1       Enter or Revise a Transportation Problem

 

2.1.1      General Instructions

 

This procedure enables you to quickly enter (or revise) a transportation problem model by entering the elements of a parameter table (see Sec. 8.1). The maximum size is 7 sources and 7 destinations. The sum of the supplies from the sources must equal the sum of the demands at the destinations. The individual supplies and demands must be integers.

 

If you simply wish to revise the model you entered last (or one you saved and just recalled with the Save and Open commands under the File menu), you do not need to reenter the entire model. Instead, just reenter the new numbers.

 

When you finish entering the model, choose the "Find Initial Basic Feasible Solution for Interactive Method" procedure under the Procedure menu before using the "Solve Interactively by the Transportation Simplex Method" procedure.

 

At any step, detailed computer instructions are available (Help menu).

 

2.1.2      Specific Instructions

 

Enter the transportation problem model by filling out the parameter table (including specifying its size) displayed on the screen. The sum of the supplies at the sources must equal the sum of the demands at the destinations. After entering the model, you can prepare to solve it interactively (with the "Find Initial Basic Feasible Solution" command under the Procedure menu).

 

Entering the number of sources

 

Enter the number of sources (a positive integer) in the transportation problem, and then press the ENTER Key. Note: The number of sources cannot exceed 7.

 

Entering the number of destinations

 

Enter the number of destinations (a positive integer) in the transportation problem. Note: The number of destinations cannot exceed 7.

 

Entering a unit cost

 

Enter the cost per unit distributed from Source i to Destination j. The entry should be an integer, a decimal number, or M (Big M).

 

Entering the demand at a destination

 

Enter the demand (an integer) at this destination, and then press the ENTER key.

 

Entering the number of supplies

 

Enter the number of supplies (a positive integer) in the transportation problem, and then press the ENTER Key.

 

2.2       Finding an Initial Basic Feasible Solution

 

2.2.1      General Instructions

 

This procedure enables you to interactively implement the "General Procedure for Constructing an Initial Basic Feasible Solution" (for a transportation problem) presented in the "Initialization" subsection of Sec. 8.2. The specific transportation problem considered is the last one you entered with the Entering procedure under the Procedure menu.

 

For step 1 of the General Procedure, you may use any criterion (including arbitrary selection) for selecting the next basic variable. However, if you wish to use either Vogel's approximation method or Russell's approximation method as your criterion, choose that one under the Option menu and the computer will compute the quantities needed to implement that criterion. For any other criterion (including the Northwest corner rule), choose the Northwest Corner Rule under the Option menu. You may restart this procedure as often as desired in order to implement different criteria on the same problem. Each time you finish constructing an initial basic feasible solution, you can print out your work by choosing Print to File under the File menu. To use this initial basic feasible solution to start the transportation simplex method, next choose "Solve Interactively by the Transportation Simplex Method" under the Procedure menu.

 

Note: The abbreviation R.D. is used for Remaining Demand.

 

2.2.2      Specific Instructions

 

This procedure interactively implements the 4-step "General Procedure for Constructing an Initial Basic Feasible Solution" (for a transportation problem) presented in Sec. 8.2.  For step 1, any criterion can be used for selecting the next basic variable. To use either Vogel's or Russell's approximation method, choose that criterion under the Option menu. To use ANY other criterion, choose Northwest Corner Rule under the Option menu.

 

When done, the solution should have (m+n-1) basic variables that exactly use up the supply from each source and the demand at each destination. Choose Print to File under the File menu to print out your work. To start solving the transportation problem with this initial basic feasible solution, choose the "Solve Interactively by the Transportation Simplex Method" command under the Procedure menu.

 

Selecting the next basic variable

 

Move the pointer by the mouse so that it lies on the Source row and Destination column that corresponds to your choice of the next basic variable, and then double click the cell. You cannot use a row or column that has already been eliminated from consideration.

 

Choosing the value of the new basic variable (allocation)

 

Make the allocation large enough to exactly use up the remaining supply in its row or the remaining demand in its column (whichever is smaller), and then press OK. The entry should be an integer.

 

Determining whether the row or the column should be eliminated

 

If the row should be eliminated from further consideration (i.e., all the supply at that source has been used up), then press DELETE ROW. If the column should be eliminated from further consideration (i.e., all the demand at that destination has been used up), then press DELETE COLUMN. If there is a tie, either the row or the column may be selected for elimination, but the textbook suggests arbitrarily selecting the row.

 

2.3       Solve Interactively by the Transportation Simplex Method

 

2.3.1      General Instructions

 

This procedure enables you to execute the Transportation Simplex Method as presented in Sec. 8.2. Your role is to apply the logic of the algorithm, and the computer will do the number crunching. The computer also will inform you if you make a mistake on the first iteration.

 

This procedure can handle up to 7 sources and 7 destinations, which encompasses all relevant problems at the end of Chap. 8.

 

When you finish a problem, you can print out all your work by choosing Print to File under the File menu. If you are interrupted before you finish, you can save your work (choose Save under the File menu) and return later (choose Open).

At any step, detailed computer instructions are available (Help menu).

 

To undo a mistake, backtrack by clicking the BACK button.

 

2.3.2      Specific Instructions

 

This procedure enables you to solve a transportation problem model interactively by using the transportation simplex method presented in Sec. 8.2. At each iteration, the computer does the calculations while you make the following sequence of decisions:

 

     1.  Select the entering basic variable.

     2.  Determine the chain reaction caused by increasing the entering basic variable.

     3.  Determine the leaving basic variable.

     4.  Identify the new value of the entering basic variable.

 

Deriving and entering u(i) and v(j)

 

Move the mouse until the pointer lies on a u(i) or v(j) cell that you have just derived, and then enter the value that you have derived. Keep doing this until all the u(i)'s and v(j)'s are entered. As soon as they are all entered AND correct, the computer will move on to the next step (determining the entering basic variable for the first iteration).

 

If you enter a complete set of values and the computer does NOT move on to the next step, you have made a mistake and should recheck the values. For subsequent iterations, the computer will derive the u(i) and v(j) for you.

 

Selecting the entering basic variable

 

Enter your choice of the entering basic variable by double clicking the cell. However, if the optimality test indicates that the current solution already is optimal, then you should stop instead by pressing the FINISH button and, if desired, print out your work by choosing Print to File under the File menu.

 

Determining the chain reaction caused by increasing the entering basic variable

 

Beginning with the pointer on the cell corresponding to the entering basic variable, move the pointer to each cell in turn along the path of the chain reaction and double click it. This process ends when the path returns to the cell for the entering basic variable and you double click with the pointer on that cell.

 

If your path reaches a dead end and you need to backtrack, press BACK repeatedly until you have backtracked as far as you want.

 

Determining the leaving basic variable

 

Move the pointer to the cell corresponding to the leaving basic variable, and then double click it.

 

Identifying the new value of the entering basic variable

 

Enter the new value of the entering basic variable (i.e., the old value of the leaving basic variable), and then press OK. Your entry should be an integer. The computer then will add this value to each recipient cell and subtract this value from each donor cell in the old basic feasible solution to determine the new basic feasible solution.

 

 

Chapter 3       Network Analysis

 

3.1       Interactive Network Simplex Method

 

3.1.1      General Instructions

 

This procedure enables you to execute the Network Simplex Method as presented in Sec. 9.7. Your role is to apply the logic of the algorithm, and the computer will do the number crunching. The computer also will inform you if you make a mistake on the first iteration.

 

This procedure can only be used to solve Problems 9.7-2 through 9.7-8 at the end of Chapter 9.

 

When you finish a problem, you can print out all your work by choosing Print to File under the File menu. If you are interrupted before you finish, you can save your work (choose Save under the File menu) and return later (choose Open).

 

At any step, detailed computer instructions are available (Help menu). To undo a mistake, backtrack by pressing the BACK button.

 

3.1.2      Specific Instructions

 

This procedure allows you to apply the Network Simplex Method to interactively solve Problems 9.7-2 to 9.7-8. First you will need to enter an initial basic feasible solution. Then, at each iteration you will make the following sequence of decisions:

    1.  Is the current basic feasible solution optimal? If not,

    2.  Choose the entering basic arc (from all potential nonbasic arcs)

    3.  Choose the leaving basic arc

    4.  Choose the amount of flow to add through the entering basic arc.

 

Choosing which problem you would like to solve

 

This procedure can only be used to solve Problems 9.7-2 through 9.7-8. To solve one of these problems, enter the last digit of its problem number (an integer between 2 and 8) and press OK.

 

Press the NEXT button to begin the Network Simplex Method

 

This screen presents the network for the problem you have chosen to solve. If this is the correct problem, then press the NEXT button to begin applying the Network Simplex Method to solve it. If this is not the correct problem, then select the correct problem number.

 

Specifying the basic arcs

 

In order to obtain the initial basic feasible solution, you must first specify which of the arcs are basic. Do this by selecting the arc (the first letter of an arc stands for the node where the arc begins, and the second letter of the arc stands for the node where the arc ends, e.g., select AC for the arc from node A to node C) and then pressing ADD TO BASIC ARCS. If you mistakenly made an arc basic, then select it and press DELETE FROM BASIC ARCS. When you have finished specifying the basic arcs, press the NEXT button. (You may need to scroll down to reach the NEXT button.)

 

Specifying which (if any) nonbasic arcs should be reversed

 

If one of the nonbasic arcs needs to be reversed, then specify it by selecting the arc (the first letter of an arc stands for the node where the arc begins, and the second letter of the arc stands for the node where the arc ends, e.g., select AC for the arc from node A to node C) and then pressing ADD TO REVERSE ARCS. If you mistakenly reversed an arc, select it and then press DELETE FROM REVERSE ARCS. If no more arcs need to be reversed, then press the NEXT button to move on to the next step.

 

Specifying the flow in the basic arcs

 

In order to determine the initial basic feasible solution, the flow through each basic arc needs to be specified. Enter the flow as an integer or decimal number, and then press the NEXT button.

 

Identifying the cycle created when a nonbasic arc is added to the spanning tree

 

When a nonbasic arc is added to the spanning tree, a unique undirected cycle is created. Identify that cycle, starting and ending with the current node, by typing the letter of each node in the cycle (e.g., if the cycle is AB-BC-CD-DA, then type ABCDA) and then pressing the NEXT button.

 

Observing the incremental cost of adding flow through the cycle

 

When a flow is added to the nonbasic arc in the cycle, then that flow also is added to certain arcs in the cycle and subtracted from other arcs in the cycle. The incremental cost of adding one unit of flow is calculated here. Press the NEXT button to move on to the next step of the Network Simplex Method.

 

Specifying whether the current solution is optimal

 

If the current solution is optimal, then enter either y or Y and press the NEXT button. If the current solution is not optimal, then enter either n or N and press the NEXT button.

 

Selecting the entering basic arc

 

Select the entering basic arc from the choices presented in the table by typing the letter of the node where the arc begins and then the letter of the node where the arc ends (e.g., type AC for the arc from node A to node C) and then pressing the NEXT button.

 

Selecting the leaving basic arc

 

Select the leaving basic arc by typing the letter of the node where the arc begins and then the letter of the node where the arc ends (e.g., type AC for the arc from node A to node C). Enter the amount of flow that should be added to the entering basic arc (either an integer or a decimal number), and then press the NEXT button. The flow in each of the other nodes in the cycle will then be automatically calculated by the computer.

 

Does the leaving basic arc need to be replaced by a reverse arc?

 

If the leaving basic arc needs to be replaced by a reverse arc, then enter either y or Y and press the NEXT button. Otherwise, enter either n or N and press the NEXT button.

 

Press the NEXT button to continue the Network Simplex Method

 

For this and all future iterations of the Network Simplex Method, the computer will calculate the cycles created by adding each individual nonbasic arc to the spanning tree, as well as the incremental cost of adding flow through any of the nonbasic arcs, Press the NEXT button to have the computer make these calculations, and to move on to the optimality test.

 

Specifying the flow through the original arc

 

During the process of the Network Simplex Method, this arc was replaced by a reverse arc. It is the flow through the original arc that we now are interested in. Enter the flow through the original arc (either an integer or a decimal number) and then press the NEXT button.

 

An optimal solution

 

An optimal solution for the minimum cost flow problem, with the flows through all of the original arcs, has been determined. You may print out your work by choosing Print to File under the File menu.

 

Press the NEXT button to begin the Network Simplex Method

 

This screen presents the network for the problem you have chosen to solve. If this is the correct problem, then press the NEXT button to begin applying the Network Simplex Method to solve it. If this is not the correct problem, then go back to the previous procedure and change the problem number.

 

 

Chapter 4       Integer Programming

 

4.1       Enter or Revise an Integer Programming Model

 

4.1.1      General Instructions

 

This procedure enables you to quickly enter (or revise) an integer programming model (either pure or mixed, with either binary or general integer variables) in preparation for solving it by the branch-and-bound algorithm for pure binary programming (BIP) or general mixed integer programming (MIP) presented in Sections 12.6 and 12.7, respectively.

 

The maximum sizes allowed depend on how you later wish to solve the model. These limits on the number of variables and functional constraints are outlined below:

           Interactive BIP Branch-and-Bound: 5 binary variables, 5 constraints

           Interactive MIP Branch-and-Bound: 5 total variables, 5 constraints

 

If you simply wish to revise the model you entered last (or one you saved and just recalled with the Save and Open commands under the File menu), you do not need to reenter the entire model. Instead, just reenter the new numbers.

 

When you finish entering the model, return to the Procedure menu to choose the appropriate procedure from the two listed above.

 

4.1.2      Specific Instructions

 

Enter the integer programming model in its original form (i.e., without slack variables, artificial variables, etc.). When you are finished entering or revising the model, there are two interactive solution techniques which are potentially available to you under the Procedure menu. If the model has only binary variables, then the BIP Branch-and-Bound algorithm will be available. Otherwise, the MIP Branch-and-Bound algorithm will be available. If an option is not available, it will be dimmed under the Procedure menu.

 

Entering the number of binary variables

 

Enter the total number of variables which are restricted to be binary (0-1) in the original model (not including slack variables, artificial variables, etc.). Note that the maximum sizes allowed for the two solution techniques are as follows:

    1.   Interactive BIP: A maximum of 5 binary variables are allowed,

    2.   Interactive MIP: A maximum of 5 total variables are allowed.

 

Entering the number of general integer variables

 

Enter the total number of variables which are restricted to be integer (0,1,...) but not just binary in the original model (not including slack variables, artificial variables, etc.). Note that the maximum sizes allowed for the two solution techniques are as follows:

    1.   Interactive BIP: 0 general integer variables are allowed,

    2.   Interactive MIP: A maximum of 5 total variables are allowed.

 

Entering the number of functional constraints

 

Enter the number of functional constraints in the original model (not including nonnegativity constraints). Note that the maximum size allowed for both solution techniques is 5.

 

Press the ENTER key to make the new numbers above take effect.

 

Selecting the objective

 

Select either Max or Min, depending on whether the objective is to maximize or minimize Z.

 

Entering the objective function

 

Enter the coefficient of each variable in the objective function. Each number entered may be an integer or a decimal number. If a cost of Big M is desired, instead enter a large number (M is not allowed).

 

Selecting the type of functional constraint

 

Select £, =, or ³, depending on the form of the constraint.

 

 

4.2      The Binary Integer Programming Model

 

4.2.1      General Instructions

 

This procedure enables you to execute the branch-and-bound algorithm for pure binary integer programming (BIP) presented in Sec. 12.6. Your role is to apply the logic of the algorithm, and the computer will do the number crunching. The computer also will inform you if you make a mistake on the first iteration.

 

This procedure can handle up to 5 variables (all binary) and 5 functional constraints, which encompasses all relevant problems at the end of Chap. 12.

 

When you finish a problem, you can print out all your work by choosing Print to File under the File menu. If you are interrupted before you finish, you can save your work (choose Save under the File menu) and return later (choose Open).

 

At any step, detailed computer instructions are available (Help menu). To undo a mistake, backtrack by pressing the BACK button.

 

4.2.2      Specific Instructions

 

You now will be interactively executing the MIP algorithm presented in Sec. 12.7.

 

Selecting the subproblem from which to branch

 

Use the mouse to select the node you would like to investigate. To branch on the current node, double click it or press the ENTER key.

 

Click on the corresponding checkbox to fathom the current node or to declare its solution as the new incumbent.

 

4.3      The Mixed Integer Programming Model

 

4.3.1      General Instructions

 

This procedure enables you to execute the branch-and-bound algorithm for mixed integer programming (MIP) as presented in Sec. 12.7. Your role is to apply the logic of  the algorithm, and the computer will do the number crunching. The computer also will inform you if you make a mistake on the first iteration.

 

This routine can handle up to 5 variables total, 5 functional constraints, and 4 levels of branching, which encompasses all relevant problems at the end of Chap. 12.

 

When you finish a problem, you can print out all your work by choosing Print to File under the File menu. If you are interrupted before you finish, you can save your work (choose Save under the File menu) and return later (choose Open).

 

At any step, detailed computer instructions are available (Help menu). To undo a mistake, backtrack by pressing the BACK button.

 

4.3.2      Specific Instructions

 

You now will be interactively executing the MIP algorithm presented in Sec. 12.7.

 

Selecting the subproblem from which to branch

 

Use the mouse to select the node you would like to investigate. To branch on the current node, double click it or press the ENTER key.

 

Click on the corresponding checkbox to fathom the current node or to declare its solution as the new incumbent.

 

 

Chapter 5       Nonlinear Programming

 

5.1       Interactive One-Dimensional Search

 

5.1.1      General Instructions

 

This procedure enables you to execute the One-Dimensional Search Procedure as presented in Sec. 13.4. Your role is to apply the logic of the algorithm, and the computer will do the number crunching. The computer also will inform you if you make a mistake on the first iteration.

 

This procedure can handle up to 10 terms in a polynomial objective function, and only nonnegative integer exponents less than 10 (i.e., a single digit), which encompasses all relevant problems at the end of the Chap. 13.

 

When you finish a problem, you can print out all your work by choosing Print to File under the File menu. If you are interrupted before you finish, you can save your work (choose Save under the File menu) and return later (choose Open).

 

At any step, detailed computer instructions are available (Help menu). To undo a mistake, backtrack by pressing the BACK button.

 

 

5.1.2      Specific Instructions

 

This procedure (approximately) maximizes a concave polynomial function of one variable (or minimizes such a convex function) by using the one-dimensional search procedure presented in Sec. 13.4. You enter the function, its derivative, and the initial upper and lower bounds. At each iteration, the computer calculates the midpoint of the two current bounds as the new trial solution, and then calculates the derivative there. Using this information, you will decide whether the new trial solution should be the new upper bound or the new lower bound. This process is repeated until you conclude that you are sufficiently close to an optimal solution.

 

Entering the number of terms in f(x)

 

Enter the number of terms (a positive integer £ 10) in f(x), and then press the ENTER key to make the new number take effect.

 

Selecting the objective

 

Select either Max or Min, depending on whether the objective is to maximize or minimize the function.

 

Entering the objective function

 

The objective function must be a polynomial where the exponent for each term is a nonnegative integer less than ten. For each term, you need to enter the coefficient (an integer or a decimal number), and then the exponent (a nonnegative integer) for the variable.

 

Entering the derivative of the objective function

 

For each term of the derivative of the objective function, you need to enter the coefficient (an integer or a decimal number), and then the exponent (a nonnegative integer) for the variable. If there are no more terms, then enter 0 for the coefficient.

 

Entering the initial lower/upper bound

 

Enter the initial lower/upper bound (an integer or a decimal number) for the optimal solution, and then press the NEXT button to continue.

 

Should the trial solution be the new lower bound or the new upper bound?

 

Select "upper" if the trial solution should become the new upper bound. Select "lower" if the trial solution should become the new lower bound. If you find you made a mistake at a preceding step, press the BACK button to backtrack. If you are done, you can print your results with the Print to File command (under the File menu).

 

 

5.2       Automatic Gradient Search

 

5.2.1      General Instructions

 

This procedure automatically applies the gradient search procedure presented in Sec. 13.5 for solving (approximately) a multivariable unconstrained optimization problem with exactly two variables. The function to be maximized is assumed to be concave. It also must be a polynomial where the exponent for each variable in each term is a nonnegative integer less than ten and where the number of terms is a positive integer £ 10.

 

You will begin by entering the function, an initial trial solution, and an error tolerance of at least 0.001 (as defined in Sec. 13.5). After solving, you can print out both the problem and solution by choosing Print to File under the File menu.

 

5.2.2      Specific Instructions

 

This procedure (approximately) maximizes a concave polynomial function of two variables by using the gradient search procedure (presented in Sec. 13.5). You will enter the initial trial solution, the function to maximize, and an error tolerance (as defined in Sec. 13.5). The computer will then execute the procedure.

 

Entering the number of terms in f(X)

 

Enter the number of terms (a positive integer £ 10) in f(X), and then press the ENTER key to make the new number take effect.

 

Entering the objective function

 

The objective function must be a polynomial, where the exponent for each variable in each term is a nonnegative integer less than ten. For each term, you need to enter the coefficient (an integer or decimal number), and then the exponent (a nonnegative integer) for each variable. If a variable does not appear in the term, enter 0 for its exponent.

 

Entering the initial trial solution

 

Enter an integer or decimal number for the initial value of x1 and x2.

 

Entering the error tolerance

 

Enter the error tolerance (a positive integer or decimal number) as defined in Sec. 13.5 (where it is denoted by epsilon). Then press the OK button.

 

5.3       Interactive Gradient Search

 

5.3.1      General Instructions

 

This procedure (approximately) maximizes a concave polynomial function of two variables by using the gradient search procedure presented in Sec. 13.5. You will enter the polynomial to maximize and its derivative. You and the computer will interactively perform as many iterations as desired by identifying the entries in a table like Table 13.2.

 

When you finish a problem, you can print out all your work by choosing Print to File under the File menu. If you are interrupted before you finish, you can save your work (choose Save under the File menu) and return later (choose Open).

 

At any step, detailed computer instructions are available (Help menu). To undo a mistake, backtrack by pressing the BACK button.

 

5.3.2      Specific Instructions

 

This procedure (approximately) maximizes a concave polynomial function of two variables by using the gradient search procedure presented in Sec. 13.5. You will enter the polynomial to maximize and its derivative. You and the computer will interactively perform as many iterations as desired by identifying the entries in a table like Table 13.2.

 

Entering the number of terms in f(X)

 

Enter the number of terms (a positive integer £ 10) in f(X), and then press the ENTER key to make the new number take effect.

 

Entering the objective function

 

The objective function must be a polynomial, where the exponent for each variable in each term is a nonnegative integer less than ten. For each term, you need to enter the coefficient (an integer or a decimal number), and then the exponent (a nonnegative integer < 10) for each variable. If a variable does not appear in the term, enter 0 for its exponent.

 

Entering the derivative of the objective function

 

For each term of the derivative of the objective function, you need to enter the coefficient (an integer or a decimal number), and then the exponent (a nonnegative integer < 10) for each variable. If a variable does not appear in the term, enter 0 for its exponent. If there are no more terms, then enter 0 for the coefficient.

 

Entering the initial trial solution

 

Enter the initial values (integers or decimal numbers) for x1 and x2.

 

Entering the a's and the b's

 

To move from the current trial solution in the direction of the gradient, the objective function needs to be converted to a function of one variable (t). To do so, each variable in the objective function needs to be replaced by an expression of the form: a + bt. You should enter the values of a and b (an integer or a decimal number). When you are finished, press the NEXT button, and then the new function will be calculated.

 

To continue

 

Press the NEXT button to solve for t using the one-dimensional search procedure.

 

To continue

 

Press the NEXT button to determine the new trial solution.

 

Entering the new trial solution

 

Using the results displayed on the screen, enter the new trial solution that now has been obtained to complete the current iteration. Press the NEXT button after typing the new value of each variable as an integer or a decimal number.

 

5.4       Interactive Modified Simplex Method

 

5.4.1      General Instructions

 

This procedure enables you to interactively execute the Modified Simplex Method as presented in Sec.13.7. Your role is to apply the logic of the algorithm, and the computer will do the number crunching. Beware that this particular procedure does not inform you if you make a mistake on the first iteration.

 

This procedure can handle up to 6 functional constraints and 10 variables, which encompasses all relevant problems at the end of Chap. 13.

 

When you finish a problem, you can print out all your work by choosing Print to File under the File menu. If you are interrupted before you finish, you can save your work (choose Save under the File menu) and return later (choose Open).

 

(Be sure to use the Restricted-Entry Rule on Page 687 when you select the entering basic variable.)

 

5.4.2      Specific Instructions

 

This procedure allows you to apply the Simplex Method interactively to solve a linear programming problem. At each iteration, the computer does the calculations while you make the following sequence of decisions:

 

    1.  Decide whether or not the current solution is optimal

    2.  Choose the entering basic variable

    3.  Choose the pivot equation containing the leaving basic variable

    4.  Choose the factor by which to divide the pivot equation

5.       Choose the multiple of the pivot equation to subtract from each of the other equations in turn.

 

Is the current solution optimal?

 

Enter y or Y and then press the FINISH button if the current solution is optimal. Otherwise, enter either n or N and then press the NEXT button. If there are multiple optima, you can investigate the other optimal solutions. Just enter n or N, and then press the NEXT button.

 

Selecting the entering and the leaving basic variable

 

Select the entering and the leaving basic variable by clicking on the corresponding column and row (pivot equation) above. Then enter the factor by which to divide the pivot equation so that it will be in proper form from Gaussian elimination (i.e., so that the coefficient of the entering basic variable is 1). Then press the NEXT button.

 

Choosing the multiple of the pivot equation to subtract from another equation

 

Enter the multiples of the pivot equations which need to be subtracted from the equation in question to obtain proper form from Gaussian elimination (i.e., so that the coefficients of the basic variable are 0 in the latter equations), and then press the NEXT button. The numbers you enter may be integers or decimal numbers.

 

What to do once an optimal solution has been reached

 

Once you have obtained an optimal solution, you can print out all of your work (using the Print to file command under the File menu).

 

5.5       Interactive Frank-Wolfe Algorithm

 

5.5.1      General Instructions

 

This procedure enables you to quickly enter a linearly constrained convex programming problem (see Secs. 13.3 and 13.9) and then interactively execute the Frank-Wolfe Algorithm presented in Sec. 13.9. Your role is to apply the logic of the algorithm, and the computer will do the number crunching. The computer also will inform you if you make a mistake on the first iteration.

 

This procedure can handle up to 3 variables (all with nonnegativity constraints) and 6 functional constraints, which encompasses all relevant problems at the end of Chap. 13.

 

When you finish a problem, you can print out all your work by choosing Print to File under the File menu. If you are interrupted before you finish, you can save your work (choose Save under the File menu) and return later (choose Open).

 

At any step, detailed computer instructions are available (Help menu). To undo a mistake, backtrack by pressing the BACK button.

 

5.5.2      Specific Instructions

 

After entering a linearly constrained convex programming model (see Secs. 13.3 and 13.9), with a maximum of three variables (all with nonnegativity constraints) and six functional constraints, this procedure (approximately) solves the linearly constrained convex programming problem by using the Frank-Wolfe algorithm as presented in Sec. 13.9. You need to specify a feasible initial trial solution and the partial derivatives of the objective function. For Part 1 of each iteration, you identify the linear approximation of the objective function by using the gradient calculated by the computer at the current trial solution. The computer then performs Part 2 by using the Simplex Method to solve the resulting linear programming problem. You and the computer next perform Part 3 interactively to find the new trial solution.

 

Entering the number of variables

 

Enter the number of variables in the model as a positive integer (maximum of three).

 

Entering the number of functional constraints

 

Enter the number of functional constraints (excluding nonnegativity constraints) in the model as a positive integer (maximum of six).

 

Selecting the objective

 

Select either Max or Min, depending on whether the objective is to maximize or minimize Z.

 

Entering the functional constraints 

 

For each functional constraint:

   Enter the coefficients of variables in the functional constraint as integers or decimal numbers.

   Specify the type of functional constraint by selecting between £, =, and ³.

   Enter the right hand side of the functional constraint as an integer or a decimal number.

 

Entering the derivative of the objective function

 

For each term of the derivative of the objective function, you need to enter the coefficient (an integer or a decimal number), and then the exponent (a nonnegative integer < 10) for each variable. If a variable does not appear in the term, enter 0 for its exponent. If there are no more terms, then enter 0 for the coefficient.

 

Entering the new trial solution

 

Using the results displayed on the screen, enter the new trial solution that now has been obtained to complete the current iteration. Press the NEXT button after typing the new value of each variable as an integer or a decimal number.

 

Entering the linear objective function

 

The objective function must be a polynomial, where the exponent for each variable in each term is a nonnegative integer less than ten. For each term, you need to enter the coefficient (an integer or a decimal number).

 

To continue

 

Press the NEXT button to continue.

 

Entering the new trial solution

 

Using the results displayed on the screen, enter the new trial solution that now has been obtained.

 

Entering the a's and the b's

 

To move from the current trial solution in the direction of the gradient, the objective function needs to be converted to a function of one variable (t). To do so, each variable in the objective function needs to be replaced by an expression of the form: a + bt. You should enter the values of a and b (an integer or a decimal number). When you are finished, press the NEXT button, and then the new function will be calculated.

 

To continue

 

Press the NEXT button to apply the Simplex Method in order to determine an optimal solution for the current linear programming approximation.

 

5.6       Sequential Unconstrained Minimization Technique-SUMT

 

5.6.1      General Instructions

 

This procedure automatically applies the Sequential Unconstrained Optimization Technique (SUMT) presented in Sec. 13.10. The upper limits on problem size are three variables and three functional constraints. Every function must be a polynomial where the exponent for each variable in each term is a nonnegative integer less than ten.

 

You will begin by entering once the unconstrained function P(X; r) to be maximized at every iteration, and an initial trial solution. For each iteration, you also will specify the value of r to be used. When as many iterations as desired have been executed, you can print out both P(X; r) and the sequence of trial solutions (one for each r) by choosing Print to File under the File menu.

 

5.6.2      Specific Instructions

 

This procedure applies the Sequential Unconstrained Minimization Technique (SUMT) as presented in Sec. 13.10. The nonlinear programming problem is assumed to be in maximization form, with functional constraints, and perhaps with lower-bound constraints of the form xj ³ Kj for some or all of the individual variables xj, where Kj can be 0 or any other value. The objective function and each constraint function must be a polynomial where the exponent for each variable in each term is a nonnegative integer less than ten. You need to enter the size of the problem, an initial trial solution, and P(X; r) = f(X)-r B(X), where f(X) is the objective function and B(X) is the barrier function. Each term of B(X) is the boundary repulsion term for one of the constraints. For each iteration, you specify the value of r and the computer does the rest.

 

Number of variables with lower bounds

 

Enter the number of variable xj that have a lower-bound constraint, xj ³ Kj (as described above), as a nonnegative integer. The total number of variables (with or without lower bounds) cannot exceed three.

 

Number of variable without lower bounds

 

Enter the number of variables that do not have a lower-bound constraint, xj ³ Kj (as described above), as a nonnegative integer. The total number of variables (with or without lower bounds) cannot exceed three.

 

Number of inequality constraints

 

Enter the number of functional constraints (excluding lower-bound constraints, xj ³ Kj) that are in inequality form. This number must be a nonnegative integer. The total number of functional constraints of either type (inequality or equality) must be 1, 2, or 3.

 

Number of equality constraints

 

Enter the number of functional constraints (a nonnegative integer) that are in equality form. This number must be a nonnegative integer. The total number of functional constraints of either type (inequality or equality) must be 1, 2, or 3.

 

Maximum of the number of terms in any function

 

Enter the maximum of the number of terms in any function. This number must be an integer no greater than 10.

 

Entering the objective function

 

For each term of the polynomial objective function, you need to enter the coefficient (an integer or a decimal number), and then the exponent (a nonnegative integer < 10) for each variable. If a variable does not appear in the term, enter 0 for its exponent. If there are no more terms, enter 0 for the coefficient.

 

Entering the barrier function

 

For each inequality functional constraint or lower bound constraint, the corresponding boundary repulsion term (see above) must be the reciprocal of a polynomial. For each equality functional constraint, the boundary repulsion term must be the square of a polynomial. These polynomials are denoted here by Bi(X) for functional constraints or Li(X) for lower bound constraints. Enter each of these polynomials as follows. For each term of the polynomial, enter the coefficient (an integer or decimal number), and then the exponent (a nonnegative integer < 10) for each variable. If a variable does not appear in the term, enter 0 for its exponent. If there are no more terms in the current polynomial, enter 0 for the coefficient.

 

Entering the initial trial solution

 

Enter the initial values (integers or decimal numbers) of x1 and x2. This initial trial solution must be feasible, but not on the boundary of the feasible region (except for equality constraints).

 

Entering the value of r

 

Enter the value of r for the current iteration as a strictly positive integer or decimal number. This value must decrease for successive iterations.

 

To continue

 

Press the NEXT button.

 

Entering the value of r

 

Enter the value of r for the current iteration as a strictly positive integer or decimal number. This value must decrease for successive iterations.

 

Chapter 6       Markov Chains

 

6.1       Entering the Transition Matrix

 

6.1.1      General Instructions

 

This procedure enables you to quickly enter the elements of a one-step transition matrix P for a discrete time Markov chain, as described in Section 2 of the "Markov Chains" chapter. You are allowed a maximum of 10 states.

 

At any step, detailed computer instructions are available (Help menu). To undo a mistake, backtrack by pressing the BACK button.

 

 

6.1.2      Specific Instructions

 

Entering the (one step) transition matrix requires entering the number of rows or columns (i.e., the number of states) and then entering each of the (one step) transition probabilities, p(ij).

 

Entering the number of states

 

Enter the number of states in the Markov chain, (1 <= number of states <= 10, an integer), and then press the ENTER key. In the notation of the book, this number is M+1.

 

Entering the transition probabilities

 

Enter the transition probabilities, p(ij), where i is the current row in the matrix and j is the current column (0 <= p(ij) <= 1).

 

6.2       Chapman-Kolmogorov Equations

 

6.2.1      General Instructions

 

Given that you have entered the one-step transition matrix P for a discrete time Markov Chain (Procedure 1), this procedure uses the Chapman-Kolmogorov equations to computer the n-step transition probabilities, as described in Section 3 of the "Markov Chains" chapter. In particular, the procedure obtains the n-step transition matrix P(n) by calculating P(n) = P^n. You are allowed a maximum of 10 states and n <= 99. The results can be printed by choosing Print to File under the File menu.

 

 

6.2.2      Specific Instructions

 

The Chapman-Kolmogorov Equations are used to calculate the n-step transition probabilities. To print the results, choose Print to File from the File menu.

 

Entering the power by which to multiply the transition matrix

 

Enter the power by which to multiply the transition matrix (1 <= n <=99, an integer), and then press the ENTER key.

 

6.3       Steady State Probabilities

 

6.3.1      General Instructions

 

Given that you have entered the one-step transition matrix (Procedure 1), this procedure calculates the steady state probabilities for the state of a discrete time Markov chain, as described at the beginning of Section 5 of the "Markov Chains" chapter. You can consider a maximum of 10 states. The results can be printed.

 

6.3.2      Specific Instructions

 

Shown are the original transition matrix, the equations used to calculate the steady state probabilities, and the steady state probabilities themselves. To print the results, choose Print to File from the File menu.

 

 

Chapter 7       Queueing Theory

 

7.1       Jackson Network

 

7.1.1      General Instructions

 

This procedure solves a system of linear equations to find the overall arrival rate at each of the m facilities in a Jackson network, as described in Section 9 of the "Queueing Theory" chapter. The maximum number of facilities is m = 6. The results can be printed.

 

7.1.2      Specific Instructions

 

This procedure is used to solve for the overall arrival rate at each of the facilities in a Jackson network.

 

Entering the number of facilities

 

Enter the number of facilities in the Jackson network, m (1 <= m <= 6, m an integer), and then press the ENTER key to make the number take effect.

 

Entering the external arrival rates

 

Enter the external arrival rate, a(j), for each facility, j (a(j) >= 0). To enter a number, enter an integer or a decimal number.

 

Entering the transition probabilities

 

Enter each of the probabilities, p(ij), that a customer completing service at facility i goes next to facility j (0 <= p(ij) <= 1). To enter a number, enter an integer or a decimal number.

 

 

Chapter 8       Inventory Theory

 

8.1       Single Period Model, No Setup

 

8.1.1      General Instructions

 

This procedure calculates the critical number y0 for the single-period inventory model with no setup cost and with linear shortage and holding costs presented at the beginning of Section 6 of the "Inventory Theory" chapter.

 

The demand distribution can be either uniform or exponential. Use the Option menu to make (or change) this choice. The results can be printed.

 

The limits are: expected demand for the exponential distribution,lambda >=0.001, range of the demand for the uniform distribution, x1 > x0 ³ 0. Other limits are p+h > 0, c+h >0, and p >= c.

 

8.1.2      Specific Instructions

 

This procedure is used to calculate the optimal quantity to order, y0, for the single-period model with no setup cost. To solve the model, you must enter the probability distribution of the demand (use the Option menu to choose between an exponential or uniform distribution), as well as the unit production or purchasing cost, unit holding cost, and unit shortage cost.

 

Entering the exponential distribution parameter

 

Enter the mean (denoted by lambda) of the exponential distribution (mean > 0). To change the distribution to a uniform distribution, use the Option menu. To enter a number, enter an integer or a decimal number.

 

Entering the unit production or purchasing cost

 

Enter the unit production or purchasing cost, c (c >= 0). To enter a number, enter an integer or a decimal number.

 

Entering the unit inventory holding cost

 

Enter the unit inventory holding cost, h (h >= 0). To enter a number, enter an integer or a decimal number.

 

Entering the unit shortage cost    

 

Enter the unit shortage cost, p (p >= 0). To enter a number, enter an integer or a decimal number.

 

To continue

 

After pressing the ENTER key to return to the procedure, simply press the FINISH button to have the computer automatically execute the calculation.

 

The solution

 

To print the results: select Print to File from the File menu. To change any of the parameters: reenter the new value and then press the ENTER key.

 

 

8.2       Single Period Model, With Setup

 

8.2.1      General Instructions

 

This procedure calculates the critical numbers, s and S, for the single-period inventory model with setup cost and with linear shortage and holding costs presented in Section 6 of the "Inventory Theory" chapter.

 

The demand distribution can be either uniform or exponential. Use the Option menu to make (or change) this choice. The results can be printed.

 

The limits are: expected demand for the exponential distribution, λ>=0.001, range of the demand for uniform distribution, x1 > x0 ³ 0. Other limits are p+h > 0, c+h >0, and p >= c.

 

8.2.2      Specific Instructions

 

This procedure is used to calculate the critical numbers, s (inventory level below which to place an order) and S (the amount to order up to), for the single-period model with setup cost. To solve the model, you must enter the probability distribution of the demand, as well as the unit production or purchasing cost, unit holding cost, unit shortage cost, and setup cost.

 

Entering the exponential distribution parameter

 

Enter the mean (denoted by lambda) of the exponential distribution (mean > 0). To change the distribution to a uniform distribution, use the Option menu. To enter a number, enter an integer or a decimal number.

 

Entering the unit production or purchasing cost

 

Enter the unit production or purchasing cost, c (c >= 0). To enter a number, enter an integer or a decimal number, and then press the ENTER key.

 

Entering the unit inventory holding cost

 

Enter the unit inventory holding cost, h (h >= 0). To enter a number, enter an integer or a decimal number, and then press the ENTER key.

 

Entering the unit shortage cost

 

Enter the unit shortage cost, p (p >= 0). To enter a number, enter an integer or a decimal number, and then press the ENTER key.

 

Entering the setup cost

 

Enter the setup cost, K (K >= 0). To enter a number, enter an integer or a decimal number, and then press the ENTER key.

 

To continue

 

Simply press the FINISH button to have the computer automatically execute the calculation.

 

The solution

 

To print the results: select Print to File from the File menu. To change any of the parameters: renter the new value and then press the ENTER key.

 

8.3      Two Period Model, No Setup

 

8.3.1      General Instructions

 

This procedure calculates the critical numbers, y1(0) and y2(0), for the two-period inventory model with no setup cost and with linear shortage and holding costs presented in Section 7 of the "Inventory Theory" chapter.

 

The demand distribution can be either uniform or exponential. Use the Option menu to make (or change) this choice. The results can be printed.

 

The limits are: expected demand for the exponential distribution, λ>=0.001, the range of the demand for the uniform distribution is from 0 to t > 0. Other limits are p+h > 0, c+h >0, and p >= c.

 

8.3.2      Specific Instructions

 

This procedure is used to calculate the optimal quantities to order up to, y1(0) and y2(0), for the two-period model with no setup cost. To solve the model, you must enter the probability distribution of the demand (use the Option menu to choose between an exponential or uniform distribution), as well as the unit production or purchasing, unit holding cost, and unit shortage cost.

 

Entering the exponential distribution parameter

 

Enter the mean (denoted by lambda) of the exponential distribution (mean >0). To change the distribution to a uniform distribution, use the Option menu. To enter a number, enter an integer or a decimal number.

 

Entering the unit production or purchasing cost

 

Enter the unit production or purchasing cost, c (c >= 0.001). To enter a number, enter an integer or a decimal number.

 

Entering the unit inventory holding cost

 

Enter the unit inventory holding cost, h (h >= 0). To enter a number, enter an integer or a decimal number.

 

Entering the unit shortage cost

 

Enter the unit shortage cost, p (p >= 0). To enter a number, enter an integer or a decimal number.

 

To continue

 

Simply press the FINISH button to have the computer automatically execute the calculation.

 

The solution

 

To print the results: select Print to File from the File menu. To change any of the parameters: just reenter the new value and then press the ENTER key.

 

8.4       Infinite Period Model, No Setup

 

8.4.1      General Instructions

 

This procedure calculates the critical number y0 for the infinite-period inventory with no setup cost and with linear shortage and holding costs presented in Section 7 (beginning of subsection on "Stochastic Multiperiod Models - An Overview") of the "Inventory Theory" chapter. This procedure can also be used  for the variation of the multiperiod inventory model that has the same formula for y0.

 

The demand distribution can be either uniform or exponential. Use the Option menu to make (or change) this choice. The results can be printed.

 

The limits are: expected demand for the exponential distribution, λ>=0.001, the range for the uniform distribution is from 0 to t > 0. Other limits are p+h > 0, c+h >0, p>= c(1-alpha), and p-c(1-alpha) < p+h.

 

8.4.2      Specific Instructions

 

This procedure is used to calculate the optimal quantity to order up to at the beginning of each period, y(0), for the infinite-period model with no setup cost. To solve the model, you must enter the probability distribution of the demand, as well as the unit production or purchasing cost, unit holding cost, and unit shortage cost.

 

Entering the exponential distribution parameter

 

Enter the mean (denoted by lambda) of the exponential distribution (mean >0). To change the distribution to a uniform distribution, use the Option menu. To enter a number, enter an integer or a decimal number.

 

Entering the unit production or purchasing cost

 

Enter the unit production or purchasing cost, c (c >= 0). To enter a number, enter an integer or a decimal number.

 

Entering the unit inventory holding cost

 

Enter the unit inventory holding cost, h (h >= 0). To enter a number, enter an integer or a decimal  number.

 

Entering the unit shortage cost

 

Enter the unit shortage cost, p (p >= 0). To enter a number, enter an integer or a decimal number.

 

Entering the discount factor

 

Enter the discount factor denoted by alpha, which gives the relative value of money one period in the future (0 < discount factor <1).

 

To continue

 

Simply press the FINISH button to have the computer automatically execute the calculation.

 

The solution

 

To print the results: select Print to File from the File menu. To change any of the parameters: just reenter the new value. To enter a number, enter an integer or a decimal number.

 

 

Chapter 9       Markov Decision Processes

 

9.1       Enter Markov Decision Model

 

9.1.1      General Instructions

 

This procedure enables you to quickly enter a Markov decision model, or to revise a previously entered model. The model is entered in the form and notation presented in Section 2 of the chapter, "Markov Decision Processes ". You are allowed up to 4 states (M=3) and 5 decisions (K=5). You also will be asked for a value of the discount factor introduced in Section 5. For the criterion of Sections 1-4 (minimizing expected average cost per unit time), set the discount factor equal to one.

 

9.1.2      Specific Instructions

 

This procedure is used to enter a Markov decision model to be solved by one of the policy improvement algorithms or the method of successive approximations. To enter a model, the number of states and decisions need to be entered, as well as the cost matrix, transition matrices, and, optionally, the discount factor.

 

Entering a Markov Decision Model

 

This procedure is used to enter a Markov decision model to be solved by one of the policy improvement algorithms or the method of successive approximations. To enter a model, the number of states and decisions need to be entered, as well as the cost matrix, transition matrices, and, optionally, the discount factor.

 

Entering the number of states

 

Enter the number of states in the model (1 <= number of states <= 4, an integer). In the notation of the book, this number is M+1.

 

Entering the number of decisions

 

Enter the number of possible decisions, K (1 <= K <= 5, K an integer).

 

Entering the cost matrix

 

Enter the cost of making decision k in state i for the respective k and i. If the decision is infeasible, enter an infinite cost. To enter infinity: enter "1m".

 

Entering the transition matrix

 

Enter the probability of going from state i to state j, given decision k (0 <= p(ij(k)) <= 1). To enter a number, enter an integer or a decimal number. To enter infinity: enter "1m".

 

Entering the initial trial policy

 

For the initial trial policy, enter the number label for the decision to be made in each state i. To enter a number, enter an integer or a decimal number.

 

Entering the discount factor

 

Enter the discount factor denoted by alpha, which gives the relative value of money one period in the future (0 < discount factor <= 1). If only the average cost criterion (Section 4) is to be used, simply leave the discount factor at the default value of 1. This step completes the entering of the model, so next choose a procedure under the Procedure menu.

 

 

9.2       Interactive Policy Improvement Algorithm-Average Cost

 

9.2.1      General Instructions

 

This procedure enables you to interactively execute the average cost policy improvement algorithm, presented in Section 4 of the "Markov Decision Processes" chapter.

 

Your role is to apply the logic of the algorithm, and the computer will do the number crunching. The computer also will inform you if you make a mistake on the first iteration.

 

When you finish a problem, you can print out all your work by choosing Print to File under the File menu. If you are interrupted before you finish, you can save your work (choose Save in the File menu) and return later (choose Open).

 

9.2.2      Specific Instructions

 

This algorithm is used to determine an optimal policy for a Markov decision process under the criterion of minimizing expected average cost per unit time. There are two major steps:

    1.  value determination and

    2.  policy improvement,

performed in each iteration until an optimal solution is found.

 

Choosing the coefficients in the value determination phase

 

In the value determination phase, a set of equations is solved to determine the v(i). Your job is to enter the coefficients of the v(i) in these equations.

 

To continue

 

After pressing the ENTER key to return to the procedure, simply press the ENTER key to have the computer automatically execute the next substep.

 

Choosing the coefficients in the policy improvement phase

 

In the policy improvement phase, an expression needs to be evaluated for each possible decision for a given state (in this case, state 0), to determine the best decision. One coefficient is highlighted in the expressions at the top of the screen. The value of that coefficient is chosen from the cost or transition matrices at the bottom of the screen. Simply use the arrow keys to choose the appropriate number, and then press the ENTER key. If you would like to display and choose an entry in the transition matrix for a different decision (k), press the "+" or "-" button. If you would like to backtrack to correct a coefficient which you incorrectly entered previously, press the BACK button.

 

Entering the new decision for a given state

 

Using the value of the expression for each possible decision for the given state, choose the new decision for that state by entering the corresponding value of k, and then pressing the NEXT button.

 

Selecting whether or not the current policy is optimal

 

Select "Yes" if the current policy definitely is optimal, or else select "No" if the current policy is not known to be optimal.

 

The solution

 

To print the results: select Print to File from the File menu.

 

9.3       Interactive Policy Improvement Algorithm-Discounted Cost

 

9.3.1      General Instructions

 

This procedure enables you to interactively execute the discounted cost policy improvement algorithm, presented in Section 5 of the "Markov Decision Processes " chapter.

 

Your role is to apply the logic of the algorithm, and the computer will do the number crunching. The computer also will inform you if you make a mistake on the first iteration.

 

When you finish a problem, you can print out all your work by choosing Print to File under the File menu. If you are interrupted before you finish, you can save your work (choose Save in the File menu) and return later (choose Open).

 

9.3.2      Specific Instructions

 

This algorithm is used to determine an optimal policy for a Markov decision process under the criterion of minimizing expected total discounted cost per unit time. There are two major steps: (1) value determination and (2) policy improvement, performed in each iteration until an optimal solution is found.

 

Choosing the coefficients in the value determination phase

 

In the value determination phase, a set of equations is solved to determine the V(i). Your job is to enter the coefficients of the V(i) in these equations.

 

To continue

 

After pressing the ENTER key to return to the procedure, simply press the NEXT button to have the computer automatically execute the next substep.

 

To continue

 

After pressing the ENTER key to return to the procedure, simply press the NEXT button to have the computer automatically execute the next substep.

 

Choosing the coefficients in the policy improvement phase

 

In the policy improvement phase, an expression needs to be evaluated for each possible decision for a given state (in this case, state 0), to determine the best decision. One coefficient is highlighted in the expressions at the top of screen. The value of that coefficient is chosen from the cost or transition matrices at the bottom of the screen (simply use the mouse to choose the appropriate number, and then press the ENTER key). If you would like to display and choose an entry in the transition matrix for a different decision (k), press the "+" or "-" button. If you would like to backtrack to correct a coefficient which you incorrectly entered previously, press the BACK button.

 

Entering the new decision for a given state

 

Using the value of the expression for each possible decision for the given state, choose the new decision for that state by entering the corresponding value of k, and then press the NEXT button.

 

Selecting whether or not the current policy is optimal

 

Select "Yes" if the current policy definitely is optimal, or else select "No" if the current policy is not known to be optimal, and then press the NEXT button.

 

The solution

 

To print the results: select Print to File from the File menu.

 

9.4       Interactive Method of Successive Approximations

 

9.4.1      General Instructions

 

This procedure enables you to interactively execute the method of successive approximations, presented in Section 5 of the "Markov Decision Processes” chapter.

 

Your role is to apply the logic of the algorithm, and the computer will do the number crunching. The computer also will inform you if you make a mistake on the first iteration.

 

When you finish a problem, you can print out all your work by choosing Print to File under the File menu. If you are interrupted before you finish, you can save your work (choose Save in the File menu) and return later (choose Open).

 

9.4.2      Specific Instructions

 

This algorithm is used to determine an optimal policy (or at least an approximation) for a Markov decision process under the criterion of minimizing expected total discounted cost. In each iteration, an improved approximation is made of the V for the respective states i.

 

Entering the value of V for state i at iteration 1

 

Use the cost matrix to determine the value of V (subscript i, superscript 1), and then enter this number. The entry can be an integer or a decimal number.

 

Entering the decision k for a given state at iteration 1

 

For the current state i, use the cost matrix to determine the corresponding decision for iteration 1. Enter this value of k (an integer), and then press the NEXT button.

 

Choosing the entries in the equation giving the new value for V for state 0

 

Considering state 0, to determine the new value of V (with a subscript of 0), one expression for each possible decision needs to be evaluated. Your job is to enter the constant and the coefficients of V in each of these expressions. One constant or coefficient is highlighted in the equations at the top of the screen. The value of that constant or coefficient is chosen from the cost or transition matrices at the bottom of the screen (simply use the mouse to choose the appropriate number, and then press the NEXT button). If you would like to display and choose an entry in the transition matrix for a different decision (k), press the "+" or "-" button. If you would like to backtrack to correct a coefficient which you incorrectly entered previously, press Back.

 

To continue

 

After pressing the ENTER key to return to the procedure, simply press the NEXT button to have the computer automatically execute the next substep. To enter a number, enter an integer or a decimal number.

 

Entering the new decision for a given state

 

Using the value of the expression for each possible decision for the given state, choose the new decision for that state by entering the corresponding value of k, and then press the NEXT button.

 

Selecting whether or not you would like to perform another iteration

 

Select "Yes" if you would like to perform another iteration, or else select "No" if you don't, and then press the NEXT button. To enter a number, enter an integer or a decimal number.

 

The solution

 

To print the results: select Print to File from the File menu.

 

 

Chapter 10       Simulation

 

10.1          Enter a Queueing Problem

 

10.1.1      General Instructions

 

This procedure enables you to quickly enter a queueing problem, or to revise a previously entered problem, for the purposes of performing a simulation run. You will need to enter the number of servers, the number of nonpreemptive priority classes, and the distributions of the interarrival times and service times for each class of customer. The maximum number of servers is 2, and the maximum number of nonpreemptive priority classes is 2 (where 1 means there are no priorities).

 

At any step, detailed computer instructions are available (Help menu). To undo a mistake, backtrack by pressing the BACK button.

 

When you finish entering the model, press the FINISH button, and then choose the other procedure under the Procedure menu to continue.

 

When you press the FINISH button, make sure that none of your numbers for the distributions changed. If any did, it is because you had entered an invalid number (for example, a negative mean). In each such case, you should go back and re-enter a valid number after referring to Specific Help on Current Step in the Help menu for instructions on the requirements to be a valid number.

 

10.1.2      Specific Instructions

 

Entering a simulation model for a queueing problem, including one with nonpreemptive priority classes, requires entering the number of servers, the number of priority classes, and the distributions of the interarrival times and service times for each class of customer. The maximum number of servers and priority classes are as follows:

     Maximum number of servers: 2.

     Maximum number of priority classes: 2. (Choosing 1 means no priorities.)

 

Entering the number of servers

 

Enter the number of  servers (a positive integer) in the queueing system, and then press the ENTER key. The maximum number of servers allowed is 2.

 

Entering the number of priority classes

 

Enter the number of nonpreemptive priority classes (a positive integer) for customers in the queueing system. The maximum number of nonpreemptive priority classes allowed is 2. If your queueing problem does not involve priorities, enter 1 for the number of priority classes. See Sec. 17.8 for a discussion of priority classes.

 

Selecting the distribution for the interarrival time

 

The five distributions which are allowed for the interarrival time are:

     1.  Constant (discussed in Secs. 17.2 and 17.7)

     2.  Erlang (described in Sec. 17.7)

     3.  Exponential (described in Sec. 17.4)

     4.  Translated Exponential (an exponential distribution plus a positive minimum value)

     5.  Uniform (described in Sec 22.3)

 

Entering the value of the distribution

 

Note that the requirements for the five distributions are as follows:

     1.  Constant: constant > 0

     2.  Erlang: mean > 0, k (the shape parameter) is a strictly positive integer (see Sec. 17.7)

     3.  Exponential: mean > 0

     4.  Translated Exponential: min > 0, mean > 0, mean > min

     5.  Uniform: min > 0, max > min

 

Selecting the distribution for the service time

 

The five distributions which are allowed for the service time are:

     1.  Constant (discussed in Secs. 17.2 and 17.7)

     2.  Erlang (described in Sec. 17.7)

     3.  Exponential (described in Sec. 17.4)

     4.  Translated Exponential (an exponential distribution plus a positive minimum value)

     5.  Uniform (described in Sec. 22.3)

 

Entering the value for the service time

 

     1. Constant: constant > 0

     2.  Erlang: mean > 0, k (the shape parameter) is a strictly positive integer (see Sec. 17.7)

     3.  Exponential: mean > 0

     4.  Translated Exponential: min > 0, mean > 0, mean > min

     5.  Uniform: min > 0, max > min

 

 

10.2          Interactively Simulate a Queueing Problem

 

10.2.1      General Instructions

 

The interactive routine repeats three steps over and over, for as long as you would like to run the simulation. At each step, you are asked to make the key decision. The three decisions that will need to be made are:

       1.  Which times now need to be randomly generated?

       2.  Which event occurs next?

       3.  What is the result of the event?

 

 

10.2.2      Specific Instructions

 

The interactive routine repeats three steps over and over, for as long as you would like to run the simulation. At each step, you are asked to make the key decision. The three decisions that will need to be made are:

       1.  Which times now need to be randomly generated?

       2.  Which event occurs next?

       3.  What is the result of the event?

 

Which times now need to be randomly generated?

 

For each time (interarrival time and/or service completion time) which now needs to be randomly generated, select the appropriate item, and then press the OK button. When you have generated all of the random times which need to be generated, press the NEXT button.

 

Which event occurs next?

 

To advance the current time to the next event, you must decide which event occurs next. Select the appropriate item corresponding to the event which occurs next.

 

What is the result of the arrival?

 

An arrival has just occurred. The customer which has just arrived either enters the queue or immediately enters service. Decide what happens to this customer by selecting the appropriate item.

 

What is the result of the service completion?

 

A service completion has just occurred. The server which has just completed service either remains idle or starts serving a customer. Decide what the server does by selecting the appropriate item.

 

Where can I go from here?

 

You have completed the simulation run. The results are displayed on the screen, and can be printed by choosing Print to File under the File menu. To continue the simulation run, press the "Continue Simulation" button.

 

The current procedure is for the case of one class of customers and one server.

The notations are:

 

       1. C.T.:       Current Time

       2. N.C.Q.:       Number of Customers in Queue

       3. C.B.S.:       Customer Being Served

       4. N.A.:       Next Arrival of a customer

       5. N.S.C.:    Next Service Completion

 

The current procedure is for the case of two classes of customers and one server.

The notations are:

 

       1. C.T.:           Current Time

       2. N.C.Q.C1:       Number of Customers in Queue from Class 1

       3. N.C.Q.C2:       Number of Customers in Queue from Class 2

       4. C.C.B.S.: Class of Customer Being Served

       5. N.A.C1.:  Next Arrival of a customer from Class 1

       6. N.A.C2.:  Next Arrival of a customer from Class 2

       7. N.S.C.:        Next Service Completion

 

The current procedure is for the case of one class of customers and two servers.

The notations are:

 

       1. C.T.:          Current Time

       2. N.C.Q.:      Number of Customers in Queue

       3. C.B.S.S1:  Customer Being Served by Server 1

       4. C.B.S.S2:  Customer Being Served by Server 2

       5. N.A.:          Next Arrival of a customer

       6. N.S.C.S1:  Next Service Completion by Server 1

       7. N.S.C.S2:  Next Service Completion by Server 2

 

The current procedure is for the case of two classes of customers and two servers.

The notations are:

 

       1. C.T.:              Current Time

       2. N.C.Q.C1:       Number of Customers in Queue from Class 1

       3. N.C.Q.C2:       Number of Customers in Queue from Class 2

       4. C.C.B.S.S1:       Class of Customer Being Served by Server 1

       5. C.C.B.S.S2:       Class of Customer Being Served by Server 2

       6. N.A.C1.:  Next Arrival of a customer from Class 1

       7. N.A.C2.:  Next Arrival of a customer from Class 2

       8. N.S.C.S1:       Next Service Completion by Server 1

       9. N.S.C.S2:       Next Service Completion by Server 2