Here we outline some recommended material for students wishing to start on topics related to optimisation, artificial intelligence and dynamic systems from the process systems perspective.
- Numerical Optimization by J. Nocedal and S. Wright
- Great book to learn continuous optimization algorithms, the suggestion it to implementing pseudo-codes in your language of choice as you traverse through the book.
- Nonlinear and Mixed-Integer Optimization: Fundamentals and Applications by C. A. Floudas
- A favorite source to learn convex mixed-integer optimization
- Algorithms for Optimization by Mykel J. Kochenderfer and Tim A. Wheeler
- A comprehensive introduction to optimization, focus is on algorithm implementation rather than theoretical background, includes algorithms written in Julia.
- Convex Optimization I and Convex Optimization II by S. Boyd
- Great content allover! Lectures 13-19 of COI and all COII are great, and generally underrated. An online book is also available.
- Discrete Optimization by P. Van Hentenryck and C. Coffrin from Coursera learning platform
- Interactive and very fun course to learn discrete optimization
- Deterministic Optimization by S. Ahmed from edX learning platform
- A great interactive course which gives an overview to many optimization instances and problems, also accompanied with practical material.
- Reinforcement Learning: An Introduction by R. S. Sutton and A. G. Barto
- One of the most complete books on the subject, latest version is from 2018. Complements nicely with online courses. Freely available online.
- The Reinforcement Learning Specialization by Martha White and Adam White from Coursera covers a significant part of this book.
- Deep Reinforcement Learning by Sergey Levine at UC Berkeley
- Great content, including YouTube videos, homework, a subreddit, GitHub repositories, etc.
- Reinforcement Learning by David Silver
- Nice and easy material to understand
- Reinforcement Learning Specialization by Martha White and Adam White from Coursera learning platform
- The course is mostly based on the book "Reinforcement Learning: An Introduction" by Sutton and Barto, making it a more interactive way to go through the book if that suits your learning style.
- Reinforcement Learning by by Emma Brunskill at Stanford
- All videos and asssignments are available, YouTube list here.
- Practical Reinforcement Learning by P. Shvechikov and A. Panin from Coursera learning platform
- Good overall content and intuitive explanations, includes online quizzes and excercises.
- Information Theory, Inference, and Learning Algorithms by David MacKay
- Bayesian Statistics: From Concept to Data Analysis by Herbert Lee from Coursera learning platform
- A great introduction to Bayesian thinking
- Bayesian Statistics: Techniques and Models by Matthew Heiner from Coursera learning platform
- A continuation from the above course
- Bayesian Methods for Machine Learning by D. Polykovskiy and Al. Novikov
- Nice practical examples and intuitive explanations on ML algorithms based on Bayesian thinking. Includes topics such as Variational Autoencoder, Gaussian processes & Bayesian optimization
- Information Theory, Pattern Recognition, and Neural Networks by David MacKay
- Great source to learn information theory, very intuitive and clear explanations.
- Based on a freely available book
Dynamic Optimization (Optimal control) and MPC
- Dynamic Programming and Optimal Control by D. P. Bertsekas
- Nice presentation that shows the relations between Dynamic Programming and Optimal Control. Written from a computer science perspective.
- Predictive Control: With Constraints by J. Maciejowski
- Good introductory material to Model Predictive Control
- Numerical Optimal Control by M. Diehl and S. Gros
- Great source on how to solve OC problems numerically, goes very well with his online course
- Nonlinear and Dynamic Optimization: From Theory to Practice by B. Chachuat
- This is a great source for a formal and complete description of dynamic optimization problems in engineering practice. It might be slightly more mathematically demanding than the three previous sources.
- Model Predictive Control: Theory, Computation, and Design by J. B. Rawlings, D. Q. Mayne and M. M. Diehl
- Probably the most complete book on linear MPC, although it might be a difficult read for a beginner in the topic.
- Numerical Optimal Control by M. Diehl
- Very complete learning material, goes very well with his book
- Underactuated Robotics by R. Tedrake, R. Deits and T. Koolen from edX learning platform
- A nice course which covers topics on Dynamic Programming, Control and Dynamic Optimization (can also be found here)
- Nptel by the Indian Institutes of Technology (IIT) and Indian Institute of Science (IISc)
- There are great courses on this site, however, those on Control, State Estimation, Model Predictive Control, and Optimal Control seem particularly good.
- Introduction to Linear Algebra by G. Strang
- Great presentation and intuition on the topic, goes well with his online video lectures
- Linear Algebra by Jim Hefferon
- Freely available online, very enjoyable exercises
- Linear Algebra - Foundations to Frontiers by M. Myers and R. van de Geijn from edX learning platform
- Great course, gives mathematical background as well as great practical exercises.
- Linear Algebra by G. Strang
- Similar to his book, Linear Algebra is presented in a very intuitive and easy to understand fashion.
- Deep Learning by I. Goodfellow, Y. Bengio and A. Courville
- Authored by pioneers on the field, freely available. Probably the best book on Deep Learning.
- Hands-On Machine Learning with Scikit-Learn and TensorFlow by A. Geron
- For people who want to learn ML by doing practical examples
- Deep Learning Specialization by Andrew Ng, K. Katanforoosh and B. Mourri from coursera learning platform
- A series of 5 courses, that take you from knowing nothing to a very good understanding and practical training on deep learning. Explanations need a minimum mathematical requirement.
- Machine Learning by by Andrew Ng
- The course that made Andrew Ng famous. A very nice course, although might be slightly outdated. You can also find his course at Stanford here.
This section outlines useful material that can help polish your math and programming skills before (or while) you are learning optimization and/or machine learning.
- Linear Algebra
- Athough there is a whole section about linear algebra, I thought I should emphasize it, as it is one of the pillars for both optimization and machine learning.
- Python programming
- There is a HUGE number of python courses, and even a significant number of online posts ranking the different courses, so a little google search might be the best way to find the best course for you.
- A course I am confident recommending is Introduction to Computer Science and Programming Using Python by MIT on the edX learning platform. Very complete course, although it is quite time consuming.
- Mathematics for Machine Learning by Imperial College London
- A three course specialization, focusing on linear algebra, multivariate calculus, and principal component analysis
- Book freely available here
- Algorithms Specialization by Tim Roughgarden from Stanford at the Coursera platform
- A very nice course that teaches the fundamentals of the design and analysis of algorithms. Focuses particularly on the practical aspects, but also give some theory, and makes thinking algorithmically quite fun.
Note that blogs, GitHub repositories, YouTube symposiums, online classes and tutorials can be excellent learning material. Particularly for ML, RL and DL there are new courses and tutorials coming out everyday! Maybe worthwhile exploring the web on your own :).
You can have a look at our codes section for some code-tutorials developed by the group, or to our additional resources section, where we list some podcasts, blogs, and other sites that might be of interest.