Виходячи з сказаного: я припускаю, що вам доведеться оптимізувати 50 змінних; Я також припускаю, що у вас виникає ситуація, що дуже дорого знайти аналітичні похідні (не кажучи вже про отримання чисельних даних) і що ваша оптимізація не обмежується.
Дозвольте наголосити, ви трохи невдало спричиняєте між 25-30 та 100 змінними, це трохи зона сутінків, коли справа доходить до вибору між оптимізацією великих або малих масштабів. Сказавши, що хоча нічого не втрачено.
З огляду на те, що навіть похідне перше замовлення дороге, щоб отримати такий вид, вбиває ідею методу Ньютона. Можливо, вам пощастить з Квазі-Ньютоном (BFGS), хоча якщо ваш гессіан трохи діагональний, як би почати. CG зазвичай трохи повільніше, ніж BFGS, так що, ймовірно, це не покращить багато чого; використовуйте його, якщо пам'ять також є проблемою (або просто перейдіть на L-BFGS у такому випадку). Окрім того, враховуючи, наскільки повільно оцінювати свою функцію, простий алгоритм пошуку спуску / лінії буде катастрофічно повільним; те ж саме стосується симуляційного відпалу та інших випадкових варіантів пошуку (я припускаю, що у вас немає доступу до HMC та всього цього джазу).
Отже, коли вам потрібен найкращий удар для вашого долара, коли мова заходить про оцінку однієї функції: перейдіть за методом Пауелла, а також протестуйте COBYLA; незважаючи на обмежений алгоритм оптимізації, оскільки він буде внутрішньо лінійно наближати градієнт вашої функції для прискорення роботи, він зможе скористатися лінійністю вашої функції. Також обов'язково спробуйте NLopt для Python . У них багато оптимізаторів без градієнтів; спробуйте UOBYQA; це дітище Пауелла (Нестримне оптимізація шляхом квадратичних наближень).
Дуже коротко: алгоритми N-CG залежать від обчислення гессіанців, і ваш гессіанський здається дуже дорогим для обчислення. NLCG та BFGS цього не потребують, хоча вони можуть спробувати обчислити його один раз на першому кроці.
Я спеціально залишив алгоритм симплекс, тому що це зовсім інший звір; нічого спільного з градієнтами як такими. Спробуйте, але я не можу реально коментувати це; це дійсно залежить від характеру вашої проблеми.
Для першої хорошої довідки про чисельну оптимізацію Книга CTKelly Ітеративні методи оптимізації ви отримаєте досить далеко, досить приємно.