Como gerar vizinhos no algoritmo de escalada?

9

A escalada de montanhas parece ser uma ferramenta muito poderosa para otimização. No entanto, como gerar os "vizinhos" de uma solução sempre me intriga.

Por exemplo, estou otimizando uma solução . Aqui x 1 está no intervalo ( 0 , 0,1 ) , x 2 está no intervalo ( 0 , 100 ) , x 3 está no intervalo ( 0 , 1000000 ) . Qual é a melhor maneira de gerar "vizinhos"? Não posso escolher um "tamanho de etapa" aqui, porque um tamanho de etapa 1 é enorme para x 1 , mas muito menor que x 3(x1,x2,x3)x1(0,0.1)x2(0,100)x3(0,1000000)x1x3.

Qual é a melhor maneira genérica de gerar "vizinhos" em algoritmos de escalada?

vendeta
fonte

Respostas:

3

A solução de Vincent o levará ao primeiro obstáculo. Você ainda pode estar se perguntando como selecionar o tamanho da etapa, mesmo que todas as dimensões tenham o mesmo intervalo. Nesse caso, ajuda a entender o comportamento de sua função para que você possa selecionar um valor apropriado. Outra maneira é definir adaptativamente o tamanho da etapa com base no gradiente (siga levemente se a função estiver mudando bastante).

Este documento também pode ter algumas idéias interessantes: Em um algoritmo de escalada em montanhas com tamanho de etapa adaptável: em direção a um algoritmo de otimização de caixa preta sem parâmetros de controle

Emre
fonte
2

O mais fácil (e mais seguro) é reparametrizar seu problema para que todos os parâmetros tenham um intervalo comparável, digamos [0,1].

Como alternativa, você pode usar um tamanho de etapa diferente para cada parâmetro.


fonte