princetonlogo
Bartolomeo Stellato

ORF307: Optimization

Previous years: 2022 2023 2024 2025

Main course website: stella.to/teaching/orf307

Description

This course focuses on analytical and computational tools for optimization. We will introduce least squares optimization with multiple objectives and constraints. We will also discuss linear optimization modeling, duality, the simplex method, degeneracy, interior point methods and network flow optimization. Finally, we will cover integer programming and branch-and-bound algorithms. A broad spectrum of real-world applications in engineering, finance and statistics is presented.

Learning objectives

This course introduces analytical and computational tools for mathematical optimization. Upon successful completion of this course you should be able to:

  • Model decision-making problems across different disciplines as least squares, linear and integer optimization problems.

  • Apply the most appropriate optimization tools when faced with a concrete problem.

  • Understand which algorithms are slower or faster, and which problems are easier or harder to solve.

Office hours

Instructor

Name: Bartolomeo Stellato
Office hours: Sherrerd 123, Tuesdays, 1:30pm-3pm
Website: https://stella.to
Email: bstellato@princeton.edu

Assistants in instruction

Name: Irina Wang (Head AI)
Office hours: Sherrerd 123, Wednesdays, 6pm-7:30pm
Email: iywang@princeton.edu

Name: Daniel Deza
Office hours: Sherrerd 123, Thursdays, 6pm-7:30pm
Email: dd7022@princeton.edu

Name: Yanjun Liu
Office hours: Sherrerd 123, Tuesdays, 6pm-7:30pm
Email: yanjun.liu@princeton.edu

Schedule

Lectures

All lectures will take place in room Bowen 222 on Tuesdays and Thursdays 10:40am - 12:00pm. The schedule is as follows (subject to change):

Least squares

# Date Topic Slides Homeworks
1 01/27 Introduction 01_lec.pdf
2 01/29 Solving linear systems in practice 02_lec.pdf 1 Out
3 02/03 Least squares 03_lec.pdf
4 02/05 Least squares data-fitting 04_lec.pdf 2 Out
5 02/10 Multiobjective least squares 05_lec.pdf
6 02/12 Constrained least squares 06_lec.pdf 3 Out

Linear optimization

# Date Topic Slides Homeworks
7 02/17 Linear optimization 07_lec.pdf
8 02/19 Piecewise linear optimization 08_lec.pdf 4 Out
9 02/24 Geometry and polyhedra
10 02/26 Applications: data science, control, finance
11 03/03 Simplex method
03/05 Midterm 1
12 03/17 Simplex method implementation
13 03/19 Duality 5 Out
14 03/24 Duality II
15 03/26 Sensitivity analysis 6 Out
16 03/31 Network optimization
17 04/02 Interior point methods 7 Out
18 04/07 Interior point methods II
19 04/09 Linear optimization review

Integer Optimization

# Date Topic Slides Homeworks
20 04/14 Integer optimization
21 04/16 Integer optimization algorithms 8 Out
22 04/21 Optimization under uncertainty
23 04/23 The role of optimization
05/08 Final Exam

Precepts

There will be weekly 50 minutes long precepts. The focus will be on problem solving and Python programming. They are offered as follows:

  • P01 (Yanjun): Tuesdays 7:30pm - 8:20pm, Sherrerd 001
  • P02 (Irina): Tuesdays 7:30pm - 8:20pm, Friend 108
  • P03 (Daniel): Wednesdays 7:30pm - 8:20pm, Friend 112

Material

The lecture notes are available from the course website and intended to be self contained. The following books are useful as reference texts.
They are either free or digitally available via Princeton University library:

  • [LO] D. Bertsimas, J. Tsitsiklis: Introduction to Linear Optimization (available Princeton Controlled Digital Lending)
  • [LP] R. J. Vanderbei: Linear Programming: Foundations & Extensions (available on SpringerLink)
  • [VMLS] S. Boyd, L. Vandenberghe: Introduction to Applied Linear Algebra – Vectors, Matrices, and Least Squares (available online)

In this course we strictly follow the crimes against matrices laws!

Precepts material and homework templates are available on the github companion repo.

Prerequisites

  • Linear algebra MAT202 and/or MAT204.
  • Basic computer programming knowledge suggested.

Software

Students will use the Python-based modeling software CVXPY (cvxpy.org) to solve optimization problems arising in several applications in operations research, finance, machine learning and engineering.

The assignments will be using jupyter notebooks or marimo notebooks. You can get them running with all required packages in three ways:

  • Cloud setup (Jupyter): follow the instructions in the companion repo to run a complete environment on github codespaces.
  • Cloud setup (marimo): open the Jupyter notebooks directly in your browser using marimo molab. No installation required.
  • Local installation: follow the instructions in this repository to install the environment locally via docker.

For a quickstart guide on how to use Python, have a look at this guide, especially sections on numpy, scipy, and plotting with matplotlib.

Grading

All submissions should take place on Gradescope (accessible from the Canvas website).

  • 30% Homeworks. 8 weekly homeworks. Almost all of them will include a computational component. Homeworks are due at Friday 9pm EST of following week. Requests for extension on homework will not be accepted, unless there is an extremely valid reason. Homeworks must always be submitted as a single pdf file which includes your written exercises (typed or handwritten) and code (pdf-exported jupyter notebook). To export your notebooks to pdf from jupyterlab, you should go to: "File" → "Save and Export Notebook As..." → "PDF".

  • 30% Midterm. 80 minutes written exam in-class. No coding required.

  • 40% Final Exam. 80 minutes written exam in-class. No coding required.

Questions and discussions

Students are encouraged to discuss and ask questions on Ed Forum (accessible from the Canvas website). Please make sure to specify if questions are about General information of the course, about the Lectures or about Homeworks by assigning them to the related category.

Collaboration policy

  • Homeworks. Students are allowed, and even encouraged, to collaborate on homeworks. When submitting your homework, you are required to list the name of the students you worked with. Also, please write the textbooks, notes or websites that were helpful to you.

  • Midterms and final exam. No collaborations allowed.

Honor code and generative AI

All work in this course must uphold the University's commitment to academic integrity. This includes the Honor Code (for written examinations, tests, and quizzes) and guidelines for the submission of original work on all other assignments. More guidance can be found in Rights, Rules, and Responsibilities as well as the handbook Academic Integrity at Princeton.

The use of AI-based tools, like ChatGPT and GitHub Copilot, is allowed but discouraged, as they often produce incorrect answers, including flawed proofs and invalid counterexamples. While these tools can sometimes offer new ideas or accelerate workflows, they frequently make subtle mathematical and logical errors that could hinder your learning.

If you use Generative AI tools on an assignment or take-home exam, you must declare it, describe how you used the tool, and include both the prompt and the relevant output. Using these tools without disclosing when and how you used them is a violation of the University's academic regulations (See Section 2.4.6.), and can have serious consequences.

Attendance

Students are expected to attend each scheduled class on time and ready to participate fully. An excused absence will only be granted in the case of a religious observance, an ODS-approved accommodation, or - as verified by your residential college - a serious illness or an exceptional circumstance.