Constraint qualification in actual algorithm: are they ever checked?

152 Views Asked by At

I have a hard time to understand the interest of constraint qualification in actual algorithm for optimization. I know that there are many questions already about constraint qualification but they seem to all address the mathematical aspect. I am interested in their actual use in algorithms. Let me detail my question.

Assume that I want to solve an optimization problem $$ \min f(x) \ s.t. \ g(x) \leq 0 \ and \ h(x) = 0 $$ with $g$ and $h$ being vectors. From the mathematical point of view, I know that the Fritz-John necessary condition holds [Nonlinear Programming, Bertsekas]: let $x^*$ is a local optimum. There exists $(\mu_0,\mu,\lambda)$ such that

1) $\mu_0\nabla f(x^*) + \sum_i \mu_i\nabla g_i(x^*) + \sum_j \lambda_j \nabla h_j(x^*) = 0$;

2) $\mu_ 0 \geq 0$ and $\mu_i \geq 0$;

3) $\mu_i g_i(x^*) = 0$;

4) $(\mu_0,\mu,\lambda) \neq 0$.

Another well-known necessary conditions are the KKT ones which are the same as above but imposing that $\mu_0 = 1$. For the KKT to hold, there needs to have some constraint qualification that ensures that the Fritz-John conditions have a solution with $\mu_0 = 1$ at $x^*$. The necessary KKT conditions is thus: let $x^*$ be a local optimum and assume that a constraint qualification (LICQ, MFCQ, CRCQ, CPLD...) holds. There exists $(\mu,\lambda)$ such that

1) $\nabla f(x^*) + \sum_i \mu_i\nabla g_i(x^*) + \sum_j \lambda_j \nabla h_j(x^*) = 0$;

2) $\mu_i \geq 0$;

3) $\mu_i g_i(x^*) = 0$.

From my understanding, some algorithms solve the KKT conditions to search for a local optimum. My question is: is any constraint qualification ever verified in this kind of algorithms?

This is extremely unclear for me. We are searching for a point that verify the KKT conditions (and primal feasibility), so it is not possible to check any constraint qualification (I exclude linear problems) since constraint qualification depends on the point. At the same time, if the algorithm finds a pair of primal and dual variables, is there any need to verify that a constraint qualification holds?