Considere um problema típico da programação linear como:

onde são dados
,
,
,
,
,
,
e
. Por simplicidade, pode-se ainda adotar a seguinte notação:

Nesta seção será mostrado como a "bonita teoria dos métodos duais" se aplica a esse tipo de problema.
Primeiramente, calcula-se a lagrangiana:
![{\displaystyle {\begin{aligned}l(x,y,u,v,w)&=[a^{\top }x+b^{\top }y]+u^{\top }[c-Mx-Ny]+v^{\top }[d-Px-Qy]+w^{\top }[-x]\\&=[a-M^{\top }u-P^{\top }v-w]^{\top }x+[b-N^{\top }u-Q^{\top }v]^{\top }y+[c^{\top }u+d^{\top }v]\\\end{aligned}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/e9795bc33819ea6ded2faee23c6342d088aaa91d)
Note que:
- As variáveis primais são
e
;
- As variáveis duais são
,
e
;
Agora é preciso identificar as funções
e
correspondentes a este problema. Conforme anteriormente, tem-se:
, dada por

e
, dada por
![{\displaystyle {\begin{aligned}\beta (u,v)&=\inf _{\begin{smallmatrix}x\in \mathbb {R} ^{n}\\y\in \mathbb {R} ^{m}\end{smallmatrix}}l(x,y,u,v,w)\\&=\inf _{\begin{smallmatrix}x\in \mathbb {R} ^{n}\\y\in \mathbb {R} ^{m}\end{smallmatrix}}[a-M^{\top }u-P^{\top }v-w]^{\top }x+[b-N^{\top }u-Q^{\top }v]^{\top }y+[c^{\top }u+d^{\top }v]\\&=[c^{\top }u+d^{\top }v]+\inf _{x\in \mathbb {R} ^{n}}[a-M^{\top }u-P^{\top }v-w]^{\top }x+\inf _{y\in \mathbb {R} ^{m}}[b-N^{\top }u-Q^{\top }v]^{\top }y\\&=\left\{{\begin{array}{rcl}c^{\top }u+d^{\top }v&,&{\text{ se }}\left\{{\begin{array}{rcl}a-M^{\top }u-P^{\top }v-w&=&0\\b-N^{\top }u-Q^{\top }v&=&0\\u\geq 0;\,w\geq 0&&\end{array}}\right.\\-\infty &,&{\text{ em outros casos}}\end{array}}\right.\end{aligned}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/f4d20bf7eed8c149991ae2bdb6a1a670f7e73c65)
Logo, considerando que
, o problema dual consiste no seguinte:

- Exercício
Verificar que
é uma solução de

se, e somente se,

é uma solução de

- Exercício
Verificar que:
![{\displaystyle \inf _{x\in C}f(x)=-\sup _{x\in C}[-f(x)]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/78c491f5e9259284908c4c5105782e8571b9e64d)
Resolução
|
A resolução deste exercício é deixada a cargo do leitor. Sinta-se livre para melhorar a qualidade deste texto, incluindo-a neste módulo.
|
O seguinte problema é chamado de problema standard (padrão) de programação linear:

onde são dados
,
e
.
Primeiramente,

A função
não precisa ser calculada, pois já se mostrou que

Por outro lado, quanto à função
tem-se:

![{\displaystyle {\begin{aligned}\beta (u,v)&=\inf _{x\in \mathbb {R} ^{n}}l(x,u,v)\\&=\inf _{x\in \mathbb {R} ^{n}}[c^{\top }x-u^{\top }x+v^{\top }(b-Ax)]\\&=b^{\top }v+\inf _{x\in \mathbb {R} ^{n}}[c-u-A^{\top }v]^{\top }x\\&=\left\{{\begin{array}{rcl}b^{\top }v&,&{\text{ se }}c-u-A^{\top }v=0\\-\infty &,&{\text{ em outros casos}}\end{array}}\right.\end{aligned}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/6aa29a9fa7044b4e870a0f8b6a1eee1bf94a2ac2)
Logo, o problema dual é:

ou ainda

Considere o seguinte problema:

que, conforme já foi mostrado em um exercício anteriormente, equivale a

A lagrangiana é dado por:

Logo,
![{\displaystyle {\begin{aligned}\beta (y)&=\inf _{v\in \mathbb {R} ^{m}}l(v,y)\\&=\inf _{v\in \mathbb {R} ^{m}}[-b^{\top }v+y^{\top }(A^{\top }v-c)]\\&=-c^{\top }y+\inf _{v\in \mathbb {R} ^{m}}[(Ay-b)^{\top }v]\\&=\left\{{\begin{array}{rcl}-c^{\top }y&,&{\text{ se }}Ay-b=0\\-\infty &,&{\text{ em outros casos}}\end{array}}\right.\end{aligned}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/64b3e0e47b720debae6e525aff4d36c42bc3c9b7)
Logo, o dual de
é:

ou seja,

que equivale a

Considere a seguinte situação:
- Um empresário que produz cerveja dispões de 240 kg de milho, 5 kg de lúpulo e 596 kg de Malta. Para produzir um barril de cerveja preta requer 2,5 kg de milho, 0,125 kg de lúpulo e 17,5 kg de malta. Enquanto que para produzir um barril de cerveja branca, se precisa de 7,5 kg de milho, 0,125 kg de lúpulo e 10 kg de malta. Por barril de cerveja branca vendido, o empresário recebe 130 reais, enquanto por um barril de cerveja preta, recebe 230 reais. Achar o modelo matemático para otimizar o ganho do empresário.
Resolução
|
Primeiramente, é preciso identificar quais são as variáveis do problema, e quais são os dados. Pode-se adotar a seguinte notação para as quantidades dos dois tipos de cerveja:
: Indica a quantidade (em litros) de cerveja preta;
: Indica a quantidade (em litros) de cerveja branca;
O ganho do empresário, que é o que se pretende maximizar, pode ser obtido pela fórmula:

Por hora, considere que são aceitáveis os valores de e serem reais (não apenas inteiros positivos, mas também "números quebrados" como , , etc).
Como o estoque de cada ingrediente é limitado, tem-se restrições que devem ser consideradas. Matematicamente tais restrições podem ser expressas assim:

Pode-se simplificar a escrita das restrições e também da função objetivo utilizando a seguinte notação:

Nesses termos, o problema de otimização a ser resolvido é:

ou apenas,

onde é o conjunto definido pelo conjunto de restrições:

Tal problema tem solução pois a função objetivo é linear (contínua) e o conjunto de restrições forma um conjunto compacto.
Para este problema, a lagrangiana é dado por

Donde
![{\displaystyle {\begin{aligned}\beta (u_{1},u_{2})&=\inf _{x\in \mathbb {R} ^{2}}l(x,u_{1},u_{2})\\&=\inf _{x\in \mathbb {R} ^{2}}[-c^{\top }x+u_{1}^{\top }(Ax-b)+u_{2}^{\top }(-x)]\\&=-b^{\top }u_{1}+\inf _{x\in \mathbb {R} ^{2}}[(A^{\top }u_{1}-c-u_{2})^{\top }x]\\&=\left\{{\begin{array}{rcl}-b^{\top }u_{1}&,&{\text{ se }}A^{\top }u_{1}-c-u_{2}=0\\-\infty &,&{\text{ em outros casos}}\end{array}}\right.\end{aligned}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/27250eb024fcfe8c2e68b50168724881e65ab3ec)
Então, o problema dual é dado por

que é equivalente a

ou, escrevendo novamente em termos dos valores numéricos,

|
Na década de 30, 40 e 50 havia diversos livros que tratavam cada problema de programação linear individualmente, deduzindo vez após vez os seus duais, e disso extraindo certas "regras" que eram então sugeridas ao leitor na forma "se o problema for desse tipo, use tal regra, se for daquele tipo, use esta outra, e se for deste outro tipo, use esta regra". Um dos primeiros autores que começou a trabalhar os problemas sob um novo ponto de vista, mais generalizado, foi Werner Oettio (grafia?) . Seguindo-se por George Dantzig (conhecido como inventor do método simplex), Eugen Blumb (grafia?) e Jean-Pierre Crouzeix.
|
Este módulo tem a seguinte tarefa pendente: Identificar e corrigir a grafia correta dos nomes dos pesquisadores mostrados acima; Encontrar fontes para comprovar a informação deste parágrafo.
|
Agora, o problema a considerar passa a ser

onde
é um poliedro (interseção finita de semi-espaços),
,
e
é uma matriz simétrica positiva definida.
Note que este problema tem solução, uma vez que o problema irrestrito correspondente tem solução (já que
é uma matriz simétrica positiva definida, a função é limitada inferiormente, e como
é fechado, a função objetivo assume seu valor mínimo em
, por Wolfe).
Mesmo para
, os problemas de programação linear já são difíceis de resolver "à mão". É preciso utilizar alguma técnica mais sofisticada.
Para dar continuidade ao exemplo, considere que o poliedro
é dado por

com
e
.
Agora será aplicado o esquema de dualidade. A lagrangiana é


além disso,


e a última igualdade vale pois a função é fortemente convexa.
![{\displaystyle {\begin{aligned}\beta (u,v)&=\inf _{x\in \mathbb {R} ^{n}}l(x,u,v)\\&=\min _{x\in \mathbb {R} ^{n}}l(x,u,v)\\&=\min _{x\in \mathbb {R} ^{n}}[{\frac {1}{2}}x^{\top }Qx+q^{\top }x+\alpha +u^{\top }(b-Ax)+v^{\top }(-x)]\\&=\min _{x\in \mathbb {R} ^{n}}[{\frac {1}{2}}x^{\top }Qx+(q-v-A^{\top }u)^{\top }x+u^{\top }b+\alpha ]\\\end{aligned}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/4fc3b26f3818cb072ed0ff02a6f2d0d197e78dfe)
Considerando
, se deduz que
.
Logo,
![{\displaystyle {\begin{aligned}\beta (u,v)&={\frac {1}{2}}\left[Q^{-1}(A^{\top }u+v-q)\right]^{\top }Q\left[Q^{-1}(A^{\top }u+v-q)\right]+(q-v-A^{\top }u)^{\top }\left[Q^{-1}(A^{\top }u+v-q)\right]+u^{\top }b+\alpha \\&={\frac {1}{2}}(A^{\top }u+v-q)^{\top }Q^{-1}(A^{\top }u+v-q)-(A^{\top }u+v-q)^{\top }Q^{-1}(A^{\top }u+v-q)+u^{\top }b+\alpha \\&={\frac {-1}{2}}(A^{\top }u+v-q)^{\top }Q^{-1}(A^{\top }u+v-q)+u^{\top }b+\alpha \end{aligned}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/9e1e44a9bfbc6d4aa51eee2654faf5e605253179)
Observe que, sendo os autovalores de
positivos, o mesmo vale obrigatoriamente para
. Assim, como a expressão de
envolve
, tal função é fortemente côncava (conforme já era esperado para tal função).
Baseado nestas deduções, o problema dual é

ou seja,

Usualmente este tipo de problema
é resolvido por meio do método do gradiente projetado.
O método baseia-se na seguinte proposição:
Prova
|
Esta prova é deixada a cargo do leitor. Sinta-se livre para melhorar a qualidade deste texto, incluindo-a neste módulo.
|
Este algoritmo é bastante simples.
Primeiro passo:
Escolha
e fixe
.
Passo iterativo
: Enquanto
Agora, é interessante observar como se faz para projetar um ponto em
.
- Exercício
Dado
, mostre que

Resolução
|
A resolução deste exercício é deixada a cargo do leitor. Sinta-se livre para melhorar a qualidade deste texto, incluindo-a neste módulo.
|
Seja
. Então a projeção de
sobre
é :

Devido a essa simplicidade ao se fazer a projeção de um ponto, o método do gradiente projetado é muito eficiente para resolver o problema
.
Seja
.
|
Este módulo tem a seguinte tarefa pendente: Incluir uma ilustração deste conjunto.
|
Como calcular a projeção do ponto
sobre o conjunto
,
?
Resolução
|
Seja a projeção de sobre . Então:

Então:

Nota: O leitor deve observar que a inclusão de é válida, e foi feita apenas para simplificar as contas.
Logo o modelo matemático para resolver este problema é
![{\displaystyle (P)\left\{{\begin{matrix}\min {\frac {1}{2}}\left[(x-1)^{2}+(y-2)^{2}\right]\\x\geq 0;y\geq 0\\x+y=1\end{matrix}}\right.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/d144caecdd943e7fd612ef700be25e1fd18f5e22)
A lagrangiana é dada por
![{\displaystyle l(x,y,u,v,w)={\frac {1}{2}}\left[(x-1)^{2}+(y-2)^{2}\right]-ux-vy+w(1-x-y)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/b8746439bd51c747f4e607d636f436f749dec212)
Logo,
![{\displaystyle {\begin{aligned}\beta (u,v,w)&=\inf _{\begin{smallmatrix}x\in \mathbb {R} \\y\in \mathbb {R} \end{smallmatrix}}l(x,y,u,v,w)\\&=\inf _{\begin{smallmatrix}x\in \mathbb {R} \\y\in \mathbb {R} \end{smallmatrix}}\left[{\frac {1}{2}}\left[(x-1)^{2}+(y-2)^{2}\right]-ux-vy+w(1-x-y)\right]\\&=\inf _{\begin{smallmatrix}x\in \mathbb {R} \\y\in \mathbb {R} \end{smallmatrix}}\left[{\frac {1}{2}}\left[(x-1)^{2}+(y-2)^{2}\right]-(u+w)x-(v+w)y+w\right]\end{aligned}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/052f7b8f409d7d4c2db6e665766d6a820856ca6f)
Fazendo tem-se:

Donde

Logo,
![{\displaystyle {\begin{aligned}\beta (u,v,w)&={\frac {1}{2}}\left[\left((u+w+1)-1\right)^{2}+\left((v+w+2)-2\right)^{2}\right]-(u+w)(u+w+1)-(v+w)(v+w+2)+w\\&={\frac {1}{2}}\left[(u+w)^{2}+(v+w)^{2}\right]-(u+w)(u+w+1)-(v+w)(v+w+2)+w\\&={\frac {-1}{2}}\left[(u+w)^{2}+(v+w)^{2}\right]-(u+w)-2(v+w)+w\\&={\frac {-1}{2}}\left[(u+w)^{2}+(v+w)^{2}\right]-u-2v-2w\end{aligned}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/0d17baabd72efebb074f80c05af6d0f1a2fcadfa)
Logo, o problema dual é

ou seja,
![{\displaystyle (D)\left\{{\begin{matrix}\min {\frac {1}{2}}\left[(u+w)^{2}+(v+w)^{2}\right]+u+2(v+w)\\u\geq 0;\,v\geq 0;\,w\in \mathbb {R} ^{m}\\\end{matrix}}\right.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/88059a5bb181cb90f094214106d5e5f200a70649)
Agora, para a resolução deste problema dual, pode-se usar o método do gradiente projetado.
Para isso, note que o gradiente de é:

- Passo 0
Seja e escolha .
- Passo 1
- Passo 2
Logo, a solução dual é

Agora, substituindo tal solução na lagrangiana, obtem-se o problema:
![{\displaystyle (P_{{\bar {u}},{\bar {v}},{\bar {w}}})\left\{{\begin{matrix}\min {\frac {1}{2}}\left[(x-1)^{2}+(y-2)^{2}+x+y-1\right]\\x\in \mathbb {R} ;\,y\in \mathbb {R} \end{matrix}}\right.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/89baa1521eeb9fcd71c7dcbb03f7decbfcd0778e)
que é um problema quadrático sem restrições. Neste caso, basta igualar o gradiente a zero para determinar uma solução:
Donde e . De acordo com a teoria desenvolvida, a solução do problema é também solução do problema original, pois o produto é igual a zero (ver condições da proposição).
|
- Exercício
Encontrar a solução do seguinte problema de programação linear:

sendo



Resolução
|
Primeiramente observe que , então não é possível obter uma interpretação geométrica do problema. Será usado o esquema de dualidade lagrangiana:
- Identificar a lagrangiana



- Identificar a função


![{\displaystyle {\begin{aligned}\beta (u,v)&=\inf _{x\in \mathbb {R} ^{5}}l(x,u,v)\\&=\inf _{x\in \mathbb {R} ^{5}}[c^{\top }x-u^{\top }x+v^{\top }(b-Ax)]\\&=\inf _{x\in \mathbb {R} ^{5}}b^{\top }v+(c-u-A^{\top }v)^{\top }x\\&=\left\{{\begin{array}{rcl}b^{\top }v&,&{\text{ se }}c-u-A^{\top }v=0\\-\infty &,&{\text{ em outros casos}}\end{array}}\right.\end{aligned}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/201890738663e2481680d82aa8ba93c8324fe597)
- Identificar o problema dual


que equivale a

ou simplesmente

Agora, se tem um problema em , e portanto, pode-se ter uma interpretação geométrica para o mesmo:
|
Este módulo tem a seguinte tarefa pendente: Incluir ilustração do conjunto dos pontos que verificam as restrições do problema dual, bem como algumas curvas de nível da função objetivo (as mais relevantes).
|
As inequações que definem o conjunto viável são:

Tal conjunto é um pentágono (irregular, mas convexo), logo o valor máximo de é assumido quando for um dos cinco vértices. Através de simples verificação, comprova-se que o ponto de máximo é . Conforme a teoria, este ponto é uma solução do problema dual .
Como é um problema diferenciável e convexo (as condições de KKT são necessárias e suficientes), o dual terá solução e as duas juntas compõe um ponto de sela de .
Considere as condições de KKT:


, ou seja, 
, ou seja, 
, ou seja, 
Note que, a partir de 2 e 3, conclui-se que 4 só é possível quando .
Para se obter , basta lembrar que em se tem:
(comprovando 1)
Logo,
comprovando a propriedade (2).
Como valem as propriedades (3) e (5), tem-se:

Donde . Resta usar a informação da propriedade (4) para obter e . O sistema pode ser escrito como:

Logo, e .
Se , e satisfazem todas as propriedades, então é solução do problema , pois todas as condições de KKT são necessárias e suficientes.
|
Ao resolver o problema
, poderia ter sido escolhido
em vez de
. Será que isso influenciaria o resultado final?
Acompanhe como ficaria a resolução desta maneira:
Resolução
|
;Identificar a lagrangiana


- Identificar a função


![{\displaystyle {\begin{aligned}\beta (u,v)&=\inf _{x\in \mathbb {R} ^{5}}l(x,u,v)\\&=\inf _{x\in \mathbb {R} ^{5}}[c^{\top }x-u^{\top }x+v^{\top }(Ax-b)]\\&=\inf _{x\in \mathbb {R} ^{5}}-b^{\top }v+(c-u+A^{\top }v)^{\top }x\\&=\left\{{\begin{array}{rcl}-b^{\top }v&,&{\text{ se }}c-u+A^{\top }v=0\\-\infty &,&{\text{ em outros casos}}\end{array}}\right.\end{aligned}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/5e7d864b5f6d196acb889804e0cad857659dcb8e)
- Identificar o problema dual


que equivale a

ou simplesmente

Novamente, chega-se até um problema em , que pode ser interpretado de forma geométrica.
|
Este módulo tem a seguinte tarefa pendente: Incluir ilustração do conjunto dos pontos que verificam as restrições deste problema dual, bem como algumas curvas de nível da função objetivo (as mais relevantes).
|
As inequações que definem o conjunto viável são:

Este conjunto também é um pentágono, de modo que o valor mínimo de é assumido quando for um dos cinco vértices. Através de simples verificação, comprova-se que o ponto de mínimo, ou seja uma solução do problema dual , é .
Nas condições de KKT, a única mudança é na propriedade (1), que se torna:

Resta ainda saber quem é e quem é :

como antes.
Como ao obter e chegou-se ao mesmo resultado de antes, o ponto continuará sendo o mesmo.
|
- Exercício
Formule como um problema de minimização com restrições o problema de projetar ortogonalmente o ponto
sobre o conjunto
. Depois, calcule explicitamente a função lagrangiana e o problema dual.
Resolução
|
Matematicamente resolver esse problema é resolver
Definimos a lagrangeana como
Como a função é quadrática , podemos calcular o gradiente e igualar a zero:
Donde, e
Substituindo na função temos:
O problema dual fica então:
Que é equivalente a:
|
Resolução
|
Olhando o problema
observamos que é um problema com restrições.
Podemos usar as equações de KKT para resolve-lo.
Definimos a lagrangeana como
Agora usando o teorema de KKT devemos ter:







Calculando o gradiente temos
E portanto e .
Olhando nas equações acima obtemos , , e .
Portanto é a solução dual.
Voltando na lagrangiana do problema original e substituindo os multiplicadores de Lagrange obtemos um problema sem restrições:
Calculando o gradiente temos:
Portanto é a solução primal.
Logo é um candidato a ponto de sela.
Para verificar que ele é ponto de sela, basta ver se não há salto de dualidade. Mas isso não ocorre já que o valor ótimo do primal é e o valor ótimo do dual também é .
|