Condições necessárias de Karush-Kuhn-Tucker

Otimização não-linear com restrições

No caso geral de otimização não-linear com restrições consideramos o problema $$\large\def\vect{\boldsymbol}\DeclareMathOperator{\sa}{s.a:} \begin{split} \min & \quad f( \vect x )\\ \sa & \quad \vect h( \vect x ) = \vect 0\\ & \quad \vect g( \vect x ) \le \vect 0 \end{split}\tag{P} $$

Onde $f : \mathbb R^n \to \mathbb R$, $\vect h : \mathbb R^n \to \mathbb R^p$ e $\vect g : \mathbb R^n \to \mathbb R^q$.

Exemplo

Suponhamos que desejamos encontrar o ponto na intersecção de dois círculos mais proximo de um ponto $P = ( p_1, p_2 )$ qualqer no plano. Os círculos possuem centros $C = ( c_1, c_2 )$ e $D = ( d_1, d_2 )$ e raios $r$ e $s$ respectivamente.

Esse problema pode ser modelado como $$\large \begin{split} \min & \quad \sqrt{( p_1 - x_1 )^2 + ( p_2 - x_2 )^2}\\ \sa & \quad ( c_1 - x_1 )^2 + ( c_2 - x_2 )^2 - r^2 \leq 0\\ & \quad ( d_1 - x_1 )^2 + ( d_2 - x_2 )^2 - s^2 \leq 0 \end{split} $$ que é equivalente a $$\large \begin{split} \min & \quad ( p_1 - x_1 )^2 + ( p_2 - x_2 )^2\\ \sa & \quad ( c_1 - x_1 )^2 + ( c_2 - x_2 )^2 - r^2 \leq 0\\ & \quad ( d_1 - x_1 )^2 + ( d_2 - x_2 )^2 - s^2 \leq 0. \end{split}\tag{P1} $$

Exercício: prove essa equivalência.

Vamos definir a função lagrangeana: $$\large \begin{split} L( \vect x, \vect \lambda, \vect \mu ) & {} := f( \vect x ) + \vect \lambda^T \vect h( \vect x ) + \vect \mu^T \vect g( \vect x )\\ &{} = f( \vect x ) + \sum_{i = 1}^p \lambda_i h_i( \vect x ) + \sum_{i = 1}^q \mu_i g_i( \vect x ). \end{split} $$ Isso significa que $$\large \nabla_{\vect x}L( \vect x, \vect \lambda, \vect \mu ) = \nabla f( \vect x ) + \sum_{i = 1}^p \lambda_i \nabla h_i( \vect x ) + \sum_{i = 1}^q \mu_i \nabla g_i( \vect x ). $$

Por exemplo, para o problema (P1), temos $$\large \begin{split} L( \vect x, \vect \lambda, \vect \mu ) = {} & ( p_1 - x_1 )^2 + ( p_2 - x_2 )^2\\ & {} + \mu_1\bigl( ( c_1 - x_1 )^2 + ( c_2 - x_2 )^2 - r^2\bigr)\\ & {} + \mu_2\bigl(( d_1 - x_1 )^2 + ( d_2 - x_2 )^2 - s^2\bigr) \end{split} $$

A função lagrangeana cumpre um papel importante ao descrevermos as condições de KKT pois se $\vect x^* \in \mathbb R^n$ é uma solução do problema de otimização (P) tal que $$\large \{ \nabla h_1( \vect x^* ), \nabla h_2( \vect x^* ), \dots, \nabla h_p( \vect x^* ) \} \cup \{ \nabla g_i( \vect x^* ) \mid i \in \mathcal A( \vect x^* ) \} $$ for LI, onde $\mathcal A( \vect x ) = \{ i \mid g_i( \vect x ) = 0 \}$, então existem $\vect \lambda^* \in \mathbb R^p$ e $\vect \mu^* \in \mathbb R^q$ tais que $$\large \nabla_{\vect x}L( \vect x^*, \vect \lambda^*, \vect \mu^* ) = \vect 0. $$ Escrevendo de outra forma: $$\large \nabla f( \vect x^* ) + \sum_{i = 1}^p \lambda_i^* \nabla h_i( \vect x^* ) + \sum_{i = 1}^q \mu_i^* \nabla g_i( \vect x^* ) = \vect 0, $$ onde $\mu_i^* \ge 0$ e $\mu_i^* = 0$ se $i \notin \mathcal A( \vect x^* )$. A condição $i \notin \mathcal A( \vect x^* )$ é conhecida como condição de complementaridade e pode também ser expressada como: $$\large \mu_i^* g_i( \vect x^* ) = 0. $$

As condições de KKT são, para o problema (P), as seguintes: $$\large \begin{split} \nabla f( \vect x^* ) + \sum_{i = 1}^p \lambda_i^* \nabla h_i( \vect x^* ) + \sum_{i = 1}^q \mu_i^* \nabla g_i( \vect x^* ) = \vect 0\\ \mu_i^* \ge 0\\ \mu_i^* g_i( \vect x^* ) = 0\\ \vect h( \vect x^* ) = \vect 0\\ \vect g( \vect x^* ) \le \vect 0 \end{split} $$

$$\large \begin{split} f( p, q ) & {}= -px - qy\\ \nabla f( p, q ) & {}= \begin{pmatrix} -x \\ -y \end{pmatrix} \end{split} $$

$$\large \begin{split} h_1( p, q ) & {}= p^2 + q^2 - 1\\ \nabla h_1( p, q ) & {}= \begin{pmatrix} 2p \\ 2q \end{pmatrix} \end{split} $$

$$\large \begin{pmatrix} -x \\ -y \end{pmatrix} + \lambda^* \begin{pmatrix} 2p^* \\ 2q^* \end{pmatrix} = \begin{pmatrix} 0 \\ 0 \end{pmatrix} $$

Ou seja $$\large \begin{pmatrix} p^* \\ q^* \end{pmatrix} = \frac{1}{2\lambda^*}\begin{pmatrix} x \\ y \end{pmatrix}. $$ Denotando $\gamma = 1 / ( 2\lambda^* )$, a restrição do problema fica: $$\large (p^*)^2 + (q^*)^2 = 1 \Leftrightarrow \gamma^2x^2 + \gamma^2y^2 = 1 \Leftrightarrow \gamma = \frac1{\sqrt{x^2 + y^2}}. $$ Isto é: $$\large \begin{pmatrix} p^* \\ q^* \end{pmatrix} = \frac1{\sqrt{x^2 + y^2}}\begin{pmatrix} x \\ y \end{pmatrix}. $$