Salvaje Oeste produce dos clases de sombrero vaquero. Un sombrero de clase 1 requiere el doble de mano de obra que uno de la clase 2. Si toda la mano de obra se dedicara sólo a la clase 2, la empresa podría producir diariamente 400 de esos sombreros. Los límites de mercado respectivo son 150 y 200 sombreros diarios para esas clases. La utilidad es Q8 por cada sombrero de la clase 1 y Q5 por cada uno de la clase 2.
Encuentre la solucion gráfica para determinar la combinación máxima de utilidad.
\[Max: \\ FO <- 8X +5Y \]
Donde: \[ X= Cantidad \:de \:sombreros \:clase \:1\\ Y= Cantidad \:de \:sombreros \:clase \:2 \]
\[ \:Restriccion\: 1\\2X + Y <- 400\\ \:Restriccion \:2\\ Y <- 200 \\ \:Restriccion \:3\\ X <- 150 \\ \:No\: Negatividad\\ X , Y >-0 \]
Representaremos las funciones en funcion de Y para luego graficarlas y conocer el area que maximiza y sus limites, que serian las intersecciones entre funciones.
y_R1 <- function(x) 400-2*x
y_R2 <- function(x) 200
Tenemos una funcion que no se puede colocar en funcion de X, La cual es la Restriccion 3
X <- 150
Para graficar necesitamos instalar el paquete:
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 3.5.3
Definimos el dominio para X :
x = seq(0,200)
Procedemos ahora a crear la informacion para la grafica:
data<-data.frame(x, r_1=y_R1(x), r_2=y_R2(x))
data.t<-transform(data, z=pmax(r_1, pmin(r_2)))
ggplot(data, aes(x=x))+
geom_line(aes(y=r_1), col="red")+
geom_vline(xintercept = 150, col="blue")+
geom_line(aes(y=r_2), col="green")
Ya con las rectas en la grafica y tomando el area que nos limita de acuerdo a los signos de las funciones(si es mayor o igual / menor o igual), tomamos las intersecciones que delimitan el area donde todas las funciones toman parte y luego procedemos a encontrar los valores de esas intersecciones.
Igualamos las funciones y lo resolvemos matricialmente:
\[ y_R1 +2x <- 400 \\ y_R2 <- 200 \]
Las matrices del sistema son:
A<-matrix(c(1,2,1,0), nrow=2, ncol = 2, byrow = T)
A
## [,1] [,2]
## [1,] 1 2
## [2,] 1 0
B<-matrix(c(400,200), nrow=2, ncol = 1, byrow = T)
B
## [,1]
## [1,] 400
## [2,] 200
Resolviendo, da como resultado:
r<-solve(t(A)%*%A)%*%t(A)%*%B
r
## [,1]
## [1,] 200
## [2,] 100
Tenemos el primer punto para evaluar en la Funcion Objetivo (100,200) \[ X = 100\\ Y = 200 \]
Igualamos las funciones y las resolvemos matricialmente
\[ x <- 0 \\ y_R2 <- 200 \]
Las matrices del sisema son:
C<-matrix(c(0,1,1,0), nrow=2, ncol = 2, byrow = T)
C
## [,1] [,2]
## [1,] 0 1
## [2,] 1 0
D<-matrix(c(0,200), nrow=2, ncol = 1, byrow = T)
D
## [,1]
## [1,] 0
## [2,] 200
Resolviendo, da como resultado:
r<-solve(t(C)%*%C)%*%t(C)%*%D
r
## [,1]
## [1,] 200
## [2,] 0
Tenemos ahora un segundo punto a evaluar en la funcion objetivo (0,200)
\[ X= 0\\ Y= 200 \]
Igualamos las funciones y las resolvemos matricialmente
\[ y_R1 +2x <- 400 \\ x <- 150 \]
Las matrices del sisema son:
E<-matrix(c(1,2,0,1), nrow=2, ncol = 2, byrow = T)
E
## [,1] [,2]
## [1,] 1 2
## [2,] 0 1
F<-matrix(c(400,150), nrow=2, ncol = 1, byrow = T)
F
## [,1]
## [1,] 400
## [2,] 150
Resolviendo, da como resultado:
r<-solve(t(E)%*%E)%*%t(E)%*%F
r
## [,1]
## [1,] 100
## [2,] 150
Tenemos ahora un tercer punto a evaluar en la funcion objetivo (150,100)
\[ X= 150\\ Y= 100 \]
Definimos la matriz de puntos a evaluar:
puntos<-matrix(c(100,200,0,200,150,100,0,0), nrow=4, ncol = 2, byrow=T)
puntos
## [,1] [,2]
## [1,] 100 200
## [2,] 0 200
## [3,] 150 100
## [4,] 0 0
Evaluando los puntos en la funcion objetivo:
FO<-matrix(c(8,5), nrow=2, ncol=1)
FO
## [,1]
## [1,] 8
## [2,] 5
Solucion=puntos%*%FO
Solucion
## [,1]
## [1,] 1800
## [2,] 1000
## [3,] 1700
## [4,] 0
\[ Para \:el \:Punto\: 1\: (100,200) \:la\: FO \:da\: como\: resultado \:1,800\\ Para \:el \:Punto\: 2\: (0,200) \:la\: FO \:da\: como\: resultado \: 1,000\\ Para \:el \:Punto\: 3\: (150,100) \:la\: FO \:da\: como\: resultado \:1,700\\ Para \:el \:Punto\: 4\: (0,0) \:la\: FO \:da\: como\: resultado \: 0\\ \]
Por lo que si queremos obtener la mayor utilidad debemos de producir: \[ 100 \: sombreros \:clase \:1\\ 200 \: sombreros \: clase \:2 \]
Con esta combinacion de produccion obtenemos una utilidad maxima de:
\[ Q1,800.00 \]
Definiendo la Funcion Objetivo
Objetivo_1 <- c(8, 5)
Definiendo las restricciones y soluciones:
Coef_Restricciones_1 <-matrix(c(2, 1, 1, 0 , 0, 1 ),
nrow = 3,
ncol = 2,
byrow = TRUE)
Sol_Restricciones_1 <- c(400, 150, 200)
Definiendo las Direcciones de las Restricciones:
Dir_Restricciones_1 <- c("<=", "<=", "<=")
Necesitmoas el siguiente paquete para solucionar:
library(lpSolve)
La solución es:
Solucion_1 <- lp(direction = "max",
objective.in = Objetivo_1,
const.mat = Coef_Restricciones_1,
const.dir = Dir_Restricciones_1,
const.rhs = Sol_Restricciones_1)
Sol<-c(Solucion_1$objval, Solucion_1$solution)
Sol
## [1] 1800 100 200
\[ 100 \: sombreros \:clase \:1\\ 200 \: sombreros \: clase \:2 \]
Con esta combinacion de produccion obtenemos una utilidad maxima de:
\[ Q1,800.00 \]