TMT602: Nonlinear programming

Jean-Philippe Vert, Ecole des Mines de Paris

INSEAD PhD program 2005-2006, Period 5

Outline

The field of optimization is concerned with the study of maximization and minimization of mathematical functions. Very often the arguments of (i.e., variables in) these functions are subject to side conditions or constraints. By virtue of its great utility in such diverse areas as applied science, engineering, economics, finance, medicine, and statistics, optimization holds an important place in the practical world and the scientific world.

Following the prerequisite course on linear optimization, this course will focus on nonlinear optimization, also called nonlinear programming, where the function to be optimized and/or the constraints on the decision variable are nonlinear. Although nonlinear programming problems are generally difficult to solve in practice, effective algorithms for solving particular cases such as linear or convex programming now exist, and understanding the theory of nonlinear programming aften allows one to formulate his problem that can be solved efficiently.

The goal of this course is to help the student develop a working knowledge of nonlinear programming, in particular convex optimization, i.e., to develop the skills and background needed to formulate, analyze and solve nonlinear problems. We will start with the main theoretical results of nonlinear programming, concentrating on results that are useful in computation. This will include optimality conditions, duality and sensitivity analysis. We will then study the main algorithms for solving optimization problems, including descent methods and interior-point methods. We will finally illustrate the power of nonlinear optimization on several examples of interest to the participants, including practical implementation in MATLAB.

Expected program

DateTopicHomework
May 9Introduction, problem formulationhomework 1
May 16Optimality conditions (1)homework 2
May 23Optimality conditions (2)homework 3
May 25Optimality condition (3) / Duality theory (1)
May 30Duality theory (2)homework 4
June 6Duality theory (3) / Algorithms for unconstrained problems (1)homework 5
June 8Algorithms for unconstrained problems (2)homework 6
June 13Algorithms for constrained problems (1)homework 7
June 15Algorithms for constrained problems (2). Applications (1)homework 8
June 27Discrete optimization. Applications (2)Final exam due

Slides

Final exam

The final exam is a take-home exam due June 27, 2006

Codes for unconstrained optimization

The following MATLAB functions implement a few algorithms for unconstrained optimization and will be used for practical exercices. Download the .m files, open MATLAB, make sure with the addpath() command that the files you downloaded are in the path, then try something like:
>> [x,f]=minimize_newton([-1,5]',@fun_rosenbrock)
+++++++
x =

    1.0000
    1.0000


f =

   3.2981e-25

Code for convex programming

For advanced convex programming we will use the MATLAB package CVX. It will be useful to install it and browse through the user's guide.

Below are some scripts used in the course:

Many more examples are available at http://www.stanford.edu/~boyd/cvx/examples/index.html.

Textbooks

We will use two reference textbooks:

Research papers involving nonlinear programming

In the last session you must present a research article involving some nonlinear optimization. The list below might help you make your choice (other proposals are welcome)

Homework and grading

There will be homework for each session, involving exercices and little MATLAB programming. You are required to hand in all homework of a particular week on the Tuesday the week after. However, you are expected to have solved and discuss some of the problems of the homework (without necessarily handing in your solutions) for every session. All homework will count for 50% of your grade.

Beyond the homework problems, you have one more assignment: For session 10 you will need to prepare a presentation of a journal paper that you choose, which uses lessons we learn in the class. Details will be discussed during the class. This will count for 10% of your grade.

Finally, there will be a final exam that will count for 40% of your grade.

Required background

Students in this course will be expected to have taken the previous course on "Linear and integer programming", and to possess a firm background in the following mathematical subjects: multivariate differential calculus; basic concepts of analysis; linear algebra and some matrix theory. Familiarity with computers and computer programming might also be useful. Above all, it is essential to have a tolerance for mathematical discourse plus an ability to follow - and sometimes devise one's own - mathematical proofs.

Acknowledgements

Most of the material used in this course, including figures in slides and exercices, are taken or inspired from: Thanks to all of them for making their excellent courses public!
Vert Jean-Philippe
Last modified: Tue Jun 13 11:26:10 CEST 2006