11

R用の最適化パッケージを知っている人はいますか(S +のNUOPTに似ています)?

4

8 に答える 8

19

Rには、最適化のための多くのパッケージがあります。最適化に関するCRANタスクビューを確認してください:http://cran.r-project.org/web/views/Optimization.html。もちろん、非線形プログラムにはoptim()、標準であり、Broyden-Fletcher-Goldfarb-ShannoのアルゴリズムとNelder-Meadを含むがあります。それは良い最初のスタートです。

于 2009-07-27T21:23:39.600 に答える
6

また、 LP の問題をGLPK (GNU Linear Programming Kit)で解決するRglpkパッケージも試してみてください。

例:

## 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
于 2013-01-06T05:13:54.077 に答える
5

RでlpSolveを試してください。

簡単な例:

# 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
于 2013-01-06T04:55:30.267 に答える
5

Galwegian が言及した Linprog は、シンプレックス アルゴリズムによる線形計画法に焦点を当てています。さらに、ポートフォリオの最適化を行っている場合は、 fPortfolioに興味があるかもしれません。

于 2009-01-12T16:20:54.740 に答える
3

過去に線形問題にlinprogを使用したことがあります。

于 2008-12-11T14:06:56.157 に答える