Expand description
Testing a local-infeasibility verdict for a nearby point with less violation.
§Why this exists
Infeasible_Problem_Detected claims the solve stopped at a local minimizer
of the constraint violation. Every gate that issues it checks that claim to
first order only: the gradient of the violation vanishes, or a step along
its negative does not help (IpoptCq::infeasibility_descent_available).
A first-order test cannot tell a minimizer from a saddle or a maximizer,
and nonconvex models have saddles of the violation that the iterates are
attracted to.
Vanderbei discs is the measured case. It places 12 discs subject to
tangency equalities (x_i - x_j)^2 + (y_i - y_j)^2 = (r_i + r_j)^2. A
solve that perturbs the trajectory (a different FERAL ordering, mc64
scaling, or a different symbolic analysis) can end with discs 8 and 9 at
the same centre. There the row cons1[9,8] reads 0 = 4. Its gradient
with respect to the centres is exactly zero, and the radii sit on their
lower bound of 1, so every first-order test passes and the solve reports
infeasibility. Upstream Ipopt 3.14.19 with MUMPS reports the same verdict
at default options. But separating the two discs by delta lowers that
row’s violation to 4 - |delta|^2: the point is a maximizer of the
violation along every separating direction.
§What is tested
The max-norm violation theta(x) = max_i dist(g_i(x), [g_l_i, g_u_i]), at
seeded random points near the verdict’s point and clipped into the
variable box. If one of them has less violation, beyond a margin that
evaluation noise cannot reach, the verdict’s point is not a local
minimizer of theta.
The norm is deliberate. At the discs point the ℓ₁ violation is locally
minimal: moving one disc breaks its satisfied tangency rows at first order,
and the sum of those exceeds the second-order gain on the coincident pair.
Under the max norm those first-order breaks stay below the violated row’s
4.0 for small steps, so the gain shows. A random probe can therefore
refute a degenerate row’s minimality without knowing which row it is.
§Direction
The probe changes no verdict by itself. It only decides whether the
second-opinion ladder spends one more solve, started from the point the
probe found, and that solve is promoted only if it converges, which no
infeasible model can do. A genuinely infeasible model whose verdict point
is a strict local minimizer of theta produces no escape point and pays
nothing; one whose verdict point is a saddle pays one re-solve and keeps
its verdict. Any failure to evaluate declines to produce a point.
Structs§
- Saddle
Escape - A point near a local-infeasibility verdict’s point with less max-norm violation, showing the verdict’s point is not a local minimizer of it.
Constants§
- SADDLE_
ESCAPE_ RUNG_ LABEL - The second-opinion rung that re-solves from
SaddleEscape::x.
Functions§
- infeasibility_
saddle_ escape - Probe near
x_verdictfor a point with less max-norm constraint violation.