R0  = np.zeros([len(x1),len(x2)])

G = copy(R0)
for i in range(len(x1)):
    for j in range(len(x2)):
        G[i,j] = x1[i]*g1 + x2[j]*g2

R1 = copy(R0)
r1 = copy(R0)

for i in range(len(x1)):
    for j in range(len(x2)):
        R1[i,j] = x1[i]*t_cor1 + x2[j]*t_cor2
        if (R1[i,j]<=T_corte):
            r1[i,j] = 1
        else:
            R1[i,j] = 0
R1 = R1.T
r1 = r1.T
            
R2 = copy(R0)
r2 = copy(R0)

for i in range(len(x1)):
    for j in range(len(x2)):
        R2[i,j] = x1[i]*t_cos1 + x2[j]*t_cos2
        if (R2[i,j]<=T_costu):
            r2[i,j] = 1
R2 = R2.T
r2 = r2.T
            
R3 = copy(R0)
r3 = copy(R0)

for i in range(len(x1)):
    for j in range(len(x2)):
        R3[i,j] = x1[i]*t_emp1 + x2[j]*t_emp2
        if (R3[i,j]<=T_empaq):
            r3[i,j] = 1
R3 = R3.T
r3 = r3.T

"""
Explanation: $x_1$ Cantidad de Bombachitas producidas.
$x_2$ Cantidad de Baberos producidos.
Maximizar la ganancia total G:
$$ max(G) = x_1 \cdot g_1 + x_2 \cdot g_2 $$
con las restricciones:
$$ x_1 \cdot t_{cor1} + x_2 \cdot t_{cor2} \leq T_{corte}$$
$$ x_1 \cdot t_{cos1} + x_2 \cdot t_{cos2} \leq T_{costu}$$
$$ x_1 \cdot t_{emp1} + x_2 \cdot t_{emp2} \leq T_{empaq}$$
Se calculan las restricciones acá:
End of explanation
"""


fig = figure(figsize=(7,5))
plot(x1, (T_corte-x1*t_cor1)/t_cor2, c="g", lw=5)
pcolormesh(x1,x2, r1)
plt.title("Restriccion1")
xlabel("x1")
ylabel("x2"); ylim(0,150000)

"""
Explanation: Restricción 1
$$ x_1 \cdot t_{cor1} + x_2 \cdot t_{cor2} \leq T_{corte}$$
La cantidad de bombachitas ($x_1$unidades) por (0.1 min/unidad) el tiempo que se demora en CORTAR cada una más la cantidad de baberos($x_2$unidades) por (0.2 min/unidad) el tiempo que se demora en fabricar cada uno tiene que ser menor que el tiempo total destinado al corte (20000 minutos).
$$ x_1 \cdot (0.1 min/u) + x_2 \cdot (0.2 min/u) \leq 20000 min$$
En rojo se ve dónde se cumple la restricción 1, en azul dónde no la cumple.
En verde vemos la recta 
$$ x_1 \cdot t_{cor1} + x_2 \cdot t_{cor2} = T_{corte}$$
que es lo mismo que
$$ x_2 =  \frac{T_{corte} - x_1 \cdot t_{cor1}}{t_{cor2}}$$
End of explanation
"""


fig = figure(figsize=(7,5))
plot(x1, (T_costu-x1*t_cos1)/t_cos2, c="g", lw=5)
pcolormesh(x1,x2, r2)
plt.title("Restriccion2")
xlabel("x1")
ylabel("x2"); ylim(0,150000)

"""
Explanation: Restricción 2
$$ x_1 \cdot t_{cos1} + x_2 \cdot t_{cos2} \leq T_{costu}$$
La cantidad de bombachitas ($x_1$unidades) por (0.3 min/unidad) el tiempo que se demora en COSTURA cada una más la cantidad de baberos($x_2$unidades) por (0.1 min/unidad) el tiempo que se demora en COSTURA cada uno tiene que ser menor que el tiempo total destinado a COSTURA (20000 minutos).
$$ x_1 \cdot (0.3 min/u) + x_2 \cdot (0.1 min/u) \leq 36000 min$$
En rojo se ve dónde se cumple la restricción 2, en azul dónde no la cumple.
En verde vemos la recta 
$$ x_1 \cdot t_{cos1} + x_2 \cdot t_{cos2} = T_{costu}$$
que es lo mismo que
$$ x_2 =  \frac{T_{costu} - x_1 \cdot t_{cos1}}{t_{cos2}}$$
End of explanation
"""


fig = figure(figsize=(7,5))
plot(x1, (T_empaq-x1*t_emp1)/t_emp2, c="g", lw=5)
pcolormesh(x1,x2, r3)
plt.title("Restriccion3")
xlabel("x1")
ylabel("x2"); ylim(0,150000)


"""
Explanation: Restricción 3
$$ x_1 \cdot t_{emp1} + x_2 \cdot t_{emp2} \leq T_{empaq}$$
La cantidad de bombachitas ($x_1$unidades) por (0.1 min/unidad) el tiempo que se demora en EMPAQUE cada una más la cantidad de baberos($x_2$unidades) por (0.5 min/unidad) el tiempo que se demora en EMPAQUE cada uno tiene que ser menor que el tiempo total destinado a EMPAQUE (6000 minutos).
$$ x_1 \cdot (0.3 min/u) + x_2 \cdot (0.1 min/u) \leq 6000 min$$
Esta es la restriccion más fuerte, pues el tiempo de empaque total (6000 minutos) es más pequeño que el tiempo que se tiene destinado a corte y costura.
En rojo se ve dónde se cumple la restricción 3, en azul dónde no la cumple.
En verde vemos la recta 
$$ x_1 \cdot t_{emp1} + x_2 \cdot t_{emp2} = T_{empaq}$$
que es lo mismo que
$$ x_2 =  \frac{T_{empaq} - x_1 \cdot t_{emp1}}{t_{emp2}}$$
End of explanation
"""


fig = figure(figsize=(7,5))
plot(x1, (T_corte-x1*t_cor1)/t_cor2, c="g", lw=5)
plot(x1, (T_costu-x1*t_cos1)/t_cos2, c="g", lw=5)
plot(x1, (T_empaq-x1*t_emp1)/t_emp2, c="g", lw=5)

pcolormesh(x1,x2, r3+r2+r1)


plt.title("Tres restricciones", fontsize=20)
xlabel("x1", fontsize=18)
ylabel("x2", fontsize=18)
ylim(0,150000)

"""
Explanation: Nos interesa la región donde se cumplen las restricciones 1, 2 y 3 al mismo tiempo. Es decir, donde las tres regiones son viables (las tres en rojo)
End of explanation
"""


fig = figure(figsize=(7,5))

plot(x1, (T_corte-x1*t_cor1)/t_cor2, c="g", lw=5)
plot(x1, (T_costu-x1*t_cos1)/t_cos2, c="g", lw=5)
plot(x1, (T_empaq-x1*t_emp1)/t_emp2, c="g", lw=5)

pcolormesh(x1,x2, G*r1*r2*r3)
colorbar()
plt.title("Ganancia con las 3 restricciones", fontsize=20)
xlabel("x1", fontsize=18)
ylabel("x2", fontsize=18)
ylim(0,150000)

"""
Explanation: Ganancia
$$ G(x_1, x_2) = x_1 \cdot g_1 + x_2 \cdot g_2 $$
La ganancia es igual a la cantidad de bombachitas $x_1$ por la ganancia de cada bombachita ($g_1= \$ 1.8 c/u$), más la cantidad de baberos $x_2$ por la ganancia de cada babero ($g_2 = \$ 1.2 c/u$)
$$ G(x_1,x_2) = x_1 \cdot \$ 1.8 c/u$  + x_2 \cdot \$ 1.2 c/u $$
Ganancia: solución gráfica
Vamos a revisar la ganancia en la región donde se cumplen las tres condiciones. 
En el código de colores, azul representa la menor ganancia y rojo la mayor ganancia
End of explanation
"""


fig = figure(figsize=(7,5))

plot(x1, (T_corte-x1*t_cor1)/t_cor2, c="g", lw=2)
plot(x1, (T_costu-x1*t_cos1)/t_cos2, c="g", lw=2)
plot(x1, (T_empaq-x1*t_emp1)/t_emp2, c="g", lw=2)

pcolormesh(x1,x2, G*r1*r2*r3)
colorbar()
plt.title("Ganancia con las 3 restricciones", fontsize=20)
xlabel("x1, cantidad de bombachitas", fontsize=18)
ylabel("x2, cantidad de baberos", fontsize=18)
xlim(0,140000)
ylim(0,40000)

"""
Explanation: Ganancia: solución gráfica
Haciendo un zoom a la región de interés tenemos la siguiente gráfica:
End of explanation
"""


X1 = (T_empaq * t_cos2 - T_costu*t_emp2 )/ ( t_emp1*t_cos2 - t_emp2*t_cos1)

X1

"""
Explanation: El punto de mayor ganancia (el rojo más oscuro) resulta ser el punto donde se cumplen las restricciones 2 y 3. (Es el pundo de cruce de las dos líneas verdes).
Ganancia: solución analítica
La restricción 2 está dada por la recta:
$$ x_2 =  \frac{T_{costu} - x_1 \cdot t_{cos1}}{t_{cos2}}$$
La restricción 3 está dada por la recta
$$ x_2 =  \frac{T_{empaq} - x_1 \cdot t_{emp1}}{t_{emp2}}$$
Para calcular la cantidad $x_1$ que maximiza la ganancia, encontramos analíticamente dónde son iguales ambas rectas.
$$  \frac{T_{costu} - x_1 \cdot t_{cos1}}{t_{cos2}} 
   = \frac{T_{empaq} - x_1 \cdot t_{emp1}}{t_{emp2}}$$
Despejando $x_1$
$$ x_1 = \frac{ T_{emp} t_{cos2} -  T_{cos} t_{emp2} } { t_{emp1}t_{cos2} -t_{emp2}t_{cos1} } $$
End of explanation
"""


X2 = (T_costu - X1 * t_cos1)/t_cos2
X2

G = X1 * g1  +  X2 * g2
G

"""
Explanation: Ahora que tenemos X1, vamos a calcular X2 con la misma ecuación que teníamos, reemplazando X1 por 117143
$$ x_2 =  \frac{T_{costu} - x_1 \cdot t_{cos1}}{t_{cos2}}$$
End of explanation
"""


