<jupyter_start><jupyter_text>Modelos de inventarios      <NAME> Este cuadernillo explorará los **Modelos de inventario** cuya demanda tiene un comportamiento determinístico o estocástico. Se reconocerán algunas funciones básicas de **Python** que tendrán una aplicación posterior en los modelos anteriormente mencionados.   ¿Qué es un inventario?Cuando hablamos de **inventarios**, nos referirimos a mercancías, materiales, piezas, entre otro tipo de bienes puestos en reserva para uso o ventas futuras. Algunas de las razones para que una empresa tenga un inventario se relacionan con la posibilidad de hacer una buena planeación a futuro de sus activos o como provisión ante comportamientos fluctuantes o de incertidumbre. Es por esto que, vamos a considerar dos preguntas en las políticas de inventarios: i) **¿Qué tanto debe ser renovado el inventario?** y ii)  **¿Cuándo debe ser renovado el inventario?**, Vale aclarar que estás preguntas tendrán una respuesta conforme al comportamiento que tenga la demanda dentro del modelo generado. En este cuadernillo se van a considerar dos tipos de modelos de inventario: i) Los determinísticos, que son aquellos cuya demanda es conocida y, ii) Los estocásticos en donde la demanda es una variable aleatoria para cualquier periodo. De acuerdo con ello, el siguiente diagrama resume algunos de los modelos a considerar durante este curso de acuerdo al comportamiento de la demanda:![Imagen](https://github.com/MRippe7/images/blob/master/MapCon.png?raw=true)Ahora bien, antes de continuar con el desarrollo de cada uno de los modelos anteriormente mencionados, se hace necesario hablar de algunos de los costos asociados a un inventario, como lo son: i) Los **costos de retención**, que corresponden a aquellos costos asociados al mantenimiento del inventario tales como: seguros, intereses, depreciación, transporte, impuestos, hurtos, daños, etc.)  y  ii) **los costos de ordenar**, que cubre los fletes, despachos, órdenes de compra, servicio telefónico etc.   Cantidad económica de pedido**Situación 1** (*Tomada del libro : Producción y operaciones aplicadas a las Pyme, autor: <NAME>*)La empresa Jean & Jean, fabricante de ropa informal, tiene previsto un programa anual de producción de 40 000 unidades de jeans para dama, la información proveniente del departamento  de registro y costos es la siguiente: **Costo unitario**|Tela| 107 metros/unidad | \$ 3600/metro  ||--------|--------|---------||Mano de obra| 16 minutos/unidad | \$ 16.11/minutos ||Gastos generales| \$ 17440000/40000un. | |**Costo de pedido**|Hora máquinas| 8 horas / pedido | \$ 746 / hora | |---:|---:|---:|                 |Mano de obra preparación| 18 hora/ pedido | \$ 966.6 / hora|**Carga gastos generales y administrativos**Horas máquinas  + Mano de obra **Costo de almacenamiento en porcentaje del inventario promedio**|Seguros| 0.4||----|----||Intereses|2.3||Depreciación|1.6||Transporte|0.6||Impuestos|1.8||Manejo y distribución|1.2||Obsolescencia|0.5||Pérdida|0.2||Equipos|0.8||Espacio|2.5|¿Cuál es número de "corridas" de producción que generan el menor costo posible?¿Cuál es el menor costo posible?<jupyter_code>#Gasto tela x unidad
tela_x_unidad=1.07*3600
mano_obra_x_unidad=16*16.11
gastos_generales_x_unidad=17440000/4000
print("Costo unitario de la tela es:",tela_x_unidad)
print("Costo unitario de la mano de obra es:",mano_obra_x_unidad)
print("Costo unitario de los gastos generales",gastos_generales_x_unidad)
#Costo de preparación
Maquinas_x_pedido=8*746
Mano_de_obra_x_pedido=18*966.6
print("Costo por pedido de la maquinaria:",Maquinas_x_pedido)
print("Costo por pedido mano de obra:",Mano_de_obra_x_pedido)
#Gasto general y administrativo
gastos_generales_x_pedido=Maquinas_x_pedido+Mano_de_obra_x_pedido
print("gastos generales por pedido:",gastos_generales_x_pedido)
print ("Total costo unitario",tela_x_unidad+gastos_generales_x_unidad)
print("Total costo por pedido",Maquinas_x_pedido+Mano_de_obra_x_pedido+gastos_generales_x_pedido)
#Costos de almacenamiento


p=0.4+2.3+1.6+0.6+1.8+1.2+0.5+0.2+0.8+2.5
print("Costo de almacenamiento (% del inventario)",round(p,1))<jupyter_output>Costo de almacenamiento (% del inventario) 11.9<jupyter_text>$$C_t=Cu*S+Cp*(S/q0)+(P*Cu*q0/2)$$<jupyter_code>from sympy import *
x=Symbol("x")
Costo=4545.76*40000+46733.6*(40000/x)+(0.119*4545.76*x/2)
plot(Costo,(x,500,40000))
Costo.subs(x,40000)<jupyter_output><empty_output><jupyter_text>Antes de hallar las respuestas de la **situación 1** es importante interpretar el comportamiento del modelo de cantidad económica como un diagrama que depende del tiempo y del tamaño del inventario:![Imagen](https://github.com/MRippe7/images/blob/master/EOQ.png?raw=true)De igual forma, se identifican las siguientes ecuaciones que responden no solo a las preguntas de **¿Qué tanto debe ser renovado el inventario?** y **¿Cuándo debe ser renovado el inventario?**, sino también los costos y tiempos asociados al **modelo de cantidad económica de pedido****¿Cuánto? Cantidad económica de pedido que minimiza costos**$Q^*=\sqrt{\dfrac{2*S*Cp}{p*Cu}}$ \\**Costo de mantener una unidad en el inventario**$C_m=T_r * C_u$ \\**Costo total= Costo de retención + Costo de ordenar**$C_{total}=\dfrac{1}{2} Q\cdot C_m + \dfrac{D}{Q} \cdot C_p$**¿Cuándo? Punto de reorden**$P_o=S\cdot /t_E$ (Ecuación de más fácil comprensión en el cuaderno del profesor)Tiempo de ciclo$T=\dfrac{DH \cdot Q^*}{D}$<jupyter_code>Cantidad_óptima_x_pedido=sqrt((2*40000*46733.6)/(0.119*4545.76))
Cantidad_óptima_x_pedido
Cantidad_pedidos_anuales=N(40000/Cantidad_óptima_x_pedido)
Cantidad_pedidos_anuales 
#N para que haga calculo
Periodo_entre_pedidos=N(365/Cantidad_pedidos_anuales)
Periodo_entre_pedidos
#Cada cuanto se debe renovar inventario
Costo.subs(x,2629)<jupyter_output><empty_output><jupyter_text>**CALCULADORA EOQ**<jupyter_code>D=input("Por favor digite el valor de la demanda anual:" )
C_p=input("Por favor digite el costo de pedido del modelo:" )
C_u=input("Por favor digite el costo unitario:" )
Tr=input("Por favor digite la tasa de retención:" )
t_E=input("POr favor digite el tiempo de espera:" )
D, C_p, C_u, Tr, t_E = float(D), float(C_p), float(C_u), float(Tr), float(t_E) #Hago esto(float) porque las variables pueden tener decimales
C_m=Tr*C_u # Esta fórmula calcula el costo de mantener una unidad 
Q=((2*D*C_p)/(C_m))**(1/2)
C_t=((1/2)*Q*C_m)+((D/Q)*C_p)+C_u*D
T=(365*Q/D)
print("La cantidad de económica de pedido es:", Q)
print("El costo mínimo es: ",C_t)
print(T)<jupyter_output>Por favor digite el valor de la demanda anual:1
Por favor digite el costo de pedido del modelo:1
Por favor digite el costo unitario:1
Por favor digite la tasa de retención:1
POr favor digite el tiempo de espera:1
La cantidad de económica de pedido es: 1.4142135623730951
El costo mínimo es:  2.414213562373095
516.1879502661798<jupyter_text>Tamaño de lote de producción**Situación 2** (*Tomada del libro : Producción y operaciones aplicadas a las Pyme, autor: <NAME>*)La siguiente información se obtuvo de la compañía Snaptools| | ||-----|-----||Consumo estimado para el año 2005 | 105000 unidades ||Tasa de producción para el año 2005 | 250000 unidades||Costo unitario promedio| \$ 26.75/ unidad ||Costo alquiler bodega | \$ 2.5 / unidad||Costo preparación pedido| \$ 37.4 / pedido||Seguros inventarios |10\% costo inventario promedio||Costo promedio recepción | \$30.06 /pedido||Gastos generales y administrativos oficina compras| \$ 70.16/pedido||Pérdidas de producto|2\% del consumo total||Sobre costo (intereses| 8\% del costo unitario|Si hay un tiempo de espera de cinco(5) días para la recepción y 234 días laborales por año ¿Cuál es el tamaño de lote de producción? Antes de hallar las respuestas de la **situación 2** es importante interpretar el comportamiento del modelo de tamaño de lote de producción como un diagrama que depende del tiempo y del tamaño del inventario:![Imagen](https://github.com/MRippe7/images/blob/master/TLP.png?raw=true)Igual que en el modelo anterior, se identifican las siguientes ecuaciones que responden no solo a las preguntas de ¿Qué tanto debe ser renovado el inventario? y ¿Cuándo debe ser renovado el inventario?, sino también los costos y tiempos asociados al **modelo de tamaño de lote de producción.**  **Inventario máximo**I=(p-d)*t **Inventario máximo** $Inv_{max}=\left(1-\dfrac{D}{P}\right) \cdot Q$ **Duración fase de producción** $t =\dfrac{Q}{p}$ **¿Cuánto? Tamaño de lote de producción económico** $Q^* =\sqrt{\dfrac{2 D  C_p}{\left(1-\dfrac{D}{P}\right)  C_m }}$ **Inventario máximo** $Inv_{max}=\left(1-\dfrac{D}{P}\right) \cdot Q$**Inventario promedio** $Inv_{prom}=\dfrac{1}{2} \cdot \left(1-\dfrac{D}{P}\right) \cdot Q$**¿Cuánto? Tamaño de lote de producción económico** $Q^* =\sqrt{\dfrac{2 D  C_p}{\left(1-\dfrac{D}{P}\right)  C_m }}$**¿Cuándo? Punto de reorden**$P_o=d\cdot t_E$**Costo total**$C_T=\dfrac{1}{2} \cdot \left(1-\dfrac{D}{P}\right) Q  C_m + \dfrac{D}{Q} C_p$**Tiempo de ciclo**$T = \dfrac{DH \cdot Q}{D}$<jupyter_code>D=input("Digite la demanda anual del modelo:" )
P=input("Digite la producción anual del modelo:" )
C_p=input("Digite el costo de pedido:"  )
TR=input("Digite la tasa de retención:" )
C_u=input("Digite el costo unitario:" )
DH=input("¿Cuántos días laboran al año?:" )
D, P, C_p, TR, C_u, DH = float(D), float(P), float(C_p), float(TR), float(C_u), float(DH)
C_m=TR*C_u
Q=((2*D*C_p)/((1-(D/P))*C_m))**(1/2)
C_t=(1/2)*(1-(D/P))*Q*C_m +(D/Q)*C_p
Inv_max=(1-(D/P))*Q
T=(DH*Q)/D
t=Q/(P/DH)
print("El tamaño de lote producción es: ",Q)
print("El costo mínimo es:", C_t)
print("El inventario máximo es:" ,Inv_max)
print("El tiempo de ciclo es", T, "días")
print("La duración de la fase de producción es:", t)
(105000/234)*5<jupyter_output><empty_output><jupyter_text>Faltantes planeados**Situación 3** Suponga que el Jefe de inventarios de la empresa Jean & Jean de la **Situación 1**, considera necesario incluir algunos de sus Jeans como pedidos en espera, con el fin de reducir algunos de los gastos de la compañía. Tenga en cuenta la siguiente información: |Costo de ordenar en espera| \$ 1622 / unidad  | |----|----||Días laborales por año | 234 días |Si se espera que no más del 15\% de unidades de Jeans sean pedidos en espera ¿Usted considera que se reducirían algunos de los gatos de Jean & Jean? Antes de hallar las respuestas de la **situación 3** es importante interpretar el comportamiento del modelo de faltantes planeados como un diagrama que depende del tiempo y del tamaño del inventario:![Imagen](https://github.com/MRippe7/images/blob/master/FP.png?raw=true)De igual forma, se identifican las siguientes ecuaciones que responden a la cantidades óptimas de pedidos en espera y cantidades óptima de pedido, también los costos y tiempos asociados al modelo de faltantes planeados.**Inventario promedio** $Inv_{Prom}=\dfrac{(Q-S)^2}{2Q}$**Días en los que el inventario está disponible**$t_1=\dfrac{Q-S}{d}$ días**Días en los que se agotan las existencias**$t_2=\dfrac{S}{d}$ días**Número de pedidos por año**$N_P=\dfrac{D}{Q}$**Pedidos promedios en espera**$S_{Prom} = \dfrac{S^2}{2Q}$**Cantidad óptima de pedido** $Q^* =\sqrt{\dfrac{2 D  C_p}{C_m} \left( \dfrac{C_m + C_E}{C_E} \right)}$ **Pedidos en espera óptimos**$S^* =Q^* \left(\dfrac{C_m}{C_m + C_E} \right)$**Costo total por año**$C_{total}=\dfrac{(Q-S)^2}{2Q} \cdot C_m + \dfrac{D}{Q} \cdot C_p + \dfrac{S^2}{2Q} \cdot C_E $ **CALCULADORA FP**<jupyter_code>D=input("Digite la demanda anual del modelo:" )
C_p=input("Digite el costo de ordenar el pedido:"  )
C_E=input("Digite el costo de ordenar en espera:" )
TR=input("Digite la tasa de retención:" )
C_u=input("Digite el costo unitario:" )
DH=input("¿Cuántos días laboran al año?:" )
D, C_p, TR, C_u, DH, C_E = float(D), float(C_p), float(TR), float(C_u), float(DH), float(C_E)
C_m=TR*C_u
Q=(((2*D*C_p)/(C_m))*((C_m +C_E)/C_E))**(1/2)
S=Q*(C_m/(C_m + C_E))
t_1=(Q-S)/(D/DH)
t_2=S/(D/DH)
C_t=((Q-S)**2/(2*Q)) * C_m + (D/Q)*C_p + (S**2/2*Q)*C_E
print("La cantidad óptima de pedido es: ", Q)
print("Pedidos en espera óptimos: ", S)
print("El costo mínimo es:", C_t)
print("El inventario máximo es:" ,Inv_max)
print("Los días en los que el inventario está disponible son:", t_1)
print("Los días en los que se agotan las existencias son:", t_2)<jupyter_output>Digite la demanda anual del modelo:1
Digite el costo de ordenar el pedido:1
Digite el costo de ordenar en espera:1
Digite la tasa de retención:1
Digite el costo unitario:1
¿Cuántos días laboran al año?:1
La cantidad óptima de pedido es:  2.0
Pedidos en espera óptimos:  1.0
El costo mínimo es: 1.75
El inventario máximo es: 1060.6601717798212
Los días en los que el inventario está disponible son: 1.0
Los días en los que se agotan las existencias son: 1.0
{'fraction_non_alphanumeric': 0.1280459047319604, 'fraction_numerical': 0.03293507310171357, 'mean_word_length': 5.692793266701736, 'pattern_counts': {'":': 0, '<': 25, '<?xml version=': 0, '>': 25, 'https://': 4, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '6', 'dir': 'jupyter-structured-clean-dedup', 'id': '548874', 'license': 'MIT', 'n_tokens_mistral': 5157, 'n_tokens_neox': 4865, 'n_words': 1471, 'path': 'Cuadernos/Modelos II/Modelos de inventarios.ipynb', 'repo_name': 'Izainea/modelosdeoptimizacion', 'size': '12773'}