Parece que hay dos tipos principales de función de prueba para optimizadores no derivados:
- frases simples como la función Rosenbrock ff., con puntos de inicio
- conjuntos de puntos de datos reales, con un interpolador
¿Es posible comparar digamos 10d Rosenbrock con algún problema real de 10d?
Se podría comparar de varias maneras: describir la estructura de los mínimos locales,
o ejecutar optimizadores ABC en Rosenbrock y algunos problemas reales;
pero ambos parecen difíciles.
(Tal vez los teóricos y los experimentadores son solo dos culturas bastante diferentes, ¿entonces estoy pidiendo una quimera?)
Ver también:
- Pregunta de scicomp.SE: ¿Dónde se pueden obtener buenos conjuntos de datos / problemas de prueba para probar algoritmos / rutinas?
- Hooker, "Probar heurística: lo tenemos todo mal" es mordaz: "el énfasis en la competencia ... nos dice qué algoritmos son mejores pero no por qué".
(Agregado en septiembre de 2014):
la siguiente gráfica compara 3 algoritmos DFO en 14 funciones de prueba en 8d desde 10 puntos de inicio aleatorios: BOBYQA PRAXIS SBPLX de NLOpt 14 funciones de prueba N-dimensionales, Python bajo gist.github de este Matlab por A Hedar 10 puntos de inicio aleatorios uniformes en el cuadro delimitador de cada función.
×
En Ackley, por ejemplo, la fila superior muestra que SBPLX es mejor y PRAXIS terrible; en Schwefel, el panel inferior derecho muestra que SBPLX encuentra un mínimo en el 5º punto de inicio aleatorio.
En general, BOBYQA es el mejor en 1, PRAXIS en 5 y SBPLX (~ Nelder-Mead con reinicios) en 7 de 13 funciones de prueba, con Powersum un cambio. YMMV! En particular, Johnson dice: "Le aconsejaría que no utilice valores de función (ftol) o tolerancias de parámetros (xtol) en la optimización global".
Conclusión: no ponga todo su dinero en un caballo o en una función de prueba.