Mathematical Optimization with GAMS and Pyomo (Python)
What you'll learn
- Mathematical optimization
- Linear programming
- Integer programming
- Nonlinear programming
- Hands-on coding experience in GAMS
- Hands-on coding experience in Pyomo (Python)
Requirements
- This course is designed for complete beginners to mathematical optimization. There are no coding prerequisites either, as we go through the functions and syntaxes in GAMS and Pyomo in detail. We instruct you on the download and demo license installation for GAMS. Pyomo is an open source package which we use Google Colaboratory to run. Therefore, all you need is a functional Google account, and you are ready to get started on this introductory journey to optimization!
Description
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
Who this course is for:
- We have designed this course to be accessible to students and professionals in various disciplines including, but not limited to, operations research, engineering, science, and management. Hence, we have chosen illustrative examples for each module within the course from different disciplines such as production scheduling, chemical and electrical engineering, geometry, etc. For each example, we will go through the problem statement in detail before proceeding to coding in GAMS and Python, so rest assured that you can follow through regardless of your field of learning and work.
Instructors
Hossein Shahandeh is a mathematical optimization expert with more than 10 years of experience in this field. Through his academic and industrial experience, he has solved optimization problems mainly in the energy sector. He has hands-on experience on programming platforms (GAMS, MATLAB, and Pyomo) and optimization solvers (Gurobi, CPLEX, BARON, Gekko, GLPK, SCIP, and genetic algorithm).
Hossein received his Ph.D. in Chemical Engineering (Advanced Process Control major) from the University of Alberta in 2018. When he is not developing the most efficient solutions for his clients, he spends quality time with his wife, hangs out with his friends, improves his snowboarding skills, or develops online courses.
Sanjula Kammammettu is a mathematical optimization researcher, with expertise in the fields of process optimization, scheduling, and process monitoring. She is currently pursuing a PhD in Process Control, with a focus on optimization under uncertainty, at the University of Alberta, Canada. During the course of her Masters, and ongoing doctoral work, she has explored optimization approaches in a number of fields including steelmaking, oil and gas, and wastewater treatment sectors. She has a good working knowledge of programming environments such as MATLAB, GAMS, Python, and Julia. When she isn't working on her research or teaching, she can be found exploring the city's trails and honing her amateur photography skills, or trying out the newest recipe she found online.