Кажется, есть два основных типа тестовых функций для оптимизаторов без производных:
- однострочники типа функции Розенброка ff., с начальными точками
- наборы реальных точек данных с интерполятором
Можно ли сравнить, скажем, 10d Rosenbrock с реальными проблемами 10d?
Можно было сравнивать по-разному: описывать структуру локальных минимумов
или запускать оптимизаторы ABC на Розенброке и некоторых реальных проблемах;
но оба из них кажутся трудными.
(Может быть, теоретики и экспериментаторы - это две совершенно разные культуры, поэтому я прошу химеру?)
Смотрите также:
- scicomp.SE вопрос: где можно получить хорошие наборы данных / тестовые задачи для тестирования алгоритмов / процедур?
- Хукер, «Тестирование эвристики: у нас все неправильно» , рассуждает: «акцент на конкуренции ... говорит нам, какие алгоритмы лучше, но не почему».
(Добавлено в сентябре 2014 г.):
На приведенном ниже графике сравниваются 3 алгоритма DFO для 14 тестовых функций в 8d из 10 случайных начальных точек: BOBYQA PRAXIS SBPLX из NLOpt
14 N-мерных тестовых функций, Python под gist.github из этого Matlab от A. Хедар ×
10 равномерно-случайных начальных точек в ограничительной рамке каждой функции.
Например, в Экли верхний ряд показывает, что SBPLX лучший, а PRAXIS ужасный; на Schwefel в нижней правой панели показано SBPLX, находящее минимум в 5-й случайной начальной точке.
В целом, BOBYQA лучше всех на 1, PRAXIS на 5 и SBPLX (~ Nelder-Mead с перезапусками) на 7 из 13 тестовых функций, с Powersum - броском. YMMV! В частности, Джонсон говорит: «Я бы посоветовал вам не использовать значение функции (ftol) или допуски параметров (xtol) в глобальной оптимизации».
Вывод: не кладите все свои деньги на одну лошадь или на одну тестовую функцию.