Parece haver dois tipos principais de função de teste para otimizadores sem derivação:
- one-liners como a função Rosenbrock ff., com pontos de partida
- conjuntos de pontos de dados reais, com um interpolador
É possível comparar, digamos, a 10d Rosenbrock com algum problema 10d real?
Pode-se comparar de várias maneiras: descrever a estrutura dos mínimos locais
ou executar os otimizadores ABC em Rosenbrock e alguns problemas reais;
mas ambos parecem difíceis.
(Talvez teóricos e experimentadores sejam apenas duas culturas bem diferentes, então estou pedindo uma quimera?)
Veja também:
- pergunta scicomp.SE: Onde podemos obter bons conjuntos de dados / problemas de teste para testar algoritmos / rotinas?
- Hooker, "Testando heurísticas: temos tudo errado", é contundente: "a ênfase na competição ... nos diz quais algoritmos são melhores, mas não o porquê".
(Adicionado em setembro de 2014):
O gráfico abaixo compara 3 algoritmos DFO em 14 funções de teste em 8d a partir de 10 pontos de início aleatórios: BOBYQA PRAXIS SBPLX de NLOpt 14 funções de teste N-dimensionais, Python sob o gist.github deste Matlab por A Hedar 10 pontos de início aleatórios uniformes na caixa delimitadora de cada função.
Em Ackley, por exemplo, a linha superior mostra que SBPLX é melhor e PRAXIS terrível; em Schwefel, o painel inferior direito mostra o SBPLX encontrando um mínimo no quinto ponto inicial aleatório.
No geral, BOBYQA é melhor em 1, PRAXIS em 5 e SBPLX (~ Nelder-Mead com reinicializações) em 7 de 13 funções de teste, com Powersum um lançamento. YMMV! Em particular, Johnson diz: "Eu aconselho você a não usar valor de função (ftol) ou tolerâncias de parâmetro (xtol) na otimização global".
Conclusão: não coloque todo o seu dinheiro em um cavalo ou em uma função de teste.