Nonlinear and Stochastic Optimization
CBE 60499 / 40499 (graduate / advanced undergraduate elective)
Fall 2018, Spring 2021
Description: This course will provide a practical introduction to models, algorithms, and modern software for large-scale numerical optimization. Topics include (nonconvex) nonlinear programming, deterministic global optimization, integer programming, dynamic optimization, and stochastic programming. Multi-objective optimization and mathematical programs with complementarity constraints may be covered based on time and student interests. The class is design for advanced undergraduate/graduate students from engineering, science, and mathematics who wish to incorporate optimization methods into their research. The course will begin with an introduction to modeling and the Python-based Pyomo computational environment. Optimization theory and algorithms will be emphasized throughout the course.
Gradaute students: A background in linear algebra and numerical methods will be helpful but is not necessary. Students should be comfortable programming in Julia, Python, MATLAB, C, or a similar language. EE 60551: Mathematical Programming is not a prerequisite for this course.
Undergraduate students: Students must be comfortable with linear algebra and programming in Julia, Python, MATLAB, C, or a similar language. CBE 20258 or a similar undergraduate class on numerical methods is strongly recommended as a prerequisite. Please contact the instructor for any questions about preparation.
- Nonlinear Programming: Concepts, Algorithms, and Applications to Chemical Processes (Biegler, 2010) [link]
- Pyomo — Optimization Modeling in Python (Hart et al, 2017) [link]
Statistical and Numerical Analysis
CBE 20258 (sophomore)
Spring 2018 (co-taught), Spring 2019, Fall 2019, Spring 2020 (co-taught)
This course introduces the fundamentals of i) computing in Python, ii) mathematical modeling, iii) numerical methods for equation solving, integration and optimization, and iv) probability and statistics. Topics include:
- Planning and debugging computer programs
- Functions and data types in Python
- Visualization in Python
- Degree of freedom analysis
- Gaussian elimination and LU factorization with partial pivoting
- Newton's method for equation solving and optimization
- Probability: random variables, laws, common distributions
- Covariance and error propagation
- Statistical inference: hypothesis testing, confidence intervals, p-values, statistical power
- Regression: linear, weighted, multivariate, nonlinear, residual analysis
- Sampling methods: non-parametric bootstrap, Monte Carlo
- Integration methods: Gauss quadrature, Euler's, Runge-Kutta
Applications in chemical engineering and conceptual understanding are emphasized. The overall goal of this class is to provide students with basic computational techniques needed for future chemical engineering classes and enable them to learn advanced topics via technical electives, internships, self-study, and on-the-job training.
Statistics for Engineers and Scientists (Navidi, 2014) [publisher website]
Computational Nuclear Engineering and Radiological Science Using Python (McClarren, 2018) [publisher website]
Prof. Dowling lecturing in E720 Corbett Hall. Prof. Dowling is participating in the first cohort of the Kaneb Center Course Design Academy (KCCDA) during Summer 2019 to "flip" CBE 20258. The vision is to divide lecture material into brief 5 to 10-minute videos focused on concepts and simple examples. Students would watch these videos before class, allowing lecture time to become extended tutorials that emphasize problem-solving.
Separation Process Principles
CBE 40443 (senior)
- Transport Processes and Separation Process Principles (Geankoplis, 2003) [publisher website]