Optimal control deals with engineering problems in which an objective function is to be minimized (or maximized) by sequentially choosing a set of actions that determine the behavior of a system. Examples of such problems include mixing two fluids in the least amount of time, maximizing the fuel efficiency of a hybrid vehicle, flying an unmanned air vehicle from point A to B while minimizing reference tracking errors and minimizing the lap time for a racing car. Other somewhat more surprising examples are: how to maximize the probability of win in blackjack and how to obtain minimum variance estimates of the pose of a robot based on noisy measurements.
This course follows the formalism of dynamic programming, an intuitive and broad framework to model and solve optimal control problems. The material is introduced in a bottom-up fashion: the main ideas are first introduced for discrete optimization problems, then for stage decision problems, and finally for continuous-time control problems. For each class of problems, the course addresses how to cope with uncertainty and circumvent the difficulties in computing optimal solutions when these difficulties arise. Several applications in computer science, mechanical, electrical and automotive engineering are highlighted, as well as several connections to other disciplines, such as model predictive control, game theory, optimization, and frequency domain analysis. The course will also address how to solve optimal control problems when a model of the system is not available or it is not accurate, and optimal control inputs or decisions must be computed based on data.