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.

Funcion objetivo

\[Max: \\ FO <- 8X +5Y \]

Donde: \[ X= Cantidad \:de \:sombreros \:clase \:1\\ Y= Cantidad \:de \:sombreros \:clase \:2 \]

Nuestras restricciones

\[ \: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.

Primera Interseccion, entre R1 y R2

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 \]

Segunda Interseccion entre R2 Y eje X (X=0)

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 \]

Tercera Interseccion entre R1 y R3

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 \]

Cuarta Interseccion es el punto (0,0)

Evaluando los puntos en la funcion objetivo:

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

Los resultados son:

\[ 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 \]

Resolviendolo por el metodo analitico, la solucion es:

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

La solucion es la misma mediante ambos metodos:

\[ 100 \: sombreros \:clase \:1\\ 200 \: sombreros \: clase \:2 \]

Con esta combinacion de produccion obtenemos una utilidad maxima de:

\[ Q1,800.00 \]