
Explore the course curriculum for mathematical optimization with GAMS and Pyomo in Python. Set up coding environment—from GAMS to Google Colab—and solve three examples per section with GAMS and Python.
Identify the three core components of optimization—objective function, decision variables, and constraints—and explore a general model for LP, NLP, MILP, and MINLP with GAMS and Pyomo.
Learn to model and solve linear programming problems using GAMS and Pyomo with Python by formulating a two-ad campaign for Dorian Auto, minimizing cost under audience constraints.
Minimize hires of full-time staff by modeling x_i as employees beginning on day i, enforcing five consecutive workdays and two days off, and meeting requirements with GAMS in Google Colab.
Demonstrate solving the post office workers scheduling problem in Pyomo, defining x1 through x7, minimizing total workers, and applying daily constraints with GLPK, then enforce non-negativity.
Define sets i, c, and a to compress a mathematical optimization model; organize items, customers, and ads with theta_a, alpha_c, mu_a_c, and set a cost objective with viewership constraints.
Learn to manage Pyomo code on Google Colab by saving notebooks to Drive or GitHub, uploading or renaming, and downloading as ipynb or py files for single or multiple models.
illustrate how initial guesses influence nlp solutions, contrasting linear and nonlinear models with coefficients a1, a2, b1, b2, b3, and note Gams sensitivity versus Pyomo robustness.
Explore the importance of solvers for NLP problems, showing how IPOPT, SNOPT, and KNITRO can yield multiple locally optimal solutions and how results differ between GAMS and Pyomo.
Learn to model and solve mixed-integer linear programs in GAMS and Pyomo, using big-M and either-or constraints across three examples: automobile manufacturing, power scheduling, and flowshop scheduling.
Solve the Dorian auto manufacturing milp in GAMS by defining sets, x_a, y_a, phi, mu_a, alpha, sigma, gamma, and M, then maximize z using cplex.
Learn how to build and solve a mixed-integer linear problem in Pyomo on Google Colab, defining a ConcreteModel, sets, variables, big-M bounds, and GLPK-powered optimization, with result export.
solve the second milp power scheduling problem with pyomo in google colab, building a concrete model, defining sets and variables, and solving with glpk.
Formulate and solve mixed integer nonlinear programming problems in GAMS and Pyomo, illustrated by a power scheduling example with binary and continuous variables and a nonlinear fuel consumption curve.
This introductory course to optimization in GAMS and Pyomo (Python) contains 4 modules, namely,
Linear programming
Nonlinear programming
Mixed Integer Linear Programming, and
Mixed-Integer Nonlinear Programming
In each module, we aim to teach you the basics of each type of optimization through 3 different illustrative examples and 1 assingment from different areas of science, engineering, and management. Using these examples, we aim to gently introduce you to coding in two environments commonly used for optimization, GAMS and Pyomo. GAMS is a licensed software, for which we use a demo license in this course. Pyomo is an open-source package in Python, which we use Google Colaboratory to run. As we proceed through the different examples in each module, we also introduce different functionalities in GAMS and Python, including data import and export.
At the end of this course, you will be able to,
Read a problem statement and build an optimization model
Be able to identify the objective function, decision variables, constraints, and parameters
Code an optimization model in GAMS
Define sets, variables, parameters, scalars, equations
Use different solvers in GAMS
Leverage the NEOS server for optimization
Import data from text, gdx, and spreadsheet files
Export data to text, gdx, and spreadsheet files
Impose different variable ranges, and bounds
Code an optimization model in Pyomo
Define models, sets, variables, parameters, constraints, and objective function
Use different solvers in Pyomo
Leverage the NEOS server for optimization
Import data from text, gdx, and spreadsheet files
Export data to text, gdx, and spreadsheet files
Impose different variable ranges, and bounds