I face a feasibility problem of type

$$ c_i(\boldsymbol x) \leq 0, i = 1, \dots, \mathcal{I} \\ c_e(\boldsymbol x) = 0, e = 1, \dots, \mathcal{E} $$

where $\mathcal{I} + \mathcal{E} \gg \text{dim}(\boldsymbol x) \sim \mathcal{O} (10^1) $.

Currently, I solve this with Ipopt but since it takes quite some time (many iterations reqiuired) I thought about looking for some special feasible point solvers.

The "largest" (3) collection of feasible point solvers I could find online are mentioned in section 5.3 of this paper. Unfortunately, there seems to be no implementation of the therein developed algorithm (EFNES) online. The FILTRANE framework of the Galahad package might be quite effective but has a nasty Fortran API which looks even for the example problem quite difficult.

EDIT: The link in the original TRESNEI paper is dead, but I found this working one.

Any suggestions besides the usual suspects from nonlinear optimization, ideally free to use within academia?

  • $\begingroup$ Can you tell us how many variables and constraints you have? How is IPOPT slow (is one iteration slow, or does it need many iterations)? $\endgroup$ Commented Jun 29, 2022 at 15:24
  • 1
    $\begingroup$ The latter is the case. $\endgroup$
    – Dan Doe
    Commented Jun 30, 2022 at 7:39
  • $\begingroup$ Could you expand your question a bit by stating what a feasibility problem is? Do you have one short sample solution that illustrates what is going on? $\endgroup$
    – MPIchael
    Commented Jul 4, 2022 at 6:57
  • $\begingroup$ I came across this: web.stanford.edu/class/ee392o/alt_proj.pdf and it may be useful for you. $\endgroup$
    – NNN
    Commented Aug 14, 2022 at 13:18
  • $\begingroup$ If you can model your problem in AMPL, give filterSQP a try (online): neos-server.org/neos/solvers/nco:filter/AMPL.html $\endgroup$ Commented Aug 14, 2022 at 16:55

1 Answer 1


Stefan Vigerske was kind enough to answer my question on the Ipopt github.

With minimal changes one can basically reduce Ipopt to a feasibility problem solver.

  • 2
    $\begingroup$ Could you explain those changes so the answer is helpful to a wider audience? $\endgroup$
    – nicoguaro
    Commented Aug 14, 2022 at 15:42
  • $\begingroup$ Basically one does not ask for the objective function (gradient) any longer, but keeps it at initial values. One has then to ensure that the objective gradient is identically zero, while the objective can be kept open. $\endgroup$
    – Dan Doe
    Commented Aug 15, 2022 at 6:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.