Algoritmo Nelder-Mead - Seminário I - Métodos Computacionaiscristianocs/MetComput/Apres10.pdf ·...

32
Algoritmo Nelder-Mead Semin´ ario I - M´ etodos Computacionais Ana J´ ulia e Arthur Tarso Universidade Federal de Minas Gerais

Transcript of Algoritmo Nelder-Mead - Seminário I - Métodos Computacionaiscristianocs/MetComput/Apres10.pdf ·...

Page 1: Algoritmo Nelder-Mead - Seminário I - Métodos Computacionaiscristianocs/MetComput/Apres10.pdf · Figura 8: Resultado da maximizac~ao de uma Normal bivariada por meio do algoritmo

Algoritmo Nelder-Mead

Seminario I - Metodos Computacionais

Ana Julia e Arthur Tarso

Universidade Federal de Minas Gerais

Page 2: Algoritmo Nelder-Mead - Seminário I - Métodos Computacionaiscristianocs/MetComput/Apres10.pdf · Figura 8: Resultado da maximizac~ao de uma Normal bivariada por meio do algoritmo

Roteiro

1. Introducao

2. Algoritmo

3. Aplicacao

4. Exercıcio

1

Page 3: Algoritmo Nelder-Mead - Seminário I - Métodos Computacionaiscristianocs/MetComput/Apres10.pdf · Figura 8: Resultado da maximizac~ao de uma Normal bivariada por meio do algoritmo

Introducao

Page 4: Algoritmo Nelder-Mead - Seminário I - Métodos Computacionaiscristianocs/MetComput/Apres10.pdf · Figura 8: Resultado da maximizac~ao de uma Normal bivariada por meio do algoritmo

O que e o algoritmo

E um metodo numerico comumente usado para encontrar o mınimo

ou o maximo de uma funcao objetiva em um espaco

multidimensional;

E um metodo de busca direta, pois depende somente das

classificacoes de uma colecao de avaliacoes da funcao, enquanto

tenta encontrar um ponto superior para a proxima iteracao.

2

Page 5: Algoritmo Nelder-Mead - Seminário I - Métodos Computacionaiscristianocs/MetComput/Apres10.pdf · Figura 8: Resultado da maximizac~ao de uma Normal bivariada por meio do algoritmo

Simplex

Por utilizar o conceito de simplex, tambem e conhecido como metodo

amoeba

Figura 1: Exemplo de um 3-simplex ou tetraedro

3

Page 6: Algoritmo Nelder-Mead - Seminário I - Métodos Computacionaiscristianocs/MetComput/Apres10.pdf · Figura 8: Resultado da maximizac~ao de uma Normal bivariada por meio do algoritmo

Funcionamento

Figura 2: Simplex sobreposto aos contornos de uma funcao objetiva g

4

Page 7: Algoritmo Nelder-Mead - Seminário I - Métodos Computacionaiscristianocs/MetComput/Apres10.pdf · Figura 8: Resultado da maximizac~ao de uma Normal bivariada por meio do algoritmo

Funcionamento

Figura 3: Cinco possıveis transformacoes do simplex

5

Page 8: Algoritmo Nelder-Mead - Seminário I - Métodos Computacionaiscristianocs/MetComput/Apres10.pdf · Figura 8: Resultado da maximizac~ao de uma Normal bivariada por meio do algoritmo

Funcionamento

Figura 4: Maximizacao de uma complicada funcao bivariada por meio do

algoritmo de Nelder-Mead 6

Page 9: Algoritmo Nelder-Mead - Seminário I - Métodos Computacionaiscristianocs/MetComput/Apres10.pdf · Figura 8: Resultado da maximizac~ao de uma Normal bivariada por meio do algoritmo

Funcionamento

E necessario verificar dois criterios de convergencia para o algoritmo

Nelder-Mead:

i. Alguma medida de mudanca relativa na localizacao dos vertices do

simplex;

ii. Verificar se os valores da funcao objetiva aparentam ter convergido.

7

Page 10: Algoritmo Nelder-Mead - Seminário I - Métodos Computacionaiscristianocs/MetComput/Apres10.pdf · Figura 8: Resultado da maximizac~ao de uma Normal bivariada por meio do algoritmo

Falha do metodo

Figura 5: Ilustracao de falha do metodo Nelder-Mead

8

Page 11: Algoritmo Nelder-Mead - Seminário I - Métodos Computacionaiscristianocs/MetComput/Apres10.pdf · Figura 8: Resultado da maximizac~ao de uma Normal bivariada por meio do algoritmo

Reinicializacao

Quando verifica-se a estagnacao do algoritmo, uma reinicializacao com

um simplex diferente pode ser a solucao para o problema, colocando o

algoritmo em um diferente e possivelmente numa trajetoria mais

produtiva. Alternativamente, a reinicializacao orientada e projetada com

o objetivo de remodelar o simplex visando a convergencia. O

procedimento consiste em:

i. Define uma matriz de direcoes e o correspondente vetor de

funcoes objetivas diferenciadas em relacao ao x(t)best .

ii. Substitui todos os vertices exceto xbest , com os vertices com

vertices situados em eixos coordenados centrados em x(t)best e com

comprimentos reduzidos.

A justificativa para a reinicializacao orientada e que um novo gradiente

do simplex no ponto xbest deve apontar em uma direcao que se aproxima

do verdadeiro gradiente da funcao objetivo, uma vez que o simplex seja

pequeno o suficiente e desde que o gradiente do simplex esteja no

octante correto. 9

Page 12: Algoritmo Nelder-Mead - Seminário I - Métodos Computacionaiscristianocs/MetComput/Apres10.pdf · Figura 8: Resultado da maximizac~ao de uma Normal bivariada por meio do algoritmo

Vantagens

Nao e necessario calcular as derivadas da funcao para fazer a

otimizacao;

O metodo e eficiente para um numero baixo/moderado de

dimensoes;

O metodo possui uma abordagem robusta, no sentido de que pode

ser usado para encontrar o ponto otimo de uma vasta gama de

funcoes;

Pode ser usado para funcoes descontınuas;

Robustez para atingir a convergencia, mesmo na presenca de ruıdo

aleatorio.

10

Page 13: Algoritmo Nelder-Mead - Seminário I - Métodos Computacionaiscristianocs/MetComput/Apres10.pdf · Figura 8: Resultado da maximizac~ao de uma Normal bivariada por meio do algoritmo

Desvantagens

Para problemas de alta dimensionalidade, a eficacia do metodo e

variada, dependendo da natureza do problema;

Em alguns casos, o algoritmo pode convergir para pontos que nao

sao de maximo nem mınimo;

Dificuldade em escolher bons criterios de parada;

Baixa velocidade de convergencia.

11

Page 14: Algoritmo Nelder-Mead - Seminário I - Métodos Computacionaiscristianocs/MetComput/Apres10.pdf · Figura 8: Resultado da maximizac~ao de uma Normal bivariada por meio do algoritmo

Algoritmo

Page 15: Algoritmo Nelder-Mead - Seminário I - Métodos Computacionaiscristianocs/MetComput/Apres10.pdf · Figura 8: Resultado da maximizac~ao de uma Normal bivariada por meio do algoritmo

Algoritmo

1) Inicializacao

Para t = 1:

Escolha os vertices iniciais x(t)1 , . . . x

(t)p+1;

Escolha os valores dos α’s tais que:

αr > 0,

αe > max(1, αr ),

αc ∈ (0, 1),

αs ∈ (0, 1).

Valores padrao sao (1, 2, 12 ,

12 ).

12

Page 16: Algoritmo Nelder-Mead - Seminário I - Métodos Computacionaiscristianocs/MetComput/Apres10.pdf · Figura 8: Resultado da maximizac~ao de uma Normal bivariada por meio do algoritmo

Algoritmo

2) Ordenacao

Ordene os vertices de acordo com seu valor avaliado na funcao de

interesse e nomeie:

x(t)best : maior valor de g(x);

x(t)bad : segundo menor valor de g(x);

x(t)worst : menor valor de g(x).

13

Page 17: Algoritmo Nelder-Mead - Seminário I - Métodos Computacionaiscristianocs/MetComput/Apres10.pdf · Figura 8: Resultado da maximizac~ao de uma Normal bivariada por meio do algoritmo

Algoritmo

3) Orientacao (direcao)

Calcule:

c(t) =1

p

[(p+1∑i=1

x(t)i

)− x

(t)worst

]

14

Page 18: Algoritmo Nelder-Mead - Seminário I - Métodos Computacionaiscristianocs/MetComput/Apres10.pdf · Figura 8: Resultado da maximizac~ao de uma Normal bivariada por meio do algoritmo

Algoritmo

4) Reflexao

Calcule x(t)r = c(t) + αr (c

(t) − x(t)worst).

Compare g(x(t)r ) com g(x

(t)best) e g(x

(t)bad)

Se g(x(t)best) ≥ g(x

(t)r ) > g(x

(t)bad): aceite x

(t)r como novo vertice para

iteracao t + 1 e descarte x(t)worst . Va para o passo de parada (8).

Se g(x(t)r ) > g(x

(t)best): va para o passo de expansao (5).

Caso contrario: va para o passo de contracao (6).

15

Page 19: Algoritmo Nelder-Mead - Seminário I - Métodos Computacionaiscristianocs/MetComput/Apres10.pdf · Figura 8: Resultado da maximizac~ao de uma Normal bivariada por meio do algoritmo

Algoritmo

5) Expansao

Calcule x(t)e = c(t) + αe(x

(t)r − c(t)).

Compare g(x(t)e ) com g(x

(t)best).

Se g(x(t)e ) > g(x

(t)r ): aceite x

(t)e como novo vertice para iteracao

t + 1 e descarte x(t)worst . Va para o passo de parada (8).

Caso contrario: aceite x(t)r como novo vertice para iteracao t + 1 e

descarte x(t)worst . Va para o passo de parada (8).

16

Page 20: Algoritmo Nelder-Mead - Seminário I - Métodos Computacionaiscristianocs/MetComput/Apres10.pdf · Figura 8: Resultado da maximizac~ao de uma Normal bivariada por meio do algoritmo

Algoritmo

6) Contracao

Compare g(x(t)e ) com g(x

(t)bad) e g(x

(t)worst).

Se g(x(t)bad) ≥ g(x

(t)r ) > g(x

(t)worst): Contracao Externa.

Calcule x(t)o = c(t) + αc(x

(t)r − c(t)).

Se g(x(t)o ) ≥ g(x

(t)r ): aceite x

(t)o como novo vertice para

iteracao t + 1 e descarte x(t)worst . Va para o passo de parada (8).

Caso contrario va para o passo de encolhimento (7).

Se g(x(t)worst) ≥ g(x

(t)r ): Contracao Interna.

Calcule x(t)i = c(t) + αc(x

(t)worst − c(t)).

Se g(x(t)i ) > g(x

(t)worst): aceite x

(t)i como novo vertice para

iteracao t + 1 e descarte x(t)worst . Va para o passo de parada (8).

Caso contrario va para o passo de encolhimento (7).

17

Page 21: Algoritmo Nelder-Mead - Seminário I - Métodos Computacionaiscristianocs/MetComput/Apres10.pdf · Figura 8: Resultado da maximizac~ao de uma Normal bivariada por meio do algoritmo

Algoritmo

7) Encolhimento

Para todo j = 1, . . . p + 1 tal que x(t)j = x

(t)best calcule

x(t)sj = x

(t)best + αs(x

(t)j − x

(t)best).

Forme um novo simplex com os vertices x(t)best e os p novos vertices para

iteracao t + 1. Va para o passo de parada (8).

18

Page 22: Algoritmo Nelder-Mead - Seminário I - Métodos Computacionaiscristianocs/MetComput/Apres10.pdf · Figura 8: Resultado da maximizac~ao de uma Normal bivariada por meio do algoritmo

Algoritmo

8) Parada

Verifique o criterio de convergencia. Se ele nao foi atingido, incremente t

para t + 1 e retorne ao passo de ordenacao (2). Caso contrario, x(t)best) e

dado como o valor que aproxima o maximizador de g

19

Page 23: Algoritmo Nelder-Mead - Seminário I - Métodos Computacionaiscristianocs/MetComput/Apres10.pdf · Figura 8: Resultado da maximizac~ao de uma Normal bivariada por meio do algoritmo

Aplicacao

Page 24: Algoritmo Nelder-Mead - Seminário I - Métodos Computacionaiscristianocs/MetComput/Apres10.pdf · Figura 8: Resultado da maximizac~ao de uma Normal bivariada por meio do algoritmo

Caso univariado

O metodo de Nelder-Mead nao e confiavel para o caso univariado (Fonte:

optim, R), mas sua implementacao e justificada pela simplicidade do

algoritmo no caso de uma funcao univariada, para fins de entendimento

do metodo.

Foram determinados tres criterios de convergencia:

Volume do 2-simplex (area de um triangulo), dada por:

A =

∣∣∣∣x1(g(x2)− g(x3)) + x2(g(x3)− g(x1)) + x3(g(x1)− g(x2))

2

∣∣∣∣Diferenca absoluta entre o melhor e pior vertices avaliados na funcao

de interesse:

|g(xbest)− g(xworst)| ≤ ϵ

Diferenca absoluta entre o melhor e pior vertices:

|xbest − xworst | ≤ ϵ

20

Page 25: Algoritmo Nelder-Mead - Seminário I - Métodos Computacionaiscristianocs/MetComput/Apres10.pdf · Figura 8: Resultado da maximizac~ao de uma Normal bivariada por meio do algoritmo

Caso univariado

Figura 6: Resultado da maximizacao de uma Γ(4, 2) por meio do algoritmo

Nelder-Mead.

21

Page 26: Algoritmo Nelder-Mead - Seminário I - Métodos Computacionaiscristianocs/MetComput/Apres10.pdf · Figura 8: Resultado da maximizac~ao de uma Normal bivariada por meio do algoritmo

Caso multivariado

Para o caso multivariado, foi utilizada a funcao optim do R, selecionando

o metodo Nelder-Mead e fnscale negativo, para que seja feita a

maximizacao.

Uso:

Argumentos:

par: valores iniciais para parametros que serao maximizados.

fn: funcao a ser minimizada (ou maximizada).

gr: retorna gradiente para os metodos ”BFGS”, ”CG”e ”L-BFGS-B”.

method: metodo utilizado.

lower, upper: limites para o metodo ”L-BFGS-B”.

control: lista de parametros de controne, entre eles o fnscale.

hessian: retorna matriz Hessiana. 22

Page 27: Algoritmo Nelder-Mead - Seminário I - Métodos Computacionaiscristianocs/MetComput/Apres10.pdf · Figura 8: Resultado da maximizac~ao de uma Normal bivariada por meio do algoritmo

Caso multivariado

Funcao Sombreiro:

g(x , y) = 10sin(√x2 + y2)√

x2 + y2

Figura 7: Valores de maximo (triangulo vermelho) para diferentes escolhas de

pontos iniciais (par).

23

Page 28: Algoritmo Nelder-Mead - Seminário I - Métodos Computacionaiscristianocs/MetComput/Apres10.pdf · Figura 8: Resultado da maximizac~ao de uma Normal bivariada por meio do algoritmo

Caso multivariado

Normal Bivariada:

Figura 8: Resultado da maximizacao de uma Normal bivariada por meio do

algoritmo Nelder-Mead, utilizando funcao optim do R. Maximo marcado por

triangulo vermelho.

24

Page 29: Algoritmo Nelder-Mead - Seminário I - Métodos Computacionaiscristianocs/MetComput/Apres10.pdf · Figura 8: Resultado da maximizac~ao de uma Normal bivariada por meio do algoritmo

Exercıcio

Page 30: Algoritmo Nelder-Mead - Seminário I - Métodos Computacionaiscristianocs/MetComput/Apres10.pdf · Figura 8: Resultado da maximizac~ao de uma Normal bivariada por meio do algoritmo

Exercıcio

Utilize o metodo de Nelder-Mead para maximizar uma funcao

multivariada de sua escolha, preferencialmente multimodal, diferente das

ja apresentadas neste relatorio, e faca um plot com os resultados, para

valores iniciais distintos. Comente os resultados.

Sugestao: utilizar a funcao optim do R e o pacote scatterplot3d, da

forma como foram apresentados neste relatorio.

25

Page 31: Algoritmo Nelder-Mead - Seminário I - Métodos Computacionaiscristianocs/MetComput/Apres10.pdf · Figura 8: Resultado da maximizac~ao de uma Normal bivariada por meio do algoritmo

Perguntas?

25

Page 32: Algoritmo Nelder-Mead - Seminário I - Métodos Computacionaiscristianocs/MetComput/Apres10.pdf · Figura 8: Resultado da maximizac~ao de uma Normal bivariada por meio do algoritmo

Referencias

Givens, G. H., Hoeting, J. A. (2013). Computational Statistics. 2 ed.

Wiley, 45-52.

CRAN. R documentation on optim function.