Kennt jemand ein Optimierungspaket für R (ähnlich wie NUOPT für S+)?
Antworten
Zu viele Anzeigen?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.
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
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
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.
- See previous answers
- Weitere Antworten anzeigen