-
Notifications
You must be signed in to change notification settings - Fork 561
Description
Summary
The NoFeasibleSolutionError should be renamed and changed to return information about why no solution could be returned.
Rationale
Multiple times in the process of updating IDAES and its subsidiary projects to use the new solver interface, I have encountered the NoFeasibleSolutionError. Every time it has left me scratching my head about what has gone wrong. Its name makes it sound like the solver either terminated due to reaching the maximum number of iterations or converged to a point of infeasibility. However, that has never been the case. It's always something to do with the .nl writer. Either the .nl writer has proved the problem to be infeasible (with or without the linear presolve) or, for example, a solver was called to solve a block without any constraints.
In all of these cases, the .nl writer has discovered useful information about the problem, but this information is not conveyed to the user. It leaves them frustrated and looking for documentation about what that Exception means. (I have not found documentation that explains it.) This can be remedied by passing along information about why the .nl writer failed to the user.