## 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.

The so called *QLP file format* is based on the CPLEX-LP file format. Some mandantory modifications have to be considered. 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:

MINIMZE

– x1 – 2 x2 – 2 x3

SUBJECT TO

– x2 – x3 <= -1

– x1 + x2 + x3 <= 1

2 x1 + 2 x2 <= 3

BOUNDS

0 <= x1 <= 2

0 <= x2 <= 2

0 <= x3 <= 2

BINARIES

x1

GENERALS

x3

EXISTS

x1 x3

ALL

x2

ORDER

x1 x2 x3

END

The differences between the CPLEX-LP file format and the QLP file format are as follows:

- The keywords are

MAXIMIZE / MINIMIZE

SUBJECT TO

BOUNDS

INFINITY

FREE

GENERALS

BINARIES

ALL*

EXISTS*

RANDOM*

ORDER*

END

New keywords are marked with *. 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. Moreover, every variable is marked with one of the new keywords ALL, EXISTS or RANDOM. Analogously the variables in the ALL, EXISTS and RANDOM section are separated by at least one space. In case the order of the quantification differs from the order of the variables of the objective function, the block ORDER can be used.

**Potential errors:**

- Make sure that all variables are on the left-hand side of the constraint. Variables on the right-hand side are ignored.