Synopses & Reviews
AMPL is a language for large-scale optimization and mathematical programming problems in production, distribution, blending, scheduling, and many other applications. Combining familiar algebraic notation and a powerful interactive command environment, AMPL makes it easy to create models, use a wide variety of solvers, and examine solutions. Though flexible and convenient for rapid prototyping and development of models, AMPL also offers the speed and generality needed for repeated large-scale production runs. This book, written by the creators of AMPL, is a complete guide for modelers at all levels of experience. It begins with a tutorial on widely used linear programming models, and presents all of AMPL's features for linear programming with extensive examples. Additional chapters cover network, nonlinear, piecewise-linear, and integer programming; database and spreadsheet interactions; and command scripts. Most chapters include exercises. Download free versions of AMPL and several solvers from www.ampl.com for experimentation, evaluation, and education. The Web site also lists vendors of the commercial version of AMPL and numerous solvers.
About the Author
Robert Fourer received his Ph.D. in operations research from Stanford University in 1980 and is an active researcher in mathematical programming and modeling language design. He joined the Department of Industrial Engineering and Management Sciences at Northwestern University in 1979 and served as chair of the department from 1989 to 1995. David M. Gay received his Ph.D. in computer science from Cornell University in 1975, and was in the Computing Science Research Center at Bell Laboratories from 1981 to 2001. He is now CEO of AMPL Optimization LLC. His research interests include numerical analysis, optimization, and scientific computing. Brian Kernighan received his Ph.D. in electrical engineering from Princeton University in 1969. He was in the Computing Science Research Center at Bell Laboratories from 1969 to 2000 and now teaches in the Computer Science department at Princeton. He is the co-author of several computer science books, including THE C PROGRAMMING LANGUAGE and THE UNIX PROGRAMMING ENVIRONMENT.
Table of Contents
1. PRODUCTION MODELS: MAXIMIZING PROFITS. A two-variable linear program. The two-variable linear program in AMPL. A linear programming model. The linear programming model in AMPL. Adding lower bounds to the model. Adding resource constraints to the model. AMPL interfaces. 2. DIET AND OTHER INPUT MODELS: MINIMIZING COSTS. A linear program for the diet problem. An AMPL model for the diet problem. Using the AMPL diet model. Generalizations to blending, economics, and scheduling. 3. TRANSPORTATION AND ASSIGNMENT MODELS. A linear program for the transportation problem. An AMPL model for the transportation problem. Other interpretations of the transportation model. 4. BUILDING LARGER MODELS. A multicommodity transportation model. A multiperiod production model. A model of production and transportation. 5. SIMPLE SETS AND INDEXING. Unordered sets. Sets of numbers. Set operations. Set membership operations and functions. Indexing expressions. Ordered sets. 6. COMPOUND SETS AND INDEXING. Sets of ordered pairs. Subsets and slices of ordered pairs. Sets of longer tuples. Operations on sets of tuples. Indexed collections of sets. 7. PARAMETERS AND EXPRESSIONS. Parameter declarations. Arithmetic expressions. Logical and conditional expressions. Restrictions on parameters. Computed parameters. Randomly generated parameters. Logical parameters. Symbolic parameters. 8. LINEAR PROGRAMS: VARIABLES, OBJECTIVES AND CONSTRAINTS. Variables. Linear expressions. Objectives. Constraints. 9. SPECIFYING DATA. Formatted data: the data command. Data in lists. Data in tables. Other features of data statements. Reading unformatted data: the read command. 10. DATABASE ACCESS. General principles of data correspondence. Examples of table-handling statements. Reading data from relational tables. Writing data to relational tables. Reading and writing the same table. Indexed collections of tables and columns. Standard and built-in table handlers. 11. MODELING COMMANDS. General principles of commands and options. Setting up and solving models and data. Modifying data. Modifying models. 12. DISPLAY COMMANDS. Browsing through results: the display command. Formatting options for display. Numeric options for display. Other output commands: print and printf. Related solution values. Other display features for models and instances. General facilities for manipulating output. 13. COMMAND SCRIPTS. Running scripts: include and commands. Iterating over a set: the for statement. Iterating subject to a condition: the repeat statement. Testing a condition: the if-then-else statement. Terminating a loop: break and continue. Stepping through a script. Manipulating character strings. 14. INTERACTIONS WITH SOLVERS. Presolve. Retrieving results from solvers. Exchanging information with solvers via suffixes. Alternating between models. Named problems. 15. NETWORK LINEAR PROGRAMS. Minimum-cost transshipment models. Other network models. Declaring network models by node and arc. Rules for node and arc declarations. Solving network linear programs. 16. COLUMNWISE FORMULATIONS. An input-output model. A scheduling model. Rules for columnwise formulations. 17. PIECEWISE-LINEAR PROGRAMS. Cost terms. Common two-piece and three-piece terms. Other piecewise-linear functions. Guidelines for piecewise-linear optimization. 18. NONLINEAR PROGRAMS. Sources of nonlinearity. Nonlinear variables. Nonlinear expressions. Pitfalls of nonlinear programming. 19. COMPLEMENTARITY PROBLEMS. Sources of complementarity. Forms of complementarity constraints. Working with complementarity constraints. 20. INTEGER LINEAR PROGRAMS. Integer variables. Zero-one variables and logical conditions. Practical considerations in integer programming. APPENDIX A: AMPL REFERENCE MANUAL. INDEX.