Volume 23, Issue 4 e202300241
RESEARCH ARTICLE
Open Access

SLEQP: An open-source package for nonlinear programming

Christoph Hansknecht

Corresponding Author

Christoph Hansknecht

Clausthal Continuous Optimization Group, TU Clausthal, Clausthal-Zellerfeld, Germany

Correspondence

Christoph Hansknecht, Clausthal Continuous Optimization Group, TU Clausthal, Clausthal-Zellerfeld, Germany.

Email: [email protected]

Search for more papers by this author
Christian Kirches

Christian Kirches

Institute for Mathematical Optimization, TU Braunschweig, Braunschweig, Germany

Search for more papers by this author
First published: 12 October 2023

Abstract

We present SLEQP, an open source C-package consisting of an active-set method capable of solving large-scale nonlinear programming (NLP) problems based on successive linear programming and equality constrained quadratic programming techniques. The method includes a feasibility restoration phase and second-order corrections (SOCs), achieving robust practical performance. It has also been adapted for the special cases of unconstrained optimization, box-constrained problems, and nonlinear least squares problems and contains interfaces to both Python and MATLAB. To demonstrate the performance of the package, we perform a computational study based on the well-known CUTest suite of NLP problems.

1 INTRODUCTION

The field of nonlinear programming (NLP [1]) is a highly active area of research, leading from the study of general nonlinear to least-squares, quadratic, and linear optimization problems. Popular algorithmic choices include interior point methods [2] and sequential quadratic programming (SQP, [3, 4]) approaches, using line searches, trust regions [5], or filters [6] as globalization strategies. Unfortunately, these algorithmic approaches have not generally led to high-performance and freely accessible NLP packages. The codes developed during research are often either discarded after numerical results have been obtained by authors, or they are commercialized after being mature enough to solve large-scale instances robustly (such as Knitro or WORHP [7]). The notable exception is of course the well-known Ipopt [8] package, which has become the de facto standard open-source code to solve NLPs. We acknowledge the benefits stemming from reliable open-source packages. To add to the available choices in this regard, we would like to introduce our own package, SLEQP, as another open-source large-scale NLP solver besides Ipopt. The implementation is according to the algorithmic framework laid out by Byrd et al. in refs. [9, 10]. We consider an NLP given in the following form
urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0001(NLP)
where the objective urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0002 and the constraints urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0003 are twice differentiable functions and urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0004. Our goal is to find a point urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0005 satisfying first-order optimality conditions with suitable multipliers urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0006, that is,
urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0007(1)
where urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0008 denotes the Lagrangian of (NLP). We begin in Section 2 by describing the algorithm and proceed to provide details of the implementation in Section 3. We conduct numerical experiments in Section 4 and conclude in Section 5.

2 ALGORITHM

To solve (NLP), we employ the algorithmic framework introduced in ref. [9]. The approach is iterative, generating a sequence urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0009 based on an initial point urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0010. It uses the (exact) penalty function urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0011, where urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0012 is a penalty parameter and urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0013. An iteration consist of multiple phases, used to compute a step leading to the next iterate as well as an estimate of the required multipliers for the Lagrangian.

LP phase

An initial step based at the current point urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0014 is computed by minimizing the piecewise linear approximation
urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0015(2)
of Φ over the trust region urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0016. This optimization problem can be reformulated into a linear program (LP) to be solved by state-of-the-art LP solvers:
urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0017(LP)
where urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0018 and urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0019 are the matrices composed of the gradients of the equality and inequality constraints respectively. Note that this program is always feasible and bounded, and therefore guaranteed to have an optimal solution. What is more, the solution of (LP) is connected to first-order optimality conditions (see ref. [11]): Iterate urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0020 is first-order optimal iff the criticality urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0021 is zero for some urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0022. Indeed, it can be shown [12] that the series of iterates urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0023 satisfies urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0024, implying the existence of a first-order optimal accumulation point urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0025.

Working set identification

If (2) is solved using a simplex-type algorithm, the solution not only provides a direction of descent urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0026 but also a row basis urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0027, that is, a subset of urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0028 of the constraints of (LP) such that urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0029 is the unique solution of the system of rows in urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0030 against the corresponding right hand side. Due to the structure of the constraints of (LP) the basis urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0031 must contain at least one of the two rows involving each of the variables in urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0032 and two involving each pair of variables in urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0033 and urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0034 respectively. A working set urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0035 is constructed from the basis, which includes
  • 1. urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0036 iff both of the rows urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0037 and urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0038 are contained in urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0039, and
  • 2. urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0040 iff all three of the rows urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0041, urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0042, and urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0043 are contained in urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0044.

Simple linear algebra shows that the rows of the constraint Jacobian, urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0045, defined in terms of the rows associated with urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0046, has full (row) rank of urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0047. As we will see later, this identification of the working set makes the subsequent identification of the multipliers substantially easier.

Cauchy direction

The Cauchy direction is obtained by optimizing a quadratic model of Φ, given by urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0048 along the interval urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0049. Here, the Hessian urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0050 of the Lagrangian can be either exact or a quasi Newton approximation, while the multipliers urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0051 will be introduced later. This one-dimensional optimization problem can be solved exactly, given that urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0052 is known to be piecewise quadratic, or based on an inexact Armijo-type line search, yielding the Cauchy direction urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0053. Recall that a trust-region method based on Cauchy steps alone is already convergent [5, Chapter 6].

Dual estimation

The estimation of multipliers based on urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0054 can be formulated as a quadratic problem:
urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0055(3)
The incorporation of the equality constraint is easily achieved by restricting the variables λ to urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0056, whereas the inequality constraint makes the estimation significantly more complicated. We can simplify the problem by disregarding the constraints, leading to a linear least squares problem, which can be optimized by solving the system
urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0057(4)
and then clipping negative multipliers, which we call urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0058 of inequality constraints to zero. Note that due to urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0059 having full rank, the linear system in (4) is regular.

EQP phase

In order to enable locally quadratic convergence, an equality-constrained quadratic programming (EQP) phase can be added to the algorithm, yielding an EQP step urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0060 used to augment the Cauchy step. Its goal is two-fold: For one, we aim at finding a stationary point of the Lagrangian, for another, we want to decrease the violation of the nonlinear constraints. The classical trust-region subproblem [5, Chapter 7] is concerned with the optimization of quadratic problems subject to a trust-region constraint of the form urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0061. The subproblem, having been studied extensively, has a rich structure which can be exploited to yield highly efficient and readily available algorithms such as refs. [13, 14], based on Krylov methods.

An obvious choice regarding the objective is the function urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0062 introduced above. It is however necessary to deal with the non-smoothness of urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0063. In particular, urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0064 has kinks whenever any urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0065 passes zero. To alleviate this problem, we fix the variables in urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0066 to their respective bounds by requiring that urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0067. We can decompose urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0068 into urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0069, where d0 is the orthogonal projection of the zero vector onto the set feasible set and urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0070.

To achieve our goals in terms of the objective, we choose multipliers urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0071 based on the dual estimation with additional penalties added for the constraints violated at d0. Specifically, we let
urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0072
and set urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0073. To compute the initial solution, the projection onto the feasible set can be computed by optimizing another least squares problem, which reduces to solving (4) against a different right hand side. To ensure that urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0074 remains in the kernel of urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0075, if is sufficient to project the steps in the respective Krylov spaces back onto the kernel, which once more involves the solution of (4).

Finally, special care must be taken when the initial projection d0 is not feasible with respect to the trust region constraint. In this case the trust-region subproblem as formulated above is infeasible itself. A simple workaround is to relax the linear feasibility requirements.

Step acceptance

The step urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0076 to be ultimately used is computed based on the Cauchy and EQP steps urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0077 and urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0078 using a line search as before. The step is tested against the original model, yielding the reduction ratio urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0079. The step is accepted iff urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0080 and rejected otherwise. In the former case, we set urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0081, in the latter we keep urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0082. Optionally, a second-order correction (SOC) is computed based on the system (4) to avoid the Maratos effect [15]. Next, the trust-region radii urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0083 and urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0084 are updated (see ref. [9] for details). In terms of the LP trust radius, any update needs to satisfy certain conditions to ensure convergence [5, Chapter 6], while the EQP trust radius can be chosen more liberally. Similarly, the penalty parameter ν can be periodically updated in order to improve convergence speed.

3 IMPLEMENTATION

The SLEQP package has been implemented in the C programming language. To solve the subproblems introduced above, several dependent packages are used. Specifically, linear programs are solved using an LP solver (such as HiGHS [16], Gurobi [17], or SoPlex [18]), and the systems (4) are factorized using codes such as UMFPACK [19], MUMPS [20], or others. To solve the EQP, we use either the TRLIB [14] code or an implementation of Steihaug's truncated conjugate gradient algorithm [21]. Since both approaches are iterative, we only require the map urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0085, that is, products with the Hessian of the Lagrangian rather than the entire matrix.

In the following, we examine certain aspects of the implementation, including both those being challenges to be overcome and algorithmic improvements result in benefits with respect to running time and robustness.

Working set identification

While the convergence of the sequence urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0086 is guaranteed, the working sets urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0087 and the resulting multipliers urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0088 are not guaranteed to result in correct residuals that is, urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0089 in general. The problem is particularly pronounced in problems without constraint qualification. Consider for example, the problem
urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0090
with optimal solution urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0091, which does not satisfy qualifications such as the Linear Independence (LICQ) / Mangasarian-Fromovitz (MFCQ) constraint qualifications. The resulting (LP) at the optimal solution with a suitable trust region of say urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0092 and a sufficiently large penalty parameter ν has two optimal bases, containing one of the two respective linear constraints, yielding two different working sets. The multipliers obtained from (3) are 0.8 and 0 respectively. While the former choice ensures a vanishing Lagrangian gradient, the latter does not. Since termination criteria are often based on this gradient, the solver never terminates, even though it has reached an optimum. What is more, the incorrect multipliers may also impede the effectiveness of the EQP phase, leading to poor convergence. If an LP has multiple optimal bases, it is generally considered an implementation detail which of these bases is returned by an LP solver. Therefore, the behavior of our algorithm attempting to solve (LP) can change significantly, even between different versions of an underlying LP solver.

The problem of identifying an active set has been examined and can be solved exactly using an integer program [22]. Of course, such an approach is intractable in general. A simpler enhancement of the original approach, implemented in SLEQP, consists of fixing the variables urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0093 to their solutions in (LP), and to resolve the LP for the remaining variables d in order to obtain a row basis in urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0094 which can be directly turned into a working set. Of course, such a resolve is often unnecessary. An indicator for a problem such as introduced above to occur is that LP rows which are active, that is, having nonzero multipliers in the LP, are excluded during the standard working set identification.

Local infeasibility

As mentioned above, the algorithm underlying SLEQP is guaranteed to converge to a local optimum of the penalty function Φ. However, such a point is not guaranteed to be feasible for (NLP). Consider the following example, introduced in [23]:
urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0095
While the problem is supposed to illustrate the failure of certain interior point algorithms, our implementation encounters convergence problems in this situation as well: the algorithm terminates at the (infeasible) point urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0096, at which point the solution step urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0097 of (LP) becomes the zero vector, indicating a local optimum of Φ. Following this, no further progress is made. Recall that this is not a theoretical contradiction: First-order optimal points of (NLP) are local minima of the penalty function Φ, but not all local optima of Φ need to be feasible.

One attempt to escape such points is to include a so-called restoration phase, used in filter–SQP algorithms [6], in which the original objective is discarded in favor of a term designed to solely reduce a measure of infeasibility, such as urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0098. Switching between restoration and optimization phases ensures convergence to a local optimum for the particular instance introduced above.

Preprocessing

Preprocessing techniques have been widely studied in the context of linear or quadratic programming problems [24], where the richer problem structure enables significant speed ups. For general nonlinear programs of type (NLP), there is less structure to be exploited during preprocessing. The general constraints c do however often include bound constraints of the type urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0099 for urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0100 as well as linear constraints of the form urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0101 for urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0102, urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0103. If the presence of these types of constraints are made available to the solver, some forms of preprocessing, such as discarding redundant linear constraints or removing fixed variables, are possible. The test suite used in the numerical experiments in Section 4 contains several instances where a significant portion of variables is fixed, such as the A0ENDNDL instance, where 35 000 of the about 60 000 variables are fixed. Removing the fixed variables during preprocessing about halves the required solution time. Similar effects are likely to occur on computer-generated instances.

Least-squares problems

An important special case of NLPs occurs when the objective f is given in terms of a least-squares function, that is, if urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0104. Clearly, its gradient is given by urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0105 and its Hessian may be approximated using the Gauss-Newton term urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0106, which becomes increasingly accurate when approaching a critical point with a small objective, that is, a small residual. We make algorithmic use of this particular structure by using the Gauss-Newton approximation in the EQP phase instead of the Lagrangian of the Hessian. Due to the iterative nature of our trust region solvers, we only require callbacks to compute the residuals urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0107 as well as forward and adjoint sweeps with respect to the Jacobian urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0108. As an alternative to the standard EQP objective, we offer the computation of a step d obtained by solving the following linear least-squares problem
urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0109
To solve this subproblem to high accuracy even for badly conditioned problems, we use an implementation of the LSQR [25] algorithm as a numerically more reliable variant to standard conjugate gradient approaches. Specifically, we compute an initial step in the same way as in the standard EQP phase and proceed to solve the linear least-squares problem on the kernel of urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0110 using LSQR iterations.

4 NUMERICAL EXPERIMENTS

We evaluate our implementation based on the CUTEst [26] suite of 1 156 optimization problems. All experiments were ran on an AMD EPYC 7742 workstation clocked at up to 3.4 GHz. We compare our implementation against Ipopt 3.11, an open-source interior point method, and Knitro 13.20, a commercial solver, using interior point or quadratic programming algorithms depending on problem structure. In our implementation, we use Gurobi 9.0.0 as LP solver and UMFPACK 5.7.8 to factorize the systems (4).

We evaluate the solvers by attempting to solve each instance with a prescribed time limit of 3600 s, measuring the time to compute the optimal solution, if it was found, and discarding the instances otherwise. We set all parameters of Ipopt and Knitro to their default values. For our code, we use the optimality criterion
urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0111
where * denotes the component-wise product in order to satisfy the first-order conditions (1) up to a given tolerance, which we set to urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0112. The results, depicted in Figure 1, show the cumulative sum of instances solved over time. As can be seen, SLEQP performs reasonably well, even though it still seems to lack some stability compared to the more established packages, solving a total of 869 instances, compared to the 1 003 solved by Ipopt and the 967 solved by Knitro. The results are broken down in Table 1, where we see that, compared to Knitro, our implementation so far mainly struggles with larger instances: where the percentage of instances solved is virtually identical for the very small instances, that percentage differs by about 40 percentage points for the large instances. On the other hand, some improvements may be within reach when considering the small instances, with a difference of more than 10 percentage points. While a successful solution of the large instances may require advances in computing factorizations and solving linear programs, the lower performance of our implementation on the small instances suggest that improvements with respect to numerical robustness are possible.
Details are in the caption following the image
Performance of different LP solvers over the CUTEst suite of nonlinear problems.
TABLE 1. Breakdown of results of instances based on problem size urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0113.
Size #Instances % Solved
SLEQP Knitro
VS (urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0114) 453 93.59823399558499 93.81898454746137
S (urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0115) 134 67.16417910447761 79.1044776119403
M (urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0116) 354 69.49152542372882 74.85875706214689
L (urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0117) 215 50.697674418604656 79.53488372093022

Notably however, some improvements are more difficult to achieve for an NLP solver. For example, we observe on several CUTEst instances that it is not possible to evaluate the objective f or the constraints c, or their respective derivatives at certain iterates urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0118. Specifically, the CUTEst library returns values of urn:x-wiley:16177061:media:pamm202300241:pamm202300241-math-0119 or produces floating point errors during evaluations. Since we do not know the actual domain where objective and constraints can be successfully evaluated, our code terminates once any such errors occur.

5 CONCLUSION AND FUTURE WORK

We have presented an open-source implementation of an existing, well-known active-set based NLP algorithm. We have addressed some of the practical problems appearing in real-world problems of the CUTEst suite as well as possible solutions to increase the robustness of our code even in the absence of usual regularity assumptions. The numerical results of the implementation are promising, even though they are not quite on par with Ipopt and Knitro.

Regarding future work, we expect that significant improvements particularly with respect to robustness can be made by examining the small instances of the CUTEst suite and making suitable algorithmic adjustments. In regards to improving the performance, we plan to follow similar approaches as laid out in ref. [9]. In particular, a closer integration with existing LP solvers could significantly increase performance. In early iterations for example, solving the LP to optimality is likely unnecessary. What is more, it may be beneficial to maintain a factorization of the linear system over several iterations when iterates approach a stationary point and derivatives and active sets stabilize. Lastly, we are confident that the dual estimation presented above can be improved by computing iterative improvements to the unconstrained estimation problem rather than simply clipping the resulting multipliers to be consistent with the working set.

ACKNOWLEDGMENTS

Open access funding enabled and organized by Projekt DEAL.

    The full text of this article hosted at iucr.org is unavailable due to technical difficulties.