OTIMIZAÇÃO IRRESTRITA: UM ESTUDO SOBRE O MÉTODO DE … · resolvidos por métodos diretos, sendo...
Transcript of OTIMIZAÇÃO IRRESTRITA: UM ESTUDO SOBRE O MÉTODO DE … · resolvidos por métodos diretos, sendo...
OTIMIZAÇÃO IRRESTRITA: UM ESTUDO SOBRE O MÉTODO DE CAUCHY
Enoque da Silva Sobral, (UNESPAR/FECILCAM), [email protected]
Gislaine Aparecida Periçaro (OR), (UNESPAR/FECILCAM), [email protected]
Solange Regina dos Santos (CO-OR), (UNESPAR/FECILCAM), [email protected]
RESUMO: Estudamos neste trabalho o Método de Cauchy para solucionar problemas de otimização
irrestrita. Matematicamente, tais problemas consistem em minimizar uma função não linear sem
restrições sobre as variáveis e estão relacionados a aplicações em diversas áreas como biologia,
economia, engenharia, etc. Problemas de otimização envolvendo várias variáveis dificilmente são
resolvidos por métodos diretos, sendo necessário o emprego de métodos iterativos que consistem em,
dado um ponto inicial, gerar uma sequência de iterandos na qual a função decresce. Para garantir um
decréscimo na função objetivo, a cada iteração é determinada uma direção de descida para tal função,
e em seguida, determina-se o tamanho do passo a ser dado nessa direção minimizando-se uma função
de uma variável. O método de otimização estudado nesse trabalho escolhe a cada iteração a direção
oposta ao gradiente da função objetivo no ponto corrente. Para determinar o comprimento do passo,
empregamos um método de busca unidirecional denominado Método da Seção Áurea. Os métodos
estudados foram implementados em Matlab e testes numéricos foram realizados com problemas
acadêmicos.
PALAVRAS-CHAVE: Otimização irrestrita; Método de Cauchy; Método da seção áurea.
INTRODUÇÃO
Problemas de otimização surgem nas mais diversas áreas como engenharias, economia, física
e biologia. Devido a essa ampla possibilidade de aplicações, os métodos de otimização, tanto no
aspecto teórico quanto numérico, tornaram-se objetos de estudo de muitos pesquisadores nos últimos
50 anos. Segundo Brandão (2010) os problemas de otimização estão presentes até mesmo no meio
ambiente e um exemplo disto são as abelhas. Esses insetos usam cera para construir os alvéolos das
colméias que são usados como depósitos para o mel. As abelhas constroem os alvéolos procurando
uma forma econômica que tenha o maior volume para a menor porção de material gasto.
Neste trabalho estudamos um método clássico empregado na resolução de problemas de
otimização irrestrita, em que busca-se minimizar uma função sem restrições sobre as variáveis. Uma
questão inicial que surge ao considerar esse tipo de problema se refere a existência de solução. A
função a ser minimizada, denominada função objetivo, pode ser ilimitada inferiormente e isso faz com
que o problema não possua solução, ou apresente apenas minimizadores locais, ou seja, pontos que
possuem menor valor funcional apenas quando comparado com pontos situados em uma vizinhança
destes. Existe uma condição necessária que deve ser satisfeita para que um determinado ponto seja um
minimizador local da função. Os pontos que satisfazem tal condição são denominados pontos
estacionários e estes são os candidatos a minimizadores da função, uma vez que a condição é apenas
necessária e não suficiente. Há uma dificuldade computacional associada à determinação do
minimizador global da função, o qual muitas vezes pode não existir, como comentado anteriormente.
Sendo assim, muitos métodos de otimização se contentam em encontrar pontos estacionários para a
função objetivo. Para tanto, um processo iterativo básico de otimização consiste em, a partir de um
ponto inicial, determinar uma direção na qual a função decresça para dar o próximo passo. O processo
continua até que um ponto estacionário seja obtido.
O método que estudamos neste trabalho, denominado Método de Cauchy, escolhe como
direção de descida a direção oposta ao vetor gradiente da função objetivo avaliada no ponto corrente.
Após determinar a direção, uma outra questão que surge é o quanto caminhar nela. Para isso existem
métodos denominados métodos de busca, que determinam o tamanho do passo a ser dado na direção
de descida. O método de busca estudado nesse trabalho é conhecido como Método da Seção Áurea.
Este trabalho está organizado da seguinte forma. Na próxima seção apresentamos a
formulação matemática do problema de otimização irrestrita, a definição de minimizadores locais e
direção de descida, a condição necessária de otimalidade e o algoritmo básico de otimização. Na seção
3 discutimos alguns aspectos do Método de Cauchy e na seção 4, o Método da Seção Áurea. Em
seguida, na seção 5, apresentamos dois exemplos de problemas aos quais os métodos estudados foram
aplicados, a partir de implementação realizada em Matlab e discutimos algumas características destes.
Finalmente, na seção 6 fazemos as considerações finais sobre o trabalho.
FORMULAÇÃO MATEMÁTICA
Formalmente, um problema de otimização irrestrita pode ser escrito como
minimizar )(xf
sujeito a nRx
(2.1)
em que assumimos que a função RRf n →: é continuamente diferenciável. Ao considerar tal
problema, o objetivo é determinar minimizadores locais de f . Dizemos que nRx é um
minimizador local de f se )()( xfxf para todo x pertencente a uma vizinhança de x .
Muitas vezes o interesse é obter o valor de máximo de uma função, como por exemplo, no
caso em que considera-se uma função que representa o lucro de uma empresa. No entanto, segundo
Izmailov e Solodov (2005), do ponto de vista matemático, não existe diferença relevante entre
minimização e maximização de uma função, uma vez que maximizar f é equivalente a minimizar
,f pois .xfmínxfmáx ))(()( Dessa forma, a teoria desenvolvida para problemas de
otimização leva em consideração problemas da forma apresentada em (2.1).
Para que um ponto nRx seja um minimizador local é necessário que este satisfaça algumas
condições, as quais denominamos condições de otimalidade. Neste trabalho damos destaque à
condição necessária de otimalidade de 1ª ordem, estabelecida no teorema a seguir, conforme
apresentado em Friedlander (1994).
Teorema 2.1: Seja RRf n →: diferenciável no ponto nRx . Se x é um minimizador local de ,f
então .0)( xf
O vetor f é denominado vetor gradiente de f e suas componentes são as derivadas parciais
de ,f ou seja,
.∇1
nx
f
x
f
f
Assim, vemos que a condição estabelecida no Teorema 2.1 garante que se um ponto x for o
minimizador local de f, então x será solução do sistema homogêneo, na maioria das vezes não linear,
0.=)(xf Os pontos que satisfazem tal condição são denominados pontos críticos ou estacionários
da função f. É importante observar, que esta é apenas uma condição necessária, mas não suficiente.
Assim, se 0=)(xf então x pode ser maximizador, minimizador, ou nenhum dos dois. Os pontos
que satisfazem essa condição, mas não são maximizadores nem minimizadores de f são denominados
ponto de sela. O motivo deste nome pode ser compreendido observando-se a Figura 1, que apresenta o
gráfico de uma função que possui um ponto de sela.
Embora a condição 0=)(xf seja necessária, mas não suficiente, a resolução deste sistema
faz parte de muitos métodos de otimização. Porém, dificilmente é possível resolvê-lo por métodos
diretos, sendo necessário o emprego de métodos iterativos que consistem em, dado um ponto inicial
,0x gerar uma sequência de iterandos nk Rx )( na qual a função objetivo decresce.
De acordo com Martínez e Santos (1995), um algoritmo básico de otimização irrestrita
consiste em, a partir de cada ponto obtido, determinar uma direção para dar o próximo passo. Como o
objetivo é minimizar f, é razoável que a função decresça na direção escolhida. Uma direção que
apresenta essa propriedade é denominada direção de descida. Matematicamente, dizemos que ,nRd
,0d é uma direção de descida para f a partir do ponto ,x quando existe 0 tal que
)()( xftdxf , para todo ).,0( t
Figura 1: Ponto de Sela.
Conforme apresentado em Ribeiro e Karas (2012), existe uma condição suficiente para que
uma direção seja de descida, a saber: se 0)( dxf T então d é uma direção de descida para f a partir
de x . Assim, as direções que formam um ângulo maior que 90º com o gradiente de f avaliado em x ,
são direções de descida para f a partir desse ponto.
Após escolher a direção de descida, é necessário definir o quanto caminhar nessa direção.
Pode-se dar um passo completo, ou seja, considerar o tamanho ,1t no entanto, esta escolha pode não
ser a melhor. Dessa forma, existem métodos denominados métodos de busca que podem ser
empregados para esse fim.
O que diferencia os métodos de otimização é a escolha da direção de descida d e a forma com
que é calculado o tamanho do passo a ser dado. Para determinar a direção de descida em nossa
pesquisa estudamos o Método de Cauchy e para encontrar o tamanho do passo utilizamos o Método da
Seção Áurea, os quais serão discutidos a seguir.
MÉTODO DE CAUCHY
Segundo Ribeiro e Karas (2012, p.63), o Método de Cauchy, também conhecido como o
Método do Gradiente, “é um processo iterativo que a cada etapa faz uma busca na direção oposta ao
vetor gradiente da função objetivo no ponto corrente”. A escolha dessa direção se justifica pelo fato de
que o gradiente da função objetivo avaliado em um ponto x aponta para a direção de maior
crescimento de f a partir desse ponto, conforme discutido nas disciplinas de Cálculo Diferencial e
Integral. Sendo assim, a direção oposta ao vetor gradiente é a que fornece um maior decréscimo na
função objetivo.
Por exemplo, considere a função RRf →: 2 dada por
21
2
2
2
1 22)( xxxxxf e o ponto
.1
1
x Temos que 1xf e .
0
2)(
xf Assim, considerando )(xfd podemos facilmente
ver que ,04)( dxf T ou seja, d é uma direção de descida. Observe que a função realmente
decresce nessa direção, uma vez que
)(48)(148)( 22 xfttxftttdxf
para todo 0t .
Apresentamos a seguir o algoritmo associado ao Método de Cauchy conforme apresentado em
Ribeiro e Karas (2012).
Algoritmo 3.1 Método de Cauchy
O Algoritmo 3.1 presente deixa em aberto a determinação do comprimento do passo t, e nesta
etapa pode ser usado qualquer algoritmo de busca exata, como o Método da Seção Áurea, ou de busca
inexata, como a busca de Armijo, que não será abordado neste trabalho. Para maiores detalhes sobre
métodos baseados em busca inexata, consultar, por exemplo, Martínez e Santos (1995).
É importante observar que existem duas possibilidades para o Algoritmo 3.1: ou ele para em
um ponto estacionário após um número finito de iterações, ou então gera uma sequência na qual a
função f decresce. Em Ribeiro e Karas (2012) pode ser encontrada a prova de que o Algoritmo 3.1 é
Dado nRx 0
0k
Repita enquanto 0)( kxf
Defina )( kk xfd
Obtenha 0kt tal que )()( kkkk xfdtxf
Faça kkkk dtxx 1
1 kk
globalmente convergente, empregando a estratégia de busca exata ou a busca de Armijo para
determinar o tamanho do passo. Isso significa que se x é um ponto de acumulação de uma sequência
)( kx gerada pelo algoritmo, então x é estacionário.
Uma propriedade interessante do Método de Cauchy está associada à aplicação deste à funções
quadráticas convexas, dadas por
,2
1)( cxbAxxxf TT (3.1)
em que nn RRA é uma matriz definida positiva,
nRb e Rc . Funções desse tipo possuem um
único minimizador x , que satisfaz .0)( xfbxA A propriedade estabelece que duas direções
de descida consecutivas determinadas pelo Algoritmo 3.1 quando aplicado ao problema de minimizar
a função (3.1) são sempre ortogonais. Tal propriedade será ilustrada na próxima seção, onde
apresentaremos exemplos implementados em Matlab. Outra propriedade está associada ao tamanho do
passo a ser dado em cada iteração quando consideramos a função (3.1). Esta propriedade também será
apresentada na próxima seção, após discutirmos o Método da Seção Áurea.
MÉTODO DA SEÇÃO ÁUREA
O Método da Seção Áurea pode ser empregado para determinar o tamanho do passo ao longo
de uma determinada direção de descida, em particular, ao longo da direção de Cauchy. O objetivo é
determinar a solução t do seguinte problema unidimensional
minimizar )()( tdxftg
sujeito a .0t (4.1)
De acordo com Ribeiro e Karas (2012), resolver (4.1) não é uma tarefa simples. Entretanto,
dependendo do tipo de função considerada, há métodos eficientes para resolvê-lo. Um exemplo é o
Método da Seção Áurea que funciona perfeitamente, dentro de uma determinada tolerância, quando a
função g é unimodal.
O Método da Seção Áurea é dividido em duas fases, a primeira fase consiste em determinar
um intervalo que contenha um minimizador de g, sendo necessário apenas fazer ampliações de um
intervalo inicial até que um crescimento de g seja detectado. Na segunda fase o intervalo encontrado
na primeira é reduzido, descartando-se subintervalos deste que não contenham o minimizador, até que
reste um intervalo de comprimento , sendo a tolerância pré-fixada.
De acordo com Gonzaga (2004), esse processo de descarte dos subintervalos na segunda fase é
feito da seguinte forma. Seja ],[ ba o intervalo obtido na primeira fase. Escolhem-se, neste intervalo,
os pontos )(1 abau e 2( ),v a b a tais que 121 e 1
2
2 . Estes são os pontos
que definem a seção áurea e seus valores são: 382,02
531
e 2
5 10,618.
2
Assim,
os números u e v dividem o segmento ],[ ba na razão áurea, e isso justifica o nome dado ao método. É
natural pensar que seria mais fácil dividir o intervalo em três partes iguais. No entanto, procedendo
dessa forma, a cada iteração seriam descartados 33,33% do intervalo e ao dividir o intervalo na razão
áurea, são descartadas mais de 38% do intervalo. Além disso, usando essa razão, devido ao fato de
121 e 1
2
2 , um dos pontos u ou v pode ser aproveitado na iteração seguinte, e isso diminui
o número de avaliações de funções no decorrer do processo iterativo.
As ideias discutidas acima estão resumidas no algoritmo a seguir, conforme apresentado em
Ribeiro e Karas (2012, p. 54).
Algoritmo 4.1: Seção Áurea
Fernandes (2010) apresenta um estudo
detalhado sobre o Método da Seção Áurea,
Dados: 0,0 , ,2
531
12 1
Fase 1: Obtenção do intervalo [a,b]
2 ,0 besa
Repita enquanto sgbg
, bssa e 2b
Fase 2: Obtenção de b][a,t
) a(bθava),(bθau 21
Repita enquanto - ab
Se vgug
abauuvvb 1 , ,
Senão
abavvuua - , , 2
Defina 2
vut
incluindo uma discussão sobre as propriedades de convergência do Algoritmo 4.1. É importante
ressaltar que o bom funcionamento deste método é garantido apenas quando g é unimodal. Embora
isso não exclua a possibilidade de aplicação a outros tipos de funções, nesses casos o algoritmo pode
não ser eficaz.
Quando consideramos a função quadrática apresentada em (3.1), podemos mostrar que a
solução do problema (4.1) é
,)(
)(=
Add
dxft
T
T (4.2)
em que d é uma direção de descida a partir de .x Sendo assim, para esse tipo de função, não é
necessário empregar métodos de busca exata ou inexata para determinar o tamanho do passo a ser
dado em cada iteração, em particular, do Algoritmo 3.1.
Na próxima seção discutiremos alguns exemplos numéricos para ilustrar o funcionamento dos
Algoritmos 3.1 e 4.1.
EXEMPLOS NUMÉRICOS
A fim de ilustrar o desempenho numérico dos algoritmos estudados, os mesmos foram
implementados em Matlab R2010a e aplicados aos problemas de minimizar as seguintes funções
RRf →: 2dadas por:
Exemplo 1:21
21)( xxeexfxx
Exemplo 2: 21
2
2
2
1 232)( xxxxxf
Para minimizar a função do Exemplo 1 partimos do ponto
1
50x e após quatro iterações
o Algoritmo 3.1, com o tamanho do passo calculado pelo Método da Seção Áurea (Algoritmo 4.1),
atingiu o minimizador do problema
0
0x , com uma precisão de
610, ou seja, o Algoritmo 3.1
parou em um ponto x para o qual verificou-se .10)( 6 xf Essa foi a mesma precisão usada no
algoritmo da Seção Áurea.
As Figuras 2 e 3 mostram, respectivamente, os gráficos gerados pela rotina implementada em
Matlab com a variação da função e da norma do gradiente ao longo das quatro iterações. Podemos
observar o decrescimento no valor da função objetivo, como era de se esperar, uma vez que
escolhemos a cada iteração a direção oposta ao gradiente. Note que o valor de mínimo da função é 2.
0 0.5 1 1.5 2 2.5 3 3.5 40
1
2
3
4
5
6
7
8
9
10
k
f(xk )
Figura 2: Variação na função objetivo
0 0.5 1 1.5 2 2.5 3 3.5 40
0.5
1
1.5
2
2.5
k
|| f
(xk )|
|
Figura 3: Variação na norma do gradiente
A Figura 4 apresenta algumas curvas de nível da função objetivo e o caminho percorrido pelo
algoritmo ao longo das iterações, ou seja, alguns termos da sequência gerada pelo algoritmo 3.1.
x1
x2
-5 -4 -3 -2 -1 0 1 2-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
Figura 4: Algoritmo 3.1 aplicado ao Exemplo 1
No exemplo 2 temos uma função quadrática convexa que pode ser escrita na forma (3.1) com
40
02A ,
2
3b e .0c Nesse caso, o minimizador é facilmente calculado, sendo
5,0
5,1x . Mesmo assim, aplicamos o Algoritmo 3.1, com o tamanho do passo sendo calculado
pela fórmula (4.2), para ilustrar a propriedade de ortogonalidade de duas direções consecutivas,
comentadas anteriormente. A Figura 5 apresenta algumas curvas de nível da função, que nesse caso,
por se tratar de uma função quadrática convexa, são elipses centradas no minimizador do problema.
Podemos visualizar também os iterandos obtidos ao longo de quatro iterações do Algoritmo 3.1.
Observe que as direções obtidas são ortogonais.
Figura 5: Algoritmo 3.1 aplicado ao Exemplo 2
Para este problema, considerando o ponto inicial mostrado na Figura 5, a precisão estabelecida
no Algoritmo 3.1 foi atingida após 12 iterações, embora possa ser observado que após quatro iterações
o os iterandos já ficaram bem próximos do minimizador global de f.
CONSIDERAÇÕES FINAIS
Os métodos de otimização irrestrita buscam minimizar uma função sem restrições sobre as
variáveis. O objetivo deste trabalho foi de realizar um estudo sobre um método clássico de otimização
irrestrita conhecido como o Método de Cauchy, juntamente com a abordagem do Método da Seção
Áurea utilizado, especificamente, na determinação do tamanho do passo que deve ser dado
iterativamente, na direção de busca.
O Método de Cauchy é um método iterativo simples de ser implementado e utiliza como
direção de busca, para a determinação do minimizador, a direção oposta ao vetor gradiente.
Como mencionado anteriormente, há uma dificuldade computacional associada à
determinação do minimizador global da função, o qual muitas vezes pode não existir. Sendo assim,
muitos métodos de otimização se contentam em encontrar pontos estacionários para a função objetivo,
definidos por 0=)(xf . No entanto, x pode satisfazer tal condição, mas não ser maximizador nem
minimizador de f, sendo denominado de ponto de sela. Deste modo, a condição 0=)(xf é uma
condição necessária, mas não suficiente para a existência de minimizador para problemas irrestritos.
A prova de convergência do Método de Cauchy é estabelecida a partir da utilização de uma
estratégia de busca exata ou de Armijo para a determinação do tamanho do passo, conforme mostrado
por Ribeiro e Karas (2012).
Neste trabalho apresentamos um método de busca exata, denominado Método da Seção Áurea.
Este método fornece o comprimento do passo a ser dado nesta direção de busca por meio de
sucessivas ampliações (etapa 1) e reduções (etapa 2) do intervalo inicial, até que se obtenha o intervalo
que contém um minimizador da função.
Para compreensão do desempenho dos métodos estudados, apresentamos dois exemplos
numéricos. Para o exemplo 1, vimos que o método convergiu para a solução em apenas quatro
iterações, a partir do ponto inicial escolhido. Para este caso ilustramos, por meio da Figura 2, o
decréscimo do valor da função a cada iteração, a da norma do gradiente, Figura 3, e por fim o caminho
percorrido pelo algoritmo ao longo das quatro iterações até a obtenção do minimizador do problema,
Figura 4.
Para o exemplo 2, consideramos uma função objetivo quadrática e convexa. Mostramos, por
meio da Figura 5, a evolução do algoritmo durante a resolução do problema, evidenciando o fato de
que, para este caso, as direções de busca fornecidas pelo Método de Cauchy são ortogonais. Vimos
também que, o comprimento do passo para o caso quadrático pode ser obtido diretamente a partir da
relação (4.2).
De acordo com os conceitos pesquisados, os métodos de otimização abordados neste trabalho
são uma alternativa para a resolução de problemas de otimização irrestrita, uma vez que fornecem
boas aproximações para a solução de tais problemas, que dificilmente seriam calculados de maneira
analítica. Vale lembrar que cada método de otimização possui propriedades particulares, de modo que,
seu desempenho está associado às características do problema em estudo.
REFERÊNCIAS
BRANDÃO, M. A. L. Estudo de alguns métodos determinísticos de otimização irrestrita. 85 f.
Mestrado em Matemática, Departamento de Matemática, UFU, Uberlândia, 2010.
FERNANDES, F. M. Velocidade de convergência de métodos de otimização irrestrita. 2010. 42 f.
Monografia em Matemática, UFPR, Curitiba, 2010.
FRIEDLANDER, A. Elementos de programação não linear. Campinas: UNICAMP, 1994.
GONZAGA, C. C. Um curso de programação não linear. Florianópolis: UFSC, 2004.
IZMAILOV, A.; SOLODOV, M. Otimização: condições de otimalidade - elementos de análise
convexa e dualidade. V. 1. Rio de Janeito: IMPA, 2005.
LEITHOLD, L. O cálculo com geometria analítica. Volume. 2. 3. ed. São Paulo: Harbra, 1994.
MARTÍNEZ, J. M.; SANTOS, S. A. Métodos computacionais de otimização. 20º Colóquio
Brasileiro de Matemática. Rio de Janeiro: IMPA, 1995.
RIBEIRO, A. A.; Karas, E. W. Um curso de otimização. Curitiba: UFPR, 2012.
RINCÃO, Thiago. Otimização irrestrita sem derivadas baseada em interpolação polinomial.
2008. 50 f. Dissertação Mestrado em Matemática aplicada e computacional, Departamento de
Matemática, UNICAMP, Campinas, 2008.