Skip to content

Biocomputing-Teaching/ORcourse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

98 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Course: Optimization and Operational Research

Instructor: Jordi Villà-Freixa

Course Description

In this course we deal with Operations Research (OR), a scientific discipline at the interface of Applied Mathematics, Computer Science and Engineering, defined as the use of quantitative methods to assist analysts and decision-makers in designing, analyzing, and improving the performance or operation of systems. OR can be used in financial systems, scientific or engineering systems, or industrial systems. Its aim is to rationalize, simulate, optimize, model and plan the architecture and operation of complex systems that are increasingly present in industry and large organizations. We will focus on the optimization problem, and we will be using a fully practical approach, using Python/iPython, Colab and libraries like google OR, among others, as our main tools during the course to demonstrate and test what we learn from the theoretical sessions.

Prerequisites

Linear algebra, matrix analysis, basic numerical analysis, differential, and integral calculus. Basic knowledge of programming Python.

Contents

Unit 1: Introduction to OR and Optimization

  • Introduction to Operations Research.

    • Introduction to systems modelling; optimality and practicality
    • Introduction to the Python/colab environment; GitHub
  • Non-linear optimization.

    • Concepts and algorithms in non-linear optimization
    • Unconstrained optimization
    • Constrained optimization (Lagrange multiplier theorem, Kuhn-Tucker multiplier theorem)

Unit 2: Linear programming

  • The linear programming model

    • Fundamental principles of linear programming
    • Geometric resolution
    • Basic mathematics tools
  • The Simplex method

    • Standard form,
    • Deviation variables
    • Basic feasible solutions
    • Artificial variables
  • Duality

    • Primal and dual problems, economic interpretation, conditions of optimality, resolution of the dual by the primal and penalty method

Unit 3: Sensitivity analysis

  • Sensitivity Analysis

    • Sensitivity analysis: the effect of modifying the objective function or the constraints

Unit 4: Network analysis

  • Network analysis

    • Graphs and Networks
    • Maximum flow / minimal cost
    • Network connectivity
    • Shortest path problems
    • Dynamic programming
    • Project management

Unit 5: Integer programming

  • Integer programming

    • Branch and bound
    • Cutting planes
    • Cover inequalities
    • Lagrangian relaxation
    • Column generation

Code

The repository contains code developed on purpose for the course, as well as a bunch of other code adapted from nice job made by other developers (stated and referenced accordingly when needed).

Recommended reading

Material created on purpose for the course, unless stated. Check the syllabus.

Jordi Villà-Freixa, 2021-2023