- Medidas Estadísticas de Dispersión Relativa - junio 11, 2024
- Modelos SARIMA(Arima Estacionales).¿Qué son y cómo usarlos para Predecir? - enero 4, 2024
- ¿Qué es el RUIDO BLANCO ? Econometría en R - junio 21, 2023
La programación lineal (LP, también conocida como optimización lineal) es el campo de la programación matemática dedicado a maximizar o minimizar (optimizar) una función lineal, denominada función objetivo, de tal forma que las variables de dicha función estén sujetas a una serie de restricciones expresadas mediante un sistema de ecuaciones o inecuaciones también lineales. En este tutorial te muestro como puedes ayudarte de Rstudio para resolver problemas de este tipo.
CÓDIGO EN R DEL VIDEO
## PROGRAMACIÓN LINEAL EN R
install.packages(«lpSolve»)
library(lpSolve)
#EJERCICIO 1
#max z= 5×1 + 7×2
# sujeto a :
# 1×1 + 0x2 <= 16 1 0
# 2×1 + 3×2 <= 19 2 3
# 1×1 + 1×2 <= 8 1 1
# x1 , x2 >= 0
# 1 Fijar coeficientes de la función objetivo
funcion_objetivo <- c(5,7)
# 2 fijar la matriz correspondiente a los coeficientes de restricciones por filas
f_res <- matrix(c(1, 0,
2, 3,
1, 1), nrow = 3, byrow = TRUE)
# 3 Establecer signos de desigualdad
f.dir <- c(«<=»,
«<=»,
«<=»)
# 4.Establecer coeficientes del lado derecho
f.rhs <- c(16,
19,
8)
#5 función
lp(«max», funcion_objetivo, f_res, f.dir, f.rhs)
lp(«max», funcion_objetivo, f_res, f.dir, f.rhs)$solution
### EJERCICIO 2
# min 8×1 + 6×2
# sujeto a :
#x1 + x2 >= 0 1 1
#x1 >= 5 1 0
#x1 <= 12 1 0
#2×2 >= 6 0 2
#x2<= 10 0 1
# 1 Fijar coeficientes de la función objetivo
funcion_objetivo <- c(8,6)
# 2 fijar la matriz correspondiente a los coeficientes de restricciones por filas
f_res <- matrix(c(1,1,
1,0,
1,0,
0,2,
0,1), nrow =5,byrow = T)
# 3 Establecer signos de desigualdad
f.dir <- c(«>=»,»>=»,»<=»,»>=»,»<=»)
# 4.Establecer coeficientes del lado derecho
f.rhs <- c(20,5,12,6,10)
#5.
lp(«min», funcion_objetivo, f_res, f.dir, f.rhs)
lp(«min», funcion_objetivo, f_res, f.dir, f.rhs)$solution
##
# EJERCICIO 3
# MAX z= 20×1 + 30×2
# s.a
# 3X1 + 6×2 <= 150
# x1+0.5×2 <= 22
# x1 + x2 <= 27.5
# x1,x2 >=0
# 1 Fijar coeficientes de la función objetivo
funcion_objetivo <- c(20,30)
# 2 fijar la matriz correspondiente a los coeficientes de restricciones por filas
f_res <- matrix(c(3,6,
1,0.5,
1,1), nrow =3,byrow = T)
# 3 Establecer signos de desigualdad
f.dir <- c(«<=»,»<=»,»<=»)
# 4.Establecer coeficientes del lado derecho
f.rhs <- c(150,22,27.5)
#5.
lp(«max», funcion_objetivo, f_res, f.dir, f.rhs)
lp(«max», funcion_objetivo, f_res, f.dir, f.rhs)$solution
### EJEMPLO 4 CON 4 VARIABLES ( paquete linprog)
install.packages(«linprog»)
library(linprog)
Max z = 10×1 + 15×2 + 4×3 + 2×4
#s.a
#10×1 + 20×2 + 2×3 + 3×4 <= 4000
#5×1 + 5×2 + 5×3 + 4×4 <= 1500
#4×1 + 2×2 + 6×3 + 6×4 <= 800
f_objetivo <- c( 10,15,4,2) #valores función objetivo
f_coef <- matrix(c(10,5,4,20,5,2,2,5,6,3,4,6),ncol=4) #coeficientes
f_rhs<- c(4000,1500,800)
f_dir <- rep(«<=»,3)
f_optimizacion <- solveLP(f_objetivo,f_rhs,f_coef,maximum=TRUE)
summary(f_optimizacion)
f_optimizacion <- solveLP(f_objetivo,f_rhs,f_coef,maximum=TRUE,verbose=4)
#con verbose nos muestra todas las tablas que utilizó en el proceso
summary(f_optimizacion)