Strict inequality constraints

Why can’t we use strict inequality constraints in IPOPT solver in amplpy @fdabrandao

Caution: Treating strict inequality constraint as a logical constraint.
context: subject to nod_SiSf: SInitial + i_SInitial > >>> Sfinal; <<<

The algorithms in Ipopt and similar local nonlinear solvers require the feasible region to include all of its boundary points. A constraint like SInitial + i_SInitial > Sfinal does not satisfy this requirement, because boundary points where SInitial + i_SInitial = Sfinal are not part of the feasible region.

This is a limitation imposed by the solver, not by AMPL or by amplpy. It is motivated by a fundamental mathematical limitation: if the feasible region is not closed (including all boundary points) and bounded, then it can happen that no minimum exists.

Sometimes you can get around this problem by writing the constraint as SInitial + i_SInitial >= Sfinal + eps, where eps is some small number that is greater than the solver’s feasibility tolerance – typically, 1e-4 or 1e-5. You will have to check whether the resulting solutions make sense for your application, however.

Got it. Thank you so much. Can I get any source to learn more about IPOPT solver?

Ipopt home on GitHub:

Ipopt documentation:
https://coin-or.github.io/Ipopt/