13 Stimmen

Optimierungspakete für R

Kennt jemand ein Optimierungspaket für R (ähnlich wie NUOPT für S+)?

21voto

gappy Punkte 9867

R hat viele, viele Pakete für die Optimierung; sehen Sie sich die CRAN Task view on Optimization an: http://cran.r-project.org/web/views/Optimization.html . Für nichtlineare Programme gibt es natürlich optim() Der Standardalgorithmus umfasst den Broyden-Fletcher-Goldfarb-Shanno-Algorithmus und den Nelder-Mead-Algorithmus. Das ist ein guter erster Anfang.

8voto

dwstu Punkte 809

Versuchen Sie lpSolve mit R.

Ein einfaches Beispiel:

# 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

8voto

dwstu Punkte 809

Sollten Sie auch die Rglpk Paket lösen LP-Probleme mit GLPK (GNU Linear Programming Kit) .

Ein Beispiel:

## 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-Ausgang:
(Beachten Sie, dass $status eine ganze Zahl mit Statusinformationen über die zurückgegebene Lösung. Wenn der Kontrollparameter canonicalize_status gesetzt ist (Standardeinstellung), wird 0 zurückgegeben, wenn die optimale Lösung gefunden wurde, und andernfalls ein Wert ungleich Null. Wenn der Kontrollparameter auf FALSE gesetzt ist, werden die GLPK-Statuscodes zurückgegeben).

$optimum
[1] 76.66667

$solution
[1]  0.000000  6.666667 16.666667

$status
[1] 0

7voto

JD Long Punkte 57096

Das von Galwegian erwähnte Linprog konzentriert sich auf die lineare Programmierung mit Hilfe des Simplex-Algorithmus. Darüber hinaus könnten Sie interessiert sein an fPortfolio wenn Sie eine Portfolio-Optimierung vornehmen.

4voto

Galwegian Punkte 40819

Ich habe verwendet linprog für lineare Probleme in der Vergangenheit.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X