Исходя из того, что вы сказали: я предполагаю, что вы должны оптимизировать для 50 переменных; Я также предполагаю, что у вас возникла ситуация, когда очень сложно найти аналитические производные (не говоря уже о том, чтобы получить числовые значения), и что ваша оптимизация не ограничена.
Позвольте мне подчеркнуть, что вы немного несчастливы, потому что между 25-30 и 100 переменными это немного сумеречная зона, когда дело доходит до выбора между процедурами оптимизации большого или малого масштаба. Тем не менее, ничего не потеряно.
Учитывая, что даже производные первого порядка дороги, чтобы получить такой вид убивает идею метода Ньютона. Возможно, вам повезет с Quasi-Newton (BFGS), хотя если ваш гессиан немного диагонали, как начать с. CG обычно немного медленнее, чем BFGS, так что, вероятно, это не сильно улучшит ситуацию; используйте его, если память также является проблемой (или просто используйте L-BFGS в этом случае). Кроме того, учитывая, насколько медленно вы оцениваете вашу функцию, простой алгоритм поиска по крутому спуску / линии будет мучительно медленным; То же самое происходит с имитацией отжига и другими вариантами случайного поиска (я предполагаю, что у вас нет доступа к HMC и ко всему прочему).
Итак, когда вам нужен лучший результат, когда речь идет об оценке одной функции: используйте метод Пауэлла, а также протестируйте COBYLA; Несмотря на то, что он является ограниченным алгоритмом оптимизации, поскольку он будет внутренне линейно приближать градиент вашей функции для ускорения процесса, он сможет использовать преимущества линейности вашей функции. Также обязательно попробуйте NLopt для Python . У них много оптимизаторов без градиента; попробуйте UOBYQA; это также детище Пауэлла (Безусловная оптимизация с помощью квадратичных приближений).
Очень кратко: алгоритмы N-CG зависят от вычисления гессиана, и ваш гессиан кажется очень дорогим для вычисления. NLCG и BFGS не требуют этого, хотя они могут попытаться вычислить его один раз на первом этапе.
Я специально исключил симплексный алгоритм, потому что это совершенно другой зверь; не имеет ничего общего с градиентами как таковыми. Попробуйте, но я не могу это прокомментировать; это действительно зависит от природы вашей проблемы.
Для первого хорошего справочника по численной оптимизации книга CTKelly « Итерационные методы для оптимизации» поможет вам довольно далеко, довольно приятно.