функция оптимизации в R, которая может принимать цель, градиент и гессиан?

У меня есть сложная целевая функция, которую я хочу оптимизировать. Задача оптимизации занимает значительное время для оптимизации. К счастью, у меня есть градиент и гессиан функции.

есть ли пакет оптимизации в R, который может принимать все три из этих входных данных? Класс "optim"не принимает Гессенский. Я сканировал страница задачи CRAN для оптимизации и ничего не трещит.

для чего это стоит, я могу выполните оптимизацию в MATLAB с помощью 'fminunc "с аргументами" GradObj " и "Гессенский".

2 ответов


Я думаю, что пакет trust что делает оптимизацию региона доверия сделает трюк. Из документации trust, вы увидите, что

эта функция выполняет минимизацию или максимизацию функции использование алгоритма доверительной области... (он принимает) функцию R, которая вычисляет значение, градиент и Гессиан минимизируемой функции или разворачивается и возвращает их в виде списка со значением компонентов , градиент и гессиан.

на самом деле, я думаю, что он использует тот же алгоритм используется fminunc.

по умолчанию fminunc выбирает масштабный алгоритм, если вы поставляете градиент в fun и установить GradObj в " on " с помощью optimset. Этот алгоритм является подпространственным методом доверительной области и основан на интерьерно-отражательный метод Ньютона описан в [2] и [3]. Каждый итерация включает приближенное решение большой линейной системы используя метод предобусловленные сопряженные градиенты (PCG). Видеть Крупномасштабный алгоритм fminunc, методы доверительной области для нелинейных Минимизация и предварительно обусловленный метод сопряженного градиента.


и stats::nlm() и stats::nlminb() возьмите аналитические градиенты и гессианы. Заметим, однако, что первое (nlm()) в настоящее время неправильно обновляет аналитический градиент но это исправлено в текущей версии разработки R (начиная с R-devel, svn rev 72555).