MS-E2122 - Nonlinear Optimization D, Lecture, 16.9.2021-23.12.2021
This course space end date is set to 23.12.2021 Search Courses: MS-E2122
Topic outline
-
Why this course?
Mathematical optimisation is one of the cornerstones of fields such as Machine Learning, Artificial Intelligence, and Operations Research. Most decision support methods have, at some level, a mathematical optimisation method at its core, and it is precisely these methods that we will learn in this course.
Mathematical optimisation (Nonlinear optimisation, in its most general form) is a powerful framework in which one seeks to find variable values within a domain that maximise (or minimise) the value of a given function. Using the analogy that variables represent decisions or parameters to be defined and the function is a measure of performance, one can use that framework to support decision making in a wide range of applications, from planning industrial chemical plants to training models that learn from data.
In this course, the student will learn the basic optimisation theory behind the main numerical algorithms available and how they can be applied to solve optimisation problems. At the end of the course, it is expected that the student will be capable of analysing the main characteristics of an optimisation problem and decide what is the most suitable method to be employed for its solution.
Practical matters
Lecturer: Fabricio Oliveira
Assistants: Nikita Belyak- Teaching: Online lectures (24h) and exercise sessions (24h)
- Zoom link for lectures: https://aalto.zoom.us/j/63949584993?pwd=TkhLeWQxVFNmdGw5ZGcyUkJ2OXJ3QT09
Meeting ID: 639 4958 4993
Passcode: 941497- Zulip invite for student sessions: https://ms-e2122-2021.zulip.cs.aalto.fi/join/egua7cawv25tf6cn7m5im2yp/
Information about how to use Zulip: https://scicomp.aalto.fi/aalto/zulip/- Assessment methods: Project assignments and homework assignments.
- Grading scale: 0-5
- Study material: Lecture notes, lecture slides and exercises. Book (Nonlinear Programming, Theory and Algorithms by Bazaraa, Sherali and Shetty).
- Language of instruction: English
- Programming language: Julia http://www.julialang.org. Detailed information here.
- Recommended platform: Aalto CS Jyputer Notebooks https://jupyter.cs.aalto.fi. Detailed information here.
- Teaching: Online lectures (24h) and exercise sessions (24h)
-
Folder with the lecture recordings:
-
-
-
Many of the assignments in our course will be implemented in Julia, using packages, such as JuMP, Plots, among many others. Julia combines simplicity and remarkable performance, which is one of the reasons it has become the language of choice for many optimisation applications. The main website for downloading is http://www.julialang.org. This is also the main place for finding the information you might need.
Aalto Scientific Computing offers an introductory course in Julia. I strongly recommend you to take this short course if you are new to Julia. Here is the link to register: https://scicomp.aalto.fi/training/julia/julia-introduction/
There are a few options to use Julia during this course.
- The first option which is probably the easiest and recommended one is to use Aalto JupyterHub with the Julia 1.6.2 kernel. The platform may be accessed from here https://jupyter.cs.aalto.fi. Following this link, you will be able to log to with your personal Aalto account and choose the Julia environment (Julia: General use (JupyterLab)) on the next page. In this case, all the necessary packages are preinstalled.
- The second option is to install Julia on your personal computer. We recommend this option for those that feel confident about handling the installation themselves. In this case, the recommended version of Julia 1.6.2 with the most recent versions of the packages. By following this option, you will also have to manually install all the packages that will be required during the course.
For the coding interface (IDE), I recommend using Jupyter notebooks (you can open them in Julia by using the IJulia package). If you would like something more "advanced" then VS Code is the way to go.
Below you can find some helpful links. The first one has all the information you need for this course.
- Tutorial 1 (Julia Academy - great starting point): https://juliaacademy.com/p/intro-to-julia
- Tutorial 2 (youtube, very much like the above but in a single video):
- Aalto JupyterHub info: https://scicomp.aalto.fi/aalto/jupyterhub.html