GenExPo: Generation of extreme points of P(B)

by A. Galluccio, C. Gentile, P. Ventura (2007).

Here we describe the procedure used to generate the extreme points (βB, y) of the polytope P(B), that are associated with inequalities (βV\B, βB, β0). As all the considered inequalities have full support on VB, all their possible roots must be maximal in VB. In this figure we show the 24 possible configurations for maximal solutions in VB. Each configuration Ri produces a linear system of inequalities Li on βB by simply considering the maximality conditions.

L1:
βc + βa βh1
βb1 + βh2 βh1
βd1 + βh2 βh1
βb1 + βa βh1
βd1 + βc βh1
L2:
βc + βa βh1
βh2 βh1
L3:
βc + βa βh2
βb2 + βh1 βh2
βd2 + βh1 βh2
βb2 + βa βh2
βd2 + βc βh2
L4:
βc + βa βh2
βh1 βh2
L5:
βd1 + βd2 βa
βb1 + βb2 βc
βb2 + βh1 βa + βc
βd2 + βh1 βa + βc
βd1 + βh2 βa+ βc
βb1 + βh2 βa+ βc
βb1 + βd2 βa+ βc
βd1 + βb2 βa+ βc
L6:
βd2 βa
βb2 βc
βh1 + βb2 βa+ βc
βh1 + βd2 βa + βc
βh2 βa + βc
L7:
βd1 βa
βb1 βc
βh2 + βd1 βa+ βc
βh2 + βb1 βa + βc
βh1 βa + βc
L8:
βh1 βa+ βc
βh2 βa + βc
L9:
βd2 βb2
βd1 βh1
βa + βb1 βh1
βa + βc βh1 + βb2
βd1 + βh2 βh1 + βb2
βb1 + βh2 βh1 + βb2
βb1 + βd2 βh1 + βb2
βc + βd1 + βd2 βh1 + βb2
L10:
βd2 βb2
βa βh1
βa + βc βh1 + βb2
βc + βd2 βh1 + βb2
βh2 βh1 + βb2
L11:
βb2 βd2
βb1 βh1
βc + βd1 βh1
βa + βc βh1 + βd2
βb1 + βh2 βh1 + βd2
βd1 + βh2 βh1 + βd2
βd1 + βb2 βh1 + βd2
βa + βb1 + βb2 βh1 + βd2
L12:
βb2 βd2
βc βh1
βa + βc βh1 + βd2
βa + βb2 βh1 + βd2
βh2 βh1 + βd2
L13:
βb1 βd1
βb2 βh2
βc + βd2 βh2
βa + βc βh2 + βd1
βb2 + βh1 βh2 + βd1
βd2 + βh1 βh2 + βd1
βd2 + βb1 βh2 + βd1
βa + βb1 + βb2 βh2 + βd1
L14:
βb1 βd1
βc βh2
βa + βc βh2 + βd1
βa + βb1 βh2 + βd1
βh1 βh2 + βd1
L15:
βd1 βb1
βd2 βh2
βa + βb2 βh2
βa + βc βh2 + βb1
βd2 + βh1 βh2 + βb1
βb2 + βh1 βh2 + βb1
βb2 + βd1 βh2 + βb1
βc + βd1 + βd2 βh2 + βb1
L16:
βd1 βb1
βa βh2
βa + βc βh2 + βb1
βc + βd1 βh2 + βb1
βh1 βh2 + βb1
L17:
βh2 βa
βc βb1
βd1 + βc βb1 + βa
βd1 + βh2 βb1 + βa
βh1 βb1 + βa
L18:
βh2 βc
βa βd1
βb1 + βa βd1 + βc
βb1 + βh2 βd1 + βc
βh1 βd1 + βc
L19:
βh1 βc
βa βd2
βb2 + βa βd2 + βc
βb2 + βh1 βd2 + βc
βh2 βd2 + βc
L20:
βh1 βa
βc βb2
βd2 + βc βb2 + βa
βd2 + βh1 βb2 + βa
βh2 βb2 + βa
L21:
βd1 + βc βb1
βh1 βb1
βh2 βd2
βb2 + βa βd2
βd1 + βb2 βd2 + βb1
βd1 + βh2 βd2 + βb1
βh1 + βb2 βd2 + βb1
βa + βc βd2 + βb1
L22:
βd2 + βc βb2
βh2 βb2
βh1 βd1
βb1 + βa βd1
βd2 + βb1 βd1 + βb2
βd2 + βh1 βd1 + βb2
βh2 + βb1 βd1 + βb2
βa + βc βd1 + βb2
L23:
βa βd1+ βd2
βb2 βc + βd2
βh2 βc + βd2
βb1 βc + βd1
βh1 βc + βd1
βa + βb1 + βb2 βc + βd1 + βd2
βb1 + βh2 βc + βd1 + βd2
βh1 + βb2 βc + βd1 + βd2
L24:
βc βb1+ βb2
βd2 βa + βb2
βh2 βa + βb2
βd1 βa + βb1
βh1 βa + βb1
βc + βd1 + βd2 βa + βb1 + βb2
βd1 + βh2 βa + βb1 + βb2
βh1 + βd2 βa + βb1 + βb2



Each system Li describes a cone, in fact the solution represents the coefficients βB of an inequality (βV\B, βB, β0), and any multiplication by a scalar yields an equivalent inequality. We add the following normalization condition:


βu 1 for each u є VB.

An inequality (β,β0) is facet defining if and only if it is satisfied as an equality by |VG| affinely independent points. Therefore, we introduce a variable yi є {0,1} for i = 1,...,24 such that yi = 1 if and only if a solution corresponding to configuration Ri is selected among the |VG| affinely independent solutions. If yi = 1, then βB must satisfy the system Li, otherwise the system Li may be violated. Let Ai βB 0 be the system Li, then we introduce a big-M representation of the above condition: Ai βB Mi (1 - yi), where Mi is a vector and (Mi)j is equal to the number of variables in the j-th inequality of system Li having positive coefficients in (Ai)j.
As we know that G contains a gear, we can relax the condition that there exist |VG| affinely independent solutions for (β,β0) with the conditions (i)-(iv) described in Section 3.2 of the paper. So, we define the set Y of points y satisfying the following linear constraints:

Σ yi 1
i : u є Ri
for all u є VB
Σ yi 1
i : RiK
for all K clique of VB*
Σ yi 1
i : hj Ri and
| RiCj |<2
for each Wj=(hj : Cj), j=1,2
Σ yi 10
i = 1,...,24

The linear mixed integer formulation of P(B) is thus the following:


Ai βB Mi ( 1 - yi ) i = 1,...,24
βB 1
y є Y
(1)

The system of inequalities (1) has been given in input to the code PORTA. This software is able to find the extreme points of the polyhedron described by a system of linear inequalities. As the variables yi are constrained to be 0-1, all the mixed-integer feasible solutions of (1) are extreme points of the associated polyhedron. Since PORTA takes too long to find the extreme points of (1), we subdivided the problem in 216 subproblems by fixing yi to zero or to one for i = 9,...,24, and then we considered the union of the resulting solutions. As a final step, we eliminate all the points with fractional value of the variables yi for i = 1,...,8 or such that rank(xRi | yi=1) < 10. This check has been made with the free software Octave. The resulting list of points are the extreme points of P(B).

Here we give the detailed instructions to repeat the proof of the theorems 7 and 8:

  1. Install PORTA FORTE on your computer.
  2. Create folder ``Proof´´
  3. Download in folder ``Proof´´ the file proof.c and the file cleanfrac.c
  4. Compile proof.c and cleanfrac.c with default options creating executables ``proof´´ and ``cleanfrac´´, respectively.
  5. Run ``proof <PORTA FORTE folder> ´´ specifying the folder where you installed PORTA FORTE. This code perform the following actions:
    1. creates subfolders ``in´´, ``ieq´´, ``inf´´, ``out´´, ``poi´´;
    2. writes in subfolder ``ieq´´ the 216 systems of linear inequalities obtained from system (1) by fixing the variables yi for i = 9,...24 to zero or to one; these systems are written in format ``.ieq´´ for PORTA FORTE; in the case the resulting system is infeasible the associated file .ieq is moved to the subfolder ``inf´´; the name of the files .ieq is proof_<number>.ieq, where <number> is the decimal representation of the assignment given to variables yi for i = 9,...,24;
    3. writes in subfolder ``in´´ the command files in_<number> to execute PORTA FORTE on the corresponding feasible system in file proof_<number>.ieq;
    4. executes PORTA FORTE for all the feasible proof_<number>.ieq files producing files proof_<number>.poi in subfolder ``poi´´;
    5. writes in subfolder ``out´´ the output of each execution of PORTA FORTE (out_<number>).
  6. Run ``cleanfrac´´. This code reads each file proof_<number>.poi and performs the following operations:
    1. reads each point (βB, y{1,...,8}) in the file;
    2. checks if yi є {0,1} for i = 1,...,8;
    3. if yes, then
      • writes the point in a new file cleanfrac.poi;
      • if βB is full support, writes ``full support´´ at the end of the line in cleanfrac.poi;
      • verifies if this y{1,...,8} was equal to a previous written point, and if yes, it checks if rank(xRi | yi = 1, i = 1,...,24) = 10 using Octave; if the check is passed, a ``warning´´ is written in file cleanfrac.poi, indicating the index of the row with the same value for y;
    4. the results of Theorem 3 are then indicated by rows of cleanfrac.poi labelled ``full support´´;
    5. the results of Theorem 4 are then indicated by rows of cleanfrac.poi labelled ``warning´´.