| |

| |

Introduction | |

| |

| |

| |

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

| |

| |

The basic model | |

| |

| |

An improved model | |

| |

| |

Catching errors | |

| |

| |

| |

Adding lower bounds to the model | |

| |

| |

| |

Adding resource constraints to the model | |

| |

| |

| |

AMPL interfaces | |

| |

| |

| |

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

| |

| |

| |

Transportation and Assignment Models | |

| |

| |

| |

A linear program for the transportation problem | |

| |

| |

| |

An AMPL model for the transportation problem | |

| |

| |

| |

Other interpretations of the transportation model | |

| |

| |

| |

Building Larger Models | |

| |

| |

| |

A multicommodity transportation model | |

| |

| |

| |

A multiperiod production model | |

| |

| |

| |

A model of production and transportation | |

| |

| |

| |

Simple Sets and Indexing | |

| |

| |

| |

Unordered sets | |

| |

| |

| |

Sets of numbers | |

| |

| |

| |

Set operations | |

| |

| |

| |

Set membership operations and functions | |

| |

| |

| |

Indexing expressions | |

| |

| |

| |

Ordered sets | |

| |

| |

Predefined sets and interval expressions | |

| |

| |

| |

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

| |

| |

| |

Parameters and Expressions | |

| |

| |

| |

Parameter declarations | |

| |

| |

| |

Arithmetic expressions | |

| |

| |

| |

Logical and conditional expressions | |

| |

| |

| |

Restrictions on parameters | |

| |

| |

| |

Computed parameters | |

| |

| |

| |

Randomly generated parameters | |

| |

| |

| |

Logical parameters | |

| |

| |

| |

Symbolic parameters | |

| |

| |

| |

Linear Programs: Variables, Objectives and Constraints | |

| |

| |

| |

Variables | |

| |

| |

| |

Linear expressions | |

| |

| |

| |

Objectives | |

| |

| |

| |

Constraints | |

| |

| |

| |

Specifying Data | |

| |

| |

| |

Formatted data: the data command | |

| |

| |

| |

Data in lists | |

| |

| |

Lists of one-dimensional sets and parameters | |

| |

| |

Lists of two-dimensional sets and parameters | |

| |

| |

Lists of higher-dimensional sets and parameters | |

| |

| |

Combined lists of sets and parameters | |

| |

| |

| |

Data in tables | |

| |

| |

Two-dimensional tables | |

| |

| |

Two-dimensional slices of higher-dimensional data | |

| |

| |

Higher-dimensional tables | |

| |

| |

Choice of format | |

| |

| |

| |

Other features of data statements | |

| |

| |

Default values | |

| |

| |

Indexed collections of sets | |

| |

| |

Initial values for variables | |

| |

| |

| |

Reading unformatted data: the read command | |

| |

| |

| |

Database Access | |

| |

| |

| |

General principles of data correspondence | |

| |

| |

| |

Examples of table-handling statements | |

| |

| |

| |

Reading data from relational tables | |

| |

| |

Reading parameters only | |

| |

| |

Reading a set and parameters | |

| |

| |

Establishing correspondences | |

| |

| |

Reading other values | |

| |

| |

| |

Writing data to relational tables | |

| |

| |

Writing rows inferred from the data specifications | |

| |

| |

Writing rows inferred from a key specification | |

| |

| |

| |

Reading and writing the same table | |

| |

| |

Reading and writing using two table declarations | |

| |

| |

Reading and writing using the same table declaration | |

| |

| |

| |

Indexed collections of tables and columns | |

| |

| |

Indexed collections of tables | |

| |

| |

Indexed collections of data columns | |

| |

| |

| |

Standard and built-in table handlers | |

| |

| |

Using the standard ODBC table handler | |

| |

| |

Using the standard ODBC table handler with Access and Excel | |

| |

| |

Built-in table handlers for text and binary files | |

| |

| |

| |

Modeling Commands | |

| |

| |

| |

General principles of commands and options | |

| |

| |

Commands | |

| |

| |

Options | |

| |

| |

| |

Setting up and solving models and data | |

| |

| |

Entering models and data | |

| |

| |

Solving a model | |

| |

| |

| |

Modifying data | |

| |

| |

Resetting | |

| |

| |

Resampling | |

| |

| |

The let command | |

| |

| |

| |

Modifying models | |

| |

| |

Removing or redefining model components | |

| |

| |

Changing the model: fix, unfix; drop, restore | |

| |

| |

Relaxing integrality | |

| |

| |

| |

Display Commands | |

| |

| |

| |

Browsing through results: the display command | |

| |

| |

Displaying sets | |

| |

| |

Displaying parameters and variables | |

| |

| |

Displaying indexed expressions | |

| |

| |

| |

Formatting options for display | |

| |

| |

Arrangement of lists and tables | |

| |

| |

Control of line width | |

| |

| |

Suppression of zeros | |

| |

| |

| |

Numeric options for display | |

| |

| |

Appearance of numeric values | |

| |

| |

Rounding of solution values | |

| |

| |

| |

Other output commands: print and printf | |

| |

| |

The print command | |

| |

| |

The printf command | |

| |

| |

| |

Related solution values | |

| |

| |

Objective functions | |

| |

| |

Bounds and slacks | |

| |

| |

Dual values and reduced costs | |

| |

| |

| |

Other display features for models and instances | |

| |

| |

Displaying model components: the show command | |

| |

| |

Displaying model dependencies: the xref command | |

| |

| |

Displaying model instances: the expand command | |

| |

| |

Generic synonyms for variables, constraints and objectives | |

| |

| |

Resource listings | |

| |

| |

| |

General facilities for manipulating output | |

| |

| |

Redirection of output | |

| |

| |

Output logs | |

| |

| |

Limits on messages | |

| |

| |

| |

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

| |

| |

String functions and operators | |

| |

| |

String expressions in AMPL commands | |

| |

| |

| |

Interactions with Solvers | |

| |

| |

| |

Presolve | |

| |

| |

Activities of the presolve phase | |

| |

| |

Controlling the effects of presolve | |

| |

| |

Detecting infeasibility in presolve | |

| |

| |

| |

Retrieving results from solvers | |

| |

| |

Solve results | |

| |

| |

Solver statuses of objectives and problems | |

| |

| |

Solver statuses of variables | |

| |

| |

Solver statuses of constraints | |

| |

| |

AMPL statuses | |

| |

| |

| |

Exchanging information with solvers via suffixes | |

| |

| |

User-defined suffixes: integer programming directives | |

| |

| |

Solver-defined suffixes: sensitivity analysis | |

| |

| |

Solver-defined suffixes: infeasibility diagnosis | |

| |

| |

Solver-defined suffixes: direction of unboundedness | |

| |

| |

Defining and using suffixes | |

| |

| |

| |

Alternating between models | |

| |

| |

| |

Named problems | |

| |

| |

Defining named problems | |

| |

| |

Using named problems | |

| |

| |

Displaying named problems | |

| |

| |

Defining and using named environments | |

| |

| |

| |

Network Linear Programs | |

| |

| |

| |

Minimum-cost transshipment models | |

| |

| |

A general transshipment model | |

| |

| |

Specialized transshipment models | |

| |

| |

Variations on transshipment models | |

| |

| |

| |

Other network models | |

| |

| |

Maximum flow models | |

| |

| |

Shortest path models | |

| |

| |

Transportation and assignment models | |

| |

| |

| |

Declaring network models by node and arc | |

| |

| |

A general transshipment model | |

| |

| |

A specialized transshipment model | |

| |

| |

Variations on transshipment models | |

| |

| |

Maximum flow models | |

| |

| |

| |

Rules for node and arc declarations | |

| |

| |

node declarations | |

| |

| |

arc declarations | |

| |

| |

Interaction with objective declarations | |

| |

| |

Interaction with constraint declarations | |

| |

| |

Interaction with variable declarations | |

| |

| |

| |

Solving network linear programs | |

| |

| |

| |

Columnwise Formulations | |

| |

| |

| |

An input-output model | |

| |

| |

Formulation by constraints | |

| |

| |

A columnwise formulation | |

| |

| |

Refinements of the columnwise formulation | |

| |

| |

| |

A scheduling model | |

| |

| |

| |

Rules for columnwise formulations | |

| |

| |

| |

Piecewise-Linear Programs | |

| |

| |

| |

Cost terms | |

| |

| |

Fixed numbers of pieces | |

| |

| |

Varying numbers of pieces | |

| |

| |

| |

Common two-piece and three-piece terms | |

| |

| |

Penalty terms for "soft" constraints | |

| |

| |

Dealing with infeasibility | |

| |

| |

Reversible activities | |

| |

| |

| |

Other piecewise-linear functions | |

| |

| |

| |

Guidelines for piecewise-linear optimization | |

| |

| |

Forms for piecewise-linear expressions | |

| |

| |

Suggestions for piecewise-linear models | |

| |

| |

| |

Nonlinear Programs | |

| |

| |

| |

Sources of nonlinearity | |

| |

| |

Dropping a linearity assumption | |

| |

| |

Achieving a nonlinear effect | |

| |

| |

Modeling an inherently nonlinear process | |

| |

| |

| |

Nonlinear variables | |

| |

| |

Initial values of variables | |

| |

| |

Automatic substitution of variables | |

| |

| |

| |

Nonlinear expressions | |

| |

| |

| |

Pitfalls of nonlinear programming | |

| |

| |

Function range violations | |

| |

| |

Multiple local optima | |

| |

| |

Other pitfalls | |

| |

| |

| |

Complementarity Problems | |

| |

| |

| |

Sources of complementarity | |

| |

| |

A complementarity model of production economics | |

| |

| |

Complementarity for bounded variables | |

| |

| |

Complementarity for price-dependent demands | |

| |

| |

Other complementarity models and applications | |

| |

| |

| |

Forms of complementarity constraints | |

| |

| |

| |

Working with complementarity constraints | |

| |

| |

Related solution values | |

| |

| |

Presolve | |

| |

| |

Generic synonyms | |

| |

| |

| |

Integer Linear Programs | |

| |

| |

| |

Integer variables | |

| |

| |

| |

Zero-one variables and logical conditions | |

| |

| |

Fixed costs | |

| |

| |

Zero-or-minimum restrictions | |

| |

| |

Cardinality restrictions | |

| |

| |

| |

Practical considerations in integer programming | |

| |

| |

| |

AMPL Reference Manual | |

| |

| |

| |

Lexical rules | |

| |

| |

| |

Set members | |

| |

| |

| |

Indexing expressions and subscripts | |

| |

| |

| |

Expressions | |

| |

| |

| |

Built-in functions | |

| |

| |

| |

Strings and regular expressions | |

| |

| |

| |

Piecewise-linear terms | |

| |

| |

| |

Declarations of model entities | |

| |

| |

| |

Set declarations | |

| |

| |

| |

Cardinality and arity functions | |

| |

| |

| |

Ordered sets | |

| |

| |

| |

Intervals and other infinite sets | |

| |

| |

| |

Parameter declarations | |

| |

| |

| |

Check statements | |

| |

| |

| |

Infinity | |

| |

| |

| |

Variable declarations | |

| |

| |

| |

Defined variables | |

| |

| |

| |

Constraint declarations | |

| |

| |

| |

Complementarity constraints | |

| |

| |

| |

Objective declarations | |

| |

| |

| |

Suffix notation for auxiliary values | |

| |

| |

| |

Suffix declarations | |

| |

| |

| |

Statuses | |

| |

| |

| |

Standard data format | |

| |

| |

| |

Set data | |

| |

| |

| |

Parameter data | |

| |

| |

| |

Database access and tables | |

| |

| |

| |

Command language overview | |

| |

| |

| |

Options and environment variables | |

| |

| |

| |

Redirection of input and output | |

| |

| |

| |

Printing and display commands | |

| |

| |

| |

Reading data | |

| |

| |

| |

Modeling commands | |

| |

| |

| |

The solve command | |

| |

| |

| |

The solution command | |

| |

| |

| |

The write command | |

| |

| |

| |

Auxiliary files | |

| |

| |

| |

Changing a model: delete, purge, redeclare | |

| |

| |

| |

The drop, restore and objective commands | |

| |

| |

| |

The fix and unfix commands | |

| |

| |

| |

Named problems and environments | |

| |

| |

| |

Modifying data: reset, update, let | |

| |

| |

| |

Examining models | |

| |

| |

| |

The show command | |

| |

| |

| |

The xref command | |

| |

| |

| |

The expand command | |

| |

| |

| |

Generic names | |

| |

| |

| |

The check command | |

| |

| |

| |

Scripts and control flow statements | |

| |

| |

| |

The for, repeat and if-then-else statements | |

| |

| |

| |

Stepping through commands | |

| |

| |

| |

Computational environment | |

| |

| |

| |

The shell command | |

| |

| |

| |

The cd command | |

| |

| |

| |

The quit, exit and end commands | |

| |

| |

| |

Built-in timing parameters | |

| |

| |

| |

Logging | |

| |

| |

| |

Imported functions | |

| |

| |

| |

AMPL invocation | |

| |

| |

Index | |