Con la informacion compartida en el archivo [data.csv] (https://www.dropbox.com/s/j1v0ltq4jzunott/data.csv?dl=0) y con el programa Rstudio, que consiste en la demanda, los costos unitarios y los precios de venta para dos ubicaciones (P1, P2) por favor identifique los siguientes enunciados.
Como primer punto vamos a cargar la data en R
datos <- select(read.csv("data.csv", T, ","),cu, pu1, pu2, Demanda)
head(datos)
## cu pu1 pu2 Demanda
## 1 30.28702 35.00325 33.50517 1722.533
## 2 30.28756 35.00967 33.50640 1722.652
## 3 30.29246 35.01222 33.50801 1722.774
## 4 30.30488 35.01288 33.50812 1723.528
## 5 30.32599 35.01461 33.51729 1723.701
## 6 30.32673 35.01551 33.51872 1723.726
datos$ct <- datos$cu*datos$Demanda
head(data.frame(datos$ct))
## datos.ct
## 1 52170.39
## 2 52174.94
## 3 52187.06
## 4 52231.30
## 5 52272.96
## 6 52274.98
# Aqui encontramos el precio del lugar 1
fit_1<-lm(datos$Demanda~datos$ct)
fit_1
##
## Call:
## lm(formula = datos$Demanda ~ datos$ct)
##
## Coefficients:
## (Intercept) datos$ct
## 690.29101 0.02082
datos$ingresosTotalesPU1 <- datos$pu1*datos$Demanda
datos$ingresosTotalesPU2 <- datos$pu2*datos$Demanda
reg_costo <- lm(datos$cu ~ datos$Demanda)
reg_costo
##
## Call:
## lm(formula = datos$cu ~ datos$Demanda)
##
## Coefficients:
## (Intercept) datos$Demanda
## 21.947821 0.004925
reg_pu1 <- lm(datos$pu1 ~ datos$Demanda)
reg_pu1
##
## Call:
## lm(formula = datos$pu1 ~ datos$Demanda)
##
## Coefficients:
## (Intercept) datos$Demanda
## 30.790631 0.002453
reg_pu2 <- lm(datos$pu2 ~ datos$Demanda)
reg_pu2
##
## Call:
## lm(formula = datos$pu2 ~ datos$Demanda)
##
## Coefficients:
## (Intercept) datos$Demanda
## 25.305969 0.004776
Primer sistema de ecuaciones \[ \begin{matrix} 21.947821 = -0.004925x + y & & & funcion \: de \: costo\\ 30.790631= -0.002453 x + y & & & funcion \: de \: Ingreso \: lugar \:1\\ \end{matrix} \]
Ahora escribiendo el sistema como una variable matricial
# Para el sitema de ecuaciones 1
A_1<-matrix(c(-0.004925, 1, -0.002453,1 ), 2,2, byrow = T)
A_1
## [,1] [,2]
## [1,] -0.004925 1
## [2,] -0.002453 1
Y
Segundo sistema de ecuaciones
\[ \begin{matrix} 21.947821 = -0.004925 x + y & & & funcion \: de \: costo\\ 25.305969= -0.004776 x + y & & & funcion \: de \: Ingreso \: lugar \:2\\ \end{matrix} \]
# Para el sitema de ecuaciones 2
A_2<-matrix(c(-0.004925, 1, -0.004776, 1 ), 2,2, byrow = T)
A_2
## [,1] [,2]
## [1,] -0.004925 1
## [2,] -0.004776 1
Ahora las matrices $ B^T $
# Para el sistema de ecuaciones 1
B_1<-c(21.947821, 30.790631)
B_1
## [1] 21.94782 30.79063
# Para el sistema de ecuaciones 2
B_2<-c(21.947821, 25.305969)
B_2
## [1] 21.94782 25.30597
Ahora resolvemos para el sistema de ecuaciones 1
r_1<-solve(A_1, B_1)
r_1
## [1] 3577.18851 39.56547
Ahora resolvemos para el sistema de ecuaciones 2
r_2<-solve(A_2, B_2)
r_2
## [1] 22537.906 132.947
#graficando las soluciones
plot(datos$Demanda, predict(reg_costo), type = "l", col = "red", main="Costo y Precio", xlab="Demanda", ylab="Precio")
lines(datos$Demanda, predict(reg_pu1), type="l", col="blue")
lines(datos$Demanda, predict(reg_pu2), type="l", col="green")
legend("topleft", legend=c("Costo Total", "Ventas pu1", "Ventas pu2"),
col=c("red", "blue", "green"), lty=1:1, cex=0.8)
datos$uti_1<-datos$pu1-datos$cu
head(data.frame(datos$uti_1))
## datos.uti_1
## 1 4.716227
## 2 4.722107
## 3 4.719757
## 4 4.708006
## 5 4.688620
## 6 4.688783
datos$uti_2<-(datos$pu2-datos$cu)
head(data.frame(datos$uti_2))
## datos.uti_2
## 1 3.218147
## 2 3.218834
## 3 3.215550
## 4 3.203249
## 5 3.191298
## 6 3.191988
plot(datos$Demanda, datos$uti_1, type = "l", col="blue", main = "Utilidades", xlab="Demanda", ylab="Utilidad")
points(datos$Demanda, datos$uti_2, type = "l", col="red")
legend("topright", legend=c("Utilidades pu1", "Utilidades pu2"),
col=c("blue", "red"), lty=1:1, cex=0.8)
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 Q. 8.00 por cada sombrero de la clase 1 y Q. 5.00 por cada uno de la clase 2.
Definicion de las variables: \[ \begin{matrix} x_1 & = & \# \:sobreros \: tipo \:1, eje \:Y\\ x_2& = & \# \:sobrero\: tipo\:2, eje \:X\\ \end{matrix} \]
Funcion Objetivo
\[Max: \\ z= 8 x_1 +5x_2 \]
Restricciones
\[ \begin{matrix} 2x_1+x_2+ &\leq 400 \\ x_1& \leq 150 \\ x_2& \leq 200 \\ \end{matrix} \]
Con las condiciones de no negatividad
\[ x_1,x_2 \geq 0 \]
library("ggplot2")
func1 <- function(x) 200 - x/2
func2 <- function(x) 150
d<-data.frame(x=c(0, 200, 200, 100, 0),y=c(0, 0, 100, 150, 150),t=c("area"),r=c("0,0","200,0","200,100","100,150","0,150"))
p <- ggplot(data = data.frame(x = 0), mapping = aes(x = x))
p + stat_function(fun = func1, color="green") + stat_function(fun = func2, color="blue") +
geom_vline(xintercept = 200, col="red") + geom_vline(xintercept = 0) +
geom_polygon(data=d, mapping=aes(x=x, y=y, group=t), fill="yellow") +
geom_point(data=d, aes(x=x, y=y, color=t)) +
geom_text(data=d, aes(x=x, y=y, label=r), hjust=0, vjust=1, size=4) + xlim(0,240)
#evaluando
fo_p2 <- function(x_1,x_2){
z <-8 * x_1 + 5 * x_2
cat("8 *",x_1,"+ 5 *",x_2," = ",z,"\n")
}
matriz_soluciones <- matrix(c(0,0,0,200,100,200,150,100,150,0), nrow=5, ncol=2, byrow=T)
matriz_soluciones
## [,1] [,2]
## [1,] 0 0
## [2,] 0 200
## [3,] 100 200
## [4,] 150 100
## [5,] 150 0
cat("z= 8x_1 + 5x_2\n")
## z= 8x_1 + 5x_2
for(i in 1:5){
fo_p2(matriz_soluciones[i,1], matriz_soluciones[i,2])
}
## 8 * 0 + 5 * 0 = 0
## 8 * 0 + 5 * 200 = 1000
## 8 * 100 + 5 * 200 = 1800
## 8 * 150 + 5 * 100 = 1700
## 8 * 150 + 5 * 0 = 1200
#resolviendo por matrices
matriz_fo <- matrix(c(8,5), nrow=2)
matriz_sumatoria <- matrix(c(1), nrow=1)
matriz_solucion_parcial <- matriz_soluciones%*%matriz_fo
matriz_solucion_z <- matriz_solucion_parcial%*%matriz_sumatoria
matriz_solucion_final <- cbind(matriz_soluciones, matriz_solucion_z)
colnames(matriz_solucion_final) <- c("x1", "x2", "funcion objetivo")
matriz_solucion_final
## x1 x2 funcion objetivo
## [1,] 0 0 0
## [2,] 0 200 1000
## [3,] 100 200 1800
## [4,] 150 100 1700
## [5,] 150 0 1200
Se puede determinar que la maxima utilidad se alcanza cuando se produce 100 sombreros del primer tipo y 200 sombreros del segundo, alcanzando una utilidad de Q. 1,800.00
Desarrollos Alfa posee 800 acres de terreno en un lago. Antes practicamente nohabía reglamento a los desarrollos habitacionales en torno al lago. Las orillas delmismo hoy estan pobladas con casas de campo, y debido a la carencia de serviciosde alcantarillado, hay muchas fosas septicas, en su mayor parte mal instaladas. Atraves de los anos, las filtraciones de las fosas septicas han ocasionado un graveproblema de contaminacion de agua.Para mitigar el degradamiento de la calidad del agua, las autoridades municipalesaprobaron reglamentos estrictos para todos los desarrollos futuros:
Sólo se pueden construir casas para una, dos y tres familias, y las casasunifamiliares deben ser por lo menos el 50% del total.
Para limitar la cantidad de fosas sépticas, se requieren tamaños mínimos delote de 2; 3 y 4 acres para las casas con una, dos y tres familias,respectivamente.
Se deben establecer áreas de recreo de 1 acre cada una, en una proporciónde, al menos, una por 200 familias. *Para preservar la ecología del lago, no se debe bombear agua subterráneapara uso doméstico ni de riego.
El presidente de Desarrollo Alfa estudia la posibilidad de desarrollar los 800 acresde la empresa. El nuevo desarrollo incluirá casas para una, dos y tres familias. Seestima que el 15% de los acres se debe asignar a calles de servicios comunitarios.Alfa estima que los ingresos por las diversas unidades de habitación serán:
| Unidad de habitacion | Una | Dos | Tres |
|---|---|---|---|
| Rendimiento neto por unidad | 10,000 | 12,000 | 15,000 |
El costo de conectar el servicio de agua es proporcional a la cantidad de unidadesconstruidas. Sin embargo, el municipio cobra un mínimo de U$ 100.000 por elproyecto. Además, el aumento de la capacidad actual del sistema deabastecimiento de agua se limita a 200.000 galones por día, durante la temporadaalta. Los datos siguientes resumen el costo de conectar el servicio de agua, ytambién el consumo de agua, suponiendo familias de tamaño promedio:
| Unidad de habitacion | Una | Dos | Tres | Parques y jardines |
|---|---|---|---|---|
| Costo del servicio por agua de unidad | 1,000 | 1,200 | 1,400 | 800 |
| Consumo de agua por unidad | 400 | 600 | 840 | 450 |
Definicion de variables \[ \begin{matrix} x_1 & = & \# \:casas \: unifamiliares \\ x_2& = & \# \:casas\: dos-familias \\ x_3& = & \# \:casas\: tres-familias \\ x_4& = & \# \:?rea\: recreo \\ \end{matrix} \]
Funcion objetivo \[Max: \\ z= 10, 000 x_1 +12, 000x_2 +15, 000x_3 \]
Restricciones
\[ \begin{matrix} 2x_1+3x_2+4x_2+x_4 & = 680 & Uso \:de \: terrenos \\ 0.5 x_1-0.5x_2-0.5x_3& =0 & \# \:casas\: unifamilaires \\ -x_1-2x_2-3x_3x_3+200x_4& =0 & \# \:casas\: tres-familias \\ x_1+1.2x_2+1.4x_3+0.8x_4& =100 & \# \:Servicio\: agua \\ 0.4x_1+0.6x_2+0.84x_3+0.54x_4& =200 & \# \:Consumo\: agua \\ \end{matrix} \]
No negatividad \[ x_1,x_2,x_3,x_4 \geq 0 \]
Definiendo la funcion objetivo
library("lpSolve")
Objetivo <- c(10000, 12000, 15000, 0)
Objetivo
## [1] 10000 12000 15000 0
Definiendo la matriz de coeficiente de restricciones
Coef_Restricciones <-matrix(c(2, 3, 4, 1, 0.5, -0.5,-0.5,0,-1,-2,-3,200, 1,1.2,1.4,0.8,0.4,0.6,0.84,0.54), nrow = 5, ncol = 4, byrow = TRUE)
Coef_Restricciones
## [,1] [,2] [,3] [,4]
## [1,] 2.0 3.0 4.00 1.00
## [2,] 0.5 -0.5 -0.50 0.00
## [3,] -1.0 -2.0 -3.00 200.00
## [4,] 1.0 1.2 1.40 0.80
## [5,] 0.4 0.6 0.84 0.54
Aplicando los signos a las restricciones
Dir_Restricciones <- c("<=", ">=", ">=", ">=","<=")
Dir_Restricciones
## [1] "<=" ">=" ">=" ">=" "<="
Vector de solucion de restricciones
Sol_Restricciones <- c(680, 0, 0, 100, 200)
Sol_Restricciones
## [1] 680 0 0 100 200
Aplicando el metodo simplex para encontrar la solucion
Solucion <- lp(direction = "max",
objective.in = Objetivo,
const.mat = Coef_Restricciones,
const.dir = Dir_Restricciones,
const.rhs = Sol_Restricciones)
Sol<-c(Solucion$objval, Solucion$solution)
Sol
## [1] 3391521.197007 339.152120 0.000000 0.000000
## [5] 1.695761
Donde nos indica que solo debemos construir 339.15 casas de una habitacion para obtener la maxima ganancia de Q. 3,391,521.00