Mathematical Optimization for Engineers

Brought by: edX

Overview

Today, for almost every product on the market and almost every service offered, some form of optimization has played a role in their design.

However, optimization is not a button-press technology. To apply it successfully, one needs expertise in formulating the problem, selecting and tuning the solution algorithm and finally, checking the results. We have designed this course to make you such an expert.

This course is useful to students of all engineering fields. The mathematical and computational concepts that you will learn here have application in machine learning, operations research, signal and image processing, control, robotics and design to name a few.

We will start with the standard unconstrained problems, linear problems and general nonlinear constrained problems. We will then move to more specialized topics including mixed-integer problems; global optimization for non-convex problems; optimal control problems; machine learning for optimization and optimization under uncertainty. Students will learn to implement and solve optimization problems in Python through the practical exercises.

Syllabus

Week 1: Introduction and math review

  • Mathematical definitions of objective function, degrees of freedom, constraints and optimal solution with real-world examples
  • Review of some mathematical basics needed to take us through the course

Week 2: Unconstrained optimization

  • Basics of iterative descent: step direction and step length
  • Common algorithms like steepest descent, Newton’s method and its variants and trust-region methods.

Week 3: Linear optimization

  • KKT conditions of optimality for constrained problems
  • Simplex method
  • Interior point methods

Week 4: Nonlinear optimization

  • Penalty, log-barrier and SQP methods

Mixed-integer optimization

  • Branch and bound method for mixed-integer linear problems

Week 5: Global optimization

  • Branch and bound method for nonlinear non-convex problems
  • Constructing relaxations
  • Different formulations and their numerical performance
  • Stochastic methods, genetic algorithm and derivative free methods

Week 6: Dynamic optimization

  • Full discretization, single-shooting and multi-shooting methods
  • Nonlinear model predictive control

Week 7: Machine learning for optimization

  • Mechanistic, data-driven and hybrid modelling
  • Basics of training machine learning models
  • Optimization with machine learning embedded

Week 8: Optimization under uncertainty

  • Parametric optimization
  • Two stage stochastic problems
  • Robust optimization via semi-infinite problems

Taught by

Univ.-Prof. Alexander Mitsos, Johannes M. M. Faust and Ashutosh Manchanda

Mathematical Optimization for Engineers
Go to course

Mathematical Optimization for Engineers

Brought by: edX

  • edX
  • Free
  • English
  • Certificate Available
  • Available at any time
  • intermediate
  • English
8.1.2PHP Version235msRequest Duration2MBMemory UsageGET en/courses/{slug}Route
    • Booting (139ms)
    • Application (95.36ms)
    • 1 x Booting (59.25%)
      139.49ms
      1 x Application (40.51%)
      95.36ms
      14 templates were rendered
      • public.courses.show (resources/views/public/courses/show.blade.php)3bladefile
        Params
        0
        course
        1
        links
        2
        config
      • public.courses.partials.breadcrumbs (resources/views/public/courses/partials/breadcrumbs.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.heading (resources/views/public/courses/partials/heading.blade.php)7bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        classes
      • public.courses.partials.details (resources/views/public/courses/partials/details.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.breadcrumbs (resources/views/public/courses/partials/breadcrumbs.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.heading (resources/views/public/courses/partials/heading.blade.php)7bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        classes
      • public.layouts.main (resources/views/public/layouts/main.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.layouts.partials.meta (resources/views/public/layouts/partials/meta.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.layouts.partials.navbar (resources/views/public/layouts/partials/navbar.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.auth.profile.partials.links (resources/views/public/auth/profile/partials/links.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.layouts.partials.flash-session (resources/views/public/layouts/partials/flash-session.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      uri
      GET en/courses/{slug}
      middleware
      web, localize:en
      controller
      App\Http\Controllers\CourseController@show
      as
      en.courses.show
      namespace
      prefix
      /en
      where
      file
      app/Http/Controllers/CourseController.php:17-35
      7 statements were executed10.86ms
      • select * from `courses` where `slug_en` = 'mathematical-optimization-for-engineers' limit 1
        9.51ms/app/Http/Controllers/CourseController.php:20corspedia
        Metadata
        Bindings
        • 0. mathematical-optimization-for-engineers
        Backtrace
        • 17. /app/Http/Controllers/CourseController.php:20
        • 18. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 19. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 20. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • update `courses` set `visitors` = `visitors` + 1, `courses`.`updated_at` = '2025-04-21 02:33:36' where `id` = 6821
        540μs/app/Http/Controllers/CourseController.php:21corspedia
        Metadata
        Bindings
        • 0. 2025-04-21 02:33:36
        • 1. 6821
        Backtrace
        • 17. /app/Http/Controllers/CourseController.php:21
        • 18. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 19. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 20. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select `id`, `name_en`, `name_ar`, `topic_id`, `slug_en`, `slug_ar` from `subjects` where `subjects`.`id` in (194)
        170μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select `id`, `name_en`, `name_ar`, `slug_en`, `slug_ar` from `topics` where `topics`.`id` in (1)
        140μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 25. /app/Http/Controllers/CourseController.php:23
        • 26. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 27. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 28. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 29. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `institutions` where `institutions`.`id` in (86) and `institutions`.`deleted_at` is null
        180μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `providers` where `providers`.`id` in (1) and `providers`.`deleted_at` is null
        140μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `html_files` where `html_files`.`id` = 6812 limit 1
        180μs/app/Models/Course.php:84corspedia
        Metadata
        Bindings
        • 0. 6812
        Backtrace
        • 21. /app/Models/Course.php:84
        • 28. view::public.courses.show:29
        • 30. /vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:125
        • 31. /vendor/laravel/framework/src/Illuminate/View/Engines/PhpEngine.php:58
        • 32. /vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php:72
      App\Models\HtmlFile
      1
      App\Models\Provider
      1
      App\Models\Institution
      1
      App\Models\Topic
      1
      App\Models\Subject
      1
      App\Models\Course
      1
        _token
        hIjbQWjmuiAOfZyerPdoUDP2dqApzIuQjPwHbgrq
        locale
        en
        _previous
        array:1 [ "url" => "https://www.corspedia.com/en/courses/mathematical-optimization-for-engineers" ...
        _flash
        array:2 [ "old" => [] "new" => [] ]
        PHPDEBUGBAR_STACK_DATA
        []
        path_info
        /en/courses/mathematical-optimization-for-engineers
        status_code
        200
        
        status_text
        OK
        format
        html
        content_type
        text/html; charset=UTF-8
        request_query
        []
        
        request_request
        []
        
        request_headers
        0 of 0
        array:24 [ "cf-ipcountry" => array:1 [ 0 => "US" ] "cf-connecting-ip" => array:1 [ 0 => "13.59.2.97" ] "cdn-loop" => array:1 [ 0 => "cloudflare; loops=1" ] "x-forwarded-proto" => array:1 [ 0 => "https" ] "cf-visitor" => array:1 [ 0 => "{"scheme":"https"}" ] "sec-fetch-site" => array:1 [ 0 => "none" ] "accept" => array:1 [ 0 => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" ] "user-agent" => array:1 [ 0 => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" ] "upgrade-insecure-requests" => array:1 [ 0 => "1" ] "sec-ch-ua-platform" => array:1 [ 0 => ""Windows"" ] "sec-ch-ua-mobile" => array:1 [ 0 => "?0" ] "sec-ch-ua" => array:1 [ 0 => ""HeadlessChrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"" ] "cache-control" => array:1 [ 0 => "no-cache" ] "pragma" => array:1 [ 0 => "no-cache" ] "sec-fetch-dest" => array:1 [ 0 => "document" ] "cf-ray" => array:1 [ 0 => "93397a413c1288cd-ORD" ] "accept-encoding" => array:1 [ 0 => "gzip, br" ] "priority" => array:1 [ 0 => "u=0, i" ] "sec-fetch-user" => array:1 [ 0 => "?1" ] "sec-fetch-mode" => array:1 [ 0 => "navigate" ] "x-forwarded-for" => array:1 [ 0 => "13.59.2.97" ] "host" => array:1 [ 0 => "www.corspedia.com" ] "content-length" => array:1 [ 0 => "" ] "content-type" => array:1 [ 0 => "" ] ]
        request_server
        0 of 0
        array:50 [ "USER" => "www-data" "HOME" => "/var/www" "HTTP_CF_IPCOUNTRY" => "US" "HTTP_CF_CONNECTING_IP" => "13.59.2.97" "HTTP_CDN_LOOP" => "cloudflare; loops=1" "HTTP_X_FORWARDED_PROTO" => "https" "HTTP_CF_VISITOR" => "{"scheme":"https"}" "HTTP_SEC_FETCH_SITE" => "none" "HTTP_ACCEPT" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" "HTTP_USER_AGENT" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" "HTTP_UPGRADE_INSECURE_REQUESTS" => "1" "HTTP_SEC_CH_UA_PLATFORM" => ""Windows"" "HTTP_SEC_CH_UA_MOBILE" => "?0" "HTTP_SEC_CH_UA" => ""HeadlessChrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"" "HTTP_CACHE_CONTROL" => "no-cache" "HTTP_PRAGMA" => "no-cache" "HTTP_SEC_FETCH_DEST" => "document" "HTTP_CF_RAY" => "93397a413c1288cd-ORD" "HTTP_ACCEPT_ENCODING" => "gzip, br" "HTTP_PRIORITY" => "u=0, i" "HTTP_SEC_FETCH_USER" => "?1" "HTTP_SEC_FETCH_MODE" => "navigate" "HTTP_X_FORWARDED_FOR" => "13.59.2.97" "HTTP_HOST" => "www.corspedia.com" "REDIRECT_STATUS" => "200" "SERVER_NAME" => "corspedia.com" "SERVER_PORT" => "443" "SERVER_ADDR" => "141.95.147.152" "REMOTE_USER" => "" "REMOTE_PORT" => "54400" "REMOTE_ADDR" => "172.69.17.122" "SERVER_SOFTWARE" => "nginx/1.18.0" "GATEWAY_INTERFACE" => "CGI/1.1" "HTTPS" => "on" "REQUEST_SCHEME" => "https" "SERVER_PROTOCOL" => "HTTP/2.0" "DOCUMENT_ROOT" => "/var/www/corspedia/public" "DOCUMENT_URI" => "/index.php" "REQUEST_URI" => "/en/courses/mathematical-optimization-for-engineers" "SCRIPT_NAME" => "/index.php" "CONTENT_LENGTH" => "" "CONTENT_TYPE" => "" "REQUEST_METHOD" => "GET" "QUERY_STRING" => "" "SCRIPT_FILENAME" => "/var/www/corspedia/public/index.php" "PATH_INFO" => "" "FCGI_ROLE" => "RESPONDER" "PHP_SELF" => "/index.php" "REQUEST_TIME_FLOAT" => 1745202816.4619 "REQUEST_TIME" => 1745202816 ]
        request_cookies
        []
        
        response_headers
        0 of 0
        array:5 [ "content-type" => array:1 [ 0 => "text/html; charset=UTF-8" ] "cache-control" => array:1 [ 0 => "no-cache, private" ] "date" => array:1 [ 0 => "Mon, 21 Apr 2025 02:33:36 GMT" ] "set-cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6IkpoeXpiL0lWWDVySnQrSTdldUxXdGc9PSIsInZhbHVlIjoiRVRON24wSlZNSmVySXFrQnpGKzJCR3dNYjFBU09wR1BRenBJNG5MMTdib29aYld6NkNRWm1hazQ1eExhbTBDbjhvM2hzN2c4bGJuZkFiVGZCTFFERnZaN25UbU5aNEhqR3VWL21wL3QyWmdsdVlpTzNucVZ3eURWZ2RyTHo2Y2MiLCJtYWMiOiJiMTViYTI5MzEwYWM0YzdmZGFjZDU4MjM3MTE2MDA4OTBkMTE4M2NmZDk4NGM0N2RkOWI4YjIxNjlkZGFkYWFlIiwidGFnIjoiIn0%3D; expires=Mon, 21 Apr 2025 04:33:36 GMT; Max-Age=7200; path=/; samesite=laxXSRF-TOKEN=eyJpdiI6IkpoeXpiL0lWWDVySnQrSTdldUxXdGc9PSIsInZhbHVlIjoiRVRON24wSlZNSmVySXFrQnpGKzJCR3dNYjFBU09wR1BRenBJNG5MMTdib29aYld6NkNRWm1hazQ1eExhbTBDbjhvM2hzN" 1 => "laravel_session=eyJpdiI6IllvNnhSQTVPNEE3Q0VmTHUycVFQMGc9PSIsInZhbHVlIjoiUFJXTjBsckYwU245R2EvVnZkNEZmNGsrTC96ZmJha0hnUjUvbTNLSFlNL2w5c01jL2toYWZ4VDJESzFhVVJXMGFRZjdFWUg2QmpGYXNKbXV2QS9ZeWl1NHdsdjhaVGhyVnJCSUZVSWRGQTlKKzV0NHppVUtaVzZjRElUZm9QcUkiLCJtYWMiOiI1Njc2NmUyNzdiM2EyODU0Y2YyNWI1OTZjZDljZjRjMTU5ZDRlYzczYzM1ZDliMjgyNmQ0NTRiNThmNjA3NzA5IiwidGFnIjoiIn0%3D; expires=Mon, 21 Apr 2025 04:33:36 GMT; Max-Age=7200; path=/; httponly; samesite=laxlaravel_session=eyJpdiI6IllvNnhSQTVPNEE3Q0VmTHUycVFQMGc9PSIsInZhbHVlIjoiUFJXTjBsckYwU245R2EvVnZkNEZmNGsrTC96ZmJha0hnUjUvbTNLSFlNL2w5c01jL2toYWZ4VDJESzFhVVJXMGFR" ] "Set-Cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6IkpoeXpiL0lWWDVySnQrSTdldUxXdGc9PSIsInZhbHVlIjoiRVRON24wSlZNSmVySXFrQnpGKzJCR3dNYjFBU09wR1BRenBJNG5MMTdib29aYld6NkNRWm1hazQ1eExhbTBDbjhvM2hzN2c4bGJuZkFiVGZCTFFERnZaN25UbU5aNEhqR3VWL21wL3QyWmdsdVlpTzNucVZ3eURWZ2RyTHo2Y2MiLCJtYWMiOiJiMTViYTI5MzEwYWM0YzdmZGFjZDU4MjM3MTE2MDA4OTBkMTE4M2NmZDk4NGM0N2RkOWI4YjIxNjlkZGFkYWFlIiwidGFnIjoiIn0%3D; expires=Mon, 21-Apr-2025 04:33:36 GMT; path=/XSRF-TOKEN=eyJpdiI6IkpoeXpiL0lWWDVySnQrSTdldUxXdGc9PSIsInZhbHVlIjoiRVRON24wSlZNSmVySXFrQnpGKzJCR3dNYjFBU09wR1BRenBJNG5MMTdib29aYld6NkNRWm1hazQ1eExhbTBDbjhvM2hzN" 1 => "laravel_session=eyJpdiI6IllvNnhSQTVPNEE3Q0VmTHUycVFQMGc9PSIsInZhbHVlIjoiUFJXTjBsckYwU245R2EvVnZkNEZmNGsrTC96ZmJha0hnUjUvbTNLSFlNL2w5c01jL2toYWZ4VDJESzFhVVJXMGFRZjdFWUg2QmpGYXNKbXV2QS9ZeWl1NHdsdjhaVGhyVnJCSUZVSWRGQTlKKzV0NHppVUtaVzZjRElUZm9QcUkiLCJtYWMiOiI1Njc2NmUyNzdiM2EyODU0Y2YyNWI1OTZjZDljZjRjMTU5ZDRlYzczYzM1ZDliMjgyNmQ0NTRiNThmNjA3NzA5IiwidGFnIjoiIn0%3D; expires=Mon, 21-Apr-2025 04:33:36 GMT; path=/; httponlylaravel_session=eyJpdiI6IllvNnhSQTVPNEE3Q0VmTHUycVFQMGc9PSIsInZhbHVlIjoiUFJXTjBsckYwU245R2EvVnZkNEZmNGsrTC96ZmJha0hnUjUvbTNLSFlNL2w5c01jL2toYWZ4VDJESzFhVVJXMGFR" ] ]
        session_attributes
        0 of 0
        array:5 [ "_token" => "hIjbQWjmuiAOfZyerPdoUDP2dqApzIuQjPwHbgrq" "locale" => "en" "_previous" => array:1 [ "url" => "https://www.corspedia.com/en/courses/mathematical-optimization-for-engineers" ] "_flash" => array:2 [ "old" => [] "new" => [] ] "PHPDEBUGBAR_STACK_DATA" => [] ]