Il semble y avoir deux principaux types de fonction de test pour les optimiseurs sans dérivation:
- des lignes simples comme la fonction Rosenbrock ff., avec des points de départ
- ensembles de points de données réels, avec un interpolateur
Est-il possible de comparer, disons, 10d Rosenbrock avec de vrais problèmes 10d?
On pourrait comparer de différentes manières: décrire la structure des minima locaux,
ou exécuter des optimiseurs ABC sur Rosenbrock et sur certains problèmes réels;
mais les deux semblent difficiles.
(Peut-être que les théoriciens et les expérimentateurs ne sont que deux cultures très différentes, alors je demande une chimère?)
Voir également:
- scicomp.SE question: Où peut-on obtenir de bons ensembles de données / problèmes de test pour tester des algorithmes / routines?
- Hooker, "Tester l'heuristique: nous avons tout faux" est cinglant: "l'accent mis sur la concurrence ... nous dit quels algorithmes sont meilleurs mais pas pourquoi."
(Ajouté en septembre 2014):
Le graphique ci-dessous compare 3 algorithmes du MPO sur 14 fonctions de test en 8d à partir de 10 points de départ aléatoires: BOBYQA PRAXIS SBPLX de NLOpt
14 fonctions de test N-dimensionnelles, Python sous gist.github de ce Matlab par A. Hedar × 10 points de départ aléatoires uniformes dans le cadre de sélection de chaque fonction.
Sur Ackley, par exemple, la rangée du haut montre que SBPLX est meilleur et PRAXIS terrible; sur Schwefel, le panneau en bas à droite montre SBPLX trouver un minimum sur le 5ème point de départ aléatoire.
Dans l'ensemble, BOBYQA est le meilleur sur 1, PRAXIS sur 5 et SBPLX (~ Nelder-Mead avec redémarrages) sur 7 des 13 fonctions de test, avec Powersum un tossup. YMMV! En particulier, Johnson déclare: «Je vous conseillerais de ne pas utiliser la fonction-valeur (ftol) ou les tolérances de paramètre (xtol) dans l'optimisation globale».
Conclusion: ne mettez pas tout votre argent sur un cheval ou sur une fonction de test.