En publicaciones anteriores, he demostrado cómo resolver programas lineales en R usando lpSolve, o en Python usando SciPy.optimize. En este ejemplo de codificación, quiero mostrar cómo llevar a cabo una optimización lineal simple utilizando el paquete FuzzyLP.
FuzzyLP es un paquete para programación lineal «»difusa»», es decir, optimización lineal bajo incertidumbre. En publicaciones posteriores, mostraré cómo llevar a cabo una programación lineal difusa usando FuzzyLP en R. Esta publicación se enfoca en un programa lineal simple que puede resolverse usando el algoritmo simplex estándar.
El problema a resolver se indica a continuación en sintaxis escalar:
Este problema se puede resolver describiéndolo en sintaxis de matriz de vectores, es decir, en la siguiente forma:
c es el vector coeficiente de la función objetivo. x es el vector que contiene las variables de optimización. A es la matriz de coeficientes de las restricciones lineales y b es el vector que contiene los valores de restricción.
En el siguiente ejemplo de codificación, estos vectores y matrices se definen en R y el problema se modela y resuelve usando crispLP, una función contenida en el paquete FuzzyLP. crispLP resolverá el problema utilizando el algoritmo simplex estándar.
#install.packages("FuzzyLP")
library(FuzzyLP)
# define vectores y matrices que describen el problema en cuestión
c <- c(3,4)
A <- matrix(c(1,1),nrow=1)
dir <- c("<=")
b <- c(1)
# usando crispLP de FuzzyLP para resolver el problema; ya que es un problema de maximización "máximo" tiene que ser VERDADERO
solution <- crispLP(objective = c,
A = A,
dir = dir,
b = b,
maximum = TRUE)
# solución de salida
solution
## x1 x2 objective
## [1,] 0 1 4
Ingeniero industrial especializado en optimización y simulación (R, Python, SQL, VBA)
Leave a Reply