Пакеты оптимизации для R

Кто-нибудь знает какие-либо пакеты оптимизации для R (аналогично NUOPT для S +)?

11.12.2008 14:02:06
понижающее голосование за «этот вопрос не требует каких-либо исследований»
Spacedman 6.01.2013 09:51:22
Я «мог» сделать это длинным вопросом, говоря о деталях того, что мне нужно, и о том, как я исследовал linprog и нашел его нужным. Или я мог бы просто задать очень простой вопрос. Я поддерживаю это решение. Кстати, в то время как я не согласен с вашими причинами для того, чтобы опровергнуть меня, по крайней мере, у вас была порядочность, чтобы привести причину. Спасибо за вашу вежливость.
wcm 9.01.2013 21:02:12
Если бы вы сказали нам, куда вы смотрели, это показало бы некоторые усилия в области исследований - даже простое «я искал в Google или Cran для« оптимизации »» помогло бы. Нам не нужно указывать людям, чтобы они перебирали представления задач ... И если вы обнаружили, что linprog хочет, зачем принимать ответ, который говорит: «Я использовал linprog»?
Spacedman 9.01.2013 21:42:54
Он появляется на третьем месте в поиске Google под "линейной оптимизацией r", что означает, что мы должны быть практичны в этом и использовать его как справочник для будущих поисковиков.
marbel 11.02.2014 23:43:41
7 ОТВЕТОВ

В прошлом я использовал linprog для линейных задач.

3
11.12.2008 14:06:56
+1 и большое спасибо. Я не касался каких-либо вещей по оптимизации со времен TurboPascal. На странице пакетов была целая куча других пакетов оптимизации ( cran.r-project.org/web/packages ).
wcm 11.12.2008 15:27:13

Linprog, упомянутый Галвегианом, фокусируется на линейном программировании с помощью симплексного алгоритма. Кроме того, вас может заинтересовать fPortfolio, если вы занимаетесь оптимизацией портфеля.

5
12.01.2009 16:20:54

R имеет много-много пакетов для оптимизации; проверьте представление задачи CRAN по оптимизации: http://cran.r-project.org/web/views/Optimization.html . Конечно, для нелинейных программ существует optim()стандарт, включающий алгоритм Бройдена-Флетчера-Голдфарба-Шанно и Нелдера-Мида. Это хорошее первое начало.

17
6.01.2013 09:52:07

Попробуйте lpSolve с R.

Простой пример:

# Maximize 
#   x1 + 9 x2 +   x3 
# Subject to: 
#   x1 + 2 x2 + 3 x3 <= 9
# 3 x1 + 2 x2 + 2 x3 <= 15
f.obj <- c(1, 9, 3)
f.con <- matrix(c(1, 2, 3, 3, 2, 2), nrow = 2, byrow = TRUE)
f.dir <- c("<=", "<=")
f.rhs <- c(9, 15)

lp("max", f.obj, f.con, f.dir, f.rhs)
lp("max", f.obj, f.con, f.dir, f.rhs)$solution
4
6.01.2013 04:55:30

Вам также следует попробовать пакет Rglpk решить проблемы LP с GLPK (GNU Linear Programming Kit) .

Пример:

## Simple linear program.
## maximize:   2 x_1 + 4 x_2 + 3 x_3
## subject to: 3 x_1 + 4 x_2 + 2 x_3 <= 60
##             2 x_1 +   x_2 +   x_3 <= 40
##               x_1 + 3 x_2 + 2 x_3 <= 80
##               x_1, x_2, x_3 are non-negative real numbers

obj <- c(2, 4, 3)
mat <- matrix(c(3, 2, 1, 4, 1, 3, 2, 2, 2), nrow = 3)
dir <- c("<=", "<=", "<=")
rhs <- c(60, 40, 80)
max <- TRUE

Rglpk_solve_LP(obj, mat, dir, rhs, max = max)

Вывод R:
(Обратите внимание, что $statusвозвращено целое число с информацией о состоянии решения. Если параметр управления canonicalize_status установлен (по умолчанию), то он вернет 0 для найденного оптимального решения и ненулевое значение в противном случае. Если параметр управления равен при значении FALSE будут возвращены коды состояния GLPK).

$optimum
[1] 76.66667

$solution
[1]  0.000000  6.666667 16.666667

$status
[1] 0
6
6.01.2013 05:13:54

Мне нравится Гуроби. Это очень дорого для лицензии, но ее можно получить во многих университетах. Смотрите здесь http://www.gurobi.com/products/modeling-languages/r

1
11.01.2017 01:47:08

Посмотрите на пакет NLoptr . Он имеет довольно обширную документацию с примерами и множеством алгоритмов на выбор, в зависимости от того, какую проблему вы пытаетесь решить (и т. Д. Линейный, нелинейный, ограничение)

1
20.06.2019 13:44:55