Otimização/Aplicações dos métodos duais

Fonte: testwiki
Revisão em 20h18min de 13 de agosto de 2011 por imported>He7d3r.bot (Correção de typos e formatação geral, typos fixed: haviam diversos → havia diversos utilizando AWB)
(dif) ← Revisão anterior | Revisão atual (dif) | Revisão seguinte → (dif)
Saltar para a navegação Saltar para a pesquisa

Aplicação à programação linear

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

{minax+byMx+NycPx+Qy=dx0;yn

onde são dados an, bm, Mp×n, Np×m, Pq×n, Qq×m, dp e cq. Por simplicidade, pode-se ainda adotar a seguinte notação:

C={[xy];Mx+Nyc,Px+Qy=d,x0 e yn}

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:

l(x,y,u,v,w)=[ax+by]+u[cMxNy]+v[dPxQy]+w[x]=[aMuPvw]x+[bNuQv]y+[cu+dv]

Note que:

  • As variáveis primais são x e y;
  • As variáveis duais são u, v e w;

Agora é preciso identificar as funções α e β correspondentes a este problema. Conforme anteriormente, tem-se:

α:n{+}, dada por
α(x)=supu0vqw0l(x,y,u,v,w)={ax+by, se [xy]C+, em outros casos

e

β:p×q{}, dada por
β(u,v)=infxnyml(x,y,u,v,w)=infxnym[aMuPvw]x+[bNuQv]y+[cu+dv]=[cu+dv]+infxn[aMuPvw]x+infym[bNuQv]y={cu+dv, se {aMuPvw=0bNuQv=0u0;w0, em outros casos

Logo, considerando que aMuPv=w0, o problema dual consiste no seguinte:

{maxcu+dvMu+PvaNu+Qv=bu0

Predefinição:Exercício Predefinição:Resolução

Predefinição:Exercício Predefinição:Resolução

Exemplificando com um problema de programação linear

O seguinte problema é chamado de problema standard (padrão) de programação linear:

(PL){mincxAx=bx0

onde são dados Am×n, bm e cn.

Calculando o dual de (PL)

Primeiramente,

l(x,u,v)=cx+u(x)+v(bAx)

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

α(x)={f(x), se xC+, se x∉C

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

β(u,v)=infxnl(x,u,v)
β(u,v)=infxnl(x,u,v)=infxn[cxux+v(bAx)]=bv+infxn[cuAv]x={bv, se cuAv=0, em outros casos

Logo, o problema dual é:

(D){maxbvcuAv=0u0;vm

ou ainda

(D){maxbvAvcvm

Calculando o dual do dual de (PL)

Considere o seguinte problema:

(D){maxbvAvcvm

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

(D){minbvAvcvm

A lagrangiana é dado por:

l(v,y)=bv+y(Avc)

Logo,

β(y)=infvml(v,y)=infvm[bv+y(Avc)]=cy+infvm[(Ayb)v]={cy, se Ayb=0, em outros casos

Logo, o dual de (D) é:

(DD){maxβ(y)y0,

ou seja,

(DD){maxcyAy=by0

que equivale a

(P){mincxAx=bx0

Um exemplo numérico contextualizado

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.

Predefinição:Resolução 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. Predefinição:Tarefa

Aplicação à programação quadrática

Agora, o problema a considerar passa a ser

{min12xQx+qx+αxC

onde C é um poliedro (interseção finita de semi-espaços), qn, α e Qn×n é 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 Q é uma matriz simétrica positiva definida, a função é limitada inferiormente, e como C é fechado, a função objetivo assume seu valor mínimo em C, por Wolfe).

Mesmo para n=5, 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 C é dado por

C={xn;x0 e Ax=b}

com Am×n e bm.

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

l:n×n×m
l(x,u,v)=12xQx+qx+α+u(bAx)+v(x)

além disso,

β:n×m{}
β(u,v)=infxnl(x,u,v)=minxnl(x,u,v)

e a última igualdade vale pois a função é fortemente convexa.

β(u,v)=infxnl(x,u,v)=minxnl(x,u,v)=minxn[12xQx+qx+α+u(bAx)+v(x)]=minxn[12xQx+(qvAu)x+ub+α]

Considerando xl(x¯,u,v)=Qx¯+qvAu=0, se deduz que

x¯=Q1(Au+vq).

Logo,

β(u,v)=12[Q1(Au+vq)]Q[Q1(Au+vq)]+(qvAu)[Q1(Au+vq)]+ub+α=12(Au+vq)Q1(Au+vq)(Au+vq)Q1(Au+vq)+ub+α=12(Au+vq)Q1(Au+vq)+ub+α

Observe que, sendo os autovalores de Q positivos, o mesmo vale obrigatoriamente para Q1. Assim, como a expressão de β envolve (Q1), tal função é fortemente côncava (conforme já era esperado para tal função).

Baseado nestas deduções, o problema dual é

(D){max12(Au+vq)Q1(Au+vq)+ub+αu0;vm

ou seja,

(D){min12(Au+vq)Q1(Au+vq)(ub+α)u0;vm

Usualmente este tipo de problema (D) é resolvido por meio do método do gradiente projetado.

Revisão do método do gradiente projetado

O método baseia-se na seguinte proposição: Predefinição:Proposição Predefinição:Prova

Um algoritmo para o método do gradiente projetado

Este algoritmo é bastante simples.

Primeiro passo:
  Escolha x0n e fixe α>0.  
Passo iterativo k: Enquanto xk=PC(xkαf(xk))
  xk+1=PC(xkαf(xk))

Agora, é interessante observar como se faz para projetar um ponto em C=[0,+)n×m.

Predefinição:Exercício Predefinição:Resolução

Exemplificando a projeção

Seja u=[1122334455]. Então a projeção de u sobre C=[0,+)6×4 é :

PC([1122334455])=[1020304455]

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 (D).

Exemplo concreto

Seja C={(x,y);x+y=1,x0,y0}. Predefinição:Tarefa

Como calcular a projeção do ponto (1,2) sobre o conjunto C, PC(1,2)? Predefinição:Resolução

Exercícios resolvidos

Predefinição:Exercício Predefinição:Resolução Ao resolver o problema (P), poderia ter sido escolhido Axb em vez de bAx. Será que isso influenciaria o resultado final?

Acompanhe como ficaria a resolução desta maneira: Predefinição:Resolução

Predefinição:Exercício Predefinição:Resolução

Predefinição:Exercício Predefinição:Resolução

Predefinição:AutoCat