# GLPK/Background theory

It can be useful, on occasion, to provide background theory for material located elsewhere in this wikibook. This page affords a place. But this page should not be used to blindly replicate foundation material from the official GLPK manuals, nor to write general entries on linear programming.

## Orientation

Note also that mixed-integer programming (MIP) and mixed-integer linear programming (MILP) are treated here as synonyms. And that the term pure linear programming is used to exclude mixed-integer problems.

## Karush-Kahn-Tucker (KKT) optimality conditions

In the general case of nonlinear programming (NLP), the Karush-Kuhn-Tucker optimality conditions (KKT) provide the necessary first-order conditions for a solution to be locally optimal (together with some regularity conditions that also have to be satisfied). Linear programming (LP) is a special case of NLP in which both the feasible region and the objective function are convex. In this particular case, the KKT conditions alone are necessary and sufficient for the solution to be globally optimal.[1] The KKT conditions can be applied to the basic and interior-point solutions of any LP problem, but may not be applied to the solutions from mixed-integer linear programming (MIP). That said, the first two KKT conditions can be applied to mixed-integer programs to confirm that the solution is feasible.

This wikibook also describes the specifics of KKT reporting by GLPK and also provides a typical example.

### KKT optimality conditions

Take a primal LP problem in standard form: [2]

 minimize ${\displaystyle z=\mathbf {c} ^{\top }\mathbf {x} }$ subject to {\displaystyle {\begin{aligned}A\mathbf {x} &=\mathbf {b} \\\mathbf {x} &\geq \mathbf {0} \end{aligned}}}

where ${\displaystyle \mathbf {x} }$ is the vector of primal variables. The dual LP problem becomes:

 maximize ${\displaystyle p=\mathbf {b} ^{\top }\pi +\mathbf {0} ^{\top }\lambda }$ subject to {\displaystyle {\begin{aligned}A^{\top }\mathbf {\pi } +\lambda &=\mathbf {c} \\\mathbf {\lambda } &\geq \mathbf {0} \\\pi &\quad {\text{of any sign}}\end{aligned}}}

where ${\displaystyle (\pi \,|\,\lambda )\,\!}$ is a vector of dual variables,[3] ${\displaystyle \pi \,\!}$ is a vector of Lagrange (or simplex) multipliers (shadow prices) for the equality constraint ${\displaystyle A\mathbf {x} =\mathbf {b} }$ and ${\displaystyle \lambda \,\!}$ is a vector of Lagrange multipliers (reduced costs) for the inequality constraint ${\displaystyle \mathbf {x} \geq \mathbf {0} }$.

The Karush-Kahn-Tucker optimality conditions for an LP make use of all the constraints from the primal and dual formulations and include a complimentary slackness condition. The five KKT optimality conditions conditions are:

 KTT.PE ${\displaystyle A\mathbf {x} =\mathbf {b} }$ KTT.PB ${\displaystyle \mathbf {x} \geq \mathbf {0} }$ KTT.DE ${\displaystyle A^{\top }\mathbf {\pi } +\lambda =\mathbf {c} }$ KTT.DB ${\displaystyle \lambda \geq \mathbf {0} }$ KTT.CS ${\displaystyle x_{j}=0\ {\text{or}}\ \lambda _{j}=0\ {\text{for all}}\ j\ {\text{(or both)}}}$

The KKT.CS condition can be rewritten as ${\displaystyle x_{j}\lambda _{j}=0\,\!}$ or ${\displaystyle \lambda ^{\top }\mathbf {x} =\mathbf {0} }$ meaning vectors ${\displaystyle \mathbf {x} }$ and ${\displaystyle \lambda \,\!}$ must be orthogonal.

The implementation of the KKT conditions within GLPK is a little more complicated because GLPK supports variables with lower ${\displaystyle l_{j}\,\!}$ and upper ${\displaystyle u_{j}\,\!}$ bounds, which also implies no bounds. In general:

 minimize or maximize ${\displaystyle z=\mathbf {c} ^{\top }\mathbf {x} }$ subject to {\displaystyle {\begin{aligned}&(I\;|\;-\!A)\mathbf {x} =\mathbf {0} \\&\mathbf {l} \leq \mathbf {x} \leq \mathbf {u} \end{aligned}}}

where ${\displaystyle \mathbf {x} }$ (as earlier) is the vector of structural and auxiliary variables and ${\displaystyle I\,\!}$ is an identity matrix. Nonetheless the conditions used in GLPK are equivalent to those shown above and have the same meaning.

Finally, be aware that the KKT conditions KKT.PE and KTT.PB can be calculated for an MIP solution and GLPK will do this on request. In this case, these two conditions are described as "integer feasibility conditions" instead of "Karush-Kahn-Tucker optimality conditions"