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.
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.