# AMPL Model Colaboratory#

AMPL Model Colaboratory is a collection of AMPL models in Jupyter Notebooks
that run on platforms such as **Google Colab**, **Kaggle**, **Gradient**, and **AWS SageMaker**.
[See our Highlights]

You can use the **Christmas notebook** written by ChatGPT to get started:

BTW: you can even ask ChatGPT to write models for you! If it makes mistakes you can ask for help in our new Discourse Forum!

## Contents#

- Getting Started
- Modules
- Highlights
- AMPL Bin Packing Problem with GCG
- AMPL Capacitated p-Median Problem with GCG
- AMPL Christmas Model created by ChatGPT
- AMPL Model Colaboratory Template
- Logistic Regression with amplpy
- N-Queens
- Optimize your Christmas Tree to Global Optimality
- Quick Start using Pandas dataframes
- Quick Start using lists and dictionaries
- Robust Linear Programming with Ellipsoidal Uncertainty
- Simple sudoku solver using logical constraints (with GUI)

- Lectures
- Authors
- Christian Valente (1 notebook)
- Christian Valente (4 notebooks)
- Filipe Brandão (16 notebooks)
- Gleb Belov (7 notebooks)
- Gyorgy Matyasfalvi (15 notebooks)
- Juan Jesús Losada del Olmo (1 notebook)
- Jurgen Lentz (2 notebooks)
- Marcos Dominguez Velad (23 notebooks)
- Mikhail Riabtsev (10 notebooks)
- Nicolau Santos (3 notebooks)
- Nicolau Santos (5 notebooks)
- Sarah Wells (1 notebook)
- Yimin Wang (2 notebooks)
- Contribution Guide

## Notebooks#

### AMPL - solve multiple models in parallel#

Description: Solve multiple AMPL models in parallel in Python with amplpy and the multiprocessing modules.

Author: Nicolau Santos (3 notebooks) <nfbvs@ampl.com>

### AMPL - spreadsheet handling with amplxl#

Description: Basic example of reading/writing data into/from a .xlsx spreadsheet with amplxl

Author: Nicolau Santos (3 notebooks) <nfbvs@ampl.com>

### AMPL Bin Packing Problem with GCG#

Description: Dantzig-Wolfe decomposition for Bin Packing Problem with GCG

### AMPL Capacitated p-Median Problem with GCG#

Description: Dantzig-Wolfe decomposition for Capacitated p-Median Problem with GCG

### AMPL Christmas Model created by ChatGPT#

Description: Christmas model generated by ChatGPT

### AMPL Development Tutorial 1/6 – Capacitated Facility Location Problem#

Description: This notebook marks the beginning of a six-part series.

### AMPL Development Tutorial 2/6 – Stochastic Capacitated Facility Location Problem#

Description: This notebook continues our six-part series as the second installment.

### AMPL Development Tutorial 3/6 – Benders Decomposition via AMPL scripting#

Description: In this third installment of our six-part series, we continue our exploration by addressing the complexities introduced by the stochastic programming formulation presented in part two.

### AMPL Development Tutorial 4/6 – Benders Decomposition via PYTHON scripting#

Description: In this fourth installment of our six-part series, we advance our exploration by demonstrating how to adapt our AMPL script for use with AMPL’s Python API.

### AMPL Development Tutorial 5/6 – Parallelizing Subproblem Solves in Benders Decomposition#

Notebooks > AMPL Development Tutorial 5/6 – Parallelizing Subproblem Solves in Benders Decomposition

Description: In the fifth installment of our six-part series, we delve deeper by showing how to evolve our Benders decomposition Python script from a serial execution to one that solves subproblems in parallel.

### AMPL Development Tutorial 6/6 – Implementing Benders Decomposition with *ampls*#

Description: This concluding notebook in our six-part series delves into enhancing the efficiency of our decomposition algorithm by utilizing

**AMPL Solver Libraries**(*ampls*).### AMPL Model Colaboratory Template#

Description: Basic notebook template for the AMPL Colab repository

### Aircrew trainee scheduling with seniority constraints#

Description: Aircrew trainee scheduling with simpler seniority modeling

Tags: trainee-scheduling, aircrew-scheduling, employee-scheduling, seniority-constraints, seniority-ranking, preferential-bidding-system, multiple-objectives, lexicographic-optimization, amplpy

Author: Gleb Belov (7 notebooks) <gleb@ampl.com>

### Book Example: Economic equilibria#

Description: economic model using complementarity conditions from Chapter 19 AMPL book

### Book Example: Transshipment problem#

Description: book example with general transshipment model (net1.mod)

### Book Example: diet#

Description: book example autogenerated using diet.mod, diet.dat, and diet.run

### Book Example: prod#

Description: book example autogenerated using prod.mod, prod.dat, and prod.run

Author: N/A

### Book Example: steel#

Description: book example autogenerated using steel.mod, steel.dat, and steel.run

Author: N/A

### Book Example: transp#

Description: book example autogenerated using transp.mod, transp.dat, and transp.run

Author: N/A

### CP-style scheduling model with the *numberof* operator, solved by a MIP solver#

Description: Scheduling model with the Constraint Programming

*numberof*operator, solved with a MIP solver. New MIP solver drivers based on the [MP library](https://amplmp.readthedocs.io/) enable CP-style modeling.Tags: ampl-only, constraint-programming

Author: Gleb Belov (7 notebooks) <gleb@ampl.com>

### Capacity expansion of power generation#

Description: Models the extensive form of a deterministic multi-stage capacity expansion problem. In this model we can have multiple resources of the same type which have identical properties. The model can be further developed into a stochastic one.

### Containers scheduling#

Description: Scheduling model for harbor operations. It is a problem with dependences between containers, which should be dispatch the fastest possible. We are using the MP solver interfaces to model a complex system using techniques from Constraint Programming, such as indicator constraints, and logical or and forall operators. After the model is written, a couple instances are presented and Highs/Gurobi MIP solvers are used to tackle the problem.

### Debugging Model Infeasibility#

Description: This notebook offers a concise guide on troubleshooting model infeasibility using AMPL’s presolve feature and other language capabilities.

### Diet lecture#

Description: Diet case study

Tags: ampl-only, ampl-lecture

### Diet model with Google Sheets#

Description: Diet model using Google Sheets

### Dual-Donor Organ Exchange problem#

Description: Most transplants from living donors require only one donor for each procedure. There are, however, exceptions, including dual-graft liver transplantation, bilateral living-donor lobar lung transplantation, and simultaneous liver-kidney transplantation. For each of these procedures, grafts from two compatible living donors are transplanted. As such, these procedures are more involved from an organizational perspective than those with only one donor. Unfortunately, one or both of the donors can often be biologically incompatible with the intended recipient, precluding the transplantation.

### Dynamic routing example#

Description: Example of interactive optimization with GUI using AMPL and Google Maps

### Efficient Frontier with Google Sheets#

Description: Efficient Frontier example using Google Sheets

### Employee Scheduling Optimization#

Description: Employee scheduling model from the Analytical Decision Modeling course at the Arizona State University.

### Financial Portfolio Optimization with amplpy#

Description: Financial Portfolio Optimization with amplpy and amplpyfinance

### Google Hashcode 2022#

Description: Google Hashcode 2022 Practice Problem

### Hospitals-Residents MIP#

Description: hospitals-residents problem with ties problem solved with ampl and highs

### Hydrothermal Scheduling Problem with Conic Programming#

Description: Hydrothermal Scheduling Problem using Second-Order Cones

Tags: amplpy, conic, second-order-cone, quadratic-cone, nonlinear-programming, scheduling, engineering, power-generation, geothermal-energy, hydropower

Author: Gleb Belov (7 notebooks) <gleb@ampl.com>

### Introduction to Linear and Integer Programming#

Description: Basic introduction to linear programming and AMPL via a lemonade stand example

### Introduction to Mathematical Optimization#

Description: Basic introduction to optimization and AMPL via unconstrained optimization

### Jupyter Notebook Integration#

Description: Jupyter Notebook Integration with amplpy

### Labs scheduling#

Description: Model for laboratories scheduling. Some labs are needed to handle requests from researchers, and departments have to assign labs and locations to the requests.

### Largest small polygon#

Description: lecture about models for the Largest Small Polygon Problem

### Logistic Regression with amplpy#

Description: Logistic regression with amplpy using exponential cones

### Magic sequences#

Description: Solving magic sequences through reinforced formulations and constrained programming. Some comparison between models and solvers is done, and we look into the “Another solution” problem for these sequences.

Tags: constraint-programming, educational, mp, sequences, arithmetic, reinforced-formulations, highs, gecode, cbc, mip

### Multicommodity transportation problem#

Description: Multicommodity transportation model with binary variables

### N-Queens#

Description: How can N queens be placed on an NxN chessboard so that no two of them attack each other?

Author: Gleb Belov (7 notebooks) <gleb@ampl.com>

### NFL Team Rating#

Description: NFL Team Rating problem from the Analytical Decision Modeling course at the Arizona State University.

### Network Linear Programs#

Description: Basic introduction to network linear programms and AMPL via max flow and shortest path problems

### Network design with redundancy#

Description: Design of an electricity transportation network provides enough redundancy, so that a break of one component does not prevent any user from receiving electricity. The approach also works for similar distribution networks and can potentially be used in the design of military logistic networks.

Tags: electric-grid, military

### Nonlinear transportation model#

Description: book example autogenerated using nltransd.mod, nltrans.dat, and nltrans.run

### Nonlinear transportation problem example#

Description: book example autogenerated using nltransd.mod, nltrans.dat, and nltrans.run

### Oil refinery production optimization#

Description: In this document, we present an enhanced approach to oil refining optimization for improved decision-making.

Tags: oil-production, production-optimization, profitability, refinery, mip, highs, industry, json, spreadsheet, excel

### Oil refinery production optimization (+PowerBI)#

Description: In this document, we present an enhanced approach to oil refining optimization by integrating Power BI for improved decision-making and data visualization. For a full description of the model, you can read more about it [here](ampl/colab.ampl.com).

### Oil refinery production optimization (ampl-only version)#

Description: In this document, we present an enhanced approach to oil refining optimization for improved decision-making.

### Optimal Power Flow with AMPL and Python - Bus Injection Model (BIM)#

Description: Optimal Power Flow

Author: Nicolau Santos (5 notebooks) <nicolau@ampl.com>

### Optimal Power Flow with AMPL and Python - Bus Injection Model (BIM) with controllable-phase shifting transformers and tap-changing transformers#

### Optimal Power Flow with AMPL and Python - DC Power Flow#

Description: Optimal Power Flow

Author: Nicolau Santos (5 notebooks) <nicolau@ampl.com>

### Optimal Power Flow with AMPL and Python - conventional Power Flow#

Description: Optimal Power Flow

Author: Nicolau Santos (5 notebooks) <nicolau@ampl.com>

### Optimal Power Flow with AMPL and Python - data management#

Description: Optimal Power Flow with AMPL, Python and amplpy

Author: Nicolau Santos (5 notebooks) <nicolau@ampl.com>

### Optimization Methods in Finance: Chapter 3#

Description: Optimization Methods in Finance: Bond Dedication Problem.

### Optimization of Reinforced Concrete Production and Shipment: A Conveyor-Based Manufacturing and Curing Model#

### Optimization of an TV advertising campaign based on TRP, GRP indicators#

Description: The modern world is unthinkable without advertising. Advertising is the engine of progress.

### Optimization of an advertising campaign for launching a new product on the market#

### Optimize your Christmas Tree to Global Optimality#

Description: Optimize the placement of ornaments on a christmas tree.

### Optimizing the number of staff in a chain of stores#

### P-Median problem#

Description: this notebook states the p-median problem with a simple example, and a MIP formulation in amplpy. The problem is parametrized with a class, so it is easier to sample and replicate experiments. A graphical solution is plotted.

### Pattern Enumeration#

Description: Pattern enumeration example with amplpy

### Pattern Generation#

Description: Pattern generation example with amplpy

### Plot feasible region#

Description: Plot the feasible region and optimal solution for a simple two variable model using AMPL’s Python API.

### Pricing and target-market#

Description: Formulate a pricing optimization and target-market problem as a MILP.

### Production Model#

Description: Basic introduction to AMPL’s indexed entities and the Pygwalker Python package via a lemonade stand example

### Production model#

Description: generic model for production problem

### Profit Maximization for Developers: Optimizing Pricing, Marketing, and Investment Strategies#

### Project management: Minimizing the cost of implementing an investment project, taking into account the costs and risks of completing tasks and penalties for late fulfillment of obligations.#

### Quick Start using Pandas dataframes#

Description: Quick Start using Pandas dataframes to load and retrieve data

### Quick Start using lists and dictionaries#

Description: Quick Start using lists and dictionaries to load and retrieve data

### Robust Linear Programming with Ellipsoidal Uncertainty#

Description: AMPL Modeling Tips #6: Robust Linear Programming

Author: Gleb Belov (7 notebooks) <gleb@ampl.com>

### Roll Cutting - Revision 1 & 2#

Description: Pattern tradeoff example with amplpy

### Scheduling Multipurpose Batch Processes using State-Task Networks in Python#

Description: The State-Task Network (STN) is an approach to modeling multipurpose batch process for the purpose of short term scheduling. It was first developed by Kondili, et al., in 1993, and subsequently developed and extended by others.

Author: Jeffrey C. Kantor, Filipe Brandão (16 notebooks) <fdabrandao@gmail.com>

### Simple sudoku solver using logical constraints (with GUI)#

Description: Simple sudoku model with two formulations: as a Constraint Programming problem using the

*alldiff*operator and as a MIP. Note that the CP formulation is more natural but it needs a solver supporting logical constraints or a MIP solver with automatic reformulation support (see [here](https://mp.ampl.com/) for more information).### Solution check: discontinuous objective function#

Description: Pathological examples to illustrate MP solution checker and settings

Author: Gleb Belov (7 notebooks) <gleb@ampl.com>

### Solving a nonogram puzzle#

Description: Model for solving nonogram puzzles autogenerated using

**nonogram.mod**,**nonogram.dat**and**nonogram.run**.### Solving simple stochastic optimization problems with AMPL#

Description: Examples of the Sample Average Approximation method and risk measures in AMPL

Author: Nicolau Santos (3 notebooks) <nfbvs@ampl.com>

### Steel industry problem#

Description: model for steel production problem

### Sudoku Generator#

Description: Generate Sudoku boards with unique solution via iterative method and mip formulation.

### Supply chain network#

Description: Compute optimal routes to connect suppliers/demanding nodes in a network. Routes have an associated fixed and variable cost. There are different products to ship. The problem is formulated as a MIP with binary variables. Python data structures are used to load the data into the model.

### Transportation problem#

Description: an AMPL model for the transportation problem

Tags: ampl-only, ampl-lecture

### Travelling Salesman Problem with subtour elimination#

Description: this example shows how to solve a TSP by eliminating subtours using amplpy and ampls

### Unit Commitment for Electrical Power Generation#

Description: This notebook illustrates the power generation problem using AMPL. The original version featured the Gurobi solver. By default, this notebook uses the HiGHS and CBC solvers.

### VPSolver: Cutting & Packing Problems#

Description: Solving cutting & packing problems using arc-flow formulations

### Warehouse location and transport#

Description: Model for warehouse allocation. Farms (suppliers) send feedstock to warehouses, and later on, those warehouses send it to a production plant. The problem involves modeling a storage facility location problem with a transportation component to the final plant.

### amplpy setup & Quick Start#

Description: amplpy setup and quick start