Status report (ffsqp output variable "inform")
- 0: normal termination
- 1: no feasible point found for linear constraints
- 2: no feasible point found for nonlinear constraints
- 3: no solution has been found within miter iterations
- 4: stepsize is smaller than machine precision before a successful new iterate is found
- 5: failure of the QP solver in attempting to construct d0. A more robust QP solver may succeed.
- 6: failure of the QP solver in attempting to construct d1. A more robust QP solver may succeed.
- 7: inconsistent input data
- 8: new iterate essentially identical to previous iterate, though stopping criteria not satisfied
- 9: penalty parameter too large, unable to satisfy nonlinear equality constraint
From the ffsqp manual, pp.39-40 (slightly edited).
It is important to keep in mind some limitations of FFSQP. First, similar to most codes targeted at smooth problems, it is likely to encounter difficulties when confronted with non-smooth functions such as functions involving matrix eigenvalues. Second, because FFSQP generates feasible iterates, it may be slow if the feasible set is very "thin" or oddly shaped. Third, concerning equality constraints, if hj(x) >= 0 for all real x and if hj(x0) = 0 for some j at the initial point x0, the interior of the feasible set defined by hj(x) <= 0 for such j is empty. This may cause difficulties for FFSQP because, in FFSQP, hj(x) = 0 is directly turned into hj(x) <= 0 for such j. The user is advised to either give an initial point that is infeasible for all nonlinear equality constraints or change the sign of hj so that hj(x) < 0 can be achieved at some point for all such nonlinear equality constraints.
A common failure mode for FFSQP, corresponding to inform = 5 or 6, is that of the QP solver in constructing d0 or d1. This is often due to linear dependence (or almost dependence) of gradients of equality constraints or active inequality constraints. Sometimes this problem can be circumvented by making use of a more robust (but likely slower) QP solver. We have designed an interface, available upon request, that allows the user to use QPSOL [16] instead of QLD. The user may also want to check the jacobian matrix and identify which constraints are the culprit. Eliminating redundant constraints or formulating the constraints differently (without changing the feasible set) may then be the way to go. Finally, when FFSQP fails in the line search (inform = 4), it is typically due to inaccurate computation of the search direction. Two possible reasons are: (i) Insufficient accuracy of the QP solver; again, it may be appropriate to substitute a different QP solver. (ii) Insufficient accuracy of gradient computation, e.g., when gradients are computed by finite differences. A remedy may be to provide analytical gradients or, more astutely, to resort to automatic differentiation".