функция оптимизации в 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).