Advanced Operations Research Methods
Overall Course Objectives
The aim of the course is to give a thorough introduction to decomposition algorithms. This will enable the students to solve complex optimization problems. Furthermore the student is trained in applying the algorithms and implementing them in Julia
See course description in Danish
Learning Objectives
- Describe the motivation for decomposition in large‑scale optimization, including block structure, separability, and scenario‑based modeling
- Explain the core ideas behind the major decomposition methods Benders Decomposition, Dantzig–Wolfe Decomposition, Stochastic Dual Dynamic Programming, and Progressive Hedging
- Summarize the mathematical foundations supporting these methods, including duality, convexity, recourse, and value functions
- Formulate master and subproblem structures for deterministic and stochastic optimization models suitable for decomposition
- Implement basic versions of Benders, Dantzig–Wolfe, Stochastic Dual Dynamic Programming, and Progressive Hedging using a modeling framework (e.g., Julia/JuMP)
- Analyze a mathematical model to determine whether it possesses structural properties that make it suitable for decomposition
- Apply decomposition methods to solve representative deterministic and stochastic optimization problems
- Summarize the main advantages and limitations of the methods considered
Course Content
Many important optimization problems can be formulated as mixed integer programming models. When these models cannot be solved using standard solver software, decomposition algorithms can be applied to iteratively solve the problems by iteratively coordinating smaller problems. These methods are: Benders decomposition, Dantzig-Wolfe decomposition/column generation, Stochastic Dual Dynamic Programming, and Progressive Hedging.
The course will give students a thorough overview of these methods and enable them to use them as solution methods for various problems.
Recommended prerequisites
42112, The programming language Julia, using the Math. Programming package Jump will be used in the exercises and in the assignments.
Teaching Method
Lectures, excercises and project work.
Faculty
Remarks
The course is quantitatively oriented and requires a solid understanding of linear programming. In the exercises, students will use the Julia programming language together with the JuMP modeling package (introduced in course 42112) and the SDDP package to implement the decomposition algorithms.




