¿Alguien sabe de algún paquete de optimización para R (similar a NUOPT para S +)?Paquetes de optimización para R
Respuesta
Linprog, mencionado por Galwegian, se centra en la programación lineal a través del algoritmo simplex. Además, puede estar interesado en fPortfolio si está optimizando su cartera.
R tiene muchos, muchos paquetes para la optimización; verifique la vista de Tarea CRAN sobre Optimización: http://cran.r-project.org/web/views/Optimization.html. Por supuesto, para los programas no lineales, existe optim()
, que es estándar e incluye el algoritmo de Broyden-Fletcher-Goldfarb-Shanno y Nelder-Mead. Es un buen comienzo.
Trate lpSolve con R.
Un ejemplo sencillo:
# 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
también debe tratar el paquete Rglpk resolver problemas de PL con GLPK (GNU Linear Programming Kit).
Un ejemplo:
## 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)
salida R:.
(Tenga en cuenta que $status
un número entero con información de estado acerca de la solución volvió Si el canonicalize_status parámetro de control se establece (el valor predeterminado), entonces se volverá 0 para la solución óptima que se encuentra, y no es cero de lo contrario. Si el parámetro de control se establece en FALSO, devolverá los códigos de estado GLPK).
$optimum
[1] 76.66667
$solution
[1] 0.000000 6.666667 16.666667
$status
[1] 0
Me gusta Gurobi. Es muy costoso para una licencia, pero se puede obtener a través de muchas universidades. Ver aquí http://www.gurobi.com/products/modeling-languages/r
- 1. R Paquetes para Limnology
- 2. optimización paralela en R
- 3. optimización restringida en R
- 4. ¿Dónde almacena R los paquetes?
- 5. Instale R Paquetes sin Internet
- 6. Optimización restringida de funciones personalizadas en R
- 7. R equivalente al fmincon de MATLAB para la optimización restringida?
- 8. Ir más allá de la función de optimización de R
- 9. Instalación de paquetes R disponibles para todos los usuarios
- 10. Espacios de nombres en paquetes R
- 11. actualización R paquetes mientras R se está ejecutando
- 12. Diferencia entre tests/y inst/tests/para paquetes R
- 13. Diferencia entre paquetes r-base y r-recomendados
- 14. Building R Paquetes usando GCC alternativo
- 15. Variables globales en paquetes en R
- 16. ¿Cómo cargar paquetes en R automáticamente?
- 17. Problemas al instalar los paquetes R
- 18. ¿Cómo instalar las dependencias cuando se usa "R CMD INSTALL" para instalar los paquetes R?
- 19. ¿Hay alguna herramienta de administración de repositorios de paquetes R?
- 20. Creación de un repositorio de paquetes R local
- 21. ¿Cómo administrar múltiples ubicaciones de paquetes (carpetas) en R?
- 22. incluir ejemplos de datos en el desarrollo de paquetes R
- 23. actualizar automáticamente los paquetes instalados a partir de R-forjar
- 24. R Novato confundido sobre la instalación de paquetes
- 25. Implementación del algoritmo de optimización de enjambre de partículas en R
- 26. Relación entre los paquetes de ploteo en R
- 27. ¿Hay alguna manera de instalar paquetes R usando emacs?
- 28. Paquetes de aprendizaje de máquina R para tratar factores con un gran número de niveles
- 29. 0 optimización
- 30. ¿Es una buena práctica actualizar los paquetes R a menudo?
downvote para 'esta pregunta no muestra ningún esfuerzo de investigación' – Spacedman
"Podría haber hecho una pregunta larga sobre los detalles de lo que necesitaba y cómo había investigado linprog y lo había encontrado deficiente. O podría hacer una pregunta muy simple. Estoy de acuerdo con esa decisión. Por cierto, aunque no estoy de acuerdo con tus razones para vencerme, al menos tuviste la decencia de dar una razón. Gracias por tu cortesia. – wcm
Si nos hubiera dicho dónde había mirado, eso habría mostrado algún esfuerzo de investigación, incluso un simple "busqué en Google o Cran para 'optimización'" hubiera sido útil. No deberíamos tener que apuntar a las personas a las vistas de tareas de Cran ... Y si hubieras encontrado que linprog quería, ¿por qué aceptas la respuesta que dice "He usado linprog"? – Spacedman