R的优化包

r mathematical-optimization

18792 观看

7回复

7328 作者的声誉

有没有人知道R的任何优化包(类似于S +的NUOPT)?

作者: wcm 的来源 发布者: 2008 年 12 月 11 日

回应 (7)


3

37928 作者的声誉

我过去曾使用linprog来解决线性问题。

作者: Galwegian 发布者: 11.12.2008 02:06

5

37417 作者的声誉

Galwegian提到的Linprog专注于通过单纯形算法进行线性编程。此外,如果您正在进行投资组合优化,您可能对fPortfolio感兴趣。

作者: JD Long 发布者: 12.01.2009 04:20

16

5589 作者的声誉

R有许多优化包; 检查优化的CRAN任务视图:http//cran.r-project.org/web/views/Optimization.html。当然,对于非线性程序,optim()它是标准的,包括Broyden-Fletcher-Goldfarb-Shanno的算法和Nelder-Mead。这是一个很好的开始。

作者: gappy 发布者: 27.07.2009 09:23

4

639 作者的声誉

用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
作者: dwstu 发布者: 06.01.2013 04:55

6

639 作者的声誉

您还应该尝试使用Rglpk软件包解决GLPK(GNU线性编程套件)中的 LP问题。

一个例子:

## 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
作者: dwstu 发布者: 06.01.2013 05:13

1

101 作者的声誉

我喜欢Gurobi。许可证的价格非常昂贵,但可以通过许多大学获得。见http://www.gurobi.com/products/modeling-languages/r

作者: beddotcom 发布者: 11.01.2017 01:47

0

69 作者的声誉

看看NLoptr包。它有相当广泛的文档,包含示例和许多算法可供选择,具体取决于您要解决的问题(等线性,非线性,约束)

作者: nba2020 发布者: 20.06.2019 01:44
32x32