Dualidade (otimização)


Na teoria da otimização matemática, a dualidade, ou princípio da dualidade, é o princípio de que os problemas de otimização podem ser vistos a partir de duas perspectivas: o problema primordial (primal) ou o problema dual. A solução para o problema dual fornece um limite inferior para a solução do problema primal (minimização). No entanto, em geral, os valores ótimos dos problemas primários e duais não precisam ser iguais. Sua diferença é chamada de diferença de dualidade. Para problemas de otimização convexa, a diferença de dualidade é zero sob uma condição de qualificação de restrição.

Problema dual editar

Geralmente, o termo "problema dual" refere-se ao problema dual de Lagrange, mas outros problemas duais são usados ​​- por exemplo, o problema dual de Wolfe e o problema dual de Fenchel. O problema dual de Lagrange é obtido pela formação do Lagrangeano de um problema de minimização usando multiplicadores de Lagrange não-negativos para adicionar as restrições à função objetivo e, em seguida, resolvendo os valores primários das variáveis ​​que minimizam a função objetivo original. Essa solução fornece as variáveis ​​primárias como funções dos multiplicadores de Lagrange, que são chamadas de variáveis ​​duais, de modo que o novo problema é maximizar a função objetivo com relação às variáveis ​​duais sob as restrições derivadas nas variáveis ​​duais (incluindo pelo menos a não-negatividade restrições).

Em geral, dados dois pares duplos de espaços locais convexos separados  e  e a função  , podemos definir o problema primordial como encontrar  de tal modo que  . Em outras palavras, se   existe,   é o mínimo da função   e o ínfimo (maior limite inferior) da função é atingido.

Se houver condições de restrição, elas podem ser incorporadas na função   deixando   onde   é uma função adequada em  que tem um mínimo de 0 sobre as restrições, e para o qual se pode provar que  . Esta última condição é trivial, mas nem sempre convenientemente satisfeita para a função característica (ou seja,  para   satisfazendo as restrições e  de outra forma). Então estenda   para uma função de perturbação  , de tal modo que  .

A diferença de dualidade é a diferença dos lados direito e esquerdo da desigualdade

 ,

onde   é o conjugado convexo nas duas variáveis e   denota o supremo (menor limite superior).

Diferença de dualidade editar

Artigo principal: diferença de dualidade

O gap (ou diferença) de dualidade é a diferença entre os valores de quaisquer soluções primárias e quaisquer soluções duplas. Se   é o valor dual ideal e   é o valor primal ótimo, então o gap de dualidade é igual a  . Este valor é sempre maior que ou igual a 0. O gap de dualidade é zero se e somente se a dualidade forte for válida. Caso contrário, a lacuna é estritamente positiva e a dualidade é fraca.

Na otimização computacional, outro "gap de dualidade" é frequentemente relatado, que é a diferença de valor entre qualquer solução dual e o valor de uma iteração factível, mas sub-ótima, para o problema primordial. Essa alternativa "gap de dualidade" quantifica a discrepância entre o valor de uma iteração factível, mas sub ótima, para o problema primordial e o valor do problema dual; o valor do problema duplo é, sob condições de regularidade, igual ao valor do relaxamento convexo do problema primário: o relaxamento convexo é o problema que surge substituindo um conjunto viável não convexo por seu casco convexo fechado e com a substituição de uma função não-convexa com o seu fechamento convexo, que é a função que tem a epígrafe que é o casco convexo fechado da função objetivo primitiva original.

Caso linear editar

Artigo principal: dual linear program

Problemas de programação linear são problemas de otimização nos quais a função objetivo e as restrições são todas lineares. No problema primal, a função objetivo é uma combinação linear de n variáveis. Existem m restrições, cada uma das quais coloca um limite superior em uma combinação linear das n variáveis. O objetivo é maximizar o valor da função objetiva sujeita às restrições. Uma solução é um vetor (uma lista) de n valores que alcança o valor máximo para a função objetivo.

No problema dual, a função objetivo é uma combinação linear dos valores m que são os limites nas restrições m do problema primal. Existem n restrições duplas, cada uma das quais coloca um limite inferior em uma combinação linear de m variáveis duplas.

Relações primais-duais editar

No caso linear, no problema primal, de cada ponto sub-ótimo que satisfaz todas as restrições, existe uma direção ou subespaço de direções para mover que aumenta a função objetivo. Movendo-se em tal direção é dito para remover a folga entre a solução candidata e uma ou mais restrições. Um valor inviável da solução candidata é aquele que excede uma ou mais das restrições.

No problema dual, o vetor dual multiplica as restrições que determinam as posições das restrições no primal. Variar o vetor dual no problema dual é equivalente a revisar os limites superiores no problema primal. O limite superior mais baixo é procurado. Ou seja, o vetor dual é minimizado para remover a folga entre as posições candidatas das restrições e o ótimo real. Um valor inviável do vetor dual é aquele que é muito baixo. Define as posições candidatas de uma ou mais das restrições em uma posição que exclui o ótimo real.

Esta intuição é formalizada pelas equações em Programação Linear: Dualidade.

Caso não linear editar

Na programação não linear, as restrições não são necessariamente lineares. No entanto, muitos dos mesmos princípios se aplicam.

Para garantir que o máximo global de um problema não linear possa ser identificado facilmente, a formulação do problema frequentemente requer que as funções sejam convexas e tenham conjuntos de nível mais baixo compactos.

Este é o significado das condições de Karush-Kuhn-Tucker. Eles fornecem condições necessárias para identificar ótimos locais de problemas de programação não linear. Existem condições adicionais (qualificações de restrição) que são necessárias para que seja possível definir a direção para uma solução ótima. Uma solução ótima é aquela que é um ótimo local, mas possivelmente não é um ótimo global.

O princípio Lagrangeano forte: dualidade de Lagrange editar

Dado um problema de programação não linear na forma padrão

   

     ≤0,  ∈ { }

 ∈ { }

com o domínio   tendo interior não vazio, a função Lagrangiana  

 

Os vetores   e   são chamados de variáveis dual ou vetores multiplicadores de Lagrange associados ao problema. A função dual de Lagrange   é definida como

 

A função dual g é côncava, mesmo quando o problema inicial não é convexo, porque é um ponto mínimo de funções afins. A função dupla produz limites inferiores no valor ideal  do problema inicial; para qualquer   e qualquer   temos  .

Se uma qualificação de restrição, como a condição de Slater, e o problema original é convexo, então temos uma forte dualidade, ou seja,
 .

Problemas convexos editar

Para um problema de minimização convexa com restrições de desigualdade,

   

     

o problema Lagrangiano dual é

   

     

onde a função objetivo é a função Lagrange dual. Desde que as funções   e   são continuamente diferenciáveis, o ínfimo ocorre onde o gradiente é igual a zero. O problema

   

     

 

é chamado o problema dual de Wolfe. Este problema pode ser difícil de lidar computacionalmente, porque a função objetivo não é côncava nas variáveis ​​conjuntas  . Além disso, a restrição de igualdade  é não-linear em geral, então o problema dual de Wolfe é tipicamente um problema de otimização não-convexo. Em todo caso, a dualidade fraca se mantém.

História editar

De acordo com George Dantzig, o teorema da dualidade para otimização linear foi conjecturado por John von Neumann, imediatamente após Dantzig apresentar o problema de programação linear. Von Neumann notou que ele estava usando informações de sua teoria dos jogos e conjeturou que o jogo de duas pessoas com soma zero era equivalente a programação linear. Provas rigorosas foram publicadas pela primeira vez em 1948 por Albert W. Tucker e seu grupo. (Prefácio de Dantzig para Nering e Tucker, 1993)

Ver também editar