  In this paper we present BilevelJuMP, a new Julia package to support bilevel
optimization within the JuMP framework. The package is a Julia library that
enables the user to describe both upper and lower-level optimization problems
using the JuMP algebraic syntax. Due to the generality and flexibility our
library inherits from JuMP's syntax, our package allows users to model bilevel
optimization problems with conic constraints in the lower level and all JuMP
supported constraints in the upper level (Conic, Quadratic, Non-Linear,
Integer, etc.). Moreover, the user-defined problem can be subsequently solved
by various techniques relying on mathematical program with equilibrium
constraints (MPEC) reformulations. Manipulations on the original problem data
are possible due to MathOptInterface.jl's structures and Dualization.jl
features. Hence, the proposed package allows quickly model, deploy, and thereby
experiment bilevel models based on off-the-shelf mixed integer linear
programming and nonlinear solvers.
