13 Stimmen

Optimierungspakete für R

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

4voto

Shibaprasadb Punkte 1081

Ein weiteres Paket ist ompr . Ein Vorteil dieses Pakets ist, dass es viele Solver gibt, die verwendet werden können und binary , continuous , integer können alle Variablen leicht hinzugefügt werden. Ein einfaches Beispiel:

library(tidyverse)
library(ompr)
library(ompr.roi)

model <-  MIPModel() %>%
  add_variable(x1, type = "integer") %>%
  add_variable(x2, type = "integer") %>%
  set_bounds(x1, lb = 0) %>%
  set_bounds(x2, lb = 0) %>%
  set_objective(x1 - x2, "max") %>%
  add_constraint(x1 + 2*x2 <= 150) %>%
  add_constraint(x1 >= 30) %>%
  add_constraint(x2 >= 40)

Lösen mit glpk :

library(ROI.plugin.glpk)
result <- solve_model(model, with_ROI(solver = "glpk", verbose = TRUE))

get_solution(result, x1)
get_solution(result, x2)

Sie kann auch mit anderen Solvern gelöst werden, wie symphony wo die gap_limit kann festgelegt werden, wenn das Problem komplex ist und viele Iterationen benötigt, um zu konvergieren:

library(ROI.plugin.symphony)
result <- solve_model(model, with_ROI(solver = "symphony",
                                      verbosity=-1, gap_limit=1.5))

3voto

beddotcom Punkte 421

Ich mag Gurobi. Es ist sehr teuer für eine Lizenz, aber es kann über viele Universitäten bezogen werden. Siehe hier http://www.gurobi.com/products/modeling-languages/r

3voto

nba2020 Punkte 512

Werfen Sie einen Blick auf die NLoptr Paket. Es hat eine recht umfangreiche Dokumentation mit Beispielen und vielen Algorithmen zur Auswahl, je nachdem, welches Problem Sie zu lösen versuchen (z. B. linear, nichtlinear, mit Einschränkungen)

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