# Analyzing the output of IPOPT

I am solving a feasibility (No objective) problem in IPOPT. I got the following output:

I see that the violation of the constraints are of order 1e-15. What is the meaning of dual infeasibility 1e-07 and the overall NLP error 2e-09? I mean what do they represent if I only have constraints?

It took some digging but I found the answers in an old email thread. The paper linked there is archived here.

$$E_{\mu}(x,\lambda,z) = \max \Big\{ \frac{\| \nabla f(x) + \nabla c(x)\lambda + z \|_\infty}{s_d}, \|c(x)\|_\infty,\frac{\| \text{Diag}(x)\text{Diag(z)}e-\mu e\|_\infty}{s_c} \Big\}$$ Is the the overall NLP error. Dual infeasibility is calculated by $$\| \nabla f(x) + \nabla c(x)\lambda + z \|_\infty$$

The scalings $$s_d$$, $$s_c$$ are explained in the paper on page four. A $$s_d$$ value of around $$50$$ would explain your observation, such a value is allowed to occur. For the meaning of these in the constraint satisfaction case just think $$\nabla f(x) = 0$$.

I haven't confirmed numerically if this always holds, so let me know if you have issues. Then someone would have to dive into the code of IpOpt to find the true answer.

For a feasibility problem, you can think of the primal objective function as $$f(x) =0$$. These results indicate that your problem was solved—that is, IPOPT found a feasible point.