Ipopt
Ipopt copied to clipboard
FGMRES refinement for Primal Dual System
This PR implements the flexible generalized minimal residual method for refinement of the solution of the primal-dual system. The main changes/additions in this PR are:
- The FGMRES solver, a preconditioned Krylov method. FGMRES should be more robust than the current iterative refinement. The flexible version is also more robust than the regular restarted version of GMRES, see for instance https://doi.org/10.1137/060661545.
- An option to enable/disable this FGMRES refinement. In the PR FGMRES is enabled by default. If FGMRES is disabled, iterative refinement is used as before.
- The
ComputeResidualRatiomethod is modified to now compute the Infinity norm-wise relative backward error, which is used in the stopping criterion for FGMRES and iterative refinement. - New routine
PDFullSpaceSolver::NrmInfto compute the Inf-norm of the primal-dual system, which is used to compute the relative backward error. - Added routines
ComputeRowA1andComputeColA1inIpMatrixto compute the 1-norm of the rows/columns in the matrix. This is implemented in the derived classes. - Modified
PDFullSpaceSolver::ComputeResidualsto use thealphaandbetaparameters so it can be used to compute a matrix vector product (or the residual).
Our tests show improvements in convergence when using FGMRES compared to iterative refinement, for select problems, with minimal runtime overhead.
@bknueven @k1nshuk
I'm sorry, I didn't even run a make check. I will look into these failures as soon as possible.
I'm looking into the failed test with single precision