Optimization for Decision Science#
Computational optimization is essential to many subdomains of engineering, science, and business such as design, control, operations, supply chains, game theory, data science/analytics, and machine learning.
This course provides a practical introduction to models, algorithms, and modern software for large-scale numerical optimization, especially for decision-making in engineering and business contexts. Topics include (nonconvex) nonlinear programming, deterministic global optimization, integer programming, dynamic optimization, and stochastic programming. Multi-objective optimization, optimization with embedded machine learning models as constraints, optimal experiment design, optimization for statistical inference, and mathematical programs with complementarity constraints may be covered based on time and student interests. The class is designed for advanced undergraduate/graduate engineering, science, mathematics, business, and statistics students who wish to incorporate computation optimization methods into their research. The course begins with an introduction to modeling and the Python-based Pyomo computational environment. Optimization theory and algorithms are emphasized throughout the semester.
What am I going to get out of this class?#
At the end of the semester, you should be able to…
Mathematically formulate optimization problems relevant to decision-making within your discipline (and research!)
Program optimization models in Pyomo and compute numerical solutions with state-of-the-art (e.g., commercial) solvers
Explain the main theory for nonlinear constrained and unconstrained optimization
Describe basic algorithmic elements in pseudocode and implement them in Python
Analyze results from an optimization problem and communicate key findings in a presentation
Write and debug 200 lines of Python code using best practices (e.g., publication quality figures, doc strings)
What do I need to know to take the class?#
Graduate students (60499): A background in linear algebra and numerical methods is strongly recommended but not required. Students must be comfortable programming in Python (preferred), MATLAB, Julia, C, or a similar language. Topics in EE 60551 and ACMS 60880 are complementary to CBE/ACMS 60499. These courses are not prerequisites for CBE/ACMS 60499.
Undergraduate students (40499): Students must be comfortable with linear algebra and programming in Python (preferred), MATLAB, Julia, C, or a similar language. A course on these topics, such as CBE 20258, AME 30251 (concurrent is okay), CE 30125 (concurrent is okay), PHYS 20451, or ACMS 20220, and the standard undergraduate curriculum in computer science or electrical engineering should satisfy this prerequisite. Please contact the instructor for any preparation questions.
Content#
- 1. Getting Started with Pyomo
- 1.1. Local Installation
- 1.2. Optimization Modeling with Applications
- 1.3. Your First Optimization Problem
- 1.4. Continuous Optimization: Linear Programming
- 1.5. Continuous Optimization: Nonlinear Programming
- 1.6. Integer Programs
- 1.7. 60 Minutes to Pyomo: An Energy Storage Model Predictive Control Example
- 2. Logical Modeling
- 3. Dynamic Optimization
- 4. Optimization Under Uncertainty
- 5. Data Science and Applied Statistics
- 6. Unconstrained Nonlinear Optimization
- 7. Constrained Nonlinear Optimization
- 7.1. Convexity Revisited
- 7.2. Local Optimality Conditions
- 7.3. Analysis of KKT Conditions
- 7.4. Constraint Qualifications
- 7.5. Second Order Optimality Conditions
- 7.6. NLP Diagnostics with Degeneracy Hunter
- 7.7. Simple Netwon Method for Equality Constrained NLPs
- 7.8. Inertia-Corrected Netwon Method for Equality Constrained NLPs
- 8. Special Topics
- More Pyomo Examples
- Semiconductor Production Planning
- Optimization of Daily Diet Using Pyomo
- Blending Under Uncertainty
- Vehicle Routing
- Learning Objectives
- Risk Measures and Portfolio Optimization: Expanded
- Learning Objectives
- The Base Problem
- Extended Race Car Optimization Models
- Hot Air Balloon Dynamic Control
- Chemical Reactor Design
- Derivative-Free Optimization
- Stochastic Gradient Descent
- Stochastic Gradient Descent Tutorial 1
- Stochastic Gradient Descent Tutorial 2
- Functions and Utilities
- Implementation of the Algorithm
- Regression Example: Fitting a Quadratic Function to a 2D Data Set
- Binary Classification: Logistic Regression Example
- Conclusions
- References
- Stochastic Gradient Descent Tutorial 3
- Machine Learning and Applied Statistics