Publication Cover
Optimization
A Journal of Mathematical Programming and Operations Research
Volume 70, 2021 - Issue 7
1,082
Views
4
CrossRef citations to date
0
Altmetric
Articles

Inner approximation algorithm for solving linear multiobjective optimization problems

Pages 1487-1511 | Received 21 Aug 2018, Accepted 26 Feb 2020, Published online: 10 Mar 2020

ABSTRACT

Benson's outer approximation algorithm and its variants are the most frequently used methods for solving linear multiobjective optimization problems. These algorithms have two intertwined parts: single-objective linear optimization on one hand, and a combinatorial part closely related to vertex enumeration on the other. Their separation provides a deeper insight into Benson's algorithm, and points toward a dual approach. Two skeletal algorithms are defined which focus on the combinatorial part. Using different single-objective optimization problems yields different algorithms, such as a sequential convex hull algorithm, another version of Benson's algorithm with the theoretically best possible iteration count, and the dual algorithm of Ehrgott et al. [A dual variant of Benson's ‘outer approximation algorithm’ for multiple objective linear programming. J Glob Optim. 2012;52:757–778]. The implemented version is well suited to handle highly degenerate problems where there are many linear dependencies among the constraints. On problems with 10 or more objectives, it shows a significant increase in efficiency compared to Bensolve – due to the reduced number of iterations and the improved combinatorial handling.

AMS CLASSIFICATION NUMBERS:

1. Introduction

Our notation is standard and mainly follows that of [Citation1,Citation2]. The transpose of the matrix M is denoted by MT. Vectors are usually denoted by small letters and are considered as single column matrices. For two vectors, x and y of the same dimension, xy denotes their inner product, which is the same as the matrix product xTy. The ith coordinate of x is denoted by xi, and xy means that for every coordinate i, xiyi. The non-negative orthant Rn is the collection of vectors xRn with x0, that is, vectors whose coordinates are non-negative numbers.

For an introduction to higher-dimensional polytopes, see [Citation3], and for a description of the double description method and its variants, consult [Citation4]. Linear multiobjective optimization problems, methods, and algorithms are discussed in [Citation1,Citation5,Citation6] and the references therein.

1.1. The MOLP problem

Given positive integers n, m, and p, the m×n matrix A maps the problem space Rn to Rm, and the p×n matrix P maps the problem space Rn to the objective space Rp. For better clarity, we use x to denote points of the problem space Rn, while y denotes points in the objective space Rp. In the problem space, a convex closed polyhedral set A is specified by a collection of linear constraints. For simplicity, we assume that the constraints are given in the following special format. This format will only be used in Section 5. (1) A={xRn:Ax=c, x0},(1) where cRm is a fixed vector. The p-dimensional linear projection of A given by the p×n matrix P is (2) Q=PA={Px:xA}.(2) Using this notation, the multiobjective linear optimization problem can be cast as follows: MOLP find miny {y:yQ},MOLP where minimization is understood with respect to the coordinate-wise ordering of Rp. The point yˆQ is non-dominated or Pareto optimal, if no yyˆ different from yˆ is in Q; and it is weakly non-dominated if no y<yˆ is in Q. Solving the multiobjective optimization problem is to find (a description of) all non-dominated vectors yˆ together with corresponding pre-images xˆRn such that yˆ=Pxˆ.

Let Q+=Q+Rp, the Minkowski sum of Q and the non-negative orthant of Rp, see [Citation3]. It follows easily from the definitions, but see also [Citation1,Citation7,Citation8], that non-dominated points of Q and of Q+ are the same. The weakly non-dominated points of Q+ form its Pareto front. Figure  illustrates non-dominated (solid line), and weakly non-dominated points (solid and dashed line) of Q+ when (a) all objectives are bounded from below, and when (b) the first objective is not bounded. Q+ is the unbounded light grey area extending Q.

Figure 1. Pareto front with (a) bounded, (b) unbounded objectives.

Figure 1. Pareto front with (a) bounded, (b) unbounded objectives.

1.2. Facial structure of polytopes

Let us recall some facts concerning the facial structure of n-dimensional convex closed polytopes. A face of such a polytope BRn is the intersection of B and some closed halfspace (including the empty set and the whole B). Faces of dimension zero, one, n−2, and n−1 are called vertex, edge, ridge, and facet, respectively.

An n-dimensional halfspace is specified as H={xRn:xhM}, where hRn is a non-null vector (normal), and M is a scalar (intercept). The positive side of H is the open halfspace {xRn:xh>M}; the negative side is defined similarly. Each facet of B is identified with the halfspace which contains B and whose boundary intersects B in that facet. B is just the intersection of all halfspaces corresponding to its facets.

The halfspace H is supporting if it contains B, and there is a boundary point of B on the boundary of H. The boundary hyperplane of a supporting halfspace intersects B in one of its faces. All boundary points of B are in the relative interior of exactly one face.

A recession direction, or ray of B is a vector dRn such that for some xB, x+λdB for all real λ0. d is extreme if whenever d=d1+d2 for two recession directions d1 and d2, then both d1 and d2 are non-negative multiples of d.

1.3. Working with unbounded polytopes

When B is unbounded but does not contain a complete line – which will always be the case in this paper – Burton and Ozlen's ‘oriented projective geometry’ can be used [Citation9]. Intuitively this means that rays are represented by ideal points, extreme rays are the ideal vertices which lie on a single ideal facet determining the ideal hyperplane. Notions of ordering and convexity can be extended to these objects seamlessly even from a computational point of view. In particular, all non-ideal points are on the positive side of the ideal hyperplane. Thus in theoretical considerations, without loss of generality, B can be assumed to be bounded.

1.4. Assumptions on the MOLP problem

In order that we could focus on the main points, we make some simplifying assumptions on the (MOLP) to be solved. The main restriction is that all objectives are bounded from below. From this, it follows immediately that neither Q nor Q+ contains a complete line; and that the Pareto optimal solutions are the bounded faces of dimension p−1 and less of Q+ as indicated on Figure (a). One can relax this restriction at the expense of computing the extreme rays of Q first (also checking that Q+ does not contain a complete line), as is done by the software package Bensolve [Citation10]. Further discussions are postponed to Section 6, where we also extend our results to the case where the ordering is given by some cone different from Rp.

Assumption

The optimization problem (MOLP) satisfies the following conditions:

  1. the n-dimensional polytope A defined in (Equation1) is not empty;

  2. each objective in Q is bounded from below.

An immediate consequence of the first assumption is that the projection Q=PA is non-empty either, and then Q+=Q+Rp is full-dimensional. According to Assumption 2, Q and Q+ is contained in y+Rp for some (real) vector yRp. Thus Q+ has exactly p ideal vertices, namely the positive endpoints of the coordinate axes, and these ideal vertices lie on the single ideal facet of Q+.

1.5. Benson's algorithm revisited

The solution of the (MOLP) can be recovered from a description of the Pareto front of Q+, which, in turn, is specified by the list of its vertices and (non-ideal) facets. Indeed, the set of Pareto optimal points is the union of those faces of Q+, which do not contain ideal points. Thus solving (MOLP) means find all vertices and facets of the polyhedron Q+.

Benson's ‘outer approximation algorithm’ and its variants [Citation1,Citation2,Citation5–8,Citation10] do exactly this, working in the (low-dimensional) objective space. These algorithms have two intertwined parts: scalar optimization on one hand, and a combinatorial part on the other. Their separation provides a deeper insight into how these algorithms work.

Benson's algorithm works in stages by maintaining a ‘double description’ of an approximation of the final polytope Q+. A convex polytope is uniquely determined as the convex hull of a finite set of points (for example, the set of vertices) and directions (in our case: ideal points) as well as the intersection of finitely many closed halfspaces (for example, halfspaces corresponding to the facets plus the ideal facet). The ‘double description’ refers to the technique keeping and maintaining both lists simultaneously. The iterative algorithm stops when the last approximation equals Q+. At this stage, both the vertices and facets of Q+ are computed, thus the (MOLP) has been solved.

During the algorithm, a new facet is added to the approximating polytope in each iteration. The new facet is determined by solving a smartly chosen scalar LP problem (specified from the description of the actual approximation). Then, the combinatorial step is executed: the new facet is merged to the approximation by updating the facet and vertex lists. This step is very similar to that of incremental vertex enumeration [Citation4,Citation11–13], and can be parallelized.

Section 2 defines two types of black box algorithms which, on each call, provide data for the combinatorial part. The point separating oracle separates a point from the (implicitly defined) polytope Q+ by a halfspace. The plane separating oracle is its dual: the input is a halfspace, and the oracle provides a point of Q+ on the negative side of that halfspace.

Two general enumeration algorithms are specified in Section 3 which call these black box algorithms repeatedly. It is proved that they terminate with a description of their corresponding target polytopes. Choosing the initial polytope and the oracle in some specific way, one gets a convex hull algorithm, a (variant of) Benson's algorithm, and the Ehrgott–Löhne–Shao dual algorithm.

Aspects of the combinatorial part are discussed in Section 4. Section 5 explains how the oracles in these algorithms can be realized. Finally, Section 6 discusses other implementation details, limitations and possible generalizations.

1.6. Our contribution

The first skeletal algorithm in Section 3.1 is the abstract versions of Benson's outer approximation algorithm and its variants, where the combinatorial part (vertex enumeration) and the scalar LP part has been separated. The latter one is modelled as an inquiry to a separating oracle which, on each call, provides the data the combinatorial part can work on. Using one of the point separation oracles in Section 5.1, one can recover, e.g. Algorithm 1 of [Citation1]. The running time estimate in Theorem 3.4 is the same (with the same proof) as the estimate in [Citation1, Theorem 4.6].

The other skeletal algorithm is the dual of the outer approximation one. The ‘inner’ algorithm of this paper uses the plane separation oracle defined in Section 5.3. Another instance is Algorithm 2 of Ehrgott et al. [Citation1], called ‘dual variant of Benson's outer approximation algorithm’.

Studying these skeletal algorithms made it possible to clarify the role of the initial approximation, and prove general terminating conditions. While not every separating oracle guarantees termination, it is not clear what are the (interesting and realizable) sufficient conditions. Benson's outer approximation algorithm is recovered by the first separation oracle defined in Section 5.1. Other two separation oracles have stronger termination guarantees, yielding the first version which is guaranteed to take only the theoretically minimal number of iterations. Oracles in Section 5.3 are particularly efficient and contribute significantly to the excellent performance of the implemented inner approximation algorithm.

It is almost trivial to turn any of the skeletal algorithms to an incremental vertex (or facet) enumeration algorithm. Such algorithms have been studied extensively. Typically there is a blow-up in the size of the intermediate approximation; there are examples where even the last but one approximation has size Ω(mp/2), where m is the final number of facets (or vertices) and p is the space dimension [Citation14]. This blow-up can be significant when p is 6 or more.

An interesting extension to the usual single objective LP have been identified, where not one but several goals are specified, and called ‘multi-goal LP’. Optimization is done for the first goal, then within the solution space the second goal is optimized, that is, in the second optimization there is an additional constraint specifying that the first goal has an optimal value. Then within this solution space, the third goal is optimized, etc. Section 5.2 sketches how existing LP solvers can be patched to become an efficient multi-goal solver. We expect more interesting applications for this type of solvers.

2. Separating oracles

In this and in the following section, BRp is some bounded, closed, convex polytope with non-empty interior. As discussed in Section 1.3, the condition that B is bounded can be replaced by the weaker assumption that B does not contain a complete line.

Definition 2.1

A point separating oracle ptO(B) for the polytope BRp is a black box algorithm with the following input/output behaviour:

  1. a point vRp;

  2. ‘inside’ if vB; otherwise a halfspace H corresponding to a facet of B such that v is on the negative side of H.

Definition 2.2

A plane separating oracle hpO(B) for the polytope BRp is a black box algorithm with the following input/output behaviour:

  1. a p-dimensional closed halfspace H;

  2. ‘inside’ if B is a subset of H; otherwise a vertex v of B on the negative side of H.

The main point is that only the oracle uses the polytope B in the enumeration algorithms of Section 3, and B might not be defined by a collection of linear constraints. In particular, this happens when the algorithm is used to solve the multiobjective problem, where the polytope passed to the oracle is Q or Q+.

The two oracles are dual in the sense that if B is the geometric dual of the convex polytope B with the usual point versus hyperplane correspondence [Citation3], then ptO(B) and hpO(B) are equivalent: when a point is asked from oracle ptO(B), ask the dual of this point from hpO(B), and return the dual of the answer.

The object returned by a weak separating oracle is not required to be a facet (or vertex), but only a supporting halfspace (or a boundary point) separating the input from the polytope. The returned separating object, however, cannot be arbitrary, it must have some structural property. Algorithms of Section 3 work with the weaker separating oracles defined below, but the performance guarantees are exponentially worse. On the other hand, such weak oracles can be realized easier. Actually, strong separating oracles in Section 5 are implemented as tweaked weak oracles.

Definition 2.3

A weak point separating oracle ptO(B) for the polytope B is a black box algorithm which works as follows. It fixes an internal point oB.

  1. a point vRp;

  2. ‘inside’ if vB; otherwise connect v to the fixed internal point o, compute where this line segment intersects the boundary of B, and return a supporting halfspace H of B whose boundary touches B at that point (this H separates v and B).

Definition 2.4

A weak plane separating oracle hpO(B) for the polytope B is a black box algorithm which works as follows.

  1. a halfspace H;

  2. ‘inside’ if B is contained in H; otherwise a boundary point v of B on the negative side of H which is farthest away from the bounding hyperplane of H.

A strong oracle is not necessarily a weak one (for example, it can return any vertex on the negative side of H, not only the one which is farthest away from it), but can always give a response which is consistent with being a weak oracle. Similarly, there is always a valid response of a weak oracle which qualifies as correct answer for the corresponding strong oracle.

While strong oracles are clearly dual of each other, it is not clear whether the weak oracles are dual, and if yes, in what sense of duality.

3. Approximating algorithms

The skeletal algorithms below are called outer and inner approximations. The outer name reflects the fact that the algorithm approximates the target polytope from outside, while the inner does it from inside. The outer algorithm is an abstract version of Benson's algorithm where the computational and combinatorial parts are separated.

3.1. Skeletal algorithms

On input, both algorithms require two convex polytopes: S and B. The polytope S is the initial approximation; it is specified by double description: by the list of its vertices and facets. The polytope B is passed to the oracle, and is specified according to the oracle's requirements. Both S and B are assumed to be closed, convex polytopes with non-empty interior. For this, exposition they are also assumed to be bounded; this condition can (and will) be relaxed to the weaker condition that none of them contains a complete line.

Theorem 3.1

The outer approximation algorithm using the ptO(B) oracle terminates with the polytope R=BS. The algorithm makes at most v + f oracle calls, where v is number of vertices of R, and f is the number of facets of B.

Proof.

First, we show that if the algorithm terminates, then the result is BS. Each approximating polytope is an intersection of halfspaces corresponding to certain facets of B (as ptO(B) returns halfspaces which correspond to facets of B), and all halfspaces corresponding to facets of S0 thus BSSi.

If BS is a proper subset of Si, then Si has a vertex vi not in BS. This vertex vi cannot be marked ‘final’ as final vertices are always points of BS. (All vertices of Si are points of the initial S, and when the oracle returns ‘inside’, the queried point is in B.) Thus, the algorithm cannot stop at Si.

Second, the algorithm stops after making at most v + f oracle calls. Indeed, there are at most v oracle calls which return ‘inside’ (as a final vertex is never asked from the oracle). Moreover, the oracle cannot return the same facet H of B twice. Suppose H is returned at the ith step. Then Si+1=SiH. If j>i and vj is a vertex of SjSi+1, then vj is on the non-negative side of H, i.e. the oracle cannot return the same H for the query vj.

From the discussion above, it follows that vertices marked as ‘final’ are vertices of BS, thus they are vertices of all subsequent approximations. This justifies the sentence in parentheses in the description of the algorithm.

Theorem 3.2

The outer approximation algorithm using the weak ptO(B) oracle terminates with the polytope R=BS. The algorithm makes at most v+2f oracle calls, where v is the number of vertices of R, and f is the number of facets of B.

Proof.

Similarly to the previous proof, for each iteration, we have BSSi, as each H contains B. If BS is a proper subset of Si, then Si has a vertex vi not in BS, thus not marked as ‘final’, and the algorithm cannot stop at this iteration.

To show that the algorithm eventually stops, we bound the number of oracle calls. If for the query vi the response is ‘inside’, then vi is a vertex of R, and vi will not be asked again. This happens at most as many times as many vertices R has.

Otherwise, the oracle's response is a supporting halfspace Hi whose boundary touches B at a unique face Fi of B, which contains the point where the segment vio intersects the boundary of B.

If an internal point of the line segment vjo intersects the face Fi, then vj must be on the negative side of Hi. As Si+1 and all subsequent approximations are on the non-negative side of Hi, if j>i, then vjo cannot intersect Fi, and then the face Fj necessarily differs from the face Fi. Thus, there can be no more iterations than the number of faces of B. As each face is the intersection of some facets, this number is at most 2f.

Now, we turn to the dual of outer approximation.

Theorem 3.3

The inner approximation algorithm using the hpO(B) oracle terminates with R=conv(BS), the convex hull of B and S. The algorithm makes at most v + f oracle calls, where v is the number of vertices of B, and f is the number of facets of R.

Proof.

This algorithm is the dual of Algorithm 3.1. The claims can be proved along with the proof of Theorem 3.1 by replacing notions by their dual: vertices by facets, intersection by convex hull, calls to ptO by calls to hpO, etc. Details are left to the interested reader.

Theorem 3.4

The inner approximation algorithm using the weak hpO(B) oracle terminates with R=conv(BS). The algorithm makes at most 2v+f oracle calls, where v is the number of vertices of B, and f is the number of facets of R.

Proof.

As weak oracles are not dual, the proof is not as straightforward as it was for the previous theorem. First, if the algorithm stops, it computes the convex hull. Indeed, SiR, and if they differ, then Si has a facet with the corresponding halfspace H and a vertex of B is on the negative side of H. This facet cannot be final, thus the algorithm did not stop.

To show termination, observe that at most f oracle calls return ‘inside’. In other calls, the query was the halfspace Hi, and the oracle returned vi from the boundary of B such that the distance between vi and Hi is maximal. Consider the face Fi of B, which contains vi in its relative interior. We claim that the same Fi cannot occur for any subsequent query. Indeed, all points of Fi are at exactly the same (negative) distance from Hi, viFi, vi is a point of Si+1 and all subsequent approximations. If j>i and Hj is a facet of Sj, then vi is on the non-negative side of Hj. Consequently vi is not an element of the face Fj, and then Fi and Fj differ.

Thus the number of such queries cannot be more than the number of faces in B, which is at most 2v.

3.2. A convex hull algorithm

The skeleton algorithms can be used with different oracles and initial polytopes. An easy application is computing the convex hull of a point set VRp. In this case B=conv(V), the convex hull of V. If the initial approximation S is inside this convex hull, then Algorithm 3.2 just returns the convex hull B. There is, however, a problem. Algorithm 3.2 uses the facet enumeration as discussed in Section 4. This method generates the exact facet list at each iteration, but keeps all vertices from the earlier iterations, thus the vertex list can be redundant. When the algorithm stops, the facet list of the last approximation gives the facets of the convex hull. The last vertex list contains all of its vertices but might contain additional points as well. A solution is to check all elements in the vertex list by solving a scalar LP: is this element a convex linear combination of the others? Another option is to ensure that points returned by the oracle are vertices of the convex hull – namely using a strong oracle – and vertices of the initial polytope are not, thus they can be omitted without any computation. This is what Algorithm 3.3 does.

3.3. Algorithms solving multiobjective linear optimization problems

Let us now turn to the problem of solving the multiobjective linear optimization problem. As discussed in Section 1.5, this means that we have to find a double description of the (unbounded) polytope Q+. To achieve this, both skeletal algorithms from Section 3.1 can be used. Algorithm 3.4 is (a variant of) Benson's original outer approximation algorithm [Citation1], while Algorithm 3.5 uses inner approximation. The second algorithm has several features which makes it better suited for problems with large number (at least six) of objectives, especially when Q+ has relatively few vertices.

As Q+ is unbounded, both algorithms below use ideal elements from the extended ordered projective space R¯p as elaborated in [Citation9]. Elements of R¯p can be implemented using homogeneous coordinates. For 1ip, the ideal point at the positive end of the ith coordinate axis ei is denoted by EiR¯p. For a (non-ideal) point vRp the p-dimensional simplex with vertices v and {Ei:1ip} is denoted by v+E. One facet of v+E is the ideal hyperplane containing all ideal points; the other p facets have equation (yv)ei=0, and the corresponding halfspaces are {yRp:(yv)ei0} as v+E is a subset of them. The description of how the oracles in Algorithms 3.4 and 3.5 are implemented is postponed to Section 5.

The input of Algorithms 3.4 and 3.5 are the n-dimensional polytope A as in (Equation1), and the p×n projection matrix P defining the objectives, as in (Equation2). The output of both algorithms is a double description of Q+. The first one gives an exact list of its vertices (and a possibly redundant list of its facets), while the second one generates a possibly redundant list of the vertices, and an exact list of the facets.

By Theorems 3.1 and 3.2, this algorithm terminates with Q+, as required. When creating the initial polytope S in step (1), the scalar LP must have a feasible solution (otherwise A is empty), and should not be unbounded (as otherwise the ith objective is unbounded from below). After S has been created successfully we know that its ideal vertices are also vertices of Q+, thus they can be marked as ‘final’. As these are the only ideal vertices of Q+, no further ideal point will be asked from the oracle at all. These facts can be used to simplify the oracle implementation.

Recall that v+E is the p-dimensional simplex whose vertices are v and the ideal points at the positive endpoints of the coordinate axes.

Theorems 3.3 and 3.4 claim that this algorithm computes a double description of Q+, as the convex hull of Q and S is just Q+. Observe that in this case, the oracle answers questions about the polytope Q, and not about Q+. The ideal facet of S is also a facet of Q+, thus it can be marked ‘final’ and then it will not be asked from the oracle. No ideal point should ever be returned by the oracle.

To simplify the generation of the initial approximation S, the oracle may accept any normal vector hRp as a query, and return a (non-ideal) vertex (or boundary point) v of Q which minimizes the scalar product hv, and leave it to the caller to decide whether Q is on the non-negative side of the halfspace {yRp:yhM}. This happens when vhM for the returned point v.

If the initial approximation S is v+E for some vertex v of Q (as indicated above) and the algorithm uses the strong oracle hpO(Q), then vertices of all approximations are among the vertices of Q+. Consequently, the final vertex list does not contain redundant elements. In case of using a weak plane separating oracle or a different initial approximation, the final vertex list might contain additional points. To get an exact solution, the redundant points must be filtered out.

4. Vertex and facet enumeration

This section discusses the combinatorial part of the skeleton Algorithms 3.1 and 3.2 in some detail. For a more thorough exposition of this topic please consult [Citation4,Citation11,Citation15]. At each step of these algorithms the approximation Si is updated by adding a new halfspace (outer algorithm) or a new vertex (inner algorithm). To maintain the double description, we need to update both the list of vertices and the list of halfspaces. In the first case, the new halfspace is added to the list (creating a possibly redundant list of halfspaces), but the vertex list might change significantly. In the second case, it is the other way around: the vertex list grows by one (allowing vertices which are inside the convex hull of the others), and the facet (halfspace) list changes substantially. As adding a halfspace and updating the exact vertex list is at the heart of incremental vertex enumeration [Citation12,Citation13], it will be discussed first.

Suppose Si is to be intersected by the (new) halfspace H. Vertices of Si can be partitioned as V+VV0: those which are on the positive side, on the negative side, and those which are on the boundary of H. As the algorithm proceeds, H always cuts Si properly, thus neither V+ nor V is empty; however, V0 can be empty. Vertices in V+ and in V0 remain vertices of Si+1; vertices in V will not be vertices of Si+1 any more, and should be discarded. The new vertices of Si+1 are the points where the boundary of H intersects the edges of Si in some internal point. Such an edge must have one endpoint in V+, and the other endpoint in V. To compute the new vertices, for each pair v1v2 with v1V+ and v2V we must decide whether v1v2 is and edge of Si or not. This can be done using the well-known and popular necessary and sufficient combinatorial test stated in Proposition 4.1(b). As executing this test is really time-consuming, the faster necessary condition (a) is checked first which filters out numerous non-edges. A proof for the correctness of the tests can be found, e.g. in [Citation15].

Proposition 4.1

  1. If v1v2 is an edge, then there must be at least p−1 different facets containing both v1 and v2.

  2. v1v2 is an edge if and only if for every other vertex v3 there is a facet H which contains v1 and v2 but not v3.

Observe that Proposition 4.1 remains valid if the set of facets are replaced by the boundary hyperplanes of any collection of halfspaces whose intersection is Si. That is, we can have ‘redundant’ elements in the facet list. We need not, and will not, check whether adding a new facet makes other facets ‘redundant’.

Both conditions can be checked using the vertex–facet adjacency matrix, which must also be updated in each iteration. In practice, the adjacency matrix is stored twice: using the bit vector Hv for each vertex v (indexed by the facets), and the bit vector VH for each facet H (indexed by the vertices). The vector Hv at position H contains 1 if and only if v is on the facet H; similarly for the vector VH. Condition (a) can be expressed as the intersection Hv1Hv2 has at least p−1 ones. Condition (b) is the same as the bit vector {VH:HHv1Hv2} contains only zeros except for positions v1 and v2. Bit operations are quite fast and are done on several (typically 32 or 64) bits simultaneously. Checking which vertex pairs in V+×V are edges, and when such a pair is an edge computing the coordinates of the new vertex, can be done in parallel. Almost the complete execution time of vertex enumeration is taken by this edge checking procedure. Using multiple threads, the total work can be evenly distributed among the threads with very little overhead, practically dividing the execution time by the number of the available threads. See Section 6.4 for further remarks.

Along updating the vertex and facet lists, the adjacency vectors must be updated as well. In each step, we have one more facet, thus vectors Hv grow by one bit. The size of facet adjacency vectors change more erratically. In the implementation, we have chosen a lazy update heuristics: there is an upper limit on this size. Until the list size does not exceed this limit, newly added vertices are assigned a new slot, and positions corresponding to deleted vertices are put on a ‘spare indices’ pool. When no more new slots are available, the whole list is compressed, and the upper limit is expanded if necessary.

In Algorithm 3.2, the sequence of intermediate polytopes Si grows by adding a new vertex rather than cutting it by a new facet. In this case, the facet list is to be updated. As this is the dual of the procedure above, only the main points are highlighted. Here, the vertex list can be redundant, meaning some of them can be inside the convex hull of others, but the facet list must (and will) contain no redundant elements.

Let v be the new vertex to be added to the polytope Si. Partition the facets of Si as H+HH0 such that v is on the positive side of facets in H+, on the negative side of facets in H, and is on hyperplane defined by the facets in H0. The new facets of Si+1 are facets in H+ and H0, plus facets determined by v and a ridge (a (p2)-dimensional face) which is an intersection of one facet from H+ and one facet from H. One can use the dual of Proposition 4.1 to check whether the intersection of two facets is a ridge or not. We state this condition explicitly as this dual version seems not to be known.

Proposition 4.2

  1. If the intersection of facets H1 and H2 is a ridge, then they share at least p−1 vertices in common.

  2. H1H2 is a ridge if and only if for every other facet H3 there is a vertex vH1H2 which is not in H3.

5. Realizing oracle calls

This section describes how the oracles in Algorithms 3.4 and 3.5 can be realized. In both cases, a weak separating oracle is defined first, and then we show how it can be tweaked to become a strong oracle. The solutions are not completely satisfactory. Either the hyperplane returned by the point separating oracle for Benson's algorithm 3.4 will be a facet with ‘high probability’ only, or the oracle requires a non-standard feature from the underlying scalar LP solver. Fortunately, weak oracles work as well, thus the failure of the oracle is not fatal: it might add further iterations but neither the correctness nor termination is affected. (Numerical stability is another issue.) In Section 5.2, we describe how a special class of scalar LP solvers – including the GLPK solver [Citation16] used in the implementation of Bensolve [Citation10] and Inner – can be patched to find the lexicographically minimal element in the solution space.

The polytopes on which the oracles work are defined by the m×n and p×n matrices A and P, respectively, and by the vector cRm as follows: A={xRn:Ax=c, x0},Q=PA={Px:xA},Q+=Q+Rp={y+z:yQ, zRp}. The next two sections describe how the weak and strong oracles required by Algorithms 3.4 and 3.5 can be realized.

5.1. Point separation oracle

The oracle's input is a point vRp, and the response should be a supporting halfspace (weak oracle) or a facet (strong oracle) of Q+ which separates v and Q+. As discussed in Section 3.3, several simplifying assumptions can be made, namely

  • Q is not empty and bounded from below in each objective direction;

  • v is not an ideal point;

  • if v is in Q+, then it is a boundary point.

Let us consider first the weak oracle. According to Definition 2.3, the ptO(Q+) must choose a fixed internal point oQ+. The vertices of the ideal facet of Q+ are the positive endpoints of the coordinate axes. If all coordinates of eRp are positive, then the ideal point corresponding to this vector is in the relative interior of the ideal facet. Fix this vector e, and let o be the ideal point corresponding to e. While o is not an internal point of Q+, this choice works as no ideal point is ever asked from the oracle according to the assumptions above. Thus let us fix o this way.

Given the query point v, the ‘segment’ vo is the ray {vλe:λ<0}. The vo line intersects the boundary of Q+ at the point vˆ=vλˆe, where λˆ is the solution of the scalar LP problem (P(v,e*)) λˆ=maxλ,xλ:Pxvλe, Ax=c, x0.(P(v,e*)) Indeed, this problem just searches for the largest λ for which vλeQ+. By the assumptions above (P(v,e)) always has an optimal solution.

Now the line vo intersects Q+ in the ray vˆo. Thus vQ+ if and only if λˆ0; in this case, the oracle returns ‘inside’. In the λˆ<0 case the oracle should find a supporting halfspace H to Q+ at the boundary point vˆ. Interestingly, the normal of these supporting hyperplanes can be read off from the solution space of the dual of (P(v,e)), where the dual variables are sRp and tRm: mins,tsTv+tTc:sTP+tTA0, sTe=1, s0. As the primal (P(v,e)) has an optimal solution, the strong duality theorem says that the dual (D(v,e)) has the same optimum λˆ.

Proposition 5.1

The problem (D(v,e)) takes its optimal value λˆ at sRp (together with some tRm) if and only if s is a normal of a supporting halfspace to Q+ at vˆ.

Proof.

By definition s is a normal of a supporting halfspace to Q+ at vˆ if and only if s(yvˆ)0 for all yQ+. From here, it follows that s0 (as otherwise sy is not bounded from below for some large enough yQ+), and as e has all positive coordinates, s can be normalized by assuming sTe=1.

Knowing that s0, if sysvˆ holds for some yRp, then it also holds for every yy. Thus, it is enough to require sysvˆ for all yQ only, that is, (3) sT(Px)sTvˆ for allxA.(3) The polytope A is non-empty. According to the strong duality theorem, all xA satisfies a linear inequality if and only if it is a linear combination of the defining (in)equalities of A. Thus (Equation3) holds if and only if there is a vector (t)Rm such that sTPtTA,andsTvˆ=tTc. Plugging in vˆ=vλˆe and using sTe=1 we get that s is a normal of a supporting halfspace of Q+ at vˆ if and only if sTP+tTA0,andsTv+tTc=λˆ, namely (s,t) is in the solution space of (D(v,e)).

Proposition 5.1 indicates immediately how to define a weak separating oracle.

Oracle 5.2

weak ptO(Q+)

Fix the vector eRp with all positive coordinates. On input vRp, solve (D(v,e)). Let the minimum be λˆ, and the place where the minimum is attained be (sˆ,tˆ). If λˆ0, then return ‘inside’. Otherwise let vˆ=vλˆe, and the supporting halfspace to Q+ at vˆ is {yRP:sˆysˆvˆ}.

The oracle works with any positive e. Choosing e to be all one vector is a possibility which has been made by Bensolve and other variants. Choosing other vectors, e can be advantageous. Randomly chosen direction works quite well in practice.

Oracle 5.3

probabilistic ptO(Q+)

Choose e randomly according to the uniform distribution from the p-dimensional cube [1,2]p. Then execute Oracle 5.2 using this random vector e.

As there is no guarantee that Oracle 5.3 always returns a facet, this is only a weak separating oracle.

Proposition 5.1 suggests another way to extract a facet among the supporting hyperplanes. The solution space of (D(v,e)) in the first p variables spans the (convex polyhedral) space of the normals of the supporting hyperplanes. Facet normals are the extremes among them. Pinpointing a single extreme among them is easy. As in the case of the convex hull algorithm in Section 3.2, choose its lexicographically minimal element: this will be the normal of a facet.

Oracle 5.4

strong ptO(Q+)

Fix the vector eRp with all positive coordinates, e.g. take the all one vector. On input vRp solve (D(v,e)). The LP solver must return the minimum, and the lexicographically minimal sRp from the solution space. Proceed as in Oracle 5.2.

The question how to find the lexicographically minimal element in the solution space is addressed in the next section.

5.2. A ‘multi-goal’ scalar LP solver

Scalar LP solvers typically stop when the optimum value is reached, and report the optimum, the value of the structural variables, and optionally the value of the dual variables. The lexicographically minimal vector from the solution space can be computed by solving additional (scalar) LP problems by adding more and more constraints which restrict the solution space. For Oracle 5.4, this sequence could be λˆ=mins,t{sTv+tTc:original constraints},sˆ1=mins,t{s1:sTv+tTc=λˆ+original constraints},sˆ2=mins,t{s2:s1=sˆ1, sTv+tTc=λˆ+original constraints},sˆ3=mins,t{s3:s2=sˆ2, s1=sˆ1, sTv+tTc=λˆ+original constraints},etc. The first LP solves (D(v,e)). The second one fixes this solution and searches for the minimal s1 within the solution space, etc. Fortunately, certain simplex LP solvers – including GLPK [Citation16] – can be patched to do this task more efficiently. Let us first define what do we mean by a ‘multi-goal’ LP solver, show how it can be used to realize the strong Oracle 5.4, and then indicate an efficient implementation.

Definition 5.5

A multi-goal LP solver accepts as input a set of linear constraints and several goal vectors, and returns a feasible solution after minimizing for all goals in sequence:

  • Constraints: a collection of linear constraints.

  • Goals: real vectors g1,g2,,gk.

Let A0={x:x satisfies the given constraints }; and for 1jk let Aj={xAj1:gjx is minimal among xAj1}.

  • Result: Return any vector x from the last set Ak, or report failure if any of Aj is empty (including the case when gjx is not bounded from below).

Oracle 5.4 can be realized by such a multi-goal LP solver. Fix eRp. We need the lexicographically minimal sRp from the solution space of (D(v,e)). Let eiRp+m be the coordinate vector with 1 in position i. Call the multi-goal LP solver as follows:

  • Constraints: sTP+tTA0, sTe=1, s0.

  • Goals: the p + m dimensional vectors (v,c),e1,e2,,ep.

Parse the p + m-dimensional output as (sˆ,tˆ), and compute λˆ=sˆTv+tˆTc, vˆ=vλˆe. Return ‘inside’ if λˆ0, and return the halfspace equation {yRP:sˆysˆvˆ} otherwise.

In the rest of the section, we indicate how GLPK [Citation16] can be patched to become an efficient multi-goal LP solver. After parsing the constraints, GLPK internally transforms them to the form Ax=c,axb. Here, xRn is the vector of all variables, A is some m×n matrix, mn, cRm is a constant vector, and a,bRm are the lower and upper bounds, respectively. The lower bound ai can be and the upper bound bi can be + meaning that the variable xi is not bounded in that direction. The two bounds can be equal, but aibi must always hold (otherwise the problem has no feasible solution). The function to be minimized is gx for some fixed goal vector gRn. (During this preparation only slack and auxiliary variables are added, thus g can be got from the original goal vector by padding it with zeroes.)

GLPK implements the simplex method by maintaining a set of m base variables, an invertible m×m matrix M so that the product MA contains (the permutation of) a unit matrix at column positions corresponding to the base variables. Furthermore, for each non-base variable xi there is a flag indicating whether it takes its lower bound ai or upper bound bi. Fixing the value of non-base variables according to these flags, the value of base variables can be computed from the equation MAx = Mc. If the values of the computed base variables fall between the corresponding lower and upper bounds, then the arrangement (base, M, flags) is primal feasible.Footnote1

The simplex method works by changing one feasible arrangement to another one while improving the goal gx. Suppose we are at a feasible arrangement where gx cannot decrease. Let φRm be a vector such that g=gφT(MA) contains zeros at indices corresponding to base variables. As MA contains a unit matrix at these positions, computing this φ is trivial. Now gx=gxφT(MA)x=gxφTMc, thus gx is minimal as well. By simple inspection gx cannot be decreased if and only if for each non-base variable xi one of the following three possibilities hold:

  • gi=0;

  • gi>0 and xi is on its upper limit;

  • gi<0 and xi is on its lower limit.

When this condition is met, the optimum is reached. At this point, instead of terminating the solver, let us change the bounds aibi to aibi as follows. For base variables xi and when gi=0 keep the old bounds: ai=ai, bi=bi. If gi>0, then set ai=bi=bi (shrink it to the upper limit) and if gi<0, then set ai=bi=ai (shrink it to the lower limit).

Proposition 5.6

The solution space of the scalar LP minx {gx:Ax=c, axb} is the collection of all xRn which satisfy {Ax=c, axb}.

Proof.

From the discussion above, it is clear that if gx is optimal, then x must satisfy axb, otherwise gx can decrease. On the other direction for all x satisfying these constraints g (and then g) takes the same value, one of which is optimal.

This indicates how GLPK can be patched. When the optimum is reached, change the bounds (a,b) to (a,b). After this change, all feasible solutions are optimal solutions for the first goal. Change the goal function to the next one and resume execution. The last arrangement remains feasible, thus there is no overhead, no additional work is required, just continue the usual simplex iteration. Experience shows that each additional goal adds only a few or no iterations at all. The performance loss over returning after the first minimization is really small.

5.3. Plane separation oracle

The plane separation oracles used in Algorithm 3.5 can be implemented as indicated at the end of Section 3.3. The oracle's input is a vector hRm and an intercept MR. The oracle should return a point vRm on the boundary of Q (weak oracle), or a vertex of Q (strong oracle) for which the scalar product hv is the smallest possible. Both the oracle (and the procedure calling the oracle) should be prepared for cases when Q is empty, or when {hv:vQ} is not bounded from below.

Oracle 5.7

weak hpO(Q)

On input hRp and intercept MR find any xˆRm where the scalar LP problem (P(h)) minx {hTPx, Ax=c, x0}(P(h)) takes its minimum. If the LP fails, return failure. Otherwise compute v=PxˆRp. Return ‘inside’ if M is specified and hvM, otherwise return v.  □

The scalar LP problem (P(h)) searches for a point of Q which is farthest away in the direction of h. As all oracle calls specify a normal h0, the LP can fail only when some of the assumptions on the MOLP in Section 1.4 does not hold. In such a case, the MOLP solver can report the problem and abort.

The very first oracle call can be used to find a boundary point of Q Algorithm 3.5 starts with. In this case, the oracle is called without the intercept. This first oracle call will complain when the polytope A is empty, but might not detect if Q is not bounded from below in some objective direction. The input to subsequent oracle calls is the facet equation of the approximating polytope, thus have both normal and intercept.

To guarantee that the oracle returns a vertex of Q, and not an arbitrary point on its boundary at a maximal distance, the multi-goal scalar LP solver from Section 5.2 can be invoked.

Oracle 5.8

strong hpO(Q)

On input hRp and intercept MRp call the multi-goal LP solver as follows:

  • Constraints: Ax = c, x0.

  • Goals: hTPx, P1x, P2x, , Ppx,

where Pi is the ith row of the objective matrix P. The solver returns xˆ. Compute vˆ=Pxˆ. Return ‘inside’ if M is specified and hvˆM, otherwise return vˆ.

The point vˆ is lexicographically minimal among the boundary points of Q which are farthest away from the specified hyperplane, thus – assuming the oracle did not fail – it is a vertex.

Observe that the plane separating oracles in this section work directly on the polytope A without modifying or adding any further constraints. Thus, the constraints and all but the first goal in the invocations of the multi-goal LP solver are the same.

6. Remarks

6.1. Using different ordering cone

In a more general setting the minimization in the MOLP MOLP find miny {y:yQ}MOLP is understood with respect to the partial ordering on Rp defined by the (convex, closed, pointed, and polyhedral) ordering cone C. In this case, the solution of the MOLP is the list of facets and vertices of the Minkowski sum QC+=Q+C. The MOLP is C-bounded just in case the ideal points of QC+ are the extremal rays of C. In this case, the inner algorithm works with the same plane separating oracles hpO(Q) and hpO(Q) as defined in Section 5.3 whenever the vertices of the initial approximation S are just these extremal ideal points and some point vQ. Indeed, in this case, we have QC+=conv(QS), and the algorithm terminates with a double description of this polytope.

When using the outer approximation algorithm, the point separating oracle is invoked with the polytope QC+. The vector e should be chosen to be an internal ray in C, and the scalar LP searching for the intersection of vλe and the boundary of QC+ is λˆ=maxλ,x,z{λ:vλe=Px+z, Ax=c, x0, zC}, see Section 5.1. The analogue of Proposition 5.1 can be used to realize the oracles ptO(QC+) and ptO(QC+). The base of the initial bounding S is formed by the ideal vertices at the end of the extremal rays of C, as above. The top vertex can be generated by computing a H-minimal point of Q for each facet H of C.

6.2. Relaxing the condition on boundedness

When the boundedness assumption in Section 1.4 does not hold, then the ideal points of Q+ (or the polytope QC+ above) are not known in advance. As the initial approximation of the Outer algorithm 3.4 must contain Q+, these ideal points should be computed first. For Algorithm 3.5, there are two possibilities. One can start from the same initial polytope S, but then the oracle can return ideal points. Or, as above, the initial approximation could contain all ideal points, and then all points returned by the oracle (which could just be hpO(Q) or hpO(Q)) are non-ideal points.

The ideal points of Q+ (or QC+) are the convex hull of the ideal points of Q and that of the positive orthant Rp (or the ordering cone C). To find all the ideal vertices, Algorithm 3.5 can be called recursively for this (p1)-dimensional subproblem.

6.3. The order of oracle inputs

The skeletal Algorithms 3.1 and 3.2 do not specify which non-final vertex (facet) should be passed to the oracle; as far as the algorithm is concerned, any choice is good. But the actual choice can have a significant effect on the overall performance: it can affect the size (number of vertices and facets) of the subsequent approximating polytopes, and, which is equally important, numerical stability. There are no theoretical results which would recommend any particular choice. Bremner in [Citation14] gave an example where any choice leads to a blow-up in the approximating polytope.

The implementation of Algorithm 3.2 reported in Section 6.5 offers three possibilities for choosing which vertex is to be added to the approximation polytope.

  1. Ask the oracle the facets in the order they were created (first facets from the initial approximation S=S0, then facets from S1, etc.), and then use the returned vertex to create the next approximation.

  2. Pick a non-final facet from the current approximation randomly with (roughly) equal probability, ask this facet from the oracle, and use the returned vertex to create the next approximation.

  3. Keep a fixed number of candidate vertices in a ‘pool’. (The pool size can be set between 10 and 100.) Fill the pool by asking the oracle non-final facets randomly. Give a score for each vertex in the pool and choose the vertex with the best score to create the next approximation.

In the last case, the following heuristics gave the best result consistently: choose the vertex from the pool which discards the largest number of facets (that is, the vertex for which the set H is the biggest). It would be interesting to see some theoretical support for this heuristics.

6.4. Parallelizing

While the simplex algorithm solving scalar LP problems is inherently serial, the most time-consuming part of vertex enumeration – the ridge test – can be done in parallel. There are LP intensive problems – especially when the number of variables and constraints are high and there are only a few objectives – where almost the total execution time is spent by the LP solver; and there are combinatorial intensive problems – typically when the number of objectives is 20 or more – where the LP solver takes negligible time. In the latter cases, the average number of ridge tests per iteration can be as high as 107109 and it takes hours to complete one iteration. Doing it in parallel can reduce the execution time as explained in Section 4.

In a multithread environment, each thread is assigned a set of facet pairs on which it executes the ridge test as defined in Proposition 4.2, and computes the coordinates of the new facet if the pair passes the test. Every thread uses the current facet and vertex bitmaps with total size up to 108109 byte, while every thread requires a relative small private memory around 105 byte. Run on a single processor the algorithm scales well with the number of assigned threads. On supercomputers with hundreds of threads (and processors) memory latency can be an issue [Citation17].

6.5. Numerical results

An implementation of Algorithm 3.5 is available at the GitHub site https://github.com/lcsirmaz/inner, together with more than 80 MOLP and their solutions. The problems come from combinatorial optimization, have highly degenerate constraint matrices and large number of objectives. Table  contains a sample of this set. Columns vars and eqs refer to the columns and rows of the constraint matrix A in (Equation1), and objs is the number of objectives. The next three columns contain the number of vertices and facets of Q+ as well as the running time on a single desktop machine with 8 Gbyte memory and Intel i5-4590 processor running on 3.3 GHz. There is inherent randomness in the running time as the constraint matrix is permuted randomly, and during the iterations the next processed facet is chosen randomly as explained in Section 6.3. The difference in running time can be very high as it depends on the size of the intermediate approximations.

Table 1. Some computational results.

Acknowledgments

The author would like to thank the generous support of the Institute of Information Theory and Automation of the CAS, Prague. The careful and thorough report of the reviewers helped to improve the presentation, clarify vague ideas, and correcting my sloppy terminology. I am very much indebted for their valuable work.

Disclosure statement

No potential conflict of interest was reported by the author(s).

Additional information

Funding

The research reported in this paper has been supported by the Grantová Agentura Ceské Republiky (GACR) project number 16-12010S, and partially by the Lendület program of the HAS.

Notes

1 Observe that the constraint matrix A never changes. GLPK stores only non-zero elements of A in doubly linked lists, which is quite space-efficient when A is sparse. All computations involving A are made ‘on the fly’ using this sparse storage.

References

  • Ehrgott M, Löhne A, Shao L. A dual variant of Benson's ‘outer approximation algorithm’ for multiple objective linear programming. J Glob Optim. 2012;52:757–778. doi: 10.1007/s10898-011-9709-y
  • Löhne A. Projection of polyhedral cones and linear vector optimization. 2014 Jun; ArXiv:1404.1708.
  • Ziegler GM. Lectures on polytopes. New York Heidelberg Dordrecht London: Springer; 1994. (Graduate texts in mathematics; 152).
  • Avis D, Fukuda K. A pivoting algorithm for convex hulls and vertex enumeration of arrangements and polyhedra. Discrete Comput Geom. 1992;8:295–313. doi: 10.1007/BF02293050
  • Hamel AH, Löhne A, Rudloff B. Benson type algorithms for linear vector optimization and applications. J Glob Optim. 2014;59(4):811–836. doi: 10.1007/s10898-013-0098-2
  • Löhne A, Rudloff B, Ulus F. Primal and dual approximation algorithms for convex vector optimization problems. J Glob Optim. 2014;60(4):713–736. doi: 10.1007/s10898-013-0136-0
  • Dörfler D, Löhne A. Geometric duality and parametric duality for multiple objective linear programs are equivalent. 2018 Mar; ArXiv:1803.05546.
  • Löhne A, Weißing B. Equivalence between polyhedral projection, multiple objective linear programming and vector linear programming. ArXiv:1507.00228.
  • Burton BA, Ozlen M. Projective geometry and the outer approximation algorithm for multiobjective linear programming. 2010 Jun; ArXiv:1006.3085.
  • Löhne A, Weißing B. The vector linear program solver Bensolve – notes on theoretical background. Eur J Oper Res. 2016;206:807–813. arXiv:1510.04823.
  • Avis D, Bremner D, Seidel R. How good are convex hull algorithms?. Comput Geom. 1997;7:265–301. doi: 10.1016/S0925-7721(96)00023-5
  • Genov B. Data structures for incremental extreme ray enumeration algorithms. Proceedings of the 25th Canadian Conference on Computational Geometry; CCCG 2013; Waterloo, Ontario, 2013 Aug.
  • Zolotykh NYu. New modification of the double description method for constructing the skeleton of a polyhedral cone. Comput Math Math Phys. 2012;52:146–156. doi: 10.1134/S0965542512010162
  • Bremner D. Incremental convex hull algorithms are not output sensitive. In: Asano T, Igarashi Y, Nagamochi H, Miyano S, Suri S, editors. Algorithms and Computation; ISAAC 1996. Berlin, Heidelberg: Springer. (Lecture notes in computer science; vol. 1178).
  • Fukuda K, Prodon A. Double description method revisited. In: Deza M, Euler R, Manoussakis I. editors. Combinatorics and Computer Science; CCS 1995. Berlin, Heidelberg: Springer. (Lecture notes in computer science; vol. 1120).
  • Makhorin A. GLPK (GNU linear programming kit), version 4.63. 2017. Available from: http://www.gnu.org/software/glpk/glpk.html.
  • Bücker HM, Löhne A, Weißing B, et al. On parallelizing Benson's algorithm. In: Gervasi O, et al., editors. Computation Science and its Applications; ICCSA 2018. Cham: Springer. (Lecture notes in computer science; vol. 10961).