coin-or/Ipopt

Exiting of IPOPT

LoukasKyriakidis opened this issue · 2 comments

Summary

I am currently using Pyomo 6.4.2. with IPOPT 3.11.1 as a solver for a nonlinear constrained optimization problem in Python 3.8.12. in Windows 10. The optimization problem has a dimension of 408. When I run the optimization, I sometimes get the following error:

**Restoration phase converged to a point with small primal infeasibility

EXIT: Restoration Failed!

ValueError: Cannot load a SolverResults object with bad status: error**

This error does not appear every time I optimize this particular problem. I sometimes get this error and sometimes it works without any problem.

I read on internet that this indicates that the restoration phase failed to find a feasible point that was acceptable to the filter line search for the original problem. This could happen if the problem is highly degenerate, does not satisfy the constraint qualification, or if the NLP code provides incorrect derivative information. Consequently, IPOPT stops the optimization and exits instead of continuing with a new starting point.

In addition, I realised that I don't get this error if I optimize problems of lower dimension.

What I would like from IPOPT is to continue with a new starting point instead of exiting as it happens in GAMS.

Error Message

Restoration phase converged to a point with small primal infeasibility

EXIT: Restoration Failed!

ValueError: Cannot load a SolverResults object with bad status: error

Information on your system

Pyomo version: 6.4.2
Python version: 3.8.12
Operating system: Windows 10
How Pyomo was installed (PyPI, conda, source): conda
Solver (if applicable): ipopt

Neither GAMS nor Ipopt have something built-in to restart automatically with a different starting point. You would need to implement something in your Python code. This way, you may also be able to use some knowledge about your problem to compute a "good" starting point.

The Ipopt message essentially says that Ipopt failed to find a feasible point, though it may have gotten close.

You should also consider updating Ipopt. 3.11.1 is 10 years old. We even have Windows binaries for download at https://github.com/coin-or/Ipopt/releases.

Duplicate of #711.