Язык программирования R/Оптимизация
Перейти к навигации
Перейти к поиску
Шаблон:Язык программирования R/Навигация
Введение
Задачей оптимизации в математике называется задача о нахождении экстремума (минимума или максимума) вещественной функции в некоторой области. Как правило, рассматриваются области, принадлежащие и заданные набором равенств и неравенств. Смотрите страницу Википедии "Оптимизация".
optimize()разработана для одноразмерной оптимизиционной задачи.optim(),nlm(),ucminf()(пакет ucminf) могут быть использованы для многоразмерных оптимизационных задач.nlminb()для вынужденной оптимизации.- Могут быть полезны пакеты quadprog, minqa, rgenoud, trust.
- Были предприняты попытки усилить оптимизацию в R. Смотрите Обновление и улучшение optim(), используя слайды R 2009Шаблон:Ref-en[1], Оптимизационная страница R-forgeШаблон:Ref-en[2] и соответствующие пакеты включающие optimxШаблон:Ref-en.
Одноразмерная задача
Постановка задачи:
> func <- function(x){
+ return <- (x-2)^2
+ }
> (func(-2))
[1] 16
>
> # Рисование функции используя функцию 'curve'
> curve(func,-4,8)
>
> # Другой способ нарисовать функцию используя сетку
> grid <- seq(-10,10,by=.1)
> func(grid)
> plot(grid,func(grid))
>
> # можно найти минимум, используя функцию optimize()
> optimize(f=func,interval=c(-10,10))
$minimum
[1] 2
$objective
[1] 0
Метод Ньютона
- Пакет maxLik позволяет максимизировать вероятностную функцию. Также он включает средства для применения метода Ньютона.
- Функция
newtonraphson()в пакете spuRs.
Метод Нелдера — Мида
> func <- function(x){
+ out <- (x[1]-2)^2 + (x[2]-1)^2
+ return <- out
+ }
>
> optim(par=c(0,0), fn=func, gr = NULL,
+ method = c("Nelder-Mead"),
+ lower = -Inf, upper = Inf,
+ control = list(), hessian = T)
Метод Бройдена — Флетчера — Гольдфарба — Шанно (BFGS)
Смотрите страницу Википедии "Квазиньютоновские_методы"
> func <- function(x){
+ out <- (x[1]-2)^2 + (x[2]-1)^2
+ return <- out
+ }>
> optim(par=c(0,0), fn=func, gr = NULL,
+ method = c("BFGS"),
+ lower = -Inf, upper = Inf,
+ control = list(), hessian = T)
> optim(par=c(0,0), fn=func, gr = NULL,
+ method = c("L-BFGS-B"),
+ lower = -Inf, upper = Inf,
+ control = list(), hessian = T)
Алгоритм имитации отжига
- Алгоритм имитации отжига - полезный алгоритм для негладких функций. Он реализован в функции
optim().
> func <- function(x){
+ out <- (x[1]-2)^2 + (x[2]-1)^2
+ return <- out
+ }>
> optim(par=c(0,0), fn=func, gr = NULL,
+ method = c("SANN"),
+ lower = -Inf, upper = Inf,
+ control = list(), hessian = T)
Метод доверенных регионов
Теоретическую информацию можно почитать на http://en.wikipedia.org/wiki/Trust_regionШаблон:Ref-en.
Пакет "trust"Шаблон:Ref-en позволяет использовать этот метод.
Симплекс-метод
Пакет boot включает симплекс-метод.
Генетический алгоритм
Пакет rgenoud реализует генетический алгоритм.[3]
Ссылки
- Венаблс (Venables) и Рипли (Ripley), глава 16.
- Кэмерон (Cameron) и Триведи (Trivedi), Микроэконометрика, глава 10.
- Браун (Braun) и Мурдох (Murdoch) глава 7[4] очень хорошие ссылки на оптимизацию используя R.
- ↑ Обновление и улучшение optim(), используя слайды R 2009 http://www.agrocampus-ouest.fr/math/useR-2009/slides/Nash+Varadhan.pdfШаблон:Ref-en
- ↑ R-forge оптимизатор http://optimizer.r-forge.r-project.org/Шаблон:Ref-en
- ↑ Домашняя страница Жасжит Секон (Jasjeet Sekhon): http://sekhon.berkeley.edu/rgenoud/Шаблон:Ref-en
- ↑ Первый курс статистического программирования с R http://portal.acm.org/citation.cfm?id=1385416Шаблон:Ref-en