Bilevel programming problems are hierarchical optimization problems where the constraints of one problem are defined in part by a second parametric optimization problem. This book emphasizes on problems having non-unique lower level optimal solutions, and discusses the optimistic and the pessimistic approaches.