Operations Research course material

Optimization and Operations Research

A practical course on mathematical modelling, optimization, linear programming, network analysis, integer programming, stochasticity and simulation.

What the course covers

The course introduces Operations Research as a quantitative framework for modelling, analysing and improving complex systems. The central thread is optimization, with Python and computational tools used throughout the practical work.

Expected background

Students should be comfortable with linear algebra, calculus, basic numerical analysis and introductory Python programming.

Learning goals

By the end of the course, students should be able to identify linear programming problems, choose appropriate optimization techniques and implement selected OR algorithms.

Course Material

Unit 1 Introduction to OR and Optimization Systems modelling, optimality, practicality and the Python/Colab environment. Unit 2 Non-linear Optimization Unconstrained and constrained optimization, Lagrange multipliers and KKT conditions. Unit 3 Linear Programming LP models, geometric resolution, standard form, feasible solutions, Simplex and duality. Unit 4 Sensitivity Analysis How changes in objective functions and constraints affect the optimal solution. Unit 5 Network Analysis Graphs, flows, connectivity, shortest paths, dynamic programming and project management. Unit 6 Integer Programming Branch and bound, cutting planes, cover inequalities, Lagrangian relaxation and column generation. Unit 7 Stochasticity and Simulation Simulation-oriented material for stochastic systems and uncertainty.

Practical Work

Assessment Summary

The course assessment combines tests, programming exercises and the final exam. The final project is designed to connect the methods studied in class with a concrete optimization or decision problem, and should be implemented in Python.