Кажется, есть два основных типа тестовых функций для оптимизаторов без производных:
- однострочники типа функции Розенброка 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) в глобальной оптимизации».
Вывод: не кладите все свои деньги на одну лошадь или на одну тестовую функцию.
источник
Преимущество синтетических тест-кейсов, таких как функция Розенброка, состоит в том, что существует сравнительная литература, и в сообществе есть смысл, как хорошие методы ведут себя на таких тест-кейсах. Если бы каждый использовал свой собственный тестовый сценарий, было бы гораздо сложнее прийти к общему мнению, какие методы работают, а какие нет.
источник
(Я надеюсь, что я не возражаю против того, чтобы я вступил в конец этой дискуссии. Я новичок здесь, поэтому, пожалуйста, дайте мне знать, если я преступил!)
Тестовые функции для эволюционных алгоритмов теперь намного сложнее, чем они были даже 2 или 3 года назад, что видно по наборам, используемым на соревнованиях на конференциях, таких как (совсем недавно) Конгресс по эволюционным вычислениям 2015 года. Видеть:
http://www.cec2015.org/
Эти тестовые наборы теперь включают функции с несколькими нелинейными взаимодействиями между переменными. Число переменных может достигать 1000, и я думаю, что это может увеличиться в ближайшем будущем.
Еще одно недавнее нововведение - «Конкурс по оптимизации черного ящика». Видеть: http://bbcomp.ini.rub.de/
Алгоритм может запросить значение f (x) для точки x, но он не получает информацию о градиенте и, в частности, он не может делать какие-либо предположения об аналитической форме целевой функции.
В некотором смысле это может быть ближе к тому, что вы назвали «реальной проблемой», но в организованной, объективной обстановке.
источник
Вы можете иметь лучшее из обоих миров. У NIST есть ряд проблем для минимизаторов, таких как подгонка этого полинома 10-й степени , с ожидаемыми результатами и неопределенностями. Конечно, доказать, что эти значения являются действительно лучшим решением, или существование и свойства других локальных минимумов сложнее, чем с помощью контролируемого математического выражения.
источник