Describes the input file format for bilevel problems.
For bilevel problems, idol_cl uses the .aux file format from the MibS solver coupled with an .lp/.mps file that stores the single-level relaxation.
We consider the bilevel problem
\[ \begin{align*} \min_{x, y} \quad & -x - 10y \\ \text{s.t.} \quad & y \in \begin{array}[t]{rl} \displaystyle\arg\min_{z} \ & z \\ \text{s.t.} \ & -25x + 20z \le 30, \\ & x + 2z \le 10, \\ & 2x - z \le 15, \\ & 2x + 10z \ge 15, \\ & z \ge 0, \\ & z \in \mathbb{Z}. \end{array} \\ & x \in \mathbb{Z}_{\ge 0}. \end{align*} \]
This example is taken from the paper "The Mixed Integer Linear Bilevel Programming Problem" by Moore and Bard (1990).
The .mps stores the single-level relaxation.
The .aux file describes what variables and constraints belong to the lower level and defines the lower-level objective coefficients.
Note: in idol_cl, the field @MPS or @LP is typically ignored to avoid path corruption. For that reason, the .mps/.lp file must explicitly be given.
Bilevel problem instances are described by two files. First, an .mps or .lp file stores the single-level relaxation model. Then, the .aux file describes which variables and constraint belong to the lower-level problem.
For more details on the .mps and .lp file formats, see the page Input Format for MILPs.
The .aux file is a plain-text file used to describe the structure of a bilevel optimization problem. Specifically, it defines:
Without the .aux file, the model is interpreted as a standard single-level optimization problem.
The .aux file is composed of tagged sections, each identified by a keyword starting with @. The following table lists all supported tags and their meaning.
| Tag | Meaning |
|---|---|
| @NUMVARS | The next line contains the number of lower-level variables |
| @NUMCONSTRS | The next line contains the number of lower-level constraints |
| @VARSBEGIN | Marks the beginning of the variables section |
| @VARSEND | Marks the end of the variables section |
| @CONSTRSBEGIN | Marks the beginning of the constraints section |
| @CONSTRSEND | Marks the end of the constraints section |
| @NAME | The next line contains the name of the instance (optional) |
| @MPS | The next line contains the name of the .mps file with which this instance is associated (typically ignored) |
| @LP | The next line contains the name of the .lp file with which this instance is associated (typically ignored) |
The variables section is composed by the list of variable names that belong to the lower-level problem directly followed by their objective coefficient. The constraint section is composed by the list of constraint names that belong to the lower-level problem.
Note that bounds on lower-level variables are always assumed to be constraints of the lower-level problem.