 Research
 Open access
 Published:
A fixed point iterative approach to integer programming and its distributed computation
Fixed Point Theory and Applications volume 2015, Article number: 182 (2015)
Abstract
Integer programming is concerned with the determination of an integer or mixedinteger point in a polytope. It is an NPhard problem and has many applications in economics and management. Although several popular methods have been developed for integer programming in the literature and extensively utilized in practices, it remains a challenging problem and appeals for more endeavors. By constructing an increasing mapping satisfying certain properties, we develop in this paper an alternative method for integer programming, which is called a fixed point iterative method. Given a polytope, the method, within a finite number of iterations, either yields an integer or mixedinteger point in the polytope or proves no such point exists. As a very appealing feature, the method can easily be implemented in a distributed way. Furthermore, the construction implies that determining the uniqueness of Tarski’s fixed point is an NPhard problem, and the method can be applied to compute all integer or mixedinteger points in a polytope and directly extended to convex nonlinear integer programming. Preliminary numerical results show that the method seems promising.
1 Introduction
Integer programming is concerned with the determination of an integer or mixedinteger point in a polytope. As a powerful mechanism, integer programming has been extensively applied in economics [1, 2] and management [3]. Integer programming is an NPcomplete problem [4]. To solve such a problem, several methods have been developed in the literature. As an application of linear programming, the cutting plane method was pioneered in [5]. The method iteratively refines a feasible set or objective function by means of linear inequalities. The branchandbound method was formulated in [6]. The method gradually improves upper and lower bounds of the objective function by solving linear programs and systematically enumerates candidate solutions in branches of a tree with the full set of candidate solutions at the root by checking against the upper and lower bounds. To test whether a given feasible integer point is optimal or not, the neighborhood method was proposed in [1, 2]. The method simply checks a minimal set of points in the neighborhood of a feasible point to determine whether one of them is in the polytope or yields a better objective function value. The basisreduction method originates in [7, 8]. As that in a branchandbound method, the method searches for an integer point in a polytope along a set of vectors that forms a reduced basis. The simplicial method was developed in [9, 10]. The method starts from an arbitrary integer point in the space and follows a simplicial path that either leads to an integer point in a polytope or proves no such point exists when the polytope is in a specific form. Further developments of some of these methods and new methods can be found in the recent literature such as [3, 11–18], and the references therein. These methods play an extremely important role in the development of integer programming, however, it remains a challenging problem and appeals for more endeavors. Thus, developing alternative integer programming methods is always an active research area.
Integer programming can be cast as a fixed point problem of an increasing mapping. More precisely, let ⪯ be a binary relation on a nonempty set S. The pair \((S,\preceq)\) is a partially ordered set if ⪯ is reflexive, transitive, and antisymmetric on S. A lattice is a partially ordered set \((S,\preceq)\), in which any two elements x and y have a least upper bound (supremum), \(\sup_{S}(x,y)=\inf\{z\in S \mid x\preceq z\mbox{ and }y\preceq z\}\), and a greatest lower bound (infimum), \(\inf_{S}(x,y)=\sup\{z\in S \mid z\preceq x\mbox{ and }z\preceq y\}\), in the set. A lattice \((S,\preceq)\) is complete if every nonempty subset of S has a supremum and an infimum in S. Let f be a mapping from S into itself. f is an increasing mapping if \(f(x)\preceq f(y)\) for any x and y of S with \(x\preceq y\). When \((S,\preceq)\) is a complete lattice and f is an increasing mapping, Tarski’s fixed point theorem [19] asserts that f has a fixed point in S. A significant feature of Tarski’s fixed point theorem is that S can be a finite set and there is no restriction on its topological structures. This feature has a profound implication for integer programming as evidenced in this paper. The computational complexity of Tarski’s fixed point theorem on \((S,\leq)\) has been studied in [20], and it is polynomialtime computable if the dimension is fixed. As an application of Tarski’s fixed point theorem to integer programming, an increasingmapping approach was briefly described in [21]. However, the approach is very primitive and can only update one coordinate at each iteration.
Let \(N=\{1,2,\ldots,n\}\) and \(N_{0}=\{0,1,2,\ldots,n\}\). For x and y of \(R^{n}\), \(x\leq_{l}y\) if either \(x=y\) or both \(x_{i}=y_{i}\), \(i=1,2,\ldots,k1\), and \(x_{k}< y_{k}\) for some \(k\in N\), and \(x\leq y\) if \(x_{i}\leq y_{i}\) for all \(i\in N\), where \(\leq_{l}\) is the lexicographic order on \(R^{n}\) and ≤ is the componentwise order on \(R^{n}\). Let S be any given finite set of \(R^{n}\). Then \((S,\leq_{l})\) is a complete lattice. We now convert integer programming into the computation of fixed points of an increasing mapping from a finite lattice into itself, which leads to the fixed point iterative method proposed in this paper and is the driving force behind our research endeavors.
Consider \(P=\{x\in R^{2} \mid Ax\leq b\}\) with
and \(b = ( 8, 4, 7 )^{\top}\). This polytope is illustrated in Figure 1.
Let \(D(P)\) denote the set of all the integer points with \(x^{l}\leq x\leq x^{u}\) in Figure 1. The idea is to define an increasing mapping h from \(D(P)\) into itself such that at least \(h(x)\leq_{l}x\) for any \(x\in D(P)\) with \(x\notin P\) and \(x\neq x^{l}\) and that \(h(x^{*})=x^{*}\) if and only if either \(x^{*}\in P\) or \(x^{*}=x^{l}\). Such a mapping is illustrated in Figure 1. This simple example stimulates the idea in this paper though the situation is far more complicated when the dimension is higher.
In this paper, with this constructing we develop a fixed point iterative method for integer programming. A selfdual technique is applied for a solution to a bounding linear program in the development. Given any polytope, within a finite number of iterations, the method either yields an integer or mixedinteger point in the polytope or proves no such point exists. Theoretically, one can make the method be a polynomialtime algorithm when the dimension is fixed. But a more appealing feature of the method is that it can easily be implemented in a distributed way. Furthermore, the construction implies that determining the uniqueness of Tarski’s fixed point is an NPhard problem, and the method can be applied to compute all integer or mixedinteger points in a polytope and directly extended to convex nonlinear integer programming. Preliminary numerical results show that the method is promising, and may offer a comparable solution to integer programming though a comprehensive comparison with the existing methods is beyond the scope of this paper.
The rest of the paper is organized as follows. A fixed point iterative method is first developed for integer programming in Section 2. Then a distributed implementation of the method and the computation of all integer points in a polytope are discussed in Section 3. Preliminary numerical results are presented in Section 4.
2 A fixed point iterative method
Let
where \(A\in R^{m\times n}\) is an \(m\times n\) integer matrix with \(n\geq 2\), \(G\in R^{m\times p}\) an \(m\times p\) matrix, and b a vector of \(R^{m}\). We assume throughout this paper that P is bounded and full dimensional. For a real number α, let \(\lfloor\alpha\rfloor\) denote the greatest integer less than or equal to α. For \(x=(x_{1},x_{2},\ldots,x_{n})^{\top}\in R^{n}\), let \(\lfloor x\rfloor=(\lfloor x_{1}\rfloor, \lfloor x_{2}\rfloor,\ldots,\lfloor x_{n}\rfloor)^{\top}\).
Let \(x^{\mathrm{max}}=(x^{\mathrm{max}}_{1},x^{\mathrm{max}}_{2},\ldots,x_{n}^{\mathrm{max}})^{\top}\) with \(x^{\mathrm{max}}_{j}=\max_{x\in P}x_{j}\), \(j=1,2,\ldots,n\), and \(x^{\mathrm{min}}=(x^{\mathrm{min}}_{1}, x^{\mathrm{min}}_{2},\ldots,x^{\mathrm{min}}_{n})^{\top}\) with \(x^{\mathrm{min}}_{j}=\min_{x\in P}x_{j}\), \(j=1,2,\ldots,n\). Then \(x^{\mathrm{min}}\leq x\leq x^{\mathrm{max}}\) for all \(x\in P\). Let
where \(x^{u}=\lfloor x^{\mathrm{max}}\rfloor\) and \(x^{l}=\lfloor x^{\mathrm{min}}\rfloor\). Thus, \(D(P)\) contains all integer points in P. We assume without loss of generality that \(x^{l}< x^{\mathrm{min}}\) (let \(x_{i}^{l}=x_{i}^{\mathrm{min}}1\) if \(x_{i}^{l}=x_{i}^{\mathrm{min}}\) for some \(i\in N\)) and that
which can be obtained by interchanging the columns of A if necessary.
For \(z\in R^{n}\) and \(k\in N_{0}\), let
Given an integer point \(y\in D(P)\) with \(y_{1}>x_{1}^{l}\), we present in the following a fixed point iterative method to determine whether there is an integer point \(x^{*}\in P\) with \(x^{*}\leq_{l}y\).
 Initialization::

Let \(y^{0}=y\), \(k=n1\), and \(q=0\).
 Step 1::

If \(y^{q}\in P\) or \(y^{q}=x^{l}\), Stop; else, go to Step 2.
 Step 2::

If \(y^{q}_{i}\leq x_{i}^{l}\) for some \(i\in N\) or \(P(y^{q},k)=\emptyset\), go to Step 5; else, go to Step 3.
 Step 3::

Solve the linear program
$$\begin{aligned}& \max \sum_{j=k+1}^{n} x^{j}_{j} \\& \quad \mbox{subject to } x^{j}\in P\bigl(y^{q},k\bigr),\quad j=k+1,k+2,\ldots,n, \end{aligned}$$to obtain the optimal value of \(x^{j}_{j}\), denoted by \(x^{j}_{j}(y^{q})\), \(j=k+1,k+2,\ldots,n\), and go to Step 4.
 Step 4::

If \(y^{q}_{j}> x^{j}_{j}(y^{q})\) for some \(j\geq k+1\), let \(y^{q+1}=(y_{1}^{q+1},y^{q+1}_{2},\ldots,y^{q+1}_{n})^{\top}\) with
$$y^{q+1}_{i}=\left \{ \textstyle\begin{array}{l@{\quad}l} y^{q}_{i} & \mbox{if }1\leq i\leq k, \\ \lfloor x^{i}_{i}(y^{q})\rfloor& \mbox{if }k+1\leq i\leq n, \end{array}\displaystyle \right . $$\(i=1,2,\ldots,n\), and \(q=q+1\), and go to Step 1; else, let \(k=k+1\) and go to Step 3.
 Step 5::

If \(k=0\), let \(y^{q+1}=x^{l}\) and \(q=q+1\); else, let \(y^{q+1}=(y_{1}^{q+1},y^{q+1}_{2},\ldots,y^{q+1}_{n})^{\top}\) with
$$y^{q+1}_{i}=\left \{ \textstyle\begin{array}{l@{\quad}l} y^{q}_{i} & \mbox{if }1\leq i\leq k1, \\ y^{q}_{i}1 & \mbox{if }i=k, \\ x^{u}_{i} & \mbox{if }k+1\leq i\leq n, \end{array}\displaystyle \right . $$\(i=1,2,\ldots,n\), \(q=q+1\), and \(k=k1\). Go to Step 1.
At each iteration, the method needs to solve a bounding linear program, which may have no feasible solution. To effectively address this issue, one can apply the selfdual embedding technique in [22, 23] or any best available software packages. The following two examples illustrate how the method works.
Example 1
Consider \(P=\{x\in R^{3} \mid Ax\leq b\}\) with
and \(b = ( 0, 1, 1, 0, )^{\top}\). We have \(x^{u}=(1,0,0)^{\top}\) and \(x^{l}=(1,2,2)^{\top}\).
Let \(y=x^{u}\), \(y^{0}=y\), and \(k=31=2\).
 Iteration 1::

Since \(P(y^{0},2)=\emptyset\), we obtain from Step 5
$$y^{1}=\bigl(y^{0}_{1},y^{0}_{2}1,x^{u}_{3} \bigr)^{\top}=(1,1,0)^{\top} $$and \(k=k1=21=1\).
 Iteration 2::

Solving
$$\begin{aligned}& \max x_{2}^{2}+x_{3}^{3} \\& \quad \mbox{subject to } x^{j}\in P\bigl(y^{1},1\bigr), \quad j=2,3, \end{aligned}$$we obtain \(x_{2}^{2}(y^{1})=1\) and \(x_{3}^{3}(y^{1})=1\). Since \(y^{1}_{3}=0>1=x_{3}^{3}(y^{1})\), we obtain from Step 4
$$y^{2}=\bigl(y^{1}_{1},\bigl\lfloor x_{2}^{2}\bigl(y^{1}\bigr)\bigr\rfloor ,\bigl\lfloor x_{3}^{3}\bigl(y^{1}\bigr)\bigr\rfloor \bigr)^{\top}=(1,1,1)^{\top}, $$which is an integer point in P.
An illustration of \(y^{0}\), \(y^{1}\), and \(y^{2}\) can be found in Figure 2.
Example 2
Consider \(P=\{x\in R^{3} \mid Ax\leq b\}\) with
and \(b = ( 2, 0, 1, 1)^{\top}\). We have \(x^{u}=(1,0,0)^{\top}\) and \(x^{l}=(0,1,2)^{\top}\).
Let \(y=x^{u}\), \(y^{0}=y\), and \(k=n1=2\).
 Iteration 1::

Since \(P(y^{0},2)=\emptyset\), we obtain from Step 5
$$y^{1}=\bigl(y^{0}_{1},y^{0}_{2}1,x^{u}_{3} \bigr)^{\top}=(1,1,0)^{\top} $$and \(k=k1=21=1\).
 Iteration 2::

Since \(P(y^{1},1)=\emptyset\), we obtain from Step 5
$$y^{2}=\bigl(y^{1}_{1}1,x^{u}_{2},x^{u}_{3} \bigr)^{\top}=(0,0,0)^{\top} $$and \(k=k1=11=0\).
 Iteration 3::

Since \(P(y^{2},0)=\emptyset\), we obtain from Step 5
$$y^{3}=x^{l}=(0,1,2)^{\top}, $$which shows that there is no integer point in P.
An illustration of \(y^{0}\), \(y^{1}\), \(y^{2}\), and \(y^{3}\) can be found in Figure 3.
For \(q=0,1,\ldots\) , let \(k_{q}\) denote the value of k at which the method determines \(y^{q}\). Clearly, \(x^{l}e\leq y^{q}\leq x^{u}\) with \(e=(1,1,\ldots,1)^{\top}\in R^{n}\).
Lemma 1
For \(q=0,1,\ldots\) ,
with \(y^{q}\neq y^{q+1}\).
Proof
This lemma is proved in two cases.
Case 1: Suppose that \(P(y^{q},k_{q})=\emptyset\). Then the method will perform Step 5. If \(k_{q}=0\), we obtain from Step 5 that \(y^{q+1}=x^{l}\), and consequently, \(y^{q+1}\leq y^{q}\) with \(y^{q}\neq y^{q+1}\). Assume that \(k_{q}>0\). Then we obtain from Step 5 that \(y^{q+1}=(y_{1}^{q+1},y^{q+1}_{2},\ldots,y^{q+1}_{n})^{\top}\) with
\(i=1,2,\ldots,n\). Thus, \(y^{q+1}_{k_{q}}< y^{q}_{k_{q}}\). Therefore, \(y^{q+1}\leq_{l} y^{q}\) with \(y^{q}\neq y^{q+1}\).
Case 2: Suppose that \(P(y^{q},k_{q})\neq\emptyset\). Then the method will repeatedly perform Steps 3 and 4 right before it goes to Step 1. Since \(y^{q}\notin P\), as k increases one by one, it will reach a value \(k_{q+1}\) such that \(y^{q}_{j}>x^{j}_{j}(y^{q})\) for some \(j\geq k_{q+1}+1\). When this occurs, we obtain from Step 4 that \(y^{q+1}=(y_{1}^{q+1},y^{q+1}_{2},\ldots,y^{q+1}_{n})^{\top}\) with
\(i=1,2,\ldots,n\). Moreover, one can see from Step 3 that
Therefore, \(y^{q+1}\leq y^{q}\) with \(y^{q}\neq y^{q+1}\). The proof is completed. □
Theorem 1
Given an integer point \(y\in D(P)\) with \(y_{1}>x_{1}^{l}\), the method, within a finite number of iterations, either yields an integer point \(x^{*}\in P\) with \(x^{*}\leq_{l} y\) or proves no such point exists.
Proof
Let y be any given integer point in \(D(P)\) with \(y_{1}>x_{1}^{l}\). Suppose that \(y\notin P\) and there is some integer point \(z^{0}\in P\) with \(z^{0}\leq_{l} y\). We assume without loss of generality that \(z^{0}\) is the largest integer point of P satisfying that \(z^{0}\leq_{l} y\). Applying mathematical induction, we show in the following that \(z^{0}\leq_{l} y^{q}\), \(q=1,2,\ldots\) .
1. Consider the case of \(q=1\). From the method, we know that \(k_{0}=n1\).
(a) Suppose that \(P(y^{0},k_{0})=\emptyset\). Then the method will perform Step 5, and we obtain from Step 5 that \(y^{1}=(y_{1}^{1},y^{1}_{2},\ldots,y^{1}_{n})^{\top}\) with
\(i=1,2,\ldots,n\), and \(k_{1}=n2\). If \(y_{i}^{0}>z^{0}_{i}\) for some \(i\leq n2\), then \(z^{0}\leq_{l}y^{1}\) with \(z_{j}^{0}< y^{1}_{j}\) for some \(j\leq k_{1}\). Assume that \(y_{i}^{0}=z^{0}_{i}\) for all \(i\leq n2\). Then, from \(P(y^{0},k_{0})=\emptyset\) and \(z^{0}\leq_{l} y^{0}\), we derive that \(z^{0}_{n1}< y_{n1}^{0}\) since otherwise \(P(y^{0},k_{0})\neq\emptyset\). Therefore, \(z^{0}\leq y^{1}\).
(b) Suppose that \(P(y^{0},k_{0})\neq\emptyset\). Then the method will perform Steps 3 and 4. Since \(y^{0}\notin P\), \(y^{0}_{n}>x^{n}_{n}(y^{0})\). Thus, we obtain from Step 4 \(y^{1}=(y_{1}^{1},y^{1}_{2},\ldots,y^{1}_{n})^{\top}\) with
\(i=1,2,\ldots,n\), and \(k_{1}=n1\). If \(y_{i}^{0}>z^{0}_{i}\) for some \(i\leq n1\), then \(z^{0}\leq_{l}y^{1}\) with \(z^{0}_{j}< y^{1}_{j}\) for some \(j\leq k_{1}\). Assume that \(y^{0}_{i}=z_{i}^{0}\) for all \(i\leq n1\). Then we derive from \(z^{0}\leq_{l} y^{0}\) that \(z^{0}\in P(y^{0},k_{0})\). Thus, \(z^{0}_{n}\leq \lfloor x^{n}_{n}(y^{0})\rfloor\). Therefore, \(z^{0}\leq y^{1}\).
2. Induction hypothesis: For any given \(1\leq h\leq q\), we assume that \(y^{h}\notin P\) and that \(z^{0}\leq y^{h}\) or \(z^{0}\leq_{l}y^{h}\) with \(z^{0}_{j}< y^{h}_{j}\) for some \(j\leq k_{h}\).
3. With this induction hypothesis, we prove in the following that \(z^{0}\leq y^{q+1}\) or \(z^{0}\leq_{l} y^{q+1}\) with \(z^{0}_{j}< y^{q+1}_{j}\) for some \(j\leq k_{q+1}\) under two cases.
Case 1: Suppose that \(P(y^{q},k_{q})=\emptyset\). Then the method will perform Step 5. Assume that \(k_{q}=0\). From the method, we know that Step 5 must be performed at least once before \(y^{q}\) is generated. Let \(y^{q_{0}}\) be the point obtained by the method in the last performance of Step 5 before \(y^{q}\) is generated. Thus, \(k_{q_{0}}=k_{q}=0\), \(k_{q_{0}1}=1\), and \(P(y^{q_{0}1},k_{q_{0}1})=\emptyset\). From Step 5, we know that \(y^{q_{0}}=(y_{1}^{q_{0}},y^{q_{0}}_{2},\ldots,y^{q_{0}}_{n})^{\top}\) with
\(i=1,2,\ldots,n\). This together with \(P(y^{q_{0}1},k_{q_{0}1})=\emptyset\) and the induction hypothesis for \(h=q_{0}1\) leads to that \(z^{0}\leq y^{q_{0}}\). If \(q=q_{0}\), then \(z^{0}\leq y^{q}=y^{q_{0}}\). Suppose that \(q>q_{0}\). Then \(q=q_{0}+1\) and the method will perform Steps 3 and 4 to generate \(y^{q}\) right after \(y^{q_{0}}\) is generated. Since \(k_{q}=k_{q_{0}}\), the method will perform once Steps 3 and 4 to generate \(y^{q}\). With \(k_{q}=0\), we obtain from Step 4 that \(y^{q}=(y^{q}_{1},y^{q}_{2},\ldots,y^{q}_{n})^{\top}\) with
Thus, it follows from \(z^{0}\in P(y^{q_{0}},k_{q_{0}})\) that \(z^{0}\leq y^{q}\). Therefore, \(z^{0}\in P(y^{q},k_{q})\). It contradicts with \(P(y^{q},k_{q})=\emptyset\). So, we must have \(k_{q}>0\).
From Step 5, we obtain \(y^{q+1}=(y_{1}^{q+1},y^{q+1}_{2},\ldots,y^{q+1}_{n})^{\top}\) with
\(i=1,2,\ldots,n\), and \(k_{q+1}=k_{q}1\). If \(z^{0}_{i}< y^{q}_{i}\) for some \(i\leq k_{q}1\), then \(z^{0}\leq_{l} y^{q+1}\) with \(z^{0}_{j}< y^{q+1}_{j}\) for some \(j\leq k_{q+1}\). Suppose that \(y_{i}^{q}=z_{i}^{0}\), \(i=1,2,\ldots,k_{q}1\). Hence, \(z_{k_{q}}^{0}< y^{q}_{k_{q}}\) from the induction hypothesis since otherwise \(P(y^{q},k_{q})\neq\emptyset\). Therefore, \(z^{0}\leq y^{q+1}\).
Case 2: Suppose that \(P(y^{q},k_{q})\neq\emptyset\). Then the method will repeatedly perform Steps 3 and 4 right before it goes to Step 1. Since \(y^{q}\notin P\), as k increases one by one, it will reach a value \(k_{q+1}\geq k_{q}\) such that \(y^{q}_{j}>x^{j}_{j}(y^{q})\) for some \(j\geq k_{q+1}+1\). When this occurs, we obtain from Step 4 that \(y^{q+1}=(y_{1}^{q+1},y^{q+1}_{2},\ldots,y^{q+1}_{n})^{\top}\) with
\(i=1,2,\ldots,n\). If \(z_{i}^{0}< y^{q}_{i}\) for some \(i\leq k_{q}\), then \(z^{0}\leq_{l}y^{q+1}\) with \(z^{0}_{j}< y^{q+1}_{j}\) for some \(j\leq k_{q+1}\). Suppose that \(y^{q}_{i}=z_{i}^{0}\) for all \(i\leq k_{q}\). Thus, \(z^{0}\leq y^{q}\) from the induction hypothesis for \(h=q\).

Consider \(k_{q+1}=k_{q}\). Since \(z^{0}\in P(y^{q},k_{q})\), \(z^{0}_{i}\leq\lfloor x^{i}_{i}(y^{q})\rfloor\) for all \(k_{q+1}+1\leq i\leq n\). Therefore, \(z^{0}\leq y^{q+1}\).

Consider \(k_{q+1}>k_{q}\). If \(z^{0}_{i}< y^{q}_{i}\) for some \(k_{q}< i\leq k_{q+1}\), then it follows from Steps 3 and 4 that \(z^{0}\leq_{l}y^{q+1}\) with \(z^{0}_{j}< y^{q+1}_{j}\) for some \(j\leq k_{q+1}\). Suppose that \(y^{q}_{i}=z^{0}_{i}\) for all \(k_{q}< i\leq k_{q+1}\). Since \(z^{0}\leq y^{q}\), \(z^{0}\in P(y^{q},k_{q+1})\) and consequently, \(z^{0}_{i}\leq\lfloor x^{i}_{i}(y^{q})\rfloor\) for all \(k_{q+1}+1\leq i\leq n\). Therefore, \(z^{0}\leq y^{q+1}\).
The above results together with mathematical induction show that
From Lemma 1, we know that \(y^{q+1}\leq y^{q}\) or \(y^{q+1}\leq_{l}y^{q}\) with \(y^{q+1}\neq y^{q}\). Therefore, within a finite number of iterations, the method meets \(z^{0}\) since there are only a finite number of integer points in the set
This completes the proof. □
As a corollary of Theorem 1, we come to the following conclusion.
Corollary 1
Starting from \(y^{0}=x^{u}\), the method, within a finite number of iterations, either yields an integer point in P or proves no such point exists.
3 Distributed computation and computing all integer points in a polytope
For any given positive integer ν, let \(x^{i}\), \(i=1,2,\ldots,\nu\), be a sequence of different integer points in \(D(P)\) with \(x^{l}\leq x^{1}\leq_{l}x^{2}\leq_{l}\cdots\leq_{l}x^{\nu}=x^{u}\). Then the method can easily be implemented in a distributed way by starting from \(x^{i}\), \(i=1,2,\ldots,\nu\), simultaneously.
The method can also be applied to compute all integer points in P, which is as follows.
 Step 0::

Use the method starting from \(x^{u}\) to compute an integer point in P. If no integer point has been found, Stop. Otherwise, let \(s^{1}\) be the solution found by the method and \(g=1\), and go to Step 1.
 Step 1::

Let \(y^{0}=(y_{1}^{0},y_{2}^{0},\ldots,y^{0}_{n})^{\top}\) with
$$y^{0}_{i}=\left \{ \textstyle\begin{array}{l@{\quad}l} s^{g}_{i} & \mbox{if }i< n, \\ s^{g}_{i}1 & \mbox{if }i=n, \end{array}\displaystyle \right . $$\(i=1,2,\ldots,n\), and go to Step 2.
 Step 2::

If \(y^{0}\in P\), let \(s^{g+1}=y^{0}\) and \(g=g+1\), and go to Step 1. Otherwise, go to Step 3.
 Step 3::

Use the method starting from \(y^{0}\) to compute an integer point in P. If no integer point has been found, Stop. Otherwise, let \(s^{g+1}\) be the solution found by the method and \(g=g+1\), and go to Step 1.
4 Numerical results
In this section, we apply the method to determine whether there is an integer point in the polytope of the market split problem and the polytope of the 01 knapsack feasibility problem though a comprehensive comparison with the existing methods is beyond the scope of this paper. The method has been coded in C++ and run on a workstation of Lenovo ThinkStation D20 4155BM4 with 16 processors. In our implementation of the method, each linear program is solved by the linear program solver of ILOG CPLEX with all the parameter values automatically set by ILOG CPLEX itself. We have also run ILOG CPLEX on the same problem instance and found that the branchandcut strategy is the best of ILOG CLEX. In the presentation of numerical results, NumLPs stands for the total number of linear programs solved by the method and the branchandcut strategy of ILOG CLEX for each instance. In the feasibility category, ‘Feasible’ appears if an instance has a feasible integer point and ‘Infeasible’ otherwise. In our numerical experiments, to convert a problem into an equivalent problem of determining whether there is an integer point in a fulldimensional polytope given by \(P=\{x\in R^{n} \mid Ax\leq b\}\), we apply the basisreduction algorithm of [24] in the same way as that in [11] and in the appendix with \(N_{1}=10\text{,}000\) and \(N_{2}=100\text{,}000\).
Example 3
(The market split problem)
The market split problem given in [15] is to determine whether the system, \(Cx = d\), has a 01 integer solution, where \(C=(c_{ij})\) is a \(p\times q\) (e.g., \(q=10(p1)\)) nonnegative integer matrix and \(d=(d_{1},d_{2},\ldots,d_{p})^{\top}\) is an integer vector given by \(d_{i}=\lfloor\sum_{j=1}^{n} c_{ij}/2\rfloor\), \(i=1,2,\ldots,p\). In our numerical experiments, \(c_{ij}\in[0, 99]\), \(i=1,2,\ldots,p\), \(j=1,2,\ldots,q\), are generated randomly.
For the problem with \(p=5\) and \(q=40\), we have solved 25 instances using the method and the best CPLEX strategy. Numerical results for 25 instances of the problem are given in Table 1.
To demonstrate the capability of distributed computation of the method, we have implemented the method in a distributed way to solve the market split problem with \(p=6\) and \(q=50\). We divide the problem space into 32 parts and run 16 subproblems simultaneously on the workstation. In the presentation of numerical results, MAX NumLPs stands for either the largest number of linear programs consumed by the method for any of the 32 subproblems when an instance is infeasible or the smallest number of linear programs consumed by the method for the subproblem in which a feasible solution is found. Numerical results for five instances of the problem are given in Table 2.
Example 4
(The 01 knapsack feasibility problem)
Find a 01 solution of \(p^{\top}x=d\), where \(p=(p_{1},p_{2},\ldots,p_{n+1})^{\top}>0\) and \(p_{i}\neq p_{j}\) for all \(i\neq j\). In our numerical experiments, \(p_{j}\in[10^{2}, 10^{4}]\), \(j=1,2,\ldots,n+1\), and \(d\in[10^{2}, 10^{4}]\) are generated randomly. Numerical results of the method for this problem are given in Table 3.
This paper has no intention to make a comprehensive comparison of the proposed method with the existing methods. Nevertheless, one can see from these preliminary numerical results that the numbers of linear programs solved by the method for most instances of two specific problems are less than those of the best CPLEX strategy: branch and cut. An efficient implementation of the method requires a considerable amount of additional research, which is beyond the scope of this paper and will be carried out in another research project.
References
Scarf, HE: Production sets with indivisibilities  Part I: generalities. Econometrica 49, 132 (1981)
Scarf, HE: Neighborhood systems for production sets with indivisibilities. Econometrica 54, 507532 (1986)
Jünger, M, Liebling, TM, Naddef, D, Nemhauser, GL, Pulleyblank, WR, Reinelt, G, Rinaldi, G, Wolsey, LA: 50 Years of Integer Programming. Springer, Berlin (2010)
Garey, MR, Johnson, DS: Computers and Intractability: A Guide to the Theory of NPCompleteness. Freeman, San Francisco (1979)
Gomory, RE: Outline of an algorithm for integer solution to linear programs. Bull. Am. Math. Soc. 64, 275278 (1958)
Land, AH, Doig, AG: An automatic method for solving discrete programming problems. Econometrica 28, 497520 (1960)
Lenstra, HW Jr.: Integer programming with a fixed number of variables. Math. Oper. Res. 8, 538548 (1983)
Lovász, L, Scarf, HE: The generalized basis reduction algorithm. Math. Oper. Res. 17, 751764 (1992)
Dang, C: An arbitrary starting homotopylike simplicial algorithm for computing an integer point in a class of polytopes. SIAM J. Discrete Math. 23, 609633 (2009)
Dang, C, van Maaren, H: A simplicial approach to the determination of an integer point in a simplex. Math. Oper. Res. 23, 403415 (1998)
Aardal, K, Hurkens, C, Lenstra, AK: Solving a system of linear Diophantine equations with lower and upper bounds on the variables. Math. Oper. Res. 25, 427442 (2000)
Barvinok, AI: A polynomial time algorithm for counting integral points in polyhedra when the dimension is fixed. Math. Oper. Res. 19, 769779 (1994)
Bertsimas, D, Weismantel, R: Optimization over Integers. Dynamic Ideas, Belmont (2005)
Burer, S, Vandenbussche, D: A finite branchandbound algorithm for nonconvex quadratic programming via semidefinite relaxations. Math. Program., Ser. A 113, 259282 (2008)
Cornuéjols, G, Dawande, M: A class of hard small 01 programs. In: Integer Programming and Combinatorial Optimization. Lecture Notes in Computer Science, vol. 1412, pp. 284293. Springer, Berlin (1998)
De Loera, JA, Hemmecke, R, Köppe, M, Weismantel, R: Integer polynomial optimization in fixed dimension. Math. Oper. Res. 31, 147153 (2006)
Nemhauser, GL, Wolsey, LA: Integer and Combinatorial Optimization. Wiley, New York (1998)
Schrijver, A: Theory of Linear and Integer Programming. Wiley, New York (1998)
Tarski, A: A latticetheoretical fixpoint theorem and its applications. Pac. J. Math. 5, 285308 (1955)
Dang, C, Qi, Q, Ye, Y: Computational models and complexities of Tarski’s fixed points. Technical report (2011). http://www.stanford.edu/~yyye/unitarski1.pdf
Dang, C: An increasingmapping approach to integer programming based on lexicographic ordering and linear programming. In: Du, DZ, Zhang, XS (eds.) The Ninth International Symposium on Operations Research and Its Applications. Lecture Notes in Operations Research, vol. 12, pp. 5560. World Publishing Corporation, Beijing (2010)
Ye, Y: Interior Point Algorithms: Theory and Analysis. Wiley, New York (1997)
Ye, Y, Todd, MJ, Mizuno, S: An \(O(\sqrt{n}L)\)iteration homogeneous and selfdual linear programming algorithm. Math. Oper. Res. 19, 5367 (1994)
Lenstra, AK, Lenstra, HW Jr., Lovász, L: Factoring polynomials with rational coefficients. Math. Ann. 261, 515534 (1982)
Havas, G, Majewski, BS, Matthews, KR: Extended GCD and Hermite normal form algorithms via lattice basis reduction. Exp. Math. 7, 125136 (1998)
Acknowledgements
The authors are very grateful to the editor and reviewers for their valuable comments and suggestions and would like to thank Dr. Zhengtian Wu for numerical implementation of the method. This work was partially supported by GRF: CityU 101113 of Hong Kong SAR Government.
Author information
Authors and Affiliations
Corresponding author
Additional information
Competing interests
The authors declare that they have no competing interests.
Authors’ contributions
Both authors contributed equally to the writing of this paper. Both authors read and approved the final manuscript.
Appendix: Basis reduction and preconditioning
Appendix: Basis reduction and preconditioning
A subset \(L\subset R^{n}\) is called a lattice if there exist linearly independent vectors \(b_{1}, b_{2}, \ldots, b_{n}\) such that \(L=\{\sum_{j=1}^{l}\alpha_{j}b_{j} \mid \alpha_{j}\mbox{ is an integer for }1\leq j\leq l\}\). The wellknown GramSchmidt orthogonalization is a transformation procedure that derives from the independent vectors \(b_{j}\), \(j=1,2,\ldots,l\), the orthogonal vectors \(b_{j}^{*}\), \(j=1,2,\ldots,l\), by the following procedure:
For \(y\in R^{n}\), let \(\y\\) denote the Euclidean norm of y. The following definition comes from [24].
Definition 1
A basis \(b_{1}, b_{2}, \ldots, b_{l}\) is called reduced if the following two conditions are satisfied:
 Condition 1::

\(\mu_{jk}\leq\frac{1}{2}\) for \(1\leq k< j\leq l\), and
 Condition 2::

\(\b_{j}^{*}+\mu_{j,j1}b_{j1}^{*}\^{2}\geq\frac{3}{4}\b_{j1}^{*}\^{2}\) for \(1< j\leq l\).
Given this definition, Lováz’s basis reduction algorithm in [24] can be stated as follows:
 Step 1:

(Size reduction): If, for any pair of j and k with \(1\leq k< j\leq l\), Condition 1 is violated, then replace \(b_{j}\) by \(b_{j}\lceil\mu_{jk}\rfloor b_{k}\), where \(\lceil\mu_{jk}\rfloor=\lceil\mu_{jk}\frac{1}{2}\rceil\).
 Step 2:

(Interchange): If Condition 2 is violated for some j with \(1< j\leq l\), then interchange \(b_{j1}\) and \(b_{j}\).
 Step 3:

(Repeat): Repeat the above two steps till there is no violation of either of Conditions 1 and 2.
Let \(H=\{y\in R^{m}_{+} \mid Cy=d\}\), where \(C=(c_{ij})\) is an \(n\times m\) integer matrix and d is an integer point of \(R^{n}\). Without loss of generality we assume that \(\operatorname{gcd}(c_{i1},c_{i2},\ldots,c_{im})=1\) for all \(1\leq i\leq m\). This assumption can be met by directly dividing the GCD (greatest common divisor) to each row of C, where the GCD can be found by an extended GCD algorithm. To convert this problem into an equivalent problem of determining whether there is an integer point in a polytope given by \(P=\{x\in R^{n} \mid Ax\leq b\}\), we use the same procedure as in [11]. Let
where \(I_{m}\) is an \(m\times m\) identity matrix and \(N_{1}\) and \(N_{2}\) are two sufficiently large positive integers (e.g., \(N_{1}=1\text{,}000\) and \(N_{2}=10\text{,}000\)). Applying Lováz’s basis reduction algorithm to B, we obtain
where \(I_{n}\) is an \(n\times n\) identity matrix. Let \(P=\{x\in R^{n} \mid Ax\leq b\}\), where A and b are the same as in B̂. Then, determining whether there is an integer point in H is equivalent to determining whether there is an integer point in P.
Given any polytope \(P=\{x\in R^{n} \mid Ax\leq b\}\), one can precondition A by applying Lováz’s basis reduction algorithm. If there are continuous variables, one can apply GramSchmidt orthogonalization to the corresponding matrix.
Given positive integers \(p_{i}\), \(i=1,2,\ldots,m\), the extended GCD with the basis reduction [25] can be employed to find their common greatest divisor, which is as follows.
 Initialization::

Let \(m_{1}=3\), \(n_{1}=4\), \(U=(u_{ij})_{m\times m}=I_{m}\), \(d_{i}=1\), \(i=1,2,\ldots,m+1\), \(T=(t_{ij})_{m\times m}=0_{m}\), and \(k=2\).
 Step 1::

Let \(i=k1\) and perform \(\operatorname{Reduce}(k,i)\). Let
$$r_{1}=n_{1}\bigl(d_{k1}d_{k+1}+t_{k,k1}^{2} \bigr)m_{1}d_{k}^{2}. $$If \(p_{k1}\neq0\) or \(p_{k1}=0\), \(p_{k}=0\), and \(r_{1}<0\), then perform \(\operatorname{Swap}(k)\) and let \(k=k1\) if \(k>2\). Otherwise, for \(i=k2,k3,\ldots,1\), perform \(\operatorname{Reduce}(k,i)\). Let \(k = k+1\) and go to Step 2.
 Step 2::

If \(k>m\), Stop. Otherwise, go to Step 1.
 Finalization::

If \(p_{m}<0\), let \(p_{m}=p_{m}\) and \(u_{jm}=u_{jm}\), \(j=1,2,\ldots,m\). Let \(\mathrm{GCD}=p_{m}\) and, for \(j=1,2,\ldots,m\), let
$$\begin{aligned}& h=u_{j1}, \\& u_{j1}=u_{jm}, \\& u_{jm}=h. \end{aligned}$$
1.1 \(\operatorname{Reduce}(k,i)\)
If \(p_{i}\neq0\), let
Otherwise, let
If \(r\neq0\), let
1.2 \(\operatorname{Swap}(k)\)
For \(j=1,2,\ldots,m\),
For \(j=1,2,\ldots,k2\),
For \(j=k+1,k+2,\ldots,m\),
Rights and permissions
Open Access This article is distributed under the terms of the Creative Commons Attribution 4.0 International License (http://creativecommons.org/licenses/by/4.0/), which permits unrestricted use, distribution, and reproduction in any medium, provided you give appropriate credit to the original author(s) and the source, provide a link to the Creative Commons license, and indicate if changes were made.
About this article
Cite this article
Dang, C., Ye, Y. A fixed point iterative approach to integer programming and its distributed computation. Fixed Point Theory Appl 2015, 182 (2015). https://doi.org/10.1186/s1366301504298
Received:
Accepted:
Published:
DOI: https://doi.org/10.1186/s1366301504298