Essentially, almost all engineering problems are optimization problems. If a civil engineer designs a bridge, then one of the main objectives is to obtain the cheapest design or the design that can be implemented most rapidly, where of course several specifications and constraints such as size, strength, safety, etc. have to be taken into account. When developing a new type of engine, we look for the most economical design, the cheapest design, or the design with the highest performance. A process engineer wants a production unit to deliver a final product of maximal quality, with minimal expenditure of energy or with maximal output flow. When composing a portfolio, a financial engineer tries to maximize the expected profits, subject to the given risk constraints. So we encounter optimization problems in almost every engineering field.

How can we solve such an optimization problem? That is the topic that will be addressed in this course. We will consider both the transformation of real-world design problems into a more mathematical formulation, and the selection of the most efficient numerical algorithms to solve the resulting optimization problem.

The examples and case studies of this course are primarily oriented towards systems and control. In preceding courses you have already studied modeling, identification and control of systems. However, the examples in these courses were usually limited to simple or small systems, and more complex systems were often dealt with by saying that they can be tackled using optimization. And that is what we will do in this course: you will not only learn how you can identify models and design controllers for complex systems using numerical optimization, but also how this can be done in the most efficient way.

This course is divided into two parts:
  1.  optimization techniques
  2.  applications in systems and control
In the first part we study several classes of optimization problems and we discuss which algorithms are the best suited for each particular problem. In the second part we show how a controller design problem can be recast as an optimization problem and we use the results of the first part to efficiently design the controllers using numerical optimization.