INSTRUCCIONES: Realice las siguientes actividades y entregue la resolución en un archivo Rmarkdown compilado en un HMTL (puede utilizar el mismo formato del material de lectura).
Una compañía de partes automotrices fabrica distribuidores, bujías y magnetos en dos plantas, I y II. La matriz X representa la producción de las dos plantas para el minorista X y la matriz Y representa la producción de las dos plantas para el minorista Y. Escriba una matriz que represente la producción total alcanzada en las dos plantas para ambos minoristas, donde:
\[ X= \begin{pmatrix} 30 & 50\\ 800 & 720\\ 25 & 30 \end{pmatrix} \]
\[ Y= \begin{pmatrix} 15 & 25\\ 960 & 800\\ 10 & 5 \end{pmatrix} \]
# Matriz X (filas: BUJ, SPG, MAG; columnas: I, II)
X <- matrix(c(30, 50, 800, 720, 25, 30),3,2)
X
## [,1] [,2]
## [1,] 30 720
## [2,] 50 25
## [3,] 800 30
# Matriz Y (filas: BUJ, SPG, MAG; columnas: I, II)
Y <- matrix(c(15, 25, 960, 800, 10, 5),3,2)
Y
## [,1] [,2]
## [1,] 15 800
## [2,] 25 10
## [3,] 960 5
# Producción total (ambos minoristas)
T <- X + Y
T
## [,1] [,2]
## [1,] 45 1520
## [2,] 75 35
## [3,] 1760 35
#Etiquetas
rownames(T) <- c("BUJ", "SPG", "MAG")
colnames(T) <- c("Planta I", "Planta II")
T
## Planta I Planta II
## BUJ 45 1520
## SPG 75 35
## MAG 1760 35
Una tienda de mascotas tiene 6 gatitos, 10 perritos y 7 loros en exhibición. Si el valor de un gatito es de $55, el de cada perrito de $150 y el de cada loro de $35, por medio de la multiplicación de matrices encuentre el valor total del inventario de la tienda de mascotas.
#Inventario
# Cantidades en exhibición
Q <- matrix(c(6, 10, 7),1,3)
colnames(Q) <- c("Gatitos", "Perritos", "Loros")
rownames(Q) <- "Cantidad"
Q
## Gatitos Perritos Loros
## Cantidad 6 10 7
# Precios unitarios
P <- matrix(c(55, 150, 35),3,1)
rownames(P) <- c("Gatitos", "Perritos", "Loros")
colnames(P) <- "Precio_unitario"
P
## Precio_unitario
## Gatitos 55
## Perritos 150
## Loros 35
# Valor total del inventario (multiplicación matricial)
V <- Q %*% P
rownames(V) <- "Valor_total"
colnames(V) <- "USD"
V
## USD
## Valor_total 2075
Para los siguientes sistemas de ecuaciones de dos variables, resuelva los mismos mediante operaciones de fila, matriz inversa y realice su representación gráfica.
\[ \begin{cases} 2x + 3y = 0 \\ 5x - 7y = 0 \end{cases} \] \[ \begin{cases} 2x - 5y = 0 \\ 8x - 20y = 0 \end{cases} \]
# SISTEMAS DE ECUACIONES LINEALES
# SISTEMA 15
# 2x + 3y = 0
# 5x - 7y = 0
# Resolucion por operaciones de fila
F1 <- c(2, 3, 0)
F2 <- c(5, -7, 0)
M <- rbind(F1, F2)
M
## [,1] [,2] [,3]
## F1 2 3 0
## F2 5 -7 0
# F2 = F2 - (5/2)F1
M[2,] <- M[2,] - (5/2)*M[1,]
M
## [,1] [,2] [,3]
## F1 2 3.0 0
## F2 0 -14.5 0
# F2 = (-2/29)F2
M[2,] <- (-2/29)*M[2,]
M
## [,1] [,2] [,3]
## F1 2 3 0
## F2 0 1 0
# F1 = F1 - 3F2
M[1,] <- M[1,] - 3*M[2,]
M
## [,1] [,2] [,3]
## F1 2 0 0
## F2 0 1 0
M[,3] # solucion del sistema
## F1 F2
## 0 0
# Resolucion por matriz inversa
e1 <- c(2, 3)
e2 <- c(5, -7)
A <- rbind(e1, e2)
A
## [,1] [,2]
## e1 2 3
## e2 5 -7
b <- c(0, 0)
det(A)
## [1] -29
solve(A, b)
## [1] 0 0
####Resolucion grafica - Sistema 15
x <- seq(-10, 10, length = 200)
y1 <- -(2/3) * x
y2 <- (5/7) * x
plot(x, y1, type = "l", lwd = 3,
xlab = "x", ylab = "y",
main = "Sistema 15",
ylim = c(-5,5), xlim = c(-10,10))
lines(x, y2, lwd = 3, lty = 2)
abline(h = 0, v = 0, col = "gray")
legend("topleft",
legend = c("2x + 3y = 0", "5x - 7y = 0"),
lwd = 3,
lty = c(1,2))
# SISTEMA 16
# 2x - 5y = 0
# 8x - 20y = 0
# Resolucion por operaciones de fila
F1 <- c(2, -5, 0)
F2 <- c(8, -20, 0)
M <- rbind(F1, F2)
M
## [,1] [,2] [,3]
## F1 2 -5 0
## F2 8 -20 0
# F2 = F2 - 4F1
M[2,] <- M[2,] - 4*M[1,]
M
## [,1] [,2] [,3]
## F1 2 -5 0
## F2 0 0 0
M[,3] # infinitas soluciones
## F1 F2
## 0 0
###### Resolucion por matriz inversa
e1 <- c(2, -5)
e2 <- c(8, -20)
A <- rbind(e1, e2)
A
## [,1] [,2]
## e1 2 -5
## e2 8 -20
b <- c(0, 0)
det(A) # determinante = 0
## [1] 0
##### Resolucion grafica - Sistema 16
x <- seq(-10, 10, length = 200)
y1 <- (2/5) * x
y2 <- (2/5) * x
plot(x, y1, type = "l", lwd = 3,
xlab = "x", ylab = "y",
main = "Sistema 16",
ylim = c(-5,5), xlim = c(-10,10))
lines(x, y2, lwd = 3, lty = 2)
abline(h = 0, v = 0, col = "gray")
legend("topleft",
legend = c("2x - 5y = 0", "8x - 20y = 0"),
lwd = 3,
lty = c(1,2))
Para el modelo de Reddy Mikks, defina las siguientes restricciones y expréselas con un lado izquierdo lineal y un lado derecho constante:
Modelo base (Reddy Mikks):
Sea \(x_1\) = toneladas/día de pintura
para exteriores y \(x_2\) = toneladas/día de pintura para
interiores.
(a) La demanda diaria de pintura para interiores supera la de pintura para exteriores por al menos una tonelada: \[ x_2 \ge x_1 + 1 \quad \Longleftrightarrow \quad -x_1 + x_2 \ge 1 \]
(b) El consumo diario de materia prima \(M_2\) (toneladas) es a lo mucho 6 y por lo menos 3: \[ \begin{aligned} x_1 + 2x_2 &\le 6,\\ x_1 + 2x_2 &\ge 3 \end{aligned} \]
(c) La demanda de pintura para interiores no puede ser menor que la demanda de pintura para exteriores: \[ x_2 \ge x_1 \quad \Longleftrightarrow \quad -x_1 + x_2 \ge 0 \]
(d) La cantidad mínima de pintura que debe producirse tanto para interiores como para exteriores es de 3 toneladas: \[ \begin{aligned} x_1 &\ge 3,\\ x_2 &\ge 3 \end{aligned} \]
(e) La proporción de pintura para interiores respecto de la producción total no debe exceder de \(0.5\): \[ \frac{x_2}{x_1+x_2} \le 0.5 \quad \Longleftrightarrow \quad x_2 \le x_1 \quad \Longleftrightarrow \quad x_2 - x_1 \le 0 \] —
Determine la mejor solución factible entre las siguientes soluciones (factibles y no factibles) del Modelo de Reddy Mikks:
\[ \max\; z = 5x_1 + 4x_2 \]
\[ \text{s.a. }\; \begin{aligned} (1)\;& 6x_1 + 4x_2 \le 24,\\ (2)\;& x_1 + 2x_2 \le 6,\\ (3)\;& -x_1 + x_2 \le 1,\\ (4)\;& x_2 \le 2,\\ (5)\;& x_1 \ge 0,\; x_2 \ge 0. \end{aligned} \]
Evaluamos cada propuesta sustituyendo en las restricciones y calculando \(z\).
(a) \((x_1,x_2)=(1,4)\)
\[ \begin{aligned} (1)&:\; 6(1)+4(4)=6+16=22 \le 24\quad \\ (2)&:\; 1+2(4)=1+8=9 \le 6\quad \\ (3)&:\; -1+4=3 \le 1\quad \\ (4)&:\; 4 \le 2\quad \\ (5)&:\; 1\ge 0,\;4\ge 0\quad \end{aligned} \]
Conclusión: No factible (viola (2), (3) y (4)).
(b) \((x_1,x_2)=(2,2)\)
\[ \begin{aligned} (1)&:\; 6(2)+4(2)=12+8=20 \le 24\quad \\ (2)&:\; 2+2(2)=2+4=6 \le 6\quad \\ (3)&:\; -2+2=0 \le 1\quad \\ (4)&:\; 2 \le 2\quad \\ (5)&:\; 2\ge 0,\;2\ge 0\quad \end{aligned} \]
\[ z = 5(2) + 4(2) = 10 + 8 = 18 \]
Conclusión: Factible, con \(z=18\).
(c) \((x_1,x_2)=(3,1.5)\)
\[ \begin{aligned} (1)&:\; 6(3)+4(1.5)=18+6=24 \le 24\quad \\ (2)&:\; 3+2(1.5)=3+3=6 \le 6\quad \\ (3)&:\; -3+1.5=-1.5 \le 1\quad \\ (4)&:\; 1.5 \le 2\quad \\ (5)&:\; 3\ge 0,\;1.5\ge 0\quad \end{aligned} \]
\[ z = 5(3) + 4(1.5) = 15 + 6 = 21 \]
Conclusión: Factible, con \(z=21\).
(d) \((x_1,x_2)=(2,1)\)
\[ \begin{aligned} (1)&:\; 6(2)+4(1)=12+4=16 \le 24\quad \\ (2)&:\; 2+2(1)=2+2=4 \le 6\quad \\ (3)&:\; -2+1=-1 \le 1\quad \\ (4)&:\; 1 \le 2\quad \\ (5)&:\; 2\ge 0,\;1\ge 0\quad \end{aligned} \]
\[ z = 5(2) + 4(1) = 10 + 4 = 14 \]
Conclusión: Factible, con \(z=14\).
(e) \((x_1,x_2)=(2,-1)\)
\[ x_2=-1 < 0 \quad \Rightarrow \quad \text{no cumple (5)} \]
Conclusión: No factible ( no negatividad).
Mejor solución factible (entre las propuestas):
Comparando los valores objetivo de las soluciones factibles:
\[ z_{(b)}=18,\qquad z_{(c)}=21,\qquad z_{(d)}=14 \]
Para la solución factible \((x_1,x_2)=(2,2)\) del modelo de Reddy Mikks, determine las cantidades no usadas de las materias primas \(M_1\) y \(M_2\)
Disponibilidades diarias:
\[ M_1: 24 \text{ toneladas}, \qquad M_2: 6 \text{ toneladas}. \]
Consumos (según las restricciones del modelo):
\[ \text{Uso de } M_1 = 6x_1 + 4x_2, \qquad \text{Uso de } M_2 = x_1 + 2x_2. \]
Sustituyendo \((x_1,x_2)=(2,2)\):
\[ \text{Uso de } M_1 = 6(2)+4(2)=12+8=20 \]
\[ \text{No usado de } M_1 = 24-20 = \boxed{4} \]
\[ \text{Uso de } M_2 = 2+2(2)=2+4=6 \]
\[ \text{No usado de } M_2 = 6-6 = \boxed{0} \]
El modelo de Reddy Mikks permitió representar un problema real de producción mediante restricciones lineales.
La correcta formulación de las restricciones es fundamental para identificar la región factible.
No todas las soluciones propuestas cumplen simultáneamente las restricciones del modelo.
La mejor solución factible evaluada fue \((x_1, x_2) = (3, 1.5)\), con \(z = 21\).
El análisis de holguras mostró el uso eficiente de los recursos disponibles.
$$ La empresa Whitt Window tiene sólo tres empleados que hacen dos tipos de ventanas a mano: con marco de madera y con marco de aluminio. La ganancia es de $180 por cada ventana con marco de madera y de $90 por cada una con marco de aluminio. Doug hace marcos de madera y puede terminar 6 al día. Linda hace 4 marcos de aluminio por día. Bob forma y corta el vidrio y puede hacer 48 pies cuadrados de vidrio por día. Cada ventana con marco de madera emplea 6 pies cuadrados de vidrio y cada una de aluminio, 8 pies cuadrados.
La compañía desea determinar cuántas ventanas de cada tipo debe producir al día para maximizar la ganancia total. $$
library(lpSolve)
# Función objetivo
ganancia <- c(180, 90)
# Restricciones
restricciones <- matrix(
c(1, 0,
0, 1,
6, 8),
nrow = 3,
byrow = TRUE
)
rhs <- c(6, 4, 48)
direcciones <- c("<=", "<=", "<=")
# Resolver el modelo
resultado <- lp(
direction = "max",
objective.in = ganancia,
const.mat = restricciones,
const.dir = direcciones,
const.rhs = rhs
)
# Resultados
resultado$solution
## [1] 6.0 1.5
resultado$objval
## [1] 1215
La compañía de seguros Primo está en proceso de
introducir dos nuevas líneas de productos:
seguro de riesgo especial e hipotecas.
La ganancia esperada es de $5 por el seguro de riesgo especial y de $2 por unidad de hipoteca.
La administración desea establecer las cuotas de venta de las nuevas
líneas para maximizar la ganancia total esperada.
Los requerimientos de trabajo son los siguientes:
Requerimientos de horas de trabajo
| Departamento | Riesgo especial | Hipoteca | Horas disponibles |
|---|---|---|---|
| Suscripciones | 3 | 2 | 2400 |
| Administración | 0 | 1 | 800 |
| Reclamaciones | 2 | 0 | 1200 |
library(lpSolve)
# Función objetivo
# x1: seguros de riesgo especial
# x2: hipotecas
obj <- c(5, 2)
# Matriz de restricciones
mat <- matrix(
c(3, 2, # Suscripciones
0, 1, # Administración
2, 0), # Reclamaciones
nrow = 3,
byrow = TRUE
)
# Tipo de restricciones
dir <- c("<=", "<=", "<=")
# Lado derecho
rhs <- c(2400, 800, 1200)
# Resolver el modelo
sol <- lp(
direction = "max",
objective.in = obj,
const.mat = mat,
const.dir = dir,
const.rhs = rhs
)
# Tabla de resultados
resultado <- data.frame(
Variable = c("Seguro de riesgo especial", "Hipoteca"),
Valor_Optimo = sol$solution
)
resultado
## Variable Valor_Optimo
## 1 Seguro de riesgo especial 600
## 2 Hipoteca 300
# Ganancia máxima
sol$objval
## [1] 3600
# Interpretación automática
cat(
"La empresa debe vender",
sol$solution[1], "seguros de riesgo especial y",
sol$solution[2], "hipotecas para obtener una ganancia máxima de $",
sol$objval
)
## La empresa debe vender 600 seguros de riesgo especial y 300 hipotecas para obtener una ganancia máxima de $ 3600
La formulación en forma estándar permite convertir las restricciones en igualdades mediante variables de holgura.
La función objetivo define claramente la ganancia total a maximizar en ambos problemas.
Las restricciones representan de manera adecuada las limitaciones reales de recursos disponibles.
La programación lineal facilita la toma de decisiones óptimas en problemas de producción.
Utilice el método gráfico para resolver el siguiente problema de programación lineal.
Minimizar: \[ [ Z = 15x_1 + 20x_2 ] \] Sujeto a: \[ \begin{aligned} x_1 + 2x_2 &\ge 10 \\ 2x_1 - 3x_2 &\le 6 \\ x_1 + x_2 &\ge 6 \\ x_1 &\ge 0,\quad x_2 \ge 0 \end{aligned} \]
La región factible se obtiene a partir de la intersección de las
restricciones.
El punto óptimo es: \[
(x_1, x_2) = (2, 4)
\]
\[ Z_{\min} = 15(2) + 20(4) = 110 \]
# Método gráfico - Ejercicio D.I 3.4-5
# Definir rango
x1 <- seq(0, 10, length.out = 400)
# Restricciones
r1 <- (10 - x1) / 2 # x1 + 2x2 = 10
r2 <- (2*x1 - 6) / 3 # 2x1 - 3x2 = 6
r3 <- 6 - x1 # x1 + x2 = 6
# Gráfica
plot(x1, r1, type = "l", ylim = c(0, 6),
xlab = expression(x[1]), ylab = expression(x[2]),
main = "Ejercicio 4.1")
lines(x1, r2)
lines(x1, r3)
# Región factible (aproximada)
polygon(c(2, 4, 6), c(4, 2, 0), col = rgb(0.7, 0.7, 0.7, 0.5))
# Punto óptimo
points(2, 4, pch = 19)
text(2, 4, "(2,4)", pos = 4)
# Valor óptimo
Z_min <- 15*2 + 20*4
Z_min
## [1] 110
Utilice el método gráfico para resolver el siguiente problema.
Minimizar: \[ Z = 3x_1 + 2x_2 \]
Sujeto a: \[ \begin{aligned} x_1 + 2x_2 &\le 12 \\ 2x_1 + 3x_2 &= 12 \\ 2x_1 + x_2 &\ge 8 \\ x_1 &\ge 0,\quad x_2 \ge 0 \end{aligned} \]
La región factible queda determinada por la igualdad y las
restricciones dadas.
El punto óptimo es: \[
(x_1, x_2) = (3, 2)
\]
\[ Z_{\min} = 3(3) + 2(2) = 13 \]
``` r
# Método gráfico - Ejercicio 4.2
x1 <- seq(0, 10, length.out = 400)
# Restricciones
r1 <- (12 - x1) / 2 # x1 + 2x2 = 12
r2 <- (12 - 2*x1) / 3 # 2x1 + 3x2 = 12
r3 <- 8 - 2*x1 # 2x1 + x2 = 8
# Gráfica
plot(x1, r1, type = "l", ylim = c(0, 6),
xlab = expression(x[1]), ylab = expression(x[2]),
main = "Ejercicio 4.2")
lines(x1, r2)
lines(x1, r3)
# Región factible
polygon(c(3, 4, 2), c(2, 0, 4), col = rgb(0.7, 0.7, 0.7, 0.5))
# Punto óptimo
points(3, 2, pch = 19)
text(3, 2, "(3,2)", pos = 4)
# Valor óptimo
Z_min <- 3*3 + 2*2
Z_min
## [1] 13
Considere el siguiente modelo de programación lineal.
Minimizar: \[ Z = 40x_1 + 50x_2 \]
Sujeto a: \[ \begin{aligned} 2x_1 + 3x_2 &\ge 30 \\ x_1 + x_2 &\ge 12 \\ 2x_1 + x_2 &\ge 20 \\ x_1 &\ge 0,\quad x_2 \ge 0 \end{aligned} \]
La región factible está definida por restricciones de tipo mayor o
igual.
El punto óptimo es: \[
(x_1, x_2) = (6, 6)
\]
\[ Z_{\min} = 40(6) + 50(6) = 540 \]
``` r
# Método gráfico - Ejercicio 4.3
x1 <- seq(0, 15, length.out = 400)
# Restricciones
r1 <- (30 - 2*x1) / 3 # 2x1 + 3x2 = 30
r2 <- 12 - x1 # x1 + x2 = 12
r3 <- 20 - 2*x1 # 2x1 + x2 = 20
# Gráfica
plot(x1, r1, type = "l", ylim = c(0, 10),
xlab = expression(x[1]), ylab = expression(x[2]),
main = "Ejercicio 4.3")
lines(x1, r2)
lines(x1, r3)
# Región factible
polygon(c(6, 10, 12), c(6, 0, 0), col = rgb(0.7, 0.7, 0.7, 0.5))
# Punto óptimo
points(6, 6, pch = 19)
text(6, 6, "(6,6)", pos = 4)
# Valor óptimo
Z_min <- 40*6 + 50*6
Z_min
## [1] 540
La empresa Whitt Window tiene sólo tres empleados que hacen dos tipos de ventanas a mano: con marco de madera y con marco de aluminio. La ganancia es de $180 por cada ventana con marco de madera y de $90 por cada una con marco de aluminio. Doug hace marcos de madera y puede terminar 6 al día. Linda hace 4 marcos de aluminio por día. Bob forma y corta el vidrio y puede hacer 48 pies cuadrados de vidrio por día. Cada ventana con marco de madera emplea 6 pies cuadrados de vidrio y cada una de aluminio, 8 pies cuadrados.
La compañía desea determinar cuántas ventanas de cada tipo debe producir al día para maximizar la ganancia total.
Sean: - \(x_1\): ventanas con marco
de madera producidas por día
- \(x_2\): ventanas con marco de
aluminio producidas por día
\[ \max Z = 180x_1 + 90x_2 \]
\[ \begin{aligned} x_1 &\le 6 \\ x_2 &\le 4 \\ 6x_1 + 8x_2 &\le 48 \\ x_1 &\ge 0,\quad x_2 \ge 0 \end{aligned} \]
# Método gráfico - Ejercicio 5.1
# Rango de valores
x1 <- seq(0, 8, length.out = 400)
# Restricciones
r1 <- rep(4, length(x1)) # x2 = 4
r2 <- (48 - 6*x1) / 8 # 6x1 + 8x2 = 48
# Gráfica
plot(x1, r2, type = "l", ylim = c(0, 6),
xlab = expression(x[1]), ylab = expression(x[2]),
main = "Método gráfico - Ejercicio 5.1")
lines(x1, r1)
abline(v = 6)
# Región factible
polygon(c(0, 6, 6, 4, 0),
c(0, 0, 1.5, 4, 4),
col = rgb(0.7, 0.7, 0.7, 0.5))
# Punto óptimo
points(6, 1.5, pch = 19)
text(6, 1.5, "(6, 1.5)", pos = 4)
# Ganancia máxima
Z_max <- 180*6 + 90*1.5
Z_max
## [1] 1215
La carne con papas es el plato favorito de Ralph Edmund. Por eso decidió hacer una dieta continua de sólo estos dos alimentos (más algunos líquidos y suplementos de vitaminas) en todas sus comidas.
Ralph sabe que ésa no es la dieta más sana y quiere asegurarse de que toma las cantidades adecuadas de los dos alimentos para satisfacer los requerimientos nutricionales. Él ha obtenido la información nutricional y de costo que se muestra en el siguiente cuadro.
Ralph quiere determinar el número de porciones diarias (pueden ser fraccionales) de res y papas que cumplirían con estos requerimientos a un costo mínimo.
Tabla: Información nutricional y costos por porción
| Ingrediente | Res | Papas | Req. diario (g) |
|---|---|---|---|
| Carbohidratos | 5 | 15 | \(\geq 50\) |
| Proteínas | 20 | 5 | \(\geq 40\) |
| Grasa | 15 | 2 | \(\leq 60\) |
| Costo por porción ($) | 4 | 2 | – |
Ralph Edmund consume únicamente res y papas en su dieta diaria.
Desea cumplir ciertos requerimientos nutricionales diarios al
menor costo posible.
Las porciones pueden ser fraccionales.
Sean: - \(x_1\): porciones diarias
de res
- \(x_2\): porciones diarias de
papas
\[ \min Z = 4x_1 + 2x_2 \]
\[ \begin{aligned} 5x_1 + 15x_2 &\ge 50 \quad \text{(Carbohidratos)} \\ 20x_1 + 5x_2 &\ge 40 \quad \text{(Proteínas)} \\ 15x_1 + 2x_2 &\le 60 \quad \text{(Grasa)} \\ x_1 &\ge 0,\quad x_2 \ge 0 \end{aligned} \]
# Método gráfico - Ejercicio 5.2
# Definir rango
x1 <- seq(0, 6, length.out = 400)
# Restricciones despejadas
r1 <- (50 - 5*x1)/15 # Carbohidratos
r2 <- (40 - 20*x1)/5 # Proteínas
r3 <- (60 - 15*x1)/2 # Grasa
# Graficar
plot(x1, r1, type="l", lwd=2, ylim=c(0,5),
xlab=expression(x[1]), ylab=expression(x[2]),
main="Método gráfico - Ejercicio 5.2")
lines(x1, r2, lwd=2)
lines(x1, r3, lwd=2)
# Región factible (aproximada)
polygon(
c(0, 1.27, 2.91, 0),
c(3.33, 2.91, 0, 0),
col = rgb(0, 0, 1, 0.2)
)
# Punto óptimo
points(1.2727, 2.9091, pch=19, col="red", cex=1.5)
text(1.2727, 2.9091, "(1.27 , 2.91)", pos=4)
legend("topright",
legend=c("Carbohidratos", "Proteínas", "Grasa", "Región factible", "Óptimo"),
lwd=c(2,2,2,NA,NA),
pch=c(NA,NA,NA,15,19),
col=c("black","black","black",
rgb(0,0,1,0.4),"red"))
# =========================================================
# Ejercicio 5.2 - Resolución por el método Simplex
# =========================================================
library(lpSolve)
library(knitr)
# ---------------------------------------------------------
# Definición del modelo
# ---------------------------------------------------------
# Función objetivo (minimizar costo)
# x1 = porciones de res
# x2 = porciones de papas
costo <- c(4, 2)
# Matriz de restricciones
A <- matrix(c(
5, 15, # Carbohidratos
20, 5, # Proteínas
15, 2 # Grasa
), nrow = 3, byrow = TRUE)
# Sentido de las restricciones
dir <- c(">=", ">=", "<=")
# Lado derecho
b <- c(50, 40, 60)
# ---------------------------------------------------------
# Resolución por simplex
# ---------------------------------------------------------
resultado <- lp(
direction = "min",
objective.in = costo,
const.mat = A,
const.dir = dir,
const.rhs = b
)
# ---------------------------------------------------------
# Presentación de resultados
# ---------------------------------------------------------
solucion <- data.frame(
Variable = c("Porciones de res", "Porciones de papas"),
Valor = round(resultado$solution, 4)
)
costo_total <- data.frame(
Concepto = "Costo mínimo diario ($)",
Valor = round(resultado$objval, 4)
)
# Mostrar resultados
kable(solucion, caption = "Solución óptima del modelo")
| Variable | Valor |
|---|---|
| Porciones de res | 1.2727 |
| Porciones de papas | 2.9091 |
kable(costo_total, caption = "Costo mínimo diario")
| Concepto | Valor |
|---|---|
| Costo mínimo diario ($) | 10.9091 |
Mediante el modelo de programación lineal y su resolución por el método gráfico y el método simplex, se determinó que la dieta óptima para Ralph consiste en consumir aproximadamente 1.27 porciones de res y 2.91 porciones de papas por día. Esta combinación satisface todos los requerimientos nutricionales establecidos con el menor costo posible, el cual es de aproximadamente $10.91 diarios. El uso del método simplex confirma y valida la solución obtenida gráficamente, demostrando la eficiencia de la programación lineal para la toma de decisiones de minimización de costos.