## The QLP File Format

As an input for our QMIP optimization software, a new standardized file format is required. We extended the CPLEX-LP file format to handle quantifiers and to specify an order of the variables in the so called *QLP file format*. The following keywords are used, where new keywords are marked with *.:

MAXIMIZE / MINIMIZE, SUBJECT TO, BOUNDS, GENERALS, BINARIES, ALL*, EXISTS*, ORDER*, END

- Every keyword has to be written in capital letters. Abbreviations are not allowed.
- The BOUNDS section which follows the constraint section is mandatory. Each bound definition has to begin on a new line. The general form is l≤x≤u.
- The BOUNDS section is followed by typifying the variables. To specify any of the variables as general integer variables, a GENERAL section has to be added; to specify any of the variables as binary integer variables, a BINARY section has to be added. In every section the variables are separated by at least one space.
- Every variable is marked with one of the new keywords ALL or EXISTS. Analogously the variables in the ALL and EXISTS section are separated by at least one space.
- The order of the variables is specified below the keyword ORDER.

Exemplarily we will consider the following QMIP instance:

∃x_{1}∈{0,1} ∀x_{2}∈{0,1} ∃x_{3}∈{0,1,2}: | |||||||||||

min | - | x_{1} | - | 2 | x_{2} | - | 2 | x_{3} | |||

s.t. | - | x_{2} | - | x_{3} | ≤ | -1 | |||||

| - | x_{1} | + | x_{2} | + | x_{3} | ≤ | 1 | |||

x_{1} | + | 2 | x_{2} | ≤ | 3 |

A typical QLP file (belonging to the above example) looks as follows (example):

MINIMIZE

- x1 - 2 x2 - 2 x3

SUBJECT TO

- x2 - x3 <= -1

- x1 + x2 + x3 <= 1

2 x1 + 2 x2 <= 3

BOUNDS

0 <= x1 <= 1

0 <= x2 <= 1

0 <= x3 <= 2

BINARIES

x1 x2

GENERALS

x3

EXISTS

x1 x3

ALL

x2

ORDER

x1 x2 x3

END

**Requirements and Restrictions: **

- Only linear constraints and objective function.
- integer variables are allowed in all variable blocks
- Continuous variables, i.e. variables not listed below the keywords BINARIES or GENERAL, have to be part of the final (existential) variable block.
- First and final variable block must be existentially quantified.
- The right-hand side of each constraint may only contain a single parameter, i.e. all variables have to be on the left-hand side.
- Universal Constraints, defining the uncertainty set, must be named with the name starting with "U_". For more details see [this page].

**Potential errors:**

- Make sure that all variables are on the left-hand side of the constraint. Variables on the right-hand side are ignored.
- Unnamed as well as named constraints not starting with "U_" are considered existential constraints. In particular, when naming constraints only use "U_" if a universal constraint is intended.