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.
la source
L'avantage des cas de test synthétiques comme la fonction de Rosenbrock est qu'il existe une littérature existante avec laquelle comparer, et il y a un sens dans la communauté comment les bonnes méthodes se comportent sur de tels cas de test. Si chacun utilisait son propre test, il serait beaucoup plus difficile de parvenir à un consensus sur les méthodes qui fonctionnent et celles qui ne fonctionnent pas.
la source
(J'espère qu'il n'y a pas d'objection à ce que je vire à la fin de cette discussion. Je suis nouveau ici, alors faites-moi savoir si j'ai transgressé!)
Les fonctions de test pour les algorithmes évolutionnaires sont maintenant beaucoup plus compliquées qu'elles ne l'étaient il y a même 2 ou 3 ans, comme le montrent les suites utilisées dans les compétitions lors de conférences comme le (très récent) Congrès de 2015 sur le calcul évolutionnaire. Voir:
http://www.cec2015.org/
Ces suites de tests incluent désormais des fonctions avec plusieurs interactions non linéaires entre les variables. Le nombre de variables peut atteindre 1000, et je suppose que cela pourrait augmenter dans un avenir proche.
Une autre innovation très récente est le "Black Box Optimization Competition". Voir: http://bbcomp.ini.rub.de/
Un algorithme peut interroger la valeur f (x) pour un point x, mais il n'obtient pas d'informations sur le gradient, et en particulier il ne peut faire aucune hypothèse sur la forme analytique de la fonction objectif.
Dans un sens, cela pourrait être plus proche de ce que vous avez appelé un "vrai problème" mais dans un cadre organisé et objectif.
la source
Tu peux avoir le meilleur des deux mondes. Le NIST a un ensemble de problèmes pour les minimiseurs, comme l'ajustement de ce polinôme du 10e degré , avec les résultats attendus et les incertitudes. Bien sûr, prouver que ces valeurs sont la meilleure solution réelle, ou l'existence et les propriétés d'autres minima locaux est plus difficile que sur une expression mathématique contrôlée.
la source