Pergunta

A biblioteca GNU Scientific tem um função de minimização multi-dimensional quadro . No entanto, suas advertências explicitamente diz que, quando usado em uma função com vários mínimos locais diferentes que retorna apenas uma solução arbitrária. Alguém sabe como você pode ir sobre como adaptá-lo para que ele iria retornar uma lista de todas mínimos locais (sujeito a alguns critérios de limite)?

Foi útil?

Solução

Não é baseado no GNU Scientific, mas eu encontrei este algoritmo para encontrar todos os mínimos locais: http://www.cs.uoi.gr/~lagaris/papers/MINF.pdf

Outras dicas

Qualquer padrão algoritmo de otimização procura por um local de minumum algum lugar "fechar" ao ponto de partida, seja escolhido por si próprio ou fornecido por você. Encontrar todos os mínimos locais pode ser um problema não-computável, porque você pode ter um número infiniten deles, mesmo em uma gama finita (por exemplo f (x) = [cos (1 / x)] ^ 2 tem um número infinito de mínimos locais em um (intervalo de 0, 1]). Supondo que você tenha um número finito de mínimos locais, encontrar todos eles é uma tarefa mais complexa do que encontrar um mínimo global, que por sua vez é um problema muito mais difícil do que encontrar um lugar mínimo local perto de você. Não há nenhuma maneira simples de se adaptar algoritmos de otimização locais para encontrar minima global. Mesmo algoritmos populares para encontrar um mínimo global, um algorithsm tais genética / estratégias de evolução, não garantem que eles visitam todos os mínimos locais. Na verdade, eles estão tentando evitá-lo.

A melhor maneira de usar GSL nesta situação seria olhar para a função de minimizar e tentar adivinhar onde os mínimos deve ser e depois procurá-los usando o código de GSL.

Acontece enxame de partículas método de otimização não é uma má opção para a tarefa de encontrar todos os mínimos locais e mínimo global de uma função. Códigos PSO para encontrar mínimo local PSO para encontrar mínimo global estão disponíveis para sua referência.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top