EE236A: Linear Programming

UCLA Electrical Engineering Department

Prof. Lieven Vandenberghe

Fall Quarter 2007-2008



Lecture notes

  1. Introduction and overview (4/page)
  2. Linear inequalities (4/page)
  3. Geometry of linear programming (4/page)
  4. The linear programming problem (4/page)
  5. Structural optimization (4/page)
  6. FIR filter design (4/page)
  7. Applications in control (4/page)
  8. Network optimization (4/page)
  9. Duality (part 1) (4/page)
  10. Duality (part 2) (4/page)
  11. The simplex method (4/page)
  12. The barrier method (4/page)
  13. Convergence analysis of the barrier method (4/page)
  14. Primal-dual interior-point methods (4/page)
  15. Self-dual formulations (4/page)
  16. Large-scale linear programming (4/page)
  17. Integer linear programming (4/page)


Homework

The homework assignments are from the
EE236A Exercises. Some of the problems require Matlab files: ex9data.m, ex15data.m, ex17data.m, ex18data.m, ex20data.m, ex35data.m.

Course information

Lectures: Boelter Hall 5273. Tue & Thu 10:00-11:50A.

Instructor: Prof. Lieven Vandenberghe
Office: 68-119 Engineering IV
Tel: (310) 206-1259
Email: vandenbe@ee.ucla.edu
Office hours: Wednesday 2-4PM.

Course material. The lecture notes are available from this website. The following books may be useful as optional reference texts:

Course requirements

Grading. Approximate weights: homework 30%, final exam 70%.

Prerequisites. Basic linear algebra (vectors, matrices, linear equations). The essential topics will be reviewed in the first lectures.

Approximate syllabus

  1. Introduction
  2. Basic definitions and geometry of linear programming
  3. Engineering applications
  4. Duality
  5. The simplex method
  6. Interior-point methods
  7. Large-scale linear programming
  8. Introduction to network optimization and integer linear programming


Software

Matlab

The Matlab LP solver is called linprog and is included in the optimization toolbox.

Students who don't have the optimization toolbox can request a free semester license of the MOSEK optimization tools for Matlab (Click on "Trial license" in the left column of the MOSEK home page). MOSEK includes an LP solver linprog with the same calling sequence as Matlab's linprog.

You can also use the routine lp236a.m, a pure Matlab implementation of a primal-dual method. This code is less efficient and reliable than the MOSEK solver, but should be adequate for the purposes of this course.

The following Matlab packages allow you to specify and solve LPs using a very simple and intuitive description format: CVX (which includes the necessary solver) and YALMIP.

Octave

Octave users can download the Octave version of lp236a.m.

Python

Python users can download the CVXOPT package, which includes an LP solver and modeling support.